From 6e1425f9ce40a8d178a0218e24bc37c7b01477bb Mon Sep 17 00:00:00 2001 From: hank <hank.zhang@proficientcity.com> Date: Tue, 13 Dec 2016 16:36:02 +0800 Subject: [PATCH] 提交WA实现层库 --- bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble5.png | 0 frameworks/Toast.framework/_CodeSignature/CodeSignature | 0 bundle/WASDK-Resource.bundle/wasdk-login-icon-gc.png | 0 frameworks/WASdkImpl.framework/Headers/WASdkPatchHandler.h | 20 frameworks/lua.framework/_CodeSignature/CodeSignature | 0 frameworks/MJRefresh.framework/Headers/MJRefreshBackGifFooter.h | 15 frameworks/Toast.framework/Toast | 0 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-icon.png | 0 frameworks/AFNetworking.framework/Headers/AFHTTPRequestOperationManager.h | 326 + frameworks/WASdkImpl.framework/Headers/WASdkAccountMainUI.h | 25 frameworks/Toast.framework/_CodeSignature/CodeRequirements | 0 frameworks/lua.framework/Headers/lgc.h | 110 frameworks/ZipArchive.framework/ZipArchive | 0 frameworks/WACommon.framework/_CodeSignature/CodeResources | 211 frameworks/wax.framework/Headers/yajl_encode.h | 50 frameworks/wax.framework/Headers/wax_struct.h | 27 frameworks/MJRefresh.framework/Headers/MJRefreshBackFooter.h | 13 frameworks/lua.framework/Headers/lcode.h | 76 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-icon01.png | 0 frameworks/AFNetworking.framework/Headers/AFURLConnectionOperation.h | 344 + bundle/WASDK-Resource.bundle/arrow@2x.png | 0 config/wa_sdk_impl_config_winga.xml | 29 frameworks/lua.framework/Headers/lundump.h | 36 bundle/WASDK-Resource.bundle/wasdk-extend-pay-logo@2x.png | 0 frameworks/MJRefresh.framework/MJRefresh | 0 frameworks/lua.framework/Headers/lobject.h | 381 + frameworks/FMDB.framework/Modules/module.modulemap | 6 frameworks/AFNetworking.framework/Headers/AFSecurityPolicy.h | 142 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-logo.png | 0 frameworks/MJRefresh.framework/_CodeSignature/CodeRequirements | 0 frameworks/MJRefresh.framework/Headers/UIView+MJExtension.h | 19 frameworks/wax.framework/Headers/wax_http_connection.h | 55 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble3.png | 0 frameworks/wax.framework/Modules/module.modulemap | 6 bundle/WASDK-Resource.bundle/wasdk-login-icon-guest.png | 0 frameworks/FMDB.framework/_CodeSignature/CodeSignature | 0 frameworks/MJRefresh.framework/Headers/UIScrollView+MJRefresh.h | 23 frameworks/wax.framework/Headers/wax_helpers.h | 103 frameworks/MJRefresh.framework/_CodeSignature/CodeResources | 271 + bundle/WASDK-Resource.bundle/wasdk-login-btn-account-manager-back.png | 0 frameworks/WASdkImpl.framework/Info.plist | 0 frameworks/ZipArchive.framework/Headers/crypt.h | 132 frameworks/AFNetworking.framework/Headers/UIAlertView+AFNetworking.h | 99 bundle/WASDK-Resource.bundle/wasdk-login-btn-login-facebook.png | 0 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-line-separator.png | 0 frameworks/wax.framework/_CodeSignature/CodeResources | 327 + frameworks/AFNetworking.framework/Headers/AFURLSessionManager.h | 554 ++ frameworks/wax.framework/Headers/yajl_common.h | 85 frameworks/wax.framework/Headers/yajl_parser.h | 82 frameworks/lua.framework/Headers/lua.h | 388 + frameworks/WASdkImpl.framework/Modules/module.modulemap | 6 localizable/en.plist | 98 frameworks/WASdkImpl.framework/Headers/WASdkPay.h | 14 frameworks/FMDB.framework/Headers/FMDatabaseAdditions.h | 278 + frameworks/MJRefresh.framework/Modules/module.modulemap | 6 frameworks/Toast.framework/Headers/Toast.h | 20 frameworks/lua.framework/_CodeSignature/CodeRequirements | 0 frameworks/WASdkImpl.framework/Headers/WASdkLoginSingleton.h | 32 frameworks/WASdkImpl.framework/Headers/WASdkReachability.h | 102 frameworks/WASdkImpl.framework/Headers/WASdkGTMBase64.h | 183 bundle/WASDK-Resource.bundle/wasdk-login-btn-login-google.png | 0 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-more-red.png | 0 frameworks/wax.framework/Headers/ProtocolLoader.h | 12 frameworks/FMDB.framework/Headers/FMDatabase.h | 1162 ++++ frameworks/wax.framework/_CodeSignature/CodeDirectory | 0 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install-bg-clear.png | 0 frameworks/AFNetworking.framework/Headers/AFNetworkActivityIndicatorManager.h | 80 localizable/zh-Hans.plist | 98 frameworks/ZipArchive.framework/Headers/unzip.h | 354 + frameworks/wax.framework/Headers/yajl_buf.h | 73 frameworks/lua.framework/Headers/lfunc.h | 34 frameworks/lua.framework/_CodeSignature/CodeResources | 303 + frameworks/ZipArchive.framework/_CodeSignature/CodeResources | 167 frameworks/FMDB.framework/FMDB | 0 frameworks/lua.framework/Headers/lzio.h | 67 frameworks/wax.framework/Headers/wax_filesystem.h | 10 frameworks/FMDB.framework/_CodeSignature/CodeDirectory | 0 localizable/pt-BR.plist | 96 WASdkImpl_CN.podspec | 26 frameworks/MJRefresh.framework/Headers/MJRefreshAutoNormalFooter.h | 14 frameworks/WASdkImpl.framework/Headers/WASdkSandboxHelper.h | 31 frameworks/MJRefresh.framework/Headers/UIScrollView+MJExtension.h | 23 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-app-blue.png | 0 frameworks/MJRefresh.framework/Headers/MJRefreshAutoFooter.h | 20 frameworks/Toast.framework/Headers/UIView+Toast.h | 406 + frameworks/wax.framework/Info.plist | 0 frameworks/ZipArchive.framework/Headers/ioapi.h | 75 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-info-red.png | 0 frameworks/lua.framework/Headers/lualib.h | 53 frameworks/WASdkImpl.framework/Headers/WASdkAccountUI.h | 21 frameworks/FMDB.framework/Info.plist | 0 frameworks/AFNetworking.framework/Headers/UIRefreshControl+AFNetworking.h | 68 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-guide-01.png | 0 frameworks/WASdkImpl.framework/Headers/WASdkImpl.h | 19 frameworks/WACommon.framework/_CodeSignature/CodeRequirements | 0 frameworks/ZipArchive.framework/Headers/ZipArchive.h | 44 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-close.png | 0 frameworks/AFNetworking.framework/Headers/UIKit+AFNetworking.h | 39 frameworks/AFNetworking.framework/Headers/UIImageView+AFNetworking.h | 146 frameworks/MJRefresh.framework/Headers/MJRefreshAutoGifFooter.h | 15 frameworks/wax.framework/_CodeSignature/CodeRequirements | 0 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-guide-02.png | 0 bundle/WASDK-Resource.bundle/wasdk-login-icon-facebook.png | 0 frameworks/WASdkImpl.framework/WASdkImpl | 0 frameworks/MJRefresh.framework/Headers/MJRefreshFooter.h | 30 frameworks/lua.framework/Headers/lapi.h | 16 bundle/WASDK-Resource.bundle/wasdk-extend-pay-close@2x.png | 0 frameworks/lua.framework/Headers/lauxlib.h | 174 frameworks/WASdkImpl.framework/Headers/WASdkCore.h | 106 frameworks/wax.framework/Headers/wax.h | 17 frameworks/WASdkImpl.framework/Headers/WASdkTrack.h | 28 frameworks/wax.framework/wax | 0 frameworks/MJRefresh.framework/Headers/MJRefreshConst.h | 63 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble4.png | 0 frameworks/WASdkImpl.framework/Headers/WASdkCrashInfo.h | 28 frameworks/AFNetworking.framework/Headers/AFNetworkReachabilityManager.h | 207 frameworks/lua.framework/Headers/lvm.h | 36 bundle/WASDK-Resource.bundle/wasdk-user-login-logo@2x.png | 0 frameworks/AFNetworking.framework/AFNetworking | 0 frameworks/lua.framework/Headers/lstate.h | 169 frameworks/AFNetworking.framework/Headers/AFNetworking.h | 46 localizable/base.plist | 98 frameworks/lua.framework/Headers/lparser.h | 82 frameworks/lua.framework/_CodeSignature/CodeDirectory | 0 frameworks/AFNetworking.framework/Headers/AFHTTPSessionManager.h | 253 bundle/WASDK-Resource.bundle/wasdk-extend-pay-back@2x.png | 0 frameworks/MJRefresh.framework/Headers/MJRefreshNormalHeader.h | 15 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-app-red.png | 0 frameworks/lua.framework/Headers/ltm.h | 54 frameworks/MJRefresh.framework/Headers/MJRefreshComponent.h | 93 frameworks/WASdkImpl.framework/Headers/WASdkLoginButton.h | 15 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble2.png | 0 frameworks/WASdkImpl.framework/Headers/WASdkConfig.h | 22 localizable/ru.plist | 98 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install.png | 0 frameworks/ZipArchive.framework/Info.plist | 0 frameworks/lua.framework/Headers/llimits.h | 128 frameworks/wax.framework/Headers/yajl_gen.h | 159 frameworks/WASdkImpl.framework/Headers/WASdkCrashLogTV.h | 13 frameworks/WASdkImpl.framework/Headers/WASdkAccountSwitchHandler.h | 17 frameworks/WACommon.framework/_CodeSignature/CodeRequirements-1 | 0 frameworks/FMDB.framework/_CodeSignature/CodeResources | 167 bundle/WASDK-Resource.bundle/wasdk-extend-pay-btn-apple@2x.png | 0 frameworks/WACommon.framework/Info.plist | 0 frameworks/wax.framework/Headers/yajl_alloc.h | 50 frameworks/wax.framework/yajl-1.0.9.tar.gz | 0 frameworks/WASdkImpl.framework/Headers/WASdkAccountListUI.h | 16 frameworks/wax.framework/Headers/wax_gc.h | 20 frameworks/WASdkImpl.framework/Headers/WASdkAlertView.h | 23 frameworks/MJRefresh.framework/_CodeSignature/CodeDirectory | 0 frameworks/AFNetworking.framework/Headers/AFURLResponseSerialization.h | 311 + frameworks/WACommon.framework/Headers/LocalizedStringUtil.h | 19 frameworks/wax.framework/Headers/wax_server.h | 47 frameworks/Toast.framework/_CodeSignature/CodeResources | 135 frameworks/FMDB.framework/Headers/FMDatabaseQueue.h | 182 frameworks/WASdkImpl.framework/Headers/WASdkAccountCreateHandler.h | 14 frameworks/wax.framework/Headers/wax_json.h | 12 frameworks/wax.framework/Headers/wax_class.h | 19 frameworks/lua.framework/Modules/module.modulemap | 6 frameworks/MJRefresh.framework/Headers/MJRefresh.h | 12 frameworks/AFNetworking.framework/Headers/AFHTTPRequestOperation.h | 70 frameworks/ZipArchive.framework/Modules/module.modulemap | 6 frameworks/AFNetworking.framework/Headers/AFURLRequestSerialization.h | 473 + frameworks/WASdkImpl.framework/Headers/WASdkCatchCrash.h | 16 frameworks/WACommon.framework/Headers/WACommon.h | 24 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-info-blue.png | 0 frameworks/Toast.framework/_CodeSignature/CodeDirectory | 0 frameworks/ZipArchive.framework/_CodeSignature/CodeDirectory | 0 frameworks/MJRefresh.framework/_CodeSignature/CodeSignature | 0 frameworks/WASdkImpl.framework/Headers/WASdkAccountBinding.h | 25 frameworks/lua.framework/lua | 0 frameworks/WACommon.framework/_CodeSignature/CodeSignature | 0 frameworks/MJRefresh.framework/Headers/MJRefreshGifHeader.h | 15 frameworks/FMDB.framework/Headers/FMResultSet.h | 468 + frameworks/WACommon.framework/Headers/WAHelper.h | 61 frameworks/FMDB.framework/Headers/FMDB.h | 10 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-tip-free.png | 0 frameworks/MJRefresh.framework/Headers/MJRefreshStateHeader.h | 23 frameworks/wax.framework/Headers/WaxPatch-Prefix.pch | 14 frameworks/lua.framework/Headers/lstring.h | 31 frameworks/lua.framework/Headers/llex.h | 81 frameworks/FMDB.framework/_CodeSignature/CodeRequirements | 0 frameworks/wax.framework/Headers/wax_instance.h | 36 frameworks/WACommon.framework/WACommon | 0 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble.png | 0 frameworks/WASdkImpl.framework/Headers/WASdkDevice.h | 29 frameworks/lua.framework/Headers/luaconf.h | 753 ++ frameworks/MJRefresh.framework/Headers/MJRefreshHeader.h | 25 frameworks/ZipArchive.framework/_CodeSignature/CodeSignature | 0 frameworks/WASdkImpl.framework/Headers/WASdkParamConfig.h | 14 frameworks/ZipArchive.framework/Headers/mztools.h | 31 frameworks/wax.framework/Rakefile | 10 frameworks/WASdkImpl.framework/Headers/WASdkAccountSwitchUI.h | 14 frameworks/lua.framework/Headers/ldo.h | 57 frameworks/WACommon.framework/Headers/WACommConstants.h | 240 frameworks/AFNetworking.framework/Headers/UIButton+AFNetworking.h | 186 bundle/WASDK-Resource.bundle/wasdk-login-icon-back.png | 0 frameworks/AFNetworking.framework/Info.plist | 0 frameworks/ZipArchive.framework/Headers/zip.h | 235 frameworks/lua.framework/Headers/lmem.h | 49 frameworks/MJRefresh.framework/Info.plist | 0 frameworks/lua.framework/Headers/lopcodes.h | 268 + frameworks/MJRefresh.framework/Headers/MJRefreshAutoStateFooter.h | 20 frameworks/wax.framework/Headers/wax_stdlib_64.h | 3 frameworks/Toast.framework/Info.plist | 0 frameworks/wax.framework/Headers/yajl_parse.h | 193 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-line-separator-red.png | 0 bundle/WASDK-Resource.bundle/wasdk-login-btn-login-gc.png | 0 frameworks/WACommon.framework/Modules/module.modulemap | 6 frameworks/WACommon.framework/Headers/WAHttpHelper.h | 71 frameworks/AFNetworking.framework/Headers/UIWebView+AFNetworking.h | 86 frameworks/wax.framework/Headers/yajl_lex.h | 133 frameworks/AFNetworking.framework/Headers/UIActivityIndicatorView+AFNetworking.h | 63 frameworks/wax.framework/Headers/wax_stdlib.h | 3 bundle/WASDK-Resource.bundle/wasdk-login-btn-login-guest.png | 0 frameworks/WACommon.framework/_CodeSignature/CodeDirectory | 0 frameworks/WASdkImpl.framework/Headers/WASdkTestModeLogView.h | 23 frameworks/AFNetworking.framework/Headers/UIProgressView+AFNetworking.h | 91 frameworks/wax.framework/_CodeSignature/CodeSignature | 0 frameworks/wax.framework/Headers/yajl_bytestack.h | 85 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-more-blue.png | 0 bundle/WASDK-Resource.bundle/wasdk-login-icon-google.png | 0 frameworks/WASdkImpl.framework/Headers/WASdkLoginHandler.h | 18 frameworks/WASdkImpl.framework/Headers/WASdkSocial.h | 14 frameworks/WASdkImpl.framework/Headers/WASdkLoginUI.h | 17 frameworks/WASdkImpl.framework/Headers/WASdkCacheHandler.h | 15 frameworks/WASdkImpl.framework/Headers/WASdkParamConfigObj.h | 27 frameworks/Toast.framework/Modules/module.modulemap | 6 frameworks/MJRefresh.framework/Headers/MJRefreshBackNormalFooter.h | 15 frameworks/FMDB.framework/Headers/FMDatabasePool.h | 200 bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install-bg-black.png | 0 frameworks/lua.framework/Headers/ldebug.h | 33 frameworks/MJRefresh.framework/Headers/MJRefreshBackStateFooter.h | 19 frameworks/ZipArchive.framework/_CodeSignature/CodeRequirements | 0 bundle/WASDK-Resource.bundle/wasdk-extend-pay-btn-google@2x.png | 0 frameworks/wax.framework/Headers/wax_http.h | 15 frameworks/lua.framework/Headers/ltable.h | 40 frameworks/lua.framework/Info.plist | 0 238 files changed, 15,610 insertions(+), 0 deletions(-) diff --git a/WASdkImpl_CN.podspec b/WASdkImpl_CN.podspec new file mode 100644 index 0000000..36a8946 --- /dev/null +++ b/WASdkImpl_CN.podspec @@ -0,0 +1,26 @@ +# +# Be sure to run `pod spec lint WASdkImpl.podspec' to ensure this is a +# valid spec and to remove all comments including this before submitting the spec. +# +# To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html +# To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ +# + +Pod::Spec.new do |s| + +s.name = 'WASdkImpl_CN' +s.version = '1.1.0' +s.summary = 'WASDK WA' +s.license = 'MIT' +s.author = { "Hank" => "hank.zhang@gamehollywood.com" } +s.homepage = 'http://repo.wingsdk.cn:8082/summary/WASdkImpl_CN.git' +s.source = { :git => "http://admin@repo.wingsdk.cn:8082/r/WASdkImpl_CN.git" , :tag => s.version} +s.platform = :ios +s.ios.deployment_target = "7.0" +s.vendored_frameworks = 'frameworks/*.framework' +s.resources = ['config/*.xml','bundle/WASDK-Resource.bundle','localizable/*.plist'] +s.libraries = 'sqlite3','z' +s.requires_arc = true +s.dependency 'WASdkIntf_CN', '~> 1.1.0' # + +end \ No newline at end of file diff --git a/bundle/WASDK-Resource.bundle/arrow@2x.png b/bundle/WASDK-Resource.bundle/arrow@2x.png new file mode 100644 index 0000000..b1078de --- /dev/null +++ b/bundle/WASDK-Resource.bundle/arrow@2x.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-app-blue.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-app-blue.png new file mode 100644 index 0000000..07c8c3e --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-app-blue.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-app-red.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-app-red.png new file mode 100644 index 0000000..ecf8a94 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-app-red.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-close.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-close.png new file mode 100644 index 0000000..716e8ee --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-close.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-info-blue.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-info-blue.png new file mode 100644 index 0000000..f00e92d --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-info-blue.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-info-red.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-info-red.png new file mode 100644 index 0000000..a8189c7 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-info-red.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install-bg-black.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install-bg-black.png new file mode 100644 index 0000000..f8fd9b9 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install-bg-black.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install-bg-clear.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install-bg-clear.png new file mode 100644 index 0000000..5c3772b --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install-bg-clear.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install.png new file mode 100644 index 0000000..188c48c --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-install.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-more-blue.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-more-blue.png new file mode 100644 index 0000000..977c757 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-more-blue.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-more-red.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-more-red.png new file mode 100644 index 0000000..49cee78 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-btn-more-red.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble.png new file mode 100644 index 0000000..15fffce --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble2.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble2.png new file mode 100644 index 0000000..45ec6db --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble2.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble3.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble3.png new file mode 100644 index 0000000..2b1d607 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble3.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble4.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble4.png new file mode 100644 index 0000000..10ec99d --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble4.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble5.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble5.png new file mode 100644 index 0000000..6c1309f --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-bubble5.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-guide-01.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-guide-01.png new file mode 100644 index 0000000..fa62c78 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-guide-01.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-guide-02.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-guide-02.png new file mode 100644 index 0000000..3cd4231 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-guide-02.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-icon.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-icon.png new file mode 100644 index 0000000..13b6c7e --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-icon.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-icon01.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-icon01.png new file mode 100644 index 0000000..905cd0f --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-icon01.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-line-separator-red.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-line-separator-red.png new file mode 100644 index 0000000..02518b3 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-line-separator-red.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-line-separator.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-line-separator.png new file mode 100644 index 0000000..fe3d6c1 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-line-separator.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-logo.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-logo.png new file mode 100644 index 0000000..2318ae8 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-logo.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-tip-free.png b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-tip-free.png new file mode 100644 index 0000000..4e63812 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-appwall-tip-free.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-pay-back@2x.png b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-back@2x.png new file mode 100644 index 0000000..29d5b34 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-back@2x.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-pay-btn-apple@2x.png b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-btn-apple@2x.png new file mode 100644 index 0000000..d318a94 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-btn-apple@2x.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-pay-btn-google@2x.png b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-btn-google@2x.png new file mode 100644 index 0000000..8a6bbee --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-btn-google@2x.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-pay-close@2x.png b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-close@2x.png new file mode 100644 index 0000000..6ecfe2f --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-close@2x.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-extend-pay-logo@2x.png b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-logo@2x.png new file mode 100644 index 0000000..b42d84b --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-extend-pay-logo@2x.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-btn-account-manager-back.png b/bundle/WASDK-Resource.bundle/wasdk-login-btn-account-manager-back.png new file mode 100644 index 0000000..077f470 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-btn-account-manager-back.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-facebook.png b/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-facebook.png new file mode 100644 index 0000000..91eb581 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-facebook.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-gc.png b/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-gc.png new file mode 100644 index 0000000..02c848a --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-gc.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-google.png b/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-google.png new file mode 100644 index 0000000..c1c0162 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-google.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-guest.png b/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-guest.png new file mode 100644 index 0000000..c9012ff --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-btn-login-guest.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-icon-back.png b/bundle/WASDK-Resource.bundle/wasdk-login-icon-back.png new file mode 100644 index 0000000..29d5b34 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-icon-back.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-icon-facebook.png b/bundle/WASDK-Resource.bundle/wasdk-login-icon-facebook.png new file mode 100644 index 0000000..8ac9579 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-icon-facebook.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-icon-gc.png b/bundle/WASDK-Resource.bundle/wasdk-login-icon-gc.png new file mode 100644 index 0000000..148ccb2 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-icon-gc.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-icon-google.png b/bundle/WASDK-Resource.bundle/wasdk-login-icon-google.png new file mode 100644 index 0000000..ab97f56 --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-icon-google.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-login-icon-guest.png b/bundle/WASDK-Resource.bundle/wasdk-login-icon-guest.png new file mode 100644 index 0000000..c326eab --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-login-icon-guest.png Binary files differ diff --git a/bundle/WASDK-Resource.bundle/wasdk-user-login-logo@2x.png b/bundle/WASDK-Resource.bundle/wasdk-user-login-logo@2x.png new file mode 100644 index 0000000..9ff8c6b --- /dev/null +++ b/bundle/WASDK-Resource.bundle/wasdk-user-login-logo@2x.png Binary files differ diff --git a/config/wa_sdk_impl_config_winga.xml b/config/wa_sdk_impl_config_winga.xml new file mode 100644 index 0000000..34b79a3 --- /dev/null +++ b/config/wa_sdk_impl_config_winga.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<config> + <version val="WA1.1.0"/> + <comps> + <!-- 用户模块 --> + <comp module="USR" plaf="WINGA" mandatory="YES" value="WASdkUser" desc="WINGA用户账户"/> + <!-- 基础支付模块 --> + <comp module="PAY" plaf="WINGA" value="WASdkPay" desc="基础支付"/> + <!-- 数据收集模块 --> + <comp module="TRA" plaf="WINGA" mandatory="YES" value="WASdkTrack" desc="WINGA数据统计"/> + <!-- 数据收集模块 --> + <comp module="SOC" plaf="WINGA" mandatory="YES" value="WASdkSocial" desc="WINGA社交"/> + <!-- 应用墙模块 --> + <comp module="APW" plaf="WINGA" mandatory="NO" value="WASdkAppWall" desc="应用墙"/> + <!-- 热更新 --> + <comp module="HUP" plaf="WINGA" mandatory="NO" value="WASdkHotUpdate" desc="热更新"/> + + <!-- 公共模块 --> + <comp module="CORE" plaf="WINGA" mandatory="YES" value="WASdkCore" desc="公共模块"/> + </comps> + <ops> + <op type="copy" category="res" isFile="NO" from="frameworks" to="wasdk/wa/frameworks" /> + <op type="copy" category="res" isFile="NO" from="bundle" to="wasdk/wa/bundle" /> + <op type="ref" category="res" isFile="NO" from="usr/lib/libz.tbd"/> + <op type="ref" category="res" isFile="NO" from="usr/lib/libsqlite3.tbd"/> + <op type="ref" category="res" isFile="NO" from="System/Library/Frameworks/AdSupport.framework"/> + <op type="copy" category="res" isFile="NO" from="localizable" to="wasdk/wa/localizable"/> + </ops> +</config> diff --git a/frameworks/AFNetworking.framework/AFNetworking b/frameworks/AFNetworking.framework/AFNetworking new file mode 100644 index 0000000..2eb807f --- /dev/null +++ b/frameworks/AFNetworking.framework/AFNetworking Binary files differ diff --git a/frameworks/AFNetworking.framework/Headers/AFHTTPRequestOperation.h b/frameworks/AFNetworking.framework/Headers/AFHTTPRequestOperation.h new file mode 100755 index 0000000..cf6def4 --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFHTTPRequestOperation.h @@ -0,0 +1,70 @@ +// AFHTTPRequestOperation.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> +#import "AFURLConnectionOperation.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + `AFHTTPRequestOperation` is a subclass of `AFURLConnectionOperation` for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request. + */ +@interface AFHTTPRequestOperation : AFURLConnectionOperation + +///------------------------------------------------ +/// @name Getting HTTP URL Connection Information +///------------------------------------------------ + +/** + The last HTTP response received by the operation's connection. + */ +@property (readonly, nonatomic, strong, nullable) NSHTTPURLResponse *response; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an AFHTTPResponse serializer, which uses the raw data as its response object. The serializer validates the status code to be in the `2XX` range, denoting success. If the response serializer generates an error in `-responseObjectForResponse:data:error:`, the `failure` callback of the session task or request operation will be executed; otherwise, the `success` callback will be executed. + + @warning `responseSerializer` must not be `nil`. Setting a response serializer will clear out any cached value + */ +@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * responseSerializer; + +/** + An object constructed by the `responseSerializer` from the response and response data. Returns `nil` unless the operation `isFinished`, has a `response`, and has `responseData` with non-zero content length. If an error occurs during serialization, `nil` will be returned, and the `error` property will be populated with the serialization error. + */ +@property (readonly, nonatomic, strong, nullable) id responseObject; + +///----------------------------------------------------------- +/// @name Setting Completion Block Success / Failure Callbacks +///----------------------------------------------------------- + +/** + Sets the `completionBlock` property with a block that executes either the specified success or failure block, depending on the state of the request on completion. If `error` returns a value, which can be caused by an unacceptable status code or content type, then `failure` is executed. Otherwise, `success` is executed. + + This method should be overridden in subclasses in order to specify the response object passed into the success block. + + @param success The block to be executed on the completion of a successful request. This block has no return value and takes two arguments: the receiver operation and the object constructed from the response data of the request. + @param failure The block to be executed on the completion of an unsuccessful request. This block has no return value and takes two arguments: the receiver operation and the error that occurred during the request. + */ +- (void)setCompletionBlockWithSuccess:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(nullable void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +@end + +NS_ASSUME_NONNULL_END diff --git a/frameworks/AFNetworking.framework/Headers/AFHTTPRequestOperationManager.h b/frameworks/AFNetworking.framework/Headers/AFHTTPRequestOperationManager.h new file mode 100755 index 0000000..d2385ed --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFHTTPRequestOperationManager.h @@ -0,0 +1,326 @@ +// AFHTTPRequestOperationManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> +#import <SystemConfiguration/SystemConfiguration.h> +#import <Availability.h> + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import <MobileCoreServices/MobileCoreServices.h> +#else +#import <CoreServices/CoreServices.h> +#endif + +#import "AFHTTPRequestOperation.h" +#import "AFURLResponseSerialization.h" +#import "AFURLRequestSerialization.h" +#import "AFSecurityPolicy.h" +#import "AFNetworkReachabilityManager.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + `AFHTTPRequestOperationManager` encapsulates the common patterns of communicating with a web application over HTTP, including request creation, response serialization, network reachability monitoring, and security, as well as request operation management. + + ## Subclassing Notes + + Developers targeting iOS 7 or Mac OS X 10.9 or later that deal extensively with a web service are encouraged to subclass `AFHTTPSessionManager`, providing a class method that returns a shared singleton object on which authentication and other configuration can be shared across the application. + + For developers targeting iOS 6 or Mac OS X 10.8 or earlier, `AFHTTPRequestOperationManager` may be used to similar effect. + + ## Methods to Override + + To change the behavior of all request operation construction for an `AFHTTPRequestOperationManager` subclass, override `HTTPRequestOperationWithRequest:success:failure`. + + ## Serialization + + Requests created by an HTTP client will contain default headers and encode parameters according to the `requestSerializer` property, which is an object conforming to `<AFURLRequestSerialization>`. + + Responses received from the server are automatically validated and serialized by the `responseSerializers` property, which is an object conforming to `<AFURLResponseSerialization>` + + ## URL Construction Using Relative Paths + + For HTTP convenience methods, the request serializer constructs URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`, when provided. If `baseURL` is `nil`, `path` needs to resolve to a valid `NSURL` object using `NSURL +URLWithString:`. + + Below are a few examples of how `baseURL` and relative paths interact: + + NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; + [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz + [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo + [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ + [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ + + Also important to note is that a trailing slash will be added to any `baseURL` without one. This would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. + + ## Network Reachability Monitoring + + Network reachability status and change monitoring is available through the `reachabilityManager` property. Applications may choose to monitor network reachability conditions in order to prevent or suspend any outbound requests. See `AFNetworkReachabilityManager` for more details. + + ## NSSecureCoding & NSCopying Caveats + + `AFHTTPRequestOperationManager` conforms to the `NSSecureCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. There are a few minor caveats to keep in mind, however: + + - Archives and copies of HTTP clients will be initialized with an empty operation queue. + - NSSecureCoding cannot serialize / deserialize block properties, so an archive of an HTTP client will not include any reachability callback block that may be set. + */ +@interface AFHTTPRequestOperationManager : NSObject <NSSecureCoding, NSCopying> + +/** + The URL used to monitor reachability, and construct requests from relative paths in methods like `requestWithMethod:URLString:parameters:`, and the `GET` / `POST` / et al. convenience methods. + */ +@property (readonly, nonatomic, strong, nullable) NSURL *baseURL; + +/** + Requests created with `requestWithMethod:URLString:parameters:` & `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:` are constructed with a set of default headers using a parameter serialization specified by this property. By default, this is set to an instance of `AFHTTPRequestSerializer`, which serializes query string parameters for `GET`, `HEAD`, and `DELETE` requests, or otherwise URL-form-encodes HTTP message bodies. + + @warning `requestSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPRequestSerializer <AFURLRequestSerialization> * requestSerializer; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to a JSON serializer, which serializes data from responses with a `application/json` MIME type, and falls back to the raw data object. The serializer validates the status code to be in the `2XX` range, denoting success. If the response serializer generates an error in `-responseObjectForResponse:data:error:`, the `failure` callback of the session task or request operation will be executed; otherwise, the `success` callback will be executed. + + @warning `responseSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * responseSerializer; + +/** + The operation queue on which request operations are scheduled and run. + */ +@property (nonatomic, strong) NSOperationQueue *operationQueue; + +///------------------------------- +/// @name Managing URL Credentials +///------------------------------- + +/** + Whether request operations should consult the credential storage for authenticating the connection. `YES` by default. + + @see AFURLConnectionOperation -shouldUseCredentialStorage + */ +@property (nonatomic, assign) BOOL shouldUseCredentialStorage; + +/** + The credential used by request operations for authentication challenges. + + @see AFURLConnectionOperation -credential + */ +@property (nonatomic, strong, nullable) NSURLCredential *credential; + +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + +/** + The security policy used by created request operations to evaluate server trust for secure connections. `AFHTTPRequestOperationManager` uses the `defaultPolicy` unless otherwise specified. + */ +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; + +///------------------------------------ +/// @name Managing Network Reachability +///------------------------------------ + +/** + The network reachability manager. `AFHTTPRequestOperationManager` uses the `sharedManager` by default. + */ +@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager; + +///------------------------------- +/// @name Managing Callback Queues +///------------------------------- + +/** + The dispatch queue for the `completionBlock` of request operations. If `NULL` (default), the main queue is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong, nullable) dispatch_queue_t completionQueue; +#else +@property (nonatomic, assign, nullable) dispatch_queue_t completionQueue; +#endif + +/** + The dispatch group for the `completionBlock` of request operations. If `NULL` (default), a private dispatch group is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong, nullable) dispatch_group_t completionGroup; +#else +@property (nonatomic, assign, nullable) dispatch_group_t completionGroup; +#endif + +///--------------------------------------------- +/// @name Creating and Initializing HTTP Clients +///--------------------------------------------- + +/** + Creates and returns an `AFHTTPRequestOperationManager` object. + */ ++ (instancetype)manager; + +/** + Initializes an `AFHTTPRequestOperationManager` object with the specified base URL. + + This is the designated initializer. + + @param url The base URL for the HTTP client. + + @return The newly-initialized HTTP client + */ +- (instancetype)initWithBaseURL:(nullable NSURL *)url NS_DESIGNATED_INITIALIZER; + +///--------------------------------------- +/// @name Managing HTTP Request Operations +///--------------------------------------- + +/** + Creates an `AFHTTPRequestOperation`, and sets the response serializers to that of the HTTP client. + + @param request The request object to be loaded asynchronously during execution of the operation. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + */ +- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request + success:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(nullable void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +///--------------------------- +/// @name Making HTTP Requests +///--------------------------- + +/** + Creates and runs an `AFHTTPRequestOperation` with a `GET` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (nullable AFHTTPRequestOperation *)GET:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(nullable void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `HEAD` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes a single arguments: the request operation. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (nullable AFHTTPRequestOperation *)HEAD:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(AFHTTPRequestOperation *operation))success + failure:(nullable void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (nullable AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(nullable void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a multipart `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (nullable AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(nullable id)parameters + constructingBodyWithBlock:(nullable void (^)(id <AFMultipartFormData> formData))block + success:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(nullable void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `PUT` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (nullable AFHTTPRequestOperation *)PUT:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(nullable void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `PATCH` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (nullable AFHTTPRequestOperation *)PATCH:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(nullable void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `DELETE` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (nullable AFHTTPRequestOperation *)DELETE:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(nullable void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +@end + +NS_ASSUME_NONNULL_END diff --git a/frameworks/AFNetworking.framework/Headers/AFHTTPSessionManager.h b/frameworks/AFNetworking.framework/Headers/AFHTTPSessionManager.h new file mode 100755 index 0000000..e516e6d --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFHTTPSessionManager.h @@ -0,0 +1,253 @@ +// AFHTTPSessionManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> +#if !TARGET_OS_WATCH +#import <SystemConfiguration/SystemConfiguration.h> +#endif +#import <Availability.h> + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import <MobileCoreServices/MobileCoreServices.h> +#else +#import <CoreServices/CoreServices.h> +#endif + +#import "AFURLSessionManager.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFHTTPSessionManager` is a subclass of `AFURLSessionManager` with convenience methods for making HTTP requests. When a `baseURL` is provided, requests made with the `GET` / `POST` / et al. convenience methods can be made with relative paths. + + ## Subclassing Notes + + Developers targeting iOS 7 or Mac OS X 10.9 or later that deal extensively with a web service are encouraged to subclass `AFHTTPSessionManager`, providing a class method that returns a shared singleton object on which authentication and other configuration can be shared across the application. + + For developers targeting iOS 6 or Mac OS X 10.8 or earlier, `AFHTTPRequestOperationManager` may be used to similar effect. + + ## Methods to Override + + To change the behavior of all data task operation construction, which is also used in the `GET` / `POST` / et al. convenience methods, override `dataTaskWithRequest:completionHandler:`. + + ## Serialization + + Requests created by an HTTP client will contain default headers and encode parameters according to the `requestSerializer` property, which is an object conforming to `<AFURLRequestSerialization>`. + + Responses received from the server are automatically validated and serialized by the `responseSerializers` property, which is an object conforming to `<AFURLResponseSerialization>` + + ## URL Construction Using Relative Paths + + For HTTP convenience methods, the request serializer constructs URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`, when provided. If `baseURL` is `nil`, `path` needs to resolve to a valid `NSURL` object using `NSURL +URLWithString:`. + + Below are a few examples of how `baseURL` and relative paths interact: + + NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; + [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz + [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo + [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ + [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ + + Also important to note is that a trailing slash will be added to any `baseURL` without one. This would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. + + @warning Managers for background sessions must be owned for the duration of their use. This can be accomplished by creating an application-wide or shared singleton instance. + */ + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) || TARGET_OS_WATCH + +NS_ASSUME_NONNULL_BEGIN + +@interface AFHTTPSessionManager : AFURLSessionManager <NSSecureCoding, NSCopying> + +/** + The URL used to construct requests from relative paths in methods like `requestWithMethod:URLString:parameters:`, and the `GET` / `POST` / et al. convenience methods. + */ +@property (readonly, nonatomic, strong, nullable) NSURL *baseURL; + +/** + Requests created with `requestWithMethod:URLString:parameters:` & `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:` are constructed with a set of default headers using a parameter serialization specified by this property. By default, this is set to an instance of `AFHTTPRequestSerializer`, which serializes query string parameters for `GET`, `HEAD`, and `DELETE` requests, or otherwise URL-form-encodes HTTP message bodies. + + @warning `requestSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPRequestSerializer <AFURLRequestSerialization> * requestSerializer; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an instance of `AFJSONResponseSerializer`. + + @warning `responseSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * responseSerializer; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Creates and returns an `AFHTTPSessionManager` object. + */ ++ (instancetype)manager; + +/** + Initializes an `AFHTTPSessionManager` object with the specified base URL. + + @param url The base URL for the HTTP client. + + @return The newly-initialized HTTP client + */ +- (instancetype)initWithBaseURL:(nullable NSURL *)url; + +/** + Initializes an `AFHTTPSessionManager` object with the specified base URL. + + This is the designated initializer. + + @param url The base URL for the HTTP client. + @param configuration The configuration used to create the managed session. + + @return The newly-initialized HTTP client + */ +- (instancetype)initWithBaseURL:(nullable NSURL *)url + sessionConfiguration:(nullable NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; + +///--------------------------- +/// @name Making HTTP Requests +///--------------------------- + +/** + Creates and runs an `NSURLSessionDataTask` with a `GET` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `HEAD` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes a single arguments: the data task. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (nullable NSURLSessionDataTask *)HEAD:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(NSURLSessionDataTask *task))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a multipart `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(nullable id)parameters + constructingBodyWithBlock:(nullable void (^)(id <AFMultipartFormData> formData))block + success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `PUT` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (nullable NSURLSessionDataTask *)PUT:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `PATCH` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (nullable NSURLSessionDataTask *)PATCH:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `DELETE` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (nullable NSURLSessionDataTask *)DELETE:(NSString *)URLString + parameters:(nullable id)parameters + success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/frameworks/AFNetworking.framework/Headers/AFNetworkActivityIndicatorManager.h b/frameworks/AFNetworking.framework/Headers/AFNetworkActivityIndicatorManager.h new file mode 100755 index 0000000..3c7649b --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFNetworkActivityIndicatorManager.h @@ -0,0 +1,80 @@ +// AFNetworkActivityIndicatorManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import <Availability.h> + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +/** + `AFNetworkActivityIndicatorManager` manages the state of the network activity indicator in the status bar. When enabled, it will listen for notifications indicating that a network request operation has started or finished, and start or stop animating the indicator accordingly. The number of active requests is incremented and decremented much like a stack or a semaphore, and the activity indicator will animate so long as that number is greater than zero. + + You should enable the shared instance of `AFNetworkActivityIndicatorManager` when your application finishes launching. In `AppDelegate application:didFinishLaunchingWithOptions:` you can do so with the following code: + + [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]; + + By setting `enabled` to `YES` for `sharedManager`, the network activity indicator will show and hide automatically as requests start and finish. You should not ever need to call `incrementActivityCount` or `decrementActivityCount` yourself. + + See the Apple Human Interface Guidelines section about the Network Activity Indicator for more information: + http://developer.apple.com/library/iOS/#documentation/UserExperience/Conceptual/MobileHIG/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW44 + */ +NS_EXTENSION_UNAVAILABLE_IOS("Use view controller based solutions where appropriate instead.") +@interface AFNetworkActivityIndicatorManager : NSObject + +/** + A Boolean value indicating whether the manager is enabled. + + If YES, the manager will change status bar network activity indicator according to network operation notifications it receives. The default value is NO. + */ +@property (nonatomic, assign, getter = isEnabled) BOOL enabled; + +/** + A Boolean value indicating whether the network activity indicator is currently displayed in the status bar. + */ +@property (readonly, nonatomic, assign) BOOL isNetworkActivityIndicatorVisible; + +/** + Returns the shared network activity indicator manager object for the system. + + @return The systemwide network activity indicator manager. + */ ++ (instancetype)sharedManager; + +/** + Increments the number of active network requests. If this number was zero before incrementing, this will start animating the status bar network activity indicator. + */ +- (void)incrementActivityCount; + +/** + Decrements the number of active network requests. If this number becomes zero after decrementing, this will stop animating the status bar network activity indicator. + */ +- (void)decrementActivityCount; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/frameworks/AFNetworking.framework/Headers/AFNetworkReachabilityManager.h b/frameworks/AFNetworking.framework/Headers/AFNetworkReachabilityManager.h new file mode 100755 index 0000000..5a44507 --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFNetworkReachabilityManager.h @@ -0,0 +1,207 @@ +// AFNetworkReachabilityManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#if !TARGET_OS_WATCH +#import <SystemConfiguration/SystemConfiguration.h> + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { + AFNetworkReachabilityStatusUnknown = -1, + AFNetworkReachabilityStatusNotReachable = 0, + AFNetworkReachabilityStatusReachableViaWWAN = 1, + AFNetworkReachabilityStatusReachableViaWiFi = 2, +}; + +NS_ASSUME_NONNULL_BEGIN + +/** + `AFNetworkReachabilityManager` monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces. + + Reachability can be used to determine background information about why a network operation failed, or to trigger a network operation retrying when a connection is established. It should not be used to prevent a user from initiating a network request, as it's possible that an initial request may be required to establish reachability. + + See Apple's Reachability Sample Code (https://developer.apple.com/library/ios/samplecode/reachability/) + + @warning Instances of `AFNetworkReachabilityManager` must be started with `-startMonitoring` before reachability status can be determined. + */ +@interface AFNetworkReachabilityManager : NSObject + +/** + The current network reachability status. + */ +@property (readonly, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; + +/** + Whether or not the network is currently reachable. + */ +@property (readonly, nonatomic, assign, getter = isReachable) BOOL reachable; + +/** + Whether or not the network is currently reachable via WWAN. + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWWAN) BOOL reachableViaWWAN; + +/** + Whether or not the network is currently reachable via WiFi. + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWiFi) BOOL reachableViaWiFi; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Returns the shared network reachability manager. + */ ++ (instancetype)sharedManager; + +/** + Creates and returns a network reachability manager for the specified domain. + + @param domain The domain used to evaluate network reachability. + + @return An initialized network reachability manager, actively monitoring the specified domain. + */ ++ (instancetype)managerForDomain:(NSString *)domain; + +/** + Creates and returns a network reachability manager for the socket address. + + @param address The socket address (`sockaddr_in`) used to evaluate network reachability. + + @return An initialized network reachability manager, actively monitoring the specified socket address. + */ ++ (instancetype)managerForAddress:(const void *)address; + +/** + Initializes an instance of a network reachability manager from the specified reachability object. + + @param reachability The reachability object to monitor. + + @return An initialized network reachability manager, actively monitoring the specified reachability. + */ +- (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability NS_DESIGNATED_INITIALIZER; + +///-------------------------------------------------- +/// @name Starting & Stopping Reachability Monitoring +///-------------------------------------------------- + +/** + Starts monitoring for changes in network reachability status. + */ +- (void)startMonitoring; + +/** + Stops monitoring for changes in network reachability status. + */ +- (void)stopMonitoring; + +///------------------------------------------------- +/// @name Getting Localized Reachability Description +///------------------------------------------------- + +/** + Returns a localized string representation of the current network reachability status. + */ +- (NSString *)localizedNetworkReachabilityStatusString; + +///--------------------------------------------------- +/// @name Setting Network Reachability Change Callback +///--------------------------------------------------- + +/** + Sets a callback to be executed when the network availability of the `baseURL` host changes. + + @param block A block object to be executed when the network availability of the `baseURL` host changes.. This block has no return value and takes a single argument which represents the various reachability states from the device to the `baseURL`. + */ +- (void)setReachabilityStatusChangeBlock:(nullable void (^)(AFNetworkReachabilityStatus status))block; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## Network Reachability + + The following constants are provided by `AFNetworkReachabilityManager` as possible network reachability statuses. + + enum { + AFNetworkReachabilityStatusUnknown, + AFNetworkReachabilityStatusNotReachable, + AFNetworkReachabilityStatusReachableViaWWAN, + AFNetworkReachabilityStatusReachableViaWiFi, + } + + `AFNetworkReachabilityStatusUnknown` + The `baseURL` host reachability is not known. + + `AFNetworkReachabilityStatusNotReachable` + The `baseURL` host cannot be reached. + + `AFNetworkReachabilityStatusReachableViaWWAN` + The `baseURL` host can be reached via a cellular connection, such as EDGE or GPRS. + + `AFNetworkReachabilityStatusReachableViaWiFi` + The `baseURL` host can be reached via a Wi-Fi connection. + + ### Keys for Notification UserInfo Dictionary + + Strings that are used as keys in a `userInfo` dictionary in a network reachability status change notification. + + `AFNetworkingReachabilityNotificationStatusItem` + A key in the userInfo dictionary in a `AFNetworkingReachabilityDidChangeNotification` notification. + The corresponding value is an `NSNumber` object representing the `AFNetworkReachabilityStatus` value for the current reachability status. + */ + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when network reachability changes. + This notification assigns no notification object. The `userInfo` dictionary contains an `NSNumber` object under the `AFNetworkingReachabilityNotificationStatusItem` key, representing the `AFNetworkReachabilityStatus` value for the current network reachability. + + @warning In order for network reachability to be monitored, include the `SystemConfiguration` framework in the active target's "Link Binary With Library" build phase, and add `#import <SystemConfiguration/SystemConfiguration.h>` to the header prefix of the project (`Prefix.pch`). + */ +extern NSString * const AFNetworkingReachabilityDidChangeNotification; +extern NSString * const AFNetworkingReachabilityNotificationStatusItem; + +///-------------------- +/// @name Functions +///-------------------- + +/** + Returns a localized string representation of an `AFNetworkReachabilityStatus` value. + */ +extern NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status); + +NS_ASSUME_NONNULL_END +#endif diff --git a/frameworks/AFNetworking.framework/Headers/AFNetworking.h b/frameworks/AFNetworking.framework/Headers/AFNetworking.h new file mode 100755 index 0000000..6d442bb --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFNetworking.h @@ -0,0 +1,46 @@ +// AFNetworking.h +// +// Copyright (c) 2013 AFNetworking (http://afnetworking.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> +#import <Availability.h> + +#ifndef _AFNETWORKING_ + #define _AFNETWORKING_ + + #import "AFURLRequestSerialization.h" + #import "AFURLResponseSerialization.h" + #import "AFSecurityPolicy.h" +#if !TARGET_OS_WATCH + #import "AFNetworkReachabilityManager.h" + #import "AFURLConnectionOperation.h" + #import "AFHTTPRequestOperation.h" + #import "AFHTTPRequestOperationManager.h" +#endif + +#if ( ( defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) || \ + ( defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 ) || \ + TARGET_OS_WATCH ) + #import "AFURLSessionManager.h" + #import "AFHTTPSessionManager.h" +#endif + +#endif /* _AFNETWORKING_ */ diff --git a/frameworks/AFNetworking.framework/Headers/AFSecurityPolicy.h b/frameworks/AFNetworking.framework/Headers/AFSecurityPolicy.h new file mode 100755 index 0000000..3c38da8 --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFSecurityPolicy.h @@ -0,0 +1,142 @@ +// AFSecurityPolicy.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> +#import <Security/Security.h> + +typedef NS_ENUM(NSUInteger, AFSSLPinningMode) { + AFSSLPinningModeNone, + AFSSLPinningModePublicKey, + AFSSLPinningModeCertificate, +}; + +/** + `AFSecurityPolicy` evaluates server trust against pinned X.509 certificates and public keys over secure connections. + + Adding pinned SSL certificates to your app helps prevent man-in-the-middle attacks and other vulnerabilities. Applications dealing with sensitive customer data or financial information are strongly encouraged to route all communication over an HTTPS connection with SSL pinning configured and enabled. + */ + +NS_ASSUME_NONNULL_BEGIN + +@interface AFSecurityPolicy : NSObject + +/** + The criteria by which server trust should be evaluated against the pinned SSL certificates. Defaults to `AFSSLPinningModeNone`. + */ +@property (readonly, nonatomic, assign) AFSSLPinningMode SSLPinningMode; + +/** + The certificates used to evaluate server trust according to the SSL pinning mode. By default, this property is set to any (`.cer`) certificates included in the app bundle. Note that if you create an array with duplicate certificates, the duplicate certificates will be removed. Note that if pinning is enabled, `evaluateServerTrust:forDomain:` will return true if any pinned certificate matches. + */ +@property (nonatomic, strong, nullable) NSArray *pinnedCertificates; + +/** + Whether or not to trust servers with an invalid or expired SSL certificates. Defaults to `NO`. + */ +@property (nonatomic, assign) BOOL allowInvalidCertificates; + +/** + Whether or not to validate the domain name in the certificate's CN field. Defaults to `YES`. + */ +@property (nonatomic, assign) BOOL validatesDomainName; + +///----------------------------------------- +/// @name Getting Specific Security Policies +///----------------------------------------- + +/** + Returns the shared default security policy, which does not allow invalid certificates, validates domain name, and does not validate against pinned certificates or public keys. + + @return The default security policy. + */ ++ (instancetype)defaultPolicy; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Creates and returns a security policy with the specified pinning mode. + + @param pinningMode The SSL pinning mode. + + @return A new security policy. + */ ++ (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode; + +///------------------------------ +/// @name Evaluating Server Trust +///------------------------------ + +/** + Whether or not the specified server trust should be accepted, based on the security policy. + + This method should be used when responding to an authentication challenge from a server. + + @param serverTrust The X.509 certificate trust of the server. + + @return Whether or not to trust the server. + + @warning This method has been deprecated in favor of `-evaluateServerTrust:forDomain:`. + */ +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust DEPRECATED_ATTRIBUTE; + +/** + Whether or not the specified server trust should be accepted, based on the security policy. + + This method should be used when responding to an authentication challenge from a server. + + @param serverTrust The X.509 certificate trust of the server. + @param domain The domain of serverTrust. If `nil`, the domain will not be validated. + + @return Whether or not to trust the server. + */ +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust + forDomain:(nullable NSString *)domain; + +@end + +NS_ASSUME_NONNULL_END + +///---------------- +/// @name Constants +///---------------- + +/** + ## SSL Pinning Modes + + The following constants are provided by `AFSSLPinningMode` as possible SSL pinning modes. + + enum { + AFSSLPinningModeNone, + AFSSLPinningModePublicKey, + AFSSLPinningModeCertificate, + } + + `AFSSLPinningModeNone` + Do not used pinned certificates to validate servers. + + `AFSSLPinningModePublicKey` + Validate host certificates against public keys of pinned certificates. + + `AFSSLPinningModeCertificate` + Validate host certificates against pinned certificates. +*/ diff --git a/frameworks/AFNetworking.framework/Headers/AFURLConnectionOperation.h b/frameworks/AFNetworking.framework/Headers/AFURLConnectionOperation.h new file mode 100755 index 0000000..c71bed4 --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFURLConnectionOperation.h @@ -0,0 +1,344 @@ +// AFURLConnectionOperation.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import <Availability.h> +#import "AFURLRequestSerialization.h" +#import "AFURLResponseSerialization.h" +#import "AFSecurityPolicy.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFURLConnectionOperation` is a subclass of `NSOperation` that implements `NSURLConnection` delegate methods. + + ## Subclassing Notes + + This is the base class of all network request operations. You may wish to create your own subclass in order to implement additional `NSURLConnection` delegate methods (see "`NSURLConnection` Delegate Methods" below), or to provide additional properties and/or class constructors. + + If you are creating a subclass that communicates over the HTTP or HTTPS protocols, you may want to consider subclassing `AFHTTPRequestOperation` instead, as it supports specifying acceptable content types or status codes. + + ## NSURLConnection Delegate Methods + + `AFURLConnectionOperation` implements the following `NSURLConnection` delegate methods: + + - `connection:didReceiveResponse:` + - `connection:didReceiveData:` + - `connectionDidFinishLoading:` + - `connection:didFailWithError:` + - `connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:` + - `connection:willCacheResponse:` + - `connectionShouldUseCredentialStorage:` + - `connection:needNewBodyStream:` + - `connection:willSendRequestForAuthenticationChallenge:` + + If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. + + ## Callbacks and Completion Blocks + + The built-in `completionBlock` provided by `NSOperation` allows for custom behavior to be executed after the request finishes. It is a common pattern for class constructors in subclasses to take callback block parameters, and execute them conditionally in the body of its `completionBlock`. Make sure to handle cancelled operations appropriately when setting a `completionBlock` (i.e. returning early before parsing response data). See the implementation of any of the `AFHTTPRequestOperation` subclasses for an example of this. + + Subclasses are strongly discouraged from overriding `setCompletionBlock:`, as `AFURLConnectionOperation`'s implementation includes a workaround to mitigate retain cycles, and what Apple rather ominously refers to as ["The Deallocation Problem"](http://developer.apple.com/library/ios/#technotes/tn2109/). + + ## SSL Pinning + + Relying on the CA trust model to validate SSL certificates exposes your app to security vulnerabilities, such as man-in-the-middle attacks. For applications that connect to known servers, SSL certificate pinning provides an increased level of security, by checking server certificate validity against those specified in the app bundle. + + SSL with certificate pinning is strongly recommended for any application that transmits sensitive information to an external webservice. + + Connections will be validated on all matching certificates with a `.cer` extension in the bundle root. + + ## NSCoding & NSCopying Conformance + + `AFURLConnectionOperation` conforms to the `NSCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. However, because of the intrinsic limitations of capturing the exact state of an operation at a particular moment, there are some important caveats to keep in mind: + + ### NSCoding Caveats + + - Encoded operations do not include any block or stream properties. Be sure to set `completionBlock`, `outputStream`, and any callback blocks as necessary when using `-initWithCoder:` or `NSKeyedUnarchiver`. + - Operations are paused on `encodeWithCoder:`. If the operation was encoded while paused or still executing, its archived state will return `YES` for `isReady`. Otherwise, the state of an operation when encoding will remain unchanged. + + ### NSCopying Caveats + + - `-copy` and `-copyWithZone:` return a new operation with the `NSURLRequest` of the original. So rather than an exact copy of the operation at that particular instant, the copying mechanism returns a completely new instance, which can be useful for retrying operations. + - A copy of an operation will not include the `outputStream` of the original. + - Operation copies do not include `completionBlock`, as it often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ operation when copied. + */ + +NS_ASSUME_NONNULL_BEGIN + +@interface AFURLConnectionOperation : NSOperation <NSURLConnectionDelegate, NSURLConnectionDataDelegate, NSSecureCoding, NSCopying> + +///------------------------------- +/// @name Accessing Run Loop Modes +///------------------------------- + +/** + The run loop modes in which the operation will run on the network thread. By default, this is a single-member set containing `NSRunLoopCommonModes`. + */ +@property (nonatomic, strong) NSSet *runLoopModes; + +///----------------------------------------- +/// @name Getting URL Connection Information +///----------------------------------------- + +/** + The request used by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSURLRequest *request; + +/** + The last response received by the operation's connection. + */ +@property (readonly, nonatomic, strong, nullable) NSURLResponse *response; + +/** + The error, if any, that occurred in the lifecycle of the request. + */ +@property (readonly, nonatomic, strong, nullable) NSError *error; + +///---------------------------- +/// @name Getting Response Data +///---------------------------- + +/** + The data received during the request. + */ +@property (readonly, nonatomic, strong, nullable) NSData *responseData; + +/** + The string representation of the response data. + */ +@property (readonly, nonatomic, copy, nullable) NSString *responseString; + +/** + The string encoding of the response. + + If the response does not specify a valid string encoding, `responseStringEncoding` will return `NSUTF8StringEncoding`. + */ +@property (readonly, nonatomic, assign) NSStringEncoding responseStringEncoding; + +///------------------------------- +/// @name Managing URL Credentials +///------------------------------- + +/** + Whether the URL connection should consult the credential storage for authenticating the connection. `YES` by default. + + This is the value that is returned in the `NSURLConnectionDelegate` method `-connectionShouldUseCredentialStorage:`. + */ +@property (nonatomic, assign) BOOL shouldUseCredentialStorage; + +/** + The credential used for authentication challenges in `-connection:didReceiveAuthenticationChallenge:`. + + This will be overridden by any shared credentials that exist for the username or password of the request URL, if present. + */ +@property (nonatomic, strong, nullable) NSURLCredential *credential; + +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + +/** + The security policy used to evaluate server trust for secure connections. + */ +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; + +///------------------------ +/// @name Accessing Streams +///------------------------ + +/** + The input stream used to read data to be sent during the request. + + This property acts as a proxy to the `HTTPBodyStream` property of `request`. + */ +@property (nonatomic, strong) NSInputStream *inputStream; + +/** + The output stream that is used to write data received until the request is finished. + + By default, data is accumulated into a buffer that is stored into `responseData` upon completion of the request, with the intermediary `outputStream` property set to `nil`. When `outputStream` is set, the data will not be accumulated into an internal buffer, and as a result, the `responseData` property of the completed request will be `nil`. The output stream will be scheduled in the network thread runloop upon being set. + */ +@property (nonatomic, strong, nullable) NSOutputStream *outputStream; + +///--------------------------------- +/// @name Managing Callback Queues +///--------------------------------- + +/** + The dispatch queue for `completionBlock`. If `NULL` (default), the main queue is used. + */ +#if OS_OBJECT_USE_OBJC +@property (nonatomic, strong, nullable) dispatch_queue_t completionQueue; +#else +@property (nonatomic, assign, nullable) dispatch_queue_t completionQueue; +#endif + +/** + The dispatch group for `completionBlock`. If `NULL` (default), a private dispatch group is used. + */ +#if OS_OBJECT_USE_OBJC +@property (nonatomic, strong, nullable) dispatch_group_t completionGroup; +#else +@property (nonatomic, assign, nullable) dispatch_group_t completionGroup; +#endif + +///--------------------------------------------- +/// @name Managing Request Operation Information +///--------------------------------------------- + +/** + The user info dictionary for the receiver. + */ +@property (nonatomic, strong) NSDictionary *userInfo; +// FIXME: It doesn't seem that this userInfo is used anywhere in the implementation. + +///------------------------------------------------------ +/// @name Initializing an AFURLConnectionOperation Object +///------------------------------------------------------ + +/** + Initializes and returns a newly allocated operation object with a url connection configured with the specified url request. + + This is the designated initializer. + + @param urlRequest The request object to be used by the operation connection. + */ +- (instancetype)initWithRequest:(NSURLRequest *)urlRequest NS_DESIGNATED_INITIALIZER; + +///---------------------------------- +/// @name Pausing / Resuming Requests +///---------------------------------- + +/** + Pauses the execution of the request operation. + + A paused operation returns `NO` for `-isReady`, `-isExecuting`, and `-isFinished`. As such, it will remain in an `NSOperationQueue` until it is either cancelled or resumed. Pausing a finished, cancelled, or paused operation has no effect. + */ +- (void)pause; + +/** + Whether the request operation is currently paused. + + @return `YES` if the operation is currently paused, otherwise `NO`. + */ +- (BOOL)isPaused; + +/** + Resumes the execution of the paused request operation. + + Pause/Resume behavior varies depending on the underlying implementation for the operation class. In its base implementation, resuming a paused requests restarts the original request. However, since HTTP defines a specification for how to request a specific content range, `AFHTTPRequestOperation` will resume downloading the request from where it left off, instead of restarting the original request. + */ +- (void)resume; + +///---------------------------------------------- +/// @name Configuring Backgrounding Task Behavior +///---------------------------------------------- + +/** + Specifies that the operation should continue execution after the app has entered the background, and the expiration handler for that background task. + + @param handler A handler to be called shortly before the application’s remaining background time reaches 0. The handler is wrapped in a block that cancels the operation, and cleans up and marks the end of execution, unlike the `handler` parameter in `UIApplication -beginBackgroundTaskWithExpirationHandler:`, which expects this to be done in the handler itself. The handler is called synchronously on the main thread, thus blocking the application’s suspension momentarily while the application is notified. + */ +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +- (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(nullable void (^)(void))handler NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extensions."); +#endif + +///--------------------------------- +/// @name Setting Progress Callbacks +///--------------------------------- + +/** + Sets a callback to be called when an undetermined number of bytes have been uploaded to the server. + + @param block A block object to be called when an undetermined number of bytes have been uploaded to the server. This block has no return value and takes three arguments: the number of bytes written since the last time the upload progress block was called, the total bytes written, and the total bytes expected to be written during the request, as initially determined by the length of the HTTP body. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setUploadProgressBlock:(nullable void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))block; + +/** + Sets a callback to be called when an undetermined number of bytes have been downloaded from the server. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setDownloadProgressBlock:(nullable void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block; + +///------------------------------------------------- +/// @name Setting NSURLConnection Delegate Callbacks +///------------------------------------------------- + +/** + Sets a block to be executed when the connection will authenticate a challenge in order to download its request, as handled by the `NSURLConnectionDelegate` method `connection:willSendRequestForAuthenticationChallenge:`. + + @param block A block object to be executed when the connection will authenticate a challenge in order to download its request. The block has no return type and takes two arguments: the URL connection object, and the challenge that must be authenticated. This block must invoke one of the challenge-responder methods (NSURLAuthenticationChallengeSender protocol). + + If `allowsInvalidSSLCertificate` is set to YES, `connection:willSendRequestForAuthenticationChallenge:` will attempt to have the challenge sender use credentials with invalid SSL certificates. + */ +- (void)setWillSendRequestForAuthenticationChallengeBlock:(nullable void (^)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge))block; + +/** + Sets a block to be executed when the server redirects the request from one URL to another URL, or when the request URL changed by the `NSURLProtocol` subclass handling the request in order to standardize its format, as handled by the `NSURLConnectionDataDelegate` method `connection:willSendRequest:redirectResponse:`. + + @param block A block object to be executed when the request URL was changed. The block returns an `NSURLRequest` object, the URL request to redirect, and takes three arguments: the URL connection object, the the proposed redirected request, and the URL response that caused the redirect. + */ +- (void)setRedirectResponseBlock:(nullable NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block; + + +/** + Sets a block to be executed to modify the response a connection will cache, if any, as handled by the `NSURLConnectionDelegate` method `connection:willCacheResponse:`. + + @param block A block object to be executed to determine what response a connection will cache, if any. The block returns an `NSCachedURLResponse` object, the cached response to store in memory or `nil` to prevent the response from being cached, and takes two arguments: the URL connection object, and the cached response provided for the request. + */ +- (void)setCacheResponseBlock:(nullable NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block; + +/// + +/** + + */ ++ (NSArray *)batchOfRequestOperations:(nullable NSArray *)operations + progressBlock:(nullable void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(nullable void (^)(NSArray *operations))completionBlock; + +@end + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when an operation begins executing. + */ +extern NSString * const AFNetworkingOperationDidStartNotification; + +/** + Posted when an operation finishes. + */ +extern NSString * const AFNetworkingOperationDidFinishNotification; + +NS_ASSUME_NONNULL_END diff --git a/frameworks/AFNetworking.framework/Headers/AFURLRequestSerialization.h b/frameworks/AFNetworking.framework/Headers/AFURLRequestSerialization.h new file mode 100755 index 0000000..513334b --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFURLRequestSerialization.h @@ -0,0 +1,473 @@ +// AFURLRequestSerialization.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> +#if TARGET_OS_IOS +#import <UIKit/UIKit.h> +#elif TARGET_OS_WATCH +#import <WatchKit/WatchKit.h> +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + The `AFURLRequestSerialization` protocol is adopted by an object that encodes parameters for a specified HTTP requests. Request serializers may encode parameters as query strings, HTTP bodies, setting the appropriate HTTP header fields as necessary. + + For example, a JSON request serializer may set the HTTP body of the request to a JSON representation, and set the `Content-Type` HTTP header field value to `application/json`. + */ +@protocol AFURLRequestSerialization <NSObject, NSSecureCoding, NSCopying> + +/** + Returns a request with the specified parameters encoded into a copy of the original request. + + @param request The original request. + @param parameters The parameters to be encoded. + @param error The error that occurred while attempting to encode the request parameters. + + @return A serialized request. + */ +- (nullable NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(nullable id)parameters + error:(NSError * __nullable __autoreleasing *)error; + +@end + +#pragma mark - + +/** + + */ +typedef NS_ENUM(NSUInteger, AFHTTPRequestQueryStringSerializationStyle) { + AFHTTPRequestQueryStringDefaultStyle = 0, +}; + +@protocol AFMultipartFormData; + +/** + `AFHTTPRequestSerializer` conforms to the `AFURLRequestSerialization` & `AFURLResponseSerialization` protocols, offering a concrete base implementation of query string / URL form-encoded parameter serialization and default request headers, as well as response status code and content type validation. + + Any request or response serializer dealing with HTTP is encouraged to subclass `AFHTTPRequestSerializer` in order to ensure consistent default behavior. + */ +@interface AFHTTPRequestSerializer : NSObject <AFURLRequestSerialization> + +/** + The string encoding used to serialize parameters. `NSUTF8StringEncoding` by default. + */ +@property (nonatomic, assign) NSStringEncoding stringEncoding; + +/** + Whether created requests can use the device’s cellular radio (if present). `YES` by default. + + @see NSMutableURLRequest -setAllowsCellularAccess: + */ +@property (nonatomic, assign) BOOL allowsCellularAccess; + +/** + The cache policy of created requests. `NSURLRequestUseProtocolCachePolicy` by default. + + @see NSMutableURLRequest -setCachePolicy: + */ +@property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy; + +/** + Whether created requests should use the default cookie handling. `YES` by default. + + @see NSMutableURLRequest -setHTTPShouldHandleCookies: + */ +@property (nonatomic, assign) BOOL HTTPShouldHandleCookies; + +/** + Whether created requests can continue transmitting data before receiving a response from an earlier transmission. `NO` by default + + @see NSMutableURLRequest -setHTTPShouldUsePipelining: + */ +@property (nonatomic, assign) BOOL HTTPShouldUsePipelining; + +/** + The network service type for created requests. `NSURLNetworkServiceTypeDefault` by default. + + @see NSMutableURLRequest -setNetworkServiceType: + */ +@property (nonatomic, assign) NSURLRequestNetworkServiceType networkServiceType; + +/** + The timeout interval, in seconds, for created requests. The default timeout interval is 60 seconds. + + @see NSMutableURLRequest -setTimeoutInterval: + */ +@property (nonatomic, assign) NSTimeInterval timeoutInterval; + +///--------------------------------------- +/// @name Configuring HTTP Request Headers +///--------------------------------------- + +/** + Default HTTP header field values to be applied to serialized requests. By default, these include the following: + + - `Accept-Language` with the contents of `NSLocale +preferredLanguages` + - `User-Agent` with the contents of various bundle identifiers and OS designations + + @discussion To add or remove default request headers, use `setValue:forHTTPHeaderField:`. + */ +@property (readonly, nonatomic, strong) NSDictionary *HTTPRequestHeaders; + +/** + Creates and returns a serializer with default configuration. + */ ++ (instancetype)serializer; + +/** + Sets the value for the HTTP headers set in request objects made by the HTTP client. If `nil`, removes the existing value for that header. + + @param field The HTTP header to set a default value for + @param value The value set as default for the specified header, or `nil` + */ +- (void)setValue:(nullable NSString *)value +forHTTPHeaderField:(NSString *)field; + +/** + Returns the value for the HTTP headers set in the request serializer. + + @param field The HTTP header to retrieve the default value for + + @return The value set as default for the specified header, or `nil` + */ +- (nullable NSString *)valueForHTTPHeaderField:(NSString *)field; + +/** + Sets the "Authorization" HTTP header set in request objects made by the HTTP client to a basic authentication value with Base64-encoded username and password. This overwrites any existing value for this header. + + @param username The HTTP basic auth username + @param password The HTTP basic auth password + */ +- (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username + password:(NSString *)password; + +/** + @deprecated This method has been deprecated. Use -setValue:forHTTPHeaderField: instead. + */ +- (void)setAuthorizationHeaderFieldWithToken:(NSString *)token DEPRECATED_ATTRIBUTE; + + +/** + Clears any existing value for the "Authorization" HTTP header. + */ +- (void)clearAuthorizationHeader; + +///------------------------------------------------------- +/// @name Configuring Query String Parameter Serialization +///------------------------------------------------------- + +/** + HTTP methods for which serialized requests will encode parameters as a query string. `GET`, `HEAD`, and `DELETE` by default. + */ +@property (nonatomic, strong) NSSet *HTTPMethodsEncodingParametersInURI; + +/** + Set the method of query string serialization according to one of the pre-defined styles. + + @param style The serialization style. + + @see AFHTTPRequestQueryStringSerializationStyle + */ +- (void)setQueryStringSerializationWithStyle:(AFHTTPRequestQueryStringSerializationStyle)style; + +/** + Set the a custom method of query string serialization according to the specified block. + + @param block A block that defines a process of encoding parameters into a query string. This block returns the query string and takes three arguments: the request, the parameters to encode, and the error that occurred when attempting to encode parameters for the given request. + */ +- (void)setQueryStringSerializationWithBlock:(nullable NSString * (^)(NSURLRequest *request, id parameters, NSError * __autoreleasing *error))block; + +///------------------------------- +/// @name Creating Request Objects +///------------------------------- + +/** + @deprecated This method has been deprecated. Use -requestWithMethod:URLString:parameters:error: instead. + */ +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters DEPRECATED_ATTRIBUTE; + +/** + Creates an `NSMutableURLRequest` object with the specified HTTP method and URL string. + + If the HTTP method is `GET`, `HEAD`, or `DELETE`, the parameters will be used to construct a url-encoded query string that is appended to the request's URL. Otherwise, the parameters will be encoded according to the value of the `parameterEncoding` property, and set as the request body. + + @param method The HTTP method for the request, such as `GET`, `POST`, `PUT`, or `DELETE`. This parameter must not be `nil`. + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be either set as a query string for `GET` requests, or the request HTTP body. + @param error The error that occurred while constructing the request. + + @return An `NSMutableURLRequest` object. + */ +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(nullable id)parameters + error:(NSError * __nullable __autoreleasing *)error; + +/** + @deprecated This method has been deprecated. Use -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error: instead. + */ +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block DEPRECATED_ATTRIBUTE; + +/** + Creates an `NSMutableURLRequest` object with the specified HTTP method and URLString, and constructs a `multipart/form-data` HTTP body, using the specified parameters and multipart form data block. See http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 + + Multipart form requests are automatically streamed, reading files directly from disk along with in-memory data in a single HTTP body. The resulting `NSMutableURLRequest` object has an `HTTPBodyStream` property, so refrain from setting `HTTPBodyStream` or `HTTPBody` on this request object, as it will clear out the multipart form body stream. + + @param method The HTTP method for the request. This parameter must not be `GET` or `HEAD`, or `nil`. + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded and set in the request HTTP body. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. + @param error The error that occurred while constructing the request. + + @return An `NSMutableURLRequest` object + */ +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(nullable NSDictionary *)parameters + constructingBodyWithBlock:(nullable void (^)(id <AFMultipartFormData> formData))block + error:(NSError * __nullable __autoreleasing *)error; + +/** + Creates an `NSMutableURLRequest` by removing the `HTTPBodyStream` from a request, and asynchronously writing its contents into the specified file, invoking the completion handler when finished. + + @param request The multipart form request. The `HTTPBodyStream` property of `request` must not be `nil`. + @param fileURL The file URL to write multipart form contents to. + @param handler A handler block to execute. + + @discussion There is a bug in `NSURLSessionTask` that causes requests to not send a `Content-Length` header when streaming contents from an HTTP body, which is notably problematic when interacting with the Amazon S3 webservice. As a workaround, this method takes a request constructed with `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:`, or any other request with an `HTTPBodyStream`, writes the contents to the specified file and returns a copy of the original request with the `HTTPBodyStream` property set to `nil`. From here, the file can either be passed to `AFURLSessionManager -uploadTaskWithRequest:fromFile:progress:completionHandler:`, or have its contents read into an `NSData` that's assigned to the `HTTPBody` property of the request. + + @see https://github.com/AFNetworking/AFNetworking/issues/1398 + */ +- (NSMutableURLRequest *)requestWithMultipartFormRequest:(NSURLRequest *)request + writingStreamContentsToFile:(NSURL *)fileURL + completionHandler:(nullable void (^)(NSError * __nullable error))handler; + +@end + +#pragma mark - + +/** + The `AFMultipartFormData` protocol defines the methods supported by the parameter in the block argument of `AFHTTPRequestSerializer -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:`. + */ +@protocol AFMultipartFormData + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{generated filename}; name=#{name}"` and `Content-Type: #{generated mimeType}`, followed by the encoded file data and the multipart form boundary. + + The filename and MIME type for this data in the form will be automatically generated, using the last path component of the `fileURL` and system associated MIME type for the `fileURL` extension, respectively. + + @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param error If an error occurs, upon return contains an `NSError` object that describes the problem. + + @return `YES` if the file data was successfully appended, otherwise `NO`. + */ +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + error:(NSError * __nullable __autoreleasing *)error; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. + + @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param fileName The file name to be used in the `Content-Disposition` header. This parameter must not be `nil`. + @param mimeType The declared MIME type of the file data. This parameter must not be `nil`. + @param error If an error occurs, upon return contains an `NSError` object that describes the problem. + + @return `YES` if the file data was successfully appended otherwise `NO`. + */ +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType + error:(NSError * __nullable __autoreleasing *)error; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the data from the input stream and the multipart form boundary. + + @param inputStream The input stream to be appended to the form data + @param name The name to be associated with the specified input stream. This parameter must not be `nil`. + @param fileName The filename to be associated with the specified input stream. This parameter must not be `nil`. + @param length The length of the specified input stream in bytes. + @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. + */ +- (void)appendPartWithInputStream:(nullable NSInputStream *)inputStream + name:(NSString *)name + fileName:(NSString *)fileName + length:(int64_t)length + mimeType:(NSString *)mimeType; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. + + @param data The data to be encoded and appended to the form data. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param fileName The filename to be associated with the specified data. This parameter must not be `nil`. + @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. + */ +- (void)appendPartWithFileData:(NSData *)data + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType; + +/** + Appends the HTTP headers `Content-Disposition: form-data; name=#{name}"`, followed by the encoded data and the multipart form boundary. + + @param data The data to be encoded and appended to the form data. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + */ + +- (void)appendPartWithFormData:(NSData *)data + name:(NSString *)name; + + +/** + Appends HTTP headers, followed by the encoded data and the multipart form boundary. + + @param headers The HTTP headers to be appended to the form data. + @param body The data to be encoded and appended to the form data. This parameter must not be `nil`. + */ +- (void)appendPartWithHeaders:(nullable NSDictionary *)headers + body:(NSData *)body; + +/** + Throttles request bandwidth by limiting the packet size and adding a delay for each chunk read from the upload stream. + + When uploading over a 3G or EDGE connection, requests may fail with "request body stream exhausted". Setting a maximum packet size and delay according to the recommended values (`kAFUploadStream3GSuggestedPacketSize` and `kAFUploadStream3GSuggestedDelay`) lowers the risk of the input stream exceeding its allocated bandwidth. Unfortunately, there is no definite way to distinguish between a 3G, EDGE, or LTE connection over `NSURLConnection`. As such, it is not recommended that you throttle bandwidth based solely on network reachability. Instead, you should consider checking for the "request body stream exhausted" in a failure block, and then retrying the request with throttled bandwidth. + + @param numberOfBytes Maximum packet size, in number of bytes. The default packet size for an input stream is 16kb. + @param delay Duration of delay each time a packet is read. By default, no delay is set. + */ +- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes + delay:(NSTimeInterval)delay; + +@end + +#pragma mark - + +/** + `AFJSONRequestSerializer` is a subclass of `AFHTTPRequestSerializer` that encodes parameters as JSON using `NSJSONSerialization`, setting the `Content-Type` of the encoded request to `application/json`. + */ +@interface AFJSONRequestSerializer : AFHTTPRequestSerializer + +/** + Options for writing the request JSON data from Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONWritingOptions". `0` by default. + */ +@property (nonatomic, assign) NSJSONWritingOptions writingOptions; + +/** + Creates and returns a JSON serializer with specified reading and writing options. + + @param writingOptions The specified JSON writing options. + */ ++ (instancetype)serializerWithWritingOptions:(NSJSONWritingOptions)writingOptions; + +@end + +#pragma mark - + +/** + `AFPropertyListRequestSerializer` is a subclass of `AFHTTPRequestSerializer` that encodes parameters as JSON using `NSPropertyListSerializer`, setting the `Content-Type` of the encoded request to `application/x-plist`. + */ +@interface AFPropertyListRequestSerializer : AFHTTPRequestSerializer + +/** + The property list format. Possible values are described in "NSPropertyListFormat". + */ +@property (nonatomic, assign) NSPropertyListFormat format; + +/** + @warning The `writeOptions` property is currently unused. + */ +@property (nonatomic, assign) NSPropertyListWriteOptions writeOptions; + +/** + Creates and returns a property list serializer with a specified format, read options, and write options. + + @param format The property list format. + @param writeOptions The property list write options. + + @warning The `writeOptions` property is currently unused. + */ ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + writeOptions:(NSPropertyListWriteOptions)writeOptions; + +@end + +#pragma mark - + +///---------------- +/// @name Constants +///---------------- + +/** + ## Error Domains + + The following error domain is predefined. + + - `NSString * const AFURLRequestSerializationErrorDomain` + + ### Constants + + `AFURLRequestSerializationErrorDomain` + AFURLRequestSerializer errors. Error codes for `AFURLRequestSerializationErrorDomain` correspond to codes in `NSURLErrorDomain`. + */ +extern NSString * const AFURLRequestSerializationErrorDomain; + +/** + ## User info dictionary keys + + These keys may exist in the user info dictionary, in addition to those defined for NSError. + + - `NSString * const AFNetworkingOperationFailingURLRequestErrorKey` + + ### Constants + + `AFNetworkingOperationFailingURLRequestErrorKey` + The corresponding value is an `NSURLRequest` containing the request of the operation associated with an error. This key is only present in the `AFURLRequestSerializationErrorDomain`. + */ +extern NSString * const AFNetworkingOperationFailingURLRequestErrorKey; + +/** + ## Throttling Bandwidth for HTTP Request Input Streams + + @see -throttleBandwidthWithPacketSize:delay: + + ### Constants + + `kAFUploadStream3GSuggestedPacketSize` + Maximum packet size, in number of bytes. Equal to 16kb. + + `kAFUploadStream3GSuggestedDelay` + Duration of delay each time a packet is read. Equal to 0.2 seconds. + */ +extern NSUInteger const kAFUploadStream3GSuggestedPacketSize; +extern NSTimeInterval const kAFUploadStream3GSuggestedDelay; + +NS_ASSUME_NONNULL_END diff --git a/frameworks/AFNetworking.framework/Headers/AFURLResponseSerialization.h b/frameworks/AFNetworking.framework/Headers/AFURLResponseSerialization.h new file mode 100755 index 0000000..e14dc8a --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFURLResponseSerialization.h @@ -0,0 +1,311 @@ +// AFURLResponseSerialization.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> +#import <CoreGraphics/CoreGraphics.h> + +NS_ASSUME_NONNULL_BEGIN + +/** + The `AFURLResponseSerialization` protocol is adopted by an object that decodes data into a more useful object representation, according to details in the server response. Response serializers may additionally perform validation on the incoming response and data. + + For example, a JSON response serializer may check for an acceptable status code (`2XX` range) and content type (`application/json`), decoding a valid JSON response into an object. + */ +@protocol AFURLResponseSerialization <NSObject, NSSecureCoding, NSCopying> + +/** + The response object decoded from the data associated with a specified response. + + @param response The response to be processed. + @param data The response data to be decoded. + @param error The error that occurred while attempting to decode the response data. + + @return The object decoded from the specified response data. + */ +- (nullable id)responseObjectForResponse:(nullable NSURLResponse *)response + data:(nullable NSData *)data + error:(NSError * __nullable __autoreleasing *)error; + +@end + +#pragma mark - + +/** + `AFHTTPResponseSerializer` conforms to the `AFURLRequestSerialization` & `AFURLResponseSerialization` protocols, offering a concrete base implementation of query string / URL form-encoded parameter serialization and default request headers, as well as response status code and content type validation. + + Any request or response serializer dealing with HTTP is encouraged to subclass `AFHTTPResponseSerializer` in order to ensure consistent default behavior. + */ +@interface AFHTTPResponseSerializer : NSObject <AFURLResponseSerialization> + +- (instancetype)init; + +/** + The string encoding used to serialize data received from the server, when no string encoding is specified by the response. `NSUTF8StringEncoding` by default. + */ +@property (nonatomic, assign) NSStringEncoding stringEncoding; + +/** + Creates and returns a serializer with default configuration. + */ ++ (instancetype)serializer; + +///----------------------------------------- +/// @name Configuring Response Serialization +///----------------------------------------- + +/** + The acceptable HTTP status codes for responses. When non-`nil`, responses with status codes not contained by the set will result in an error during validation. + + See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html + */ +@property (nonatomic, copy, nullable) NSIndexSet *acceptableStatusCodes; + +/** + The acceptable MIME types for responses. When non-`nil`, responses with a `Content-Type` with MIME types that do not intersect with the set will result in an error during validation. + */ +@property (nonatomic, copy, nullable) NSSet *acceptableContentTypes; + +/** + Validates the specified response and data. + + In its base implementation, this method checks for an acceptable status code and content type. Subclasses may wish to add other domain-specific checks. + + @param response The response to be validated. + @param data The data associated with the response. + @param error The error that occurred while attempting to validate the response. + + @return `YES` if the response is valid, otherwise `NO`. + */ +- (BOOL)validateResponse:(nullable NSHTTPURLResponse *)response + data:(nullable NSData *)data + error:(NSError * __nullable __autoreleasing *)error; + +@end + +#pragma mark - + + +/** + `AFJSONResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes JSON responses. + + By default, `AFJSONResponseSerializer` accepts the following MIME types, which includes the official standard, `application/json`, as well as other commonly-used types: + + - `application/json` + - `text/json` + - `text/javascript` + */ +@interface AFJSONResponseSerializer : AFHTTPResponseSerializer + +- (instancetype)init; + +/** + Options for reading the response JSON data and creating the Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". `0` by default. + */ +@property (nonatomic, assign) NSJSONReadingOptions readingOptions; + +/** + Whether to remove keys with `NSNull` values from response JSON. Defaults to `NO`. + */ +@property (nonatomic, assign) BOOL removesKeysWithNullValues; + +/** + Creates and returns a JSON serializer with specified reading and writing options. + + @param readingOptions The specified JSON reading options. + */ ++ (instancetype)serializerWithReadingOptions:(NSJSONReadingOptions)readingOptions; + +@end + +#pragma mark - + +/** + `AFXMLParserResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLParser` objects. + + By default, `AFXMLParserResponseSerializer` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: + + - `application/xml` + - `text/xml` + */ +@interface AFXMLParserResponseSerializer : AFHTTPResponseSerializer + +@end + +#pragma mark - + +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED + +/** + `AFXMLDocumentResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLDocument` objects. + + By default, `AFXMLDocumentResponseSerializer` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: + + - `application/xml` + - `text/xml` + */ +@interface AFXMLDocumentResponseSerializer : AFHTTPResponseSerializer + +- (instancetype)init; + +/** + Input and output options specifically intended for `NSXMLDocument` objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". `0` by default. + */ +@property (nonatomic, assign) NSUInteger options; + +/** + Creates and returns an XML document serializer with the specified options. + + @param mask The XML document options. + */ ++ (instancetype)serializerWithXMLDocumentOptions:(NSUInteger)mask; + +@end + +#endif + +#pragma mark - + +/** + `AFPropertyListResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLDocument` objects. + + By default, `AFPropertyListResponseSerializer` accepts the following MIME types: + + - `application/x-plist` + */ +@interface AFPropertyListResponseSerializer : AFHTTPResponseSerializer + +- (instancetype)init; + +/** + The property list format. Possible values are described in "NSPropertyListFormat". + */ +@property (nonatomic, assign) NSPropertyListFormat format; + +/** + The property list reading options. Possible values are described in "NSPropertyListMutabilityOptions." + */ +@property (nonatomic, assign) NSPropertyListReadOptions readOptions; + +/** + Creates and returns a property list serializer with a specified format, read options, and write options. + + @param format The property list format. + @param readOptions The property list reading options. + */ ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + readOptions:(NSPropertyListReadOptions)readOptions; + +@end + +#pragma mark - + +/** + `AFImageResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes image responses. + + By default, `AFImageResponseSerializer` accepts the following MIME types, which correspond to the image formats supported by UIImage or NSImage: + + - `image/tiff` + - `image/jpeg` + - `image/gif` + - `image/png` + - `image/ico` + - `image/x-icon` + - `image/bmp` + - `image/x-bmp` + - `image/x-xbitmap` + - `image/x-win-bitmap` + */ +@interface AFImageResponseSerializer : AFHTTPResponseSerializer + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +/** + The scale factor used when interpreting the image data to construct `responseImage`. Specifying a scale factor of 1.0 results in an image whose size matches the pixel-based dimensions of the image. Applying a different scale factor changes the size of the image as reported by the size property. This is set to the value of scale of the main screen by default, which automatically scales images for retina displays, for instance. + */ +@property (nonatomic, assign) CGFloat imageScale; + +/** + Whether to automatically inflate response image data for compressed formats (such as PNG or JPEG). Enabling this can significantly improve drawing performance on iOS when used with `setCompletionBlockWithSuccess:failure:`, as it allows a bitmap representation to be constructed in the background rather than on the main thread. `YES` by default. + */ +@property (nonatomic, assign) BOOL automaticallyInflatesResponseImage; +#endif + +@end + +#pragma mark - + +/** + `AFCompoundSerializer` is a subclass of `AFHTTPResponseSerializer` that delegates the response serialization to the first `AFHTTPResponseSerializer` object that returns an object for `responseObjectForResponse:data:error:`, falling back on the default behavior of `AFHTTPResponseSerializer`. This is useful for supporting multiple potential types and structures of server responses with a single serializer. + */ +@interface AFCompoundResponseSerializer : AFHTTPResponseSerializer + +/** + The component response serializers. + */ +@property (readonly, nonatomic, copy) NSArray *responseSerializers; + +/** + Creates and returns a compound serializer comprised of the specified response serializers. + + @warning Each response serializer specified must be a subclass of `AFHTTPResponseSerializer`, and response to `-validateResponse:data:error:`. + */ ++ (instancetype)compoundSerializerWithResponseSerializers:(NSArray *)responseSerializers; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## Error Domains + + The following error domain is predefined. + + - `NSString * const AFURLResponseSerializationErrorDomain` + + ### Constants + + `AFURLResponseSerializationErrorDomain` + AFURLResponseSerializer errors. Error codes for `AFURLResponseSerializationErrorDomain` correspond to codes in `NSURLErrorDomain`. + */ +extern NSString * const AFURLResponseSerializationErrorDomain; + +/** + ## User info dictionary keys + + These keys may exist in the user info dictionary, in addition to those defined for NSError. + + - `NSString * const AFNetworkingOperationFailingURLResponseErrorKey` + - `NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey` + + ### Constants + + `AFNetworkingOperationFailingURLResponseErrorKey` + The corresponding value is an `NSURLResponse` containing the response of the operation associated with an error. This key is only present in the `AFURLResponseSerializationErrorDomain`. + + `AFNetworkingOperationFailingURLResponseDataErrorKey` + The corresponding value is an `NSData` containing the original data of the operation associated with an error. This key is only present in the `AFURLResponseSerializationErrorDomain`. + */ +extern NSString * const AFNetworkingOperationFailingURLResponseErrorKey; + +extern NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey; + +NS_ASSUME_NONNULL_END diff --git a/frameworks/AFNetworking.framework/Headers/AFURLSessionManager.h b/frameworks/AFNetworking.framework/Headers/AFURLSessionManager.h new file mode 100755 index 0000000..a718d96 --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/AFURLSessionManager.h @@ -0,0 +1,554 @@ +// AFURLSessionManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import "AFURLResponseSerialization.h" +#import "AFURLRequestSerialization.h" +#import "AFSecurityPolicy.h" +#if !TARGET_OS_WATCH +#import "AFNetworkReachabilityManager.h" +#endif + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFURLSessionManager` creates and manages an `NSURLSession` object based on a specified `NSURLSessionConfiguration` object, which conforms to `<NSURLSessionTaskDelegate>`, `<NSURLSessionDataDelegate>`, `<NSURLSessionDownloadDelegate>`, and `<NSURLSessionDelegate>`. + + ## Subclassing Notes + + This is the base class for `AFHTTPSessionManager`, which adds functionality specific to making HTTP requests. If you are looking to extend `AFURLSessionManager` specifically for HTTP, consider subclassing `AFHTTPSessionManager` instead. + + ## NSURLSession & NSURLSessionTask Delegate Methods + + `AFURLSessionManager` implements the following delegate methods: + + ### `NSURLSessionDelegate` + + - `URLSession:didBecomeInvalidWithError:` + - `URLSession:didReceiveChallenge:completionHandler:` + - `URLSessionDidFinishEventsForBackgroundURLSession:` + + ### `NSURLSessionTaskDelegate` + + - `URLSession:willPerformHTTPRedirection:newRequest:completionHandler:` + - `URLSession:task:didReceiveChallenge:completionHandler:` + - `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:` + - `URLSession:task:didCompleteWithError:` + + ### `NSURLSessionDataDelegate` + + - `URLSession:dataTask:didReceiveResponse:completionHandler:` + - `URLSession:dataTask:didBecomeDownloadTask:` + - `URLSession:dataTask:didReceiveData:` + - `URLSession:dataTask:willCacheResponse:completionHandler:` + + ### `NSURLSessionDownloadDelegate` + + - `URLSession:downloadTask:didFinishDownloadingToURL:` + - `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:` + - `URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:` + + If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. + + ## Network Reachability Monitoring + + Network reachability status and change monitoring is available through the `reachabilityManager` property. Applications may choose to monitor network reachability conditions in order to prevent or suspend any outbound requests. See `AFNetworkReachabilityManager` for more details. + + ## NSCoding Caveats + + - Encoded managers do not include any block properties. Be sure to set delegate callback blocks when using `-initWithCoder:` or `NSKeyedUnarchiver`. + + ## NSCopying Caveats + + - `-copy` and `-copyWithZone:` return a new manager with a new `NSURLSession` created from the configuration of the original. + - Operation copies do not include any delegate callback blocks, as they often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ session manager when copied. + + @warning Managers for background sessions must be owned for the duration of their use. This can be accomplished by creating an application-wide or shared singleton instance. + */ + +NS_ASSUME_NONNULL_BEGIN + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) || TARGET_OS_WATCH + +@interface AFURLSessionManager : NSObject <NSURLSessionDelegate, NSURLSessionTaskDelegate, NSURLSessionDataDelegate, NSURLSessionDownloadDelegate, NSSecureCoding, NSCopying> + +/** + The managed session. + */ +@property (readonly, nonatomic, strong) NSURLSession *session; + +/** + The operation queue on which delegate callbacks are run. + */ +@property (readonly, nonatomic, strong) NSOperationQueue *operationQueue; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an instance of `AFJSONResponseSerializer`. + + @warning `responseSerializer` must not be `nil`. + */ +@property (nonatomic, strong) id <AFURLResponseSerialization> responseSerializer; + +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + +/** + The security policy used by created request operations to evaluate server trust for secure connections. `AFURLSessionManager` uses the `defaultPolicy` unless otherwise specified. + */ +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; + +#if !TARGET_OS_WATCH +///-------------------------------------- +/// @name Monitoring Network Reachability +///-------------------------------------- + +/** + The network reachability manager. `AFURLSessionManager` uses the `sharedManager` by default. + */ +@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager; +#endif + +///---------------------------- +/// @name Getting Session Tasks +///---------------------------- + +/** + The data, upload, and download tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *tasks; + +/** + The data tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *dataTasks; + +/** + The upload tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *uploadTasks; + +/** + The download tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *downloadTasks; + +///------------------------------- +/// @name Managing Callback Queues +///------------------------------- + +/** + The dispatch queue for `completionBlock`. If `NULL` (default), the main queue is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong, nullable) dispatch_queue_t completionQueue; +#else +@property (nonatomic, assign, nullable) dispatch_queue_t completionQueue; +#endif + +/** + The dispatch group for `completionBlock`. If `NULL` (default), a private dispatch group is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong, nullable) dispatch_group_t completionGroup; +#else +@property (nonatomic, assign, nullable) dispatch_group_t completionGroup; +#endif + +///--------------------------------- +/// @name Working Around System Bugs +///--------------------------------- + +/** + Whether to attempt to retry creation of upload tasks for background sessions when initial call returns `nil`. `NO` by default. + + @bug As of iOS 7.0, there is a bug where upload tasks created for background tasks are sometimes `nil`. As a workaround, if this property is `YES`, AFNetworking will follow Apple's recommendation to try creating the task again. + + @see https://github.com/AFNetworking/AFNetworking/issues/1675 + */ +@property (nonatomic, assign) BOOL attemptsToRecreateUploadTasksForBackgroundSessions; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Creates and returns a manager for a session created with the specified configuration. This is the designated initializer. + + @param configuration The configuration used to create the managed session. + + @return A manager for a newly-created session. + */ +- (instancetype)initWithSessionConfiguration:(nullable NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; + +/** + Invalidates the managed session, optionally canceling pending tasks. + + @param cancelPendingTasks Whether or not to cancel pending tasks. + */ +- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks; + +///------------------------- +/// @name Running Data Tasks +///------------------------- + +/** + Creates an `NSURLSessionDataTask` with the specified request. + + @param request The HTTP request for the request. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + */ +- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request + completionHandler:(nullable void (^)(NSURLResponse *response, id __nullable responseObject, NSError * __nullable error))completionHandler; + +///--------------------------- +/// @name Running Upload Tasks +///--------------------------- + +/** + Creates an `NSURLSessionUploadTask` with the specified request for a local file. + + @param request The HTTP request for the request. + @param fileURL A URL to the local file to be uploaded. + @param progress A progress object monitoring the current upload progress. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + + @see `attemptsToRecreateUploadTasksForBackgroundSessions` + */ +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromFile:(NSURL *)fileURL + progress:(NSProgress * __nullable __autoreleasing * __nullable)progress + completionHandler:(nullable void (^)(NSURLResponse *response, id __nullable responseObject, NSError * __nullable error))completionHandler; + +/** + Creates an `NSURLSessionUploadTask` with the specified request for an HTTP body. + + @param request The HTTP request for the request. + @param bodyData A data object containing the HTTP body to be uploaded. + @param progress A progress object monitoring the current upload progress. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + */ +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromData:(nullable NSData *)bodyData + progress:(NSProgress * __nullable __autoreleasing * __nullable)progress + completionHandler:(nullable void (^)(NSURLResponse *response, id __nullable responseObject, NSError * __nullable error))completionHandler; + +/** + Creates an `NSURLSessionUploadTask` with the specified streaming request. + + @param request The HTTP request for the request. + @param progress A progress object monitoring the current upload progress. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + */ +- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request + progress:(NSProgress * __nullable __autoreleasing * __nullable)progress + completionHandler:(nullable void (^)(NSURLResponse *response, id __nullable responseObject, NSError * __nullable error))completionHandler; + +///----------------------------- +/// @name Running Download Tasks +///----------------------------- + +/** + Creates an `NSURLSessionDownloadTask` with the specified request. + + @param request The HTTP request for the request. + @param progress A progress object monitoring the current download progress. + @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. + @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. + + @warning If using a background `NSURLSessionConfiguration` on iOS, these blocks will be lost when the app is terminated. Background sessions may prefer to use `-setDownloadTaskDidFinishDownloadingBlock:` to specify the URL for saving the downloaded file, rather than the destination block of this method. + */ +- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request + progress:(NSProgress * __nullable __autoreleasing * __nullable)progress + destination:(nullable NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(nullable void (^)(NSURLResponse *response, NSURL * __nullable filePath, NSError * __nullable error))completionHandler; + +/** + Creates an `NSURLSessionDownloadTask` with the specified resume data. + + @param resumeData The data used to resume downloading. + @param progress A progress object monitoring the current download progress. + @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. + @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. + */ +- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData + progress:(NSProgress * __nullable __autoreleasing * __nullable)progress + destination:(nullable NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(nullable void (^)(NSURLResponse *response, NSURL * __nullable filePath, NSError * __nullable error))completionHandler; + +///--------------------------------- +/// @name Getting Progress for Tasks +///--------------------------------- + +/** + Returns the upload progress of the specified task. + + @param uploadTask The session upload task. Must not be `nil`. + + @return An `NSProgress` object reporting the upload progress of a task, or `nil` if the progress is unavailable. + */ +- (nullable NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask; + +/** + Returns the download progress of the specified task. + + @param downloadTask The session download task. Must not be `nil`. + + @return An `NSProgress` object reporting the download progress of a task, or `nil` if the progress is unavailable. + */ +- (nullable NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask; + +///----------------------------------------- +/// @name Setting Session Delegate Callbacks +///----------------------------------------- + +/** + Sets a block to be executed when the managed session becomes invalid, as handled by the `NSURLSessionDelegate` method `URLSession:didBecomeInvalidWithError:`. + + @param block A block object to be executed when the managed session becomes invalid. The block has no return value, and takes two arguments: the session, and the error related to the cause of invalidation. + */ +- (void)setSessionDidBecomeInvalidBlock:(nullable void (^)(NSURLSession *session, NSError *error))block; + +/** + Sets a block to be executed when a connection level authentication challenge has occurred, as handled by the `NSURLSessionDelegate` method `URLSession:didReceiveChallenge:completionHandler:`. + + @param block A block object to be executed when a connection level authentication challenge has occurred. The block returns the disposition of the authentication challenge, and takes three arguments: the session, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. + */ +- (void)setSessionDidReceiveAuthenticationChallengeBlock:(nullable NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __nullable __autoreleasing * __nullable credential))block; + +///-------------------------------------- +/// @name Setting Task Delegate Callbacks +///-------------------------------------- + +/** + Sets a block to be executed when a task requires a new request body stream to send to the remote server, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:needNewBodyStream:`. + + @param block A block object to be executed when a task requires a new request body stream. + */ +- (void)setTaskNeedNewBodyStreamBlock:(nullable NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block; + +/** + Sets a block to be executed when an HTTP request is attempting to perform a redirection to a different URL, as handled by the `NSURLSessionTaskDelegate` method `URLSession:willPerformHTTPRedirection:newRequest:completionHandler:`. + + @param block A block object to be executed when an HTTP request is attempting to perform a redirection to a different URL. The block returns the request to be made for the redirection, and takes four arguments: the session, the task, the redirection response, and the request corresponding to the redirection response. + */ +- (void)setTaskWillPerformHTTPRedirectionBlock:(nullable NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block; + +/** + Sets a block to be executed when a session task has received a request specific authentication challenge, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didReceiveChallenge:completionHandler:`. + + @param block A block object to be executed when a session task has received a request specific authentication challenge. The block returns the disposition of the authentication challenge, and takes four arguments: the session, the task, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. + */ +- (void)setTaskDidReceiveAuthenticationChallengeBlock:(nullable NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __nullable __autoreleasing * __nullable credential))block; + +/** + Sets a block to be executed periodically to track upload progress, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:`. + + @param block A block object to be called when an undetermined number of bytes have been uploaded to the server. This block has no return value and takes five arguments: the session, the task, the number of bytes written since the last time the upload progress block was called, the total bytes written, and the total bytes expected to be written during the request, as initially determined by the length of the HTTP body. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setTaskDidSendBodyDataBlock:(nullable void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block; + +/** + Sets a block to be executed as the last message related to a specific task, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didCompleteWithError:`. + + @param block A block object to be executed when a session task is completed. The block has no return value, and takes three arguments: the session, the task, and any error that occurred in the process of executing the task. + */ +- (void)setTaskDidCompleteBlock:(nullable void (^)(NSURLSession *session, NSURLSessionTask *task, NSError * __nullable error))block; + +///------------------------------------------- +/// @name Setting Data Task Delegate Callbacks +///------------------------------------------- + +/** + Sets a block to be executed when a data task has received a response, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didReceiveResponse:completionHandler:`. + + @param block A block object to be executed when a data task has received a response. The block returns the disposition of the session response, and takes three arguments: the session, the data task, and the received response. + */ +- (void)setDataTaskDidReceiveResponseBlock:(nullable NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block; + +/** + Sets a block to be executed when a data task has become a download task, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didBecomeDownloadTask:`. + + @param block A block object to be executed when a data task has become a download task. The block has no return value, and takes three arguments: the session, the data task, and the download task it has become. + */ +- (void)setDataTaskDidBecomeDownloadTaskBlock:(nullable void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block; + +/** + Sets a block to be executed when a data task receives data, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didReceiveData:`. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the session, the data task, and the data received. This block may be called multiple times, and will execute on the session manager operation queue. + */ +- (void)setDataTaskDidReceiveDataBlock:(nullable void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block; + +/** + Sets a block to be executed to determine the caching behavior of a data task, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:willCacheResponse:completionHandler:`. + + @param block A block object to be executed to determine the caching behavior of a data task. The block returns the response to cache, and takes three arguments: the session, the data task, and the proposed cached URL response. + */ +- (void)setDataTaskWillCacheResponseBlock:(nullable NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block; + +/** + Sets a block to be executed once all messages enqueued for a session have been delivered, as handled by the `NSURLSessionDataDelegate` method `URLSessionDidFinishEventsForBackgroundURLSession:`. + + @param block A block object to be executed once all messages enqueued for a session have been delivered. The block has no return value and takes a single argument: the session. + */ +- (void)setDidFinishEventsForBackgroundURLSessionBlock:(nullable void (^)(NSURLSession *session))block; + +///----------------------------------------------- +/// @name Setting Download Task Delegate Callbacks +///----------------------------------------------- + +/** + Sets a block to be executed when a download task has completed a download, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didFinishDownloadingToURL:`. + + @param block A block object to be executed when a download task has completed. The block returns the URL the download should be moved to, and takes three arguments: the session, the download task, and the temporary location of the downloaded file. If the file manager encounters an error while attempting to move the temporary file to the destination, an `AFURLSessionDownloadTaskDidFailToMoveFileNotification` will be posted, with the download task as its object, and the user info of the error. + */ +- (void)setDownloadTaskDidFinishDownloadingBlock:(nullable NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block; + +/** + Sets a block to be executed periodically to track download progress, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:`. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes five arguments: the session, the download task, the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the session manager operation queue. + */ +- (void)setDownloadTaskDidWriteDataBlock:(nullable void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block; + +/** + Sets a block to be executed when a download task has been resumed, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:`. + + @param block A block object to be executed when a download task has been resumed. The block has no return value and takes four arguments: the session, the download task, the file offset of the resumed download, and the total number of bytes expected to be downloaded. + */ +- (void)setDownloadTaskDidResumeBlock:(nullable void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block; + +@end + +#endif + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when a task begins executing. + + @deprecated Use `AFNetworkingTaskDidResumeNotification` instead. + */ +extern NSString * const AFNetworkingTaskDidStartNotification DEPRECATED_ATTRIBUTE; + +/** + Posted when a task resumes. + */ +extern NSString * const AFNetworkingTaskDidResumeNotification; + +/** + Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task. + + @deprecated Use `AFNetworkingTaskDidCompleteNotification` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishNotification DEPRECATED_ATTRIBUTE; + +/** + Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task. + */ +extern NSString * const AFNetworkingTaskDidCompleteNotification; + +/** + Posted when a task suspends its execution. + */ +extern NSString * const AFNetworkingTaskDidSuspendNotification; + +/** + Posted when a session is invalidated. + */ +extern NSString * const AFURLSessionDidInvalidateNotification; + +/** + Posted when a session download task encountered an error when moving the temporary download file to a specified destination. + */ +extern NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification; + +/** + The raw response data of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if response data exists for the task. + + @deprecated Use `AFNetworkingTaskDidCompleteResponseDataKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishResponseDataKey DEPRECATED_ATTRIBUTE; + +/** + The raw response data of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if response data exists for the task. + */ +extern NSString * const AFNetworkingTaskDidCompleteResponseDataKey; + +/** + The serialized response object of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the response was serialized. + + @deprecated Use `AFNetworkingTaskDidCompleteSerializedResponseKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishSerializedResponseKey DEPRECATED_ATTRIBUTE; + +/** + The serialized response object of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the response was serialized. + */ +extern NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey; + +/** + The response serializer used to serialize the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the task has an associated response serializer. + + @deprecated Use `AFNetworkingTaskDidCompleteResponseSerializerKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishResponseSerializerKey DEPRECATED_ATTRIBUTE; + +/** + The response serializer used to serialize the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the task has an associated response serializer. + */ +extern NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey; + +/** + The file path associated with the download task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an the response data has been stored directly to disk. + + @deprecated Use `AFNetworkingTaskDidCompleteAssetPathKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishAssetPathKey DEPRECATED_ATTRIBUTE; + +/** + The file path associated with the download task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an the response data has been stored directly to disk. + */ +extern NSString * const AFNetworkingTaskDidCompleteAssetPathKey; + +/** + Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an error exists. + + @deprecated Use `AFNetworkingTaskDidCompleteErrorKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishErrorKey DEPRECATED_ATTRIBUTE; + +/** + Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an error exists. + */ +extern NSString * const AFNetworkingTaskDidCompleteErrorKey; + +NS_ASSUME_NONNULL_END diff --git a/frameworks/AFNetworking.framework/Headers/UIActivityIndicatorView+AFNetworking.h b/frameworks/AFNetworking.framework/Headers/UIActivityIndicatorView+AFNetworking.h new file mode 100755 index 0000000..0c8f9b5 --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/UIActivityIndicatorView+AFNetworking.h @@ -0,0 +1,63 @@ +// UIActivityIndicatorView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import <Availability.h> + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import <UIKit/UIKit.h> + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIActivityIndicatorView` class. The methods in this category provide support for automatically starting and stopping animation depending on the loading state of a request operation or session task. + */ +@interface UIActivityIndicatorView (AFNetworking) + +///---------------------------------- +/// @name Animating for Session Tasks +///---------------------------------- + +/** + Binds the animating state to the state of the specified task. + + @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setAnimatingWithStateOfTask:(nullable NSURLSessionTask *)task; +#endif + +///--------------------------------------- +/// @name Animating for Request Operations +///--------------------------------------- + +/** + Binds the animating state to the execution state of the specified operation. + + @param operation The operation. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +- (void)setAnimatingWithStateOfOperation:(nullable AFURLConnectionOperation *)operation; + +@end + +#endif diff --git a/frameworks/AFNetworking.framework/Headers/UIAlertView+AFNetworking.h b/frameworks/AFNetworking.framework/Headers/UIAlertView+AFNetworking.h new file mode 100755 index 0000000..97f5622 --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/UIAlertView+AFNetworking.h @@ -0,0 +1,99 @@ +// UIAlertView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import <Availability.h> + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIAlertView` class. The methods in this category provide support for automatically showing an alert if a session task or request operation finishes with an error. Alert title and message are filled from the corresponding `localizedDescription` & `localizedRecoverySuggestion` or `localizedFailureReason` of the error. + */ +@interface UIAlertView (AFNetworking) + +///------------------------------------- +/// @name Showing Alert for Session Task +///------------------------------------- + +/** + Shows an alert view with the error of the specified session task, if any. + + @param task The session task. + @param delegate The alert view delegate. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(nullable id)delegate NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extensions."); +#endif + +/** + Shows an alert view with the error of the specified session task, if any, with a custom cancel button title and other button titles. + + @param task The session task. + @param delegate The alert view delegate. + @param cancelButtonTitle The title of the cancel button or nil if there is no cancel button. Using this argument is equivalent to setting the cancel button index to the value returned by invoking addButtonWithTitle: specifying this title. + @param otherButtonTitles The title of another button. Using this argument is equivalent to invoking addButtonWithTitle: with this title to add more buttons. Too many buttons can cause the alert view to scroll. For guidelines on the best ways to use an alert in an app, see "Temporary Views". Titles of additional buttons to add to the receiver, terminated with `nil`. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(nullable id)delegate + cancelButtonTitle:(nullable NSString *)cancelButtonTitle + otherButtonTitles:(nullable NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extensions."); +#endif + +///------------------------------------------ +/// @name Showing Alert for Request Operation +///------------------------------------------ + +/** + Shows an alert view with the error of the specified request operation, if any. + + @param operation The request operation. + @param delegate The alert view delegate. + */ ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(nullable id)delegate NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extensions."); + +/** + Shows an alert view with the error of the specified request operation, if any, with a custom cancel button title and other button titles. + + @param operation The request operation. + @param delegate The alert view delegate. + @param cancelButtonTitle The title of the cancel button or nil if there is no cancel button. Using this argument is equivalent to setting the cancel button index to the value returned by invoking addButtonWithTitle: specifying this title. + @param otherButtonTitles The title of another button. Using this argument is equivalent to invoking addButtonWithTitle: with this title to add more buttons. Too many buttons can cause the alert view to scroll. For guidelines on the best ways to use an alert in an app, see "Temporary Views". Titles of additional buttons to add to the receiver, terminated with `nil`. + */ ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(nullable id)delegate + cancelButtonTitle:(nullable NSString *)cancelButtonTitle + otherButtonTitles:(nullable NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extensions."); + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/frameworks/AFNetworking.framework/Headers/UIButton+AFNetworking.h b/frameworks/AFNetworking.framework/Headers/UIButton+AFNetworking.h new file mode 100755 index 0000000..7289bdb --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/UIButton+AFNetworking.h @@ -0,0 +1,186 @@ +// UIButton+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import <Availability.h> + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +@protocol AFURLResponseSerialization, AFImageCache; + +/** + This category adds methods to the UIKit framework's `UIButton` class. The methods in this category provide support for loading remote images and background images asynchronously from a URL. + + @warning Compound values for control `state` (such as `UIControlStateHighlighted | UIControlStateDisabled`) are unsupported. + */ +@interface UIButton (AFNetworking) + +///---------------------------- +/// @name Accessing Image Cache +///---------------------------- + +/** + The image cache used to improve image loading performance on scroll views. By default, `UIButton` will use the `sharedImageCache` of `UIImageView`. + */ ++ (id <AFImageCache>)sharedImageCache; + +/** + Set the cache used for image loading. + + @param imageCache The image cache. + */ ++ (void)setSharedImageCache:(__nullable id <AFImageCache>)imageCache; + +///------------------------------------ +/// @name Accessing Response Serializer +///------------------------------------ + +/** + The response serializer used to create an image representation from the server response and response data. By default, this is an instance of `AFImageResponseSerializer`. + + @discussion Subclasses of `AFImageResponseSerializer` could be used to perform post-processing, such as color correction, face detection, or other effects. See https://github.com/AFNetworking/AFCoreImageSerializer + */ +@property (nonatomic, strong) id <AFURLResponseSerialization> imageResponseSerializer; + +///-------------------- +/// @name Setting Image +///-------------------- + +/** + Asynchronously downloads an image from the specified URL, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the image request. + */ +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url; + +/** + Asynchronously downloads an image from the specified URL, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the button will not change its image until the image request finishes. + */ +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(nullable UIImage *)placeholderImage; + +/** + Asynchronously downloads an image from the specified URL request, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the button before returning. If no success block is specified, the default behavior of setting the image with `setImage:forState:` is applied. + + @param state The control state. + @param urlRequest The URL request used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the button will not change its image until the image request finishes. + @param success A block to be executed when the image request operation finishes successfully. This block has no return value and takes two arguments: the server response and the image. If the image was returned from cache, the response parameter will be `nil`. + @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)setImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(nullable UIImage *)placeholderImage + success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * __nullable response, UIImage *image))success + failure:(nullable void (^)(NSError *error))failure; + + +///------------------------------- +/// @name Setting Background Image +///------------------------------- + +/** + Asynchronously downloads an image from the specified URL, and sets it as the background image for the specified state once the request is finished. Any previous background image request for the receiver will be cancelled. + + If the background image is cached locally, the background image is set immediately, otherwise the specified placeholder background image will be set immediately, and then the remote background image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the background image request. + */ +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url; + +/** + Asynchronously downloads an image from the specified URL, and sets it as the background image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the background image request. + @param placeholderImage The background image to be set initially, until the background image request finishes. If `nil`, the button will not change its background image until the background image request finishes. + */ +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(nullable UIImage *)placeholderImage; + +/** + Asynchronously downloads an image from the specified URL request, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the button before returning. If no success block is specified, the default behavior of setting the image with `setBackgroundImage:forState:` is applied. + + @param state The control state. + @param urlRequest The URL request used for the image request. + @param placeholderImage The background image to be set initially, until the background image request finishes. If `nil`, the button will not change its background image until the background image request finishes. + @param success A block to be executed when the image request operation finishes successfully. This block has no return value and takes two arguments: the server response and the image. If the image was returned from cache, the response parameter will be `nil`. + @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)setBackgroundImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(nullable UIImage *)placeholderImage + success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * __nullable response, UIImage *image))success + failure:(nullable void (^)(NSError *error))failure; + + +///------------------------------ +/// @name Canceling Image Loading +///------------------------------ + +/** + Cancels any executing image operation for the specified control state of the receiver, if one exists. + + @param state The control state. + */ +- (void)cancelImageRequestOperationForState:(UIControlState)state; + +/** + Cancels any executing background image operation for the specified control state of the receiver, if one exists. + + @param state The control state. + */ +- (void)cancelBackgroundImageRequestOperationForState:(UIControlState)state; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/frameworks/AFNetworking.framework/Headers/UIImageView+AFNetworking.h b/frameworks/AFNetworking.framework/Headers/UIImageView+AFNetworking.h new file mode 100755 index 0000000..bf61915 --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/UIImageView+AFNetworking.h @@ -0,0 +1,146 @@ +// UIImageView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import <Availability.h> + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +@protocol AFURLResponseSerialization, AFImageCache; + +/** + This category adds methods to the UIKit framework's `UIImageView` class. The methods in this category provide support for loading remote images asynchronously from a URL. + */ +@interface UIImageView (AFNetworking) + +///---------------------------- +/// @name Accessing Image Cache +///---------------------------- + +/** + The image cache used to improve image loading performance on scroll views. By default, this is an `NSCache` subclass conforming to the `AFImageCache` protocol, which listens for notification warnings and evicts objects accordingly. +*/ ++ (id <AFImageCache>)sharedImageCache; + +/** + Set the cache used for image loading. + + @param imageCache The image cache. + */ ++ (void)setSharedImageCache:(__nullable id <AFImageCache>)imageCache; + +///------------------------------------ +/// @name Accessing Response Serializer +///------------------------------------ + +/** + The response serializer used to create an image representation from the server response and response data. By default, this is an instance of `AFImageResponseSerializer`. + + @discussion Subclasses of `AFImageResponseSerializer` could be used to perform post-processing, such as color correction, face detection, or other effects. See https://github.com/AFNetworking/AFCoreImageSerializer + */ +@property (nonatomic, strong) id <AFURLResponseSerialization> imageResponseSerializer; + +///-------------------- +/// @name Setting Image +///-------------------- + +/** + Asynchronously downloads an image from the specified URL, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + By default, URL requests have a `Accept` header field value of "image / *", a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` + + @param url The URL used for the image request. + */ +- (void)setImageWithURL:(NSURL *)url; + +/** + Asynchronously downloads an image from the specified URL, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + By default, URL requests have a `Accept` header field value of "image / *", a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` + + @param url The URL used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. + */ +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(nullable UIImage *)placeholderImage; + +/** + Asynchronously downloads an image from the specified URL request, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the image view before returning. If no success block is specified, the default behavior of setting the image with `self.image = image` is applied. + + @param urlRequest The URL request used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. + @param success A block to be executed when the image request operation finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the image created from the response data of request. If the image was returned from cache, the response parameter will be `nil`. + @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error object describing the network or parsing error that occurred. + */ +- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(nullable UIImage *)placeholderImage + success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * __nullable response, UIImage *image))success + failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * __nullable response, NSError *error))failure; + +/** + Cancels any executing image operation for the receiver, if one exists. + */ +- (void)cancelImageRequestOperation; + +@end + +#pragma mark - + +/** + The `AFImageCache` protocol is adopted by an object used to cache images loaded by the AFNetworking category on `UIImageView`. + */ +@protocol AFImageCache <NSObject> + +/** + Returns a cached image for the specified request, if available. + + @param request The image request. + + @return The cached image. + */ +- (nullable UIImage *)cachedImageForRequest:(NSURLRequest *)request; + +/** + Caches a particular image for the specified request. + + @param image The image to cache. + @param request The request to be used as a cache key. + */ +- (void)cacheImage:(UIImage *)image + forRequest:(NSURLRequest *)request; +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/frameworks/AFNetworking.framework/Headers/UIKit+AFNetworking.h b/frameworks/AFNetworking.framework/Headers/UIKit+AFNetworking.h new file mode 100755 index 0000000..49850ed --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/UIKit+AFNetworking.h @@ -0,0 +1,39 @@ +// UIKit+AFNetworking.h +// +// Copyright (c) 2013 AFNetworking (http://afnetworking.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#if TARGET_OS_IOS +#import <UIKit/UIKit.h> + +#ifndef _UIKIT_AFNETWORKING_ + #define _UIKIT_AFNETWORKING_ + + #import "AFNetworkActivityIndicatorManager.h" + + #import "UIActivityIndicatorView+AFNetworking.h" + #import "UIAlertView+AFNetworking.h" + #import "UIButton+AFNetworking.h" + #import "UIImageView+AFNetworking.h" + #import "UIProgressView+AFNetworking.h" + #import "UIRefreshControl+AFNetworking.h" + #import "UIWebView+AFNetworking.h" +#endif /* _UIKIT_AFNETWORKING_ */ +#endif diff --git a/frameworks/AFNetworking.framework/Headers/UIProgressView+AFNetworking.h b/frameworks/AFNetworking.framework/Headers/UIProgressView+AFNetworking.h new file mode 100755 index 0000000..5c00d6d --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/UIProgressView+AFNetworking.h @@ -0,0 +1,91 @@ +// UIProgressView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import <Availability.h> + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIProgressView` class. The methods in this category provide support for binding the progress to the upload and download progress of a session task or request operation. + */ +@interface UIProgressView (AFNetworking) + +///------------------------------------ +/// @name Setting Session Task Progress +///------------------------------------ + +/** + Binds the progress to the upload progress of the specified session task. + + @param task The session task. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setProgressWithUploadProgressOfTask:(NSURLSessionUploadTask *)task + animated:(BOOL)animated; +#endif + +/** + Binds the progress to the download progress of the specified session task. + + @param task The session task. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setProgressWithDownloadProgressOfTask:(NSURLSessionDownloadTask *)task + animated:(BOOL)animated; +#endif + +///------------------------------------ +/// @name Setting Session Task Progress +///------------------------------------ + +/** + Binds the progress to the upload progress of the specified request operation. + + @param operation The request operation. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +- (void)setProgressWithUploadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated; + +/** + Binds the progress to the download progress of the specified request operation. + + @param operation The request operation. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +- (void)setProgressWithDownloadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/frameworks/AFNetworking.framework/Headers/UIRefreshControl+AFNetworking.h b/frameworks/AFNetworking.framework/Headers/UIRefreshControl+AFNetworking.h new file mode 100755 index 0000000..a65e390 --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/UIRefreshControl+AFNetworking.h @@ -0,0 +1,68 @@ +// UIRefreshControl+AFNetworking.m +// +// Copyright (c) 2014 AFNetworking (http://afnetworking.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import <Availability.h> + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIRefreshControl` class. The methods in this category provide support for automatically beginning and ending refreshing depending on the loading state of a request operation or session task. + */ +@interface UIRefreshControl (AFNetworking) + +///----------------------------------- +/// @name Refreshing for Session Tasks +///----------------------------------- + +/** + Binds the refreshing state to the state of the specified task. + + @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setRefreshingWithStateOfTask:(NSURLSessionTask *)task; +#endif + +///---------------------------------------- +/// @name Refreshing for Request Operations +///---------------------------------------- + +/** + Binds the refreshing state to the execution state of the specified operation. + + @param operation The operation. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +- (void)setRefreshingWithStateOfOperation:(AFURLConnectionOperation *)operation; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/frameworks/AFNetworking.framework/Headers/UIWebView+AFNetworking.h b/frameworks/AFNetworking.framework/Headers/UIWebView+AFNetworking.h new file mode 100755 index 0000000..5d61d6a --- /dev/null +++ b/frameworks/AFNetworking.framework/Headers/UIWebView+AFNetworking.h @@ -0,0 +1,86 @@ +// UIWebView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import <Foundation/Foundation.h> + +#import <Availability.h> + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +@class AFHTTPRequestSerializer, AFHTTPResponseSerializer; +@protocol AFURLRequestSerialization, AFURLResponseSerialization; + +/** + This category adds methods to the UIKit framework's `UIWebView` class. The methods in this category provide increased control over the request cycle, including progress monitoring and success / failure handling. + + @discussion When using these category methods, make sure to assign `delegate` for the web view, which implements `–webView:shouldStartLoadWithRequest:navigationType:` appropriately. This allows for tapped links to be loaded through AFNetworking, and can ensure that `canGoBack` & `canGoForward` update their values correctly. + */ +@interface UIWebView (AFNetworking) + +/** + The request serializer used to serialize requests made with the `-loadRequest:...` category methods. By default, this is an instance of `AFHTTPRequestSerializer`. + */ +@property (nonatomic, strong) AFHTTPRequestSerializer <AFURLRequestSerialization> * requestSerializer; + +/** + The response serializer used to serialize responses made with the `-loadRequest:...` category methods. By default, this is an instance of `AFHTTPResponseSerializer`. + */ +@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * responseSerializer; + +/** + Asynchronously loads the specified request. + + @param request A URL request identifying the location of the content to load. This must not be `nil`. + @param progress A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + @param success A block object to be executed when the request finishes loading successfully. This block returns the HTML string to be loaded by the web view, and takes two arguments: the response, and the response string. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)loadRequest:(NSURLRequest *)request + progress:(nullable void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(nullable NSString * (^)(NSHTTPURLResponse *response, NSString *HTML))success + failure:(nullable void (^)(NSError *error))failure; + +/** + Asynchronously loads the data associated with a particular request with a specified MIME type and text encoding. + + @param request A URL request identifying the location of the content to load. This must not be `nil`. + @param MIMEType The MIME type of the content. Defaults to the content type of the response if not specified. + @param textEncodingName The IANA encoding name, as in `utf-8` or `utf-16`. Defaults to the response text encoding if not specified. + @param progress A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + @param success A block object to be executed when the request finishes loading successfully. This block returns the data to be loaded by the web view and takes two arguments: the response, and the downloaded data. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)loadRequest:(NSURLRequest *)request + MIMEType:(nullable NSString *)MIMEType + textEncodingName:(nullable NSString *)textEncodingName + progress:(nullable void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(nullable NSData * (^)(NSHTTPURLResponse *response, NSData *data))success + failure:(nullable void (^)(NSError *error))failure; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/frameworks/AFNetworking.framework/Info.plist b/frameworks/AFNetworking.framework/Info.plist new file mode 100644 index 0000000..13edc7e --- /dev/null +++ b/frameworks/AFNetworking.framework/Info.plist Binary files differ diff --git a/frameworks/FMDB.framework/FMDB b/frameworks/FMDB.framework/FMDB new file mode 100644 index 0000000..7962aa1 --- /dev/null +++ b/frameworks/FMDB.framework/FMDB Binary files differ diff --git a/frameworks/FMDB.framework/Headers/FMDB.h b/frameworks/FMDB.framework/Headers/FMDB.h new file mode 100755 index 0000000..83df0ba --- /dev/null +++ b/frameworks/FMDB.framework/Headers/FMDB.h @@ -0,0 +1,10 @@ +#import <Foundation/Foundation.h> + +FOUNDATION_EXPORT double FMDBVersionNumber; +FOUNDATION_EXPORT const unsigned char FMDBVersionString[]; +#import <FMDB/FMDatabase.h> +#import <FMDB/FMResultSet.h> +#import <FMDB/FMDatabaseAdditions.h> +#import <FMDB/FMDatabaseQueue.h> +#import <FMDB/FMDatabasePool.h> + diff --git a/frameworks/FMDB.framework/Headers/FMDatabase.h b/frameworks/FMDB.framework/Headers/FMDatabase.h new file mode 100755 index 0000000..7dd5f8c --- /dev/null +++ b/frameworks/FMDB.framework/Headers/FMDatabase.h @@ -0,0 +1,1162 @@ +#import <Foundation/Foundation.h> +#import "FMResultSet.h" +#import "FMDatabasePool.h" + + +#if ! __has_feature(objc_arc) + #define FMDBAutorelease(__v) ([__v autorelease]); + #define FMDBReturnAutoreleased FMDBAutorelease + + #define FMDBRetain(__v) ([__v retain]); + #define FMDBReturnRetained FMDBRetain + + #define FMDBRelease(__v) ([__v release]); + + #define FMDBDispatchQueueRelease(__v) (dispatch_release(__v)); +#else + // -fobjc-arc + #define FMDBAutorelease(__v) + #define FMDBReturnAutoreleased(__v) (__v) + + #define FMDBRetain(__v) + #define FMDBReturnRetained(__v) (__v) + + #define FMDBRelease(__v) + +// If OS_OBJECT_USE_OBJC=1, then the dispatch objects will be treated like ObjC objects +// and will participate in ARC. +// See the section on "Dispatch Queues and Automatic Reference Counting" in "Grand Central Dispatch (GCD) Reference" for details. + #if OS_OBJECT_USE_OBJC + #define FMDBDispatchQueueRelease(__v) + #else + #define FMDBDispatchQueueRelease(__v) (dispatch_release(__v)); + #endif +#endif + +#if !__has_feature(objc_instancetype) + #define instancetype id +#endif + + +typedef int(^FMDBExecuteStatementsCallbackBlock)(NSDictionary *resultsDictionary); + + +/** A SQLite ([http://sqlite.org/](http://sqlite.org/)) Objective-C wrapper. + + ### Usage + The three main classes in FMDB are: + + - `FMDatabase` - Represents a single SQLite database. Used for executing SQL statements. + - `<FMResultSet>` - Represents the results of executing a query on an `FMDatabase`. + - `<FMDatabaseQueue>` - If you want to perform queries and updates on multiple threads, you'll want to use this class. + + ### See also + + - `<FMDatabasePool>` - A pool of `FMDatabase` objects. + - `<FMStatement>` - A wrapper for `sqlite_stmt`. + + ### External links + + - [FMDB on GitHub](https://github.com/ccgus/fmdb) including introductory documentation + - [SQLite web site](http://sqlite.org/) + - [FMDB mailing list](http://groups.google.com/group/fmdb) + - [SQLite FAQ](http://www.sqlite.org/faq.html) + + @warning Do not instantiate a single `FMDatabase` object and use it across multiple threads. Instead, use `<FMDatabaseQueue>`. + + */ + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-interface-ivars" + + +@interface FMDatabase : NSObject { + + void* _db; + NSString* _databasePath; + BOOL _logsErrors; + BOOL _crashOnErrors; + BOOL _traceExecution; + BOOL _checkedOut; + BOOL _shouldCacheStatements; + BOOL _isExecutingStatement; + BOOL _inTransaction; + NSTimeInterval _maxBusyRetryTimeInterval; + NSTimeInterval _startBusyRetryTime; + + NSMutableDictionary *_cachedStatements; + NSMutableSet *_openResultSets; + NSMutableSet *_openFunctions; + + NSDateFormatter *_dateFormat; +} + +///----------------- +/// @name Properties +///----------------- + +/** Whether should trace execution */ + +@property (atomic, assign) BOOL traceExecution; + +/** Whether checked out or not */ + +@property (atomic, assign) BOOL checkedOut; + +/** Crash on errors */ + +@property (atomic, assign) BOOL crashOnErrors; + +/** Logs errors */ + +@property (atomic, assign) BOOL logsErrors; + +/** Dictionary of cached statements */ + +@property (atomic, retain) NSMutableDictionary *cachedStatements; + +///--------------------- +/// @name Initialization +///--------------------- + +/** Create a `FMDatabase` object. + + An `FMDatabase` is created with a path to a SQLite database file. This path can be one of these three: + + 1. A file system path. The file does not have to exist on disk. If it does not exist, it is created for you. + 2. An empty string (`@""`). An empty database is created at a temporary location. This database is deleted with the `FMDatabase` connection is closed. + 3. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. + + For example, to create/open a database in your Mac OS X `tmp` folder: + + FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; + + Or, in iOS, you might open a database in the app's `Documents` directory: + + NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; + NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; + FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; + + (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) + + @param inPath Path of database file + + @return `FMDatabase` object if successful; `nil` if failure. + + */ + ++ (instancetype)databaseWithPath:(NSString*)inPath; + +/** Initialize a `FMDatabase` object. + + An `FMDatabase` is created with a path to a SQLite database file. This path can be one of these three: + + 1. A file system path. The file does not have to exist on disk. If it does not exist, it is created for you. + 2. An empty string (`@""`). An empty database is created at a temporary location. This database is deleted with the `FMDatabase` connection is closed. + 3. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. + + For example, to create/open a database in your Mac OS X `tmp` folder: + + FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; + + Or, in iOS, you might open a database in the app's `Documents` directory: + + NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; + NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; + FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; + + (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) + + @param inPath Path of database file + + @return `FMDatabase` object if successful; `nil` if failure. + + */ + +- (instancetype)initWithPath:(NSString*)inPath; + + +///----------------------------------- +/// @name Opening and closing database +///----------------------------------- + +/** Opening a new database connection + + The database is opened for reading and writing, and is created if it does not already exist. + + @return `YES` if successful, `NO` on error. + + @see [sqlite3_open()](http://sqlite.org/c3ref/open.html) + @see openWithFlags: + @see close + */ + +- (BOOL)open; + +/** Opening a new database connection with flags and an optional virtual file system (VFS) + + @param flags one of the following three values, optionally combined with the `SQLITE_OPEN_NOMUTEX`, `SQLITE_OPEN_FULLMUTEX`, `SQLITE_OPEN_SHAREDCACHE`, `SQLITE_OPEN_PRIVATECACHE`, and/or `SQLITE_OPEN_URI` flags: + + `SQLITE_OPEN_READONLY` + + The database is opened in read-only mode. If the database does not already exist, an error is returned. + + `SQLITE_OPEN_READWRITE` + + The database is opened for reading and writing if possible, or reading only if the file is write protected by the operating system. In either case the database must already exist, otherwise an error is returned. + + `SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE` + + The database is opened for reading and writing, and is created if it does not already exist. This is the behavior that is always used for `open` method. + + @return `YES` if successful, `NO` on error. + + @see [sqlite3_open_v2()](http://sqlite.org/c3ref/open.html) + @see open + @see close + */ + +- (BOOL)openWithFlags:(int)flags; + +/** Opening a new database connection with flags and an optional virtual file system (VFS) + + @param flags one of the following three values, optionally combined with the `SQLITE_OPEN_NOMUTEX`, `SQLITE_OPEN_FULLMUTEX`, `SQLITE_OPEN_SHAREDCACHE`, `SQLITE_OPEN_PRIVATECACHE`, and/or `SQLITE_OPEN_URI` flags: + + `SQLITE_OPEN_READONLY` + + The database is opened in read-only mode. If the database does not already exist, an error is returned. + + `SQLITE_OPEN_READWRITE` + + The database is opened for reading and writing if possible, or reading only if the file is write protected by the operating system. In either case the database must already exist, otherwise an error is returned. + + `SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE` + + The database is opened for reading and writing, and is created if it does not already exist. This is the behavior that is always used for `open` method. + + @param vfsName If vfs is given the value is passed to the vfs parameter of sqlite3_open_v2. + + @return `YES` if successful, `NO` on error. + + @see [sqlite3_open_v2()](http://sqlite.org/c3ref/open.html) + @see open + @see close + */ + +- (BOOL)openWithFlags:(int)flags vfs:(NSString *)vfsName; + +/** Closing a database connection + + @return `YES` if success, `NO` on error. + + @see [sqlite3_close()](http://sqlite.org/c3ref/close.html) + @see open + @see openWithFlags: + */ + +- (BOOL)close; + +/** Test to see if we have a good connection to the database. + + This will confirm whether: + + - is database open + - if open, it will try a simple SELECT statement and confirm that it succeeds. + + @return `YES` if everything succeeds, `NO` on failure. + */ + +- (BOOL)goodConnection; + + +///---------------------- +/// @name Perform updates +///---------------------- + +/** Execute single update statement + + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html), [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) to bind values to `?` placeholders in the SQL with the optional list of parameters, and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. + + The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + + @param sql The SQL to be performed, with optional `?` placeholders. + + @param outErr A reference to the `NSError` pointer to be updated with an auto released `NSError` object if an error if an error occurs. If `nil`, no `NSError` object will be returned. + + @param ... Optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. `NSString`, `NSNumber`, etc.), not fundamental C data types (e.g. `int`, `char *`, etc.). + + @return `YES` upon success; `NO` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see lastError + @see lastErrorCode + @see lastErrorMessage + @see [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) + */ + +- (BOOL)executeUpdate:(NSString*)sql withErrorAndBindings:(NSError**)outErr, ...; + +/** Execute single update statement + + @see executeUpdate:withErrorAndBindings: + + @warning **Deprecated**: Please use `<executeUpdate:withErrorAndBindings>` instead. + */ + +- (BOOL)update:(NSString*)sql withErrorAndBindings:(NSError**)outErr, ... __attribute__ ((deprecated)); + +/** Execute single update statement + + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html), [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) to bind values to `?` placeholders in the SQL with the optional list of parameters, and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. + + The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + + @param sql The SQL to be performed, with optional `?` placeholders. + + @param ... Optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. `NSString`, `NSNumber`, etc.), not fundamental C data types (e.g. `int`, `char *`, etc.). + + @return `YES` upon success; `NO` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see lastError + @see lastErrorCode + @see lastErrorMessage + @see [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) + + @note This technique supports the use of `?` placeholders in the SQL, automatically binding any supplied value parameters to those placeholders. This approach is more robust than techniques that entail using `stringWithFormat` to manually build SQL statements, which can be problematic if the values happened to include any characters that needed to be quoted. + + @note If you want to use this from Swift, please note that you must include `FMDatabaseVariadic.swift` in your project. Without that, you cannot use this method directly, and instead have to use methods such as `<executeUpdate:withArgumentsInArray:>`. + */ + +- (BOOL)executeUpdate:(NSString*)sql, ...; + +/** Execute single update statement + + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. Unlike the other `executeUpdate` methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. Do not use `?` placeholders in the SQL if you use this method. + + @param format The SQL to be performed, with `printf`-style escape sequences. + + @param ... Optional parameters to bind to use in conjunction with the `printf`-style escape sequences in the SQL statement. + + @return `YES` upon success; `NO` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see executeUpdate: + @see lastError + @see lastErrorCode + @see lastErrorMessage + + @note This method does not technically perform a traditional printf-style replacement. What this method actually does is replace the printf-style percent sequences with a SQLite `?` placeholder, and then bind values to that placeholder. Thus the following command + + [db executeUpdateWithFormat:@"INSERT INTO test (name) VALUES (%@)", @"Gus"]; + + is actually replacing the `%@` with `?` placeholder, and then performing something equivalent to `<executeUpdate:>` + + [db executeUpdate:@"INSERT INTO test (name) VALUES (?)", @"Gus"]; + + There are two reasons why this distinction is important. First, the printf-style escape sequences can only be used where it is permissible to use a SQLite `?` placeholder. You can use it only for values in SQL statements, but not for table names or column names or any other non-value context. This method also cannot be used in conjunction with `pragma` statements and the like. Second, note the lack of quotation marks in the SQL. The `VALUES` clause was _not_ `VALUES ('%@')` (like you might have to do if you built a SQL statement using `NSString` method `stringWithFormat`), but rather simply `VALUES (%@)`. + */ + +- (BOOL)executeUpdateWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); + +/** Execute single update statement + + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) binding any `?` placeholders in the SQL with the optional list of parameters. + + The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + + @param sql The SQL to be performed, with optional `?` placeholders. + + @param arguments A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. + + @return `YES` upon success; `NO` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see executeUpdate:values:error: + @see lastError + @see lastErrorCode + @see lastErrorMessage + */ + +- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments; + +/** Execute single update statement + + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) binding any `?` placeholders in the SQL with the optional list of parameters. + + The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + + This is similar to `<executeUpdate:withArgumentsInArray:>`, except that this also accepts a pointer to a `NSError` pointer, so that errors can be returned. + + In Swift 2, this throws errors, as if it were defined as follows: + + `func executeUpdate(sql: String!, values: [AnyObject]!) throws -> Bool` + + @param sql The SQL to be performed, with optional `?` placeholders. + + @param values A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. + + @param error A `NSError` object to receive any error object (if any). + + @return `YES` upon success; `NO` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see lastError + @see lastErrorCode + @see lastErrorMessage + + */ + +- (BOOL)executeUpdate:(NSString*)sql values:(NSArray *)values error:(NSError * __autoreleasing *)error; + +/** Execute single update statement + + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. Unlike the other `executeUpdate` methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. + + The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + + @param sql The SQL to be performed, with optional `?` placeholders. + + @param arguments A `NSDictionary` of objects keyed by column names that will be used when binding values to the `?` placeholders in the SQL statement. + + @return `YES` upon success; `NO` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see lastError + @see lastErrorCode + @see lastErrorMessage +*/ + +- (BOOL)executeUpdate:(NSString*)sql withParameterDictionary:(NSDictionary *)arguments; + + +/** Execute single update statement + + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. Unlike the other `executeUpdate` methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. + + The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + + @param sql The SQL to be performed, with optional `?` placeholders. + + @param args A `va_list` of arguments. + + @return `YES` upon success; `NO` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see lastError + @see lastErrorCode + @see lastErrorMessage + */ + +- (BOOL)executeUpdate:(NSString*)sql withVAList: (va_list)args; + +/** Execute multiple SQL statements + + This executes a series of SQL statements that are combined in a single string (e.g. the SQL generated by the `sqlite3` command line `.dump` command). This accepts no value parameters, but rather simply expects a single string with multiple SQL statements, each terminated with a semicolon. This uses `sqlite3_exec`. + + @param sql The SQL to be performed + + @return `YES` upon success; `NO` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see executeStatements:withResultBlock: + @see [sqlite3_exec()](http://sqlite.org/c3ref/exec.html) + + */ + +- (BOOL)executeStatements:(NSString *)sql; + +/** Execute multiple SQL statements with callback handler + + This executes a series of SQL statements that are combined in a single string (e.g. the SQL generated by the `sqlite3` command line `.dump` command). This accepts no value parameters, but rather simply expects a single string with multiple SQL statements, each terminated with a semicolon. This uses `sqlite3_exec`. + + @param sql The SQL to be performed. + @param block A block that will be called for any result sets returned by any SQL statements. + Note, if you supply this block, it must return integer value, zero upon success (this would be a good opportunity to use SQLITE_OK), + non-zero value upon failure (which will stop the bulk execution of the SQL). If a statement returns values, the block will be called with the results from the query in NSDictionary *resultsDictionary. + This may be `nil` if you don't care to receive any results. + + @return `YES` upon success; `NO` upon failure. If failed, you can call `<lastError>`, + `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see executeStatements: + @see [sqlite3_exec()](http://sqlite.org/c3ref/exec.html) + + */ + +- (BOOL)executeStatements:(NSString *)sql withResultBlock:(FMDBExecuteStatementsCallbackBlock)block; + +/** Last insert rowid + + Each entry in an SQLite table has a unique 64-bit signed integer key called the "rowid". The rowid is always available as an undeclared column named `ROWID`, `OID`, or `_ROWID_` as long as those names are not also used by explicitly declared columns. If the table has a column of type `INTEGER PRIMARY KEY` then that column is another alias for the rowid. + + This routine returns the rowid of the most recent successful `INSERT` into the database from the database connection in the first argument. As of SQLite version 3.7.7, this routines records the last insert rowid of both ordinary tables and virtual tables. If no successful `INSERT`s have ever occurred on that database connection, zero is returned. + + @return The rowid of the last inserted row. + + @see [sqlite3_last_insert_rowid()](http://sqlite.org/c3ref/last_insert_rowid.html) + + */ + +- (int64_t)lastInsertRowId; + +/** The number of rows changed by prior SQL statement. + + This function returns the number of database rows that were changed or inserted or deleted by the most recently completed SQL statement on the database connection specified by the first parameter. Only changes that are directly specified by the INSERT, UPDATE, or DELETE statement are counted. + + @return The number of rows changed by prior SQL statement. + + @see [sqlite3_changes()](http://sqlite.org/c3ref/changes.html) + + */ + +- (int)changes; + + +///------------------------- +/// @name Retrieving results +///------------------------- + +/** Execute select statement + + Executing queries returns an `<FMResultSet>` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `<lastErrorMessage>` and `<lastErrorMessage>` methods to determine why a query failed. + + In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. + + This method employs [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) for any optional value parameters. This properly escapes any characters that need escape sequences (e.g. quotation marks), which eliminates simple SQL errors as well as protects against SQL injection attacks. This method natively handles `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects. All other object types will be interpreted as text values using the object's `description` method. + + @param sql The SELECT statement to be performed, with optional `?` placeholders. + + @param ... Optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. `NSString`, `NSNumber`, etc.), not fundamental C data types (e.g. `int`, `char *`, etc.). + + @return A `<FMResultSet>` for the result set upon success; `nil` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see FMResultSet + @see [`FMResultSet next`](<[FMResultSet next]>) + @see [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) + + @note If you want to use this from Swift, please note that you must include `FMDatabaseVariadic.swift` in your project. Without that, you cannot use this method directly, and instead have to use methods such as `<executeQuery:withArgumentsInArray:>`. + */ + +- (FMResultSet *)executeQuery:(NSString*)sql, ...; + +/** Execute select statement + + Executing queries returns an `<FMResultSet>` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `<lastErrorMessage>` and `<lastErrorMessage>` methods to determine why a query failed. + + In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. + + @param format The SQL to be performed, with `printf`-style escape sequences. + + @param ... Optional parameters to bind to use in conjunction with the `printf`-style escape sequences in the SQL statement. + + @return A `<FMResultSet>` for the result set upon success; `nil` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see executeQuery: + @see FMResultSet + @see [`FMResultSet next`](<[FMResultSet next]>) + + @note This method does not technically perform a traditional printf-style replacement. What this method actually does is replace the printf-style percent sequences with a SQLite `?` placeholder, and then bind values to that placeholder. Thus the following command + + [db executeQueryWithFormat:@"SELECT * FROM test WHERE name=%@", @"Gus"]; + + is actually replacing the `%@` with `?` placeholder, and then performing something equivalent to `<executeQuery:>` + + [db executeQuery:@"SELECT * FROM test WHERE name=?", @"Gus"]; + + There are two reasons why this distinction is important. First, the printf-style escape sequences can only be used where it is permissible to use a SQLite `?` placeholder. You can use it only for values in SQL statements, but not for table names or column names or any other non-value context. This method also cannot be used in conjunction with `pragma` statements and the like. Second, note the lack of quotation marks in the SQL. The `WHERE` clause was _not_ `WHERE name='%@'` (like you might have to do if you built a SQL statement using `NSString` method `stringWithFormat`), but rather simply `WHERE name=%@`. + + */ + +- (FMResultSet *)executeQueryWithFormat:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2); + +/** Execute select statement + + Executing queries returns an `<FMResultSet>` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `<lastErrorMessage>` and `<lastErrorMessage>` methods to determine why a query failed. + + In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. + + @param sql The SELECT statement to be performed, with optional `?` placeholders. + + @param arguments A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. + + @return A `<FMResultSet>` for the result set upon success; `nil` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see -executeQuery:values:error: + @see FMResultSet + @see [`FMResultSet next`](<[FMResultSet next]>) + */ + +- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments; + +/** Execute select statement + + Executing queries returns an `<FMResultSet>` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `<lastErrorMessage>` and `<lastErrorMessage>` methods to determine why a query failed. + + In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. + + This is similar to `<executeQuery:withArgumentsInArray:>`, except that this also accepts a pointer to a `NSError` pointer, so that errors can be returned. + + In Swift 2, this throws errors, as if it were defined as follows: + + `func executeQuery(sql: String!, values: [AnyObject]!) throws -> FMResultSet!` + + @param sql The SELECT statement to be performed, with optional `?` placeholders. + + @param values A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. + + @param error A `NSError` object to receive any error object (if any). + + @return A `<FMResultSet>` for the result set upon success; `nil` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see FMResultSet + @see [`FMResultSet next`](<[FMResultSet next]>) + + @note When called from Swift, only use the first two parameters, `sql` and `values`. This but throws the error. + + */ + +- (FMResultSet *)executeQuery:(NSString *)sql values:(NSArray *)values error:(NSError * __autoreleasing *)error; + +/** Execute select statement + + Executing queries returns an `<FMResultSet>` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `<lastErrorMessage>` and `<lastErrorMessage>` methods to determine why a query failed. + + In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. + + @param sql The SELECT statement to be performed, with optional `?` placeholders. + + @param arguments A `NSDictionary` of objects keyed by column names that will be used when binding values to the `?` placeholders in the SQL statement. + + @return A `<FMResultSet>` for the result set upon success; `nil` upon failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see FMResultSet + @see [`FMResultSet next`](<[FMResultSet next]>) + */ + +- (FMResultSet *)executeQuery:(NSString *)sql withParameterDictionary:(NSDictionary *)arguments; + + +// Documentation forthcoming. +- (FMResultSet *)executeQuery:(NSString*)sql withVAList: (va_list)args; + +///------------------- +/// @name Transactions +///------------------- + +/** Begin a transaction + + @return `YES` on success; `NO` on failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see commit + @see rollback + @see beginDeferredTransaction + @see inTransaction + */ + +- (BOOL)beginTransaction; + +/** Begin a deferred transaction + + @return `YES` on success; `NO` on failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see commit + @see rollback + @see beginTransaction + @see inTransaction + */ + +- (BOOL)beginDeferredTransaction; + +/** Commit a transaction + + Commit a transaction that was initiated with either `<beginTransaction>` or with `<beginDeferredTransaction>`. + + @return `YES` on success; `NO` on failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see beginTransaction + @see beginDeferredTransaction + @see rollback + @see inTransaction + */ + +- (BOOL)commit; + +/** Rollback a transaction + + Rollback a transaction that was initiated with either `<beginTransaction>` or with `<beginDeferredTransaction>`. + + @return `YES` on success; `NO` on failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see beginTransaction + @see beginDeferredTransaction + @see commit + @see inTransaction + */ + +- (BOOL)rollback; + +/** Identify whether currently in a transaction or not + + @return `YES` if currently within transaction; `NO` if not. + + @see beginTransaction + @see beginDeferredTransaction + @see commit + @see rollback + */ + +- (BOOL)inTransaction; + + +///---------------------------------------- +/// @name Cached statements and result sets +///---------------------------------------- + +/** Clear cached statements */ + +- (void)clearCachedStatements; + +/** Close all open result sets */ + +- (void)closeOpenResultSets; + +/** Whether database has any open result sets + + @return `YES` if there are open result sets; `NO` if not. + */ + +- (BOOL)hasOpenResultSets; + +/** Return whether should cache statements or not + + @return `YES` if should cache statements; `NO` if not. + */ + +- (BOOL)shouldCacheStatements; + +/** Set whether should cache statements or not + + @param value `YES` if should cache statements; `NO` if not. + */ + +- (void)setShouldCacheStatements:(BOOL)value; + + +///------------------------- +/// @name Encryption methods +///------------------------- + +/** Set encryption key. + + @param key The key to be used. + + @return `YES` if success, `NO` on error. + + @see https://www.zetetic.net/sqlcipher/ + + @warning You need to have purchased the sqlite encryption extensions for this method to work. + */ + +- (BOOL)setKey:(NSString*)key; + +/** Reset encryption key + + @param key The key to be used. + + @return `YES` if success, `NO` on error. + + @see https://www.zetetic.net/sqlcipher/ + + @warning You need to have purchased the sqlite encryption extensions for this method to work. + */ + +- (BOOL)rekey:(NSString*)key; + +/** Set encryption key using `keyData`. + + @param keyData The `NSData` to be used. + + @return `YES` if success, `NO` on error. + + @see https://www.zetetic.net/sqlcipher/ + + @warning You need to have purchased the sqlite encryption extensions for this method to work. + */ + +- (BOOL)setKeyWithData:(NSData *)keyData; + +/** Reset encryption key using `keyData`. + + @param keyData The `NSData` to be used. + + @return `YES` if success, `NO` on error. + + @see https://www.zetetic.net/sqlcipher/ + + @warning You need to have purchased the sqlite encryption extensions for this method to work. + */ + +- (BOOL)rekeyWithData:(NSData *)keyData; + + +///------------------------------ +/// @name General inquiry methods +///------------------------------ + +/** The path of the database file + + @return path of database. + + */ + +- (NSString *)databasePath; + +/** The underlying SQLite handle + + @return The `sqlite3` pointer. + + */ + +- (void*)sqliteHandle; + + +///----------------------------- +/// @name Retrieving error codes +///----------------------------- + +/** Last error message + + Returns the English-language text that describes the most recent failed SQLite API call associated with a database connection. If a prior API call failed but the most recent API call succeeded, this return value is undefined. + + @return `NSString` of the last error message. + + @see [sqlite3_errmsg()](http://sqlite.org/c3ref/errcode.html) + @see lastErrorCode + @see lastError + + */ + +- (NSString*)lastErrorMessage; + +/** Last error code + + Returns the numeric result code or extended result code for the most recent failed SQLite API call associated with a database connection. If a prior API call failed but the most recent API call succeeded, this return value is undefined. + + @return Integer value of the last error code. + + @see [sqlite3_errcode()](http://sqlite.org/c3ref/errcode.html) + @see lastErrorMessage + @see lastError + + */ + +- (int)lastErrorCode; + +/** Had error + + @return `YES` if there was an error, `NO` if no error. + + @see lastError + @see lastErrorCode + @see lastErrorMessage + + */ + +- (BOOL)hadError; + +/** Last error + + @return `NSError` representing the last error. + + @see lastErrorCode + @see lastErrorMessage + + */ + +- (NSError*)lastError; + + +// description forthcoming +- (void)setMaxBusyRetryTimeInterval:(NSTimeInterval)timeoutInSeconds; +- (NSTimeInterval)maxBusyRetryTimeInterval; + + +///------------------ +/// @name Save points +///------------------ + +/** Start save point + + @param name Name of save point. + + @param outErr A `NSError` object to receive any error object (if any). + + @return `YES` on success; `NO` on failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see releaseSavePointWithName:error: + @see rollbackToSavePointWithName:error: + */ + +- (BOOL)startSavePointWithName:(NSString*)name error:(NSError**)outErr; + +/** Release save point + + @param name Name of save point. + + @param outErr A `NSError` object to receive any error object (if any). + + @return `YES` on success; `NO` on failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see startSavePointWithName:error: + @see rollbackToSavePointWithName:error: + + */ + +- (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError**)outErr; + +/** Roll back to save point + + @param name Name of save point. + @param outErr A `NSError` object to receive any error object (if any). + + @return `YES` on success; `NO` on failure. If failed, you can call `<lastError>`, `<lastErrorCode>`, or `<lastErrorMessage>` for diagnostic information regarding the failure. + + @see startSavePointWithName:error: + @see releaseSavePointWithName:error: + + */ + +- (BOOL)rollbackToSavePointWithName:(NSString*)name error:(NSError**)outErr; + +/** Start save point + + @param block Block of code to perform from within save point. + + @return The NSError corresponding to the error, if any. If no error, returns `nil`. + + @see startSavePointWithName:error: + @see releaseSavePointWithName:error: + @see rollbackToSavePointWithName:error: + + */ + +- (NSError*)inSavePoint:(void (^)(BOOL *rollback))block; + +///---------------------------- +/// @name SQLite library status +///---------------------------- + +/** Test to see if the library is threadsafe + + @return `NO` if and only if SQLite was compiled with mutexing code omitted due to the SQLITE_THREADSAFE compile-time option being set to 0. + + @see [sqlite3_threadsafe()](http://sqlite.org/c3ref/threadsafe.html) + */ + ++ (BOOL)isSQLiteThreadSafe; + +/** Run-time library version numbers + + @return The sqlite library version string. + + @see [sqlite3_libversion()](http://sqlite.org/c3ref/libversion.html) + */ + ++ (NSString*)sqliteLibVersion; + + ++ (NSString*)FMDBUserVersion; + ++ (SInt32)FMDBVersion; + + +///------------------------ +/// @name Make SQL function +///------------------------ + +/** Adds SQL functions or aggregates or to redefine the behavior of existing SQL functions or aggregates. + + For example: + + [queue inDatabase:^(FMDatabase *adb) { + + [adb executeUpdate:@"create table ftest (foo text)"]; + [adb executeUpdate:@"insert into ftest values ('hello')"]; + [adb executeUpdate:@"insert into ftest values ('hi')"]; + [adb executeUpdate:@"insert into ftest values ('not h!')"]; + [adb executeUpdate:@"insert into ftest values ('definitely not h!')"]; + + [adb makeFunctionNamed:@"StringStartsWithH" maximumArguments:1 withBlock:^(sqlite3_context *context, int aargc, sqlite3_value **aargv) { + if (sqlite3_value_type(aargv[0]) == SQLITE_TEXT) { + @autoreleasepool { + const char *c = (const char *)sqlite3_value_text(aargv[0]); + NSString *s = [NSString stringWithUTF8String:c]; + sqlite3_result_int(context, [s hasPrefix:@"h"]); + } + } + else { + NSLog(@"Unknown formart for StringStartsWithH (%d) %s:%d", sqlite3_value_type(aargv[0]), __FUNCTION__, __LINE__); + sqlite3_result_null(context); + } + }]; + + int rowCount = 0; + FMResultSet *ars = [adb executeQuery:@"select * from ftest where StringStartsWithH(foo)"]; + while ([ars next]) { + rowCount++; + NSLog(@"Does %@ start with 'h'?", [rs stringForColumnIndex:0]); + } + FMDBQuickCheck(rowCount == 2); + }]; + + @param name Name of function + + @param count Maximum number of parameters + + @param block The block of code for the function + + @see [sqlite3_create_function()](http://sqlite.org/c3ref/create_function.html) + */ + +- (void)makeFunctionNamed:(NSString*)name maximumArguments:(int)count withBlock:(void (^)(void *context, int argc, void **argv))block; + + +///--------------------- +/// @name Date formatter +///--------------------- + +/** Generate an `NSDateFormatter` that won't be broken by permutations of timezones or locales. + + Use this method to generate values to set the dateFormat property. + + Example: + + myDB.dateFormat = [FMDatabase storeableDateFormat:@"yyyy-MM-dd HH:mm:ss"]; + + @param format A valid NSDateFormatter format string. + + @return A `NSDateFormatter` that can be used for converting dates to strings and vice versa. + + @see hasDateFormatter + @see setDateFormat: + @see dateFromString: + @see stringFromDate: + @see storeableDateFormat: + + @warning Note that `NSDateFormatter` is not thread-safe, so the formatter generated by this method should be assigned to only one FMDB instance and should not be used for other purposes. + + */ + ++ (NSDateFormatter *)storeableDateFormat:(NSString *)format; + +/** Test whether the database has a date formatter assigned. + + @return `YES` if there is a date formatter; `NO` if not. + + @see hasDateFormatter + @see setDateFormat: + @see dateFromString: + @see stringFromDate: + @see storeableDateFormat: + */ + +- (BOOL)hasDateFormatter; + +/** Set to a date formatter to use string dates with sqlite instead of the default UNIX timestamps. + + @param format Set to nil to use UNIX timestamps. Defaults to nil. Should be set using a formatter generated using FMDatabase::storeableDateFormat. + + @see hasDateFormatter + @see setDateFormat: + @see dateFromString: + @see stringFromDate: + @see storeableDateFormat: + + @warning Note there is no direct getter for the `NSDateFormatter`, and you should not use the formatter you pass to FMDB for other purposes, as `NSDateFormatter` is not thread-safe. + */ + +- (void)setDateFormat:(NSDateFormatter *)format; + +/** Convert the supplied NSString to NSDate, using the current database formatter. + + @param s `NSString` to convert to `NSDate`. + + @return The `NSDate` object; or `nil` if no formatter is set. + + @see hasDateFormatter + @see setDateFormat: + @see dateFromString: + @see stringFromDate: + @see storeableDateFormat: + */ + +- (NSDate *)dateFromString:(NSString *)s; + +/** Convert the supplied NSDate to NSString, using the current database formatter. + + @param date `NSDate` of date to convert to `NSString`. + + @return The `NSString` representation of the date; `nil` if no formatter is set. + + @see hasDateFormatter + @see setDateFormat: + @see dateFromString: + @see stringFromDate: + @see storeableDateFormat: + */ + +- (NSString *)stringFromDate:(NSDate *)date; + +@end + + +/** Objective-C wrapper for `sqlite3_stmt` + + This is a wrapper for a SQLite `sqlite3_stmt`. Generally when using FMDB you will not need to interact directly with `FMStatement`, but rather with `<FMDatabase>` and `<FMResultSet>` only. + + ### See also + + - `<FMDatabase>` + - `<FMResultSet>` + - [`sqlite3_stmt`](http://www.sqlite.org/c3ref/stmt.html) + */ + +@interface FMStatement : NSObject { + void *_statement; + NSString *_query; + long _useCount; + BOOL _inUse; +} + +///----------------- +/// @name Properties +///----------------- + +/** Usage count */ + +@property (atomic, assign) long useCount; + +/** SQL statement */ + +@property (atomic, retain) NSString *query; + +/** SQLite sqlite3_stmt + + @see [`sqlite3_stmt`](http://www.sqlite.org/c3ref/stmt.html) + */ + +@property (atomic, assign) void *statement; + +/** Indication of whether the statement is in use */ + +@property (atomic, assign) BOOL inUse; + +///---------------------------- +/// @name Closing and Resetting +///---------------------------- + +/** Close statement */ + +- (void)close; + +/** Reset statement */ + +- (void)reset; + +@end + +#pragma clang diagnostic pop + diff --git a/frameworks/FMDB.framework/Headers/FMDatabaseAdditions.h b/frameworks/FMDB.framework/Headers/FMDatabaseAdditions.h new file mode 100755 index 0000000..9dd0b62 --- /dev/null +++ b/frameworks/FMDB.framework/Headers/FMDatabaseAdditions.h @@ -0,0 +1,278 @@ +// +// FMDatabaseAdditions.h +// fmdb +// +// Created by August Mueller on 10/30/05. +// Copyright 2005 Flying Meat Inc.. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import "FMDatabase.h" + + +/** Category of additions for `<FMDatabase>` class. + + ### See also + + - `<FMDatabase>` + */ + +@interface FMDatabase (FMDatabaseAdditions) + +///---------------------------------------- +/// @name Return results of SQL to variable +///---------------------------------------- + +/** Return `int` value for query + + @param query The SQL query to be performed. + @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + + @return `int` value. + + @note To use this method from Swift, you must include `FMDatabaseAdditionsVariadic.swift` in your project. + */ + +- (int)intForQuery:(NSString*)query, ...; + +/** Return `long` value for query + + @param query The SQL query to be performed. + @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + + @return `long` value. + + @note To use this method from Swift, you must include `FMDatabaseAdditionsVariadic.swift` in your project. + */ + +- (long)longForQuery:(NSString*)query, ...; + +/** Return `BOOL` value for query + + @param query The SQL query to be performed. + @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + + @return `BOOL` value. + + @note To use this method from Swift, you must include `FMDatabaseAdditionsVariadic.swift` in your project. + */ + +- (BOOL)boolForQuery:(NSString*)query, ...; + +/** Return `double` value for query + + @param query The SQL query to be performed. + @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + + @return `double` value. + + @note To use this method from Swift, you must include `FMDatabaseAdditionsVariadic.swift` in your project. + */ + +- (double)doubleForQuery:(NSString*)query, ...; + +/** Return `NSString` value for query + + @param query The SQL query to be performed. + @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + + @return `NSString` value. + + @note To use this method from Swift, you must include `FMDatabaseAdditionsVariadic.swift` in your project. + */ + +- (NSString*)stringForQuery:(NSString*)query, ...; + +/** Return `NSData` value for query + + @param query The SQL query to be performed. + @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + + @return `NSData` value. + + @note To use this method from Swift, you must include `FMDatabaseAdditionsVariadic.swift` in your project. + */ + +- (NSData*)dataForQuery:(NSString*)query, ...; + +/** Return `NSDate` value for query + + @param query The SQL query to be performed. + @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + + @return `NSDate` value. + + @note To use this method from Swift, you must include `FMDatabaseAdditionsVariadic.swift` in your project. + */ + +- (NSDate*)dateForQuery:(NSString*)query, ...; + + +// Notice that there's no dataNoCopyForQuery:. +// That would be a bad idea, because we close out the result set, and then what +// happens to the data that we just didn't copy? Who knows, not I. + + +///-------------------------------- +/// @name Schema related operations +///-------------------------------- + +/** Does table exist in database? + + @param tableName The name of the table being looked for. + + @return `YES` if table found; `NO` if not found. + */ + +- (BOOL)tableExists:(NSString*)tableName; + +/** The schema of the database. + + This will be the schema for the entire database. For each entity, each row of the result set will include the following fields: + + - `type` - The type of entity (e.g. table, index, view, or trigger) + - `name` - The name of the object + - `tbl_name` - The name of the table to which the object references + - `rootpage` - The page number of the root b-tree page for tables and indices + - `sql` - The SQL that created the entity + + @return `FMResultSet` of schema; `nil` on error. + + @see [SQLite File Format](http://www.sqlite.org/fileformat.html) + */ + +- (FMResultSet*)getSchema; + +/** The schema of the database. + + This will be the schema for a particular table as report by SQLite `PRAGMA`, for example: + + PRAGMA table_info('employees') + + This will report: + + - `cid` - The column ID number + - `name` - The name of the column + - `type` - The data type specified for the column + - `notnull` - whether the field is defined as NOT NULL (i.e. values required) + - `dflt_value` - The default value for the column + - `pk` - Whether the field is part of the primary key of the table + + @param tableName The name of the table for whom the schema will be returned. + + @return `FMResultSet` of schema; `nil` on error. + + @see [table_info](http://www.sqlite.org/pragma.html#pragma_table_info) + */ + +- (FMResultSet*)getTableSchema:(NSString*)tableName; + +/** Test to see if particular column exists for particular table in database + + @param columnName The name of the column. + + @param tableName The name of the table. + + @return `YES` if column exists in table in question; `NO` otherwise. + */ + +- (BOOL)columnExists:(NSString*)columnName inTableWithName:(NSString*)tableName; + +/** Test to see if particular column exists for particular table in database + + @param columnName The name of the column. + + @param tableName The name of the table. + + @return `YES` if column exists in table in question; `NO` otherwise. + + @see columnExists:inTableWithName: + + @warning Deprecated - use `<columnExists:inTableWithName:>` instead. + */ + +- (BOOL)columnExists:(NSString*)tableName columnName:(NSString*)columnName __attribute__ ((deprecated)); + + +/** Validate SQL statement + + This validates SQL statement by performing `sqlite3_prepare_v2`, but not returning the results, but instead immediately calling `sqlite3_finalize`. + + @param sql The SQL statement being validated. + + @param error This is a pointer to a `NSError` object that will receive the autoreleased `NSError` object if there was any error. If this is `nil`, no `NSError` result will be returned. + + @return `YES` if validation succeeded without incident; `NO` otherwise. + + */ + +- (BOOL)validateSQL:(NSString*)sql error:(NSError**)error; + + +///----------------------------------- +/// @name Application identifier tasks +///----------------------------------- + +/** Retrieve application ID + + @return The `uint32_t` numeric value of the application ID. + + @see setApplicationID: + */ + +- (uint32_t)applicationID; + +/** Set the application ID + + @param appID The `uint32_t` numeric value of the application ID. + + @see applicationID + */ + +- (void)setApplicationID:(uint32_t)appID; + +#if TARGET_OS_MAC && !TARGET_OS_IPHONE +/** Retrieve application ID string + + @return The `NSString` value of the application ID. + + @see setApplicationIDString: + */ + + +- (NSString*)applicationIDString; + +/** Set the application ID string + + @param string The `NSString` value of the application ID. + + @see applicationIDString + */ + +- (void)setApplicationIDString:(NSString*)string; + +#endif + +///----------------------------------- +/// @name user version identifier tasks +///----------------------------------- + +/** Retrieve user version + + @return The `uint32_t` numeric value of the user version. + + @see setUserVersion: + */ + +- (uint32_t)userVersion; + +/** Set the user-version + + @param version The `uint32_t` numeric value of the user version. + + @see userVersion + */ + +- (void)setUserVersion:(uint32_t)version; + +@end diff --git a/frameworks/FMDB.framework/Headers/FMDatabasePool.h b/frameworks/FMDB.framework/Headers/FMDatabasePool.h new file mode 100755 index 0000000..1915858 --- /dev/null +++ b/frameworks/FMDB.framework/Headers/FMDatabasePool.h @@ -0,0 +1,200 @@ +// +// FMDatabasePool.h +// fmdb +// +// Created by August Mueller on 6/22/11. +// Copyright 2011 Flying Meat Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@class FMDatabase; + +/** Pool of `<FMDatabase>` objects. + + ### See also + + - `<FMDatabaseQueue>` + - `<FMDatabase>` + + @warning Before using `FMDatabasePool`, please consider using `<FMDatabaseQueue>` instead. + + If you really really really know what you're doing and `FMDatabasePool` is what + you really really need (ie, you're using a read only database), OK you can use + it. But just be careful not to deadlock! + + For an example on deadlocking, search for: + `ONLY_USE_THE_POOL_IF_YOU_ARE_DOING_READS_OTHERWISE_YOULL_DEADLOCK_USE_FMDATABASEQUEUE_INSTEAD` + in the main.m file. + */ + +@interface FMDatabasePool : NSObject { + NSString *_path; + + dispatch_queue_t _lockQueue; + + NSMutableArray *_databaseInPool; + NSMutableArray *_databaseOutPool; + + __unsafe_unretained id _delegate; + + NSUInteger _maximumNumberOfDatabasesToCreate; + int _openFlags; +} + +/** Database path */ + +@property (atomic, retain) NSString *path; + +/** Delegate object */ + +@property (atomic, assign) id delegate; + +/** Maximum number of databases to create */ + +@property (atomic, assign) NSUInteger maximumNumberOfDatabasesToCreate; + +/** Open flags */ + +@property (atomic, readonly) int openFlags; + + +///--------------------- +/// @name Initialization +///--------------------- + +/** Create pool using path. + + @param aPath The file path of the database. + + @return The `FMDatabasePool` object. `nil` on error. + */ + ++ (instancetype)databasePoolWithPath:(NSString*)aPath; + +/** Create pool using path and specified flags + + @param aPath The file path of the database. + @param openFlags Flags passed to the openWithFlags method of the database + + @return The `FMDatabasePool` object. `nil` on error. + */ + ++ (instancetype)databasePoolWithPath:(NSString*)aPath flags:(int)openFlags; + +/** Create pool using path. + + @param aPath The file path of the database. + + @return The `FMDatabasePool` object. `nil` on error. + */ + +- (instancetype)initWithPath:(NSString*)aPath; + +/** Create pool using path and specified flags. + + @param aPath The file path of the database. + @param openFlags Flags passed to the openWithFlags method of the database + + @return The `FMDatabasePool` object. `nil` on error. + */ + +- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags; + +///------------------------------------------------ +/// @name Keeping track of checked in/out databases +///------------------------------------------------ + +/** Number of checked-in databases in pool + + @returns Number of databases + */ + +- (NSUInteger)countOfCheckedInDatabases; + +/** Number of checked-out databases in pool + + @returns Number of databases + */ + +- (NSUInteger)countOfCheckedOutDatabases; + +/** Total number of databases in pool + + @returns Number of databases + */ + +- (NSUInteger)countOfOpenDatabases; + +/** Release all databases in pool */ + +- (void)releaseAllDatabases; + +///------------------------------------------ +/// @name Perform database operations in pool +///------------------------------------------ + +/** Synchronously perform database operations in pool. + + @param block The code to be run on the `FMDatabasePool` pool. + */ + +- (void)inDatabase:(void (^)(FMDatabase *db))block; + +/** Synchronously perform database operations in pool using transaction. + + @param block The code to be run on the `FMDatabasePool` pool. + */ + +- (void)inTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block; + +/** Synchronously perform database operations in pool using deferred transaction. + + @param block The code to be run on the `FMDatabasePool` pool. + */ + +- (void)inDeferredTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block; + +/** Synchronously perform database operations in pool using save point. + + @param block The code to be run on the `FMDatabasePool` pool. + + @return `NSError` object if error; `nil` if successful. + + @warning You can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. If you need to nest, use `<[FMDatabase startSavePointWithName:error:]>` instead. +*/ + +- (NSError*)inSavePoint:(void (^)(FMDatabase *db, BOOL *rollback))block; + +@end + + +/** FMDatabasePool delegate category + + This is a category that defines the protocol for the FMDatabasePool delegate + */ + +@interface NSObject (FMDatabasePoolDelegate) + +/** Asks the delegate whether database should be added to the pool. + + @param pool The `FMDatabasePool` object. + @param database The `FMDatabase` object. + + @return `YES` if it should add database to pool; `NO` if not. + + */ + +- (BOOL)databasePool:(FMDatabasePool*)pool shouldAddDatabaseToPool:(FMDatabase*)database; + +/** Tells the delegate that database was added to the pool. + + @param pool The `FMDatabasePool` object. + @param database The `FMDatabase` object. + + */ + +- (void)databasePool:(FMDatabasePool*)pool didAddDatabase:(FMDatabase*)database; + +@end + diff --git a/frameworks/FMDB.framework/Headers/FMDatabaseQueue.h b/frameworks/FMDB.framework/Headers/FMDatabaseQueue.h new file mode 100755 index 0000000..ae45b65 --- /dev/null +++ b/frameworks/FMDB.framework/Headers/FMDatabaseQueue.h @@ -0,0 +1,182 @@ +// +// FMDatabaseQueue.h +// fmdb +// +// Created by August Mueller on 6/22/11. +// Copyright 2011 Flying Meat Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@class FMDatabase; + +/** To perform queries and updates on multiple threads, you'll want to use `FMDatabaseQueue`. + + Using a single instance of `<FMDatabase>` from multiple threads at once is a bad idea. It has always been OK to make a `<FMDatabase>` object *per thread*. Just don't share a single instance across threads, and definitely not across multiple threads at the same time. + + Instead, use `FMDatabaseQueue`. Here's how to use it: + + First, make your queue. + + FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:aPath]; + + Then use it like so: + + [queue inDatabase:^(FMDatabase *db) { + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]]; + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]]; + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]]; + + FMResultSet *rs = [db executeQuery:@"select * from foo"]; + while ([rs next]) { + //… + } + }]; + + An easy way to wrap things up in a transaction can be done like this: + + [queue inTransaction:^(FMDatabase *db, BOOL *rollback) { + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]]; + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]]; + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]]; + + if (whoopsSomethingWrongHappened) { + *rollback = YES; + return; + } + // etc… + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:4]]; + }]; + + `FMDatabaseQueue` will run the blocks on a serialized queue (hence the name of the class). So if you call `FMDatabaseQueue`'s methods from multiple threads at the same time, they will be executed in the order they are received. This way queries and updates won't step on each other's toes, and every one is happy. + + ### See also + + - `<FMDatabase>` + + @warning Do not instantiate a single `<FMDatabase>` object and use it across multiple threads. Use `FMDatabaseQueue` instead. + + @warning The calls to `FMDatabaseQueue`'s methods are blocking. So even though you are passing along blocks, they will **not** be run on another thread. + + */ + +@interface FMDatabaseQueue : NSObject { + NSString *_path; + dispatch_queue_t _queue; + FMDatabase *_db; + int _openFlags; +} + +/** Path of database */ + +@property (atomic, retain) NSString *path; + +/** Open flags */ + +@property (atomic, readonly) int openFlags; + +///---------------------------------------------------- +/// @name Initialization, opening, and closing of queue +///---------------------------------------------------- + +/** Create queue using path. + + @param aPath The file path of the database. + + @return The `FMDatabaseQueue` object. `nil` on error. + */ + ++ (instancetype)databaseQueueWithPath:(NSString*)aPath; + +/** Create queue using path and specified flags. + + @param aPath The file path of the database. + @param openFlags Flags passed to the openWithFlags method of the database + + @return The `FMDatabaseQueue` object. `nil` on error. + */ ++ (instancetype)databaseQueueWithPath:(NSString*)aPath flags:(int)openFlags; + +/** Create queue using path. + + @param aPath The file path of the database. + + @return The `FMDatabaseQueue` object. `nil` on error. + */ + +- (instancetype)initWithPath:(NSString*)aPath; + +/** Create queue using path and specified flags. + + @param aPath The file path of the database. + @param openFlags Flags passed to the openWithFlags method of the database + + @return The `FMDatabaseQueue` object. `nil` on error. + */ + +- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags; + +/** Create queue using path and specified flags. + + @param aPath The file path of the database. + @param openFlags Flags passed to the openWithFlags method of the database + @param vfsName The name of a custom virtual file system + + @return The `FMDatabaseQueue` object. `nil` on error. + */ + +- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags vfs:(NSString *)vfsName; + +/** Returns the Class of 'FMDatabase' subclass, that will be used to instantiate database object. + + Subclasses can override this method to return specified Class of 'FMDatabase' subclass. + + @return The Class of 'FMDatabase' subclass, that will be used to instantiate database object. + */ + ++ (Class)databaseClass; + +/** Close database used by queue. */ + +- (void)close; + +///----------------------------------------------- +/// @name Dispatching database operations to queue +///----------------------------------------------- + +/** Synchronously perform database operations on queue. + + @param block The code to be run on the queue of `FMDatabaseQueue` + */ + +- (void)inDatabase:(void (^)(FMDatabase *db))block; + +/** Synchronously perform database operations on queue, using transactions. + + @param block The code to be run on the queue of `FMDatabaseQueue` + */ + +- (void)inTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block; + +/** Synchronously perform database operations on queue, using deferred transactions. + + @param block The code to be run on the queue of `FMDatabaseQueue` + */ + +- (void)inDeferredTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block; + +///----------------------------------------------- +/// @name Dispatching database operations to queue +///----------------------------------------------- + +/** Synchronously perform database operations using save point. + + @param block The code to be run on the queue of `FMDatabaseQueue` + */ + +// NOTE: you can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. +// If you need to nest, use FMDatabase's startSavePointWithName:error: instead. +- (NSError*)inSavePoint:(void (^)(FMDatabase *db, BOOL *rollback))block; + +@end + diff --git a/frameworks/FMDB.framework/Headers/FMResultSet.h b/frameworks/FMDB.framework/Headers/FMResultSet.h new file mode 100755 index 0000000..af0433b --- /dev/null +++ b/frameworks/FMDB.framework/Headers/FMResultSet.h @@ -0,0 +1,468 @@ +#import <Foundation/Foundation.h> + +#ifndef __has_feature // Optional. +#define __has_feature(x) 0 // Compatibility with non-clang compilers. +#endif + +#ifndef NS_RETURNS_NOT_RETAINED +#if __has_feature(attribute_ns_returns_not_retained) +#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) +#else +#define NS_RETURNS_NOT_RETAINED +#endif +#endif + +@class FMDatabase; +@class FMStatement; + +/** Represents the results of executing a query on an `<FMDatabase>`. + + ### See also + + - `<FMDatabase>` + */ + +@interface FMResultSet : NSObject { + FMDatabase *_parentDB; + FMStatement *_statement; + + NSString *_query; + NSMutableDictionary *_columnNameToIndexMap; +} + +///----------------- +/// @name Properties +///----------------- + +/** Executed query */ + +@property (atomic, retain) NSString *query; + +/** `NSMutableDictionary` mapping column names to numeric index */ + +@property (readonly) NSMutableDictionary *columnNameToIndexMap; + +/** `FMStatement` used by result set. */ + +@property (atomic, retain) FMStatement *statement; + +///------------------------------------ +/// @name Creating and closing database +///------------------------------------ + +/** Create result set from `<FMStatement>` + + @param statement A `<FMStatement>` to be performed + + @param aDB A `<FMDatabase>` to be used + + @return A `FMResultSet` on success; `nil` on failure + */ + ++ (instancetype)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB; + +/** Close result set */ + +- (void)close; + +- (void)setParentDB:(FMDatabase *)newDb; + +///--------------------------------------- +/// @name Iterating through the result set +///--------------------------------------- + +/** Retrieve next row for result set. + + You must always invoke `next` or `nextWithError` before attempting to access the values returned in a query, even if you're only expecting one. + + @return `YES` if row successfully retrieved; `NO` if end of result set reached + + @see hasAnotherRow + */ + +- (BOOL)next; + +/** Retrieve next row for result set. + + You must always invoke `next` or `nextWithError` before attempting to access the values returned in a query, even if you're only expecting one. + + @param outErr A 'NSError' object to receive any error object (if any). + + @return 'YES' if row successfully retrieved; 'NO' if end of result set reached + + @see hasAnotherRow + */ + +- (BOOL)nextWithError:(NSError **)outErr; + +/** Did the last call to `<next>` succeed in retrieving another row? + + @return `YES` if the last call to `<next>` succeeded in retrieving another record; `NO` if not. + + @see next + + @warning The `hasAnotherRow` method must follow a call to `<next>`. If the previous database interaction was something other than a call to `next`, then this method may return `NO`, whether there is another row of data or not. + */ + +- (BOOL)hasAnotherRow; + +///--------------------------------------------- +/// @name Retrieving information from result set +///--------------------------------------------- + +/** How many columns in result set + + @return Integer value of the number of columns. + */ + +- (int)columnCount; + +/** Column index for column name + + @param columnName `NSString` value of the name of the column. + + @return Zero-based index for column. + */ + +- (int)columnIndexForName:(NSString*)columnName; + +/** Column name for column index + + @param columnIdx Zero-based index for column. + + @return columnName `NSString` value of the name of the column. + */ + +- (NSString*)columnNameForIndex:(int)columnIdx; + +/** Result set integer value for column. + + @param columnName `NSString` value of the name of the column. + + @return `int` value of the result set's column. + */ + +- (int)intForColumn:(NSString*)columnName; + +/** Result set integer value for column. + + @param columnIdx Zero-based index for column. + + @return `int` value of the result set's column. + */ + +- (int)intForColumnIndex:(int)columnIdx; + +/** Result set `long` value for column. + + @param columnName `NSString` value of the name of the column. + + @return `long` value of the result set's column. + */ + +- (long)longForColumn:(NSString*)columnName; + +/** Result set long value for column. + + @param columnIdx Zero-based index for column. + + @return `long` value of the result set's column. + */ + +- (long)longForColumnIndex:(int)columnIdx; + +/** Result set `long long int` value for column. + + @param columnName `NSString` value of the name of the column. + + @return `long long int` value of the result set's column. + */ + +- (long long int)longLongIntForColumn:(NSString*)columnName; + +/** Result set `long long int` value for column. + + @param columnIdx Zero-based index for column. + + @return `long long int` value of the result set's column. + */ + +- (long long int)longLongIntForColumnIndex:(int)columnIdx; + +/** Result set `unsigned long long int` value for column. + + @param columnName `NSString` value of the name of the column. + + @return `unsigned long long int` value of the result set's column. + */ + +- (unsigned long long int)unsignedLongLongIntForColumn:(NSString*)columnName; + +/** Result set `unsigned long long int` value for column. + + @param columnIdx Zero-based index for column. + + @return `unsigned long long int` value of the result set's column. + */ + +- (unsigned long long int)unsignedLongLongIntForColumnIndex:(int)columnIdx; + +/** Result set `BOOL` value for column. + + @param columnName `NSString` value of the name of the column. + + @return `BOOL` value of the result set's column. + */ + +- (BOOL)boolForColumn:(NSString*)columnName; + +/** Result set `BOOL` value for column. + + @param columnIdx Zero-based index for column. + + @return `BOOL` value of the result set's column. + */ + +- (BOOL)boolForColumnIndex:(int)columnIdx; + +/** Result set `double` value for column. + + @param columnName `NSString` value of the name of the column. + + @return `double` value of the result set's column. + + */ + +- (double)doubleForColumn:(NSString*)columnName; + +/** Result set `double` value for column. + + @param columnIdx Zero-based index for column. + + @return `double` value of the result set's column. + + */ + +- (double)doubleForColumnIndex:(int)columnIdx; + +/** Result set `NSString` value for column. + + @param columnName `NSString` value of the name of the column. + + @return `NSString` value of the result set's column. + + */ + +- (NSString*)stringForColumn:(NSString*)columnName; + +/** Result set `NSString` value for column. + + @param columnIdx Zero-based index for column. + + @return `NSString` value of the result set's column. + */ + +- (NSString*)stringForColumnIndex:(int)columnIdx; + +/** Result set `NSDate` value for column. + + @param columnName `NSString` value of the name of the column. + + @return `NSDate` value of the result set's column. + */ + +- (NSDate*)dateForColumn:(NSString*)columnName; + +/** Result set `NSDate` value for column. + + @param columnIdx Zero-based index for column. + + @return `NSDate` value of the result set's column. + + */ + +- (NSDate*)dateForColumnIndex:(int)columnIdx; + +/** Result set `NSData` value for column. + + This is useful when storing binary data in table (such as image or the like). + + @param columnName `NSString` value of the name of the column. + + @return `NSData` value of the result set's column. + + */ + +- (NSData*)dataForColumn:(NSString*)columnName; + +/** Result set `NSData` value for column. + + @param columnIdx Zero-based index for column. + + @return `NSData` value of the result set's column. + */ + +- (NSData*)dataForColumnIndex:(int)columnIdx; + +/** Result set `(const unsigned char *)` value for column. + + @param columnName `NSString` value of the name of the column. + + @return `(const unsigned char *)` value of the result set's column. + */ + +- (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName; + +/** Result set `(const unsigned char *)` value for column. + + @param columnIdx Zero-based index for column. + + @return `(const unsigned char *)` value of the result set's column. + */ + +- (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx; + +/** Result set object for column. + + @param columnName `NSString` value of the name of the column. + + @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. + + @see objectForKeyedSubscript: + */ + +- (id)objectForColumnName:(NSString*)columnName; + +/** Result set object for column. + + @param columnIdx Zero-based index for column. + + @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. + + @see objectAtIndexedSubscript: + */ + +- (id)objectForColumnIndex:(int)columnIdx; + +/** Result set object for column. + + This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported: + + id result = rs[@"employee_name"]; + + This simplified syntax is equivalent to calling: + + id result = [rs objectForKeyedSubscript:@"employee_name"]; + + which is, it turns out, equivalent to calling: + + id result = [rs objectForColumnName:@"employee_name"]; + + @param columnName `NSString` value of the name of the column. + + @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. + */ + +- (id)objectForKeyedSubscript:(NSString *)columnName; + +/** Result set object for column. + + This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported: + + id result = rs[0]; + + This simplified syntax is equivalent to calling: + + id result = [rs objectForKeyedSubscript:0]; + + which is, it turns out, equivalent to calling: + + id result = [rs objectForColumnName:0]; + + @param columnIdx Zero-based index for column. + + @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. + */ + +- (id)objectAtIndexedSubscript:(int)columnIdx; + +/** Result set `NSData` value for column. + + @param columnName `NSString` value of the name of the column. + + @return `NSData` value of the result set's column. + + @warning If you are going to use this data after you iterate over the next row, or after you close the +result set, make sure to make a copy of the data first (or just use `<dataForColumn:>`/`<dataForColumnIndex:>`) +If you don't, you're going to be in a world of hurt when you try and use the data. + + */ + +- (NSData*)dataNoCopyForColumn:(NSString*)columnName NS_RETURNS_NOT_RETAINED; + +/** Result set `NSData` value for column. + + @param columnIdx Zero-based index for column. + + @return `NSData` value of the result set's column. + + @warning If you are going to use this data after you iterate over the next row, or after you close the + result set, make sure to make a copy of the data first (or just use `<dataForColumn:>`/`<dataForColumnIndex:>`) + If you don't, you're going to be in a world of hurt when you try and use the data. + + */ + +- (NSData*)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED; + +/** Is the column `NULL`? + + @param columnIdx Zero-based index for column. + + @return `YES` if column is `NULL`; `NO` if not `NULL`. + */ + +- (BOOL)columnIndexIsNull:(int)columnIdx; + +/** Is the column `NULL`? + + @param columnName `NSString` value of the name of the column. + + @return `YES` if column is `NULL`; `NO` if not `NULL`. + */ + +- (BOOL)columnIsNull:(NSString*)columnName; + + +/** Returns a dictionary of the row results mapped to case sensitive keys of the column names. + + @returns `NSDictionary` of the row results. + + @warning The keys to the dictionary are case sensitive of the column names. + */ + +- (NSDictionary*)resultDictionary; + +/** Returns a dictionary of the row results + + @see resultDictionary + + @warning **Deprecated**: Please use `<resultDictionary>` instead. Also, beware that `<resultDictionary>` is case sensitive! + */ + +- (NSDictionary*)resultDict __attribute__ ((deprecated)); + +///----------------------------- +/// @name Key value coding magic +///----------------------------- + +/** Performs `setValue` to yield support for key value observing. + + @param object The object for which the values will be set. This is the key-value-coding compliant object that you might, for example, observe. + + */ + +- (void)kvcMagic:(id)object; + + +@end + diff --git a/frameworks/FMDB.framework/Info.plist b/frameworks/FMDB.framework/Info.plist new file mode 100644 index 0000000..7314a98 --- /dev/null +++ b/frameworks/FMDB.framework/Info.plist Binary files differ diff --git a/frameworks/FMDB.framework/Modules/module.modulemap b/frameworks/FMDB.framework/Modules/module.modulemap new file mode 100644 index 0000000..75f9182 --- /dev/null +++ b/frameworks/FMDB.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module FMDB { + umbrella header "FMDB.h" + + export * + module * { export * } +} diff --git a/frameworks/FMDB.framework/_CodeSignature/CodeDirectory b/frameworks/FMDB.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..8b90dca --- /dev/null +++ b/frameworks/FMDB.framework/_CodeSignature/CodeDirectory Binary files differ diff --git a/frameworks/FMDB.framework/_CodeSignature/CodeRequirements b/frameworks/FMDB.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..b82ba2f --- /dev/null +++ b/frameworks/FMDB.framework/_CodeSignature/CodeRequirements Binary files differ diff --git a/frameworks/FMDB.framework/_CodeSignature/CodeResources b/frameworks/FMDB.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..9652bac --- /dev/null +++ b/frameworks/FMDB.framework/_CodeSignature/CodeResources @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict> + <key>Headers/FMDB.h</key> + <data> + Z0B02ZNj+G7lnoSwKuNDDi/hqUw= + </data> + <key>Headers/FMDatabase.h</key> + <data> + oQB2AiPL3n/OrId6cdahspxR4io= + </data> + <key>Headers/FMDatabaseAdditions.h</key> + <data> + 7TzYZkI6WJ5R6sWAwUqmet80pFw= + </data> + <key>Headers/FMDatabasePool.h</key> + <data> + fMEyB5n2kGAXFH7U4a+AftN3xIU= + </data> + <key>Headers/FMDatabaseQueue.h</key> + <data> + P/i3Dr0RmstaeuHGX6Q1hRveTx0= + </data> + <key>Headers/FMResultSet.h</key> + <data> + onPcVF/KecszoKrAZKpPXaR6Keo= + </data> + <key>Info.plist</key> + <data> + h5VFW38zlJRPLo2ucRduRmTd8DY= + </data> + <key>Modules/module.modulemap</key> + <data> + VYpVykMlvap9NSISw7f89ThIGMo= + </data> + </dict> + <key>files2</key> + <dict> + <key>Headers/FMDB.h</key> + <data> + Z0B02ZNj+G7lnoSwKuNDDi/hqUw= + </data> + <key>Headers/FMDatabase.h</key> + <data> + oQB2AiPL3n/OrId6cdahspxR4io= + </data> + <key>Headers/FMDatabaseAdditions.h</key> + <data> + 7TzYZkI6WJ5R6sWAwUqmet80pFw= + </data> + <key>Headers/FMDatabasePool.h</key> + <data> + fMEyB5n2kGAXFH7U4a+AftN3xIU= + </data> + <key>Headers/FMDatabaseQueue.h</key> + <data> + P/i3Dr0RmstaeuHGX6Q1hRveTx0= + </data> + <key>Headers/FMResultSet.h</key> + <data> + onPcVF/KecszoKrAZKpPXaR6Keo= + </data> + <key>Modules/module.modulemap</key> + <data> + VYpVykMlvap9NSISw7f89ThIGMo= + </data> + </dict> + <key>rules</key> + <dict> + <key>^</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/frameworks/FMDB.framework/_CodeSignature/CodeSignature b/frameworks/FMDB.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..853a2b7 --- /dev/null +++ b/frameworks/FMDB.framework/_CodeSignature/CodeSignature Binary files differ diff --git a/frameworks/MJRefresh.framework/Headers/MJRefresh.h b/frameworks/MJRefresh.framework/Headers/MJRefresh.h new file mode 100755 index 0000000..3673cca --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefresh.h @@ -0,0 +1,12 @@ +// 代码地址: https://github.com/CoderMJLee/MJRefresh +// 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 + +#import<MJRefresh/UIScrollView+MJRefresh.h> +#import<MJRefresh/UIScrollView+MJExtension.h> +#import<MJRefresh/UIView+MJExtension.h> +#import<MJRefresh/MJRefreshNormalHeader.h> +#import<MJRefresh/MJRefreshGifHeader.h> +#import<MJRefresh/MJRefreshBackNormalFooter.h> +#import<MJRefresh/MJRefreshBackGifFooter.h> +#import<MJRefresh/MJRefreshAutoNormalFooter.h> +#import<MJRefresh/MJRefreshAutoGifFooter.h> \ No newline at end of file diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshAutoFooter.h b/frameworks/MJRefresh.framework/Headers/MJRefreshAutoFooter.h new file mode 100755 index 0000000..5aac4f6 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshAutoFooter.h @@ -0,0 +1,20 @@ +// +// MJRefreshAutoFooter.h +// MJRefreshExample +// +// Created by MJ Lee on 15/4/24. +// Copyright (c) 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshFooter.h" + +@interface MJRefreshAutoFooter : MJRefreshFooter +/** 是否自动刷新(默认为YES) */ +@property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; + +/** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ +@property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用automaticallyChangeAlpha属性"); + +/** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ +@property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshAutoGifFooter.h b/frameworks/MJRefresh.framework/Headers/MJRefreshAutoGifFooter.h new file mode 100755 index 0000000..4c96286 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshAutoGifFooter.h @@ -0,0 +1,15 @@ +// +// MJRefreshAutoGifFooter.h +// MJRefreshExample +// +// Created by MJ Lee on 15/4/24. +// Copyright (c) 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshAutoStateFooter.h" + +@interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter +/** 设置state状态下的动画图片images 动画持续时间duration*/ +- (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; +- (void)setImages:(NSArray *)images forState:(MJRefreshState)state; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshAutoNormalFooter.h b/frameworks/MJRefresh.framework/Headers/MJRefreshAutoNormalFooter.h new file mode 100755 index 0000000..5549cff --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshAutoNormalFooter.h @@ -0,0 +1,14 @@ +// +// MJRefreshAutoNormalFooter.h +// MJRefreshExample +// +// Created by MJ Lee on 15/4/24. +// Copyright (c) 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshAutoStateFooter.h" + +@interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter +/** 菊花的样式 */ +@property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshAutoStateFooter.h b/frameworks/MJRefresh.framework/Headers/MJRefreshAutoStateFooter.h new file mode 100755 index 0000000..956188b --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshAutoStateFooter.h @@ -0,0 +1,20 @@ +// +// MJRefreshAutoStateFooter.h +// MJRefreshExample +// +// Created by MJ Lee on 15/6/13. +// Copyright © 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshAutoFooter.h" + +@interface MJRefreshAutoStateFooter : MJRefreshAutoFooter +/** 显示刷新状态的label */ +@property (weak, nonatomic, readonly) UILabel *stateLabel; + +/** 设置state状态下的文字 */ +- (void)setTitle:(NSString *)title forState:(MJRefreshState)state; + +/** 隐藏刷新状态的文字 */ +@property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshBackFooter.h b/frameworks/MJRefresh.framework/Headers/MJRefreshBackFooter.h new file mode 100755 index 0000000..347083c --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshBackFooter.h @@ -0,0 +1,13 @@ +// +// MJRefreshBackFooter.h +// MJRefreshExample +// +// Created by MJ Lee on 15/4/24. +// Copyright (c) 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshFooter.h" + +@interface MJRefreshBackFooter : MJRefreshFooter + +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshBackGifFooter.h b/frameworks/MJRefresh.framework/Headers/MJRefreshBackGifFooter.h new file mode 100755 index 0000000..10d92e4 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshBackGifFooter.h @@ -0,0 +1,15 @@ +// +// MJRefreshBackGifFooter.h +// MJRefreshExample +// +// Created by MJ Lee on 15/4/24. +// Copyright (c) 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshBackStateFooter.h" + +@interface MJRefreshBackGifFooter : MJRefreshBackStateFooter +/** 设置state状态下的动画图片images 动画持续时间duration*/ +- (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; +- (void)setImages:(NSArray *)images forState:(MJRefreshState)state; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshBackNormalFooter.h b/frameworks/MJRefresh.framework/Headers/MJRefreshBackNormalFooter.h new file mode 100755 index 0000000..90e8b77 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshBackNormalFooter.h @@ -0,0 +1,15 @@ +// +// MJRefreshBackNormalFooter.h +// MJRefreshExample +// +// Created by MJ Lee on 15/4/24. +// Copyright (c) 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshBackStateFooter.h" + +@interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter +@property (weak, nonatomic, readonly) UIImageView *arrowView; +/** 菊花的样式 */ +@property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshBackStateFooter.h b/frameworks/MJRefresh.framework/Headers/MJRefreshBackStateFooter.h new file mode 100755 index 0000000..2d02b2e --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshBackStateFooter.h @@ -0,0 +1,19 @@ +// +// MJRefreshBackStateFooter.h +// MJRefreshExample +// +// Created by MJ Lee on 15/6/13. +// Copyright © 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshBackFooter.h" + +@interface MJRefreshBackStateFooter : MJRefreshBackFooter +/** 显示刷新状态的label */ +@property (weak, nonatomic, readonly) UILabel *stateLabel; +/** 设置state状态下的文字 */ +- (void)setTitle:(NSString *)title forState:(MJRefreshState)state; + +/** 获取state状态下的title */ +- (NSString *)titleForState:(MJRefreshState)state; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshComponent.h b/frameworks/MJRefresh.framework/Headers/MJRefreshComponent.h new file mode 100755 index 0000000..943d405 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshComponent.h @@ -0,0 +1,93 @@ +// 代码地址: https://github.com/CoderMJLee/MJRefresh +// 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 +// MJRefreshComponent.h +// MJRefreshExample +// +// Created by MJ Lee on 15/3/4. +// Copyright (c) 2015年 小码哥. All rights reserved. +// 刷新控件的基类 + +#import <UIKit/UIKit.h> +#import "MJRefreshConst.h" +#import "UIView+MJExtension.h" +#import "UIScrollView+MJExtension.h" +#import "UIScrollView+MJRefresh.h" + +/** 刷新控件的状态 */ +typedef enum { + /** 普通闲置状态 */ + MJRefreshStateIdle = 1, + /** 松开就可以进行刷新的状态 */ + MJRefreshStatePulling, + /** 正在刷新中的状态 */ + MJRefreshStateRefreshing, + /** 即将刷新的状态 */ + MJRefreshStateWillRefresh, + /** 所有数据加载完毕,没有更多的数据了 */ + MJRefreshStateNoMoreData +} MJRefreshState; + +/** 进入刷新状态的回调 */ +typedef void (^MJRefreshComponentRefreshingBlock)(); + +/** 刷新控件的基类 */ +@interface MJRefreshComponent : UIView +{ + /** 记录scrollView刚开始的inset */ + UIEdgeInsets _scrollViewOriginalInset; + /** 父控件 */ + __weak UIScrollView *_scrollView; +} +#pragma mark - 刷新回调 +/** 正在刷新的回调 */ +@property (copy, nonatomic) MJRefreshComponentRefreshingBlock refreshingBlock; +/** 设置回调对象和回调方法 */ +- (void)setRefreshingTarget:(id)target refreshingAction:(SEL)action; +/** 回调对象 */ +@property (weak, nonatomic) id refreshingTarget; +/** 回调方法 */ +@property (assign, nonatomic) SEL refreshingAction; +/** 触发回调(交给子类去调用) */ +- (void)executeRefreshingCallback; + +#pragma mark - 刷新状态控制 +/** 进入刷新状态 */ +- (void)beginRefreshing; +/** 结束刷新状态 */ +- (void)endRefreshing; +/** 是否正在刷新 */ +- (BOOL)isRefreshing; +/** 刷新状态 一般交给子类内部实现 */ +@property (assign, nonatomic) MJRefreshState state; + +#pragma mark - 交给子类去访问 +/** 记录scrollView刚开始的inset */ +@property (assign, nonatomic, readonly) UIEdgeInsets scrollViewOriginalInset; +/** 父控件 */ +@property (weak, nonatomic, readonly) UIScrollView *scrollView; + +#pragma mark - 交给子类们去实现 +/** 初始化 */ +- (void)prepare NS_REQUIRES_SUPER; +/** 摆放子控件frame */ +- (void)placeSubviews NS_REQUIRES_SUPER; +/** 当scrollView的contentOffset发生改变的时候调用 */ +- (void)scrollViewContentOffsetDidChange:(NSDictionary *)change NS_REQUIRES_SUPER; +/** 当scrollView的contentSize发生改变的时候调用 */ +- (void)scrollViewContentSizeDidChange:(NSDictionary *)change NS_REQUIRES_SUPER; +/** 当scrollView的拖拽状态发生改变的时候调用 */ +- (void)scrollViewPanStateDidChange:(NSDictionary *)change NS_REQUIRES_SUPER; + + +#pragma mark - 其他 +/** 拉拽的百分比(交给子类重写) */ +@property (assign, nonatomic) CGFloat pullingPercent; +/** 根据拖拽比例自动切换透明度 */ +@property (assign, nonatomic, getter=isAutoChangeAlpha) BOOL autoChangeAlpha MJRefreshDeprecated("请使用automaticallyChangeAlpha属性"); +/** 根据拖拽比例自动切换透明度 */ +@property (assign, nonatomic, getter=isAutomaticallyChangeAlpha) BOOL automaticallyChangeAlpha; +@end + +@interface UILabel(MJRefresh) ++ (instancetype)label; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshConst.h b/frameworks/MJRefresh.framework/Headers/MJRefreshConst.h new file mode 100755 index 0000000..b3a46ca --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshConst.h @@ -0,0 +1,63 @@ +// 代码地址: https://github.com/CoderMJLee/MJRefresh +// 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 +#import <UIKit/UIKit.h> +#import <objc/message.h> + +// 日志输出 +#ifdef DEBUG +#define MJRefreshLog(...) NSLog(__VA_ARGS__) +#else +#define MJRefreshLog(...) +#endif + +// 过期提醒 +#define MJRefreshDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead) + +// 运行时objc_msgSend +#define MJRefreshMsgSend(...) ((void (*)(void *, SEL, UIView *))objc_msgSend)(__VA_ARGS__) +#define MJRefreshMsgTarget(target) (__bridge void *)(target) + +// RGB颜色 +#define MJRefreshColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0] + +// 文字颜色 +#define MJRefreshLabelTextColor MJRefreshColor(90, 90, 90) + +// 字体大小 +#define MJRefreshLabelFont [UIFont boldSystemFontOfSize:14] + +// 图片路径 +#define MJRefreshSrcName(file) [@"WASDK-Resource.bundle" stringByAppendingPathComponent:file] +#define MJRefreshFrameworkSrcName(file) [@"Frameworks/MJRefresh.framework/MJRefresh.bundl" stringByAppendingPathComponent:file] + +// 常量 +UIKIT_EXTERN const CGFloat MJRefreshHeaderHeight; +UIKIT_EXTERN const CGFloat MJRefreshFooterHeight; +UIKIT_EXTERN const CGFloat MJRefreshFastAnimationDuration; +UIKIT_EXTERN const CGFloat MJRefreshSlowAnimationDuration; + +UIKIT_EXTERN NSString *const MJRefreshKeyPathContentOffset; +UIKIT_EXTERN NSString *const MJRefreshKeyPathContentSize; +UIKIT_EXTERN NSString *const MJRefreshKeyPathContentInset; +UIKIT_EXTERN NSString *const MJRefreshKeyPathPanState; + +UIKIT_EXTERN NSString *const MJRefreshHeaderLastUpdatedTimeKey; + +UIKIT_EXTERN NSString *const MJRefreshHeaderIdleText; +UIKIT_EXTERN NSString *const MJRefreshHeaderPullingText; +UIKIT_EXTERN NSString *const MJRefreshHeaderRefreshingText; + +UIKIT_EXTERN NSString *const MJRefreshAutoFooterIdleText; +UIKIT_EXTERN NSString *const MJRefreshAutoFooterRefreshingText; +UIKIT_EXTERN NSString *const MJRefreshAutoFooterNoMoreDataText; + +UIKIT_EXTERN NSString *const MJRefreshBackFooterIdleText; +UIKIT_EXTERN NSString *const MJRefreshBackFooterPullingText; +UIKIT_EXTERN NSString *const MJRefreshBackFooterRefreshingText; +UIKIT_EXTERN NSString *const MJRefreshBackFooterNoMoreDataText; + +// 状态检查 +#define MJRefreshCheckState \ +MJRefreshState oldState = self.state; \ +if (state == oldState) return; \ +[super setState:state]; diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshFooter.h b/frameworks/MJRefresh.framework/Headers/MJRefreshFooter.h new file mode 100755 index 0000000..e25628f --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshFooter.h @@ -0,0 +1,30 @@ +// 代码地址: https://github.com/CoderMJLee/MJRefresh +// 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 +// MJRefreshFooter.h +// MJRefreshExample +// +// Created by MJ Lee on 15/3/5. +// Copyright (c) 2015年 小码哥. All rights reserved. +// 上拉刷新控件 + +#import "MJRefreshComponent.h" + +@interface MJRefreshFooter : MJRefreshComponent +/** 创建footer */ ++ (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; +/** 创建footer */ ++ (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; + +/** 提示没有更多的数据 */ +- (void)endRefreshingWithNoMoreData; +- (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData"); + +/** 重置没有更多的数据(消除没有更多数据的状态) */ +- (void)resetNoMoreData; + +/** 忽略多少scrollView的contentInset的bottom */ +@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom; + +/** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏) */ +@property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshGifHeader.h b/frameworks/MJRefresh.framework/Headers/MJRefreshGifHeader.h new file mode 100755 index 0000000..560c847 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshGifHeader.h @@ -0,0 +1,15 @@ +// +// MJRefreshGifHeader.h +// MJRefreshExample +// +// Created by MJ Lee on 15/4/24. +// Copyright (c) 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshStateHeader.h" + +@interface MJRefreshGifHeader : MJRefreshStateHeader +/** 设置state状态下的动画图片images 动画持续时间duration*/ +- (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; +- (void)setImages:(NSArray *)images forState:(MJRefreshState)state; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshHeader.h b/frameworks/MJRefresh.framework/Headers/MJRefreshHeader.h new file mode 100755 index 0000000..0816024 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshHeader.h @@ -0,0 +1,25 @@ +// 代码地址: https://github.com/CoderMJLee/MJRefresh +// 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 +// MJRefreshHeader.h +// MJRefreshExample +// +// Created by MJ Lee on 15/3/4. +// Copyright (c) 2015年 小码哥. All rights reserved. +// 下拉刷新控件:负责监控用户下拉的状态 + +#import "MJRefreshComponent.h" + +@interface MJRefreshHeader : MJRefreshComponent +/** 创建header */ ++ (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; +/** 创建header */ ++ (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; + +/** 这个key用来存储上一次下拉刷新成功的时间 */ +@property (copy, nonatomic) NSString *lastUpdatedTimeKey; +/** 上一次下拉刷新成功的时间 */ +@property (strong, nonatomic, readonly) NSDate *lastUpdatedTime; + +/** 忽略多少scrollView的contentInset的top */ +@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshNormalHeader.h b/frameworks/MJRefresh.framework/Headers/MJRefreshNormalHeader.h new file mode 100755 index 0000000..547d05e --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshNormalHeader.h @@ -0,0 +1,15 @@ +// +// MJRefreshNormalHeader.h +// MJRefreshExample +// +// Created by MJ Lee on 15/4/24. +// Copyright (c) 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshStateHeader.h" + +@interface MJRefreshNormalHeader : MJRefreshStateHeader +@property (weak, nonatomic, readonly) UIImageView *arrowView; +/** 菊花的样式 */ +@property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; +@end diff --git a/frameworks/MJRefresh.framework/Headers/MJRefreshStateHeader.h b/frameworks/MJRefresh.framework/Headers/MJRefreshStateHeader.h new file mode 100755 index 0000000..5909532 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/MJRefreshStateHeader.h @@ -0,0 +1,23 @@ +// +// MJRefreshStateHeader.h +// MJRefreshExample +// +// Created by MJ Lee on 15/4/24. +// Copyright (c) 2015年 小码哥. All rights reserved. +// + +#import "MJRefreshHeader.h" + +@interface MJRefreshStateHeader : MJRefreshHeader +#pragma mark - 刷新时间相关 +/** 利用这个block来决定显示的更新时间文字 */ +@property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime); +/** 显示上一次刷新时间的label */ +@property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel; + +#pragma mark - 状态相关 +/** 显示刷新状态的label */ +@property (weak, nonatomic, readonly) UILabel *stateLabel; +/** 设置state状态下的文字 */ +- (void)setTitle:(NSString *)title forState:(MJRefreshState)state; +@end diff --git a/frameworks/MJRefresh.framework/Headers/UIScrollView+MJExtension.h b/frameworks/MJRefresh.framework/Headers/UIScrollView+MJExtension.h new file mode 100755 index 0000000..734110f --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/UIScrollView+MJExtension.h @@ -0,0 +1,23 @@ +// 代码地址: https://github.com/CoderMJLee/MJRefresh +// 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 +// UIScrollView+Extension.h +// MJRefreshExample +// +// Created by MJ Lee on 14-5-28. +// Copyright (c) 2014年 小码哥. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface UIScrollView (MJExtension) +@property (assign, nonatomic) CGFloat mj_insetT; +@property (assign, nonatomic) CGFloat mj_insetB; +@property (assign, nonatomic) CGFloat mj_insetL; +@property (assign, nonatomic) CGFloat mj_insetR; + +@property (assign, nonatomic) CGFloat mj_offsetX; +@property (assign, nonatomic) CGFloat mj_offsetY; + +@property (assign, nonatomic) CGFloat mj_contentW; +@property (assign, nonatomic) CGFloat mj_contentH; +@end diff --git a/frameworks/MJRefresh.framework/Headers/UIScrollView+MJRefresh.h b/frameworks/MJRefresh.framework/Headers/UIScrollView+MJRefresh.h new file mode 100755 index 0000000..9f6dc53 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/UIScrollView+MJRefresh.h @@ -0,0 +1,23 @@ +// 代码地址: https://github.com/CoderMJLee/MJRefresh +// 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 +// UIScrollView+MJRefresh.h +// MJRefreshExample +// +// Created by MJ Lee on 15/3/4. +// Copyright (c) 2015年 小码哥. All rights reserved. +// 给ScrollView增加下拉刷新、上拉刷新的功能 + +#import <UIKit/UIKit.h> + +@class MJRefreshHeader, MJRefreshFooter; + +@interface UIScrollView (MJRefresh) +/** 下拉刷新控件 */ +@property (strong, nonatomic) MJRefreshHeader *header; +/** 上拉刷新控件 */ +@property (strong, nonatomic) MJRefreshFooter *footer; + +#pragma mark - other +- (NSInteger)totalDataCount; +@property (copy, nonatomic) void (^reloadDataBlock)(NSInteger totalDataCount); +@end diff --git a/frameworks/MJRefresh.framework/Headers/UIView+MJExtension.h b/frameworks/MJRefresh.framework/Headers/UIView+MJExtension.h new file mode 100755 index 0000000..7fde7c1 --- /dev/null +++ b/frameworks/MJRefresh.framework/Headers/UIView+MJExtension.h @@ -0,0 +1,19 @@ +// 代码地址: https://github.com/CoderMJLee/MJRefresh +// 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 +// UIView+Extension.h +// MJRefreshExample +// +// Created by MJ Lee on 14-5-28. +// Copyright (c) 2014年 小码哥. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface UIView (MJExtension) +@property (assign, nonatomic) CGFloat mj_x; +@property (assign, nonatomic) CGFloat mj_y; +@property (assign, nonatomic) CGFloat mj_w; +@property (assign, nonatomic) CGFloat mj_h; +@property (assign, nonatomic) CGSize mj_size; +@property (assign, nonatomic) CGPoint mj_origin; +@end diff --git a/frameworks/MJRefresh.framework/Info.plist b/frameworks/MJRefresh.framework/Info.plist new file mode 100644 index 0000000..c3cdba3 --- /dev/null +++ b/frameworks/MJRefresh.framework/Info.plist Binary files differ diff --git a/frameworks/MJRefresh.framework/MJRefresh b/frameworks/MJRefresh.framework/MJRefresh new file mode 100644 index 0000000..a32793c --- /dev/null +++ b/frameworks/MJRefresh.framework/MJRefresh Binary files differ diff --git a/frameworks/MJRefresh.framework/Modules/module.modulemap b/frameworks/MJRefresh.framework/Modules/module.modulemap new file mode 100644 index 0000000..4a501b8 --- /dev/null +++ b/frameworks/MJRefresh.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module MJRefresh { + umbrella header "MJRefresh.h" + + export * + module * { export * } +} diff --git a/frameworks/MJRefresh.framework/_CodeSignature/CodeDirectory b/frameworks/MJRefresh.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..7e65732 --- /dev/null +++ b/frameworks/MJRefresh.framework/_CodeSignature/CodeDirectory Binary files differ diff --git a/frameworks/MJRefresh.framework/_CodeSignature/CodeRequirements b/frameworks/MJRefresh.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..c76e813 --- /dev/null +++ b/frameworks/MJRefresh.framework/_CodeSignature/CodeRequirements Binary files differ diff --git a/frameworks/MJRefresh.framework/_CodeSignature/CodeResources b/frameworks/MJRefresh.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..1d2ab6c --- /dev/null +++ b/frameworks/MJRefresh.framework/_CodeSignature/CodeResources @@ -0,0 +1,271 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict> + <key>Headers/MJRefresh.h</key> + <data> + hsVYQiz8loKQq7sz/4SUogl6IAk= + </data> + <key>Headers/MJRefreshAutoFooter.h</key> + <data> + 6CgGCZCs5YWh9Vq5kgphr2LfRs8= + </data> + <key>Headers/MJRefreshAutoGifFooter.h</key> + <data> + FUIzOm9mNRbnO+Uf/I7/E0fWuUI= + </data> + <key>Headers/MJRefreshAutoNormalFooter.h</key> + <data> + M/mV734XKxJlLUqo4DFGk7Dn6Ys= + </data> + <key>Headers/MJRefreshAutoStateFooter.h</key> + <data> + uGzWf3OoGGLWN8ZjYJTivu5kJ00= + </data> + <key>Headers/MJRefreshBackFooter.h</key> + <data> + vahmOBJb7RedOjuseFg1U0wbZGI= + </data> + <key>Headers/MJRefreshBackGifFooter.h</key> + <data> + +Y64GcEW6kbwWrttItd0rDy9jbw= + </data> + <key>Headers/MJRefreshBackNormalFooter.h</key> + <data> + l7SlQ9m7iZ+Pd/jx7ZBpmwst2Og= + </data> + <key>Headers/MJRefreshBackStateFooter.h</key> + <data> + o8tWkXyJ3jTqgKfXrt6+0Im2b3Y= + </data> + <key>Headers/MJRefreshComponent.h</key> + <data> + HT5bOvQh5V/j+RFok5ZqZqCfd3s= + </data> + <key>Headers/MJRefreshConst.h</key> + <data> + 89DFUmKlK9qVssCHngD0JXHH8Yk= + </data> + <key>Headers/MJRefreshFooter.h</key> + <data> + 8vGYPrw7nDfFbC9g5RNU7zTHNLE= + </data> + <key>Headers/MJRefreshGifHeader.h</key> + <data> + 2C00r1fJcLuTM0YOkIqq2aMg9rI= + </data> + <key>Headers/MJRefreshHeader.h</key> + <data> + BCRQ0f1Hf3p1CN9Qw2Nl6j8kI+E= + </data> + <key>Headers/MJRefreshNormalHeader.h</key> + <data> + sm6wAMfc48sdNYLwZ7X1rctMyFI= + </data> + <key>Headers/MJRefreshStateHeader.h</key> + <data> + 1PUfIPsuvLTNWvOAcSfmqeVH9lI= + </data> + <key>Headers/UIScrollView+MJExtension.h</key> + <data> + oTZ4DL4dmPslq2OehJsgeJIVt64= + </data> + <key>Headers/UIScrollView+MJRefresh.h</key> + <data> + rb/7tuZzKdp3ibkHi2ZUpmi9Pdg= + </data> + <key>Headers/UIView+MJExtension.h</key> + <data> + lRqeMEN7MCSmwB9i065HF5L/zvU= + </data> + <key>Info.plist</key> + <data> + UaBGddOm/KbDcCETFTFAuanZbUU= + </data> + <key>Modules/module.modulemap</key> + <data> + SOzT3U2wHkzCJ+1z/jqxp1ftKMA= + </data> + </dict> + <key>files2</key> + <dict> + <key>Headers/MJRefresh.h</key> + <data> + hsVYQiz8loKQq7sz/4SUogl6IAk= + </data> + <key>Headers/MJRefreshAutoFooter.h</key> + <data> + 6CgGCZCs5YWh9Vq5kgphr2LfRs8= + </data> + <key>Headers/MJRefreshAutoGifFooter.h</key> + <data> + FUIzOm9mNRbnO+Uf/I7/E0fWuUI= + </data> + <key>Headers/MJRefreshAutoNormalFooter.h</key> + <data> + M/mV734XKxJlLUqo4DFGk7Dn6Ys= + </data> + <key>Headers/MJRefreshAutoStateFooter.h</key> + <data> + uGzWf3OoGGLWN8ZjYJTivu5kJ00= + </data> + <key>Headers/MJRefreshBackFooter.h</key> + <data> + vahmOBJb7RedOjuseFg1U0wbZGI= + </data> + <key>Headers/MJRefreshBackGifFooter.h</key> + <data> + +Y64GcEW6kbwWrttItd0rDy9jbw= + </data> + <key>Headers/MJRefreshBackNormalFooter.h</key> + <data> + l7SlQ9m7iZ+Pd/jx7ZBpmwst2Og= + </data> + <key>Headers/MJRefreshBackStateFooter.h</key> + <data> + o8tWkXyJ3jTqgKfXrt6+0Im2b3Y= + </data> + <key>Headers/MJRefreshComponent.h</key> + <data> + HT5bOvQh5V/j+RFok5ZqZqCfd3s= + </data> + <key>Headers/MJRefreshConst.h</key> + <data> + 89DFUmKlK9qVssCHngD0JXHH8Yk= + </data> + <key>Headers/MJRefreshFooter.h</key> + <data> + 8vGYPrw7nDfFbC9g5RNU7zTHNLE= + </data> + <key>Headers/MJRefreshGifHeader.h</key> + <data> + 2C00r1fJcLuTM0YOkIqq2aMg9rI= + </data> + <key>Headers/MJRefreshHeader.h</key> + <data> + BCRQ0f1Hf3p1CN9Qw2Nl6j8kI+E= + </data> + <key>Headers/MJRefreshNormalHeader.h</key> + <data> + sm6wAMfc48sdNYLwZ7X1rctMyFI= + </data> + <key>Headers/MJRefreshStateHeader.h</key> + <data> + 1PUfIPsuvLTNWvOAcSfmqeVH9lI= + </data> + <key>Headers/UIScrollView+MJExtension.h</key> + <data> + oTZ4DL4dmPslq2OehJsgeJIVt64= + </data> + <key>Headers/UIScrollView+MJRefresh.h</key> + <data> + rb/7tuZzKdp3ibkHi2ZUpmi9Pdg= + </data> + <key>Headers/UIView+MJExtension.h</key> + <data> + lRqeMEN7MCSmwB9i065HF5L/zvU= + </data> + <key>Modules/module.modulemap</key> + <data> + SOzT3U2wHkzCJ+1z/jqxp1ftKMA= + </data> + </dict> + <key>rules</key> + <dict> + <key>^</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/frameworks/MJRefresh.framework/_CodeSignature/CodeSignature b/frameworks/MJRefresh.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..da6750a --- /dev/null +++ b/frameworks/MJRefresh.framework/_CodeSignature/CodeSignature Binary files differ diff --git a/frameworks/Toast.framework/Headers/Toast.h b/frameworks/Toast.framework/Headers/Toast.h new file mode 100644 index 0000000..396bc5a --- /dev/null +++ b/frameworks/Toast.framework/Headers/Toast.h @@ -0,0 +1,20 @@ +// +// Toast.h +// Toast +// +// Created by wuyx on 16/4/11. +// Copyright © 2016年 GHW. All rights reserved. +// + +#import <UIKit/UIKit.h> + +//! Project version number for Toast. +FOUNDATION_EXPORT double ToastVersionNumber; + +//! Project version string for Toast. +FOUNDATION_EXPORT const unsigned char ToastVersionString[]; + +#import <Toast/Toast.h> +#import <Toast/UIView+Toast.h> + + diff --git a/frameworks/Toast.framework/Headers/UIView+Toast.h b/frameworks/Toast.framework/Headers/UIView+Toast.h new file mode 100755 index 0000000..f518b13 --- /dev/null +++ b/frameworks/Toast.framework/Headers/UIView+Toast.h @@ -0,0 +1,406 @@ +// +// UIView+Toast.h +// Toast +// +// Copyright (c) 2011-2015 Charles Scalesse. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import <UIKit/UIKit.h> + +extern const NSString * CSToastPositionTop; +extern const NSString * CSToastPositionCenter; +extern const NSString * CSToastPositionBottom; + +@class CSToastStyle; + +/** + Toast is an Objective-C category that adds toast notifications to the UIView + object class. It is intended to be simple, lightweight, and easy to use. Most + toast notifications can be triggered with a single line of code. + + The `makeToast:` methods create a new view and then display it as toast. + + The `showToast:` methods display any view as toast. + + */ +@interface UIView (Toast) + +/** + Creates and presents a new toast view with a message and displays it with the + default duration and position. Styled using the shared style. + + @param message The message to be displayed + */ +- (void)makeToast:(NSString *)message; + +/** + Creates and presents a new toast view with a message. Duration and position + can be set explicitly. Styled using the shared style. + + @param message The message to be displayed + @param duration The toast duration + @param position The toast's center point. Can be one of the predefined CSToastPosition + constants or a `CGPoint` wrapped in an `NSValue` object. + */ +- (void)makeToast:(NSString *)message + duration:(NSTimeInterval)duration + position:(id)position; + +/** + Creates and presents a new toast view with a message. Duration, position, and + style can be set explicitly. + + @param message The message to be displayed + @param duration The toast duration + @param position The toast's center point. Can be one of the predefined CSToastPosition + constants or a `CGPoint` wrapped in an `NSValue` object. + @param style The style. The shared style will be used when nil + */ +- (void)makeToast:(NSString *)message + duration:(NSTimeInterval)duration + position:(id)position + style:(CSToastStyle *)style; + +/** + Creates and presents a new toast view with a message, title, and image. Duration, + position, and style can be set explicitly. The completion block executes when the + toast view completes. `didTap` will be `YES` if the toast view was dismissed from + a tap. + + @param message The message to be displayed + @param duration The toast duration + @param position The toast's center point. Can be one of the predefined CSToastPosition + constants or a `CGPoint` wrapped in an `NSValue` object. + @param title The title + @param image The image + @param style The style. The shared style will be used when nil + @param completion The completion block, executed after the toast view disappears. + didTap will be `YES` if the toast view was dismissed from a tap. + */ +- (void)makeToast:(NSString *)message + duration:(NSTimeInterval)duration + position:(id)position + title:(NSString *)title + image:(UIImage *)image + style:(CSToastStyle *)style + completion:(void(^)(BOOL didTap))completion; + +/** + Creates a new toast view with any combination of message, title, and image. + The look and feel is configured via the style. Unlike the `makeToast:` methods, + this method does not present the toast view automatically. One of the showToast: + methods must be used to present the resulting view. + + @warning if message, title, and image are all nil, this method will return nil. + + @param message The message to be displayed + @param title The title + @param image The image + @param style The style. The shared style will be used when nil + @return The newly created toast view + */ +- (UIView *)toastViewForMessage:(NSString *)message + title:(NSString *)title + image:(UIImage *)image + style:(CSToastStyle *)style; + +/** + Creates and displays a new toast activity indicator view at a specified position. + + @warning Only one toast activity indicator view can be presented per superview. Subsequent + calls to `makeToastActivity:` will be ignored until hideToastActivity is called. + + @warning `makeToastActivity:` works independently of the showToast: methods. Toast activity + views can be presented and dismissed while toast views are being displayed. `makeToastActivity:` + has no effect on the queueing behavior of the showToast: methods. + + @param position The toast's center point. Can be one of the predefined CSToastPosition + constants or a `CGPoint` wrapped in an `NSValue` object. + */ +- (void)makeToastActivity:(id)position; + +/** + Dismisses the active toast activity indicator view. + */ +- (void)hideToastActivity; + +/** + Displays any view as toast using the default duration and position. + + @param toast The view to be displayed as toast + */ +- (void)showToast:(UIView *)toast; + +/** + Displays any view as toast at a provided position and duration. The completion block + executes when the toast view completes. `didTap` will be `YES` if the toast view was + dismissed from a tap. + + @param toast The view to be displayed as toast + @param duration The notification duration + @param position The toast's center point. Can be one of the predefined CSToastPosition + constants or a `CGPoint` wrapped in an `NSValue` object. + @param completion The completion block, executed after the toast view disappears. + didTap will be `YES` if the toast view was dismissed from a tap. + */ +- (void)showToast:(UIView *)toast + duration:(NSTimeInterval)duration + position:(id)position + completion:(void(^)(BOOL didTap))completion; + +@end + +/** + `CSToastStyle` instances define the look and feel for toast views created via the + `makeToast:` methods as well for toast views created directly with + `toastViewForMessage:title:image:style:`. + + @warning `CSToastStyle` offers relatively simple styling options for the default + toast view. If you require a toast view with more complex UI, it probably makes more + sense to create your own custom UIView subclass and present it with the `showToast:` + methods. + */ +@interface CSToastStyle : NSObject + +/** + The background color. Default is `[UIColor blackColor]` at 80% opacity. + */ +@property (strong, nonatomic) UIColor *backgroundColor; + +/** + The title color. Default is `[UIColor whiteColor]`. + */ +@property (strong, nonatomic) UIColor *titleColor; + +/** + The message color. Default is `[UIColor whiteColor]`. + */ +@property (strong, nonatomic) UIColor *messageColor; + +/** + A percentage value from 0.0 to 1.0, representing the maximum width of the toast + view relative to it's superview. Default is 0.8 (80% of the superview's width). + */ +@property (assign, nonatomic) CGFloat maxWidthPercentage; + +/** + A percentage value from 0.0 to 1.0, representing the maximum height of the toast + view relative to it's superview. Default is 0.8 (80% of the superview's height). + */ +@property (assign, nonatomic) CGFloat maxHeightPercentage; + +/** + The spacing from the horizontal edge of the toast view to the content. When an image + is present, this is also used as the padding between the image and the text. + Default is 10.0. + */ +@property (assign, nonatomic) CGFloat horizontalPadding; + +/** + The spacing from the vertical edge of the toast view to the content. When a title + is present, this is also used as the padding between the title and the message. + Default is 10.0. + */ +@property (assign, nonatomic) CGFloat verticalPadding; + +/** + The corner radius. Default is 10.0. + */ +@property (assign, nonatomic) CGFloat cornerRadius; + +/** + The title font. Default is `[UIFont boldSystemFontOfSize:16.0]`. + */ +@property (strong, nonatomic) UIFont *titleFont; + +/** + The message font. Default is `[UIFont systemFontOfSize:16.0]`. + */ +@property (strong, nonatomic) UIFont *messageFont; + +/** + The title text alignment. Default is `NSTextAlignmentLeft`. + */ +@property (assign, nonatomic) NSTextAlignment titleAlignment; + +/** + The message text alignment. Default is `NSTextAlignmentLeft`. + */ +@property (assign, nonatomic) NSTextAlignment messageAlignment; + +/** + The maximum number of lines for the title. The default is 0 (no limit). + */ +@property (assign, nonatomic) NSInteger titleNumberOfLines; + +/** + The maximum number of lines for the message. The default is 0 (no limit). + */ +@property (assign, nonatomic) NSInteger messageNumberOfLines; + +/** + Enable or disable a shadow on the toast view. Default is `NO`. + */ +@property (assign, nonatomic) BOOL displayShadow; + +/** + The shadow color. Default is `[UIColor blackColor]`. + */ +@property (strong, nonatomic) UIColor *shadowColor; + +/** + A value from 0.0 to 1.0, representing the opacity of the shadow. + Default is 0.8 (80% opacity). + */ +@property (assign, nonatomic) CGFloat shadowOpacity; + +/** + The shadow radius. Default is 6.0. + */ +@property (assign, nonatomic) CGFloat shadowRadius; + +/** + The shadow offset. The default is `CGSizeMake(4.0, 4.0)`. + */ +@property (assign, nonatomic) CGSize shadowOffset; + +/** + The image size. The default is `CGSizeMake(80.0, 80.0)`. + */ +@property (assign, nonatomic) CGSize imageSize; + +/** + The size of the toast activity view when `makeToastActivity:` is called. + Default is `CGSizeMake(100.0, 100.0)`. + */ +@property (assign, nonatomic) CGSize activitySize; + +/** + The fade in/out animation duration. Default is 0.2. + */ +@property (assign, nonatomic) NSTimeInterval fadeDuration; + +/** + Creates a new instance of `CSToastStyle` with all the default values set. + */ +- (instancetype)initWithDefaultStyle NS_DESIGNATED_INITIALIZER; + +/** + @warning Only the designated initializer should be used to create + an instance of `CSToastStyle`. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +/** + `CSToastManager` provides general configuration options for all toast + notifications. Backed by a singleton instance. + */ +@interface CSToastManager : NSObject + +/** + Sets the shared style on the singleton. The shared style is used whenever + a `makeToast:` method (or `toastViewForMessage:title:image:style:`) is called + with with a nil style. By default, this is set to `CSToastStyle`'s default + style. + + @param sharedStyle + */ ++ (void)setSharedStyle:(CSToastStyle *)sharedStyle; + +/** + Gets the shared style from the singlton. By default, this is + `CSToastStyle`'s default style. + + @return the shared style + */ ++ (CSToastStyle *)sharedStyle; + +/** + Enables or disables tap to dismiss on toast views. Default is `YES`. + + @param allowTapToDismiss + */ ++ (void)setTapToDismissEnabled:(BOOL)tapToDismissEnabled; + +/** + Returns `YES` if tap to dismiss is enabled, otherwise `NO`. + Default is `YES`. + + @return BOOL + */ ++ (BOOL)isTapToDismissEnabled; + +/** + Enables or disables queueing behavior for toast views. When `YES`, + toast views will appear one after the other. When `NO`, multiple Toast + views will appear at the same time (potentially overlapping depending + on their positions). This has no effect on the toast activity view, + which operates independently of normal toast views. Default is `YES`. + + @param queueEnabled + */ ++ (void)setQueueEnabled:(BOOL)queueEnabled; + +/** + Returns `YES` if the queue is enabled, otherwise `NO`. + Default is `YES`. + + @return BOOL + */ ++ (BOOL)isQueueEnabled; + +/** + Sets the default duration. Used for the `makeToast:` and + `showToast:` methods that don't require an explicit duration. + Default is 3.0. + + @param duration The toast duration + */ ++ (void)setDefaultDuration:(NSTimeInterval)duration; + +/** + Returns the default duration. Default is 3.0. + + @return duration The toast duration +*/ ++ (NSTimeInterval)defaultDuration; + +/** + Sets the default position. Used for the `makeToast:` and + `showToast:` methods that don't require an explicit position. + Default is `CSToastPositionBottom`. + + @param position The default center point. Can be one of the predefined + CSToastPosition constants or a `CGPoint` wrapped in an `NSValue` object. + */ ++ (void)setDefaultPosition:(id)position; + +/** + Returns the default toast position. Default is `CSToastPositionBottom`. + + @return position The default center point. Will be one of the predefined + CSToastPosition constants or a `CGPoint` wrapped in an `NSValue` object. + */ ++ (id)defaultPosition; + +@end diff --git a/frameworks/Toast.framework/Info.plist b/frameworks/Toast.framework/Info.plist new file mode 100644 index 0000000..7b9a055 --- /dev/null +++ b/frameworks/Toast.framework/Info.plist Binary files differ diff --git a/frameworks/Toast.framework/Modules/module.modulemap b/frameworks/Toast.framework/Modules/module.modulemap new file mode 100644 index 0000000..50f64c0 --- /dev/null +++ b/frameworks/Toast.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module Toast { + umbrella header "Toast.h" + + export * + module * { export * } +} diff --git a/frameworks/Toast.framework/Toast b/frameworks/Toast.framework/Toast new file mode 100644 index 0000000..b93fb65 --- /dev/null +++ b/frameworks/Toast.framework/Toast Binary files differ diff --git a/frameworks/Toast.framework/_CodeSignature/CodeDirectory b/frameworks/Toast.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..f13b651 --- /dev/null +++ b/frameworks/Toast.framework/_CodeSignature/CodeDirectory Binary files differ diff --git a/frameworks/Toast.framework/_CodeSignature/CodeRequirements b/frameworks/Toast.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..c81ac99 --- /dev/null +++ b/frameworks/Toast.framework/_CodeSignature/CodeRequirements Binary files differ diff --git a/frameworks/Toast.framework/_CodeSignature/CodeResources b/frameworks/Toast.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..bd6e787 --- /dev/null +++ b/frameworks/Toast.framework/_CodeSignature/CodeResources @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict> + <key>Headers/Toast.h</key> + <data> + JVXOnFkKYAXbLNjb/oM0WEm0KDY= + </data> + <key>Headers/UIView+Toast.h</key> + <data> + INyhfKJbLwFbpTGdrfR/YN2MWYk= + </data> + <key>Info.plist</key> + <data> + v69Pi/93GuQFDH1tkCiov66e6fI= + </data> + <key>Modules/module.modulemap</key> + <data> + 4IJ9BO/t5SyAvlZ+EOWJFhr+WZg= + </data> + </dict> + <key>files2</key> + <dict> + <key>Headers/Toast.h</key> + <data> + JVXOnFkKYAXbLNjb/oM0WEm0KDY= + </data> + <key>Headers/UIView+Toast.h</key> + <data> + INyhfKJbLwFbpTGdrfR/YN2MWYk= + </data> + <key>Modules/module.modulemap</key> + <data> + 4IJ9BO/t5SyAvlZ+EOWJFhr+WZg= + </data> + </dict> + <key>rules</key> + <dict> + <key>^</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/frameworks/Toast.framework/_CodeSignature/CodeSignature b/frameworks/Toast.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..42e1c73 --- /dev/null +++ b/frameworks/Toast.framework/_CodeSignature/CodeSignature Binary files differ diff --git a/frameworks/WACommon.framework/Headers/LocalizedStringUtil.h b/frameworks/WACommon.framework/Headers/LocalizedStringUtil.h new file mode 100644 index 0000000..ec0c7f1 --- /dev/null +++ b/frameworks/WACommon.framework/Headers/LocalizedStringUtil.h @@ -0,0 +1,19 @@ +// +// LocalizedStringUtil.h +// WACommonUI +// +// Created by hank on 16/5/12. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// 多语言工具类 + +#import <Foundation/Foundation.h> + +@interface LocalizedStringUtil : NSObject + +/** 通过key获取多语言文本 */ ++ (NSString *)getLocalizedStringByKey:(NSString *)key value:(NSString *)value; + +@end + +#define WALocalizedString(key, comment) \ +[LocalizedStringUtil getLocalizedStringByKey:(key) value:(comment)] diff --git a/frameworks/WACommon.framework/Headers/WACommConstants.h b/frameworks/WACommon.framework/Headers/WACommConstants.h new file mode 100644 index 0000000..7bb80ea --- /dev/null +++ b/frameworks/WACommon.framework/Headers/WACommConstants.h @@ -0,0 +1,240 @@ +// +// GHWConstants.h +// WASDK +// +// Created by GHW-T-01 on 15/5/21. +// Copyright (c) 2015年 Wuyx. All rights reserved. +// + +#import <Foundation/Foundation.h> + +#ifndef WASDK_GHWConstants_h +#define WASDK_GHWConstants_h + + + + +extern NSString *const WASDK_FLOW_TYPE_DEFAULT; +extern NSString *const WASDK_FLOW_TYPE_REBIND; + +extern NSString *const WASDK_PARAM_KEY_SDK_VER; +extern NSString *const WASDK_PARAM_KEY_SDK_ID; +extern NSString *const WASDK_PARAM_KEY_PATCH_ID; +extern NSString *const WASDK_PARAM_KEY_PATCH_VER; +extern NSString *const WASDK_PARAM_KEY_USER_ID; +extern NSString *const WASDK_PARAM_KEY_PUSER_ID; +extern NSString *const WASDK_PARAM_KEY_PUSER_ID_LOWER; +extern NSString *const WASDK_PARAM_KEY_PUSER_IDS; +extern NSString *const WASDK_PARAM_KEY_GAMEUSER_ID; +extern NSString *const WASDK_PARAM_KEY_SERVER_ID; +extern NSString *const WASDK_PARAM_KEY_OS; +extern NSString *const WASDK_PARAM_KEY_OS_VERSION; +extern NSString *const WASDK_PARAM_KEY_MOBILE_MODEL; +extern NSString *const WASDK_PARAM_KEY_MODEL; +extern NSString *const WASDK_PARAM_KEY_LANGUAGE; +extern NSString *const WASDK_PARAM_KEY_CARRIER; +extern NSString *const WASDK_PARAM_KEY_WIFI; +extern NSString *const WASDK_PARAM_KEY_MAC; +extern NSString *const WASDK_PARAM_KEY_PACKAGE_ID; +extern NSString *const WASDK_PARAM_KEY_PACKAGE_VER_NAME; +extern NSString *const WASDK_PARAM_KEY_PACKAGE_VER_CODE; +extern NSString *const WASDK_PARAM_KEY_CRASH_TIME_STAMP; +extern NSString *const WASDK_PARAM_KEY_EXCEPTION_INFO; +extern NSString *const WASDK_PARAM_KEY_PLATFORM; +extern NSString *const WASDK_PARAM_KEY_ACCESSTOKEN; +extern NSString *const WASDK_PARAM_KEY_WASDK_TOKEN; +extern NSString *const WASDK_PARAM_KEY_OTS; +extern NSString *const WASDK_PARAM_KEY_IDFA; +extern NSString *const WASDK_PARAM_KEY_IDFV; +extern NSString *const WASDK_PARAM_KEY_CLIENT_ID; +extern NSString *const WASDK_PARAM_KEY_APP_ID; +extern NSString *const WASDK_PARAM_KEY_APP_KEY; +extern NSString *const WASDK_PARAM_KEY_APP_VER; +extern NSString *const WASDK_PARAM_KEY_PUBLISH_CHANNEL; +extern NSString *const WASDK_PARAM_KEY_DEVICE_TYPE; +extern NSString *const WASDK_PARAM_KEY_DEVICE_BRAND; +extern NSString *const WASDK_PARAM_KEY_DEVICE_NAME; +extern NSString *const WASDK_PARAM_KEY_PAGE_NO; +extern NSString *const WASDK_PARAM_KEY_PAGE_SIZE; +extern NSString *const WASDK_PARAM_KEY_CHANNEL; +extern NSString *const WASDK_PARAM_KEY_BIND_TYPE; +extern NSString *const WASDK_PARAM_KEY_TRX_ID; +extern NSString *const WASDK_PARAM_KEY_ORDER_ID; +extern NSString *const WASDK_PARAM_KEY_ORDER_IDS; +extern NSString *const WASDK_PARAM_KEY_ORDER_ID_LIST; +extern NSString *const WASDK_PARAM_KEY_ORDER_DICTIONARY; +extern NSString *const WASDK_PARAM_KEY_TRX_TOKEN; +extern NSString *const WASDK_PARAM_KEY_STATUS; +extern NSString *const WASDK_PARAM_KEY_PAY_AMOUNT_MICROS; +extern NSString *const WASDK_PARAM_KEY_OSIGN; +extern NSString *const WASDK_PARAM_KEY_CURRENCY_CODE; +extern NSString *const WASDK_PARAM_KEY_EXT_INFO; +extern NSString *const WASDK_PARAM_KEY_COLLECTION_INFO; +extern NSString *const WASDK_PARAM_KEY_ORDER_AMOUNT_MICROS; +extern NSString *const WASDK_PARAM_KEY_PRODUCT_ID; +extern NSString *const WASDK_PARAM_KEY_PRODUCT_NAME; +extern NSString *const WASDK_PARAM_KEY_IAP_URL_PRO_LIST; +extern NSString *const WASDK_PARAM_KEY_IAP_URL_CREATE_ORDER; +extern NSString *const WASDK_PARAM_KEY_IAP_URL_NOTIFY_SERVER; +extern NSString *const WASDK_PARAM_KEY_SEND_SEQ; + +extern NSString *const WASDK_PARAM_KEY_QUERY_TYPE; +extern NSString *const WASDK_PARAM_KEY_IS_REPORTDATA; + +extern NSString *const WASDK_PARAM_KEY_PRODUCT_LIST; +extern NSString *const WASDK_PARAM_KEY_GAME_CURRENCY_AMOUNT; +extern NSString *const WASDK_PARAM_KEY_PAY_CHANNEL; +extern NSString *const WASDK_PARAM_KEY_CHANNEL_PRODUCT_ID; +extern NSString *const WASDK_PARAM_KEY_ID; +extern NSString *const WASDK_PARAM_KEY_NAME; +extern NSString *const WASDK_PARAM_KEY_METHOD; +extern NSString *const WASDK_PARAM_KEY_LOGO_URL; + +//关于Facebook邀请 +extern NSString *const WASDK_PARAM_KEY_INVITER; +extern NSString *const WASDK_PARAM_KEY_INVITER_SERVERID; +extern NSString *const WASDK_PARAM_KEY_INVITEE; +extern NSString *const WASDK_PARAM_KEY_INVITEE_SERVERID; +extern NSString *const WASDK_PARAM_KEY_INVITEE_GAMEUSERID; +extern NSString *const WASDK_PARAM_KEY_INVITEE_USERID; +extern NSString *const WASDK_PARAM_KEY_INVITE_IDS; +extern NSString *const WASDK_PARAM_KEY_FB_INVITE_REWARD_EVENTNAME; +extern NSString *const WASDK_PARAM_KEY_FB_INVITE_REQUESTID; +extern NSString *const WASDK_PARAM_KEY_FB_INVITE_INVITEEIDS; + +extern NSString *const WASDK_PARAM_KEY_INSTALL_APP_ID; +extern NSString *const WASDK_PARAM_KEY_DEEP_LINK_TYPE; +extern NSString *const WASDK_PARAM_KEY_FB_DEEPLINK; + +extern NSString *const WASDK_RESULT_KEY_IAP_PRODUCT_IDS; +extern NSString *const WASDK_RESULT_KEY_IAP_ORDER_ID; +extern NSString *const WASDK_RESULT_KEY_IAP_CODE; +extern NSString *const WASDK_RESULT_KEY_IAP_DEF_AMT_MCR; +extern NSString *const WASDK_RESULT_KEY_IAP_DEF_CCY; +extern NSString *const WASDK_RESULT_KEY_IAP_VCA; +extern NSString *const WASDK_RESULT_KEY_IAP_VCCY; + +//热更新 +extern NSString *const WASDK_HOT_UPDATE_KEY_PATCH_VERSION; +extern NSString *const WASDK_HOT_UPDATE_KEY_SDK_ID; +extern NSString *const WASDK_HOT_UPDATE_KEY_SDK_VERSION; +extern NSString *const WASDK_HOT_UPDATE_KEY_APP_ID; +extern NSString *const WASDK_HOT_UPDATE_KEY_PUBLIST_APP_ID; +extern NSString *const WASDK_HOT_UPDATE_KEY_PUBLIST_APP_VER; +extern NSString *const WASDK_HOT_UPDATE_KEY_PLATFORM_ID; +extern NSString *const WASDK_HOT_UPDATE_KEY_CLIENT_OS; +extern NSString *const WASDK_HOT_UPDATE_KEY_CLIENT_OS_VERSION; +extern NSString *const WASDK_HOT_UPDATE_KEY_CLIENT_MODEL; +extern NSString *const WASDK_HOT_UPDATE_KEY_DEVICE_ID; +extern NSString *const WASDK_HOT_UPDATE_KEY_CLIENT_ID; +extern NSString *const WASDK_HOT_UPDATE_KEY_OTS; +extern NSString *const WASDK_HOT_UPDATE_KEY_USER_ID; +extern NSString *const WASDK_HOT_UPDATE_KEY_PATCH_ID; +extern NSString *const WASDK_HOT_UPDATE_KEY_PROGRESS; +extern NSString *const WASDK_HOT_UPDATE_KEY_STATUS; + + + +//匿名登录时 从sdk后台获取的token 和 userid +extern NSString *const WASDK_GUEST_LOGIN_TOKEN; +extern NSString *const WASDK_GUEST_LOGIN_USERID; +extern NSString *const WASDK_GUEST_LOGIN_TOKEN_CACHE; +extern NSString *const WASDK_GUEST_LOGIN_USERID_CACHE; + +//绑定账号 preUserId prePlatform +extern NSString *const WASDK_ACOUNT_BINDING_PREUSERID; +extern NSString *const WASDK_ACOUNT_BINDING_PREPLATFORM; + + +extern NSString *const WASDK_IAP_URL_PROLIST; +extern NSString *const WASDK_IAP_URL_NOTIFY_SERVER; +extern NSString *const WASDK_IAP_URL_CREATE_ORDER; +extern NSString *const WASDK_REFRESH_TOKEN; +extern NSString *const WASDK_LOGIN_WAY; +extern NSString *const WASDK_ONE_CLICK_SIGIN; +extern NSString *const WASDK_ACCOUNT_BINDING; +extern NSString *const WASDK_ACCOUNT_CREATE; +extern NSString *const WASDK_BINDING_LIST; +extern NSString *const WASDK_BINDING_DISBIND; +extern NSString *const WASDK_PLATFORM_CONFIG; +extern NSString *const WASDK_FB_INVITE_CREATE; +extern NSString *const WASDK_FB_INVITE_REWARD; +extern NSString *const WASDK_FB_INVITE_INSTALL; +//获取补丁更新信息接口 +extern NSString *const WASDK_PATCH_UPDATE_CHECK; +//补丁下载接口 +extern NSString *const WASDK_PATCH_DOWNLOAD; +//更新补丁回调接口 +extern NSString *const WASDK_PATCH_UPDATE_CALLBACK; +extern NSString *const WASDK_APP_WALL; + +//闪退日志收集接口 +extern NSString *const WASDK_CRASH_REPORT; + +//数据收集接口 +extern NSString *const WASDK_DATA_COLLECTION_URL; + +extern NSString *const WASDK_APP_WALL_TRACKING; +extern NSString *const WASDK_APP_WALL_FIRST_LAUNCH; + +extern NSString *const WASDK_USER_LIST; + +// 获取客户端未统计上报的订单列表 +extern NSString *const WASDK_ORDER_LIST; +// 更新订单的客户端统计上报状态 +extern NSString *const WASDK_CLT_STATUS_DONE; + +// 获取产品及支付方式列表 +extern NSString *const WASDK_PAY_URL_PRODUCTS; +// 提交web支付 +extern NSString *const WASDK_PAY_URL_DO_PAY; +// web支付成功 +extern NSString *const WASDK_PAY_URL_SUCCESS; +// web支付失败 +extern NSString *const WASDK_PAY_URL_FAILURE; +// web支付取消 +extern NSString *const WASDK_PAY_URL_CANCEL; + +// 手机号/帐号登录接口 +extern NSString *const WASDK_LOGIN_URL_SIGN_IN; +// 手机号注册接口 +extern NSString *const WASDK_LOGIN_URL_SIGN_UP; +// 发送验证码接口 +extern NSString *const WASDK_LOGIN_URL_SEND_VALIDATE_CODE; +// 验证验证码接口 +extern NSString *const WASDK_LOGIN_URL_VALIDATE_CODE; +// 更新密码接口 +extern NSString *const WASDK_LOGIN_URL_UPDATE_PWD; +// 游客/帐号绑定手机 +extern NSString *const WASDK_LOGIN_URL_BIND_MOBILE; +// 免密码登录接口 +extern NSString *const WASDK_LOGIN_URL_FAST_LOGIN; + +extern NSString *const WASDK_FB_INVITE_FROM_USERID; +extern NSString *const WASDK_FB_INVITE_TO_USERID; +extern NSString *const WASDK_FB_INVITE_SERVERID; +extern NSString *const WASDK_FB_INVITE_ACTIONTYPE; +extern NSString *const WASDK_FB_INVITE_GS_INVITE; +extern NSString *const WASDK_FB_INVITE_APPID; + +extern const int WASDK_VALUE_KEY_STATUS_SUCCESS;//回传给客户端的代码值,表示支付成功 +extern const int WASDK_VALUE_KEY_STATUS_FAILED;//回传给客户端的代码值,表示支付失败 +extern const int WASDK_VALUE_KEY_STATUS_PURCHASE_CANCELED;//回传给客户端的代码值,表示支付取消 +extern const int WASDK_VALUE_KEY_STATUS_PURCHASE_SUCCESS_WITHOUT_REPORT;//回传给客户端的代码值 表示支付成功但是没有上报或者上报失败了 +extern const int WASDK_VALUE_KEY_STATUS_PURCHASE_UNCONSUME;//商品未消耗 +extern const int WASDK_VALUE_KEY_STATUS_CREATE_ORDER_FAILED;//创建订单失败 + +extern const int WASDK_VALUE_KEY_STATUS_VAILD_FAIL;//后台验证失败表示验证失败 +extern NSString *const WASDK_VALUE_KEY_STATUS_NOTIFY_FAIL; + + +extern NSString *const WASDK_STATUS_UNKNOWN; +extern NSString *const WASDK_STATUS_UNKNOWN_1; + +extern NSString *const WASDK_CACHE_KEY_FB_APP_SECRET; + +@interface WACommConstants : NSObject { + +} +#endif +@end diff --git a/frameworks/WACommon.framework/Headers/WACommon.h b/frameworks/WACommon.framework/Headers/WACommon.h new file mode 100644 index 0000000..64e9086 --- /dev/null +++ b/frameworks/WACommon.framework/Headers/WACommon.h @@ -0,0 +1,24 @@ +// +// WACommon.h +// WACommon +// +// Created by GHW-T-01 on 16/3/7. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <UIKit/UIKit.h> + +//! Project version number for WACommon. +FOUNDATION_EXPORT double WACommonVersionNumber; + +//! Project version string for WACommon. +FOUNDATION_EXPORT const unsigned char WACommonVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import <WACommon/PublicHeader.h> +#import <WACommon/WACommConstants.h> +#import <WACommon/WAHelper.h> +#import <WACommon/WAHttpHelper.h> +#import <WACommon/LocalizedStringUtil.h> + +//time:2016/11/29 15:30 + diff --git a/frameworks/WACommon.framework/Headers/WAHelper.h b/frameworks/WACommon.framework/Headers/WAHelper.h new file mode 100644 index 0000000..3a2cb29 --- /dev/null +++ b/frameworks/WACommon.framework/Headers/WAHelper.h @@ -0,0 +1,61 @@ +// +// GHWHelper.h +// GHWSdk +// +// Created by GHW-T-01 on 15/5/21. +// Copyright (c) 2015年 Wuyx. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <UIKit/UIKit.h> + + +@interface WAHelper : NSObject ++ (NSString *)getMd5_32Bit_String:(NSString *)srcString; ++ (NSString *)file_md5:(NSString*) path; ++ (NSString*)getOts; ++ (id)toArrayOrNSDictionary:(NSString *)jsonString; ++ (void)setClientId:(NSString*)clientId; ++ (void)deleteClientId; ++ (NSString*)getClientId; ++ (NSString*)getBundleId; ++ (NSString*)getBuild; ++ (NSString*)getAppVersion; ++ (NSString*)getCarrierName; ++ (NSString*)getFingerId; ++ (NSString*)getDeviceId; ++ (void)saveCache:(NSString *const)key withString:(NSString *)value; ++ (NSString *)getCacheWithKey:(NSString *const)key; ++ (id)getCacheByKey:(NSString *const)key; ++ (void)deleteCacheWithKey:(NSString *const)key; ++ (void)saveCacheWithKey:(NSString *const)key andValue:(id)value; ++ (void)archivedDataWithRootObject:(id)obj andKey:(NSString *const)key; ++ (id)unarchiveObjectWithKey:(NSString *const)key; ++ (void)dictionary:(NSMutableDictionary *)dictionary setObject:(id)object forKey:(id<NSCopying>)key; ++(NSString*)toJSONStringFromDictionary:(NSDictionary*)dict; +//keychain 增删改 ++(UIImage*)loadImgWithBundleName:(NSString*)bundleName ImgName:(NSString*)imgName andExt:(NSString*)ext; ++(void)saveKeyChainWithObj:(id)obj andKey:(NSString *const)key; ++(id)loadObjFromKeyChainWithKey:(NSString *const)key; ++(void)deleteObjFromKeyChainWithKey:(NSString *const)key; ++(NSString*)getIDFV; ++(NSString*)getIDFA; ++(NSString*)getPreferredLanguage; +/** + * 获取本地时间 + */ ++(NSDate*)getLocalTime; ++(NSMutableDictionary*)addParam:(id)param andKey:(NSString *const)key forDict:(NSMutableDictionary*)dict; ++(UIViewController *)getCurrentVC; ++(void)addOrientationNotification:(id)observer selector:(SEL)selector object:(id)object; ++(void)removeOrientationNotification:(id)observer object:(id)object; ++(NSString *)getMacAddress; +/** 设备是否越狱 */ ++ (BOOL)isJailBreak; +/** 设置sdk类型 0 国外,1 国内 */ ++(void)setSDKType:(NSInteger)sdkType; +/** 获取sdk类型 0 国外,1 国内 */ ++(NSInteger)getSDKType; + ++(NSString*)getMsgWithDict:(NSDictionary*)dict; +@end diff --git a/frameworks/WACommon.framework/Headers/WAHttpHelper.h b/frameworks/WACommon.framework/Headers/WAHttpHelper.h new file mode 100755 index 0000000..22f6c4c --- /dev/null +++ b/frameworks/WACommon.framework/Headers/WAHttpHelper.h @@ -0,0 +1,71 @@ +// +// SimpleHttp.h +// simpleHttp +// +// Created by Michael on 9/18/12. +// Copyright (c) 2012 happyMedium +// +//Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +#import <Foundation/Foundation.h> + +@interface WAHttpHelper : NSObject +{ + + +} +@property(strong, nonatomic) NSMutableURLRequest *request; +@property(strong, nonatomic) NSError * error; +@property(strong, nonatomic) NSURLResponse * response; + +/* attributes used for more complex request building */ +@property(strong, nonatomic) NSString * url; +@property(strong, nonatomic) NSString * method; + +@property(strong, nonatomic) NSMutableDictionary * formParams; +@property(strong, nonatomic) NSMutableDictionary * fileParams; + + +#pragma mark - class methods + ++(NSData *) sendGetRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params; ++(void)sendAsyncGetRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params andCompletionHandler:(void (^)(NSURLResponse*, NSData*, NSError*)) handler; ++(NSData *) sendPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params; ++(void) sendAsyncPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params andCompletionHandler:(void (^)(NSURLResponse*, NSData*, NSError*)) handler; ++(NSData *) sendPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params andFiles:(NSDictionary *)files; ++(void) sendAsyncPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params andFiles:(NSDictionary *)files andCompletionHandler:(void (^)(NSURLResponse*, NSData*, NSError*)) handler; + +#pragma mark - simple instance methods + +-(NSData *) sendGetRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params; +-(void) sendAsyncGetRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params andCompletionHandler:(void (^)(NSURLResponse*, NSData*, NSError*)) handler; +-(NSData *) sendPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params; +-(void) sendAsyncPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params andCompletionHandler:(void (^)(NSURLResponse*, NSData*, NSError*)) handler; +-(NSData *) sendPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params andFiles:(NSDictionary *)files; +-(void) sendAsyncPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params andFiles:(NSDictionary *)files andCompletionHandler:(void (^)(NSURLResponse*, NSData*, NSError*)) handler; + +#pragma mark - manually building request + +-(BOOL) addValue:(id)value forQueryParam:(NSString *const)param; +-(BOOL) addFileName:(NSString *)fileName forQueryParam:(NSString *)param; +-(NSData *) send; +-(void) sendAsync:(void (^)(NSURLResponse*, NSData*, NSError*)) handler; + + +#pragma mark - sending requests + +-(NSData *) sendRequest:(NSURLRequest *) aRequest; +-(void) sendAsyncRequest:(NSURLRequest *) aRequest withCompletionHandler:(void (^)(NSURLResponse*, NSData*, NSError*)) handler; + +#pragma mark - helpers + +-(NSMutableURLRequest *) buildPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params andFiles:(NSDictionary *) files; +-(NSMutableURLRequest *) buildPostRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params; +-(NSMutableURLRequest *) buildGetRequestToURL:(NSString *)aUrl withParameters:(NSDictionary *)params; +-(NSString *) getParamStringFromParams:(NSDictionary *)params; +@end diff --git a/frameworks/WACommon.framework/Info.plist b/frameworks/WACommon.framework/Info.plist new file mode 100644 index 0000000..f75563b --- /dev/null +++ b/frameworks/WACommon.framework/Info.plist Binary files differ diff --git a/frameworks/WACommon.framework/Modules/module.modulemap b/frameworks/WACommon.framework/Modules/module.modulemap new file mode 100644 index 0000000..e67d924 --- /dev/null +++ b/frameworks/WACommon.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module WACommon { + umbrella header "WACommon.h" + + export * + module * { export * } +} diff --git a/frameworks/WACommon.framework/WACommon b/frameworks/WACommon.framework/WACommon new file mode 100644 index 0000000..b11916b --- /dev/null +++ b/frameworks/WACommon.framework/WACommon Binary files differ diff --git a/frameworks/WACommon.framework/_CodeSignature/CodeDirectory b/frameworks/WACommon.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..5d45591 --- /dev/null +++ b/frameworks/WACommon.framework/_CodeSignature/CodeDirectory Binary files differ diff --git a/frameworks/WACommon.framework/_CodeSignature/CodeRequirements b/frameworks/WACommon.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..f9f4612 --- /dev/null +++ b/frameworks/WACommon.framework/_CodeSignature/CodeRequirements Binary files differ diff --git a/frameworks/WACommon.framework/_CodeSignature/CodeRequirements-1 b/frameworks/WACommon.framework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000..f47421e --- /dev/null +++ b/frameworks/WACommon.framework/_CodeSignature/CodeRequirements-1 Binary files differ diff --git a/frameworks/WACommon.framework/_CodeSignature/CodeResources b/frameworks/WACommon.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..7922192 --- /dev/null +++ b/frameworks/WACommon.framework/_CodeSignature/CodeResources @@ -0,0 +1,211 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict> + <key>Headers/LocalizedStringUtil.h</key> + <data> + EOIGwgwxesjbtjaUwtKtUQkUD/0= + </data> + <key>Headers/WACommConstants.h</key> + <data> + pZ4EPVFyh6Xs8MTvu0uxFDtIW+Q= + </data> + <key>Headers/WACommon.h</key> + <data> + IlUBxUYesRZDSO+I4vJVGTKJJjc= + </data> + <key>Headers/WAHelper.h</key> + <data> + d2CWdCKE/GlmA2I2ERU0xGASLdY= + </data> + <key>Headers/WAHttpHelper.h</key> + <data> + jJD8Rc3DdU0bzLHnV4oNNB8nvKY= + </data> + <key>Info.plist</key> + <data> + IFfGJ8XP5zBdX5AGOO/U65dJDUQ= + </data> + <key>Modules/module.modulemap</key> + <data> + OOS0vz1SfFUsVYlRNnL8U/DaeD8= + </data> + </dict> + <key>files2</key> + <dict> + <key>Headers/LocalizedStringUtil.h</key> + <dict> + <key>hash</key> + <data> + EOIGwgwxesjbtjaUwtKtUQkUD/0= + </data> + <key>hash2</key> + <data> + oWsDX6Trj3NiP+oZ8LC8rY4m1HlHPzbjRk8dTshafaM= + </data> + </dict> + <key>Headers/WACommConstants.h</key> + <dict> + <key>hash</key> + <data> + pZ4EPVFyh6Xs8MTvu0uxFDtIW+Q= + </data> + <key>hash2</key> + <data> + 9xsV3I0i27A2Tst/BRUaIAqrCBafmLYoSwjHSwIs5n8= + </data> + </dict> + <key>Headers/WACommon.h</key> + <dict> + <key>hash</key> + <data> + IlUBxUYesRZDSO+I4vJVGTKJJjc= + </data> + <key>hash2</key> + <data> + Myr5gsDWf2hhAMDtV45EUrpiQnZTkAQCqWn0rN0tDyc= + </data> + </dict> + <key>Headers/WAHelper.h</key> + <dict> + <key>hash</key> + <data> + d2CWdCKE/GlmA2I2ERU0xGASLdY= + </data> + <key>hash2</key> + <data> + S7dTpqWQN07oLBsnoJtsyoYzUre0L4L/ijH12tTGYeg= + </data> + </dict> + <key>Headers/WAHttpHelper.h</key> + <dict> + <key>hash</key> + <data> + jJD8Rc3DdU0bzLHnV4oNNB8nvKY= + </data> + <key>hash2</key> + <data> + SwMIvyB6fQqp8ETWYwZtSyuGP0C+GNAXq7iWCMJgvuU= + </data> + </dict> + <key>Modules/module.modulemap</key> + <dict> + <key>hash</key> + <data> + OOS0vz1SfFUsVYlRNnL8U/DaeD8= + </data> + <key>hash2</key> + <data> + FaE0KORSSYJGsrZ3BBPedf6NZLbUA9y+ficKNgR+9jI= + </data> + </dict> + </dict> + <key>rules</key> + <dict> + <key>^</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Base\.lproj/</key> + <dict> + <key>weight</key> + <real>1010</real> + </dict> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/frameworks/WACommon.framework/_CodeSignature/CodeSignature b/frameworks/WACommon.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..60c61f0 --- /dev/null +++ b/frameworks/WACommon.framework/_CodeSignature/CodeSignature Binary files differ diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkAccountBinding.h b/frameworks/WASdkImpl.framework/Headers/WASdkAccountBinding.h new file mode 100644 index 0000000..a68fdec --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkAccountBinding.h @@ -0,0 +1,25 @@ +// +// WASDKAcountBinding.h +// WASDKUI +// +// Created by wuyx on 15/7/8. +// Copyright (c) 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> +@interface WASdkAccountBinding : NSObject +@property(nonatomic,copy)NSString* userId; +@property(nonatomic,copy)NSString* preUserId; +@property(nonatomic,copy)NSString* prePlatform; +@property(nonatomic,copy)NSString* platform; +@property(nonatomic,copy)NSString* accessToken; +@property(nonatomic,copy)NSString* extInfo; + ++(void)bindingAccountWithPlatform:(NSString *)platform bindingResult:(WABindingResult*)bindingResult extInfo:(NSString *)extInfo delegate:(id<WAAccountBindingDelegate>)delegate; ++(void)queryBindedThirdPartyAccountWithCompleteBlock:(void(^)(NSError* error,NSArray<WAAccount *>* accounts))block; ++(void)queryBindedAccountWithCompleteBlock:(void(^)(NSError* error,NSArray* accounts))block; ++(void)unBindAccount:(WAAccount*)account block:(void(^)(NSError* error))block; ++(void)unBindAccount:(NSString*)platform userId:(NSString*)pUserId block:(void(^)(NSError* error))block; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkAccountCreateHandler.h b/frameworks/WASdkImpl.framework/Headers/WASdkAccountCreateHandler.h new file mode 100644 index 0000000..6a83659 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkAccountCreateHandler.h @@ -0,0 +1,14 @@ +// +// WASDKAccountCreateHandler.h +// WASDKUI +// +// Created by wuyx on 16/1/21. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> +@interface WASdkAccountCreateHandler : NSObject ++(void)createNewAccount:(void(^)(NSError* error,WALoginResult* result))block; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkAccountListUI.h b/frameworks/WASdkImpl.framework/Headers/WASdkAccountListUI.h new file mode 100644 index 0000000..bddc81a --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkAccountListUI.h @@ -0,0 +1,16 @@ +// +// WASDKAccountListUI.h +// test +// +// Created by wuyx on 16/1/12. +// Copyright © 2016年 GHW. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import <WACommon/WACommon.h> +#import <WASdkIntf/WASdkIntf.h> +#import "WASdkAccountMainUI.h" +@interface WASdkAccountListUI : UIView +-(instancetype)initWithFrame:(CGRect)frame andMainUI:(WASdkAccountMainUI*)mainUI; +@property(nonatomic,weak)WASdkAccountMainUI* mainUI; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkAccountMainUI.h b/frameworks/WASdkImpl.framework/Headers/WASdkAccountMainUI.h new file mode 100644 index 0000000..bc349c1 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkAccountMainUI.h @@ -0,0 +1,25 @@ +// +// WASDKAccountUI.h +// test +// +// Created by wuyx on 16/1/12. +// Copyright © 2016年 GHW. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> +@interface WASdkAccountMainUI : UIControl +@property(nonatomic,strong)UILabel* titleLab; +@property(nonatomic,strong)UIView* separator; +@property(nonatomic,strong)UIView* contentView; +@property(nonatomic,strong)UIButton* backBtn; +@property(nonatomic,strong)NSMutableArray* views; +@property(nonatomic,weak)id<WAAcctManagerDelegate>acctDelegate; +-(instancetype)initWithViewController:(id<WAAcctManagerDelegate>)viewController; ++(void)showAccountManager:(id<WAAcctManagerDelegate>)viewController; +-(void)newAcctDidCompleteWithResult:(WALoginResult*)result; +-(void)switchAcctDidCompleteWithResult:(WALoginResult*)result; +-(void)addMaskLayer:(BOOL)canRemove; +-(void)removeMaskLayer; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkAccountSwitchHandler.h b/frameworks/WASdkImpl.framework/Headers/WASdkAccountSwitchHandler.h new file mode 100644 index 0000000..e9cd057 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkAccountSwitchHandler.h @@ -0,0 +1,17 @@ +// +// WASDKSwitchAccountHandler.h +// WASDKUI +// +// Created by wuyx on 15/12/15. +// Copyright © 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> +@interface WASdkAccountSwitchHandler : NSObject<WALoginDelegate> +/** + * 切换账户 + */ ++(void)switchAccount:(NSString*)accountType completeBlock:(void(^)(NSError* error,WALoginResult* result))block; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkAccountSwitchUI.h b/frameworks/WASdkImpl.framework/Headers/WASdkAccountSwitchUI.h new file mode 100644 index 0000000..c6afdb7 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkAccountSwitchUI.h @@ -0,0 +1,14 @@ +// +// WASDKAccountSwitchUI.h +// test +// +// Created by wuyx on 16/1/14. +// Copyright © 2016年 GHW. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import <WACommon/WACommon.h> +#import "WASdkAccountMainUI.h" +@interface WASdkAccountSwitchUI : UIView +@property(nonatomic,weak)WASdkAccountMainUI* mainUI; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkAccountUI.h b/frameworks/WASdkImpl.framework/Headers/WASdkAccountUI.h new file mode 100644 index 0000000..dfb814b --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkAccountUI.h @@ -0,0 +1,21 @@ +// +// WASDKAccountUI.h +// test +// +// Created by wuyx on 16/1/12. +// Copyright © 2016年 GHW. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import <WACommon/WACommon.h> +#import <WASdkIntf/WASdkIntf.h> +@interface WASdkAccountUI : UIView +@property(nonatomic,strong)NSString* platform; +@property(nonatomic,strong)UILabel* accTypeLab; +@property(nonatomic,strong)UILabel* accLab; +@property(nonatomic,strong)WAAccount* account; +@property(nonatomic,strong)UIButton* actBtn; +@property(nonatomic,strong)UIColor* actBtnColor; +@property(nonatomic)BOOL hadBound; +@property(nonatomic)int borderWidth; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkAlertView.h b/frameworks/WASdkImpl.framework/Headers/WASdkAlertView.h new file mode 100644 index 0000000..1560bd7 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkAlertView.h @@ -0,0 +1,23 @@ +// +// WASDKAlertView.h +// WASDKAlertView +// +// Created by wuyx on 16/1/15. +// Copyright © 2016年 GHW. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import <WACommon/WACommon.h> +typedef enum WASDKAlertViewClicked{ + WASDKAlertViewClickedButtonCancel = 1, + WASDKAlertViewClickedButtonOther +}WASDKAlertViewClicked; +@interface WASdkAlertView : UIView +@property(nonatomic,strong)NSString* title; +@property(nonatomic,strong)NSString* message; +@property(nonatomic,strong)NSString* cancelButtonTitle; +@property(nonatomic,strong)NSString* otherButtonTitles; +@property(nonatomic,strong)id delegate; +- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString*)otherButtonTitles block:(void(^)(WASDKAlertViewClicked click))block; +-(void)show; +@end \ No newline at end of file diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkCacheHandler.h b/frameworks/WASdkImpl.framework/Headers/WASdkCacheHandler.h new file mode 100644 index 0000000..c7cf3a2 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkCacheHandler.h @@ -0,0 +1,15 @@ +// +// WASDKCatchHandler.h +// WASDKUI +// +// Created by wuyx on 16/2/26. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WACommon/WACommon.h> +@interface WASdkCacheHandler : NSObject ++(void)clearLoginCache; ++(void)setCurrentLoginPlatform:(NSString *)platform; ++(NSString*)getCurrentLoginPlatform; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkCatchCrash.h b/frameworks/WASdkImpl.framework/Headers/WASdkCatchCrash.h new file mode 100644 index 0000000..ca2181c --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkCatchCrash.h @@ -0,0 +1,16 @@ +// +// GHWCatchCrash.h +// TEST +// +// Created by wuyx on 15/8/17. +// Copyright (c) 2015年 GHW. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <UIKit/UIKit.h> +#import <WACommon/WACommon.h> +#import <WASdkIntf/WASdkIntf.h> +@interface WASdkCatchCrash : NSObject ++(void)postCrashReport; +void ghwUncaughtExceptionHandler(NSException *exception); +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkConfig.h b/frameworks/WASdkImpl.framework/Headers/WASdkConfig.h new file mode 100644 index 0000000..df69608 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkConfig.h @@ -0,0 +1,22 @@ +// +// WASDKConfig.h +// WASDKUI +// +// Created by wuyx on 15/7/2. +// Copyright (c) 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@interface WASdkConfig : NSObject ++(NSString*)getWASDKServerUrl; ++(NSString*)getAppKey; ++(NSString*)getPublishChannel; ++(NSString*)getChannel; ++(NSString*)getAppID; ++(NSString*)getOS; ++(NSString*)getSdkVer; ++(NSString *)getSdkId; ++(void)setAppKey:(NSString*)appKey; ++(void)setAppId:(NSString*)appKey; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkCore.h b/frameworks/WASdkImpl.framework/Headers/WASdkCore.h new file mode 100644 index 0000000..4f350b4 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkCore.h @@ -0,0 +1,106 @@ +// +// WASDKCore.h +// WASDKUI +// +// Created by wuyx on 15/9/24. +// Copyright (c) 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> +#import "WASdkParamConfigObj.h" + +#define WASdkLog(fmt,...) {\ +if([WACoreProxy isDebugMode]){\ +NSLog((@"WASDK LOG [(version %@) %s ]:" fmt), [WASdkCore getVersion],__FUNCTION__, ##__VA_ARGS__);\ +[WACoreProxy addLogWithString:[NSString stringWithFormat:(@"(version %@) %s ]:" fmt),[WASdkCore getVersion],__FUNCTION__, ##__VA_ARGS__]];\ +}\ +} + +@interface WASdkCore : WACore + +/** + * 初始化 + */ ++(void)init; +/** + * 设置调试模式 + * + * @param sdkType 0 国外,1 国内 + */ ++(void)setSDKType:(NSInteger)sdkType; +/** + * 获取sdk类型 0 国外,1 国内 + */ ++(NSInteger)getSDKType; +/** + * 设置调试模式 + * + * @param isDebugMode + */ ++(void)setDebugMode:(BOOL)isDebugMode; + +/** + * 是否调试模式 + */ ++(BOOL)isDebugMode; + +/** + * 获取gameUserId + */ ++(NSString*)getGameUserId; + +/** + * 获取serverId + */ ++(NSString*)getServerId; + +/** + * 设置userId + */ ++(NSString*)getUserId; + +/** + * 获取level + */ ++(int)getLevel; + + +/** + * appId + */ ++(NSString*)getAppId; + +/** + * appKey + */ ++(NSString*)getAppKey; + +/** + * clientId + */ ++(NSString*)getClientId; + +/** + * 设置clientId + * + * @param clientId + */ ++(void)setClientId:(NSString*)clientId; + +/** + * 添加日志 + */ ++(void)addLogWithString:(NSString*)string; + ++(void)addEventContentWithString:(NSString*)string; + ++(void)setParamConfig:(void(^)(NSError* error,WASdkParamConfigObj* config))block; + ++(WASdkParamConfigObj*)getParamConfig; +/** + * 版本信息 + */ ++(NSString*)getVersion; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkCrashInfo.h b/frameworks/WASdkImpl.framework/Headers/WASdkCrashInfo.h new file mode 100644 index 0000000..99e1347 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkCrashInfo.h @@ -0,0 +1,28 @@ +// +// WASDKCrashInfo.h +// WASDKUI +// +// Created by wuyx on 15/12/17. +// Copyright © 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@interface WASdkCrashInfo : NSObject<NSCoding,NSCopying> +@property(nonatomic,copy)NSString* sdkId; +@property(nonatomic,copy)NSString* sdkVer; +@property(nonatomic,copy)NSString* patchId; +@property(nonatomic,copy)NSString* patchVer; +@property(nonatomic,copy)NSString* os; +@property(nonatomic,copy)NSString* osVersion; +@property(nonatomic,copy)NSString* mobileModel; +@property(nonatomic,copy)NSString* packageId; +@property(nonatomic,copy)NSString* packageVerName; +@property(nonatomic,copy)NSString* packageVerCode; +@property(nonatomic,copy)NSString* clientId; +@property(nonatomic,copy)NSString* appId; +@property(nonatomic,copy)NSString* userId; +@property(nonatomic,copy)NSString* crashTimestamp; +@property(nonatomic,copy)NSString* exceptionInfo; +@property(nonatomic,copy)NSString* extInfo; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkCrashLogTV.h b/frameworks/WASdkImpl.framework/Headers/WASdkCrashLogTV.h new file mode 100644 index 0000000..8538e5c --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkCrashLogTV.h @@ -0,0 +1,13 @@ +// +// WASDKCrashLogTV.h +// WASDKUI +// +// Created by wuyx on 15/9/1. +// Copyright (c) 2015年 GHW-T-01. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface WASdkCrashLogTV : UITableView +-(void)loadLogList; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkDevice.h b/frameworks/WASdkImpl.framework/Headers/WASdkDevice.h new file mode 100644 index 0000000..529085e --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkDevice.h @@ -0,0 +1,29 @@ +// +// WASDKDevice.h +// WASDKUI +// +// Created by wuyx on 15/7/22. +// Copyright (c) 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <UIKit/UIKit.h> +@interface WASdkDevice : NSObject ++(UIDevice*)getDevice; + ++(NSString*)getSystemName; + ++(NSString*)getSystemVersion; + ++(NSString*)getName; + ++(NSString*)getModel; + ++(NSString*)getLocalizedModel; + ++(NSUUID*)getIDFV; + ++(NSString*)getDeviceType; + ++(NSString*)getDeviceBrand; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkGTMBase64.h b/frameworks/WASdkImpl.framework/Headers/WASdkGTMBase64.h new file mode 100755 index 0000000..799550e --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkGTMBase64.h @@ -0,0 +1,183 @@ +// +// GTMBase64.h +// +// Copyright 2006-2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +#import <Foundation/Foundation.h> +#import "GTMDefines.h" + +// GTMBase64 +// +/// Helper for handling Base64 and WebSafeBase64 encodings +// +/// The webSafe methods use different character set and also the results aren't +/// always padded to a multiple of 4 characters. This is done so the resulting +/// data can be used in urls and url query arguments without needing any +/// encoding. You must use the webSafe* methods together, the data does not +/// interop with the RFC methods. +// +@interface WASdkGTMBase64 : NSObject + +// +// Standard Base64 (RFC) handling +// + +// encodeData: +// +/// Base64 encodes contents of the NSData object. +// +/// Returns: +/// A new autoreleased NSData with the encoded payload. nil for any error. +// ++(NSData *)encodeData:(NSData *)data; + +// decodeData: +// +/// Base64 decodes contents of the NSData object. +// +/// Returns: +/// A new autoreleased NSData with the decoded payload. nil for any error. +// ++(NSData *)decodeData:(NSData *)data; + +// encodeBytes:length: +// +/// Base64 encodes the data pointed at by |bytes|. +// +/// Returns: +/// A new autoreleased NSData with the encoded payload. nil for any error. +// ++(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length; + +// decodeBytes:length: +// +/// Base64 decodes the data pointed at by |bytes|. +// +/// Returns: +/// A new autoreleased NSData with the encoded payload. nil for any error. +// ++(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length; + +// stringByEncodingData: +// +/// Base64 encodes contents of the NSData object. +// +/// Returns: +/// A new autoreleased NSString with the encoded payload. nil for any error. +// ++(NSString *)stringByEncodingData:(NSData *)data; + +// stringByEncodingBytes:length: +// +/// Base64 encodes the data pointed at by |bytes|. +// +/// Returns: +/// A new autoreleased NSString with the encoded payload. nil for any error. +// ++(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length; + +// decodeString: +// +/// Base64 decodes contents of the NSString. +// +/// Returns: +/// A new autoreleased NSData with the decoded payload. nil for any error. +// ++(NSData *)decodeString:(NSString *)string; + +// +// Modified Base64 encoding so the results can go onto urls. +// +// The changes are in the characters generated and also allows the result to +// not be padded to a multiple of 4. +// Must use the matching call to encode/decode, won't interop with the +// RFC versions. +// + +// webSafeEncodeData:padded: +// +/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES +/// then padding characters are added so the result length is a multiple of 4. +// +/// Returns: +/// A new autoreleased NSData with the encoded payload. nil for any error. +// ++(NSData *)webSafeEncodeData:(NSData *)data + padded:(BOOL)padded; + +// webSafeDecodeData: +// +/// WebSafe Base64 decodes contents of the NSData object. +// +/// Returns: +/// A new autoreleased NSData with the decoded payload. nil for any error. +// ++(NSData *)webSafeDecodeData:(NSData *)data; + +// webSafeEncodeBytes:length:padded: +// +/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES +/// then padding characters are added so the result length is a multiple of 4. +// +/// Returns: +/// A new autoreleased NSData with the encoded payload. nil for any error. +// ++(NSData *)webSafeEncodeBytes:(const void *)bytes + length:(NSUInteger)length + padded:(BOOL)padded; + +// webSafeDecodeBytes:length: +// +/// WebSafe Base64 decodes the data pointed at by |bytes|. +// +/// Returns: +/// A new autoreleased NSData with the encoded payload. nil for any error. +// ++(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length; + +// stringByWebSafeEncodingData:padded: +// +/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES +/// then padding characters are added so the result length is a multiple of 4. +// +/// Returns: +/// A new autoreleased NSString with the encoded payload. nil for any error. +// ++(NSString *)stringByWebSafeEncodingData:(NSData *)data + padded:(BOOL)padded; + +// stringByWebSafeEncodingBytes:length:padded: +// +/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES +/// then padding characters are added so the result length is a multiple of 4. +// +/// Returns: +/// A new autoreleased NSString with the encoded payload. nil for any error. +// ++(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes + length:(NSUInteger)length + padded:(BOOL)padded; + +// webSafeDecodeString: +// +/// WebSafe Base64 decodes contents of the NSString. +// +/// Returns: +/// A new autoreleased NSData with the decoded payload. nil for any error. +// ++(NSData *)webSafeDecodeString:(NSString *)string; + +@end \ No newline at end of file diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkImpl.h b/frameworks/WASdkImpl.framework/Headers/WASdkImpl.h new file mode 100644 index 0000000..a7619c1 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkImpl.h @@ -0,0 +1,19 @@ +// +// WASdkImpl.h +// WASdkImpl +// +// Created by GHW-T-01 on 16/3/1. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <UIKit/UIKit.h> + +//! Project version number for WASdkImpl. +FOUNDATION_EXPORT double WASdkImplVersionNumber; + +//! Project version string for WASdkImpl. +FOUNDATION_EXPORT const unsigned char WASdkImplVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import <WASdkImpl/PublicHeader.h> + +//time:2016/12/1 19:06 diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkLoginButton.h b/frameworks/WASdkImpl.framework/Headers/WASdkLoginButton.h new file mode 100644 index 0000000..384bb17 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkLoginButton.h @@ -0,0 +1,15 @@ +// +// WASDKLoginButton.h +// WASDKUI +// +// Created by wuyx on 16/1/15. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <UIKit/UIKit.h> + +@interface WASdkLoginButton : UIButton +@property(nonatomic,strong)NSString* title; +@property(nonatomic,strong)UIImageView* logo; +@property(nonatomic,strong)UILabel* loginTypeLab; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkLoginHandler.h b/frameworks/WASdkImpl.framework/Headers/WASdkLoginHandler.h new file mode 100644 index 0000000..1c5c45e --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkLoginHandler.h @@ -0,0 +1,18 @@ +// +// WASDKLoginHandler.h +// WASDKUI +// +// Created by wuyx on 15/9/6. +// Copyright (c) 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> + +@interface WASdkLoginHandler : NSObject ++(void)loginWithResult:(WALoginResult*)loginResult delegate:(id<WALoginDelegate>)delegate; ++(void)loginWithResult:(WALoginResult*)loginResult extInfo:(NSString*)extInfo delegate:(id<WALoginDelegate>)delegate; ++(void)refreshTokenWithBlock:(void(^)(NSError* error ,NSString* token))block; ++(void)getLoginWay:(void(^)(NSError* error ,NSArray* loginWays))block; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkLoginSingleton.h b/frameworks/WASdkImpl.framework/Headers/WASdkLoginSingleton.h new file mode 100644 index 0000000..ff4bd65 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkLoginSingleton.h @@ -0,0 +1,32 @@ +// +// WASDKSingletonHandler.h +// WASdkImplUI +// +// Created by wuyx on 16/3/4. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> +@interface WASdkLoginSingleton : NSObject + +//创建单例 ++(instancetype)shareInstance; +//获取示例 有可能为空 ++(instancetype)getInstance; +//设置当前登录结果 +-(void)setCurrentLoginResult:(WALoginResult*)loginResult; +//获取当前登录结果 ++(WALoginResult*)getCurrentLoginResult; +//设置当前登录是否为绑定登录 +//+(void)setIsBindingLogin:(BOOL)isBinding; + +//弹出登录界面 ++(void)login:(id<WALoginViewDelegate>)delegate cacheEnabled:(BOOL)cacheEnabled; +//移除登录界面 ++(void)hide; +//设置当前平台 ++(void)setCurrentLoginPlatform:(NSString *)platform; ++(NSString*)getCurrentLoginPlatform; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkLoginUI.h b/frameworks/WASdkImpl.framework/Headers/WASdkLoginUI.h new file mode 100644 index 0000000..930e6c2 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkLoginUI.h @@ -0,0 +1,17 @@ +// +// WASDKLoginUI.h +// WASDKUI +// +// Created by wuyx on 16/1/11. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <UIKit/UIKit.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> +@interface WASdkLoginUI : UIControl +@property(nonatomic,strong)NSArray* loginWays; +-(instancetype)initWithCacheEnabled:(BOOL)cacheEnabled; +-(void)login:(id<WALoginViewDelegate>)delegate; +-(void)hide; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkParamConfig.h b/frameworks/WASdkImpl.framework/Headers/WASdkParamConfig.h new file mode 100644 index 0000000..460dfdb --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkParamConfig.h @@ -0,0 +1,14 @@ +// +// WASDKSwitchConfig.h +// WASDKUI +// +// Created by wuyx on 15/11/25. +// Copyright © 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WACommon/WACommon.h> +#import "WASdkParamConfigObj.h" +@interface WASdkParamConfig : NSObject ++(void)requestWithCompleteBlock:(void(^)(NSError* error,WASdkParamConfigObj* config))block; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkParamConfigObj.h b/frameworks/WASdkImpl.framework/Headers/WASdkParamConfigObj.h new file mode 100644 index 0000000..5a9acd5 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkParamConfigObj.h @@ -0,0 +1,27 @@ +// +// WASDKParamConfigObj.h +// WASDKUI +// +// Created by wuyx on 15/11/25. +// Copyright © 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@interface WASdkParamConfigObj : NSObject<NSCoding,NSCopying> +@property(nonatomic)BOOL enableExtend; +@property(nonatomic)BOOL enableHotPatch; +@property(nonatomic,copy)NSString* afadAppKey; +@property(nonatomic,copy)NSString* fbSecretKey; +@property(nonatomic,copy)NSString* rewardType; +@property(nonatomic)float reorderLimitTime; +@property(nonatomic) NSInteger paymentReportTime; +@property(nonatomic) float heartbeatIntervalTime; +@property(nonatomic)int eventCacheNumberLimit; +@property(nonatomic)int eventCacheTimeLimit; +@property(nonatomic,copy)NSString* eventTypeImmediate; +@property(nonatomic,strong)NSNumber* enableNewAccount; +@property(nonatomic,strong)NSNumber* enableChangeAccount; +@property(nonatomic,strong)NSNumber* isTestDevice; ++(WASdkParamConfigObj*)parserWithDict:(NSDictionary*)dict; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkPatchHandler.h b/frameworks/WASdkImpl.framework/Headers/WASdkPatchHandler.h new file mode 100644 index 0000000..01a4dd0 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkPatchHandler.h @@ -0,0 +1,20 @@ +// +// WASDKPatchHandler.h +// testDownload +// +// Created by wuyx on 15/10/21. +// Copyright © 2015年 GHW. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WACommon/WACommon.h> +#import <WASdkIntf/WASdkIntf.h> +@interface WASdkPatchHandler : NSObject ++(void)downloadPatchZipWithHandler:(void(^)(NSError* error))handler andUpdateInfo:(WAUpdateInfo*)updateInfo; ++(void)checkUpdate:(void(^)(NSError* error,WAUpdateInfo* updateInfo))handler; ++(void)startUpdate:(WAUpdateInfo*)updateInfo handler:(void(^)(NSError* error))handler; ++(void)waxStart; ++(void)checkPatchInfoWithHandler:(void (^)(NSError* error,WAUpdateInfo* info,int code,NSString* msg))handler; ++(WAUpdateInfo*)getPatchInfo; ++(void)waxStartWithPath:(NSString*)path; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkPay.h b/frameworks/WASdkImpl.framework/Headers/WASdkPay.h new file mode 100644 index 0000000..e1ae6d4 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkPay.h @@ -0,0 +1,14 @@ +// +// WAIPay.h +// WASdkIntfUI +// +// Created by GHW-T-01 on 16/3/1. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> +@interface WASdkPay : WAIPay + +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkReachability.h b/frameworks/WASdkImpl.framework/Headers/WASdkReachability.h new file mode 100755 index 0000000..0254fd3 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkReachability.h @@ -0,0 +1,102 @@ +/* + Copyright (c) 2011, Tony Million. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + */ + +#import <Foundation/Foundation.h> +#import <SystemConfiguration/SystemConfiguration.h> + +//! Project version number for MacOSReachability. +FOUNDATION_EXPORT double ReachabilityVersionNumber; + +//! Project version string for MacOSReachability. +FOUNDATION_EXPORT const unsigned char ReachabilityVersionString[]; + +/** + * Create NS_ENUM macro if it does not exist on the targeted version of iOS or OS X. + * + * @see http://nshipster.com/ns_enum-ns_options/ + **/ +#ifndef NS_ENUM +#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type +#endif + +extern NSString *const GHWkReachabilityChangedNotification; + +typedef NS_ENUM(NSInteger, NetworkStatus) { + // Apple NetworkStatus Compatible Names. + NotReachable = 0, + ReachableViaWiFi = 2, + ReachableViaWWAN = 1 +}; + +@class WASdkReachability; + +typedef void (^NetworkReachable)(WASdkReachability * reachability); +typedef void (^NetworkUnreachable)(WASdkReachability * reachability); +typedef void (^NetworkReachability)(WASdkReachability * reachability, SCNetworkConnectionFlags flags); + + +@interface WASdkReachability : NSObject + +@property (nonatomic, copy) NetworkReachable reachableBlock; +@property (nonatomic, copy) NetworkUnreachable unreachableBlock; +@property (nonatomic, copy) NetworkReachability reachabilityBlock; + +@property (nonatomic, assign) BOOL reachableOnWWAN; + + ++(instancetype)reachabilityWithHostname:(NSString*)hostname; +// This is identical to the function above, but is here to maintain +//compatibility with Apples original code. (see .m) ++(instancetype)reachabilityWithHostName:(NSString*)hostname; ++(instancetype)reachabilityForInternetConnection; ++(instancetype)reachabilityWithAddress:(void *)hostAddress; ++(instancetype)reachabilityForLocalWiFi; + +-(instancetype)initWithReachabilityRef:(SCNetworkReachabilityRef)ref; + +-(BOOL)startNotifier; +-(void)stopNotifier; + +-(BOOL)isReachable; +-(BOOL)isReachableViaWWAN; +-(BOOL)isReachableViaWiFi; + +// WWAN may be available, but not active until a connection has been established. +// WiFi may require a connection for VPN on Demand. +-(BOOL)isConnectionRequired; // Identical DDG variant. +-(BOOL)connectionRequired; // Apple's routine. +// Dynamic, on demand connection? +-(BOOL)isConnectionOnDemand; +// Is user intervention required? +-(BOOL)isInterventionRequired; + +-(NetworkStatus)currentReachabilityStatus; +-(SCNetworkReachabilityFlags)reachabilityFlags; +-(NSString*)currentReachabilityString; +-(NSString*)currentReachabilityFlags; + +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkSandboxHelper.h b/frameworks/WASdkImpl.framework/Headers/WASdkSandboxHelper.h new file mode 100644 index 0000000..e09bfc8 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkSandboxHelper.h @@ -0,0 +1,31 @@ +// +// WASDKSandboxHelper.h +// WASDKUI +// +// Created by wuyx on 15/9/1. +// Copyright (c) 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@interface WASdkSandboxHelper : NSObject ++ (NSString *)homePath; // 程序主目录,可见子目录(3个):Documents、Library、tmp ++ (NSString *)appPath; // 程序目录,不能存任何东西 ++ (NSString *)docPath; // 文档目录,需要ITUNES同步备份的数据存这里,可存放用户数据 ++ (NSString *)libPrefPath; // 配置目录,配置文件存这里 ++ (NSString *)libCachePath; // 缓存目录,系统永远不会删除这里的文件,ITUNES会删除 ++ (NSString *)tmpPath; // 临时缓存目录,APP退出后,系统可能会删除这里的内容 ++ (BOOL)hasLive:(NSString *)path; //判断目录是否存在,不存在则创建 ++ (BOOL)isFileExistWithPath:(NSString*)path;//判断文件是否存在 ++ (BOOL)isFileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory; ++(BOOL)createFileWithPath:(NSString*)path;//创建文件夹 ++ (BOOL)removeItemAtPath:(NSString*)path andError:(NSError **)error; ++(NSString*)getSDKMainDirPath;//SDK主目录 ++(NSString*)getSDKPatchPath;//SDK patch文件夹 ++(NSString*)getSDKTempPath;//SDK temp 文件夹 ++(NSString*)getSDKPatchTempPath;//SDK patchTemp文件夹 ++(NSString*)getSDKPatchOldPath;//SDK patchOld 文件夹 ++(NSString*)getSDKAppWallImgCachePath;//SDK应用墙缓存图片路径 ++(NSString*)getSDKCrashLogPath;//SDK闪退日志保存路径 ++(NSString*)getSDKDatabasePath;//SDK数据库文件目录 +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkSocial.h b/frameworks/WASdkImpl.framework/Headers/WASdkSocial.h new file mode 100644 index 0000000..7be3728 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkSocial.h @@ -0,0 +1,14 @@ +// +// WAISocial.h +// WASdkIntfUI +// +// Created by GHW-T-01 on 16/3/1. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WASdkIntf/WASdkIntf.h> +#import <WACommon/WACommon.h> +@interface WASdkSocial : WAISocial + +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkTestModeLogView.h b/frameworks/WASdkImpl.framework/Headers/WASdkTestModeLogView.h new file mode 100644 index 0000000..3e4018d --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkTestModeLogView.h @@ -0,0 +1,23 @@ +// +// GHWTestModeLogView.h +// WASDKUI +// +// Created by wuyx on 15/8/26. +// Copyright (c) 2015年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <UIKit/UIKit.h> +#import <WACommon/WACommon.h> +@interface WASdkTestModeLogView : NSObject + ++(id)shareInstance; ++(void)addLogWithString:(NSString*)string; ++(void)addLogWithoutBtn:(NSString*)string; ++(void)addEventContentWithString:(NSString*)string; ++(void)removeSuspBtn; ++(void)eventLog:(NSDictionary*)attributeDict str:(NSString *)format, ...; ++(void)eventLog:(UIColor*)color format:(NSString *)format, ...; ++(void)eventLog:(NSString *)format, ...; +@property(nonatomic,strong)NSString* log; +@end diff --git a/frameworks/WASdkImpl.framework/Headers/WASdkTrack.h b/frameworks/WASdkImpl.framework/Headers/WASdkTrack.h new file mode 100644 index 0000000..515a0d7 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Headers/WASdkTrack.h @@ -0,0 +1,28 @@ +// +// WAITrack.h +// WASdkIntfUI +// +// Created by GHW-T-01 on 16/3/1. +// Copyright © 2016年 GHW-T-01. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <WASdkIntf/WASdkIntf.h> +@interface WASdkTrack : WAITrack +@property(copy,nonatomic)NSString *deviceid; +@property(copy,nonatomic)NSString *deviceType; +@property(copy,nonatomic)NSString *deviceBrand; +@property(copy,nonatomic)NSString *idfa; +@property(copy,nonatomic)NSString *model; +@property(copy,nonatomic)NSString *op; +@property(copy,nonatomic)NSString *os; +@property(copy,nonatomic)NSString *tz; +@property(copy,nonatomic)NSString *currencyCode; + +@property(copy,nonatomic)NSString *userId; +@property(strong,nonatomic)NSDictionary* mapping; +@property(strong,nonatomic)NSDictionary* trackerConfig; +@property(copy,nonatomic)NSString *url; ++(WASdkTrack*)shareTracker; ++(NSString*)getSessionId; +@end diff --git a/frameworks/WASdkImpl.framework/Info.plist b/frameworks/WASdkImpl.framework/Info.plist new file mode 100644 index 0000000..e1da04e --- /dev/null +++ b/frameworks/WASdkImpl.framework/Info.plist Binary files differ diff --git a/frameworks/WASdkImpl.framework/Modules/module.modulemap b/frameworks/WASdkImpl.framework/Modules/module.modulemap new file mode 100644 index 0000000..c9d6e92 --- /dev/null +++ b/frameworks/WASdkImpl.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module WASdkImpl { + umbrella header "WASdkImpl.h" + + export * + module * { export * } +} diff --git a/frameworks/WASdkImpl.framework/WASdkImpl b/frameworks/WASdkImpl.framework/WASdkImpl new file mode 100644 index 0000000..440c4a6 --- /dev/null +++ b/frameworks/WASdkImpl.framework/WASdkImpl Binary files differ diff --git a/frameworks/ZipArchive.framework/Headers/ZipArchive.h b/frameworks/ZipArchive.framework/Headers/ZipArchive.h new file mode 100644 index 0000000..63c376d --- /dev/null +++ b/frameworks/ZipArchive.framework/Headers/ZipArchive.h @@ -0,0 +1,44 @@ +// +// ZipArchive.h +// ZipArchive +// +// Created by wuyx on 16/10/19. +// Copyright © 2016年 GHW. All rights reserved. +// + +#import <UIKit/UIKit.h> + + + +@protocol ZipArchiveDelegate <NSObject> +@optional +-(void) ErrorMessage:(NSString*) msg; +-(BOOL) OverWriteOperation:(NSString*) file; + +@end + + +@interface ZipArchive : NSObject +//{ +//@private +// zipFile _zipFile; +// unzFile _unzFile; +// +// NSString* _password; +// id _delegate; +//} + +@property (nonatomic, retain) id delegate; + +-(BOOL) CreateZipFile2:(NSString*) zipFile; +-(BOOL) CreateZipFile2:(NSString*) zipFile Password:(NSString*) password; +-(BOOL) addFileToZip:(NSString*) file newname:(NSString*) newname; +-(BOOL) CloseZipFile2; + +-(BOOL) UnzipOpenFile:(NSString*) zipFile; +-(BOOL) UnzipOpenFile:(NSString*) zipFile Password:(NSString*) password; +-(BOOL) UnzipFileTo:(NSString*) path overWrite:(BOOL) overwrite; +-(BOOL) UnzipCloseFile; +@end + + diff --git a/frameworks/ZipArchive.framework/Headers/crypt.h b/frameworks/ZipArchive.framework/Headers/crypt.h new file mode 100644 index 0000000..f14a628 --- /dev/null +++ b/frameworks/ZipArchive.framework/Headers/crypt.h @@ -0,0 +1,132 @@ +/* crypt.h -- base code for crypt/uncrypt ZIPfile + + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This code is a modified version of crypting code in Infozip distribution + + The encryption/decryption parts of this source code (as opposed to the + non-echoing password parts) were originally written in Europe. The + whole source package can be freely distributed, including from the USA. + (Prior to January 2000, re-export from the US was a violation of US law.) + + This encryption code is a direct transcription of the algorithm from + Roger Schlafly, described by Phil Katz in the file appnote.txt. This + file (appnote.txt) is distributed with the PKZIP program (even in the + version without encryption capabilities). + + If you don't need crypting in your application, just define symbols + NOCRYPT and NOUNCRYPT. + + This code support the "Traditional PKWARE Encryption". + + The new AES encryption added on Zip format by Winzip (see the page + http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong + Encryption is not supported. +*/ + +#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) + +/*********************************************************************** + * Return the next byte in the pseudo-random sequence + */ +static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab) +{ + unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an + * unpredictable manner on 16-bit systems; not a problem + * with any known compiler so far, though */ + + temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; + return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); +} + +/*********************************************************************** + * Update the encryption keys with the next byte of plain text + */ +static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c) +{ + (*(pkeys+0)) = CRC32((*(pkeys+0)), c); + (*(pkeys+1)) += (*(pkeys+0)) & 0xff; + (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; + { + register int keyshift = (int)((*(pkeys+1)) >> 24); + (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); + } + return c; +} + + +/*********************************************************************** + * Initialize the encryption keys and the random header according to + * the given password. + */ +static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab) +{ + *(pkeys+0) = 305419896L; + *(pkeys+1) = 591751049L; + *(pkeys+2) = 878082192L; + while (*passwd != '\0') { + update_keys(pkeys,pcrc_32_tab,(int)*passwd); + passwd++; + } +} + +#define zdecode(pkeys,pcrc_32_tab,c) \ + (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) + +#define zencode(pkeys,pcrc_32_tab,c,t) \ + (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) + +#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED + +#define RAND_HEAD_LEN 12 + /* "last resort" source for second part of crypt seed pattern */ +# ifndef ZCR_SEED2 +# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ +# endif + +static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting) + const char *passwd; /* password string */ + unsigned char *buf; /* where to write header */ + int bufSize; + unsigned long* pkeys; + const unsigned long* pcrc_32_tab; + unsigned long crcForCrypting; +{ + int n; /* index in random header */ + int t; /* temporary */ + int c; /* random byte */ + unsigned char header[RAND_HEAD_LEN-2]; /* random header */ + static unsigned calls = 0; /* ensure different random header each time */ + + if (bufSize<RAND_HEAD_LEN) + return 0; + + /* First generate RAND_HEAD_LEN-2 random bytes. We encrypt the + * output of rand() to get less predictability, since rand() is + * often poorly implemented. + */ + if (++calls == 1) + { + srand((unsigned)(time(NULL) ^ ZCR_SEED2)); + } + init_keys(passwd, pkeys, pcrc_32_tab); + for (n = 0; n < RAND_HEAD_LEN-2; n++) + { + c = (rand() >> 7) & 0xff; + header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); + } + /* Encrypt random header (last two bytes is high word of crc) */ + init_keys(passwd, pkeys, pcrc_32_tab); + for (n = 0; n < RAND_HEAD_LEN-2; n++) + { + buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); + } + buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); + buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); + return n; +} + +#endif diff --git a/frameworks/ZipArchive.framework/Headers/ioapi.h b/frameworks/ZipArchive.framework/Headers/ioapi.h new file mode 100644 index 0000000..e73a3b2 --- /dev/null +++ b/frameworks/ZipArchive.framework/Headers/ioapi.h @@ -0,0 +1,75 @@ +/* ioapi.h -- IO base function header for compress/uncompress .zip + files using zlib + zip or unzip API + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant +*/ + +#ifndef _ZLIBIOAPI_H +#define _ZLIBIOAPI_H + + +#define ZLIB_FILEFUNC_SEEK_CUR (1) +#define ZLIB_FILEFUNC_SEEK_END (2) +#define ZLIB_FILEFUNC_SEEK_SET (0) + +#define ZLIB_FILEFUNC_MODE_READ (1) +#define ZLIB_FILEFUNC_MODE_WRITE (2) +#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) + +#define ZLIB_FILEFUNC_MODE_EXISTING (4) +#define ZLIB_FILEFUNC_MODE_CREATE (8) + + +#ifndef ZCALLBACK + +#if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) +#define ZCALLBACK CALLBACK +#else +#define ZCALLBACK +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); +typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); +typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); +typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); +typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); +typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); +typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); + +typedef struct zlib_filefunc_def_s +{ + open_file_func zopen_file; + read_file_func zread_file; + write_file_func zwrite_file; + tell_file_func ztell_file; + seek_file_func zseek_file; + close_file_func zclose_file; + testerror_file_func zerror_file; + voidpf opaque; +} zlib_filefunc_def; + + + +void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); + +#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) +#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) +#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) +#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) +#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) +#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) + + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/frameworks/ZipArchive.framework/Headers/mztools.h b/frameworks/ZipArchive.framework/Headers/mztools.h new file mode 100644 index 0000000..82d1597 --- /dev/null +++ b/frameworks/ZipArchive.framework/Headers/mztools.h @@ -0,0 +1,31 @@ +/* + Additional tools for Minizip + Code: Xavier Roche '2004 + License: Same as ZLIB (www.gzip.org) +*/ + +#ifndef _zip_tools_H +#define _zip_tools_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "zlib.h" +#endif + +#include "unzip.h" + +/* Repair a ZIP file (missing central directory) + file: file to recover + fileOut: output file after recovery + fileOutTmp: temporary file name used for recovery +*/ +extern int ZEXPORT unzRepair(const char* file, + const char* fileOut, + const char* fileOutTmp, + uLong* nRecovered, + uLong* bytesRecovered); + +#endif diff --git a/frameworks/ZipArchive.framework/Headers/unzip.h b/frameworks/ZipArchive.framework/Headers/unzip.h new file mode 100644 index 0000000..c3206a0 --- /dev/null +++ b/frameworks/ZipArchive.framework/Headers/unzip.h @@ -0,0 +1,354 @@ +/* unzip.h -- IO for uncompress .zip files using zlib + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + + Multi volume ZipFile (span) are not supported. + Encryption compatible with pkzip 2.04g only supported + Old compressions used by old PKZip 1.x are not supported + + + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +*/ + +/* for more info about .ZIP format, see + http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip + http://www.info-zip.org/pub/infozip/doc/ + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip +*/ + +#ifndef _unz_H +#define _unz_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "zlib.h" +#endif + +#ifndef _ZLIBIOAPI_H +#include "ioapi.h" +#endif + +#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagunzFile__ { int unused; } unzFile__; +typedef unzFile__ *unzFile; +#else +typedef voidp unzFile; +#endif + + +#define UNZ_OK (0) +#define UNZ_END_OF_LIST_OF_FILE (-100) +#define UNZ_ERRNO (Z_ERRNO) +#define UNZ_EOF (0) +#define UNZ_PARAMERROR (-102) +#define UNZ_BADZIPFILE (-103) +#define UNZ_INTERNALERROR (-104) +#define UNZ_CRCERROR (-105) + +/* tm_unz contain date/time info */ +typedef struct tm_unz_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_unz; + +/* unz_global_info structure contain global data about the ZIPfile + These data comes from the end of central dir */ +typedef struct unz_global_info_s +{ + uLong number_entry; /* total number of entries in + the central dir on this disk */ + uLong size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + + +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_info_s +{ + uLong version; /* version made by 2 bytes */ + uLong version_needed; /* version needed to extract 2 bytes */ + uLong flag; /* general purpose bit flag 2 bytes */ + uLong compression_method; /* compression method 2 bytes */ + uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ + uLong crc; /* crc-32 4 bytes */ + uLong compressed_size; /* compressed size 4 bytes */ + uLong uncompressed_size; /* uncompressed size 4 bytes */ + uLong size_filename; /* filename length 2 bytes */ + uLong size_file_extra; /* extra field length 2 bytes */ + uLong size_file_comment; /* file comment length 2 bytes */ + + uLong disk_num_start; /* disk number start 2 bytes */ + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ + + tm_unz tmu_date; +} unz_file_info; + +extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, + const char* fileName2, + int iCaseSensitivity)); +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) +*/ + + +extern unzFile ZEXPORT unzOpen OF((const char *path)); +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer + "zlib/zlib113.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ + +extern unzFile ZEXPORT unzOpen2 OF((const char *path, + zlib_filefunc_def* pzlib_filefunc_def)); +/* + Open a Zip file, like unzOpen, but provide a set of file low level API + for read/write the zip file (see ioapi.h) +*/ + +extern int ZEXPORT unzClose OF((unzFile file)); +/* + Close a ZipFile opened with unzipOpen. + If there is files inside the .Zip opened with unzOpenCurrentFile (see later), + these files MUST be closed with unzipCloseCurrentFile before call unzipClose. + return UNZ_OK if there is no problem. */ + +extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, + unz_global_info *pglobal_info)); +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ + + +extern int ZEXPORT unzGetGlobalComment OF((unzFile file, + char *szComment, + uLong uSizeBuf)); +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ + + +/***************************************************************************/ +/* Unzip package allow you browse the directory of the zipfile */ + +extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ + +extern int ZEXPORT unzGoToNextFile OF((unzFile file)); +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ + +extern int ZEXPORT unzLocateFile OF((unzFile file, + const char *szFileName, + int iCaseSensitivity)); +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ + + +/* ****************************************** */ +/* Ryan supplied functions */ +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_pos_s +{ + uLong pos_in_zip_directory; /* offset in zip file directory */ + uLong num_of_file; /* # of file */ +} unz_file_pos; + +extern int ZEXPORT unzGetFilePos( + unzFile file, + unz_file_pos* file_pos); + +extern int ZEXPORT unzGoToFilePos( + unzFile file, + unz_file_pos* file_pos); + +/* ****************************************** */ + +extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, + unz_file_info *pfile_info, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); +/* + Get Info about the current file + if pfile_info!=NULL, the *pfile_info structure will contain somes info about + the current file + if szFileName!=NULL, the filemane string will be copied in szFileName + (fileNameBufferSize is the size of the buffer) + if extraField!=NULL, the extra field information will be copied in extraField + (extraFieldBufferSize is the size of the buffer). + This is the Central-header version of the extra field + if szComment!=NULL, the comment string of the file will be copied in szComment + (commentBufferSize is the size of the buffer) +*/ + +/***************************************************************************/ +/* for reading the content of the current zipfile, you can open it, read data + from it, and close it (you can close it before reading all the file) + */ + +extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); +/* + Open for reading data the current file in the zipfile. + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, + const char* password)); +/* + Open for reading data the current file in the zipfile. + password is a crypting password + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, + int* method, + int* level, + int raw)); +/* + Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) + if raw==1 + *method will receive method of compression, *level will receive level of + compression + note : you can set level parameter as NULL (if you did not want known level, + but you CANNOT set method parameter as NULL +*/ + +extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, + int* method, + int* level, + int raw, + const char* password)); +/* + Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) + if raw==1 + *method will receive method of compression, *level will receive level of + compression + note : you can set level parameter as NULL (if you did not want known level, + but you CANNOT set method parameter as NULL +*/ + + +extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); +/* + Close the file in zip opened with unzOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ + +extern int ZEXPORT unzReadCurrentFile OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read bytes from the current file (opened by unzOpenCurrentFile) + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ + +extern z_off_t ZEXPORT unztell OF((unzFile file)); +/* + Give the current position in uncompressed data +*/ + +extern int ZEXPORT unzeof OF((unzFile file)); +/* + return 1 if the end of file was reached, 0 elsewhere +*/ + +extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ + +/***************************************************************************/ + +/* Get the current file offset */ +extern uLong ZEXPORT unzGetOffset (unzFile file); + +/* Set the current file offset */ +extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); + + + +#ifdef __cplusplus +} +#endif + +#endif /* _unz_H */ diff --git a/frameworks/ZipArchive.framework/Headers/zip.h b/frameworks/ZipArchive.framework/Headers/zip.h new file mode 100644 index 0000000..cd38b67 --- /dev/null +++ b/frameworks/ZipArchive.framework/Headers/zip.h @@ -0,0 +1,235 @@ +/* zip.h -- IO for compress .zip files using zlib + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This unzip package allow creates .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + Multi volume ZipFile (span) are not supported. + Encryption compatible with pkzip 2.04g only supported + Old compressions used by old PKZip 1.x are not supported + + For uncompress .zip file, look at unzip.h + + + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.html for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +*/ + +/* for more info about .ZIP format, see + http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip + http://www.info-zip.org/pub/infozip/doc/ + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip +*/ + +#ifndef _zip_H +#define _zip_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "zlib.h" +#endif + +#ifndef _ZLIBIOAPI_H +#include "ioapi.h" +#endif + +#if defined(STRICTZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagzipFile__ { int unused; } zipFile__; +typedef zipFile__ *zipFile; +#else +typedef voidp zipFile; +#endif + +#define ZIP_OK (0) +#define ZIP_EOF (0) +#define ZIP_ERRNO (Z_ERRNO) +#define ZIP_PARAMERROR (-102) +#define ZIP_BADZIPFILE (-103) +#define ZIP_INTERNALERROR (-104) + +#ifndef DEF_MEM_LEVEL +# if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +# else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +# endif +#endif +/* default memLevel */ + +/* tm_zip contain date/time info */ +typedef struct tm_zip_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_zip; + +typedef struct +{ + tm_zip tmz_date; /* date in understandable format */ + uLong dosDate; /* if dos_date == 0, tmu_date is used */ +/* uLong flag; */ /* general purpose bit flag 2 bytes */ + + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ +} zip_fileinfo; + +typedef const char* zipcharpc; + + +#define APPEND_STATUS_CREATE (0) +#define APPEND_STATUS_CREATEAFTER (1) +#define APPEND_STATUS_ADDINZIP (2) + +extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); +/* + Create a zipfile. + pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on + an Unix computer "zlib/zlib113.zip". + if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip + will be created at the end of the file. + (useful if the file contain a self extractor code) + if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will + add files in existing zip (be sure you don't add file that doesn't exist) + If the zipfile cannot be opened, the return value is NULL. + Else, the return value is a zipFile Handle, usable with other function + of this zip package. +*/ + +/* Note : there is no delete function into a zipfile. + If you want delete file into a zipfile, you must open a zipfile, and create another + Of couse, you can use RAW reading and writing to copy the file you did not want delte +*/ + +extern zipFile ZEXPORT zipOpen2 OF((const char *pathname, + int append, + zipcharpc* globalcomment, + zlib_filefunc_def* pzlib_filefunc_def)); + +extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level)); +/* + Open a file in the ZIP for writing. + filename : the filename in zip (if NULL, '-' without quote will be used + *zipfi contain supplemental information + if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local + contains the extrafield data the the local header + if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global + contains the extrafield data the the local header + if comment != NULL, comment contain the comment string + method contain the compression method (0 for store, Z_DEFLATED for deflate) + level contain the level of compression (can be Z_DEFAULT_COMPRESSION) +*/ + + +extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level, + int raw)); + +/* + Same than zipOpenNewFileInZip, except if raw=1, we write raw file + */ + +extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level, + int raw, + int windowBits, + int memLevel, + int strategy, + const char* password, + uLong crcForCtypting)); + +/* + Same than zipOpenNewFileInZip2, except + windowBits,memLevel,,strategy : see parameter strategy in deflateInit2 + password : crypting password (NULL for no crypting) + crcForCtypting : crc of file to compress (needed for crypting) + */ + + +extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, + const void* buf, + unsigned len)); +/* + Write data in the zipfile +*/ + +extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); +/* + Close the current file in the zipfile +*/ + +extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, + uLong uncompressed_size, + uLong crc32)); +/* + Close the current file in the zipfile, for fiel opened with + parameter raw=1 in zipOpenNewFileInZip2 + uncompressed_size and crc32 are value for the uncompressed size +*/ + +extern int ZEXPORT zipClose OF((zipFile file, + const char* global_comment)); +/* + Close the zipfile +*/ + +#ifdef __cplusplus +} +#endif + +#endif /* _zip_H */ diff --git a/frameworks/ZipArchive.framework/Info.plist b/frameworks/ZipArchive.framework/Info.plist new file mode 100644 index 0000000..49ff1b6 --- /dev/null +++ b/frameworks/ZipArchive.framework/Info.plist Binary files differ diff --git a/frameworks/ZipArchive.framework/Modules/module.modulemap b/frameworks/ZipArchive.framework/Modules/module.modulemap new file mode 100644 index 0000000..5402a15 --- /dev/null +++ b/frameworks/ZipArchive.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module ZipArchive { + umbrella header "ZipArchive.h" + + export * + module * { export * } +} diff --git a/frameworks/ZipArchive.framework/ZipArchive b/frameworks/ZipArchive.framework/ZipArchive new file mode 100644 index 0000000..78f9423 --- /dev/null +++ b/frameworks/ZipArchive.framework/ZipArchive Binary files differ diff --git a/frameworks/ZipArchive.framework/_CodeSignature/CodeDirectory b/frameworks/ZipArchive.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..8a0824f --- /dev/null +++ b/frameworks/ZipArchive.framework/_CodeSignature/CodeDirectory Binary files differ diff --git a/frameworks/ZipArchive.framework/_CodeSignature/CodeRequirements b/frameworks/ZipArchive.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..cdf1488 --- /dev/null +++ b/frameworks/ZipArchive.framework/_CodeSignature/CodeRequirements Binary files differ diff --git a/frameworks/ZipArchive.framework/_CodeSignature/CodeResources b/frameworks/ZipArchive.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..fce877b --- /dev/null +++ b/frameworks/ZipArchive.framework/_CodeSignature/CodeResources @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict> + <key>Headers/ZipArchive.h</key> + <data> + C/VnJTqgiIRqwr7Zwdy3Qo3/qOc= + </data> + <key>Headers/crypt.h</key> + <data> + 6eJshyAjSOlg/oJsNO39UCBwpk0= + </data> + <key>Headers/ioapi.h</key> + <data> + kTa1qt/HCpn4NXazx9XP0fk9LZQ= + </data> + <key>Headers/mztools.h</key> + <data> + 8MLgG3/IamUPpRo7OYlFKMMSPEA= + </data> + <key>Headers/unzip.h</key> + <data> + yf/t4wl/Lhckp61/5mFN/3uLNKk= + </data> + <key>Headers/zip.h</key> + <data> + UNz4Vnf51V9bcykwTP7zmz7uV1A= + </data> + <key>Info.plist</key> + <data> + /HuW0HAAqYW1FMGNrvPDw6nsPoc= + </data> + <key>Modules/module.modulemap</key> + <data> + uVqVSIzw4J9Sc2N0t4Q9fFqPh5w= + </data> + </dict> + <key>files2</key> + <dict> + <key>Headers/ZipArchive.h</key> + <data> + C/VnJTqgiIRqwr7Zwdy3Qo3/qOc= + </data> + <key>Headers/crypt.h</key> + <data> + 6eJshyAjSOlg/oJsNO39UCBwpk0= + </data> + <key>Headers/ioapi.h</key> + <data> + kTa1qt/HCpn4NXazx9XP0fk9LZQ= + </data> + <key>Headers/mztools.h</key> + <data> + 8MLgG3/IamUPpRo7OYlFKMMSPEA= + </data> + <key>Headers/unzip.h</key> + <data> + yf/t4wl/Lhckp61/5mFN/3uLNKk= + </data> + <key>Headers/zip.h</key> + <data> + UNz4Vnf51V9bcykwTP7zmz7uV1A= + </data> + <key>Modules/module.modulemap</key> + <data> + uVqVSIzw4J9Sc2N0t4Q9fFqPh5w= + </data> + </dict> + <key>rules</key> + <dict> + <key>^</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/frameworks/ZipArchive.framework/_CodeSignature/CodeSignature b/frameworks/ZipArchive.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..eb390e8 --- /dev/null +++ b/frameworks/ZipArchive.framework/_CodeSignature/CodeSignature Binary files differ diff --git a/frameworks/lua.framework/Headers/lapi.h b/frameworks/lua.framework/Headers/lapi.h new file mode 100755 index 0000000..2c3fab2 --- /dev/null +++ b/frameworks/lua.framework/Headers/lapi.h @@ -0,0 +1,16 @@ +/* +** $Id: lapi.h,v 2.2.1.1 2007/12/27 13:02:25 roberto Exp $ +** Auxiliary functions from Lua API +** See Copyright Notice in lua.h +*/ + +#ifndef lapi_h +#define lapi_h + + +#include "lobject.h" + + +LUAI_FUNC void luaA_pushobject (lua_State *L, const TValue *o); + +#endif diff --git a/frameworks/lua.framework/Headers/lauxlib.h b/frameworks/lua.framework/Headers/lauxlib.h new file mode 100755 index 0000000..d264d23 --- /dev/null +++ b/frameworks/lua.framework/Headers/lauxlib.h @@ -0,0 +1,174 @@ +/* +** $Id: lauxlib.h,v 1.88.1.1 2007/12/27 13:02:25 roberto Exp $ +** Auxiliary functions for building Lua libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lauxlib_h +#define lauxlib_h + + +#include <stddef.h> +#include <stdio.h> + +#include "lua.h" + + +#if defined(LUA_COMPAT_GETN) +LUALIB_API int (luaL_getn) (lua_State *L, int t); +LUALIB_API void (luaL_setn) (lua_State *L, int t, int n); +#else +#define luaL_getn(L,i) ((int)lua_objlen(L, i)) +#define luaL_setn(L,i,j) ((void)0) /* no op! */ +#endif + +#if defined(LUA_COMPAT_OPENLIB) +#define luaI_openlib luaL_openlib +#endif + + +/* extra error code for `luaL_load' */ +#define LUA_ERRFILE (LUA_ERRERR+1) + + +typedef struct luaL_Reg { + const char *name; + lua_CFunction func; +} luaL_Reg; + + + +LUALIB_API void (luaI_openlib) (lua_State *L, const char *libname, + const luaL_Reg *l, int nup); +LUALIB_API void (luaL_register) (lua_State *L, const char *libname, + const luaL_Reg *l); +LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); +LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); +LUALIB_API int (luaL_typerror) (lua_State *L, int narg, const char *tname); +LUALIB_API int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg); +LUALIB_API const char *(luaL_checklstring) (lua_State *L, int numArg, + size_t *l); +LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg, + const char *def, size_t *l); +LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg); +LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def); + +LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg); +LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg, + lua_Integer def); + +LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); +LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t); +LUALIB_API void (luaL_checkany) (lua_State *L, int narg); + +LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); +LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); + +LUALIB_API void (luaL_where) (lua_State *L, int lvl); +LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); + +LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def, + const char *const lst[]); + +LUALIB_API int (luaL_ref) (lua_State *L, int t); +LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); + +LUALIB_API int (luaL_loadfile) (lua_State *L, const char *filename); +LUALIB_API int (luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, + const char *name); +LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); + +LUALIB_API lua_State *(luaL_newstate) (void); + + +LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p, + const char *r); + +LUALIB_API const char *(luaL_findtable) (lua_State *L, int idx, + const char *fname, int szhint); + + + + +/* +** =============================================================== +** some useful macros +** =============================================================== +*/ + +#define luaL_argcheck(L, cond,numarg,extramsg) \ + ((void)((cond) || luaL_argerror(L, (numarg), (extramsg)))) +#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) +#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) +#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) +#define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) +#define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) +#define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) + +#define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) + +#define luaL_dofile(L, fn) \ + (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_dostring(L, s) \ + (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n))) + +#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) + +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + + + +typedef struct luaL_Buffer { + char *p; /* current position in buffer */ + int lvl; /* number of strings in the stack (level) */ + lua_State *L; + char buffer[LUAL_BUFFERSIZE]; +} luaL_Buffer; + +#define luaL_addchar(B,c) \ + ((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \ + (*(B)->p++ = (char)(c))) + +/* compatibility only */ +#define luaL_putchar(B,c) luaL_addchar(B,c) + +#define luaL_addsize(B,n) ((B)->p += (n)) + +LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); +LUALIB_API char *(luaL_prepbuffer) (luaL_Buffer *B); +LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); +LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); +LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); + + +/* }====================================================== */ + + +/* compatibility with ref system */ + +/* pre-defined references */ +#define LUA_NOREF (-2) +#define LUA_REFNIL (-1) + +#define lua_ref(L,lock) ((lock) ? luaL_ref(L, LUA_REGISTRYINDEX) : \ + (lua_pushstring(L, "unlocked references are obsolete"), lua_error(L), 0)) + +#define lua_unref(L,ref) luaL_unref(L, LUA_REGISTRYINDEX, (ref)) + +#define lua_getref(L,ref) lua_rawgeti(L, LUA_REGISTRYINDEX, (ref)) + + +#define luaL_reg luaL_Reg + +#endif + + diff --git a/frameworks/lua.framework/Headers/lcode.h b/frameworks/lua.framework/Headers/lcode.h new file mode 100755 index 0000000..aaf6f11 --- /dev/null +++ b/frameworks/lua.framework/Headers/lcode.h @@ -0,0 +1,76 @@ +/* +** $Id: lcode.h,v 1.48.1.1 2007/12/27 13:02:25 roberto Exp $ +** Code generator for Lua +** See Copyright Notice in lua.h +*/ + +#ifndef lcode_h +#define lcode_h + +#include "llex.h" +#include "lobject.h" +#include "lopcodes.h" +#include "lparser.h" + + +/* +** Marks the end of a patch list. It is an invalid value both as an absolute +** address, and as a list link (would link an element to itself). +*/ +#define NO_JUMP (-1) + + +/* +** grep "ORDER OPR" if you change these enums +*/ +typedef enum BinOpr { + OPR_ADD, OPR_SUB, OPR_MUL, OPR_DIV, OPR_MOD, OPR_POW, + OPR_CONCAT, + OPR_NE, OPR_EQ, + OPR_LT, OPR_LE, OPR_GT, OPR_GE, + OPR_AND, OPR_OR, + OPR_NOBINOPR +} BinOpr; + + +typedef enum UnOpr { OPR_MINUS, OPR_NOT, OPR_LEN, OPR_NOUNOPR } UnOpr; + + +#define getcode(fs,e) ((fs)->f->code[(e)->u.s.info]) + +#define luaK_codeAsBx(fs,o,A,sBx) luaK_codeABx(fs,o,A,(sBx)+MAXARG_sBx) + +#define luaK_setmultret(fs,e) luaK_setreturns(fs, e, LUA_MULTRET) + +LUAI_FUNC int luaK_codeABx (FuncState *fs, OpCode o, int A, unsigned int Bx); +LUAI_FUNC int luaK_codeABC (FuncState *fs, OpCode o, int A, int B, int C); +LUAI_FUNC void luaK_fixline (FuncState *fs, int line); +LUAI_FUNC void luaK_nil (FuncState *fs, int from, int n); +LUAI_FUNC void luaK_reserveregs (FuncState *fs, int n); +LUAI_FUNC void luaK_checkstack (FuncState *fs, int n); +LUAI_FUNC int luaK_stringK (FuncState *fs, TString *s); +LUAI_FUNC int luaK_numberK (FuncState *fs, lua_Number r); +LUAI_FUNC void luaK_dischargevars (FuncState *fs, expdesc *e); +LUAI_FUNC int luaK_exp2anyreg (FuncState *fs, expdesc *e); +LUAI_FUNC void luaK_exp2nextreg (FuncState *fs, expdesc *e); +LUAI_FUNC void luaK_exp2val (FuncState *fs, expdesc *e); +LUAI_FUNC int luaK_exp2RK (FuncState *fs, expdesc *e); +LUAI_FUNC void luaK_self (FuncState *fs, expdesc *e, expdesc *key); +LUAI_FUNC void luaK_indexed (FuncState *fs, expdesc *t, expdesc *k); +LUAI_FUNC void luaK_goiftrue (FuncState *fs, expdesc *e); +LUAI_FUNC void luaK_storevar (FuncState *fs, expdesc *var, expdesc *e); +LUAI_FUNC void luaK_setreturns (FuncState *fs, expdesc *e, int nresults); +LUAI_FUNC void luaK_setoneret (FuncState *fs, expdesc *e); +LUAI_FUNC int luaK_jump (FuncState *fs); +LUAI_FUNC void luaK_ret (FuncState *fs, int first, int nret); +LUAI_FUNC void luaK_patchlist (FuncState *fs, int list, int target); +LUAI_FUNC void luaK_patchtohere (FuncState *fs, int list); +LUAI_FUNC void luaK_concat (FuncState *fs, int *l1, int l2); +LUAI_FUNC int luaK_getlabel (FuncState *fs); +LUAI_FUNC void luaK_prefix (FuncState *fs, UnOpr op, expdesc *v); +LUAI_FUNC void luaK_infix (FuncState *fs, BinOpr op, expdesc *v); +LUAI_FUNC void luaK_posfix (FuncState *fs, BinOpr op, expdesc *v1, expdesc *v2); +LUAI_FUNC void luaK_setlist (FuncState *fs, int base, int nelems, int tostore); + + +#endif diff --git a/frameworks/lua.framework/Headers/ldebug.h b/frameworks/lua.framework/Headers/ldebug.h new file mode 100755 index 0000000..bc2376d --- /dev/null +++ b/frameworks/lua.framework/Headers/ldebug.h @@ -0,0 +1,33 @@ +/* +** $Id: ldebug.h,v 2.3.1.1 2007/12/27 13:02:25 roberto Exp $ +** Auxiliary functions from Debug Interface module +** See Copyright Notice in lua.h +*/ + +#ifndef ldebug_h +#define ldebug_h + + +#include "lstate.h" + + +#define pcRel(pc, p) (cast(int, (pc) - (p)->code) - 1) + +#define getline(f,pc) (((f)->lineinfo) ? (f)->lineinfo[pc] : 0) + +#define resethookcount(L) (L->hookcount = L->basehookcount) + + +LUAI_FUNC void luaG_typeerror (lua_State *L, const TValue *o, + const char *opname); +LUAI_FUNC void luaG_concaterror (lua_State *L, StkId p1, StkId p2); +LUAI_FUNC void luaG_aritherror (lua_State *L, const TValue *p1, + const TValue *p2); +LUAI_FUNC int luaG_ordererror (lua_State *L, const TValue *p1, + const TValue *p2); +LUAI_FUNC void luaG_runerror (lua_State *L, const char *fmt, ...); +LUAI_FUNC void luaG_errormsg (lua_State *L); +LUAI_FUNC int luaG_checkcode (const Proto *pt); +LUAI_FUNC int luaG_checkopenop (Instruction i); + +#endif diff --git a/frameworks/lua.framework/Headers/ldo.h b/frameworks/lua.framework/Headers/ldo.h new file mode 100755 index 0000000..c97537e --- /dev/null +++ b/frameworks/lua.framework/Headers/ldo.h @@ -0,0 +1,57 @@ +/* +** $Id: ldo.h,v 2.7.1.1 2007/12/27 13:02:25 roberto Exp $ +** Stack and Call structure of Lua +** See Copyright Notice in lua.h +*/ + +#ifndef ldo_h +#define ldo_h + + +#include "lobject.h" +#include "lstate.h" +#include "lzio.h" + + +#define luaD_checkstack(L,n) \ + if ((char *)L->stack_last - (char *)L->top <= (n)*(int)sizeof(TValue)) \ + luaD_growstack(L, n); \ + else condhardstacktests(luaD_reallocstack(L, L->stacksize - EXTRA_STACK - 1)); + + +#define incr_top(L) {luaD_checkstack(L,1); L->top++;} + +#define savestack(L,p) ((char *)(p) - (char *)L->stack) +#define restorestack(L,n) ((TValue *)((char *)L->stack + (n))) + +#define saveci(L,p) ((char *)(p) - (char *)L->base_ci) +#define restoreci(L,n) ((CallInfo *)((char *)L->base_ci + (n))) + + +/* results from luaD_precall */ +#define PCRLUA 0 /* initiated a call to a Lua function */ +#define PCRC 1 /* did a call to a C function */ +#define PCRYIELD 2 /* C funtion yielded */ + + +/* type of protected functions, to be ran by `runprotected' */ +typedef void (*Pfunc) (lua_State *L, void *ud); + +LUAI_FUNC int luaD_protectedparser (lua_State *L, ZIO *z, const char *name); +LUAI_FUNC void luaD_callhook (lua_State *L, int event, int line); +LUAI_FUNC int luaD_precall (lua_State *L, StkId func, int nresults); +LUAI_FUNC void luaD_call (lua_State *L, StkId func, int nResults); +LUAI_FUNC int luaD_pcall (lua_State *L, Pfunc func, void *u, + ptrdiff_t oldtop, ptrdiff_t ef); +LUAI_FUNC int luaD_poscall (lua_State *L, StkId firstResult); +LUAI_FUNC void luaD_reallocCI (lua_State *L, int newsize); +LUAI_FUNC void luaD_reallocstack (lua_State *L, int newsize); +LUAI_FUNC void luaD_growstack (lua_State *L, int n); + +LUAI_FUNC void luaD_throw (lua_State *L, int errcode); +LUAI_FUNC int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud); + +LUAI_FUNC void luaD_seterrorobj (lua_State *L, int errcode, StkId oldtop); + +#endif + diff --git a/frameworks/lua.framework/Headers/lfunc.h b/frameworks/lua.framework/Headers/lfunc.h new file mode 100755 index 0000000..d936be6 --- /dev/null +++ b/frameworks/lua.framework/Headers/lfunc.h @@ -0,0 +1,34 @@ +/* +** $Id: lfunc.h,v 2.4.1.1 2007/12/27 13:02:25 roberto Exp $ +** Auxiliary functions to manipulate prototypes and closures +** See Copyright Notice in lua.h +*/ + +#ifndef lfunc_h +#define lfunc_h + + +#include "lobject.h" + + +#define sizeCclosure(n) (cast(int, sizeof(CClosure)) + \ + cast(int, sizeof(TValue)*((n)-1))) + +#define sizeLclosure(n) (cast(int, sizeof(LClosure)) + \ + cast(int, sizeof(TValue *)*((n)-1))) + + +LUAI_FUNC Proto *luaF_newproto (lua_State *L); +LUAI_FUNC Closure *luaF_newCclosure (lua_State *L, int nelems, Table *e); +LUAI_FUNC Closure *luaF_newLclosure (lua_State *L, int nelems, Table *e); +LUAI_FUNC UpVal *luaF_newupval (lua_State *L); +LUAI_FUNC UpVal *luaF_findupval (lua_State *L, StkId level); +LUAI_FUNC void luaF_close (lua_State *L, StkId level); +LUAI_FUNC void luaF_freeproto (lua_State *L, Proto *f); +LUAI_FUNC void luaF_freeclosure (lua_State *L, Closure *c); +LUAI_FUNC void luaF_freeupval (lua_State *L, UpVal *uv); +LUAI_FUNC const char *luaF_getlocalname (const Proto *func, int local_number, + int pc); + + +#endif diff --git a/frameworks/lua.framework/Headers/lgc.h b/frameworks/lua.framework/Headers/lgc.h new file mode 100755 index 0000000..1280a27 --- /dev/null +++ b/frameworks/lua.framework/Headers/lgc.h @@ -0,0 +1,110 @@ +/* +** $Id: lgc.h,v 2.15.1.1 2007/12/27 13:02:25 roberto Exp $ +** Garbage Collector +** See Copyright Notice in lua.h +*/ + +#ifndef lgc_h +#define lgc_h + + +#include "lobject.h" + + +/* +** Possible states of the Garbage Collector +*/ +#define GCSpause 0 +#define GCSpropagate 1 +#define GCSsweepstring 2 +#define GCSsweep 3 +#define GCSfinalize 4 + + +/* +** some userful bit tricks +*/ +#define resetbits(x,m) ((x) &= cast(lu_byte, ~(m))) +#define setbits(x,m) ((x) |= (m)) +#define testbits(x,m) ((x) & (m)) +#define bitmask(b) (1<<(b)) +#define bit2mask(b1,b2) (bitmask(b1) | bitmask(b2)) +#define l_setbit(x,b) setbits(x, bitmask(b)) +#define resetbit(x,b) resetbits(x, bitmask(b)) +#define testbit(x,b) testbits(x, bitmask(b)) +#define set2bits(x,b1,b2) setbits(x, (bit2mask(b1, b2))) +#define reset2bits(x,b1,b2) resetbits(x, (bit2mask(b1, b2))) +#define test2bits(x,b1,b2) testbits(x, (bit2mask(b1, b2))) + + + +/* +** Layout for bit use in `marked' field: +** bit 0 - object is white (type 0) +** bit 1 - object is white (type 1) +** bit 2 - object is black +** bit 3 - for userdata: has been finalized +** bit 3 - for tables: has weak keys +** bit 4 - for tables: has weak values +** bit 5 - object is fixed (should not be collected) +** bit 6 - object is "super" fixed (only the main thread) +*/ + + +#define WHITE0BIT 0 +#define WHITE1BIT 1 +#define BLACKBIT 2 +#define FINALIZEDBIT 3 +#define KEYWEAKBIT 3 +#define VALUEWEAKBIT 4 +#define FIXEDBIT 5 +#define SFIXEDBIT 6 +#define WHITEBITS bit2mask(WHITE0BIT, WHITE1BIT) + + +#define iswhite(x) test2bits((x)->gch.marked, WHITE0BIT, WHITE1BIT) +#define isblack(x) testbit((x)->gch.marked, BLACKBIT) +#define isgray(x) (!isblack(x) && !iswhite(x)) + +#define otherwhite(g) (g->currentwhite ^ WHITEBITS) +#define isdead(g,v) ((v)->gch.marked & otherwhite(g) & WHITEBITS) + +#define changewhite(x) ((x)->gch.marked ^= WHITEBITS) +#define gray2black(x) l_setbit((x)->gch.marked, BLACKBIT) + +#define valiswhite(x) (iscollectable(x) && iswhite(gcvalue(x))) + +#define luaC_white(g) cast(lu_byte, (g)->currentwhite & WHITEBITS) + + +#define luaC_checkGC(L) { \ + condhardstacktests(luaD_reallocstack(L, L->stacksize - EXTRA_STACK - 1)); \ + if (G(L)->totalbytes >= G(L)->GCthreshold) \ + luaC_step(L); } + + +#define luaC_barrier(L,p,v) { if (valiswhite(v) && isblack(obj2gco(p))) \ + luaC_barrierf(L,obj2gco(p),gcvalue(v)); } + +#define luaC_barriert(L,t,v) { if (valiswhite(v) && isblack(obj2gco(t))) \ + luaC_barrierback(L,t); } + +#define luaC_objbarrier(L,p,o) \ + { if (iswhite(obj2gco(o)) && isblack(obj2gco(p))) \ + luaC_barrierf(L,obj2gco(p),obj2gco(o)); } + +#define luaC_objbarriert(L,t,o) \ + { if (iswhite(obj2gco(o)) && isblack(obj2gco(t))) luaC_barrierback(L,t); } + +LUAI_FUNC size_t luaC_separateudata (lua_State *L, int all); +LUAI_FUNC void luaC_callGCTM (lua_State *L); +LUAI_FUNC void luaC_freeall (lua_State *L); +LUAI_FUNC void luaC_step (lua_State *L); +LUAI_FUNC void luaC_fullgc (lua_State *L); +LUAI_FUNC void luaC_link (lua_State *L, GCObject *o, lu_byte tt); +LUAI_FUNC void luaC_linkupval (lua_State *L, UpVal *uv); +LUAI_FUNC void luaC_barrierf (lua_State *L, GCObject *o, GCObject *v); +LUAI_FUNC void luaC_barrierback (lua_State *L, Table *t); + + +#endif diff --git a/frameworks/lua.framework/Headers/llex.h b/frameworks/lua.framework/Headers/llex.h new file mode 100755 index 0000000..9a93e99 --- /dev/null +++ b/frameworks/lua.framework/Headers/llex.h @@ -0,0 +1,81 @@ +/* +** $Id: llex.h,v 1.58.1.1 2007/12/27 13:02:25 roberto Exp $ +** Lexical Analyzer +** See Copyright Notice in lua.h +*/ + +#ifndef llex_h +#define llex_h + +#include "lobject.h" +#include "lzio.h" + + +#define FIRST_RESERVED 257 + +/* maximum length of a reserved word */ +#define TOKEN_LEN (sizeof("function")/sizeof(char)) + + +/* +* WARNING: if you change the order of this enumeration, +* grep "ORDER RESERVED" +*/ +enum RESERVED { + /* terminal symbols denoted by reserved words */ + TK_AND = FIRST_RESERVED, TK_BREAK, + TK_DO, TK_ELSE, TK_ELSEIF, TK_END, TK_FALSE, TK_FOR, TK_FUNCTION, + TK_IF, TK_IN, TK_LOCAL, TK_NIL, TK_NOT, TK_OR, TK_REPEAT, + TK_RETURN, TK_THEN, TK_TRUE, TK_UNTIL, TK_WHILE, + /* other terminal symbols */ + TK_CONCAT, TK_DOTS, TK_EQ, TK_GE, TK_LE, TK_NE, TK_NUMBER, + TK_NAME, TK_STRING, TK_EOS +}; + +/* number of reserved words */ +#define NUM_RESERVED (cast(int, TK_WHILE-FIRST_RESERVED+1)) + + +/* array with token `names' */ +LUAI_DATA const char *const luaX_tokens []; + + +typedef union { + lua_Number r; + TString *ts; +} SemInfo; /* semantics information */ + + +typedef struct Token { + int token; + SemInfo seminfo; +} Token; + + +typedef struct LexState { + int current; /* current character (charint) */ + int linenumber; /* input line counter */ + int lastline; /* line of last token `consumed' */ + Token t; /* current token */ + Token lookahead; /* look ahead token */ + struct FuncState *fs; /* `FuncState' is private to the parser */ + struct lua_State *L; + ZIO *z; /* input stream */ + Mbuffer *buff; /* buffer for tokens */ + TString *source; /* current source name */ + char decpoint; /* locale decimal point */ +} LexState; + + +LUAI_FUNC void luaX_init (lua_State *L); +LUAI_FUNC void luaX_setinput (lua_State *L, LexState *ls, ZIO *z, + TString *source); +LUAI_FUNC TString *luaX_newstring (LexState *ls, const char *str, size_t l); +LUAI_FUNC void luaX_next (LexState *ls); +LUAI_FUNC void luaX_lookahead (LexState *ls); +LUAI_FUNC void luaX_lexerror (LexState *ls, const char *msg, int token); +LUAI_FUNC void luaX_syntaxerror (LexState *ls, const char *s); +LUAI_FUNC const char *luaX_token2str (LexState *ls, int token); + + +#endif diff --git a/frameworks/lua.framework/Headers/llimits.h b/frameworks/lua.framework/Headers/llimits.h new file mode 100755 index 0000000..899bcb5 --- /dev/null +++ b/frameworks/lua.framework/Headers/llimits.h @@ -0,0 +1,128 @@ +/* +** $Id: llimits.h,v 1.69.1.1 2007/12/27 13:02:25 roberto Exp $ +** Limits, basic types, and some other `installation-dependent' definitions +** See Copyright Notice in lua.h +*/ + +#ifndef llimits_h +#define llimits_h + + +#include <limits.h> +#include <stddef.h> + + +#include "lua.h" + + +typedef LUAI_UINT32 lu_int32; + +typedef LUAI_UMEM lu_mem; + +typedef LUAI_MEM l_mem; + + + +/* chars used as small naturals (so that `char' is reserved for characters) */ +typedef unsigned char lu_byte; + + +#define MAX_SIZET ((size_t)(~(size_t)0)-2) + +#define MAX_LUMEM ((lu_mem)(~(lu_mem)0)-2) + + +#define MAX_INT (INT_MAX-2) /* maximum value of an int (-2 for safety) */ + +/* +** conversion of pointer to integer +** this is for hashing only; there is no problem if the integer +** cannot hold the whole pointer value +*/ +#define IntPoint(p) ((unsigned int)(lu_mem)(p)) + + + +/* type to ensure maximum alignment */ +typedef LUAI_USER_ALIGNMENT_T L_Umaxalign; + + +/* result of a `usual argument conversion' over lua_Number */ +typedef LUAI_UACNUMBER l_uacNumber; + + +/* internal assertions for in-house debugging */ +#ifdef lua_assert + +#define check_exp(c,e) (lua_assert(c), (e)) +#define api_check(l,e) lua_assert(e) + +#else + +#define lua_assert(c) ((void)0) +#define check_exp(c,e) (e) +#define api_check luai_apicheck + +#endif + + +#ifndef UNUSED +#define UNUSED(x) ((void)(x)) /* to avoid warnings */ +#endif + + +#ifndef cast +#define cast(t, exp) ((t)(exp)) +#endif + +#define cast_byte(i) cast(lu_byte, (i)) +#define cast_num(i) cast(lua_Number, (i)) +#define cast_int(i) cast(int, (i)) + + + +/* +** type for virtual-machine instructions +** must be an unsigned with (at least) 4 bytes (see details in lopcodes.h) +*/ +typedef lu_int32 Instruction; + + + +/* maximum stack for a Lua function */ +#define MAXSTACK 250 + + + +/* minimum size for the string table (must be power of 2) */ +#ifndef MINSTRTABSIZE +#define MINSTRTABSIZE 32 +#endif + + +/* minimum size for string buffer */ +#ifndef LUA_MINBUFFER +#define LUA_MINBUFFER 32 +#endif + + +#ifndef lua_lock +#define lua_lock(L) ((void) 0) +#define lua_unlock(L) ((void) 0) +#endif + +#ifndef luai_threadyield +#define luai_threadyield(L) {lua_unlock(L); lua_lock(L);} +#endif + + +/* +** macro to control inclusion of some hard tests on stack reallocation +*/ +#ifndef HARDSTACKTESTS +#define condhardstacktests(x) ((void)0) +#else +#define condhardstacktests(x) x +#endif + +#endif diff --git a/frameworks/lua.framework/Headers/lmem.h b/frameworks/lua.framework/Headers/lmem.h new file mode 100755 index 0000000..a017f7a --- /dev/null +++ b/frameworks/lua.framework/Headers/lmem.h @@ -0,0 +1,49 @@ +/* +** $Id: lmem.h,v 1.31.1.1 2007/12/27 13:02:25 roberto Exp $ +** Interface to Memory Manager +** See Copyright Notice in lua.h +*/ + +#ifndef lmem_h +#define lmem_h + + +#include <stddef.h> + +#include "llimits.h" +#include "lua.h" + +#define MEMERRMSG "not enough memory" + + +#define luaM_reallocv(L,b,on,n,e) \ + ((cast(size_t, (n)+1) <= MAX_SIZET/(e)) ? /* +1 to avoid warnings */ \ + luaM_realloc_(L, (b), (on)*(e), (n)*(e)) : \ + luaM_toobig(L)) + +#define luaM_freemem(L, b, s) luaM_realloc_(L, (b), (s), 0) +#define luaM_free(L, b) luaM_realloc_(L, (b), sizeof(*(b)), 0) +#define luaM_freearray(L, b, n, t) luaM_reallocv(L, (b), n, 0, sizeof(t)) + +#define luaM_malloc(L,t) luaM_realloc_(L, NULL, 0, (t)) +#define luaM_new(L,t) cast(t *, luaM_malloc(L, sizeof(t))) +#define luaM_newvector(L,n,t) \ + cast(t *, luaM_reallocv(L, NULL, 0, n, sizeof(t))) + +#define luaM_growvector(L,v,nelems,size,t,limit,e) \ + if ((nelems)+1 > (size)) \ + ((v)=cast(t *, luaM_growaux_(L,v,&(size),sizeof(t),limit,e))) + +#define luaM_reallocvector(L, v,oldn,n,t) \ + ((v)=cast(t *, luaM_reallocv(L, v, oldn, n, sizeof(t)))) + + +LUAI_FUNC void *luaM_realloc_ (lua_State *L, void *block, size_t oldsize, + size_t size); +LUAI_FUNC void *luaM_toobig (lua_State *L); +LUAI_FUNC void *luaM_growaux_ (lua_State *L, void *block, int *size, + size_t size_elem, int limit, + const char *errormsg); + +#endif + diff --git a/frameworks/lua.framework/Headers/lobject.h b/frameworks/lua.framework/Headers/lobject.h new file mode 100755 index 0000000..5235f2e --- /dev/null +++ b/frameworks/lua.framework/Headers/lobject.h @@ -0,0 +1,381 @@ +/* +** $Id: lobject.h,v 2.20.1.2 2008/08/06 13:29:48 roberto Exp $ +** Type definitions for Lua objects +** See Copyright Notice in lua.h +*/ + + +#ifndef lobject_h +#define lobject_h + + +#include <stdarg.h> + + +#include "llimits.h" +#include "lua.h" + + +/* tags for values visible from Lua */ +#define LAST_TAG LUA_TTHREAD + +#define NUM_TAGS (LAST_TAG+1) + + +/* +** Extra tags for non-values +*/ +#define LUA_TPROTO (LAST_TAG+1) +#define LUA_TUPVAL (LAST_TAG+2) +#define LUA_TDEADKEY (LAST_TAG+3) + + +/* +** Union of all collectable objects +*/ +typedef union GCObject GCObject; + + +/* +** Common Header for all collectable objects (in macro form, to be +** included in other objects) +*/ +#define CommonHeader GCObject *next; lu_byte tt; lu_byte marked + + +/* +** Common header in struct form +*/ +typedef struct GCheader { + CommonHeader; +} GCheader; + + + + +/* +** Union of all Lua values +*/ +typedef union { + GCObject *gc; + void *p; + lua_Number n; + int b; +} Value; + + +/* +** Tagged Values +*/ + +#define TValuefields Value value; int tt + +typedef struct lua_TValue { + TValuefields; +} TValue; + + +/* Macros to test type */ +#define ttisnil(o) (ttype(o) == LUA_TNIL) +#define ttisnumber(o) (ttype(o) == LUA_TNUMBER) +#define ttisstring(o) (ttype(o) == LUA_TSTRING) +#define ttistable(o) (ttype(o) == LUA_TTABLE) +#define ttisfunction(o) (ttype(o) == LUA_TFUNCTION) +#define ttisboolean(o) (ttype(o) == LUA_TBOOLEAN) +#define ttisuserdata(o) (ttype(o) == LUA_TUSERDATA) +#define ttisthread(o) (ttype(o) == LUA_TTHREAD) +#define ttislightuserdata(o) (ttype(o) == LUA_TLIGHTUSERDATA) + +/* Macros to access values */ +#define ttype(o) ((o)->tt) +#define gcvalue(o) check_exp(iscollectable(o), (o)->value.gc) +#define pvalue(o) check_exp(ttislightuserdata(o), (o)->value.p) +#define nvalue(o) check_exp(ttisnumber(o), (o)->value.n) +#define rawtsvalue(o) check_exp(ttisstring(o), &(o)->value.gc->ts) +#define tsvalue(o) (&rawtsvalue(o)->tsv) +#define rawuvalue(o) check_exp(ttisuserdata(o), &(o)->value.gc->u) +#define uvalue(o) (&rawuvalue(o)->uv) +#define clvalue(o) check_exp(ttisfunction(o), &(o)->value.gc->cl) +#define hvalue(o) check_exp(ttistable(o), &(o)->value.gc->h) +#define bvalue(o) check_exp(ttisboolean(o), (o)->value.b) +#define thvalue(o) check_exp(ttisthread(o), &(o)->value.gc->th) + +#define l_isfalse(o) (ttisnil(o) || (ttisboolean(o) && bvalue(o) == 0)) + +/* +** for internal debug only +*/ +#define checkconsistency(obj) \ + lua_assert(!iscollectable(obj) || (ttype(obj) == (obj)->value.gc->gch.tt)) + +#define checkliveness(g,obj) \ + lua_assert(!iscollectable(obj) || \ + ((ttype(obj) == (obj)->value.gc->gch.tt) && !isdead(g, (obj)->value.gc))) + + +/* Macros to set values */ +#define setnilvalue(obj) ((obj)->tt=LUA_TNIL) + +#define setnvalue(obj,x) \ + { TValue *i_o=(obj); i_o->value.n=(x); i_o->tt=LUA_TNUMBER; } + +#define setpvalue(obj,x) \ + { TValue *i_o=(obj); i_o->value.p=(x); i_o->tt=LUA_TLIGHTUSERDATA; } + +#define setbvalue(obj,x) \ + { TValue *i_o=(obj); i_o->value.b=(x); i_o->tt=LUA_TBOOLEAN; } + +#define setsvalue(L,obj,x) \ + { TValue *i_o=(obj); \ + i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TSTRING; \ + checkliveness(G(L),i_o); } + +#define setuvalue(L,obj,x) \ + { TValue *i_o=(obj); \ + i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TUSERDATA; \ + checkliveness(G(L),i_o); } + +#define setthvalue(L,obj,x) \ + { TValue *i_o=(obj); \ + i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TTHREAD; \ + checkliveness(G(L),i_o); } + +#define setclvalue(L,obj,x) \ + { TValue *i_o=(obj); \ + i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TFUNCTION; \ + checkliveness(G(L),i_o); } + +#define sethvalue(L,obj,x) \ + { TValue *i_o=(obj); \ + i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TTABLE; \ + checkliveness(G(L),i_o); } + +#define setptvalue(L,obj,x) \ + { TValue *i_o=(obj); \ + i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TPROTO; \ + checkliveness(G(L),i_o); } + + + + +#define setobj(L,obj1,obj2) \ + { const TValue *o2=(obj2); TValue *o1=(obj1); \ + o1->value = o2->value; o1->tt=o2->tt; \ + checkliveness(G(L),o1); } + + +/* +** different types of sets, according to destination +*/ + +/* from stack to (same) stack */ +#define setobjs2s setobj +/* to stack (not from same stack) */ +#define setobj2s setobj +#define setsvalue2s setsvalue +#define sethvalue2s sethvalue +#define setptvalue2s setptvalue +/* from table to same table */ +#define setobjt2t setobj +/* to table */ +#define setobj2t setobj +/* to new object */ +#define setobj2n setobj +#define setsvalue2n setsvalue + +#define setttype(obj, tt) (ttype(obj) = (tt)) + + +#define iscollectable(o) (ttype(o) >= LUA_TSTRING) + + + +typedef TValue *StkId; /* index to stack elements */ + + +/* +** String headers for string table +*/ +typedef union TString { + L_Umaxalign dummy; /* ensures maximum alignment for strings */ + struct { + CommonHeader; + lu_byte reserved; + unsigned int hash; + size_t len; + } tsv; +} TString; + + +#define getstr(ts) cast(const char *, (ts) + 1) +#define svalue(o) getstr(rawtsvalue(o)) + + + +typedef union Udata { + L_Umaxalign dummy; /* ensures maximum alignment for `local' udata */ + struct { + CommonHeader; + struct Table *metatable; + struct Table *env; + size_t len; + } uv; +} Udata; + + + + +/* +** Function Prototypes +*/ +typedef struct Proto { + CommonHeader; + TValue *k; /* constants used by the function */ + Instruction *code; + struct Proto **p; /* functions defined inside the function */ + int *lineinfo; /* map from opcodes to source lines */ + struct LocVar *locvars; /* information about local variables */ + TString **upvalues; /* upvalue names */ + TString *source; + int sizeupvalues; + int sizek; /* size of `k' */ + int sizecode; + int sizelineinfo; + int sizep; /* size of `p' */ + int sizelocvars; + int linedefined; + int lastlinedefined; + GCObject *gclist; + lu_byte nups; /* number of upvalues */ + lu_byte numparams; + lu_byte is_vararg; + lu_byte maxstacksize; +} Proto; + + +/* masks for new-style vararg */ +#define VARARG_HASARG 1 +#define VARARG_ISVARARG 2 +#define VARARG_NEEDSARG 4 + + +typedef struct LocVar { + TString *varname; + int startpc; /* first point where variable is active */ + int endpc; /* first point where variable is dead */ +} LocVar; + + + +/* +** Upvalues +*/ + +typedef struct UpVal { + CommonHeader; + TValue *v; /* points to stack or to its own value */ + union { + TValue value; /* the value (when closed) */ + struct { /* double linked list (when open) */ + struct UpVal *prev; + struct UpVal *next; + } l; + } u; +} UpVal; + + +/* +** Closures +*/ + +#define ClosureHeader \ + CommonHeader; lu_byte isC; lu_byte nupvalues; GCObject *gclist; \ + struct Table *env + +typedef struct CClosure { + ClosureHeader; + lua_CFunction f; + TValue upvalue[1]; +} CClosure; + + +typedef struct LClosure { + ClosureHeader; + struct Proto *p; + UpVal *upvals[1]; +} LClosure; + + +typedef union Closure { + CClosure c; + LClosure l; +} Closure; + + +#define iscfunction(o) (ttype(o) == LUA_TFUNCTION && clvalue(o)->c.isC) +#define isLfunction(o) (ttype(o) == LUA_TFUNCTION && !clvalue(o)->c.isC) + + +/* +** Tables +*/ + +typedef union TKey { + struct { + TValuefields; + struct Node *next; /* for chaining */ + } nk; + TValue tvk; +} TKey; + + +typedef struct Node { + TValue i_val; + TKey i_key; +} Node; + + +typedef struct Table { + CommonHeader; + lu_byte flags; /* 1<<p means tagmethod(p) is not present */ + lu_byte lsizenode; /* log2 of size of `node' array */ + struct Table *metatable; + TValue *array; /* array part */ + Node *node; + Node *lastfree; /* any free position is before this position */ + GCObject *gclist; + int sizearray; /* size of `array' array */ +} Table; + + + +/* +** `module' operation for hashing (size is always a power of 2) +*/ +#define lmod(s,size) \ + (check_exp((size&(size-1))==0, (cast(int, (s) & ((size)-1))))) + + +#define twoto(x) (1<<(x)) +#define sizenode(t) (twoto((t)->lsizenode)) + + +#define luaO_nilobject (&luaO_nilobject_) + +LUAI_DATA const TValue luaO_nilobject_; + +#define ceillog2(x) (luaO_log2((x)-1) + 1) + +LUAI_FUNC int luaO_log2 (unsigned int x); +LUAI_FUNC int luaO_int2fb (unsigned int x); +LUAI_FUNC int luaO_fb2int (int x); +LUAI_FUNC int luaO_rawequalObj (const TValue *t1, const TValue *t2); +LUAI_FUNC int luaO_str2d (const char *s, lua_Number *result); +LUAI_FUNC const char *luaO_pushvfstring (lua_State *L, const char *fmt, + va_list argp); +LUAI_FUNC const char *luaO_pushfstring (lua_State *L, const char *fmt, ...); +LUAI_FUNC void luaO_chunkid (char *out, const char *source, size_t len); + + +#endif + diff --git a/frameworks/lua.framework/Headers/lopcodes.h b/frameworks/lua.framework/Headers/lopcodes.h new file mode 100755 index 0000000..03eb547 --- /dev/null +++ b/frameworks/lua.framework/Headers/lopcodes.h @@ -0,0 +1,268 @@ +/* +** $Id: lopcodes.h,v 1.125.1.1 2007/12/27 13:02:25 roberto Exp $ +** Opcodes for Lua virtual machine +** See Copyright Notice in lua.h +*/ + +#ifndef lopcodes_h +#define lopcodes_h + +#include "llimits.h" + + +/*=========================================================================== + We assume that instructions are unsigned numbers. + All instructions have an opcode in the first 6 bits. + Instructions can have the following fields: + `A' : 8 bits + `B' : 9 bits + `C' : 9 bits + `Bx' : 18 bits (`B' and `C' together) + `sBx' : signed Bx + + A signed argument is represented in excess K; that is, the number + value is the unsigned value minus K. K is exactly the maximum value + for that argument (so that -max is represented by 0, and +max is + represented by 2*max), which is half the maximum for the corresponding + unsigned argument. +===========================================================================*/ + + +enum OpMode {iABC, iABx, iAsBx}; /* basic instruction format */ + + +/* +** size and position of opcode arguments. +*/ +#define SIZE_C 9 +#define SIZE_B 9 +#define SIZE_Bx (SIZE_C + SIZE_B) +#define SIZE_A 8 + +#define SIZE_OP 6 + +#define POS_OP 0 +#define POS_A (POS_OP + SIZE_OP) +#define POS_C (POS_A + SIZE_A) +#define POS_B (POS_C + SIZE_C) +#define POS_Bx POS_C + + +/* +** limits for opcode arguments. +** we use (signed) int to manipulate most arguments, +** so they must fit in LUAI_BITSINT-1 bits (-1 for sign) +*/ +#if SIZE_Bx < LUAI_BITSINT-1 +#define MAXARG_Bx ((1<<SIZE_Bx)-1) +#define MAXARG_sBx (MAXARG_Bx>>1) /* `sBx' is signed */ +#else +#define MAXARG_Bx MAX_INT +#define MAXARG_sBx MAX_INT +#endif + + +#define MAXARG_A ((1<<SIZE_A)-1) +#define MAXARG_B ((1<<SIZE_B)-1) +#define MAXARG_C ((1<<SIZE_C)-1) + + +/* creates a mask with `n' 1 bits at position `p' */ +#define MASK1(n,p) ((~((~(Instruction)0)<<n))<<p) + +/* creates a mask with `n' 0 bits at position `p' */ +#define MASK0(n,p) (~MASK1(n,p)) + +/* +** the following macros help to manipulate instructions +*/ + +#define GET_OPCODE(i) (cast(OpCode, ((i)>>POS_OP) & MASK1(SIZE_OP,0))) +#define SET_OPCODE(i,o) ((i) = (((i)&MASK0(SIZE_OP,POS_OP)) | \ + ((cast(Instruction, o)<<POS_OP)&MASK1(SIZE_OP,POS_OP)))) + +#define GETARG_A(i) (cast(int, ((i)>>POS_A) & MASK1(SIZE_A,0))) +#define SETARG_A(i,u) ((i) = (((i)&MASK0(SIZE_A,POS_A)) | \ + ((cast(Instruction, u)<<POS_A)&MASK1(SIZE_A,POS_A)))) + +#define GETARG_B(i) (cast(int, ((i)>>POS_B) & MASK1(SIZE_B,0))) +#define SETARG_B(i,b) ((i) = (((i)&MASK0(SIZE_B,POS_B)) | \ + ((cast(Instruction, b)<<POS_B)&MASK1(SIZE_B,POS_B)))) + +#define GETARG_C(i) (cast(int, ((i)>>POS_C) & MASK1(SIZE_C,0))) +#define SETARG_C(i,b) ((i) = (((i)&MASK0(SIZE_C,POS_C)) | \ + ((cast(Instruction, b)<<POS_C)&MASK1(SIZE_C,POS_C)))) + +#define GETARG_Bx(i) (cast(int, ((i)>>POS_Bx) & MASK1(SIZE_Bx,0))) +#define SETARG_Bx(i,b) ((i) = (((i)&MASK0(SIZE_Bx,POS_Bx)) | \ + ((cast(Instruction, b)<<POS_Bx)&MASK1(SIZE_Bx,POS_Bx)))) + +#define GETARG_sBx(i) (GETARG_Bx(i)-MAXARG_sBx) +#define SETARG_sBx(i,b) SETARG_Bx((i),cast(unsigned int, (b)+MAXARG_sBx)) + + +#define CREATE_ABC(o,a,b,c) ((cast(Instruction, o)<<POS_OP) \ + | (cast(Instruction, a)<<POS_A) \ + | (cast(Instruction, b)<<POS_B) \ + | (cast(Instruction, c)<<POS_C)) + +#define CREATE_ABx(o,a,bc) ((cast(Instruction, o)<<POS_OP) \ + | (cast(Instruction, a)<<POS_A) \ + | (cast(Instruction, bc)<<POS_Bx)) + + +/* +** Macros to operate RK indices +*/ + +/* this bit 1 means constant (0 means register) */ +#define BITRK (1 << (SIZE_B - 1)) + +/* test whether value is a constant */ +#define ISK(x) ((x) & BITRK) + +/* gets the index of the constant */ +#define INDEXK(r) ((int)(r) & ~BITRK) + +#define MAXINDEXRK (BITRK - 1) + +/* code a constant index as a RK value */ +#define RKASK(x) ((x) | BITRK) + + +/* +** invalid register that fits in 8 bits +*/ +#define NO_REG MAXARG_A + + +/* +** R(x) - register +** Kst(x) - constant (in constant table) +** RK(x) == if ISK(x) then Kst(INDEXK(x)) else R(x) +*/ + + +/* +** grep "ORDER OP" if you change these enums +*/ + +typedef enum { +/*---------------------------------------------------------------------- +name args description +------------------------------------------------------------------------*/ +OP_MOVE,/* A B R(A) := R(B) */ +OP_LOADK,/* A Bx R(A) := Kst(Bx) */ +OP_LOADBOOL,/* A B C R(A) := (Bool)B; if (C) pc++ */ +OP_LOADNIL,/* A B R(A) := ... := R(B) := nil */ +OP_GETUPVAL,/* A B R(A) := UpValue[B] */ + +OP_GETGLOBAL,/* A Bx R(A) := Gbl[Kst(Bx)] */ +OP_GETTABLE,/* A B C R(A) := R(B)[RK(C)] */ + +OP_SETGLOBAL,/* A Bx Gbl[Kst(Bx)] := R(A) */ +OP_SETUPVAL,/* A B UpValue[B] := R(A) */ +OP_SETTABLE,/* A B C R(A)[RK(B)] := RK(C) */ + +OP_NEWTABLE,/* A B C R(A) := {} (size = B,C) */ + +OP_SELF,/* A B C R(A+1) := R(B); R(A) := R(B)[RK(C)] */ + +OP_ADD,/* A B C R(A) := RK(B) + RK(C) */ +OP_SUB,/* A B C R(A) := RK(B) - RK(C) */ +OP_MUL,/* A B C R(A) := RK(B) * RK(C) */ +OP_DIV,/* A B C R(A) := RK(B) / RK(C) */ +OP_MOD,/* A B C R(A) := RK(B) % RK(C) */ +OP_POW,/* A B C R(A) := RK(B) ^ RK(C) */ +OP_UNM,/* A B R(A) := -R(B) */ +OP_NOT,/* A B R(A) := not R(B) */ +OP_LEN,/* A B R(A) := length of R(B) */ + +OP_CONCAT,/* A B C R(A) := R(B).. ... ..R(C) */ + +OP_JMP,/* sBx pc+=sBx */ + +OP_EQ,/* A B C if ((RK(B) == RK(C)) ~= A) then pc++ */ +OP_LT,/* A B C if ((RK(B) < RK(C)) ~= A) then pc++ */ +OP_LE,/* A B C if ((RK(B) <= RK(C)) ~= A) then pc++ */ + +OP_TEST,/* A C if not (R(A) <=> C) then pc++ */ +OP_TESTSET,/* A B C if (R(B) <=> C) then R(A) := R(B) else pc++ */ + +OP_CALL,/* A B C R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) */ +OP_TAILCALL,/* A B C return R(A)(R(A+1), ... ,R(A+B-1)) */ +OP_RETURN,/* A B return R(A), ... ,R(A+B-2) (see note) */ + +OP_FORLOOP,/* A sBx R(A)+=R(A+2); + if R(A) <?= R(A+1) then { pc+=sBx; R(A+3)=R(A) }*/ +OP_FORPREP,/* A sBx R(A)-=R(A+2); pc+=sBx */ + +OP_TFORLOOP,/* A C R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); + if R(A+3) ~= nil then R(A+2)=R(A+3) else pc++ */ +OP_SETLIST,/* A B C R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B */ + +OP_CLOSE,/* A close all variables in the stack up to (>=) R(A)*/ +OP_CLOSURE,/* A Bx R(A) := closure(KPROTO[Bx], R(A), ... ,R(A+n)) */ + +OP_VARARG/* A B R(A), R(A+1), ..., R(A+B-1) = vararg */ +} OpCode; + + +#define NUM_OPCODES (cast(int, OP_VARARG) + 1) + + + +/*=========================================================================== + Notes: + (*) In OP_CALL, if (B == 0) then B = top. C is the number of returns - 1, + and can be 0: OP_CALL then sets `top' to last_result+1, so + next open instruction (OP_CALL, OP_RETURN, OP_SETLIST) may use `top'. + + (*) In OP_VARARG, if (B == 0) then use actual number of varargs and + set top (like in OP_CALL with C == 0). + + (*) In OP_RETURN, if (B == 0) then return up to `top' + + (*) In OP_SETLIST, if (B == 0) then B = `top'; + if (C == 0) then next `instruction' is real C + + (*) For comparisons, A specifies what condition the test should accept + (true or false). + + (*) All `skips' (pc++) assume that next instruction is a jump +===========================================================================*/ + + +/* +** masks for instruction properties. The format is: +** bits 0-1: op mode +** bits 2-3: C arg mode +** bits 4-5: B arg mode +** bit 6: instruction set register A +** bit 7: operator is a test +*/ + +enum OpArgMask { + OpArgN, /* argument is not used */ + OpArgU, /* argument is used */ + OpArgR, /* argument is a register or a jump offset */ + OpArgK /* argument is a constant or register/constant */ +}; + +LUAI_DATA const lu_byte luaP_opmodes[NUM_OPCODES]; + +#define getOpMode(m) (cast(enum OpMode, luaP_opmodes[m] & 3)) +#define getBMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 4) & 3)) +#define getCMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 2) & 3)) +#define testAMode(m) (luaP_opmodes[m] & (1 << 6)) +#define testTMode(m) (luaP_opmodes[m] & (1 << 7)) + + +LUAI_DATA const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */ + + +/* number of list items to accumulate before a SETLIST instruction */ +#define LFIELDS_PER_FLUSH 50 + + +#endif diff --git a/frameworks/lua.framework/Headers/lparser.h b/frameworks/lua.framework/Headers/lparser.h new file mode 100755 index 0000000..82f669e --- /dev/null +++ b/frameworks/lua.framework/Headers/lparser.h @@ -0,0 +1,82 @@ +/* +** $Id: lparser.h,v 1.57.1.1 2007/12/27 13:02:25 roberto Exp $ +** Lua Parser +** See Copyright Notice in lua.h +*/ + +#ifndef lparser_h +#define lparser_h + +#include "llimits.h" +#include "lobject.h" +#include "lzio.h" + + +/* +** Expression descriptor +*/ + +typedef enum { + VVOID, /* no value */ + VNIL, + VTRUE, + VFALSE, + VK, /* info = index of constant in `k' */ + VKNUM, /* nval = numerical value */ + VLOCAL, /* info = local register */ + VUPVAL, /* info = index of upvalue in `upvalues' */ + VGLOBAL, /* info = index of table; aux = index of global name in `k' */ + VINDEXED, /* info = table register; aux = index register (or `k') */ + VJMP, /* info = instruction pc */ + VRELOCABLE, /* info = instruction pc */ + VNONRELOC, /* info = result register */ + VCALL, /* info = instruction pc */ + VVARARG /* info = instruction pc */ +} expkind; + +typedef struct expdesc { + expkind k; + union { + struct { int info, aux; } s; + lua_Number nval; + } u; + int t; /* patch list of `exit when true' */ + int f; /* patch list of `exit when false' */ +} expdesc; + + +typedef struct upvaldesc { + lu_byte k; + lu_byte info; +} upvaldesc; + + +struct BlockCnt; /* defined in lparser.c */ + + +/* state needed to generate code for a given function */ +typedef struct FuncState { + Proto *f; /* current function header */ + Table *h; /* table to find (and reuse) elements in `k' */ + struct FuncState *prev; /* enclosing function */ + struct LexState *ls; /* lexical state */ + struct lua_State *L; /* copy of the Lua state */ + struct BlockCnt *bl; /* chain of current blocks */ + int pc; /* next position to code (equivalent to `ncode') */ + int lasttarget; /* `pc' of last `jump target' */ + int jpc; /* list of pending jumps to `pc' */ + int freereg; /* first free register */ + int nk; /* number of elements in `k' */ + int np; /* number of elements in `p' */ + short nlocvars; /* number of elements in `locvars' */ + lu_byte nactvar; /* number of active local variables */ + upvaldesc upvalues[LUAI_MAXUPVALUES]; /* upvalues */ + unsigned short actvar[LUAI_MAXVARS]; /* declared-variable stack */ +} FuncState; + + +LUAI_FUNC Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, + const char *name); + + +#endif diff --git a/frameworks/lua.framework/Headers/lstate.h b/frameworks/lua.framework/Headers/lstate.h new file mode 100755 index 0000000..3d9117f --- /dev/null +++ b/frameworks/lua.framework/Headers/lstate.h @@ -0,0 +1,169 @@ +/* +** $Id: lstate.h,v 2.24.1.2 2008/01/03 15:20:39 roberto Exp $ +** Global State +** See Copyright Notice in lua.h +*/ + +#ifndef lstate_h +#define lstate_h + +#include "lua.h" + +#include "lobject.h" +#include "ltm.h" +#include "lzio.h" + + + +struct lua_longjmp; /* defined in ldo.c */ + + +/* table of globals */ +#define gt(L) (&L->l_gt) + +/* registry */ +#define registry(L) (&G(L)->l_registry) + + +/* extra stack space to handle TM calls and some other extras */ +#define EXTRA_STACK 5 + + +#define BASIC_CI_SIZE 8 + +#define BASIC_STACK_SIZE (2*LUA_MINSTACK) + + + +typedef struct stringtable { + GCObject **hash; + lu_int32 nuse; /* number of elements */ + int size; +} stringtable; + + +/* +** informations about a call +*/ +typedef struct CallInfo { + StkId base; /* base for this function */ + StkId func; /* function index in the stack */ + StkId top; /* top for this function */ + const Instruction *savedpc; + int nresults; /* expected number of results from this function */ + int tailcalls; /* number of tail calls lost under this entry */ +} CallInfo; + + + +#define curr_func(L) (clvalue(L->ci->func)) +#define ci_func(ci) (clvalue((ci)->func)) +#define f_isLua(ci) (!ci_func(ci)->c.isC) +#define isLua(ci) (ttisfunction((ci)->func) && f_isLua(ci)) + + +/* +** `global state', shared by all threads of this state +*/ +typedef struct global_State { + stringtable strt; /* hash table for strings */ + lua_Alloc frealloc; /* function to reallocate memory */ + void *ud; /* auxiliary data to `frealloc' */ + lu_byte currentwhite; + lu_byte gcstate; /* state of garbage collector */ + int sweepstrgc; /* position of sweep in `strt' */ + GCObject *rootgc; /* list of all collectable objects */ + GCObject **sweepgc; /* position of sweep in `rootgc' */ + GCObject *gray; /* list of gray objects */ + GCObject *grayagain; /* list of objects to be traversed atomically */ + GCObject *weak; /* list of weak tables (to be cleared) */ + GCObject *tmudata; /* last element of list of userdata to be GC */ + Mbuffer buff; /* temporary buffer for string concatentation */ + lu_mem GCthreshold; + lu_mem totalbytes; /* number of bytes currently allocated */ + lu_mem estimate; /* an estimate of number of bytes actually in use */ + lu_mem gcdept; /* how much GC is `behind schedule' */ + int gcpause; /* size of pause between successive GCs */ + int gcstepmul; /* GC `granularity' */ + lua_CFunction panic; /* to be called in unprotected errors */ + TValue l_registry; + struct lua_State *mainthread; + UpVal uvhead; /* head of double-linked list of all open upvalues */ + struct Table *mt[NUM_TAGS]; /* metatables for basic types */ + TString *tmname[TM_N]; /* array with tag-method names */ +} global_State; + + +/* +** `per thread' state +*/ +struct lua_State { + CommonHeader; + lu_byte status; + StkId top; /* first free slot in the stack */ + StkId base; /* base of current function */ + global_State *l_G; + CallInfo *ci; /* call info for current function */ + const Instruction *savedpc; /* `savedpc' of current function */ + StkId stack_last; /* last free slot in the stack */ + StkId stack; /* stack base */ + CallInfo *end_ci; /* points after end of ci array*/ + CallInfo *base_ci; /* array of CallInfo's */ + int stacksize; + int size_ci; /* size of array `base_ci' */ + unsigned short nCcalls; /* number of nested C calls */ + unsigned short baseCcalls; /* nested C calls when resuming coroutine */ + lu_byte hookmask; + lu_byte allowhook; + int basehookcount; + int hookcount; + lua_Hook hook; + TValue l_gt; /* table of globals */ + TValue env; /* temporary place for environments */ + GCObject *openupval; /* list of open upvalues in this stack */ + GCObject *gclist; + struct lua_longjmp *errorJmp; /* current error recover point */ + ptrdiff_t errfunc; /* current error handling function (stack index) */ +}; + + +#define G(L) (L->l_G) + + +/* +** Union of all collectable objects +*/ +union GCObject { + GCheader gch; + union TString ts; + union Udata u; + union Closure cl; + struct Table h; + struct Proto p; + struct UpVal uv; + struct lua_State th; /* thread */ +}; + + +/* macros to convert a GCObject into a specific value */ +#define rawgco2ts(o) check_exp((o)->gch.tt == LUA_TSTRING, &((o)->ts)) +#define gco2ts(o) (&rawgco2ts(o)->tsv) +#define rawgco2u(o) check_exp((o)->gch.tt == LUA_TUSERDATA, &((o)->u)) +#define gco2u(o) (&rawgco2u(o)->uv) +#define gco2cl(o) check_exp((o)->gch.tt == LUA_TFUNCTION, &((o)->cl)) +#define gco2h(o) check_exp((o)->gch.tt == LUA_TTABLE, &((o)->h)) +#define gco2p(o) check_exp((o)->gch.tt == LUA_TPROTO, &((o)->p)) +#define gco2uv(o) check_exp((o)->gch.tt == LUA_TUPVAL, &((o)->uv)) +#define ngcotouv(o) \ + check_exp((o) == NULL || (o)->gch.tt == LUA_TUPVAL, &((o)->uv)) +#define gco2th(o) check_exp((o)->gch.tt == LUA_TTHREAD, &((o)->th)) + +/* macro to convert any Lua object into a GCObject */ +#define obj2gco(v) (cast(GCObject *, (v))) + + +LUAI_FUNC lua_State *luaE_newthread (lua_State *L); +LUAI_FUNC void luaE_freethread (lua_State *L, lua_State *L1); + +#endif + diff --git a/frameworks/lua.framework/Headers/lstring.h b/frameworks/lua.framework/Headers/lstring.h new file mode 100755 index 0000000..d909495 --- /dev/null +++ b/frameworks/lua.framework/Headers/lstring.h @@ -0,0 +1,31 @@ +/* +** $Id: lstring.h,v 1.43.1.1 2007/12/27 13:02:25 roberto Exp $ +** String table (keep all strings handled by Lua) +** See Copyright Notice in lua.h +*/ + +#ifndef lstring_h +#define lstring_h + + +#include "lgc.h" +#include "lobject.h" +#include "lstate.h" + + +#define sizestring(s) (sizeof(union TString)+((s)->len+1)*sizeof(char)) + +#define sizeudata(u) (sizeof(union Udata)+(u)->len) + +#define luaS_new(L, s) (luaS_newlstr(L, s, strlen(s))) +#define luaS_newliteral(L, s) (luaS_newlstr(L, "" s, \ + (sizeof(s)/sizeof(char))-1)) + +#define luaS_fix(s) l_setbit((s)->tsv.marked, FIXEDBIT) + +LUAI_FUNC void luaS_resize (lua_State *L, int newsize); +LUAI_FUNC Udata *luaS_newudata (lua_State *L, size_t s, Table *e); +LUAI_FUNC TString *luaS_newlstr (lua_State *L, const char *str, size_t l); + + +#endif diff --git a/frameworks/lua.framework/Headers/ltable.h b/frameworks/lua.framework/Headers/ltable.h new file mode 100755 index 0000000..c043deb --- /dev/null +++ b/frameworks/lua.framework/Headers/ltable.h @@ -0,0 +1,40 @@ +/* +** $Id: ltable.h,v 2.10.1.1 2007/12/27 13:02:25 roberto Exp $ +** Lua tables (hash) +** See Copyright Notice in lua.h +*/ + +#ifndef ltable_h +#define ltable_h + +#include "lobject.h" + + +#define gnode(t,i) (&(t)->node[i]) +#define gkey(n) (&(n)->i_key.nk) +#define gval(n) (&(n)->i_val) +#define gnext(n) ((n)->i_key.nk.next) + +#define key2tval(n) (&(n)->i_key.tvk) + + +LUAI_FUNC const TValue *luaH_getnum (Table *t, int key); +LUAI_FUNC TValue *luaH_setnum (lua_State *L, Table *t, int key); +LUAI_FUNC const TValue *luaH_getstr (Table *t, TString *key); +LUAI_FUNC TValue *luaH_setstr (lua_State *L, Table *t, TString *key); +LUAI_FUNC const TValue *luaH_get (Table *t, const TValue *key); +LUAI_FUNC TValue *luaH_set (lua_State *L, Table *t, const TValue *key); +LUAI_FUNC Table *luaH_new (lua_State *L, int narray, int lnhash); +LUAI_FUNC void luaH_resizearray (lua_State *L, Table *t, int nasize); +LUAI_FUNC void luaH_free (lua_State *L, Table *t); +LUAI_FUNC int luaH_next (lua_State *L, Table *t, StkId key); +LUAI_FUNC int luaH_getn (Table *t); + + +#if defined(LUA_DEBUG) +LUAI_FUNC Node *luaH_mainposition (const Table *t, const TValue *key); +LUAI_FUNC int luaH_isdummy (Node *n); +#endif + + +#endif diff --git a/frameworks/lua.framework/Headers/ltm.h b/frameworks/lua.framework/Headers/ltm.h new file mode 100755 index 0000000..c55b234 --- /dev/null +++ b/frameworks/lua.framework/Headers/ltm.h @@ -0,0 +1,54 @@ +/* +** $Id: ltm.h,v 2.6.1.1 2007/12/27 13:02:25 roberto Exp $ +** Tag methods +** See Copyright Notice in lua.h +*/ + +#ifndef ltm_h +#define ltm_h + + +#include "lobject.h" + + +/* +* WARNING: if you change the order of this enumeration, +* grep "ORDER TM" +*/ +typedef enum { + TM_INDEX, + TM_NEWINDEX, + TM_GC, + TM_MODE, + TM_EQ, /* last tag method with `fast' access */ + TM_ADD, + TM_SUB, + TM_MUL, + TM_DIV, + TM_MOD, + TM_POW, + TM_UNM, + TM_LEN, + TM_LT, + TM_LE, + TM_CONCAT, + TM_CALL, + TM_N /* number of elements in the enum */ +} TMS; + + + +#define gfasttm(g,et,e) ((et) == NULL ? NULL : \ + ((et)->flags & (1u<<(e))) ? NULL : luaT_gettm(et, e, (g)->tmname[e])) + +#define fasttm(l,et,e) gfasttm(G(l), et, e) + +LUAI_DATA const char *const luaT_typenames[]; + + +LUAI_FUNC const TValue *luaT_gettm (Table *events, TMS event, TString *ename); +LUAI_FUNC const TValue *luaT_gettmbyobj (lua_State *L, const TValue *o, + TMS event); +LUAI_FUNC void luaT_init (lua_State *L); + +#endif diff --git a/frameworks/lua.framework/Headers/lua.h b/frameworks/lua.framework/Headers/lua.h new file mode 100755 index 0000000..0210934 --- /dev/null +++ b/frameworks/lua.framework/Headers/lua.h @@ -0,0 +1,388 @@ +/* +** $Id: lua.h,v 1.218.1.5 2008/08/06 13:30:12 roberto Exp $ +** Lua - An Extensible Extension Language +** Lua.org, PUC-Rio, Brazil (http://www.lua.org) +** See Copyright Notice at the end of this file +*/ + + +#ifndef lua_h +#define lua_h + +#include <stdarg.h> +#include <stddef.h> + + +#include "luaconf.h" + + +#define LUA_VERSION "Lua 5.1" +#define LUA_RELEASE "Lua 5.1.4" +#define LUA_VERSION_NUM 501 +#define LUA_COPYRIGHT "Copyright (C) 1994-2008 Lua.org, PUC-Rio" +#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes" + + +/* mark for precompiled code (`<esc>Lua') */ +#define LUA_SIGNATURE "\033Lua" + +/* option for multiple returns in `lua_pcall' and `lua_call' */ +#define LUA_MULTRET (-1) + + +/* +** pseudo-indices +*/ +#define LUA_REGISTRYINDEX (-10000) +#define LUA_ENVIRONINDEX (-10001) +#define LUA_GLOBALSINDEX (-10002) +#define lua_upvalueindex(i) (LUA_GLOBALSINDEX-(i)) + + +/* thread status; 0 is OK */ +#define LUA_YIELD 1 +#define LUA_ERRRUN 2 +#define LUA_ERRSYNTAX 3 +#define LUA_ERRMEM 4 +#define LUA_ERRERR 5 + + +typedef struct lua_State lua_State; + +typedef int (*lua_CFunction) (lua_State *L); + + +/* +** functions that read/write blocks when loading/dumping Lua chunks +*/ +typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz); + +typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud); + + +/* +** prototype for memory-allocation functions +*/ +typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); + + +/* +** basic types +*/ +#define LUA_TNONE (-1) + +#define LUA_TNIL 0 +#define LUA_TBOOLEAN 1 +#define LUA_TLIGHTUSERDATA 2 +#define LUA_TNUMBER 3 +#define LUA_TSTRING 4 +#define LUA_TTABLE 5 +#define LUA_TFUNCTION 6 +#define LUA_TUSERDATA 7 +#define LUA_TTHREAD 8 + + + +/* minimum Lua stack available to a C function */ +#define LUA_MINSTACK 20 + + +/* +** generic extra include file +*/ +#if defined(LUA_USER_H) +#include LUA_USER_H +#endif + + +/* type of numbers in Lua */ +typedef LUA_NUMBER lua_Number; + + +/* type for integer functions */ +typedef LUA_INTEGER lua_Integer; + + + +/* +** state manipulation +*/ +LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud); +LUA_API void (lua_close) (lua_State *L); +LUA_API lua_State *(lua_newthread) (lua_State *L); + +LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); + + +/* +** basic stack manipulation +*/ +LUA_API int (lua_gettop) (lua_State *L); +LUA_API void (lua_settop) (lua_State *L, int idx); +LUA_API void (lua_pushvalue) (lua_State *L, int idx); +LUA_API void (lua_remove) (lua_State *L, int idx); +LUA_API void (lua_insert) (lua_State *L, int idx); +LUA_API void (lua_replace) (lua_State *L, int idx); +LUA_API int (lua_checkstack) (lua_State *L, int sz); + +LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); + + +/* +** access functions (stack -> C) +*/ + +LUA_API int (lua_isnumber) (lua_State *L, int idx); +LUA_API int (lua_isstring) (lua_State *L, int idx); +LUA_API int (lua_iscfunction) (lua_State *L, int idx); +LUA_API int (lua_isuserdata) (lua_State *L, int idx); +LUA_API int (lua_type) (lua_State *L, int idx); +LUA_API const char *(lua_typename) (lua_State *L, int tp); + +LUA_API int (lua_equal) (lua_State *L, int idx1, int idx2); +LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); +LUA_API int (lua_lessthan) (lua_State *L, int idx1, int idx2); + +LUA_API lua_Number (lua_tonumber) (lua_State *L, int idx); +LUA_API lua_Integer (lua_tointeger) (lua_State *L, int idx); +LUA_API int (lua_toboolean) (lua_State *L, int idx); +LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); +LUA_API size_t (lua_objlen) (lua_State *L, int idx); +LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); +LUA_API void *(lua_touserdata) (lua_State *L, int idx); +LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); +LUA_API const void *(lua_topointer) (lua_State *L, int idx); + + +/* +** push functions (C -> stack) +*/ +LUA_API void (lua_pushnil) (lua_State *L); +LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); +LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); +LUA_API void (lua_pushlstring) (lua_State *L, const char *s, size_t l); +LUA_API void (lua_pushstring) (lua_State *L, const char *s); +LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, + va_list argp); +LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); +LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n); +LUA_API void (lua_pushboolean) (lua_State *L, int b); +LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p); +LUA_API int (lua_pushthread) (lua_State *L); + + +/* +** get functions (Lua -> stack) +*/ +LUA_API void (lua_gettable) (lua_State *L, int idx); +LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k); +LUA_API void (lua_rawget) (lua_State *L, int idx); +LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n); +LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); +LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz); +LUA_API int (lua_getmetatable) (lua_State *L, int objindex); +LUA_API void (lua_getfenv) (lua_State *L, int idx); + + +/* +** set functions (stack -> Lua) +*/ +LUA_API void (lua_settable) (lua_State *L, int idx); +LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); +LUA_API void (lua_rawset) (lua_State *L, int idx); +LUA_API void (lua_rawseti) (lua_State *L, int idx, int n); +LUA_API int (lua_setmetatable) (lua_State *L, int objindex); +LUA_API int (lua_setfenv) (lua_State *L, int idx); + + +/* +** `load' and `call' functions (load and run Lua code) +*/ +LUA_API void (lua_call) (lua_State *L, int nargs, int nresults); +LUA_API int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); +LUA_API int (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud); +LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, + const char *chunkname); + +LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); + + +/* +** coroutine functions +*/ +LUA_API int (lua_yield) (lua_State *L, int nresults); +LUA_API int (lua_resume) (lua_State *L, int narg); +LUA_API int (lua_status) (lua_State *L); + +/* +** garbage-collection function and options +*/ + +#define LUA_GCSTOP 0 +#define LUA_GCRESTART 1 +#define LUA_GCCOLLECT 2 +#define LUA_GCCOUNT 3 +#define LUA_GCCOUNTB 4 +#define LUA_GCSTEP 5 +#define LUA_GCSETPAUSE 6 +#define LUA_GCSETSTEPMUL 7 + +LUA_API int (lua_gc) (lua_State *L, int what, int data); + + +/* +** miscellaneous functions +*/ + +LUA_API int (lua_error) (lua_State *L); + +LUA_API int (lua_next) (lua_State *L, int idx); + +LUA_API void (lua_concat) (lua_State *L, int n); + +LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); +LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud); + + + +/* +** =============================================================== +** some useful macros +** =============================================================== +*/ + +#define lua_pop(L,n) lua_settop(L, -(n)-1) + +#define lua_newtable(L) lua_createtable(L, 0, 0) + +#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) + +#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) + +#define lua_strlen(L,i) lua_objlen(L, (i)) + +#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) +#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) +#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) +#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL) +#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN) +#define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD) +#define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE) +#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0) + +#define lua_pushliteral(L, s) \ + lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) + +#define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, (s)) +#define lua_getglobal(L,s) lua_getfield(L, LUA_GLOBALSINDEX, (s)) + +#define lua_tostring(L,i) lua_tolstring(L, (i), NULL) + + + +/* +** compatibility macros and functions +*/ + +#define lua_open() luaL_newstate() + +#define lua_getregistry(L) lua_pushvalue(L, LUA_REGISTRYINDEX) + +#define lua_getgccount(L) lua_gc(L, LUA_GCCOUNT, 0) + +#define lua_Chunkreader lua_Reader +#define lua_Chunkwriter lua_Writer + + +/* hack */ +LUA_API void lua_setlevel (lua_State *from, lua_State *to); + + +/* +** {====================================================================== +** Debug API +** ======================================================================= +*/ + + +/* +** Event codes +*/ +#define LUA_HOOKCALL 0 +#define LUA_HOOKRET 1 +#define LUA_HOOKLINE 2 +#define LUA_HOOKCOUNT 3 +#define LUA_HOOKTAILRET 4 + + +/* +** Event masks +*/ +#define LUA_MASKCALL (1 << LUA_HOOKCALL) +#define LUA_MASKRET (1 << LUA_HOOKRET) +#define LUA_MASKLINE (1 << LUA_HOOKLINE) +#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) + +typedef struct lua_Debug lua_Debug; /* activation record */ + + +/* Functions to be called by the debuger in specific events */ +typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); + + +LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar); +LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar); +LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n); +LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n); + +LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count); +LUA_API lua_Hook lua_gethook (lua_State *L); +LUA_API int lua_gethookmask (lua_State *L); +LUA_API int lua_gethookcount (lua_State *L); + + +struct lua_Debug { + int event; + const char *name; /* (n) */ + const char *namewhat; /* (n) `global', `local', `field', `method' */ + const char *what; /* (S) `Lua', `C', `main', `tail' */ + const char *source; /* (S) */ + int currentline; /* (l) */ + int nups; /* (u) number of upvalues */ + int linedefined; /* (S) */ + int lastlinedefined; /* (S) */ + char short_src[LUA_IDSIZE]; /* (S) */ + /* private part */ + int i_ci; /* active function */ +}; + +/* }====================================================================== */ + + +/****************************************************************************** +* Copyright (C) 1994-2008 Lua.org, PUC-Rio. All rights reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +******************************************************************************/ + + +#endif diff --git a/frameworks/lua.framework/Headers/luaconf.h b/frameworks/lua.framework/Headers/luaconf.h new file mode 100755 index 0000000..659d94c --- /dev/null +++ b/frameworks/lua.framework/Headers/luaconf.h @@ -0,0 +1,753 @@ +/* +** $Id: luaconf.h,v 1.82.1.7 2008/02/11 16:25:08 roberto Exp $ +** Configuration file for Lua +** See Copyright Notice in lua.h +*/ + + +#ifndef lconfig_h +#define lconfig_h + +#include <limits.h> +#include <stddef.h> + + +/* +** ================================================================== +** Search for "@@" to find all configurable definitions. +** =================================================================== +*/ + + +/* +@@ LUA_ANSI controls the use of non-ansi features. +** CHANGE it (define it) if you want Lua to avoid the use of any +** non-ansi feature or library. +*/ +#if defined(__STRICT_ANSI__) +#define LUA_ANSI +#endif + + +#if !defined(LUA_ANSI) && defined(_WIN32) +#define LUA_WIN +#endif + +#if defined(LUA_USE_LINUX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* needs an extra library: -ldl */ +#define LUA_USE_READLINE /* needs some extra libraries */ +#endif + +#if defined(LUA_USE_MACOSX) +#define LUA_USE_POSIX +#define LUA_DL_DYLD /* does not need extra library */ +#endif + + + +/* +@@ LUA_USE_POSIX includes all functionallity listed as X/Open System +@* Interfaces Extension (XSI). +** CHANGE it (define it) if your system is XSI compatible. +*/ +#if defined(LUA_USE_POSIX) +#define LUA_USE_MKSTEMP +#define LUA_USE_ISATTY +#define LUA_USE_POPEN +#define LUA_USE_ULONGJMP +#endif + + +/* +@@ LUA_PATH and LUA_CPATH are the names of the environment variables that +@* Lua check to set its paths. +@@ LUA_INIT is the name of the environment variable that Lua +@* checks for initialization code. +** CHANGE them if you want different names. +*/ +#define LUA_PATH "LUA_PATH" +#define LUA_CPATH "LUA_CPATH" +#define LUA_INIT "LUA_INIT" + + +/* +@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for +@* Lua libraries. +@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for +@* C libraries. +** CHANGE them if your machine has a non-conventional directory +** hierarchy or if you want to install your libraries in +** non-conventional directories. +*/ + +// BEGIN WAX PATCH +#ifndef WAX_SCRIPTS_DIR +#define WAX_SCRIPTS_DIR "scripts" +#endif + +#define LUA_PATH_DEFAULT WAX_SCRIPTS_DIR "/?.lua;" WAX_SCRIPTS_DIR "/?/init.lua;" WAX_SCRIPTS_DIR "/?.dat;"\ + "?.lua;" "?/init.lua;" "?.dat;" +#define LUA_CPATH_DEFAULT "" + +#ifndef WAX_LUA_INIT_SCRIPT +#define WAX_LUA_INIT_SCRIPT "AppDelegate" +#endif +// END WAX PATCH + +/* +@@ LUA_DIRSEP is the directory separator (for submodules). +** CHANGE it if your machine does not use "/" as the directory separator +** and is not Windows. (On Windows Lua automatically uses "\".) +*/ +#if defined(_WIN32) +#define LUA_DIRSEP "\\" +#else +#define LUA_DIRSEP "/" +#endif + + +/* +@@ LUA_PATHSEP is the character that separates templates in a path. +@@ LUA_PATH_MARK is the string that marks the substitution points in a +@* template. +@@ LUA_EXECDIR in a Windows path is replaced by the executable's +@* directory. +@@ LUA_IGMARK is a mark to ignore all before it when bulding the +@* luaopen_ function name. +** CHANGE them if for some reason your system cannot use those +** characters. (E.g., if one of those characters is a common character +** in file/directory names.) Probably you do not need to change them. +*/ +#define LUA_PATHSEP ";" +#define LUA_PATH_MARK "?" +#define LUA_EXECDIR "!" +#define LUA_IGMARK "-" + + +/* +@@ LUA_INTEGER is the integral type used by lua_pushinteger/lua_tointeger. +** CHANGE that if ptrdiff_t is not adequate on your machine. (On most +** machines, ptrdiff_t gives a good choice between int or long.) +*/ +#define LUA_INTEGER ptrdiff_t + + +/* +@@ LUA_API is a mark for all core API functions. +@@ LUALIB_API is a mark for all standard library functions. +** CHANGE them if you need to define those functions in some special way. +** For instance, if you want to create one Windows DLL with the core and +** the libraries, you may want to use the following definition (define +** LUA_BUILD_AS_DLL to get it). +*/ +#if defined(LUA_BUILD_AS_DLL) + +#if defined(LUA_CORE) || defined(LUA_LIB) +#define LUA_API __declspec(dllexport) +#else +#define LUA_API __declspec(dllimport) +#endif + +#else + +#define LUA_API extern + +#endif + +/* more often than not the libs go together with the core */ +#define LUALIB_API LUA_API + + +/* +@@ LUAI_FUNC is a mark for all extern functions that are not to be +@* exported to outside modules. +@@ LUAI_DATA is a mark for all extern (const) variables that are not to +@* be exported to outside modules. +** CHANGE them if you need to mark them in some special way. Elf/gcc +** (versions 3.2 and later) mark them as "hidden" to optimize access +** when Lua is compiled as a shared library. +*/ +#if defined(luaall_c) +#define LUAI_FUNC static +#define LUAI_DATA /* empty */ + +#elif defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \ + defined(__ELF__) +#define LUAI_FUNC __attribute__((visibility("hidden"))) extern +#define LUAI_DATA LUAI_FUNC + +#else +#define LUAI_FUNC extern +#define LUAI_DATA extern +#endif + + + +/* +@@ LUA_QL describes how error messages quote program elements. +** CHANGE it if you want a different appearance. +*/ +#define LUA_QL(x) "'" x "'" +#define LUA_QS LUA_QL("%s") + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +@* of a function in debug information. +** CHANGE it if you want a different size. +*/ +#define LUA_IDSIZE 60 + + +/* +** {================================================================== +** Stand-alone configuration +** =================================================================== +*/ + +#if defined(lua_c) || defined(luaall_c) + +/* +@@ lua_stdin_is_tty detects whether the standard input is a 'tty' (that +@* is, whether we're running lua interactively). +** CHANGE it if you have a better definition for non-POSIX/non-Windows +** systems. +*/ +#if defined(LUA_USE_ISATTY) +#include <unistd.h> +#define lua_stdin_is_tty() isatty(0) +#elif defined(LUA_WIN) +#include <io.h> +#include <stdio.h> +#define lua_stdin_is_tty() _isatty(_fileno(stdin)) +#else +#define lua_stdin_is_tty() 1 /* assume stdin is a tty */ +#endif + + +/* +@@ LUA_PROMPT is the default prompt used by stand-alone Lua. +@@ LUA_PROMPT2 is the default continuation prompt used by stand-alone Lua. +** CHANGE them if you want different prompts. (You can also change the +** prompts dynamically, assigning to globals _PROMPT/_PROMPT2.) +*/ +#define LUA_PROMPT "> " +#define LUA_PROMPT2 ">> " + + +/* +@@ LUA_PROGNAME is the default name for the stand-alone Lua program. +** CHANGE it if your stand-alone interpreter has a different name and +** your system is not able to detect that name automatically. +*/ +#define LUA_PROGNAME "lua" + + +/* +@@ LUA_MAXINPUT is the maximum length for an input line in the +@* stand-alone interpreter. +** CHANGE it if you need longer lines. +*/ +#define LUA_MAXINPUT 512 + + +/* +@@ lua_readline defines how to show a prompt and then read a line from +@* the standard input. +@@ lua_saveline defines how to "save" a read line in a "history". +@@ lua_freeline defines how to free a line read by lua_readline. +** CHANGE them if you want to improve this functionality (e.g., by using +** GNU readline and history facilities). +*/ +#if defined(LUA_USE_READLINE) +#include <stdio.h> +#include <readline/readline.h> +#include <readline/history.h> +#define lua_readline(L,b,p) ((void)L, ((b)=readline(p)) != NULL) +#define lua_saveline(L,idx) \ + if (lua_strlen(L,idx) > 0) /* non-empty line? */ \ + add_history(lua_tostring(L, idx)); /* add it to history */ +#define lua_freeline(L,b) ((void)L, free(b)) +#else +#define lua_readline(L,b,p) \ + ((void)L, fputs(p, stdout), fflush(stdout), /* show prompt */ \ + fgets(b, LUA_MAXINPUT, stdin) != NULL) /* get line */ +#define lua_saveline(L,idx) { (void)L; (void)idx; } +#define lua_freeline(L,b) { (void)L; (void)b; } +#endif + +#endif + +/* }================================================================== */ + + +/* +@@ LUAI_GCPAUSE defines the default pause between garbage-collector cycles +@* as a percentage. +** CHANGE it if you want the GC to run faster or slower (higher values +** mean larger pauses which mean slower collection.) You can also change +** this value dynamically. +*/ +#define LUAI_GCPAUSE 200 /* 200% (wait memory to double before next GC) */ + + +/* +@@ LUAI_GCMUL defines the default speed of garbage collection relative to +@* memory allocation as a percentage. +** CHANGE it if you want to change the granularity of the garbage +** collection. (Higher values mean coarser collections. 0 represents +** infinity, where each step performs a full collection.) You can also +** change this value dynamically. +*/ +#define LUAI_GCMUL 200 /* GC runs 'twice the speed' of memory allocation */ + + + +/* +@@ LUA_COMPAT_GETN controls compatibility with old getn behavior. +** CHANGE it (define it) if you want exact compatibility with the +** behavior of setn/getn in Lua 5.0. +*/ +#undef LUA_COMPAT_GETN + +/* +@@ LUA_COMPAT_LOADLIB controls compatibility about global loadlib. +** CHANGE it to undefined as soon as you do not need a global 'loadlib' +** function (the function is still available as 'package.loadlib'). +*/ +#undef LUA_COMPAT_LOADLIB + +/* +@@ LUA_COMPAT_VARARG controls compatibility with old vararg feature. +** CHANGE it to undefined as soon as your programs use only '...' to +** access vararg parameters (instead of the old 'arg' table). +*/ +#define LUA_COMPAT_VARARG + +/* +@@ LUA_COMPAT_MOD controls compatibility with old math.mod function. +** CHANGE it to undefined as soon as your programs use 'math.fmod' or +** the new '%' operator instead of 'math.mod'. +*/ +#define LUA_COMPAT_MOD + +/* +@@ LUA_COMPAT_LSTR controls compatibility with old long string nesting +@* facility. +** CHANGE it to 2 if you want the old behaviour, or undefine it to turn +** off the advisory error when nesting [[...]]. +*/ +#define LUA_COMPAT_LSTR 1 + +/* +@@ LUA_COMPAT_GFIND controls compatibility with old 'string.gfind' name. +** CHANGE it to undefined as soon as you rename 'string.gfind' to +** 'string.gmatch'. +*/ +#define LUA_COMPAT_GFIND + +/* +@@ LUA_COMPAT_OPENLIB controls compatibility with old 'luaL_openlib' +@* behavior. +** CHANGE it to undefined as soon as you replace to 'luaL_register' +** your uses of 'luaL_openlib' +*/ +#define LUA_COMPAT_OPENLIB + + + +/* +@@ luai_apicheck is the assert macro used by the Lua-C API. +** CHANGE luai_apicheck if you want Lua to perform some checks in the +** parameters it gets from API calls. This may slow down the interpreter +** a bit, but may be quite useful when debugging C code that interfaces +** with Lua. A useful redefinition is to use assert.h. +*/ +#if defined(LUA_USE_APICHECK) +#include <assert.h> +#define luai_apicheck(L,o) { (void)L; assert(o); } +#else +#define luai_apicheck(L,o) { (void)L; } +#endif + + +/* +@@ LUAI_BITSINT defines the number of bits in an int. +** CHANGE here if Lua cannot automatically detect the number of bits of +** your machine. Probably you do not need to change this. +*/ +/* avoid overflows in comparison */ +#if INT_MAX-20 < 32760 +#define LUAI_BITSINT 16 +#elif INT_MAX > 2147483640L +/* int has at least 32 bits */ +#define LUAI_BITSINT 32 +#else +#error "you must define LUA_BITSINT with number of bits in an integer" +#endif + + +/* +@@ LUAI_UINT32 is an unsigned integer with at least 32 bits. +@@ LUAI_INT32 is an signed integer with at least 32 bits. +@@ LUAI_UMEM is an unsigned integer big enough to count the total +@* memory used by Lua. +@@ LUAI_MEM is a signed integer big enough to count the total memory +@* used by Lua. +** CHANGE here if for some weird reason the default definitions are not +** good enough for your machine. (The definitions in the 'else' +** part always works, but may waste space on machines with 64-bit +** longs.) Probably you do not need to change this. +*/ +#if LUAI_BITSINT >= 32 +#define LUAI_UINT32 unsigned int +#define LUAI_INT32 int +#define LUAI_MAXINT32 INT_MAX +#define LUAI_UMEM size_t +#define LUAI_MEM ptrdiff_t +#else +/* 16-bit ints */ +#define LUAI_UINT32 unsigned long +#define LUAI_INT32 long +#define LUAI_MAXINT32 LONG_MAX +#define LUAI_UMEM unsigned long +#define LUAI_MEM long +#endif + + +/* +@@ LUAI_MAXCALLS limits the number of nested calls. +** CHANGE it if you need really deep recursive calls. This limit is +** arbitrary; its only purpose is to stop infinite recursion before +** exhausting memory. +*/ +#define LUAI_MAXCALLS 20000 + + +/* +@@ LUAI_MAXCSTACK limits the number of Lua stack slots that a C function +@* can use. +** CHANGE it if you need lots of (Lua) stack space for your C +** functions. This limit is arbitrary; its only purpose is to stop C +** functions to consume unlimited stack space. (must be smaller than +** -LUA_REGISTRYINDEX) +*/ +#define LUAI_MAXCSTACK 8000 + + + +/* +** {================================================================== +** CHANGE (to smaller values) the following definitions if your system +** has a small C stack. (Or you may want to change them to larger +** values if your system has a large C stack and these limits are +** too rigid for you.) Some of these constants control the size of +** stack-allocated arrays used by the compiler or the interpreter, while +** others limit the maximum number of recursive calls that the compiler +** or the interpreter can perform. Values too large may cause a C stack +** overflow for some forms of deep constructs. +** =================================================================== +*/ + + +/* +@@ LUAI_MAXCCALLS is the maximum depth for nested C calls (short) and +@* syntactical nested non-terminals in a program. +*/ +#define LUAI_MAXCCALLS 200 + + +/* +@@ LUAI_MAXVARS is the maximum number of local variables per function +@* (must be smaller than 250). +*/ +#define LUAI_MAXVARS 200 + + +/* +@@ LUAI_MAXUPVALUES is the maximum number of upvalues per function +@* (must be smaller than 250). +*/ +#define LUAI_MAXUPVALUES 60 + + +/* +@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. +*/ +#define LUAL_BUFFERSIZE BUFSIZ + +/* }================================================================== */ + + + + +/* +** {================================================================== +@@ LUA_NUMBER is the type of numbers in Lua. +** CHANGE the following definitions only if you want to build Lua +** with a number type different from double. You may also need to +** change lua_number2int & lua_number2integer. +** =================================================================== +*/ + +#define LUA_NUMBER_DOUBLE +#define LUA_NUMBER double + +/* +@@ LUAI_UACNUMBER is the result of an 'usual argument conversion' +@* over a number. +*/ +#define LUAI_UACNUMBER double + + +/* +@@ LUA_NUMBER_SCAN is the format for reading numbers. +@@ LUA_NUMBER_FMT is the format for writing numbers. +@@ lua_number2str converts a number to a string. +@@ LUAI_MAXNUMBER2STR is maximum size of previous conversion. +@@ lua_str2number converts a string to a number. +*/ +#define LUA_NUMBER_SCAN "%lf" +#define LUA_NUMBER_FMT "%.14g" +#define lua_number2str(s,n) sprintf((s), LUA_NUMBER_FMT, (n)) +#define LUAI_MAXNUMBER2STR 32 /* 16 digits, sign, point, and \0 */ +#define lua_str2number(s,p) strtod((s), (p)) + + +/* +@@ The luai_num* macros define the primitive operations over numbers. +*/ +#if defined(LUA_CORE) +#include <math.h> +#define luai_numadd(a,b) ((a)+(b)) +#define luai_numsub(a,b) ((a)-(b)) +#define luai_nummul(a,b) ((a)*(b)) +#define luai_numdiv(a,b) ((a)/(b)) +#define luai_nummod(a,b) ((a) - floor((a)/(b))*(b)) +#define luai_numpow(a,b) (pow(a,b)) +#define luai_numunm(a) (-(a)) +#define luai_numeq(a,b) ((a)==(b)) +#define luai_numlt(a,b) ((a)<(b)) +#define luai_numle(a,b) ((a)<=(b)) +#define luai_numisnan(a) (!luai_numeq((a), (a))) +#endif + + +/* +@@ lua_number2int is a macro to convert lua_Number to int. +@@ lua_number2integer is a macro to convert lua_Number to lua_Integer. +** CHANGE them if you know a faster way to convert a lua_Number to +** int (with any rounding method and without throwing errors) in your +** system. In Pentium machines, a naive typecast from double to int +** in C is extremely slow, so any alternative is worth trying. +*/ + +/* On a Pentium, resort to a trick */ +#if defined(LUA_NUMBER_DOUBLE) && !defined(LUA_ANSI) && !defined(__SSE2__) && \ + (defined(__i386) || defined (_M_IX86) || defined(__i386__)) + +/* On a Microsoft compiler, use assembler */ +#if defined(_MSC_VER) + +#define lua_number2int(i,d) __asm fld d __asm fistp i +#define lua_number2integer(i,n) lua_number2int(i, n) + +/* the next trick should work on any Pentium, but sometimes clashes + with a DirectX idiosyncrasy */ +#else + +union luai_Cast { double l_d; long l_l; }; +#define lua_number2int(i,d) \ + { volatile union luai_Cast u; u.l_d = (d) + 6755399441055744.0; (i) = u.l_l; } +#define lua_number2integer(i,n) lua_number2int(i, n) + +#endif + + +/* this option always works, but may be slow */ +#else +#define lua_number2int(i,d) ((i)=(int)(d)) +#define lua_number2integer(i,d) ((i)=(lua_Integer)(d)) + +#endif + +/* }================================================================== */ + + +/* +@@ LUAI_USER_ALIGNMENT_T is a type that requires maximum alignment. +** CHANGE it if your system requires alignments larger than double. (For +** instance, if your system supports long doubles and they must be +** aligned in 16-byte boundaries, then you should add long double in the +** union.) Probably you do not need to change this. +*/ +#define LUAI_USER_ALIGNMENT_T union { double u; void *s; long l; } + + +/* +@@ LUAI_THROW/LUAI_TRY define how Lua does exception handling. +** CHANGE them if you prefer to use longjmp/setjmp even with C++ +** or if want/don't to use _longjmp/_setjmp instead of regular +** longjmp/setjmp. By default, Lua handles errors with exceptions when +** compiling as C++ code, with _longjmp/_setjmp when asked to use them, +** and with longjmp/setjmp otherwise. +*/ +#if defined(__cplusplus) +/* C++ exceptions */ +#define LUAI_THROW(L,c) throw(c) +#define LUAI_TRY(L,c,a) try { a } catch(...) \ + { if ((c)->status == 0) (c)->status = -1; } +#define luai_jmpbuf int /* dummy variable */ + +#elif defined(LUA_USE_ULONGJMP) +/* in Unix, try _longjmp/_setjmp (more efficient) */ +#define LUAI_THROW(L,c) _longjmp((c)->b, 1) +#define LUAI_TRY(L,c,a) if (_setjmp((c)->b) == 0) { a } +#define luai_jmpbuf jmp_buf + +#else +/* default handling with long jumps */ +#define LUAI_THROW(L,c) longjmp((c)->b, 1) +#define LUAI_TRY(L,c,a) if (setjmp((c)->b) == 0) { a } +#define luai_jmpbuf jmp_buf + +#endif + + +/* +@@ LUA_MAXCAPTURES is the maximum number of captures that a pattern +@* can do during pattern-matching. +** CHANGE it if you need more captures. This limit is arbitrary. +*/ +#define LUA_MAXCAPTURES 32 + + +/* +@@ lua_tmpnam is the function that the OS library uses to create a +@* temporary name. +@@ LUA_TMPNAMBUFSIZE is the maximum size of a name created by lua_tmpnam. +** CHANGE them if you have an alternative to tmpnam (which is considered +** insecure) or if you want the original tmpnam anyway. By default, Lua +** uses tmpnam except when POSIX is available, where it uses mkstemp. +*/ +#if defined(loslib_c) || defined(luaall_c) + +#if defined(LUA_USE_MKSTEMP) +#include <unistd.h> +#define LUA_TMPNAMBUFSIZE 32 +#define lua_tmpnam(b,e) { \ + strcpy(b, "/tmp/lua_XXXXXX"); \ + e = mkstemp(b); \ + if (e != -1) close(e); \ + e = (e == -1); } + +#else +#define LUA_TMPNAMBUFSIZE L_tmpnam +#define lua_tmpnam(b,e) { e = (tmpnam(b) == NULL); } +#endif + +#endif + + +/* +@@ lua_popen spawns a new process connected to the current one through +@* the file streams. +** CHANGE it if you have a way to implement it in your system. +*/ +#if defined(LUA_USE_POPEN) + +#define lua_popen(L,c,m) ((void)L, fflush(NULL), popen(c,m)) +#define lua_pclose(L,file) ((void)L, (pclose(file) != -1)) + +#elif defined(LUA_WIN) + +#define lua_popen(L,c,m) ((void)L, _popen(c,m)) +#define lua_pclose(L,file) ((void)L, (_pclose(file) != -1)) + +#else + +#define lua_popen(L,c,m) ((void)((void)c, m), \ + luaL_error(L, LUA_QL("popen") " not supported"), (FILE*)0) +#define lua_pclose(L,file) ((void)((void)L, file), 0) + +#endif + +/* +@@ LUA_DL_* define which dynamic-library system Lua should use. +** CHANGE here if Lua has problems choosing the appropriate +** dynamic-library system for your platform (either Windows' DLL, Mac's +** dyld, or Unix's dlopen). If your system is some kind of Unix, there +** is a good chance that it has dlopen, so LUA_DL_DLOPEN will work for +** it. To use dlopen you also need to adapt the src/Makefile (probably +** adding -ldl to the linker options), so Lua does not select it +** automatically. (When you change the makefile to add -ldl, you must +** also add -DLUA_USE_DLOPEN.) +** If you do not want any kind of dynamic library, undefine all these +** options. +** By default, _WIN32 gets LUA_DL_DLL and MAC OS X gets LUA_DL_DYLD. +*/ +#if defined(LUA_USE_DLOPEN) +#define LUA_DL_DLOPEN +#endif + +#if defined(LUA_WIN) +#define LUA_DL_DLL +#endif + + +/* +@@ LUAI_EXTRASPACE allows you to add user-specific data in a lua_State +@* (the data goes just *before* the lua_State pointer). +** CHANGE (define) this if you really need that. This value must be +** a multiple of the maximum alignment required for your machine. +*/ +#define LUAI_EXTRASPACE 0 + + +/* +@@ luai_userstate* allow user-specific actions on threads. +** CHANGE them if you defined LUAI_EXTRASPACE and need to do something +** extra when a thread is created/deleted/resumed/yielded. +*/ +#define luai_userstateopen(L) ((void)L) +#define luai_userstateclose(L) ((void)L) +#define luai_userstatethread(L,L1) ((void)L) +#define luai_userstatefree(L) ((void)L) +#define luai_userstateresume(L,n) ((void)L) +#define luai_userstateyield(L,n) ((void)L) + + +/* +@@ LUA_INTFRMLEN is the length modifier for integer conversions +@* in 'string.format'. +@@ LUA_INTFRM_T is the integer type correspoding to the previous length +@* modifier. +** CHANGE them if your system supports long long or does not support long. +*/ + +#if defined(LUA_USELONGLONG) + +#define LUA_INTFRMLEN "ll" +#define LUA_INTFRM_T long long + +#else + +#define LUA_INTFRMLEN "l" +#define LUA_INTFRM_T long + +#endif + + + +/* =================================================================== */ + +/* +** Local configuration. You can use this space to add your redefinitions +** without modifying the main part of the file. +*/ + + + +#endif + diff --git a/frameworks/lua.framework/Headers/lualib.h b/frameworks/lua.framework/Headers/lualib.h new file mode 100755 index 0000000..08d8df3 --- /dev/null +++ b/frameworks/lua.framework/Headers/lualib.h @@ -0,0 +1,53 @@ +/* +** $Id: lualib.h,v 1.36.1.1 2007/12/27 13:02:25 roberto Exp $ +** Lua standard libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lualib_h +#define lualib_h + +#include "lua.h" + + +/* Key to file-handle type */ +#define LUA_FILEHANDLE "FILE*" + + +#define LUA_COLIBNAME "coroutine" +LUALIB_API int (luaopen_base) (lua_State *L); + +#define LUA_TABLIBNAME "table" +LUALIB_API int (luaopen_table) (lua_State *L); + +#define LUA_IOLIBNAME "io" +LUALIB_API int (luaopen_io) (lua_State *L); + +#define LUA_OSLIBNAME "os" +LUALIB_API int (luaopen_os) (lua_State *L); + +#define LUA_STRLIBNAME "string" +LUALIB_API int (luaopen_string) (lua_State *L); + +#define LUA_MATHLIBNAME "math" +LUALIB_API int (luaopen_math) (lua_State *L); + +#define LUA_DBLIBNAME "debug" +LUALIB_API int (luaopen_debug) (lua_State *L); + +#define LUA_LOADLIBNAME "package" +LUALIB_API int (luaopen_package) (lua_State *L); + + +/* open all previous libraries */ +LUALIB_API void (luaL_openlibs) (lua_State *L); + + + +#ifndef lua_assert +#define lua_assert(x) ((void)0) +#endif + + +#endif diff --git a/frameworks/lua.framework/Headers/lundump.h b/frameworks/lua.framework/Headers/lundump.h new file mode 100755 index 0000000..491d691 --- /dev/null +++ b/frameworks/lua.framework/Headers/lundump.h @@ -0,0 +1,36 @@ +/* +** $Id: lundump.h,v 1.37.1.1 2007/12/27 13:02:25 roberto Exp $ +** load precompiled Lua chunks +** See Copyright Notice in lua.h +*/ + +#ifndef lundump_h +#define lundump_h + +#include "lobject.h" +#include "lzio.h" + +/* load one chunk; from lundump.c */ +LUAI_FUNC Proto* luaU_undump (lua_State* L, ZIO* Z, Mbuffer* buff, const char* name); + +/* make header; from lundump.c */ +LUAI_FUNC void luaU_header (char* h); + +/* dump one chunk; from ldump.c */ +LUAI_FUNC int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, void* data, int strip); + +#ifdef luac_c +/* print one chunk; from print.c */ +LUAI_FUNC void luaU_print (const Proto* f, int full); +#endif + +/* for header of binary files -- this is Lua 5.1 */ +#define LUAC_VERSION 0x51 + +/* for header of binary files -- this is the official format */ +#define LUAC_FORMAT 0 + +/* size of header of binary files */ +#define LUAC_HEADERSIZE 12 + +#endif diff --git a/frameworks/lua.framework/Headers/lvm.h b/frameworks/lua.framework/Headers/lvm.h new file mode 100755 index 0000000..484121b --- /dev/null +++ b/frameworks/lua.framework/Headers/lvm.h @@ -0,0 +1,36 @@ +/* +** $Id: lvm.h,v 2.5.1.1 2007/12/27 13:02:25 roberto Exp $ +** Lua virtual machine +** See Copyright Notice in lua.h +*/ + +#ifndef lvm_h +#define lvm_h + + +#include "ldo.h" +#include "lobject.h" +#include "ltm.h" + + +#define tostring(L,o) ((ttype(o) == LUA_TSTRING) || (luaV_tostring(L, o))) + +#define tonumber(o,n) (ttype(o) == LUA_TNUMBER || \ + (((o) = luaV_tonumber(o,n)) != NULL)) + +#define equalobj(L,o1,o2) \ + (ttype(o1) == ttype(o2) && luaV_equalval(L, o1, o2)) + + +LUAI_FUNC int luaV_lessthan (lua_State *L, const TValue *l, const TValue *r); +LUAI_FUNC int luaV_equalval (lua_State *L, const TValue *t1, const TValue *t2); +LUAI_FUNC const TValue *luaV_tonumber (const TValue *obj, TValue *n); +LUAI_FUNC int luaV_tostring (lua_State *L, StkId obj); +LUAI_FUNC void luaV_gettable (lua_State *L, const TValue *t, TValue *key, + StkId val); +LUAI_FUNC void luaV_settable (lua_State *L, const TValue *t, TValue *key, + StkId val); +LUAI_FUNC void luaV_execute (lua_State *L, int nexeccalls); +LUAI_FUNC void luaV_concat (lua_State *L, int total, int last); + +#endif diff --git a/frameworks/lua.framework/Headers/lzio.h b/frameworks/lua.framework/Headers/lzio.h new file mode 100755 index 0000000..38c60b1 --- /dev/null +++ b/frameworks/lua.framework/Headers/lzio.h @@ -0,0 +1,67 @@ +/* +** $Id: lzio.h,v 1.21.1.1 2007/12/27 13:02:25 roberto Exp $ +** Buffered streams +** See Copyright Notice in lua.h +*/ + + +#ifndef lzio_h +#define lzio_h + +#include "lua.h" + +#include "lmem.h" + + +#define EOZ (-1) /* end of stream */ + +typedef struct Zio ZIO; + +#define char2int(c) cast(int, cast(unsigned char, (c))) + +#define zgetc(z) (((z)->n--)>0 ? char2int(*(z)->p++) : luaZ_fill(z)) + +typedef struct Mbuffer { + char *buffer; + size_t n; + size_t buffsize; +} Mbuffer; + +#define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0) + +#define luaZ_buffer(buff) ((buff)->buffer) +#define luaZ_sizebuffer(buff) ((buff)->buffsize) +#define luaZ_bufflen(buff) ((buff)->n) + +#define luaZ_resetbuffer(buff) ((buff)->n = 0) + + +#define luaZ_resizebuffer(L, buff, size) \ + (luaM_reallocvector(L, (buff)->buffer, (buff)->buffsize, size, char), \ + (buff)->buffsize = size) + +#define luaZ_freebuffer(L, buff) luaZ_resizebuffer(L, buff, 0) + + +LUAI_FUNC char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n); +LUAI_FUNC void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader, + void *data); +LUAI_FUNC size_t luaZ_read (ZIO* z, void* b, size_t n); /* read next n bytes */ +LUAI_FUNC int luaZ_lookahead (ZIO *z); + + + +/* --------- Private Part ------------------ */ + +struct Zio { + size_t n; /* bytes still unread */ + const char *p; /* current position in buffer */ + lua_Reader reader; + void* data; /* additional data */ + lua_State *L; /* Lua state (for reader) */ +}; + + +LUAI_FUNC int luaZ_fill (ZIO *z); + +#endif diff --git a/frameworks/lua.framework/Info.plist b/frameworks/lua.framework/Info.plist new file mode 100644 index 0000000..9373d56 --- /dev/null +++ b/frameworks/lua.framework/Info.plist Binary files differ diff --git a/frameworks/lua.framework/Modules/module.modulemap b/frameworks/lua.framework/Modules/module.modulemap new file mode 100644 index 0000000..ac244fc --- /dev/null +++ b/frameworks/lua.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module lua { + umbrella header "lua.h" + + export * + module * { export * } +} diff --git a/frameworks/lua.framework/_CodeSignature/CodeDirectory b/frameworks/lua.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..469cc6b --- /dev/null +++ b/frameworks/lua.framework/_CodeSignature/CodeDirectory Binary files differ diff --git a/frameworks/lua.framework/_CodeSignature/CodeRequirements b/frameworks/lua.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..17d72a4 --- /dev/null +++ b/frameworks/lua.framework/_CodeSignature/CodeRequirements Binary files differ diff --git a/frameworks/lua.framework/_CodeSignature/CodeResources b/frameworks/lua.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..c05ceea --- /dev/null +++ b/frameworks/lua.framework/_CodeSignature/CodeResources @@ -0,0 +1,303 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict> + <key>Headers/lapi.h</key> + <data> + ye9tuQS3QGGvRHv/rpSC5QQEiMA= + </data> + <key>Headers/lauxlib.h</key> + <data> + vjD4J4J9eklyFG1PKg12HlNXlF0= + </data> + <key>Headers/lcode.h</key> + <data> + jCMMxyLDWr/EFv2NXMGOQXAqyms= + </data> + <key>Headers/ldebug.h</key> + <data> + eYovOfzJPzd/sBIzxA7i39t6PmI= + </data> + <key>Headers/ldo.h</key> + <data> + A3o8b9Mfl3erPPRoZRTB6cxAxpM= + </data> + <key>Headers/lfunc.h</key> + <data> + ztNvgOz/Yf95hLfPFxaA5ra7kl8= + </data> + <key>Headers/lgc.h</key> + <data> + QZsNYd/FrMxqj54QkScUX8FOq6E= + </data> + <key>Headers/llex.h</key> + <data> + mZhPRCsWG6/mYHFkdOos/O7UIeA= + </data> + <key>Headers/llimits.h</key> + <data> + tbgsFowJ2G+8daI4+aI7JVFsLkU= + </data> + <key>Headers/lmem.h</key> + <data> + 6T7o5WHj4s5QW98rq5D7srZJ6aE= + </data> + <key>Headers/lobject.h</key> + <data> + PfrTeFOV6E3hGbOEr2R4KtK/3Mk= + </data> + <key>Headers/lopcodes.h</key> + <data> + 4XrIw5gRp/Jz9QyVpH6WSa5nglk= + </data> + <key>Headers/lparser.h</key> + <data> + aYX2TYNGczroSj1q4ywCrikDokc= + </data> + <key>Headers/lstate.h</key> + <data> + bYpE4TK6jydDk29AeAAxkMQQqy8= + </data> + <key>Headers/lstring.h</key> + <data> + rNqb+CgazboA0ymBDAF0OpAxuhA= + </data> + <key>Headers/ltable.h</key> + <data> + GsrkiPtWhGjLhfGxC26Ry6jCBxQ= + </data> + <key>Headers/ltm.h</key> + <data> + 4H3h4vHfZYe/PFm1doR7ygTvLlk= + </data> + <key>Headers/lua.h</key> + <data> + nu7T27mOaZ2bA5Vm8odK/r/7Cio= + </data> + <key>Headers/luaconf.h</key> + <data> + n0RDQGWw/GGoW9HdM1Kn8aweWno= + </data> + <key>Headers/lualib.h</key> + <data> + FXDRGiuMVNMaoI8FvSnttqdEpJQ= + </data> + <key>Headers/lundump.h</key> + <data> + ZZKo+v5MiRn+kB+5faeg/qcOYDg= + </data> + <key>Headers/lvm.h</key> + <data> + XNLsKelm3gMVwWpkSeR4nP2S2CE= + </data> + <key>Headers/lzio.h</key> + <data> + iDLbHpCx/c9Xcev98Z1D7Ovpcv8= + </data> + <key>Info.plist</key> + <data> + nPA9yuWsPE+n1Kgt+40UaDr9zVM= + </data> + <key>Modules/module.modulemap</key> + <data> + d1mKka5DNIauD7TEL/A55VG1bR8= + </data> + </dict> + <key>files2</key> + <dict> + <key>Headers/lapi.h</key> + <data> + ye9tuQS3QGGvRHv/rpSC5QQEiMA= + </data> + <key>Headers/lauxlib.h</key> + <data> + vjD4J4J9eklyFG1PKg12HlNXlF0= + </data> + <key>Headers/lcode.h</key> + <data> + jCMMxyLDWr/EFv2NXMGOQXAqyms= + </data> + <key>Headers/ldebug.h</key> + <data> + eYovOfzJPzd/sBIzxA7i39t6PmI= + </data> + <key>Headers/ldo.h</key> + <data> + A3o8b9Mfl3erPPRoZRTB6cxAxpM= + </data> + <key>Headers/lfunc.h</key> + <data> + ztNvgOz/Yf95hLfPFxaA5ra7kl8= + </data> + <key>Headers/lgc.h</key> + <data> + QZsNYd/FrMxqj54QkScUX8FOq6E= + </data> + <key>Headers/llex.h</key> + <data> + mZhPRCsWG6/mYHFkdOos/O7UIeA= + </data> + <key>Headers/llimits.h</key> + <data> + tbgsFowJ2G+8daI4+aI7JVFsLkU= + </data> + <key>Headers/lmem.h</key> + <data> + 6T7o5WHj4s5QW98rq5D7srZJ6aE= + </data> + <key>Headers/lobject.h</key> + <data> + PfrTeFOV6E3hGbOEr2R4KtK/3Mk= + </data> + <key>Headers/lopcodes.h</key> + <data> + 4XrIw5gRp/Jz9QyVpH6WSa5nglk= + </data> + <key>Headers/lparser.h</key> + <data> + aYX2TYNGczroSj1q4ywCrikDokc= + </data> + <key>Headers/lstate.h</key> + <data> + bYpE4TK6jydDk29AeAAxkMQQqy8= + </data> + <key>Headers/lstring.h</key> + <data> + rNqb+CgazboA0ymBDAF0OpAxuhA= + </data> + <key>Headers/ltable.h</key> + <data> + GsrkiPtWhGjLhfGxC26Ry6jCBxQ= + </data> + <key>Headers/ltm.h</key> + <data> + 4H3h4vHfZYe/PFm1doR7ygTvLlk= + </data> + <key>Headers/lua.h</key> + <data> + nu7T27mOaZ2bA5Vm8odK/r/7Cio= + </data> + <key>Headers/luaconf.h</key> + <data> + n0RDQGWw/GGoW9HdM1Kn8aweWno= + </data> + <key>Headers/lualib.h</key> + <data> + FXDRGiuMVNMaoI8FvSnttqdEpJQ= + </data> + <key>Headers/lundump.h</key> + <data> + ZZKo+v5MiRn+kB+5faeg/qcOYDg= + </data> + <key>Headers/lvm.h</key> + <data> + XNLsKelm3gMVwWpkSeR4nP2S2CE= + </data> + <key>Headers/lzio.h</key> + <data> + iDLbHpCx/c9Xcev98Z1D7Ovpcv8= + </data> + <key>Modules/module.modulemap</key> + <data> + d1mKka5DNIauD7TEL/A55VG1bR8= + </data> + </dict> + <key>rules</key> + <dict> + <key>^</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/frameworks/lua.framework/_CodeSignature/CodeSignature b/frameworks/lua.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..986762e --- /dev/null +++ b/frameworks/lua.framework/_CodeSignature/CodeSignature Binary files differ diff --git a/frameworks/lua.framework/lua b/frameworks/lua.framework/lua new file mode 100644 index 0000000..05e362e --- /dev/null +++ b/frameworks/lua.framework/lua Binary files differ diff --git a/frameworks/wax.framework/Headers/ProtocolLoader.h b/frameworks/wax.framework/Headers/ProtocolLoader.h new file mode 100755 index 0000000..dc33dcb --- /dev/null +++ b/frameworks/wax.framework/Headers/ProtocolLoader.h @@ -0,0 +1,12 @@ +// Many protocols will work from wax out of the box. But some need to be preloaded. +// If the protocol you are using isn't found, just add the protocol to this object +// +// This seems to be a bug, or there is a runtime method I'm unaware of + +#import <UIKit/UIKit.h> + +@interface ProtocolLoader : NSObject <UIApplicationDelegate, UIWebViewDelegate, UIActionSheetDelegate, UIAlertViewDelegate, UISearchBarDelegate, UITextViewDelegate, UITabBarControllerDelegate> {} +@end + +@implementation ProtocolLoader +@end diff --git a/frameworks/wax.framework/Headers/WaxPatch-Prefix.pch b/frameworks/wax.framework/Headers/WaxPatch-Prefix.pch new file mode 100755 index 0000000..86f2fac --- /dev/null +++ b/frameworks/wax.framework/Headers/WaxPatch-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'WaxPatch' target in the 'WaxPatch' project +// + +#import <Availability.h> + +#ifndef __IPHONE_3_0 +#warning "This project uses features only available in iOS SDK 3.0 and later." +#endif + +#ifdef __OBJC__ + #import <UIKit/UIKit.h> + #import <Foundation/Foundation.h> +#endif diff --git a/frameworks/wax.framework/Headers/wax.h b/frameworks/wax.framework/Headers/wax.h new file mode 100644 index 0000000..0ff4d16 --- /dev/null +++ b/frameworks/wax.framework/Headers/wax.h @@ -0,0 +1,17 @@ +// Created by ProbablyInteractive. +// Copyright 2009 Probably Interactive. All rights reserved. + +#import <Foundation/Foundation.h> +//#import "lua.h" +#import <lua/lua.h> + +#define WAX_VERSION 0.93 + +void wax_setup(); +int wax_start(char *initScript, lua_CFunction extensionFunctions, ...); +void wax_startWithServer(); +void wax_end(); + +lua_State *wax_currentLuaState(); + +void luaopen_wax(lua_State *L); diff --git a/frameworks/wax.framework/Headers/wax_class.h b/frameworks/wax.framework/Headers/wax_class.h new file mode 100755 index 0000000..4137f95 --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_class.h @@ -0,0 +1,19 @@ +// +// wax_class.h +// Lua +// +// Created by ProbablyInteractive on 5/20/09. +// Copyright 2009 Probably Interactive. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <objc/runtime.h> +#import <objc/message.h> + +//#import "lua.h" +#import <lua/lua.h> + +#define WAX_CLASS_METATABLE_NAME "wax.class" +#define WAX_CLASS_INSTANCE_USERDATA_IVAR_NAME "wax_instance_userdata" + +int luaopen_wax_class(lua_State *L); diff --git a/frameworks/wax.framework/Headers/wax_filesystem.h b/frameworks/wax.framework/Headers/wax_filesystem.h new file mode 100755 index 0000000..1051166 --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_filesystem.h @@ -0,0 +1,10 @@ +// +// Created by Corey Johnson on 10/5/09. +// Copyright 2009 Probably Interactive. All rights reserved. +// + +#import <Foundation/Foundation.h> +//#import "lua.h" +#import <lua/lua.h> + +int luaopen_wax_filesystem(lua_State *L); diff --git a/frameworks/wax.framework/Headers/wax_gc.h b/frameworks/wax.framework/Headers/wax_gc.h new file mode 100755 index 0000000..4bc6f1b --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_gc.h @@ -0,0 +1,20 @@ +// +// wax_garbage_collection.h +// WaxTests +// +// Created by Corey Johnson on 2/23/10. +// Copyright 2010 Probably Interactive. All rights reserved. +// + +#import <Foundation/Foundation.h> + + +@interface wax_gc : NSObject { + +} + ++ (void)start; ++ (void)stop; ++ (void)cleanupUnusedObject; + +@end diff --git a/frameworks/wax.framework/Headers/wax_helpers.h b/frameworks/wax.framework/Headers/wax_helpers.h new file mode 100755 index 0000000..9c8fdd7 --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_helpers.h @@ -0,0 +1,103 @@ +// +// wax_helpers.h +// Lua +// +// Created by ProbablyInteractive on 5/18/09. +// Copyright 2009 Probably Interactive. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <objc/runtime.h> +#import <objc/message.h> + +#import "wax_instance.h" + +//#import "lua.h" +#import <lua/lua.h> + +//#define _C_ATOM '%' +//#define _C_VECTOR '!' +//#define _C_CONST 'r' + +// ENCODINGS CAN BE FOUND AT http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html +#define WAX_TYPE_CHAR _C_CHR +#define WAX_TYPE_INT _C_INT +#define WAX_TYPE_SHORT _C_SHT +#define WAX_TYPE_UNSIGNED_CHAR _C_UCHR +#define WAX_TYPE_UNSIGNED_INT _C_UINT +#define WAX_TYPE_UNSIGNED_SHORT _C_USHT + +#define WAX_TYPE_LONG _C_LNG +#define WAX_TYPE_LONG_LONG _C_LNG_LNG +#define WAX_TYPE_UNSIGNED_LONG _C_ULNG +#define WAX_TYPE_UNSIGNED_LONG_LONG _C_ULNG_LNG +#define WAX_TYPE_FLOAT _C_FLT +#define WAX_TYPE_DOUBLE _C_DBL + +#define WAX_TYPE_C99_BOOL _C_BOOL + +#define WAX_TYPE_STRING _C_CHARPTR +#define WAX_TYPE_VOID _C_VOID +#define WAX_TYPE_ARRAY _C_ARY_B +#define WAX_TYPE_ARRAY_END _C_ARY_E +#define WAX_TYPE_BITFIELD _C_BFLD +#define WAX_TYPE_ID _C_ID +#define WAX_TYPE_CLASS _C_CLASS +#define WAX_TYPE_SELECTOR _C_SEL +#define WAX_TYPE_STRUCT _C_STRUCT_B +#define WAX_TYPE_STRUCT_END _C_STRUCT_E +#define WAX_TYPE_UNION _C_UNION_B +#define WAX_TYPE_UNION_END _C_UNION_E +#define WAX_TYPE_POINTER _C_PTR +#define WAX_TYPE_UNKNOWN _C_UNDEF + +#define WAX_PROTOCOL_TYPE_CONST 'r' +#define WAX_PROTOCOL_TYPE_IN 'n' +#define WAX_PROTOCOL_TYPE_INOUT 'N' +#define WAX_PROTOCOL_TYPE_OUT 'o' +#define WAX_PROTOCOL_TYPE_BYCOPY 'O' +#define WAX_PROTOCOL_TYPE_BYREF 'R' +#define WAX_PROTOCOL_TYPE_ONEWAY 'V' + +#define BEGIN_STACK_MODIFY(L) int __startStackIndex = lua_gettop((L)); + +#define END_STACK_MODIFY(L, i) while(lua_gettop((L)) > (__startStackIndex + (i))) lua_remove((L), __startStackIndex + 1); + +#ifndef LOG_FLAGS + #define LOG_FLAGS (LOG_FATAL | LOG_ERROR | LOG_DEBUG) +#endif + +#define LOG_DEBUG 1 << 0 +#define LOG_ERROR 1 << 1 +#define LOG_FATAL 1 << 2 + +#define LOG_GC 1 << 5 +#define LOG_NETWORK 1 << 6 + +// Debug Helpers +void wax_printStack(lua_State *L); +void wax_printStackAt(lua_State *L, int i); +void wax_printTable(lua_State *L, int t); +void wax_log(int flag, NSString *format, ...); +int wax_getStackTrace(lua_State *L); + +// Convertion Helpers +int wax_fromObjc(lua_State *L, const char *typeDescription, void *buffer); +void wax_fromInstance(lua_State *L, id instance); +void wax_fromStruct(lua_State *L, const char *typeDescription, void *buffer); + +void *wax_copyToObjc(lua_State *L, const char *typeDescription, int stackIndex, int *outsize); + +// Misc Helpers +void wax_selectorsForName(const char *methodName, SEL selectors[2]); +BOOL wax_selectorForInstance(wax_instance_userdata *instanceUserdata, SEL* foundSelectors, const char *methodName, BOOL forceInstanceCheck); +void wax_pushMethodNameFromSelector(lua_State *L, SEL selector); +BOOL wax_isInitMethod(const char *methodName); + +const char *wax_removeProtocolEncodings(const char *type_descriptions); + +int wax_sizeOfTypeDescription(const char *full_type_description); +int wax_simplifyTypeDescription(const char *in, char *out); + +int wax_errorFunction(lua_State *L); +int wax_pcall(lua_State *L, int argumentCount, int returnCount); \ No newline at end of file diff --git a/frameworks/wax.framework/Headers/wax_http.h b/frameworks/wax.framework/Headers/wax_http.h new file mode 100755 index 0000000..03affd9 --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_http.h @@ -0,0 +1,15 @@ +// +// wax_http.h +// Rentals +// +// Created by ProbablyInteractive on 7/13/09. +// Copyright 2009 Probably Interactive. All rights reserved. +// + +#import <UIKit/UIKit.h> +//#import "lua.h" +#import <lua/lua.h> + +#define WAX_HTTP_METATABLE_NAME "wax.http" + +int luaopen_wax_http(lua_State *L); \ No newline at end of file diff --git a/frameworks/wax.framework/Headers/wax_http_connection.h b/frameworks/wax.framework/Headers/wax_http_connection.h new file mode 100755 index 0000000..8c49bfa --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_http_connection.h @@ -0,0 +1,55 @@ +// +// wax_http_connection.h +// RentList +// +// Created by Corey Johnson on 8/9/09. +// Copyright 2009 ProbablyInteractive. All rights reserved. +// + +#import <UIKit/UIKit.h> +//#import "lua.h" +#import <lua/lua.h> + +enum { + WAX_HTTP_UNKNOWN, + WAX_HTTP_TEXT, + WAX_HTTP_BINARY, // Like an image or something + WAX_HTTP_JSON, + WAX_HTTP_XML +}; + +#define WAX_HTTP_CALLBACK_FUNCTION_NAME "callback" +#define WAX_HTTP_PROGRESS_CALLBACK_FUNCTION_NAME "progressCallback" +#define WAX_HTTP_AUTH_CALLBACK_FUNCTION_NAME "authCallback" +#define WAX_HTTP_REDIRECT_CALLBACK_FUNCTION_NAME "redirectCallback" + +@interface wax_http_connection : NSURLConnection { + lua_State *L; + NSMutableData *_data; + NSHTTPURLResponse *_response; + NSURLRequest *_request; + NSTimer *_timeoutTimer; + NSError *_error; + + NSTimeInterval _timeout; + int _format; + bool _finished; + bool _canceled; +} + +@property (nonatomic, assign) NSHTTPURLResponse *response; + +@property (nonatomic, assign) int format; +@property (nonatomic, readonly, getter=isFinished) bool finished; + +- (id)initWithRequest:(NSURLRequest *)urlRequest timeout:(NSTimeInterval)timeout luaState:(lua_State *)luaState; +- (void)callRedirectCallback:(NSURLResponse *)redirectResponse; +- (BOOL)callLuaAuthCallback:(NSURLAuthenticationChallenge *)challenge; +- (void)callLuaProgressCallback; +- (void)callLuaCallback; + +// HSHTTPURLResponse Delegate Methods +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error; + +@end + diff --git a/frameworks/wax.framework/Headers/wax_instance.h b/frameworks/wax.framework/Headers/wax_instance.h new file mode 100755 index 0000000..37a3ae7 --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_instance.h @@ -0,0 +1,36 @@ +/* + * wax_instance.h + * Lua + * + * Created by ProbablyInteractive on 5/18/09. + * Copyright 2009 Probably Interactive. All rights reserved. + * + */ + +#import <Foundation/Foundation.h> +#import <objc/runtime.h> +#import <objc/message.h> + +//#import "lua.h" +#import <lua/lua.h> + +#define WAX_INSTANCE_METATABLE_NAME "wax.instance" + +typedef struct _wax_instance_userdata { + id instance; + BOOL isClass; + Class isSuper; // isSuper not only stores whether the class is a super, but it also contains the value of the next superClass. + BOOL actAsSuper; // It only acts like a super once, when it is called for the first time. + BOOL waxRetain; // TODO: need release instance when gc +} wax_instance_userdata; + +int luaopen_wax_instance(lua_State *L); + +wax_instance_userdata *wax_instance_create(lua_State *L, id instance, BOOL isClass); +wax_instance_userdata *wax_instance_createSuper(lua_State *L, wax_instance_userdata *instanceUserdata); +void wax_instance_pushUserdataTable(lua_State *L); +void wax_instance_pushStrongUserdataTable(lua_State *L); + +BOOL wax_instance_pushFunction(lua_State *L, id self, SEL selector); +void wax_instance_pushUserdata(lua_State *L, id object); +BOOL wax_instance_isWaxClass(id instance); diff --git a/frameworks/wax.framework/Headers/wax_json.h b/frameworks/wax.framework/Headers/wax_json.h new file mode 100755 index 0000000..78a4a76 --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_json.h @@ -0,0 +1,12 @@ +#ifndef json_h +#define json_h + +//#import "lua.h" +#import <lua/lua.h> + +#define JSON_METATABLE_NAME "wax.json" + +int luaopen_wax_json(lua_State *L); +void json_parseString(lua_State *L, const char *input); + +#endif \ No newline at end of file diff --git a/frameworks/wax.framework/Headers/wax_server.h b/frameworks/wax.framework/Headers/wax_server.h new file mode 100755 index 0000000..21cf470 --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_server.h @@ -0,0 +1,47 @@ +#import <Foundation/Foundation.h> + +@class wax_server; + +extern NSString * const TCPServerErrorDomain; + +typedef enum { + kTCPServerCouldNotBindToIPv4Address = 1, + kTCPServerCouldNotBindToIPv6Address = 2, + kTCPServerNoSocketsAvailable = 3, +} TCPServerErrorCode; + + +@protocol WaxServerDelegate + +@optional +- (void)connected; +- (void)disconnected; +- (void)dataReceived:(NSData *)data; + +@end + + +@interface wax_server : NSObject <NSStreamDelegate, NSNetServiceDelegate> { + CFSocketRef _ipv4socket; + id<WaxServerDelegate> _delegate; + + NSNetService *_netService; + NSInputStream *_inStream; + NSOutputStream *_outStream; +} + +@property(nonatomic, assign) id<WaxServerDelegate> delegate; + +- (NSError *)startOnPort:(NSUInteger)port; +- (BOOL)stop; +- (BOOL)enableBonjourOnPort:(NSUInteger)port; +- (void)disableBonjour; + +- (BOOL)send:(NSString *)output; +- (void)receive:(NSData *)output; + +@end + +// This is needed because the runtime doesn't automatically load protocols +@interface HACK_WAX_DELEGATE_IMPLEMENTOR : NSObject <WaxServerDelegate> {} +@end \ No newline at end of file diff --git a/frameworks/wax.framework/Headers/wax_stdlib.h b/frameworks/wax.framework/Headers/wax_stdlib.h new file mode 100755 index 0000000..bd982bc --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_stdlib.h @@ -0,0 +1,3 @@ +// DO NOT MODIFY +// This is auto generated, it contains a compiled version of the wax stdlib +#define WAX_STDLIB {27,76,117,97,81,0,1,4,4,4,8,0,8,0,0,0,61,40,108,117,97,99,41,0,0,0,0,0,0,0,0,0,0,0,2,2,50,0,0,0,5,0,0,0,6,64,64,0,100,0,0,0,9,64,0,-127,100,64,0,0,9,64,-128,-127,100,-128,0,0,9,64,0,-126,100,-64,0,0,9,64,-128,-126,100,0,1,0,9,64,0,-125,100,64,1,0,9,64,-128,-125,100,-128,1,0,9,64,0,-124,100,-64,1,0,9,64,-128,-124,100,0,2,0,9,64,0,-123,100,64,2,0,9,64,-128,-123,100,-128,2,0,9,64,0,-122,100,-64,2,0,9,64,-128,-122,100,0,3,0,9,64,0,-121,100,64,3,0,9,64,-128,-121,100,-128,3,0,9,64,0,-120,100,-64,3,0,9,64,-128,-120,100,0,4,0,9,64,0,-119,100,64,4,0,9,64,-128,-119,100,-128,4,0,9,64,0,-118,100,-64,4,0,9,64,-128,-118,100,0,5,0,9,64,0,-117,100,64,5,0,9,64,-128,-117,1,0,6,0,100,-128,5,0,92,64,-128,0,30,0,-128,0,25,0,0,0,4,8,0,0,0,112,97,99,107,97,103,101,0,4,8,0,0,0,112,114,101,108,111,97,100,0,4,10,0,0,0,119,97,120,46,101,110,117,109,115,0,4,13,0,0,0,119,97,120,46,101,120,116,46,104,116,116,112,0,4,8,0,0,0,119,97,120,46,101,120,116,0,4,15,0,0,0,119,97,120,46,101,120,116,46,110,117,109,98,101,114,0,4,15,0,0,0,119,97,120,46,101,120,116,46,115,116,114,105,110,103,0,4,14,0,0,0,119,97,120,46,101,120,116,46,116,97,98,108,101,0,4,22,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,87,97,120,83,101,114,118,101,114,0,4,21,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,97,117,116,111,108,111,97,100,0,4,19,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,98,97,115,101,54,52,0,4,16,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,98,105,116,0,4,18,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,99,97,99,104,101,0,4,21,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,99,97,108,108,98,97,99,107,0,4,18,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,102,114,97,109,101,0,4,12,0,0,0,119,97,120,46,104,101,108,112,101,114,115,0,4,17,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,116,105,109,101,0,4,9,0,0,0,119,97,120,46,105,110,105,116,0,4,12,0,0,0,119,97,120,46,108,117,97,115,112,101,99,0,4,20,0,0,0,119,97,120,46,108,117,97,115,112,101,99,46,108,117,97,109,111,99,107,0,4,20,0,0,0,119,97,120,46,108,117,97,115,112,101,99,46,108,117,97,115,112,101,99,0,4,9,0,0,0,119,97,120,46,114,101,112,108,0,4,12,0,0,0,119,97,120,46,115,116,114,117,99,116,115,0,4,13,0,0,0,119,97,120,46,119,97,120,67,108,97,115,115,0,0,23,0,0,0,69,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,101,110,117,109,115,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,-81,2,0,0,1,64,0,0,7,0,0,0,1,-64,0,0,7,-128,0,0,1,64,1,0,7,0,1,0,1,-64,1,0,7,-128,1,0,1,64,2,0,7,0,2,0,1,-64,2,0,7,-128,2,0,1,64,3,0,7,0,3,0,1,-64,3,0,7,-128,3,0,1,64,4,0,7,0,4,0,1,-64,4,0,7,-128,4,0,1,64,5,0,7,0,5,0,1,-64,5,0,7,-128,5,0,1,64,6,0,7,0,6,0,1,64,0,0,7,-128,6,0,1,-64,0,0,7,-64,6,0,1,64,1,0,7,0,7,0,1,64,0,0,7,64,7,0,1,-64,0,0,7,-128,7,0,1,64,1,0,7,-64,7,0,1,-64,1,0,7,0,8,0,1,64,2,0,7,64,8,0,1,-64,2,0,7,-128,8,0,1,64,0,0,7,-64,8,0,1,-64,0,0,7,0,9,0,1,64,1,0,7,64,9,0,1,-64,1,0,7,-128,9,0,1,64,2,0,7,-64,9,0,1,-64,2,0,7,0,10,0,1,64,0,0,7,64,10,0,1,-64,0,0,7,-128,10,0,1,64,1,0,7,-64,10,0,1,64,0,0,7,0,11,0,1,-64,0,0,7,64,11,0,1,64,1,0,7,-128,11,0,1,-64,1,0,7,-64,11,0,1,64,0,0,7,0,12,0,1,-64,0,0,7,64,12,0,1,64,1,0,7,-128,12,0,1,-64,1,0,7,-64,12,0,1,64,0,0,7,0,13,0,1,-64,0,0,7,64,13,0,1,64,1,0,7,-128,13,0,1,64,0,0,7,-64,13,0,1,-64,0,0,7,0,14,0,1,64,0,0,7,64,14,0,1,-64,0,0,7,-128,14,0,1,64,1,0,7,-64,14,0,1,64,2,0,7,0,15,0,1,-128,15,0,7,64,15,0,1,0,16,0,7,-64,15,0,1,-64,0,0,7,64,16,0,1,64,1,0,7,-128,16,0,1,-64,1,0,7,-64,16,0,1,64,2,0,7,0,17,0,1,-64,2,0,7,64,17,0,1,64,3,0,7,-128,17,0,1,-64,3,0,7,-64,17,0,1,64,4,0,7,0,18,0,1,-64,4,0,7,64,18,0,1,64,5,0,7,-128,18,0,1,-64,5,0,7,-64,18,0,1,64,6,0,7,0,19,0,1,-128,19,0,7,64,19,0,1,0,20,0,7,-64,19,0,1,-128,20,0,7,64,20,0,1,0,21,0,7,-64,20,0,1,-128,21,0,7,64,21,0,1,0,22,0,7,-64,21,0,1,-128,22,0,7,64,22,0,1,0,23,0,7,-64,22,0,1,-128,23,0,7,64,23,0,1,0,24,0,7,-64,23,0,1,-128,24,0,7,64,24,0,1,64,0,0,7,-64,24,0,1,-64,0,0,7,0,25,0,1,64,1,0,7,64,25,0,1,64,0,0,7,-64,8,0,1,-64,0,0,7,0,9,0,1,64,1,0,7,64,9,0,1,-64,1,0,7,-128,9,0,1,64,2,0,7,-64,9,0,1,-64,2,0,7,0,10,0,1,64,0,0,7,-128,25,0,1,-64,0,0,7,-64,25,0,1,64,1,0,7,0,26,0,1,64,0,0,7,64,26,0,1,-64,0,0,7,-128,26,0,1,64,1,0,7,-64,26,0,1,-64,1,0,7,0,27,0,1,64,2,0,7,64,27,0,1,-64,2,0,7,-128,27,0,1,64,3,0,7,-64,27,0,1,-64,3,0,7,0,28,0,5,-128,26,0,7,64,28,0,1,64,0,0,7,-128,28,0,1,-64,0,0,7,-64,28,0,1,64,1,0,7,0,29,0,1,-64,1,0,7,64,29,0,1,64,2,0,7,-128,29,0,1,-64,2,0,7,-64,29,0,1,64,3,0,7,0,30,0,1,-64,3,0,7,64,30,0,1,64,4,0,7,-128,30,0,1,-64,4,0,7,-64,30,0,1,64,5,0,7,0,31,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,0,0,28,-128,-128,1,7,64,31,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,0,0,28,-128,-128,1,7,0,32,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,1,0,28,-128,-128,1,7,64,32,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,1,0,28,-128,-128,1,7,-128,32,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,2,0,28,-128,-128,1,7,-64,32,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,2,0,28,-128,-128,1,7,0,33,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,3,0,28,-128,-128,1,7,64,33,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,3,0,28,-128,-128,1,7,-128,33,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,4,0,28,-128,-128,1,7,-64,33,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,6,0,28,-128,-128,1,7,0,34,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-128,34,0,28,-128,-128,1,7,64,34,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,0,35,0,28,-128,-128,1,7,-64,34,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-128,35,0,28,-128,-128,1,7,64,35,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,0,36,0,28,-128,-128,1,7,-64,35,0,1,-128,36,0,7,64,36,0,1,0,37,0,7,-64,36,0,1,-128,37,0,7,64,37,0,1,0,38,0,7,-64,37,0,1,-128,38,0,7,64,38,0,1,64,0,0,7,-64,38,0,1,-64,0,0,7,0,39,0,1,64,1,0,7,64,39,0,1,64,0,0,7,-128,39,0,1,-64,0,0,7,-64,39,0,1,64,1,0,7,0,40,0,1,-64,1,0,7,64,40,0,1,64,0,0,7,-128,40,0,1,-64,0,0,7,-64,40,0,1,64,1,0,7,0,41,0,1,-64,1,0,7,64,41,0,1,64,2,0,7,-128,41,0,1,-64,2,0,7,-64,41,0,1,64,3,0,7,0,42,0,1,-64,3,0,7,64,42,0,1,64,4,0,7,-128,42,0,1,-64,4,0,7,-64,42,0,1,64,5,0,7,0,43,0,1,-64,5,0,7,64,43,0,1,64,6,0,7,-128,43,0,1,-128,19,0,7,-64,43,0,1,0,20,0,7,0,44,0,1,-128,20,0,7,64,44,0,1,-128,34,0,7,-128,44,0,1,0,35,0,7,-64,44,0,1,-128,35,0,7,0,45,0,1,0,36,0,7,64,45,0,1,-64,45,0,7,-128,45,0,1,0,21,0,7,0,46,0,1,-128,46,0,7,64,46,0,1,64,0,0,7,-64,46,0,1,-64,0,0,7,0,47,0,1,64,1,0,7,64,47,0,1,-64,1,0,7,-128,47,0,1,64,0,0,7,-64,47,0,1,-64,0,0,7,0,48,0,1,64,1,0,7,64,48,0,1,-64,1,0,7,-128,48,0,1,64,0,0,7,-64,48,0,1,-64,0,0,7,0,49,0,1,64,0,0,7,64,49,0,1,-64,0,0,7,-128,49,0,1,64,1,0,7,-64,49,0,1,-64,1,0,7,0,50,0,1,64,0,0,7,64,50,0,1,-64,0,0,7,-128,50,0,1,64,1,0,7,-64,50,0,1,64,0,0,7,0,51,0,1,-64,0,0,7,64,51,0,1,-64,0,0,7,-128,51,0,1,64,1,0,7,-64,51,0,1,64,0,0,7,0,52,0,1,-64,0,0,7,64,52,0,1,64,2,0,7,-128,52,0,5,64,52,0,7,-64,52,0,1,64,1,0,7,0,53,0,1,-64,1,0,7,64,53,0,1,-64,2,0,7,-128,53,0,1,64,0,0,7,-64,53,0,1,-64,0,0,7,0,54,0,1,64,1,0,7,64,54,0,1,64,0,0,7,-128,54,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,0,0,28,-128,-128,1,7,-64,54,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,0,0,28,-128,-128,1,7,0,55,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,1,0,28,-128,-128,1,7,64,55,0,1,64,0,0,7,-128,55,0,1,-64,0,0,7,-64,55,0,1,64,1,0,7,0,56,0,1,64,0,0,7,64,56,0,1,-64,0,0,7,-128,56,0,1,64,1,0,7,-64,56,0,1,-64,1,0,7,0,57,0,1,64,2,0,7,64,57,0,1,-64,2,0,7,-128,57,0,1,64,3,0,7,-64,57,0,5,-128,56,0,7,0,58,0,5,-64,56,0,7,64,58,0,5,64,57,0,7,-128,58,0,5,0,57,0,7,-64,58,0,1,64,0,0,7,0,59,0,1,-64,0,0,7,64,59,0,1,64,1,0,7,-128,59,0,1,-64,1,0,7,-64,59,0,1,64,0,0,7,0,60,0,1,-64,0,0,7,64,60,0,1,64,1,0,7,-128,60,0,1,-64,1,0,7,-64,60,0,1,64,2,0,7,0,61,0,1,-64,2,0,7,64,61,0,1,64,3,0,7,-128,61,0,1,64,0,0,7,-64,61,0,1,-64,0,0,7,0,62,0,1,64,1,0,7,64,62,0,1,-64,1,0,7,-128,62,0,1,64,2,0,7,-64,62,0,1,64,0,0,7,0,63,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,0,0,28,-128,-128,1,7,64,63,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,0,0,28,-128,-128,1,7,-128,63,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,1,0,28,-128,-128,1,7,-64,63,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,1,0,28,-128,-128,1,7,0,64,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,2,0,28,-128,-128,1,7,64,64,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,2,0,28,-128,-128,1,7,-128,64,0,1,64,0,0,7,-64,64,0,1,-64,0,0,7,0,65,0,1,64,1,0,7,64,65,0,1,-64,1,0,7,-128,65,0,1,64,2,0,7,-64,65,0,1,-64,2,0,7,0,66,0,1,64,0,0,7,64,66,0,1,-64,0,0,7,-128,66,0,1,64,1,0,7,-64,66,0,1,64,0,0,7,0,67,0,1,-64,0,0,7,64,67,0,1,64,1,0,7,-128,67,0,1,-64,1,0,7,-64,67,0,1,64,0,0,7,0,68,0,1,-64,0,0,7,64,68,0,1,64,1,0,7,-128,68,0,1,-64,1,0,7,-64,68,0,1,64,2,0,7,0,69,0,1,64,0,0,7,64,69,0,1,-64,0,0,7,-128,69,0,1,64,1,0,7,-64,69,0,1,64,0,0,7,0,70,0,1,-64,0,0,7,64,70,0,1,64,1,0,7,-128,70,0,1,-64,1,0,7,-64,70,0,1,64,0,0,7,0,71,0,1,-64,0,0,7,64,71,0,1,64,1,0,7,-128,71,0,1,-64,1,0,7,-64,71,0,1,64,2,0,7,0,72,0,1,64,0,0,7,64,72,0,1,-64,0,0,7,-128,72,0,1,64,1,0,7,-64,72,0,1,64,0,0,7,0,73,0,1,-64,0,0,7,64,73,0,1,64,0,0,7,-128,73,0,1,-64,0,0,7,-64,73,0,1,64,1,0,7,0,74,0,1,-128,74,0,7,64,74,0,1,64,0,0,7,-64,74,0,1,-64,0,0,7,0,75,0,1,64,0,0,7,64,75,0,1,-64,0,0,7,-128,75,0,1,64,1,0,7,-64,75,0,1,64,0,0,7,0,76,0,1,-64,0,0,7,64,76,0,1,64,1,0,7,-128,76,0,1,-64,1,0,7,-64,76,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,0,0,28,-128,-128,1,7,0,77,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,0,0,28,-128,-128,1,7,64,77,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,1,0,28,-128,-128,1,7,-128,77,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,1,0,28,-128,-128,1,7,-64,77,0,1,64,0,0,7,0,70,0,1,-64,0,0,7,64,70,0,1,64,1,0,7,-128,70,0,1,-64,1,0,7,-64,70,0,1,64,0,0,7,0,78,0,1,-64,0,0,7,64,78,0,1,64,1,0,7,-128,78,0,1,-64,1,0,7,-64,78,0,1,64,0,0,7,0,79,0,1,-64,0,0,7,64,79,0,1,64,1,0,7,-128,79,0,30,0,-128,0,63,1,0,0,4,29,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,83,99,97,108,101,84,111,70,105,108,108,0,3,0,0,0,0,0,0,0,0,4,32,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,83,99,97,108,101,65,115,112,101,99,116,70,105,116,0,3,0,0,0,0,0,0,-16,63,4,33,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,83,99,97,108,101,65,115,112,101,99,116,70,105,108,108,0,3,0,0,0,0,0,0,0,64,4,24,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,82,101,100,114,97,119,0,3,0,0,0,0,0,0,8,64,4,24,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,67,101,110,116,101,114,0,3,0,0,0,0,0,0,16,64,4,21,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,84,111,112,0,3,0,0,0,0,0,0,20,64,4,24,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,66,111,116,116,111,109,0,3,0,0,0,0,0,0,24,64,4,22,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,76,101,102,116,0,3,0,0,0,0,0,0,28,64,4,23,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,82,105,103,104,116,0,3,0,0,0,0,0,0,32,64,4,25,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,84,111,112,76,101,102,116,0,3,0,0,0,0,0,0,34,64,4,26,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,84,111,112,82,105,103,104,116,0,3,0,0,0,0,0,0,36,64,4,28,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,66,111,116,116,111,109,76,101,102,116,0,3,0,0,0,0,0,0,38,64,4,29,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,66,111,116,116,111,109,82,105,103,104,116,0,3,0,0,0,0,0,0,40,64,4,26,0,0,0,85,73,66,97,114,66,117,116,116,111,110,73,116,101,109,83,116,121,108,101,80,108,97,105,110,0,4,29,0,0,0,85,73,66,97,114,66,117,116,116,111,110,73,116,101,109,83,116,121,108,101,66,111,114,100,101,114,101,100,0,4,25,0,0,0,85,73,66,97,114,66,117,116,116,111,110,73,116,101,109,83,116,121,108,101,68,111,110,101,0,4,19,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,67,117,115,116,111,109,0,4,24,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,82,111,117,110,100,101,100,82,101,99,116,0,4,29,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,68,101,116,97,105,108,68,105,115,99,108,111,115,117,114,101,0,4,22,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,73,110,102,111,76,105,103,104,116,0,4,21,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,73,110,102,111,68,97,114,107,0,4,23,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,67,111,110,116,97,99,116,65,100,100,0,4,24,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,87,111,114,100,87,114,97,112,0,4,29,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,67,104,97,114,97,99,116,101,114,87,114,97,112,0,4,20,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,67,108,105,112,0,4,30,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,72,101,97,100,84,114,117,110,99,97,116,105,111,110,0,4,30,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,84,97,105,108,84,114,117,110,99,97,116,105,111,110,0,4,32,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,77,105,100,100,108,101,84,114,117,110,99,97,116,105,111,110,0,4,34,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,108,101,99,116,105,111,110,83,116,121,108,101,78,111,110,101,0,4,34,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,108,101,99,116,105,111,110,83,116,121,108,101,66,108,117,101,0,4,34,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,108,101,99,116,105,111,110,83,116,121,108,101,71,114,97,121,0,4,28,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,116,121,108,101,68,101,102,97,117,108,116,0,4,27,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,116,121,108,101,86,97,108,117,101,49,0,4,27,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,116,121,108,101,86,97,108,117,101,50,0,4,29,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,116,121,108,101,83,117,98,116,105,116,108,101,0,4,29,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,65,99,99,101,115,115,111,114,121,78,111,110,101,0,4,44,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,65,99,99,101,115,115,111,114,121,68,105,115,99,108,111,115,117,114,101,73,110,100,105,99,97,116,111,114,0,4,47,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,65,99,99,101,115,115,111,114,121,68,101,116,97,105,108,68,105,115,99,108,111,115,117,114,101,66,117,116,116,111,110,0,4,34,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,65,99,99,101,115,115,111,114,121,67,104,101,99,107,109,97,114,107,0,4,39,0,0,0,85,73,65,99,116,105,118,105,116,121,73,110,100,105,99,97,116,111,114,86,105,101,119,83,116,121,108,101,87,104,105,116,101,76,97,114,103,101,0,4,34,0,0,0,85,73,65,99,116,105,118,105,116,121,73,110,100,105,99,97,116,111,114,86,105,101,119,83,116,121,108,101,87,104,105,116,101,0,4,33,0,0,0,85,73,65,99,116,105,118,105,116,121,73,110,100,105,99,97,116,111,114,86,105,101,119,83,116,121,108,101,71,114,97,121,0,4,22,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,116,121,108,101,80,108,97,105,110,0,4,24,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,116,121,108,101,71,114,111,117,112,101,100,0,4,21,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,78,111,114,109,97,108,0,4,26,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,72,105,103,104,108,105,103,104,116,101,100,0,4,23,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,68,105,115,97,98,108,101,100,0,4,23,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,83,101,108,101,99,116,101,100,0,4,26,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,65,112,112,108,105,99,97,116,105,111,110,0,3,0,0,0,0,0,-32,111,65,4,23,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,82,101,115,101,114,118,101,100,0,3,0,0,0,0,0,-32,-17,65,4,22,0,0,0,78,83,65,83,67,73,73,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,25,0,0,0,78,83,78,69,88,84,83,84,69,80,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,28,0,0,0,78,83,74,97,112,97,110,101,115,101,69,85,67,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,21,0,0,0,78,83,85,84,70,56,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,26,0,0,0,78,83,73,83,79,76,97,116,105,110,49,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,23,0,0,0,78,83,83,121,109,98,111,108,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,30,0,0,0,78,83,78,111,110,76,111,115,115,121,65,83,67,73,73,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,25,0,0,0,78,83,83,104,105,102,116,74,73,83,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,26,0,0,0,78,83,73,83,79,76,97,116,105,110,50,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,24,0,0,0,78,83,85,110,105,99,111,100,101,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,30,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,49,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,30,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,50,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,30,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,51,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,42,64,4,30,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,52,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,44,64,4,30,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,48,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,46,64,4,26,0,0,0,78,83,73,83,79,50,48,50,50,74,80,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,53,64,4,27,0,0,0,78,83,77,97,99,79,83,82,111,109,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,62,64,4,31,0,0,0,78,83,85,84,70,49,54,66,105,103,69,110,100,105,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,0,-30,65,4,34,0,0,0,78,83,85,84,70,49,54,76,105,116,116,108,101,69,110,100,105,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,-128,-30,65,4,22,0,0,0,78,83,85,84,70,51,50,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,-128,-31,65,4,31,0,0,0,78,83,85,84,70,51,50,66,105,103,69,110,100,105,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,0,-29,65,4,34,0,0,0,78,83,85,84,70,51,50,76,105,116,116,108,101,69,110,100,105,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,-128,-29,65,4,28,0,0,0,78,83,80,114,111,112,114,105,101,116,97,114,121,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,-16,64,4,20,0,0,0,85,73,84,101,120,116,65,108,105,103,110,109,101,110,116,76,101,102,116,0,4,22,0,0,0,85,73,84,101,120,116,65,108,105,103,110,109,101,110,116,67,101,110,116,101,114,0,4,21,0,0,0,85,73,84,101,120,116,65,108,105,103,110,109,101,110,116,82,105,103,104,116,0,4,36,0,0,0,85,73,77,111,100,97,108,84,114,97,110,115,105,116,105,111,110,83,116,121,108,101,67,111,118,101,114,86,101,114,116,105,99,97,108,0,4,37,0,0,0,85,73,77,111,100,97,108,84,114,97,110,115,105,116,105,111,110,83,116,121,108,101,70,108,105,112,72,111,114,105,122,111,110,116,97,108,0,4,36,0,0,0,85,73,77,111,100,97,108,84,114,97,110,115,105,116,105,111,110,83,116,121,108,101,67,114,111,115,115,68,105,115,115,111,108,118,101,0,4,22,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,68,101,102,97,117,108,116,0,4,27,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,65,83,67,73,73,67,97,112,97,98,108,101,0,4,36,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,78,117,109,98,101,114,115,65,110,100,80,117,110,99,116,117,97,116,105,111,110,0,4,18,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,85,82,76,0,4,24,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,78,117,109,98,101,114,80,97,100,0,4,23,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,80,104,111,110,101,80,97,100,0,4,27,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,78,97,109,101,80,104,111,110,101,80,97,100,0,4,27,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,69,109,97,105,108,65,100,100,114,101,115,115,0,4,23,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,65,108,112,104,97,98,101,116,0,4,19,0,0,0,85,73,82,101,116,117,114,110,75,101,121,68,101,102,97,117,108,116,0,4,14,0,0,0,85,73,82,101,116,117,114,110,75,101,121,71,111,0,4,18,0,0,0,85,73,82,101,116,117,114,110,75,101,121,71,111,111,103,108,101,0,4,16,0,0,0,85,73,82,101,116,117,114,110,75,101,121,74,111,105,110,0,4,16,0,0,0,85,73,82,101,116,117,114,110,75,101,121,78,101,120,116,0,4,17,0,0,0,85,73,82,101,116,117,114,110,75,101,121,82,111,117,116,101,0,4,18,0,0,0,85,73,82,101,116,117,114,110,75,101,121,83,101,97,114,99,104,0,4,16,0,0,0,85,73,82,101,116,117,114,110,75,101,121,83,101,110,100,0,4,17,0,0,0,85,73,82,101,116,117,114,110,75,101,121,89,97,104,111,111,0,4,16,0,0,0,85,73,82,101,116,117,114,110,75,101,121,68,111,110,101,0,4,25,0,0,0,85,73,82,101,116,117,114,110,75,101,121,69,109,101,114,103,101,110,99,121,67,97,108,108,0,4,24,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,111,119,110,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,112,111,119,0,4,30,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,111,119,110,82,101,112,101,97,116,0,4,30,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,114,97,103,73,110,115,105,100,101,0,4,31,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,114,97,103,79,117,116,115,105,100,101,0,4,29,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,114,97,103,69,110,116,101,114,0,4,28,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,114,97,103,69,120,105,116,0,4,28,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,85,112,73,110,115,105,100,101,0,4,29,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,85,112,79,117,116,115,105,100,101,0,4,26,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,67,97,110,99,101,108,0,4,27,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,86,97,108,117,101,67,104,97,110,103,101,100,0,4,30,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,69,100,105,116,105,110,103,68,105,100,66,101,103,105,110,0,3,0,0,0,0,0,0,48,64,4,29,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,69,100,105,116,105,110,103,67,104,97,110,103,101,100,0,3,0,0,0,0,0,0,49,64,4,28,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,69,100,105,116,105,110,103,68,105,100,69,110,100,0,3,0,0,0,0,0,0,50,64,4,34,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,69,100,105,116,105,110,103,68,105,100,69,110,100,79,110,69,120,105,116,0,3,0,0,0,0,0,0,51,64,4,29,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,65,108,108,84,111,117,99,104,69,118,101,110,116,115,0,3,0,0,0,0,0,-2,-81,64,4,31,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,65,108,108,69,100,105,116,105,110,103,69,118,101,110,116,115,0,3,0,0,0,0,0,0,46,65,4,34,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,65,112,112,108,105,99,97,116,105,111,110,82,101,115,101,114,118,101,100,0,3,0,0,0,0,0,0,-82,65,4,29,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,83,121,115,116,101,109,82,101,115,101,114,118,101,100,0,3,0,0,0,0,0,0,-18,65,4,24,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,65,108,108,69,118,101,110,116,115,0,3,0,0,-32,-1,-1,-1,-17,65,4,32,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,69,100,105,116,105,110,103,83,116,121,108,101,78,111,110,101,0,4,34,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,69,100,105,116,105,110,103,83,116,121,108,101,68,101,108,101,116,101,0,4,34,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,69,100,105,116,105,110,103,83,116,121,108,101,73,110,115,101,114,116,0,4,29,0,0,0,77,70,77,97,105,108,67,111,109,112,111,115,101,82,101,115,117,108,116,67,97,110,99,101,108,108,101,100,0,4,25,0,0,0,77,70,77,97,105,108,67,111,109,112,111,115,101,82,101,115,117,108,116,83,97,118,101,100,0,4,24,0,0,0,77,70,77,97,105,108,67,111,109,112,111,115,101,82,101,115,117,108,116,83,101,110,116,0,4,26,0,0,0,77,70,77,97,105,108,67,111,109,112,111,115,101,82,101,115,117,108,116,70,97,105,108,101,100,0,4,26,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,68,111,110,101,0,4,28,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,67,97,110,99,101,108,0,4,26,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,69,100,105,116,0,4,26,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,83,97,118,101,0,4,25,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,65,100,100,0,4,35,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,70,108,101,120,105,98,108,101,83,112,97,99,101,0,4,32,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,70,105,120,101,100,83,112,97,99,101,0,4,29,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,67,111,109,112,111,115,101,0,4,27,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,82,101,112,108,121,0,4,28,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,65,99,116,105,111,110,0,4,30,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,79,114,103,97,110,105,122,101,0,4,31,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,66,111,111,107,109,97,114,107,115,0,4,28,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,83,101,97,114,99,104,0,4,29,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,82,101,102,114,101,115,104,0,4,26,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,83,116,111,112,0,4,28,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,67,97,109,101,114,97,0,4,27,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,84,114,97,115,104,0,4,26,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,80,108,97,121,0,4,27,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,80,97,117,115,101,0,4,28,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,82,101,119,105,110,100,0,4,33,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,70,97,115,116,70,111,114,119,97,114,100,0,3,0,0,0,0,0,0,52,64,4,26,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,85,110,100,111,0,4,26,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,82,101,100,111,0,3,0,0,0,0,0,0,54,64,4,22,0,0,0,85,73,84,101,120,116,66,111,114,100,101,114,83,116,121,108,101,78,111,110,101,0,4,22,0,0,0,85,73,84,101,120,116,66,111,114,100,101,114,83,116,121,108,101,76,105,110,101,0,4,23,0,0,0,85,73,84,101,120,116,66,111,114,100,101,114,83,116,121,108,101,66,101,122,101,108,0,4,29,0,0,0,85,73,84,101,120,116,66,111,114,100,101,114,83,116,121,108,101,82,111,117,110,100,101,100,82,101,99,116,0,4,30,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,99,114,111,108,108,80,111,115,105,116,105,111,110,78,111,110,101,0,4,29,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,99,114,111,108,108,80,111,115,105,116,105,111,110,84,111,112,0,4,32,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,99,114,111,108,108,80,111,115,105,116,105,111,110,77,105,100,100,108,101,0,4,32,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,99,114,111,108,108,80,111,115,105,116,105,111,110,66,111,116,116,111,109,0,4,28,0,0,0,85,73,75,101,121,98,111,97,114,100,65,112,112,101,97,114,97,110,99,101,68,101,102,97,117,108,116,0,4,26,0,0,0,85,73,75,101,121,98,111,97,114,100,65,112,112,101,97,114,97,110,99,101,65,108,101,114,116,0,4,25,0,0,0,85,73,84,101,120,116,70,105,101,108,100,86,105,101,119,77,111,100,101,78,101,118,101,114,0,4,32,0,0,0,85,73,84,101,120,116,70,105,101,108,100,86,105,101,119,77,111,100,101,87,104,105,108,101,69,100,105,116,105,110,103,0,4,33,0,0,0,85,73,84,101,120,116,70,105,101,108,100,86,105,101,119,77,111,100,101,85,110,108,101,115,115,69,100,105,116,105,110,103,0,4,26,0,0,0,85,73,84,101,120,116,70,105,101,108,100,86,105,101,119,77,111,100,101,65,108,119,97,121,115,0,4,32,0,0,0,85,73,84,101,120,116,65,117,116,111,99,111,114,114,101,99,116,105,111,110,84,121,112,101,68,101,102,97,117,108,116,0,4,27,0,0,0,85,73,84,101,120,116,65,117,116,111,99,111,114,114,101,99,116,105,111,110,84,121,112,101,78,111,0,4,28,0,0,0,85,73,84,101,120,116,65,117,116,111,99,111,114,114,101,99,116,105,111,110,84,121,112,101,89,101,115,0,4,18,0,0,0,85,73,66,97,114,83,116,121,108,101,68,101,102,97,117,108,116,0,4,16,0,0,0,85,73,66,97,114,83,116,121,108,101,66,108,97,99,107,0,4,22,0,0,0,85,73,66,97,114,83,116,121,108,101,66,108,97,99,107,79,112,97,113,117,101,0,4,27,0,0,0,85,73,66,97,114,83,116,121,108,101,66,108,97,99,107,84,114,97,110,115,108,117,99,101,110,116,0,4,35,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,85,115,101,80,114,111,116,111,99,111,108,67,97,99,104,101,80,111,108,105,99,121,0,4,41,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,108,111,97,100,73,103,110,111,114,105,110,103,76,111,99,97,108,67,97,99,104,101,68,97,116,97,0,4,50,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,108,111,97,100,73,103,110,111,114,105,110,103,76,111,99,97,108,65,110,100,82,101,109,111,116,101,67,97,99,104,101,68,97,116,97,0,4,36,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,108,111,97,100,73,103,110,111,114,105,110,103,67,97,99,104,101,68,97,116,97,0,4,36,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,116,117,114,110,67,97,99,104,101,68,97,116,97,69,108,115,101,76,111,97,100,0,4,36,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,116,117,114,110,67,97,99,104,101,68,97,116,97,68,111,110,116,76,111,97,100,0,4,40,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,108,111,97,100,82,101,118,97,108,105,100,97,116,105,110,103,67,97,99,104,101,68,97,116,97,0,4,29,0,0,0,85,73,83,101,103,109,101,110,116,101,100,67,111,110,116,114,111,108,83,116,121,108,101,80,108,97,105,110,0,4,32,0,0,0,85,73,83,101,103,109,101,110,116,101,100,67,111,110,116,114,111,108,83,116,121,108,101,66,111,114,100,101,114,101,100,0,4,27,0,0,0,85,73,83,101,103,109,101,110,116,101,100,67,111,110,116,114,111,108,83,116,121,108,101,66,97,114,0,4,29,0,0,0,85,73,82,101,109,111,116,101,78,111,116,105,102,105,99,97,116,105,111,110,84,121,112,101,78,111,110,101,0,4,30,0,0,0,85,73,82,101,109,111,116,101,78,111,116,105,102,105,99,97,116,105,111,110,84,121,112,101,66,97,100,103,101,0,4,30,0,0,0,85,73,82,101,109,111,116,101,78,111,116,105,102,105,99,97,116,105,111,110,84,121,112,101,83,111,117,110,100,0,4,30,0,0,0,85,73,82,101,109,111,116,101,78,111,116,105,102,105,99,97,116,105,111,110,84,121,112,101,65,108,101,114,116,0,4,31,0,0,0,78,83,85,82,76,67,114,101,100,101,110,116,105,97,108,80,101,114,115,105,115,116,101,110,99,101,78,111,110,101,0,4,37,0,0,0,78,83,85,82,76,67,114,101,100,101,110,116,105,97,108,80,101,114,115,105,115,116,101,110,99,101,70,111,114,83,101,115,115,105,111,110,0,4,36,0,0,0,78,83,85,82,76,67,114,101,100,101,110,116,105,97,108,80,101,114,115,105,115,116,101,110,99,101,80,101,114,109,97,110,101,110,116,0,4,27,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,85,110,107,110,111,119,110,0,4,28,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,80,111,114,116,114,97,105,116,0,4,38,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,80,111,114,116,114,97,105,116,85,112,115,105,100,101,68,111,119,110,0,4,33,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,76,97,110,100,115,99,97,112,101,76,101,102,116,0,4,34,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,76,97,110,100,115,99,97,112,101,82,105,103,104,116,0,4,26,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,70,97,99,101,85,112,0,4,28,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,70,97,99,101,68,111,119,110,0,4,31,0,0,0,85,73,73,110,116,101,114,102,97,99,101,79,114,105,101,110,116,97,116,105,111,110,80,111,114,116,114,97,105,116,0,4,41,0,0,0,85,73,73,110,116,101,114,102,97,99,101,79,114,105,101,110,116,97,116,105,111,110,80,111,114,116,114,97,105,116,85,112,115,105,100,101,68,111,119,110,0,4,36,0,0,0,85,73,73,110,116,101,114,102,97,99,101,79,114,105,101,110,116,97,116,105,111,110,76,97,110,100,115,99,97,112,101,76,101,102,116,0,4,37,0,0,0,85,73,73,110,116,101,114,102,97,99,101,79,114,105,101,110,116,97,116,105,111,110,76,97,110,100,115,99,97,112,101,82,105,103,104,116,0,4,30,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,67,117,114,118,101,69,97,115,101,73,110,79,117,116,0,4,27,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,67,117,114,118,101,69,97,115,101,73,110,0,4,28,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,67,117,114,118,101,69,97,115,101,79,117,116,0,4,27,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,67,117,114,118,101,76,105,110,101,97,114,0,4,28,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,70,97,100,101,0,4,29,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,82,105,103,104,116,0,4,28,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,76,101,102,116,0,4,27,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,84,111,112,0,4,30,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,66,111,116,116,111,109,0,4,28,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,78,111,110,101,0,4,30,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,77,105,100,100,108,101,0,4,30,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,78,111,110,101,0,4,38,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,70,108,105,112,70,114,111,109,76,101,102,116,0,4,39,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,70,108,105,112,70,114,111,109,82,105,103,104,116,0,4,32,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,67,117,114,108,85,112,0,4,34,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,67,117,114,108,68,111,119,110,0,4,23,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,78,111,110,101,0,4,37,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,76,101,102,116,77,97,114,103,105,110,0,4,32,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,87,105,100,116,104,0,4,38,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,82,105,103,104,116,77,97,114,103,105,110,0,4,36,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,84,111,112,77,97,114,103,105,110,0,4,33,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,72,101,105,103,104,116,0,4,39,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,66,111,116,116,111,109,77,97,114,103,105,110,0,4,35,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,76,105,110,107,67,108,105,99,107,101,100,0,4,37,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,70,111,114,109,83,117,98,109,105,116,116,101,100,0,4,35,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,66,97,99,107,70,111,114,119,97,114,100,0,4,30,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,82,101,108,111,97,100,0,4,39,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,70,111,114,109,82,101,115,117,98,109,105,116,116,101,100,0,4,29,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,79,116,104,101,114,0,4,31,0,0,0,78,83,72,84,84,80,67,111,111,107,105,101,65,99,99,101,112,116,80,111,108,105,99,121,65,108,119,97,121,115,0,4,30,0,0,0,78,83,72,84,84,80,67,111,111,107,105,101,65,99,99,101,112,116,80,111,108,105,99,121,78,101,118,101,114,0,4,51,0,0,0,78,83,72,84,84,80,67,111,111,107,105,101,65,99,99,101,112,116,80,111,108,105,99,121,79,110,108,121,70,114,111,109,77,97,105,110,68,111,99,117,109,101,110,116,68,111,109,97,105,110,0,4,36,0,0,0,83,75,80,97,121,109,101,110,116,84,114,97,110,115,97,99,116,105,111,110,83,116,97,116,101,80,117,114,99,104,97,115,105,110,103,0,4,35,0,0,0,83,75,80,97,121,109,101,110,116,84,114,97,110,115,97,99,116,105,111,110,83,116,97,116,101,80,117,114,99,104,97,115,101,100,0,4,32,0,0,0,83,75,80,97,121,109,101,110,116,84,114,97,110,115,97,99,116,105,111,110,83,116,97,116,101,70,97,105,108,101,100,0,4,34,0,0,0,83,75,80,97,121,109,101,110,116,84,114,97,110,115,97,99,116,105,111,110,83,116,97,116,101,82,101,115,116,111,114,101,100,0,4,15,0,0,0,83,75,69,114,114,111,114,85,110,107,110,111,119,110,0,4,21,0,0,0,83,75,69,114,114,111,114,67,108,105,101,110,116,73,110,118,97,108,105,100,0,4,24,0,0,0,83,75,69,114,114,111,114,80,97,121,109,101,110,116,67,97,110,99,101,108,108,101,100,0,4,22,0,0,0,83,75,69,114,114,111,114,80,97,121,109,101,110,116,73,110,118,97,108,105,100,0,4,25,0,0,0,83,75,69,114,114,111,114,80,97,121,109,101,110,116,78,111,116,65,108,108,111,119,101,100,0,4,24,0,0,0,85,73,83,116,97,116,117,115,66,97,114,83,116,121,108,101,68,101,102,97,117,108,116,0,4,33,0,0,0,85,73,83,116,97,116,117,115,66,97,114,83,116,121,108,101,66,108,97,99,107,84,114,97,110,115,108,117,99,101,110,116,0,4,28,0,0,0,85,73,83,116,97,116,117,115,66,97,114,83,116,121,108,101,66,108,97,99,107,79,112,97,113,117,101,0,4,42,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,72,111,114,105,122,111,110,116,97,108,65,108,105,103,110,109,101,110,116,67,101,110,116,101,114,0,4,40,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,72,111,114,105,122,111,110,116,97,108,65,108,105,103,110,109,101,110,116,76,101,102,116,0,4,41,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,72,111,114,105,122,111,110,116,97,108,65,108,105,103,110,109,101,110,116,82,105,103,104,116,0,4,40,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,72,111,114,105,122,111,110,116,97,108,65,108,105,103,110,109,101,110,116,70,105,108,108,0,4,21,0,0,0,71,75,80,101,101,114,83,116,97,116,101,65,118,97,105,108,97,98,108,101,0,4,23,0,0,0,71,75,80,101,101,114,83,116,97,116,101,85,110,97,118,97,105,108,97,98,108,101,0,4,21,0,0,0,71,75,80,101,101,114,83,116,97,116,101,67,111,110,110,101,99,116,101,100,0,4,24,0,0,0,71,75,80,101,101,114,83,116,97,116,101,68,105,115,99,111,110,110,101,99,116,101,100,0,4,22,0,0,0,71,75,80,101,101,114,83,116,97,116,101,67,111,110,110,101,99,116,105,110,103,0,4,20,0,0,0,71,75,83,101,115,115,105,111,110,77,111,100,101,83,101,114,118,101,114,0,4,20,0,0,0,71,75,83,101,115,115,105,111,110,77,111,100,101,67,108,105,101,110,116,0,4,18,0,0,0,71,75,83,101,115,115,105,111,110,77,111,100,101,80,101,101,114,0,4,19,0,0,0,71,75,83,101,110,100,68,97,116,97,82,101,108,105,97,98,108,101,0,4,21,0,0,0,71,75,83,101,110,100,68,97,116,97,85,110,114,101,108,105,97,98,108,101,0,4,46,0,0,0,85,73,73,109,97,103,101,80,105,99,107,101,114,67,111,110,116,114,111,108,108,101,114,83,111,117,114,99,101,84,121,112,101,80,104,111,116,111,76,105,98,114,97,114,121,0,4,40,0,0,0,85,73,73,109,97,103,101,80,105,99,107,101,114,67,111,110,116,114,111,108,108,101,114,83,111,117,114,99,101,84,121,112,101,67,97,109,101,114,97,0,4,50,0,0,0,85,73,73,109,97,103,101,80,105,99,107,101,114,67,111,110,116,114,111,108,108,101,114,83,111,117,114,99,101,84,121,112,101,83,97,118,101,100,80,104,111,116,111,115,65,108,98,117,109,0,4,19,0,0,0,78,83,79,114,100,101,114,101,100,65,115,99,101,110,100,105,110,103,0,3,0,0,0,0,0,0,-16,-65,4,14,0,0,0,78,83,79,114,100,101,114,101,100,83,97,109,101,0,4,20,0,0,0,78,83,79,114,100,101,114,101,100,68,101,115,99,101,110,100,105,110,103,0,4,34,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,112,97,114,97,116,111,114,83,116,121,108,101,78,111,110,101,0,4,40,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,112,97,114,97,116,111,114,83,116,121,108,101,83,105,110,103,108,101,76,105,110,101,0,4,46,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,112,97,114,97,116,111,114,83,116,121,108,101,83,105,110,103,108,101,76,105,110,101,69,116,99,104,101,100,0,4,36,0,0,0,107,67,76,65,117,116,104,111,114,105,122,97,116,105,111,110,83,116,97,116,117,115,78,111,116,68,101,116,101,114,109,105,110,101,100,0,4,33,0,0,0,107,67,76,65,117,116,104,111,114,105,122,97,116,105,111,110,83,116,97,116,117,115,82,101,115,116,114,105,99,116,101,100,0,4,29,0,0,0,107,67,76,65,117,116,104,111,114,105,122,97,116,105,111,110,83,116,97,116,117,115,68,101,110,105,101,100,0,4,33,0,0,0,107,67,76,65,117,116,104,111,114,105,122,97,116,105,111,110,83,116,97,116,117,115,65,117,116,104,111,114,105,122,101,100,0,4,39,0,0,0,85,73,83,119,105,112,101,71,101,115,116,117,114,101,82,101,99,111,103,110,105,122,101,114,68,105,114,101,99,116,105,111,110,82,105,103,104,116,0,4,38,0,0,0,85,73,83,119,105,112,101,71,101,115,116,117,114,101,82,101,99,111,103,110,105,122,101,114,68,105,114,101,99,116,105,111,110,76,101,102,116,0,4,36,0,0,0,85,73,83,119,105,112,101,71,101,115,116,117,114,101,82,101,99,111,103,110,105,122,101,114,68,105,114,101,99,116,105,111,110,85,112,0,4,38,0,0,0,85,73,83,119,105,112,101,71,101,115,116,117,114,101,82,101,99,111,103,110,105,122,101,114,68,105,114,101,99,116,105,111,110,68,111,119,110,0,4,40,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,86,101,114,116,105,99,97,108,65,108,105,103,110,109,101,110,116,67,101,110,116,101,114,0,4,37,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,86,101,114,116,105,99,97,108,65,108,105,103,110,109,101,110,116,84,111,112,0,4,40,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,86,101,114,116,105,99,97,108,65,108,105,103,110,109,101,110,116,66,111,116,116,111,109,0,4,38,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,86,101,114,116,105,99,97,108,65,108,105,103,110,109,101,110,116,70,105,108,108,0,4,19,0,0,0,85,73,69,118,101,110,116,84,121,112,101,84,111,117,99,104,101,115,0,4,18,0,0,0,85,73,69,118,101,110,116,84,121,112,101,77,111,116,105,111,110,0,4,25,0,0,0,85,73,69,118,101,110,116,84,121,112,101,82,101,109,111,116,101,67,111,110,116,114,111,108,0,0,0,0,0,-81,2,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,14,0,0,0,14,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,27,0,0,0,27,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,31,0,0,0,31,0,0,0,32,0,0,0,32,0,0,0,33,0,0,0,33,0,0,0,34,0,0,0,34,0,0,0,37,0,0,0,37,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,42,0,0,0,42,0,0,0,43,0,0,0,43,0,0,0,44,0,0,0,44,0,0,0,45,0,0,0,45,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,49,0,0,0,50,0,0,0,50,0,0,0,51,0,0,0,51,0,0,0,54,0,0,0,54,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,63,0,0,0,63,0,0,0,64,0,0,0,64,0,0,0,65,0,0,0,65,0,0,0,66,0,0,0,66,0,0,0,67,0,0,0,67,0,0,0,68,0,0,0,68,0,0,0,71,0,0,0,71,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,73,0,0,0,74,0,0,0,74,0,0,0,75,0,0,0,75,0,0,0,76,0,0,0,76,0,0,0,77,0,0,0,77,0,0,0,78,0,0,0,78,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,80,0,0,0,81,0,0,0,81,0,0,0,82,0,0,0,82,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,84,0,0,0,85,0,0,0,85,0,0,0,86,0,0,0,86,0,0,0,87,0,0,0,87,0,0,0,88,0,0,0,88,0,0,0,89,0,0,0,89,0,0,0,90,0,0,0,90,0,0,0,91,0,0,0,91,0,0,0,92,0,0,0,92,0,0,0,93,0,0,0,93,0,0,0,96,0,0,0,96,0,0,0,97,0,0,0,97,0,0,0,98,0,0,0,98,0,0,0,101,0,0,0,101,0,0,0,102,0,0,0,102,0,0,0,103,0,0,0,103,0,0,0,104,0,0,0,104,0,0,0,105,0,0,0,105,0,0,0,106,0,0,0,106,0,0,0,109,0,0,0,109,0,0,0,110,0,0,0,110,0,0,0,111,0,0,0,111,0,0,0,114,0,0,0,114,0,0,0,115,0,0,0,115,0,0,0,116,0,0,0,116,0,0,0,117,0,0,0,117,0,0,0,118,0,0,0,118,0,0,0,119,0,0,0,119,0,0,0,120,0,0,0,120,0,0,0,121,0,0,0,121,0,0,0,122,0,0,0,122,0,0,0,125,0,0,0,125,0,0,0,126,0,0,0,126,0,0,0,127,0,0,0,127,0,0,0,-128,0,0,0,-128,0,0,0,-127,0,0,0,-127,0,0,0,-126,0,0,0,-126,0,0,0,-125,0,0,0,-125,0,0,0,-124,0,0,0,-124,0,0,0,-123,0,0,0,-123,0,0,0,-122,0,0,0,-122,0,0,0,-121,0,0,0,-121,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-114,0,0,0,-114,0,0,0,-114,0,0,0,-114,0,0,0,-114,0,0,0,-114,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-104,0,0,0,-104,0,0,0,-103,0,0,0,-103,0,0,0,-102,0,0,0,-102,0,0,0,-101,0,0,0,-101,0,0,0,-100,0,0,0,-100,0,0,0,-97,0,0,0,-97,0,0,0,-96,0,0,0,-96,0,0,0,-95,0,0,0,-95,0,0,0,-92,0,0,0,-92,0,0,0,-91,0,0,0,-91,0,0,0,-90,0,0,0,-90,0,0,0,-89,0,0,0,-89,0,0,0,-86,0,0,0,-86,0,0,0,-85,0,0,0,-85,0,0,0,-84,0,0,0,-84,0,0,0,-83,0,0,0,-83,0,0,0,-82,0,0,0,-82,0,0,0,-81,0,0,0,-81,0,0,0,-80,0,0,0,-80,0,0,0,-79,0,0,0,-79,0,0,0,-78,0,0,0,-78,0,0,0,-77,0,0,0,-77,0,0,0,-76,0,0,0,-76,0,0,0,-75,0,0,0,-75,0,0,0,-74,0,0,0,-74,0,0,0,-73,0,0,0,-73,0,0,0,-72,0,0,0,-72,0,0,0,-71,0,0,0,-71,0,0,0,-70,0,0,0,-70,0,0,0,-69,0,0,0,-69,0,0,0,-68,0,0,0,-68,0,0,0,-67,0,0,0,-67,0,0,0,-66,0,0,0,-66,0,0,0,-65,0,0,0,-65,0,0,0,-64,0,0,0,-64,0,0,0,-61,0,0,0,-61,0,0,0,-60,0,0,0,-60,0,0,0,-59,0,0,0,-59,0,0,0,-58,0,0,0,-58,0,0,0,-54,0,0,0,-54,0,0,0,-53,0,0,0,-53,0,0,0,-52,0,0,0,-52,0,0,0,-51,0,0,0,-51,0,0,0,-48,0,0,0,-48,0,0,0,-47,0,0,0,-47,0,0,0,-44,0,0,0,-44,0,0,0,-43,0,0,0,-43,0,0,0,-42,0,0,0,-42,0,0,0,-41,0,0,0,-41,0,0,0,-38,0,0,0,-38,0,0,0,-37,0,0,0,-37,0,0,0,-36,0,0,0,-36,0,0,0,-33,0,0,0,-33,0,0,0,-32,0,0,0,-32,0,0,0,-31,0,0,0,-31,0,0,0,-30,0,0,0,-30,0,0,0,-26,0,0,0,-26,0,0,0,-25,0,0,0,-25,0,0,0,-24,0,0,0,-24,0,0,0,-23,0,0,0,-23,0,0,0,-22,0,0,0,-22,0,0,0,-21,0,0,0,-21,0,0,0,-20,0,0,0,-20,0,0,0,-17,0,0,0,-17,0,0,0,-16,0,0,0,-16,0,0,0,-15,0,0,0,-15,0,0,0,-12,0,0,0,-12,0,0,0,-11,0,0,0,-11,0,0,0,-11,0,0,0,-11,0,0,0,-11,0,0,0,-11,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-6,0,0,0,-6,0,0,0,-5,0,0,0,-5,0,0,0,-4,0,0,0,-4,0,0,0,-1,0,0,0,-1,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,2,1,0,0,2,1,0,0,3,1,0,0,3,1,0,0,4,1,0,0,4,1,0,0,5,1,0,0,5,1,0,0,8,1,0,0,8,1,0,0,9,1,0,0,9,1,0,0,10,1,0,0,10,1,0,0,11,1,0,0,11,1,0,0,14,1,0,0,14,1,0,0,15,1,0,0,15,1,0,0,16,1,0,0,16,1,0,0,17,1,0,0,17,1,0,0,20,1,0,0,20,1,0,0,21,1,0,0,21,1,0,0,22,1,0,0,22,1,0,0,23,1,0,0,23,1,0,0,24,1,0,0,24,1,0,0,25,1,0,0,25,1,0,0,26,1,0,0,26,1,0,0,29,1,0,0,29,1,0,0,30,1,0,0,30,1,0,0,31,1,0,0,31,1,0,0,32,1,0,0,32,1,0,0,33,1,0,0,33,1,0,0,36,1,0,0,36,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,38,1,0,0,38,1,0,0,38,1,0,0,38,1,0,0,38,1,0,0,38,1,0,0,39,1,0,0,39,1,0,0,39,1,0,0,39,1,0,0,39,1,0,0,39,1,0,0,40,1,0,0,40,1,0,0,40,1,0,0,40,1,0,0,40,1,0,0,40,1,0,0,41,1,0,0,41,1,0,0,41,1,0,0,41,1,0,0,41,1,0,0,41,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,45,1,0,0,45,1,0,0,46,1,0,0,46,1,0,0,47,1,0,0,47,1,0,0,48,1,0,0,48,1,0,0,49,1,0,0,49,1,0,0,50,1,0,0,50,1,0,0,53,1,0,0,53,1,0,0,54,1,0,0,54,1,0,0,55,1,0,0,55,1,0,0,59,1,0,0,59,1,0,0,60,1,0,0,60,1,0,0,61,1,0,0,61,1,0,0,62,1,0,0,62,1,0,0,65,1,0,0,65,1,0,0,66,1,0,0,66,1,0,0,67,1,0,0,67,1,0,0,68,1,0,0,68,1,0,0,69,1,0,0,69,1,0,0,72,1,0,0,72,1,0,0,73,1,0,0,73,1,0,0,74,1,0,0,74,1,0,0,77,1,0,0,77,1,0,0,78,1,0,0,78,1,0,0,79,1,0,0,79,1,0,0,80,1,0,0,80,1,0,0,83,1,0,0,83,1,0,0,84,1,0,0,84,1,0,0,85,1,0,0,85,1,0,0,86,1,0,0,86,1,0,0,87,1,0,0,87,1,0,0,90,1,0,0,90,1,0,0,91,1,0,0,91,1,0,0,92,1,0,0,92,1,0,0,95,1,0,0,95,1,0,0,96,1,0,0,96,1,0,0,99,1,0,0,99,1,0,0,100,1,0,0,100,1,0,0,101,1,0,0,101,1,0,0,104,1,0,0,104,1,0,0,105,1,0,0,105,1,0,0,106,1,0,0,106,1,0,0,109,1,0,0,109,1,0,0,110,1,0,0,110,1,0,0,111,1,0,0,111,1,0,0,114,1,0,0,114,1,0,0,115,1,0,0,115,1,0,0,116,1,0,0,116,1,0,0,117,1,0,0,117,1,0,0,120,1,0,0,120,1,0,0,120,1,0,0,120,1,0,0,120,1,0,0,120,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,122,1,0,0,122,1,0,0,122,1,0,0,122,1,0,0,122,1,0,0,122,1,0,0,123,1,0,0,123,1,0,0,123,1,0,0,123,1,0,0,123,1,0,0,123,1,0,0,126,1,0,0,126,1,0,0,127,1,0,0,127,1,0,0,-128,1,0,0,-128,1,0,0,-127,1,0,0,-127,1,0,0,-124,1,0,0,-124,1,0,0,-123,1,0,0,-123,1,0,0,-122,1,0,0,-122,1,0,0,-121,1,0,0,-121,1,0,0,-118,1,0,0,-118,1,0,0,-117,1,0,0,-117,1,0,0,-116,1,0,0,-116,1,0,0,-116,1,0,0,0,0,0,0,0,0,0,0,72,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,101,120,116,47,104,116,116,112,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,26,0,0,0,5,0,0,0,6,64,64,0,26,64,0,0,22,0,0,-128,30,0,-128,0,5,0,0,0,6,64,64,0,100,0,0,0,9,64,0,-127,5,0,0,0,6,64,64,0,100,64,0,0,9,64,-128,-127,5,0,0,0,6,64,64,0,100,-128,0,0,9,64,0,-126,5,0,0,0,6,64,64,0,100,-64,0,0,9,64,-128,-126,5,0,0,0,6,64,64,0,100,0,1,0,9,64,0,-125,30,0,-128,0,7,0,0,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,104,116,116,112,0,4,5,0,0,0,112,111,115,116,0,4,4,0,0,0,103,101,116,0,4,7,0,0,0,100,101,108,101,116,101,0,4,4,0,0,0,112,117,116,0,4,13,0,0,0,101,115,99,97,112,101,80,97,114,97,109,115,0,5,0,0,0,0,0,0,0,3,0,0,0,6,0,0,0,0,1,0,3,8,0,0,0,9,64,64,-128,69,-128,0,0,70,-64,-64,0,70,0,-63,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,109,101,116,104,111,100,0,4,5,0,0,0,80,79,83,84,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,104,116,116,112,0,4,8,0,0,0,114,101,113,117,101,115,116,0,0,0,0,0,8,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,8,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,11,0,0,0,0,1,0,3,8,0,0,0,9,64,64,-128,69,-128,0,0,70,-64,-64,0,70,0,-63,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,109,101,116,104,111,100,0,4,4,0,0,0,71,69,84,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,104,116,116,112,0,4,8,0,0,0,114,101,113,117,101,115,116,0,0,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,1,0,0,0,8,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,16,0,0,0,0,1,0,3,8,0,0,0,9,64,64,-128,69,-128,0,0,70,-64,-64,0,70,0,-63,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,109,101,116,104,111,100,0,4,7,0,0,0,68,69,76,69,84,69,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,104,116,116,112,0,4,8,0,0,0,114,101,113,117,101,115,116,0,0,0,0,0,8,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,1,0,0,0,8,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,21,0,0,0,0,1,0,3,8,0,0,0,9,64,64,-128,69,-128,0,0,70,-64,-64,0,70,0,-63,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,109,101,116,104,111,100,0,4,4,0,0,0,80,85,84,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,104,116,116,112,0,4,8,0,0,0,114,101,113,117,101,115,116,0,0,0,0,0,8,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,1,0,0,0,8,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,43,0,0,0,0,2,0,6,23,0,0,0,26,64,0,0,22,64,0,-128,-125,0,0,1,-98,0,0,1,-123,0,0,0,-64,0,0,0,-100,-128,0,1,23,64,64,1,22,0,0,-128,30,0,0,1,-123,-128,0,0,-122,-64,64,1,-64,0,0,0,36,1,0,0,0,0,-128,0,-100,-128,-128,1,-59,-128,0,0,-58,0,-63,1,0,1,0,1,65,65,1,0,-35,0,-128,1,-34,0,0,0,30,0,-128,0,6,0,0,0,4,5,0,0,0,116,121,112,101,0,4,7,0,0,0,115,116,114,105,110,103,0,4,6,0,0,0,116,97,98,108,101,0,4,4,0,0,0,109,97,112,0,4,7,0,0,0,99,111,110,99,97,116,0,4,2,0,0,0,38,0,1,0,0,0,0,0,0,0,27,0,0,0,40,0,0,0,1,2,0,6,46,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,23,64,64,1,22,-64,1,-128,-123,-128,0,0,-122,-64,64,1,-122,0,65,1,-64,0,0,0,0,1,-128,0,-99,0,-128,1,-98,0,0,0,22,-64,7,-128,-123,64,1,0,-122,-128,65,1,-59,-64,1,0,0,1,0,0,-36,0,0,1,-100,-128,0,0,0,0,0,1,-124,0,0,0,-102,0,0,0,22,0,4,-128,-123,0,0,0,-64,0,-128,0,-100,-128,0,1,23,0,66,1,22,64,1,-128,-127,64,2,0,-117,-128,66,1,4,1,0,0,-100,-128,-128,1,64,0,0,1,22,64,1,-128,-127,-64,2,0,-117,-128,66,1,4,1,0,0,64,1,-128,0,-100,-128,0,2,64,0,0,1,-128,0,-128,0,-63,0,3,0,0,1,0,0,-107,0,1,1,-98,0,0,1,30,0,-128,0,13,0,0,0,4,5,0,0,0,116,121,112,101,0,4,6,0,0,0,116,97,98,108,101,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,104,116,116,112,0,4,13,0,0,0,101,115,99,97,112,101,80,97,114,97,109,115,0,4,7,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,101,115,99,97,112,101,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,7,0,0,0,110,117,109,98,101,114,0,4,5,0,0,0,37,115,91,93,0,4,7,0,0,0,102,111,114,109,97,116,0,4,7,0,0,0,37,115,91,37,115,93,0,4,2,0,0,0,61,0,0,0,0,0,46,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,40,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,45,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,45,0,0,0,1,0,0,0,7,0,0,0,112,114,101,102,105,120,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,40,0,0,0,40,0,0,0,27,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,43,0,0,0,3,0,0,0,7,0,0,0,112,97,114,97,109,115,0,0,0,0,0,22,0,0,0,7,0,0,0,112,114,101,102,105,120,0,0,0,0,0,22,0,0,0,7,0,0,0,112,97,114,97,109,115,0,16,0,0,0,22,0,0,0,0,0,0,0,26,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,6,0,0,0,3,0,0,0,8,0,0,0,8,0,0,0,11,0,0,0,8,0,0,0,13,0,0,0,13,0,0,0,16,0,0,0,13,0,0,0,18,0,0,0,18,0,0,0,21,0,0,0,18,0,0,0,23,0,0,0,23,0,0,0,43,0,0,0,23,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,101,120,116,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,13,0,0,0,5,0,0,0,65,64,0,0,28,64,0,1,5,0,0,0,65,-128,0,0,28,64,0,1,5,0,0,0,65,-64,0,0,28,64,0,1,5,0,0,0,65,0,1,0,28,64,0,1,30,0,-128,0,5,0,0,0,4,8,0,0,0,114,101,113,117,105,114,101,0,4,14,0,0,0,119,97,120,46,101,120,116,46,116,97,98,108,101,0,4,15,0,0,0,119,97,120,46,101,120,116,46,115,116,114,105,110,103,0,4,15,0,0,0,119,97,120,46,101,120,116,46,110,117,109,98,101,114,0,4,13,0,0,0,119,97,120,46,101,120,116,46,104,116,116,112,0,0,0,0,0,13,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,101,120,116,47,110,117,109,98,101,114,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,13,27,0,0,0,10,0,0,0,7,0,0,0,10,0,0,6,65,64,0,0,-127,-128,0,0,-63,-64,0,0,1,1,1,0,65,65,1,0,-127,-127,1,0,-63,-63,1,0,1,2,2,0,65,66,2,0,-127,-126,2,0,-63,-62,2,0,1,3,3,0,34,64,0,6,69,0,0,0,-92,0,0,0,0,0,0,0,73,-128,-128,-122,69,0,0,0,-92,64,0,0,73,-128,0,-121,69,0,0,0,-92,-128,0,0,73,-128,-128,-121,30,0,-128,0,16,0,0,0,4,7,0,0,0,110,117,109,98,101,114,0,4,8,0,0,0,74,97,110,117,97,114,121,0,4,9,0,0,0,70,101,98,114,117,97,114,121,0,4,6,0,0,0,77,97,114,99,104,0,4,6,0,0,0,65,112,114,105,108,0,4,4,0,0,0,77,97,121,0,4,5,0,0,0,74,117,110,101,0,4,5,0,0,0,74,117,108,121,0,4,7,0,0,0,65,117,103,117,115,116,0,4,10,0,0,0,83,101,112,116,101,109,98,101,114,0,4,8,0,0,0,79,99,116,111,98,101,114,0,4,9,0,0,0,78,111,118,101,109,98,101,114,0,4,9,0,0,0,68,101,99,101,109,98,101,114,0,4,8,0,0,0,116,111,77,111,110,116,104,0,4,11,0,0,0,116,111,99,117,114,114,101,110,99,121,0,4,14,0,0,0,99,111,109,109,97,83,101,112,101,114,97,116,101,0,3,0,0,0,0,0,0,0,4,0,0,0,7,0,0,0,1,1,0,3,8,0,0,0,69,0,0,0,-128,0,0,0,92,-128,0,1,0,0,-128,0,68,0,0,0,70,0,-128,0,94,0,0,1,30,0,-128,0,1,0,0,0,4,9,0,0,0,116,111,110,117,109,98,101,114,0,0,0,0,0,8,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,110,0,0,0,0,0,7,0,0,0,1,0,0,0,14,0,0,0,110,117,109,98,101,114,84,111,77,111,110,116,104,0,0,0,0,0,9,0,0,0,11,0,0,0,0,1,0,4,8,0,0,0,65,0,0,0,-123,64,0,0,-122,-128,64,1,-64,0,0,0,-100,-128,0,1,85,-128,-128,0,94,0,0,1,30,0,-128,0,3,0,0,0,4,2,0,0,0,36,0,4,7,0,0,0,110,117,109,98,101,114,0,4,14,0,0,0,99,111,109,109,97,83,101,112,101,114,97,116,101,0,0,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,1,0,0,0,2,0,0,0,110,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,21,0,0,0,0,1,0,6,18,0,0,0,69,0,0,0,-128,0,0,0,92,-128,0,1,-123,-128,0,0,-122,-64,64,1,-64,0,-128,0,1,1,1,0,65,65,1,0,-100,-64,0,2,-57,64,0,0,64,0,0,1,-123,64,0,0,23,-128,65,1,22,0,-3,127,22,0,0,-128,22,-128,-4,127,94,0,0,1,30,0,-128,0,7,0,0,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,2,0,0,0,107,0,4,7,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,103,115,117,98,0,4,17,0,0,0,94,40,45,63,37,100,43,41,40,37,100,37,100,37,100,41,0,4,6,0,0,0,37,49,44,37,50,0,3,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,20,0,0,0,21,0,0,0,2,0,0,0,2,0,0,0,110,0,0,0,0,0,17,0,0,0,10,0,0,0,102,111,114,109,97,116,116,101,100,0,3,0,0,0,17,0,0,0,0,0,0,0,27,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,7,0,0,0,4,0,0,0,9,0,0,0,11,0,0,0,9,0,0,0,13,0,0,0,21,0,0,0,13,0,0,0,21,0,0,0,1,0,0,0,14,0,0,0,110,117,109,98,101,114,84,111,77,111,110,116,104,0,16,0,0,0,26,0,0,0,0,0,0,0,74,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,101,120,116,47,115,116,114,105,110,103,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,22,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,5,0,0,0,100,64,0,0,9,64,0,-127,5,0,0,0,100,-128,0,0,9,64,-128,-127,5,0,0,0,100,-64,0,0,9,64,0,-126,5,0,0,0,100,0,1,0,9,64,-128,-126,5,0,0,0,100,64,1,0,9,64,0,-125,5,0,0,0,100,-128,1,0,9,64,-128,-125,30,0,-128,0,8,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,9,0,0,0,117,110,101,115,99,97,112,101,0,4,6,0,0,0,115,112,108,105,116,0,4,6,0,0,0,115,116,114,105,112,0,4,10,0,0,0,99,97,109,101,108,67,97,115,101,0,4,7,0,0,0,101,115,99,97,112,101,0,4,15,0,0,0,100,101,99,111,100,101,69,110,116,105,116,105,101,115,0,4,16,0,0,0,99,97,115,101,73,110,115,101,110,115,105,116,105,118,101,0,7,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,0,1,0,5,16,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,1,-63,0,0,92,-128,0,2,0,0,-128,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,0,1,0,36,1,0,0,92,-128,0,2,0,0,-128,0,30,0,0,1,30,0,-128,0,5,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,103,115,117,98,0,4,2,0,0,0,43,0,4,2,0,0,0,32,0,4,9,0,0,0,37,37,40,37,120,37,120,41,0,1,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0,0,1,0,5,9,0,0,0,69,0,0,0,70,64,-64,0,-123,-128,0,0,-64,0,0,0,1,-63,0,0,-100,0,-128,1,93,0,0,0,94,0,0,0,30,0,-128,0,4,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,99,104,97,114,0,4,9,0,0,0,116,111,110,117,109,98,101,114,0,3,0,0,0,0,0,0,48,64,0,0,0,0,9,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,1,0,0,0,4,0,0,0,104,101,120,0,0,0,0,0,8,0,0,0,0,0,0,0,16,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,4,0,0,0,117,114,108,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,17,0,0,0,0,2,0,10,21,0,0,0,-118,0,0,0,-59,0,0,0,-58,64,-64,1,0,1,0,0,65,-127,0,0,-101,65,-128,0,22,0,0,-128,-127,-63,0,0,-63,1,1,0,85,-63,-127,2,-36,0,-127,1,22,0,1,-128,-59,65,1,0,-58,-127,-63,3,0,2,0,1,64,2,0,3,-36,65,-128,1,-31,64,0,0,22,0,-2,127,-98,0,0,1,30,0,-128,0,7,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,103,109,97,116,99,104,0,4,4,0,0,0,40,91,94,0,4,2,0,0,0,32,0,4,4,0,0,0,93,43,41,0,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,105,110,115,101,114,116,0,0,0,0,0,21,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,12,0,0,0,13,0,0,0,16,0,0,0,17,0,0,0,7,0,0,0,2,0,0,0,115,0,0,0,0,0,20,0,0,0,4,0,0,0,115,101,112,0,0,0,0,0,20,0,0,0,2,0,0,0,116,0,1,0,0,0,20,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,11,0,0,0,19,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,11,0,0,0,19,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,11,0,0,0,19,0,0,0,2,0,0,0,111,0,12,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,24,0,0,0,0,2,0,6,19,0,0,0,90,64,0,0,22,0,0,-128,65,0,0,0,-117,64,64,0,1,-127,0,0,64,1,-128,0,21,65,1,2,65,-63,0,0,-100,-128,0,2,0,0,0,1,-117,64,64,0,0,1,-128,0,65,1,1,0,21,65,1,2,65,-63,0,0,-100,-128,0,2,0,0,0,1,30,0,0,1,30,0,-128,0,5,0,0,0,4,4,0,0,0,37,115,43,0,4,5,0,0,0,103,115,117,98,0,4,2,0,0,0,94,0,4,1,0,0,0,0,4,2,0,0,0,36,0,0,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,2,0,0,0,2,0,0,0,115,0,0,0,0,0,18,0,0,0,8,0,0,0,112,97,116,116,101,114,110,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,34,0,0,0,0,1,0,13,27,0,0,0,75,0,64,0,-63,64,0,0,92,-128,-128,1,-123,-128,0,0,-122,-64,64,1,-64,0,-128,0,1,1,1,0,-100,-128,-128,1,-59,64,1,0,0,1,-128,0,-36,0,1,1,22,-128,2,-128,0,2,0,1,75,-126,-63,3,-63,2,1,0,1,3,1,0,92,-126,0,2,75,-62,-63,4,92,-126,0,1,-117,-126,-63,3,1,3,2,0,-100,-126,-128,1,-107,-128,2,4,-31,-128,0,0,22,-128,-4,127,-98,0,0,1,30,0,-128,0,9,0,0,0,4,6,0,0,0,115,112,108,105,116,0,4,3,0,0,0,95,45,0,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,114,101,109,111,118,101,0,3,0,0,0,0,0,0,-16,63,4,7,0,0,0,105,112,97,105,114,115,0,4,4,0,0,0,115,117,98,0,4,6,0,0,0,117,112,112,101,114,0,3,0,0,0,0,0,0,0,64,0,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,29,0,0,0,30,0,0,0,33,0,0,0,34,0,0,0,8,0,0,0,2,0,0,0,115,0,0,0,0,0,26,0,0,0,11,0,0,0,115,112,108,105,116,84,97,98,108,101,0,3,0,0,0,26,0,0,0,7,0,0,0,114,101,115,117,108,116,0,8,0,0,0,26,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,11,0,0,0,25,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,11,0,0,0,25,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,11,0,0,0,25,0,0,0,2,0,0,0,105,0,12,0,0,0,23,0,0,0,6,0,0,0,99,104,117,110,107,0,12,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,44,0,0,0,0,1,0,5,16,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,36,1,0,0,92,-128,0,2,0,0,-128,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-64,0,0,1,1,1,0,92,-128,0,2,0,0,-128,0,30,0,0,1,30,0,-128,0,5,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,103,115,117,98,0,4,51,0,0,0,40,91,33,37,42,39,37,40,37,41,59,58,64,38,61,37,43,37,36,44,47,37,63,35,37,91,37,93,60,62,126,37,46,34,123,125,124,92,37,45,96,95,37,94,37,37,37,99,93,41,0,4,2,0,0,0,32,0,4,2,0,0,0,43,0,1,0,0,0,0,0,0,0,38,0,0,0,40,0,0,0,0,1,0,5,10,0,0,0,69,0,0,0,70,64,-64,0,-127,-128,0,0,-59,0,0,0,-58,-64,-64,1,0,1,0,0,-36,0,0,1,93,0,0,0,94,0,0,0,30,0,-128,0,4,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,102,111,114,109,97,116,0,4,7,0,0,0,37,37,37,48,50,88,0,4,5,0,0,0,98,121,116,101,0,0,0,0,0,10,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,1,0,0,0,2,0,0,0,99,0,0,0,0,0,9,0,0,0,0,0,0,0,16,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,40,0,0,0,37,0,0,0,40,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,43,0,0,0,44,0,0,0,1,0,0,0,2,0,0,0,115,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,90,0,0,0,0,1,0,6,47,0,0,0,74,-128,6,0,73,64,64,-128,73,-64,64,-127,73,64,65,-126,73,-64,65,-125,73,64,66,-124,73,-64,66,-123,73,64,67,-122,73,-64,67,-121,73,64,68,-120,73,-64,68,-119,73,64,69,-118,73,-64,69,-117,73,64,70,-116,73,-64,70,-115,73,64,71,-114,73,-64,71,-113,73,64,72,-112,73,-64,72,-111,73,64,73,-110,73,-64,73,-109,73,64,74,-108,73,-64,74,-107,73,64,75,-106,73,-64,75,-105,73,64,76,-104,73,-64,76,-103,73,64,77,-102,73,-64,77,-101,73,64,78,-100,73,-64,78,-99,73,64,79,-98,73,-64,79,-97,73,64,80,-96,73,-64,80,-95,73,64,81,-94,73,-64,81,-93,73,64,82,-92,73,-64,82,-91,-123,0,19,0,-122,64,83,1,-64,0,0,0,1,-127,19,0,64,1,-128,0,-99,0,0,2,-98,0,0,0,30,0,-128,0,79,0,0,0,4,4,0,0,0,97,109,112,0,4,2,0,0,0,38,0,4,3,0,0,0,108,116,0,4,2,0,0,0,60,0,4,3,0,0,0,103,116,0,4,2,0,0,0,62,0,4,5,0,0,0,113,117,111,116,0,4,2,0,0,0,34,0,4,5,0,0,0,97,112,111,115,0,4,2,0,0,0,39,0,4,5,0,0,0,110,98,115,112,0,4,2,0,0,0,32,0,4,6,0,0,0,105,101,120,99,108,0,4,3,0,0,0,-62,-95,0,4,5,0,0,0,99,101,110,116,0,4,3,0,0,0,-62,-94,0,4,6,0,0,0,112,111,117,110,100,0,4,3,0,0,0,-62,-93,0,4,7,0,0,0,99,117,114,114,101,110,0,4,3,0,0,0,-62,-92,0,4,4,0,0,0,121,101,110,0,4,3,0,0,0,-62,-91,0,4,7,0,0,0,98,114,118,98,97,114,0,4,3,0,0,0,-62,-90,0,4,5,0,0,0,115,101,99,116,0,4,3,0,0,0,-62,-89,0,4,4,0,0,0,117,109,108,0,4,3,0,0,0,-62,-88,0,4,5,0,0,0,99,111,112,121,0,4,3,0,0,0,-62,-87,0,4,5,0,0,0,111,114,100,102,0,4,3,0,0,0,-62,-86,0,4,6,0,0,0,108,97,113,117,111,0,4,3,0,0,0,-62,-85,0,4,4,0,0,0,115,104,121,0,4,3,0,0,0,-62,-83,0,4,4,0,0,0,114,101,103,0,4,3,0,0,0,-62,-82,0,4,5,0,0,0,109,97,99,114,0,4,3,0,0,0,-62,-81,0,4,4,0,0,0,100,101,103,0,4,3,0,0,0,-62,-80,0,4,7,0,0,0,112,108,117,115,109,110,0,4,3,0,0,0,-62,-79,0,4,5,0,0,0,115,117,112,50,0,4,3,0,0,0,-62,-78,0,4,5,0,0,0,115,117,112,51,0,4,3,0,0,0,-62,-77,0,4,6,0,0,0,97,99,117,116,101,0,4,3,0,0,0,-62,-76,0,4,6,0,0,0,109,105,99,114,111,0,4,3,0,0,0,-62,-75,0,4,5,0,0,0,112,97,114,97,0,4,3,0,0,0,-62,-74,0,4,7,0,0,0,109,105,100,100,111,116,0,4,3,0,0,0,-62,-73,0,4,6,0,0,0,99,101,100,105,108,0,4,3,0,0,0,-62,-72,0,4,5,0,0,0,115,117,112,49,0,4,3,0,0,0,-62,-71,0,4,5,0,0,0,111,114,100,109,0,4,3,0,0,0,-62,-70,0,4,6,0,0,0,114,97,113,117,111,0,4,3,0,0,0,-62,-69,0,4,7,0,0,0,102,114,97,99,49,52,0,4,3,0,0,0,-62,-68,0,4,7,0,0,0,102,114,97,99,49,50,0,4,3,0,0,0,-62,-67,0,4,7,0,0,0,102,114,97,99,51,52,0,4,3,0,0,0,-62,-66,0,4,7,0,0,0,105,113,117,101,115,116,0,4,3,0,0,0,-62,-65,0,4,6,0,0,0,116,105,109,101,115,0,4,3,0,0,0,-61,-105,0,4,7,0,0,0,100,105,118,105,100,101,0,4,3,0,0,0,-61,-73,0,4,7,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,103,115,117,98,0,4,8,0,0,0,38,40,37,119,43,41,59,0,0,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,90,0,0,0,2,0,0,0,2,0,0,0,115,0,0,0,0,0,46,0,0,0,9,0,0,0,101,110,116,105,116,105,101,115,0,39,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,97,0,0,0,0,1,0,5,9,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,36,1,0,0,92,-128,0,2,0,0,-128,0,30,0,0,1,30,0,-128,0,3,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,103,115,117,98,0,4,3,0,0,0,37,97,0,1,0,0,0,0,0,0,0,93,0,0,0,95,0,0,0,0,1,0,6,14,0,0,0,69,0,0,0,70,64,-64,0,-127,-128,0,0,-59,0,0,0,-58,-64,-64,1,0,1,0,0,-36,-128,0,1,5,1,0,0,6,1,65,2,64,1,0,0,28,1,0,1,93,0,0,0,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,102,111,114,109,97,116,0,4,7,0,0,0,91,37,115,37,115,93,0,4,6,0,0,0,108,111,119,101,114,0,4,6,0,0,0,117,112,112,101,114,0,0,0,0,0,14,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,95,0,0,0,1,0,0,0,2,0,0,0,99,0,0,0,0,0,13,0,0,0,0,0,0,0,9,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,95,0,0,0,93,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,1,0,0,0,2,0,0,0,115,0,0,0,0,0,8,0,0,0,0,0,0,0,22,0,0,0,1,0,0,0,8,0,0,0,1,0,0,0,10,0,0,0,17,0,0,0,10,0,0,0,19,0,0,0,24,0,0,0,19,0,0,0,26,0,0,0,34,0,0,0,26,0,0,0,36,0,0,0,44,0,0,0,36,0,0,0,46,0,0,0,90,0,0,0,46,0,0,0,92,0,0,0,97,0,0,0,92,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,73,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,101,120,116,47,116,97,98,108,101,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,49,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,5,0,0,0,100,64,0,0,9,64,0,-127,5,0,0,0,100,-128,0,0,9,64,-128,-127,5,0,0,0,100,-64,0,0,9,64,0,-126,5,0,0,0,100,0,1,0,9,64,-128,-126,5,0,0,0,100,64,1,0,9,64,0,-125,5,0,0,0,100,-128,1,0,9,64,-128,-125,5,0,0,0,100,-64,1,0,9,64,0,-124,5,0,0,0,100,0,2,0,9,64,-128,-124,5,0,0,0,100,64,2,0,9,64,0,-123,5,0,0,0,100,-128,2,0,9,64,-128,-123,5,0,0,0,100,-64,2,0,9,64,0,-122,5,0,0,0,100,0,3,0,9,64,-128,-122,5,0,0,0,100,64,3,0,9,64,0,-121,5,0,0,0,100,-128,3,0,9,64,-128,-121,5,0,0,0,100,-64,3,0,9,64,0,-120,30,0,-128,0,17,0,0,0,4,6,0,0,0,116,97,98,108,101,0,4,6,0,0,0,99,108,111,110,101,0,4,6,0,0,0,109,101,114,103,101,0,4,5,0,0,0,107,101,121,115,0,4,7,0,0,0,117,110,105,113,117,101,0,4,7,0,0,0,118,97,108,117,101,115,0,4,5,0,0,0,108,97,115,116,0,4,7,0,0,0,97,112,112,101,110,100,0,4,8,0,0,0,105,110,100,101,120,79,102,0,4,9,0,0,0,105,110,99,108,117,100,101,115,0,4,12,0,0,0,114,101,109,111,118,101,86,97,108,117,101,0,4,5,0,0,0,101,97,99,104,0,4,5,0,0,0,102,105,110,100,0,4,7,0,0,0,102,105,108,116,101,114,0,4,4,0,0,0,109,97,112,0,4,8,0,0,0,103,114,111,117,112,66,121,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,16,0,0,0,0,0,0,0,1,0,0,0,17,0,0,0,0,2,0,10,29,0,0,0,-118,0,0,0,90,64,0,0,22,64,1,-128,-59,0,0,0,0,1,0,1,69,65,0,0,-128,1,0,0,92,1,0,1,-36,64,0,0,-59,-128,0,0,0,1,0,0,-36,0,1,1,22,-64,2,-128,5,-62,0,0,64,2,-128,3,28,-126,0,1,23,0,65,4,22,64,1,-128,5,2,1,0,6,66,65,4,64,2,-128,3,28,-126,0,1,-119,0,2,3,22,0,0,-128,-119,-64,1,3,-31,-128,0,0,22,64,-4,127,-98,0,0,1,30,0,-128,0,6,0,0,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,13,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,6,0,0,0,112,97,105,114,115,0,4,5,0,0,0,116,121,112,101,0,4,6,0,0,0,116,97,98,108,101,0,4,6,0,0,0,99,108,111,110,101,0,0,0,0,0,29,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,12,0,0,0,8,0,0,0,13,0,0,0,16,0,0,0,17,0,0,0,8,0,0,0,2,0,0,0,116,0,0,0,0,0,28,0,0,0,7,0,0,0,110,111,109,101,116,97,0,0,0,0,0,28,0,0,0,2,0,0,0,117,0,1,0,0,0,28,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,12,0,0,0,27,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,12,0,0,0,27,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,12,0,0,0,27,0,0,0,2,0,0,0,105,0,13,0,0,0,25,0,0,0,2,0,0,0,118,0,13,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,27,0,0,0,0,2,0,9,13,0,0,0,-123,0,0,0,-122,64,64,1,-64,0,0,0,-100,-128,0,1,-59,-128,0,0,0,1,-128,0,-36,0,1,1,22,0,0,-128,-119,-64,1,3,-31,-128,0,0,22,0,-1,127,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,116,97,98,108,101,0,4,6,0,0,0,99,108,111,110,101,0,4,6,0,0,0,112,97,105,114,115,0,0,0,0,0,13,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,22,0,0,0,23,0,0,0,26,0,0,0,27,0,0,0,8,0,0,0,2,0,0,0,116,0,0,0,0,0,12,0,0,0,2,0,0,0,117,0,0,0,0,0,12,0,0,0,2,0,0,0,114,0,4,0,0,0,12,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,7,0,0,0,11,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,7,0,0,0,11,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,7,0,0,0,11,0,0,0,2,0,0,0,105,0,8,0,0,0,9,0,0,0,2,0,0,0,118,0,8,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,33,0,0,0,0,1,0,10,14,0,0,0,74,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,0,1,-128,-59,65,0,0,-58,-127,-64,3,0,2,-128,0,64,2,-128,2,-36,65,-128,1,-95,-128,0,0,22,0,-2,127,94,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,112,97,105,114,115,0,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,105,110,115,101,114,116,0,0,0,0,0,14,0,0,0,30,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,7,0,0,0,2,0,0,0,116,0,0,0,0,0,13,0,0,0,5,0,0,0,107,101,121,115,0,1,0,0,0,13,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,12,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,12,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,12,0,0,0,2,0,0,0,107,0,5,0,0,0,10,0,0,0,2,0,0,0,118,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,42,0,0,0,0,1,0,10,21,0,0,0,74,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,-64,2,-128,-59,65,0,0,-58,-127,-64,3,0,2,-128,0,64,2,0,3,-36,-127,-128,1,-38,65,0,0,22,0,1,-128,-59,65,0,0,-58,-63,-64,3,0,2,-128,0,64,2,0,3,-36,65,-128,1,-95,-128,0,0,22,64,-4,127,94,0,0,1,30,0,-128,0,4,0,0,0,4,7,0,0,0,105,112,97,105,114,115,0,4,6,0,0,0,116,97,98,108,101,0,4,9,0,0,0,105,110,99,108,117,100,101,115,0,4,7,0,0,0,105,110,115,101,114,116,0,0,0,0,0,21,0,0,0,36,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,37,0,0,0,38,0,0,0,41,0,0,0,42,0,0,0,7,0,0,0,2,0,0,0,116,0,0,0,0,0,20,0,0,0,5,0,0,0,115,101,101,110,0,1,0,0,0,20,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,19,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,19,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,19,0,0,0,2,0,0,0,105,0,5,0,0,0,17,0,0,0,2,0,0,0,118,0,5,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,48,0,0,0,0,1,0,10,14,0,0,0,74,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,0,1,-128,-59,65,0,0,-58,-127,-64,3,0,2,-128,0,64,2,0,3,-36,65,-128,1,-95,-128,0,0,22,0,-2,127,94,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,112,97,105,114,115,0,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,105,110,115,101,114,116,0,0,0,0,0,14,0,0,0,45,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,7,0,0,0,2,0,0,0,116,0,0,0,0,0,13,0,0,0,7,0,0,0,118,97,108,117,101,115,0,1,0,0,0,13,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,12,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,12,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,12,0,0,0,2,0,0,0,107,0,5,0,0,0,10,0,0,0,2,0,0,0,118,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,52,0,0,0,0,1,0,2,4,0,0,0,84,0,0,0,70,64,0,0,94,0,0,1,30,0,-128,0,0,0,0,0,0,0,0,0,4,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,52,0,0,0,1,0,0,0,2,0,0,0,116,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,60,0,0,0,0,2,0,10,13,0,0,0,-123,0,0,0,-64,0,-128,0,-100,0,1,1,22,0,1,-128,-59,65,0,0,-58,-127,-64,3,0,2,0,0,64,2,0,3,-36,65,-128,1,-95,-128,0,0,22,0,-2,127,30,0,0,1,30,0,-128,0,3,0,0,0,4,7,0,0,0,105,112,97,105,114,115,0,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,105,110,115,101,114,116,0,0,0,0,0,13,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,55,0,0,0,56,0,0,0,59,0,0,0,60,0,0,0,7,0,0,0,2,0,0,0,116,0,0,0,0,0,12,0,0,0,11,0,0,0,109,111,114,101,86,97,108,117,101,115,0,0,0,0,0,12,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,11,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,11,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,11,0,0,0,2,0,0,0,105,0,4,0,0,0,9,0,0,0,2,0,0,0,118,0,4,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,72,0,0,0,0,2,0,9,24,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,-128,3,-128,-59,65,0,0,0,2,-128,0,-36,-127,0,1,23,-128,-64,3,22,-128,1,-128,-64,1,-128,0,0,2,0,3,-36,-127,0,1,-38,1,0,0,22,0,1,-128,94,1,0,1,22,-128,0,-128,23,64,0,3,22,0,0,-128,94,1,0,1,-95,-128,0,0,22,-128,-5,127,-125,0,0,1,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,112,97,105,114,115,0,4,5,0,0,0,116,121,112,101,0,4,9,0,0,0,102,117,110,99,116,105,111,110,0,0,0,0,0,24,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,63,0,0,0,68,0,0,0,71,0,0,0,71,0,0,0,72,0,0,0,7,0,0,0,2,0,0,0,116,0,0,0,0,0,23,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,23,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,21,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,21,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,21,0,0,0,2,0,0,0,107,0,4,0,0,0,19,0,0,0,2,0,0,0,118,0,4,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,76,0,0,0,0,2,0,5,7,0,0,0,-123,0,0,0,-122,64,64,1,-64,0,0,0,0,1,-128,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,2,0,0,0,4,6,0,0,0,116,97,98,108,101,0,4,8,0,0,0,105,110,100,101,120,79,102,0,0,0,0,0,7,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,76,0,0,0,2,0,0,0,2,0,0,0,116,0,0,0,0,0,6,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,82,0,0,0,0,2,0,6,14,0,0,0,-123,0,0,0,-122,64,64,1,-64,0,0,0,0,1,-128,0,-100,-128,-128,1,-102,0,0,0,22,0,1,-128,-59,0,0,0,-58,-128,-64,1,0,1,0,0,64,1,0,1,-36,64,-128,1,30,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,116,97,98,108,101,0,4,8,0,0,0,105,110,100,101,120,79,102,0,4,7,0,0,0,114,101,109,111,118,101,0,0,0,0,0,14,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,3,0,0,0,2,0,0,0,116,0,0,0,0,0,13,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,13,0,0,0,6,0,0,0,105,110,100,101,120,0,5,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,88,0,0,0,0,2,0,10,11,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,-64,0,-128,-64,1,-128,0,0,2,0,3,64,2,-128,2,-36,65,-128,1,-95,-128,0,0,22,64,-2,127,30,0,-128,0,1,0,0,0,4,6,0,0,0,112,97,105,114,115,0,0,0,0,0,11,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,85,0,0,0,86,0,0,0,88,0,0,0,7,0,0,0,2,0,0,0,116,0,0,0,0,0,10,0,0,0,5,0,0,0,102,117,110,99,0,0,0,0,0,10,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,10,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,10,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,10,0,0,0,2,0,0,0,107,0,4,0,0,0,8,0,0,0,2,0,0,0,118,0,4,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,90,0,0,0,96,0,0,0,0,2,0,9,17,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,-64,1,-128,-64,1,-128,0,0,2,0,3,-36,-127,0,1,-38,1,0,0,22,-128,0,-128,-64,1,0,3,0,2,-128,2,-34,1,-128,1,-95,-128,0,0,22,64,-3,127,-125,0,0,1,-98,0,0,1,30,0,-128,0,1,0,0,0,4,6,0,0,0,112,97,105,114,115,0,0,0,0,0,17,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,91,0,0,0,92,0,0,0,95,0,0,0,95,0,0,0,96,0,0,0,7,0,0,0,2,0,0,0,116,0,0,0,0,0,16,0,0,0,5,0,0,0,102,117,110,99,0,0,0,0,0,16,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,14,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,14,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,14,0,0,0,2,0,0,0,107,0,4,0,0,0,12,0,0,0,2,0,0,0,118,0,4,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,105,0,0,0,0,2,0,11,19,0,0,0,-118,0,0,0,-59,0,0,0,0,1,0,0,-36,0,1,1,22,64,2,-128,0,2,-128,0,64,2,-128,3,28,-126,0,1,26,2,0,0,22,0,1,-128,5,66,0,0,6,-126,64,4,64,2,0,1,-128,2,-128,3,28,66,-128,1,-31,-128,0,0,22,-64,-4,127,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,112,97,105,114,115,0,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,105,110,115,101,114,116,0,0,0,0,0,19,0,0,0,99,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,100,0,0,0,101,0,0,0,104,0,0,0,105,0,0,0,8,0,0,0,2,0,0,0,116,0,0,0,0,0,18,0,0,0,5,0,0,0,102,117,110,99,0,0,0,0,0,18,0,0,0,8,0,0,0,109,97,116,99,104,101,115,0,1,0,0,0,18,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,17,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,17,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,17,0,0,0,2,0,0,0,107,0,5,0,0,0,15,0,0,0,2,0,0,0,118,0,5,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,107,0,0,0,114,0,0,0,0,2,0,13,17,0,0,0,-118,0,0,0,-59,0,0,0,0,1,0,0,-36,0,1,1,22,-64,1,-128,5,66,0,0,6,-126,64,4,64,2,0,1,-128,2,-128,0,-64,2,-128,3,0,3,0,3,-100,2,-128,1,28,66,0,0,-31,-128,0,0,22,64,-3,127,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,112,97,105,114,115,0,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,105,110,115,101,114,116,0,0,0,0,0,17,0,0,0,108,0,0,0,109,0,0,0,109,0,0,0,109,0,0,0,109,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,109,0,0,0,110,0,0,0,113,0,0,0,114,0,0,0,8,0,0,0,2,0,0,0,116,0,0,0,0,0,16,0,0,0,5,0,0,0,102,117,110,99,0,0,0,0,0,16,0,0,0,7,0,0,0,109,97,112,112,101,100,0,1,0,0,0,16,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,15,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,15,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,15,0,0,0,2,0,0,0,107,0,5,0,0,0,13,0,0,0,2,0,0,0,118,0,5,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,125,0,0,0,0,2,0,12,22,0,0,0,-118,0,0,0,-59,0,0,0,0,1,0,0,-36,0,1,1,22,0,3,-128,0,2,-128,0,64,2,-128,3,28,-126,0,1,70,2,2,1,90,66,0,0,22,64,0,-128,74,2,0,0,-119,64,2,4,69,66,0,0,70,-126,-64,4,-122,2,2,1,-64,2,-128,3,92,66,-128,1,-31,-128,0,0,22,0,-4,127,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,112,97,105,114,115,0,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,105,110,115,101,114,116,0,0,0,0,0,22,0,0,0,117,0,0,0,118,0,0,0,118,0,0,0,118,0,0,0,118,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,121,0,0,0,121,0,0,0,121,0,0,0,121,0,0,0,121,0,0,0,118,0,0,0,121,0,0,0,124,0,0,0,125,0,0,0,9,0,0,0,2,0,0,0,116,0,0,0,0,0,21,0,0,0,5,0,0,0,102,117,110,99,0,0,0,0,0,21,0,0,0,8,0,0,0,103,114,111,117,112,101,100,0,1,0,0,0,21,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,20,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,20,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,20,0,0,0,2,0,0,0,107,0,5,0,0,0,18,0,0,0,2,0,0,0,118,0,5,0,0,0,18,0,0,0,9,0,0,0,103,114,111,117,112,75,101,121,0,8,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,-91,0,0,0,0,5,0,21,-125,0,0,0,-102,64,0,0,22,0,0,-128,-127,0,0,0,-38,64,0,0,22,0,0,-128,-63,64,0,0,26,65,0,0,22,64,0,-128,74,1,0,0,0,1,-128,2,65,-127,0,0,-118,1,0,0,-59,-63,0,0,0,2,0,0,-36,-127,0,1,23,0,-63,3,22,-64,21,-128,-59,65,1,0,0,2,0,2,-36,1,1,1,22,-64,0,-128,23,-64,2,0,22,64,0,-128,1,-125,1,0,30,3,0,1,-31,-127,0,0,22,64,-2,127,-59,1,1,0,-58,-63,-63,3,0,2,0,2,64,2,0,0,-36,65,-128,1,-59,1,1,0,-58,-63,-63,3,0,2,0,3,65,2,2,0,-36,65,-128,1,-59,65,2,0,0,2,0,0,-36,1,1,1,22,-128,11,-128,27,67,-128,0,22,0,0,-128,1,-125,2,0,91,67,-128,0,22,0,0,-128,65,-125,2,0,21,67,3,6,69,3,1,0,70,-61,-63,6,-128,3,0,3,-64,3,0,6,5,-60,2,0,64,4,0,5,28,-124,0,1,65,4,3,0,-43,67,-124,7,92,67,-128,1,69,3,1,0,70,-61,-63,6,-128,3,0,3,23,0,-128,5,22,-128,0,-128,-63,67,3,0,-38,67,0,0,22,-64,1,-128,-59,3,1,0,-58,-61,-62,7,0,4,-128,5,64,4,0,6,-128,4,0,1,-64,4,-128,1,0,5,0,2,-36,-125,0,3,92,67,-128,1,76,-127,-61,2,24,64,1,1,22,64,2,-128,69,3,1,0,70,-61,-63,6,-128,3,0,3,-37,67,0,6,22,0,0,-128,-63,-61,3,0,1,4,4,0,-43,3,-124,7,92,67,-128,1,22,64,0,-128,-31,-127,0,0,22,-128,-13,127,-59,1,1,0,-58,-63,-63,3,0,2,0,3,90,0,0,0,22,-128,1,-128,91,66,-128,0,22,0,0,-128,65,-62,3,0,-127,66,4,0,85,-126,-126,4,90,66,0,0,22,0,0,-128,65,-126,4,0,-36,65,-128,1,22,-64,4,-128,-59,-63,0,0,0,2,0,0,-36,-127,0,1,23,-64,-60,3,22,64,1,-128,-59,-63,4,0,-58,1,-59,3,1,66,5,0,64,2,0,0,-36,-127,-128,1,0,0,-128,3,-59,1,1,0,-58,-63,-63,3,0,2,0,3,69,-62,2,0,-128,2,0,0,92,-126,0,1,-127,-126,5,0,85,-126,-126,4,-36,65,-128,1,-59,1,1,0,-58,-63,-59,3,0,2,0,3,-35,1,0,1,-34,1,0,0,30,0,-128,0,24,0,0,0,3,0,0,0,0,0,64,-113,64,3,0,0,0,0,0,0,28,64,3,0,0,0,0,0,0,0,0,4,5,0,0,0,116,121,112,101,0,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,105,112,97,105,114,115,0,4,9,0,0,0,60,115,101,108,102,62,44,10,0,4,7,0,0,0,105,110,115,101,114,116,0,4,3,0,0,0,123,10,0,4,6,0,0,0,112,97,105,114,115,0,4,2,0,0,0,32,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,4,0,0,0,32,61,32,0,4,8,0,0,0,60,115,101,108,102,62,44,0,3,0,0,0,0,0,0,-16,63,4,1,0,0,0,0,4,5,0,0,0,46,46,46,10,0,4,4,0,0,0,125,44,10,0,4,2,0,0,0,125,0,4,7,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,102,111,114,109,97,116,0,4,3,0,0,0,37,113,0,4,3,0,0,0,44,10,0,4,7,0,0,0,99,111,110,99,97,116,0,0,0,0,0,-125,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-127,0,0,0,-127,0,0,0,-127,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-125,0,0,0,-123,0,0,0,-122,0,0,0,-122,0,0,0,-122,0,0,0,-122,0,0,0,-122,0,0,0,-120,0,0,0,-120,0,0,0,-120,0,0,0,-120,0,0,0,-119,0,0,0,-119,0,0,0,-118,0,0,0,-118,0,0,0,-120,0,0,0,-117,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-109,0,0,0,-105,0,0,0,-104,0,0,0,-104,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-102,0,0,0,-112,0,0,0,-101,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-91,0,0,0,18,0,0,0,4,0,0,0,116,98,108,0,0,0,0,0,-126,0,0,0,7,0,0,0,105,110,100,101,110,116,0,0,0,0,0,-126,0,0,0,6,0,0,0,108,105,109,105,116,0,0,0,0,0,-126,0,0,0,6,0,0,0,100,101,112,116,104,0,0,0,0,0,-126,0,0,0,7,0,0,0,106,115,116,97,99,107,0,0,0,0,0,-126,0,0,0,2,0,0,0,105,0,11,0,0,0,-126,0,0,0,7,0,0,0,111,117,116,112,117,116,0,12,0,0,0,-126,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,20,0,0,0,27,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,20,0,0,0,27,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,20,0,0,0,27,0,0,0,2,0,0,0,105,0,21,0,0,0,25,0,0,0,2,0,0,0,116,0,21,0,0,0,25,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,40,0,0,0,90,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,40,0,0,0,90,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,40,0,0,0,90,0,0,0,4,0,0,0,107,101,121,0,41,0,0,0,88,0,0,0,6,0,0,0,118,97,108,117,101,0,41,0,0,0,88,0,0,0,12,0,0,0,105,110,110,101,114,73,110,100,101,110,116,0,48,0,0,0,88,0,0,0,0,0,0,0,49,0,0,0,1,0,0,0,17,0,0,0,1,0,0,0,19,0,0,0,27,0,0,0,19,0,0,0,29,0,0,0,33,0,0,0,29,0,0,0,35,0,0,0,42,0,0,0,35,0,0,0,44,0,0,0,48,0,0,0,44,0,0,0,50,0,0,0,52,0,0,0,50,0,0,0,54,0,0,0,60,0,0,0,54,0,0,0,62,0,0,0,72,0,0,0,62,0,0,0,74,0,0,0,76,0,0,0,74,0,0,0,78,0,0,0,82,0,0,0,78,0,0,0,84,0,0,0,88,0,0,0,84,0,0,0,90,0,0,0,96,0,0,0,90,0,0,0,98,0,0,0,105,0,0,0,98,0,0,0,107,0,0,0,114,0,0,0,107,0,0,0,116,0,0,0,125,0,0,0,116,0,0,0,127,0,0,0,-91,0,0,0,127,0,0,0,-91,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,87,97,120,83,101,114,118,101,114,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,16,0,0,0,5,0,0,0,74,0,-128,0,-127,64,0,0,98,64,-128,0,28,64,0,1,36,0,0,0,7,-128,0,0,36,64,0,0,7,-64,0,0,36,-128,0,0,7,0,1,0,36,-64,0,0,7,64,1,0,36,0,1,0,7,-128,1,0,30,0,-128,0,7,0,0,0,4,9,0,0,0,119,97,120,67,108,97,115,115,0,4,10,0,0,0,87,97,120,83,101,114,118,101,114,0,4,6,0,0,0,115,116,97,114,116,0,4,11,0,0,0,115,104,111,119,80,114,111,109,112,116,0,4,10,0,0,0,99,111,110,110,101,99,116,101,100,0,4,13,0,0,0,100,105,115,99,111,110,110,101,99,116,101,100,0,4,13,0,0,0,100,97,116,97,82,101,99,101,105,118,101,100,0,5,0,0,0,0,0,0,0,6,0,0,0,26,0,0,0,0,1,0,6,39,0,0,0,69,64,0,0,70,-128,-64,0,70,-64,-64,0,75,0,-63,0,92,-128,0,1,9,64,0,-128,70,0,64,0,90,0,0,0,22,-64,0,-128,70,0,64,0,75,64,-63,0,-63,-128,1,0,92,-128,-128,1,90,0,0,0,22,-128,2,-128,-123,-64,1,0,-63,0,2,0,90,0,0,0,22,-64,0,-128,11,65,-62,0,28,-127,0,1,26,65,0,0,22,0,0,-128,1,-127,2,0,-100,64,-128,1,94,0,0,1,-122,0,64,0,-117,-64,66,1,0,1,0,0,-100,64,-128,1,-123,0,3,0,-59,64,3,0,36,1,0,0,0,0,0,1,0,0,0,0,-55,0,1,-122,-61,0,-128,1,-34,0,0,1,30,0,-128,0,14,0,0,0,4,7,0,0,0,115,101,114,118,101,114,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,99,108,97,115,115,0,4,11,0,0,0,119,97,120,95,115,101,114,118,101,114,0,4,5,0,0,0,105,110,105,116,0,4,12,0,0,0,115,116,97,114,116,79,110,80,111,114,116,0,3,0,0,0,0,0,-108,-63,64,4,5,0,0,0,112,117,116,115,0,4,27,0,0,0,70,97,105,108,101,100,32,99,114,101,97,116,105,110,103,32,115,101,114,118,101,114,58,32,37,115,0,4,12,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,4,19,0,0,0,83,101,114,118,101,114,32,78,111,116,32,67,114,101,97,116,101,100,0,4,12,0,0,0,115,101,116,68,101,108,101,103,97,116,101,0,4,6,0,0,0,112,114,105,110,116,0,4,3,0,0,0,95,71,0,1,0,0,0,0,0,0,0,19,0,0,0,23,0,0,0,2,0,3,7,22,0,0,0,68,0,0,0,-91,0,0,0,92,64,0,0,69,0,0,0,70,64,-64,0,-118,0,0,0,-27,0,0,0,-94,64,0,0,-28,0,0,0,92,-128,-128,1,-124,0,-128,0,-122,-128,64,1,-117,-64,64,1,5,1,0,0,6,1,65,2,64,1,-128,0,-127,65,1,0,28,-127,-128,1,65,-127,1,0,21,65,1,2,-100,64,-128,1,30,0,-128,0,7,0,0,0,4,6,0,0,0,116,97,98,108,101,0,4,4,0,0,0,109,97,112,0,4,7,0,0,0,115,101,114,118,101,114,0,4,5,0,0,0,115,101,110,100,0,4,7,0,0,0,99,111,110,99,97,116,0,4,2,0,0,0,9,0,4,2,0,0,0,10,0,1,0,0,0,0,0,0,0,21,0,0,0,21,0,0,0,0,1,0,3,5,0,0,0,69,0,0,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,1,0,0,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,5,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,1,0,0,0,2,0,0,0,111,0,0,0,0,0,4,0,0,0,0,0,0,0,22,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,2,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,21,0,0,0,8,0,0,0,111,98,106,101,99,116,115,0,10,0,0,0,21,0,0,0,2,0,0,0,12,0,0,0,102,111,114,109,101,114,80,114,105,110,116,0,5,0,0,0,115,101,108,102,0,39,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,18,0,0,0,19,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,3,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,38,0,0,0,4,0,0,0,101,114,114,0,13,0,0,0,38,0,0,0,12,0,0,0,102,111,114,109,101,114,80,114,105,110,116,0,31,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,30,0,0,0,0,1,0,4,5,0,0,0,70,0,64,0,75,64,-64,0,-63,-128,0,0,92,64,-128,1,30,0,-128,0,3,0,0,0,4,7,0,0,0,115,101,114,118,101,114,0,4,5,0,0,0,115,101,110,100,0,4,3,0,0,0,62,32,0,0,0,0,0,5,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,1,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,36,0,0,0,0,1,0,3,3,0,0,0,75,0,64,0,92,64,0,1,30,0,-128,0,1,0,0,0,4,11,0,0,0,115,104,111,119,80,114,111,109,112,116,0,0,0,0,0,3,0,0,0,35,0,0,0,35,0,0,0,36,0,0,0,1,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,40,0,0,0,0,1,0,4,5,0,0,0,70,0,64,0,75,64,-64,0,-63,-128,0,0,92,64,-128,1,30,0,-128,0,3,0,0,0,4,7,0,0,0,115,101,114,118,101,114,0,4,5,0,0,0,115,101,110,100,0,4,9,0,0,0,71,79,79,68,66,89,69,33,0,0,0,0,0,5,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,1,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,49,0,0,0,0,2,0,10,21,0,0,0,-123,0,0,0,-117,64,64,1,0,1,-128,0,69,-127,0,0,-100,-128,0,2,-59,-64,0,0,-58,0,-63,1,0,1,0,1,-36,-64,0,1,-38,64,0,0,22,-128,1,-128,70,65,65,0,75,-127,-63,2,-63,-63,1,0,0,2,0,2,65,2,2,0,-43,65,-126,3,92,65,-128,1,75,65,66,0,92,65,0,1,30,0,-128,0,10,0,0,0,4,9,0,0,0,78,83,83,116,114,105,110,103,0,4,22,0,0,0,105,110,105,116,87,105,116,104,68,97,116,97,95,101,110,99,111,100,105,110,103,0,4,22,0,0,0,78,83,65,83,67,73,73,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,101,118,97,108,0,4,7,0,0,0,115,101,114,118,101,114,0,4,5,0,0,0,115,101,110,100,0,4,8,0,0,0,69,114,114,111,114,58,32,0,4,2,0,0,0,10,0,4,11,0,0,0,115,104,111,119,80,114,111,109,112,116,0,0,0,0,0,21,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,5,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,20,0,0,0,5,0,0,0,100,97,116,97,0,0,0,0,0,20,0,0,0,6,0,0,0,105,110,112,117,116,0,5,0,0,0,20,0,0,0,8,0,0,0,115,117,99,99,101,115,115,0,9,0,0,0,20,0,0,0,4,0,0,0,101,114,114,0,9,0,0,0,20,0,0,0,0,0,0,0,16,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,26,0,0,0,6,0,0,0,30,0,0,0,28,0,0,0,36,0,0,0,34,0,0,0,40,0,0,0,38,0,0,0,49,0,0,0,42,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,97,117,116,111,108,111,97,100,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,4,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,30,0,-128,0,2,0,0,0,4,4,0,0,0,119,97,120,0,4,9,0,0,0,97,117,116,111,108,111,97,100,0,1,0,0,0,0,0,0,0,1,0,0,0,10,0,0,0,0,0,3,17,39,0,0,0,69,0,0,0,-118,0,0,0,-27,0,0,0,-94,64,0,0,92,0,1,1,22,64,7,-128,-123,65,0,0,-122,-127,64,3,-122,-63,64,3,-59,65,0,0,-58,1,-63,3,0,2,-128,2,-36,-127,0,1,1,66,1,0,-100,-127,-128,1,-59,1,0,0,0,2,0,3,-36,1,1,1,22,-128,3,-128,11,-125,-63,5,-123,67,0,0,-122,3,65,7,-100,-125,-128,0,-63,-61,1,0,-107,-61,3,7,28,-125,-128,1,75,3,66,6,-63,67,2,0,1,-124,2,0,92,-125,0,2,0,3,-128,6,69,-61,2,0,-128,3,0,6,92,67,0,1,-31,-127,0,0,22,-128,-5,127,97,-128,0,0,22,-64,-9,127,30,0,-128,0,12,0,0,0,4,7,0,0,0,105,112,97,105,114,115,0,4,4,0,0,0,119,97,120,0,4,11,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,115,101,97,114,99,104,0,4,5,0,0,0,114,111,111,116,0,4,5,0,0,0,108,117,97,36,0,4,6,0,0,0,109,97,116,99,104,0,4,12,0,0,0,47,40,46,42,41,37,46,108,117,97,36,0,4,5,0,0,0,103,115,117,98,0,4,2,0,0,0,47,0,4,2,0,0,0,46,0,4,8,0,0,0,114,101,113,117,105,114,101,0,0,0,0,0,39,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,4,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,10,0,0,0,13,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,38,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,5,0,0,0,38,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,5,0,0,0,38,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,5,0,0,0,38,0,0,0,2,0,0,0,105,0,6,0,0,0,36,0,0,0,7,0,0,0,102,111,108,100,101,114,0,6,0,0,0,36,0,0,0,6,0,0,0,102,105,108,101,115,0,15,0,0,0,36,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,18,0,0,0,36,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,18,0,0,0,36,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,18,0,0,0,36,0,0,0,2,0,0,0,105,0,19,0,0,0,34,0,0,0,5,0,0,0,102,105,108,101,0,19,0,0,0,34,0,0,0,14,0,0,0,114,101,113,117,105,114,101,83,116,114,105,110,103,0,26,0,0,0,34,0,0,0,0,0,0,0,4,0,0,0,1,0,0,0,10,0,0,0,1,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,98,97,115,101,54,52,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,-105,0,0,0,5,0,0,0,65,64,0,0,-123,-128,0,0,-122,-64,64,1,28,64,-128,1,36,0,0,0,7,0,1,0,36,64,0,0,7,64,1,0,36,-128,0,0,7,-128,1,0,36,-64,0,0,7,-64,1,0,10,0,8,0,9,64,66,-124,9,-64,66,-123,9,64,67,-122,9,-64,67,-121,9,64,68,-120,9,-64,68,-119,9,64,69,-118,9,-64,69,-117,9,64,70,-116,9,-64,70,-115,9,64,71,-114,9,-64,71,-113,9,64,72,-112,9,-64,72,-111,9,64,73,-110,9,-64,73,-109,9,64,74,-108,9,-64,74,-107,9,64,75,-106,9,-64,75,-105,9,64,76,-104,9,-64,76,-103,9,64,77,-102,9,-64,77,-101,9,64,78,-100,9,-64,78,-99,9,64,79,-98,9,-64,79,-97,9,64,80,-96,9,-64,80,-95,9,64,81,-94,9,-64,81,-93,9,64,82,-92,9,-64,82,-91,9,64,83,-90,9,-64,83,-89,9,64,84,-88,9,-64,84,-87,9,64,85,-86,9,-64,85,-85,9,64,86,-84,9,-64,86,-83,9,64,87,-82,9,-64,87,-81,9,64,88,-80,9,-64,88,-79,9,64,89,-78,9,-64,89,-77,9,64,90,-76,9,-64,90,-75,9,64,91,-74,9,-64,91,-73,9,64,92,-72,9,-64,92,-71,9,64,93,-70,9,-64,93,-69,9,64,94,-68,9,-64,94,-67,9,64,95,-66,9,-64,95,-65,9,64,96,-64,9,-64,96,-63,9,64,97,-62,9,-64,97,-61,100,0,1,0,0,0,0,0,71,0,34,0,74,64,8,0,73,0,-62,-124,73,-128,-62,-123,73,0,-61,-122,73,-128,-61,-121,73,0,-60,-120,73,-128,-60,-119,73,0,-59,-118,73,-128,-59,-117,73,0,-58,-116,73,-128,-58,-115,73,0,-57,-114,73,-128,-57,-113,73,0,-56,-112,73,-128,-56,-111,73,0,-55,-110,73,-128,-55,-109,73,0,-54,-108,73,-128,-54,-107,73,0,-53,-106,73,-128,-53,-105,73,0,-52,-104,73,-128,-52,-103,73,0,-51,-102,73,-128,-51,-101,73,0,-50,-100,73,-128,-50,-99,73,0,-49,-98,73,-128,-49,-97,73,0,-48,-96,73,-128,-48,-95,73,0,-47,-94,73,-128,-47,-93,73,0,-46,-92,73,-128,-46,-91,73,0,-45,-90,73,-128,-45,-89,73,0,-44,-88,73,-128,-44,-87,73,0,-43,-86,73,-128,-43,-85,73,0,-42,-84,73,-128,-42,-83,73,0,-41,-82,73,-128,-41,-81,73,0,-40,-80,73,-128,-40,-79,73,0,-39,-78,73,-128,-39,-77,73,0,-38,-76,73,-128,-38,-75,73,0,-37,-74,73,-128,-37,-73,73,0,-36,-72,73,-128,-36,-71,73,0,-35,-70,73,-128,-35,-69,73,0,-34,-68,73,-128,-34,-67,73,0,-33,-66,73,-128,-33,-65,73,0,-32,-64,73,-128,-32,-63,73,0,-31,-62,73,-128,-31,-61,73,-128,-30,-60,-92,64,1,0,0,0,-128,0,-121,-64,34,0,30,0,-128,0,-116,0,0,0,4,7,0,0,0,109,111,100,117,108,101,0,4,11,0,0,0,119,97,120,46,98,97,115,101,54,52,0,4,8,0,0,0,112,97,99,107,97,103,101,0,4,7,0,0,0,115,101,101,97,108,108,0,4,4,0,0,0,108,115,104,0,4,4,0,0,0,114,115,104,0,4,4,0,0,0,98,105,116,0,4,4,0,0,0,108,111,114,0,3,0,0,0,0,0,0,0,0,4,2,0,0,0,65,0,3,0,0,0,0,0,0,-16,63,4,2,0,0,0,66,0,3,0,0,0,0,0,0,0,64,4,2,0,0,0,67,0,3,0,0,0,0,0,0,8,64,4,2,0,0,0,68,0,3,0,0,0,0,0,0,16,64,4,2,0,0,0,69,0,3,0,0,0,0,0,0,20,64,4,2,0,0,0,70,0,3,0,0,0,0,0,0,24,64,4,2,0,0,0,71,0,3,0,0,0,0,0,0,28,64,4,2,0,0,0,72,0,3,0,0,0,0,0,0,32,64,4,2,0,0,0,73,0,3,0,0,0,0,0,0,34,64,4,2,0,0,0,74,0,3,0,0,0,0,0,0,36,64,4,2,0,0,0,75,0,3,0,0,0,0,0,0,38,64,4,2,0,0,0,76,0,3,0,0,0,0,0,0,40,64,4,2,0,0,0,77,0,3,0,0,0,0,0,0,42,64,4,2,0,0,0,78,0,3,0,0,0,0,0,0,44,64,4,2,0,0,0,79,0,3,0,0,0,0,0,0,46,64,4,2,0,0,0,80,0,3,0,0,0,0,0,0,48,64,4,2,0,0,0,81,0,3,0,0,0,0,0,0,49,64,4,2,0,0,0,82,0,3,0,0,0,0,0,0,50,64,4,2,0,0,0,83,0,3,0,0,0,0,0,0,51,64,4,2,0,0,0,84,0,3,0,0,0,0,0,0,52,64,4,2,0,0,0,85,0,3,0,0,0,0,0,0,53,64,4,2,0,0,0,86,0,3,0,0,0,0,0,0,54,64,4,2,0,0,0,87,0,3,0,0,0,0,0,0,55,64,4,2,0,0,0,88,0,3,0,0,0,0,0,0,56,64,4,2,0,0,0,89,0,3,0,0,0,0,0,0,57,64,4,2,0,0,0,90,0,3,0,0,0,0,0,0,58,64,4,2,0,0,0,97,0,3,0,0,0,0,0,0,59,64,4,2,0,0,0,98,0,3,0,0,0,0,0,0,60,64,4,2,0,0,0,99,0,3,0,0,0,0,0,0,61,64,4,2,0,0,0,100,0,3,0,0,0,0,0,0,62,64,4,2,0,0,0,101,0,3,0,0,0,0,0,0,63,64,4,2,0,0,0,102,0,3,0,0,0,0,0,0,64,64,4,2,0,0,0,103,0,3,0,0,0,0,0,-128,64,64,4,2,0,0,0,104,0,3,0,0,0,0,0,0,65,64,4,2,0,0,0,105,0,3,0,0,0,0,0,-128,65,64,4,2,0,0,0,106,0,3,0,0,0,0,0,0,66,64,4,2,0,0,0,107,0,3,0,0,0,0,0,-128,66,64,4,2,0,0,0,108,0,3,0,0,0,0,0,0,67,64,4,2,0,0,0,109,0,3,0,0,0,0,0,-128,67,64,4,2,0,0,0,110,0,3,0,0,0,0,0,0,68,64,4,2,0,0,0,111,0,3,0,0,0,0,0,-128,68,64,4,2,0,0,0,112,0,3,0,0,0,0,0,0,69,64,4,2,0,0,0,113,0,3,0,0,0,0,0,-128,69,64,4,2,0,0,0,114,0,3,0,0,0,0,0,0,70,64,4,2,0,0,0,115,0,3,0,0,0,0,0,-128,70,64,4,2,0,0,0,116,0,3,0,0,0,0,0,0,71,64,4,2,0,0,0,117,0,3,0,0,0,0,0,-128,71,64,4,2,0,0,0,118,0,3,0,0,0,0,0,0,72,64,4,2,0,0,0,119,0,3,0,0,0,0,0,-128,72,64,4,2,0,0,0,120,0,3,0,0,0,0,0,0,73,64,4,2,0,0,0,121,0,3,0,0,0,0,0,-128,73,64,4,2,0,0,0,122,0,3,0,0,0,0,0,0,74,64,4,2,0,0,0,48,0,3,0,0,0,0,0,-128,74,64,4,2,0,0,0,49,0,3,0,0,0,0,0,0,75,64,4,2,0,0,0,50,0,3,0,0,0,0,0,-128,75,64,4,2,0,0,0,51,0,3,0,0,0,0,0,0,76,64,4,2,0,0,0,52,0,3,0,0,0,0,0,-128,76,64,4,2,0,0,0,53,0,3,0,0,0,0,0,0,77,64,4,2,0,0,0,54,0,3,0,0,0,0,0,-128,77,64,4,2,0,0,0,55,0,3,0,0,0,0,0,0,78,64,4,2,0,0,0,56,0,3,0,0,0,0,0,-128,78,64,4,2,0,0,0,57,0,3,0,0,0,0,0,0,79,64,4,2,0,0,0,43,0,3,0,0,0,0,0,-128,79,64,4,2,0,0,0,47,0,4,7,0,0,0,101,110,99,111,100,101,0,4,2,0,0,0,61,0,0,4,7,0,0,0,100,101,99,111,100,101,0,6,0,0,0,0,0,0,0,9,0,0,0,11,0,0,0,0,2,0,3,5,0,0,0,-111,64,0,-128,-114,-128,0,0,-112,64,64,1,-98,0,0,1,30,0,-128,0,2,0,0,0,3,0,0,0,0,0,0,0,64,3,0,0,0,0,0,0,112,64,0,0,0,0,5,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,4,0,0,0,6,0,0,0,115,104,105,102,116,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,16,0,0,0,0,2,0,4,8,0,0,0,-123,0,0,0,-122,64,64,1,-47,64,0,-127,-49,-64,0,0,-100,-128,0,1,-112,-64,64,1,-98,0,0,1,30,0,-128,0,4,0,0,0,4,5,0,0,0,109,97,116,104,0,4,6,0,0,0,102,108,111,111,114,0,3,0,0,0,0,0,0,0,64,3,0,0,0,0,0,0,112,64,0,0,0,0,8,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,7,0,0,0,6,0,0,0,115,104,105,102,116,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,21,0,0,0,0,2,0,4,12,0,0,0,-111,64,0,-128,-112,-128,0,0,-51,64,-64,0,-47,-64,0,-128,-48,-64,0,0,-115,-64,0,1,88,-128,0,-127,22,0,0,-128,-126,64,0,0,-126,0,-128,0,-98,0,0,1,30,0,-128,0,3,0,0,0,3,0,0,0,0,0,0,0,64,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,2,0,0,0,2,0,0,0,120,0,0,0,0,0,11,0,0,0,2,0,0,0,98,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,28,0,0,0,0,2,0,10,30,0,0,0,-127,64,0,0,-121,0,0,0,-127,-128,0,0,-63,-64,0,0,1,-127,0,0,-96,-64,4,-128,-123,1,0,0,-59,1,1,0,0,2,0,0,64,2,-128,2,-36,-127,-128,1,-38,65,0,0,22,-64,0,-128,-59,1,1,0,0,2,-128,0,64,2,-128,2,-36,-127,-128,1,23,64,-63,3,22,-64,0,-128,-51,-127,-64,2,-47,-63,1,-125,-38,65,0,0,22,0,0,-128,-63,65,0,0,-116,-63,1,3,-121,1,0,0,-97,-128,-6,127,-123,0,0,0,-98,0,0,1,30,0,-128,0,7,0,0,0,4,7,0,0,0,114,101,115,117,108,116,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,32,64,4,4,0,0,0,98,105,116,0,1,1,3,0,0,0,0,0,0,0,64,0,0,0,0,30,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,27,0,0,0,27,0,0,0,28,0,0,0,6,0,0,0,2,0,0,0,120,0,0,0,0,0,29,0,0,0,2,0,0,0,121,0,0,0,0,0,29,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,5,0,0,0,27,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,5,0,0,0,27,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,5,0,0,0,27,0,0,0,2,0,0,0,112,0,6,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,47,0,0,0,1,1,0,18,89,0,0,0,74,0,0,0,-127,0,0,0,-63,64,0,0,5,-127,0,0,6,-63,64,2,64,1,0,0,28,-127,0,1,13,1,65,2,65,65,1,0,-32,-64,18,-128,-63,1,1,0,1,66,1,0,65,2,1,0,-32,-63,2,-128,-59,-126,0,0,-58,-126,-63,5,5,-125,0,0,6,-61,65,6,64,3,0,0,-116,-125,2,3,28,3,-128,1,-36,-126,0,0,-38,66,0,0,22,0,0,-128,-63,66,0,0,73,-64,2,5,-33,-127,-4,127,-59,-127,0,0,-58,1,-62,3,1,66,2,0,64,2,0,1,-124,2,0,0,-59,-126,2,0,6,3,-63,0,65,-61,2,0,-36,-126,-128,1,-122,-62,2,5,-60,2,0,0,5,3,3,0,69,67,3,0,-122,3,-63,0,-112,-125,67,7,-63,-125,3,0,92,-125,-128,1,-123,-125,2,0,-58,-61,-62,0,1,-124,3,0,-100,3,-128,1,28,-125,0,0,-58,2,-125,5,-38,66,0,0,22,0,0,-128,-63,-62,3,0,20,3,0,0,13,-125,1,6,24,0,3,-126,22,-128,3,-128,4,3,0,0,69,3,3,0,-123,67,3,0,-58,-61,-62,0,-48,3,-60,7,1,-60,2,0,-100,-125,-128,1,-59,-125,2,0,6,68,-63,0,65,68,4,0,-36,3,-128,1,92,-125,0,0,6,67,3,6,26,67,0,0,22,0,0,-128,1,-61,3,0,84,3,0,0,77,-125,-127,6,24,64,-125,-123,22,64,1,-128,68,3,0,0,-122,67,-63,0,-112,-125,68,7,70,-125,-125,6,90,67,0,0,22,0,0,-128,65,-61,3,0,-36,-127,-128,3,-128,0,-128,3,-33,-128,-20,127,-98,0,0,1,30,0,-128,0,19,0,0,0,4,1,0,0,0,0,3,0,0,0,0,0,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,4,0,0,0,108,101,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,8,64,4,5,0,0,0,98,121,116,101,0,4,4,0,0,0,115,117,98,0,4,7,0,0,0,102,111,114,109,97,116,0,4,11,0,0,0,37,115,37,115,37,115,37,115,37,115,0,4,4,0,0,0,114,115,104,0,3,0,0,0,0,0,0,0,64,4,4,0,0,0,108,111,114,0,4,4,0,0,0,108,115,104,0,3,0,0,0,0,0,0,16,64,4,2,0,0,0,61,0,3,0,0,0,0,0,0,48,64,3,0,0,0,0,0,0,24,64,3,0,0,0,0,0,0,80,64,0,0,0,0,89,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,40,0,0,0,44,0,0,0,38,0,0,0,46,0,0,0,47,0,0,0,11,0,0,0,5,0,0,0,100,97,116,97,0,0,0,0,0,88,0,0,0,6,0,0,0,98,121,116,101,115,0,1,0,0,0,88,0,0,0,7,0,0,0,114,101,115,117,108,116,0,2,0,0,0,88,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,9,0,0,0,87,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,9,0,0,0,87,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,9,0,0,0,87,0,0,0,5,0,0,0,115,112,111,115,0,10,0,0,0,86,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,13,0,0,0,27,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,13,0,0,0,27,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,13,0,0,0,27,0,0,0,5,0,0,0,98,121,116,101,0,14,0,0,0,26,0,0,0,1,0,0,0,12,0,0,0,98,97,115,101,54,52,99,104,97,114,115,0,0,0,0,0,54,0,0,0,64,0,0,0,1,1,0,16,85,0,0,0,74,0,0,0,-127,0,0,0,-63,64,0,0,5,-127,0,0,6,-63,64,2,64,1,0,0,28,-127,0,1,13,1,65,2,65,65,1,0,-32,-64,17,-128,-63,1,1,0,1,66,1,0,65,2,1,0,-32,-63,2,-128,-60,2,0,0,5,-125,0,0,6,-125,65,6,64,3,0,0,-116,-125,2,3,-52,-125,2,3,28,-125,0,2,26,67,0,0,22,0,0,-128,1,-61,1,0,-58,2,-125,5,73,-64,2,5,-33,-127,-4,127,-64,1,0,1,5,-126,0,0,6,2,66,4,69,66,2,0,-123,-126,2,0,-58,2,-63,0,1,-61,2,0,-100,-126,-128,1,-59,2,3,0,6,-61,-62,0,65,67,1,0,-36,2,-128,1,92,2,0,0,28,-126,0,0,-107,0,-126,3,-64,1,0,1,6,66,-61,0,87,-128,67,4,22,-128,3,-128,5,-126,0,0,6,2,66,4,69,66,2,0,-123,-126,2,0,-58,-62,-62,0,1,67,1,0,-100,-126,-128,1,-59,2,3,0,6,67,-61,0,65,-61,2,0,-36,2,-128,1,92,2,0,0,28,-126,0,0,26,66,0,0,22,0,0,-128,1,2,0,0,-107,0,-126,3,-64,1,0,1,6,66,-63,0,87,-128,67,4,22,0,3,-128,5,-126,0,0,6,2,66,4,69,66,2,0,-123,-126,2,0,-58,66,-61,0,-48,66,-63,5,1,-61,3,0,-100,-126,-128,1,-58,66,-63,0,92,2,-128,1,28,-126,0,0,26,66,0,0,22,0,0,-128,1,2,0,0,-107,0,-126,3,-33,-128,-19,127,-98,0,0,1,30,0,-128,0,16,0,0,0,4,1,0,0,0,0,3,0,0,0,0,0,0,0,0,4,7,0,0,0,115,116,114,105,110,103,0,4,4,0,0,0,108,101,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,16,64,4,4,0,0,0,115,117,98,0,4,2,0,0,0,61,0,4,5,0,0,0,99,104,97,114,0,4,4,0,0,0,108,111,114,0,4,4,0,0,0,108,115,104,0,3,0,0,0,0,0,0,0,64,4,4,0,0,0,114,115,104,0,3,0,0,0,0,0,0,8,64,0,3,0,0,0,0,0,0,24,64,0,0,0,0,85,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,57,0,0,0,63,0,0,0,64,0,0,0,11,0,0,0,5,0,0,0,100,97,116,97,0,0,0,0,0,84,0,0,0,6,0,0,0,99,104,97,114,115,0,1,0,0,0,84,0,0,0,7,0,0,0,114,101,115,117,108,116,0,2,0,0,0,84,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,9,0,0,0,83,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,9,0,0,0,83,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,9,0,0,0,83,0,0,0,5,0,0,0,100,112,111,115,0,10,0,0,0,82,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,13,0,0,0,27,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,13,0,0,0,27,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,13,0,0,0,27,0,0,0,5,0,0,0,99,104,97,114,0,14,0,0,0,26,0,0,0,1,0,0,0,12,0,0,0,98,97,115,101,54,52,98,121,116,101,115,0,-105,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,11,0,0,0,9,0,0,0,16,0,0,0,14,0,0,0,21,0,0,0,19,0,0,0,28,0,0,0,24,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,47,0,0,0,47,0,0,0,35,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,64,0,0,0,64,0,0,0,54,0,0,0,64,0,0,0,2,0,0,0,12,0,0,0,98,97,115,101,54,52,99,104,97,114,115,0,78,0,0,0,-106,0,0,0,12,0,0,0,98,97,115,101,54,52,98,121,116,101,115,0,-109,0,0,0,-106,0,0,0,0,0,0,0,75,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,98,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,14,53,0,0,0,36,0,0,0,100,64,0,0,0,0,0,0,0,0,-128,0,-92,-128,0,0,-28,-64,0,0,36,1,1,0,0,0,-128,0,0,0,-128,1,0,0,0,1,0,0,0,2,100,65,1,0,0,0,-128,0,0,0,-128,1,0,0,0,1,0,0,-128,2,-92,-127,1,0,0,0,-128,0,0,0,0,1,-28,-63,1,0,0,0,-128,0,0,0,-128,1,0,0,0,1,36,2,2,0,0,0,0,0,0,0,0,3,0,0,0,2,100,66,2,0,0,0,0,0,0,0,0,3,-92,-126,2,0,0,0,0,0,0,0,0,3,0,0,-128,2,-28,-62,2,0,0,0,0,2,0,0,0,3,0,0,-128,2,5,3,0,0,74,-125,2,0,73,-125,1,-127,73,67,-127,-127,73,3,1,-126,73,-61,-127,-126,73,3,2,-125,73,-125,-126,-125,73,-61,2,-124,73,67,-126,-124,73,67,0,-123,73,-125,-128,-123,9,67,-125,-128,35,0,0,0,30,0,-128,0,12,0,0,0,4,4,0,0,0,119,97,120,0,4,4,0,0,0,98,105,116,0,4,5,0,0,0,98,110,111,116,0,4,5,0,0,0,98,97,110,100,0,4,4,0,0,0,98,111,114,0,4,5,0,0,0,98,120,111,114,0,4,8,0,0,0,98,114,115,104,105,102,116,0,4,8,0,0,0,98,108,115,104,105,102,116,0,4,6,0,0,0,98,120,111,114,50,0,4,14,0,0,0,98,108,111,103,105,99,95,114,115,104,105,102,116,0,4,7,0,0,0,116,111,98,105,116,115,0,4,7,0,0,0,116,111,110,117,109,98,0,12,0,0,0,0,0,0,0,37,0,0,0,42,0,0,0,0,1,0,3,11,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,92,-128,0,1,77,64,0,0,24,64,0,-127,22,-128,0,-128,69,-64,0,0,-127,0,1,0,92,64,0,1,30,0,-128,0,5,0,0,0,4,5,0,0,0,109,97,116,104,0,4,6,0,0,0,102,108,111,111,114,0,3,0,0,0,0,0,0,0,0,4,6,0,0,0,101,114,114,111,114,0,4,48,0,0,0,116,114,121,105,110,103,32,116,111,32,117,115,101,32,98,105,116,119,105,115,101,32,111,112,101,114,97,116,105,111,110,32,111,110,32,110,111,110,45,105,110,116,101,103,101,114,33,0,0,0,0,0,11,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,42,0,0,0,1,0,0,0,2,0,0,0,110,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,65,0,0,0,2,1,0,6,36,0,0,0,68,0,0,0,-128,0,0,0,92,64,0,1,24,0,64,0,22,-128,2,-128,68,0,-128,0,-123,64,0,0,-122,-128,64,1,-59,-64,0,0,-58,0,-63,1,0,1,0,0,-36,0,0,1,-100,-128,0,0,-116,64,65,1,93,0,0,1,94,0,0,0,74,0,0,0,-127,64,1,0,24,0,0,-128,22,64,3,-128,-59,-64,0,0,-58,-128,-63,1,0,1,0,0,65,-63,1,0,-36,-128,-128,1,23,64,-63,1,22,64,0,-128,73,64,65,1,22,0,0,-128,73,0,64,1,13,-63,0,0,15,-64,65,2,-116,64,65,1,22,-64,-5,127,94,0,0,1,30,0,-128,0,8,0,0,0,3,0,0,0,0,0,0,0,0,4,4,0,0,0,98,105,116,0,4,5,0,0,0,98,110,111,116,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,97,98,115,0,3,0,0,0,0,0,0,-16,63,4,4,0,0,0,109,111,100,0,3,0,0,0,0,0,0,0,64,0,0,0,0,36,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,46,0,0,0,46,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,53,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,58,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,64,0,0,0,65,0,0,0,4,0,0,0,2,0,0,0,110,0,0,0,0,0,35,0,0,0,4,0,0,0,116,98,108,0,17,0,0,0,35,0,0,0,4,0,0,0,99,110,116,0,18,0,0,0,35,0,0,0,5,0,0,0,108,97,115,116,0,25,0,0,0,33,0,0,0,2,0,0,0,10,0,0,0,99,104,101,99,107,95,105,110,116,0,8,0,0,0,116,111,95,98,105,116,115,0,0,0,0,0,67,0,0,0,78,0,0,0,0,1,0,9,17,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,92,-128,0,1,-127,-128,0,0,-63,-64,0,0,1,-63,0,0,64,1,-128,0,-127,-63,0,0,32,-63,0,-128,6,-62,1,0,14,-62,0,4,-116,0,2,1,-50,0,-63,1,31,-127,-2,127,-98,0,0,1,30,0,-128,0,5,0,0,0,4,6,0,0,0,116,97,98,108,101,0,4,5,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,64,0,0,0,0,17,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,74,0,0,0,72,0,0,0,77,0,0,0,78,0,0,0,8,0,0,0,4,0,0,0,116,98,108,0,0,0,0,0,16,0,0,0,2,0,0,0,110,0,4,0,0,0,16,0,0,0,5,0,0,0,114,115,108,116,0,5,0,0,0,16,0,0,0,6,0,0,0,112,111,119,101,114,0,6,0,0,0,16,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,9,0,0,0,15,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,9,0,0,0,15,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,9,0,0,0,15,0,0,0,2,0,0,0,105,0,10,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,95,0,0,0,0,2,0,8,31,0,0,0,-118,0,0,0,-54,0,0,0,5,1,0,0,6,65,64,2,64,1,0,0,28,-127,0,1,69,1,0,0,70,65,-64,2,-128,1,-128,0,92,-127,0,1,24,0,-127,2,22,-128,0,-128,-128,0,0,0,-64,0,-128,0,22,64,0,-128,-128,0,-128,0,-64,0,0,0,5,1,0,0,6,65,64,2,64,1,-128,1,28,-127,0,1,12,-127,64,2,69,1,0,0,70,65,-64,2,-128,1,0,1,92,-127,0,1,-127,-127,0,0,32,1,0,-128,-55,-64,-64,3,31,65,-1,127,30,0,-128,0,4,0,0,0,4,6,0,0,0,116,97,98,108,101,0,4,5,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,85,0,0,0,87,0,0,0,88,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,92,0,0,0,91,0,0,0,95,0,0,0,8,0,0,0,6,0,0,0,116,98,108,95,109,0,0,0,0,0,30,0,0,0,6,0,0,0,116,98,108,95,110,0,0,0,0,0,30,0,0,0,4,0,0,0,98,105,103,0,1,0,0,0,30,0,0,0,6,0,0,0,115,109,97,108,108,0,2,0,0,0,30,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,27,0,0,0,30,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,27,0,0,0,30,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,27,0,0,0,30,0,0,0,2,0,0,0,105,0,28,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,120,0,0,0,4,2,3,14,64,0,0,0,-60,0,0,0,0,1,0,0,-36,-128,0,1,4,1,0,0,64,1,-128,0,28,-127,0,1,68,1,-128,0,-128,1,-128,1,-64,1,0,2,92,65,-128,1,74,1,0,0,-123,1,0,0,-122,65,64,3,-59,-127,0,0,-58,-63,-64,3,0,2,-128,1,-36,-127,0,1,5,-126,0,0,6,-62,64,4,64,2,0,2,28,2,0,1,-100,-127,0,0,-63,1,1,0,0,2,0,3,65,2,1,0,-32,1,2,-128,-58,-126,-126,1,23,64,-63,5,22,0,1,-128,-58,-126,2,2,23,64,-63,5,22,64,0,-128,73,65,65,5,22,0,0,-128,73,1,65,5,-33,65,-3,127,-60,1,0,1,0,2,-128,2,-36,-127,0,1,37,2,0,1,26,2,0,0,22,-64,4,-128,10,2,0,0,101,2,0,0,34,66,0,0,69,-126,0,0,70,-126,-63,4,-128,2,0,4,-63,2,1,0,92,-126,-128,1,-124,2,-128,1,-64,2,-128,3,0,3,-128,4,84,3,0,4,24,64,-125,-126,22,64,0,-128,91,67,0,4,22,0,0,-128,67,3,-128,6,-99,2,0,2,-98,2,0,0,22,0,0,-128,-34,1,0,1,30,0,-128,0,7,0,0,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,109,97,120,0,4,6,0,0,0,116,97,98,108,101,0,4,5,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,4,7,0,0,0,114,101,109,111,118,101,0,0,0,0,0,64,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,102,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,104,0,0,0,104,0,0,0,104,0,0,0,104,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,106,0,0,0,106,0,0,0,108,0,0,0,104,0,0,0,112,0,0,0,112,0,0,0,112,0,0,0,113,0,0,0,113,0,0,0,113,0,0,0,114,0,0,0,114,0,0,0,114,0,0,0,115,0,0,0,115,0,0,0,115,0,0,0,115,0,0,0,115,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,118,0,0,0,120,0,0,0,14,0,0,0,2,0,0,0,109,0,0,0,0,0,63,0,0,0,2,0,0,0,110,0,0,0,0,0,63,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,63,0,0,0,6,0,0,0,116,98,108,95,109,0,3,0,0,0,63,0,0,0,6,0,0,0,116,98,108,95,110,0,6,0,0,0,63,0,0,0,4,0,0,0,116,98,108,0,11,0,0,0,63,0,0,0,5,0,0,0,114,115,108,116,0,22,0,0,0,63,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,25,0,0,0,36,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,25,0,0,0,36,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,25,0,0,0,36,0,0,0,2,0,0,0,105,0,26,0,0,0,35,0,0,0,7,0,0,0,114,101,115,117,108,116,0,39,0,0,0,63,0,0,0,5,0,0,0,97,114,103,115,0,45,0,0,0,61,0,0,0,2,0,0,0,110,0,50,0,0,0,61,0,0,0,4,0,0,0,8,0,0,0,116,111,95,98,105,116,115,0,7,0,0,0,101,120,112,97,110,100,0,14,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,7,0,0,0,98,105,116,95,111,114,0,0,0,0,0,122,0,0,0,-111,0,0,0,4,2,3,14,64,0,0,0,-60,0,0,0,0,1,0,0,-36,-128,0,1,4,1,0,0,64,1,-128,0,28,-127,0,1,68,1,-128,0,-128,1,-128,1,-64,1,0,2,92,65,-128,1,74,1,0,0,-123,1,0,0,-122,65,64,3,-59,-127,0,0,-58,-63,-64,3,0,2,-128,1,-36,-127,0,1,5,-126,0,0,6,-62,64,4,64,2,0,2,28,2,0,1,-100,-127,0,0,-63,1,1,0,0,2,0,3,65,2,1,0,-32,1,2,-128,-58,-126,-126,1,87,64,-63,5,22,-128,0,-128,-58,-126,2,2,23,64,-63,5,22,64,0,-128,73,65,65,5,22,0,0,-128,73,1,65,5,-33,65,-3,127,-60,1,0,1,0,2,-128,2,-36,-127,0,1,37,2,0,1,26,2,0,0,22,-64,4,-128,10,2,0,0,101,2,0,0,34,66,0,0,69,-126,0,0,70,-126,-63,4,-128,2,0,4,-63,2,1,0,92,-126,-128,1,-124,2,-128,1,-64,2,-128,3,0,3,-128,4,84,3,0,4,24,64,-125,-126,22,64,0,-128,91,67,0,4,22,0,0,-128,67,3,-128,6,-99,2,0,2,-98,2,0,0,22,0,0,-128,-34,1,0,1,30,0,-128,0,7,0,0,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,109,97,120,0,4,6,0,0,0,116,97,98,108,101,0,4,5,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,4,7,0,0,0,114,101,109,111,118,101,0,0,0,0,0,64,0,0,0,123,0,0,0,123,0,0,0,123,0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,125,0,0,0,125,0,0,0,125,0,0,0,125,0,0,0,127,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-127,0,0,0,-127,0,0,0,-127,0,0,0,-127,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-125,0,0,0,-125,0,0,0,-123,0,0,0,-127,0,0,0,-119,0,0,0,-119,0,0,0,-119,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-113,0,0,0,-111,0,0,0,14,0,0,0,2,0,0,0,109,0,0,0,0,0,63,0,0,0,2,0,0,0,110,0,0,0,0,0,63,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,63,0,0,0,6,0,0,0,116,98,108,95,109,0,3,0,0,0,63,0,0,0,6,0,0,0,116,98,108,95,110,0,6,0,0,0,63,0,0,0,4,0,0,0,116,98,108,0,11,0,0,0,63,0,0,0,5,0,0,0,114,115,108,116,0,22,0,0,0,63,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,25,0,0,0,36,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,25,0,0,0,36,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,25,0,0,0,36,0,0,0,2,0,0,0,105,0,26,0,0,0,35,0,0,0,7,0,0,0,114,101,115,117,108,116,0,39,0,0,0,63,0,0,0,5,0,0,0,97,114,103,115,0,45,0,0,0,61,0,0,0,2,0,0,0,110,0,50,0,0,0,61,0,0,0,4,0,0,0,8,0,0,0,116,111,95,98,105,116,115,0,7,0,0,0,101,120,112,97,110,100,0,14,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,8,0,0,0,98,105,116,95,97,110,100,0,0,0,0,0,-109,0,0,0,-97,0,0,0,2,1,0,8,27,0,0,0,68,0,0,0,-128,0,0,0,92,-128,0,1,-123,0,0,0,-122,64,64,1,-59,-128,0,0,-58,-64,-64,1,0,1,-128,0,-36,-128,0,1,1,1,1,0,-100,-128,-128,1,-63,64,1,0,0,1,0,1,65,65,1,0,-32,64,1,-128,-58,-127,-127,0,23,64,-63,3,22,64,0,-128,73,-128,65,3,22,0,0,-128,73,64,65,3,-33,0,-2,127,-60,0,-128,0,0,1,-128,0,-35,0,0,1,-34,0,0,0,30,0,-128,0,7,0,0,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,109,97,120,0,4,6,0,0,0,116,97,98,108,101,0,4,5,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,64,64,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-104,0,0,0,-104,0,0,0,-104,0,0,0,-103,0,0,0,-103,0,0,0,-101,0,0,0,-105,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-97,0,0,0,7,0,0,0,2,0,0,0,110,0,0,0,0,0,26,0,0,0,4,0,0,0,116,98,108,0,3,0,0,0,26,0,0,0,5,0,0,0,115,105,122,101,0,11,0,0,0,26,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,14,0,0,0,22,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,14,0,0,0,22,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,14,0,0,0,22,0,0,0,2,0,0,0,105,0,15,0,0,0,21,0,0,0,2,0,0,0,8,0,0,0,116,111,95,98,105,116,115,0,14,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,0,0,0,0,-95,0,0,0,-77,0,0,0,3,2,0,12,39,0,0,0,-124,0,0,0,-64,0,0,0,-100,-128,0,1,-60,0,0,0,0,1,-128,0,-36,-128,0,1,4,1,-128,0,64,1,0,1,-128,1,-128,1,28,65,-128,1,10,1,0,0,69,1,0,0,70,65,-64,2,-123,-127,0,0,-122,-63,64,3,-64,1,0,1,-100,-127,0,1,-59,-127,0,0,-58,-63,-64,3,0,2,-128,1,-36,1,0,1,92,-127,0,0,-127,1,1,0,-64,1,-128,2,1,2,1,0,-96,-127,1,-128,-122,66,2,1,-58,66,-126,1,87,-64,2,5,22,64,0,-128,9,1,-63,4,22,0,0,-128,9,65,-63,4,-97,-63,-3,127,-124,1,0,1,-64,1,0,2,-99,1,0,1,-98,1,0,0,30,0,-128,0,6,0,0,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,109,97,120,0,4,6,0,0,0,116,97,98,108,101,0,4,5,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,-94,0,0,0,-94,0,0,0,-94,0,0,0,-93,0,0,0,-93,0,0,0,-93,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-90,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-88,0,0,0,-88,0,0,0,-88,0,0,0,-88,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-86,0,0,0,-86,0,0,0,-84,0,0,0,-88,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-77,0,0,0,10,0,0,0,2,0,0,0,109,0,0,0,0,0,38,0,0,0,2,0,0,0,110,0,0,0,0,0,38,0,0,0,6,0,0,0,116,98,108,95,109,0,3,0,0,0,38,0,0,0,6,0,0,0,116,98,108,95,110,0,6,0,0,0,38,0,0,0,4,0,0,0,116,98,108,0,11,0,0,0,38,0,0,0,5,0,0,0,114,115,108,116,0,22,0,0,0,38,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,25,0,0,0,34,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,25,0,0,0,34,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,25,0,0,0,34,0,0,0,2,0,0,0,105,0,26,0,0,0,33,0,0,0,3,0,0,0,8,0,0,0,116,111,95,98,105,116,115,0,7,0,0,0,101,120,112,97,110,100,0,14,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,0,0,0,0,-75,0,0,0,-60,0,0,0,3,2,0,10,34,0,0,0,-124,0,0,0,-64,0,0,0,-100,64,0,1,-127,0,0,0,24,0,64,0,22,-64,1,-128,-60,0,-128,0,5,65,0,0,6,-127,64,2,64,1,0,0,28,1,0,1,-36,-128,0,0,12,-64,-64,1,-127,0,1,0,-63,-64,0,0,0,1,-128,0,65,-63,0,0,-32,0,2,-128,15,64,65,0,-60,1,0,1,5,66,0,0,6,-126,65,4,64,2,0,0,28,-126,0,1,64,2,0,1,-36,-127,-128,1,0,0,-128,3,-33,64,-3,127,-59,64,0,0,-58,-128,-63,1,0,1,0,0,-35,0,0,1,-34,0,0,0,30,0,-128,0,7,0,0,0,3,0,0,0,0,0,0,0,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,97,98,115,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,-32,65,3,0,0,0,0,0,0,0,64,4,6,0,0,0,102,108,111,111,114,0,0,0,0,0,34,0,0,0,-74,0,0,0,-74,0,0,0,-74,0,0,0,-72,0,0,0,-71,0,0,0,-71,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-68,0,0,0,-65,0,0,0,-65,0,0,0,-65,0,0,0,-65,0,0,0,-64,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-65,0,0,0,-61,0,0,0,-61,0,0,0,-61,0,0,0,-61,0,0,0,-61,0,0,0,-60,0,0,0,7,0,0,0,2,0,0,0,110,0,0,0,0,0,33,0,0,0,5,0,0,0,98,105,116,115,0,0,0,0,0,33,0,0,0,9,0,0,0,104,105,103,104,95,98,105,116,0,4,0,0,0,33,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,17,0,0,0,28,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,17,0,0,0,28,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,17,0,0,0,28,0,0,0,2,0,0,0,105,0,18,0,0,0,27,0,0,0,3,0,0,0,10,0,0,0,99,104,101,99,107,95,105,110,116,0,8,0,0,0,98,105,116,95,110,111,116,0,7,0,0,0,98,105,116,95,111,114,0,0,0,0,0,-57,0,0,0,-47,0,0,0,2,2,0,6,24,0,0,0,-124,0,0,0,-64,0,0,0,-100,64,0,1,24,0,64,0,22,-128,1,-128,-124,0,-128,0,-59,64,0,0,-58,-128,-64,1,0,1,0,0,-36,0,0,1,-100,-128,0,0,12,-64,64,1,-127,-64,0,0,-64,0,-128,0,1,-63,0,0,-96,0,0,-128,15,0,65,0,-97,64,-1,127,-123,64,0,0,-122,64,65,1,-64,0,0,0,-99,0,0,1,-98,0,0,0,30,0,-128,0,6,0,0,0,3,0,0,0,0,0,0,0,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,97,98,115,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,64,4,6,0,0,0,102,108,111,111,114,0,0,0,0,0,24,0,0,0,-56,0,0,0,-56,0,0,0,-56,0,0,0,-55,0,0,0,-55,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-50,0,0,0,-51,0,0,0,-48,0,0,0,-48,0,0,0,-48,0,0,0,-48,0,0,0,-48,0,0,0,-47,0,0,0,6,0,0,0,2,0,0,0,110,0,0,0,0,0,23,0,0,0,5,0,0,0,98,105,116,115,0,0,0,0,0,23,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,15,0,0,0,18,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,15,0,0,0,18,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,15,0,0,0,18,0,0,0,2,0,0,0,105,0,16,0,0,0,17,0,0,0,2,0,0,0,10,0,0,0,99,104,101,99,107,95,105,110,116,0,8,0,0,0,98,105,116,95,110,111,116,0,0,0,0,0,-45,0,0,0,-33,0,0,0,3,2,0,6,24,0,0,0,-124,0,0,0,-64,0,0,0,-100,64,0,1,24,0,64,0,22,-128,1,-128,-124,0,-128,0,-59,64,0,0,-58,-128,-64,1,0,1,0,0,-36,0,0,1,-100,-128,0,0,12,-64,64,1,-127,-64,0,0,-64,0,-128,0,1,-63,0,0,-96,0,0,-128,14,0,65,0,-97,64,-1,127,-124,0,0,1,-64,0,0,0,1,65,1,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,6,0,0,0,3,0,0,0,0,0,0,0,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,97,98,115,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,64,3,0,0,-32,-1,-1,-1,-17,65,0,0,0,0,24,0,0,0,-44,0,0,0,-44,0,0,0,-44,0,0,0,-42,0,0,0,-42,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-37,0,0,0,-37,0,0,0,-37,0,0,0,-37,0,0,0,-36,0,0,0,-37,0,0,0,-34,0,0,0,-34,0,0,0,-34,0,0,0,-34,0,0,0,-34,0,0,0,-33,0,0,0,6,0,0,0,2,0,0,0,110,0,0,0,0,0,23,0,0,0,5,0,0,0,98,105,116,115,0,0,0,0,0,23,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,15,0,0,0,18,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,15,0,0,0,18,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,15,0,0,0,18,0,0,0,2,0,0,0,105,0,16,0,0,0,17,0,0,0,3,0,0,0,10,0,0,0,99,104,101,99,107,95,105,110,116,0,8,0,0,0,98,105,116,95,110,111,116,0,8,0,0,0,98,105,116,95,97,110,100,0,0,0,0,0,-31,0,0,0,-26,0,0,0,3,2,0,7,18,0,0,0,-124,0,0,0,-60,0,-128,0,0,1,0,0,-36,-128,0,1,4,1,-128,0,64,1,-128,0,28,1,0,1,-100,-128,0,0,-60,0,0,0,0,1,0,0,64,1,-128,0,-36,-128,-128,1,4,1,0,1,64,1,-128,1,-128,1,0,1,28,-127,-128,1,30,1,0,1,30,0,-128,0,0,0,0,0,0,0,0,0,18,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-29,0,0,0,-29,0,0,0,-29,0,0,0,-29,0,0,0,-28,0,0,0,-28,0,0,0,-28,0,0,0,-28,0,0,0,-27,0,0,0,-26,0,0,0,5,0,0,0,2,0,0,0,109,0,0,0,0,0,17,0,0,0,2,0,0,0,110,0,0,0,0,0,17,0,0,0,4,0,0,0,114,104,115,0,8,0,0,0,17,0,0,0,4,0,0,0,108,104,115,0,12,0,0,0,17,0,0,0,5,0,0,0,114,115,108,116,0,16,0,0,0,17,0,0,0,3,0,0,0,7,0,0,0,98,105,116,95,111,114,0,8,0,0,0,98,105,116,95,110,111,116,0,8,0,0,0,98,105,116,95,97,110,100,0,53,0,0,0,42,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,78,0,0,0,95,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-97,0,0,0,-97,0,0,0,-97,0,0,0,-77,0,0,0,-77,0,0,0,-77,0,0,0,-77,0,0,0,-60,0,0,0,-60,0,0,0,-60,0,0,0,-60,0,0,0,-47,0,0,0,-47,0,0,0,-47,0,0,0,-33,0,0,0,-33,0,0,0,-33,0,0,0,-33,0,0,0,-26,0,0,0,-26,0,0,0,-26,0,0,0,-26,0,0,0,-21,0,0,0,-21,0,0,0,-19,0,0,0,-18,0,0,0,-17,0,0,0,-16,0,0,0,-15,0,0,0,-14,0,0,0,-13,0,0,0,-12,0,0,0,-9,0,0,0,-8,0,0,0,-7,0,0,0,-7,0,0,0,-5,0,0,0,12,0,0,0,10,0,0,0,99,104,101,99,107,95,105,110,116,0,1,0,0,0,51,0,0,0,8,0,0,0,116,111,95,98,105,116,115,0,4,0,0,0,51,0,0,0,14,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,5,0,0,0,51,0,0,0,7,0,0,0,101,120,112,97,110,100,0,6,0,0,0,51,0,0,0,7,0,0,0,98,105,116,95,111,114,0,11,0,0,0,51,0,0,0,8,0,0,0,98,105,116,95,97,110,100,0,16,0,0,0,51,0,0,0,8,0,0,0,98,105,116,95,110,111,116,0,19,0,0,0,51,0,0,0,8,0,0,0,98,105,116,95,120,111,114,0,23,0,0,0,51,0,0,0,11,0,0,0,98,105,116,95,114,115,104,105,102,116,0,27,0,0,0,51,0,0,0,17,0,0,0,98,105,116,95,108,111,103,105,99,95,114,115,104,105,102,116,0,30,0,0,0,51,0,0,0,11,0,0,0,98,105,116,95,108,115,104,105,102,116,0,34,0,0,0,51,0,0,0,9,0,0,0,98,105,116,95,120,111,114,50,0,38,0,0,0,51,0,0,0,0,0,0,0,77,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,99,97,99,104,101,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,34,0,0,0,5,0,0,0,74,0,0,0,9,64,-128,-128,5,-128,0,0,69,0,0,0,70,64,-64,0,-123,0,0,0,-122,64,64,1,28,64,-128,1,5,0,0,0,6,64,64,0,100,0,0,0,9,64,-128,-127,5,0,0,0,6,64,64,0,100,64,0,0,9,64,0,-126,5,0,0,0,6,64,64,0,100,-128,0,0,9,64,-128,-126,5,0,0,0,6,64,64,0,100,-64,0,0,9,64,0,-125,5,0,0,0,6,64,64,0,100,0,1,0,9,64,-128,-125,5,0,0,0,6,64,64,0,100,64,1,0,9,64,0,-124,30,0,-128,0,9,0,0,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,99,97,99,104,101,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,4,0,0,0,103,101,116,0,4,4,0,0,0,115,101,116,0,4,4,0,0,0,97,103,101,0,4,6,0,0,0,99,108,101,97,114,0,4,9,0,0,0,99,108,101,97,114,65,108,108,0,4,8,0,0,0,112,97,116,104,70,111,114,0,6,0,0,0,0,0,0,0,7,0,0,0,30,0,0,0,0,2,0,8,50,0,0,0,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-64,0,0,0,-100,-128,0,1,-59,0,0,0,-58,-64,-64,1,-58,0,-63,1,0,1,0,1,-36,-128,0,1,-38,64,0,0,22,64,0,-128,-61,0,-128,1,-34,0,0,1,90,0,0,0,22,64,3,-128,-59,64,1,0,-58,-128,-63,1,-36,-128,-128,0,5,1,0,0,6,-63,64,2,6,-63,65,2,64,1,0,1,28,-127,0,1,6,1,66,2,-51,0,-127,1,24,-64,-128,0,22,64,0,-128,3,1,0,2,30,1,0,1,-59,64,2,0,36,1,0,0,0,0,0,1,-36,-64,0,1,-38,64,0,0,22,-64,2,-128,69,-127,2,0,-127,-63,2,0,-64,1,0,0,92,65,-128,1,69,1,0,0,70,65,-64,2,70,1,-61,2,-128,1,0,0,92,65,0,1,67,1,-128,2,94,1,0,1,22,0,0,-128,30,1,0,1,30,0,-128,0,13,0,0,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,99,97,99,104,101,0,4,8,0,0,0,112,97,116,104,70,111,114,0,4,11,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,105,115,70,105,108,101,0,4,3,0,0,0,111,115,0,4,5,0,0,0,116,105,109,101,0,4,11,0,0,0,97,116,116,114,105,98,117,116,101,115,0,4,11,0,0,0,109,111,100,105,102,105,101,100,65,116,0,4,6,0,0,0,112,99,97,108,108,0,4,5,0,0,0,112,117,116,115,0,4,39,0,0,0,69,114,114,111,114,58,32,67,111,117,108,100,110,39,116,32,114,101,97,100,32,99,97,99,104,101,32,119,105,116,104,32,107,101,121,32,37,115,0,4,6,0,0,0,99,108,101,97,114,0,1,0,0,0,0,0,0,0,19,0,0,0,21,0,0,0,1,0,0,3,6,0,0,0,5,0,0,0,11,64,64,0,-124,0,0,0,29,0,-128,1,30,0,0,0,30,0,-128,0,2,0,0,0,4,18,0,0,0,78,83,75,101,121,101,100,85,110,97,114,99,104,105,118,101,114,0,4,24,0,0,0,117,110,97,114,99,104,105,118,101,79,98,106,101,99,116,87,105,116,104,70,105,108,101,0,0,0,0,0,6,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,112,97,116,104,0,50,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,19,0,0,0,21,0,0,0,21,0,0,0,19,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,28,0,0,0,30,0,0,0,6,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,49,0,0,0,7,0,0,0,109,97,120,65,103,101,0,0,0,0,0,49,0,0,0,5,0,0,0,112,97,116,104,0,5,0,0,0,49,0,0,0,8,0,0,0,102,105,108,101,65,103,101,0,26,0,0,0,30,0,0,0,8,0,0,0,115,117,99,99,101,115,115,0,34,0,0,0,49,0,0,0,7,0,0,0,114,101,115,117,108,116,0,34,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,44,0,0,0,0,2,0,8,26,0,0,0,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-64,0,0,0,-100,-128,0,1,90,64,0,0,22,64,1,-128,-59,0,0,0,-58,64,-64,1,-58,-64,-64,1,0,1,0,0,-36,64,0,1,22,-64,2,-128,-59,0,1,0,-53,64,-63,1,64,1,-128,0,-128,1,0,1,-36,-128,0,2,-38,64,0,0,22,0,1,-128,5,-127,1,0,65,-63,1,0,-128,1,0,0,-64,1,0,1,28,65,0,2,30,0,-128,0,8,0,0,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,99,97,99,104,101,0,4,8,0,0,0,112,97,116,104,70,111,114,0,4,6,0,0,0,99,108,101,97,114,0,4,16,0,0,0,78,83,75,101,121,101,100,65,114,99,104,105,118,101,114,0,4,25,0,0,0,97,114,99,104,105,118,101,82,111,111,116,79,98,106,101,99,116,95,116,111,70,105,108,101,0,4,5,0,0,0,112,117,116,115,0,4,36,0,0,0,67,111,117,108,100,110,39,116,32,97,114,99,104,105,118,101,32,99,97,99,104,101,32,39,37,115,39,32,116,111,32,39,37,115,39,0,0,0,0,0,26,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,44,0,0,0,4,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,25,0,0,0,9,0,0,0,99,111,110,116,101,110,116,115,0,0,0,0,0,25,0,0,0,5,0,0,0,112,97,116,104,0,5,0,0,0,25,0,0,0,8,0,0,0,115,117,99,99,101,115,115,0,18,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,55,0,0,0,0,1,0,5,30,0,0,0,69,0,0,0,70,64,-64,0,70,-128,-64,0,-128,0,0,0,92,-128,0,1,-123,0,0,0,-122,-64,64,1,-122,0,65,1,-64,0,-128,0,-100,-128,0,1,-102,64,0,0,22,64,1,-128,-123,0,0,0,-122,64,65,1,-122,-128,65,1,-63,-64,1,0,-99,0,0,1,-98,0,0,0,-123,0,2,0,-122,64,65,1,-100,-128,-128,0,-59,0,0,0,-58,-64,-64,1,-58,64,-62,1,0,1,-128,0,-36,-128,0,1,-58,-128,-62,1,-115,-64,0,1,-98,0,0,1,30,0,-128,0,11,0,0,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,99,97,99,104,101,0,4,8,0,0,0,112,97,116,104,70,111,114,0,4,11,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,105,115,70,105,108,101,0,4,5,0,0,0,116,105,109,101,0,4,5,0,0,0,100,97,121,115,0,3,0,0,0,0,0,64,-113,64,4,3,0,0,0,111,115,0,4,11,0,0,0,97,116,116,114,105,98,117,116,101,115,0,4,11,0,0,0,109,111,100,105,102,105,101,100,65,116,0,0,0,0,0,30,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,3,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,29,0,0,0,5,0,0,0,112,97,116,104,0,5,0,0,0,29,0,0,0,8,0,0,0,102,105,108,101,65,103,101,0,28,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,63,0,0,0,0,0,3,9,19,0,0,0,69,0,0,0,-118,0,0,0,-27,0,0,0,-94,64,0,0,92,0,1,1,22,64,2,-128,-123,65,0,0,-122,-127,64,3,-122,-63,64,3,-64,1,-128,2,-100,-127,0,1,-59,65,0,0,-58,1,-63,3,-58,65,-63,3,0,2,0,3,-36,65,0,1,97,-128,0,0,22,-64,-4,127,30,0,-128,0,6,0,0,0,4,7,0,0,0,105,112,97,105,114,115,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,99,97,99,104,101,0,4,8,0,0,0,112,97,116,104,70,111,114,0,4,11,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,100,101,108,101,116,101,0,0,0,0,0,19,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,59,0,0,0,61,0,0,0,63,0,0,0,7,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,18,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,5,0,0,0,18,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,5,0,0,0,18,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,5,0,0,0,18,0,0,0,2,0,0,0,105,0,6,0,0,0,16,0,0,0,4,0,0,0,107,101,121,0,6,0,0,0,16,0,0,0,5,0,0,0,112,97,116,104,0,11,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,69,0,0,0,0,0,0,2,11,0,0,0,5,0,0,0,6,64,64,0,6,-128,64,0,69,-64,0,0,28,64,0,1,5,0,0,0,6,64,64,0,6,0,65,0,69,-64,0,0,28,64,0,1,30,0,-128,0,5,0,0,0,4,4,0,0,0,119,97,120,0,4,11,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,100,101,108,101,116,101,0,4,17,0,0,0,78,83,67,97,99,104,101,68,105,114,101,99,116,111,114,121,0,4,10,0,0,0,99,114,101,97,116,101,68,105,114,0,0,0,0,0,11,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,0,0,0,73,0,0,0,0,1,0,5,10,0,0,0,69,0,0,0,-127,64,0,0,-59,-128,0,0,-58,-64,-64,1,-58,0,-63,1,0,1,0,0,-36,-128,0,1,85,-64,-128,0,94,0,0,1,30,0,-128,0,5,0,0,0,4,17,0,0,0,78,83,67,97,99,104,101,68,105,114,101,99,116,111,114,121,0,4,2,0,0,0,47,0,4,4,0,0,0,119,97,120,0,4,7,0,0,0,98,97,115,101,54,52,0,4,7,0,0,0,101,110,99,111,100,101,0,0,0,0,0,10,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,1,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,9,0,0,0,0,0,0,0,34,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,7,0,0,0,7,0,0,0,30,0,0,0,7,0,0,0,35,0,0,0,35,0,0,0,44,0,0,0,35,0,0,0,46,0,0,0,46,0,0,0,55,0,0,0,46,0,0,0,58,0,0,0,58,0,0,0,63,0,0,0,58,0,0,0,66,0,0,0,66,0,0,0,69,0,0,0,66,0,0,0,71,0,0,0,71,0,0,0,73,0,0,0,71,0,0,0,73,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,99,97,108,108,98,97,99,107,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,4,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,30,0,-128,0,2,0,0,0,4,4,0,0,0,119,97,120,0,4,9,0,0,0,99,97,108,108,98,97,99,107,0,1,0,0,0,0,0,0,0,3,0,0,0,22,0,0,0,0,1,0,5,12,0,0,0,74,64,0,0,73,0,0,-128,-92,0,0,0,73,-128,-128,-128,-92,64,0,0,73,-128,0,-127,-123,-64,0,0,-64,0,-128,0,0,1,-128,0,-100,64,-128,1,94,0,0,1,30,0,-128,0,4,0,0,0,4,9,0,0,0,99,97,108,108,98,97,99,107,0,4,7,0,0,0,99,97,110,99,101,108,0,4,7,0,0,0,95,95,99,97,108,108,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,2,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,0,1,0,2,2,0,0,0,9,64,64,-128,30,0,-128,0,2,0,0,0,4,9,0,0,0,99,97,110,99,101,108,101,100,0,1,1,0,0,0,0,2,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,17,0,0,0,0,1,3,6,22,0,0,0,-122,0,64,0,-102,0,0,0,22,0,0,-128,30,0,-128,0,-122,64,64,0,-102,0,0,0,22,64,1,-128,-118,0,-128,0,-58,64,64,0,37,1,0,0,-94,64,0,0,-102,64,0,0,22,-128,0,-128,-118,0,0,0,-27,0,0,0,-94,64,0,0,-58,-128,64,0,5,-63,0,0,64,1,0,1,28,1,0,1,-36,64,0,0,30,0,-128,0,4,0,0,0,4,9,0,0,0,99,97,110,99,101,108,101,100,0,4,6,0,0,0,115,99,111,112,101,0,4,9,0,0,0,99,97,108,108,98,97,99,107,0,4,7,0,0,0,117,110,112,97,99,107,0,0,0,0,0,22,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,3,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,21,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,21,0,0,0,5,0,0,0,97,114,103,115,0,16,0,0,0,21,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,4,0,0,0,8,0,0,0,6,0,0,0,17,0,0,0,10,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,21,0,0,0,22,0,0,0,2,0,0,0,9,0,0,0,99,97,108,108,98,97,99,107,0,0,0,0,0,11,0,0,0,7,0,0,0,111,98,106,101,99,116,0,2,0,0,0,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,102,114,97,109,101,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,10,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,5,0,0,0,100,64,0,0,9,64,0,-127,5,0,0,0,100,-128,0,0,9,64,-128,-127,30,0,-128,0,4,0,0,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,102,114,97,109,101,0,4,7,0,0,0,98,111,117,110,100,115,0,4,11,0,0,0,100,105,109,101,110,115,105,111,110,115,0,3,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,0,1,0,4,7,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,93,0,-128,1,94,0,0,0,30,0,-128,0,3,0,0,0,4,4,0,0,0,119,97,120,0,4,11,0,0,0,100,105,109,101,110,115,105,111,110,115,0,4,6,0,0,0,102,114,97,109,101,0,0,0,0,0,7,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,111,98,106,101,99,116,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,0,1,0,4,7,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,93,0,-128,1,94,0,0,0,30,0,-128,0,3,0,0,0,4,4,0,0,0,119,97,120,0,4,11,0,0,0,100,105,109,101,110,115,105,111,110,115,0,4,7,0,0,0,98,111,117,110,100,115,0,0,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,7,0,0,0,111,98,106,101,99,116,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,76,0,0,0,0,2,0,6,18,0,0,0,-123,0,0,0,-54,-128,0,0,-55,0,-128,-128,36,1,0,0,0,0,-128,0,-55,0,1,-127,10,-127,0,0,100,65,0,0,0,0,-128,0,0,0,0,0,9,65,-127,-127,100,-127,0,0,0,0,-128,0,0,0,0,0,9,65,1,-126,-99,0,-128,1,-98,0,0,0,30,0,-128,0,5,0,0,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,7,0,0,0,111,98,106,101,99,116,0,4,7,0,0,0,99,101,110,116,101,114,0,4,8,0,0,0,95,95,105,110,100,101,120,0,4,11,0,0,0,95,95,110,101,119,105,110,100,101,120,0,3,0,0,0,0,0,0,0,13,0,0,0,17,0,0,0,1,1,0,4,14,0,0,0,69,0,0,0,70,64,-64,0,-122,-128,64,0,-117,-64,64,1,-100,-128,0,1,-60,0,0,0,92,-128,-128,1,70,0,-63,0,-122,0,65,0,77,-128,-128,0,79,64,-63,0,9,64,0,-125,30,0,0,1,30,0,-128,0,7,0,0,0,4,4,0,0,0,119,97,120,0,4,11,0,0,0,100,105,109,101,110,115,105,111,110,115,0,4,7,0,0,0,111,98,106,101,99,116,0,4,10,0,0,0,115,117,112,101,114,118,105,101,119,0,4,6,0,0,0,119,105,100,116,104,0,3,0,0,0,0,0,0,0,64,4,2,0,0,0,120,0,0,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,2,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,13,0,0,0,7,0,0,0,111,102,102,115,101,116,0,11,0,0,0,13,0,0,0,1,0,0,0,8,0,0,0,118,97,114,78,97,109,101,0,0,0,0,0,20,0,0,0,39,0,0,0,2,2,0,6,74,0,0,0,23,0,-64,0,22,64,0,-128,65,64,0,0,22,-128,0,-128,23,-128,-64,0,22,0,0,-128,65,-64,0,0,-124,0,0,0,23,0,65,1,22,0,1,-128,-124,0,-128,0,-117,0,65,1,-100,-128,0,1,-102,64,0,0,22,-128,0,-128,-124,0,-128,0,-117,64,65,1,-100,-128,0,1,23,-64,-64,0,22,-128,0,-128,-58,-128,64,1,-34,0,0,1,22,64,12,-128,23,-128,-63,0,22,0,1,-128,-58,-128,64,1,6,-63,65,1,-52,0,-127,1,-34,0,0,1,22,-128,10,-128,23,64,-64,0,22,-128,0,-128,-58,0,64,1,-34,0,0,1,22,64,9,-128,23,0,-62,0,22,0,1,-128,-58,0,64,1,6,65,66,1,-52,0,-127,1,-34,0,0,1,22,-128,7,-128,23,64,-62,0,22,-128,0,-128,-58,64,66,1,-34,0,0,1,22,64,6,-128,23,-64,-63,0,22,-128,0,-128,-58,-64,65,1,-34,0,0,1,22,0,5,-128,23,-128,-62,0,22,64,1,-128,-59,-64,2,0,6,-63,65,1,70,65,66,1,-35,0,-128,1,-34,0,0,0,22,0,3,-128,23,0,-61,0,22,64,1,-128,-59,64,3,0,6,-127,64,1,70,1,64,1,-35,0,-128,1,-34,0,0,0,22,0,1,-128,-59,-128,3,0,1,-63,3,0,64,1,-128,0,21,65,1,2,-36,64,0,1,30,0,-128,0,16,0,0,0,4,2,0,0,0,121,0,4,4,0,0,0,116,111,112,0,4,2,0,0,0,120,0,4,5,0,0,0,108,101,102,116,0,4,6,0,0,0,102,114,97,109,101,0,4,7,0,0,0,98,111,117,110,100,115,0,4,6,0,0,0,114,105,103,104,116,0,4,6,0,0,0,119,105,100,116,104,0,4,7,0,0,0,98,111,116,116,111,109,0,4,7,0,0,0,104,101,105,103,104,116,0,4,5,0,0,0,115,105,122,101,0,4,7,0,0,0,67,71,83,105,122,101,0,4,7,0,0,0,111,114,105,103,105,110,0,4,8,0,0,0,67,71,80,111,105,110,116,0,4,6,0,0,0,101,114,114,111,114,0,4,20,0,0,0,85,110,107,110,111,119,110,32,102,114,97,109,101,32,107,101,121,58,32,0,0,0,0,0,74,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,39,0,0,0,3,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,73,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,73,0,0,0,11,0,0,0,100,105,109,101,110,115,105,111,110,115,0,18,0,0,0,73,0,0,0,2,0,0,0,8,0,0,0,118,97,114,78,97,109,101,0,7,0,0,0,111,98,106,101,99,116,0,0,0,0,0,41,0,0,0,74,0,0,0,2,3,0,7,108,0,0,0,23,0,-64,0,22,64,0,-128,65,64,0,0,22,-128,0,-128,23,-128,-64,0,22,0,0,-128,65,-64,0,0,-60,0,0,0,23,0,-63,1,22,0,1,-128,-60,0,-128,0,-53,0,-63,1,-36,-128,0,1,-38,64,0,0,22,-128,0,-128,-60,0,-128,0,-53,64,-63,1,-36,-128,0,1,23,-64,-64,0,22,64,0,-128,-55,-128,0,-127,22,-64,17,-128,23,-128,-63,0,22,-64,0,-128,6,-63,-63,1,13,1,1,1,-55,0,1,-127,22,64,16,-128,23,64,-64,0,22,64,0,-128,-55,-128,0,-128,22,64,15,-128,23,0,-62,0,22,-64,0,-128,6,65,-62,1,13,1,1,1,-55,0,1,-128,22,-64,13,-128,23,64,-62,0,22,64,0,-128,-55,-128,-128,-124,22,-64,12,-128,23,-64,-63,0,22,64,0,-128,-55,-128,-128,-125,22,-64,11,-128,23,-128,-62,0,22,0,1,-128,6,-63,65,1,-55,0,-127,-125,6,65,66,1,-55,0,-127,-124,22,0,10,-128,23,-64,-62,0,22,0,1,-128,6,-127,64,1,-55,0,1,-127,6,1,64,1,-55,0,1,-128,22,64,8,-128,23,0,-61,0,22,-128,1,-128,6,65,-62,1,70,1,-64,1,77,65,1,1,13,65,1,2,-55,0,-127,-124,-55,-128,0,-128,22,0,6,-128,23,64,-61,0,22,-64,1,-128,6,65,-62,1,70,65,-62,1,-122,1,-64,1,76,-127,-127,2,77,65,1,1,12,65,1,2,-55,0,-127,-124,22,-128,3,-128,23,-128,-61,0,22,-64,1,-128,6,-63,-63,1,70,-63,-63,1,-122,-127,-64,1,76,-127,-127,2,77,65,1,1,12,65,1,2,-55,0,-127,-125,22,0,1,-128,5,-63,3,0,65,1,4,0,-128,1,-128,0,85,-127,-127,2,28,65,0,1,4,1,0,0,23,0,65,2,22,0,1,-128,4,1,-128,0,11,65,68,2,-128,1,-128,1,28,65,-128,1,22,-64,0,-128,4,1,-128,0,11,-127,68,2,-128,1,-128,1,28,65,-128,1,30,0,0,1,30,0,-128,0,19,0,0,0,4,2,0,0,0,121,0,4,4,0,0,0,116,111,112,0,4,2,0,0,0,120,0,4,5,0,0,0,108,101,102,116,0,4,6,0,0,0,102,114,97,109,101,0,4,7,0,0,0,98,111,117,110,100,115,0,4,6,0,0,0,114,105,103,104,116,0,4,6,0,0,0,119,105,100,116,104,0,4,7,0,0,0,98,111,116,116,111,109,0,4,7,0,0,0,104,101,105,103,104,116,0,4,5,0,0,0,115,105,122,101,0,4,7,0,0,0,111,114,105,103,105,110,0,4,11,0,0,0,115,116,114,101,116,99,104,84,111,112,0,4,14,0,0,0,115,116,114,101,116,99,104,66,111,116,116,111,109,0,4,13,0,0,0,115,116,114,101,116,99,104,82,105,103,104,116,0,4,6,0,0,0,101,114,114,111,114,0,4,20,0,0,0,85,110,107,110,111,119,110,32,102,114,97,109,101,32,107,101,121,58,32,0,4,9,0,0,0,115,101,116,70,114,97,109,101,0,4,10,0,0,0,115,101,116,66,111,117,110,100,115,0,0,0,0,0,108,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,52,0,0,0,52,0,0,0,52,0,0,0,52,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,58,0,0,0,58,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,73,0,0,0,74,0,0,0,4,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,107,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,107,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,107,0,0,0,11,0,0,0,100,105,109,101,110,115,105,111,110,115,0,18,0,0,0,107,0,0,0,2,0,0,0,8,0,0,0,118,97,114,78,97,109,101,0,7,0,0,0,111,98,106,101,99,116,0,18,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,11,0,0,0,75,0,0,0,76,0,0,0,2,0,0,0,7,0,0,0,111,98,106,101,99,116,0,0,0,0,0,17,0,0,0,8,0,0,0,118,97,114,78,97,109,101,0,0,0,0,0,17,0,0,0,0,0,0,0,10,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,0,8,0,0,0,6,0,0,0,10,0,0,0,76,0,0,0,10,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,53,0,0,0,5,0,0,0,65,64,0,0,28,64,0,1,5,0,0,0,65,-128,0,0,28,64,0,1,5,0,0,0,65,-64,0,0,28,64,0,1,5,0,0,0,65,0,1,0,28,64,0,1,5,0,0,0,65,64,1,0,28,64,0,1,5,0,0,0,65,-128,1,0,28,64,0,1,5,0,0,0,65,-64,1,0,28,64,0,1,5,0,0,0,65,0,2,0,28,64,0,1,36,0,0,0,7,64,2,0,5,-128,2,0,100,64,0,0,9,64,-128,-123,5,0,3,0,11,64,67,0,28,-128,0,1,11,-128,67,0,28,-128,0,1,11,-64,67,0,-127,0,4,0,28,-128,-128,1,26,64,0,0,22,64,0,-128,36,-128,0,0,7,64,4,0,5,-128,2,0,100,-64,0,0,9,64,0,-119,36,0,1,0,7,-64,4,0,5,-128,2,0,100,64,1,0,9,64,0,-118,5,-128,2,0,100,-128,1,0,9,64,-128,-118,30,0,-128,0,22,0,0,0,4,8,0,0,0,114,101,113,117,105,114,101,0,4,16,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,98,105,116,0,4,21,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,99,97,108,108,98,97,99,107,0,4,18,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,102,114,97,109,101,0,4,19,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,98,97,115,101,54,52,0,4,17,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,116,105,109,101,0,4,18,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,99,97,99,104,101,0,4,21,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,97,117,116,111,108,111,97,100,0,4,22,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,87,97,120,83,101,114,118,101,114,0,4,9,0,0,0,73,66,79,117,116,108,101,116,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,97,108,101,114,116,0,4,9,0,0,0,85,73,68,101,118,105,99,101,0,4,14,0,0,0,99,117,114,114,101,110,116,68,101,118,105,99,101,0,4,6,0,0,0,109,111,100,101,108,0,4,6,0,0,0,109,97,116,99,104,0,4,17,0,0,0,105,80,104,111,110,101,32,83,105,109,117,108,97,116,111,114,0,4,6,0,0,0,112,114,105,110,116,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,5,0,0,0,112,117,116,115,0,4,5,0,0,0,103,117,105,100,0,4,5,0,0,0,101,118,97,108,0,7,0,0,0,0,0,0,0,12,0,0,0,14,0,0,0,0,0,7,2,1,0,0,0,30,0,-128,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,1,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,2,3,12,31,0,0,0,-59,0,0,0,-53,64,-64,1,-36,-128,0,1,11,-127,-64,1,-128,1,0,0,28,65,-128,1,11,-63,-64,1,-128,1,-128,0,28,65,-128,1,37,1,0,1,26,65,0,0,22,-64,0,-128,11,1,-63,1,-127,65,1,0,28,65,-128,1,22,-128,2,-128,5,-127,1,0,74,1,0,0,-91,1,0,0,98,65,0,0,28,1,1,1,22,-128,0,-128,75,2,-63,1,-64,2,0,4,92,66,-128,1,33,-127,0,0,22,-128,-2,127,11,-63,-63,1,28,65,0,1,-34,0,0,1,30,0,-128,0,8,0,0,0,4,12,0,0,0,85,73,65,108,101,114,116,86,105,101,119,0,4,5,0,0,0,105,110,105,116,0,4,9,0,0,0,115,101,116,84,105,116,108,101,0,4,11,0,0,0,115,101,116,77,101,115,115,97,103,101,0,4,19,0,0,0,97,100,100,66,117,116,116,111,110,87,105,116,104,84,105,116,108,101,0,4,3,0,0,0,79,75,0,4,7,0,0,0,105,112,97,105,114,115,0,4,5,0,0,0,115,104,111,119,0,0,0,0,0,31,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,24,0,0,0,25,0,0,0,29,0,0,0,29,0,0,0,31,0,0,0,32,0,0,0,9,0,0,0,6,0,0,0,116,105,116,108,101,0,0,0,0,0,30,0,0,0,8,0,0,0,109,101,115,115,97,103,101,0,0,0,0,0,30,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,30,0,0,0,6,0,0,0,97,108,101,114,116,0,3,0,0,0,30,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,21,0,0,0,27,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,21,0,0,0,27,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,21,0,0,0,27,0,0,0,2,0,0,0,105,0,22,0,0,0,25,0,0,0,5,0,0,0,110,97,109,101,0,22,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,39,0,0,0,0,1,0,3,5,0,0,0,69,0,0,0,-92,0,0,0,0,0,0,0,92,64,0,1,30,0,-128,0,1,0,0,0,4,6,0,0,0,112,99,97,108,108,0,1,0,0,0,0,0,0,0,38,0,0,0,38,0,0,0,1,0,0,3,7,0,0,0,5,0,0,0,6,64,64,0,69,-128,0,0,-124,0,0,0,92,0,0,1,28,64,0,0,30,0,-128,0,3,0,0,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,112,114,105,110,116,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,7,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,111,98,106,0,5,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,1,0,0,0,4,0,0,0,111,98,106,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,54,0,0,0,0,1,3,5,28,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,23,64,64,1,22,0,1,-128,-123,64,0,0,-122,-128,64,1,-64,0,0,0,-99,0,0,1,-98,0,0,0,-91,0,0,1,-102,0,0,0,22,0,2,-128,-123,-64,0,0,-122,0,65,1,-59,-128,0,0,0,1,0,0,-36,-128,0,1,37,1,0,0,-100,-128,0,0,0,0,0,1,22,-64,0,-128,-123,-128,0,0,-64,0,0,0,-100,-128,0,1,0,0,0,1,30,0,0,1,30,0,-128,0,5,0,0,0,4,5,0,0,0,116,121,112,101,0,4,6,0,0,0,116,97,98,108,101,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,7,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,102,111,114,109,97,116,0,0,0,0,0,28,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,53,0,0,0,54,0,0,0,2,0,0,0,4,0,0,0,111,98,106,0,0,0,0,0,27,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,58,0,0,0,0,1,3,6,8,0,0,0,-123,0,0,0,-59,64,0,0,-58,-128,-64,1,0,1,0,0,101,1,0,0,-36,0,0,0,-100,64,0,0,30,0,-128,0,3,0,0,0,4,6,0,0,0,112,114,105,110,116,0,4,4,0,0,0,119,97,120,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,8,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,58,0,0,0,2,0,0,0,4,0,0,0,111,98,106,0,0,0,0,0,7,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,60,0,0,0,62,0,0,0,0,0,0,2,7,0,0,0,5,0,0,0,11,64,64,0,28,-128,0,1,11,-128,64,0,29,0,0,1,30,0,0,0,30,0,-128,0,3,0,0,0,4,14,0,0,0,78,83,80,114,111,99,101,115,115,73,110,102,111,0,4,12,0,0,0,112,114,111,99,101,115,115,73,110,102,111,0,4,21,0,0,0,103,108,111,98,97,108,108,121,85,110,105,113,117,101,83,116,114,105,110,103,0,0,0,0,0,7,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,77,0,0,0,0,1,0,3,6,0,0,0,69,0,0,0,-92,0,0,0,0,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,1,0,0,0,4,6,0,0,0,112,99,97,108,108,0,1,0,0,0,0,0,0,0,65,0,0,0,76,0,0,0,1,0,0,5,28,0,0,0,4,0,0,0,11,0,64,0,-127,64,0,0,28,-128,-128,1,26,64,0,0,22,0,1,-128,1,-128,0,0,68,0,0,0,-127,-64,0,0,21,-128,0,0,8,0,0,0,5,0,1,0,68,0,0,0,-127,64,1,0,28,-64,-128,1,90,0,0,0,22,64,1,-128,-123,-128,1,0,-63,-64,1,0,0,1,-128,0,-43,0,-127,1,-100,64,0,1,22,-64,0,-128,-123,0,2,0,-64,0,0,0,-36,0,-128,0,-100,64,0,0,30,0,-128,0,9,0,0,0,4,6,0,0,0,109,97,116,99,104,0,4,2,0,0,0,61,0,4,12,0,0,0,100,111,32,114,101,116,117,114,110,32,40,0,4,6,0,0,0,41,32,101,110,100,0,4,11,0,0,0,108,111,97,100,115,116,114,105,110,103,0,4,5,0,0,0,82,69,80,76,0,4,6,0,0,0,101,114,114,111,114,0,4,15,0,0,0,83,121,110,116,97,120,32,69,114,114,111,114,58,32,0,4,5,0,0,0,112,117,116,115,0,0,0,0,0,28,0,0,0,66,0,0,0,66,0,0,0,66,0,0,0,66,0,0,0,66,0,0,0,66,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,71,0,0,0,71,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,76,0,0,0,2,0,0,0,5,0,0,0,99,111,100,101,0,15,0,0,0,27,0,0,0,4,0,0,0,101,114,114,0,15,0,0,0,27,0,0,0,1,0,0,0,6,0,0,0,105,110,112,117,116,0,6,0,0,0,65,0,0,0,76,0,0,0,76,0,0,0,65,0,0,0,76,0,0,0,77,0,0,0,1,0,0,0,6,0,0,0,105,110,112,117,116,0,0,0,0,0,5,0,0,0,0,0,0,0,53,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,14,0,0,0,12,0,0,0,16,0,0,0,32,0,0,0,16,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,39,0,0,0,36,0,0,0,42,0,0,0,54,0,0,0,42,0,0,0,58,0,0,0,56,0,0,0,60,0,0,0,62,0,0,0,60,0,0,0,64,0,0,0,77,0,0,0,64,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,116,105,109,101,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,40,0,0,0,5,0,0,0,74,0,0,0,9,64,-128,-128,5,0,0,0,6,64,64,0,100,0,0,0,9,64,0,-127,5,0,0,0,6,64,64,0,100,64,0,0,9,64,-128,-127,5,0,0,0,6,64,64,0,100,-128,0,0,9,64,0,-126,5,0,0,0,6,64,64,0,100,-64,0,0,9,64,-128,-126,5,0,0,0,6,64,64,0,100,0,1,0,9,64,0,-125,5,0,0,0,6,64,64,0,100,64,1,0,9,64,-128,-125,5,0,0,0,6,64,64,0,100,-128,1,0,9,64,0,-124,5,0,0,0,6,64,64,0,100,-64,1,0,9,64,-128,-124,5,0,0,0,6,64,64,0,100,0,2,0,9,64,0,-123,30,0,-128,0,11,0,0,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,116,105,109,101,0,4,8,0,0,0,109,105,110,117,116,101,115,0,4,6,0,0,0,104,111,117,114,115,0,4,5,0,0,0,100,97,121,115,0,4,11,0,0,0,102,111,114,109,97,116,68,97,116,101,0,4,10,0,0,0,112,97,114,115,101,68,97,116,101,0,4,14,0,0,0,98,101,103,105,110,105,110,103,79,102,68,97,121,0,4,9,0,0,0,101,110,100,79,102,68,97,121,0,4,15,0,0,0,116,105,109,101,65,103,111,73,110,87,111,114,100,115,0,4,6,0,0,0,115,105,110,99,101,0,9,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0,0,1,0,2,3,0,0,0,78,0,64,0,94,0,0,1,30,0,-128,0,1,0,0,0,3,0,0,0,0,0,0,78,64,0,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,1,0,0,0,7,0,0,0,110,117,109,98,101,114,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,9,0,0,0,0,1,0,3,8,0,0,0,69,0,0,0,70,64,-64,0,70,-128,-64,0,-127,-64,0,0,92,-128,0,1,78,64,0,0,94,0,0,1,30,0,-128,0,4,0,0,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,116,105,109,101,0,4,8,0,0,0,109,105,110,117,116,101,115,0,3,0,0,0,0,0,0,78,64,0,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,7,0,0,0,110,117,109,98,101,114,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,13,0,0,0,0,1,0,3,8,0,0,0,69,0,0,0,70,64,-64,0,70,-128,-64,0,-127,-64,0,0,92,-128,0,1,78,64,0,0,94,0,0,1,30,0,-128,0,4,0,0,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,116,105,109,101,0,4,6,0,0,0,104,111,117,114,115,0,3,0,0,0,0,0,0,56,64,0,0,0,0,8,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,1,0,0,0,7,0,0,0,110,117,109,98,101,114,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,25,0,0,0,0,2,0,6,37,0,0,0,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-102,64,0,0,22,-64,3,-128,-123,0,0,0,-122,64,64,1,-59,-64,0,0,-53,0,-63,1,-36,-128,0,1,-119,-64,0,-127,-123,64,1,0,-117,-128,65,1,1,-63,1,0,-100,-128,-128,1,-59,0,0,0,-58,64,-64,1,-58,-128,-64,1,-53,0,-62,1,64,1,0,1,-36,64,-128,1,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-117,64,66,1,27,65,-128,0,22,0,0,-128,1,-127,2,0,-100,64,-128,1,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-117,-64,66,1,0,1,0,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,12,0,0,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,116,105,109,101,0,4,17,0,0,0,95,111,117,116,112,117,116,70,111,114,109,97,116,116,101,114,0,4,16,0,0,0,78,83,68,97,116,101,70,111,114,109,97,116,116,101,114,0,4,5,0,0,0,105,110,105,116,0,4,9,0,0,0,78,83,76,111,99,97,108,101,0,4,25,0,0,0,105,110,105,116,87,105,116,104,76,111,99,97,108,101,73,100,101,110,116,105,102,105,101,114,0,4,12,0,0,0,101,110,95,85,83,95,80,79,83,73,88,0,4,10,0,0,0,115,101,116,76,111,99,97,108,101,0,4,14,0,0,0,115,101,116,68,97,116,101,70,111,114,109,97,116,0,4,7,0,0,0,77,77,77,77,32,100,0,4,15,0,0,0,115,116,114,105,110,103,70,114,111,109,68,97,116,101,0,0,0,0,0,37,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,3,0,0,0,5,0,0,0,100,97,116,101,0,0,0,0,0,36,0,0,0,8,0,0,0,112,97,116,116,101,114,110,0,0,0,0,0,36,0,0,0,7,0,0,0,108,111,99,97,108,101,0,15,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,41,0,0,0,0,2,0,6,43,0,0,0,-117,0,64,0,1,65,0,0,65,-127,0,0,-100,-128,0,2,0,0,0,1,-123,-64,0,0,-122,0,65,1,-122,64,65,1,-102,64,0,0,22,0,4,-128,-123,-64,0,0,-122,0,65,1,-59,-128,1,0,-53,-64,-63,1,-36,-128,0,1,-119,-64,-128,-126,-123,64,2,0,-117,-128,66,1,1,-63,2,0,-100,-128,-128,1,-121,0,2,0,-123,-64,0,0,-122,0,65,1,-122,64,65,1,-117,0,67,1,5,1,2,0,-100,64,-128,1,-123,-64,0,0,-122,0,65,1,-122,64,65,1,-117,64,67,1,27,65,-128,0,22,0,0,-128,1,-127,3,0,-100,64,-128,1,-123,-64,0,0,-122,0,65,1,-122,64,65,1,-117,-64,67,1,0,1,0,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,16,0,0,0,4,5,0,0,0,103,115,117,98,0,4,3,0,0,0,90,36,0,4,5,0,0,0,32,71,77,84,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,116,105,109,101,0,4,16,0,0,0,95,105,110,112,117,116,70,111,114,109,97,116,116,101,114,0,4,16,0,0,0,78,83,68,97,116,101,70,111,114,109,97,116,116,101,114,0,4,5,0,0,0,105,110,105,116,0,4,7,0,0,0,108,111,99,97,108,101,0,4,9,0,0,0,78,83,76,111,99,97,108,101,0,4,25,0,0,0,105,110,105,116,87,105,116,104,76,111,99,97,108,101,73,100,101,110,116,105,102,105,101,114,0,4,12,0,0,0,101,110,95,85,83,95,80,79,83,73,88,0,4,10,0,0,0,115,101,116,76,111,99,97,108,101,0,4,14,0,0,0,115,101,116,68,97,116,101,70,111,114,109,97,116,0,4,26,0,0,0,121,121,121,121,45,77,77,45,100,100,39,84,39,72,72,58,109,109,58,115,115,32,90,90,90,0,4,15,0,0,0,100,97,116,101,70,114,111,109,83,116,114,105,110,103,0,0,0,0,0,43,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,41,0,0,0,2,0,0,0,11,0,0,0,100,97,116,101,83,116,114,105,110,103,0,0,0,0,0,42,0,0,0,8,0,0,0,112,97,116,116,101,114,110,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,52,0,0,0,0,1,0,8,31,0,0,0,69,0,0,0,75,64,-64,0,92,-128,0,1,-117,-128,-64,0,1,-63,0,0,91,65,0,0,22,-128,0,-128,69,1,1,0,75,65,-63,2,92,-127,0,1,-100,-128,0,2,-59,-128,1,0,-53,-64,-63,1,-36,-128,0,1,11,1,-62,1,-117,65,66,1,-100,1,0,1,28,65,0,0,11,-127,-62,1,-117,-63,66,1,-100,1,0,1,28,65,0,0,11,1,-61,1,-117,65,67,1,-100,1,0,1,28,65,0,0,11,-127,-61,0,-128,1,-128,1,29,1,-128,1,30,1,0,0,30,0,-128,0,15,0,0,0,4,11,0,0,0,78,83,67,97,108,101,110,100,97,114,0,4,16,0,0,0,99,117,114,114,101,110,116,67,97,108,101,110,100,97,114,0,4,20,0,0,0,99,111,109,112,111,110,101,110,116,115,95,102,114,111,109,68,97,116,101,0,3,0,0,0,0,0,0,-16,-65,4,7,0,0,0,78,83,68,97,116,101,0,4,5,0,0,0,100,97,116,101,0,4,17,0,0,0,78,83,68,97,116,101,67,111,109,112,111,110,101,110,116,115,0,4,5,0,0,0,105,110,105,116,0,4,8,0,0,0,115,101,116,89,101,97,114,0,4,5,0,0,0,121,101,97,114,0,4,9,0,0,0,115,101,116,77,111,110,116,104,0,4,6,0,0,0,109,111,110,116,104,0,4,7,0,0,0,115,101,116,68,97,121,0,4,4,0,0,0,100,97,121,0,4,19,0,0,0,100,97,116,101,70,114,111,109,67,111,109,112,111,110,101,110,116,115,0,0,0,0,0,31,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,52,0,0,0,4,0,0,0,5,0,0,0,100,97,116,101,0,0,0,0,0,30,0,0,0,9,0,0,0,99,97,108,101,110,100,97,114,0,3,0,0,0,30,0,0,0,15,0,0,0,100,97,116,101,67,111,109,112,111,110,101,110,116,115,0,11,0,0,0,30,0,0,0,14,0,0,0,110,101,119,67,111,109,112,111,110,101,110,116,115,0,14,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,66,0,0,0,0,1,0,8,36,0,0,0,69,0,0,0,75,64,-64,0,92,-128,0,1,-117,-128,-64,0,1,-63,0,0,64,1,0,0,-100,-128,0,2,-59,0,1,0,-53,64,-63,1,-36,-128,0,1,11,-127,-63,1,-117,-63,65,1,-100,1,0,1,28,65,0,0,11,1,-62,1,-117,65,66,1,-100,1,0,1,28,65,0,0,11,-127,-62,1,-117,-63,66,1,-100,1,0,1,28,65,0,0,11,1,-61,1,-127,65,3,0,28,65,-128,1,11,-127,-61,1,-127,-63,3,0,28,65,-128,1,11,1,-60,1,-127,-63,3,0,28,65,-128,1,11,65,-60,0,-128,1,-128,1,29,1,-128,1,30,1,0,0,30,0,-128,0,18,0,0,0,4,11,0,0,0,78,83,67,97,108,101,110,100,97,114,0,4,16,0,0,0,99,117,114,114,101,110,116,67,97,108,101,110,100,97,114,0,4,20,0,0,0,99,111,109,112,111,110,101,110,116,115,95,102,114,111,109,68,97,116,101,0,3,0,0,0,0,0,0,-16,-65,4,17,0,0,0,78,83,68,97,116,101,67,111,109,112,111,110,101,110,116,115,0,4,5,0,0,0,105,110,105,116,0,4,8,0,0,0,115,101,116,89,101,97,114,0,4,5,0,0,0,121,101,97,114,0,4,9,0,0,0,115,101,116,77,111,110,116,104,0,4,6,0,0,0,109,111,110,116,104,0,4,7,0,0,0,115,101,116,68,97,121,0,4,4,0,0,0,100,97,121,0,4,8,0,0,0,115,101,116,72,111,117,114,0,3,0,0,0,0,0,0,56,64,4,10,0,0,0,115,101,116,77,105,110,117,116,101,0,3,0,0,0,0,0,-128,77,64,4,10,0,0,0,115,101,116,83,101,99,111,110,100,0,4,19,0,0,0,100,97,116,101,70,114,111,109,67,111,109,112,111,110,101,110,116,115,0,0,0,0,0,36,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,66,0,0,0,4,0,0,0,5,0,0,0,100,97,116,101,0,0,0,0,0,35,0,0,0,9,0,0,0,99,97,108,101,110,100,97,114,0,3,0,0,0,35,0,0,0,15,0,0,0,100,97,116,101,67,111,109,112,111,110,101,110,116,115,0,7,0,0,0,35,0,0,0,14,0,0,0,110,101,119,67,111,109,112,111,110,101,110,116,115,0,10,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,89,0,0,0,0,2,0,11,101,0,0,0,-101,64,-128,0,22,-128,0,-128,-123,0,0,0,-117,64,64,1,-100,-128,0,1,-117,-128,64,1,-100,-128,0,1,-53,-128,64,0,-36,-128,0,1,-115,-64,0,1,-59,-64,0,0,-58,0,-63,1,0,1,0,1,-36,-128,0,1,5,-63,0,0,6,65,65,2,79,-127,-63,1,28,-127,0,1,69,-63,0,0,70,65,-63,2,-113,-127,65,2,92,-127,0,1,-123,-63,0,0,-122,65,65,3,-49,-63,-63,2,-100,-127,0,1,-59,-63,0,0,-58,65,-63,3,15,2,66,3,-36,-127,0,1,25,64,66,2,22,-128,0,-128,1,-126,2,0,30,2,0,1,22,0,16,-128,25,-64,66,2,22,64,1,-128,1,2,3,0,11,66,67,4,-128,2,0,2,29,2,-128,1,30,2,0,0,22,0,14,-128,25,-128,67,2,22,-128,0,-128,1,-62,3,0,30,2,0,1,22,-64,12,-128,25,-64,-63,2,22,64,1,-128,1,2,4,0,11,66,67,4,-128,2,-128,2,29,2,-128,1,30,2,0,0,22,-64,10,-128,25,64,-60,2,22,-128,0,-128,1,-126,4,0,30,2,0,1,22,-128,9,-128,25,-64,68,3,22,64,1,-128,1,2,5,0,11,66,67,4,-128,2,0,3,29,2,-128,1,30,2,0,0,22,-128,7,-128,25,64,69,3,22,-128,0,-128,1,-126,5,0,30,2,0,1,22,64,6,-128,25,-64,-59,3,22,-128,0,-128,1,2,6,0,30,2,0,1,22,0,5,-128,25,64,-58,3,22,-128,0,-128,1,-126,6,0,30,2,0,1,22,-64,3,-128,5,-62,6,0,24,0,71,4,22,-128,0,-128,1,66,7,0,30,2,0,1,22,64,2,-128,25,-128,71,2,22,-128,0,-128,1,2,6,0,30,2,0,1,22,0,1,-128,1,-62,7,0,11,66,67,4,-123,-62,6,0,29,2,-128,1,30,2,0,0,30,0,-128,0,32,0,0,0,4,7,0,0,0,78,83,68,97,116,101,0,4,5,0,0,0,100,97,116,101,0,4,22,0,0,0,116,105,109,101,73,110,116,101,114,118,97,108,83,105,110,99,101,49,57,55,48,0,4,5,0,0,0,109,97,116,104,0,4,4,0,0,0,97,98,115,0,4,6,0,0,0,102,108,111,111,114,0,3,0,0,0,0,0,0,78,64,3,0,0,0,0,0,0,56,64,3,0,0,0,0,0,0,62,64,3,0,0,0,0,0,0,-16,63,4,19,0,0,0,108,101,115,115,32,116,104,97,110,32,97,32,109,105,110,117,116,101,0,3,0,0,0,0,0,0,70,64,4,11,0,0,0,37,100,32,109,105,110,117,116,101,115,0,4,7,0,0,0,102,111,114,109,97,116,0,3,0,0,0,0,0,64,86,64,4,13,0,0,0,97,98,111,117,116,32,49,32,104,111,117,114,0,4,15,0,0,0,97,98,111,117,116,32,37,100,32,104,111,117,114,115,0,3,0,0,0,0,0,-128,71,64,4,6,0,0,0,49,32,100,97,121,0,3,0,0,0,0,0,0,61,64,4,8,0,0,0,37,100,32,100,97,121,115,0,3,0,0,0,0,0,-128,77,64,4,14,0,0,0,97,98,111,117,116,32,49,32,109,111,110,116,104,0,3,0,0,0,0,0,0,46,64,4,13,0,0,0,97,98,111,117,116,32,49,32,121,101,97,114,0,3,0,0,0,0,0,0,54,64,4,12,0,0,0,111,118,101,114,32,49,32,121,101,97,114,0,4,6,0,0,0,121,101,97,114,115,0,3,0,0,0,0,0,0,0,64,4,15,0,0,0,97,108,109,111,115,116,32,50,32,121,101,97,114,115,0,3,0,0,0,0,63,10,48,65,4,14,0,0,0,111,118,101,114,32,37,100,32,121,101,97,114,115,0,0,0,0,0,101,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,71,0,0,0,71,0,0,0,71,0,0,0,71,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,76,0,0,0,76,0,0,0,76,0,0,0,76,0,0,0,76,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,82,0,0,0,82,0,0,0,82,0,0,0,82,0,0,0,82,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,87,0,0,0,87,0,0,0,87,0,0,0,87,0,0,0,87,0,0,0,89,0,0,0,8,0,0,0,10,0,0,0,102,105,114,115,116,68,97,116,101,0,0,0,0,0,100,0,0,0,11,0,0,0,115,101,99,111,110,100,68,97,116,101,0,0,0,0,0,100,0,0,0,11,0,0,0,100,105,102,102,101,114,101,110,99,101,0,10,0,0,0,100,0,0,0,8,0,0,0,115,101,99,111,110,100,115,0,14,0,0,0,100,0,0,0,8,0,0,0,109,105,110,117,116,101,115,0,18,0,0,0,100,0,0,0,6,0,0,0,104,111,117,114,115,0,22,0,0,0,100,0,0,0,5,0,0,0,100,97,121,115,0,26,0,0,0,100,0,0,0,7,0,0,0,109,111,110,116,104,115,0,30,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,102,0,0,0,0,2,0,7,74,0,0,0,90,64,0,0,22,-64,0,-128,-123,0,0,0,-117,64,64,1,-100,-128,0,1,64,0,0,1,-117,-128,-64,0,-100,-128,0,1,-53,-128,64,0,-36,-128,0,1,-115,-64,0,1,-53,-128,64,0,-36,-128,0,1,5,-63,0,0,6,1,65,2,6,65,65,2,28,-127,-128,0,11,-127,64,2,28,-127,0,1,-51,0,-127,1,5,-63,0,0,6,1,65,2,6,-127,65,2,65,-63,1,0,28,-127,0,1,24,0,1,1,22,-128,2,-128,24,-64,0,-124,22,0,2,-128,5,-63,0,0,6,1,65,2,6,65,66,2,64,1,0,0,-127,-127,2,0,28,-127,-128,1,65,-63,2,0,30,1,-128,1,22,-128,8,-128,5,-63,0,0,6,1,65,2,6,-127,65,2,65,1,3,0,28,-127,0,1,24,0,1,1,22,-64,0,-128,1,65,3,0,65,-127,3,0,30,1,-128,1,22,-64,5,-128,5,-63,0,0,6,1,65,2,6,-127,65,2,65,-63,3,0,28,-127,0,1,24,0,1,1,22,0,2,-128,5,-63,0,0,6,1,65,2,6,65,66,2,64,1,0,0,-127,1,4,0,28,-127,-128,1,65,65,4,0,30,1,-128,1,22,-64,1,-128,5,-63,0,0,6,1,65,2,6,65,66,2,64,1,0,0,-127,-127,4,0,28,-127,-128,1,65,65,4,0,30,1,-128,1,30,0,-128,0,19,0,0,0,4,7,0,0,0,78,83,68,97,116,101,0,4,5,0,0,0,100,97,116,101,0,4,22,0,0,0,116,105,109,101,73,110,116,101,114,118,97,108,83,105,110,99,101,49,57,55,48,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,116,105,109,101,0,4,14,0,0,0,98,101,103,105,110,105,110,103,79,102,68,97,121,0,4,5,0,0,0,100,97,121,115,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,4,11,0,0,0,102,111,114,109,97,116,68,97,116,101,0,4,7,0,0,0,104,58,109,109,32,97,0,4,3,0,0,0,97,116,0,3,0,0,0,0,0,0,0,64,4,10,0,0,0,89,101,115,116,101,114,100,97,121,0,4,1,0,0,0,0,3,0,0,0,0,0,0,28,64,4,5,0,0,0,69,69,69,69,0,4,3,0,0,0,111,110,0,4,9,0,0,0,77,77,47,100,100,47,121,121,0,0,0,0,0,74,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,102,0,0,0,4,0,0,0,5,0,0,0,100,97,116,101,0,0,0,0,0,73,0,0,0,14,0,0,0,114,101,102,101,114,101,110,99,101,68,97,116,101,0,0,0,0,0,73,0,0,0,11,0,0,0,100,105,102,102,101,114,101,110,99,101,0,11,0,0,0,73,0,0,0,18,0,0,0,116,105,109,101,83,105,110,99,101,77,105,100,110,105,103,104,116,0,20,0,0,0,73,0,0,0,0,0,0,0,40,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,7,0,0,0,9,0,0,0,7,0,0,0,11,0,0,0,11,0,0,0,13,0,0,0,11,0,0,0,16,0,0,0,16,0,0,0,25,0,0,0,16,0,0,0,28,0,0,0,28,0,0,0,41,0,0,0,28,0,0,0,43,0,0,0,43,0,0,0,52,0,0,0,43,0,0,0,54,0,0,0,54,0,0,0,66,0,0,0,54,0,0,0,68,0,0,0,68,0,0,0,89,0,0,0,68,0,0,0,91,0,0,0,91,0,0,0,102,0,0,0,91,0,0,0,102,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,4,22,0,0,0,5,0,0,0,69,64,0,0,-118,64,0,0,-28,0,0,0,-119,-64,0,-127,28,64,-128,1,5,-64,0,0,65,0,1,0,28,64,0,1,5,-64,0,0,65,64,1,0,28,64,0,1,5,-64,0,0,65,-128,1,0,28,64,0,1,5,-64,0,0,65,-64,1,0,28,64,0,1,5,-64,0,0,65,0,2,0,28,64,0,1,30,0,-128,0,9,0,0,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,3,0,0,0,95,71,0,4,8,0,0,0,95,95,105,110,100,101,120,0,4,8,0,0,0,114,101,113,117,105,114,101,0,4,8,0,0,0,119,97,120,46,101,120,116,0,4,10,0,0,0,119,97,120,46,101,110,117,109,115,0,4,12,0,0,0,119,97,120,46,115,116,114,117,99,116,115,0,4,13,0,0,0,119,97,120,46,119,97,120,67,108,97,115,115,0,4,12,0,0,0,119,97,120,46,104,101,108,112,101,114,115,0,1,0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,0,2,0,7,21,0,0,0,-123,0,0,0,-122,64,64,1,-122,64,0,1,-102,0,0,0,22,0,0,-128,9,-128,-128,0,-102,64,0,0,22,-128,2,-128,-53,-128,-64,0,65,-63,0,0,-36,-128,-128,1,-38,0,0,0,22,64,1,-128,-59,0,1,0,1,65,1,0,64,1,-128,0,-127,-127,1,0,21,-127,1,2,-36,64,0,1,-98,0,0,1,30,0,-128,0,7,0,0,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,99,108,97,115,115,0,4,6,0,0,0,109,97,116,99,104,0,4,23,0,0,0,94,91,65,45,90,93,91,65,45,90,93,91,65,45,90,93,91,94,65,45,90,93,0,4,6,0,0,0,112,114,105,110,116,0,4,27,0,0,0,87,65,82,78,73,78,71,58,32,78,111,32,111,98,106,101,99,116,32,110,97,109,101,100,32,39,0,4,9,0,0,0,39,32,102,111,117,110,100,46,0,0,0,0,0,21,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,10,0,0,0,11,0,0,0,3,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,20,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,20,0,0,0,6,0,0,0,99,108,97,115,115,0,3,0,0,0,20,0,0,0,0,0,0,0,22,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,11,0,0,0,11,0,0,0,1,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,108,117,97,115,112,101,99,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,7,0,0,0,5,0,0,0,65,64,0,0,28,64,0,1,5,0,0,0,65,-128,0,0,28,64,0,1,30,0,-128,0,3,0,0,0,4,8,0,0,0,114,101,113,117,105,114,101,0,4,20,0,0,0,119,97,120,46,108,117,97,115,112,101,99,46,108,117,97,115,112,101,99,0,4,20,0,0,0,119,97,120,46,108,117,97,115,112,101,99,46,108,117,97,109,111,99,107,0,0,0,0,0,7,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,108,117,97,115,112,101,99,47,108,117,97,109,111,99,107,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,42,0,0,0,10,-128,0,0,74,0,0,0,9,64,-128,-128,74,0,0,0,9,64,0,-127,7,0,0,0,5,-64,0,0,69,0,0,0,70,64,-64,0,-118,64,0,0,-119,64,65,-126,28,64,-128,1,5,-64,0,0,69,0,0,0,70,-128,-64,0,-118,64,0,0,-119,64,65,-126,28,64,-128,1,5,0,0,0,100,0,0,0,9,64,0,-125,5,0,0,0,100,64,0,0,9,64,-128,-125,5,0,0,0,100,-128,0,0,9,64,0,-124,5,0,0,0,100,-64,0,0,9,64,-128,-124,5,-128,2,0,26,64,0,0,22,0,0,-128,10,0,0,0,7,-128,2,0,5,-128,2,0,100,0,1,0,9,64,-128,-123,5,-128,2,0,100,64,1,0,9,64,0,-122,30,0,-128,0,13,0,0,0,4,5,0,0,0,77,111,99,107,0,4,6,0,0,0,99,97,108,108,115,0,4,14,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,7,0,0,0,95,95,109,111,100,101,0,4,2,0,0,0,107,0,4,7,0,0,0,95,95,99,97,108,108,0,4,8,0,0,0,95,95,105,110,100,101,120,0,4,4,0,0,0,110,101,119,0,4,8,0,0,0,114,101,116,117,114,110,115,0,4,9,0,0,0,109,97,116,99,104,101,114,115,0,4,11,0,0,0,119,97,115,95,99,97,108,108,101,100,0,4,16,0,0,0,119,97,115,95,99,97,108,108,101,100,95,119,105,116,104,0,6,0,0,0,0,0,0,0,10,0,0,0,20,0,0,0,0,1,3,6,33,0,0,0,-123,0,0,0,-122,64,64,1,-59,0,0,0,-58,64,-64,1,-58,0,-128,1,-38,64,0,0,22,0,0,-128,-54,0,0,0,-119,-64,0,0,-123,0,0,0,-122,64,64,1,-122,0,0,1,-44,0,0,1,-52,-128,-64,1,10,1,0,0,101,1,0,0,34,65,0,0,-119,0,-127,1,-59,0,0,0,-58,-64,-64,1,-58,0,-128,1,-38,0,0,0,22,0,2,-128,20,1,0,1,6,1,-127,1,26,1,0,0,22,0,1,-128,5,1,1,0,84,1,0,1,70,65,-127,1,29,1,0,1,30,1,0,0,30,0,-128,0,5,0,0,0,4,5,0,0,0,77,111,99,107,0,4,6,0,0,0,99,97,108,108,115,0,3,0,0,0,0,0,0,-16,63,4,14,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,4,7,0,0,0,117,110,112,97,99,107,0,0,0,0,0,33,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,20,0,0,0,4,0,0,0,5,0,0,0,109,111,99,107,0,0,0,0,0,32,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,32,0,0,0,6,0,0,0,99,97,108,108,115,0,12,0,0,0,32,0,0,0,14,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,21,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,26,0,0,0,0,2,0,7,10,0,0,0,-123,0,0,0,-117,64,64,1,-100,-128,0,1,-59,-128,0,0,0,1,0,0,64,1,-128,0,-128,1,0,1,-36,64,0,2,-98,0,0,1,30,0,-128,0,3,0,0,0,4,5,0,0,0,77,111,99,107,0,4,4,0,0,0,110,101,119,0,4,7,0,0,0,114,97,119,115,101,116,0,0,0,0,0,10,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,3,0,0,0,5,0,0,0,109,111,99,107,0,0,0,0,0,9,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,9,0,0,0,9,0,0,0,110,101,119,95,109,111,99,107,0,3,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,32,0,0,0,0,1,0,5,11,0,0,0,74,-128,0,0,-122,0,64,0,73,-128,0,-128,-122,0,64,0,73,-128,-128,-128,-123,-128,0,0,-64,0,-128,0,0,1,0,0,-100,64,-128,1,94,0,0,1,30,0,-128,0,3,0,0,0,4,8,0,0,0,114,101,116,117,114,110,115,0,4,13,0,0,0,116,104,101,110,95,114,101,116,117,114,110,115,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,0,11,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,2,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,10,0,0,0,5,0,0,0,109,111,99,107,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,42,0,0,0,0,1,3,6,27,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,-59,64,0,0,87,-64,0,1,22,-64,0,-128,-123,-128,0,0,-63,-64,0,0,1,1,1,0,-100,64,-128,1,-123,64,0,0,-122,64,65,1,-122,0,0,1,-102,64,0,0,22,0,0,-128,-118,0,0,0,-44,0,0,1,-52,-128,-63,1,10,1,0,0,101,1,0,0,34,65,0,0,-119,0,-127,1,-59,64,0,0,-58,64,-63,1,-55,-128,0,0,30,0,0,1,30,0,-128,0,7,0,0,0,4,13,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,77,111,99,107,0,4,6,0,0,0,101,114,114,111,114,0,4,39,0,0,0,114,101,116,117,114,110,115,32,109,117,115,116,32,98,101,32,99,97,108,108,101,100,32,119,105,116,104,32,58,32,111,112,101,114,97,116,111,114,0,3,0,0,0,0,0,0,0,64,4,14,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,3,0,0,0,0,0,0,-16,63,0,0,0,0,27,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,3,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,26,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,26,0,0,0,14,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,16,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,57,0,0,0,0,2,0,8,30,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,-59,64,0,0,87,-64,0,1,22,-128,0,-128,-126,0,0,0,-63,-128,0,0,-98,0,-128,1,-123,64,0,0,-122,-64,64,1,-122,0,0,1,-102,64,0,0,22,0,0,-128,-118,0,0,0,-44,0,0,1,87,64,-128,1,22,0,2,-128,-62,0,0,0,1,1,1,0,69,65,1,0,-128,1,-128,0,92,-127,0,1,-127,-127,1,0,-44,1,0,1,21,-63,1,2,-34,0,-128,1,-62,0,-128,0,-34,0,0,1,30,0,-128,0,7,0,0,0,4,13,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,77,111,99,107,0,4,22,0,0,0,116,97,114,103,101,116,32,109,117,115,116,32,98,101,32,97,32,77,111,99,107,0,4,6,0,0,0,99,97,108,108,115,0,4,11,0,0,0,101,120,112,101,99,116,105,110,103,32,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,18,0,0,0,32,99,97,108,108,115,44,32,97,99,116,117,97,108,108,121,32,0,0,0,0,0,30,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,56,0,0,0,56,0,0,0,57,0,0,0,3,0,0,0,7,0,0,0,116,97,114,103,101,116,0,0,0,0,0,29,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,29,0,0,0,6,0,0,0,99,97,108,108,115,0,15,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,59,0,0,0,84,0,0,0,0,1,3,17,72,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,-59,64,0,0,87,-64,0,1,22,-128,0,-128,-126,0,0,0,-63,-128,0,0,-98,0,-128,1,-123,64,0,0,-122,-64,64,1,-122,0,0,1,-102,64,0,0,22,0,0,-128,-118,0,0,0,-44,0,0,1,87,0,-63,1,22,0,2,-128,-62,0,0,0,1,65,1,0,69,-127,1,0,-127,1,1,0,92,-127,0,1,-127,-63,1,0,-44,1,0,1,21,-63,1,2,-34,0,-128,1,-58,0,65,1,-38,64,0,0,22,0,0,-128,-54,0,0,0,10,1,0,0,101,1,0,0,34,65,0,0,84,1,0,2,-108,1,-128,1,87,-128,-127,2,22,-128,1,-128,66,1,0,0,-127,65,1,0,-44,1,0,2,1,2,2,0,84,2,-128,1,-107,65,2,3,94,1,-128,1,65,1,1,0,-108,1,0,2,-63,1,1,0,96,-127,4,-128,70,2,2,2,-122,2,-126,1,87,-128,-126,4,22,-128,3,-128,66,2,0,0,-127,66,2,0,-59,-126,1,0,0,3,0,4,-36,-126,0,1,1,-125,2,0,69,-125,1,0,-122,3,2,2,92,-125,0,1,-127,-61,2,0,-59,-125,1,0,6,4,-126,1,-36,-125,0,1,-107,-62,3,5,94,2,-128,1,95,-63,-6,127,66,1,-128,0,94,1,0,1,30,0,-128,0,12,0,0,0,4,13,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,77,111,99,107,0,4,22,0,0,0,116,97,114,103,101,116,32,109,117,115,116,32,98,101,32,97,32,77,111,99,107,0,4,6,0,0,0,99,97,108,108,115,0,3,0,0,0,0,0,0,-16,63,4,11,0,0,0,101,120,112,101,99,116,105,110,103,32,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,17,0,0,0,32,99,97,108,108,44,32,97,99,116,117,97,108,108,121,32,0,4,23,0,0,0,32,112,97,114,97,109,101,116,101,114,115,44,32,97,99,116,117,97,108,108,121,32,0,4,22,0,0,0,101,120,112,101,99,116,105,110,103,32,112,97,114,97,109,101,116,101,114,32,35,0,4,8,0,0,0,32,116,111,32,98,101,32,0,4,11,0,0,0,32,97,99,116,117,97,108,108,121,32,0,0,0,0,0,72,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,66,0,0,0,66,0,0,0,66,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,78,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,9,0,0,0,7,0,0,0,116,97,114,103,101,116,0,0,0,0,0,71,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,71,0,0,0,6,0,0,0,99,97,108,108,115,0,15,0,0,0,71,0,0,0,7,0,0,0,112,97,114,97,109,115,0,31,0,0,0,71,0,0,0,5,0,0,0,97,114,103,115,0,34,0,0,0,71,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,48,0,0,0,69,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,48,0,0,0,69,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,48,0,0,0,69,0,0,0,2,0,0,0,105,0,49,0,0,0,68,0,0,0,0,0,0,0,42,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,20,0,0,0,10,0,0,0,22,0,0,0,26,0,0,0,22,0,0,0,28,0,0,0,32,0,0,0,28,0,0,0,34,0,0,0,42,0,0,0,34,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,46,0,0,0,57,0,0,0,46,0,0,0,59,0,0,0,84,0,0,0,59,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,108,117,97,115,112,101,99,47,108,117,97,115,112,101,99,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,7,100,0,0,0,10,64,1,0,74,0,0,0,9,64,-128,-128,9,-64,64,-127,9,-64,64,-126,9,-64,-64,-126,9,-64,65,-125,7,0,0,0,10,0,0,0,7,0,2,0,5,0,2,0,69,0,2,0,9,64,-128,-124,5,0,2,0,100,0,0,0,9,64,0,-123,5,0,0,0,100,64,0,0,9,64,-128,-123,5,0,0,0,100,-128,0,0,9,64,0,-122,5,0,0,0,100,-64,0,0,9,64,-128,-122,5,0,0,0,100,0,1,0,9,64,0,-121,5,0,0,0,100,64,1,0,9,64,-128,-121,10,0,0,0,100,-128,1,0,9,64,0,-120,100,-64,1,0,9,64,-128,-124,100,0,2,0,0,0,0,0,9,64,-128,-120,69,-128,4,0,-128,0,0,0,-64,0,0,0,92,64,-128,1,74,64,2,0,-92,64,2,0,73,-128,0,-118,-92,-128,2,0,73,-128,-128,-118,-92,-64,2,0,73,-128,0,-117,-92,0,3,0,73,-128,-128,-117,-92,64,3,0,73,-128,0,-116,-92,-128,3,0,73,-128,-128,-116,-92,-64,3,0,73,-128,0,-115,-92,0,4,0,73,-128,-128,-115,-92,64,4,0,73,-128,0,-114,71,-64,4,0,69,-64,4,0,-123,-64,4,0,-122,0,69,1,73,-128,-128,-114,100,-128,4,0,-118,0,0,0,-121,-128,7,0,-123,-128,7,0,-59,-128,7,0,-119,-64,-128,-124,-123,-128,7,0,-28,-64,4,0,-119,-64,0,-123,-123,-128,7,0,-28,0,5,0,-119,-64,-128,-113,-123,-128,7,0,-28,64,5,0,-119,-64,0,-112,-123,-128,7,0,-28,-128,5,0,0,0,0,0,0,0,-128,0,-119,-64,-128,-112,-92,-64,5,0,-61,0,-128,1,36,1,6,0,0,0,0,1,0,0,-128,1,0,0,0,0,-28,64,6,0,0,0,0,2,64,1,-128,1,-126,1,-128,0,92,-127,0,1,71,-127,8,0,30,0,-128,0,35,0,0,0,4,5,0,0,0,115,112,101,99,0,4,9,0,0,0,99,111,110,116,101,120,116,115,0,4,7,0,0,0,112,97,115,115,101,100,0,3,0,0,0,0,0,0,0,0,4,7,0,0,0,102,97,105,108,101,100,0,4,8,0,0,0,112,101,110,100,105,110,103,0,4,8,0,0,0,99,117,114,114,101,110,116,0,0,4,7,0,0,0,82,101,112,111,114,116,0,4,8,0,0,0,95,95,105,110,100,101,120,0,4,4,0,0,0,110,101,119,0,4,7,0,0,0,114,101,112,111,114,116,0,4,12,0,0,0,97,100,100,95,114,101,115,117,108,116,115,0,4,12,0,0,0,97,100,100,95,99,111,110,116,101,120,116,0,4,9,0,0,0,97,100,100,95,115,112,101,99,0,4,17,0,0,0,97,100,100,95,112,101,110,100,105,110,103,95,115,112,101,99,0,4,11,0,0,0,95,95,110,101,119,105,110,100,101,120,0,4,7,0,0,0,95,95,99,97,108,108,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,9,0,0,0,109,97,116,99,104,101,114,115,0,4,10,0,0,0,115,104,111,117,108,100,95,98,101,0,4,14,0,0,0,115,104,111,117,108,100,95,110,111,116,95,98,101,0,4,23,0,0,0,115,104,111,117,108,100,95,98,101,95,103,114,101,97,116,101,114,95,116,104,97,110,0,4,20,0,0,0,115,104,111,117,108,100,95,98,101,95,108,101,115,115,95,116,104,97,110,0,4,13,0,0,0,115,104,111,117,108,100,95,101,114,114,111,114,0,4,13,0,0,0,115,104,111,117,108,100,95,109,97,116,99,104,0,4,18,0,0,0,115,104,111,117,108,100,95,98,101,95,107,105,110,100,95,111,102,0,4,13,0,0,0,115,104,111,117,108,100,95,101,120,105,115,116,0,4,17,0,0,0,115,104,111,117,108,100,95,110,111,116,95,101,120,105,115,116,0,4,13,0,0,0,115,104,111,117,108,100,95,101,113,117,97,108,0,4,8,0,0,0,67,111,110,116,101,120,116,0,4,12,0,0,0,114,117,110,95,98,101,102,111,114,101,115,0,4,11,0,0,0,114,117,110,95,97,102,116,101,114,115,0,4,4,0,0,0,114,117,110,0,4,9,0,0,0,100,101,115,99,114,105,98,101,0,26,0,0,0,0,0,0,0,8,0,0,0,29,0,0,0,0,2,0,11,36,0,0,0,-118,64,1,0,-58,64,-64,0,-119,-64,0,-128,-58,-64,-64,0,-119,-64,0,-127,-58,64,-63,0,-119,-64,0,-126,-58,64,-64,0,6,-63,-64,0,-52,0,-127,1,6,65,-63,0,-52,0,-127,1,-119,-64,0,-125,-54,0,0,0,-119,-64,-128,-125,-58,0,64,1,6,-127,65,1,-49,0,-127,1,-50,64,-62,1,-119,-64,0,-124,-58,-128,-62,0,1,-63,2,0,84,1,-128,1,-127,-63,2,0,32,-63,1,-128,6,-62,65,1,74,-126,0,0,-122,-62,-127,1,73,-126,2,-122,-122,-62,-127,1,-122,-126,-126,1,73,-126,-126,-122,9,66,-126,3,31,-127,-3,127,-98,0,0,1,30,0,-128,0,14,0,0,0,4,11,0,0,0,110,117,109,95,112,97,115,115,101,100,0,4,7,0,0,0,112,97,115,115,101,100,0,4,11,0,0,0,110,117,109,95,102,97,105,108,101,100,0,4,7,0,0,0,102,97,105,108,101,100,0,4,12,0,0,0,110,117,109,95,112,101,110,100,105,110,103,0,4,8,0,0,0,112,101,110,100,105,110,103,0,4,6,0,0,0,116,111,116,97,108,0,4,8,0,0,0,114,101,115,117,108,116,115,0,4,8,0,0,0,112,101,114,99,101,110,116,0,3,0,0,0,0,0,0,89,64,4,9,0,0,0,99,111,110,116,101,120,116,115,0,3,0,0,0,0,0,0,-16,63,4,5,0,0,0,110,97,109,101,0,4,13,0,0,0,115,112,101,99,95,114,101,115,117,108,116,115,0,0,0,0,0,36,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,14,0,0,0,14,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,19,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,21,0,0,0,28,0,0,0,29,0,0,0,8,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,35,0,0,0,5,0,0,0,115,112,101,99,0,0,0,0,0,35,0,0,0,7,0,0,0,114,101,112,111,114,116,0,15,0,0,0,35,0,0,0,9,0,0,0,99,111,110,116,101,120,116,115,0,21,0,0,0,35,0,0,0,12,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,24,0,0,0,34,0,0,0,12,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,24,0,0,0,34,0,0,0,11,0,0,0,40,102,111,114,32,115,116,101,112,41,0,24,0,0,0,34,0,0,0,6,0,0,0,105,110,100,101,120,0,25,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,62,0,0,0,0,2,0,19,72,0,0,0,-123,0,0,0,-117,64,64,1,0,1,0,0,-100,-128,-128,1,-58,-128,64,1,23,-64,-64,1,22,64,0,-128,90,0,0,0,22,64,11,-128,-59,0,1,0,6,65,65,1,-36,0,1,1,22,-64,9,-128,5,-126,1,0,65,-62,1,0,75,2,-62,4,-58,66,-62,3,92,2,-128,1,28,66,0,0,5,2,1,0,70,-126,-62,3,28,2,1,1,22,-64,6,-128,70,-61,66,6,90,3,0,0,22,-128,0,-128,65,3,3,0,90,67,0,0,22,0,0,-128,65,67,3,0,90,64,0,0,22,0,1,-128,90,0,0,0,22,-128,0,-128,-122,-61,66,6,-102,67,0,0,22,64,3,-128,-123,-125,1,0,-63,-125,3,0,-53,3,-62,7,65,-60,3,0,-128,4,-128,5,85,-124,-124,8,-128,4,-128,6,-36,3,0,2,-100,67,0,0,-123,3,4,0,-122,67,68,7,-58,-125,68,6,36,4,0,0,-100,67,-128,1,33,-126,0,0,22,64,-8,127,-31,-128,0,0,22,64,-11,127,-63,-64,4,0,5,-127,1,0,75,1,-62,1,-58,-127,64,1,23,-64,-64,3,22,-128,0,-128,-63,1,5,0,-38,65,0,0,22,0,0,-128,-63,65,5,0,6,-126,64,1,70,-126,69,1,-122,-62,69,1,-58,2,70,1,92,1,-128,3,28,65,0,0,30,0,-128,0,25,0,0,0,4,7,0,0,0,82,101,112,111,114,116,0,4,4,0,0,0,110,101,119,0,4,11,0,0,0,110,117,109,95,102,97,105,108,101,100,0,3,0,0,0,0,0,0,0,0,4,6,0,0,0,112,97,105,114,115,0,4,8,0,0,0,114,101,115,117,108,116,115,0,4,6,0,0,0,112,114,105,110,116,0,4,37,0,0,0,10,37,115,10,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,0,4,7,0,0,0,102,111,114,109,97,116,0,4,5,0,0,0,110,97,109,101,0,4,13,0,0,0,115,112,101,99,95,114,101,115,117,108,116,115,0,4,7,0,0,0,112,97,115,115,101,100,0,4,5,0,0,0,112,97,115,115,0,4,7,0,0,0,70,65,73,76,69,68,0,4,13,0,0,0,37,45,55,48,115,32,91,32,37,115,32,93,0,4,4,0,0,0,32,45,32,0,4,6,0,0,0,116,97,98,108,101,0,4,8,0,0,0,102,111,114,101,97,99,104,0,4,7,0,0,0,101,114,114,111,114,115,0,4,111,0,0,0,10,61,61,61,61,61,61,61,61,61,61,32,37,115,32,61,61,61,61,61,61,61,61,61,61,61,61,61,10,37,115,32,70,97,105,108,101,100,10,37,115,32,80,97,115,115,101,100,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,37,115,32,82,117,110,44,32,37,46,50,102,37,37,32,83,117,99,99,101,115,115,32,114,97,116,101,10,0,4,8,0,0,0,83,117,99,99,101,115,115,0,4,8,0,0,0,70,97,105,108,117,114,101,0,4,11,0,0,0,110,117,109,95,112,97,115,115,101,100,0,4,6,0,0,0,116,111,116,97,108,0,4,8,0,0,0,112,101,114,99,101,110,116,0,1,0,0,0,0,0,0,0,44,0,0,0,46,0,0,0,0,2,0,9,10,0,0,0,-123,0,0,0,-63,64,0,0,0,1,0,0,65,-127,0,0,-122,-63,-64,0,-63,1,1,0,6,66,-63,0,-43,0,-126,1,-100,64,0,1,30,0,-128,0,6,0,0,0,4,6,0,0,0,112,114,105,110,116,0,4,4,0,0,0,32,32,32,0,4,24,0,0,0,46,32,70,97,105,108,101,100,32,101,120,112,101,99,116,97,116,105,111,110,32,58,32,0,4,8,0,0,0,109,101,115,115,97,103,101,0,4,5,0,0,0,10,32,32,32,0,4,6,0,0,0,116,114,97,99,101,0,0,0,0,0,10,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,46,0,0,0,2,0,0,0,6,0,0,0,105,110,100,101,120,0,0,0,0,0,9,0,0,0,6,0,0,0,101,114,114,111,114,0,0,0,0,0,9,0,0,0,0,0,0,0,72,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,46,0,0,0,44,0,0,0,38,0,0,0,47,0,0,0,35,0,0,0,48,0,0,0,59,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,62,0,0,0,15,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,71,0,0,0,8,0,0,0,118,101,114,98,111,115,101,0,0,0,0,0,71,0,0,0,7,0,0,0,114,101,112,111,114,116,0,4,0,0,0,71,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,12,0,0,0,55,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,12,0,0,0,55,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,12,0,0,0,55,0,0,0,2,0,0,0,105,0,13,0,0,0,53,0,0,0,7,0,0,0,114,101,115,117,108,116,0,13,0,0,0,53,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,22,0,0,0,53,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,22,0,0,0,53,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,22,0,0,0,53,0,0,0,12,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,23,0,0,0,51,0,0,0,2,0,0,0,114,0,23,0,0,0,51,0,0,0,8,0,0,0,111,117,116,99,111,109,101,0,30,0,0,0,51,0,0,0,8,0,0,0,115,117,109,109,97,114,121,0,56,0,0,0,71,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,75,0,0,0,0,4,0,7,24,0,0,0,6,1,64,0,6,65,64,2,26,1,0,0,22,64,0,-128,6,1,64,0,9,65,-128,-128,90,0,0,0,22,-64,0,-128,6,65,64,0,12,-127,64,2,9,0,-127,-128,22,-128,2,-128,5,-63,0,0,6,1,65,2,70,1,64,0,70,65,-63,2,-118,-127,0,0,-119,-127,0,-125,-119,-63,-128,-125,28,65,-128,1,6,1,66,0,12,-127,64,2,9,0,1,-124,30,0,-128,0,9,0,0,0,4,8,0,0,0,99,117,114,114,101,110,116,0,4,7,0,0,0,112,97,115,115,101,100,0,3,0,0,0,0,0,0,-16,63,4,6,0,0,0,116,97,98,108,101,0,4,7,0,0,0,105,110,115,101,114,116,0,4,7,0,0,0,101,114,114,111,114,115,0,4,8,0,0,0,109,101,115,115,97,103,101,0,4,6,0,0,0,116,114,97,99,101,0,4,7,0,0,0,102,97,105,108,101,100,0,0,0,0,0,24,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,66,0,0,0,66,0,0,0,69,0,0,0,69,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,75,0,0,0,4,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,23,0,0,0,8,0,0,0,115,117,99,99,101,115,115,0,0,0,0,0,23,0,0,0,8,0,0,0,109,101,115,115,97,103,101,0,0,0,0,0,23,0,0,0,6,0,0,0,116,114,97,99,101,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,80,0,0,0,0,2,0,4,9,0,0,0,-122,0,64,0,-58,0,64,0,-44,0,-128,1,-52,64,-64,1,-119,64,-128,1,-122,0,64,0,-54,0,0,0,-119,-64,-128,0,30,0,-128,0,2,0,0,0,4,9,0,0,0,99,111,110,116,101,120,116,115,0,3,0,0,0,0,0,0,-16,63,0,0,0,0,9,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,2,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,8,0,0,0,5,0,0,0,110,97,109,101,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,86,0,0,0,0,3,0,6,10,0,0,0,-58,0,64,0,-58,64,-128,1,10,-127,0,0,9,-127,-64,-128,74,1,0,0,9,65,-127,-127,-55,0,1,1,6,-127,-128,1,9,0,1,-126,30,0,-128,0,5,0,0,0,4,9,0,0,0,99,111,110,116,101,120,116,115,0,4,7,0,0,0,112,97,115,115,101,100,0,1,1,4,7,0,0,0,101,114,114,111,114,115,0,4,8,0,0,0,99,117,114,114,101,110,116,0,0,0,0,0,10,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,85,0,0,0,85,0,0,0,86,0,0,0,4,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,9,0,0,0,13,0,0,0,99,111,110,116,101,120,116,95,110,97,109,101,0,0,0,0,0,9,0,0,0,10,0,0,0,115,112,101,99,95,110,97,109,101,0,0,0,0,0,9,0,0,0,8,0,0,0,99,111,110,116,101,120,116,0,2,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,88,0,0,0,89,0,0,0,0,4,0,4,1,0,0,0,30,0,-128,0,0,0,0,0,0,0,0,0,1,0,0,0,89,0,0,0,4,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,0,0,0,0,13,0,0,0,99,111,110,116,101,120,116,95,110,97,109,101,0,0,0,0,0,0,0,0,0,10,0,0,0,115,112,101,99,95,110,97,109,101,0,0,0,0,0,0,0,0,0,20,0,0,0,112,101,110,100,105,110,103,95,100,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,0,0,0,94,0,0,0,0,0,0,2,4,0,0,0,5,0,0,0,65,64,0,0,28,64,0,1,30,0,-128,0,2,0,0,0,4,6,0,0,0,101,114,114,111,114,0,4,36,0,0,0,89,111,117,32,99,97,110,39,116,32,115,101,116,32,112,114,111,112,101,114,116,105,101,115,32,111,110,32,112,101,110,100,105,110,103,0,0,0,0,0,4,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,102,0,0,0,0,2,0,4,9,0,0,0,23,0,-64,0,22,-128,0,-128,-125,0,0,1,-98,0,0,1,22,-128,0,-128,-123,64,0,0,-63,-128,0,0,-100,64,0,1,30,0,-128,0,3,0,0,0,4,12,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,4,6,0,0,0,101,114,114,111,114,0,4,36,0,0,0,89,111,117,32,99,97,110,39,116,32,103,101,116,32,112,114,111,112,101,114,116,105,101,115,32,111,110,32,112,101,110,100,105,110,103,0,0,0,0,0,9,0,0,0,97,0,0,0,97,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,102,0,0,0,2,0,0,0,2,0,0,0,95,0,0,0,0,0,8,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,104,0,0,0,108,0,0,0,1,2,0,6,8,0,0,0,-118,64,0,0,-119,64,0,-128,-59,64,0,0,0,1,0,1,68,1,0,0,-36,64,-128,1,-98,0,0,1,30,0,-128,0,2,0,0,0,4,12,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,0,8,0,0,0,105,0,0,0,105,0,0,0,106,0,0,0,106,0,0,0,106,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,3,0,0,0,2,0,0,0,95,0,0,0,0,0,7,0,0,0,12,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,7,0,0,0,2,0,0,0,111,0,2,0,0,0,7,0,0,0,1,0,0,0,8,0,0,0,112,101,110,100,105,110,103,0,0,0,0,0,117,0,0,0,122,0,0,0,0,2,0,8,16,0,0,0,87,64,0,0,22,-128,2,-128,-126,0,0,0,-63,0,0,0,5,65,0,0,64,1,-128,0,28,-127,0,1,65,-127,0,0,-123,65,0,0,-64,1,0,0,-100,-127,0,1,-43,-128,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,3,0,0,0,4,11,0,0,0,101,120,112,101,99,116,105,110,103,32,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,7,0,0,0,44,32,110,111,116,32,0,0,0,0,0,16,0,0,0,118,0,0,0,118,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,121,0,0,0,121,0,0,0,122,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,15,0,0,0,9,0,0,0,101,120,112,101,99,116,101,100,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,-127,0,0,0,0,2,0,6,12,0,0,0,23,64,0,0,22,-128,1,-128,-126,0,0,0,-63,0,0,0,5,65,0,0,64,1,0,0,28,-127,0,1,-43,0,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,2,0,0,0,4,15,0,0,0,115,104,111,117,108,100,32,110,111,116,32,98,101,32,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,12,0,0,0,125,0,0,0,125,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,-128,0,0,0,-128,0,0,0,-127,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,11,0,0,0,9,0,0,0,101,120,112,101,99,116,101,100,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,-125,0,0,0,-120,0,0,0,0,2,0,8,16,0,0,0,25,64,0,0,22,-128,2,-128,-126,0,0,0,-63,0,0,0,5,65,0,0,64,1,0,0,28,-127,0,1,65,-127,0,0,-123,65,0,0,-64,1,-128,0,-100,-127,0,1,-43,-128,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,3,0,0,0,4,5,0,0,0,103,111,116,32,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,20,0,0,0,32,101,120,112,101,99,116,105,110,103,32,118,97,108,117,101,32,62,32,0,0,0,0,0,16,0,0,0,-124,0,0,0,-124,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-121,0,0,0,-121,0,0,0,-120,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,15,0,0,0,9,0,0,0,101,120,112,101,99,116,101,100,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,-118,0,0,0,-113,0,0,0,0,2,0,8,16,0,0,0,25,0,-128,0,22,-128,2,-128,-126,0,0,0,-63,0,0,0,5,65,0,0,64,1,0,0,28,-127,0,1,65,-127,0,0,-123,65,0,0,-64,1,-128,0,-100,-127,0,1,-43,-128,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,3,0,0,0,4,5,0,0,0,103,111,116,32,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,20,0,0,0,32,101,120,112,101,99,116,105,110,103,32,118,97,108,117,101,32,60,32,0,0,0,0,0,16,0,0,0,-117,0,0,0,-117,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-114,0,0,0,-114,0,0,0,-113,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,15,0,0,0,9,0,0,0,101,120,112,101,99,116,101,100,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,-111,0,0,0,-106,0,0,0,0,1,0,3,11,0,0,0,69,0,0,0,-128,0,0,0,92,-128,0,1,90,0,0,0,22,-128,0,-128,66,0,0,0,-127,64,0,0,94,0,-128,1,66,0,-128,0,94,0,0,1,30,0,-128,0,2,0,0,0,4,6,0,0,0,112,99,97,108,108,0,4,37,0,0,0,101,120,112,101,99,116,105,110,103,32,97,110,32,101,114,114,111,114,32,98,117,116,32,114,101,99,101,105,118,101,100,32,110,111,110,101,0,0,0,0,0,11,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-107,0,0,0,-107,0,0,0,-106,0,0,0,1,0,0,0,2,0,0,0,102,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,-104,0,0,0,-95,0,0,0,0,2,0,6,24,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,87,64,64,1,22,-128,0,-128,-126,0,0,0,-63,-128,0,0,-98,0,-128,1,-123,64,0,0,-122,-64,64,1,-64,0,0,0,0,1,-128,0,-100,-128,-128,1,-102,64,0,0,22,64,1,-128,-126,0,0,0,-64,0,0,0,1,1,1,0,64,1,-128,0,-43,64,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,5,0,0,0,4,5,0,0,0,116,121,112,101,0,4,7,0,0,0,115,116,114,105,110,103,0,4,52,0,0,0,116,121,112,101,32,101,114,114,111,114,44,32,115,104,111,117,108,100,95,109,97,116,99,104,32,101,120,112,101,99,116,105,110,103,32,116,97,114,103,101,116,32,97,115,32,115,116,114,105,110,103,0,4,6,0,0,0,109,97,116,99,104,0,4,23,0,0,0,100,111,101,115,110,39,116,32,109,97,116,99,104,32,112,97,116,116,101,114,110,32,0,0,0,0,0,24,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-102,0,0,0,-102,0,0,0,-102,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-96,0,0,0,-96,0,0,0,-95,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,23,0,0,0,8,0,0,0,112,97,116,116,101,114,110,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,-93,0,0,0,-82,0,0,0,0,2,0,7,39,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,23,64,64,1,22,-64,3,-128,-117,-128,64,0,0,1,-128,0,-100,-128,-128,1,-102,64,0,0,22,64,6,-128,-126,0,0,0,-59,-64,0,0,0,1,0,0,-36,-128,0,1,1,1,1,0,69,-63,0,0,-128,1,-128,0,92,-127,0,1,-43,64,-127,1,-98,0,-128,1,22,-128,3,-128,-123,0,0,0,-64,0,0,0,-100,-128,0,1,87,64,0,1,22,64,2,-128,-126,0,0,0,-59,0,0,0,0,1,0,0,-36,-128,0,1,1,1,1,0,69,-63,0,0,-128,1,-128,0,92,-127,0,1,-43,64,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,5,0,0,0,4,5,0,0,0,116,121,112,101,0,4,9,0,0,0,117,115,101,114,100,97,116,97,0,4,14,0,0,0,105,115,75,105,110,100,79,102,67,108,97,115,115,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,11,0,0,0,32,105,115,32,110,111,116,32,97,32,0,0,0,0,0,39,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-90,0,0,0,-90,0,0,0,-90,0,0,0,-90,0,0,0,-90,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-88,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-83,0,0,0,-83,0,0,0,-82,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,38,0,0,0,6,0,0,0,99,108,97,115,115,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,-80,0,0,0,-74,0,0,0,0,1,0,4,13,0,0,0,26,64,0,0,22,-64,1,-128,66,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,-63,64,0,0,-107,-64,0,1,94,0,-128,1,22,64,0,-128,66,0,-128,0,94,0,0,1,30,0,-128,0,2,0,0,0,4,9,0,0,0,116,111,115,116,114,105,110,103,0,4,21,0,0,0,32,101,118,97,108,117,97,116,101,115,32,116,111,32,102,97,108,115,101,46,0,0,0,0,0,13,0,0,0,-79,0,0,0,-79,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-76,0,0,0,-76,0,0,0,-74,0,0,0,1,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,-72,0,0,0,-66,0,0,0,0,1,0,4,11,0,0,0,26,0,0,0,22,64,1,-128,66,0,0,0,-128,0,0,0,-63,0,0,0,-107,-64,0,1,94,0,-128,1,22,64,0,-128,66,0,-128,0,94,0,0,1,30,0,-128,0,1,0,0,0,4,20,0,0,0,32,101,118,97,108,117,97,116,101,115,32,116,111,32,116,114,117,101,46,0,0,0,0,0,11,0,0,0,-71,0,0,0,-71,0,0,0,-70,0,0,0,-70,0,0,0,-70,0,0,0,-70,0,0,0,-70,0,0,0,-70,0,0,0,-68,0,0,0,-68,0,0,0,-66,0,0,0,1,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,-56,0,0,0,-47,0,0,0,0,1,0,5,9,0,0,0,69,0,0,0,-118,0,0,0,-54,64,0,0,36,1,0,0,0,0,0,0,-55,0,-127,-128,93,0,-128,1,94,0,0,0,30,0,-128,0,2,0,0,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,8,0,0,0,95,95,105,110,100,101,120,0,1,0,0,0,0,0,0,0,-54,0,0,0,-49,0,0,0,1,2,0,3,5,0,0,0,-92,0,0,0,0,0,-128,0,4,0,0,0,-98,0,0,1,30,0,-128,0,0,0,0,0,1,0,0,0,0,0,0,0,-53,0,0,0,-50,0,0,0,2,0,3,8,15,0,0,0,69,0,0,0,-124,0,0,0,70,-128,-128,0,-124,0,-128,0,-27,0,0,0,92,-64,0,0,-59,64,0,0,-53,-128,-64,1,64,1,-128,0,-128,1,0,1,-59,-63,0,0,-58,1,-63,3,-36,1,-128,0,-36,64,0,0,30,0,-128,0,5,0,0,0,4,9,0,0,0,109,97,116,99,104,101,114,115,0,4,5,0,0,0,115,112,101,99,0,4,12,0,0,0,97,100,100,95,114,101,115,117,108,116,115,0,4,6,0,0,0,100,101,98,117,103,0,4,10,0,0,0,116,114,97,99,101,98,97,99,107,0,0,0,0,0,15,0,0,0,-52,0,0,0,-52,0,0,0,-52,0,0,0,-52,0,0,0,-52,0,0,0,-52,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-50,0,0,0,3,0,0,0,4,0,0,0,97,114,103,0,0,0,0,0,14,0,0,0,8,0,0,0,115,117,99,99,101,115,115,0,6,0,0,0,14,0,0,0,8,0,0,0,109,101,115,115,97,103,101,0,6,0,0,0,14,0,0,0,2,0,0,0,8,0,0,0,109,97,116,99,104,101,114,0,7,0,0,0,116,97,114,103,101,116,0,5,0,0,0,-50,0,0,0,-50,0,0,0,-50,0,0,0,-50,0,0,0,-49,0,0,0,2,0,0,0,2,0,0,0,95,0,0,0,0,0,4,0,0,0,8,0,0,0,109,97,116,99,104,101,114,0,0,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,116,97,114,103,101,116,0,9,0,0,0,-55,0,0,0,-55,0,0,0,-55,0,0,0,-49,0,0,0,-49,0,0,0,-49,0,0,0,-55,0,0,0,-48,0,0,0,-47,0,0,0,1,0,0,0,7,0,0,0,116,97,114,103,101,116,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,-39,0,0,0,-34,0,0,0,0,2,0,8,13,0,0,0,-123,0,0,0,-58,64,-64,0,-100,0,1,1,22,0,0,-128,-119,65,0,-127,-95,-128,0,0,22,0,-1,127,-123,-64,0,0,-64,0,-128,0,0,1,0,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,4,0,0,0,4,7,0,0,0,105,112,97,105,114,115,0,4,9,0,0,0,99,104,105,108,100,114,101,110,0,4,7,0,0,0,112,97,114,101,110,116,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,0,13,0,0,0,-38,0,0,0,-38,0,0,0,-38,0,0,0,-38,0,0,0,-37,0,0,0,-38,0,0,0,-37,0,0,0,-35,0,0,0,-35,0,0,0,-35,0,0,0,-35,0,0,0,-35,0,0,0,-34,0,0,0,7,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,12,0,0,0,8,0,0,0,99,111,110,116,101,120,116,0,0,0,0,0,12,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,7,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,7,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,7,0,0,0,2,0,0,0,105,0,4,0,0,0,5,0,0,0,6,0,0,0,99,104,105,108,100,0,4,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,-32,0,0,0,-24,0,0,0,0,2,0,5,17,0,0,0,-122,0,64,0,-102,0,0,0,22,-64,0,-128,-122,0,64,0,-117,64,64,1,0,1,-128,0,-100,64,-128,1,-122,-128,64,0,-102,0,0,0,22,64,1,-128,-123,-64,0,0,-58,-128,64,0,0,1,-128,0,-100,64,-128,1,-122,-128,64,0,-100,64,-128,0,30,0,-128,0,4,0,0,0,4,7,0,0,0,112,97,114,101,110,116,0,4,12,0,0,0,114,117,110,95,98,101,102,111,114,101,115,0,4,7,0,0,0,98,101,102,111,114,101,0,4,8,0,0,0,115,101,116,102,101,110,118,0,0,0,0,0,17,0,0,0,-31,0,0,0,-31,0,0,0,-31,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-28,0,0,0,-28,0,0,0,-28,0,0,0,-27,0,0,0,-27,0,0,0,-27,0,0,0,-27,0,0,0,-26,0,0,0,-26,0,0,0,-24,0,0,0,2,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,16,0,0,0,4,0,0,0,101,110,118,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,-22,0,0,0,-14,0,0,0,0,2,0,5,17,0,0,0,-122,0,64,0,-102,0,0,0,22,64,1,-128,-123,64,0,0,-58,0,64,0,0,1,-128,0,-100,64,-128,1,-122,0,64,0,-100,64,-128,0,-122,-128,64,0,-102,0,0,0,22,-64,0,-128,-122,-128,64,0,-117,-64,64,1,0,1,-128,0,-100,64,-128,1,30,0,-128,0,4,0,0,0,4,6,0,0,0,97,102,116,101,114,0,4,8,0,0,0,115,101,116,102,101,110,118,0,4,7,0,0,0,112,97,114,101,110,116,0,4,11,0,0,0,114,117,110,95,97,102,116,101,114,115,0,0,0,0,0,17,0,0,0,-21,0,0,0,-21,0,0,0,-21,0,0,0,-20,0,0,0,-20,0,0,0,-20,0,0,0,-20,0,0,0,-19,0,0,0,-19,0,0,0,-17,0,0,0,-17,0,0,0,-17,0,0,0,-16,0,0,0,-16,0,0,0,-16,0,0,0,-16,0,0,0,-14,0,0,0,2,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,16,0,0,0,4,0,0,0,101,110,118,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,-12,0,0,0,45,1,0,0,2,1,0,18,89,0,0,0,69,0,0,0,-122,64,64,0,92,0,1,1,22,64,18,-128,-123,-127,0,0,-64,1,-128,2,-100,-127,0,1,-60,1,0,0,23,-64,1,3,22,0,0,-128,22,-128,16,-128,-123,-63,0,0,-117,1,65,3,6,66,65,0,64,2,0,2,-100,65,0,2,-118,1,0,0,-54,-63,0,0,36,2,0,0,-55,1,2,-125,4,2,-128,0,-55,1,-126,-125,36,66,0,0,0,0,0,3,-55,1,2,-124,5,66,2,0,64,2,-128,3,-118,66,0,0,-59,-62,2,0,-119,-62,2,-123,28,66,-128,1,11,2,67,0,-128,2,-128,3,28,66,-128,1,5,66,3,0,64,2,-128,2,-128,2,-128,3,28,66,-128,1,3,2,-128,4,-123,-126,3,0,-64,2,-128,2,36,-125,0,0,0,0,0,4,0,0,-128,4,-100,-126,-128,1,-53,-62,67,0,64,3,-128,3,-36,66,-128,1,-102,66,0,0,22,-128,2,-128,-59,2,4,0,-58,66,-60,5,1,-125,4,0,-36,66,0,1,-59,-62,0,0,-53,-62,-60,5,66,3,0,0,-128,3,0,4,-64,3,-128,4,-36,66,-128,2,22,-64,0,-128,-59,2,4,0,-58,66,-60,5,1,3,5,0,-36,66,0,1,-59,2,4,0,-58,66,-59,5,-36,66,-128,0,-59,2,0,0,0,3,0,3,-36,2,1,1,22,-128,0,-128,6,-124,69,7,70,-60,69,7,9,-60,-125,8,-31,-126,0,0,22,-128,-2,127,-93,1,0,0,97,-128,0,0,22,-64,-20,127,69,0,0,0,-122,0,70,0,92,0,1,1,22,64,0,-128,-117,65,-58,2,-100,65,0,1,97,-128,0,0,22,-64,-2,127,30,0,-128,0,26,0,0,0,4,6,0,0,0,112,97,105,114,115,0,4,6,0,0,0,115,112,101,99,115,0,4,13,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,115,112,101,99,0,4,9,0,0,0,97,100,100,95,115,112,101,99,0,4,5,0,0,0,110,97,109,101,0,4,12,0,0,0,116,114,97,99,107,95,101,114,114,111,114,0,4,7,0,0,0,101,120,112,101,99,116,0,4,5,0,0,0,109,111,99,107,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,8,0,0,0,95,95,105,110,100,101,120,0,4,3,0,0,0,95,71,0,4,12,0,0,0,114,117,110,95,98,101,102,111,114,101,115,0,4,8,0,0,0,115,101,116,102,101,110,118,0,4,7,0,0,0,120,112,99,97,108,108,0,4,11,0,0,0,114,117,110,95,97,102,116,101,114,115,0,4,3,0,0,0,105,111,0,4,6,0,0,0,119,114,105,116,101,0,4,2,0,0,0,120,0,4,12,0,0,0,97,100,100,95,114,101,115,117,108,116,115,0,4,2,0,0,0,46,0,4,6,0,0,0,102,108,117,115,104,0,4,6,0,0,0,116,97,98,108,101,0,4,4,0,0,0,107,101,121,0,4,9,0,0,0,99,104,105,108,100,114,101,110,0,4,4,0,0,0,114,117,110,0,3,0,0,0,0,0,0,0,-1,0,0,0,2,1,0,0,0,1,0,3,5,0,0,0,69,0,0,0,-128,0,0,0,92,-64,0,1,-98,0,0,1,30,0,-128,0,1,0,0,0,4,6,0,0,0,112,99,97,108,108,0,0,0,0,0,5,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,0,0,2,1,0,0,3,0,0,0,2,0,0,0,102,0,0,0,0,0,4,0,0,0,7,0,0,0,115,116,97,116,117,115,0,3,0,0,0,4,0,0,0,4,0,0,0,101,114,114,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,10,1,0,0,1,3,0,6,15,0,0,0,-60,0,0,0,10,-127,0,0,9,1,0,-128,9,65,-128,-128,70,65,0,0,-55,64,1,2,-37,64,0,1,22,-128,0,-128,-59,-128,0,0,-53,-64,-64,1,-36,-128,0,1,9,-64,-128,0,-58,64,0,0,-34,0,0,1,30,0,-128,0,4,0,0,0,4,6,0,0,0,116,97,98,108,101,0,4,4,0,0,0,107,101,121,0,4,5,0,0,0,77,111,99,107,0,4,4,0,0,0,110,101,119,0,0,0,0,0,15,0,0,0,7,1,0,0,7,1,0,0,7,1,0,0,7,1,0,0,7,1,0,0,7,1,0,0,8,1,0,0,8,1,0,0,8,1,0,0,8,1,0,0,8,1,0,0,8,1,0,0,9,1,0,0,9,1,0,0,10,1,0,0,3,0,0,0,6,0,0,0,116,97,98,108,101,0,0,0,0,0,14,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,14,0,0,0,11,0,0,0,109,111,99,107,95,118,97,108,117,101,0,0,0,0,0,14,0,0,0,1,0,0,0,6,0,0,0,109,111,99,107,115,0,0,0,0,0,20,1,0,0,23,1,0,0,2,1,0,4,8,0,0,0,8,0,0,0,69,0,0,0,70,64,-64,0,-127,-128,0,0,-63,-64,0,0,92,-128,-128,1,72,0,-128,0,30,0,-128,0,4,0,0,0,4,6,0,0,0,100,101,98,117,103,0,4,10,0,0,0,116,114,97,99,101,98,97,99,107,0,4,1,0,0,0,0,3,0,0,0,0,0,0,0,64,0,0,0,0,8,0,0,0,21,1,0,0,22,1,0,0,22,1,0,0,22,1,0,0,22,1,0,0,22,1,0,0,22,1,0,0,23,1,0,0,1,0,0,0,4,0,0,0,101,114,114,0,0,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,109,101,115,115,97,103,101,0,10,0,0,0,116,114,97,99,101,98,97,99,107,0,89,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-7,0,0,0,-7,0,0,0,-7,0,0,0,-7,0,0,0,-7,0,0,0,-5,0,0,0,-2,0,0,0,2,1,0,0,2,1,0,0,4,1,0,0,4,1,0,0,10,1,0,0,10,1,0,0,10,1,0,0,12,1,0,0,12,1,0,0,12,1,0,0,12,1,0,0,12,1,0,0,12,1,0,0,15,1,0,0,15,1,0,0,15,1,0,0,17,1,0,0,17,1,0,0,17,1,0,0,17,1,0,0,18,1,0,0,20,1,0,0,20,1,0,0,23,1,0,0,23,1,0,0,23,1,0,0,20,1,0,0,25,1,0,0,25,1,0,0,25,1,0,0,27,1,0,0,27,1,0,0,28,1,0,0,28,1,0,0,28,1,0,0,28,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,31,1,0,0,31,1,0,0,31,1,0,0,31,1,0,0,33,1,0,0,33,1,0,0,33,1,0,0,36,1,0,0,36,1,0,0,36,1,0,0,36,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,36,1,0,0,37,1,0,0,38,1,0,0,-10,0,0,0,39,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,43,1,0,0,43,1,0,0,42,1,0,0,43,1,0,0,45,1,0,0,21,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,88,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,80,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,80,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,80,0,0,0,10,0,0,0,115,112,101,99,95,110,97,109,101,0,4,0,0,0,78,0,0,0,10,0,0,0,115,112,101,99,95,102,117,110,99,0,4,0,0,0,78,0,0,0,6,0,0,0,109,111,99,107,115,0,17,0,0,0,77,0,0,0,4,0,0,0,101,110,118,0,25,0,0,0,77,0,0,0,8,0,0,0,109,101,115,115,97,103,101,0,39,0,0,0,77,0,0,0,10,0,0,0,116,114,97,99,101,98,97,99,107,0,39,0,0,0,77,0,0,0,8,0,0,0,115,117,99,99,101,115,115,0,45,0,0,0,77,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,71,0,0,0,77,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,71,0,0,0,77,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,71,0,0,0,77,0,0,0,4,0,0,0,107,101,121,0,72,0,0,0,75,0,0,0,10,0,0,0,111,108,100,95,118,97,108,117,101,0,72,0,0,0,75,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,83,0,0,0,88,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,83,0,0,0,88,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,83,0,0,0,88,0,0,0,2,0,0,0,105,0,84,0,0,0,86,0,0,0,6,0,0,0,99,104,105,108,100,0,84,0,0,0,86,0,0,0,2,0,0,0,8,0,0,0,112,101,110,100,105,110,103,0,7,0,0,0,101,120,112,101,99,116,0,0,0,0,0,49,1,0,0,61,1,0,0,0,0,0,6,13,0,0,0,10,0,0,0,74,0,0,0,-123,0,0,0,-64,0,-128,0,10,65,0,0,100,1,0,0,0,0,0,0,9,65,-127,-128,-100,64,-128,1,-128,0,-128,0,-64,0,0,0,-98,0,-128,1,30,0,-128,0,2,0,0,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,11,0,0,0,95,95,110,101,119,105,110,100,101,120,0,1,0,0,0,0,0,0,0,55,1,0,0,57,1,0,0,1,3,0,4,3,0,0,0,-60,0,0,0,-55,-128,-128,0,30,0,-128,0,0,0,0,0,0,0,0,0,3,0,0,0,56,1,0,0,56,1,0,0,57,1,0,0,3,0,0,0,2,0,0,0,95,0,0,0,0,0,2,0,0,0,10,0,0,0,115,112,101,99,95,110,97,109,101,0,0,0,0,0,2,0,0,0,14,0,0,0,115,112,101,99,95,102,117,110,99,116,105,111,110,0,0,0,0,0,2,0,0,0,1,0,0,0,6,0,0,0,115,112,101,99,115,0,13,0,0,0,51,1,0,0,52,1,0,0,53,1,0,0,53,1,0,0,53,1,0,0,57,1,0,0,57,1,0,0,57,1,0,0,53,1,0,0,60,1,0,0,60,1,0,0,60,1,0,0,61,1,0,0,2,0,0,0,6,0,0,0,115,112,101,99,115,0,1,0,0,0,12,0,0,0,3,0,0,0,105,116,0,2,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,67,1,0,0,79,1,0,0,3,0,0,8,14,0,0,0,4,0,0,0,28,-64,-128,0,-124,0,-128,0,-100,-64,-128,0,10,-63,0,0,9,1,0,-128,9,-127,-128,-128,68,1,0,1,9,65,1,-127,64,1,0,2,-128,1,-128,1,-64,1,-128,0,94,1,0,2,30,0,-128,0,3,0,0,0,4,3,0,0,0,105,116,0,4,9,0,0,0,100,101,115,99,114,105,98,101,0,4,8,0,0,0,112,101,110,100,105,110,103,0,0,0,0,0,14,0,0,0,68,1,0,0,68,1,0,0,69,1,0,0,69,1,0,0,72,1,0,0,73,1,0,0,74,1,0,0,75,1,0,0,75,1,0,0,78,1,0,0,78,1,0,0,78,1,0,0,78,1,0,0,79,1,0,0,5,0,0,0,3,0,0,0,105,116,0,2,0,0,0,13,0,0,0,6,0,0,0,115,112,101,99,115,0,2,0,0,0,13,0,0,0,9,0,0,0,100,101,115,99,114,105,98,101,0,4,0,0,0,13,0,0,0,13,0,0,0,115,117,98,95,99,111,110,116,101,120,116,115,0,4,0,0,0,13,0,0,0,12,0,0,0,99,111,110,116,101,120,116,95,101,110,118,0,9,0,0,0,13,0,0,0,3,0,0,0,14,0,0,0,109,97,107,101,95,105,116,95,116,97,98,108,101,0,20,0,0,0,109,97,107,101,95,100,101,115,99,114,105,98,101,95,116,97,98,108,101,0,8,0,0,0,112,101,110,100,105,110,103,0,0,0,0,0,82,1,0,0,119,1,0,0,1,1,0,7,16,0,0,0,74,0,0,0,-118,0,0,0,-54,64,0,0,36,1,0,0,4,0,0,0,0,0,0,1,0,0,0,0,-55,0,1,-128,5,65,0,0,64,1,-128,0,-128,1,-128,1,28,65,-128,1,0,1,-128,0,64,1,0,1,30,1,-128,1,30,0,-128,0,2,0,0,0,4,11,0,0,0,95,95,110,101,119,105,110,100,101,120,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,1,0,0,0,0,0,0,0,89,1,0,0,113,1,0,0,3,3,0,12,38,0,0,0,-59,0,0,0,-53,64,-64,1,64,1,-128,0,-36,64,-128,1,-60,0,0,0,-36,0,-127,0,-123,-127,0,0,-64,1,0,1,0,2,-128,1,-100,65,-128,1,-128,1,0,1,-100,65,-128,0,-124,1,-128,0,-60,1,-128,0,-44,1,-128,3,-52,-63,-64,3,5,2,1,0,11,66,65,4,-118,66,1,0,-119,66,0,-125,-58,-62,-63,1,-119,-62,-126,-125,-58,2,-62,1,-119,-62,2,-124,-119,66,-127,-124,-119,2,1,-123,28,-126,-128,1,-119,1,-126,3,-124,1,0,1,-102,1,0,0,22,64,1,-128,-124,1,-128,0,-60,1,-128,0,-44,1,-128,3,-122,-63,1,3,-117,-63,66,3,-100,65,0,1,30,0,-128,0,12,0,0,0,4,5,0,0,0,115,112,101,99,0,4,12,0,0,0,97,100,100,95,99,111,110,116,101,120,116,0,4,8,0,0,0,115,101,116,102,101,110,118,0,3,0,0,0,0,0,0,-16,63,4,8,0,0,0,67,111,110,116,101,120,116,0,4,4,0,0,0,110,101,119,0,4,5,0,0,0,110,97,109,101,0,4,7,0,0,0,98,101,102,111,114,101,0,4,6,0,0,0,97,102,116,101,114,0,4,6,0,0,0,115,112,101,99,115,0,4,9,0,0,0,99,104,105,108,100,114,101,110,0,4,4,0,0,0,114,117,110,0,0,0,0,0,38,0,0,0,91,1,0,0,91,1,0,0,91,1,0,0,91,1,0,0,93,1,0,0,93,1,0,0,96,1,0,0,96,1,0,0,96,1,0,0,96,1,0,0,99,1,0,0,99,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,103,1,0,0,104,1,0,0,104,1,0,0,105,1,0,0,105,1,0,0,106,1,0,0,107,1,0,0,102,1,0,0,108,1,0,0,110,1,0,0,110,1,0,0,110,1,0,0,111,1,0,0,111,1,0,0,111,1,0,0,111,1,0,0,111,1,0,0,111,1,0,0,113,1,0,0,6,0,0,0,2,0,0,0,95,0,0,0,0,0,37,0,0,0,13,0,0,0,99,111,110,116,101,120,116,95,110,97,109,101,0,0,0,0,0,37,0,0,0,17,0,0,0,99,111,110,116,101,120,116,95,102,117,110,99,116,105,111,110,0,0,0,0,0,37,0,0,0,12,0,0,0,99,111,110,116,101,120,116,95,101,110,118,0,6,0,0,0,37,0,0,0,13,0,0,0,115,117,98,95,99,111,110,116,101,120,116,115,0,6,0,0,0,37,0,0,0,6,0,0,0,115,112,101,99,115,0,6,0,0,0,37,0,0,0,3,0,0,0,19,0,0,0,99,114,101,97,116,101,95,99,111,110,116,101,120,116,95,101,110,118,0,9,0,0,0,99,111,110,116,101,120,116,115,0,9,0,0,0,97,117,116,111,95,114,117,110,0,16,0,0,0,83,1,0,0,84,1,0,0,85,1,0,0,113,1,0,0,113,1,0,0,113,1,0,0,113,1,0,0,113,1,0,0,116,1,0,0,116,1,0,0,116,1,0,0,116,1,0,0,118,1,0,0,118,1,0,0,118,1,0,0,119,1,0,0,4,0,0,0,9,0,0,0,97,117,116,111,95,114,117,110,0,0,0,0,0,15,0,0,0,9,0,0,0,100,101,115,99,114,105,98,101,0,1,0,0,0,15,0,0,0,9,0,0,0,99,111,110,116,101,120,116,115,0,2,0,0,0,15,0,0,0,12,0,0,0,100,101,115,99,114,105,98,101,95,109,116,0,8,0,0,0,15,0,0,0,1,0,0,0,19,0,0,0,99,114,101,97,116,101,95,99,111,110,116,101,120,116,95,101,110,118,0,100,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,8,0,0,0,29,0,0,0,8,0,0,0,31,0,0,0,62,0,0,0,31,0,0,0,64,0,0,0,75,0,0,0,64,0,0,0,77,0,0,0,80,0,0,0,77,0,0,0,82,0,0,0,86,0,0,0,82,0,0,0,88,0,0,0,89,0,0,0,88,0,0,0,92,0,0,0,94,0,0,0,94,0,0,0,102,0,0,0,96,0,0,0,108,0,0,0,108,0,0,0,104,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,116,0,0,0,122,0,0,0,122,0,0,0,-127,0,0,0,-127,0,0,0,-120,0,0,0,-120,0,0,0,-113,0,0,0,-113,0,0,0,-106,0,0,0,-106,0,0,0,-95,0,0,0,-95,0,0,0,-82,0,0,0,-82,0,0,0,-74,0,0,0,-74,0,0,0,-66,0,0,0,-66,0,0,0,-65,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-47,0,0,0,-42,0,0,0,-42,0,0,0,-41,0,0,0,-41,0,0,0,-41,0,0,0,-39,0,0,0,-34,0,0,0,-39,0,0,0,-32,0,0,0,-24,0,0,0,-32,0,0,0,-22,0,0,0,-14,0,0,0,-22,0,0,0,-12,0,0,0,45,1,0,0,45,1,0,0,45,1,0,0,-12,0,0,0,61,1,0,0,63,1,0,0,79,1,0,0,79,1,0,0,79,1,0,0,79,1,0,0,119,1,0,0,82,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,5,0,0,0,8,0,0,0,112,101,110,100,105,110,103,0,32,0,0,0,99,0,0,0,7,0,0,0,101,120,112,101,99,116,0,68,0,0,0,99,0,0,0,14,0,0,0,109,97,107,101,95,105,116,95,116,97,98,108,101,0,88,0,0,0,99,0,0,0,20,0,0,0,109,97,107,101,95,100,101,115,99,114,105,98,101,95,116,97,98,108,101,0,89,0,0,0,99,0,0,0,19,0,0,0,99,114,101,97,116,101,95,99,111,110,116,101,120,116,95,101,110,118,0,93,0,0,0,99,0,0,0,0,0,0,0,68,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,114,101,112,108,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,6,22,0,0,0,69,0,0,0,70,64,-64,0,-127,-128,0,0,92,64,0,1,69,0,0,0,70,-64,-64,0,92,-128,-128,0,0,0,-128,0,69,0,1,0,70,64,-63,0,-128,0,0,0,92,-64,0,1,90,64,0,0,22,0,1,-128,-59,-128,1,0,1,-63,1,0,64,1,0,1,21,65,1,2,-36,64,0,1,26,64,0,0,22,-128,-6,127,30,0,-128,0,8,0,0,0,4,3,0,0,0,105,111,0,4,6,0,0,0,119,114,105,116,101,0,4,6,0,0,0,119,97,120,62,32,0,4,5,0,0,0,114,101,97,100,0,4,4,0,0,0,119,97,120,0,4,5,0,0,0,101,118,97,108,0,4,6,0,0,0,112,114,105,110,116,0,4,8,0,0,0,69,114,114,111,114,58,32,0,0,0,0,0,22,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,3,0,0,0,6,0,0,0,105,110,112,117,116,0,0,0,0,0,21,0,0,0,8,0,0,0,115,117,99,99,101,115,115,0,12,0,0,0,21,0,0,0,2,0,0,0,101,0,12,0,0,0,21,0,0,0,0,0,0,0,71,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,115,116,114,117,99,116,115,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,9,83,0,0,0,5,0,0,0,6,64,64,0,6,-128,64,0,65,-64,0,0,-127,0,1,0,-63,64,1,0,1,-127,1,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,-64,1,0,-127,0,1,0,-63,0,2,0,1,65,2,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,-128,2,0,-127,-64,2,0,-63,0,3,0,1,65,3,0,65,-127,3,0,-127,-63,3,0,28,64,-128,3,5,0,0,0,6,64,64,0,6,-128,64,0,65,0,4,0,-127,-64,2,0,-63,0,2,0,1,65,2,0,65,65,1,0,-127,-127,1,0,28,64,-128,3,5,0,0,0,6,64,64,0,6,-128,64,0,65,64,4,0,-127,-128,4,0,-63,-64,4,0,1,1,5,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,64,5,0,-127,-128,5,0,-63,-64,5,0,1,1,6,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,64,6,0,-127,-128,5,0,-63,-128,6,0,1,-63,6,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,0,7,0,-127,64,7,0,-63,-64,5,0,1,1,6,0,65,-127,6,0,-127,-63,6,0,28,64,-128,3,5,0,0,0,6,64,64,0,6,-128,64,0,65,-128,7,0,-127,-64,7,0,-63,0,8,0,1,65,8,0,65,-127,8,0,-127,-63,8,0,-63,1,9,0,1,66,9,0,28,64,-128,4,30,0,-128,0,38,0,0,0,4,4,0,0,0,119,97,120,0,4,7,0,0,0,115,116,114,117,99,116,0,4,7,0,0,0,99,114,101,97,116,101,0,4,7,0,0,0,67,71,83,105,122,101,0,4,3,0,0,0,102,102,0,4,6,0,0,0,119,105,100,116,104,0,4,7,0,0,0,104,101,105,103,104,116,0,4,8,0,0,0,67,71,80,111,105,110,116,0,4,2,0,0,0,120,0,4,2,0,0,0,121,0,4,13,0,0,0,85,73,69,100,103,101,73,110,115,101,116,115,0,4,5,0,0,0,102,102,102,102,0,4,4,0,0,0,116,111,112,0,4,5,0,0,0,108,101,102,116,0,4,7,0,0,0,98,111,116,116,111,109,0,4,6,0,0,0,114,105,103,104,116,0,4,7,0,0,0,67,71,82,101,99,116,0,4,8,0,0,0,78,83,82,97,110,103,101,0,4,3,0,0,0,73,73,0,4,9,0,0,0,108,111,99,97,116,105,111,110,0,4,7,0,0,0,108,101,110,103,116,104,0,4,23,0,0,0,67,76,76,111,99,97,116,105,111,110,67,111,111,114,100,105,110,97,116,101,50,68,0,4,3,0,0,0,100,100,0,4,9,0,0,0,108,97,116,105,116,117,100,101,0,4,10,0,0,0,108,111,110,103,105,116,117,100,101,0,4,17,0,0,0,77,75,67,111,111,114,100,105,110,97,116,101,83,112,97,110,0,4,14,0,0,0,108,97,116,105,116,117,100,101,68,101,108,116,97,0,4,15,0,0,0,108,111,110,103,105,116,117,100,101,68,101,108,116,97,0,4,19,0,0,0,77,75,67,111,111,114,100,105,110,97,116,101,82,101,103,105,111,110,0,4,5,0,0,0,100,100,100,100,0,4,18,0,0,0,67,71,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,0,4,7,0,0,0,102,102,102,102,102,102,0,4,2,0,0,0,97,0,4,2,0,0,0,98,0,4,2,0,0,0,99,0,4,2,0,0,0,100,0,4,3,0,0,0,116,120,0,4,3,0,0,0,116,121,0,0,0,0,0,83,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,119,97,120,67,108,97,115,115,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,5,0,0,0,36,0,0,0,7,0,0,0,36,64,0,0,7,64,0,0,30,0,-128,0,2,0,0,0,4,9,0,0,0,119,97,120,67,108,97,115,115,0,4,15,0,0,0,119,97,120,73,110,108,105,110,101,67,108,97,115,115,0,2,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,0,1,0,5,9,0,0,0,69,0,0,0,-128,0,0,0,92,-128,0,1,-123,64,0,0,-63,-128,0,0,6,-63,-64,0,-100,64,-128,1,94,0,0,1,30,0,-128,0,4,0,0,0,4,15,0,0,0,119,97,120,73,110,108,105,110,101,67,108,97,115,115,0,4,8,0,0,0,115,101,116,102,101,110,118,0,3,0,0,0,0,0,0,0,64,4,3,0,0,0,95,77,0,0,0,0,0,9,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,2,0,0,0,8,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,8,0,0,0,6,0,0,0,99,108,97,115,115,0,3,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,42,0,0,0,0,1,0,12,64,0,0,0,70,0,64,0,-122,64,64,0,-59,-128,0,0,-58,-64,-64,1,0,1,-128,0,64,1,0,1,-36,-128,-128,1,-55,64,0,-126,6,65,65,0,26,1,0,0,22,-128,4,-128,5,-127,1,0,70,65,65,0,28,-127,0,1,87,-64,65,2,22,-64,0,-128,10,1,-128,0,70,65,65,0,34,65,-128,0,9,0,-127,-126,6,65,65,0,20,1,0,2,23,0,66,2,22,64,1,-128,5,65,2,0,65,-127,2,0,-128,1,-128,0,-63,-63,2,0,85,-63,-127,2,28,65,0,1,5,1,3,0,70,65,65,0,90,65,0,0,22,0,0,-128,74,1,0,0,28,1,1,1,22,64,1,-128,69,-126,0,0,70,-62,-64,4,70,66,-61,4,-128,2,-128,1,-64,2,0,4,92,66,-128,1,33,-127,0,0,22,-64,-3,127,5,-63,3,0,74,65,0,0,73,-63,0,-120,-118,-127,0,0,-28,1,0,0,0,0,-128,1,-119,-63,-127,-120,-28,65,0,0,0,0,-128,1,-119,-63,1,-119,28,-127,-128,1,-55,0,1,-121,5,-63,4,0,9,-63,-128,0,5,1,5,0,6,65,69,2,9,-63,-128,0,-34,0,0,1,30,0,-128,0,22,0,0,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,64,4,4,0,0,0,119,97,120,0,4,6,0,0,0,99,108,97,115,115,0,4,10,0,0,0,99,108,97,115,115,78,97,109,101,0,4,10,0,0,0,112,114,111,116,111,99,111,108,115,0,4,5,0,0,0,116,121,112,101,0,4,6,0,0,0,116,97,98,108,101,0,3,0,0,0,0,0,0,0,0,4,6,0,0,0,101,114,114,111,114,0,4,33,0,0,0,10,69,109,112,116,121,32,112,114,111,116,111,99,111,108,32,116,97,98,108,101,32,102,111,114,32,99,108,97,115,115,32,0,4,123,0,0,0,46,10,32,77,97,107,101,32,115,117,114,101,32,121,111,117,32,97,114,101,32,100,101,102,105,110,105,110,103,32,121,111,117,114,32,112,114,111,116,111,99,111,108,115,32,119,105,116,104,32,97,32,115,116,114,105,110,103,32,97,110,100,32,110,111,116,32,97,32,118,97,114,105,97,98,108,101,46,32,10,32,101,120,46,32,112,114,111,116,111,99,111,108,115,32,61,32,123,34,85,73,84,97,98,108,101,86,105,101,119,68,101,108,101,103,97,116,101,34,125,10,10,0,4,7,0,0,0,105,112,97,105,114,115,0,4,13,0,0,0,97,100,100,80,114,111,116,111,99,111,108,115,0,4,3,0,0,0,95,77,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,115,101,108,102,0,4,11,0,0,0,95,95,110,101,119,105,110,100,101,120,0,4,8,0,0,0,95,95,105,110,100,101,120,0,4,3,0,0,0,95,71,0,4,8,0,0,0,112,97,99,107,97,103,101,0,4,7,0,0,0,108,111,97,100,101,100,0,2,0,0,0,0,0,0,0,27,0,0,0,29,0,0,0,1,3,0,4,3,0,0,0,-60,0,0,0,-55,-128,-128,0,30,0,-128,0,0,0,0,0,0,0,0,0,3,0,0,0,28,0,0,0,28,0,0,0,29,0,0,0,3,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,2,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,2,0,0,0,6,0,0,0,118,97,108,117,101,0,0,0,0,0,2,0,0,0,1,0,0,0,6,0,0,0,99,108,97,115,115,0,0,0,0,0,31,0,0,0,33,0,0,0,1,2,0,3,8,0,0,0,-124,0,0,0,-122,64,0,1,-102,64,0,0,22,64,0,-128,-123,0,0,0,-122,64,0,1,-98,0,0,1,30,0,-128,0,1,0,0,0,4,3,0,0,0,95,71,0,0,0,0,0,8,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,33,0,0,0,2,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,7,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,7,0,0,0,1,0,0,0,6,0,0,0,99,108,97,115,115,0,64,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,19,0,0,0,20,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,23,0,0,0,36,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,41,0,0,0,42,0,0,0,9,0,0,0,8,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,63,0,0,0,10,0,0,0,99,108,97,115,115,78,97,109,101,0,1,0,0,0,63,0,0,0,15,0,0,0,115,117,112,101,114,99,108,97,115,115,78,97,109,101,0,2,0,0,0,63,0,0,0,6,0,0,0,99,108,97,115,115,0,7,0,0,0,63,0,0,0,16,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,36,0,0,0,45,0,0,0,12,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,36,0,0,0,45,0,0,0,14,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,36,0,0,0,45,0,0,0,2,0,0,0,105,0,37,0,0,0,43,0,0,0,9,0,0,0,112,114,111,116,111,99,111,108,0,37,0,0,0,43,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,42,0,0,0,8,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,64,47,85,115,101,114,115,47,99,111,114,101,121,47,99,111,100,101,47,109,105,110,101,47,119,97,120,47,116,111,111,108,115,47,70,114,97,109,101,119,111,114,107,47,119,97,120,47,108,105,98,47,115,116,100,108,105,98,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,4,22,0,0,0,5,0,0,0,69,64,0,0,-118,64,0,0,-28,0,0,0,-119,-64,0,-127,28,64,-128,1,5,-64,0,0,65,0,1,0,28,64,0,1,5,-64,0,0,65,64,1,0,28,64,0,1,5,-64,0,0,65,-128,1,0,28,64,0,1,5,-64,0,0,65,-64,1,0,28,64,0,1,5,-64,0,0,65,0,2,0,28,64,0,1,30,0,-128,0,9,0,0,0,4,13,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,3,0,0,0,95,71,0,4,8,0,0,0,95,95,105,110,100,101,120,0,4,8,0,0,0,114,101,113,117,105,114,101,0,4,8,0,0,0,119,97,120,46,101,120,116,0,4,10,0,0,0,119,97,120,46,101,110,117,109,115,0,4,12,0,0,0,119,97,120,46,115,116,114,117,99,116,115,0,4,13,0,0,0,119,97,120,46,119,97,120,67,108,97,115,115,0,4,12,0,0,0,119,97,120,46,104,101,108,112,101,114,115,0,1,0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,0,2,0,7,21,0,0,0,-123,0,0,0,-122,64,64,1,-122,64,0,1,-102,0,0,0,22,0,0,-128,9,-128,-128,0,-102,64,0,0,22,-128,2,-128,-53,-128,-64,0,65,-63,0,0,-36,-128,-128,1,-38,0,0,0,22,64,1,-128,-59,0,1,0,1,65,1,0,64,1,-128,0,-127,-127,1,0,21,-127,1,2,-36,64,0,1,-98,0,0,1,30,0,-128,0,7,0,0,0,4,4,0,0,0,119,97,120,0,4,6,0,0,0,99,108,97,115,115,0,4,6,0,0,0,109,97,116,99,104,0,4,23,0,0,0,94,91,65,45,90,93,91,65,45,90,93,91,65,45,90,93,91,94,65,45,90,93,0,4,6,0,0,0,112,114,105,110,116,0,4,27,0,0,0,87,65,82,78,73,78,71,58,32,78,111,32,111,98,106,101,99,116,32,110,97,109,101,100,32,39,0,4,9,0,0,0,39,32,102,111,117,110,100,46,0,0,0,0,0,21,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,10,0,0,0,11,0,0,0,3,0,0,0,5,0,0,0,115,101,108,102,0,0,0,0,0,20,0,0,0,4,0,0,0,107,101,121,0,0,0,0,0,20,0,0,0,6,0,0,0,99,108,97,115,115,0,3,0,0,0,20,0,0,0,0,0,0,0,22,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,11,0,0,0,11,0,0,0,1,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} \ No newline at end of file diff --git a/frameworks/wax.framework/Headers/wax_stdlib_64.h b/frameworks/wax.framework/Headers/wax_stdlib_64.h new file mode 100755 index 0000000..7d5443d --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_stdlib_64.h @@ -0,0 +1,3 @@ +// DO NOT MODIFY +// This is auto generated, it contains a compiled version of the wax stdlib +#define WAX_STDLIB_64 {27,76,117,97,81,0,1,4,8,4,8,0,8,0,0,0,0,0,0,0,61,40,108,117,97,99,41,0,0,0,0,0,0,0,0,0,0,0,2,2,52,0,0,0,5,0,0,0,6,64,64,0,100,0,0,0,9,64,0,-127,100,64,0,0,9,64,-128,-127,100,-128,0,0,9,64,0,-126,100,-64,0,0,9,64,-128,-126,100,0,1,0,9,64,0,-125,100,64,1,0,9,64,-128,-125,100,-128,1,0,9,64,0,-124,100,-64,1,0,9,64,-128,-124,100,0,2,0,9,64,0,-123,100,64,2,0,9,64,-128,-123,100,-128,2,0,9,64,0,-122,100,-64,2,0,9,64,-128,-122,100,0,3,0,9,64,0,-121,100,64,3,0,9,64,-128,-121,100,-128,3,0,9,64,0,-120,100,-64,3,0,9,64,-128,-120,100,0,4,0,9,64,0,-119,100,64,4,0,9,64,-128,-119,100,-128,4,0,9,64,0,-118,100,-64,4,0,9,64,-128,-118,100,0,5,0,9,64,0,-117,100,64,5,0,9,64,-128,-117,100,-128,5,0,9,64,0,-116,1,64,6,0,100,-64,5,0,92,64,-128,0,30,0,-128,0,26,0,0,0,4,8,0,0,0,0,0,0,0,112,97,99,107,97,103,101,0,4,8,0,0,0,0,0,0,0,112,114,101,108,111,97,100,0,4,10,0,0,0,0,0,0,0,119,97,120,46,101,110,117,109,115,0,4,13,0,0,0,0,0,0,0,119,97,120,46,101,120,116,46,104,116,116,112,0,4,8,0,0,0,0,0,0,0,119,97,120,46,101,120,116,0,4,15,0,0,0,0,0,0,0,119,97,120,46,101,120,116,46,110,117,109,98,101,114,0,4,15,0,0,0,0,0,0,0,119,97,120,46,101,120,116,46,115,116,114,105,110,103,0,4,14,0,0,0,0,0,0,0,119,97,120,46,101,120,116,46,116,97,98,108,101,0,4,22,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,87,97,120,83,101,114,118,101,114,0,4,21,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,97,117,116,111,108,111,97,100,0,4,19,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,98,97,115,101,54,52,0,4,16,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,98,105,116,0,4,18,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,99,97,99,104,101,0,4,21,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,99,97,108,108,98,97,99,107,0,4,18,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,102,114,97,109,101,0,4,12,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,0,4,21,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,112,105,99,107,86,105,101,119,0,4,17,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,116,105,109,101,0,4,9,0,0,0,0,0,0,0,119,97,120,46,105,110,105,116,0,4,12,0,0,0,0,0,0,0,119,97,120,46,108,117,97,115,112,101,99,0,4,20,0,0,0,0,0,0,0,119,97,120,46,108,117,97,115,112,101,99,46,108,117,97,109,111,99,107,0,4,20,0,0,0,0,0,0,0,119,97,120,46,108,117,97,115,112,101,99,46,108,117,97,115,112,101,99,0,4,9,0,0,0,0,0,0,0,119,97,120,46,114,101,112,108,0,4,12,0,0,0,0,0,0,0,119,97,120,46,115,116,114,117,99,116,115,0,4,13,0,0,0,0,0,0,0,119,97,120,46,119,97,120,67,108,97,115,115,0,0,24,0,0,0,43,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,101,110,117,109,115,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,-81,2,0,0,1,64,0,0,7,0,0,0,1,-64,0,0,7,-128,0,0,1,64,1,0,7,0,1,0,1,-64,1,0,7,-128,1,0,1,64,2,0,7,0,2,0,1,-64,2,0,7,-128,2,0,1,64,3,0,7,0,3,0,1,-64,3,0,7,-128,3,0,1,64,4,0,7,0,4,0,1,-64,4,0,7,-128,4,0,1,64,5,0,7,0,5,0,1,-64,5,0,7,-128,5,0,1,64,6,0,7,0,6,0,1,64,0,0,7,-128,6,0,1,-64,0,0,7,-64,6,0,1,64,1,0,7,0,7,0,1,64,0,0,7,64,7,0,1,-64,0,0,7,-128,7,0,1,64,1,0,7,-64,7,0,1,-64,1,0,7,0,8,0,1,64,2,0,7,64,8,0,1,-64,2,0,7,-128,8,0,1,64,0,0,7,-64,8,0,1,-64,0,0,7,0,9,0,1,64,1,0,7,64,9,0,1,-64,1,0,7,-128,9,0,1,64,2,0,7,-64,9,0,1,-64,2,0,7,0,10,0,1,64,0,0,7,64,10,0,1,-64,0,0,7,-128,10,0,1,64,1,0,7,-64,10,0,1,64,0,0,7,0,11,0,1,-64,0,0,7,64,11,0,1,64,1,0,7,-128,11,0,1,-64,1,0,7,-64,11,0,1,64,0,0,7,0,12,0,1,-64,0,0,7,64,12,0,1,64,1,0,7,-128,12,0,1,-64,1,0,7,-64,12,0,1,64,0,0,7,0,13,0,1,-64,0,0,7,64,13,0,1,64,1,0,7,-128,13,0,1,64,0,0,7,-64,13,0,1,-64,0,0,7,0,14,0,1,64,0,0,7,64,14,0,1,-64,0,0,7,-128,14,0,1,64,1,0,7,-64,14,0,1,64,2,0,7,0,15,0,1,-128,15,0,7,64,15,0,1,0,16,0,7,-64,15,0,1,-64,0,0,7,64,16,0,1,64,1,0,7,-128,16,0,1,-64,1,0,7,-64,16,0,1,64,2,0,7,0,17,0,1,-64,2,0,7,64,17,0,1,64,3,0,7,-128,17,0,1,-64,3,0,7,-64,17,0,1,64,4,0,7,0,18,0,1,-64,4,0,7,64,18,0,1,64,5,0,7,-128,18,0,1,-64,5,0,7,-64,18,0,1,64,6,0,7,0,19,0,1,-128,19,0,7,64,19,0,1,0,20,0,7,-64,19,0,1,-128,20,0,7,64,20,0,1,0,21,0,7,-64,20,0,1,-128,21,0,7,64,21,0,1,0,22,0,7,-64,21,0,1,-128,22,0,7,64,22,0,1,0,23,0,7,-64,22,0,1,-128,23,0,7,64,23,0,1,0,24,0,7,-64,23,0,1,-128,24,0,7,64,24,0,1,64,0,0,7,-64,24,0,1,-64,0,0,7,0,25,0,1,64,1,0,7,64,25,0,1,64,0,0,7,-64,8,0,1,-64,0,0,7,0,9,0,1,64,1,0,7,64,9,0,1,-64,1,0,7,-128,9,0,1,64,2,0,7,-64,9,0,1,-64,2,0,7,0,10,0,1,64,0,0,7,-128,25,0,1,-64,0,0,7,-64,25,0,1,64,1,0,7,0,26,0,1,64,0,0,7,64,26,0,1,-64,0,0,7,-128,26,0,1,64,1,0,7,-64,26,0,1,-64,1,0,7,0,27,0,1,64,2,0,7,64,27,0,1,-64,2,0,7,-128,27,0,1,64,3,0,7,-64,27,0,1,-64,3,0,7,0,28,0,5,-128,26,0,7,64,28,0,1,64,0,0,7,-128,28,0,1,-64,0,0,7,-64,28,0,1,64,1,0,7,0,29,0,1,-64,1,0,7,64,29,0,1,64,2,0,7,-128,29,0,1,-64,2,0,7,-64,29,0,1,64,3,0,7,0,30,0,1,-64,3,0,7,64,30,0,1,64,4,0,7,-128,30,0,1,-64,4,0,7,-64,30,0,1,64,5,0,7,0,31,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,0,0,28,-128,-128,1,7,64,31,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,0,0,28,-128,-128,1,7,0,32,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,1,0,28,-128,-128,1,7,64,32,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,1,0,28,-128,-128,1,7,-128,32,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,2,0,28,-128,-128,1,7,-64,32,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,2,0,28,-128,-128,1,7,0,33,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,3,0,28,-128,-128,1,7,64,33,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,3,0,28,-128,-128,1,7,-128,33,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,4,0,28,-128,-128,1,7,-64,33,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,6,0,28,-128,-128,1,7,0,34,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-128,34,0,28,-128,-128,1,7,64,34,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,0,35,0,28,-128,-128,1,7,-64,34,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-128,35,0,28,-128,-128,1,7,64,35,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,0,36,0,28,-128,-128,1,7,-64,35,0,1,-128,36,0,7,64,36,0,1,0,37,0,7,-64,36,0,1,-128,37,0,7,64,37,0,1,0,38,0,7,-64,37,0,1,-128,38,0,7,64,38,0,1,64,0,0,7,-64,38,0,1,-64,0,0,7,0,39,0,1,64,1,0,7,64,39,0,1,64,0,0,7,-128,39,0,1,-64,0,0,7,-64,39,0,1,64,1,0,7,0,40,0,1,-64,1,0,7,64,40,0,1,64,0,0,7,-128,40,0,1,-64,0,0,7,-64,40,0,1,64,1,0,7,0,41,0,1,-64,1,0,7,64,41,0,1,64,2,0,7,-128,41,0,1,-64,2,0,7,-64,41,0,1,64,3,0,7,0,42,0,1,-64,3,0,7,64,42,0,1,64,4,0,7,-128,42,0,1,-64,4,0,7,-64,42,0,1,64,5,0,7,0,43,0,1,-64,5,0,7,64,43,0,1,64,6,0,7,-128,43,0,1,-128,19,0,7,-64,43,0,1,0,20,0,7,0,44,0,1,-128,20,0,7,64,44,0,1,-128,34,0,7,-128,44,0,1,0,35,0,7,-64,44,0,1,-128,35,0,7,0,45,0,1,0,36,0,7,64,45,0,1,-64,45,0,7,-128,45,0,1,0,21,0,7,0,46,0,1,-128,46,0,7,64,46,0,1,64,0,0,7,-64,46,0,1,-64,0,0,7,0,47,0,1,64,1,0,7,64,47,0,1,-64,1,0,7,-128,47,0,1,64,0,0,7,-64,47,0,1,-64,0,0,7,0,48,0,1,64,1,0,7,64,48,0,1,-64,1,0,7,-128,48,0,1,64,0,0,7,-64,48,0,1,-64,0,0,7,0,49,0,1,64,0,0,7,64,49,0,1,-64,0,0,7,-128,49,0,1,64,1,0,7,-64,49,0,1,-64,1,0,7,0,50,0,1,64,0,0,7,64,50,0,1,-64,0,0,7,-128,50,0,1,64,1,0,7,-64,50,0,1,64,0,0,7,0,51,0,1,-64,0,0,7,64,51,0,1,-64,0,0,7,-128,51,0,1,64,1,0,7,-64,51,0,1,64,0,0,7,0,52,0,1,-64,0,0,7,64,52,0,1,64,2,0,7,-128,52,0,5,64,52,0,7,-64,52,0,1,64,1,0,7,0,53,0,1,-64,1,0,7,64,53,0,1,-64,2,0,7,-128,53,0,1,64,0,0,7,-64,53,0,1,-64,0,0,7,0,54,0,1,64,1,0,7,64,54,0,1,64,0,0,7,-128,54,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,0,0,28,-128,-128,1,7,-64,54,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,0,0,28,-128,-128,1,7,0,55,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,1,0,28,-128,-128,1,7,64,55,0,1,64,0,0,7,-128,55,0,1,-64,0,0,7,-64,55,0,1,64,1,0,7,0,56,0,1,64,0,0,7,64,56,0,1,-64,0,0,7,-128,56,0,1,64,1,0,7,-64,56,0,1,-64,1,0,7,0,57,0,1,64,2,0,7,64,57,0,1,-64,2,0,7,-128,57,0,1,64,3,0,7,-64,57,0,5,-128,56,0,7,0,58,0,5,-64,56,0,7,64,58,0,5,64,57,0,7,-128,58,0,5,0,57,0,7,-64,58,0,1,64,0,0,7,0,59,0,1,-64,0,0,7,64,59,0,1,64,1,0,7,-128,59,0,1,-64,1,0,7,-64,59,0,1,64,0,0,7,0,60,0,1,-64,0,0,7,64,60,0,1,64,1,0,7,-128,60,0,1,-64,1,0,7,-64,60,0,1,64,2,0,7,0,61,0,1,-64,2,0,7,64,61,0,1,64,3,0,7,-128,61,0,1,64,0,0,7,-64,61,0,1,-64,0,0,7,0,62,0,1,64,1,0,7,64,62,0,1,-64,1,0,7,-128,62,0,1,64,2,0,7,-64,62,0,1,64,0,0,7,0,63,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,0,0,28,-128,-128,1,7,64,63,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,0,0,28,-128,-128,1,7,-128,63,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,1,0,28,-128,-128,1,7,-64,63,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,1,0,28,-128,-128,1,7,0,64,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,2,0,28,-128,-128,1,7,64,64,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,2,0,28,-128,-128,1,7,-128,64,0,1,64,0,0,7,-64,64,0,1,-64,0,0,7,0,65,0,1,64,1,0,7,64,65,0,1,-64,1,0,7,-128,65,0,1,64,2,0,7,-64,65,0,1,-64,2,0,7,0,66,0,1,64,0,0,7,64,66,0,1,-64,0,0,7,-128,66,0,1,64,1,0,7,-64,66,0,1,64,0,0,7,0,67,0,1,-64,0,0,7,64,67,0,1,64,1,0,7,-128,67,0,1,-64,1,0,7,-64,67,0,1,64,0,0,7,0,68,0,1,-64,0,0,7,64,68,0,1,64,1,0,7,-128,68,0,1,-64,1,0,7,-64,68,0,1,64,2,0,7,0,69,0,1,64,0,0,7,64,69,0,1,-64,0,0,7,-128,69,0,1,64,1,0,7,-64,69,0,1,64,0,0,7,0,70,0,1,-64,0,0,7,64,70,0,1,64,1,0,7,-128,70,0,1,-64,1,0,7,-64,70,0,1,64,0,0,7,0,71,0,1,-64,0,0,7,64,71,0,1,64,1,0,7,-128,71,0,1,-64,1,0,7,-64,71,0,1,64,2,0,7,0,72,0,1,64,0,0,7,64,72,0,1,-64,0,0,7,-128,72,0,1,64,1,0,7,-64,72,0,1,64,0,0,7,0,73,0,1,-64,0,0,7,64,73,0,1,64,0,0,7,-128,73,0,1,-64,0,0,7,-64,73,0,1,64,1,0,7,0,74,0,1,-128,74,0,7,64,74,0,1,64,0,0,7,-64,74,0,1,-64,0,0,7,0,75,0,1,64,0,0,7,64,75,0,1,-64,0,0,7,-128,75,0,1,64,1,0,7,-64,75,0,1,64,0,0,7,0,76,0,1,-64,0,0,7,64,76,0,1,64,1,0,7,-128,76,0,1,-64,1,0,7,-64,76,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,0,0,28,-128,-128,1,7,0,77,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,0,0,28,-128,-128,1,7,64,77,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,64,1,0,28,-128,-128,1,7,-128,77,0,5,-128,31,0,6,-64,95,0,65,64,1,0,-127,-64,1,0,28,-128,-128,1,7,-64,77,0,1,64,0,0,7,0,70,0,1,-64,0,0,7,64,70,0,1,64,1,0,7,-128,70,0,1,-64,1,0,7,-64,70,0,1,64,0,0,7,0,78,0,1,-64,0,0,7,64,78,0,1,64,1,0,7,-128,78,0,1,-64,1,0,7,-64,78,0,1,64,0,0,7,0,79,0,1,-64,0,0,7,64,79,0,1,64,1,0,7,-128,79,0,30,0,-128,0,63,1,0,0,4,29,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,83,99,97,108,101,84,111,70,105,108,108,0,3,0,0,0,0,0,0,0,0,4,32,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,83,99,97,108,101,65,115,112,101,99,116,70,105,116,0,3,0,0,0,0,0,0,-16,63,4,33,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,83,99,97,108,101,65,115,112,101,99,116,70,105,108,108,0,3,0,0,0,0,0,0,0,64,4,24,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,82,101,100,114,97,119,0,3,0,0,0,0,0,0,8,64,4,24,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,67,101,110,116,101,114,0,3,0,0,0,0,0,0,16,64,4,21,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,84,111,112,0,3,0,0,0,0,0,0,20,64,4,24,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,66,111,116,116,111,109,0,3,0,0,0,0,0,0,24,64,4,22,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,76,101,102,116,0,3,0,0,0,0,0,0,28,64,4,23,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,82,105,103,104,116,0,3,0,0,0,0,0,0,32,64,4,25,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,84,111,112,76,101,102,116,0,3,0,0,0,0,0,0,34,64,4,26,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,84,111,112,82,105,103,104,116,0,3,0,0,0,0,0,0,36,64,4,28,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,66,111,116,116,111,109,76,101,102,116,0,3,0,0,0,0,0,0,38,64,4,29,0,0,0,0,0,0,0,85,73,86,105,101,119,67,111,110,116,101,110,116,77,111,100,101,66,111,116,116,111,109,82,105,103,104,116,0,3,0,0,0,0,0,0,40,64,4,26,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,73,116,101,109,83,116,121,108,101,80,108,97,105,110,0,4,29,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,73,116,101,109,83,116,121,108,101,66,111,114,100,101,114,101,100,0,4,25,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,73,116,101,109,83,116,121,108,101,68,111,110,101,0,4,19,0,0,0,0,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,67,117,115,116,111,109,0,4,24,0,0,0,0,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,82,111,117,110,100,101,100,82,101,99,116,0,4,29,0,0,0,0,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,68,101,116,97,105,108,68,105,115,99,108,111,115,117,114,101,0,4,22,0,0,0,0,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,73,110,102,111,76,105,103,104,116,0,4,21,0,0,0,0,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,73,110,102,111,68,97,114,107,0,4,23,0,0,0,0,0,0,0,85,73,66,117,116,116,111,110,84,121,112,101,67,111,110,116,97,99,116,65,100,100,0,4,24,0,0,0,0,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,87,111,114,100,87,114,97,112,0,4,29,0,0,0,0,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,67,104,97,114,97,99,116,101,114,87,114,97,112,0,4,20,0,0,0,0,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,67,108,105,112,0,4,30,0,0,0,0,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,72,101,97,100,84,114,117,110,99,97,116,105,111,110,0,4,30,0,0,0,0,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,84,97,105,108,84,114,117,110,99,97,116,105,111,110,0,4,32,0,0,0,0,0,0,0,85,73,76,105,110,101,66,114,101,97,107,77,111,100,101,77,105,100,100,108,101,84,114,117,110,99,97,116,105,111,110,0,4,34,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,108,101,99,116,105,111,110,83,116,121,108,101,78,111,110,101,0,4,34,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,108,101,99,116,105,111,110,83,116,121,108,101,66,108,117,101,0,4,34,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,108,101,99,116,105,111,110,83,116,121,108,101,71,114,97,121,0,4,28,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,116,121,108,101,68,101,102,97,117,108,116,0,4,27,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,116,121,108,101,86,97,108,117,101,49,0,4,27,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,116,121,108,101,86,97,108,117,101,50,0,4,29,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,116,121,108,101,83,117,98,116,105,116,108,101,0,4,29,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,65,99,99,101,115,115,111,114,121,78,111,110,101,0,4,44,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,65,99,99,101,115,115,111,114,121,68,105,115,99,108,111,115,117,114,101,73,110,100,105,99,97,116,111,114,0,4,47,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,65,99,99,101,115,115,111,114,121,68,101,116,97,105,108,68,105,115,99,108,111,115,117,114,101,66,117,116,116,111,110,0,4,34,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,65,99,99,101,115,115,111,114,121,67,104,101,99,107,109,97,114,107,0,4,39,0,0,0,0,0,0,0,85,73,65,99,116,105,118,105,116,121,73,110,100,105,99,97,116,111,114,86,105,101,119,83,116,121,108,101,87,104,105,116,101,76,97,114,103,101,0,4,34,0,0,0,0,0,0,0,85,73,65,99,116,105,118,105,116,121,73,110,100,105,99,97,116,111,114,86,105,101,119,83,116,121,108,101,87,104,105,116,101,0,4,33,0,0,0,0,0,0,0,85,73,65,99,116,105,118,105,116,121,73,110,100,105,99,97,116,111,114,86,105,101,119,83,116,121,108,101,71,114,97,121,0,4,22,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,116,121,108,101,80,108,97,105,110,0,4,24,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,116,121,108,101,71,114,111,117,112,101,100,0,4,21,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,78,111,114,109,97,108,0,4,26,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,72,105,103,104,108,105,103,104,116,101,100,0,4,23,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,68,105,115,97,98,108,101,100,0,4,23,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,83,101,108,101,99,116,101,100,0,4,26,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,65,112,112,108,105,99,97,116,105,111,110,0,3,0,0,0,0,0,-32,111,65,4,23,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,83,116,97,116,101,82,101,115,101,114,118,101,100,0,3,0,0,0,0,0,-32,-17,65,4,22,0,0,0,0,0,0,0,78,83,65,83,67,73,73,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,25,0,0,0,0,0,0,0,78,83,78,69,88,84,83,84,69,80,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,28,0,0,0,0,0,0,0,78,83,74,97,112,97,110,101,115,101,69,85,67,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,21,0,0,0,0,0,0,0,78,83,85,84,70,56,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,26,0,0,0,0,0,0,0,78,83,73,83,79,76,97,116,105,110,49,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,23,0,0,0,0,0,0,0,78,83,83,121,109,98,111,108,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,30,0,0,0,0,0,0,0,78,83,78,111,110,76,111,115,115,121,65,83,67,73,73,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,25,0,0,0,0,0,0,0,78,83,83,104,105,102,116,74,73,83,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,26,0,0,0,0,0,0,0,78,83,73,83,79,76,97,116,105,110,50,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,24,0,0,0,0,0,0,0,78,83,85,110,105,99,111,100,101,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,30,0,0,0,0,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,49,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,30,0,0,0,0,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,50,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,30,0,0,0,0,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,51,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,42,64,4,30,0,0,0,0,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,52,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,44,64,4,30,0,0,0,0,0,0,0,78,83,87,105,110,100,111,119,115,67,80,49,50,53,48,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,46,64,4,26,0,0,0,0,0,0,0,78,83,73,83,79,50,48,50,50,74,80,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,53,64,4,27,0,0,0,0,0,0,0,78,83,77,97,99,79,83,82,111,109,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,62,64,4,31,0,0,0,0,0,0,0,78,83,85,84,70,49,54,66,105,103,69,110,100,105,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,0,-30,65,4,34,0,0,0,0,0,0,0,78,83,85,84,70,49,54,76,105,116,116,108,101,69,110,100,105,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,-128,-30,65,4,22,0,0,0,0,0,0,0,78,83,85,84,70,51,50,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,-128,-31,65,4,31,0,0,0,0,0,0,0,78,83,85,84,70,51,50,66,105,103,69,110,100,105,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,0,-29,65,4,34,0,0,0,0,0,0,0,78,83,85,84,70,51,50,76,105,116,116,108,101,69,110,100,105,97,110,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,32,0,-128,-29,65,4,28,0,0,0,0,0,0,0,78,83,80,114,111,112,114,105,101,116,97,114,121,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,3,0,0,0,0,0,0,-16,64,4,20,0,0,0,0,0,0,0,85,73,84,101,120,116,65,108,105,103,110,109,101,110,116,76,101,102,116,0,4,22,0,0,0,0,0,0,0,85,73,84,101,120,116,65,108,105,103,110,109,101,110,116,67,101,110,116,101,114,0,4,21,0,0,0,0,0,0,0,85,73,84,101,120,116,65,108,105,103,110,109,101,110,116,82,105,103,104,116,0,4,36,0,0,0,0,0,0,0,85,73,77,111,100,97,108,84,114,97,110,115,105,116,105,111,110,83,116,121,108,101,67,111,118,101,114,86,101,114,116,105,99,97,108,0,4,37,0,0,0,0,0,0,0,85,73,77,111,100,97,108,84,114,97,110,115,105,116,105,111,110,83,116,121,108,101,70,108,105,112,72,111,114,105,122,111,110,116,97,108,0,4,36,0,0,0,0,0,0,0,85,73,77,111,100,97,108,84,114,97,110,115,105,116,105,111,110,83,116,121,108,101,67,114,111,115,115,68,105,115,115,111,108,118,101,0,4,22,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,68,101,102,97,117,108,116,0,4,27,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,65,83,67,73,73,67,97,112,97,98,108,101,0,4,36,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,78,117,109,98,101,114,115,65,110,100,80,117,110,99,116,117,97,116,105,111,110,0,4,18,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,85,82,76,0,4,24,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,78,117,109,98,101,114,80,97,100,0,4,23,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,80,104,111,110,101,80,97,100,0,4,27,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,78,97,109,101,80,104,111,110,101,80,97,100,0,4,27,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,69,109,97,105,108,65,100,100,114,101,115,115,0,4,23,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,84,121,112,101,65,108,112,104,97,98,101,116,0,4,19,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,68,101,102,97,117,108,116,0,4,14,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,71,111,0,4,18,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,71,111,111,103,108,101,0,4,16,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,74,111,105,110,0,4,16,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,78,101,120,116,0,4,17,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,82,111,117,116,101,0,4,18,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,83,101,97,114,99,104,0,4,16,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,83,101,110,100,0,4,17,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,89,97,104,111,111,0,4,16,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,68,111,110,101,0,4,25,0,0,0,0,0,0,0,85,73,82,101,116,117,114,110,75,101,121,69,109,101,114,103,101,110,99,121,67,97,108,108,0,4,24,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,111,119,110,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,112,111,119,0,4,30,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,111,119,110,82,101,112,101,97,116,0,4,30,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,114,97,103,73,110,115,105,100,101,0,4,31,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,114,97,103,79,117,116,115,105,100,101,0,4,29,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,114,97,103,69,110,116,101,114,0,4,28,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,68,114,97,103,69,120,105,116,0,4,28,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,85,112,73,110,115,105,100,101,0,4,29,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,85,112,79,117,116,115,105,100,101,0,4,26,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,84,111,117,99,104,67,97,110,99,101,108,0,4,27,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,86,97,108,117,101,67,104,97,110,103,101,100,0,4,30,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,69,100,105,116,105,110,103,68,105,100,66,101,103,105,110,0,3,0,0,0,0,0,0,48,64,4,29,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,69,100,105,116,105,110,103,67,104,97,110,103,101,100,0,3,0,0,0,0,0,0,49,64,4,28,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,69,100,105,116,105,110,103,68,105,100,69,110,100,0,3,0,0,0,0,0,0,50,64,4,34,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,69,100,105,116,105,110,103,68,105,100,69,110,100,79,110,69,120,105,116,0,3,0,0,0,0,0,0,51,64,4,29,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,65,108,108,84,111,117,99,104,69,118,101,110,116,115,0,3,0,0,0,0,0,-2,-81,64,4,31,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,65,108,108,69,100,105,116,105,110,103,69,118,101,110,116,115,0,3,0,0,0,0,0,0,46,65,4,34,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,65,112,112,108,105,99,97,116,105,111,110,82,101,115,101,114,118,101,100,0,3,0,0,0,0,0,0,-82,65,4,29,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,83,121,115,116,101,109,82,101,115,101,114,118,101,100,0,3,0,0,0,0,0,0,-18,65,4,24,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,69,118,101,110,116,65,108,108,69,118,101,110,116,115,0,3,0,0,-32,-1,-1,-1,-17,65,4,32,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,69,100,105,116,105,110,103,83,116,121,108,101,78,111,110,101,0,4,34,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,69,100,105,116,105,110,103,83,116,121,108,101,68,101,108,101,116,101,0,4,34,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,69,100,105,116,105,110,103,83,116,121,108,101,73,110,115,101,114,116,0,4,29,0,0,0,0,0,0,0,77,70,77,97,105,108,67,111,109,112,111,115,101,82,101,115,117,108,116,67,97,110,99,101,108,108,101,100,0,4,25,0,0,0,0,0,0,0,77,70,77,97,105,108,67,111,109,112,111,115,101,82,101,115,117,108,116,83,97,118,101,100,0,4,24,0,0,0,0,0,0,0,77,70,77,97,105,108,67,111,109,112,111,115,101,82,101,115,117,108,116,83,101,110,116,0,4,26,0,0,0,0,0,0,0,77,70,77,97,105,108,67,111,109,112,111,115,101,82,101,115,117,108,116,70,97,105,108,101,100,0,4,26,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,68,111,110,101,0,4,28,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,67,97,110,99,101,108,0,4,26,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,69,100,105,116,0,4,26,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,83,97,118,101,0,4,25,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,65,100,100,0,4,35,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,70,108,101,120,105,98,108,101,83,112,97,99,101,0,4,32,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,70,105,120,101,100,83,112,97,99,101,0,4,29,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,67,111,109,112,111,115,101,0,4,27,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,82,101,112,108,121,0,4,28,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,65,99,116,105,111,110,0,4,30,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,79,114,103,97,110,105,122,101,0,4,31,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,66,111,111,107,109,97,114,107,115,0,4,28,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,83,101,97,114,99,104,0,4,29,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,82,101,102,114,101,115,104,0,4,26,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,83,116,111,112,0,4,28,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,67,97,109,101,114,97,0,4,27,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,84,114,97,115,104,0,4,26,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,80,108,97,121,0,4,27,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,80,97,117,115,101,0,4,28,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,82,101,119,105,110,100,0,4,33,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,70,97,115,116,70,111,114,119,97,114,100,0,3,0,0,0,0,0,0,52,64,4,26,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,85,110,100,111,0,4,26,0,0,0,0,0,0,0,85,73,66,97,114,66,117,116,116,111,110,83,121,115,116,101,109,73,116,101,109,82,101,100,111,0,3,0,0,0,0,0,0,54,64,4,22,0,0,0,0,0,0,0,85,73,84,101,120,116,66,111,114,100,101,114,83,116,121,108,101,78,111,110,101,0,4,22,0,0,0,0,0,0,0,85,73,84,101,120,116,66,111,114,100,101,114,83,116,121,108,101,76,105,110,101,0,4,23,0,0,0,0,0,0,0,85,73,84,101,120,116,66,111,114,100,101,114,83,116,121,108,101,66,101,122,101,108,0,4,29,0,0,0,0,0,0,0,85,73,84,101,120,116,66,111,114,100,101,114,83,116,121,108,101,82,111,117,110,100,101,100,82,101,99,116,0,4,30,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,99,114,111,108,108,80,111,115,105,116,105,111,110,78,111,110,101,0,4,29,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,99,114,111,108,108,80,111,115,105,116,105,111,110,84,111,112,0,4,32,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,99,114,111,108,108,80,111,115,105,116,105,111,110,77,105,100,100,108,101,0,4,32,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,83,99,114,111,108,108,80,111,115,105,116,105,111,110,66,111,116,116,111,109,0,4,28,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,65,112,112,101,97,114,97,110,99,101,68,101,102,97,117,108,116,0,4,26,0,0,0,0,0,0,0,85,73,75,101,121,98,111,97,114,100,65,112,112,101,97,114,97,110,99,101,65,108,101,114,116,0,4,25,0,0,0,0,0,0,0,85,73,84,101,120,116,70,105,101,108,100,86,105,101,119,77,111,100,101,78,101,118,101,114,0,4,32,0,0,0,0,0,0,0,85,73,84,101,120,116,70,105,101,108,100,86,105,101,119,77,111,100,101,87,104,105,108,101,69,100,105,116,105,110,103,0,4,33,0,0,0,0,0,0,0,85,73,84,101,120,116,70,105,101,108,100,86,105,101,119,77,111,100,101,85,110,108,101,115,115,69,100,105,116,105,110,103,0,4,26,0,0,0,0,0,0,0,85,73,84,101,120,116,70,105,101,108,100,86,105,101,119,77,111,100,101,65,108,119,97,121,115,0,4,32,0,0,0,0,0,0,0,85,73,84,101,120,116,65,117,116,111,99,111,114,114,101,99,116,105,111,110,84,121,112,101,68,101,102,97,117,108,116,0,4,27,0,0,0,0,0,0,0,85,73,84,101,120,116,65,117,116,111,99,111,114,114,101,99,116,105,111,110,84,121,112,101,78,111,0,4,28,0,0,0,0,0,0,0,85,73,84,101,120,116,65,117,116,111,99,111,114,114,101,99,116,105,111,110,84,121,112,101,89,101,115,0,4,18,0,0,0,0,0,0,0,85,73,66,97,114,83,116,121,108,101,68,101,102,97,117,108,116,0,4,16,0,0,0,0,0,0,0,85,73,66,97,114,83,116,121,108,101,66,108,97,99,107,0,4,22,0,0,0,0,0,0,0,85,73,66,97,114,83,116,121,108,101,66,108,97,99,107,79,112,97,113,117,101,0,4,27,0,0,0,0,0,0,0,85,73,66,97,114,83,116,121,108,101,66,108,97,99,107,84,114,97,110,115,108,117,99,101,110,116,0,4,35,0,0,0,0,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,85,115,101,80,114,111,116,111,99,111,108,67,97,99,104,101,80,111,108,105,99,121,0,4,41,0,0,0,0,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,108,111,97,100,73,103,110,111,114,105,110,103,76,111,99,97,108,67,97,99,104,101,68,97,116,97,0,4,50,0,0,0,0,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,108,111,97,100,73,103,110,111,114,105,110,103,76,111,99,97,108,65,110,100,82,101,109,111,116,101,67,97,99,104,101,68,97,116,97,0,4,36,0,0,0,0,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,108,111,97,100,73,103,110,111,114,105,110,103,67,97,99,104,101,68,97,116,97,0,4,36,0,0,0,0,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,116,117,114,110,67,97,99,104,101,68,97,116,97,69,108,115,101,76,111,97,100,0,4,36,0,0,0,0,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,116,117,114,110,67,97,99,104,101,68,97,116,97,68,111,110,116,76,111,97,100,0,4,40,0,0,0,0,0,0,0,78,83,85,82,76,82,101,113,117,101,115,116,82,101,108,111,97,100,82,101,118,97,108,105,100,97,116,105,110,103,67,97,99,104,101,68,97,116,97,0,4,29,0,0,0,0,0,0,0,85,73,83,101,103,109,101,110,116,101,100,67,111,110,116,114,111,108,83,116,121,108,101,80,108,97,105,110,0,4,32,0,0,0,0,0,0,0,85,73,83,101,103,109,101,110,116,101,100,67,111,110,116,114,111,108,83,116,121,108,101,66,111,114,100,101,114,101,100,0,4,27,0,0,0,0,0,0,0,85,73,83,101,103,109,101,110,116,101,100,67,111,110,116,114,111,108,83,116,121,108,101,66,97,114,0,4,29,0,0,0,0,0,0,0,85,73,82,101,109,111,116,101,78,111,116,105,102,105,99,97,116,105,111,110,84,121,112,101,78,111,110,101,0,4,30,0,0,0,0,0,0,0,85,73,82,101,109,111,116,101,78,111,116,105,102,105,99,97,116,105,111,110,84,121,112,101,66,97,100,103,101,0,4,30,0,0,0,0,0,0,0,85,73,82,101,109,111,116,101,78,111,116,105,102,105,99,97,116,105,111,110,84,121,112,101,83,111,117,110,100,0,4,30,0,0,0,0,0,0,0,85,73,82,101,109,111,116,101,78,111,116,105,102,105,99,97,116,105,111,110,84,121,112,101,65,108,101,114,116,0,4,31,0,0,0,0,0,0,0,78,83,85,82,76,67,114,101,100,101,110,116,105,97,108,80,101,114,115,105,115,116,101,110,99,101,78,111,110,101,0,4,37,0,0,0,0,0,0,0,78,83,85,82,76,67,114,101,100,101,110,116,105,97,108,80,101,114,115,105,115,116,101,110,99,101,70,111,114,83,101,115,115,105,111,110,0,4,36,0,0,0,0,0,0,0,78,83,85,82,76,67,114,101,100,101,110,116,105,97,108,80,101,114,115,105,115,116,101,110,99,101,80,101,114,109,97,110,101,110,116,0,4,27,0,0,0,0,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,85,110,107,110,111,119,110,0,4,28,0,0,0,0,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,80,111,114,116,114,97,105,116,0,4,38,0,0,0,0,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,80,111,114,116,114,97,105,116,85,112,115,105,100,101,68,111,119,110,0,4,33,0,0,0,0,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,76,97,110,100,115,99,97,112,101,76,101,102,116,0,4,34,0,0,0,0,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,76,97,110,100,115,99,97,112,101,82,105,103,104,116,0,4,26,0,0,0,0,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,70,97,99,101,85,112,0,4,28,0,0,0,0,0,0,0,85,73,68,101,118,105,99,101,79,114,105,101,110,116,97,116,105,111,110,70,97,99,101,68,111,119,110,0,4,31,0,0,0,0,0,0,0,85,73,73,110,116,101,114,102,97,99,101,79,114,105,101,110,116,97,116,105,111,110,80,111,114,116,114,97,105,116,0,4,41,0,0,0,0,0,0,0,85,73,73,110,116,101,114,102,97,99,101,79,114,105,101,110,116,97,116,105,111,110,80,111,114,116,114,97,105,116,85,112,115,105,100,101,68,111,119,110,0,4,36,0,0,0,0,0,0,0,85,73,73,110,116,101,114,102,97,99,101,79,114,105,101,110,116,97,116,105,111,110,76,97,110,100,115,99,97,112,101,76,101,102,116,0,4,37,0,0,0,0,0,0,0,85,73,73,110,116,101,114,102,97,99,101,79,114,105,101,110,116,97,116,105,111,110,76,97,110,100,115,99,97,112,101,82,105,103,104,116,0,4,30,0,0,0,0,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,67,117,114,118,101,69,97,115,101,73,110,79,117,116,0,4,27,0,0,0,0,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,67,117,114,118,101,69,97,115,101,73,110,0,4,28,0,0,0,0,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,67,117,114,118,101,69,97,115,101,79,117,116,0,4,27,0,0,0,0,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,67,117,114,118,101,76,105,110,101,97,114,0,4,28,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,70,97,100,101,0,4,29,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,82,105,103,104,116,0,4,28,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,76,101,102,116,0,4,27,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,84,111,112,0,4,30,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,66,111,116,116,111,109,0,4,28,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,78,111,110,101,0,4,30,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,82,111,119,65,110,105,109,97,116,105,111,110,77,105,100,100,108,101,0,4,30,0,0,0,0,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,78,111,110,101,0,4,38,0,0,0,0,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,70,108,105,112,70,114,111,109,76,101,102,116,0,4,39,0,0,0,0,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,70,108,105,112,70,114,111,109,82,105,103,104,116,0,4,32,0,0,0,0,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,67,117,114,108,85,112,0,4,34,0,0,0,0,0,0,0,85,73,86,105,101,119,65,110,105,109,97,116,105,111,110,84,114,97,110,115,105,116,105,111,110,67,117,114,108,68,111,119,110,0,4,23,0,0,0,0,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,78,111,110,101,0,4,37,0,0,0,0,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,76,101,102,116,77,97,114,103,105,110,0,4,32,0,0,0,0,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,87,105,100,116,104,0,4,38,0,0,0,0,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,82,105,103,104,116,77,97,114,103,105,110,0,4,36,0,0,0,0,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,84,111,112,77,97,114,103,105,110,0,4,33,0,0,0,0,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,72,101,105,103,104,116,0,4,39,0,0,0,0,0,0,0,85,73,86,105,101,119,65,117,116,111,114,101,115,105,122,105,110,103,70,108,101,120,105,98,108,101,66,111,116,116,111,109,77,97,114,103,105,110,0,4,35,0,0,0,0,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,76,105,110,107,67,108,105,99,107,101,100,0,4,37,0,0,0,0,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,70,111,114,109,83,117,98,109,105,116,116,101,100,0,4,35,0,0,0,0,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,66,97,99,107,70,111,114,119,97,114,100,0,4,30,0,0,0,0,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,82,101,108,111,97,100,0,4,39,0,0,0,0,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,70,111,114,109,82,101,115,117,98,109,105,116,116,101,100,0,4,29,0,0,0,0,0,0,0,85,73,87,101,98,86,105,101,119,78,97,118,105,103,97,116,105,111,110,84,121,112,101,79,116,104,101,114,0,4,31,0,0,0,0,0,0,0,78,83,72,84,84,80,67,111,111,107,105,101,65,99,99,101,112,116,80,111,108,105,99,121,65,108,119,97,121,115,0,4,30,0,0,0,0,0,0,0,78,83,72,84,84,80,67,111,111,107,105,101,65,99,99,101,112,116,80,111,108,105,99,121,78,101,118,101,114,0,4,51,0,0,0,0,0,0,0,78,83,72,84,84,80,67,111,111,107,105,101,65,99,99,101,112,116,80,111,108,105,99,121,79,110,108,121,70,114,111,109,77,97,105,110,68,111,99,117,109,101,110,116,68,111,109,97,105,110,0,4,36,0,0,0,0,0,0,0,83,75,80,97,121,109,101,110,116,84,114,97,110,115,97,99,116,105,111,110,83,116,97,116,101,80,117,114,99,104,97,115,105,110,103,0,4,35,0,0,0,0,0,0,0,83,75,80,97,121,109,101,110,116,84,114,97,110,115,97,99,116,105,111,110,83,116,97,116,101,80,117,114,99,104,97,115,101,100,0,4,32,0,0,0,0,0,0,0,83,75,80,97,121,109,101,110,116,84,114,97,110,115,97,99,116,105,111,110,83,116,97,116,101,70,97,105,108,101,100,0,4,34,0,0,0,0,0,0,0,83,75,80,97,121,109,101,110,116,84,114,97,110,115,97,99,116,105,111,110,83,116,97,116,101,82,101,115,116,111,114,101,100,0,4,15,0,0,0,0,0,0,0,83,75,69,114,114,111,114,85,110,107,110,111,119,110,0,4,21,0,0,0,0,0,0,0,83,75,69,114,114,111,114,67,108,105,101,110,116,73,110,118,97,108,105,100,0,4,24,0,0,0,0,0,0,0,83,75,69,114,114,111,114,80,97,121,109,101,110,116,67,97,110,99,101,108,108,101,100,0,4,22,0,0,0,0,0,0,0,83,75,69,114,114,111,114,80,97,121,109,101,110,116,73,110,118,97,108,105,100,0,4,25,0,0,0,0,0,0,0,83,75,69,114,114,111,114,80,97,121,109,101,110,116,78,111,116,65,108,108,111,119,101,100,0,4,24,0,0,0,0,0,0,0,85,73,83,116,97,116,117,115,66,97,114,83,116,121,108,101,68,101,102,97,117,108,116,0,4,33,0,0,0,0,0,0,0,85,73,83,116,97,116,117,115,66,97,114,83,116,121,108,101,66,108,97,99,107,84,114,97,110,115,108,117,99,101,110,116,0,4,28,0,0,0,0,0,0,0,85,73,83,116,97,116,117,115,66,97,114,83,116,121,108,101,66,108,97,99,107,79,112,97,113,117,101,0,4,42,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,72,111,114,105,122,111,110,116,97,108,65,108,105,103,110,109,101,110,116,67,101,110,116,101,114,0,4,40,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,72,111,114,105,122,111,110,116,97,108,65,108,105,103,110,109,101,110,116,76,101,102,116,0,4,41,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,72,111,114,105,122,111,110,116,97,108,65,108,105,103,110,109,101,110,116,82,105,103,104,116,0,4,40,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,72,111,114,105,122,111,110,116,97,108,65,108,105,103,110,109,101,110,116,70,105,108,108,0,4,21,0,0,0,0,0,0,0,71,75,80,101,101,114,83,116,97,116,101,65,118,97,105,108,97,98,108,101,0,4,23,0,0,0,0,0,0,0,71,75,80,101,101,114,83,116,97,116,101,85,110,97,118,97,105,108,97,98,108,101,0,4,21,0,0,0,0,0,0,0,71,75,80,101,101,114,83,116,97,116,101,67,111,110,110,101,99,116,101,100,0,4,24,0,0,0,0,0,0,0,71,75,80,101,101,114,83,116,97,116,101,68,105,115,99,111,110,110,101,99,116,101,100,0,4,22,0,0,0,0,0,0,0,71,75,80,101,101,114,83,116,97,116,101,67,111,110,110,101,99,116,105,110,103,0,4,20,0,0,0,0,0,0,0,71,75,83,101,115,115,105,111,110,77,111,100,101,83,101,114,118,101,114,0,4,20,0,0,0,0,0,0,0,71,75,83,101,115,115,105,111,110,77,111,100,101,67,108,105,101,110,116,0,4,18,0,0,0,0,0,0,0,71,75,83,101,115,115,105,111,110,77,111,100,101,80,101,101,114,0,4,19,0,0,0,0,0,0,0,71,75,83,101,110,100,68,97,116,97,82,101,108,105,97,98,108,101,0,4,21,0,0,0,0,0,0,0,71,75,83,101,110,100,68,97,116,97,85,110,114,101,108,105,97,98,108,101,0,4,46,0,0,0,0,0,0,0,85,73,73,109,97,103,101,80,105,99,107,101,114,67,111,110,116,114,111,108,108,101,114,83,111,117,114,99,101,84,121,112,101,80,104,111,116,111,76,105,98,114,97,114,121,0,4,40,0,0,0,0,0,0,0,85,73,73,109,97,103,101,80,105,99,107,101,114,67,111,110,116,114,111,108,108,101,114,83,111,117,114,99,101,84,121,112,101,67,97,109,101,114,97,0,4,50,0,0,0,0,0,0,0,85,73,73,109,97,103,101,80,105,99,107,101,114,67,111,110,116,114,111,108,108,101,114,83,111,117,114,99,101,84,121,112,101,83,97,118,101,100,80,104,111,116,111,115,65,108,98,117,109,0,4,19,0,0,0,0,0,0,0,78,83,79,114,100,101,114,101,100,65,115,99,101,110,100,105,110,103,0,3,0,0,0,0,0,0,-16,-65,4,14,0,0,0,0,0,0,0,78,83,79,114,100,101,114,101,100,83,97,109,101,0,4,20,0,0,0,0,0,0,0,78,83,79,114,100,101,114,101,100,68,101,115,99,101,110,100,105,110,103,0,4,34,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,112,97,114,97,116,111,114,83,116,121,108,101,78,111,110,101,0,4,40,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,112,97,114,97,116,111,114,83,116,121,108,101,83,105,110,103,108,101,76,105,110,101,0,4,46,0,0,0,0,0,0,0,85,73,84,97,98,108,101,86,105,101,119,67,101,108,108,83,101,112,97,114,97,116,111,114,83,116,121,108,101,83,105,110,103,108,101,76,105,110,101,69,116,99,104,101,100,0,4,36,0,0,0,0,0,0,0,107,67,76,65,117,116,104,111,114,105,122,97,116,105,111,110,83,116,97,116,117,115,78,111,116,68,101,116,101,114,109,105,110,101,100,0,4,33,0,0,0,0,0,0,0,107,67,76,65,117,116,104,111,114,105,122,97,116,105,111,110,83,116,97,116,117,115,82,101,115,116,114,105,99,116,101,100,0,4,29,0,0,0,0,0,0,0,107,67,76,65,117,116,104,111,114,105,122,97,116,105,111,110,83,116,97,116,117,115,68,101,110,105,101,100,0,4,33,0,0,0,0,0,0,0,107,67,76,65,117,116,104,111,114,105,122,97,116,105,111,110,83,116,97,116,117,115,65,117,116,104,111,114,105,122,101,100,0,4,39,0,0,0,0,0,0,0,85,73,83,119,105,112,101,71,101,115,116,117,114,101,82,101,99,111,103,110,105,122,101,114,68,105,114,101,99,116,105,111,110,82,105,103,104,116,0,4,38,0,0,0,0,0,0,0,85,73,83,119,105,112,101,71,101,115,116,117,114,101,82,101,99,111,103,110,105,122,101,114,68,105,114,101,99,116,105,111,110,76,101,102,116,0,4,36,0,0,0,0,0,0,0,85,73,83,119,105,112,101,71,101,115,116,117,114,101,82,101,99,111,103,110,105,122,101,114,68,105,114,101,99,116,105,111,110,85,112,0,4,38,0,0,0,0,0,0,0,85,73,83,119,105,112,101,71,101,115,116,117,114,101,82,101,99,111,103,110,105,122,101,114,68,105,114,101,99,116,105,111,110,68,111,119,110,0,4,40,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,86,101,114,116,105,99,97,108,65,108,105,103,110,109,101,110,116,67,101,110,116,101,114,0,4,37,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,86,101,114,116,105,99,97,108,65,108,105,103,110,109,101,110,116,84,111,112,0,4,40,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,86,101,114,116,105,99,97,108,65,108,105,103,110,109,101,110,116,66,111,116,116,111,109,0,4,38,0,0,0,0,0,0,0,85,73,67,111,110,116,114,111,108,67,111,110,116,101,110,116,86,101,114,116,105,99,97,108,65,108,105,103,110,109,101,110,116,70,105,108,108,0,4,19,0,0,0,0,0,0,0,85,73,69,118,101,110,116,84,121,112,101,84,111,117,99,104,101,115,0,4,18,0,0,0,0,0,0,0,85,73,69,118,101,110,116,84,121,112,101,77,111,116,105,111,110,0,4,25,0,0,0,0,0,0,0,85,73,69,118,101,110,116,84,121,112,101,82,101,109,111,116,101,67,111,110,116,114,111,108,0,0,0,0,0,-81,2,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,14,0,0,0,14,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,27,0,0,0,27,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,31,0,0,0,31,0,0,0,32,0,0,0,32,0,0,0,33,0,0,0,33,0,0,0,34,0,0,0,34,0,0,0,37,0,0,0,37,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,42,0,0,0,42,0,0,0,43,0,0,0,43,0,0,0,44,0,0,0,44,0,0,0,45,0,0,0,45,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,49,0,0,0,50,0,0,0,50,0,0,0,51,0,0,0,51,0,0,0,54,0,0,0,54,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,63,0,0,0,63,0,0,0,64,0,0,0,64,0,0,0,65,0,0,0,65,0,0,0,66,0,0,0,66,0,0,0,67,0,0,0,67,0,0,0,68,0,0,0,68,0,0,0,71,0,0,0,71,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,73,0,0,0,74,0,0,0,74,0,0,0,75,0,0,0,75,0,0,0,76,0,0,0,76,0,0,0,77,0,0,0,77,0,0,0,78,0,0,0,78,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,80,0,0,0,81,0,0,0,81,0,0,0,82,0,0,0,82,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,84,0,0,0,85,0,0,0,85,0,0,0,86,0,0,0,86,0,0,0,87,0,0,0,87,0,0,0,88,0,0,0,88,0,0,0,89,0,0,0,89,0,0,0,90,0,0,0,90,0,0,0,91,0,0,0,91,0,0,0,92,0,0,0,92,0,0,0,93,0,0,0,93,0,0,0,96,0,0,0,96,0,0,0,97,0,0,0,97,0,0,0,98,0,0,0,98,0,0,0,101,0,0,0,101,0,0,0,102,0,0,0,102,0,0,0,103,0,0,0,103,0,0,0,104,0,0,0,104,0,0,0,105,0,0,0,105,0,0,0,106,0,0,0,106,0,0,0,109,0,0,0,109,0,0,0,110,0,0,0,110,0,0,0,111,0,0,0,111,0,0,0,114,0,0,0,114,0,0,0,115,0,0,0,115,0,0,0,116,0,0,0,116,0,0,0,117,0,0,0,117,0,0,0,118,0,0,0,118,0,0,0,119,0,0,0,119,0,0,0,120,0,0,0,120,0,0,0,121,0,0,0,121,0,0,0,122,0,0,0,122,0,0,0,125,0,0,0,125,0,0,0,126,0,0,0,126,0,0,0,127,0,0,0,127,0,0,0,-128,0,0,0,-128,0,0,0,-127,0,0,0,-127,0,0,0,-126,0,0,0,-126,0,0,0,-125,0,0,0,-125,0,0,0,-124,0,0,0,-124,0,0,0,-123,0,0,0,-123,0,0,0,-122,0,0,0,-122,0,0,0,-121,0,0,0,-121,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-114,0,0,0,-114,0,0,0,-114,0,0,0,-114,0,0,0,-114,0,0,0,-114,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-104,0,0,0,-104,0,0,0,-103,0,0,0,-103,0,0,0,-102,0,0,0,-102,0,0,0,-101,0,0,0,-101,0,0,0,-100,0,0,0,-100,0,0,0,-97,0,0,0,-97,0,0,0,-96,0,0,0,-96,0,0,0,-95,0,0,0,-95,0,0,0,-92,0,0,0,-92,0,0,0,-91,0,0,0,-91,0,0,0,-90,0,0,0,-90,0,0,0,-89,0,0,0,-89,0,0,0,-86,0,0,0,-86,0,0,0,-85,0,0,0,-85,0,0,0,-84,0,0,0,-84,0,0,0,-83,0,0,0,-83,0,0,0,-82,0,0,0,-82,0,0,0,-81,0,0,0,-81,0,0,0,-80,0,0,0,-80,0,0,0,-79,0,0,0,-79,0,0,0,-78,0,0,0,-78,0,0,0,-77,0,0,0,-77,0,0,0,-76,0,0,0,-76,0,0,0,-75,0,0,0,-75,0,0,0,-74,0,0,0,-74,0,0,0,-73,0,0,0,-73,0,0,0,-72,0,0,0,-72,0,0,0,-71,0,0,0,-71,0,0,0,-70,0,0,0,-70,0,0,0,-69,0,0,0,-69,0,0,0,-68,0,0,0,-68,0,0,0,-67,0,0,0,-67,0,0,0,-66,0,0,0,-66,0,0,0,-65,0,0,0,-65,0,0,0,-64,0,0,0,-64,0,0,0,-61,0,0,0,-61,0,0,0,-60,0,0,0,-60,0,0,0,-59,0,0,0,-59,0,0,0,-58,0,0,0,-58,0,0,0,-54,0,0,0,-54,0,0,0,-53,0,0,0,-53,0,0,0,-52,0,0,0,-52,0,0,0,-51,0,0,0,-51,0,0,0,-48,0,0,0,-48,0,0,0,-47,0,0,0,-47,0,0,0,-44,0,0,0,-44,0,0,0,-43,0,0,0,-43,0,0,0,-42,0,0,0,-42,0,0,0,-41,0,0,0,-41,0,0,0,-38,0,0,0,-38,0,0,0,-37,0,0,0,-37,0,0,0,-36,0,0,0,-36,0,0,0,-33,0,0,0,-33,0,0,0,-32,0,0,0,-32,0,0,0,-31,0,0,0,-31,0,0,0,-30,0,0,0,-30,0,0,0,-26,0,0,0,-26,0,0,0,-25,0,0,0,-25,0,0,0,-24,0,0,0,-24,0,0,0,-23,0,0,0,-23,0,0,0,-22,0,0,0,-22,0,0,0,-21,0,0,0,-21,0,0,0,-20,0,0,0,-20,0,0,0,-17,0,0,0,-17,0,0,0,-16,0,0,0,-16,0,0,0,-15,0,0,0,-15,0,0,0,-12,0,0,0,-12,0,0,0,-11,0,0,0,-11,0,0,0,-11,0,0,0,-11,0,0,0,-11,0,0,0,-11,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-6,0,0,0,-6,0,0,0,-5,0,0,0,-5,0,0,0,-4,0,0,0,-4,0,0,0,-1,0,0,0,-1,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,2,1,0,0,2,1,0,0,3,1,0,0,3,1,0,0,4,1,0,0,4,1,0,0,5,1,0,0,5,1,0,0,8,1,0,0,8,1,0,0,9,1,0,0,9,1,0,0,10,1,0,0,10,1,0,0,11,1,0,0,11,1,0,0,14,1,0,0,14,1,0,0,15,1,0,0,15,1,0,0,16,1,0,0,16,1,0,0,17,1,0,0,17,1,0,0,20,1,0,0,20,1,0,0,21,1,0,0,21,1,0,0,22,1,0,0,22,1,0,0,23,1,0,0,23,1,0,0,24,1,0,0,24,1,0,0,25,1,0,0,25,1,0,0,26,1,0,0,26,1,0,0,29,1,0,0,29,1,0,0,30,1,0,0,30,1,0,0,31,1,0,0,31,1,0,0,32,1,0,0,32,1,0,0,33,1,0,0,33,1,0,0,36,1,0,0,36,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,38,1,0,0,38,1,0,0,38,1,0,0,38,1,0,0,38,1,0,0,38,1,0,0,39,1,0,0,39,1,0,0,39,1,0,0,39,1,0,0,39,1,0,0,39,1,0,0,40,1,0,0,40,1,0,0,40,1,0,0,40,1,0,0,40,1,0,0,40,1,0,0,41,1,0,0,41,1,0,0,41,1,0,0,41,1,0,0,41,1,0,0,41,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,45,1,0,0,45,1,0,0,46,1,0,0,46,1,0,0,47,1,0,0,47,1,0,0,48,1,0,0,48,1,0,0,49,1,0,0,49,1,0,0,50,1,0,0,50,1,0,0,53,1,0,0,53,1,0,0,54,1,0,0,54,1,0,0,55,1,0,0,55,1,0,0,59,1,0,0,59,1,0,0,60,1,0,0,60,1,0,0,61,1,0,0,61,1,0,0,62,1,0,0,62,1,0,0,65,1,0,0,65,1,0,0,66,1,0,0,66,1,0,0,67,1,0,0,67,1,0,0,68,1,0,0,68,1,0,0,69,1,0,0,69,1,0,0,72,1,0,0,72,1,0,0,73,1,0,0,73,1,0,0,74,1,0,0,74,1,0,0,77,1,0,0,77,1,0,0,78,1,0,0,78,1,0,0,79,1,0,0,79,1,0,0,80,1,0,0,80,1,0,0,83,1,0,0,83,1,0,0,84,1,0,0,84,1,0,0,85,1,0,0,85,1,0,0,86,1,0,0,86,1,0,0,87,1,0,0,87,1,0,0,90,1,0,0,90,1,0,0,91,1,0,0,91,1,0,0,92,1,0,0,92,1,0,0,95,1,0,0,95,1,0,0,96,1,0,0,96,1,0,0,99,1,0,0,99,1,0,0,100,1,0,0,100,1,0,0,101,1,0,0,101,1,0,0,104,1,0,0,104,1,0,0,105,1,0,0,105,1,0,0,106,1,0,0,106,1,0,0,109,1,0,0,109,1,0,0,110,1,0,0,110,1,0,0,111,1,0,0,111,1,0,0,114,1,0,0,114,1,0,0,115,1,0,0,115,1,0,0,116,1,0,0,116,1,0,0,117,1,0,0,117,1,0,0,120,1,0,0,120,1,0,0,120,1,0,0,120,1,0,0,120,1,0,0,120,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,122,1,0,0,122,1,0,0,122,1,0,0,122,1,0,0,122,1,0,0,122,1,0,0,123,1,0,0,123,1,0,0,123,1,0,0,123,1,0,0,123,1,0,0,123,1,0,0,126,1,0,0,126,1,0,0,127,1,0,0,127,1,0,0,-128,1,0,0,-128,1,0,0,-127,1,0,0,-127,1,0,0,-124,1,0,0,-124,1,0,0,-123,1,0,0,-123,1,0,0,-122,1,0,0,-122,1,0,0,-121,1,0,0,-121,1,0,0,-118,1,0,0,-118,1,0,0,-117,1,0,0,-117,1,0,0,-116,1,0,0,-116,1,0,0,-116,1,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,101,120,116,47,104,116,116,112,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,26,0,0,0,5,0,0,0,6,64,64,0,26,64,0,0,22,0,0,-128,30,0,-128,0,5,0,0,0,6,64,64,0,100,0,0,0,9,64,0,-127,5,0,0,0,6,64,64,0,100,64,0,0,9,64,-128,-127,5,0,0,0,6,64,64,0,100,-128,0,0,9,64,0,-126,5,0,0,0,6,64,64,0,100,-64,0,0,9,64,-128,-126,5,0,0,0,6,64,64,0,100,0,1,0,9,64,0,-125,30,0,-128,0,7,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,104,116,116,112,0,4,5,0,0,0,0,0,0,0,112,111,115,116,0,4,4,0,0,0,0,0,0,0,103,101,116,0,4,7,0,0,0,0,0,0,0,100,101,108,101,116,101,0,4,4,0,0,0,0,0,0,0,112,117,116,0,4,13,0,0,0,0,0,0,0,101,115,99,97,112,101,80,97,114,97,109,115,0,5,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,6,0,0,0,0,1,0,3,8,0,0,0,9,64,64,-128,69,-128,0,0,70,-64,-64,0,70,0,-63,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,0,0,0,0,109,101,116,104,111,100,0,4,5,0,0,0,0,0,0,0,80,79,83,84,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,104,116,116,112,0,4,8,0,0,0,0,0,0,0,114,101,113,117,101,115,116,0,0,0,0,0,8,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,11,0,0,0,0,1,0,3,8,0,0,0,9,64,64,-128,69,-128,0,0,70,-64,-64,0,70,0,-63,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,0,0,0,0,109,101,116,104,111,100,0,4,4,0,0,0,0,0,0,0,71,69,84,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,104,116,116,112,0,4,8,0,0,0,0,0,0,0,114,101,113,117,101,115,116,0,0,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,16,0,0,0,0,1,0,3,8,0,0,0,9,64,64,-128,69,-128,0,0,70,-64,-64,0,70,0,-63,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,0,0,0,0,109,101,116,104,111,100,0,4,7,0,0,0,0,0,0,0,68,69,76,69,84,69,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,104,116,116,112,0,4,8,0,0,0,0,0,0,0,114,101,113,117,101,115,116,0,0,0,0,0,8,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,21,0,0,0,0,1,0,3,8,0,0,0,9,64,64,-128,69,-128,0,0,70,-64,-64,0,70,0,-63,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,0,0,0,0,109,101,116,104,111,100,0,4,4,0,0,0,0,0,0,0,80,85,84,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,104,116,116,112,0,4,8,0,0,0,0,0,0,0,114,101,113,117,101,115,116,0,0,0,0,0,8,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,43,0,0,0,0,2,0,6,23,0,0,0,26,64,0,0,22,64,0,-128,-125,0,0,1,-98,0,0,1,-123,0,0,0,-64,0,0,0,-100,-128,0,1,23,64,64,1,22,0,0,-128,30,0,0,1,-123,-128,0,0,-122,-64,64,1,-64,0,0,0,36,1,0,0,0,0,-128,0,-100,-128,-128,1,-59,-128,0,0,-58,0,-63,1,0,1,0,1,65,65,1,0,-35,0,-128,1,-34,0,0,0,30,0,-128,0,6,0,0,0,4,5,0,0,0,0,0,0,0,116,121,112,101,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,4,0,0,0,0,0,0,0,109,97,112,0,4,7,0,0,0,0,0,0,0,99,111,110,99,97,116,0,4,2,0,0,0,0,0,0,0,38,0,1,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,40,0,0,0,1,2,0,6,46,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,23,64,64,1,22,-64,1,-128,-123,-128,0,0,-122,-64,64,1,-122,0,65,1,-64,0,0,0,0,1,-128,0,-99,0,-128,1,-98,0,0,0,22,-64,7,-128,-123,64,1,0,-122,-128,65,1,-59,-64,1,0,0,1,0,0,-36,0,0,1,-100,-128,0,0,0,0,0,1,-124,0,0,0,-102,0,0,0,22,0,4,-128,-123,0,0,0,-64,0,-128,0,-100,-128,0,1,23,0,66,1,22,64,1,-128,-127,64,2,0,-117,-128,66,1,4,1,0,0,-100,-128,-128,1,64,0,0,1,22,64,1,-128,-127,-64,2,0,-117,-128,66,1,4,1,0,0,64,1,-128,0,-100,-128,0,2,64,0,0,1,-128,0,-128,0,-63,0,3,0,0,1,0,0,-107,0,1,1,-98,0,0,1,30,0,-128,0,13,0,0,0,4,5,0,0,0,0,0,0,0,116,121,112,101,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,104,116,116,112,0,4,13,0,0,0,0,0,0,0,101,115,99,97,112,101,80,97,114,97,109,115,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,0,0,0,0,101,115,99,97,112,101,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,7,0,0,0,0,0,0,0,110,117,109,98,101,114,0,4,5,0,0,0,0,0,0,0,37,115,91,93,0,4,7,0,0,0,0,0,0,0,102,111,114,109,97,116,0,4,7,0,0,0,0,0,0,0,37,115,91,37,115,93,0,4,2,0,0,0,0,0,0,0,61,0,0,0,0,0,46,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,40,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,45,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,45,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,112,114,101,102,105,120,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,40,0,0,0,40,0,0,0,27,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,43,0,0,0,3,0,0,0,7,0,0,0,0,0,0,0,112,97,114,97,109,115,0,0,0,0,0,22,0,0,0,7,0,0,0,0,0,0,0,112,114,101,102,105,120,0,0,0,0,0,22,0,0,0,7,0,0,0,0,0,0,0,112,97,114,97,109,115,0,16,0,0,0,22,0,0,0,0,0,0,0,26,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,6,0,0,0,3,0,0,0,8,0,0,0,8,0,0,0,11,0,0,0,8,0,0,0,13,0,0,0,13,0,0,0,16,0,0,0,13,0,0,0,18,0,0,0,18,0,0,0,21,0,0,0,18,0,0,0,23,0,0,0,23,0,0,0,43,0,0,0,23,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,101,120,116,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,13,0,0,0,5,0,0,0,65,64,0,0,28,64,0,1,5,0,0,0,65,-128,0,0,28,64,0,1,5,0,0,0,65,-64,0,0,28,64,0,1,5,0,0,0,65,0,1,0,28,64,0,1,30,0,-128,0,5,0,0,0,4,8,0,0,0,0,0,0,0,114,101,113,117,105,114,101,0,4,14,0,0,0,0,0,0,0,119,97,120,46,101,120,116,46,116,97,98,108,101,0,4,15,0,0,0,0,0,0,0,119,97,120,46,101,120,116,46,115,116,114,105,110,103,0,4,15,0,0,0,0,0,0,0,119,97,120,46,101,120,116,46,110,117,109,98,101,114,0,4,13,0,0,0,0,0,0,0,119,97,120,46,101,120,116,46,104,116,116,112,0,0,0,0,0,13,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,101,120,116,47,110,117,109,98,101,114,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,13,27,0,0,0,10,0,0,0,7,0,0,0,10,0,0,6,65,64,0,0,-127,-128,0,0,-63,-64,0,0,1,1,1,0,65,65,1,0,-127,-127,1,0,-63,-63,1,0,1,2,2,0,65,66,2,0,-127,-126,2,0,-63,-62,2,0,1,3,3,0,34,64,0,6,69,0,0,0,-92,0,0,0,0,0,0,0,73,-128,-128,-122,69,0,0,0,-92,64,0,0,73,-128,0,-121,69,0,0,0,-92,-128,0,0,73,-128,-128,-121,30,0,-128,0,16,0,0,0,4,7,0,0,0,0,0,0,0,110,117,109,98,101,114,0,4,8,0,0,0,0,0,0,0,74,97,110,117,97,114,121,0,4,9,0,0,0,0,0,0,0,70,101,98,114,117,97,114,121,0,4,6,0,0,0,0,0,0,0,77,97,114,99,104,0,4,6,0,0,0,0,0,0,0,65,112,114,105,108,0,4,4,0,0,0,0,0,0,0,77,97,121,0,4,5,0,0,0,0,0,0,0,74,117,110,101,0,4,5,0,0,0,0,0,0,0,74,117,108,121,0,4,7,0,0,0,0,0,0,0,65,117,103,117,115,116,0,4,10,0,0,0,0,0,0,0,83,101,112,116,101,109,98,101,114,0,4,8,0,0,0,0,0,0,0,79,99,116,111,98,101,114,0,4,9,0,0,0,0,0,0,0,78,111,118,101,109,98,101,114,0,4,9,0,0,0,0,0,0,0,68,101,99,101,109,98,101,114,0,4,8,0,0,0,0,0,0,0,116,111,77,111,110,116,104,0,4,11,0,0,0,0,0,0,0,116,111,99,117,114,114,101,110,99,121,0,4,14,0,0,0,0,0,0,0,99,111,109,109,97,83,101,112,101,114,97,116,101,0,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,7,0,0,0,1,1,0,3,8,0,0,0,69,0,0,0,-128,0,0,0,92,-128,0,1,0,0,-128,0,68,0,0,0,70,0,-128,0,94,0,0,1,30,0,-128,0,1,0,0,0,4,9,0,0,0,0,0,0,0,116,111,110,117,109,98,101,114,0,0,0,0,0,8,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,7,0,0,0,1,0,0,0,14,0,0,0,0,0,0,0,110,117,109,98,101,114,84,111,77,111,110,116,104,0,0,0,0,0,0,0,0,0,9,0,0,0,11,0,0,0,0,1,0,4,8,0,0,0,65,0,0,0,-123,64,0,0,-122,-128,64,1,-64,0,0,0,-100,-128,0,1,85,-128,-128,0,94,0,0,1,30,0,-128,0,3,0,0,0,4,2,0,0,0,0,0,0,0,36,0,4,7,0,0,0,0,0,0,0,110,117,109,98,101,114,0,4,14,0,0,0,0,0,0,0,99,111,109,109,97,83,101,112,101,114,97,116,101,0,0,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,21,0,0,0,0,1,0,6,18,0,0,0,69,0,0,0,-128,0,0,0,92,-128,0,1,-123,-128,0,0,-122,-64,64,1,-64,0,-128,0,1,1,1,0,65,65,1,0,-100,-64,0,2,-57,64,0,0,64,0,0,1,-123,64,0,0,23,-128,65,1,22,0,-3,127,22,0,0,-128,22,-128,-4,127,94,0,0,1,30,0,-128,0,7,0,0,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,2,0,0,0,0,0,0,0,107,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,0,0,0,0,103,115,117,98,0,4,17,0,0,0,0,0,0,0,94,40,45,63,37,100,43,41,40,37,100,37,100,37,100,41,0,4,6,0,0,0,0,0,0,0,37,49,44,37,50,0,3,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,20,0,0,0,21,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,17,0,0,0,10,0,0,0,0,0,0,0,102,111,114,109,97,116,116,101,100,0,3,0,0,0,17,0,0,0,0,0,0,0,27,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,7,0,0,0,4,0,0,0,9,0,0,0,11,0,0,0,9,0,0,0,13,0,0,0,21,0,0,0,13,0,0,0,21,0,0,0,1,0,0,0,14,0,0,0,0,0,0,0,110,117,109,98,101,114,84,111,77,111,110,116,104,0,16,0,0,0,26,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,101,120,116,47,115,116,114,105,110,103,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,22,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,5,0,0,0,100,64,0,0,9,64,0,-127,5,0,0,0,100,-128,0,0,9,64,-128,-127,5,0,0,0,100,-64,0,0,9,64,0,-126,5,0,0,0,100,0,1,0,9,64,-128,-126,5,0,0,0,100,64,1,0,9,64,0,-125,5,0,0,0,100,-128,1,0,9,64,-128,-125,30,0,-128,0,8,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,9,0,0,0,0,0,0,0,117,110,101,115,99,97,112,101,0,4,6,0,0,0,0,0,0,0,115,112,108,105,116,0,4,6,0,0,0,0,0,0,0,115,116,114,105,112,0,4,10,0,0,0,0,0,0,0,99,97,109,101,108,67,97,115,101,0,4,7,0,0,0,0,0,0,0,101,115,99,97,112,101,0,4,15,0,0,0,0,0,0,0,100,101,99,111,100,101,69,110,116,105,116,105,101,115,0,4,16,0,0,0,0,0,0,0,99,97,115,101,73,110,115,101,110,115,105,116,105,118,101,0,7,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,0,1,0,5,16,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,1,-63,0,0,92,-128,0,2,0,0,-128,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,0,1,0,36,1,0,0,92,-128,0,2,0,0,-128,0,30,0,0,1,30,0,-128,0,5,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,0,0,0,0,103,115,117,98,0,4,2,0,0,0,0,0,0,0,43,0,4,2,0,0,0,0,0,0,0,32,0,4,9,0,0,0,0,0,0,0,37,37,40,37,120,37,120,41,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0,0,1,0,5,9,0,0,0,69,0,0,0,70,64,-64,0,-123,-128,0,0,-64,0,0,0,1,-63,0,0,-100,0,-128,1,93,0,0,0,94,0,0,0,30,0,-128,0,4,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,0,0,0,0,99,104,97,114,0,4,9,0,0,0,0,0,0,0,116,111,110,117,109,98,101,114,0,3,0,0,0,0,0,0,48,64,0,0,0,0,9,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,104,101,120,0,0,0,0,0,8,0,0,0,0,0,0,0,16,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,117,114,108,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,17,0,0,0,0,2,0,10,21,0,0,0,-118,0,0,0,-59,0,0,0,-58,64,-64,1,0,1,0,0,65,-127,0,0,-101,65,-128,0,22,0,0,-128,-127,-63,0,0,-63,1,1,0,85,-63,-127,2,-36,0,-127,1,22,0,1,-128,-59,65,1,0,-58,-127,-63,3,0,2,0,1,64,2,0,3,-36,65,-128,1,-31,64,0,0,22,0,-2,127,-98,0,0,1,30,0,-128,0,7,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,0,0,0,0,103,109,97,116,99,104,0,4,4,0,0,0,0,0,0,0,40,91,94,0,4,2,0,0,0,0,0,0,0,32,0,4,4,0,0,0,0,0,0,0,93,43,41,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,0,0,0,0,21,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,12,0,0,0,13,0,0,0,16,0,0,0,17,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,115,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,115,101,112,0,0,0,0,0,20,0,0,0,2,0,0,0,0,0,0,0,116,0,1,0,0,0,20,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,11,0,0,0,19,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,11,0,0,0,19,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,11,0,0,0,19,0,0,0,2,0,0,0,0,0,0,0,111,0,12,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,24,0,0,0,0,2,0,6,19,0,0,0,90,64,0,0,22,0,0,-128,65,0,0,0,-117,64,64,0,1,-127,0,0,64,1,-128,0,21,65,1,2,65,-63,0,0,-100,-128,0,2,0,0,0,1,-117,64,64,0,0,1,-128,0,65,1,1,0,21,65,1,2,65,-63,0,0,-100,-128,0,2,0,0,0,1,30,0,0,1,30,0,-128,0,5,0,0,0,4,4,0,0,0,0,0,0,0,37,115,43,0,4,5,0,0,0,0,0,0,0,103,115,117,98,0,4,2,0,0,0,0,0,0,0,94,0,4,1,0,0,0,0,0,0,0,0,4,2,0,0,0,0,0,0,0,36,0,0,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,115,0,0,0,0,0,18,0,0,0,8,0,0,0,0,0,0,0,112,97,116,116,101,114,110,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,34,0,0,0,0,1,0,13,27,0,0,0,75,0,64,0,-63,64,0,0,92,-128,-128,1,-123,-128,0,0,-122,-64,64,1,-64,0,-128,0,1,1,1,0,-100,-128,-128,1,-59,64,1,0,0,1,-128,0,-36,0,1,1,22,-128,2,-128,0,2,0,1,75,-126,-63,3,-63,2,1,0,1,3,1,0,92,-126,0,2,75,-62,-63,4,92,-126,0,1,-117,-126,-63,3,1,3,2,0,-100,-126,-128,1,-107,-128,2,4,-31,-128,0,0,22,-128,-4,127,-98,0,0,1,30,0,-128,0,9,0,0,0,4,6,0,0,0,0,0,0,0,115,112,108,105,116,0,4,3,0,0,0,0,0,0,0,95,45,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,114,101,109,111,118,101,0,3,0,0,0,0,0,0,-16,63,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,4,0,0,0,0,0,0,0,115,117,98,0,4,6,0,0,0,0,0,0,0,117,112,112,101,114,0,3,0,0,0,0,0,0,0,64,0,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,29,0,0,0,30,0,0,0,33,0,0,0,34,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,115,0,0,0,0,0,26,0,0,0,11,0,0,0,0,0,0,0,115,112,108,105,116,84,97,98,108,101,0,3,0,0,0,26,0,0,0,7,0,0,0,0,0,0,0,114,101,115,117,108,116,0,8,0,0,0,26,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,11,0,0,0,25,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,11,0,0,0,25,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,11,0,0,0,25,0,0,0,2,0,0,0,0,0,0,0,105,0,12,0,0,0,23,0,0,0,6,0,0,0,0,0,0,0,99,104,117,110,107,0,12,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,44,0,0,0,0,1,0,5,16,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,36,1,0,0,92,-128,0,2,0,0,-128,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-64,0,0,1,1,1,0,92,-128,0,2,0,0,-128,0,30,0,0,1,30,0,-128,0,5,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,0,0,0,0,103,115,117,98,0,4,51,0,0,0,0,0,0,0,40,91,33,37,42,39,37,40,37,41,59,58,64,38,61,37,43,37,36,44,47,37,63,35,37,91,37,93,60,62,126,37,46,34,123,125,124,92,37,45,96,95,37,94,37,37,37,99,93,41,0,4,2,0,0,0,0,0,0,0,32,0,4,2,0,0,0,0,0,0,0,43,0,1,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,40,0,0,0,0,1,0,5,10,0,0,0,69,0,0,0,70,64,-64,0,-127,-128,0,0,-59,0,0,0,-58,-64,-64,1,0,1,0,0,-36,0,0,1,93,0,0,0,94,0,0,0,30,0,-128,0,4,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,0,0,0,0,102,111,114,109,97,116,0,4,7,0,0,0,0,0,0,0,37,37,37,48,50,88,0,4,5,0,0,0,0,0,0,0,98,121,116,101,0,0,0,0,0,10,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,99,0,0,0,0,0,9,0,0,0,0,0,0,0,16,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,40,0,0,0,37,0,0,0,40,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,43,0,0,0,44,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,115,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,90,0,0,0,0,1,0,6,47,0,0,0,74,-128,6,0,73,64,64,-128,73,-64,64,-127,73,64,65,-126,73,-64,65,-125,73,64,66,-124,73,-64,66,-123,73,64,67,-122,73,-64,67,-121,73,64,68,-120,73,-64,68,-119,73,64,69,-118,73,-64,69,-117,73,64,70,-116,73,-64,70,-115,73,64,71,-114,73,-64,71,-113,73,64,72,-112,73,-64,72,-111,73,64,73,-110,73,-64,73,-109,73,64,74,-108,73,-64,74,-107,73,64,75,-106,73,-64,75,-105,73,64,76,-104,73,-64,76,-103,73,64,77,-102,73,-64,77,-101,73,64,78,-100,73,-64,78,-99,73,64,79,-98,73,-64,79,-97,73,64,80,-96,73,-64,80,-95,73,64,81,-94,73,-64,81,-93,73,64,82,-92,73,-64,82,-91,-123,0,19,0,-122,64,83,1,-64,0,0,0,1,-127,19,0,64,1,-128,0,-99,0,0,2,-98,0,0,0,30,0,-128,0,79,0,0,0,4,4,0,0,0,0,0,0,0,97,109,112,0,4,2,0,0,0,0,0,0,0,38,0,4,3,0,0,0,0,0,0,0,108,116,0,4,2,0,0,0,0,0,0,0,60,0,4,3,0,0,0,0,0,0,0,103,116,0,4,2,0,0,0,0,0,0,0,62,0,4,5,0,0,0,0,0,0,0,113,117,111,116,0,4,2,0,0,0,0,0,0,0,34,0,4,5,0,0,0,0,0,0,0,97,112,111,115,0,4,2,0,0,0,0,0,0,0,39,0,4,5,0,0,0,0,0,0,0,110,98,115,112,0,4,2,0,0,0,0,0,0,0,32,0,4,6,0,0,0,0,0,0,0,105,101,120,99,108,0,4,3,0,0,0,0,0,0,0,-62,-95,0,4,5,0,0,0,0,0,0,0,99,101,110,116,0,4,3,0,0,0,0,0,0,0,-62,-94,0,4,6,0,0,0,0,0,0,0,112,111,117,110,100,0,4,3,0,0,0,0,0,0,0,-62,-93,0,4,7,0,0,0,0,0,0,0,99,117,114,114,101,110,0,4,3,0,0,0,0,0,0,0,-62,-92,0,4,4,0,0,0,0,0,0,0,121,101,110,0,4,3,0,0,0,0,0,0,0,-62,-91,0,4,7,0,0,0,0,0,0,0,98,114,118,98,97,114,0,4,3,0,0,0,0,0,0,0,-62,-90,0,4,5,0,0,0,0,0,0,0,115,101,99,116,0,4,3,0,0,0,0,0,0,0,-62,-89,0,4,4,0,0,0,0,0,0,0,117,109,108,0,4,3,0,0,0,0,0,0,0,-62,-88,0,4,5,0,0,0,0,0,0,0,99,111,112,121,0,4,3,0,0,0,0,0,0,0,-62,-87,0,4,5,0,0,0,0,0,0,0,111,114,100,102,0,4,3,0,0,0,0,0,0,0,-62,-86,0,4,6,0,0,0,0,0,0,0,108,97,113,117,111,0,4,3,0,0,0,0,0,0,0,-62,-85,0,4,4,0,0,0,0,0,0,0,115,104,121,0,4,3,0,0,0,0,0,0,0,-62,-83,0,4,4,0,0,0,0,0,0,0,114,101,103,0,4,3,0,0,0,0,0,0,0,-62,-82,0,4,5,0,0,0,0,0,0,0,109,97,99,114,0,4,3,0,0,0,0,0,0,0,-62,-81,0,4,4,0,0,0,0,0,0,0,100,101,103,0,4,3,0,0,0,0,0,0,0,-62,-80,0,4,7,0,0,0,0,0,0,0,112,108,117,115,109,110,0,4,3,0,0,0,0,0,0,0,-62,-79,0,4,5,0,0,0,0,0,0,0,115,117,112,50,0,4,3,0,0,0,0,0,0,0,-62,-78,0,4,5,0,0,0,0,0,0,0,115,117,112,51,0,4,3,0,0,0,0,0,0,0,-62,-77,0,4,6,0,0,0,0,0,0,0,97,99,117,116,101,0,4,3,0,0,0,0,0,0,0,-62,-76,0,4,6,0,0,0,0,0,0,0,109,105,99,114,111,0,4,3,0,0,0,0,0,0,0,-62,-75,0,4,5,0,0,0,0,0,0,0,112,97,114,97,0,4,3,0,0,0,0,0,0,0,-62,-74,0,4,7,0,0,0,0,0,0,0,109,105,100,100,111,116,0,4,3,0,0,0,0,0,0,0,-62,-73,0,4,6,0,0,0,0,0,0,0,99,101,100,105,108,0,4,3,0,0,0,0,0,0,0,-62,-72,0,4,5,0,0,0,0,0,0,0,115,117,112,49,0,4,3,0,0,0,0,0,0,0,-62,-71,0,4,5,0,0,0,0,0,0,0,111,114,100,109,0,4,3,0,0,0,0,0,0,0,-62,-70,0,4,6,0,0,0,0,0,0,0,114,97,113,117,111,0,4,3,0,0,0,0,0,0,0,-62,-69,0,4,7,0,0,0,0,0,0,0,102,114,97,99,49,52,0,4,3,0,0,0,0,0,0,0,-62,-68,0,4,7,0,0,0,0,0,0,0,102,114,97,99,49,50,0,4,3,0,0,0,0,0,0,0,-62,-67,0,4,7,0,0,0,0,0,0,0,102,114,97,99,51,52,0,4,3,0,0,0,0,0,0,0,-62,-66,0,4,7,0,0,0,0,0,0,0,105,113,117,101,115,116,0,4,3,0,0,0,0,0,0,0,-62,-65,0,4,6,0,0,0,0,0,0,0,116,105,109,101,115,0,4,3,0,0,0,0,0,0,0,-61,-105,0,4,7,0,0,0,0,0,0,0,100,105,118,105,100,101,0,4,3,0,0,0,0,0,0,0,-61,-73,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,0,0,0,0,103,115,117,98,0,4,8,0,0,0,0,0,0,0,38,40,37,119,43,41,59,0,0,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,89,0,0,0,90,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,115,0,0,0,0,0,46,0,0,0,9,0,0,0,0,0,0,0,101,110,116,105,116,105,101,115,0,39,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,97,0,0,0,0,1,0,5,9,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,36,1,0,0,92,-128,0,2,0,0,-128,0,30,0,0,1,30,0,-128,0,3,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,5,0,0,0,0,0,0,0,103,115,117,98,0,4,3,0,0,0,0,0,0,0,37,97,0,1,0,0,0,0,0,0,0,0,0,0,0,93,0,0,0,95,0,0,0,0,1,0,6,14,0,0,0,69,0,0,0,70,64,-64,0,-127,-128,0,0,-59,0,0,0,-58,-64,-64,1,0,1,0,0,-36,-128,0,1,5,1,0,0,6,1,65,2,64,1,0,0,28,1,0,1,93,0,0,0,94,0,0,0,30,0,-128,0,5,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,0,0,0,0,102,111,114,109,97,116,0,4,7,0,0,0,0,0,0,0,91,37,115,37,115,93,0,4,6,0,0,0,0,0,0,0,108,111,119,101,114,0,4,6,0,0,0,0,0,0,0,117,112,112,101,114,0,0,0,0,0,14,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,95,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,99,0,0,0,0,0,13,0,0,0,0,0,0,0,9,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,95,0,0,0,93,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,115,0,0,0,0,0,8,0,0,0,0,0,0,0,22,0,0,0,1,0,0,0,8,0,0,0,1,0,0,0,10,0,0,0,17,0,0,0,10,0,0,0,19,0,0,0,24,0,0,0,19,0,0,0,26,0,0,0,34,0,0,0,26,0,0,0,36,0,0,0,44,0,0,0,36,0,0,0,46,0,0,0,90,0,0,0,46,0,0,0,92,0,0,0,97,0,0,0,92,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,101,120,116,47,116,97,98,108,101,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,49,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,5,0,0,0,100,64,0,0,9,64,0,-127,5,0,0,0,100,-128,0,0,9,64,-128,-127,5,0,0,0,100,-64,0,0,9,64,0,-126,5,0,0,0,100,0,1,0,9,64,-128,-126,5,0,0,0,100,64,1,0,9,64,0,-125,5,0,0,0,100,-128,1,0,9,64,-128,-125,5,0,0,0,100,-64,1,0,9,64,0,-124,5,0,0,0,100,0,2,0,9,64,-128,-124,5,0,0,0,100,64,2,0,9,64,0,-123,5,0,0,0,100,-128,2,0,9,64,-128,-123,5,0,0,0,100,-64,2,0,9,64,0,-122,5,0,0,0,100,0,3,0,9,64,-128,-122,5,0,0,0,100,64,3,0,9,64,0,-121,5,0,0,0,100,-128,3,0,9,64,-128,-121,5,0,0,0,100,-64,3,0,9,64,0,-120,30,0,-128,0,17,0,0,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,6,0,0,0,0,0,0,0,99,108,111,110,101,0,4,6,0,0,0,0,0,0,0,109,101,114,103,101,0,4,5,0,0,0,0,0,0,0,107,101,121,115,0,4,7,0,0,0,0,0,0,0,117,110,105,113,117,101,0,4,7,0,0,0,0,0,0,0,118,97,108,117,101,115,0,4,5,0,0,0,0,0,0,0,108,97,115,116,0,4,7,0,0,0,0,0,0,0,97,112,112,101,110,100,0,4,8,0,0,0,0,0,0,0,105,110,100,101,120,79,102,0,4,9,0,0,0,0,0,0,0,105,110,99,108,117,100,101,115,0,4,12,0,0,0,0,0,0,0,114,101,109,111,118,101,86,97,108,117,101,0,4,5,0,0,0,0,0,0,0,101,97,99,104,0,4,5,0,0,0,0,0,0,0,102,105,110,100,0,4,7,0,0,0,0,0,0,0,102,105,108,116,101,114,0,4,4,0,0,0,0,0,0,0,109,97,112,0,4,8,0,0,0,0,0,0,0,103,114,111,117,112,66,121,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,16,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,17,0,0,0,0,2,0,10,29,0,0,0,-118,0,0,0,90,64,0,0,22,64,1,-128,-59,0,0,0,0,1,0,1,69,65,0,0,-128,1,0,0,92,1,0,1,-36,64,0,0,-59,-128,0,0,0,1,0,0,-36,0,1,1,22,-64,2,-128,5,-62,0,0,64,2,-128,3,28,-126,0,1,23,0,65,4,22,64,1,-128,5,2,1,0,6,66,65,4,64,2,-128,3,28,-126,0,1,-119,0,2,3,22,0,0,-128,-119,-64,1,3,-31,-128,0,0,22,64,-4,127,-98,0,0,1,30,0,-128,0,6,0,0,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,13,0,0,0,0,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,5,0,0,0,0,0,0,0,116,121,112,101,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,6,0,0,0,0,0,0,0,99,108,111,110,101,0,0,0,0,0,29,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,12,0,0,0,8,0,0,0,13,0,0,0,16,0,0,0,17,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,28,0,0,0,7,0,0,0,0,0,0,0,110,111,109,101,116,97,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,117,0,1,0,0,0,28,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,12,0,0,0,27,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,12,0,0,0,27,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,12,0,0,0,27,0,0,0,2,0,0,0,0,0,0,0,105,0,13,0,0,0,25,0,0,0,2,0,0,0,0,0,0,0,118,0,13,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,27,0,0,0,0,2,0,9,13,0,0,0,-123,0,0,0,-122,64,64,1,-64,0,0,0,-100,-128,0,1,-59,-128,0,0,0,1,-128,0,-36,0,1,1,22,0,0,-128,-119,-64,1,3,-31,-128,0,0,22,0,-1,127,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,6,0,0,0,0,0,0,0,99,108,111,110,101,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,0,0,0,0,13,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,22,0,0,0,23,0,0,0,26,0,0,0,27,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,12,0,0,0,2,0,0,0,0,0,0,0,117,0,0,0,0,0,12,0,0,0,2,0,0,0,0,0,0,0,114,0,4,0,0,0,12,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,7,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,7,0,0,0,11,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,7,0,0,0,11,0,0,0,2,0,0,0,0,0,0,0,105,0,8,0,0,0,9,0,0,0,2,0,0,0,0,0,0,0,118,0,8,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,33,0,0,0,0,1,0,10,14,0,0,0,74,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,0,1,-128,-59,65,0,0,-58,-127,-64,3,0,2,-128,0,64,2,-128,2,-36,65,-128,1,-95,-128,0,0,22,0,-2,127,94,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,0,0,0,0,14,0,0,0,30,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,13,0,0,0,5,0,0,0,0,0,0,0,107,101,121,115,0,1,0,0,0,13,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,12,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,12,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,12,0,0,0,2,0,0,0,0,0,0,0,107,0,5,0,0,0,10,0,0,0,2,0,0,0,0,0,0,0,118,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,42,0,0,0,0,1,0,10,21,0,0,0,74,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,-64,2,-128,-59,65,0,0,-58,-127,-64,3,0,2,-128,0,64,2,0,3,-36,-127,-128,1,-38,65,0,0,22,0,1,-128,-59,65,0,0,-58,-63,-64,3,0,2,-128,0,64,2,0,3,-36,65,-128,1,-95,-128,0,0,22,64,-4,127,94,0,0,1,30,0,-128,0,4,0,0,0,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,9,0,0,0,0,0,0,0,105,110,99,108,117,100,101,115,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,0,0,0,0,21,0,0,0,36,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,37,0,0,0,38,0,0,0,41,0,0,0,42,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,20,0,0,0,5,0,0,0,0,0,0,0,115,101,101,110,0,1,0,0,0,20,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,19,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,19,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,19,0,0,0,2,0,0,0,0,0,0,0,105,0,5,0,0,0,17,0,0,0,2,0,0,0,0,0,0,0,118,0,5,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,48,0,0,0,0,1,0,10,14,0,0,0,74,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,0,1,-128,-59,65,0,0,-58,-127,-64,3,0,2,-128,0,64,2,0,3,-36,65,-128,1,-95,-128,0,0,22,0,-2,127,94,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,0,0,0,0,14,0,0,0,45,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,13,0,0,0,7,0,0,0,0,0,0,0,118,97,108,117,101,115,0,1,0,0,0,13,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,12,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,12,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,12,0,0,0,2,0,0,0,0,0,0,0,107,0,5,0,0,0,10,0,0,0,2,0,0,0,0,0,0,0,118,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,52,0,0,0,0,1,0,2,4,0,0,0,84,0,0,0,70,64,0,0,94,0,0,1,30,0,-128,0,0,0,0,0,0,0,0,0,4,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,52,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,60,0,0,0,0,2,0,10,13,0,0,0,-123,0,0,0,-64,0,-128,0,-100,0,1,1,22,0,1,-128,-59,65,0,0,-58,-127,-64,3,0,2,0,0,64,2,0,3,-36,65,-128,1,-95,-128,0,0,22,0,-2,127,30,0,0,1,30,0,-128,0,3,0,0,0,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,0,0,0,0,13,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,55,0,0,0,56,0,0,0,59,0,0,0,60,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,12,0,0,0,11,0,0,0,0,0,0,0,109,111,114,101,86,97,108,117,101,115,0,0,0,0,0,12,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,11,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,11,0,0,0,2,0,0,0,0,0,0,0,105,0,4,0,0,0,9,0,0,0,2,0,0,0,0,0,0,0,118,0,4,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,72,0,0,0,0,2,0,9,24,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,-128,3,-128,-59,65,0,0,0,2,-128,0,-36,-127,0,1,23,-128,-64,3,22,-128,1,-128,-64,1,-128,0,0,2,0,3,-36,-127,0,1,-38,1,0,0,22,0,1,-128,94,1,0,1,22,-128,0,-128,23,64,0,3,22,0,0,-128,94,1,0,1,-95,-128,0,0,22,-128,-5,127,-125,0,0,1,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,5,0,0,0,0,0,0,0,116,121,112,101,0,4,9,0,0,0,0,0,0,0,102,117,110,99,116,105,111,110,0,0,0,0,0,24,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,63,0,0,0,68,0,0,0,71,0,0,0,71,0,0,0,72,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,23,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,23,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,21,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,21,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,21,0,0,0,2,0,0,0,0,0,0,0,107,0,4,0,0,0,19,0,0,0,2,0,0,0,0,0,0,0,118,0,4,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,76,0,0,0,0,2,0,5,7,0,0,0,-123,0,0,0,-122,64,64,1,-64,0,0,0,0,1,-128,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,2,0,0,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,8,0,0,0,0,0,0,0,105,110,100,101,120,79,102,0,0,0,0,0,7,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,76,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,6,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,82,0,0,0,0,2,0,6,14,0,0,0,-123,0,0,0,-122,64,64,1,-64,0,0,0,0,1,-128,0,-100,-128,-128,1,-102,0,0,0,22,0,1,-128,-59,0,0,0,-58,-128,-64,1,0,1,0,0,64,1,0,1,-36,64,-128,1,30,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,8,0,0,0,0,0,0,0,105,110,100,101,120,79,102,0,4,7,0,0,0,0,0,0,0,114,101,109,111,118,101,0,0,0,0,0,14,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,13,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,13,0,0,0,6,0,0,0,0,0,0,0,105,110,100,101,120,0,5,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,88,0,0,0,0,2,0,10,11,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,-64,0,-128,-64,1,-128,0,0,2,0,3,64,2,-128,2,-36,65,-128,1,-95,-128,0,0,22,64,-2,127,30,0,-128,0,1,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,0,0,0,0,11,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,85,0,0,0,86,0,0,0,88,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,10,0,0,0,5,0,0,0,0,0,0,0,102,117,110,99,0,0,0,0,0,10,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,10,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,10,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,10,0,0,0,2,0,0,0,0,0,0,0,107,0,4,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,118,0,4,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,0,0,0,96,0,0,0,0,2,0,9,17,0,0,0,-123,0,0,0,-64,0,0,0,-100,0,1,1,22,-64,1,-128,-64,1,-128,0,0,2,0,3,-36,-127,0,1,-38,1,0,0,22,-128,0,-128,-64,1,0,3,0,2,-128,2,-34,1,-128,1,-95,-128,0,0,22,64,-3,127,-125,0,0,1,-98,0,0,1,30,0,-128,0,1,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,0,0,0,0,17,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,91,0,0,0,92,0,0,0,95,0,0,0,95,0,0,0,96,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,16,0,0,0,5,0,0,0,0,0,0,0,102,117,110,99,0,0,0,0,0,16,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,14,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,14,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,14,0,0,0,2,0,0,0,0,0,0,0,107,0,4,0,0,0,12,0,0,0,2,0,0,0,0,0,0,0,118,0,4,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,105,0,0,0,0,2,0,11,19,0,0,0,-118,0,0,0,-59,0,0,0,0,1,0,0,-36,0,1,1,22,64,2,-128,0,2,-128,0,64,2,-128,3,28,-126,0,1,26,2,0,0,22,0,1,-128,5,66,0,0,6,-126,64,4,64,2,0,1,-128,2,-128,3,28,66,-128,1,-31,-128,0,0,22,-64,-4,127,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,0,0,0,0,19,0,0,0,99,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,101,0,0,0,100,0,0,0,101,0,0,0,104,0,0,0,105,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,18,0,0,0,5,0,0,0,0,0,0,0,102,117,110,99,0,0,0,0,0,18,0,0,0,8,0,0,0,0,0,0,0,109,97,116,99,104,101,115,0,1,0,0,0,18,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,17,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,17,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,17,0,0,0,2,0,0,0,0,0,0,0,107,0,5,0,0,0,15,0,0,0,2,0,0,0,0,0,0,0,118,0,5,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,0,0,0,114,0,0,0,0,2,0,13,17,0,0,0,-118,0,0,0,-59,0,0,0,0,1,0,0,-36,0,1,1,22,-64,1,-128,5,66,0,0,6,-126,64,4,64,2,0,1,-128,2,-128,0,-64,2,-128,3,0,3,0,3,-100,2,-128,1,28,66,0,0,-31,-128,0,0,22,64,-3,127,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,0,0,0,0,17,0,0,0,108,0,0,0,109,0,0,0,109,0,0,0,109,0,0,0,109,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,109,0,0,0,110,0,0,0,113,0,0,0,114,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,16,0,0,0,5,0,0,0,0,0,0,0,102,117,110,99,0,0,0,0,0,16,0,0,0,7,0,0,0,0,0,0,0,109,97,112,112,101,100,0,1,0,0,0,16,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,15,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,15,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,15,0,0,0,2,0,0,0,0,0,0,0,107,0,5,0,0,0,13,0,0,0,2,0,0,0,0,0,0,0,118,0,5,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,125,0,0,0,0,2,0,12,22,0,0,0,-118,0,0,0,-59,0,0,0,0,1,0,0,-36,0,1,1,22,0,3,-128,0,2,-128,0,64,2,-128,3,28,-126,0,1,70,2,2,1,90,66,0,0,22,64,0,-128,74,2,0,0,-119,64,2,4,69,66,0,0,70,-126,-64,4,-122,2,2,1,-64,2,-128,3,92,66,-128,1,-31,-128,0,0,22,0,-4,127,-98,0,0,1,30,0,-128,0,3,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,0,0,0,0,22,0,0,0,117,0,0,0,118,0,0,0,118,0,0,0,118,0,0,0,118,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,121,0,0,0,121,0,0,0,121,0,0,0,121,0,0,0,121,0,0,0,118,0,0,0,121,0,0,0,124,0,0,0,125,0,0,0,9,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,0,0,21,0,0,0,5,0,0,0,0,0,0,0,102,117,110,99,0,0,0,0,0,21,0,0,0,8,0,0,0,0,0,0,0,103,114,111,117,112,101,100,0,1,0,0,0,21,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,4,0,0,0,20,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,4,0,0,0,20,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,4,0,0,0,20,0,0,0,2,0,0,0,0,0,0,0,107,0,5,0,0,0,18,0,0,0,2,0,0,0,0,0,0,0,118,0,5,0,0,0,18,0,0,0,9,0,0,0,0,0,0,0,103,114,111,117,112,75,101,121,0,8,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,-91,0,0,0,0,5,0,21,-125,0,0,0,-102,64,0,0,22,0,0,-128,-127,0,0,0,-38,64,0,0,22,0,0,-128,-63,64,0,0,26,65,0,0,22,64,0,-128,74,1,0,0,0,1,-128,2,65,-127,0,0,-118,1,0,0,-59,-63,0,0,0,2,0,0,-36,-127,0,1,23,0,-63,3,22,-64,21,-128,-59,65,1,0,0,2,0,2,-36,1,1,1,22,-64,0,-128,23,-64,2,0,22,64,0,-128,1,-125,1,0,30,3,0,1,-31,-127,0,0,22,64,-2,127,-59,1,1,0,-58,-63,-63,3,0,2,0,2,64,2,0,0,-36,65,-128,1,-59,1,1,0,-58,-63,-63,3,0,2,0,3,65,2,2,0,-36,65,-128,1,-59,65,2,0,0,2,0,0,-36,1,1,1,22,-128,11,-128,27,67,-128,0,22,0,0,-128,1,-125,2,0,91,67,-128,0,22,0,0,-128,65,-125,2,0,21,67,3,6,69,3,1,0,70,-61,-63,6,-128,3,0,3,-64,3,0,6,5,-60,2,0,64,4,0,5,28,-124,0,1,65,4,3,0,-43,67,-124,7,92,67,-128,1,69,3,1,0,70,-61,-63,6,-128,3,0,3,23,0,-128,5,22,-128,0,-128,-63,67,3,0,-38,67,0,0,22,-64,1,-128,-59,3,1,0,-58,-61,-62,7,0,4,-128,5,64,4,0,6,-128,4,0,1,-64,4,-128,1,0,5,0,2,-36,-125,0,3,92,67,-128,1,76,-127,-61,2,24,64,1,1,22,64,2,-128,69,3,1,0,70,-61,-63,6,-128,3,0,3,-37,67,0,6,22,0,0,-128,-63,-61,3,0,1,4,4,0,-43,3,-124,7,92,67,-128,1,22,64,0,-128,-31,-127,0,0,22,-128,-13,127,-59,1,1,0,-58,-63,-63,3,0,2,0,3,90,0,0,0,22,-128,1,-128,91,66,-128,0,22,0,0,-128,65,-62,3,0,-127,66,4,0,85,-126,-126,4,90,66,0,0,22,0,0,-128,65,-126,4,0,-36,65,-128,1,22,-64,4,-128,-59,-63,0,0,0,2,0,0,-36,-127,0,1,23,-64,-60,3,22,64,1,-128,-59,-63,4,0,-58,1,-59,3,1,66,5,0,64,2,0,0,-36,-127,-128,1,0,0,-128,3,-59,1,1,0,-58,-63,-63,3,0,2,0,3,69,-62,2,0,-128,2,0,0,92,-126,0,1,-127,-126,5,0,85,-126,-126,4,-36,65,-128,1,-59,1,1,0,-58,-63,-59,3,0,2,0,3,-35,1,0,1,-34,1,0,0,30,0,-128,0,24,0,0,0,3,0,0,0,0,0,64,-113,64,3,0,0,0,0,0,0,28,64,3,0,0,0,0,0,0,0,0,4,5,0,0,0,0,0,0,0,116,121,112,101,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,9,0,0,0,0,0,0,0,60,115,101,108,102,62,44,10,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,4,3,0,0,0,0,0,0,0,123,10,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,2,0,0,0,0,0,0,0,32,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,4,0,0,0,0,0,0,0,32,61,32,0,4,8,0,0,0,0,0,0,0,60,115,101,108,102,62,44,0,3,0,0,0,0,0,0,-16,63,4,1,0,0,0,0,0,0,0,0,4,5,0,0,0,0,0,0,0,46,46,46,10,0,4,4,0,0,0,0,0,0,0,125,44,10,0,4,2,0,0,0,0,0,0,0,125,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,0,0,0,0,102,111,114,109,97,116,0,4,3,0,0,0,0,0,0,0,37,113,0,4,3,0,0,0,0,0,0,0,44,10,0,4,7,0,0,0,0,0,0,0,99,111,110,99,97,116,0,0,0,0,0,-125,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-127,0,0,0,-127,0,0,0,-127,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-125,0,0,0,-123,0,0,0,-122,0,0,0,-122,0,0,0,-122,0,0,0,-122,0,0,0,-122,0,0,0,-120,0,0,0,-120,0,0,0,-120,0,0,0,-120,0,0,0,-119,0,0,0,-119,0,0,0,-118,0,0,0,-118,0,0,0,-120,0,0,0,-117,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-113,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-112,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-108,0,0,0,-109,0,0,0,-105,0,0,0,-104,0,0,0,-104,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-102,0,0,0,-112,0,0,0,-101,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-96,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-95,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-91,0,0,0,18,0,0,0,4,0,0,0,0,0,0,0,116,98,108,0,0,0,0,0,-126,0,0,0,7,0,0,0,0,0,0,0,105,110,100,101,110,116,0,0,0,0,0,-126,0,0,0,6,0,0,0,0,0,0,0,108,105,109,105,116,0,0,0,0,0,-126,0,0,0,6,0,0,0,0,0,0,0,100,101,112,116,104,0,0,0,0,0,-126,0,0,0,7,0,0,0,0,0,0,0,106,115,116,97,99,107,0,0,0,0,0,-126,0,0,0,2,0,0,0,0,0,0,0,105,0,11,0,0,0,-126,0,0,0,7,0,0,0,0,0,0,0,111,117,116,112,117,116,0,12,0,0,0,-126,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,20,0,0,0,27,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,20,0,0,0,27,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,20,0,0,0,27,0,0,0,2,0,0,0,0,0,0,0,105,0,21,0,0,0,25,0,0,0,2,0,0,0,0,0,0,0,116,0,21,0,0,0,25,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,40,0,0,0,90,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,40,0,0,0,90,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,40,0,0,0,90,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,41,0,0,0,88,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,41,0,0,0,88,0,0,0,12,0,0,0,0,0,0,0,105,110,110,101,114,73,110,100,101,110,116,0,48,0,0,0,88,0,0,0,0,0,0,0,49,0,0,0,1,0,0,0,17,0,0,0,1,0,0,0,19,0,0,0,27,0,0,0,19,0,0,0,29,0,0,0,33,0,0,0,29,0,0,0,35,0,0,0,42,0,0,0,35,0,0,0,44,0,0,0,48,0,0,0,44,0,0,0,50,0,0,0,52,0,0,0,50,0,0,0,54,0,0,0,60,0,0,0,54,0,0,0,62,0,0,0,72,0,0,0,62,0,0,0,74,0,0,0,76,0,0,0,74,0,0,0,78,0,0,0,82,0,0,0,78,0,0,0,84,0,0,0,88,0,0,0,84,0,0,0,90,0,0,0,96,0,0,0,90,0,0,0,98,0,0,0,105,0,0,0,98,0,0,0,107,0,0,0,114,0,0,0,107,0,0,0,116,0,0,0,125,0,0,0,116,0,0,0,127,0,0,0,-91,0,0,0,127,0,0,0,-91,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,87,97,120,83,101,114,118,101,114,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,16,0,0,0,5,0,0,0,74,0,-128,0,-127,64,0,0,98,64,-128,0,28,64,0,1,36,0,0,0,7,-128,0,0,36,64,0,0,7,-64,0,0,36,-128,0,0,7,0,1,0,36,-64,0,0,7,64,1,0,36,0,1,0,7,-128,1,0,30,0,-128,0,7,0,0,0,4,9,0,0,0,0,0,0,0,119,97,120,67,108,97,115,115,0,4,10,0,0,0,0,0,0,0,87,97,120,83,101,114,118,101,114,0,4,6,0,0,0,0,0,0,0,115,116,97,114,116,0,4,11,0,0,0,0,0,0,0,115,104,111,119,80,114,111,109,112,116,0,4,10,0,0,0,0,0,0,0,99,111,110,110,101,99,116,101,100,0,4,13,0,0,0,0,0,0,0,100,105,115,99,111,110,110,101,99,116,101,100,0,4,13,0,0,0,0,0,0,0,100,97,116,97,82,101,99,101,105,118,101,100,0,5,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,26,0,0,0,0,1,0,6,39,0,0,0,69,64,0,0,70,-128,-64,0,70,-64,-64,0,75,0,-63,0,92,-128,0,1,9,64,0,-128,70,0,64,0,90,0,0,0,22,-64,0,-128,70,0,64,0,75,64,-63,0,-63,-128,1,0,92,-128,-128,1,90,0,0,0,22,-128,2,-128,-123,-64,1,0,-63,0,2,0,90,0,0,0,22,-64,0,-128,11,65,-62,0,28,-127,0,1,26,65,0,0,22,0,0,-128,1,-127,2,0,-100,64,-128,1,94,0,0,1,-122,0,64,0,-117,-64,66,1,0,1,0,0,-100,64,-128,1,-123,0,3,0,-59,64,3,0,36,1,0,0,0,0,0,1,0,0,0,0,-55,0,1,-122,-61,0,-128,1,-34,0,0,1,30,0,-128,0,14,0,0,0,4,7,0,0,0,0,0,0,0,115,101,114,118,101,114,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,99,108,97,115,115,0,4,11,0,0,0,0,0,0,0,119,97,120,95,115,101,114,118,101,114,0,4,5,0,0,0,0,0,0,0,105,110,105,116,0,4,12,0,0,0,0,0,0,0,115,116,97,114,116,79,110,80,111,114,116,0,3,0,0,0,0,0,-108,-63,64,4,5,0,0,0,0,0,0,0,112,117,116,115,0,4,27,0,0,0,0,0,0,0,70,97,105,108,101,100,32,99,114,101,97,116,105,110,103,32,115,101,114,118,101,114,58,32,37,115,0,4,12,0,0,0,0,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,4,19,0,0,0,0,0,0,0,83,101,114,118,101,114,32,78,111,116,32,67,114,101,97,116,101,100,0,4,12,0,0,0,0,0,0,0,115,101,116,68,101,108,101,103,97,116,101,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,3,0,0,0,0,0,0,0,95,71,0,1,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,23,0,0,0,2,0,3,7,22,0,0,0,68,0,0,0,-91,0,0,0,92,64,0,0,69,0,0,0,70,64,-64,0,-118,0,0,0,-27,0,0,0,-94,64,0,0,-28,0,0,0,92,-128,-128,1,-124,0,-128,0,-122,-128,64,1,-117,-64,64,1,5,1,0,0,6,1,65,2,64,1,-128,0,-127,65,1,0,28,-127,-128,1,65,-127,1,0,21,65,1,2,-100,64,-128,1,30,0,-128,0,7,0,0,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,4,0,0,0,0,0,0,0,109,97,112,0,4,7,0,0,0,0,0,0,0,115,101,114,118,101,114,0,4,5,0,0,0,0,0,0,0,115,101,110,100,0,4,7,0,0,0,0,0,0,0,99,111,110,99,97,116,0,4,2,0,0,0,0,0,0,0,9,0,4,2,0,0,0,0,0,0,0,10,0,1,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,0,0,0,1,0,3,5,0,0,0,69,0,0,0,-128,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,1,0,0,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,5,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,111,0,0,0,0,0,4,0,0,0,0,0,0,0,22,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,21,0,0,0,8,0,0,0,0,0,0,0,111,98,106,101,99,116,115,0,10,0,0,0,21,0,0,0,2,0,0,0,12,0,0,0,0,0,0,0,102,111,114,109,101,114,80,114,105,110,116,0,5,0,0,0,0,0,0,0,115,101,108,102,0,39,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,18,0,0,0,19,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,38,0,0,0,4,0,0,0,0,0,0,0,101,114,114,0,13,0,0,0,38,0,0,0,12,0,0,0,0,0,0,0,102,111,114,109,101,114,80,114,105,110,116,0,31,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,30,0,0,0,0,1,0,4,5,0,0,0,70,0,64,0,75,64,-64,0,-63,-128,0,0,92,64,-128,1,30,0,-128,0,3,0,0,0,4,7,0,0,0,0,0,0,0,115,101,114,118,101,114,0,4,5,0,0,0,0,0,0,0,115,101,110,100,0,4,3,0,0,0,0,0,0,0,62,32,0,0,0,0,0,5,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,36,0,0,0,0,1,0,3,3,0,0,0,75,0,64,0,92,64,0,1,30,0,-128,0,1,0,0,0,4,11,0,0,0,0,0,0,0,115,104,111,119,80,114,111,109,112,116,0,0,0,0,0,3,0,0,0,35,0,0,0,35,0,0,0,36,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,40,0,0,0,0,1,0,4,5,0,0,0,70,0,64,0,75,64,-64,0,-63,-128,0,0,92,64,-128,1,30,0,-128,0,3,0,0,0,4,7,0,0,0,0,0,0,0,115,101,114,118,101,114,0,4,5,0,0,0,0,0,0,0,115,101,110,100,0,4,9,0,0,0,0,0,0,0,71,79,79,68,66,89,69,33,0,0,0,0,0,5,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,49,0,0,0,0,2,0,10,21,0,0,0,-123,0,0,0,-117,64,64,1,0,1,-128,0,69,-127,0,0,-100,-128,0,2,-59,-64,0,0,-58,0,-63,1,0,1,0,1,-36,-64,0,1,-38,64,0,0,22,-128,1,-128,70,65,65,0,75,-127,-63,2,-63,-63,1,0,0,2,0,2,65,2,2,0,-43,65,-126,3,92,65,-128,1,75,65,66,0,92,65,0,1,30,0,-128,0,10,0,0,0,4,9,0,0,0,0,0,0,0,78,83,83,116,114,105,110,103,0,4,22,0,0,0,0,0,0,0,105,110,105,116,87,105,116,104,68,97,116,97,95,101,110,99,111,100,105,110,103,0,4,22,0,0,0,0,0,0,0,78,83,65,83,67,73,73,83,116,114,105,110,103,69,110,99,111,100,105,110,103,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,101,118,97,108,0,4,7,0,0,0,0,0,0,0,115,101,114,118,101,114,0,4,5,0,0,0,0,0,0,0,115,101,110,100,0,4,8,0,0,0,0,0,0,0,69,114,114,111,114,58,32,0,4,2,0,0,0,0,0,0,0,10,0,4,11,0,0,0,0,0,0,0,115,104,111,119,80,114,111,109,112,116,0,0,0,0,0,21,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,20,0,0,0,5,0,0,0,0,0,0,0,100,97,116,97,0,0,0,0,0,20,0,0,0,6,0,0,0,0,0,0,0,105,110,112,117,116,0,5,0,0,0,20,0,0,0,8,0,0,0,0,0,0,0,115,117,99,99,101,115,115,0,9,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,101,114,114,0,9,0,0,0,20,0,0,0,0,0,0,0,16,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,26,0,0,0,6,0,0,0,30,0,0,0,28,0,0,0,36,0,0,0,34,0,0,0,40,0,0,0,38,0,0,0,49,0,0,0,42,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,97,117,116,111,108,111,97,100,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,4,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,30,0,-128,0,2,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,9,0,0,0,0,0,0,0,97,117,116,111,108,111,97,100,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,0,0,0,0,0,3,17,39,0,0,0,69,0,0,0,-118,0,0,0,-27,0,0,0,-94,64,0,0,92,0,1,1,22,64,7,-128,-123,65,0,0,-122,-127,64,3,-122,-63,64,3,-59,65,0,0,-58,1,-63,3,0,2,-128,2,-36,-127,0,1,1,66,1,0,-100,-127,-128,1,-59,1,0,0,0,2,0,3,-36,1,1,1,22,-128,3,-128,11,-125,-63,5,-123,67,0,0,-122,3,65,7,-100,-125,-128,0,-63,-61,1,0,-107,-61,3,7,28,-125,-128,1,75,3,66,6,-63,67,2,0,1,-124,2,0,92,-125,0,2,0,3,-128,6,69,-61,2,0,-128,3,0,6,92,67,0,1,-31,-127,0,0,22,-128,-5,127,97,-128,0,0,22,-64,-9,127,30,0,-128,0,12,0,0,0,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,11,0,0,0,0,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,0,0,0,0,115,101,97,114,99,104,0,4,5,0,0,0,0,0,0,0,114,111,111,116,0,4,5,0,0,0,0,0,0,0,108,117,97,36,0,4,6,0,0,0,0,0,0,0,109,97,116,99,104,0,4,12,0,0,0,0,0,0,0,47,40,46,42,41,37,46,108,117,97,36,0,4,5,0,0,0,0,0,0,0,103,115,117,98,0,4,2,0,0,0,0,0,0,0,47,0,4,2,0,0,0,0,0,0,0,46,0,4,8,0,0,0,0,0,0,0,114,101,113,117,105,114,101,0,0,0,0,0,39,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,4,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,10,0,0,0,13,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,38,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,5,0,0,0,38,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,5,0,0,0,38,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,5,0,0,0,38,0,0,0,2,0,0,0,0,0,0,0,105,0,6,0,0,0,36,0,0,0,7,0,0,0,0,0,0,0,102,111,108,100,101,114,0,6,0,0,0,36,0,0,0,6,0,0,0,0,0,0,0,102,105,108,101,115,0,15,0,0,0,36,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,18,0,0,0,36,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,18,0,0,0,36,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,18,0,0,0,36,0,0,0,2,0,0,0,0,0,0,0,105,0,19,0,0,0,34,0,0,0,5,0,0,0,0,0,0,0,102,105,108,101,0,19,0,0,0,34,0,0,0,14,0,0,0,0,0,0,0,114,101,113,117,105,114,101,83,116,114,105,110,103,0,26,0,0,0,34,0,0,0,0,0,0,0,4,0,0,0,1,0,0,0,10,0,0,0,1,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,98,97,115,101,54,52,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,-105,0,0,0,5,0,0,0,65,64,0,0,-123,-128,0,0,-122,-64,64,1,28,64,-128,1,36,0,0,0,7,0,1,0,36,64,0,0,7,64,1,0,36,-128,0,0,7,-128,1,0,36,-64,0,0,7,-64,1,0,10,0,8,0,9,64,66,-124,9,-64,66,-123,9,64,67,-122,9,-64,67,-121,9,64,68,-120,9,-64,68,-119,9,64,69,-118,9,-64,69,-117,9,64,70,-116,9,-64,70,-115,9,64,71,-114,9,-64,71,-113,9,64,72,-112,9,-64,72,-111,9,64,73,-110,9,-64,73,-109,9,64,74,-108,9,-64,74,-107,9,64,75,-106,9,-64,75,-105,9,64,76,-104,9,-64,76,-103,9,64,77,-102,9,-64,77,-101,9,64,78,-100,9,-64,78,-99,9,64,79,-98,9,-64,79,-97,9,64,80,-96,9,-64,80,-95,9,64,81,-94,9,-64,81,-93,9,64,82,-92,9,-64,82,-91,9,64,83,-90,9,-64,83,-89,9,64,84,-88,9,-64,84,-87,9,64,85,-86,9,-64,85,-85,9,64,86,-84,9,-64,86,-83,9,64,87,-82,9,-64,87,-81,9,64,88,-80,9,-64,88,-79,9,64,89,-78,9,-64,89,-77,9,64,90,-76,9,-64,90,-75,9,64,91,-74,9,-64,91,-73,9,64,92,-72,9,-64,92,-71,9,64,93,-70,9,-64,93,-69,9,64,94,-68,9,-64,94,-67,9,64,95,-66,9,-64,95,-65,9,64,96,-64,9,-64,96,-63,9,64,97,-62,9,-64,97,-61,100,0,1,0,0,0,0,0,71,0,34,0,74,64,8,0,73,0,-62,-124,73,-128,-62,-123,73,0,-61,-122,73,-128,-61,-121,73,0,-60,-120,73,-128,-60,-119,73,0,-59,-118,73,-128,-59,-117,73,0,-58,-116,73,-128,-58,-115,73,0,-57,-114,73,-128,-57,-113,73,0,-56,-112,73,-128,-56,-111,73,0,-55,-110,73,-128,-55,-109,73,0,-54,-108,73,-128,-54,-107,73,0,-53,-106,73,-128,-53,-105,73,0,-52,-104,73,-128,-52,-103,73,0,-51,-102,73,-128,-51,-101,73,0,-50,-100,73,-128,-50,-99,73,0,-49,-98,73,-128,-49,-97,73,0,-48,-96,73,-128,-48,-95,73,0,-47,-94,73,-128,-47,-93,73,0,-46,-92,73,-128,-46,-91,73,0,-45,-90,73,-128,-45,-89,73,0,-44,-88,73,-128,-44,-87,73,0,-43,-86,73,-128,-43,-85,73,0,-42,-84,73,-128,-42,-83,73,0,-41,-82,73,-128,-41,-81,73,0,-40,-80,73,-128,-40,-79,73,0,-39,-78,73,-128,-39,-77,73,0,-38,-76,73,-128,-38,-75,73,0,-37,-74,73,-128,-37,-73,73,0,-36,-72,73,-128,-36,-71,73,0,-35,-70,73,-128,-35,-69,73,0,-34,-68,73,-128,-34,-67,73,0,-33,-66,73,-128,-33,-65,73,0,-32,-64,73,-128,-32,-63,73,0,-31,-62,73,-128,-31,-61,73,-128,-30,-60,-92,64,1,0,0,0,-128,0,-121,-64,34,0,30,0,-128,0,-116,0,0,0,4,7,0,0,0,0,0,0,0,109,111,100,117,108,101,0,4,11,0,0,0,0,0,0,0,119,97,120,46,98,97,115,101,54,52,0,4,8,0,0,0,0,0,0,0,112,97,99,107,97,103,101,0,4,7,0,0,0,0,0,0,0,115,101,101,97,108,108,0,4,4,0,0,0,0,0,0,0,108,115,104,0,4,4,0,0,0,0,0,0,0,114,115,104,0,4,4,0,0,0,0,0,0,0,98,105,116,0,4,4,0,0,0,0,0,0,0,108,111,114,0,3,0,0,0,0,0,0,0,0,4,2,0,0,0,0,0,0,0,65,0,3,0,0,0,0,0,0,-16,63,4,2,0,0,0,0,0,0,0,66,0,3,0,0,0,0,0,0,0,64,4,2,0,0,0,0,0,0,0,67,0,3,0,0,0,0,0,0,8,64,4,2,0,0,0,0,0,0,0,68,0,3,0,0,0,0,0,0,16,64,4,2,0,0,0,0,0,0,0,69,0,3,0,0,0,0,0,0,20,64,4,2,0,0,0,0,0,0,0,70,0,3,0,0,0,0,0,0,24,64,4,2,0,0,0,0,0,0,0,71,0,3,0,0,0,0,0,0,28,64,4,2,0,0,0,0,0,0,0,72,0,3,0,0,0,0,0,0,32,64,4,2,0,0,0,0,0,0,0,73,0,3,0,0,0,0,0,0,34,64,4,2,0,0,0,0,0,0,0,74,0,3,0,0,0,0,0,0,36,64,4,2,0,0,0,0,0,0,0,75,0,3,0,0,0,0,0,0,38,64,4,2,0,0,0,0,0,0,0,76,0,3,0,0,0,0,0,0,40,64,4,2,0,0,0,0,0,0,0,77,0,3,0,0,0,0,0,0,42,64,4,2,0,0,0,0,0,0,0,78,0,3,0,0,0,0,0,0,44,64,4,2,0,0,0,0,0,0,0,79,0,3,0,0,0,0,0,0,46,64,4,2,0,0,0,0,0,0,0,80,0,3,0,0,0,0,0,0,48,64,4,2,0,0,0,0,0,0,0,81,0,3,0,0,0,0,0,0,49,64,4,2,0,0,0,0,0,0,0,82,0,3,0,0,0,0,0,0,50,64,4,2,0,0,0,0,0,0,0,83,0,3,0,0,0,0,0,0,51,64,4,2,0,0,0,0,0,0,0,84,0,3,0,0,0,0,0,0,52,64,4,2,0,0,0,0,0,0,0,85,0,3,0,0,0,0,0,0,53,64,4,2,0,0,0,0,0,0,0,86,0,3,0,0,0,0,0,0,54,64,4,2,0,0,0,0,0,0,0,87,0,3,0,0,0,0,0,0,55,64,4,2,0,0,0,0,0,0,0,88,0,3,0,0,0,0,0,0,56,64,4,2,0,0,0,0,0,0,0,89,0,3,0,0,0,0,0,0,57,64,4,2,0,0,0,0,0,0,0,90,0,3,0,0,0,0,0,0,58,64,4,2,0,0,0,0,0,0,0,97,0,3,0,0,0,0,0,0,59,64,4,2,0,0,0,0,0,0,0,98,0,3,0,0,0,0,0,0,60,64,4,2,0,0,0,0,0,0,0,99,0,3,0,0,0,0,0,0,61,64,4,2,0,0,0,0,0,0,0,100,0,3,0,0,0,0,0,0,62,64,4,2,0,0,0,0,0,0,0,101,0,3,0,0,0,0,0,0,63,64,4,2,0,0,0,0,0,0,0,102,0,3,0,0,0,0,0,0,64,64,4,2,0,0,0,0,0,0,0,103,0,3,0,0,0,0,0,-128,64,64,4,2,0,0,0,0,0,0,0,104,0,3,0,0,0,0,0,0,65,64,4,2,0,0,0,0,0,0,0,105,0,3,0,0,0,0,0,-128,65,64,4,2,0,0,0,0,0,0,0,106,0,3,0,0,0,0,0,0,66,64,4,2,0,0,0,0,0,0,0,107,0,3,0,0,0,0,0,-128,66,64,4,2,0,0,0,0,0,0,0,108,0,3,0,0,0,0,0,0,67,64,4,2,0,0,0,0,0,0,0,109,0,3,0,0,0,0,0,-128,67,64,4,2,0,0,0,0,0,0,0,110,0,3,0,0,0,0,0,0,68,64,4,2,0,0,0,0,0,0,0,111,0,3,0,0,0,0,0,-128,68,64,4,2,0,0,0,0,0,0,0,112,0,3,0,0,0,0,0,0,69,64,4,2,0,0,0,0,0,0,0,113,0,3,0,0,0,0,0,-128,69,64,4,2,0,0,0,0,0,0,0,114,0,3,0,0,0,0,0,0,70,64,4,2,0,0,0,0,0,0,0,115,0,3,0,0,0,0,0,-128,70,64,4,2,0,0,0,0,0,0,0,116,0,3,0,0,0,0,0,0,71,64,4,2,0,0,0,0,0,0,0,117,0,3,0,0,0,0,0,-128,71,64,4,2,0,0,0,0,0,0,0,118,0,3,0,0,0,0,0,0,72,64,4,2,0,0,0,0,0,0,0,119,0,3,0,0,0,0,0,-128,72,64,4,2,0,0,0,0,0,0,0,120,0,3,0,0,0,0,0,0,73,64,4,2,0,0,0,0,0,0,0,121,0,3,0,0,0,0,0,-128,73,64,4,2,0,0,0,0,0,0,0,122,0,3,0,0,0,0,0,0,74,64,4,2,0,0,0,0,0,0,0,48,0,3,0,0,0,0,0,-128,74,64,4,2,0,0,0,0,0,0,0,49,0,3,0,0,0,0,0,0,75,64,4,2,0,0,0,0,0,0,0,50,0,3,0,0,0,0,0,-128,75,64,4,2,0,0,0,0,0,0,0,51,0,3,0,0,0,0,0,0,76,64,4,2,0,0,0,0,0,0,0,52,0,3,0,0,0,0,0,-128,76,64,4,2,0,0,0,0,0,0,0,53,0,3,0,0,0,0,0,0,77,64,4,2,0,0,0,0,0,0,0,54,0,3,0,0,0,0,0,-128,77,64,4,2,0,0,0,0,0,0,0,55,0,3,0,0,0,0,0,0,78,64,4,2,0,0,0,0,0,0,0,56,0,3,0,0,0,0,0,-128,78,64,4,2,0,0,0,0,0,0,0,57,0,3,0,0,0,0,0,0,79,64,4,2,0,0,0,0,0,0,0,43,0,3,0,0,0,0,0,-128,79,64,4,2,0,0,0,0,0,0,0,47,0,4,7,0,0,0,0,0,0,0,101,110,99,111,100,101,0,4,2,0,0,0,0,0,0,0,61,0,0,4,7,0,0,0,0,0,0,0,100,101,99,111,100,101,0,6,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,11,0,0,0,0,2,0,3,5,0,0,0,-111,64,0,-128,-114,-128,0,0,-112,64,64,1,-98,0,0,1,30,0,-128,0,2,0,0,0,3,0,0,0,0,0,0,0,64,3,0,0,0,0,0,0,112,64,0,0,0,0,5,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,4,0,0,0,6,0,0,0,0,0,0,0,115,104,105,102,116,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,16,0,0,0,0,2,0,4,8,0,0,0,-123,0,0,0,-122,64,64,1,-47,64,0,-127,-49,-64,0,0,-100,-128,0,1,-112,-64,64,1,-98,0,0,1,30,0,-128,0,4,0,0,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,6,0,0,0,0,0,0,0,102,108,111,111,114,0,3,0,0,0,0,0,0,0,64,3,0,0,0,0,0,0,112,64,0,0,0,0,8,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,7,0,0,0,6,0,0,0,0,0,0,0,115,104,105,102,116,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,21,0,0,0,0,2,0,4,12,0,0,0,-111,64,0,-128,-112,-128,0,0,-51,64,-64,0,-47,-64,0,-128,-48,-64,0,0,-115,-64,0,1,88,-128,0,-127,22,0,0,-128,-126,64,0,0,-126,0,-128,0,-98,0,0,1,30,0,-128,0,3,0,0,0,3,0,0,0,0,0,0,0,64,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,120,0,0,0,0,0,11,0,0,0,2,0,0,0,0,0,0,0,98,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,28,0,0,0,0,2,0,10,30,0,0,0,-127,64,0,0,-121,0,0,0,-127,-128,0,0,-63,-64,0,0,1,-127,0,0,-96,-64,4,-128,-123,1,0,0,-59,1,1,0,0,2,0,0,64,2,-128,2,-36,-127,-128,1,-38,65,0,0,22,-64,0,-128,-59,1,1,0,0,2,-128,0,64,2,-128,2,-36,-127,-128,1,23,64,-63,3,22,-64,0,-128,-51,-127,-64,2,-47,-63,1,-125,-38,65,0,0,22,0,0,-128,-63,65,0,0,-116,-63,1,3,-121,1,0,0,-97,-128,-6,127,-123,0,0,0,-98,0,0,1,30,0,-128,0,7,0,0,0,4,7,0,0,0,0,0,0,0,114,101,115,117,108,116,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,32,64,4,4,0,0,0,0,0,0,0,98,105,116,0,1,1,3,0,0,0,0,0,0,0,64,0,0,0,0,30,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,27,0,0,0,27,0,0,0,28,0,0,0,6,0,0,0,2,0,0,0,0,0,0,0,120,0,0,0,0,0,29,0,0,0,2,0,0,0,0,0,0,0,121,0,0,0,0,0,29,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,5,0,0,0,27,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,5,0,0,0,27,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,5,0,0,0,27,0,0,0,2,0,0,0,0,0,0,0,112,0,6,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,47,0,0,0,1,1,0,18,89,0,0,0,74,0,0,0,-127,0,0,0,-63,64,0,0,5,-127,0,0,6,-63,64,2,64,1,0,0,28,-127,0,1,13,1,65,2,65,65,1,0,-32,-64,18,-128,-63,1,1,0,1,66,1,0,65,2,1,0,-32,-63,2,-128,-59,-126,0,0,-58,-126,-63,5,5,-125,0,0,6,-61,65,6,64,3,0,0,-116,-125,2,3,28,3,-128,1,-36,-126,0,0,-38,66,0,0,22,0,0,-128,-63,66,0,0,73,-64,2,5,-33,-127,-4,127,-59,-127,0,0,-58,1,-62,3,1,66,2,0,64,2,0,1,-124,2,0,0,-59,-126,2,0,6,3,-63,0,65,-61,2,0,-36,-126,-128,1,-122,-62,2,5,-60,2,0,0,5,3,3,0,69,67,3,0,-122,3,-63,0,-112,-125,67,7,-63,-125,3,0,92,-125,-128,1,-123,-125,2,0,-58,-61,-62,0,1,-124,3,0,-100,3,-128,1,28,-125,0,0,-58,2,-125,5,-38,66,0,0,22,0,0,-128,-63,-62,3,0,20,3,0,0,13,-125,1,6,24,0,3,-126,22,-128,3,-128,4,3,0,0,69,3,3,0,-123,67,3,0,-58,-61,-62,0,-48,3,-60,7,1,-60,2,0,-100,-125,-128,1,-59,-125,2,0,6,68,-63,0,65,68,4,0,-36,3,-128,1,92,-125,0,0,6,67,3,6,26,67,0,0,22,0,0,-128,1,-61,3,0,84,3,0,0,77,-125,-127,6,24,64,-125,-123,22,64,1,-128,68,3,0,0,-122,67,-63,0,-112,-125,68,7,70,-125,-125,6,90,67,0,0,22,0,0,-128,65,-61,3,0,-36,-127,-128,3,-128,0,-128,3,-33,-128,-20,127,-98,0,0,1,30,0,-128,0,19,0,0,0,4,1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,4,0,0,0,0,0,0,0,108,101,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,8,64,4,5,0,0,0,0,0,0,0,98,121,116,101,0,4,4,0,0,0,0,0,0,0,115,117,98,0,4,7,0,0,0,0,0,0,0,102,111,114,109,97,116,0,4,11,0,0,0,0,0,0,0,37,115,37,115,37,115,37,115,37,115,0,4,4,0,0,0,0,0,0,0,114,115,104,0,3,0,0,0,0,0,0,0,64,4,4,0,0,0,0,0,0,0,108,111,114,0,4,4,0,0,0,0,0,0,0,108,115,104,0,3,0,0,0,0,0,0,16,64,4,2,0,0,0,0,0,0,0,61,0,3,0,0,0,0,0,0,48,64,3,0,0,0,0,0,0,24,64,3,0,0,0,0,0,0,80,64,0,0,0,0,89,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,40,0,0,0,44,0,0,0,38,0,0,0,46,0,0,0,47,0,0,0,11,0,0,0,5,0,0,0,0,0,0,0,100,97,116,97,0,0,0,0,0,88,0,0,0,6,0,0,0,0,0,0,0,98,121,116,101,115,0,1,0,0,0,88,0,0,0,7,0,0,0,0,0,0,0,114,101,115,117,108,116,0,2,0,0,0,88,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,9,0,0,0,87,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,9,0,0,0,87,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,9,0,0,0,87,0,0,0,5,0,0,0,0,0,0,0,115,112,111,115,0,10,0,0,0,86,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,13,0,0,0,27,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,13,0,0,0,27,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,13,0,0,0,27,0,0,0,5,0,0,0,0,0,0,0,98,121,116,101,0,14,0,0,0,26,0,0,0,1,0,0,0,12,0,0,0,0,0,0,0,98,97,115,101,54,52,99,104,97,114,115,0,0,0,0,0,0,0,0,0,54,0,0,0,64,0,0,0,1,1,0,16,85,0,0,0,74,0,0,0,-127,0,0,0,-63,64,0,0,5,-127,0,0,6,-63,64,2,64,1,0,0,28,-127,0,1,13,1,65,2,65,65,1,0,-32,-64,17,-128,-63,1,1,0,1,66,1,0,65,2,1,0,-32,-63,2,-128,-60,2,0,0,5,-125,0,0,6,-125,65,6,64,3,0,0,-116,-125,2,3,-52,-125,2,3,28,-125,0,2,26,67,0,0,22,0,0,-128,1,-61,1,0,-58,2,-125,5,73,-64,2,5,-33,-127,-4,127,-64,1,0,1,5,-126,0,0,6,2,66,4,69,66,2,0,-123,-126,2,0,-58,2,-63,0,1,-61,2,0,-100,-126,-128,1,-59,2,3,0,6,-61,-62,0,65,67,1,0,-36,2,-128,1,92,2,0,0,28,-126,0,0,-107,0,-126,3,-64,1,0,1,6,66,-61,0,87,-128,67,4,22,-128,3,-128,5,-126,0,0,6,2,66,4,69,66,2,0,-123,-126,2,0,-58,-62,-62,0,1,67,1,0,-100,-126,-128,1,-59,2,3,0,6,67,-61,0,65,-61,2,0,-36,2,-128,1,92,2,0,0,28,-126,0,0,26,66,0,0,22,0,0,-128,1,2,0,0,-107,0,-126,3,-64,1,0,1,6,66,-63,0,87,-128,67,4,22,0,3,-128,5,-126,0,0,6,2,66,4,69,66,2,0,-123,-126,2,0,-58,66,-61,0,-48,66,-63,5,1,-61,3,0,-100,-126,-128,1,-58,66,-63,0,92,2,-128,1,28,-126,0,0,26,66,0,0,22,0,0,-128,1,2,0,0,-107,0,-126,3,-33,-128,-19,127,-98,0,0,1,30,0,-128,0,16,0,0,0,4,1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,4,0,0,0,0,0,0,0,108,101,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,16,64,4,4,0,0,0,0,0,0,0,115,117,98,0,4,2,0,0,0,0,0,0,0,61,0,4,5,0,0,0,0,0,0,0,99,104,97,114,0,4,4,0,0,0,0,0,0,0,108,111,114,0,4,4,0,0,0,0,0,0,0,108,115,104,0,3,0,0,0,0,0,0,0,64,4,4,0,0,0,0,0,0,0,114,115,104,0,3,0,0,0,0,0,0,8,64,0,3,0,0,0,0,0,0,24,64,0,0,0,0,85,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,57,0,0,0,63,0,0,0,64,0,0,0,11,0,0,0,5,0,0,0,0,0,0,0,100,97,116,97,0,0,0,0,0,84,0,0,0,6,0,0,0,0,0,0,0,99,104,97,114,115,0,1,0,0,0,84,0,0,0,7,0,0,0,0,0,0,0,114,101,115,117,108,116,0,2,0,0,0,84,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,9,0,0,0,83,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,9,0,0,0,83,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,9,0,0,0,83,0,0,0,5,0,0,0,0,0,0,0,100,112,111,115,0,10,0,0,0,82,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,13,0,0,0,27,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,13,0,0,0,27,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,13,0,0,0,27,0,0,0,5,0,0,0,0,0,0,0,99,104,97,114,0,14,0,0,0,26,0,0,0,1,0,0,0,12,0,0,0,0,0,0,0,98,97,115,101,54,52,98,121,116,101,115,0,-105,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,11,0,0,0,9,0,0,0,16,0,0,0,14,0,0,0,21,0,0,0,19,0,0,0,28,0,0,0,24,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,47,0,0,0,47,0,0,0,35,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,64,0,0,0,64,0,0,0,54,0,0,0,64,0,0,0,2,0,0,0,12,0,0,0,0,0,0,0,98,97,115,101,54,52,99,104,97,114,115,0,78,0,0,0,-106,0,0,0,12,0,0,0,0,0,0,0,98,97,115,101,54,52,98,121,116,101,115,0,-109,0,0,0,-106,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,98,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,14,53,0,0,0,36,0,0,0,100,64,0,0,0,0,0,0,0,0,-128,0,-92,-128,0,0,-28,-64,0,0,36,1,1,0,0,0,-128,0,0,0,-128,1,0,0,0,1,0,0,0,2,100,65,1,0,0,0,-128,0,0,0,-128,1,0,0,0,1,0,0,-128,2,-92,-127,1,0,0,0,-128,0,0,0,0,1,-28,-63,1,0,0,0,-128,0,0,0,-128,1,0,0,0,1,36,2,2,0,0,0,0,0,0,0,0,3,0,0,0,2,100,66,2,0,0,0,0,0,0,0,0,3,-92,-126,2,0,0,0,0,0,0,0,0,3,0,0,-128,2,-28,-62,2,0,0,0,0,2,0,0,0,3,0,0,-128,2,5,3,0,0,74,-125,2,0,73,-125,1,-127,73,67,-127,-127,73,3,1,-126,73,-61,-127,-126,73,3,2,-125,73,-125,-126,-125,73,-61,2,-124,73,67,-126,-124,73,67,0,-123,73,-125,-128,-123,9,67,-125,-128,35,0,0,0,30,0,-128,0,12,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,4,0,0,0,0,0,0,0,98,105,116,0,4,5,0,0,0,0,0,0,0,98,110,111,116,0,4,5,0,0,0,0,0,0,0,98,97,110,100,0,4,4,0,0,0,0,0,0,0,98,111,114,0,4,5,0,0,0,0,0,0,0,98,120,111,114,0,4,8,0,0,0,0,0,0,0,98,114,115,104,105,102,116,0,4,8,0,0,0,0,0,0,0,98,108,115,104,105,102,116,0,4,6,0,0,0,0,0,0,0,98,120,111,114,50,0,4,14,0,0,0,0,0,0,0,98,108,111,103,105,99,95,114,115,104,105,102,116,0,4,7,0,0,0,0,0,0,0,116,111,98,105,116,115,0,4,7,0,0,0,0,0,0,0,116,111,110,117,109,98,0,12,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,42,0,0,0,0,1,0,3,11,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,92,-128,0,1,77,64,0,0,24,64,0,-127,22,-128,0,-128,69,-64,0,0,-127,0,1,0,92,64,0,1,30,0,-128,0,5,0,0,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,6,0,0,0,0,0,0,0,102,108,111,111,114,0,3,0,0,0,0,0,0,0,0,4,6,0,0,0,0,0,0,0,101,114,114,111,114,0,4,48,0,0,0,0,0,0,0,116,114,121,105,110,103,32,116,111,32,117,115,101,32,98,105,116,119,105,115,101,32,111,112,101,114,97,116,105,111,110,32,111,110,32,110,111,110,45,105,110,116,101,103,101,114,33,0,0,0,0,0,11,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,42,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,65,0,0,0,2,1,0,6,36,0,0,0,68,0,0,0,-128,0,0,0,92,64,0,1,24,0,64,0,22,-128,2,-128,68,0,-128,0,-123,64,0,0,-122,-128,64,1,-59,-64,0,0,-58,0,-63,1,0,1,0,0,-36,0,0,1,-100,-128,0,0,-116,64,65,1,93,0,0,1,94,0,0,0,74,0,0,0,-127,64,1,0,24,0,0,-128,22,64,3,-128,-59,-64,0,0,-58,-128,-63,1,0,1,0,0,65,-63,1,0,-36,-128,-128,1,23,64,-63,1,22,64,0,-128,73,64,65,1,22,0,0,-128,73,0,64,1,13,-63,0,0,15,-64,65,2,-116,64,65,1,22,-64,-5,127,94,0,0,1,30,0,-128,0,8,0,0,0,3,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,98,105,116,0,4,5,0,0,0,0,0,0,0,98,110,111,116,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,97,98,115,0,3,0,0,0,0,0,0,-16,63,4,4,0,0,0,0,0,0,0,109,111,100,0,3,0,0,0,0,0,0,0,64,0,0,0,0,36,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,46,0,0,0,46,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,53,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,58,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,64,0,0,0,65,0,0,0,4,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,35,0,0,0,4,0,0,0,0,0,0,0,116,98,108,0,17,0,0,0,35,0,0,0,4,0,0,0,0,0,0,0,99,110,116,0,18,0,0,0,35,0,0,0,5,0,0,0,0,0,0,0,108,97,115,116,0,25,0,0,0,33,0,0,0,2,0,0,0,10,0,0,0,0,0,0,0,99,104,101,99,107,95,105,110,116,0,8,0,0,0,0,0,0,0,116,111,95,98,105,116,115,0,0,0,0,0,0,0,0,0,67,0,0,0,78,0,0,0,0,1,0,9,17,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,92,-128,0,1,-127,-128,0,0,-63,-64,0,0,1,-63,0,0,64,1,-128,0,-127,-63,0,0,32,-63,0,-128,6,-62,1,0,14,-62,0,4,-116,0,2,1,-50,0,-63,1,31,-127,-2,127,-98,0,0,1,30,0,-128,0,5,0,0,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,64,0,0,0,0,17,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,74,0,0,0,72,0,0,0,77,0,0,0,78,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,116,98,108,0,0,0,0,0,16,0,0,0,2,0,0,0,0,0,0,0,110,0,4,0,0,0,16,0,0,0,5,0,0,0,0,0,0,0,114,115,108,116,0,5,0,0,0,16,0,0,0,6,0,0,0,0,0,0,0,112,111,119,101,114,0,6,0,0,0,16,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,9,0,0,0,15,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,9,0,0,0,15,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,9,0,0,0,15,0,0,0,2,0,0,0,0,0,0,0,105,0,10,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,95,0,0,0,0,2,0,8,31,0,0,0,-118,0,0,0,-54,0,0,0,5,1,0,0,6,65,64,2,64,1,0,0,28,-127,0,1,69,1,0,0,70,65,-64,2,-128,1,-128,0,92,-127,0,1,24,0,-127,2,22,-128,0,-128,-128,0,0,0,-64,0,-128,0,22,64,0,-128,-128,0,-128,0,-64,0,0,0,5,1,0,0,6,65,64,2,64,1,-128,1,28,-127,0,1,12,-127,64,2,69,1,0,0,70,65,-64,2,-128,1,0,1,92,-127,0,1,-127,-127,0,0,32,1,0,-128,-55,-64,-64,3,31,65,-1,127,30,0,-128,0,4,0,0,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,85,0,0,0,87,0,0,0,88,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,91,0,0,0,92,0,0,0,91,0,0,0,95,0,0,0,8,0,0,0,6,0,0,0,0,0,0,0,116,98,108,95,109,0,0,0,0,0,30,0,0,0,6,0,0,0,0,0,0,0,116,98,108,95,110,0,0,0,0,0,30,0,0,0,4,0,0,0,0,0,0,0,98,105,103,0,1,0,0,0,30,0,0,0,6,0,0,0,0,0,0,0,115,109,97,108,108,0,2,0,0,0,30,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,27,0,0,0,30,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,27,0,0,0,30,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,27,0,0,0,30,0,0,0,2,0,0,0,0,0,0,0,105,0,28,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,120,0,0,0,4,2,3,14,64,0,0,0,-60,0,0,0,0,1,0,0,-36,-128,0,1,4,1,0,0,64,1,-128,0,28,-127,0,1,68,1,-128,0,-128,1,-128,1,-64,1,0,2,92,65,-128,1,74,1,0,0,-123,1,0,0,-122,65,64,3,-59,-127,0,0,-58,-63,-64,3,0,2,-128,1,-36,-127,0,1,5,-126,0,0,6,-62,64,4,64,2,0,2,28,2,0,1,-100,-127,0,0,-63,1,1,0,0,2,0,3,65,2,1,0,-32,1,2,-128,-58,-126,-126,1,23,64,-63,5,22,0,1,-128,-58,-126,2,2,23,64,-63,5,22,64,0,-128,73,65,65,5,22,0,0,-128,73,1,65,5,-33,65,-3,127,-60,1,0,1,0,2,-128,2,-36,-127,0,1,37,2,0,1,26,2,0,0,22,-64,4,-128,10,2,0,0,101,2,0,0,34,66,0,0,69,-126,0,0,70,-126,-63,4,-128,2,0,4,-63,2,1,0,92,-126,-128,1,-124,2,-128,1,-64,2,-128,3,0,3,-128,4,84,3,0,4,24,64,-125,-126,22,64,0,-128,91,67,0,4,22,0,0,-128,67,3,-128,6,-99,2,0,2,-98,2,0,0,22,0,0,-128,-34,1,0,1,30,0,-128,0,7,0,0,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,109,97,120,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,4,7,0,0,0,0,0,0,0,114,101,109,111,118,101,0,0,0,0,0,64,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,102,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,103,0,0,0,104,0,0,0,104,0,0,0,104,0,0,0,104,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,106,0,0,0,106,0,0,0,108,0,0,0,104,0,0,0,112,0,0,0,112,0,0,0,112,0,0,0,113,0,0,0,113,0,0,0,113,0,0,0,114,0,0,0,114,0,0,0,114,0,0,0,115,0,0,0,115,0,0,0,115,0,0,0,115,0,0,0,115,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,116,0,0,0,118,0,0,0,120,0,0,0,14,0,0,0,2,0,0,0,0,0,0,0,109,0,0,0,0,0,63,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,63,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,63,0,0,0,6,0,0,0,0,0,0,0,116,98,108,95,109,0,3,0,0,0,63,0,0,0,6,0,0,0,0,0,0,0,116,98,108,95,110,0,6,0,0,0,63,0,0,0,4,0,0,0,0,0,0,0,116,98,108,0,11,0,0,0,63,0,0,0,5,0,0,0,0,0,0,0,114,115,108,116,0,22,0,0,0,63,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,25,0,0,0,36,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,25,0,0,0,36,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,25,0,0,0,36,0,0,0,2,0,0,0,0,0,0,0,105,0,26,0,0,0,35,0,0,0,7,0,0,0,0,0,0,0,114,101,115,117,108,116,0,39,0,0,0,63,0,0,0,5,0,0,0,0,0,0,0,97,114,103,115,0,45,0,0,0,61,0,0,0,2,0,0,0,0,0,0,0,110,0,50,0,0,0,61,0,0,0,4,0,0,0,8,0,0,0,0,0,0,0,116,111,95,98,105,116,115,0,7,0,0,0,0,0,0,0,101,120,112,97,110,100,0,14,0,0,0,0,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,7,0,0,0,0,0,0,0,98,105,116,95,111,114,0,0,0,0,0,0,0,0,0,122,0,0,0,-111,0,0,0,4,2,3,14,64,0,0,0,-60,0,0,0,0,1,0,0,-36,-128,0,1,4,1,0,0,64,1,-128,0,28,-127,0,1,68,1,-128,0,-128,1,-128,1,-64,1,0,2,92,65,-128,1,74,1,0,0,-123,1,0,0,-122,65,64,3,-59,-127,0,0,-58,-63,-64,3,0,2,-128,1,-36,-127,0,1,5,-126,0,0,6,-62,64,4,64,2,0,2,28,2,0,1,-100,-127,0,0,-63,1,1,0,0,2,0,3,65,2,1,0,-32,1,2,-128,-58,-126,-126,1,87,64,-63,5,22,-128,0,-128,-58,-126,2,2,23,64,-63,5,22,64,0,-128,73,65,65,5,22,0,0,-128,73,1,65,5,-33,65,-3,127,-60,1,0,1,0,2,-128,2,-36,-127,0,1,37,2,0,1,26,2,0,0,22,-64,4,-128,10,2,0,0,101,2,0,0,34,66,0,0,69,-126,0,0,70,-126,-63,4,-128,2,0,4,-63,2,1,0,92,-126,-128,1,-124,2,-128,1,-64,2,-128,3,0,3,-128,4,84,3,0,4,24,64,-125,-126,22,64,0,-128,91,67,0,4,22,0,0,-128,67,3,-128,6,-99,2,0,2,-98,2,0,0,22,0,0,-128,-34,1,0,1,30,0,-128,0,7,0,0,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,109,97,120,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,4,7,0,0,0,0,0,0,0,114,101,109,111,118,101,0,0,0,0,0,64,0,0,0,123,0,0,0,123,0,0,0,123,0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,125,0,0,0,125,0,0,0,125,0,0,0,125,0,0,0,127,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-128,0,0,0,-127,0,0,0,-127,0,0,0,-127,0,0,0,-127,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-126,0,0,0,-125,0,0,0,-125,0,0,0,-123,0,0,0,-127,0,0,0,-119,0,0,0,-119,0,0,0,-119,0,0,0,-118,0,0,0,-118,0,0,0,-118,0,0,0,-117,0,0,0,-117,0,0,0,-117,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-115,0,0,0,-113,0,0,0,-111,0,0,0,14,0,0,0,2,0,0,0,0,0,0,0,109,0,0,0,0,0,63,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,63,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,63,0,0,0,6,0,0,0,0,0,0,0,116,98,108,95,109,0,3,0,0,0,63,0,0,0,6,0,0,0,0,0,0,0,116,98,108,95,110,0,6,0,0,0,63,0,0,0,4,0,0,0,0,0,0,0,116,98,108,0,11,0,0,0,63,0,0,0,5,0,0,0,0,0,0,0,114,115,108,116,0,22,0,0,0,63,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,25,0,0,0,36,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,25,0,0,0,36,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,25,0,0,0,36,0,0,0,2,0,0,0,0,0,0,0,105,0,26,0,0,0,35,0,0,0,7,0,0,0,0,0,0,0,114,101,115,117,108,116,0,39,0,0,0,63,0,0,0,5,0,0,0,0,0,0,0,97,114,103,115,0,45,0,0,0,61,0,0,0,2,0,0,0,0,0,0,0,110,0,50,0,0,0,61,0,0,0,4,0,0,0,8,0,0,0,0,0,0,0,116,111,95,98,105,116,115,0,7,0,0,0,0,0,0,0,101,120,112,97,110,100,0,14,0,0,0,0,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,8,0,0,0,0,0,0,0,98,105,116,95,97,110,100,0,0,0,0,0,0,0,0,0,-109,0,0,0,-97,0,0,0,2,1,0,8,27,0,0,0,68,0,0,0,-128,0,0,0,92,-128,0,1,-123,0,0,0,-122,64,64,1,-59,-128,0,0,-58,-64,-64,1,0,1,-128,0,-36,-128,0,1,1,1,1,0,-100,-128,-128,1,-63,64,1,0,0,1,0,1,65,65,1,0,-32,64,1,-128,-58,-127,-127,0,23,64,-63,3,22,64,0,-128,73,-128,65,3,22,0,0,-128,73,64,65,3,-33,0,-2,127,-60,0,-128,0,0,1,-128,0,-35,0,0,1,-34,0,0,0,30,0,-128,0,7,0,0,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,109,97,120,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,64,64,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,-107,0,0,0,-107,0,0,0,-107,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-106,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-105,0,0,0,-104,0,0,0,-104,0,0,0,-104,0,0,0,-103,0,0,0,-103,0,0,0,-101,0,0,0,-105,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-97,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,26,0,0,0,4,0,0,0,0,0,0,0,116,98,108,0,3,0,0,0,26,0,0,0,5,0,0,0,0,0,0,0,115,105,122,101,0,11,0,0,0,26,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,14,0,0,0,22,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,14,0,0,0,22,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,14,0,0,0,22,0,0,0,2,0,0,0,0,0,0,0,105,0,15,0,0,0,21,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0,116,111,95,98,105,116,115,0,14,0,0,0,0,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,0,0,0,0,0,0,0,0,-95,0,0,0,-77,0,0,0,3,2,0,12,39,0,0,0,-124,0,0,0,-64,0,0,0,-100,-128,0,1,-60,0,0,0,0,1,-128,0,-36,-128,0,1,4,1,-128,0,64,1,0,1,-128,1,-128,1,28,65,-128,1,10,1,0,0,69,1,0,0,70,65,-64,2,-123,-127,0,0,-122,-63,64,3,-64,1,0,1,-100,-127,0,1,-59,-127,0,0,-58,-63,-64,3,0,2,-128,1,-36,1,0,1,92,-127,0,0,-127,1,1,0,-64,1,-128,2,1,2,1,0,-96,-127,1,-128,-122,66,2,1,-58,66,-126,1,87,-64,2,5,22,64,0,-128,9,1,-63,4,22,0,0,-128,9,65,-63,4,-97,-63,-3,127,-124,1,0,1,-64,1,0,2,-99,1,0,1,-98,1,0,0,30,0,-128,0,6,0,0,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,109,97,120,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,103,101,116,110,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,-94,0,0,0,-94,0,0,0,-94,0,0,0,-93,0,0,0,-93,0,0,0,-93,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-90,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-88,0,0,0,-88,0,0,0,-88,0,0,0,-88,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-86,0,0,0,-86,0,0,0,-84,0,0,0,-88,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-77,0,0,0,10,0,0,0,2,0,0,0,0,0,0,0,109,0,0,0,0,0,38,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,38,0,0,0,6,0,0,0,0,0,0,0,116,98,108,95,109,0,3,0,0,0,38,0,0,0,6,0,0,0,0,0,0,0,116,98,108,95,110,0,6,0,0,0,38,0,0,0,4,0,0,0,0,0,0,0,116,98,108,0,11,0,0,0,38,0,0,0,5,0,0,0,0,0,0,0,114,115,108,116,0,22,0,0,0,38,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,25,0,0,0,34,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,25,0,0,0,34,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,25,0,0,0,34,0,0,0,2,0,0,0,0,0,0,0,105,0,26,0,0,0,33,0,0,0,3,0,0,0,8,0,0,0,0,0,0,0,116,111,95,98,105,116,115,0,7,0,0,0,0,0,0,0,101,120,112,97,110,100,0,14,0,0,0,0,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,0,0,0,0,0,0,0,0,-75,0,0,0,-60,0,0,0,3,2,0,10,34,0,0,0,-124,0,0,0,-64,0,0,0,-100,64,0,1,-127,0,0,0,24,0,64,0,22,-64,1,-128,-60,0,-128,0,5,65,0,0,6,-127,64,2,64,1,0,0,28,1,0,1,-36,-128,0,0,12,-64,-64,1,-127,0,1,0,-63,-64,0,0,0,1,-128,0,65,-63,0,0,-32,0,2,-128,15,64,65,0,-60,1,0,1,5,66,0,0,6,-126,65,4,64,2,0,0,28,-126,0,1,64,2,0,1,-36,-127,-128,1,0,0,-128,3,-33,64,-3,127,-59,64,0,0,-58,-128,-63,1,0,1,0,0,-35,0,0,1,-34,0,0,0,30,0,-128,0,7,0,0,0,3,0,0,0,0,0,0,0,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,97,98,115,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,-32,65,3,0,0,0,0,0,0,0,64,4,6,0,0,0,0,0,0,0,102,108,111,111,114,0,0,0,0,0,34,0,0,0,-74,0,0,0,-74,0,0,0,-74,0,0,0,-72,0,0,0,-71,0,0,0,-71,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-69,0,0,0,-68,0,0,0,-65,0,0,0,-65,0,0,0,-65,0,0,0,-65,0,0,0,-64,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-65,0,0,0,-61,0,0,0,-61,0,0,0,-61,0,0,0,-61,0,0,0,-61,0,0,0,-60,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,33,0,0,0,5,0,0,0,0,0,0,0,98,105,116,115,0,0,0,0,0,33,0,0,0,9,0,0,0,0,0,0,0,104,105,103,104,95,98,105,116,0,4,0,0,0,33,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,17,0,0,0,28,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,17,0,0,0,28,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,17,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,105,0,18,0,0,0,27,0,0,0,3,0,0,0,10,0,0,0,0,0,0,0,99,104,101,99,107,95,105,110,116,0,8,0,0,0,0,0,0,0,98,105,116,95,110,111,116,0,7,0,0,0,0,0,0,0,98,105,116,95,111,114,0,0,0,0,0,0,0,0,0,-57,0,0,0,-47,0,0,0,2,2,0,6,24,0,0,0,-124,0,0,0,-64,0,0,0,-100,64,0,1,24,0,64,0,22,-128,1,-128,-124,0,-128,0,-59,64,0,0,-58,-128,-64,1,0,1,0,0,-36,0,0,1,-100,-128,0,0,12,-64,64,1,-127,-64,0,0,-64,0,-128,0,1,-63,0,0,-96,0,0,-128,15,0,65,0,-97,64,-1,127,-123,64,0,0,-122,64,65,1,-64,0,0,0,-99,0,0,1,-98,0,0,0,30,0,-128,0,6,0,0,0,3,0,0,0,0,0,0,0,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,97,98,115,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,64,4,6,0,0,0,0,0,0,0,102,108,111,111,114,0,0,0,0,0,24,0,0,0,-56,0,0,0,-56,0,0,0,-56,0,0,0,-55,0,0,0,-55,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-53,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-50,0,0,0,-51,0,0,0,-48,0,0,0,-48,0,0,0,-48,0,0,0,-48,0,0,0,-48,0,0,0,-47,0,0,0,6,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,23,0,0,0,5,0,0,0,0,0,0,0,98,105,116,115,0,0,0,0,0,23,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,15,0,0,0,18,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,15,0,0,0,18,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,15,0,0,0,18,0,0,0,2,0,0,0,0,0,0,0,105,0,16,0,0,0,17,0,0,0,2,0,0,0,10,0,0,0,0,0,0,0,99,104,101,99,107,95,105,110,116,0,8,0,0,0,0,0,0,0,98,105,116,95,110,111,116,0,0,0,0,0,0,0,0,0,-45,0,0,0,-33,0,0,0,3,2,0,6,24,0,0,0,-124,0,0,0,-64,0,0,0,-100,64,0,1,24,0,64,0,22,-128,1,-128,-124,0,-128,0,-59,64,0,0,-58,-128,-64,1,0,1,0,0,-36,0,0,1,-100,-128,0,0,12,-64,64,1,-127,-64,0,0,-64,0,-128,0,1,-63,0,0,-96,0,0,-128,14,0,65,0,-97,64,-1,127,-124,0,0,1,-64,0,0,0,1,65,1,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,6,0,0,0,3,0,0,0,0,0,0,0,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,97,98,115,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,64,3,0,0,-32,-1,-1,-1,-17,65,0,0,0,0,24,0,0,0,-44,0,0,0,-44,0,0,0,-44,0,0,0,-42,0,0,0,-42,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-40,0,0,0,-37,0,0,0,-37,0,0,0,-37,0,0,0,-37,0,0,0,-36,0,0,0,-37,0,0,0,-34,0,0,0,-34,0,0,0,-34,0,0,0,-34,0,0,0,-34,0,0,0,-33,0,0,0,6,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,23,0,0,0,5,0,0,0,0,0,0,0,98,105,116,115,0,0,0,0,0,23,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,15,0,0,0,18,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,15,0,0,0,18,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,15,0,0,0,18,0,0,0,2,0,0,0,0,0,0,0,105,0,16,0,0,0,17,0,0,0,3,0,0,0,10,0,0,0,0,0,0,0,99,104,101,99,107,95,105,110,116,0,8,0,0,0,0,0,0,0,98,105,116,95,110,111,116,0,8,0,0,0,0,0,0,0,98,105,116,95,97,110,100,0,0,0,0,0,0,0,0,0,-31,0,0,0,-26,0,0,0,3,2,0,7,18,0,0,0,-124,0,0,0,-60,0,-128,0,0,1,0,0,-36,-128,0,1,4,1,-128,0,64,1,-128,0,28,1,0,1,-100,-128,0,0,-60,0,0,0,0,1,0,0,64,1,-128,0,-36,-128,-128,1,4,1,0,1,64,1,-128,1,-128,1,0,1,28,-127,-128,1,30,1,0,1,30,0,-128,0,0,0,0,0,0,0,0,0,18,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-29,0,0,0,-29,0,0,0,-29,0,0,0,-29,0,0,0,-28,0,0,0,-28,0,0,0,-28,0,0,0,-28,0,0,0,-27,0,0,0,-26,0,0,0,5,0,0,0,2,0,0,0,0,0,0,0,109,0,0,0,0,0,17,0,0,0,2,0,0,0,0,0,0,0,110,0,0,0,0,0,17,0,0,0,4,0,0,0,0,0,0,0,114,104,115,0,8,0,0,0,17,0,0,0,4,0,0,0,0,0,0,0,108,104,115,0,12,0,0,0,17,0,0,0,5,0,0,0,0,0,0,0,114,115,108,116,0,16,0,0,0,17,0,0,0,3,0,0,0,7,0,0,0,0,0,0,0,98,105,116,95,111,114,0,8,0,0,0,0,0,0,0,98,105,116,95,110,111,116,0,8,0,0,0,0,0,0,0,98,105,116,95,97,110,100,0,53,0,0,0,42,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,78,0,0,0,95,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,120,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-111,0,0,0,-97,0,0,0,-97,0,0,0,-97,0,0,0,-77,0,0,0,-77,0,0,0,-77,0,0,0,-77,0,0,0,-60,0,0,0,-60,0,0,0,-60,0,0,0,-60,0,0,0,-47,0,0,0,-47,0,0,0,-47,0,0,0,-33,0,0,0,-33,0,0,0,-33,0,0,0,-33,0,0,0,-26,0,0,0,-26,0,0,0,-26,0,0,0,-26,0,0,0,-21,0,0,0,-21,0,0,0,-19,0,0,0,-18,0,0,0,-17,0,0,0,-16,0,0,0,-15,0,0,0,-14,0,0,0,-13,0,0,0,-12,0,0,0,-9,0,0,0,-8,0,0,0,-7,0,0,0,-7,0,0,0,-5,0,0,0,12,0,0,0,10,0,0,0,0,0,0,0,99,104,101,99,107,95,105,110,116,0,1,0,0,0,51,0,0,0,8,0,0,0,0,0,0,0,116,111,95,98,105,116,115,0,4,0,0,0,51,0,0,0,14,0,0,0,0,0,0,0,116,98,108,95,116,111,95,110,117,109,98,101,114,0,5,0,0,0,51,0,0,0,7,0,0,0,0,0,0,0,101,120,112,97,110,100,0,6,0,0,0,51,0,0,0,7,0,0,0,0,0,0,0,98,105,116,95,111,114,0,11,0,0,0,51,0,0,0,8,0,0,0,0,0,0,0,98,105,116,95,97,110,100,0,16,0,0,0,51,0,0,0,8,0,0,0,0,0,0,0,98,105,116,95,110,111,116,0,19,0,0,0,51,0,0,0,8,0,0,0,0,0,0,0,98,105,116,95,120,111,114,0,23,0,0,0,51,0,0,0,11,0,0,0,0,0,0,0,98,105,116,95,114,115,104,105,102,116,0,27,0,0,0,51,0,0,0,17,0,0,0,0,0,0,0,98,105,116,95,108,111,103,105,99,95,114,115,104,105,102,116,0,30,0,0,0,51,0,0,0,11,0,0,0,0,0,0,0,98,105,116,95,108,115,104,105,102,116,0,34,0,0,0,51,0,0,0,9,0,0,0,0,0,0,0,98,105,116,95,120,111,114,50,0,38,0,0,0,51,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,99,97,99,104,101,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,34,0,0,0,5,0,0,0,74,0,0,0,9,64,-128,-128,5,-128,0,0,69,0,0,0,70,64,-64,0,-123,0,0,0,-122,64,64,1,28,64,-128,1,5,0,0,0,6,64,64,0,100,0,0,0,9,64,-128,-127,5,0,0,0,6,64,64,0,100,64,0,0,9,64,0,-126,5,0,0,0,6,64,64,0,100,-128,0,0,9,64,-128,-126,5,0,0,0,6,64,64,0,100,-64,0,0,9,64,0,-125,5,0,0,0,6,64,64,0,100,0,1,0,9,64,-128,-125,5,0,0,0,6,64,64,0,100,64,1,0,9,64,0,-124,30,0,-128,0,9,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,99,97,99,104,101,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,4,0,0,0,0,0,0,0,103,101,116,0,4,4,0,0,0,0,0,0,0,115,101,116,0,4,4,0,0,0,0,0,0,0,97,103,101,0,4,6,0,0,0,0,0,0,0,99,108,101,97,114,0,4,9,0,0,0,0,0,0,0,99,108,101,97,114,65,108,108,0,4,8,0,0,0,0,0,0,0,112,97,116,104,70,111,114,0,6,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,30,0,0,0,0,2,0,8,50,0,0,0,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-64,0,0,0,-100,-128,0,1,-59,0,0,0,-58,-64,-64,1,-58,0,-63,1,0,1,0,1,-36,-128,0,1,-38,64,0,0,22,64,0,-128,-61,0,-128,1,-34,0,0,1,90,0,0,0,22,64,3,-128,-59,64,1,0,-58,-128,-63,1,-36,-128,-128,0,5,1,0,0,6,-63,64,2,6,-63,65,2,64,1,0,1,28,-127,0,1,6,1,66,2,-51,0,-127,1,24,-64,-128,0,22,64,0,-128,3,1,0,2,30,1,0,1,-59,64,2,0,36,1,0,0,0,0,0,1,-36,-64,0,1,-38,64,0,0,22,-64,2,-128,69,-127,2,0,-127,-63,2,0,-64,1,0,0,92,65,-128,1,69,1,0,0,70,65,-64,2,70,1,-61,2,-128,1,0,0,92,65,0,1,67,1,-128,2,94,1,0,1,22,0,0,-128,30,1,0,1,30,0,-128,0,13,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,99,97,99,104,101,0,4,8,0,0,0,0,0,0,0,112,97,116,104,70,111,114,0,4,11,0,0,0,0,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,0,0,0,0,105,115,70,105,108,101,0,4,3,0,0,0,0,0,0,0,111,115,0,4,5,0,0,0,0,0,0,0,116,105,109,101,0,4,11,0,0,0,0,0,0,0,97,116,116,114,105,98,117,116,101,115,0,4,11,0,0,0,0,0,0,0,109,111,100,105,102,105,101,100,65,116,0,4,6,0,0,0,0,0,0,0,112,99,97,108,108,0,4,5,0,0,0,0,0,0,0,112,117,116,115,0,4,39,0,0,0,0,0,0,0,69,114,114,111,114,58,32,67,111,117,108,100,110,39,116,32,114,101,97,100,32,99,97,99,104,101,32,119,105,116,104,32,107,101,121,32,37,115,0,4,6,0,0,0,0,0,0,0,99,108,101,97,114,0,1,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,21,0,0,0,1,0,0,3,6,0,0,0,5,0,0,0,11,64,64,0,-124,0,0,0,29,0,-128,1,30,0,0,0,30,0,-128,0,2,0,0,0,4,18,0,0,0,0,0,0,0,78,83,75,101,121,101,100,85,110,97,114,99,104,105,118,101,114,0,4,24,0,0,0,0,0,0,0,117,110,97,114,99,104,105,118,101,79,98,106,101,99,116,87,105,116,104,70,105,108,101,0,0,0,0,0,6,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,112,97,116,104,0,50,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,19,0,0,0,21,0,0,0,21,0,0,0,19,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,28,0,0,0,30,0,0,0,6,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,49,0,0,0,7,0,0,0,0,0,0,0,109,97,120,65,103,101,0,0,0,0,0,49,0,0,0,5,0,0,0,0,0,0,0,112,97,116,104,0,5,0,0,0,49,0,0,0,8,0,0,0,0,0,0,0,102,105,108,101,65,103,101,0,26,0,0,0,30,0,0,0,8,0,0,0,0,0,0,0,115,117,99,99,101,115,115,0,34,0,0,0,49,0,0,0,7,0,0,0,0,0,0,0,114,101,115,117,108,116,0,34,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,44,0,0,0,0,2,0,8,26,0,0,0,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-64,0,0,0,-100,-128,0,1,90,64,0,0,22,64,1,-128,-59,0,0,0,-58,64,-64,1,-58,-64,-64,1,0,1,0,0,-36,64,0,1,22,-64,2,-128,-59,0,1,0,-53,64,-63,1,64,1,-128,0,-128,1,0,1,-36,-128,0,2,-38,64,0,0,22,0,1,-128,5,-127,1,0,65,-63,1,0,-128,1,0,0,-64,1,0,1,28,65,0,2,30,0,-128,0,8,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,99,97,99,104,101,0,4,8,0,0,0,0,0,0,0,112,97,116,104,70,111,114,0,4,6,0,0,0,0,0,0,0,99,108,101,97,114,0,4,16,0,0,0,0,0,0,0,78,83,75,101,121,101,100,65,114,99,104,105,118,101,114,0,4,25,0,0,0,0,0,0,0,97,114,99,104,105,118,101,82,111,111,116,79,98,106,101,99,116,95,116,111,70,105,108,101,0,4,5,0,0,0,0,0,0,0,112,117,116,115,0,4,36,0,0,0,0,0,0,0,67,111,117,108,100,110,39,116,32,97,114,99,104,105,118,101,32,99,97,99,104,101,32,39,37,115,39,32,116,111,32,39,37,115,39,0,0,0,0,0,26,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,44,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,25,0,0,0,9,0,0,0,0,0,0,0,99,111,110,116,101,110,116,115,0,0,0,0,0,25,0,0,0,5,0,0,0,0,0,0,0,112,97,116,104,0,5,0,0,0,25,0,0,0,8,0,0,0,0,0,0,0,115,117,99,99,101,115,115,0,18,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,55,0,0,0,0,1,0,5,30,0,0,0,69,0,0,0,70,64,-64,0,70,-128,-64,0,-128,0,0,0,92,-128,0,1,-123,0,0,0,-122,-64,64,1,-122,0,65,1,-64,0,-128,0,-100,-128,0,1,-102,64,0,0,22,64,1,-128,-123,0,0,0,-122,64,65,1,-122,-128,65,1,-63,-64,1,0,-99,0,0,1,-98,0,0,0,-123,0,2,0,-122,64,65,1,-100,-128,-128,0,-59,0,0,0,-58,-64,-64,1,-58,64,-62,1,0,1,-128,0,-36,-128,0,1,-58,-128,-62,1,-115,-64,0,1,-98,0,0,1,30,0,-128,0,11,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,99,97,99,104,101,0,4,8,0,0,0,0,0,0,0,112,97,116,104,70,111,114,0,4,11,0,0,0,0,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,0,0,0,0,105,115,70,105,108,101,0,4,5,0,0,0,0,0,0,0,116,105,109,101,0,4,5,0,0,0,0,0,0,0,100,97,121,115,0,3,0,0,0,0,0,64,-113,64,4,3,0,0,0,0,0,0,0,111,115,0,4,11,0,0,0,0,0,0,0,97,116,116,114,105,98,117,116,101,115,0,4,11,0,0,0,0,0,0,0,109,111,100,105,102,105,101,100,65,116,0,0,0,0,0,30,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,29,0,0,0,5,0,0,0,0,0,0,0,112,97,116,104,0,5,0,0,0,29,0,0,0,8,0,0,0,0,0,0,0,102,105,108,101,65,103,101,0,28,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,63,0,0,0,0,0,3,9,19,0,0,0,69,0,0,0,-118,0,0,0,-27,0,0,0,-94,64,0,0,92,0,1,1,22,64,2,-128,-123,65,0,0,-122,-127,64,3,-122,-63,64,3,-64,1,-128,2,-100,-127,0,1,-59,65,0,0,-58,1,-63,3,-58,65,-63,3,0,2,0,3,-36,65,0,1,97,-128,0,0,22,-64,-4,127,30,0,-128,0,6,0,0,0,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,99,97,99,104,101,0,4,8,0,0,0,0,0,0,0,112,97,116,104,70,111,114,0,4,11,0,0,0,0,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,0,0,0,0,100,101,108,101,116,101,0,0,0,0,0,19,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,59,0,0,0,61,0,0,0,63,0,0,0,7,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,18,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,5,0,0,0,18,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,5,0,0,0,18,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,5,0,0,0,18,0,0,0,2,0,0,0,0,0,0,0,105,0,6,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,6,0,0,0,16,0,0,0,5,0,0,0,0,0,0,0,112,97,116,104,0,11,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,69,0,0,0,0,0,0,2,11,0,0,0,5,0,0,0,6,64,64,0,6,-128,64,0,69,-64,0,0,28,64,0,1,5,0,0,0,6,64,64,0,6,0,65,0,69,-64,0,0,28,64,0,1,30,0,-128,0,5,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,11,0,0,0,0,0,0,0,102,105,108,101,115,121,115,116,101,109,0,4,7,0,0,0,0,0,0,0,100,101,108,101,116,101,0,4,17,0,0,0,0,0,0,0,78,83,67,97,99,104,101,68,105,114,101,99,116,111,114,121,0,4,10,0,0,0,0,0,0,0,99,114,101,97,116,101,68,105,114,0,0,0,0,0,11,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,0,0,0,73,0,0,0,0,1,0,5,10,0,0,0,69,0,0,0,-127,64,0,0,-59,-128,0,0,-58,-64,-64,1,-58,0,-63,1,0,1,0,0,-36,-128,0,1,85,-64,-128,0,94,0,0,1,30,0,-128,0,5,0,0,0,4,17,0,0,0,0,0,0,0,78,83,67,97,99,104,101,68,105,114,101,99,116,111,114,121,0,4,2,0,0,0,0,0,0,0,47,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,7,0,0,0,0,0,0,0,98,97,115,101,54,52,0,4,7,0,0,0,0,0,0,0,101,110,99,111,100,101,0,0,0,0,0,10,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,9,0,0,0,0,0,0,0,34,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,7,0,0,0,7,0,0,0,30,0,0,0,7,0,0,0,35,0,0,0,35,0,0,0,44,0,0,0,35,0,0,0,46,0,0,0,46,0,0,0,55,0,0,0,46,0,0,0,58,0,0,0,58,0,0,0,63,0,0,0,58,0,0,0,66,0,0,0,66,0,0,0,69,0,0,0,66,0,0,0,71,0,0,0,71,0,0,0,73,0,0,0,71,0,0,0,73,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,99,97,108,108,98,97,99,107,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,4,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,30,0,-128,0,2,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,9,0,0,0,0,0,0,0,99,97,108,108,98,97,99,107,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,22,0,0,0,0,1,0,5,12,0,0,0,74,64,0,0,73,0,0,-128,-92,0,0,0,73,-128,-128,-128,-92,64,0,0,73,-128,0,-127,-123,-64,0,0,-64,0,-128,0,0,1,-128,0,-100,64,-128,1,94,0,0,1,30,0,-128,0,4,0,0,0,4,9,0,0,0,0,0,0,0,99,97,108,108,98,97,99,107,0,4,7,0,0,0,0,0,0,0,99,97,110,99,101,108,0,4,7,0,0,0,0,0,0,0,95,95,99,97,108,108,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,0,1,0,2,2,0,0,0,9,64,64,-128,30,0,-128,0,2,0,0,0,4,9,0,0,0,0,0,0,0,99,97,110,99,101,108,101,100,0,1,1,0,0,0,0,2,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,17,0,0,0,0,1,3,6,22,0,0,0,-122,0,64,0,-102,0,0,0,22,0,0,-128,30,0,-128,0,-122,64,64,0,-102,0,0,0,22,64,1,-128,-118,0,-128,0,-58,64,64,0,37,1,0,0,-94,64,0,0,-102,64,0,0,22,-128,0,-128,-118,0,0,0,-27,0,0,0,-94,64,0,0,-58,-128,64,0,5,-63,0,0,64,1,0,1,28,1,0,1,-36,64,0,0,30,0,-128,0,4,0,0,0,4,9,0,0,0,0,0,0,0,99,97,110,99,101,108,101,100,0,4,6,0,0,0,0,0,0,0,115,99,111,112,101,0,4,9,0,0,0,0,0,0,0,99,97,108,108,98,97,99,107,0,4,7,0,0,0,0,0,0,0,117,110,112,97,99,107,0,0,0,0,0,22,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,21,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,21,0,0,0,5,0,0,0,0,0,0,0,97,114,103,115,0,16,0,0,0,21,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,4,0,0,0,8,0,0,0,6,0,0,0,17,0,0,0,10,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,21,0,0,0,22,0,0,0,2,0,0,0,9,0,0,0,0,0,0,0,99,97,108,108,98,97,99,107,0,0,0,0,0,11,0,0,0,7,0,0,0,0,0,0,0,111,98,106,101,99,116,0,2,0,0,0,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,102,114,97,109,101,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,10,0,0,0,5,0,0,0,100,0,0,0,9,64,-128,-128,5,0,0,0,100,64,0,0,9,64,0,-127,5,0,0,0,100,-128,0,0,9,64,-128,-127,30,0,-128,0,4,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,102,114,97,109,101,0,4,7,0,0,0,0,0,0,0,98,111,117,110,100,115,0,4,11,0,0,0,0,0,0,0,100,105,109,101,110,115,105,111,110,115,0,3,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,0,1,0,4,7,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,93,0,-128,1,94,0,0,0,30,0,-128,0,3,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,11,0,0,0,0,0,0,0,100,105,109,101,110,115,105,111,110,115,0,4,6,0,0,0,0,0,0,0,102,114,97,109,101,0,0,0,0,0,7,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,111,98,106,101,99,116,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,0,1,0,4,7,0,0,0,69,0,0,0,70,64,-64,0,-128,0,0,0,-63,-128,0,0,93,0,-128,1,94,0,0,0,30,0,-128,0,3,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,11,0,0,0,0,0,0,0,100,105,109,101,110,115,105,111,110,115,0,4,7,0,0,0,0,0,0,0,98,111,117,110,100,115,0,0,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,111,98,106,101,99,116,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,76,0,0,0,0,2,0,6,18,0,0,0,-123,0,0,0,-54,-128,0,0,-55,0,-128,-128,36,1,0,0,0,0,-128,0,-55,0,1,-127,10,-127,0,0,100,65,0,0,0,0,-128,0,0,0,0,0,9,65,-127,-127,100,-127,0,0,0,0,-128,0,0,0,0,0,9,65,1,-126,-99,0,-128,1,-98,0,0,0,30,0,-128,0,5,0,0,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,111,98,106,101,99,116,0,4,7,0,0,0,0,0,0,0,99,101,110,116,101,114,0,4,8,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,4,11,0,0,0,0,0,0,0,95,95,110,101,119,105,110,100,101,120,0,3,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,17,0,0,0,1,1,0,4,14,0,0,0,69,0,0,0,70,64,-64,0,-122,-128,64,0,-117,-64,64,1,-100,-128,0,1,-60,0,0,0,92,-128,-128,1,70,0,-63,0,-122,0,65,0,77,-128,-128,0,79,64,-63,0,9,64,0,-125,30,0,0,1,30,0,-128,0,7,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,11,0,0,0,0,0,0,0,100,105,109,101,110,115,105,111,110,115,0,4,7,0,0,0,0,0,0,0,111,98,106,101,99,116,0,4,10,0,0,0,0,0,0,0,115,117,112,101,114,118,105,101,119,0,4,6,0,0,0,0,0,0,0,119,105,100,116,104,0,3,0,0,0,0,0,0,0,64,4,2,0,0,0,0,0,0,0,120,0,0,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,13,0,0,0,7,0,0,0,0,0,0,0,111,102,102,115,101,116,0,11,0,0,0,13,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,118,97,114,78,97,109,101,0,0,0,0,0,0,0,0,0,20,0,0,0,39,0,0,0,2,2,0,6,74,0,0,0,23,0,-64,0,22,64,0,-128,65,64,0,0,22,-128,0,-128,23,-128,-64,0,22,0,0,-128,65,-64,0,0,-124,0,0,0,23,0,65,1,22,0,1,-128,-124,0,-128,0,-117,0,65,1,-100,-128,0,1,-102,64,0,0,22,-128,0,-128,-124,0,-128,0,-117,64,65,1,-100,-128,0,1,23,-64,-64,0,22,-128,0,-128,-58,-128,64,1,-34,0,0,1,22,64,12,-128,23,-128,-63,0,22,0,1,-128,-58,-128,64,1,6,-63,65,1,-52,0,-127,1,-34,0,0,1,22,-128,10,-128,23,64,-64,0,22,-128,0,-128,-58,0,64,1,-34,0,0,1,22,64,9,-128,23,0,-62,0,22,0,1,-128,-58,0,64,1,6,65,66,1,-52,0,-127,1,-34,0,0,1,22,-128,7,-128,23,64,-62,0,22,-128,0,-128,-58,64,66,1,-34,0,0,1,22,64,6,-128,23,-64,-63,0,22,-128,0,-128,-58,-64,65,1,-34,0,0,1,22,0,5,-128,23,-128,-62,0,22,64,1,-128,-59,-64,2,0,6,-63,65,1,70,65,66,1,-35,0,-128,1,-34,0,0,0,22,0,3,-128,23,0,-61,0,22,64,1,-128,-59,64,3,0,6,-127,64,1,70,1,64,1,-35,0,-128,1,-34,0,0,0,22,0,1,-128,-59,-128,3,0,1,-63,3,0,64,1,-128,0,21,65,1,2,-36,64,0,1,30,0,-128,0,16,0,0,0,4,2,0,0,0,0,0,0,0,121,0,4,4,0,0,0,0,0,0,0,116,111,112,0,4,2,0,0,0,0,0,0,0,120,0,4,5,0,0,0,0,0,0,0,108,101,102,116,0,4,6,0,0,0,0,0,0,0,102,114,97,109,101,0,4,7,0,0,0,0,0,0,0,98,111,117,110,100,115,0,4,6,0,0,0,0,0,0,0,114,105,103,104,116,0,4,6,0,0,0,0,0,0,0,119,105,100,116,104,0,4,7,0,0,0,0,0,0,0,98,111,116,116,111,109,0,4,7,0,0,0,0,0,0,0,104,101,105,103,104,116,0,4,5,0,0,0,0,0,0,0,115,105,122,101,0,4,7,0,0,0,0,0,0,0,67,71,83,105,122,101,0,4,7,0,0,0,0,0,0,0,111,114,105,103,105,110,0,4,8,0,0,0,0,0,0,0,67,71,80,111,105,110,116,0,4,6,0,0,0,0,0,0,0,101,114,114,111,114,0,4,20,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,102,114,97,109,101,32,107,101,121,58,32,0,0,0,0,0,74,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,37,0,0,0,39,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,73,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,73,0,0,0,11,0,0,0,0,0,0,0,100,105,109,101,110,115,105,111,110,115,0,18,0,0,0,73,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0,118,97,114,78,97,109,101,0,7,0,0,0,0,0,0,0,111,98,106,101,99,116,0,0,0,0,0,0,0,0,0,41,0,0,0,74,0,0,0,2,3,0,7,108,0,0,0,23,0,-64,0,22,64,0,-128,65,64,0,0,22,-128,0,-128,23,-128,-64,0,22,0,0,-128,65,-64,0,0,-60,0,0,0,23,0,-63,1,22,0,1,-128,-60,0,-128,0,-53,0,-63,1,-36,-128,0,1,-38,64,0,0,22,-128,0,-128,-60,0,-128,0,-53,64,-63,1,-36,-128,0,1,23,-64,-64,0,22,64,0,-128,-55,-128,0,-127,22,-64,17,-128,23,-128,-63,0,22,-64,0,-128,6,-63,-63,1,13,1,1,1,-55,0,1,-127,22,64,16,-128,23,64,-64,0,22,64,0,-128,-55,-128,0,-128,22,64,15,-128,23,0,-62,0,22,-64,0,-128,6,65,-62,1,13,1,1,1,-55,0,1,-128,22,-64,13,-128,23,64,-62,0,22,64,0,-128,-55,-128,-128,-124,22,-64,12,-128,23,-64,-63,0,22,64,0,-128,-55,-128,-128,-125,22,-64,11,-128,23,-128,-62,0,22,0,1,-128,6,-63,65,1,-55,0,-127,-125,6,65,66,1,-55,0,-127,-124,22,0,10,-128,23,-64,-62,0,22,0,1,-128,6,-127,64,1,-55,0,1,-127,6,1,64,1,-55,0,1,-128,22,64,8,-128,23,0,-61,0,22,-128,1,-128,6,65,-62,1,70,1,-64,1,77,65,1,1,13,65,1,2,-55,0,-127,-124,-55,-128,0,-128,22,0,6,-128,23,64,-61,0,22,-64,1,-128,6,65,-62,1,70,65,-62,1,-122,1,-64,1,76,-127,-127,2,77,65,1,1,12,65,1,2,-55,0,-127,-124,22,-128,3,-128,23,-128,-61,0,22,-64,1,-128,6,-63,-63,1,70,-63,-63,1,-122,-127,-64,1,76,-127,-127,2,77,65,1,1,12,65,1,2,-55,0,-127,-125,22,0,1,-128,5,-63,3,0,65,1,4,0,-128,1,-128,0,85,-127,-127,2,28,65,0,1,4,1,0,0,23,0,65,2,22,0,1,-128,4,1,-128,0,11,65,68,2,-128,1,-128,1,28,65,-128,1,22,-64,0,-128,4,1,-128,0,11,-127,68,2,-128,1,-128,1,28,65,-128,1,30,0,0,1,30,0,-128,0,19,0,0,0,4,2,0,0,0,0,0,0,0,121,0,4,4,0,0,0,0,0,0,0,116,111,112,0,4,2,0,0,0,0,0,0,0,120,0,4,5,0,0,0,0,0,0,0,108,101,102,116,0,4,6,0,0,0,0,0,0,0,102,114,97,109,101,0,4,7,0,0,0,0,0,0,0,98,111,117,110,100,115,0,4,6,0,0,0,0,0,0,0,114,105,103,104,116,0,4,6,0,0,0,0,0,0,0,119,105,100,116,104,0,4,7,0,0,0,0,0,0,0,98,111,116,116,111,109,0,4,7,0,0,0,0,0,0,0,104,101,105,103,104,116,0,4,5,0,0,0,0,0,0,0,115,105,122,101,0,4,7,0,0,0,0,0,0,0,111,114,105,103,105,110,0,4,11,0,0,0,0,0,0,0,115,116,114,101,116,99,104,84,111,112,0,4,14,0,0,0,0,0,0,0,115,116,114,101,116,99,104,66,111,116,116,111,109,0,4,13,0,0,0,0,0,0,0,115,116,114,101,116,99,104,82,105,103,104,116,0,4,6,0,0,0,0,0,0,0,101,114,114,111,114,0,4,20,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,102,114,97,109,101,32,107,101,121,58,32,0,4,9,0,0,0,0,0,0,0,115,101,116,70,114,97,109,101,0,4,10,0,0,0,0,0,0,0,115,101,116,66,111,117,110,100,115,0,0,0,0,0,108,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,43,0,0,0,43,0,0,0,43,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,52,0,0,0,52,0,0,0,52,0,0,0,52,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,58,0,0,0,58,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,73,0,0,0,74,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,107,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,107,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,107,0,0,0,11,0,0,0,0,0,0,0,100,105,109,101,110,115,105,111,110,115,0,18,0,0,0,107,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0,118,97,114,78,97,109,101,0,7,0,0,0,0,0,0,0,111,98,106,101,99,116,0,18,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,11,0,0,0,75,0,0,0,76,0,0,0,2,0,0,0,7,0,0,0,0,0,0,0,111,98,106,101,99,116,0,0,0,0,0,17,0,0,0,8,0,0,0,0,0,0,0,118,97,114,78,97,109,101,0,0,0,0,0,17,0,0,0,0,0,0,0,10,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,0,8,0,0,0,6,0,0,0,10,0,0,0,76,0,0,0,10,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,56,0,0,0,5,0,0,0,65,64,0,0,28,64,0,1,5,0,0,0,65,-128,0,0,28,64,0,1,5,0,0,0,65,-64,0,0,28,64,0,1,5,0,0,0,65,0,1,0,28,64,0,1,5,0,0,0,65,64,1,0,28,64,0,1,5,0,0,0,65,-128,1,0,28,64,0,1,5,0,0,0,65,-64,1,0,28,64,0,1,5,0,0,0,65,0,2,0,28,64,0,1,5,0,0,0,65,64,2,0,28,64,0,1,36,0,0,0,7,-128,2,0,5,-64,2,0,100,64,0,0,9,64,0,-122,5,64,3,0,11,-128,67,0,28,-128,0,1,11,-64,67,0,28,-128,0,1,11,0,68,0,-127,64,4,0,28,-128,-128,1,26,64,0,0,22,64,0,-128,36,-128,0,0,7,-128,4,0,5,-64,2,0,100,-64,0,0,9,64,-128,-119,36,0,1,0,7,0,5,0,5,-64,2,0,100,64,1,0,9,64,-128,-118,5,-64,2,0,100,-128,1,0,9,64,0,-117,30,0,-128,0,23,0,0,0,4,8,0,0,0,0,0,0,0,114,101,113,117,105,114,101,0,4,16,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,98,105,116,0,4,21,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,99,97,108,108,98,97,99,107,0,4,18,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,102,114,97,109,101,0,4,19,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,98,97,115,101,54,52,0,4,17,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,116,105,109,101,0,4,18,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,99,97,99,104,101,0,4,21,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,97,117,116,111,108,111,97,100,0,4,22,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,87,97,120,83,101,114,118,101,114,0,4,21,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,46,112,105,99,107,86,105,101,119,0,4,9,0,0,0,0,0,0,0,73,66,79,117,116,108,101,116,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,97,108,101,114,116,0,4,9,0,0,0,0,0,0,0,85,73,68,101,118,105,99,101,0,4,14,0,0,0,0,0,0,0,99,117,114,114,101,110,116,68,101,118,105,99,101,0,4,6,0,0,0,0,0,0,0,109,111,100,101,108,0,4,6,0,0,0,0,0,0,0,109,97,116,99,104,0,4,17,0,0,0,0,0,0,0,105,80,104,111,110,101,32,83,105,109,117,108,97,116,111,114,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,5,0,0,0,0,0,0,0,112,117,116,115,0,4,5,0,0,0,0,0,0,0,103,117,105,100,0,4,5,0,0,0,0,0,0,0,101,118,97,108,0,7,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,15,0,0,0,0,0,7,2,1,0,0,0,30,0,-128,0,0,0,0,0,0,0,0,0,1,0,0,0,15,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,33,0,0,0,0,2,3,12,31,0,0,0,-59,0,0,0,-53,64,-64,1,-36,-128,0,1,11,-127,-64,1,-128,1,0,0,28,65,-128,1,11,-63,-64,1,-128,1,-128,0,28,65,-128,1,37,1,0,1,26,65,0,0,22,-64,0,-128,11,1,-63,1,-127,65,1,0,28,65,-128,1,22,-128,2,-128,5,-127,1,0,74,1,0,0,-91,1,0,0,98,65,0,0,28,1,1,1,22,-128,0,-128,75,2,-63,1,-64,2,0,4,92,66,-128,1,33,-127,0,0,22,-128,-2,127,11,-63,-63,1,28,65,0,1,-34,0,0,1,30,0,-128,0,8,0,0,0,4,12,0,0,0,0,0,0,0,85,73,65,108,101,114,116,86,105,101,119,0,4,5,0,0,0,0,0,0,0,105,110,105,116,0,4,9,0,0,0,0,0,0,0,115,101,116,84,105,116,108,101,0,4,11,0,0,0,0,0,0,0,115,101,116,77,101,115,115,97,103,101,0,4,19,0,0,0,0,0,0,0,97,100,100,66,117,116,116,111,110,87,105,116,104,84,105,116,108,101,0,4,3,0,0,0,0,0,0,0,79,75,0,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,5,0,0,0,0,0,0,0,115,104,111,119,0,0,0,0,0,31,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,22,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,25,0,0,0,26,0,0,0,30,0,0,0,30,0,0,0,32,0,0,0,33,0,0,0,9,0,0,0,6,0,0,0,0,0,0,0,116,105,116,108,101,0,0,0,0,0,30,0,0,0,8,0,0,0,0,0,0,0,109,101,115,115,97,103,101,0,0,0,0,0,30,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,30,0,0,0,6,0,0,0,0,0,0,0,97,108,101,114,116,0,3,0,0,0,30,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,21,0,0,0,27,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,21,0,0,0,27,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,21,0,0,0,27,0,0,0,2,0,0,0,0,0,0,0,105,0,22,0,0,0,25,0,0,0,5,0,0,0,0,0,0,0,110,97,109,101,0,22,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,40,0,0,0,0,1,0,3,5,0,0,0,69,0,0,0,-92,0,0,0,0,0,0,0,92,64,0,1,30,0,-128,0,1,0,0,0,4,6,0,0,0,0,0,0,0,112,99,97,108,108,0,1,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,39,0,0,0,1,0,0,3,7,0,0,0,5,0,0,0,6,64,64,0,69,-128,0,0,-124,0,0,0,92,0,0,1,28,64,0,0,30,0,-128,0,3,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,7,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,111,98,106,0,5,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,111,98,106,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,55,0,0,0,0,1,3,5,28,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,23,64,64,1,22,0,1,-128,-123,64,0,0,-122,-128,64,1,-64,0,0,0,-99,0,0,1,-98,0,0,0,-91,0,0,1,-102,0,0,0,22,0,2,-128,-123,-64,0,0,-122,0,65,1,-59,-128,0,0,0,1,0,0,-36,-128,0,1,37,1,0,0,-100,-128,0,0,0,0,0,1,22,-64,0,-128,-123,-128,0,0,-64,0,0,0,-100,-128,0,1,0,0,0,1,30,0,0,1,30,0,-128,0,5,0,0,0,4,5,0,0,0,0,0,0,0,116,121,112,101,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,7,0,0,0,0,0,0,0,102,111,114,109,97,116,0,0,0,0,0,28,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,54,0,0,0,55,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,111,98,106,0,0,0,0,0,27,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,0,0,0,59,0,0,0,0,1,3,6,8,0,0,0,-123,0,0,0,-59,64,0,0,-58,-128,-64,1,0,1,0,0,101,1,0,0,-36,0,0,0,-100,64,0,0,30,0,-128,0,3,0,0,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,8,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,59,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,111,98,106,0,0,0,0,0,7,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,0,0,0,63,0,0,0,0,0,0,2,7,0,0,0,5,0,0,0,11,64,64,0,28,-128,0,1,11,-128,64,0,29,0,0,1,30,0,0,0,30,0,-128,0,3,0,0,0,4,14,0,0,0,0,0,0,0,78,83,80,114,111,99,101,115,115,73,110,102,111,0,4,12,0,0,0,0,0,0,0,112,114,111,99,101,115,115,73,110,102,111,0,4,21,0,0,0,0,0,0,0,103,108,111,98,97,108,108,121,85,110,105,113,117,101,83,116,114,105,110,103,0,0,0,0,0,7,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,78,0,0,0,0,1,0,3,6,0,0,0,69,0,0,0,-92,0,0,0,0,0,0,0,93,0,0,1,94,0,0,0,30,0,-128,0,1,0,0,0,4,6,0,0,0,0,0,0,0,112,99,97,108,108,0,1,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,77,0,0,0,1,0,0,5,28,0,0,0,4,0,0,0,11,0,64,0,-127,64,0,0,28,-128,-128,1,26,64,0,0,22,0,1,-128,1,-128,0,0,68,0,0,0,-127,-64,0,0,21,-128,0,0,8,0,0,0,5,0,1,0,68,0,0,0,-127,64,1,0,28,-64,-128,1,90,0,0,0,22,64,1,-128,-123,-128,1,0,-63,-64,1,0,0,1,-128,0,-43,0,-127,1,-100,64,0,1,22,-64,0,-128,-123,0,2,0,-64,0,0,0,-36,0,-128,0,-100,64,0,0,30,0,-128,0,9,0,0,0,4,6,0,0,0,0,0,0,0,109,97,116,99,104,0,4,2,0,0,0,0,0,0,0,61,0,4,12,0,0,0,0,0,0,0,100,111,32,114,101,116,117,114,110,32,40,0,4,6,0,0,0,0,0,0,0,41,32,101,110,100,0,4,11,0,0,0,0,0,0,0,108,111,97,100,115,116,114,105,110,103,0,4,5,0,0,0,0,0,0,0,82,69,80,76,0,4,6,0,0,0,0,0,0,0,101,114,114,111,114,0,4,15,0,0,0,0,0,0,0,83,121,110,116,97,120,32,69,114,114,111,114,58,32,0,4,5,0,0,0,0,0,0,0,112,117,116,115,0,0,0,0,0,28,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,68,0,0,0,71,0,0,0,71,0,0,0,71,0,0,0,71,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,77,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,99,111,100,101,0,15,0,0,0,27,0,0,0,4,0,0,0,0,0,0,0,101,114,114,0,15,0,0,0,27,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,105,110,112,117,116,0,6,0,0,0,66,0,0,0,77,0,0,0,77,0,0,0,66,0,0,0,77,0,0,0,78,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,105,110,112,117,116,0,0,0,0,0,5,0,0,0,0,0,0,0,56,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,15,0,0,0,13,0,0,0,17,0,0,0,33,0,0,0,17,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,40,0,0,0,37,0,0,0,43,0,0,0,55,0,0,0,43,0,0,0,59,0,0,0,57,0,0,0,61,0,0,0,63,0,0,0,61,0,0,0,65,0,0,0,78,0,0,0,65,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,112,105,99,107,86,105,101,119,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,4,19,0,0,0,36,0,0,0,7,0,0,0,36,64,0,0,7,64,0,0,36,-128,0,0,7,-128,0,0,5,-64,0,0,74,0,0,1,-127,0,1,0,-59,64,1,0,98,64,0,1,28,64,0,1,36,-64,0,0,7,-128,1,0,36,0,1,0,7,-64,1,0,36,64,1,0,7,0,2,0,30,0,-128,0,9,0,0,0,4,10,0,0,0,0,0,0,0,115,116,97,114,116,80,105,99,107,0,4,8,0,0,0,0,0,0,0,101,110,100,80,105,99,107,0,4,20,0,0,0,0,0,0,0,67,71,82,101,99,116,67,111,110,116,97,105,110,115,80,111,105,110,116,0,4,9,0,0,0,0,0,0,0,119,97,120,67,108,97,115,115,0,4,16,0,0,0,0,0,0,0,73,110,116,101,114,99,101,112,116,111,114,86,105,101,119,0,4,7,0,0,0,0,0,0,0,85,73,86,105,101,119,0,4,23,0,0,0,0,0,0,0,116,111,117,99,104,101,115,69,110,100,101,100,95,119,105,116,104,69,118,101,110,116,0,4,11,0,0,0,0,0,0,0,112,105,99,107,101,100,86,105,101,119,0,4,30,0,0,0,0,0,0,0,102,105,110,100,79,119,110,101,114,79,102,80,111,105,110,116,95,115,116,97,114,116,105,110,103,87,105,116,104,0,6,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,7,0,0,0,0,0,0,5,19,0,0,0,5,0,0,0,11,64,64,0,28,-128,0,1,11,-128,64,0,28,-128,0,1,69,0,1,0,75,64,-63,0,92,-128,0,1,75,-128,-63,0,-53,-64,65,0,-36,0,0,1,92,-128,0,0,71,-64,0,0,75,0,66,0,-59,-64,0,0,92,64,-128,1,65,64,2,0,94,0,0,1,30,0,-128,0,10,0,0,0,4,14,0,0,0,0,0,0,0,85,73,65,112,112,108,105,99,97,116,105,111,110,0,4,18,0,0,0,0,0,0,0,115,104,97,114,101,100,65,112,112,108,105,99,97,116,105,111,110,0,4,10,0,0,0,0,0,0,0,107,101,121,87,105,110,100,111,119,0,4,13,0,0,0,0,0,0,0,95,105,110,116,101,114,99,101,112,116,111,114,0,4,16,0,0,0,0,0,0,0,73,110,116,101,114,99,101,112,116,111,114,86,105,101,119,0,4,6,0,0,0,0,0,0,0,97,108,108,111,99,0,4,14,0,0,0,0,0,0,0,105,110,105,116,87,105,116,104,70,114,97,109,101,0,4,7,0,0,0,0,0,0,0,98,111,117,110,100,115,0,4,11,0,0,0,0,0,0,0,97,100,100,83,117,98,118,105,101,119,0,4,76,0,0,0,0,0,0,0,71,111,32,111,110,44,32,116,111,117,99,104,32,115,111,109,101,116,104,105,110,103,46,32,71,101,116,32,116,104,101,32,118,105,101,119,32,98,121,32,99,97,108,108,105,110,103,32,101,110,100,80,105,99,107,40,41,32,119,104,101,110,32,121,111,117,39,114,101,32,100,111,110,101,46,0,0,0,0,0,19,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,119,0,5,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0,0,0,0,3,8,0,0,0,5,0,0,0,11,64,64,0,28,-128,0,1,69,0,0,0,75,-128,-64,0,92,64,0,1,30,0,0,1,30,0,-128,0,3,0,0,0,4,13,0,0,0,0,0,0,0,95,105,110,116,101,114,99,101,112,116,111,114,0,4,11,0,0,0,0,0,0,0,112,105,99,107,101,100,86,105,101,119,0,4,20,0,0,0,0,0,0,0,114,101,109,111,118,101,70,114,111,109,83,117,112,101,114,118,105,101,119,0,0,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,118,0,3,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,21,0,0,0,0,2,0,5,24,0,0,0,-122,0,64,0,-58,0,-64,0,25,-64,0,1,22,-64,3,-128,-122,0,-64,0,-58,0,64,0,6,65,64,0,-52,0,-127,1,25,-64,0,1,22,64,2,-128,-122,-128,64,0,-58,-128,-64,0,25,-64,0,1,22,64,1,-128,-122,-128,-64,0,-58,-128,64,0,6,-63,64,0,-52,0,-127,1,89,-64,0,1,22,0,0,-128,-126,64,0,0,-126,0,-128,0,-98,0,0,1,30,0,-128,0,4,0,0,0,4,2,0,0,0,0,0,0,0,120,0,4,6,0,0,0,0,0,0,0,119,105,100,116,104,0,4,2,0,0,0,0,0,0,0,121,0,4,7,0,0,0,0,0,0,0,104,101,105,103,104,116,0,0,0,0,0,24,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,114,101,99,116,0,0,0,0,0,23,0,0,0,6,0,0,0,0,0,0,0,112,111,105,110,116,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,31,0,0,0,0,3,0,10,25,0,0,0,-53,0,-64,0,-36,-128,0,1,-53,64,-64,1,64,1,0,0,-36,-128,-128,1,5,-127,0,0,11,-63,64,2,28,-127,0,1,11,1,65,2,28,-127,0,1,75,65,65,2,-64,1,-128,1,0,2,0,0,92,-127,0,2,-117,-63,65,0,0,2,-128,2,64,2,0,2,-100,-127,0,2,9,-128,1,-125,-123,1,2,0,-58,-127,65,0,-53,65,-62,3,-36,1,0,1,-100,65,0,0,30,0,-128,0,10,0,0,0,4,10,0,0,0,0,0,0,0,97,110,121,79,98,106,101,99,116,0,4,15,0,0,0,0,0,0,0,108,111,99,97,116,105,111,110,73,110,86,105,101,119,0,4,14,0,0,0,0,0,0,0,85,73,65,112,112,108,105,99,97,116,105,111,110,0,4,18,0,0,0,0,0,0,0,115,104,97,114,101,100,65,112,112,108,105,99,97,116,105,111,110,0,4,10,0,0,0,0,0,0,0,107,101,121,87,105,110,100,111,119,0,4,22,0,0,0,0,0,0,0,99,111,110,118,101,114,116,80,111,105,110,116,95,102,114,111,109,86,105,101,119,0,4,12,0,0,0,0,0,0,0,112,105,99,107,101,100,86,105,101,119,95,0,4,30,0,0,0,0,0,0,0,102,105,110,100,79,119,110,101,114,79,102,80,111,105,110,116,95,115,116,97,114,116,105,110,103,87,105,116,104,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,6,0,0,0,0,0,0,0,99,108,97,115,115,0,0,0,0,0,25,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,26,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,27,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,31,0,0,0,6,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,24,0,0,0,8,0,0,0,0,0,0,0,116,111,117,99,104,101,115,0,0,0,0,0,24,0,0,0,6,0,0,0,0,0,0,0,101,118,101,110,116,0,0,0,0,0,24,0,0,0,6,0,0,0,0,0,0,0,112,111,105,110,116,0,5,0,0,0,24,0,0,0,2,0,0,0,0,0,0,0,119,0,10,0,0,0,24,0,0,0,14,0,0,0,0,0,0,0,112,111,105,110,116,73,110,87,105,110,100,111,119,0,14,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,35,0,0,0,0,1,0,2,3,0,0,0,70,0,64,0,94,0,0,1,30,0,-128,0,1,0,0,0,4,12,0,0,0,0,0,0,0,112,105,99,107,101,100,86,105,101,119,95,0,0,0,0,0,3,0,0,0,34,0,0,0,34,0,0,0,35,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,54,0,0,0,0,3,0,13,37,0,0,0,23,0,0,1,22,64,0,-128,-61,0,-128,1,-34,0,0,1,-59,0,0,0,11,65,64,1,28,-127,0,1,64,1,-128,0,-36,-128,-128,1,-38,64,0,0,22,64,0,-128,-61,0,-128,1,-34,0,0,1,-61,0,-128,1,5,-127,0,0,75,-63,64,1,92,1,0,1,28,1,1,0,22,-128,2,-128,75,66,65,4,-64,2,-128,0,0,3,0,1,92,-126,0,2,71,2,1,0,75,-126,65,0,-59,2,1,0,0,3,0,4,92,-126,0,2,-37,64,-128,4,22,-64,-1,127,33,-127,0,0,22,-128,-4,127,27,65,-128,1,22,0,0,-128,0,1,0,1,30,1,0,1,30,0,-128,0,7,0,0,0,4,20,0,0,0,0,0,0,0,67,71,82,101,99,116,67,111,110,116,97,105,110,115,80,111,105,110,116,0,4,7,0,0,0,0,0,0,0,98,111,117,110,100,115,0,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,9,0,0,0,0,0,0,0,115,117,98,118,105,101,119,115,0,4,15,0,0,0,0,0,0,0,112,111,105,110,116,73,110,83,117,98,118,105,101,119,0,4,22,0,0,0,0,0,0,0,99,111,110,118,101,114,116,80,111,105,110,116,95,102,114,111,109,86,105,101,119,0,4,30,0,0,0,0,0,0,0,102,105,110,100,79,119,110,101,114,79,102,80,111,105,110,116,95,115,116,97,114,116,105,110,103,87,105,116,104,0,0,0,0,0,37,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,43,0,0,0,43,0,0,0,46,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,50,0,0,0,48,0,0,0,50,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,54,0,0,0,9,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,36,0,0,0,6,0,0,0,0,0,0,0,112,111,105,110,116,0,0,0,0,0,36,0,0,0,5,0,0,0,0,0,0,0,118,105,101,119,0,0,0,0,0,36,0,0,0,13,0,0,0,0,0,0,0,98,101,116,116,101,114,82,101,115,117,108,116,0,14,0,0,0,36,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,18,0,0,0,32,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,18,0,0,0,32,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,18,0,0,0,32,0,0,0,2,0,0,0,0,0,0,0,105,0,19,0,0,0,30,0,0,0,8,0,0,0,0,0,0,0,115,117,98,118,105,101,119,0,19,0,0,0,30,0,0,0,0,0,0,0,19,0,0,0,7,0,0,0,2,0,0,0,13,0,0,0,9,0,0,0,21,0,0,0,16,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,31,0,0,0,25,0,0,0,35,0,0,0,33,0,0,0,54,0,0,0,37,0,0,0,54,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,104,101,108,112,101,114,115,47,116,105,109,101,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,40,0,0,0,5,0,0,0,74,0,0,0,9,64,-128,-128,5,0,0,0,6,64,64,0,100,0,0,0,9,64,0,-127,5,0,0,0,6,64,64,0,100,64,0,0,9,64,-128,-127,5,0,0,0,6,64,64,0,100,-128,0,0,9,64,0,-126,5,0,0,0,6,64,64,0,100,-64,0,0,9,64,-128,-126,5,0,0,0,6,64,64,0,100,0,1,0,9,64,0,-125,5,0,0,0,6,64,64,0,100,64,1,0,9,64,-128,-125,5,0,0,0,6,64,64,0,100,-128,1,0,9,64,0,-124,5,0,0,0,6,64,64,0,100,-64,1,0,9,64,-128,-124,5,0,0,0,6,64,64,0,100,0,2,0,9,64,0,-123,30,0,-128,0,11,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,116,105,109,101,0,4,8,0,0,0,0,0,0,0,109,105,110,117,116,101,115,0,4,6,0,0,0,0,0,0,0,104,111,117,114,115,0,4,5,0,0,0,0,0,0,0,100,97,121,115,0,4,11,0,0,0,0,0,0,0,102,111,114,109,97,116,68,97,116,101,0,4,10,0,0,0,0,0,0,0,112,97,114,115,101,68,97,116,101,0,4,14,0,0,0,0,0,0,0,98,101,103,105,110,105,110,103,79,102,68,97,121,0,4,9,0,0,0,0,0,0,0,101,110,100,79,102,68,97,121,0,4,15,0,0,0,0,0,0,0,116,105,109,101,65,103,111,73,110,87,111,114,100,115,0,4,6,0,0,0,0,0,0,0,115,105,110,99,101,0,9,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0,0,1,0,2,3,0,0,0,78,0,64,0,94,0,0,1,30,0,-128,0,1,0,0,0,3,0,0,0,0,0,0,78,64,0,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,110,117,109,98,101,114,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,9,0,0,0,0,1,0,3,8,0,0,0,69,0,0,0,70,64,-64,0,70,-128,-64,0,-127,-64,0,0,92,-128,0,1,78,64,0,0,94,0,0,1,30,0,-128,0,4,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,116,105,109,101,0,4,8,0,0,0,0,0,0,0,109,105,110,117,116,101,115,0,3,0,0,0,0,0,0,78,64,0,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,110,117,109,98,101,114,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,13,0,0,0,0,1,0,3,8,0,0,0,69,0,0,0,70,64,-64,0,70,-128,-64,0,-127,-64,0,0,92,-128,0,1,78,64,0,0,94,0,0,1,30,0,-128,0,4,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,116,105,109,101,0,4,6,0,0,0,0,0,0,0,104,111,117,114,115,0,3,0,0,0,0,0,0,56,64,0,0,0,0,8,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,110,117,109,98,101,114,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,25,0,0,0,0,2,0,6,37,0,0,0,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-102,64,0,0,22,-64,3,-128,-123,0,0,0,-122,64,64,1,-59,-64,0,0,-53,0,-63,1,-36,-128,0,1,-119,-64,0,-127,-123,64,1,0,-117,-128,65,1,1,-63,1,0,-100,-128,-128,1,-59,0,0,0,-58,64,-64,1,-58,-128,-64,1,-53,0,-62,1,64,1,0,1,-36,64,-128,1,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-117,64,66,1,27,65,-128,0,22,0,0,-128,1,-127,2,0,-100,64,-128,1,-123,0,0,0,-122,64,64,1,-122,-128,64,1,-117,-64,66,1,0,1,0,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,12,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,116,105,109,101,0,4,17,0,0,0,0,0,0,0,95,111,117,116,112,117,116,70,111,114,109,97,116,116,101,114,0,4,16,0,0,0,0,0,0,0,78,83,68,97,116,101,70,111,114,109,97,116,116,101,114,0,4,5,0,0,0,0,0,0,0,105,110,105,116,0,4,9,0,0,0,0,0,0,0,78,83,76,111,99,97,108,101,0,4,25,0,0,0,0,0,0,0,105,110,105,116,87,105,116,104,76,111,99,97,108,101,73,100,101,110,116,105,102,105,101,114,0,4,12,0,0,0,0,0,0,0,101,110,95,85,83,95,80,79,83,73,88,0,4,10,0,0,0,0,0,0,0,115,101,116,76,111,99,97,108,101,0,4,14,0,0,0,0,0,0,0,115,101,116,68,97,116,101,70,111,114,109,97,116,0,4,7,0,0,0,0,0,0,0,77,77,77,77,32,100,0,4,15,0,0,0,0,0,0,0,115,116,114,105,110,103,70,114,111,109,68,97,116,101,0,0,0,0,0,37,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,0,36,0,0,0,8,0,0,0,0,0,0,0,112,97,116,116,101,114,110,0,0,0,0,0,36,0,0,0,7,0,0,0,0,0,0,0,108,111,99,97,108,101,0,15,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,41,0,0,0,0,2,0,6,43,0,0,0,-117,0,64,0,1,65,0,0,65,-127,0,0,-100,-128,0,2,0,0,0,1,-123,-64,0,0,-122,0,65,1,-122,64,65,1,-102,64,0,0,22,0,4,-128,-123,-64,0,0,-122,0,65,1,-59,-128,1,0,-53,-64,-63,1,-36,-128,0,1,-119,-64,-128,-126,-123,64,2,0,-117,-128,66,1,1,-63,2,0,-100,-128,-128,1,-121,0,2,0,-123,-64,0,0,-122,0,65,1,-122,64,65,1,-117,0,67,1,5,1,2,0,-100,64,-128,1,-123,-64,0,0,-122,0,65,1,-122,64,65,1,-117,64,67,1,27,65,-128,0,22,0,0,-128,1,-127,3,0,-100,64,-128,1,-123,-64,0,0,-122,0,65,1,-122,64,65,1,-117,-64,67,1,0,1,0,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,16,0,0,0,4,5,0,0,0,0,0,0,0,103,115,117,98,0,4,3,0,0,0,0,0,0,0,90,36,0,4,5,0,0,0,0,0,0,0,32,71,77,84,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,116,105,109,101,0,4,16,0,0,0,0,0,0,0,95,105,110,112,117,116,70,111,114,109,97,116,116,101,114,0,4,16,0,0,0,0,0,0,0,78,83,68,97,116,101,70,111,114,109,97,116,116,101,114,0,4,5,0,0,0,0,0,0,0,105,110,105,116,0,4,7,0,0,0,0,0,0,0,108,111,99,97,108,101,0,4,9,0,0,0,0,0,0,0,78,83,76,111,99,97,108,101,0,4,25,0,0,0,0,0,0,0,105,110,105,116,87,105,116,104,76,111,99,97,108,101,73,100,101,110,116,105,102,105,101,114,0,4,12,0,0,0,0,0,0,0,101,110,95,85,83,95,80,79,83,73,88,0,4,10,0,0,0,0,0,0,0,115,101,116,76,111,99,97,108,101,0,4,14,0,0,0,0,0,0,0,115,101,116,68,97,116,101,70,111,114,109,97,116,0,4,26,0,0,0,0,0,0,0,121,121,121,121,45,77,77,45,100,100,39,84,39,72,72,58,109,109,58,115,115,32,90,90,90,0,4,15,0,0,0,0,0,0,0,100,97,116,101,70,114,111,109,83,116,114,105,110,103,0,0,0,0,0,43,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,41,0,0,0,2,0,0,0,11,0,0,0,0,0,0,0,100,97,116,101,83,116,114,105,110,103,0,0,0,0,0,42,0,0,0,8,0,0,0,0,0,0,0,112,97,116,116,101,114,110,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,52,0,0,0,0,1,0,8,31,0,0,0,69,0,0,0,75,64,-64,0,92,-128,0,1,-117,-128,-64,0,1,-63,0,0,91,65,0,0,22,-128,0,-128,69,1,1,0,75,65,-63,2,92,-127,0,1,-100,-128,0,2,-59,-128,1,0,-53,-64,-63,1,-36,-128,0,1,11,1,-62,1,-117,65,66,1,-100,1,0,1,28,65,0,0,11,-127,-62,1,-117,-63,66,1,-100,1,0,1,28,65,0,0,11,1,-61,1,-117,65,67,1,-100,1,0,1,28,65,0,0,11,-127,-61,0,-128,1,-128,1,29,1,-128,1,30,1,0,0,30,0,-128,0,15,0,0,0,4,11,0,0,0,0,0,0,0,78,83,67,97,108,101,110,100,97,114,0,4,16,0,0,0,0,0,0,0,99,117,114,114,101,110,116,67,97,108,101,110,100,97,114,0,4,20,0,0,0,0,0,0,0,99,111,109,112,111,110,101,110,116,115,95,102,114,111,109,68,97,116,101,0,3,0,0,0,0,0,0,-16,-65,4,7,0,0,0,0,0,0,0,78,83,68,97,116,101,0,4,5,0,0,0,0,0,0,0,100,97,116,101,0,4,17,0,0,0,0,0,0,0,78,83,68,97,116,101,67,111,109,112,111,110,101,110,116,115,0,4,5,0,0,0,0,0,0,0,105,110,105,116,0,4,8,0,0,0,0,0,0,0,115,101,116,89,101,97,114,0,4,5,0,0,0,0,0,0,0,121,101,97,114,0,4,9,0,0,0,0,0,0,0,115,101,116,77,111,110,116,104,0,4,6,0,0,0,0,0,0,0,109,111,110,116,104,0,4,7,0,0,0,0,0,0,0,115,101,116,68,97,121,0,4,4,0,0,0,0,0,0,0,100,97,121,0,4,19,0,0,0,0,0,0,0,100,97,116,101,70,114,111,109,67,111,109,112,111,110,101,110,116,115,0,0,0,0,0,31,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,46,0,0,0,46,0,0,0,46,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,49,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,52,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,0,30,0,0,0,9,0,0,0,0,0,0,0,99,97,108,101,110,100,97,114,0,3,0,0,0,30,0,0,0,15,0,0,0,0,0,0,0,100,97,116,101,67,111,109,112,111,110,101,110,116,115,0,11,0,0,0,30,0,0,0,14,0,0,0,0,0,0,0,110,101,119,67,111,109,112,111,110,101,110,116,115,0,14,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,66,0,0,0,0,1,0,8,36,0,0,0,69,0,0,0,75,64,-64,0,92,-128,0,1,-117,-128,-64,0,1,-63,0,0,64,1,0,0,-100,-128,0,2,-59,0,1,0,-53,64,-63,1,-36,-128,0,1,11,-127,-63,1,-117,-63,65,1,-100,1,0,1,28,65,0,0,11,1,-62,1,-117,65,66,1,-100,1,0,1,28,65,0,0,11,-127,-62,1,-117,-63,66,1,-100,1,0,1,28,65,0,0,11,1,-61,1,-127,65,3,0,28,65,-128,1,11,-127,-61,1,-127,-63,3,0,28,65,-128,1,11,1,-60,1,-127,-63,3,0,28,65,-128,1,11,65,-60,0,-128,1,-128,1,29,1,-128,1,30,1,0,0,30,0,-128,0,18,0,0,0,4,11,0,0,0,0,0,0,0,78,83,67,97,108,101,110,100,97,114,0,4,16,0,0,0,0,0,0,0,99,117,114,114,101,110,116,67,97,108,101,110,100,97,114,0,4,20,0,0,0,0,0,0,0,99,111,109,112,111,110,101,110,116,115,95,102,114,111,109,68,97,116,101,0,3,0,0,0,0,0,0,-16,-65,4,17,0,0,0,0,0,0,0,78,83,68,97,116,101,67,111,109,112,111,110,101,110,116,115,0,4,5,0,0,0,0,0,0,0,105,110,105,116,0,4,8,0,0,0,0,0,0,0,115,101,116,89,101,97,114,0,4,5,0,0,0,0,0,0,0,121,101,97,114,0,4,9,0,0,0,0,0,0,0,115,101,116,77,111,110,116,104,0,4,6,0,0,0,0,0,0,0,109,111,110,116,104,0,4,7,0,0,0,0,0,0,0,115,101,116,68,97,121,0,4,4,0,0,0,0,0,0,0,100,97,121,0,4,8,0,0,0,0,0,0,0,115,101,116,72,111,117,114,0,3,0,0,0,0,0,0,56,64,4,10,0,0,0,0,0,0,0,115,101,116,77,105,110,117,116,101,0,3,0,0,0,0,0,-128,77,64,4,10,0,0,0,0,0,0,0,115,101,116,83,101,99,111,110,100,0,4,19,0,0,0,0,0,0,0,100,97,116,101,70,114,111,109,67,111,109,112,111,110,101,110,116,115,0,0,0,0,0,36,0,0,0,55,0,0,0,55,0,0,0,55,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,57,0,0,0,57,0,0,0,57,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,58,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,59,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,62,0,0,0,62,0,0,0,62,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,66,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,0,35,0,0,0,9,0,0,0,0,0,0,0,99,97,108,101,110,100,97,114,0,3,0,0,0,35,0,0,0,15,0,0,0,0,0,0,0,100,97,116,101,67,111,109,112,111,110,101,110,116,115,0,7,0,0,0,35,0,0,0,14,0,0,0,0,0,0,0,110,101,119,67,111,109,112,111,110,101,110,116,115,0,10,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,89,0,0,0,0,2,0,11,101,0,0,0,-101,64,-128,0,22,-128,0,-128,-123,0,0,0,-117,64,64,1,-100,-128,0,1,-117,-128,64,1,-100,-128,0,1,-53,-128,64,0,-36,-128,0,1,-115,-64,0,1,-59,-64,0,0,-58,0,-63,1,0,1,0,1,-36,-128,0,1,5,-63,0,0,6,65,65,2,79,-127,-63,1,28,-127,0,1,69,-63,0,0,70,65,-63,2,-113,-127,65,2,92,-127,0,1,-123,-63,0,0,-122,65,65,3,-49,-63,-63,2,-100,-127,0,1,-59,-63,0,0,-58,65,-63,3,15,2,66,3,-36,-127,0,1,25,64,66,2,22,-128,0,-128,1,-126,2,0,30,2,0,1,22,0,16,-128,25,-64,66,2,22,64,1,-128,1,2,3,0,11,66,67,4,-128,2,0,2,29,2,-128,1,30,2,0,0,22,0,14,-128,25,-128,67,2,22,-128,0,-128,1,-62,3,0,30,2,0,1,22,-64,12,-128,25,-64,-63,2,22,64,1,-128,1,2,4,0,11,66,67,4,-128,2,-128,2,29,2,-128,1,30,2,0,0,22,-64,10,-128,25,64,-60,2,22,-128,0,-128,1,-126,4,0,30,2,0,1,22,-128,9,-128,25,-64,68,3,22,64,1,-128,1,2,5,0,11,66,67,4,-128,2,0,3,29,2,-128,1,30,2,0,0,22,-128,7,-128,25,64,69,3,22,-128,0,-128,1,-126,5,0,30,2,0,1,22,64,6,-128,25,-64,-59,3,22,-128,0,-128,1,2,6,0,30,2,0,1,22,0,5,-128,25,64,-58,3,22,-128,0,-128,1,-126,6,0,30,2,0,1,22,-64,3,-128,5,-62,6,0,24,0,71,4,22,-128,0,-128,1,66,7,0,30,2,0,1,22,64,2,-128,25,-128,71,2,22,-128,0,-128,1,2,6,0,30,2,0,1,22,0,1,-128,1,-62,7,0,11,66,67,4,-123,-62,6,0,29,2,-128,1,30,2,0,0,30,0,-128,0,32,0,0,0,4,7,0,0,0,0,0,0,0,78,83,68,97,116,101,0,4,5,0,0,0,0,0,0,0,100,97,116,101,0,4,22,0,0,0,0,0,0,0,116,105,109,101,73,110,116,101,114,118,97,108,83,105,110,99,101,49,57,55,48,0,4,5,0,0,0,0,0,0,0,109,97,116,104,0,4,4,0,0,0,0,0,0,0,97,98,115,0,4,6,0,0,0,0,0,0,0,102,108,111,111,114,0,3,0,0,0,0,0,0,78,64,3,0,0,0,0,0,0,56,64,3,0,0,0,0,0,0,62,64,3,0,0,0,0,0,0,-16,63,4,19,0,0,0,0,0,0,0,108,101,115,115,32,116,104,97,110,32,97,32,109,105,110,117,116,101,0,3,0,0,0,0,0,0,70,64,4,11,0,0,0,0,0,0,0,37,100,32,109,105,110,117,116,101,115,0,4,7,0,0,0,0,0,0,0,102,111,114,109,97,116,0,3,0,0,0,0,0,64,86,64,4,13,0,0,0,0,0,0,0,97,98,111,117,116,32,49,32,104,111,117,114,0,4,15,0,0,0,0,0,0,0,97,98,111,117,116,32,37,100,32,104,111,117,114,115,0,3,0,0,0,0,0,-128,71,64,4,6,0,0,0,0,0,0,0,49,32,100,97,121,0,3,0,0,0,0,0,0,61,64,4,8,0,0,0,0,0,0,0,37,100,32,100,97,121,115,0,3,0,0,0,0,0,-128,77,64,4,14,0,0,0,0,0,0,0,97,98,111,117,116,32,49,32,109,111,110,116,104,0,3,0,0,0,0,0,0,46,64,4,13,0,0,0,0,0,0,0,97,98,111,117,116,32,49,32,121,101,97,114,0,3,0,0,0,0,0,0,54,64,4,12,0,0,0,0,0,0,0,111,118,101,114,32,49,32,121,101,97,114,0,4,6,0,0,0,0,0,0,0,121,101,97,114,115,0,3,0,0,0,0,0,0,0,64,4,15,0,0,0,0,0,0,0,97,108,109,111,115,116,32,50,32,121,101,97,114,115,0,3,0,0,0,0,63,10,48,65,4,14,0,0,0,0,0,0,0,111,118,101,114,32,37,100,32,121,101,97,114,115,0,0,0,0,0,101,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,69,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,71,0,0,0,71,0,0,0,71,0,0,0,71,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,76,0,0,0,76,0,0,0,76,0,0,0,76,0,0,0,76,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,77,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,81,0,0,0,82,0,0,0,82,0,0,0,82,0,0,0,82,0,0,0,82,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,85,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,86,0,0,0,87,0,0,0,87,0,0,0,87,0,0,0,87,0,0,0,87,0,0,0,89,0,0,0,8,0,0,0,10,0,0,0,0,0,0,0,102,105,114,115,116,68,97,116,101,0,0,0,0,0,100,0,0,0,11,0,0,0,0,0,0,0,115,101,99,111,110,100,68,97,116,101,0,0,0,0,0,100,0,0,0,11,0,0,0,0,0,0,0,100,105,102,102,101,114,101,110,99,101,0,10,0,0,0,100,0,0,0,8,0,0,0,0,0,0,0,115,101,99,111,110,100,115,0,14,0,0,0,100,0,0,0,8,0,0,0,0,0,0,0,109,105,110,117,116,101,115,0,18,0,0,0,100,0,0,0,6,0,0,0,0,0,0,0,104,111,117,114,115,0,22,0,0,0,100,0,0,0,5,0,0,0,0,0,0,0,100,97,121,115,0,26,0,0,0,100,0,0,0,7,0,0,0,0,0,0,0,109,111,110,116,104,115,0,30,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,102,0,0,0,0,2,0,7,74,0,0,0,90,64,0,0,22,-64,0,-128,-123,0,0,0,-117,64,64,1,-100,-128,0,1,64,0,0,1,-117,-128,-64,0,-100,-128,0,1,-53,-128,64,0,-36,-128,0,1,-115,-64,0,1,-53,-128,64,0,-36,-128,0,1,5,-63,0,0,6,1,65,2,6,65,65,2,28,-127,-128,0,11,-127,64,2,28,-127,0,1,-51,0,-127,1,5,-63,0,0,6,1,65,2,6,-127,65,2,65,-63,1,0,28,-127,0,1,24,0,1,1,22,-128,2,-128,24,-64,0,-124,22,0,2,-128,5,-63,0,0,6,1,65,2,6,65,66,2,64,1,0,0,-127,-127,2,0,28,-127,-128,1,65,-63,2,0,30,1,-128,1,22,-128,8,-128,5,-63,0,0,6,1,65,2,6,-127,65,2,65,1,3,0,28,-127,0,1,24,0,1,1,22,-64,0,-128,1,65,3,0,65,-127,3,0,30,1,-128,1,22,-64,5,-128,5,-63,0,0,6,1,65,2,6,-127,65,2,65,-63,3,0,28,-127,0,1,24,0,1,1,22,0,2,-128,5,-63,0,0,6,1,65,2,6,65,66,2,64,1,0,0,-127,1,4,0,28,-127,-128,1,65,65,4,0,30,1,-128,1,22,-64,1,-128,5,-63,0,0,6,1,65,2,6,65,66,2,64,1,0,0,-127,-127,4,0,28,-127,-128,1,65,65,4,0,30,1,-128,1,30,0,-128,0,19,0,0,0,4,7,0,0,0,0,0,0,0,78,83,68,97,116,101,0,4,5,0,0,0,0,0,0,0,100,97,116,101,0,4,22,0,0,0,0,0,0,0,116,105,109,101,73,110,116,101,114,118,97,108,83,105,110,99,101,49,57,55,48,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,116,105,109,101,0,4,14,0,0,0,0,0,0,0,98,101,103,105,110,105,110,103,79,102,68,97,121,0,4,5,0,0,0,0,0,0,0,100,97,121,115,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,0,4,11,0,0,0,0,0,0,0,102,111,114,109,97,116,68,97,116,101,0,4,7,0,0,0,0,0,0,0,104,58,109,109,32,97,0,4,3,0,0,0,0,0,0,0,97,116,0,3,0,0,0,0,0,0,0,64,4,10,0,0,0,0,0,0,0,89,101,115,116,101,114,100,97,121,0,4,1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,28,64,4,5,0,0,0,0,0,0,0,69,69,69,69,0,4,3,0,0,0,0,0,0,0,111,110,0,4,9,0,0,0,0,0,0,0,77,77,47,100,100,47,121,121,0,0,0,0,0,74,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,92,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,93,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,97,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,102,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,0,73,0,0,0,14,0,0,0,0,0,0,0,114,101,102,101,114,101,110,99,101,68,97,116,101,0,0,0,0,0,73,0,0,0,11,0,0,0,0,0,0,0,100,105,102,102,101,114,101,110,99,101,0,11,0,0,0,73,0,0,0,18,0,0,0,0,0,0,0,116,105,109,101,83,105,110,99,101,77,105,100,110,105,103,104,116,0,20,0,0,0,73,0,0,0,0,0,0,0,40,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,7,0,0,0,9,0,0,0,7,0,0,0,11,0,0,0,11,0,0,0,13,0,0,0,11,0,0,0,16,0,0,0,16,0,0,0,25,0,0,0,16,0,0,0,28,0,0,0,28,0,0,0,41,0,0,0,28,0,0,0,43,0,0,0,43,0,0,0,52,0,0,0,43,0,0,0,54,0,0,0,54,0,0,0,66,0,0,0,54,0,0,0,68,0,0,0,68,0,0,0,89,0,0,0,68,0,0,0,91,0,0,0,91,0,0,0,102,0,0,0,91,0,0,0,102,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,4,22,0,0,0,5,0,0,0,69,64,0,0,-118,64,0,0,-28,0,0,0,-119,-64,0,-127,28,64,-128,1,5,-64,0,0,65,0,1,0,28,64,0,1,5,-64,0,0,65,64,1,0,28,64,0,1,5,-64,0,0,65,-128,1,0,28,64,0,1,5,-64,0,0,65,-64,1,0,28,64,0,1,5,-64,0,0,65,0,2,0,28,64,0,1,30,0,-128,0,9,0,0,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,3,0,0,0,0,0,0,0,95,71,0,4,8,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,4,8,0,0,0,0,0,0,0,114,101,113,117,105,114,101,0,4,8,0,0,0,0,0,0,0,119,97,120,46,101,120,116,0,4,10,0,0,0,0,0,0,0,119,97,120,46,101,110,117,109,115,0,4,12,0,0,0,0,0,0,0,119,97,120,46,115,116,114,117,99,116,115,0,4,13,0,0,0,0,0,0,0,119,97,120,46,119,97,120,67,108,97,115,115,0,4,12,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,0,2,0,7,21,0,0,0,-123,0,0,0,-122,64,64,1,-122,64,0,1,-102,0,0,0,22,0,0,-128,9,-128,-128,0,-102,64,0,0,22,-128,2,-128,-53,-128,-64,0,65,-63,0,0,-36,-128,-128,1,-38,0,0,0,22,64,1,-128,-59,0,1,0,1,65,1,0,64,1,-128,0,-127,-127,1,0,21,-127,1,2,-36,64,0,1,-98,0,0,1,30,0,-128,0,7,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,99,108,97,115,115,0,4,6,0,0,0,0,0,0,0,109,97,116,99,104,0,4,23,0,0,0,0,0,0,0,94,91,65,45,90,93,91,65,45,90,93,91,65,45,90,93,91,94,65,45,90,93,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,27,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,78,111,32,111,98,106,101,99,116,32,110,97,109,101,100,32,39,0,4,9,0,0,0,0,0,0,0,39,32,102,111,117,110,100,46,0,0,0,0,0,21,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,10,0,0,0,11,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,20,0,0,0,6,0,0,0,0,0,0,0,99,108,97,115,115,0,3,0,0,0,20,0,0,0,0,0,0,0,22,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,11,0,0,0,11,0,0,0,1,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,108,117,97,115,112,101,99,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,7,0,0,0,5,0,0,0,65,64,0,0,28,64,0,1,5,0,0,0,65,-128,0,0,28,64,0,1,30,0,-128,0,3,0,0,0,4,8,0,0,0,0,0,0,0,114,101,113,117,105,114,101,0,4,20,0,0,0,0,0,0,0,119,97,120,46,108,117,97,115,112,101,99,46,108,117,97,115,112,101,99,0,4,20,0,0,0,0,0,0,0,119,97,120,46,108,117,97,115,112,101,99,46,108,117,97,109,111,99,107,0,0,0,0,0,7,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,108,117,97,115,112,101,99,47,108,117,97,109,111,99,107,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,3,42,0,0,0,10,-128,0,0,74,0,0,0,9,64,-128,-128,74,0,0,0,9,64,0,-127,7,0,0,0,5,-64,0,0,69,0,0,0,70,64,-64,0,-118,64,0,0,-119,64,65,-126,28,64,-128,1,5,-64,0,0,69,0,0,0,70,-128,-64,0,-118,64,0,0,-119,64,65,-126,28,64,-128,1,5,0,0,0,100,0,0,0,9,64,0,-125,5,0,0,0,100,64,0,0,9,64,-128,-125,5,0,0,0,100,-128,0,0,9,64,0,-124,5,0,0,0,100,-64,0,0,9,64,-128,-124,5,-128,2,0,26,64,0,0,22,0,0,-128,10,0,0,0,7,-128,2,0,5,-128,2,0,100,0,1,0,9,64,-128,-123,5,-128,2,0,100,64,1,0,9,64,0,-122,30,0,-128,0,13,0,0,0,4,5,0,0,0,0,0,0,0,77,111,99,107,0,4,6,0,0,0,0,0,0,0,99,97,108,108,115,0,4,14,0,0,0,0,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,95,95,109,111,100,101,0,4,2,0,0,0,0,0,0,0,107,0,4,7,0,0,0,0,0,0,0,95,95,99,97,108,108,0,4,8,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,4,4,0,0,0,0,0,0,0,110,101,119,0,4,8,0,0,0,0,0,0,0,114,101,116,117,114,110,115,0,4,9,0,0,0,0,0,0,0,109,97,116,99,104,101,114,115,0,4,11,0,0,0,0,0,0,0,119,97,115,95,99,97,108,108,101,100,0,4,16,0,0,0,0,0,0,0,119,97,115,95,99,97,108,108,101,100,95,119,105,116,104,0,6,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,20,0,0,0,0,1,3,6,33,0,0,0,-123,0,0,0,-122,64,64,1,-59,0,0,0,-58,64,-64,1,-58,0,-128,1,-38,64,0,0,22,0,0,-128,-54,0,0,0,-119,-64,0,0,-123,0,0,0,-122,64,64,1,-122,0,0,1,-44,0,0,1,-52,-128,-64,1,10,1,0,0,101,1,0,0,34,65,0,0,-119,0,-127,1,-59,0,0,0,-58,-64,-64,1,-58,0,-128,1,-38,0,0,0,22,0,2,-128,20,1,0,1,6,1,-127,1,26,1,0,0,22,0,1,-128,5,1,1,0,84,1,0,1,70,65,-127,1,29,1,0,1,30,1,0,0,30,0,-128,0,5,0,0,0,4,5,0,0,0,0,0,0,0,77,111,99,107,0,4,6,0,0,0,0,0,0,0,99,97,108,108,115,0,3,0,0,0,0,0,0,-16,63,4,14,0,0,0,0,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,4,7,0,0,0,0,0,0,0,117,110,112,97,99,107,0,0,0,0,0,33,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,20,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,109,111,99,107,0,0,0,0,0,32,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,32,0,0,0,6,0,0,0,0,0,0,0,99,97,108,108,115,0,12,0,0,0,32,0,0,0,14,0,0,0,0,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,21,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,26,0,0,0,0,2,0,7,10,0,0,0,-123,0,0,0,-117,64,64,1,-100,-128,0,1,-59,-128,0,0,0,1,0,0,64,1,-128,0,-128,1,0,1,-36,64,0,2,-98,0,0,1,30,0,-128,0,3,0,0,0,4,5,0,0,0,0,0,0,0,77,111,99,107,0,4,4,0,0,0,0,0,0,0,110,101,119,0,4,7,0,0,0,0,0,0,0,114,97,119,115,101,116,0,0,0,0,0,10,0,0,0,23,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,109,111,99,107,0,0,0,0,0,9,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,9,0,0,0,9,0,0,0,0,0,0,0,110,101,119,95,109,111,99,107,0,3,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,32,0,0,0,0,1,0,5,11,0,0,0,74,-128,0,0,-122,0,64,0,73,-128,0,-128,-122,0,64,0,73,-128,-128,-128,-123,-128,0,0,-64,0,-128,0,0,1,0,0,-100,64,-128,1,94,0,0,1,30,0,-128,0,3,0,0,0,4,8,0,0,0,0,0,0,0,114,101,116,117,114,110,115,0,4,13,0,0,0,0,0,0,0,116,104,101,110,95,114,101,116,117,114,110,115,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,0,11,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,10,0,0,0,5,0,0,0,0,0,0,0,109,111,99,107,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,42,0,0,0,0,1,3,6,27,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,-59,64,0,0,87,-64,0,1,22,-64,0,-128,-123,-128,0,0,-63,-64,0,0,1,1,1,0,-100,64,-128,1,-123,64,0,0,-122,64,65,1,-122,0,0,1,-102,64,0,0,22,0,0,-128,-118,0,0,0,-44,0,0,1,-52,-128,-63,1,10,1,0,0,101,1,0,0,34,65,0,0,-119,0,-127,1,-59,64,0,0,-58,64,-63,1,-55,-128,0,0,30,0,0,1,30,0,-128,0,7,0,0,0,4,13,0,0,0,0,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,77,111,99,107,0,4,6,0,0,0,0,0,0,0,101,114,114,111,114,0,4,39,0,0,0,0,0,0,0,114,101,116,117,114,110,115,32,109,117,115,116,32,98,101,32,99,97,108,108,101,100,32,119,105,116,104,32,58,32,111,112,101,114,97,116,111,114,0,3,0,0,0,0,0,0,0,64,4,14,0,0,0,0,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,3,0,0,0,0,0,0,-16,63,0,0,0,0,27,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,40,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,26,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,26,0,0,0,14,0,0,0,0,0,0,0,114,101,116,117,114,110,95,118,97,108,117,101,115,0,16,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,57,0,0,0,0,2,0,8,30,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,-59,64,0,0,87,-64,0,1,22,-128,0,-128,-126,0,0,0,-63,-128,0,0,-98,0,-128,1,-123,64,0,0,-122,-64,64,1,-122,0,0,1,-102,64,0,0,22,0,0,-128,-118,0,0,0,-44,0,0,1,87,64,-128,1,22,0,2,-128,-62,0,0,0,1,1,1,0,69,65,1,0,-128,1,-128,0,92,-127,0,1,-127,-127,1,0,-44,1,0,1,21,-63,1,2,-34,0,-128,1,-62,0,-128,0,-34,0,0,1,30,0,-128,0,7,0,0,0,4,13,0,0,0,0,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,77,111,99,107,0,4,22,0,0,0,0,0,0,0,116,97,114,103,101,116,32,109,117,115,116,32,98,101,32,97,32,77,111,99,107,0,4,6,0,0,0,0,0,0,0,99,97,108,108,115,0,4,11,0,0,0,0,0,0,0,101,120,112,101,99,116,105,110,103,32,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,18,0,0,0,0,0,0,0,32,99,97,108,108,115,44,32,97,99,116,117,97,108,108,121,32,0,0,0,0,0,30,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,51,0,0,0,53,0,0,0,53,0,0,0,53,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,54,0,0,0,56,0,0,0,56,0,0,0,57,0,0,0,3,0,0,0,7,0,0,0,0,0,0,0,116,97,114,103,101,116,0,0,0,0,0,29,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,29,0,0,0,6,0,0,0,0,0,0,0,99,97,108,108,115,0,15,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,0,0,0,84,0,0,0,0,1,3,17,72,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,-59,64,0,0,87,-64,0,1,22,-128,0,-128,-126,0,0,0,-63,-128,0,0,-98,0,-128,1,-123,64,0,0,-122,-64,64,1,-122,0,0,1,-102,64,0,0,22,0,0,-128,-118,0,0,0,-44,0,0,1,87,0,-63,1,22,0,2,-128,-62,0,0,0,1,65,1,0,69,-127,1,0,-127,1,1,0,92,-127,0,1,-127,-63,1,0,-44,1,0,1,21,-63,1,2,-34,0,-128,1,-58,0,65,1,-38,64,0,0,22,0,0,-128,-54,0,0,0,10,1,0,0,101,1,0,0,34,65,0,0,84,1,0,2,-108,1,-128,1,87,-128,-127,2,22,-128,1,-128,66,1,0,0,-127,65,1,0,-44,1,0,2,1,2,2,0,84,2,-128,1,-107,65,2,3,94,1,-128,1,65,1,1,0,-108,1,0,2,-63,1,1,0,96,-127,4,-128,70,2,2,2,-122,2,-126,1,87,-128,-126,4,22,-128,3,-128,66,2,0,0,-127,66,2,0,-59,-126,1,0,0,3,0,4,-36,-126,0,1,1,-125,2,0,69,-125,1,0,-122,3,2,2,92,-125,0,1,-127,-61,2,0,-59,-125,1,0,6,4,-126,1,-36,-125,0,1,-107,-62,3,5,94,2,-128,1,95,-63,-6,127,66,1,-128,0,94,1,0,1,30,0,-128,0,12,0,0,0,4,13,0,0,0,0,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,77,111,99,107,0,4,22,0,0,0,0,0,0,0,116,97,114,103,101,116,32,109,117,115,116,32,98,101,32,97,32,77,111,99,107,0,4,6,0,0,0,0,0,0,0,99,97,108,108,115,0,3,0,0,0,0,0,0,-16,63,4,11,0,0,0,0,0,0,0,101,120,112,101,99,116,105,110,103,32,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,17,0,0,0,0,0,0,0,32,99,97,108,108,44,32,97,99,116,117,97,108,108,121,32,0,4,23,0,0,0,0,0,0,0,32,112,97,114,97,109,101,116,101,114,115,44,32,97,99,116,117,97,108,108,121,32,0,4,22,0,0,0,0,0,0,0,101,120,112,101,99,116,105,110,103,32,112,97,114,97,109,101,116,101,114,32,35,0,4,8,0,0,0,0,0,0,0,32,116,111,32,98,101,32,0,4,11,0,0,0,0,0,0,0,32,97,99,116,117,97,108,108,121,32,0,0,0,0,0,72,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,66,0,0,0,66,0,0,0,66,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,67,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,74,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,75,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,80,0,0,0,78,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,9,0,0,0,7,0,0,0,0,0,0,0,116,97,114,103,101,116,0,0,0,0,0,71,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,71,0,0,0,6,0,0,0,0,0,0,0,99,97,108,108,115,0,15,0,0,0,71,0,0,0,7,0,0,0,0,0,0,0,112,97,114,97,109,115,0,31,0,0,0,71,0,0,0,5,0,0,0,0,0,0,0,97,114,103,115,0,34,0,0,0,71,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,48,0,0,0,69,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,48,0,0,0,69,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,48,0,0,0,69,0,0,0,2,0,0,0,0,0,0,0,105,0,49,0,0,0,68,0,0,0,0,0,0,0,42,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,20,0,0,0,10,0,0,0,22,0,0,0,26,0,0,0,22,0,0,0,28,0,0,0,32,0,0,0,28,0,0,0,34,0,0,0,42,0,0,0,34,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,46,0,0,0,57,0,0,0,46,0,0,0,59,0,0,0,84,0,0,0,59,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,53,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,108,117,97,115,112,101,99,47,108,117,97,115,112,101,99,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,7,100,0,0,0,10,64,1,0,74,0,0,0,9,64,-128,-128,9,-64,64,-127,9,-64,64,-126,9,-64,-64,-126,9,-64,65,-125,7,0,0,0,10,0,0,0,7,0,2,0,5,0,2,0,69,0,2,0,9,64,-128,-124,5,0,2,0,100,0,0,0,9,64,0,-123,5,0,0,0,100,64,0,0,9,64,-128,-123,5,0,0,0,100,-128,0,0,9,64,0,-122,5,0,0,0,100,-64,0,0,9,64,-128,-122,5,0,0,0,100,0,1,0,9,64,0,-121,5,0,0,0,100,64,1,0,9,64,-128,-121,10,0,0,0,100,-128,1,0,9,64,0,-120,100,-64,1,0,9,64,-128,-124,100,0,2,0,0,0,0,0,9,64,-128,-120,69,-128,4,0,-128,0,0,0,-64,0,0,0,92,64,-128,1,74,64,2,0,-92,64,2,0,73,-128,0,-118,-92,-128,2,0,73,-128,-128,-118,-92,-64,2,0,73,-128,0,-117,-92,0,3,0,73,-128,-128,-117,-92,64,3,0,73,-128,0,-116,-92,-128,3,0,73,-128,-128,-116,-92,-64,3,0,73,-128,0,-115,-92,0,4,0,73,-128,-128,-115,-92,64,4,0,73,-128,0,-114,71,-64,4,0,69,-64,4,0,-123,-64,4,0,-122,0,69,1,73,-128,-128,-114,100,-128,4,0,-118,0,0,0,-121,-128,7,0,-123,-128,7,0,-59,-128,7,0,-119,-64,-128,-124,-123,-128,7,0,-28,-64,4,0,-119,-64,0,-123,-123,-128,7,0,-28,0,5,0,-119,-64,-128,-113,-123,-128,7,0,-28,64,5,0,-119,-64,0,-112,-123,-128,7,0,-28,-128,5,0,0,0,0,0,0,0,-128,0,-119,-64,-128,-112,-92,-64,5,0,-61,0,-128,1,36,1,6,0,0,0,0,1,0,0,-128,1,0,0,0,0,-28,64,6,0,0,0,0,2,64,1,-128,1,-126,1,-128,0,92,-127,0,1,71,-127,8,0,30,0,-128,0,35,0,0,0,4,5,0,0,0,0,0,0,0,115,112,101,99,0,4,9,0,0,0,0,0,0,0,99,111,110,116,101,120,116,115,0,4,7,0,0,0,0,0,0,0,112,97,115,115,101,100,0,3,0,0,0,0,0,0,0,0,4,7,0,0,0,0,0,0,0,102,97,105,108,101,100,0,4,8,0,0,0,0,0,0,0,112,101,110,100,105,110,103,0,4,8,0,0,0,0,0,0,0,99,117,114,114,101,110,116,0,0,4,7,0,0,0,0,0,0,0,82,101,112,111,114,116,0,4,8,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,4,4,0,0,0,0,0,0,0,110,101,119,0,4,7,0,0,0,0,0,0,0,114,101,112,111,114,116,0,4,12,0,0,0,0,0,0,0,97,100,100,95,114,101,115,117,108,116,115,0,4,12,0,0,0,0,0,0,0,97,100,100,95,99,111,110,116,101,120,116,0,4,9,0,0,0,0,0,0,0,97,100,100,95,115,112,101,99,0,4,17,0,0,0,0,0,0,0,97,100,100,95,112,101,110,100,105,110,103,95,115,112,101,99,0,4,11,0,0,0,0,0,0,0,95,95,110,101,119,105,110,100,101,120,0,4,7,0,0,0,0,0,0,0,95,95,99,97,108,108,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,9,0,0,0,0,0,0,0,109,97,116,99,104,101,114,115,0,4,10,0,0,0,0,0,0,0,115,104,111,117,108,100,95,98,101,0,4,14,0,0,0,0,0,0,0,115,104,111,117,108,100,95,110,111,116,95,98,101,0,4,23,0,0,0,0,0,0,0,115,104,111,117,108,100,95,98,101,95,103,114,101,97,116,101,114,95,116,104,97,110,0,4,20,0,0,0,0,0,0,0,115,104,111,117,108,100,95,98,101,95,108,101,115,115,95,116,104,97,110,0,4,13,0,0,0,0,0,0,0,115,104,111,117,108,100,95,101,114,114,111,114,0,4,13,0,0,0,0,0,0,0,115,104,111,117,108,100,95,109,97,116,99,104,0,4,18,0,0,0,0,0,0,0,115,104,111,117,108,100,95,98,101,95,107,105,110,100,95,111,102,0,4,13,0,0,0,0,0,0,0,115,104,111,117,108,100,95,101,120,105,115,116,0,4,17,0,0,0,0,0,0,0,115,104,111,117,108,100,95,110,111,116,95,101,120,105,115,116,0,4,13,0,0,0,0,0,0,0,115,104,111,117,108,100,95,101,113,117,97,108,0,4,8,0,0,0,0,0,0,0,67,111,110,116,101,120,116,0,4,12,0,0,0,0,0,0,0,114,117,110,95,98,101,102,111,114,101,115,0,4,11,0,0,0,0,0,0,0,114,117,110,95,97,102,116,101,114,115,0,4,4,0,0,0,0,0,0,0,114,117,110,0,4,9,0,0,0,0,0,0,0,100,101,115,99,114,105,98,101,0,26,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,29,0,0,0,0,2,0,11,36,0,0,0,-118,64,1,0,-58,64,-64,0,-119,-64,0,-128,-58,-64,-64,0,-119,-64,0,-127,-58,64,-63,0,-119,-64,0,-126,-58,64,-64,0,6,-63,-64,0,-52,0,-127,1,6,65,-63,0,-52,0,-127,1,-119,-64,0,-125,-54,0,0,0,-119,-64,-128,-125,-58,0,64,1,6,-127,65,1,-49,0,-127,1,-50,64,-62,1,-119,-64,0,-124,-58,-128,-62,0,1,-63,2,0,84,1,-128,1,-127,-63,2,0,32,-63,1,-128,6,-62,65,1,74,-126,0,0,-122,-62,-127,1,73,-126,2,-122,-122,-62,-127,1,-122,-126,-126,1,73,-126,-126,-122,9,66,-126,3,31,-127,-3,127,-98,0,0,1,30,0,-128,0,14,0,0,0,4,11,0,0,0,0,0,0,0,110,117,109,95,112,97,115,115,101,100,0,4,7,0,0,0,0,0,0,0,112,97,115,115,101,100,0,4,11,0,0,0,0,0,0,0,110,117,109,95,102,97,105,108,101,100,0,4,7,0,0,0,0,0,0,0,102,97,105,108,101,100,0,4,12,0,0,0,0,0,0,0,110,117,109,95,112,101,110,100,105,110,103,0,4,8,0,0,0,0,0,0,0,112,101,110,100,105,110,103,0,4,6,0,0,0,0,0,0,0,116,111,116,97,108,0,4,8,0,0,0,0,0,0,0,114,101,115,117,108,116,115,0,4,8,0,0,0,0,0,0,0,112,101,114,99,101,110,116,0,3,0,0,0,0,0,0,89,64,4,9,0,0,0,0,0,0,0,99,111,110,116,101,120,116,115,0,3,0,0,0,0,0,0,-16,63,4,5,0,0,0,0,0,0,0,110,97,109,101,0,4,13,0,0,0,0,0,0,0,115,112,101,99,95,114,101,115,117,108,116,115,0,0,0,0,0,36,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,14,0,0,0,14,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,19,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,21,0,0,0,22,0,0,0,22,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,24,0,0,0,24,0,0,0,25,0,0,0,21,0,0,0,28,0,0,0,29,0,0,0,8,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,35,0,0,0,5,0,0,0,0,0,0,0,115,112,101,99,0,0,0,0,0,35,0,0,0,7,0,0,0,0,0,0,0,114,101,112,111,114,116,0,15,0,0,0,35,0,0,0,9,0,0,0,0,0,0,0,99,111,110,116,101,120,116,115,0,21,0,0,0,35,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,24,0,0,0,34,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,24,0,0,0,34,0,0,0,11,0,0,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,24,0,0,0,34,0,0,0,6,0,0,0,0,0,0,0,105,110,100,101,120,0,25,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,62,0,0,0,0,2,0,19,72,0,0,0,-123,0,0,0,-117,64,64,1,0,1,0,0,-100,-128,-128,1,-58,-128,64,1,23,-64,-64,1,22,64,0,-128,90,0,0,0,22,64,11,-128,-59,0,1,0,6,65,65,1,-36,0,1,1,22,-64,9,-128,5,-126,1,0,65,-62,1,0,75,2,-62,4,-58,66,-62,3,92,2,-128,1,28,66,0,0,5,2,1,0,70,-126,-62,3,28,2,1,1,22,-64,6,-128,70,-61,66,6,90,3,0,0,22,-128,0,-128,65,3,3,0,90,67,0,0,22,0,0,-128,65,67,3,0,90,64,0,0,22,0,1,-128,90,0,0,0,22,-128,0,-128,-122,-61,66,6,-102,67,0,0,22,64,3,-128,-123,-125,1,0,-63,-125,3,0,-53,3,-62,7,65,-60,3,0,-128,4,-128,5,85,-124,-124,8,-128,4,-128,6,-36,3,0,2,-100,67,0,0,-123,3,4,0,-122,67,68,7,-58,-125,68,6,36,4,0,0,-100,67,-128,1,33,-126,0,0,22,64,-8,127,-31,-128,0,0,22,64,-11,127,-63,-64,4,0,5,-127,1,0,75,1,-62,1,-58,-127,64,1,23,-64,-64,3,22,-128,0,-128,-63,1,5,0,-38,65,0,0,22,0,0,-128,-63,65,5,0,6,-126,64,1,70,-126,69,1,-122,-62,69,1,-58,2,70,1,92,1,-128,3,28,65,0,0,30,0,-128,0,25,0,0,0,4,7,0,0,0,0,0,0,0,82,101,112,111,114,116,0,4,4,0,0,0,0,0,0,0,110,101,119,0,4,11,0,0,0,0,0,0,0,110,117,109,95,102,97,105,108,101,100,0,3,0,0,0,0,0,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,8,0,0,0,0,0,0,0,114,101,115,117,108,116,115,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,37,0,0,0,0,0,0,0,10,37,115,10,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,0,4,7,0,0,0,0,0,0,0,102,111,114,109,97,116,0,4,5,0,0,0,0,0,0,0,110,97,109,101,0,4,13,0,0,0,0,0,0,0,115,112,101,99,95,114,101,115,117,108,116,115,0,4,7,0,0,0,0,0,0,0,112,97,115,115,101,100,0,4,5,0,0,0,0,0,0,0,112,97,115,115,0,4,7,0,0,0,0,0,0,0,70,65,73,76,69,68,0,4,13,0,0,0,0,0,0,0,37,45,55,48,115,32,91,32,37,115,32,93,0,4,4,0,0,0,0,0,0,0,32,45,32,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,8,0,0,0,0,0,0,0,102,111,114,101,97,99,104,0,4,7,0,0,0,0,0,0,0,101,114,114,111,114,115,0,4,111,0,0,0,0,0,0,0,10,61,61,61,61,61,61,61,61,61,61,32,37,115,32,61,61,61,61,61,61,61,61,61,61,61,61,61,10,37,115,32,70,97,105,108,101,100,10,37,115,32,80,97,115,115,101,100,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10,37,115,32,82,117,110,44,32,37,46,50,102,37,37,32,83,117,99,99,101,115,115,32,114,97,116,101,10,0,4,8,0,0,0,0,0,0,0,83,117,99,99,101,115,115,0,4,8,0,0,0,0,0,0,0,70,97,105,108,117,114,101,0,4,11,0,0,0,0,0,0,0,110,117,109,95,112,97,115,115,101,100,0,4,6,0,0,0,0,0,0,0,116,111,116,97,108,0,4,8,0,0,0,0,0,0,0,112,101,114,99,101,110,116,0,1,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,46,0,0,0,0,2,0,9,10,0,0,0,-123,0,0,0,-63,64,0,0,0,1,0,0,65,-127,0,0,-122,-63,-64,0,-63,1,1,0,6,66,-63,0,-43,0,-126,1,-100,64,0,1,30,0,-128,0,6,0,0,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,4,0,0,0,0,0,0,0,32,32,32,0,4,24,0,0,0,0,0,0,0,46,32,70,97,105,108,101,100,32,101,120,112,101,99,116,97,116,105,111,110,32,58,32,0,4,8,0,0,0,0,0,0,0,109,101,115,115,97,103,101,0,4,5,0,0,0,0,0,0,0,10,32,32,32,0,4,6,0,0,0,0,0,0,0,116,114,97,99,101,0,0,0,0,0,10,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,45,0,0,0,46,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,105,110,100,101,120,0,0,0,0,0,9,0,0,0,6,0,0,0,0,0,0,0,101,114,114,111,114,0,0,0,0,0,9,0,0,0,0,0,0,0,72,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,34,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,35,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,41,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,44,0,0,0,44,0,0,0,44,0,0,0,46,0,0,0,44,0,0,0,38,0,0,0,47,0,0,0,35,0,0,0,48,0,0,0,59,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,61,0,0,0,62,0,0,0,15,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,71,0,0,0,8,0,0,0,0,0,0,0,118,101,114,98,111,115,101,0,0,0,0,0,71,0,0,0,7,0,0,0,0,0,0,0,114,101,112,111,114,116,0,4,0,0,0,71,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,12,0,0,0,55,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,12,0,0,0,55,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,12,0,0,0,55,0,0,0,2,0,0,0,0,0,0,0,105,0,13,0,0,0,53,0,0,0,7,0,0,0,0,0,0,0,114,101,115,117,108,116,0,13,0,0,0,53,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,22,0,0,0,53,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,22,0,0,0,53,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,22,0,0,0,53,0,0,0,12,0,0,0,0,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,23,0,0,0,51,0,0,0,2,0,0,0,0,0,0,0,114,0,23,0,0,0,51,0,0,0,8,0,0,0,0,0,0,0,111,117,116,99,111,109,101,0,30,0,0,0,51,0,0,0,8,0,0,0,0,0,0,0,115,117,109,109,97,114,121,0,56,0,0,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,75,0,0,0,0,4,0,7,24,0,0,0,6,1,64,0,6,65,64,2,26,1,0,0,22,64,0,-128,6,1,64,0,9,65,-128,-128,90,0,0,0,22,-64,0,-128,6,65,64,0,12,-127,64,2,9,0,-127,-128,22,-128,2,-128,5,-63,0,0,6,1,65,2,70,1,64,0,70,65,-63,2,-118,-127,0,0,-119,-127,0,-125,-119,-63,-128,-125,28,65,-128,1,6,1,66,0,12,-127,64,2,9,0,1,-124,30,0,-128,0,9,0,0,0,4,8,0,0,0,0,0,0,0,99,117,114,114,101,110,116,0,4,7,0,0,0,0,0,0,0,112,97,115,115,101,100,0,3,0,0,0,0,0,0,-16,63,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,7,0,0,0,0,0,0,0,105,110,115,101,114,116,0,4,7,0,0,0,0,0,0,0,101,114,114,111,114,115,0,4,8,0,0,0,0,0,0,0,109,101,115,115,97,103,101,0,4,6,0,0,0,0,0,0,0,116,114,97,99,101,0,4,7,0,0,0,0,0,0,0,102,97,105,108,101,100,0,0,0,0,0,24,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,66,0,0,0,66,0,0,0,69,0,0,0,69,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,72,0,0,0,73,0,0,0,73,0,0,0,73,0,0,0,75,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,23,0,0,0,8,0,0,0,0,0,0,0,115,117,99,99,101,115,115,0,0,0,0,0,23,0,0,0,8,0,0,0,0,0,0,0,109,101,115,115,97,103,101,0,0,0,0,0,23,0,0,0,6,0,0,0,0,0,0,0,116,114,97,99,101,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,80,0,0,0,0,2,0,4,9,0,0,0,-122,0,64,0,-58,0,64,0,-44,0,-128,1,-52,64,-64,1,-119,64,-128,1,-122,0,64,0,-54,0,0,0,-119,-64,-128,0,30,0,-128,0,2,0,0,0,4,9,0,0,0,0,0,0,0,99,111,110,116,101,120,116,115,0,3,0,0,0,0,0,0,-16,63,0,0,0,0,9,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,78,0,0,0,79,0,0,0,79,0,0,0,79,0,0,0,80,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,8,0,0,0,5,0,0,0,0,0,0,0,110,97,109,101,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,86,0,0,0,0,3,0,6,10,0,0,0,-58,0,64,0,-58,64,-128,1,10,-127,0,0,9,-127,-64,-128,74,1,0,0,9,65,-127,-127,-55,0,1,1,6,-127,-128,1,9,0,1,-126,30,0,-128,0,5,0,0,0,4,9,0,0,0,0,0,0,0,99,111,110,116,101,120,116,115,0,4,7,0,0,0,0,0,0,0,112,97,115,115,101,100,0,1,1,4,7,0,0,0,0,0,0,0,101,114,114,111,114,115,0,4,8,0,0,0,0,0,0,0,99,117,114,114,101,110,116,0,0,0,0,0,10,0,0,0,83,0,0,0,83,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,84,0,0,0,85,0,0,0,85,0,0,0,86,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,9,0,0,0,13,0,0,0,0,0,0,0,99,111,110,116,101,120,116,95,110,97,109,101,0,0,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,115,112,101,99,95,110,97,109,101,0,0,0,0,0,9,0,0,0,8,0,0,0,0,0,0,0,99,111,110,116,101,120,116,0,2,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,0,0,0,89,0,0,0,0,4,0,4,1,0,0,0,30,0,-128,0,0,0,0,0,0,0,0,0,1,0,0,0,89,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,99,111,110,116,101,120,116,95,110,97,109,101,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,115,112,101,99,95,110,97,109,101,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,112,101,110,100,105,110,103,95,100,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,0,0,0,94,0,0,0,0,0,0,2,4,0,0,0,5,0,0,0,65,64,0,0,28,64,0,1,30,0,-128,0,2,0,0,0,4,6,0,0,0,0,0,0,0,101,114,114,111,114,0,4,36,0,0,0,0,0,0,0,89,111,117,32,99,97,110,39,116,32,115,101,116,32,112,114,111,112,101,114,116,105,101,115,32,111,110,32,112,101,110,100,105,110,103,0,0,0,0,0,4,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,102,0,0,0,0,2,0,4,9,0,0,0,23,0,-64,0,22,-128,0,-128,-125,0,0,1,-98,0,0,1,22,-128,0,-128,-123,64,0,0,-63,-128,0,0,-100,64,0,1,30,0,-128,0,3,0,0,0,4,12,0,0,0,0,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,4,6,0,0,0,0,0,0,0,101,114,114,111,114,0,4,36,0,0,0,0,0,0,0,89,111,117,32,99,97,110,39,116,32,103,101,116,32,112,114,111,112,101,114,116,105,101,115,32,111,110,32,112,101,110,100,105,110,103,0,0,0,0,0,9,0,0,0,97,0,0,0,97,0,0,0,98,0,0,0,98,0,0,0,98,0,0,0,100,0,0,0,100,0,0,0,100,0,0,0,102,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,95,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,0,0,0,108,0,0,0,1,2,0,6,8,0,0,0,-118,64,0,0,-119,64,0,-128,-59,64,0,0,0,1,0,1,68,1,0,0,-36,64,-128,1,-98,0,0,1,30,0,-128,0,2,0,0,0,4,12,0,0,0,0,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,0,8,0,0,0,105,0,0,0,105,0,0,0,106,0,0,0,106,0,0,0,106,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,95,0,0,0,0,0,7,0,0,0,12,0,0,0,0,0,0,0,100,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,111,0,2,0,0,0,7,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,112,101,110,100,105,110,103,0,0,0,0,0,0,0,0,0,117,0,0,0,122,0,0,0,0,2,0,8,16,0,0,0,87,64,0,0,22,-128,2,-128,-126,0,0,0,-63,0,0,0,5,65,0,0,64,1,-128,0,28,-127,0,1,65,-127,0,0,-123,65,0,0,-64,1,0,0,-100,-127,0,1,-43,-128,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,3,0,0,0,4,11,0,0,0,0,0,0,0,101,120,112,101,99,116,105,110,103,32,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,7,0,0,0,0,0,0,0,44,32,110,111,116,32,0,0,0,0,0,16,0,0,0,118,0,0,0,118,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,119,0,0,0,121,0,0,0,121,0,0,0,122,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,15,0,0,0,9,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,-127,0,0,0,0,2,0,6,12,0,0,0,23,64,0,0,22,-128,1,-128,-126,0,0,0,-63,0,0,0,5,65,0,0,64,1,0,0,28,-127,0,1,-43,0,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,2,0,0,0,4,15,0,0,0,0,0,0,0,115,104,111,117,108,100,32,110,111,116,32,98,101,32,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,12,0,0,0,125,0,0,0,125,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,126,0,0,0,-128,0,0,0,-128,0,0,0,-127,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,11,0,0,0,9,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-125,0,0,0,-120,0,0,0,0,2,0,8,16,0,0,0,25,64,0,0,22,-128,2,-128,-126,0,0,0,-63,0,0,0,5,65,0,0,64,1,0,0,28,-127,0,1,65,-127,0,0,-123,65,0,0,-64,1,-128,0,-100,-127,0,1,-43,-128,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,3,0,0,0,4,5,0,0,0,0,0,0,0,103,111,116,32,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,20,0,0,0,0,0,0,0,32,101,120,112,101,99,116,105,110,103,32,118,97,108,117,101,32,62,32,0,0,0,0,0,16,0,0,0,-124,0,0,0,-124,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-123,0,0,0,-121,0,0,0,-121,0,0,0,-120,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,15,0,0,0,9,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-118,0,0,0,-113,0,0,0,0,2,0,8,16,0,0,0,25,0,-128,0,22,-128,2,-128,-126,0,0,0,-63,0,0,0,5,65,0,0,64,1,0,0,28,-127,0,1,65,-127,0,0,-123,65,0,0,-64,1,-128,0,-100,-127,0,1,-43,-128,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,3,0,0,0,4,5,0,0,0,0,0,0,0,103,111,116,32,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,20,0,0,0,0,0,0,0,32,101,120,112,101,99,116,105,110,103,32,118,97,108,117,101,32,60,32,0,0,0,0,0,16,0,0,0,-117,0,0,0,-117,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-116,0,0,0,-114,0,0,0,-114,0,0,0,-113,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,15,0,0,0,9,0,0,0,0,0,0,0,101,120,112,101,99,116,101,100,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-111,0,0,0,-106,0,0,0,0,1,0,3,11,0,0,0,69,0,0,0,-128,0,0,0,92,-128,0,1,90,0,0,0,22,-128,0,-128,66,0,0,0,-127,64,0,0,94,0,-128,1,66,0,-128,0,94,0,0,1,30,0,-128,0,2,0,0,0,4,6,0,0,0,0,0,0,0,112,99,97,108,108,0,4,37,0,0,0,0,0,0,0,101,120,112,101,99,116,105,110,103,32,97,110,32,101,114,114,111,114,32,98,117,116,32,114,101,99,101,105,118,101,100,32,110,111,110,101,0,0,0,0,0,11,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-110,0,0,0,-109,0,0,0,-109,0,0,0,-109,0,0,0,-107,0,0,0,-107,0,0,0,-106,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,102,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-104,0,0,0,-95,0,0,0,0,2,0,6,24,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,87,64,64,1,22,-128,0,-128,-126,0,0,0,-63,-128,0,0,-98,0,-128,1,-123,64,0,0,-122,-64,64,1,-64,0,0,0,0,1,-128,0,-100,-128,-128,1,-102,64,0,0,22,64,1,-128,-126,0,0,0,-64,0,0,0,1,1,1,0,64,1,-128,0,-43,64,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,5,0,0,0,4,5,0,0,0,0,0,0,0,116,121,112,101,0,4,7,0,0,0,0,0,0,0,115,116,114,105,110,103,0,4,52,0,0,0,0,0,0,0,116,121,112,101,32,101,114,114,111,114,44,32,115,104,111,117,108,100,95,109,97,116,99,104,32,101,120,112,101,99,116,105,110,103,32,116,97,114,103,101,116,32,97,115,32,115,116,114,105,110,103,0,4,6,0,0,0,0,0,0,0,109,97,116,99,104,0,4,23,0,0,0,0,0,0,0,100,111,101,115,110,39,116,32,109,97,116,99,104,32,112,97,116,116,101,114,110,32,0,0,0,0,0,24,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-103,0,0,0,-102,0,0,0,-102,0,0,0,-102,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-99,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-98,0,0,0,-96,0,0,0,-96,0,0,0,-95,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,23,0,0,0,8,0,0,0,0,0,0,0,112,97,116,116,101,114,110,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-93,0,0,0,-82,0,0,0,0,2,0,7,39,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,23,64,64,1,22,-64,3,-128,-117,-128,64,0,0,1,-128,0,-100,-128,-128,1,-102,64,0,0,22,64,6,-128,-126,0,0,0,-59,-64,0,0,0,1,0,0,-36,-128,0,1,1,1,1,0,69,-63,0,0,-128,1,-128,0,92,-127,0,1,-43,64,-127,1,-98,0,-128,1,22,-128,3,-128,-123,0,0,0,-64,0,0,0,-100,-128,0,1,87,64,0,1,22,64,2,-128,-126,0,0,0,-59,0,0,0,0,1,0,0,-36,-128,0,1,1,1,1,0,69,-63,0,0,-128,1,-128,0,92,-127,0,1,-43,64,-127,1,-98,0,-128,1,-126,0,-128,0,-98,0,0,1,30,0,-128,0,5,0,0,0,4,5,0,0,0,0,0,0,0,116,121,112,101,0,4,9,0,0,0,0,0,0,0,117,115,101,114,100,97,116,97,0,4,14,0,0,0,0,0,0,0,105,115,75,105,110,100,79,102,67,108,97,115,115,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,11,0,0,0,0,0,0,0,32,105,115,32,110,111,116,32,97,32,0,0,0,0,0,39,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-92,0,0,0,-90,0,0,0,-90,0,0,0,-90,0,0,0,-90,0,0,0,-90,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-89,0,0,0,-88,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-87,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-86,0,0,0,-83,0,0,0,-83,0,0,0,-82,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,38,0,0,0,6,0,0,0,0,0,0,0,99,108,97,115,115,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-80,0,0,0,-74,0,0,0,0,1,0,4,13,0,0,0,26,64,0,0,22,-64,1,-128,66,0,0,0,-123,0,0,0,-64,0,0,0,-100,-128,0,1,-63,64,0,0,-107,-64,0,1,94,0,-128,1,22,64,0,-128,66,0,-128,0,94,0,0,1,30,0,-128,0,2,0,0,0,4,9,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,4,21,0,0,0,0,0,0,0,32,101,118,97,108,117,97,116,101,115,32,116,111,32,102,97,108,115,101,46,0,0,0,0,0,13,0,0,0,-79,0,0,0,-79,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-78,0,0,0,-76,0,0,0,-76,0,0,0,-74,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-72,0,0,0,-66,0,0,0,0,1,0,4,11,0,0,0,26,0,0,0,22,64,1,-128,66,0,0,0,-128,0,0,0,-63,0,0,0,-107,-64,0,1,94,0,-128,1,22,64,0,-128,66,0,-128,0,94,0,0,1,30,0,-128,0,1,0,0,0,4,20,0,0,0,0,0,0,0,32,101,118,97,108,117,97,116,101,115,32,116,111,32,116,114,117,101,46,0,0,0,0,0,11,0,0,0,-71,0,0,0,-71,0,0,0,-70,0,0,0,-70,0,0,0,-70,0,0,0,-70,0,0,0,-70,0,0,0,-70,0,0,0,-68,0,0,0,-68,0,0,0,-66,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-56,0,0,0,-47,0,0,0,0,1,0,5,9,0,0,0,69,0,0,0,-118,0,0,0,-54,64,0,0,36,1,0,0,0,0,0,0,-55,0,-127,-128,93,0,-128,1,94,0,0,0,30,0,-128,0,2,0,0,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,8,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,1,0,0,0,0,0,0,0,0,0,0,0,-54,0,0,0,-49,0,0,0,1,2,0,3,5,0,0,0,-92,0,0,0,0,0,-128,0,4,0,0,0,-98,0,0,1,30,0,-128,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,-53,0,0,0,-50,0,0,0,2,0,3,8,15,0,0,0,69,0,0,0,-124,0,0,0,70,-128,-128,0,-124,0,-128,0,-27,0,0,0,92,-64,0,0,-59,64,0,0,-53,-128,-64,1,64,1,-128,0,-128,1,0,1,-59,-63,0,0,-58,1,-63,3,-36,1,-128,0,-36,64,0,0,30,0,-128,0,5,0,0,0,4,9,0,0,0,0,0,0,0,109,97,116,99,104,101,114,115,0,4,5,0,0,0,0,0,0,0,115,112,101,99,0,4,12,0,0,0,0,0,0,0,97,100,100,95,114,101,115,117,108,116,115,0,4,6,0,0,0,0,0,0,0,100,101,98,117,103,0,4,10,0,0,0,0,0,0,0,116,114,97,99,101,98,97,99,107,0,0,0,0,0,15,0,0,0,-52,0,0,0,-52,0,0,0,-52,0,0,0,-52,0,0,0,-52,0,0,0,-52,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-51,0,0,0,-50,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,97,114,103,0,0,0,0,0,14,0,0,0,8,0,0,0,0,0,0,0,115,117,99,99,101,115,115,0,6,0,0,0,14,0,0,0,8,0,0,0,0,0,0,0,109,101,115,115,97,103,101,0,6,0,0,0,14,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0,109,97,116,99,104,101,114,0,7,0,0,0,0,0,0,0,116,97,114,103,101,116,0,5,0,0,0,-50,0,0,0,-50,0,0,0,-50,0,0,0,-50,0,0,0,-49,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,95,0,0,0,0,0,4,0,0,0,8,0,0,0,0,0,0,0,109,97,116,99,104,101,114,0,0,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,116,97,114,103,101,116,0,9,0,0,0,-55,0,0,0,-55,0,0,0,-55,0,0,0,-49,0,0,0,-49,0,0,0,-49,0,0,0,-55,0,0,0,-48,0,0,0,-47,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,116,97,114,103,101,116,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-39,0,0,0,-34,0,0,0,0,2,0,8,13,0,0,0,-123,0,0,0,-58,64,-64,0,-100,0,1,1,22,0,0,-128,-119,65,0,-127,-95,-128,0,0,22,0,-1,127,-123,-64,0,0,-64,0,-128,0,0,1,0,0,-99,0,-128,1,-98,0,0,0,30,0,-128,0,4,0,0,0,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,9,0,0,0,0,0,0,0,99,104,105,108,100,114,101,110,0,4,7,0,0,0,0,0,0,0,112,97,114,101,110,116,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,0,13,0,0,0,-38,0,0,0,-38,0,0,0,-38,0,0,0,-38,0,0,0,-37,0,0,0,-38,0,0,0,-37,0,0,0,-35,0,0,0,-35,0,0,0,-35,0,0,0,-35,0,0,0,-35,0,0,0,-34,0,0,0,7,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,12,0,0,0,8,0,0,0,0,0,0,0,99,111,110,116,101,120,116,0,0,0,0,0,12,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,7,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,7,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,105,0,4,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,99,104,105,108,100,0,4,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-32,0,0,0,-24,0,0,0,0,2,0,5,17,0,0,0,-122,0,64,0,-102,0,0,0,22,-64,0,-128,-122,0,64,0,-117,64,64,1,0,1,-128,0,-100,64,-128,1,-122,-128,64,0,-102,0,0,0,22,64,1,-128,-123,-64,0,0,-58,-128,64,0,0,1,-128,0,-100,64,-128,1,-122,-128,64,0,-100,64,-128,0,30,0,-128,0,4,0,0,0,4,7,0,0,0,0,0,0,0,112,97,114,101,110,116,0,4,12,0,0,0,0,0,0,0,114,117,110,95,98,101,102,111,114,101,115,0,4,7,0,0,0,0,0,0,0,98,101,102,111,114,101,0,4,8,0,0,0,0,0,0,0,115,101,116,102,101,110,118,0,0,0,0,0,17,0,0,0,-31,0,0,0,-31,0,0,0,-31,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-30,0,0,0,-28,0,0,0,-28,0,0,0,-28,0,0,0,-27,0,0,0,-27,0,0,0,-27,0,0,0,-27,0,0,0,-26,0,0,0,-26,0,0,0,-24,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,101,110,118,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-22,0,0,0,-14,0,0,0,0,2,0,5,17,0,0,0,-122,0,64,0,-102,0,0,0,22,64,1,-128,-123,64,0,0,-58,0,64,0,0,1,-128,0,-100,64,-128,1,-122,0,64,0,-100,64,-128,0,-122,-128,64,0,-102,0,0,0,22,-64,0,-128,-122,-128,64,0,-117,-64,64,1,0,1,-128,0,-100,64,-128,1,30,0,-128,0,4,0,0,0,4,6,0,0,0,0,0,0,0,97,102,116,101,114,0,4,8,0,0,0,0,0,0,0,115,101,116,102,101,110,118,0,4,7,0,0,0,0,0,0,0,112,97,114,101,110,116,0,4,11,0,0,0,0,0,0,0,114,117,110,95,97,102,116,101,114,115,0,0,0,0,0,17,0,0,0,-21,0,0,0,-21,0,0,0,-21,0,0,0,-20,0,0,0,-20,0,0,0,-20,0,0,0,-20,0,0,0,-19,0,0,0,-19,0,0,0,-17,0,0,0,-17,0,0,0,-17,0,0,0,-16,0,0,0,-16,0,0,0,-16,0,0,0,-16,0,0,0,-14,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,101,110,118,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-12,0,0,0,45,1,0,0,2,1,0,18,89,0,0,0,69,0,0,0,-122,64,64,0,92,0,1,1,22,64,18,-128,-123,-127,0,0,-64,1,-128,2,-100,-127,0,1,-60,1,0,0,23,-64,1,3,22,0,0,-128,22,-128,16,-128,-123,-63,0,0,-117,1,65,3,6,66,65,0,64,2,0,2,-100,65,0,2,-118,1,0,0,-54,-63,0,0,36,2,0,0,-55,1,2,-125,4,2,-128,0,-55,1,-126,-125,36,66,0,0,0,0,0,3,-55,1,2,-124,5,66,2,0,64,2,-128,3,-118,66,0,0,-59,-62,2,0,-119,-62,2,-123,28,66,-128,1,11,2,67,0,-128,2,-128,3,28,66,-128,1,5,66,3,0,64,2,-128,2,-128,2,-128,3,28,66,-128,1,3,2,-128,4,-123,-126,3,0,-64,2,-128,2,36,-125,0,0,0,0,0,4,0,0,-128,4,-100,-126,-128,1,-53,-62,67,0,64,3,-128,3,-36,66,-128,1,-102,66,0,0,22,-128,2,-128,-59,2,4,0,-58,66,-60,5,1,-125,4,0,-36,66,0,1,-59,-62,0,0,-53,-62,-60,5,66,3,0,0,-128,3,0,4,-64,3,-128,4,-36,66,-128,2,22,-64,0,-128,-59,2,4,0,-58,66,-60,5,1,3,5,0,-36,66,0,1,-59,2,4,0,-58,66,-59,5,-36,66,-128,0,-59,2,0,0,0,3,0,3,-36,2,1,1,22,-128,0,-128,6,-124,69,7,70,-60,69,7,9,-60,-125,8,-31,-126,0,0,22,-128,-2,127,-93,1,0,0,97,-128,0,0,22,-64,-20,127,69,0,0,0,-122,0,70,0,92,0,1,1,22,64,0,-128,-117,65,-58,2,-100,65,0,1,97,-128,0,0,22,-64,-2,127,30,0,-128,0,26,0,0,0,4,6,0,0,0,0,0,0,0,112,97,105,114,115,0,4,6,0,0,0,0,0,0,0,115,112,101,99,115,0,4,13,0,0,0,0,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,115,112,101,99,0,4,9,0,0,0,0,0,0,0,97,100,100,95,115,112,101,99,0,4,5,0,0,0,0,0,0,0,110,97,109,101,0,4,12,0,0,0,0,0,0,0,116,114,97,99,107,95,101,114,114,111,114,0,4,7,0,0,0,0,0,0,0,101,120,112,101,99,116,0,4,5,0,0,0,0,0,0,0,109,111,99,107,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,8,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,4,3,0,0,0,0,0,0,0,95,71,0,4,12,0,0,0,0,0,0,0,114,117,110,95,98,101,102,111,114,101,115,0,4,8,0,0,0,0,0,0,0,115,101,116,102,101,110,118,0,4,7,0,0,0,0,0,0,0,120,112,99,97,108,108,0,4,11,0,0,0,0,0,0,0,114,117,110,95,97,102,116,101,114,115,0,4,3,0,0,0,0,0,0,0,105,111,0,4,6,0,0,0,0,0,0,0,119,114,105,116,101,0,4,2,0,0,0,0,0,0,0,120,0,4,12,0,0,0,0,0,0,0,97,100,100,95,114,101,115,117,108,116,115,0,4,2,0,0,0,0,0,0,0,46,0,4,6,0,0,0,0,0,0,0,102,108,117,115,104,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,4,0,0,0,0,0,0,0,107,101,121,0,4,9,0,0,0,0,0,0,0,99,104,105,108,100,114,101,110,0,4,4,0,0,0,0,0,0,0,114,117,110,0,3,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,2,1,0,0,0,1,0,3,5,0,0,0,69,0,0,0,-128,0,0,0,92,-64,0,1,-98,0,0,1,30,0,-128,0,1,0,0,0,4,6,0,0,0,0,0,0,0,112,99,97,108,108,0,0,0,0,0,5,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,0,0,2,1,0,0,3,0,0,0,2,0,0,0,0,0,0,0,102,0,0,0,0,0,4,0,0,0,7,0,0,0,0,0,0,0,115,116,97,116,117,115,0,3,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,101,114,114,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,10,1,0,0,1,3,0,6,15,0,0,0,-60,0,0,0,10,-127,0,0,9,1,0,-128,9,65,-128,-128,70,65,0,0,-55,64,1,2,-37,64,0,1,22,-128,0,-128,-59,-128,0,0,-53,-64,-64,1,-36,-128,0,1,9,-64,-128,0,-58,64,0,0,-34,0,0,1,30,0,-128,0,4,0,0,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,4,4,0,0,0,0,0,0,0,107,101,121,0,4,5,0,0,0,0,0,0,0,77,111,99,107,0,4,4,0,0,0,0,0,0,0,110,101,119,0,0,0,0,0,15,0,0,0,7,1,0,0,7,1,0,0,7,1,0,0,7,1,0,0,7,1,0,0,7,1,0,0,8,1,0,0,8,1,0,0,8,1,0,0,8,1,0,0,8,1,0,0,8,1,0,0,9,1,0,0,9,1,0,0,10,1,0,0,3,0,0,0,6,0,0,0,0,0,0,0,116,97,98,108,101,0,0,0,0,0,14,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,14,0,0,0,11,0,0,0,0,0,0,0,109,111,99,107,95,118,97,108,117,101,0,0,0,0,0,14,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,109,111,99,107,115,0,0,0,0,0,0,0,0,0,20,1,0,0,23,1,0,0,2,1,0,4,8,0,0,0,8,0,0,0,69,0,0,0,70,64,-64,0,-127,-128,0,0,-63,-64,0,0,92,-128,-128,1,72,0,-128,0,30,0,-128,0,4,0,0,0,4,6,0,0,0,0,0,0,0,100,101,98,117,103,0,4,10,0,0,0,0,0,0,0,116,114,97,99,101,98,97,99,107,0,4,1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,64,0,0,0,0,8,0,0,0,21,1,0,0,22,1,0,0,22,1,0,0,22,1,0,0,22,1,0,0,22,1,0,0,22,1,0,0,23,1,0,0,1,0,0,0,4,0,0,0,0,0,0,0,101,114,114,0,0,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0,109,101,115,115,97,103,101,0,10,0,0,0,0,0,0,0,116,114,97,99,101,98,97,99,107,0,89,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-10,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-9,0,0,0,-7,0,0,0,-7,0,0,0,-7,0,0,0,-7,0,0,0,-7,0,0,0,-5,0,0,0,-2,0,0,0,2,1,0,0,2,1,0,0,4,1,0,0,4,1,0,0,10,1,0,0,10,1,0,0,10,1,0,0,12,1,0,0,12,1,0,0,12,1,0,0,12,1,0,0,12,1,0,0,12,1,0,0,15,1,0,0,15,1,0,0,15,1,0,0,17,1,0,0,17,1,0,0,17,1,0,0,17,1,0,0,18,1,0,0,20,1,0,0,20,1,0,0,23,1,0,0,23,1,0,0,23,1,0,0,20,1,0,0,25,1,0,0,25,1,0,0,25,1,0,0,27,1,0,0,27,1,0,0,28,1,0,0,28,1,0,0,28,1,0,0,28,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,29,1,0,0,31,1,0,0,31,1,0,0,31,1,0,0,31,1,0,0,33,1,0,0,33,1,0,0,33,1,0,0,36,1,0,0,36,1,0,0,36,1,0,0,36,1,0,0,37,1,0,0,37,1,0,0,37,1,0,0,36,1,0,0,37,1,0,0,38,1,0,0,-10,0,0,0,39,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,42,1,0,0,43,1,0,0,43,1,0,0,42,1,0,0,43,1,0,0,45,1,0,0,21,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,88,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,3,0,0,0,80,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,3,0,0,0,80,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,3,0,0,0,80,0,0,0,10,0,0,0,0,0,0,0,115,112,101,99,95,110,97,109,101,0,4,0,0,0,78,0,0,0,10,0,0,0,0,0,0,0,115,112,101,99,95,102,117,110,99,0,4,0,0,0,78,0,0,0,6,0,0,0,0,0,0,0,109,111,99,107,115,0,17,0,0,0,77,0,0,0,4,0,0,0,0,0,0,0,101,110,118,0,25,0,0,0,77,0,0,0,8,0,0,0,0,0,0,0,109,101,115,115,97,103,101,0,39,0,0,0,77,0,0,0,10,0,0,0,0,0,0,0,116,114,97,99,101,98,97,99,107,0,39,0,0,0,77,0,0,0,8,0,0,0,0,0,0,0,115,117,99,99,101,115,115,0,45,0,0,0,77,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,71,0,0,0,77,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,71,0,0,0,77,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,71,0,0,0,77,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,72,0,0,0,75,0,0,0,10,0,0,0,0,0,0,0,111,108,100,95,118,97,108,117,101,0,72,0,0,0,75,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,83,0,0,0,88,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,83,0,0,0,88,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,83,0,0,0,88,0,0,0,2,0,0,0,0,0,0,0,105,0,84,0,0,0,86,0,0,0,6,0,0,0,0,0,0,0,99,104,105,108,100,0,84,0,0,0,86,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0,112,101,110,100,105,110,103,0,7,0,0,0,0,0,0,0,101,120,112,101,99,116,0,0,0,0,0,0,0,0,0,49,1,0,0,61,1,0,0,0,0,0,6,13,0,0,0,10,0,0,0,74,0,0,0,-123,0,0,0,-64,0,-128,0,10,65,0,0,100,1,0,0,0,0,0,0,9,65,-127,-128,-100,64,-128,1,-128,0,-128,0,-64,0,0,0,-98,0,-128,1,30,0,-128,0,2,0,0,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,11,0,0,0,0,0,0,0,95,95,110,101,119,105,110,100,101,120,0,1,0,0,0,0,0,0,0,0,0,0,0,55,1,0,0,57,1,0,0,1,3,0,4,3,0,0,0,-60,0,0,0,-55,-128,-128,0,30,0,-128,0,0,0,0,0,0,0,0,0,3,0,0,0,56,1,0,0,56,1,0,0,57,1,0,0,3,0,0,0,2,0,0,0,0,0,0,0,95,0,0,0,0,0,2,0,0,0,10,0,0,0,0,0,0,0,115,112,101,99,95,110,97,109,101,0,0,0,0,0,2,0,0,0,14,0,0,0,0,0,0,0,115,112,101,99,95,102,117,110,99,116,105,111,110,0,0,0,0,0,2,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,115,112,101,99,115,0,13,0,0,0,51,1,0,0,52,1,0,0,53,1,0,0,53,1,0,0,53,1,0,0,57,1,0,0,57,1,0,0,57,1,0,0,53,1,0,0,60,1,0,0,60,1,0,0,60,1,0,0,61,1,0,0,2,0,0,0,6,0,0,0,0,0,0,0,115,112,101,99,115,0,1,0,0,0,12,0,0,0,3,0,0,0,0,0,0,0,105,116,0,2,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,0,0,79,1,0,0,3,0,0,8,14,0,0,0,4,0,0,0,28,-64,-128,0,-124,0,-128,0,-100,-64,-128,0,10,-63,0,0,9,1,0,-128,9,-127,-128,-128,68,1,0,1,9,65,1,-127,64,1,0,2,-128,1,-128,1,-64,1,-128,0,94,1,0,2,30,0,-128,0,3,0,0,0,4,3,0,0,0,0,0,0,0,105,116,0,4,9,0,0,0,0,0,0,0,100,101,115,99,114,105,98,101,0,4,8,0,0,0,0,0,0,0,112,101,110,100,105,110,103,0,0,0,0,0,14,0,0,0,68,1,0,0,68,1,0,0,69,1,0,0,69,1,0,0,72,1,0,0,73,1,0,0,74,1,0,0,75,1,0,0,75,1,0,0,78,1,0,0,78,1,0,0,78,1,0,0,78,1,0,0,79,1,0,0,5,0,0,0,3,0,0,0,0,0,0,0,105,116,0,2,0,0,0,13,0,0,0,6,0,0,0,0,0,0,0,115,112,101,99,115,0,2,0,0,0,13,0,0,0,9,0,0,0,0,0,0,0,100,101,115,99,114,105,98,101,0,4,0,0,0,13,0,0,0,13,0,0,0,0,0,0,0,115,117,98,95,99,111,110,116,101,120,116,115,0,4,0,0,0,13,0,0,0,12,0,0,0,0,0,0,0,99,111,110,116,101,120,116,95,101,110,118,0,9,0,0,0,13,0,0,0,3,0,0,0,14,0,0,0,0,0,0,0,109,97,107,101,95,105,116,95,116,97,98,108,101,0,20,0,0,0,0,0,0,0,109,97,107,101,95,100,101,115,99,114,105,98,101,95,116,97,98,108,101,0,8,0,0,0,0,0,0,0,112,101,110,100,105,110,103,0,0,0,0,0,0,0,0,0,82,1,0,0,119,1,0,0,1,1,0,7,16,0,0,0,74,0,0,0,-118,0,0,0,-54,64,0,0,36,1,0,0,4,0,0,0,0,0,0,1,0,0,0,0,-55,0,1,-128,5,65,0,0,64,1,-128,0,-128,1,-128,1,28,65,-128,1,0,1,-128,0,64,1,0,1,30,1,-128,1,30,0,-128,0,2,0,0,0,4,11,0,0,0,0,0,0,0,95,95,110,101,119,105,110,100,101,120,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,1,0,0,0,0,0,0,0,0,0,0,0,89,1,0,0,113,1,0,0,3,3,0,12,38,0,0,0,-59,0,0,0,-53,64,-64,1,64,1,-128,0,-36,64,-128,1,-60,0,0,0,-36,0,-127,0,-123,-127,0,0,-64,1,0,1,0,2,-128,1,-100,65,-128,1,-128,1,0,1,-100,65,-128,0,-124,1,-128,0,-60,1,-128,0,-44,1,-128,3,-52,-63,-64,3,5,2,1,0,11,66,65,4,-118,66,1,0,-119,66,0,-125,-58,-62,-63,1,-119,-62,-126,-125,-58,2,-62,1,-119,-62,2,-124,-119,66,-127,-124,-119,2,1,-123,28,-126,-128,1,-119,1,-126,3,-124,1,0,1,-102,1,0,0,22,64,1,-128,-124,1,-128,0,-60,1,-128,0,-44,1,-128,3,-122,-63,1,3,-117,-63,66,3,-100,65,0,1,30,0,-128,0,12,0,0,0,4,5,0,0,0,0,0,0,0,115,112,101,99,0,4,12,0,0,0,0,0,0,0,97,100,100,95,99,111,110,116,101,120,116,0,4,8,0,0,0,0,0,0,0,115,101,116,102,101,110,118,0,3,0,0,0,0,0,0,-16,63,4,8,0,0,0,0,0,0,0,67,111,110,116,101,120,116,0,4,4,0,0,0,0,0,0,0,110,101,119,0,4,5,0,0,0,0,0,0,0,110,97,109,101,0,4,7,0,0,0,0,0,0,0,98,101,102,111,114,101,0,4,6,0,0,0,0,0,0,0,97,102,116,101,114,0,4,6,0,0,0,0,0,0,0,115,112,101,99,115,0,4,9,0,0,0,0,0,0,0,99,104,105,108,100,114,101,110,0,4,4,0,0,0,0,0,0,0,114,117,110,0,0,0,0,0,38,0,0,0,91,1,0,0,91,1,0,0,91,1,0,0,91,1,0,0,93,1,0,0,93,1,0,0,96,1,0,0,96,1,0,0,96,1,0,0,96,1,0,0,99,1,0,0,99,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,102,1,0,0,103,1,0,0,104,1,0,0,104,1,0,0,105,1,0,0,105,1,0,0,106,1,0,0,107,1,0,0,102,1,0,0,108,1,0,0,110,1,0,0,110,1,0,0,110,1,0,0,111,1,0,0,111,1,0,0,111,1,0,0,111,1,0,0,111,1,0,0,111,1,0,0,113,1,0,0,6,0,0,0,2,0,0,0,0,0,0,0,95,0,0,0,0,0,37,0,0,0,13,0,0,0,0,0,0,0,99,111,110,116,101,120,116,95,110,97,109,101,0,0,0,0,0,37,0,0,0,17,0,0,0,0,0,0,0,99,111,110,116,101,120,116,95,102,117,110,99,116,105,111,110,0,0,0,0,0,37,0,0,0,12,0,0,0,0,0,0,0,99,111,110,116,101,120,116,95,101,110,118,0,6,0,0,0,37,0,0,0,13,0,0,0,0,0,0,0,115,117,98,95,99,111,110,116,101,120,116,115,0,6,0,0,0,37,0,0,0,6,0,0,0,0,0,0,0,115,112,101,99,115,0,6,0,0,0,37,0,0,0,3,0,0,0,19,0,0,0,0,0,0,0,99,114,101,97,116,101,95,99,111,110,116,101,120,116,95,101,110,118,0,9,0,0,0,0,0,0,0,99,111,110,116,101,120,116,115,0,9,0,0,0,0,0,0,0,97,117,116,111,95,114,117,110,0,16,0,0,0,83,1,0,0,84,1,0,0,85,1,0,0,113,1,0,0,113,1,0,0,113,1,0,0,113,1,0,0,113,1,0,0,116,1,0,0,116,1,0,0,116,1,0,0,116,1,0,0,118,1,0,0,118,1,0,0,118,1,0,0,119,1,0,0,4,0,0,0,9,0,0,0,0,0,0,0,97,117,116,111,95,114,117,110,0,0,0,0,0,15,0,0,0,9,0,0,0,0,0,0,0,100,101,115,99,114,105,98,101,0,1,0,0,0,15,0,0,0,9,0,0,0,0,0,0,0,99,111,110,116,101,120,116,115,0,2,0,0,0,15,0,0,0,12,0,0,0,0,0,0,0,100,101,115,99,114,105,98,101,95,109,116,0,8,0,0,0,15,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,99,114,101,97,116,101,95,99,111,110,116,101,120,116,95,101,110,118,0,100,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,8,0,0,0,29,0,0,0,8,0,0,0,31,0,0,0,62,0,0,0,31,0,0,0,64,0,0,0,75,0,0,0,64,0,0,0,77,0,0,0,80,0,0,0,77,0,0,0,82,0,0,0,86,0,0,0,82,0,0,0,88,0,0,0,89,0,0,0,88,0,0,0,92,0,0,0,94,0,0,0,94,0,0,0,102,0,0,0,96,0,0,0,108,0,0,0,108,0,0,0,104,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,110,0,0,0,116,0,0,0,122,0,0,0,122,0,0,0,-127,0,0,0,-127,0,0,0,-120,0,0,0,-120,0,0,0,-113,0,0,0,-113,0,0,0,-106,0,0,0,-106,0,0,0,-95,0,0,0,-95,0,0,0,-82,0,0,0,-82,0,0,0,-74,0,0,0,-74,0,0,0,-66,0,0,0,-66,0,0,0,-65,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-63,0,0,0,-47,0,0,0,-42,0,0,0,-42,0,0,0,-41,0,0,0,-41,0,0,0,-41,0,0,0,-39,0,0,0,-34,0,0,0,-39,0,0,0,-32,0,0,0,-24,0,0,0,-32,0,0,0,-22,0,0,0,-14,0,0,0,-22,0,0,0,-12,0,0,0,45,1,0,0,45,1,0,0,45,1,0,0,-12,0,0,0,61,1,0,0,63,1,0,0,79,1,0,0,79,1,0,0,79,1,0,0,79,1,0,0,119,1,0,0,82,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,121,1,0,0,5,0,0,0,8,0,0,0,0,0,0,0,112,101,110,100,105,110,103,0,32,0,0,0,99,0,0,0,7,0,0,0,0,0,0,0,101,120,112,101,99,116,0,68,0,0,0,99,0,0,0,14,0,0,0,0,0,0,0,109,97,107,101,95,105,116,95,116,97,98,108,101,0,88,0,0,0,99,0,0,0,20,0,0,0,0,0,0,0,109,97,107,101,95,100,101,115,99,114,105,98,101,95,116,97,98,108,101,0,89,0,0,0,99,0,0,0,19,0,0,0,0,0,0,0,99,114,101,97,116,101,95,99,111,110,116,101,120,116,95,101,110,118,0,93,0,0,0,99,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,114,101,112,108,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,6,22,0,0,0,69,0,0,0,70,64,-64,0,-127,-128,0,0,92,64,0,1,69,0,0,0,70,-64,-64,0,92,-128,-128,0,0,0,-128,0,69,0,1,0,70,64,-63,0,-128,0,0,0,92,-64,0,1,90,64,0,0,22,0,1,-128,-59,-128,1,0,1,-63,1,0,64,1,0,1,21,65,1,2,-36,64,0,1,26,64,0,0,22,-128,-6,127,30,0,-128,0,8,0,0,0,4,3,0,0,0,0,0,0,0,105,111,0,4,6,0,0,0,0,0,0,0,119,114,105,116,101,0,4,6,0,0,0,0,0,0,0,119,97,120,62,32,0,4,5,0,0,0,0,0,0,0,114,101,97,100,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,5,0,0,0,0,0,0,0,101,118,97,108,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,8,0,0,0,0,0,0,0,69,114,114,111,114,58,32,0,0,0,0,0,22,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,3,0,0,0,6,0,0,0,0,0,0,0,105,110,112,117,116,0,0,0,0,0,21,0,0,0,8,0,0,0,0,0,0,0,115,117,99,99,101,115,115,0,12,0,0,0,21,0,0,0,2,0,0,0,0,0,0,0,101,0,12,0,0,0,21,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,115,116,114,117,99,116,115,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,9,83,0,0,0,5,0,0,0,6,64,64,0,6,-128,64,0,65,-64,0,0,-127,0,1,0,-63,64,1,0,1,-127,1,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,-64,1,0,-127,0,1,0,-63,0,2,0,1,65,2,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,-128,2,0,-127,-64,2,0,-63,0,3,0,1,65,3,0,65,-127,3,0,-127,-63,3,0,28,64,-128,3,5,0,0,0,6,64,64,0,6,-128,64,0,65,0,4,0,-127,-64,2,0,-63,0,2,0,1,65,2,0,65,65,1,0,-127,-127,1,0,28,64,-128,3,5,0,0,0,6,64,64,0,6,-128,64,0,65,64,4,0,-127,-128,4,0,-63,-64,4,0,1,1,5,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,64,5,0,-127,-128,5,0,-63,-64,5,0,1,1,6,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,64,6,0,-127,-128,5,0,-63,-128,6,0,1,-63,6,0,28,64,-128,2,5,0,0,0,6,64,64,0,6,-128,64,0,65,0,7,0,-127,64,7,0,-63,-64,5,0,1,1,6,0,65,-127,6,0,-127,-63,6,0,28,64,-128,3,5,0,0,0,6,64,64,0,6,-128,64,0,65,-128,7,0,-127,-64,7,0,-63,0,8,0,1,65,8,0,65,-127,8,0,-127,-63,8,0,-63,1,9,0,1,66,9,0,28,64,-128,4,30,0,-128,0,38,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,7,0,0,0,0,0,0,0,115,116,114,117,99,116,0,4,7,0,0,0,0,0,0,0,99,114,101,97,116,101,0,4,7,0,0,0,0,0,0,0,67,71,83,105,122,101,0,4,3,0,0,0,0,0,0,0,102,102,0,4,6,0,0,0,0,0,0,0,119,105,100,116,104,0,4,7,0,0,0,0,0,0,0,104,101,105,103,104,116,0,4,8,0,0,0,0,0,0,0,67,71,80,111,105,110,116,0,4,2,0,0,0,0,0,0,0,120,0,4,2,0,0,0,0,0,0,0,121,0,4,13,0,0,0,0,0,0,0,85,73,69,100,103,101,73,110,115,101,116,115,0,4,5,0,0,0,0,0,0,0,102,102,102,102,0,4,4,0,0,0,0,0,0,0,116,111,112,0,4,5,0,0,0,0,0,0,0,108,101,102,116,0,4,7,0,0,0,0,0,0,0,98,111,116,116,111,109,0,4,6,0,0,0,0,0,0,0,114,105,103,104,116,0,4,7,0,0,0,0,0,0,0,67,71,82,101,99,116,0,4,8,0,0,0,0,0,0,0,78,83,82,97,110,103,101,0,4,3,0,0,0,0,0,0,0,73,73,0,4,9,0,0,0,0,0,0,0,108,111,99,97,116,105,111,110,0,4,7,0,0,0,0,0,0,0,108,101,110,103,116,104,0,4,23,0,0,0,0,0,0,0,67,76,76,111,99,97,116,105,111,110,67,111,111,114,100,105,110,97,116,101,50,68,0,4,3,0,0,0,0,0,0,0,100,100,0,4,9,0,0,0,0,0,0,0,108,97,116,105,116,117,100,101,0,4,10,0,0,0,0,0,0,0,108,111,110,103,105,116,117,100,101,0,4,17,0,0,0,0,0,0,0,77,75,67,111,111,114,100,105,110,97,116,101,83,112,97,110,0,4,14,0,0,0,0,0,0,0,108,97,116,105,116,117,100,101,68,101,108,116,97,0,4,15,0,0,0,0,0,0,0,108,111,110,103,105,116,117,100,101,68,101,108,116,97,0,4,19,0,0,0,0,0,0,0,77,75,67,111,111,114,100,105,110,97,116,101,82,101,103,105,111,110,0,4,5,0,0,0,0,0,0,0,100,100,100,100,0,4,18,0,0,0,0,0,0,0,67,71,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,0,4,7,0,0,0,0,0,0,0,102,102,102,102,102,102,0,4,2,0,0,0,0,0,0,0,97,0,4,2,0,0,0,0,0,0,0,98,0,4,2,0,0,0,0,0,0,0,99,0,4,2,0,0,0,0,0,0,0,100,0,4,3,0,0,0,0,0,0,0,116,120,0,4,3,0,0,0,0,0,0,0,116,121,0,0,0,0,0,83,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,119,97,120,67,108,97,115,115,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,2,5,0,0,0,36,0,0,0,7,0,0,0,36,64,0,0,7,64,0,0,30,0,-128,0,2,0,0,0,4,9,0,0,0,0,0,0,0,119,97,120,67,108,97,115,115,0,4,15,0,0,0,0,0,0,0,119,97,120,73,110,108,105,110,101,67,108,97,115,115,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,0,1,0,5,9,0,0,0,69,0,0,0,-128,0,0,0,92,-128,0,1,-123,64,0,0,-63,-128,0,0,6,-63,-64,0,-100,64,-128,1,94,0,0,1,30,0,-128,0,4,0,0,0,4,15,0,0,0,0,0,0,0,119,97,120,73,110,108,105,110,101,67,108,97,115,115,0,4,8,0,0,0,0,0,0,0,115,101,116,102,101,110,118,0,3,0,0,0,0,0,0,0,64,4,3,0,0,0,0,0,0,0,95,77,0,0,0,0,0,9,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,8,0,0,0,6,0,0,0,0,0,0,0,99,108,97,115,115,0,3,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,42,0,0,0,0,1,0,12,64,0,0,0,70,0,64,0,-122,64,64,0,-59,-128,0,0,-58,-64,-64,1,0,1,-128,0,64,1,0,1,-36,-128,-128,1,-55,64,0,-126,6,65,65,0,26,1,0,0,22,-128,4,-128,5,-127,1,0,70,65,65,0,28,-127,0,1,87,-64,65,2,22,-64,0,-128,10,1,-128,0,70,65,65,0,34,65,-128,0,9,0,-127,-126,6,65,65,0,20,1,0,2,23,0,66,2,22,64,1,-128,5,65,2,0,65,-127,2,0,-128,1,-128,0,-63,-63,2,0,85,-63,-127,2,28,65,0,1,5,1,3,0,70,65,65,0,90,65,0,0,22,0,0,-128,74,1,0,0,28,1,1,1,22,64,1,-128,69,-126,0,0,70,-62,-64,4,70,66,-61,4,-128,2,-128,1,-64,2,0,4,92,66,-128,1,33,-127,0,0,22,-64,-3,127,5,-63,3,0,74,65,0,0,73,-63,0,-120,-118,-127,0,0,-28,1,0,0,0,0,-128,1,-119,-63,-127,-120,-28,65,0,0,0,0,-128,1,-119,-63,1,-119,28,-127,-128,1,-55,0,1,-121,5,-63,4,0,9,-63,-128,0,5,1,5,0,6,65,69,2,9,-63,-128,0,-34,0,0,1,30,0,-128,0,22,0,0,0,3,0,0,0,0,0,0,-16,63,3,0,0,0,0,0,0,0,64,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,99,108,97,115,115,0,4,10,0,0,0,0,0,0,0,99,108,97,115,115,78,97,109,101,0,4,10,0,0,0,0,0,0,0,112,114,111,116,111,99,111,108,115,0,4,5,0,0,0,0,0,0,0,116,121,112,101,0,4,6,0,0,0,0,0,0,0,116,97,98,108,101,0,3,0,0,0,0,0,0,0,0,4,6,0,0,0,0,0,0,0,101,114,114,111,114,0,4,33,0,0,0,0,0,0,0,10,69,109,112,116,121,32,112,114,111,116,111,99,111,108,32,116,97,98,108,101,32,102,111,114,32,99,108,97,115,115,32,0,4,123,0,0,0,0,0,0,0,46,10,32,77,97,107,101,32,115,117,114,101,32,121,111,117,32,97,114,101,32,100,101,102,105,110,105,110,103,32,121,111,117,114,32,112,114,111,116,111,99,111,108,115,32,119,105,116,104,32,97,32,115,116,114,105,110,103,32,97,110,100,32,110,111,116,32,97,32,118,97,114,105,97,98,108,101,46,32,10,32,101,120,46,32,112,114,111,116,111,99,111,108,115,32,61,32,123,34,85,73,84,97,98,108,101,86,105,101,119,68,101,108,101,103,97,116,101,34,125,10,10,0,4,7,0,0,0,0,0,0,0,105,112,97,105,114,115,0,4,13,0,0,0,0,0,0,0,97,100,100,80,114,111,116,111,99,111,108,115,0,4,3,0,0,0,0,0,0,0,95,77,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,5,0,0,0,0,0,0,0,115,101,108,102,0,4,11,0,0,0,0,0,0,0,95,95,110,101,119,105,110,100,101,120,0,4,8,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,4,3,0,0,0,0,0,0,0,95,71,0,4,8,0,0,0,0,0,0,0,112,97,99,107,97,103,101,0,4,7,0,0,0,0,0,0,0,108,111,97,100,101,100,0,2,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,29,0,0,0,1,3,0,4,3,0,0,0,-60,0,0,0,-55,-128,-128,0,30,0,-128,0,0,0,0,0,0,0,0,0,3,0,0,0,28,0,0,0,28,0,0,0,29,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,118,97,108,117,101,0,0,0,0,0,2,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,99,108,97,115,115,0,0,0,0,0,0,0,0,0,31,0,0,0,33,0,0,0,1,2,0,3,8,0,0,0,-124,0,0,0,-122,64,0,1,-102,64,0,0,22,64,0,-128,-123,0,0,0,-122,64,0,1,-98,0,0,1,30,0,-128,0,1,0,0,0,4,3,0,0,0,0,0,0,0,95,71,0,0,0,0,0,8,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,33,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,7,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,7,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,99,108,97,115,115,0,64,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,20,0,0,0,19,0,0,0,20,0,0,0,23,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,29,0,0,0,29,0,0,0,29,0,0,0,33,0,0,0,33,0,0,0,33,0,0,0,23,0,0,0,36,0,0,0,38,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,39,0,0,0,41,0,0,0,42,0,0,0,9,0,0,0,8,0,0,0,0,0,0,0,111,112,116,105,111,110,115,0,0,0,0,0,63,0,0,0,10,0,0,0,0,0,0,0,99,108,97,115,115,78,97,109,101,0,1,0,0,0,63,0,0,0,15,0,0,0,0,0,0,0,115,117,112,101,114,99,108,97,115,115,78,97,109,101,0,2,0,0,0,63,0,0,0,6,0,0,0,0,0,0,0,99,108,97,115,115,0,7,0,0,0,63,0,0,0,16,0,0,0,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,36,0,0,0,45,0,0,0,12,0,0,0,0,0,0,0,40,102,111,114,32,115,116,97,116,101,41,0,36,0,0,0,45,0,0,0,14,0,0,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,36,0,0,0,45,0,0,0,2,0,0,0,0,0,0,0,105,0,37,0,0,0,43,0,0,0,9,0,0,0,0,0,0,0,112,114,111,116,111,99,111,108,0,37,0,0,0,43,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,42,0,0,0,8,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,64,47,85,115,101,114,115,47,109,97,120,102,111,110,103,47,68,101,115,107,116,111,112,47,49,47,115,116,100,108,105,98,47,105,110,105,116,46,108,117,97,0,0,0,0,0,0,0,0,0,0,0,2,4,22,0,0,0,5,0,0,0,69,64,0,0,-118,64,0,0,-28,0,0,0,-119,-64,0,-127,28,64,-128,1,5,-64,0,0,65,0,1,0,28,64,0,1,5,-64,0,0,65,64,1,0,28,64,0,1,5,-64,0,0,65,-128,1,0,28,64,0,1,5,-64,0,0,65,-64,1,0,28,64,0,1,5,-64,0,0,65,0,2,0,28,64,0,1,30,0,-128,0,9,0,0,0,4,13,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,4,3,0,0,0,0,0,0,0,95,71,0,4,8,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,4,8,0,0,0,0,0,0,0,114,101,113,117,105,114,101,0,4,8,0,0,0,0,0,0,0,119,97,120,46,101,120,116,0,4,10,0,0,0,0,0,0,0,119,97,120,46,101,110,117,109,115,0,4,12,0,0,0,0,0,0,0,119,97,120,46,115,116,114,117,99,116,115,0,4,13,0,0,0,0,0,0,0,119,97,120,46,119,97,120,67,108,97,115,115,0,4,12,0,0,0,0,0,0,0,119,97,120,46,104,101,108,112,101,114,115,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,0,2,0,7,21,0,0,0,-123,0,0,0,-122,64,64,1,-122,64,0,1,-102,0,0,0,22,0,0,-128,9,-128,-128,0,-102,64,0,0,22,-128,2,-128,-53,-128,-64,0,65,-63,0,0,-36,-128,-128,1,-38,0,0,0,22,64,1,-128,-59,0,1,0,1,65,1,0,64,1,-128,0,-127,-127,1,0,21,-127,1,2,-36,64,0,1,-98,0,0,1,30,0,-128,0,7,0,0,0,4,4,0,0,0,0,0,0,0,119,97,120,0,4,6,0,0,0,0,0,0,0,99,108,97,115,115,0,4,6,0,0,0,0,0,0,0,109,97,116,99,104,0,4,23,0,0,0,0,0,0,0,94,91,65,45,90,93,91,65,45,90,93,91,65,45,90,93,91,94,65,45,90,93,0,4,6,0,0,0,0,0,0,0,112,114,105,110,116,0,4,27,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,78,111,32,111,98,106,101,99,116,32,110,97,109,101,100,32,39,0,4,9,0,0,0,0,0,0,0,39,32,102,111,117,110,100,46,0,0,0,0,0,21,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,10,0,0,0,11,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,115,101,108,102,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,20,0,0,0,6,0,0,0,0,0,0,0,99,108,97,115,115,0,3,0,0,0,20,0,0,0,0,0,0,0,22,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,11,0,0,0,11,0,0,0,1,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} diff --git a/frameworks/wax.framework/Headers/wax_struct.h b/frameworks/wax.framework/Headers/wax_struct.h new file mode 100755 index 0000000..caaa2b1 --- /dev/null +++ b/frameworks/wax.framework/Headers/wax_struct.h @@ -0,0 +1,27 @@ +// +// wax_struct.h +// Rentals +// +// Created by ProbablyInteractive on 7/7/09. +// Copyright 2009 Probably Interactive. All rights reserved. +// + +#import <Foundation/Foundation.h> +//#import "lua.h" +#import <lua/lua.h> + +#define WAX_STRUCT_METATABLE_NAME "wax.struct" + +typedef struct _wax_struct_userdata { + void *data; + int size; + char *name; + char *typeDescription; +} wax_struct_userdata; + +int luaopen_wax_struct(lua_State *L); + +wax_struct_userdata *wax_struct_create(lua_State *L, const char *typeDescription, void *buffer); +void wax_struct_pushValueAt(lua_State *L, wax_struct_userdata *structUserdata, int index); +void wax_struct_setValueAt(lua_State *L, wax_struct_userdata *structUserdata, int index, int stackIndex); +int wax_struct_getOffsetForName(lua_State *L, wax_struct_userdata *structUserdata, const char *name); \ No newline at end of file diff --git a/frameworks/wax.framework/Headers/yajl_alloc.h b/frameworks/wax.framework/Headers/yajl_alloc.h new file mode 100755 index 0000000..bf19308 --- /dev/null +++ b/frameworks/wax.framework/Headers/yajl_alloc.h @@ -0,0 +1,50 @@ +/* + * Copyright 2007-2009, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file yajl_alloc.h + * default memory allocation routines for yajl which use malloc/realloc and + * free + */ + +#ifndef __YAJL_ALLOC_H__ +#define __YAJL_ALLOC_H__ + +#include "api/yajl_common.h" + +#define YA_MALLOC(afs, sz) (afs)->malloc((afs)->ctx, (sz)) +#define YA_FREE(afs, ptr) (afs)->free((afs)->ctx, (ptr)) +#define YA_REALLOC(afs, ptr, sz) (afs)->realloc((afs)->ctx, (ptr), (sz)) + +void yajl_set_default_alloc_funcs(yajl_alloc_funcs * yaf); + +#endif diff --git a/frameworks/wax.framework/Headers/yajl_buf.h b/frameworks/wax.framework/Headers/yajl_buf.h new file mode 100755 index 0000000..ebdf411 --- /dev/null +++ b/frameworks/wax.framework/Headers/yajl_buf.h @@ -0,0 +1,73 @@ +/* + * Copyright 2007-2009, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __YAJL_BUF_H__ +#define __YAJL_BUF_H__ + +#include "api/yajl_common.h" +#include "yajl_alloc.h" + +/* + * Implementation/performance notes. If this were moved to a header + * only implementation using #define's where possible we might be + * able to sqeeze a little performance out of the guy by killing function + * call overhead. YMMV. + */ + +/** + * yajl_buf is a buffer with exponential growth. the buffer ensures that + * you are always null padded. + */ +typedef struct yajl_buf_t * yajl_buf; + +/* allocate a new buffer */ +yajl_buf yajl_buf_alloc(yajl_alloc_funcs * alloc); + +/* free the buffer */ +void yajl_buf_free(yajl_buf buf); + +/* append a number of bytes to the buffer */ +void yajl_buf_append(yajl_buf buf, const void * data, unsigned int len); + +/* empty the buffer */ +void yajl_buf_clear(yajl_buf buf); + +/* get a pointer to the beginning of the buffer */ +const unsigned char * yajl_buf_data(yajl_buf buf); + +/* get the length of the buffer */ +unsigned int yajl_buf_len(yajl_buf buf); + +/* truncate the buffer */ +void yajl_buf_truncate(yajl_buf buf, unsigned int len); + +#endif diff --git a/frameworks/wax.framework/Headers/yajl_bytestack.h b/frameworks/wax.framework/Headers/yajl_bytestack.h new file mode 100755 index 0000000..f5694f9 --- /dev/null +++ b/frameworks/wax.framework/Headers/yajl_bytestack.h @@ -0,0 +1,85 @@ +/* + * Copyright 2009, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * A header only implementation of a simple stack of bytes, used in YAJL + * to maintain parse state. + */ + +#ifndef __YAJL_BYTESTACK_H__ +#define __YAJL_BYTESTACK_H__ + +#include "api/yajl_common.h" + +#define YAJL_BS_INC 128 + +typedef struct yajl_bytestack_t +{ + unsigned char * stack; + unsigned int size; + unsigned int used; + yajl_alloc_funcs * yaf; +} yajl_bytestack; + +/* initialize a bytestack */ +#define yajl_bs_init(obs, _yaf) { \ + (obs).stack = NULL; \ + (obs).size = 0; \ + (obs).used = 0; \ + (obs).yaf = (_yaf); \ + } \ + + +/* initialize a bytestack */ +#define yajl_bs_free(obs) \ + if ((obs).stack) (obs).yaf->free((obs).yaf->ctx, (obs).stack); + +#define yajl_bs_current(obs) \ + (assert((obs).used > 0), (obs).stack[(obs).used - 1]) + +#define yajl_bs_push(obs, byte) { \ + if (((obs).size - (obs).used) == 0) { \ + (obs).size += YAJL_BS_INC; \ + (obs).stack = (obs).yaf->realloc((obs).yaf->ctx,\ + (void *) (obs).stack, (obs).size);\ + } \ + (obs).stack[((obs).used)++] = (byte); \ +} + +/* removes the top item of the stack, returns nothing */ +#define yajl_bs_pop(obs) { ((obs).used)--; } + +#define yajl_bs_set(obs, byte) \ + (obs).stack[((obs).used) - 1] = (byte); + + +#endif diff --git a/frameworks/wax.framework/Headers/yajl_common.h b/frameworks/wax.framework/Headers/yajl_common.h new file mode 100755 index 0000000..9ad5eb4 --- /dev/null +++ b/frameworks/wax.framework/Headers/yajl_common.h @@ -0,0 +1,85 @@ +/* + * Copyright 2007-2009, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __YAJL_COMMON_H__ +#define __YAJL_COMMON_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define YAJL_MAX_DEPTH 128 + +/* msft dll export gunk. To build a DLL on windows, you + * must define WIN32, YAJL_SHARED, and YAJL_BUILD. To use a shared + * DLL, you must define YAJL_SHARED and WIN32 */ +#if defined(WIN32) && defined(YAJL_SHARED) +# ifdef YAJL_BUILD +# define YAJL_API __declspec(dllexport) +# else +# define YAJL_API __declspec(dllimport) +# endif +#else +# define YAJL_API +#endif + +/** pointer to a malloc function, supporting client overriding memory + * allocation routines */ +typedef void * (*yajl_malloc_func)(void *ctx, unsigned int sz); + +/** pointer to a free function, supporting client overriding memory + * allocation routines */ +typedef void (*yajl_free_func)(void *ctx, void * ptr); + +/** pointer to a realloc function which can resize an allocation. */ +typedef void * (*yajl_realloc_func)(void *ctx, void * ptr, unsigned int sz); + +/** A structure which can be passed to yajl_*_alloc routines to allow the + * client to specify memory allocation functions to be used. */ +typedef struct +{ + /** pointer to a function that can allocate uninitialized memory */ + yajl_malloc_func malloc; + /** pointer to a function that can resize memory allocations */ + yajl_realloc_func realloc; + /** pointer to a function that can free memory allocated using + * reallocFunction or mallocFunction */ + yajl_free_func free; + /** a context pointer that will be passed to above allocation routines */ + void * ctx; +} yajl_alloc_funcs; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/frameworks/wax.framework/Headers/yajl_encode.h b/frameworks/wax.framework/Headers/yajl_encode.h new file mode 100755 index 0000000..af6878f --- /dev/null +++ b/frameworks/wax.framework/Headers/yajl_encode.h @@ -0,0 +1,50 @@ +/* + * Copyright 2007-2009, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __YAJL_ENCODE_H__ +#define __YAJL_ENCODE_H__ + +#include "yajl_buf.h" +#include "api/yajl_gen.h" + +void yajl_string_encode2(const yajl_print_t printer, + void * ctx, + const unsigned char * str, + unsigned int length); + +void yajl_string_encode(yajl_buf buf, const unsigned char * str, + unsigned int length); + +void yajl_string_decode(yajl_buf buf, const unsigned char * str, + unsigned int length); + +#endif diff --git a/frameworks/wax.framework/Headers/yajl_gen.h b/frameworks/wax.framework/Headers/yajl_gen.h new file mode 100755 index 0000000..e5a7eb3 --- /dev/null +++ b/frameworks/wax.framework/Headers/yajl_gen.h @@ -0,0 +1,159 @@ +/* + * Copyright 2007-2009, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file yajl_gen.h + * Interface to YAJL's JSON generation facilities. + */ + +#include "yajl_common.h" + +#ifndef __YAJL_GEN_H__ +#define __YAJL_GEN_H__ + +#ifdef __cplusplus +extern "C" { +#endif + /** generator status codes */ + typedef enum { + /** no error */ + yajl_gen_status_ok = 0, + /** at a point where a map key is generated, a function other than + * yajl_gen_string was called */ + yajl_gen_keys_must_be_strings, + /** YAJL's maximum generation depth was exceeded. see + * YAJL_MAX_DEPTH */ + yajl_max_depth_exceeded, + /** A generator function (yajl_gen_XXX) was called while in an error + * state */ + yajl_gen_in_error_state, + /** A complete JSON document has been generated */ + yajl_gen_generation_complete, + /** yajl_gen_double was passed an invalid floating point value + * (infinity or NaN). */ + yajl_gen_invalid_number, + /** A print callback was passed in, so there is no internal + * buffer to get from */ + yajl_gen_no_buf + } yajl_gen_status; + + /** an opaque handle to a generator */ + typedef struct yajl_gen_t * yajl_gen; + + /** a callback used for "printing" the results. */ + typedef void (*yajl_print_t)(void * ctx, + const char * str, + unsigned int len); + + /** configuration structure for the generator */ + typedef struct { + /** generate indented (beautiful) output */ + unsigned int beautify; + /** an opportunity to define an indent string. such as \\t or + * some number of spaces. default is four spaces ' '. This + * member is only relevant when beautify is true */ + const char * indentString; + } yajl_gen_config; + + /** allocate a generator handle + * \param config a pointer to a structure containing parameters which + * configure the behavior of the json generator + * \param allocFuncs an optional pointer to a structure which allows + * the client to overide the memory allocation + * used by yajl. May be NULL, in which case + * malloc/free/realloc will be used. + * + * \returns an allocated handle on success, NULL on failure (bad params) + */ + YAJL_API yajl_gen yajl_gen_alloc(const yajl_gen_config * config, + const yajl_alloc_funcs * allocFuncs); + + /** allocate a generator handle that will print to the specified + * callback rather than storing the results in an internal buffer. + * \param callback a pointer to a printer function. May be NULL + * in which case, the results will be store in an + * internal buffer. + * \param config a pointer to a structure containing parameters + * which configure the behavior of the json + * generator. + * \param allocFuncs an optional pointer to a structure which allows + * the client to overide the memory allocation + * used by yajl. May be NULL, in which case + * malloc/free/realloc will be used. + * \param ctx a context pointer that will be passed to the + * printer callback. + * + * \returns an allocated handle on success, NULL on failure (bad params) + */ + YAJL_API yajl_gen yajl_gen_alloc2(const yajl_print_t callback, + const yajl_gen_config * config, + const yajl_alloc_funcs * allocFuncs, + void * ctx); + + /** free a generator handle */ + YAJL_API void yajl_gen_free(yajl_gen handle); + + YAJL_API yajl_gen_status yajl_gen_integer(yajl_gen hand, long int number); + /** generate a floating point number. number may not be infinity or + * NaN, as these have no representation in JSON. In these cases the + * generator will return 'yajl_gen_invalid_number' */ + YAJL_API yajl_gen_status yajl_gen_double(yajl_gen hand, double number); + YAJL_API yajl_gen_status yajl_gen_number(yajl_gen hand, + const char * num, + unsigned int len); + YAJL_API yajl_gen_status yajl_gen_string(yajl_gen hand, + const unsigned char * str, + unsigned int len); + YAJL_API yajl_gen_status yajl_gen_null(yajl_gen hand); + YAJL_API yajl_gen_status yajl_gen_bool(yajl_gen hand, int boolean); + YAJL_API yajl_gen_status yajl_gen_map_open(yajl_gen hand); + YAJL_API yajl_gen_status yajl_gen_map_close(yajl_gen hand); + YAJL_API yajl_gen_status yajl_gen_array_open(yajl_gen hand); + YAJL_API yajl_gen_status yajl_gen_array_close(yajl_gen hand); + + /** access the null terminated generator buffer. If incrementally + * outputing JSON, one should call yajl_gen_clear to clear the + * buffer. This allows stream generation. */ + YAJL_API yajl_gen_status yajl_gen_get_buf(yajl_gen hand, + const unsigned char ** buf, + unsigned int * len); + + /** clear yajl's output buffer, but maintain all internal generation + * state. This function will not "reset" the generator state, and is + * intended to enable incremental JSON outputing. */ + YAJL_API void yajl_gen_clear(yajl_gen hand); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/frameworks/wax.framework/Headers/yajl_lex.h b/frameworks/wax.framework/Headers/yajl_lex.h new file mode 100755 index 0000000..966365c --- /dev/null +++ b/frameworks/wax.framework/Headers/yajl_lex.h @@ -0,0 +1,133 @@ +/* + * Copyright 2007-2009, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __YAJL_LEX_H__ +#define __YAJL_LEX_H__ + +#include "api/yajl_common.h" + +typedef enum { + yajl_tok_bool, + yajl_tok_colon, + yajl_tok_comma, + yajl_tok_eof, + yajl_tok_error, + yajl_tok_left_brace, + yajl_tok_left_bracket, + yajl_tok_null, + yajl_tok_right_brace, + yajl_tok_right_bracket, + + /* we differentiate between integers and doubles to allow the + * parser to interpret the number without re-scanning */ + yajl_tok_integer, + yajl_tok_double, + + /* we differentiate between strings which require further processing, + * and strings that do not */ + yajl_tok_string, + yajl_tok_string_with_escapes, + + /* comment tokens are not currently returned to the parser, ever */ + yajl_tok_comment +} yajl_tok; + +typedef struct yajl_lexer_t * yajl_lexer; + +yajl_lexer yajl_lex_alloc(yajl_alloc_funcs * alloc, + unsigned int allowComments, + unsigned int validateUTF8); + +void yajl_lex_free(yajl_lexer lexer); + +/** + * run/continue a lex. "offset" is an input/output parameter. + * It should be initialized to zero for a + * new chunk of target text, and upon subsetquent calls with the same + * target text should passed with the value of the previous invocation. + * + * the client may be interested in the value of offset when an error is + * returned from the lexer. This allows the client to render useful +n * error messages. + * + * When you pass the next chunk of data, context should be reinitialized + * to zero. + * + * Finally, the output buffer is usually just a pointer into the jsonText, + * however in cases where the entity being lexed spans multiple chunks, + * the lexer will buffer the entity and the data returned will be + * a pointer into that buffer. + * + * This behavior is abstracted from client code except for the performance + * implications which require that the client choose a reasonable chunk + * size to get adequate performance. + */ +yajl_tok yajl_lex_lex(yajl_lexer lexer, const unsigned char * jsonText, + unsigned int jsonTextLen, unsigned int * offset, + const unsigned char ** outBuf, unsigned int * outLen); + +/** have a peek at the next token, but don't move the lexer forward */ +yajl_tok yajl_lex_peek(yajl_lexer lexer, const unsigned char * jsonText, + unsigned int jsonTextLen, unsigned int offset); + + +typedef enum { + yajl_lex_e_ok = 0, + yajl_lex_string_invalid_utf8, + yajl_lex_string_invalid_escaped_char, + yajl_lex_string_invalid_json_char, + yajl_lex_string_invalid_hex_char, + yajl_lex_invalid_char, + yajl_lex_invalid_string, + yajl_lex_missing_integer_after_decimal, + yajl_lex_missing_integer_after_exponent, + yajl_lex_missing_integer_after_minus, + yajl_lex_unallowed_comment +} yajl_lex_error; + +const char * yajl_lex_error_to_string(yajl_lex_error error); + +/** allows access to more specific information about the lexical + * error when yajl_lex_lex returns yajl_tok_error. */ +yajl_lex_error yajl_lex_get_error(yajl_lexer lexer); + +/** get the current offset into the most recently lexed json string. */ +unsigned int yajl_lex_current_offset(yajl_lexer lexer); + +/** get the number of lines lexed by this lexer instance */ +unsigned int yajl_lex_current_line(yajl_lexer lexer); + +/** get the number of chars lexed by this lexer instance since the last + * \n or \r */ +unsigned int yajl_lex_current_char(yajl_lexer lexer); + +#endif diff --git a/frameworks/wax.framework/Headers/yajl_parse.h b/frameworks/wax.framework/Headers/yajl_parse.h new file mode 100755 index 0000000..39ecdb4 --- /dev/null +++ b/frameworks/wax.framework/Headers/yajl_parse.h @@ -0,0 +1,193 @@ +/* + * Copyright 2007-2009, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file yajl_parse.h + * Interface to YAJL's JSON parsing facilities. + */ + +#include "yajl_common.h" + +#ifndef __YAJL_PARSE_H__ +#define __YAJL_PARSE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + /** error codes returned from this interface */ + typedef enum { + /** no error was encountered */ + yajl_status_ok, + /** a client callback returned zero, stopping the parse */ + yajl_status_client_canceled, + /** The parse cannot yet complete because more json input text + * is required, call yajl_parse with the next buffer of input text. + * (pertinent only when stream parsing) */ + yajl_status_insufficient_data, + /** An error occured during the parse. Call yajl_get_error for + * more information about the encountered error */ + yajl_status_error + } yajl_status; + + /** attain a human readable, english, string for an error */ + YAJL_API const char * yajl_status_to_string(yajl_status code); + + /** an opaque handle to a parser */ + typedef struct yajl_handle_t * yajl_handle; + + /** yajl is an event driven parser. this means as json elements are + * parsed, you are called back to do something with the data. The + * functions in this table indicate the various events for which + * you will be called back. Each callback accepts a "context" + * pointer, this is a void * that is passed into the yajl_parse + * function which the client code may use to pass around context. + * + * All callbacks return an integer. If non-zero, the parse will + * continue. If zero, the parse will be canceled and + * yajl_status_client_canceled will be returned from the parse. + * + * Note about handling of numbers: + * yajl will only convert numbers that can be represented in a double + * or a long int. All other numbers will be passed to the client + * in string form using the yajl_number callback. Furthermore, if + * yajl_number is not NULL, it will always be used to return numbers, + * that is yajl_integer and yajl_double will be ignored. If + * yajl_number is NULL but one of yajl_integer or yajl_double are + * defined, parsing of a number larger than is representable + * in a double or long int will result in a parse error. + */ + typedef struct { + int (* yajl_null)(void * ctx); + int (* yajl_boolean)(void * ctx, int boolVal); + int (* yajl_integer)(void * ctx, long integerVal); + int (* yajl_double)(void * ctx, double doubleVal); + /** A callback which passes the string representation of the number + * back to the client. Will be used for all numbers when present */ + int (* yajl_number)(void * ctx, const char * numberVal, + unsigned int numberLen); + + /** strings are returned as pointers into the JSON text when, + * possible, as a result, they are _not_ null padded */ + int (* yajl_string)(void * ctx, const unsigned char * stringVal, + unsigned int stringLen); + + int (* yajl_start_map)(void * ctx); + int (* yajl_map_key)(void * ctx, const unsigned char * key, + unsigned int stringLen); + int (* yajl_end_map)(void * ctx); + + int (* yajl_start_array)(void * ctx); + int (* yajl_end_array)(void * ctx); + } yajl_callbacks; + + /** configuration structure for the generator */ + typedef struct { + /** if nonzero, javascript style comments will be allowed in + * the json input, both slash star and slash slash */ + unsigned int allowComments; + /** if nonzero, invalid UTF8 strings will cause a parse + * error */ + unsigned int checkUTF8; + } yajl_parser_config; + + /** allocate a parser handle + * \param callbacks a yajl callbacks structure specifying the + * functions to call when different JSON entities + * are encountered in the input text. May be NULL, + * which is only useful for validation. + * \param config configuration parameters for the parse. + * \param ctx a context pointer that will be passed to callbacks. + */ + YAJL_API yajl_handle yajl_alloc(const yajl_callbacks * callbacks, + const yajl_parser_config * config, + const yajl_alloc_funcs * allocFuncs, + void * ctx); + + /** free a parser handle */ + YAJL_API void yajl_free(yajl_handle handle); + + /** Parse some json! + * \param hand - a handle to the json parser allocated with yajl_alloc + * \param jsonText - a pointer to the UTF8 json text to be parsed + * \param jsonTextLength - the length, in bytes, of input text + */ + YAJL_API yajl_status yajl_parse(yajl_handle hand, + const unsigned char * jsonText, + unsigned int jsonTextLength); + + /** Parse any remaining buffered json. + * Since yajl is a stream-based parser, without an explicit end of + * input, yajl sometimes can't decide if content at the end of the + * stream is valid or not. For example, if "1" has been fed in, + * yajl can't know whether another digit is next or some character + * that would terminate the integer token. + * + * \param hand - a handle to the json parser allocated with yajl_alloc + */ + YAJL_API yajl_status yajl_parse_complete(yajl_handle hand); + + /** get an error string describing the state of the + * parse. + * + * If verbose is non-zero, the message will include the JSON + * text where the error occured, along with an arrow pointing to + * the specific char. + * + * \returns A dynamically allocated string will be returned which should + * be freed with yajl_free_error + */ + YAJL_API unsigned char * yajl_get_error(yajl_handle hand, int verbose, + const unsigned char * jsonText, + unsigned int jsonTextLength); + + /** + * get the amount of data consumed from the last chunk passed to YAJL. + * + * In the case of a successful parse this can help you understand if + * the entire buffer was consumed (which will allow you to handle + * "junk at end of input". + * + * In the event an error is encountered during parsing, this function + * affords the client a way to get the offset into the most recent + * chunk where the error occured. 0 will be returned if no error + * was encountered. + */ + YAJL_API unsigned int yajl_get_bytes_consumed(yajl_handle hand); + + /** free an error returned from yajl_get_error */ + YAJL_API void yajl_free_error(yajl_handle hand, unsigned char * str); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/frameworks/wax.framework/Headers/yajl_parser.h b/frameworks/wax.framework/Headers/yajl_parser.h new file mode 100755 index 0000000..bece78b --- /dev/null +++ b/frameworks/wax.framework/Headers/yajl_parser.h @@ -0,0 +1,82 @@ +/* + * Copyright 2007-2009, Lloyd Hilaiel. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. Neither the name of Lloyd Hilaiel nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __YAJL_PARSER_H__ +#define __YAJL_PARSER_H__ + +#include "api/yajl_parse.h" +#include "yajl_bytestack.h" +#include "yajl_buf.h" + + +typedef enum { + yajl_state_start = 0, + yajl_state_parse_complete, + yajl_state_parse_error, + yajl_state_lexical_error, + yajl_state_map_start, + yajl_state_map_sep, + yajl_state_map_need_val, + yajl_state_map_got_val, + yajl_state_map_need_key, + yajl_state_array_start, + yajl_state_array_got_val, + yajl_state_array_need_val +} yajl_state; + +struct yajl_handle_t { + const yajl_callbacks * callbacks; + void * ctx; + yajl_lexer lexer; + const char * parseError; + /* the number of bytes consumed from the last client buffer, + * in the case of an error this will be an error offset, in the + * case of an error this can be used as the error offset */ + unsigned int bytesConsumed; + /* temporary storage for decoded strings */ + yajl_buf decodeBuf; + /* a stack of states. access with yajl_state_XXX routines */ + yajl_bytestack stateStack; + /* memory allocation routines */ + yajl_alloc_funcs alloc; +}; + +yajl_status +yajl_do_parse(yajl_handle handle, const unsigned char * jsonText, + unsigned int jsonTextLen); + +unsigned char * +yajl_render_error_string(yajl_handle hand, const unsigned char * jsonText, + unsigned int jsonTextLen, int verbose); + + +#endif diff --git a/frameworks/wax.framework/Info.plist b/frameworks/wax.framework/Info.plist new file mode 100644 index 0000000..4962b0e --- /dev/null +++ b/frameworks/wax.framework/Info.plist Binary files differ diff --git a/frameworks/wax.framework/Modules/module.modulemap b/frameworks/wax.framework/Modules/module.modulemap new file mode 100644 index 0000000..8bf482a --- /dev/null +++ b/frameworks/wax.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module wax { + umbrella header "wax.h" + + export * + module * { export * } +} diff --git a/frameworks/wax.framework/Rakefile b/frameworks/wax.framework/Rakefile new file mode 100755 index 0000000..328f822 --- /dev/null +++ b/frameworks/wax.framework/Rakefile @@ -0,0 +1,10 @@ +task :default do + sh 'tar zxvf yajl-1.0.9.tar.gz -- yajl-1.0.9/src/*.{c,h}' + rm_rf 'yajl' + mv 'yajl-1.0.9/src', 'yajl' + sh %[sed -i '' -e 's,include <yajl/yajl_common.h>,include "yajl_common.h",g' yajl/api/yajl_{parse,gen}.h] + ln_sf 'api/yajl_parse.h', 'yajl/' + ln_sf 'api/yajl_gen.h', 'yajl/' + ln_sf 'api/yajl_common.h', 'yajl/' + rm_rf 'yajl-1.0.9' +end diff --git a/frameworks/wax.framework/_CodeSignature/CodeDirectory b/frameworks/wax.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..4711bea --- /dev/null +++ b/frameworks/wax.framework/_CodeSignature/CodeDirectory Binary files differ diff --git a/frameworks/wax.framework/_CodeSignature/CodeRequirements b/frameworks/wax.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..ac85b1a --- /dev/null +++ b/frameworks/wax.framework/_CodeSignature/CodeRequirements Binary files differ diff --git a/frameworks/wax.framework/_CodeSignature/CodeResources b/frameworks/wax.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..27fd7b7 --- /dev/null +++ b/frameworks/wax.framework/_CodeSignature/CodeResources @@ -0,0 +1,327 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>files</key> + <dict> + <key>Headers/ProtocolLoader.h</key> + <data> + 9kzXwHVHfbvtKfaeilIx3kowSpc= + </data> + <key>Headers/WaxPatch-Prefix.pch</key> + <data> + BreEdMengJFzjChuIkXDtZL3F68= + </data> + <key>Headers/wax.h</key> + <data> + 6QUUqWlCKpM0TyRBhlSO4LNAzco= + </data> + <key>Headers/wax_class.h</key> + <data> + DAmQKvnVxu3ESnsh/QOiJvDuXDs= + </data> + <key>Headers/wax_filesystem.h</key> + <data> + deo457n7ocHxfY94NYcuPJFSFhQ= + </data> + <key>Headers/wax_gc.h</key> + <data> + VMOaL/PjgtUDu/Pv6BZBkJ12FNs= + </data> + <key>Headers/wax_helpers.h</key> + <data> + O5ozAZwb3/E7yfyA79nNeieWzCE= + </data> + <key>Headers/wax_http.h</key> + <data> + 0a95mIBSk9c+JvWl/BX5hmVk8Jc= + </data> + <key>Headers/wax_http_connection.h</key> + <data> + Bmss+i4zNmncA6ZCxn4sZquUHbY= + </data> + <key>Headers/wax_instance.h</key> + <data> + DK3ZmzAne2B0svH3BVGpTL+YqW8= + </data> + <key>Headers/wax_json.h</key> + <data> + Si1oinSbWtblYgPnOwxKm+cEWZQ= + </data> + <key>Headers/wax_server.h</key> + <data> + YssS4ui9sQKXEY3ozMtDdaad0eI= + </data> + <key>Headers/wax_stdlib.h</key> + <data> + mrKbt3dlPmaCIddmdCspxBbzr5o= + </data> + <key>Headers/wax_stdlib_64.h</key> + <data> + 1d/TOvqv46IhX69JAJMQ2a1HhpQ= + </data> + <key>Headers/wax_struct.h</key> + <data> + Cb1o/v3fJscc4ZA7fxwnnNXTsHY= + </data> + <key>Headers/yajl_alloc.h</key> + <data> + AeXRVez2Bhn24uh3yvOgI65Pfak= + </data> + <key>Headers/yajl_buf.h</key> + <data> + 2+Dqkuzc/y/jZjGPyGgcivDBxn8= + </data> + <key>Headers/yajl_bytestack.h</key> + <data> + nyvHkdrt2eJxUKL82DGxN3gs824= + </data> + <key>Headers/yajl_common.h</key> + <data> + 7OpX5L/AfF06aw0tXq1IgOa4UzA= + </data> + <key>Headers/yajl_encode.h</key> + <data> + ScUZUJCORmQje8RkB8oZhoH/T6k= + </data> + <key>Headers/yajl_gen.h</key> + <data> + eQCeVbcGuhd+geoU5JczPvdQJnQ= + </data> + <key>Headers/yajl_lex.h</key> + <data> + xgY0PnMmbJazYfQlX4sQo2HmyfE= + </data> + <key>Headers/yajl_parse.h</key> + <data> + bz4Zt+/cXsM5xiryyWAWxs1+WDU= + </data> + <key>Headers/yajl_parser.h</key> + <data> + Wd4kgPw7aaYgB4WB5+IQfuktfnE= + </data> + <key>Info.plist</key> + <data> + 1Md5fJQy98ySBJVxBjW0W0Z207E= + </data> + <key>Modules/module.modulemap</key> + <data> + 4N2N3k+3SpYgmfToZS6gbP8iLSQ= + </data> + <key>Rakefile</key> + <data> + jddlq6k7eA/75/tUStSpsd4EIeE= + </data> + <key>yajl-1.0.9.tar.gz</key> + <data> + cpbG5YSoXxj6aYsKlYGnFx7UDTg= + </data> + </dict> + <key>files2</key> + <dict> + <key>Headers/ProtocolLoader.h</key> + <data> + 9kzXwHVHfbvtKfaeilIx3kowSpc= + </data> + <key>Headers/WaxPatch-Prefix.pch</key> + <data> + BreEdMengJFzjChuIkXDtZL3F68= + </data> + <key>Headers/wax.h</key> + <data> + 6QUUqWlCKpM0TyRBhlSO4LNAzco= + </data> + <key>Headers/wax_class.h</key> + <data> + DAmQKvnVxu3ESnsh/QOiJvDuXDs= + </data> + <key>Headers/wax_filesystem.h</key> + <data> + deo457n7ocHxfY94NYcuPJFSFhQ= + </data> + <key>Headers/wax_gc.h</key> + <data> + VMOaL/PjgtUDu/Pv6BZBkJ12FNs= + </data> + <key>Headers/wax_helpers.h</key> + <data> + O5ozAZwb3/E7yfyA79nNeieWzCE= + </data> + <key>Headers/wax_http.h</key> + <data> + 0a95mIBSk9c+JvWl/BX5hmVk8Jc= + </data> + <key>Headers/wax_http_connection.h</key> + <data> + Bmss+i4zNmncA6ZCxn4sZquUHbY= + </data> + <key>Headers/wax_instance.h</key> + <data> + DK3ZmzAne2B0svH3BVGpTL+YqW8= + </data> + <key>Headers/wax_json.h</key> + <data> + Si1oinSbWtblYgPnOwxKm+cEWZQ= + </data> + <key>Headers/wax_server.h</key> + <data> + YssS4ui9sQKXEY3ozMtDdaad0eI= + </data> + <key>Headers/wax_stdlib.h</key> + <data> + mrKbt3dlPmaCIddmdCspxBbzr5o= + </data> + <key>Headers/wax_stdlib_64.h</key> + <data> + 1d/TOvqv46IhX69JAJMQ2a1HhpQ= + </data> + <key>Headers/wax_struct.h</key> + <data> + Cb1o/v3fJscc4ZA7fxwnnNXTsHY= + </data> + <key>Headers/yajl_alloc.h</key> + <data> + AeXRVez2Bhn24uh3yvOgI65Pfak= + </data> + <key>Headers/yajl_buf.h</key> + <data> + 2+Dqkuzc/y/jZjGPyGgcivDBxn8= + </data> + <key>Headers/yajl_bytestack.h</key> + <data> + nyvHkdrt2eJxUKL82DGxN3gs824= + </data> + <key>Headers/yajl_common.h</key> + <data> + 7OpX5L/AfF06aw0tXq1IgOa4UzA= + </data> + <key>Headers/yajl_encode.h</key> + <data> + ScUZUJCORmQje8RkB8oZhoH/T6k= + </data> + <key>Headers/yajl_gen.h</key> + <data> + eQCeVbcGuhd+geoU5JczPvdQJnQ= + </data> + <key>Headers/yajl_lex.h</key> + <data> + xgY0PnMmbJazYfQlX4sQo2HmyfE= + </data> + <key>Headers/yajl_parse.h</key> + <data> + bz4Zt+/cXsM5xiryyWAWxs1+WDU= + </data> + <key>Headers/yajl_parser.h</key> + <data> + Wd4kgPw7aaYgB4WB5+IQfuktfnE= + </data> + <key>Modules/module.modulemap</key> + <data> + 4N2N3k+3SpYgmfToZS6gbP8iLSQ= + </data> + <key>Rakefile</key> + <data> + jddlq6k7eA/75/tUStSpsd4EIeE= + </data> + <key>yajl-1.0.9.tar.gz</key> + <data> + cpbG5YSoXxj6aYsKlYGnFx7UDTg= + </data> + </dict> + <key>rules</key> + <dict> + <key>^</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^version.plist$</key> + <true/> + </dict> + <key>rules2</key> + <dict> + <key>.*\.dSYM($|/)</key> + <dict> + <key>weight</key> + <real>11</real> + </dict> + <key>^</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^(.*/)?\.DS_Store$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>2000</real> + </dict> + <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^.*</key> + <true/> + <key>^.*\.lproj/</key> + <dict> + <key>optional</key> + <true/> + <key>weight</key> + <real>1000</real> + </dict> + <key>^.*\.lproj/locversion.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>1100</real> + </dict> + <key>^Info\.plist$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^PkgInfo$</key> + <dict> + <key>omit</key> + <true/> + <key>weight</key> + <real>20</real> + </dict> + <key>^[^/]+$</key> + <dict> + <key>nested</key> + <true/> + <key>weight</key> + <real>10</real> + </dict> + <key>^embedded\.provisionprofile$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + <key>^version\.plist$</key> + <dict> + <key>weight</key> + <real>20</real> + </dict> + </dict> +</dict> +</plist> diff --git a/frameworks/wax.framework/_CodeSignature/CodeSignature b/frameworks/wax.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..03833d4 --- /dev/null +++ b/frameworks/wax.framework/_CodeSignature/CodeSignature Binary files differ diff --git a/frameworks/wax.framework/wax b/frameworks/wax.framework/wax new file mode 100644 index 0000000..0136402 --- /dev/null +++ b/frameworks/wax.framework/wax Binary files differ diff --git a/frameworks/wax.framework/yajl-1.0.9.tar.gz b/frameworks/wax.framework/yajl-1.0.9.tar.gz new file mode 100755 index 0000000..8889e30 --- /dev/null +++ b/frameworks/wax.framework/yajl-1.0.9.tar.gz Binary files differ diff --git a/localizable/base.plist b/localizable/base.plist new file mode 100644 index 0000000..abebb1e --- /dev/null +++ b/localizable/base.plist @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>wasdk_install_btn</key> + <string>Install</string> + <key>wasdk_play_btn</key> + <string>Play</string> + <key>wasdk_info_btn</key> + <string>INFO</string> + <key>wasdk_app_btn</key> + <string>APP</string> + <key>wasdk_app_wall_guide_words</key> + <string>Click here to popup menu</string> + <key>wasdk_sdk_version</key> + <string>SDK Version</string> + <key>wasdk_patch_version</key> + <string>Patch Version</string> + <key>wasdk_has_no_patch</key> + <string>None</string> + <key>wasdk_login</key> + <string>Login</string> + <key>wasdk_login_facebook</key> + <string>Facebook</string> + <key>wasdk_login_game_center</key> + <string>Game Center</string> + <key>wasdk_login_vk</key> + <string>VK</string> + <key>wasdk_confirm</key> + <string>Confirm</string> + <key>wasdk_cancel</key> + <string>Cancel</string> + <key>wasdk_loading</key> + <string>Loading</string> + <key>wasdk_visitor</key> + <string>Visitor</string> + <key>wasdk_bind</key> + <string>Bind</string> + <key>wasdk_unbind</key> + <string>Unbind</string> + <key>wasdk_bound</key> + <string>Bound</string> + <key>wasdk_unbound</key> + <string>Unbound</string> + <key>wasdk_create_ccount</key> + <string>Create Account</string> + <key>wasdk_account_management</key> + <string>Account Management</string> + <key>wasdk_change_account</key> + <string>Change Account</string> + <key>wasdk_unbind_account</key> + <string>Unbind Account</string> + <key>wasdk_tip_warning</key> + <string>Warning</string> + <key>wasdk_tip_unbind_unique_third_party</key> + <string>If you unbind your unique third-party platform account, your data will be lost. Continue?</string> + <key>wasdk_tip_can_not_unbind</key> + <string>You can’t unbind the account.</string> + <key>wasdk_tip_create_account_lost_data</key> + <string>If you create another account but don’t bind it to a third-party account, your previous one’s data will be lost permanently. After the account binding, you can use your third-party platform’s account to log into the applications.</string> + <key>wasdk_tip_fail_change_account</key> + <string>Failed to change your account. Please try again later.</string> + <key>wasdk_tip_relog</key> + <string>Please relog into the application.</string> + <key>wasdk_tip_fail_access_account_data</key> + <string>Failed to access your account data. Please try again later.</string> + <key>wasdk_tip_bind_succ</key> + <string>Binded successfully!</string> + <key>wasdk_tip_bind_fail</key> + <string>Failed to bind. Please try again later.</string> + <key>wasdk_tip_bind_fail_other_user</key> + <string>This account has been bound to another user.</string> + <key>wasdk_tip_unbind_succ</key> + <string>Unbinded successfully!</string> + <key>wasdk_tip_unbind_fail</key> + <string>Failed to unbind. Please try again later.</string> + <key>wasdk_tip_create_user_fail</key> + <string>Failed to create a new user. Please try again later.</string> + <key>wasdk_drag_up_fresh</key> + <string>Click or drag up to load more</string> + <key>wasdk_no_more_data</key> + <string>No more data</string> + <key>wasdk_load_more</key> + <string>Loading ...</string> + <key>wasdk_pull_down_refresh</key> + <string>Pull down to refresh</string> + <key>wasdk_release_refresh</key> + <string>Release to refresh</string> + <key>wasdk_purchase</key> + <string>Purchase</string> + <key>wasdk_pay_exit_alert</key> + <string>Are you sure you want to cancel this purchase?</string> + <key>wasdk_notice</key> + <string>Notice</string> + <key>wasdk_jailbreak_not_purchase</key> + <string>You can not do purchase in a jailbreak device.</string> +</dict> +</plist> diff --git a/localizable/en.plist b/localizable/en.plist new file mode 100644 index 0000000..abebb1e --- /dev/null +++ b/localizable/en.plist @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>wasdk_install_btn</key> + <string>Install</string> + <key>wasdk_play_btn</key> + <string>Play</string> + <key>wasdk_info_btn</key> + <string>INFO</string> + <key>wasdk_app_btn</key> + <string>APP</string> + <key>wasdk_app_wall_guide_words</key> + <string>Click here to popup menu</string> + <key>wasdk_sdk_version</key> + <string>SDK Version</string> + <key>wasdk_patch_version</key> + <string>Patch Version</string> + <key>wasdk_has_no_patch</key> + <string>None</string> + <key>wasdk_login</key> + <string>Login</string> + <key>wasdk_login_facebook</key> + <string>Facebook</string> + <key>wasdk_login_game_center</key> + <string>Game Center</string> + <key>wasdk_login_vk</key> + <string>VK</string> + <key>wasdk_confirm</key> + <string>Confirm</string> + <key>wasdk_cancel</key> + <string>Cancel</string> + <key>wasdk_loading</key> + <string>Loading</string> + <key>wasdk_visitor</key> + <string>Visitor</string> + <key>wasdk_bind</key> + <string>Bind</string> + <key>wasdk_unbind</key> + <string>Unbind</string> + <key>wasdk_bound</key> + <string>Bound</string> + <key>wasdk_unbound</key> + <string>Unbound</string> + <key>wasdk_create_ccount</key> + <string>Create Account</string> + <key>wasdk_account_management</key> + <string>Account Management</string> + <key>wasdk_change_account</key> + <string>Change Account</string> + <key>wasdk_unbind_account</key> + <string>Unbind Account</string> + <key>wasdk_tip_warning</key> + <string>Warning</string> + <key>wasdk_tip_unbind_unique_third_party</key> + <string>If you unbind your unique third-party platform account, your data will be lost. Continue?</string> + <key>wasdk_tip_can_not_unbind</key> + <string>You can’t unbind the account.</string> + <key>wasdk_tip_create_account_lost_data</key> + <string>If you create another account but don’t bind it to a third-party account, your previous one’s data will be lost permanently. After the account binding, you can use your third-party platform’s account to log into the applications.</string> + <key>wasdk_tip_fail_change_account</key> + <string>Failed to change your account. Please try again later.</string> + <key>wasdk_tip_relog</key> + <string>Please relog into the application.</string> + <key>wasdk_tip_fail_access_account_data</key> + <string>Failed to access your account data. Please try again later.</string> + <key>wasdk_tip_bind_succ</key> + <string>Binded successfully!</string> + <key>wasdk_tip_bind_fail</key> + <string>Failed to bind. Please try again later.</string> + <key>wasdk_tip_bind_fail_other_user</key> + <string>This account has been bound to another user.</string> + <key>wasdk_tip_unbind_succ</key> + <string>Unbinded successfully!</string> + <key>wasdk_tip_unbind_fail</key> + <string>Failed to unbind. Please try again later.</string> + <key>wasdk_tip_create_user_fail</key> + <string>Failed to create a new user. Please try again later.</string> + <key>wasdk_drag_up_fresh</key> + <string>Click or drag up to load more</string> + <key>wasdk_no_more_data</key> + <string>No more data</string> + <key>wasdk_load_more</key> + <string>Loading ...</string> + <key>wasdk_pull_down_refresh</key> + <string>Pull down to refresh</string> + <key>wasdk_release_refresh</key> + <string>Release to refresh</string> + <key>wasdk_purchase</key> + <string>Purchase</string> + <key>wasdk_pay_exit_alert</key> + <string>Are you sure you want to cancel this purchase?</string> + <key>wasdk_notice</key> + <string>Notice</string> + <key>wasdk_jailbreak_not_purchase</key> + <string>You can not do purchase in a jailbreak device.</string> +</dict> +</plist> diff --git a/localizable/pt-BR.plist b/localizable/pt-BR.plist new file mode 100644 index 0000000..3e6188d --- /dev/null +++ b/localizable/pt-BR.plist @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>wasdk_install_btn</key> + <string>Instalar</string> + <key>wasdk_play_btn</key> + <string>Jogar</string> + <key>wasdk_info_btn</key> + <string>INFO</string> + <key>wasdk_app_btn</key> + <string>APP</string> + <key>wasdk_app_wall_guide_words</key> + <string>Clique aqui para abrir o menu popup</string> + <key>wasdk_sdk_version</key> + <string>Versão SDK</string> + <key>wasdk_patch_version</key> + <string>Versão Patch</string> + <key>wasdk_has_no_patch</key> + <string>Nenhum</string> + <key>wasdk_login</key> + <string>Entrar</string> + <key>wasdk_login_facebook</key> + <string>Facebook</string> + <key>wasdk_login_game_center</key> + <string>Game Center</string> + <key>wasdk_confirm</key> + <string>Confirmar</string> + <key>wasdk_cancel</key> + <string>Cancelar</string> + <key>wasdk_loading</key> + <string>Carregando</string> + <key>wasdk_visitor</key> + <string>Visitante</string> + <key>wasdk_bind</key> + <string>Vincular</string> + <key>wasdk_unbind</key> + <string>Desvincular</string> + <key>wasdk_bound</key> + <string>Vinculada</string> + <key>wasdk_unbound</key> + <string>Desvinculada</string> + <key>wasdk_create_ccount</key> + <string>Criar conta</string> + <key>wasdk_account_management</key> + <string>Gerenciar conta</string> + <key>wasdk_change_account</key> + <string>Mudar conta</string> + <key>wasdk_unbind_account</key> + <string>Desvincular conta</string> + <key>wasdk_tip_warning</key> + <string>Aviso</string> + <key>wasdk_tip_unbind_unique_third_party</key> + <string>Se você desvincular sua conta, seus dados serão apagados. Continuar?</string> + <key>wasdk_tip_can_not_unbind</key> + <string>Você não pode desvincular esta conta.</string> + <key>wasdk_tip_create_account_lost_data</key> + <string>Se você criar outra conta mas não vincular, seus dados anteriores serão perdidos permanentemente. Após vincular sua conta, você poderá utilizá-la para logar no aplicativo.</string> + <key>wasdk_tip_fail_change_account</key> + <string>Falha em mudar sua conta. Por favor, tente mais tarde.</string> + <key>wasdk_tip_relog</key> + <string>Por favor faça login novamente.</string> + <key>wasdk_tip_fail_access_account_data</key> + <string>Falha ao acessar os dados da sua conta. Por favor tente mais tarde.</string> + <key>wasdk_tip_bind_succ</key> + <string>Vinculada com sucesso!</string> + <key>wasdk_tip_bind_fail</key> + <string>Falha ao vincular. Por favor tente mais tarde.</string> + <key>wasdk_tip_bind_fail_other_user</key> + <string>This account has been bound to another user.</string> + <key>wasdk_tip_unbind_succ</key> + <string>Unbinded successfully!</string> + <key>wasdk_tip_unbind_fail</key> + <string>Falha ao desvincular. Por favor tente mais tarde.</string> + <key>wasdk_tip_create_user_fail</key> + <string>Falha ao criar novo usuário. Por favor tente mais tarde.</string> + <key>wasdk_drag_up_fresh</key> + <string>Aperte ou deslize para saber mais</string> + <key>wasdk_no_more_data</key> + <string>Você chegou ao final da página</string> + <key>wasdk_load_more</key> + <string>Carregando ...</string> + <key>wasdk_pull_down_refresh</key> + <string>Deslize para baixo para atualizar</string> + <key>wasdk_release_refresh</key> + <string>Deslize para baixo para atualizar</string> + <key>wasdk_purchase</key> + <string>Recarregar</string> + <key>wasdk_pay_exit_alert</key> + <string>Você tem certeza que deseja cancelar esta compra?</string> + <key>wasdk_notice</key> + <string>Aviso</string> + <key>wasdk_jailbreak_not_purchase</key> + <string>proibido compras em telefones com jailbreak</string> +</dict> +</plist> diff --git a/localizable/ru.plist b/localizable/ru.plist new file mode 100644 index 0000000..4ff73bc --- /dev/null +++ b/localizable/ru.plist @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>wasdk_install_btn</key> + <string>Установка</string> + <key>wasdk_play_btn</key> + <string>Открыть</string> + <key>wasdk_info_btn</key> + <string>Инфо</string> + <key>wasdk_app_btn</key> + <string>Прилож</string> + <key>wasdk_app_wall_guide_words</key> + <string>Нажмите для вызова всплывающего меню</string> + <key>wasdk_sdk_version</key> + <string>Версия SDK</string> + <key>wasdk_patch_version</key> + <string>Версия патча</string> + <key>wasdk_has_no_patch</key> + <string>Нет</string> + <key>wasdk_login</key> + <string>Вход</string> + <key>wasdk_login_facebook</key> + <string>Facebook</string> + <key>wasdk_login_game_center</key> + <string>Игровой Центр</string> + <key>wasdk_login_vk</key> + <string>VK</string> + <key>wasdk_confirm</key> + <string>Подтвердить</string> + <key>wasdk_cancel</key> + <string>Отмена</string> + <key>wasdk_loading</key> + <string>Загрузка</string> + <key>wasdk_visitor</key> + <string>Посетитель</string> + <key>wasdk_bind</key> + <string>Привяз</string> + <key>wasdk_unbind</key> + <string>Отвяз</string> + <key>wasdk_bound</key> + <string>Привяз</string> + <key>wasdk_unbound</key> + <string>Отвяз</string> + <key>wasdk_create_ccount</key> + <string>Созд аккаунт</string> + <key>wasdk_account_management</key> + <string>Управление аккаунтом</string> + <key>wasdk_change_account</key> + <string>Смен аккаунт</string> + <key>wasdk_unbind_account</key> + <string>Отвязать учетную запись</string> + <key>wasdk_tip_warning</key> + <string>Предупреждение</string> + <key>wasdk_tip_unbind_unique_third_party</key> + <string>Если вы отвяжете вашу уникальную учетную запись внешней платформы, ваши данные будут утеряны. Продолжить?</string> + <key>wasdk_tip_can_not_unbind</key> + <string>Вы не можете отвязать учетную запись.</string> + <key>wasdk_tip_create_account_lost_data</key> + <string>Если вы создадите другую учетную запись и не привяжете ее к внешней учетной записи, ваши предыдущие данные будут утеряны навсегда. После привязки вашей учетной записи, вы сможете осуществлять вход в приложения с помощью учетных данных внешних платформ.</string> + <key>wasdk_tip_fail_change_account</key> + <string>Не удалось сменить учетную запись. Пожалуйста, попробуйте позже.</string> + <key>wasdk_tip_relog</key> + <string>Пожалуйста, войдите в приложение заново.</string> + <key>wasdk_tip_fail_access_account_data</key> + <string>Не удалось получить доступ к данным вашей учетной записи. Пожалуйста, попробуйте позже.</string> + <key>wasdk_tip_bind_succ</key> + <string>Привязка прошла успешно!</string> + <key>wasdk_tip_bind_fail</key> + <string>Не удалось выполнить привязку. Пожалуйста, попробуйте позже. </string> + <key>wasdk_tip_bind_fail_other_user</key> + <string>Эта учетная запись была привязана к другому пользователю.</string> + <key>wasdk_tip_unbind_succ</key> + <string>Отвязка прошла успешно! </string> + <key>wasdk_tip_unbind_fail</key> + <string>Не удалось выполнить отвязку. Пожалуйста, попробуйте позже.</string> + <key>wasdk_tip_create_user_fail</key> + <string>Не удалось создать нового пользователя. Пожалуйста, попробуйте позже.</string> + <key>wasdk_drag_up_fresh</key> + <string>Нажмите или перетяните сюда, чтобы загрузить еще.</string> + <key>wasdk_no_more_data</key> + <string>Больше информации нет</string> + <key>wasdk_load_more</key> + <string>Загрузка ...</string> + <key>wasdk_pull_down_refresh</key> + <string>Опустите вниз для обновления</string> + <key>wasdk_release_refresh</key> + <string>Отпустите для обновления</string> + <key>wasdk_purchase</key> + <string>Купить</string> + <key>wasdk_pay_exit_alert</key> + <string>Вы уверены, что хотите отменить эту покупку?</string> + <key>wasdk_notice</key> + <string>Уведомление</string> + <key>wasdk_jailbreak_not_purchase</key> + <string>Вы не можете совершать покупки на взломанном устройстве</string> +</dict> +</plist> diff --git a/localizable/zh-Hans.plist b/localizable/zh-Hans.plist new file mode 100644 index 0000000..728ef8b --- /dev/null +++ b/localizable/zh-Hans.plist @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>wasdk_install_btn</key> + <string>安装</string> + <key>wasdk_play_btn</key> + <string>打开</string> + <key>wasdk_info_btn</key> + <string>资讯</string> + <key>wasdk_app_btn</key> + <string>应用</string> + <key>wasdk_app_wall_guide_words</key> + <string>点击此处弹出菜单</string> + <key>wasdk_sdk_version</key> + <string>SDK版本</string> + <key>wasdk_patch_version</key> + <string>补丁版本</string> + <key>wasdk_has_no_patch</key> + <string>无</string> + <key>wasdk_login</key> + <string>登录</string> + <key>wasdk_login_facebook</key> + <string>Facebook</string> + <key>wasdk_login_game_center</key> + <string>Game Center</string> + <key>wasdk_login_vk</key> + <string>VK</string> + <key>wasdk_confirm</key> + <string>确定</string> + <key>wasdk_cancel</key> + <string>取消</string> + <key>wasdk_loading</key> + <string>加载中</string> + <key>wasdk_visitor</key> + <string>访客</string> + <key>wasdk_bind</key> + <string>绑定</string> + <key>wasdk_unbind</key> + <string>解绑</string> + <key>wasdk_bound</key> + <string>已绑定</string> + <key>wasdk_unbound</key> + <string>未绑定</string> + <key>wasdk_create_ccount</key> + <string>新建账户</string> + <key>wasdk_account_management</key> + <string>账户管理</string> + <key>wasdk_change_account</key> + <string>切换账户</string> + <key>wasdk_unbind_account</key> + <string>解绑账户</string> + <key>wasdk_tip_warning</key> + <string>警告</string> + <key>wasdk_tip_unbind_unique_third_party</key> + <string>解绑唯一已绑定的第三方平台账户会导致账户数据丢失,是否确定解绑?</string> + <key>wasdk_tip_can_not_unbind</key> + <string>该账户不可解绑。</string> + <key>wasdk_tip_create_account_lost_data</key> + <string>如果没有绑定第三方平台账户,新建用户会导致数据丢失,且无法找回;如果已经绑定了第三方平台账户,可以使用第三方平台账户登录</string> + <key>wasdk_tip_fail_change_account</key> + <string>切换账户登录失败,请稍后重试</string> + <key>wasdk_tip_relog</key> + <string>需要重新登录</string> + <key>wasdk_tip_fail_access_account_data</key> + <string>获取账号失败,请稍后重试。</string> + <key>wasdk_tip_bind_succ</key> + <string>绑定成功!</string> + <key>wasdk_tip_bind_fail</key> + <string>绑定失败,请稍后重试</string> + <key>wasdk_tip_bind_fail_other_user</key> + <string>此平台帐号已经绑定了其它用户</string> + <key>wasdk_tip_unbind_succ</key> + <string>解绑成功!</string> + <key>wasdk_tip_unbind_fail</key> + <string>解绑失败,请稍后重试</string> + <key>wasdk_tip_create_user_fail</key> + <string>创建新用户失败,请稍后重试</string> + <key>wasdk_drag_up_fresh</key> + <string>点击或上拉加载更多</string> + <key>wasdk_no_more_data</key> + <string>没有更多</string> + <key>wasdk_load_more</key> + <string>加载 ...</string> + <key>wasdk_pull_down_refresh</key> + <string>下拉刷新</string> + <key>wasdk_release_refresh</key> + <string>放开刷新</string> + <key>wasdk_purchase</key> + <string>充值</string> + <key>wasdk_pay_exit_alert</key> + <string>您确定要退出支付吗?</string> + <key>wasdk_notice</key> + <string>注意</string> + <key>wasdk_jailbreak_not_purchase</key> + <string>您不能在越狱的机器上进行购买 </string> +</dict> +</plist> -- Gitblit v1.8.0