diff --git a/MTS.xcodeproj/project.pbxproj b/MTS.xcodeproj/project.pbxproj deleted file mode 100644 index 66e11b4..0000000 --- a/MTS.xcodeproj/project.pbxproj +++ /dev/null @@ -1,379 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - A4313E7C2283DB9F001644BE /* MTS.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4313E7B2283DB9F001644BE /* MTS.swift */; }; - A487D56C22A192C200FE5DE7 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = A487D56A22A192C200FE5DE7 /* LICENSE */; }; - A487D56D22A192C200FE5DE7 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = A487D56B22A192C200FE5DE7 /* README.md */; }; - A487D56F22A8850F00FE5DE7 /* MtsApiOplCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = A487D56E22A8850F00FE5DE7 /* MtsApiOplCommands.swift */; }; - A487D57122A8856C00FE5DE7 /* MtsApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = A487D57022A8856C00FE5DE7 /* MtsApi.swift */; }; - A487D57322A885AB00FE5DE7 /* MtsApiCommunicationKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = A487D57222A885AB00FE5DE7 /* MtsApiCommunicationKeys.swift */; }; - A487D57522A885E700FE5DE7 /* MtsApiLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = A487D57422A885E700FE5DE7 /* MtsApiLogin.swift */; }; - A487D57722A8861F00FE5DE7 /* MtsApiRoomToNodeIds.swift in Sources */ = {isa = PBXBuildFile; fileRef = A487D57622A8861F00FE5DE7 /* MtsApiRoomToNodeIds.swift */; }; - A487D57922A8864700FE5DE7 /* MtsApiFirmware.swift in Sources */ = {isa = PBXBuildFile; fileRef = A487D57822A8864700FE5DE7 /* MtsApiFirmware.swift */; }; - A4E4FB1E2277FE5400A00744 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4E4FB1D2277FE5400A00744 /* AppDelegate.swift */; }; - A4E4FB202277FE5400A00744 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4E4FB1F2277FE5400A00744 /* ViewController.swift */; }; - A4E4FB252277FE5900A00744 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A4E4FB242277FE5900A00744 /* Assets.xcassets */; }; - A4E4FB3A227A903000A00744 /* UDP.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4E4FB39227A903000A00744 /* UDP.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - A4313E7B2283DB9F001644BE /* MTS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MTS.swift; sourceTree = ""; }; - A487D56A22A192C200FE5DE7 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - A487D56B22A192C200FE5DE7 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - A487D56E22A8850F00FE5DE7 /* MtsApiOplCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MtsApiOplCommands.swift; sourceTree = ""; }; - A487D57022A8856C00FE5DE7 /* MtsApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MtsApi.swift; sourceTree = ""; }; - A487D57222A885AB00FE5DE7 /* MtsApiCommunicationKeys.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MtsApiCommunicationKeys.swift; sourceTree = ""; }; - A487D57422A885E700FE5DE7 /* MtsApiLogin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MtsApiLogin.swift; sourceTree = ""; }; - A487D57622A8861F00FE5DE7 /* MtsApiRoomToNodeIds.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MtsApiRoomToNodeIds.swift; sourceTree = ""; }; - A487D57822A8864700FE5DE7 /* MtsApiFirmware.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MtsApiFirmware.swift; sourceTree = ""; }; - A4E4FB1A2277FE5400A00744 /* MTS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MTS.app; sourceTree = BUILT_PRODUCTS_DIR; }; - A4E4FB1D2277FE5400A00744 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - A4E4FB1F2277FE5400A00744 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - A4E4FB242277FE5900A00744 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - A4E4FB292277FE5900A00744 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A4E4FB39227A903000A00744 /* UDP.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UDP.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - A4E4FB172277FE5400A00744 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - A4313E772283DB6F001644BE /* MTS */ = { - isa = PBXGroup; - children = ( - A4313E7B2283DB9F001644BE /* MTS.swift */, - ); - path = MTS; - sourceTree = ""; - }; - A4313E782283DB85001644BE /* AppEntities */ = { - isa = PBXGroup; - children = ( - A487D57022A8856C00FE5DE7 /* MtsApi.swift */, - A487D57222A885AB00FE5DE7 /* MtsApiCommunicationKeys.swift */, - A487D57822A8864700FE5DE7 /* MtsApiFirmware.swift */, - A487D57422A885E700FE5DE7 /* MtsApiLogin.swift */, - A487D56E22A8850F00FE5DE7 /* MtsApiOplCommands.swift */, - A487D57622A8861F00FE5DE7 /* MtsApiRoomToNodeIds.swift */, - ); - name = AppEntities; - path = MTS; - sourceTree = ""; - }; - A4E4FB112277FE5400A00744 = { - isa = PBXGroup; - children = ( - A487D56A22A192C200FE5DE7 /* LICENSE */, - A487D56B22A192C200FE5DE7 /* README.md */, - A4E4FB1C2277FE5400A00744 /* MTS */, - A4313E782283DB85001644BE /* AppEntities */, - A4313E772283DB6F001644BE /* MTS */, - A4E4FB38227A900F00A00744 /* UDP */, - A4E4FB1B2277FE5400A00744 /* Products */, - ); - sourceTree = ""; - }; - A4E4FB1B2277FE5400A00744 /* Products */ = { - isa = PBXGroup; - children = ( - A4E4FB1A2277FE5400A00744 /* MTS.app */, - ); - name = Products; - sourceTree = ""; - }; - A4E4FB1C2277FE5400A00744 /* MTS */ = { - isa = PBXGroup; - children = ( - A4E4FB1D2277FE5400A00744 /* AppDelegate.swift */, - A4E4FB1F2277FE5400A00744 /* ViewController.swift */, - A4E4FB242277FE5900A00744 /* Assets.xcassets */, - A4E4FB292277FE5900A00744 /* Info.plist */, - ); - path = MTS; - sourceTree = ""; - }; - A4E4FB38227A900F00A00744 /* UDP */ = { - isa = PBXGroup; - children = ( - A4E4FB39227A903000A00744 /* UDP.swift */, - ); - path = UDP; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - A4E4FB192277FE5400A00744 /* MTS */ = { - isa = PBXNativeTarget; - buildConfigurationList = A4E4FB2C2277FE5900A00744 /* Build configuration list for PBXNativeTarget "MTS" */; - buildPhases = ( - A4E4FB162277FE5400A00744 /* Sources */, - A4E4FB172277FE5400A00744 /* Frameworks */, - A4E4FB182277FE5400A00744 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = MTS; - productName = MTS; - productReference = A4E4FB1A2277FE5400A00744 /* MTS.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - A4E4FB122277FE5400A00744 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1020; - LastUpgradeCheck = 1020; - ORGANIZATIONNAME = "Rand Dow"; - TargetAttributes = { - A4E4FB192277FE5400A00744 = { - CreatedOnToolsVersion = 10.2.1; - }; - }; - }; - buildConfigurationList = A4E4FB152277FE5400A00744 /* Build configuration list for PBXProject "MTS" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = A4E4FB112277FE5400A00744; - productRefGroup = A4E4FB1B2277FE5400A00744 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - A4E4FB192277FE5400A00744 /* MTS */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - A4E4FB182277FE5400A00744 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A487D56D22A192C200FE5DE7 /* README.md in Resources */, - A487D56C22A192C200FE5DE7 /* LICENSE in Resources */, - A4E4FB252277FE5900A00744 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - A4E4FB162277FE5400A00744 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A487D57322A885AB00FE5DE7 /* MtsApiCommunicationKeys.swift in Sources */, - A4E4FB202277FE5400A00744 /* ViewController.swift in Sources */, - A487D57722A8861F00FE5DE7 /* MtsApiRoomToNodeIds.swift in Sources */, - A4E4FB3A227A903000A00744 /* UDP.swift in Sources */, - A487D57922A8864700FE5DE7 /* MtsApiFirmware.swift in Sources */, - A487D57522A885E700FE5DE7 /* MtsApiLogin.swift in Sources */, - A4E4FB1E2277FE5400A00744 /* AppDelegate.swift in Sources */, - A487D56F22A8850F00FE5DE7 /* MtsApiOplCommands.swift in Sources */, - A487D57122A8856C00FE5DE7 /* MtsApi.swift in Sources */, - A4313E7C2283DB9F001644BE /* MTS.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - A4E4FB2A2277FE5900A00744 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = J27945M9KG; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - A4E4FB2B2277FE5900A00744 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = J27945M9KG; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - A4E4FB2D2277FE5900A00744 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = MTS/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = net.randix.MTS; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - A4E4FB2E2277FE5900A00744 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = MTS/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = net.randix.MTS; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - A4E4FB152277FE5400A00744 /* Build configuration list for PBXProject "MTS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A4E4FB2A2277FE5900A00744 /* Debug */, - A4E4FB2B2277FE5900A00744 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - A4E4FB2C2277FE5900A00744 /* Build configuration list for PBXNativeTarget "MTS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A4E4FB2D2277FE5900A00744 /* Debug */, - A4E4FB2E2277FE5900A00744 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = A4E4FB122277FE5400A00744 /* Project object */; -} diff --git a/MTS.xcodeproj/project.xcworkspace/xcuserdata/rand.xcuserdatad/UserInterfaceState.xcuserstate b/MTS.xcodeproj/project.xcworkspace/xcuserdata/rand.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 030bee8..0000000 Binary files a/MTS.xcodeproj/project.xcworkspace/xcuserdata/rand.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/MTS.xcodeproj/xcuserdata/rand.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/MTS.xcodeproj/xcuserdata/rand.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index fe2b454..0000000 --- a/MTS.xcodeproj/xcuserdata/rand.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/MTS/AppDelegate.swift b/MTS/AppDelegate.swift deleted file mode 100644 index 800688e..0000000 --- a/MTS/AppDelegate.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// AppDelegate.swift -// MTS -// -// Created by Rand Dow on 4/29/19. -// Copyright © 2019 Rand Dow. All rights reserved. -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - var mvc: UIViewController? - var mnc: UINavigationController? - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - - mvc = ViewController() - mnc = UINavigationController(rootViewController: mvc!) - window = UIWindow(frame: UIScreen.main.bounds) - if let window = window { - window.rootViewController = mnc - window.makeKeyAndVisible() - } - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(_ application: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(_ application: UIApplication) { - // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(_ application: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(_ application: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } - - -} - diff --git a/MTS/Assets.xcassets/AppIcon.appiconset/Contents.json b/MTS/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d8db8d6..0000000 --- a/MTS/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x" - }, - { - "idiom" : "ios-marketing", - "size" : "1024x1024", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/MTS/Assets.xcassets/Contents.json b/MTS/Assets.xcassets/Contents.json deleted file mode 100644 index da4a164..0000000 --- a/MTS/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/MTS/Info.plist b/MTS/Info.plist deleted file mode 100644 index 2bd4818..0000000 --- a/MTS/Info.plist +++ /dev/null @@ -1,47 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - MTS - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - - UIMainStoryboardFile - - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/MTS/MTS.swift b/MTS/MTS.swift deleted file mode 100644 index 5104255..0000000 --- a/MTS/MTS.swift +++ /dev/null @@ -1,396 +0,0 @@ -// -// MTS.swift -// MTS -// -// Created by Rand Dow on 5/1/19. -// Copyright © 2019 Rand Dow. All rights reserved. - -import Foundation -import Network - -// helper functions -func MTSconvert(_ from: MTSMessage) throws -> Data { - return try! JSONEncoder().encode(from) -} - -func MTSconvert(_ from: Data) throws -> MTSMessage { - return try! JSONDecoder().decode(MTSMessage.self, from: from) -} - -// primary message structure -struct MTSMessage: Codable { - var route: Int - var jwt: String - var data: Data - var reply: Bool - - init(route: MTSRequest, jwt: String, data: Data, reply: Bool = false) { - self.route = route.rawValue - self.jwt = jwt - self.data = data - self.reply = reply - } -} - -class MTSServer { - - private let log: (_ log: String) -> Void - public let port: UInt16 - private let mtsConnect: (_ client: MTSClient) -> Void - private let mtsReceive: (_ from: MTSClient, _ message: MTSMessage) -> Void - private let mtsDisconnect: (_ client: MTSClient) -> Void - private let mtsConvert: (_ log: (_ log: String) -> Void, _ mtsMessage: MTSMessage) -> AnyObject - - private var useTLS = false - private var certificate: Data? - private var clientCertRequired = false - - private var listener: NWListener? - public private(set) var clients: [MTSClient] - - init(log: @escaping (_ log: String) -> Void, port: UInt16, - mtsConnect: @escaping (_ client: MTSClient) -> Void, - mtsReceive: @escaping (_ from: MTSClient, _ receive: MTSMessage) -> Void, - mtsDisconnect: @escaping (_ from: MTSClient) -> Void, - mtsConvert: @escaping (_ log: (_ log: String) -> Void, _ mtsMessage: MTSMessage) -> AnyObject) { - self.log = log - self.port = port - self.mtsConnect = mtsConnect - self.mtsReceive = mtsReceive - self.mtsDisconnect = mtsDisconnect - self.mtsConvert = mtsConvert - clients = [] - } - - @discardableResult - func withTLS(certificate: Data, clientCertificateRequired: Bool) -> MTSServer { - useTLS = true - self.certificate = certificate - clientCertRequired = clientCertificateRequired - return self - } - - func clientCertificateRequired(_ clientCertificateRequired: Bool) { - clientCertRequired = clientCertificateRequired - } - - @discardableResult - func start() -> MTSServer { - var p: NWParameters - if useTLS { - p = createTLSParameters(allowInsecure: true, queue: .main) - } else { - p = NWParameters.tcp - } - p.allowLocalEndpointReuse = true - - listener = try! NWListener(using: p, on: NWEndpoint.Port(rawValue: port)!) - listener!.stateUpdateHandler = { (newState) in - switch newState { - case .cancelled: - self.log("cancelled") - break - case .failed(let error): - self.log("failed \(error)") - break - case .ready: - self.log("ready") - break - case .setup: - self.log("setup") - break - case .waiting(let error): - self.log("waiting \(error)") - break - default: - self.log("unknown \(newState)") - break - } - } - listener!.newConnectionHandler = { (newConnection) in - // Handle inbound connections - let client = MTSClient(log: self.log, url: newConnection.endpoint.debugDescription, mtsConnect: self.mtsConnect, mtsReceive: self.mtsReceive, mtsDisconnect: self.mtsDisconnectServer, mtsConvert: self.mtsConvert, connection: newConnection) - client.connect() - } - return self - } - - func stop() -> Void { - - } - - func mtsDisconnectServer(_ client: MTSClient) { - // TODO clean up, then - mtsDisconnect(client) - } - - func send(_ message: MTSMessage, to: MTSClient) -> Void { - - } - - func createTLSParameters(allowInsecure: Bool, queue: DispatchQueue) -> NWParameters { - let options = NWProtocolTLS.Options() - sec_protocol_options_set_verify_block(options.securityProtocolOptions, { (sec_protocol_metadata, sec_trust, sec_protocol_verify_complete) in - let trust = sec_trust_copy_ref(sec_trust).takeRetainedValue() - var error: CFError? - if SecTrustEvaluateWithError(trust, &error) { - sec_protocol_verify_complete(true) - } else { - // TODO: determine if client cert is required and present - // self.clientCertRequired - - if allowInsecure == true { - sec_protocol_verify_complete(true) - } else { - sec_protocol_verify_complete(false) - } - } - }, queue) - return NWParameters(tls: options) - } -} - -class MTSClient { - - private let log: (_ log: String) -> Void - public let host: String - public let port: UInt16 - private let mtsConnect: (_ client: MTSClient) -> Void - private let mtsReceive: (_ client: MTSClient, _ receive: MTSMessage) -> Void - private let mtsDisconnect: (_ client: MTSClient) -> Void - private let mtsConvert: (_ log: (_ log: String) -> Void, _ mtsMessage: MTSMessage) -> AnyObject - private let isServer = false - - private var connection: NWConnection? - public private(set) var connected = false - - private var useTLS = false - private var clientCertificate: Data? - - private var proxyHostname: String? - private var proxyPort: UInt16? - private var proxyUser: String? - private var proxyPassword: String? - private var proxyTransactComplete = false - - private let await = DispatchSemaphore(value: 0) - private var waiting = false - - private var buffer = Data() - private var expected = 0 - - init(log: @escaping (_ log: String) -> Void, url: String, - mtsConnect: @escaping (_ client: MTSClient) -> Void, - mtsReceive: @escaping (_ client: MTSClient, _ receive: MTSMessage) -> Void, - mtsDisconnect: @escaping (_ client: MTSClient) -> Void, - mtsConvert: @escaping (_ log: (_ log: String) -> Void, _ mtsMessage: MTSMessage) -> AnyObject, - connection: NWConnection? = nil) { - - self.log = log - let result = url.split(separator: ":") - self.host = String(result[0]) - self.port = UInt16(String(result[1]))! - self.mtsConnect = mtsConnect - self.mtsReceive = mtsReceive - self.mtsDisconnect = mtsDisconnect - self.mtsConvert = mtsConvert - self.connection = connection - } - - @discardableResult - func withTLS(_ certificate: Data?) -> MTSClient { - useTLS = true - clientCertificate = certificate - return self - } - - @discardableResult - func withProxy(_ ProxyURL: String, ProxyUser: String?, ProxyPassword: String?) -> MTSClient { - let s = ProxyURL.components(separatedBy: ":") - proxyHostname = s[0] - proxyPort = UInt16(s[1])! - proxyUser = ProxyUser - proxyPassword = ProxyPassword - return self - } - - @discardableResult - func connect() -> MTSClient { - log("connect to \(host):\(port) (TLS=\(useTLS))") - // TODO client cert not implemented - if connection != nil { - // this was called from the server upon connection - - } else { - // TODO proxy not implemented - let myHost = NWEndpoint.Host(host) - let myPort = NWEndpoint.Port(rawValue: UInt16(port))! - if useTLS { - connection = NWConnection(host: myHost, port: myPort, using: createTLSParameters(allowInsecure: true, queue: .main)) - } else { - connection = NWConnection(host: myHost, port: myPort, using: .tcp) - } - } - connection!.stateUpdateHandler = stateDidChange - setupReceive(on: connection) - connection!.start(queue: .main) - return self - } - - func stateDidChange(to newState: NWConnection.State) { - switch (newState) { - case .ready: - // Handle connection established - log("connected") - self.connected = true - mtsConnect(self) - break - case .waiting(let error): - // Handle connection waiting for network - log("waiting \(error)") - break - case .failed(let error): - // Handle fatal connection error - log("failed \(error)") - break - case .preparing: - // Handle fatal connection error - log("preparing") - break - default: - log("default \(newState)") - break - } - } - - func setupReceive(on connection: NWConnection?) { - connection!.receive(minimumIncompleteLength: 1, maximumLength: 65536) { (data, contentContext, isComplete, error) in - if var data = data, !data.isEmpty { - // … process the data … - print("receive") - self.log("did receive \(data.count) \(self.expected) bytes") - if (self.buffer.count == 0 && self.expected == 0) { - self.expected = Int(data.removeFirst()) - self.expected |= Int(data.removeFirst()) << 8 - self.expected |= Int(data.removeFirst()) << 16 - self.expected |= Int(data.removeFirst()) << 24 - self.log("expected: \(self.expected) bytes") - } - self.buffer.append(data) - self.log("have \(self.buffer.count) expected \(self.expected)") - if (self.buffer.count == self.expected) { - let jsonDecoder = JSONDecoder() - let mtsMessage = try! jsonDecoder.decode(MTSMessage.self, from: self.buffer) - print("waiting: \(self.waiting)") - if (self.waiting && mtsMessage.reply) { - self.waitReceiver(mtsMessage) - } else { - self.mtsReceive(self, mtsMessage) - } - self.buffer = Data() - self.expected = 0 - } - } - if isComplete { - // … handle end of stream … - self.stop("EOF") - // todo -- tell server if we are on server - // todo -- tell application - } else if let error = error { - // … handle error … - print("error") - self.connectionFailed(error: error) - // todo -- tell server if we are on server - // todo -- tell application - } else { - print("restart receiver") - self.setupReceive(on: connection) - } - } - } - - func stop(_ status: String) { - print("stopping \(status)") - sendEndOfStream() - } - - func connectionFailed(error: NWError?) { - print("error \(String(describing: error))") - } - - func send(_ data: Data) { - print("send") - let len = data.count; - var p: Data = Data() - p.append(UInt8( len & 0xff)) - p.append(UInt8((len >> 8) & 0xff)) - p.append(UInt8((len >> 16) & 0xff)) - p.append(UInt8( len >> 24)) - connection!.send(content: p+data, completion: .contentProcessed(({ (error) in - if let error = error { - print("error \(String(describing: error))") - self.connectionFailed(error: error) - } - print("processed") - }))) - print("send finished") - } - - func send(_ msg: MTSMessage) { - log("send \(msg)") - let data = try! MTSconvert(msg) - send(data) - } - - var obj: AnyObject? - func sendWait(_ data: MTSMessage) -> AnyObject { - print("sendwait") - waiting = true - - DispatchQueue.global(qos: .background).async { - print("This is run on the background queue") - self.send(data); - self.await.wait() - - DispatchQueue.main.async { - print("This is run on the main queue, after the previous code in outer block") - - } - } - return obj! - } - func waitReceiver(_ mtsMessage: MTSMessage) { - log("mtsMessage \(mtsMessage)") - print(mtsMessage.route) - obj = mtsConvert(log, mtsMessage) - waiting = false - await.signal() - } - - // unused? - func sendEndOfStream() { - connection!.send(content: nil, contentContext: .defaultStream, isComplete: true, completion: .contentProcessed({ error in - if let error = error { - self.connectionFailed(error: error) - } - })) - } - - func createTLSParameters(allowInsecure: Bool, queue: DispatchQueue) -> NWParameters { - let options = NWProtocolTLS.Options() - sec_protocol_options_set_verify_block(options.securityProtocolOptions, { (sec_protocol_metadata, sec_trust, sec_protocol_verify_complete) in - let trust = sec_trust_copy_ref(sec_trust).takeRetainedValue() - var error: CFError? - if SecTrustEvaluateWithError(trust, &error) { - sec_protocol_verify_complete(true) - } else { - if allowInsecure == true { - sec_protocol_verify_complete(true) - } else { - sec_protocol_verify_complete(false) - } - } - }, queue) - return NWParameters(tls: options) - } -} diff --git a/MTS/MtsApi.swift b/MTS/MtsApi.swift deleted file mode 100644 index 0dc3b05..0000000 --- a/MTS/MtsApi.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// MtsApi.swift -// MTS -// -// Created by Rand Dow on 6/5/19. -// Copyright © 2019 Rand Dow. All rights reserved. -// - -import Foundation - -enum MTSRequest: Int { - case MtsOPL = 1 // <-> - - case MtsLogin = 2 // -> - case MtsLoginResponse = 3 // <- - - case MtsCommunicationKeyReq = 4 // -> - case MtsCommunicationKeys = 5 // <- - - case MtsRoomsMap = 7 // <-> - - case MtsOplCommands = 8 // <-> - - case MtsFirmware = 9 // <-> -} - -func mtsConvertWait(_ log: (_ log: String) -> Void, mtsMessage: MTSMessage) -> AnyObject { - let decoder = JSONDecoder() - var obj: AnyObject? - let json = String(data: mtsMessage.data, encoding: .utf8)! - print("json=\(json)") - log("\(json)") - switch MTSRequest(rawValue: mtsMessage.route)! { - case .MtsCommunicationKeys: - obj = try! decoder.decode(MtsCommunicationKeys.self, from: mtsMessage.data) as AnyObject - break; - case .MtsFirmware: - obj = try! decoder.decode(MtsFirmware.self, from: mtsMessage.data) as AnyObject - break - case .MtsLoginResponse: - obj = try! decoder.decode(MtsLoginResponse.self, from: mtsMessage.data) as AnyObject - break - case .MtsRoomsMap: - obj = try! decoder.decode([MtsRoomToNodeIds].self, from: mtsMessage.data) as AnyObject - break; - case .MtsOplCommands: - obj = try! decoder.decode(MtsOPLCommands.self, from: mtsMessage.data) as AnyObject - break - default: - break - } - return obj! -} diff --git a/MTS/MtsApiCommunicationKeys.swift b/MTS/MtsApiCommunicationKeys.swift deleted file mode 100644 index 507cf06..0000000 --- a/MTS/MtsApiCommunicationKeys.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// MtsApiCommunicationKeys.swift -// MTS -// -// Created by Rand Dow on 6/5/19. -// Copyright © 2019 Rand Dow. All rights reserved. -// - -import Foundation - - -enum KeyType: Int { - case KOPLRMSEvent = 1 - case KOPLNetwork = 2 - - case KOPLAccess = 3 - case KOPLHostMessage = 4 - case KSiteFactory = 5 - case KSite = 6 - case KSiteEncrypted = 7 - case KMiFarePlusSite = 8 - case KMiFarePlusKeyA = 9 - case KMiFarePlusKeyB = 10 - case KMiFareUltraLightC = 11 -} - -struct MtsCommunicationKeys : Codable { - var Keys: Dictionary -} - -func MTSConvert(_ data: MtsCommunicationKeys) throws -> Data { - return try! JSONEncoder().encode(data) -} diff --git a/MTS/MtsApiFirmware.swift b/MTS/MtsApiFirmware.swift deleted file mode 100644 index 3eaa436..0000000 --- a/MTS/MtsApiFirmware.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// MtsApiFirmware.swift -// MTS -// -// Created by Rand Dow on 6/5/19. -// Copyright © 2019 Rand Dow. All rights reserved. -// - -import Foundation - -struct MtsFirmwareReq : Codable { - var Offset: Int - var MaximumSegmentSize: Int -} - -struct MtsFirmware : Codable { - var Offset: Int - var SegmentSize: Int - var IsFinal : Bool - var Data: Data -} - -func MTSConvert(_ data: MtsFirmwareReq) throws -> Data { - return try! JSONEncoder().encode(data) -} - -func MTSConvert(_ data: MtsFirmware) throws -> Data { - return try! JSONEncoder().encode(data) -} diff --git a/MTS/MtsApiLogin.swift b/MTS/MtsApiLogin.swift deleted file mode 100644 index b585fad..0000000 --- a/MTS/MtsApiLogin.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// MtsApiLogin.swift -// MTS -// -// Created by Rand Dow on 6/5/19. -// Copyright © 2019 Rand Dow. All rights reserved. -// - -import Foundation - -enum AppId: Int { - case RMSServer = 1 - case RMSRmNd - case BTPP -} - -struct MtsLogin : Codable { - var Username: String - var Password: String - var AppId: Int - var AppKey: Data - - init(user: String, password: String, appId: AppId, appKey: Data) { - Username = user - Password = password - AppId = appId.rawValue - AppKey = appKey - } -} - -struct MtsLoginResponse : Codable { - var NodeAuth: String - var ClientCertificate: Data? - var ServerCertInfo: String - var MtuBluetooth: Int - var MtuOpl: Int - var MtuMts: Int -} - -func MTSConvert(_ data: MtsLogin) throws -> Data { - return try! JSONEncoder().encode(data) -} - -func MTSConvert(_ data: MtsLoginResponse) throws -> Data { - return try! JSONEncoder().encode(data) -} diff --git a/MTS/MtsApiOplCommands.swift b/MTS/MtsApiOplCommands.swift deleted file mode 100644 index bc11412..0000000 --- a/MTS/MtsApiOplCommands.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// MtsApiOplCommands.swift -// MTS -// -// Created by Rand Dow on 6/5/19. -// Copyright © 2019 Rand Dow. All rights reserved. -// - -import Foundation - -enum OPLListType:Int { - case Ping = 1 - case RoutingTableRequest = 2 - case Enroll = 3 - case ClearEnroll = 4 -} - -struct MtsOPLCommands : Codable { - var OPLLists: Dictionary -} - -func MTSConvert(_ data: MtsOPLCommands) throws -> Data { - return try! JSONEncoder().encode(data) -} diff --git a/MTS/MtsApiRoomToNodeIds.swift b/MTS/MtsApiRoomToNodeIds.swift deleted file mode 100644 index 617b56d..0000000 --- a/MTS/MtsApiRoomToNodeIds.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// MtsApiRoomToNodeIds.swift -// MTS -// -// Created by Rand Dow on 6/5/19. -// Copyright © 2019 Rand Dow. All rights reserved. -// - -import Foundation - -enum NodeIdSubNetOffset : Int { - case RoomNode = 0 - case Repeater1 = 1 - case Repeater2 = 2 - case Lock1 = 3 - case Lock2 = 4 - case Lock3 = 5 - case Lock4 = 6 - case Lock5 = 7 -} - -// Request -struct MtsRoom : Codable { - var RoomName: String - - init(_ room: String) { - RoomName = room - } -} - -// Response -struct MtsRoomToNodeIds : Codable { - var RoomName: String - var NodeIds: [Int] -} - -func MTSConvert(_ data: MtsRoom) throws -> Data { - return try! JSONEncoder().encode(data) -} - -func MTSConvert(_ data: [MtsRoomToNodeIds]) throws -> Data { - return try! JSONEncoder().encode(data) -} - - diff --git a/MTS/ViewController.swift b/MTS/ViewController.swift deleted file mode 100644 index 9e79cbd..0000000 --- a/MTS/ViewController.swift +++ /dev/null @@ -1,371 +0,0 @@ -// -// ViewController.swift -// MTS -// -// Created by Rand Dow on 4/29/19. -// Copyright © 2019 Rand Dow. All rights reserved. -// - -import UIKit -import Network - -class ViewController: UIViewController { - - var client: MTSClient? - var useTls = true - - // RMSRmNd Data - var roomToNodeIds: MtsRoomToNodeIds? - - // PP MTS Test data - var loginResponse: MtsLoginResponse? - var jwt: String? - var loginWithCertDone = false - var roomMap: [MtsRoomToNodeIds]? - - var firmware = Data() - let fwSegmentSize = 16*1024 - var firmwareSize = 0 - - // below are the UI stuff - var screenWidth: Int? - var screenHeight: Int? - - let border = 5 - let topOffset = 88 - let bottomOffset = 20 - - let inputHeight = 31 // standard height for UITextField and UIButton - let inputWidth = 250 - let buttonWidth = 100 - let chBoxWidth = 22 - let interChk = 7 - let tlsLabWidth = 35 - let interButton = 20 - - var tfURL: UITextField? - var tfUser: UITextField? - var tfPwd: UITextField? - var tfRoomId: UITextField? - - var btConn: UIButton? - var tlsLab: UIButton? - var ckBox: UIButton? - var btPing: UIButton? - var btDisconn: UIButton? - var tView: UITextView? - - - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loaditjjsfnrhng the view. - self.view.backgroundColor = .lightGray - let screenRect = UIScreen.main.bounds - screenWidth = Int(screenRect.size.width) - screenHeight = Int(screenRect.size.height) - print(screenWidth!, screenHeight!) - - createSubviews() - displayConnect() - } - - @objc func buttonConnect(sender: UIButton!) { - - if (useTls) { - Log("Connecting (with TLS) ...") - } else { - Log("Connecting (no TLS) ...") - } - - client = MTSClient(log: Log, url: tfURL!.text!, mtsConnect: mtsConnect, mtsReceive: mtsReceive, mtsDisconnect: mtsDisconnect, mtsConvert: mtsConvertWait) - if (useTls) { - client!.withTLS(nil) - } - client!.connect() - } - - // called when the connection is established - func mtsConnect(_ client: MTSClient) - { - var mtsMessage: MTSMessage - if (useTls) { - Log("login to FrontDeskServer as Portable Programmer") - // connected to FrontDeskServer -- get PP type stuff - let login = MtsLogin(user:tfUser!.text!, password:tfPwd!.text!, appId:AppId.RMSRmNd, appKey:Data()) - let data = try! MTSConvert(login) - mtsMessage = MTSMessage(route: MTSRequest.MtsLogin, jwt: "jwt", data: data) - if let lr = loginResponse { - if lr.ClientCertificate != nil { - loginWithCertDone = true - } - } - //let loginResponse = self.client!.sendWait(mtsMessage) as! MtsLoginResponse - - } else { - // connected to RMSServer -- get Room NodeIds - Log("connect to RMSServer and get room nodeIds") - let data = try! MTSConvert(MtsRoom(tfRoomId!.text!)) - mtsMessage = MTSMessage(route: MTSRequest.MtsRoomsMap, jwt: "jwt", data: data) - } - self.client!.send(mtsMessage) - displayConnected() - } - - func mtsDisconnect(_ client: MTSClient) { - Log("Disconnected") - } - - // This is the main driver of the RoomNode app - // The PP will have a UI - func mtsReceive(_ client: MTSClient, _ mtsMessage: MTSMessage) { - Log("receive \(mtsMessage)") - let decoder = JSONDecoder() - - // OPL = 1 <-> - // Login = 2 -> - // LoginResponse = 3 <- - // CommunicationKeyReq = 4 -> - // PPCommunicationKeys = 5 <- - // RMSCommunicationKeys = 6 <- - // RoomsMap = 7 <-> - // OplCommands = 8 <-> - // Firmware = 9 <-> - switch MTSRequest(rawValue: mtsMessage.route)! { - - case .MtsOPL: - // keep track of Routing here - forward or process the messages - - // PP -- probably not get here (coming from BT) - - // RMSRmNd -- this is the main thing here - - break - - case .MtsLoginResponse: - jwt = mtsMessage.jwt - let lr = try! decoder.decode(MtsLoginResponse.self, from: mtsMessage.data) - loginResponse = lr - if !loginWithCertDone && loginResponse!.ClientCertificate != nil { - // TODO -- PP - self.client!.stop("have cert") - // 2: new client - self.client = MTSClient(log: Log, url: tfURL!.text!, mtsConnect: mtsConnect, mtsReceive: mtsReceive, mtsDisconnect: mtsDisconnect, mtsConvert: mtsConvertWait) - .withTLS(loginResponse!.ClientCertificate) - self.client!.connect() - return - } - if roomMap == nil { - // get room map - let mtsMessage = MTSMessage(route: MTSRequest.MtsRoomsMap, jwt: "jwt", data: Data()) - self.client!.send(mtsMessage) - return - } - break - - case .MtsCommunicationKeys: - //let ppCommunicationKeys = try! decoder.decode(PPCommunicationKeys.self, from: mtsMessage.Data) - // TODO -- PP - - break - - case .MtsFirmware: - let fw = try! decoder.decode(MtsFirmware.self, from: mtsMessage.data) - Log("firmware: offset: \(fw.Offset)") - firmware.append(fw.Data) - firmwareSize += fw.SegmentSize - if (fw.IsFinal) { - Log("firmware size: \(firmware.count) real: \(firmwareSize)") - return - } - let fwReq = MtsFirmwareReq(Offset: fw.Offset + fw.SegmentSize, MaximumSegmentSize: fwSegmentSize) - let data = try! MTSConvert(fwReq) - let mtsMessage = MTSMessage(route: MTSRequest.MtsFirmware, jwt: "jwt", data: data) - self.client!.send(mtsMessage) - break - - case .MtsRoomsMap: - let json = String(data: mtsMessage.data, encoding: .utf8)! - print("json=\(json)") - - let roomToNodeIdsResponse = try! decoder.decode([MtsRoomToNodeIds].self, from: mtsMessage.data) - print("\(roomToNodeIdsResponse)") - if (useTls) { - // TODO -- PP - roomMap = roomToNodeIdsResponse - - // TODO -- now get the keys - - // TODO -- get the firmware - let fwReq = MtsFirmwareReq(Offset: 0, MaximumSegmentSize: fwSegmentSize) - let data = try! MTSConvert(fwReq) - let mtsMessage = MTSMessage(route: MTSRequest.MtsFirmware, jwt: "jwt", data: data) - self.client!.send(mtsMessage) - - } else { - roomToNodeIds = roomToNodeIdsResponse[0] - for nodeId in roomToNodeIds!.NodeIds { - Log("NodeId: \(nodeId)") - } - } - break - - case .MtsOplCommands: - //let oplCommands = try! decoder.decode(OPLCommands.self, from: mtsMessage.Data) - // TODO -- PP - - break - - default: - Log("Unknown Route: \(mtsMessage.route)") - break - } - } - - @objc func buttonPing(sender: UIButton!) { - Log("Ping...") - } - - @objc func buttonDisconnect(sender: UIButton!) { - displayConnect() - client?.stop("shutting down") - Log("disconnected") - } - - func Log(_ text: String) -> Void { - let currentDateTime = Date() - let dateFormatter = DateFormatter() - dateFormatter.timeStyle = .medium - tView!.text += "\(dateFormatter.string(from: currentDateTime)) \(text)\n" - print(text) - let range = NSMakeRange(tView!.text.count - 1, 0) - tView!.scrollRangeToVisible(range) - self.reloadInputViews() - } - - func createSubviews() { - - let inputOffset = (screenWidth! - inputWidth) / 2 - let buttonOffset = (screenWidth! - buttonWidth - interButton - buttonWidth) / 2 - let buttonOffset2 = (screenWidth! - chBoxWidth - interButton - tlsLabWidth - interButton - buttonWidth) / 2 - - // connect to RMS Server - tfURL = UITextField(frame: CGRect(x:inputOffset, y:topOffset+border, width:inputWidth, height:inputHeight)) - tfURL!.borderStyle = .roundedRect - tfURL!.placeholder = "127.0.0.1:10001" - tfURL!.text = "172.20.10.5:10001" - //tfURL!.text = "172.20.10.5:10002" - tfURL!.backgroundColor = UIColor.white - tfURL!.textColor = UIColor.blue - - tfUser = UITextField(frame: CGRect(x:inputOffset, y:topOffset+2*border+inputHeight, width:inputWidth, height:inputHeight)) - tfUser!.borderStyle = .roundedRect - tfUser!.text = "OnityTech" - tfUser!.placeholder = "user" - tfUser!.backgroundColor = UIColor.white - tfUser!.textColor = UIColor.blue - - tfPwd = UITextField(frame: CGRect(x:inputOffset, y:topOffset+3*border+2*inputHeight, width:inputWidth, height:inputHeight)) - tfPwd!.borderStyle = .roundedRect - tfPwd!.text = "password" - tfPwd!.placeholder = "password" - tfPwd!.backgroundColor = UIColor.white - tfPwd!.textColor = UIColor.blue - tfPwd!.isSecureTextEntry = true - - tfRoomId = UITextField(frame: CGRect(x:inputOffset, y:topOffset+4*border+3*inputHeight, width:inputWidth, height:inputHeight)) - tfRoomId!.borderStyle = .roundedRect - tfRoomId!.text = "101" - tfRoomId!.placeholder = "room id" - tfRoomId!.backgroundColor = UIColor.white - tfRoomId!.textColor = UIColor.blue - - - ckBox = UIButton(frame: CGRect(x:buttonOffset2, y:topOffset+4*border+4*inputHeight, width: chBoxWidth, height:inputHeight)) - ckBox!.backgroundColor = .lightGray - ckBox!.setTitleColor(.blue, for: .normal) - displayChBox() - ckBox!.addTarget(self, action: #selector(buttonCheck), for: .touchUpInside) - - tlsLab = UIButton(frame: CGRect(x:buttonOffset2+chBoxWidth+interChk, y:topOffset+4*border+4*inputHeight, width: tlsLabWidth, height:inputHeight)) - tlsLab!.backgroundColor = .lightGray - tlsLab!.setTitleColor(.blue, for: .normal) - tlsLab!.setTitle("TLS", for: .normal) - tlsLab!.addTarget(self, action: #selector(buttonCheck), for: .touchUpInside) - - - btConn = UIButton(frame: CGRect(x:buttonOffset2+chBoxWidth+interChk+tlsLabWidth+interButton, y:topOffset+4*border+4*inputHeight, width:buttonWidth, height:inputHeight)) - btConn!.backgroundColor = .lightGray - btConn!.setTitleColor(.blue, for: .normal) - btConn!.setTitle("Connect", for: .normal) - btConn!.addTarget(self, action: #selector(buttonConnect), for: .touchUpInside) - - - btPing = UIButton(frame: CGRect(x:buttonOffset, y:topOffset, width:buttonWidth, height:inputHeight)) - btPing!.backgroundColor = .lightGray - btPing!.setTitleColor(.blue, for: .normal) - btPing!.setTitle("Ping", for: .normal) - btPing!.addTarget(self, action: #selector(buttonPing), for: .touchUpInside) - - btDisconn = UIButton(frame: CGRect(x:buttonOffset+buttonWidth+interButton, y:topOffset, width:buttonWidth, height:inputHeight)) - btDisconn!.backgroundColor = .lightGray - btDisconn!.setTitleColor(.blue, for: .normal) - btDisconn!.setTitle("Disconnect", for: .normal) - btDisconn!.addTarget(self, action: #selector(buttonDisconnect), for: .touchUpInside) - - let myFrame = CGRect(x:0, y:0, width:1, height:1) - tView = UITextView(frame: myFrame) - tView!.backgroundColor = .lightGray - tView!.text = "RMSRmNd Version 0.6\n" - } - - func displayConnect() { - let subViews = self.view.subviews - for subview in subViews{ - subview.removeFromSuperview() - } - self.view.addSubview(tfURL!) - self.view.addSubview(tfUser!) - self.view.addSubview(tfPwd!) - self.view.addSubview(tfRoomId!) - self.view.addSubview(ckBox!) - self.view.addSubview(tlsLab!) - self.view.addSubview(btConn!) - - let myY = topOffset+4*border+5*inputHeight - let myW = screenWidth!-2*border - let myH = screenHeight!-myY-bottomOffset - let myFrame = CGRect(x:border, y: myY, width: myW, height: myH) - tView!.frame = myFrame - self.view.addSubview(tView!) - } - - func displayConnected() { - let subViews = self.view.subviews - for subview in subViews{ - subview.removeFromSuperview() - } - self.view.addSubview(btPing!) - self.view.addSubview(btDisconn!) - - let myY = topOffset+inputHeight - let myW = screenWidth!-2*border - let myH = screenHeight!-myY-bottomOffset - let myFrame = CGRect(x:border, y: myY, width: myW, height: myH) - tView!.frame = myFrame - self.view.addSubview(tView!) - } - - @objc func buttonCheck(sender: UIButton) { - useTls = !useTls - displayChBox() - } - - func displayChBox() { - if (useTls) { - ckBox!.setTitle("☑︎", for: .normal) - } else { - ckBox!.setTitle("☐", for: .normal) - } - } -} - diff --git a/README.md b/README.md index 0ed0fb3..1a466c2 100644 --- a/README.md +++ b/README.md @@ -7,27 +7,39 @@ There has been a dearth of examples for Apple's Network Framework libraries. The A version of this was originally written in C#, contact the author if that might be useful. This version in Swift is designed to run on iOS and macOS. -The purpose was to a very lightweight RPC system. This works very similar to a WebSocket, only it starts as a clean transport system, whereas a WebSocket could be considered as an enhancement to an HTTP/HTTPS server. This eliminates all of the overhead of the HTTP/HTTPS server. +The purpose was to be a lightweight RPC (remote procedure call) system. This works very similar to a WebSocket, only it starts as a clean transport system, whereas a WebSocket could be considered as an enhancement to an HTTP/HTTPS server. This eliminates all of the overhead of the HTTP/HTTPS server. ## What is here? There are client and server classes for TCP and UDP examples of using the Network Framkework. This supports TLS and working through a proxy (at the simplest level). +## FAQ + +## Getting Started (w/Demo App)... + +## Use-Case Walkthroughs + +### Setting Up Server + +### Setting Up Client + +## Issue Troubleshooting + ## APIs ### MTS Message
 enum MTSRequest {
-    case RPC1         // user defined RPCs
-    case RMC2
+case RPC1         // user defined RPCs
+case RMC2
 }
-    
+
 class MTSMessage {
-    route: MTSRequest
-    jwt: String         // JSON Web Token (if desired)
-    data: Data 
-    reply: Bool = false
+route: MTSRequest
+jwt: String         // JSON Web Token (if desired)
+data: Data 
+reply: Bool = false
 }
 
diff --git a/RandixMTS.podspec b/RandixMTS.podspec new file mode 100644 index 0000000..2a1497c --- /dev/null +++ b/RandixMTS.podspec @@ -0,0 +1,129 @@ +Pod::Spec.new do |s| + + # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # These will help people to find your library, and whilst it + # can feel like a chore to fill in it's definitely to your advantage. The + # summary should be tweet-length, and the description more in depth. + # + + s.name = "RandixMTS" + s.version = "0.0.1" + s.summary = "The Message Transfer Service uses Network.framework directly to bypass Sockets and outperform MQTT by a significant factor.." + + # This description is used to generate tags and improve search results. + # * Think: What does it do? Why did you write it? What is the focus? + # * Try to keep it short, snappy and to the point. + # * Write the description between the DESC delimiters below. + # * Finally, don't worry about the indent, CocoaPods strips it! + s.description = <<-DESC +The Randix Message Transfer Service is intended to serve as a working example of Apple's Network.framework technology. It's stripped down to basics and performs 13x faster than MQTT. + DESC + + s.homepage = "https://github.com/randix/NWExamples" + # s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif" + + # ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Licensing your code is important. See http://choosealicense.com for more info. + # CocoaPods will detect a license file if there is a named LICENSE* + # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'. + # + + s.license = "BSD" + # s.license = { :type => "MIT", :file => "FILE_LICENSE" } + + + # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Specify the authors of the library, with email addresses. Email addresses + # of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also + # accepts just a name if you'd rather not provide an email address. + # + # Specify a social_media_url where others can refer to, for example a twitter + # profile URL. + # + + s.author = { "Rand Dow" => "rand.dow@me.com" } + # Or just: s.author = "" + # s.authors = { "" => "jalingo@berkeley.edu" } + # s.social_media_url = "http://twitter.com/" + + # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # If this Pod runs only on iOS or OS X, then specify the platform and + # the deployment target. You can optionally include the target after the platform. + # + + s.platform = :ios, "12.2" + # s.platform = :ios, "5.0" + + # When using multiple platforms + # s.ios.deployment_target = "5.0" + # s.osx.deployment_target = "10.7" + # s.watchos.deployment_target = "2.0" + # s.tvos.deployment_target = "9.0" + + + # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Specify the location from where the source should be retrieved. + # Supports git, hg, bzr, svn and HTTP. + # + + s.source = { :git => "https://github.com/jalingo/NWExamples.git", :tag => "#{s.version}" } + + + # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # CocoaPods is smart about how it includes source code. For source files + # giving a folder will include any swift, h, m, mm, c & cpp files. + # For header files it will include any header in the folder. + # Not including the public_header_files will make all headers public. + # + + s.source_files = "./*", "RandixMTS/*", "RandixMTS/**/*.{h,m}" + # s.exclude_files = "Classes/Exclude" + + # s.public_header_files = "Classes/**/*.h" + + + # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # A list of resources included with the Pod. These are copied into the + # target bundle with a build phase script. Anything else will be cleaned. + # You can preserve files from being cleaned, please don't preserve + # non-essential files like tests, examples and documentation. + # + + # s.resource = "icon.png" + # s.resources = "Resources/*.png" + + # s.preserve_paths = "FilesToSave", "MoreFilesToSave" + + + # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Link your library with frameworks, or libraries. Libraries do not include + # the lib prefix of their name. + # + + # s.framework = "SomeFramework" + # s.frameworks = "SomeFramework", "AnotherFramework" + + # s.library = "iconv" + # s.libraries = "iconv", "xml2" + + + # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # If your library depends on compiler flags you can set them in the xcconfig hash + # where they will only apply to your library. If you depend on other Podspecs + # you can include multiple dependencies to ensure it works. + + # s.requires_arc = true + + # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" } + # s.dependency "JSONKit", "~> 1.4" + +end diff --git a/RandixMTS.xcodeproj/project.pbxproj b/RandixMTS.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7902233 --- /dev/null +++ b/RandixMTS.xcodeproj/project.pbxproj @@ -0,0 +1,556 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 3EF578A522E61634003D32DB /* RandixMTS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EF5789B22E61634003D32DB /* RandixMTS.framework */; }; + 3EF578AC22E61634003D32DB /* RandixMTS.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EF5789E22E61634003D32DB /* RandixMTS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3EF578C522E61881003D32DB /* MTSClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578B522E6164C003D32DB /* MTSClient.swift */; }; + 3EF578C722E61884003D32DB /* MTSClientDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578B622E6164C003D32DB /* MTSClientDelegate.swift */; }; + 3EF578C922E61887003D32DB /* ICanCreateTLSParams.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578B722E6164C003D32DB /* ICanCreateTLSParams.swift */; }; + 3EF578CB22E6188B003D32DB /* ICanStateChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578B822E6164C003D32DB /* ICanStateChange.swift */; }; + 3EF578CD22E6188F003D32DB /* MTSRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578BA22E6164C003D32DB /* MTSRequest.swift */; }; + 3EF578CF22E61893003D32DB /* ICanConvertFromMtsMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578BB22E6164C003D32DB /* ICanConvertFromMtsMessage.swift */; }; + 3EF578D122E61897003D32DB /* MTSRequestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578BC22E6164C003D32DB /* MTSRequestType.swift */; }; + 3EF578D322E6189B003D32DB /* MTSServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578BE22E6164C003D32DB /* MTSServer.swift */; }; + 3EF578D522E6189F003D32DB /* MTSMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578BF22E6164C003D32DB /* MTSMessage.swift */; }; + 3EF578D822E618A3003D32DB /* MTSDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578C022E6164C003D32DB /* MTSDataModel.swift */; }; + 3EF578DA22E618B7003D32DB /* ICanLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578D922E618B7003D32DB /* ICanLog.swift */; }; + 3EF578DD22E61981003D32DB /* TypeAliases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF578DC22E61981003D32DB /* TypeAliases.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3EF578A622E61634003D32DB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3EF5789222E61634003D32DB /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3EF5789A22E61634003D32DB; + remoteInfo = RandixMTS; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3ED4DA2522E633B6009E3292 /* IMTSInteractorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMTSInteractorTests.swift; sourceTree = ""; }; + 3ED4DA2622E633B6009E3292 /* MTSClientTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSClientTests.swift; sourceTree = ""; }; + 3ED4DA2722E633B6009E3292 /* MTSClientDelegateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSClientDelegateTests.swift; sourceTree = ""; }; + 3ED4DA2822E633B6009E3292 /* MTSRequestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSRequestTests.swift; sourceTree = ""; }; + 3ED4DA2922E633B6009E3292 /* iCanConvertFromMtsMessageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iCanConvertFromMtsMessageTests.swift; sourceTree = ""; }; + 3ED4DA2A22E633B6009E3292 /* ICanLogTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICanLogTests.swift; sourceTree = ""; }; + 3ED4DA2B22E633B6009E3292 /* ICanConvertFromDataTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICanConvertFromDataTests.swift; sourceTree = ""; }; + 3ED4DA2C22E633B6009E3292 /* MTSMessageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSMessageTests.swift; sourceTree = ""; }; + 3ED4DA2D22E633B6009E3292 /* MTSDataModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSDataModelTests.swift; sourceTree = ""; }; + 3EF5789B22E61634003D32DB /* RandixMTS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RandixMTS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3EF5789E22E61634003D32DB /* RandixMTS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RandixMTS.h; sourceTree = ""; }; + 3EF5789F22E61634003D32DB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3EF578A422E61634003D32DB /* RandixMTSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RandixMTSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3EF578AB22E61634003D32DB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3EF578B522E6164C003D32DB /* MTSClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSClient.swift; sourceTree = ""; }; + 3EF578B622E6164C003D32DB /* MTSClientDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSClientDelegate.swift; sourceTree = ""; }; + 3EF578B722E6164C003D32DB /* ICanCreateTLSParams.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICanCreateTLSParams.swift; sourceTree = ""; }; + 3EF578B822E6164C003D32DB /* ICanStateChange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICanStateChange.swift; sourceTree = ""; }; + 3EF578BA22E6164C003D32DB /* MTSRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSRequest.swift; sourceTree = ""; }; + 3EF578BB22E6164C003D32DB /* ICanConvertFromMtsMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICanConvertFromMtsMessage.swift; sourceTree = ""; }; + 3EF578BC22E6164C003D32DB /* MTSRequestType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSRequestType.swift; sourceTree = ""; }; + 3EF578BE22E6164C003D32DB /* MTSServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSServer.swift; sourceTree = ""; }; + 3EF578BF22E6164C003D32DB /* MTSMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSMessage.swift; sourceTree = ""; }; + 3EF578C022E6164C003D32DB /* MTSDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTSDataModel.swift; sourceTree = ""; }; + 3EF578D922E618B7003D32DB /* ICanLog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICanLog.swift; sourceTree = ""; }; + 3EF578DC22E61981003D32DB /* TypeAliases.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeAliases.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3EF5789822E61634003D32DB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3EF578A122E61634003D32DB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3EF578A522E61634003D32DB /* RandixMTS.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3ED4DA2E22E633B6009E3292 /* MTS */ = { + isa = PBXGroup; + children = ( + 3ED4DA2522E633B6009E3292 /* IMTSInteractorTests.swift */, + 3ED4DA2622E633B6009E3292 /* MTSClientTests.swift */, + 3ED4DA2722E633B6009E3292 /* MTSClientDelegateTests.swift */, + 3ED4DA2822E633B6009E3292 /* MTSRequestTests.swift */, + 3ED4DA2922E633B6009E3292 /* iCanConvertFromMtsMessageTests.swift */, + 3ED4DA2A22E633B6009E3292 /* ICanLogTests.swift */, + 3ED4DA2B22E633B6009E3292 /* ICanConvertFromDataTests.swift */, + 3ED4DA2C22E633B6009E3292 /* MTSMessageTests.swift */, + 3ED4DA2D22E633B6009E3292 /* MTSDataModelTests.swift */, + ); + path = MTS; + sourceTree = ""; + }; + 3EF5789122E61634003D32DB = { + isa = PBXGroup; + children = ( + 3EF5789D22E61634003D32DB /* RandixMTS */, + 3EF578A822E61634003D32DB /* RandixMTSTests */, + 3EF5789C22E61634003D32DB /* Products */, + ); + sourceTree = ""; + }; + 3EF5789C22E61634003D32DB /* Products */ = { + isa = PBXGroup; + children = ( + 3EF5789B22E61634003D32DB /* RandixMTS.framework */, + 3EF578A422E61634003D32DB /* RandixMTSTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 3EF5789D22E61634003D32DB /* RandixMTS */ = { + isa = PBXGroup; + children = ( + 3EF5789E22E61634003D32DB /* RandixMTS.h */, + 3EF5789F22E61634003D32DB /* Info.plist */, + 3EF578D922E618B7003D32DB /* ICanLog.swift */, + 3EF578C122E6164C003D32DB /* MTS */, + 3EF578DC22E61981003D32DB /* TypeAliases.swift */, + ); + path = RandixMTS; + sourceTree = ""; + }; + 3EF578A822E61634003D32DB /* RandixMTSTests */ = { + isa = PBXGroup; + children = ( + 3ED4DA2E22E633B6009E3292 /* MTS */, + 3EF578AB22E61634003D32DB /* Info.plist */, + ); + path = RandixMTSTests; + sourceTree = ""; + }; + 3EF578B922E6164C003D32DB /* MTSClient */ = { + isa = PBXGroup; + children = ( + 3EF578B522E6164C003D32DB /* MTSClient.swift */, + 3EF578B622E6164C003D32DB /* MTSClientDelegate.swift */, + 3EF578B722E6164C003D32DB /* ICanCreateTLSParams.swift */, + 3EF578B822E6164C003D32DB /* ICanStateChange.swift */, + ); + path = MTSClient; + sourceTree = ""; + }; + 3EF578BD22E6164C003D32DB /* MTSRequest */ = { + isa = PBXGroup; + children = ( + 3EF578BA22E6164C003D32DB /* MTSRequest.swift */, + 3EF578BB22E6164C003D32DB /* ICanConvertFromMtsMessage.swift */, + 3EF578BC22E6164C003D32DB /* MTSRequestType.swift */, + ); + path = MTSRequest; + sourceTree = ""; + }; + 3EF578C122E6164C003D32DB /* MTS */ = { + isa = PBXGroup; + children = ( + 3EF578B922E6164C003D32DB /* MTSClient */, + 3EF578BD22E6164C003D32DB /* MTSRequest */, + 3EF578BE22E6164C003D32DB /* MTSServer.swift */, + 3EF578BF22E6164C003D32DB /* MTSMessage.swift */, + 3EF578C022E6164C003D32DB /* MTSDataModel.swift */, + ); + path = MTS; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 3EF5789622E61634003D32DB /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 3EF578AC22E61634003D32DB /* RandixMTS.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 3EF5789A22E61634003D32DB /* RandixMTS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3EF578AF22E61634003D32DB /* Build configuration list for PBXNativeTarget "RandixMTS" */; + buildPhases = ( + 3EF5789622E61634003D32DB /* Headers */, + 3EF5789722E61634003D32DB /* Sources */, + 3EF5789822E61634003D32DB /* Frameworks */, + 3EF5789922E61634003D32DB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RandixMTS; + productName = RandixMTS; + productReference = 3EF5789B22E61634003D32DB /* RandixMTS.framework */; + productType = "com.apple.product-type.framework"; + }; + 3EF578A322E61634003D32DB /* RandixMTSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3EF578B222E61634003D32DB /* Build configuration list for PBXNativeTarget "RandixMTSTests" */; + buildPhases = ( + 3EF578A022E61634003D32DB /* Sources */, + 3EF578A122E61634003D32DB /* Frameworks */, + 3EF578A222E61634003D32DB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3EF578A722E61634003D32DB /* PBXTargetDependency */, + ); + name = RandixMTSTests; + productName = RandixMTSTests; + productReference = 3EF578A422E61634003D32DB /* RandixMTSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3EF5789222E61634003D32DB /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1020; + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = randix; + TargetAttributes = { + 3EF5789A22E61634003D32DB = { + CreatedOnToolsVersion = 10.2.1; + }; + 3EF578A322E61634003D32DB = { + CreatedOnToolsVersion = 10.2.1; + }; + }; + }; + buildConfigurationList = 3EF5789522E61634003D32DB /* Build configuration list for PBXProject "RandixMTS" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 3EF5789122E61634003D32DB; + productRefGroup = 3EF5789C22E61634003D32DB /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3EF5789A22E61634003D32DB /* RandixMTS */, + 3EF578A322E61634003D32DB /* RandixMTSTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3EF5789922E61634003D32DB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3EF578A222E61634003D32DB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3EF5789722E61634003D32DB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3EF578DD22E61981003D32DB /* TypeAliases.swift in Sources */, + 3EF578CD22E6188F003D32DB /* MTSRequest.swift in Sources */, + 3EF578C722E61884003D32DB /* MTSClientDelegate.swift in Sources */, + 3EF578C522E61881003D32DB /* MTSClient.swift in Sources */, + 3EF578CB22E6188B003D32DB /* ICanStateChange.swift in Sources */, + 3EF578D822E618A3003D32DB /* MTSDataModel.swift in Sources */, + 3EF578D522E6189F003D32DB /* MTSMessage.swift in Sources */, + 3EF578DA22E618B7003D32DB /* ICanLog.swift in Sources */, + 3EF578C922E61887003D32DB /* ICanCreateTLSParams.swift in Sources */, + 3EF578D322E6189B003D32DB /* MTSServer.swift in Sources */, + 3EF578D122E61897003D32DB /* MTSRequestType.swift in Sources */, + 3EF578CF22E61893003D32DB /* ICanConvertFromMtsMessage.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3EF578A022E61634003D32DB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 3EF578A722E61634003D32DB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3EF5789A22E61634003D32DB /* RandixMTS */; + targetProxy = 3EF578A622E61634003D32DB /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3EF578AD22E61634003D32DB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 3EF578AE22E61634003D32DB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 3EF578B022E61634003D32DB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 5AG59CQEEH; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = RandixMTS/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.randix.RandixMTS; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 3EF578B122E61634003D32DB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 5AG59CQEEH; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = RandixMTS/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.randix.RandixMTS; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 3EF578B322E61634003D32DB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5AG59CQEEH; + INFOPLIST_FILE = RandixMTSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.randix.RandixMTSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 3EF578B422E61634003D32DB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5AG59CQEEH; + INFOPLIST_FILE = RandixMTSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.randix.RandixMTSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3EF5789522E61634003D32DB /* Build configuration list for PBXProject "RandixMTS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3EF578AD22E61634003D32DB /* Debug */, + 3EF578AE22E61634003D32DB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3EF578AF22E61634003D32DB /* Build configuration list for PBXNativeTarget "RandixMTS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3EF578B022E61634003D32DB /* Debug */, + 3EF578B122E61634003D32DB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3EF578B222E61634003D32DB /* Build configuration list for PBXNativeTarget "RandixMTSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3EF578B322E61634003D32DB /* Debug */, + 3EF578B422E61634003D32DB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3EF5789222E61634003D32DB /* Project object */; +} diff --git a/MTS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/RandixMTS.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 73% rename from MTS.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to RandixMTS.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 6365fdf..919434a 100644 --- a/MTS.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/RandixMTS.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/MTS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/RandixMTS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from MTS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to RandixMTS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/MTS.xcodeproj/xcuserdata/rand.xcuserdatad/xcschemes/xcschememanagement.plist b/RandixMTS.xcodeproj/xcuserdata/utcmobiledev.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 87% rename from MTS.xcodeproj/xcuserdata/rand.xcuserdatad/xcschemes/xcschememanagement.plist rename to RandixMTS.xcodeproj/xcuserdata/utcmobiledev.xcuserdatad/xcschemes/xcschememanagement.plist index 91a0dcd..bb026f9 100644 --- a/MTS.xcodeproj/xcuserdata/rand.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/RandixMTS.xcodeproj/xcuserdata/utcmobiledev.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,7 +4,7 @@ SchemeUserState - MTS.xcscheme_^#shared#^_ + RandixMTS.xcscheme_^#shared#^_ orderHint 0 diff --git a/RandixMTS/ICanLog.swift b/RandixMTS/ICanLog.swift new file mode 100644 index 0000000..7aa63d4 --- /dev/null +++ b/RandixMTS/ICanLog.swift @@ -0,0 +1,30 @@ +// +// ICanLog.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation + +/// Conforming types are required to specify a logging function. +public protocol ICanLog { + + /// This method provides callbacks to logging activity, + /// which can be executed in an environmentally compatible + /// way. + /// + /// - parameter msg: This parameter references a text string + /// describing the logging message. + func log(_ msg: String) +} + +/// Conforming types are required to specify a reference to a +/// logging function. +public protocol IHasLog { + + /// This read-only property stores a reference to a logging + /// method that conforms to `LoggerReference` signature. + var log: LoggerReference { get } +} diff --git a/RandixMTS/Info.plist b/RandixMTS/Info.plist new file mode 100644 index 0000000..e1fe4cf --- /dev/null +++ b/RandixMTS/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift b/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift new file mode 100644 index 0000000..9a92338 --- /dev/null +++ b/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift @@ -0,0 +1,44 @@ +// +// ICanCreateTLSParams.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/16/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation +import Network + +/// Conforming types get `createTLSParameters:allowInsecure:queue` +/// convenience method. +public protocol ICanCreateTLSParams { } + +extension ICanCreateTLSParams { + + /// This convenience method generates TLS parameters for + /// specified arguments. + /// + /// - parameter allowInsecure: If true, insecure TLS + /// connections authorized. + /// - parameter queue: This is the dispacth queue that will + /// host TLS authentication. + /// - returns: Networking Parameters from TLS connection. + public func createTLSParameters(allowInsecure: Bool, queue: DispatchQueue) -> NWParameters { + let options = NWProtocolTLS.Options() + sec_protocol_options_set_verify_block(options.securityProtocolOptions, { (sec_protocol_metadata, sec_trust, sec_protocol_verify_complete) in + let trust = sec_trust_copy_ref(sec_trust).takeRetainedValue() + var error: CFError? + if SecTrustEvaluateWithError(trust, &error) { + sec_protocol_verify_complete(true) + } else { + if allowInsecure == true { + sec_protocol_verify_complete(true) + } else { + sec_protocol_verify_complete(false) + } + } + }, queue) + + return NWParameters(tls: options) + } +} diff --git a/RandixMTS/MTS/MTSClient/ICanStateChange.swift b/RandixMTS/MTS/MTSClient/ICanStateChange.swift new file mode 100644 index 0000000..a2a3f12 --- /dev/null +++ b/RandixMTS/MTS/MTSClient/ICanStateChange.swift @@ -0,0 +1,45 @@ +// +// ICanStateChange.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/16/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation +import Network + +/// Conforming types where Self: MTSClient, inherit the +/// `stateDidChange:to` convenience method. +public protocol ICanStateChange: AnyObject, ICanLog, MTSClientDelegate { } + +extension ICanStateChange where Self: MTSClient { + + /// This convenience method logs state changes and updates + /// self when connection is ready, firing off `mtsConnect` + /// and updating `mtsModel.isConnected` boolean value. + /// + /// - parameter newState: The NWConnection.State that + /// connection has changed to. + func stateDidChange(to newState: NWConnection.State) { + switch (newState) { + + // Handle connection established + case .ready: + log("connected") + mtsModel.isConnected = true + mtsConnect() + + // Handle connection waiting for network + case .waiting(let error): log("waiting3 \(error)") + + // Handle fatal connection error + case .failed(let error): log("failed \(error)") + + // Handle fatal connection error + case .preparing: log("preparing") + + default: log("default \(newState)") + } + } +} diff --git a/RandixMTS/MTS/MTSClient/MTSClient.swift b/RandixMTS/MTS/MTSClient/MTSClient.swift new file mode 100644 index 0000000..a6a396e --- /dev/null +++ b/RandixMTS/MTS/MTSClient/MTSClient.swift @@ -0,0 +1,271 @@ +// +// IMTSClient.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation +import Network + +/// Conforming types can conduct MTS transactions over network +/// connections. +public protocol MTSClient: ICanCreateTLSParams, ICanStateChange { + + // MARK: - Properties + + /// This property stores a reference to an MTSDataModel with + /// appropriate cached values needed to interact with MTS + /// transport layer. + var mtsModel: MTSDataModel { get set } + + /// This property stores a reference to an MTSClientDelegate + /// which provides protocol specific behaviors for MTS + /// transport layer. + var delegate: MTSClientDelegate? { get set } + + /// This property stores the value of an UInt16 value that + /// equals port number to be used by MTS transport layer. + var port: UInt16 { get } + + /// This property stores the value of an string value that + /// equals host address to be used by MTS transport layer. + var host: String { get } + + /// This optional property can store the object requested + /// during MTS transaction. If nil, no object was recovered. + var requestedObj: MTSRequestType? { get set } + + /// This private constant stores a dispatch semaphore in order + /// to block thread during asynchronous waits. + var await: DispatchSemaphore { get } + + /// This private boolean is true when thread is blocked and + /// client awaits connection. + var isWaiting: Bool { get set } + + /// This ivar stores expected message length for recursive + /// transactions. + var expected: Int { get set } + + /// This ivar temporarily caches data that has been downloaded + /// over MTS for cross method use and recurssion. + var buffer: Data { get set } + + /// This boolean property allows for any process to register + /// connection no longer needed. Between transactions, it will + /// be checked to ensure that connection is terminated when data + /// transactions are complete. + var isNeedsConnectionKilled: Bool { get set } + + // MARK: - Functions + + /// After `sendWait` is called, if it is successful this method + /// will be called to handle conversion of requested object + /// into a predefined MTSRequestType. + /// + /// - Note: Await ivar should be signalled here, and isWaiting + /// should be set to false. + /// + /// - parameter mtsMessage: The MTSMessage that was used to + /// initiate the original transaction + /// request. + func waitReceiver(_ mtsMessage: MTSMessage) +} + +extension MTSClient { + + /// This method uses passed arguments to configure connection + /// for TLS using a certificate. + /// + /// - parameter certificate: The license to use for TLS config. + /// - returns: A discardableResult of self: MTSClient. + @discardableResult + public func withTLS(_ certificate: Data? = nil) -> MTSClient { + mtsModel.isUsingTls = true + mtsModel.certificate = certificate + return self + } + + /// This method attempts to connect to MTS server. + /// + /// - returns: A discardableResult of self as MTSClient. + @discardableResult + public func connect() -> MTSClient { + log("connect to \(host):\(port) (TLS=\(mtsModel.isUsingTls))") + // TODO: client cert not implemented + if mtsModel.connection != nil { + // this was called from the server upon connection + + } else { + // TODO: proxy not implemented + let myHost = NWEndpoint.Host(host) + let myPort = NWEndpoint.Port(rawValue: UInt16(port))! + + // TODO: !! #TLS This conditional needs to be breaklined when we test for TLS issues with iOS Server App, as iOS requires TLS (with added conditions, i.e. over 2k in size, non-zero, etc...). + if mtsModel.isUsingTls { + mtsModel.connection = NWConnection(host: myHost, + port: myPort, + using: createTLSParameters(allowInsecure: true, queue: .main)) + } else { + mtsModel.connection = NWConnection(host: myHost, + port: myPort, + using: .tcp) + } + } + mtsModel.connection!.stateUpdateHandler = stateDidChange + + if let connection = mtsModel.connection { + setupReceive(on: connection) + } + + mtsModel.connection?.start(queue: .main) + + return self + } + + /// This method is where failed connections are handled. + /// + /// - parameter error: The NWError generated during connection + /// failure. + public func connectionFailed(error: NWError?) { + log("error \(String(describing: error))") + } + + + /// This method ends MTS transactions and closes connection. + /// + /// - parameter status: The status before stop was triggered. + public func stop(_ status: String) { + log("stopping \(status)") + sendEndOfStream() + } + + /// This method closes connection hosting MTS transactions. + private func sendEndOfStream() { + mtsModel.connection!.send(content: nil, + contentContext: .defaultStream, + isComplete: true, + completion: .contentProcessed({ error in + if let error = error { + self.connectionFailed(error: error) + } + })) + } + + /// This method sends passed argument of MTS connection. + /// + /// - parameter data: This argument is a raw Data type. + public func send(_ data: Data) { + log("MTSClient.send:data \(data)") + let len = data.count; + var p: Data = Data() + p.append(UInt8( len & 0xff)) + p.append(UInt8((len >> 8) & 0xff)) + p.append(UInt8((len >> 16) & 0xff)) + p.append(UInt8( len >> 24)) + mtsModel.connection!.send(content: p+data, completion: .contentProcessed(({ (error) in + if let error = error { + self.log("MTSClient.send.error \(String(describing: error))") + self.connectionFailed(error: error) + } + self.log("MTSClient.send processed") + }))) + log("MTSClient.send finished") + } + + /// This method sends passed argument of MTS connection. + /// + /// - parameter msg: A predefined MTSMessage. + public func send(_ msg: MTSMessage) { + log("MTSClient.send:msg \(msg)") + + if let data = try? JSONEncoder().encode(msg) { + send(data) + } else { + log("MTSClient.send FAIL") + } + } + + /// This method is where conforming type will handle received + /// objects from the connection hosting MTS transactions. + /// + /// - parameter connection: The network connection hosting MTS + /// transactions. + public func setupReceive(on connection: NWConnection) { + + connection.receive(minimumIncompleteLength: 1, + maximumLength: 65536) + { data, contentContext, isComplete, error in + if var data = data, !data.isEmpty { + // … process the data … + self.log("did receive \(data.count) \(self.expected) bytes") + if (self.buffer.count == 0 && self.expected == 0) { + self.expected = Int(data.removeFirst()) + self.expected |= Int(data.removeFirst()) << 8 + self.expected |= Int(data.removeFirst()) << 16 + self.expected |= Int(data.removeFirst()) << 24 + self.log("expected: \(self.expected) bytes") + } + self.buffer.append(data) + self.log("have \(self.buffer.count) expected \(self.expected)") + if (self.buffer.count == self.expected) { + let mtsMessage = try! JSONDecoder().decode(MTSMessage.self, from: self.buffer) + self.log("waiting1: \(self.isWaiting)") + if (self.isWaiting && mtsMessage.reply) { + self.waitReceiver(mtsMessage) + } else { + self.mtsReceive(mtsMessage) + } + self.buffer = Data() + self.expected = 0 + } + } + + if isComplete || self.isNeedsConnectionKilled { + // … handle end of stream … + self.stop("EOF") + + // todo -- tell server if we are on server + // todo -- tell application + } else if let error = error { + // … handle error … + self.log("error") + self.connectionFailed(error: error) + + // todo -- tell server if we are on server + // todo -- tell application + + } else { + self.log("restart receiver") + self.setupReceive(on: connection) + } + } + } + + + /// This method is where conforming type will coordinate sending + /// over MTS transaction and then waiting for a response to sent + /// request. + /// + /// - parameter data: A predefined MTSMessage that requests an + /// acknowledgement or query results. + /// - returns: The MTSRequestType returned from MTS transaction. + public func sendWait(_ data: MTSMessage) -> MTSRequestType { + log("sendwait") + isWaiting = true + + DispatchQueue.global(qos: .background).async { + print("This is run on the background queue") + self.send(data); + self.await.wait() + + DispatchQueue.main.async { + print("This is run on the main queue, after the previous code in outer block") + } + } + + return requestedObj! + } +} diff --git a/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift b/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift new file mode 100644 index 0000000..7c2fb2b --- /dev/null +++ b/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift @@ -0,0 +1,28 @@ +// +// MTSClientDelegate.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/16/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation + +/// Conformers to this protocol can serve as a delegate for +/// MTSClient conformers. +public protocol MTSClientDelegate { + + /// This method is where delegate defines connection behavior. + func mtsConnect() + + /// This method is where delegate defines disconnection + /// behavior. + func mtsDisconnect() + + /// This method is where delegate defines how received MTS + /// messages are handled. + /// + /// - parameter mtsMessage: This parameter references MTS + /// message received. + func mtsReceive(_ mtsMessage: MTSMessage) +} diff --git a/RandixMTS/MTS/MTSDataModel.swift b/RandixMTS/MTS/MTSDataModel.swift new file mode 100644 index 0000000..7837bd1 --- /dev/null +++ b/RandixMTS/MTS/MTSDataModel.swift @@ -0,0 +1,51 @@ +// +// MTSDataModel.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/16/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation +import Network + +/// This value type contains the various IVars needed for MTS +/// clients and servers to make successful MTS transactions, and +/// their default values when necessary. +public struct MTSDataModel { + + // MARK: - Properties + + /// This public muteable variable stores an account name + /// associated with USER for MTS authentication. + public var user = "DefaultUser" + + /// This public muteable variable stores an account passphrase + /// associated with USER for MTS authentication. + public var pass = "DefaultPass" + + /// This public muteable variable stores a boolean value that + /// is true when connecting with TLS certificates. + public var isUsingTls = true + + /// This public muteable variable stores a raw data version of + /// the certificate that is used with TLS connections. + public var certificate: Data? + + /// This public optional variable can store a string + /// representation of JSON Web Token used for MTS + /// authentication. + public var jwt: String? + + /// This public muteable variable stores a boolean value that + /// is true when client / server is connected. + public var isConnected = false + + /// This optional property can store a reference to the + /// network connection that MTS is interacting over. + public var connection: NWConnection? + + /// This overrides convenience init in order to ensure that it + /// is publicly accessible. + public init() { } +} diff --git a/RandixMTS/MTS/MTSMessage.swift b/RandixMTS/MTS/MTSMessage.swift new file mode 100644 index 0000000..fa9beca --- /dev/null +++ b/RandixMTS/MTS/MTSMessage.swift @@ -0,0 +1,38 @@ +// +// MTSMessage.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation + +/// This value type defines the MTS primary message structure. +public struct MTSMessage: Codable { + + /// This public property stores message route as an integer. + public var route: Int + + /// This public property stores JSON Web Token as a string. + public var jwt: String + + /// This public property stores messages content as data. + public var data: Data + + /// This public property stores awknowledgement requirement. + public var reply: Bool + + /// This optional public property stores attribute route. + public var attributeRoute: String? + + /// - parameter request: MTSRequest type for MTS transaction. + /// - parameter attributeRoute: Optional attribute route path. + public init(request: MTSRequest, attributeRoute: String?, + jwt: String, data: Data, reply: Bool = false) { + self.route = request.rawValue + self.jwt = jwt + self.data = data + self.reply = reply + } +} diff --git a/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift b/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift new file mode 100644 index 0000000..97cd057 --- /dev/null +++ b/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift @@ -0,0 +1,25 @@ +// +// ICanConvertFromMtsMessage.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation + +/// Types conforming to this protocol have convert:from: method +/// signature. +public protocol ICanConvertFromMtsMessage { + + /// This method converts passed `MTSMessage` parameter into an + /// concrete object conforming to `OnPortalRequestType`. + /// + /// - parameter mtsMessage: This parameter references an + /// `MTSMessage` object that method + /// will attempt to convert. + /// - returns: A concrete object conforming to + /// `OnPortalRequestType`. If conversion fails, will + /// be an `OPError`. + func convert(from mtsMessage: MTSMessage) -> MTSRequestType +} diff --git a/RandixMTS/MTS/MTSRequest/MTSRequest.swift b/RandixMTS/MTS/MTSRequest/MTSRequest.swift new file mode 100644 index 0000000..9c8a852 --- /dev/null +++ b/RandixMTS/MTS/MTSRequest/MTSRequest.swift @@ -0,0 +1,20 @@ +// +// MtsApi.swift +// MTS +// +// Created by Rand Dow on 6/5/19. +// Copyright © 2019 Rand Dow. All rights reserved. +// + +import Foundation + +/// Conforming types are messages that are able to request MTS +/// transactions over network connections. +public protocol MTSRequest: ICanLog, ICanConvertFromMtsMessage { + + // MARK: - Properties + + /// This read-only property is the only way to require enum + /// conformance. + var rawValue: Int { get } +} diff --git a/RandixMTS/MTS/MTSRequest/MTSRequestType.swift b/RandixMTS/MTS/MTSRequest/MTSRequestType.swift new file mode 100644 index 0000000..d67e7e3 --- /dev/null +++ b/RandixMTS/MTS/MTSRequest/MTSRequestType.swift @@ -0,0 +1,13 @@ +// +// MTSRequestType.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation + +/// Types conforming to this protocol can be returned by an +/// MTSRequest's `convert:from:` method. +public protocol MTSRequestType { } diff --git a/RandixMTS/MTS/MTSServer.swift b/RandixMTS/MTS/MTSServer.swift new file mode 100644 index 0000000..0a4db3b --- /dev/null +++ b/RandixMTS/MTS/MTSServer.swift @@ -0,0 +1,73 @@ +// +// MTSServer.swift +// OnityComms +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import Foundation +import Network + +/// Conforming types can act as an MTS server that an MTS client +/// can attempt to connect with using MTS transactions. +public protocol MTSServer: ICanCreateTLSParams { + + // MARK: - Properties + + /// This property stores a reference to an MTSDataModel with + /// appropriate cached values needed to interact with MTS + /// transport layer. + var mtsModel: MTSDataModel { get set } + + /// This property is equal to the port id that network + /// connections will use. + var port: UInt16 { get } + + /// This property is a boolean value that is true when TLS + /// certificate is required for connection. + var clientCertRequired: Bool { get set } + + /// This is the network listener that will listen for + /// connections. + var listener: NWListener? { get set } + + // MARK: - Functions + + /// This method starts the server listening on its port. + /// + /// - returns: A discardableResult of self as MTSServer. + func start() -> MTSServer + + /// This method disconnects specified client from server + /// and performs any clean up required. + /// + /// - parameter client: The specific MTSClient to be + /// disconnected. + func mtsDisconnect(_ client: MTSClient) +} + +extension MTSServer { + + /// This method uses passed arguments to configure connection + /// for TLS using a certificate. + /// + /// - parameter certificate: The license to use for TLS config. + /// - parameter clientCertificateRequired: When set to true, + /// this server instance will require TLS + /// certificate. + /// - returns: A discardableResult of self: MTSServer + @discardableResult + mutating public func withTLS(certificate: Data?, clientCertificateRequired: Bool) -> MTSServer { + mtsModel.isUsingTls = true + mtsModel.certificate = certificate + clientCertRequired = clientCertificateRequired + + return self + } + + /// This method ends MTS transactions and closes connection. + public func stop() -> Void { + mtsModel.connection?.cancel() + } +} diff --git a/RandixMTS/RandixMTS.h b/RandixMTS/RandixMTS.h new file mode 100644 index 0000000..2629372 --- /dev/null +++ b/RandixMTS/RandixMTS.h @@ -0,0 +1,19 @@ +// +// RandixMTS.h +// RandixMTS +// +// Created by UTC Mobile Dev on 7/22/19. +// Copyright © 2019 randix. All rights reserved. +// + +#import + +//! Project version number for RandixMTS. +FOUNDATION_EXPORT double RandixMTSVersionNumber; + +//! Project version string for RandixMTS. +FOUNDATION_EXPORT const unsigned char RandixMTSVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/RandixMTS/TypeAliases.swift b/RandixMTS/TypeAliases.swift new file mode 100644 index 0000000..3209c2c --- /dev/null +++ b/RandixMTS/TypeAliases.swift @@ -0,0 +1,44 @@ +// +// TypeAliases.swift +// RandixMTS +// +// Created by UTC Mobile Dev on 7/22/19. +// Copyright © 2019 randix. All rights reserved. +// + +import Foundation + +// MARK: - Typealiases + +/// This typealias defines: (_ log: String) -> Void +public typealias LoggerReference = (_ log: String) -> Void + +// MARK: - Typealiases: MTS Library + +/// This typealias defines: (_ client: OPClient) -> Void +/// +/// - client: The MTSClient conformer that manages MTS transaction +/// passed as an argument. +public typealias MTSConnection = (_ client: MTSClient) -> Void + +/// This typealias defines: (_ client: OPClient, _ receive: +/// MTSMessage) -> Void +/// +/// - client: The MTSClient conformer that manages MTS transaction +/// passed as an argument. +/// - receive: The MTSMessage conformer that manages connection +/// passed as an argument. +public typealias MTSReceive = (_ client: MTSClient, _ receive: MTSMessage) -> Void + +/// This typealias defines: (_ client: OPClient) -> Void +/// +/// - client: The MTSClient conformer that manages MTS transaction +/// passed as an argument. +public typealias MTSDisconnect = (_ client: MTSClient) -> Void + +/// This typealias defines: (_ mtsMessage: MTSMessage, _ log: +/// LoggerReference) -> MTSRequestType +/// +/// - receive: The MTSMessage conformer that manages connection +/// passed as an argument. +public typealias MTSConvert = (_ mtsMessage: MTSMessage, _ log: LoggerReference) -> MTSRequestType diff --git a/RandixMTSTests/Info.plist b/RandixMTSTests/Info.plist new file mode 100644 index 0000000..6c40a6c --- /dev/null +++ b/RandixMTSTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/RandixMTSTests/MTS/ICanConvertFromDataTests.swift b/RandixMTSTests/MTS/ICanConvertFromDataTests.swift new file mode 100644 index 0000000..57524d0 --- /dev/null +++ b/RandixMTSTests/MTS/ICanConvertFromDataTests.swift @@ -0,0 +1,73 @@ +// +// ICanConvertFromDataTests.swift +// OnityCommsTests +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import XCTest + +class ICanConvertFromDataTests: XCTestCase { + + // MARK: - Properties + + // MARK: - Properties: Subjects, Mocks & Stubs... + + var subject: ICanConvertFromData? + + let mockData = Data(capacity: 0) + + // MARK: - Functions + + // MARK: - Functions: XCTestCase + + override func setUp() { + subject = MockICanConvertFromData() + } + + override func tearDown() { + subject = nil + } + + // MARK: - Functions: Unit Tests... + + func testSubjectExists() { XCTAssertNotNil(subject) } + + func testSubjectMethodInjectsDependencies() { + let _ = subject?.convert(from: mockData) + } + + func testSubjectMethodReturnsMTSMessage() { + let msg = subject?.convert(from: mockData) + XCTAssert(msg is MTSMessage) + } +} + +// MARK: - Structs: Mocks... + +struct MockICanConvertFromData: ICanConvertFromData { + func log(_ msg: String) { MockLogger().log(msg) } +} + + +protocol ICanConvertFromData: ICanLog { } + +extension ICanConvertFromData { + + // TODO: !! + + /// <#definition#> + /// + /// - parameter <#title#>: <#description#> + /// - returns: <#description#> + + func convert(from data: Encodable) -> MTSMessage? { +// +// log(" Converting from: \(data) ") +// let encoded = JSONEncoder().encode(data) +// +// return MTSMessage(request: <#T##MTSRequest#>, jwt: <#T##String#>, data: <#T##Data#>) + return nil + } +} diff --git a/RandixMTSTests/MTS/ICanLogTests.swift b/RandixMTSTests/MTS/ICanLogTests.swift new file mode 100644 index 0000000..1cef6dd --- /dev/null +++ b/RandixMTSTests/MTS/ICanLogTests.swift @@ -0,0 +1,49 @@ +// +// ICanLogTests.swift +// OnityCommsTests +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import XCTest + +class ICanLogTests: XCTestCase { + + // MARK: - Properties + + // MARK: - Properties: Subjects, Mocks & Stubs... + + var subject: ICanLog? + + let mockMsg = "Mock Msg" + + // MARK: - Functions + + // MARK: - Functions: XCTestCase + + override func setUp() { + subject = MockLogger() + } + + override func tearDown() { + subject = nil + } + + // MARK: - Functions: Unit Tests... + + func testSubjectExists() { XCTAssertNotNil(subject) } + + // Function Test + func testSubjectMethodInjectsDependencies() { + subject?.log(mockMsg) + } +} + +// MARK: - Structs: Mocks... + +struct MockLogger: ICanLog { + func log(_ msg: String) { + print("Mock Loggy: \(msg)") + } +} diff --git a/RandixMTSTests/MTS/IMTSInteractorTests.swift b/RandixMTSTests/MTS/IMTSInteractorTests.swift new file mode 100644 index 0000000..05d6c19 --- /dev/null +++ b/RandixMTSTests/MTS/IMTSInteractorTests.swift @@ -0,0 +1,42 @@ +// +// IMTSInteractorTests.swift +// SFF_Portable_ProgrammerTests +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import XCTest + +class IMTSInteractorTests: XCTestCase { + + // MARK: - Properties + + // MARK: - Properties: Subjects, Mocks & Stubs... + + var subject: IMTSInteractor? + + // MARK: - Functions + + // MARK: - Functions: XCTestCase + + override func setUp() { + subject = MockMTSInteractor() + } + + override func tearDown() { + subject = nil + } + + // MARK: - Functions: Unit Tests... + + func testSubjectExists() { XCTAssertNotNil(subject) } +} + +protocol IMTSInteractor { + +} + +struct MockMTSInteractor: IMTSInteractor { + +} diff --git a/RandixMTSTests/MTS/MTSClientDelegateTests.swift b/RandixMTSTests/MTS/MTSClientDelegateTests.swift new file mode 100644 index 0000000..1d729b5 --- /dev/null +++ b/RandixMTSTests/MTS/MTSClientDelegateTests.swift @@ -0,0 +1,60 @@ +// +// MTSClientDelegateTests.swift +// OnityCommsTests +// +// Created by UTC Mobile Dev on 6/16/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import XCTest + +class MTSClientDelegateTests: XCTestCase { + + // MARK: - Properties + + // MARK: - Properties: Subjects, Mocks & Stubs... + + var subject: MTSClientDelegate? + + // MARK: - Functions + + // MARK: - Functions: XCTestCase + + override func setUp() { + subject = MockClientDelegate() + } + + override func tearDown() { + subject = nil + } + + // MARK: - Functions: Unit Tests... + + func testSubjectExists() { XCTAssertNotNil(subject) } + + func testConnectMethodInjectsDependencies() { + let _ = subject?.mtsConnect() + } + + func testDisconnectMethodInjectsDependencies() { + let _ = subject?.mtsDisconnect() + } + + func testReceiveMethodInjectsDependencies() { + let mock = MockMTSRequest(rawValue: 0) + let msg = MTSMessage(request: mock, + jwt: "", + data: Data(capacity: 0)) + let _ = subject?.mtsReceive(msg) + } +} + +// MARK: - Structs: Mocks... + +struct MockClientDelegate: MTSClientDelegate { + func mtsConnect() { } + + func mtsDisconnect() { } + + func mtsReceive(_ mtsMessage: MTSMessage) { } +} diff --git a/RandixMTSTests/MTS/MTSClientTests.swift b/RandixMTSTests/MTS/MTSClientTests.swift new file mode 100644 index 0000000..1ef879b --- /dev/null +++ b/RandixMTSTests/MTS/MTSClientTests.swift @@ -0,0 +1,103 @@ +// +// IMTSClientTests.swift +// OnityCommsTests +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import XCTest + +class MTSClientTests: XCTestCase { + + // MARK: - Properties + + // MARK: - Properties: Subjects, Mocks & Stubs... + + var subject: MTSClient? + + // MARK: - Functions + + // MARK: - Functions: XCTestCase + + override func setUp() { + subject = MockMTSClient() + } + + override func tearDown() { + subject = nil + } + + // MARK: - Functions: Unit Tests... + + func testSubjectExists() { XCTAssertNotNil(subject) } + + func testSubjectHasMTSDataModel() { + XCTAssert(subject?.mtsModel is MTSDataModel) + } + + func testSubjectHasMTSClientDelegate() { + XCTAssert(subject?.delegate is MTSClientDelegate) + } + + func testSubjectHasPort() { + XCTAssert(subject?.port is UInt16) + } + + func testSubjectHasHost() { + XCTAssert(subject?.host is String) + } + + func testSubjectCanStateChange() { + XCTAssert(subject is ICanStateChange) + } +} + +// MARK: - Structs: Mocks... + +public class MockMTSClient: MTSClient { + public var requestedObj: MTSRequestType? + + public var await = DispatchSemaphore(value: 0) + + public var isWaiting = false + + public var expected = 0 + + public var buffer = Data() + + public var isNeedsConnectionKilled = false + + public func log(_ msg: String) { + + } + + public func mtsConnect() { + + } + + public func mtsDisconnect() { + + } + + public func mtsReceive(_ mtsMessage: MTSMessage) { + + } + + + public var mtsModel = MTSDataModel() + + public var delegate: MTSClientDelegate? = MockMTSClientDelegate() + + public let port: UInt16 = 0 + + public let host: String = "" +} + +struct MockMTSClientDelegate: MTSClientDelegate { + func mtsConnect() { } + + func mtsDisconnect() { } + + func mtsReceive(_ mtsMessage: MTSMessage) { } +} diff --git a/RandixMTSTests/MTS/MTSDataModelTests.swift b/RandixMTSTests/MTS/MTSDataModelTests.swift new file mode 100644 index 0000000..5fe07e7 --- /dev/null +++ b/RandixMTSTests/MTS/MTSDataModelTests.swift @@ -0,0 +1,50 @@ +// +// MTSDataModelTests.swift +// OnityCommsTests +// +// Created by UTC Mobile Dev on 6/16/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import XCTest + +class MTSDataModelTests: XCTestCase { + + // MARK: - Properties + + // MARK: - Properties: Subjects, Mocks & Stubs... + + var subject: MTSDataModel? + + // MARK: - Functions + + // MARK: - Functions: XCTestCase + + override func setUp() { + subject = MTSDataModel() + } + + override func tearDown() { + subject = nil + } + + // MARK: - Functions: Unit Tests... + + func testSubjectExists() { XCTAssertNotNil(subject) } + + func testSubjectHasUser() { XCTAssert(subject?.user is String) } + + func testSubjectHasPass() { XCTAssert(subject?.pass is String) } + + func testSubjectHasUsingTls() { + XCTAssert(subject?.isUsingTls is Bool) + } + + func testSubjectHasJWT() { + XCTAssert(subject?.jwt is String?) + } + + func testSubjectHasIsConnected() { + XCTAssertNotNil(subject?.isConnected) + } +} diff --git a/RandixMTSTests/MTS/MTSMessageTests.swift b/RandixMTSTests/MTS/MTSMessageTests.swift new file mode 100644 index 0000000..d3cc489 --- /dev/null +++ b/RandixMTSTests/MTS/MTSMessageTests.swift @@ -0,0 +1,42 @@ +// +// MTSMessageTests.swift +// OnityCommsTests +// +// Created by UTC Mobile Dev on 6/16/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import XCTest + +class MTSMessageTests: XCTestCase { + + // MARK: - Properties + + // MARK: - Properties: Subjects, Mocks & Stubs... + + var subject: MTSMessage? + + let mockRequest = MockMTSRequest(rawValue: 0) + + // MARK: - Functions + + // MARK: - Functions: XCTestCase + + override func setUp() { + subject = MTSMessage(request: mockRequest, + jwt: "", + data: Data(capacity: 0)) + } + + override func tearDown() { + subject = nil + } + + // MARK: - Functions: Unit Tests... + + func testSubjectExists() { XCTAssertNotNil(subject) } + + // Composite Test +// func testSubjectConforms<#protocol#>() { XCTAssert(subject is <#protocol#>) } +} + diff --git a/RandixMTSTests/MTS/MTSRequestTests.swift b/RandixMTSTests/MTS/MTSRequestTests.swift new file mode 100644 index 0000000..956a13d --- /dev/null +++ b/RandixMTSTests/MTS/MTSRequestTests.swift @@ -0,0 +1,61 @@ +// +// MTSRequestTests.swift +// OnityCommsTests +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import XCTest + +class MTSRequestTests: XCTestCase { + + // MARK: - Properties + + // MARK: - Properties: Subjects, Mocks & Stubs... + + var subject: MTSRequest? + + // MARK: - Functions + + // MARK: - Functions: XCTestCase + + override func setUp() { + subject = MockMTSRequest() + } + + override func tearDown() { + subject = nil + } + + // MARK: - Functions: Unit Tests... + + func testSubjectExists() { XCTAssertNotNil(subject) } + + func testSubjectConformsCanConvertFromMts() { XCTAssert(subject is ICanConvertFromMtsMessage) } +} + +// MARK: - Structs: Mocks... + +struct MockMTSRequest: MTSRequest { + + // MARK: - Properties + + // MARK: - Properties: MTSRequest + + var rawValue: Int = 0 + + // MARK: - Functions + + // MARK: - Functions: ICanConvertFromMtsMessage + + func convert(from mtsMessage: MTSMessage) -> MTSRequestType { + return OPError(message: mtsMessage) + } + + // MARK: - Functions: ICanLog + + func log(_ msg: String) { + return MockLogger().log(msg) + } +} diff --git a/RandixMTSTests/MTS/iCanConvertFromMtsMessageTests.swift b/RandixMTSTests/MTS/iCanConvertFromMtsMessageTests.swift new file mode 100644 index 0000000..be380f6 --- /dev/null +++ b/RandixMTSTests/MTS/iCanConvertFromMtsMessageTests.swift @@ -0,0 +1,55 @@ +// +// iCanConvertFromMtsMessageTests.swift +// OnityCommsTests +// +// Created by UTC Mobile Dev on 6/12/19. +// Copyright © 2019 UTC.onity. All rights reserved. +// + +import XCTest + +class iCanConvertFromMtsMessageTests: XCTestCase { + + // MARK: - Properties + + // MARK: - Properties: Subjects, Mocks & Stubs... + + var subject: ICanConvertFromMtsMessage? + + // MARK: - Functions + + // MARK: - Functions: XCTestCase + + override func setUp() { + subject = MockICanConvertFromMtsMessage() + } + + override func tearDown() { + subject = nil + } + + // MARK: - Functions: Unit Tests... + + func testSubjectExists() { XCTAssertNotNil(subject) } + + // Function Test + func testSubjectMethodInjectsDependencies() { + if let mockReq = OPRequest(rawValue: 1) { + let data = Data(capacity: 0) + let mockMsg = MTSMessage(request: mockReq, + jwt: "mockJwt", + data: data) + let _ = subject?.convert(from: mockMsg) + } else { + XCTFail() + } + } +} + +// MARK: - Structs: Mocks... + +struct MockICanConvertFromMtsMessage: ICanConvertFromMtsMessage { + func convert(from mtsMessage: MTSMessage) -> MTSRequestType { + return OPError(message: mtsMessage) + } +} diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c new file mode 100644 index 0000000..b5a6e7d --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c @@ -0,0 +1,5 @@ + extern const unsigned char RandixMTSVersionString[]; + extern const double RandixMTSVersionNumber; + + const unsigned char RandixMTSVersionString[] __attribute__ ((used)) = "@(#)PROGRAM:RandixMTS PROJECT:RandixMTS-1" "\n"; + const double RandixMTSVersionNumber __attribute__ ((used)) = (double)1.; diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.o new file mode 100644 index 0000000..9cf1356 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.o new file mode 100644 index 0000000..9714cb5 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.o new file mode 100644 index 0000000..46a3839 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.o new file mode 100644 index 0000000..d227bbe Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.o new file mode 100644 index 0000000..15e1a5e Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.o new file mode 100644 index 0000000..f8f7dc5 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.o new file mode 100644 index 0000000..50c1830 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.o new file mode 100644 index 0000000..0f07582 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.o new file mode 100644 index 0000000..31885dc Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.o new file mode 100644 index 0000000..540572f Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.o new file mode 100644 index 0000000..d6fc400 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json new file mode 100644 index 0000000..92ef65e --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json @@ -0,0 +1 @@ +{"":{"dependencies":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.d","diagnostics":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.dia","swift-dependencies":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.swiftdeps"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.o"},"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift":{"llvm-bc":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.bc","object":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.o"}} \ No newline at end of file diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h new file mode 100644 index 0000000..dd175a3 --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h @@ -0,0 +1,189 @@ +// Generated by Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif + +#if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +#else +# define SWIFT_RUNTIME_NAME(X) +#endif +#if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +#else +# define SWIFT_COMPILE_NAME(X) +#endif +#if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +#else +# define SWIFT_METHOD_FAMILY(X) +#endif +#if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +#else +# define SWIFT_NOESCAPE +#endif +#if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +# define SWIFT_WARN_UNUSED_RESULT +#endif +#if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +#else +# define SWIFT_NORETURN +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif + +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif + +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif + +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if defined(__has_attribute) && __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +#else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +#endif +#if __has_feature(modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="RandixMTS",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#pragma clang diagnostic pop diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.d b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.d new file mode 100644 index 0000000..0676037 --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.d @@ -0,0 +1,15 @@ +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.o : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h : /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/ObjectiveC.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreImage.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/QuartzCore.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Network.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Metal.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Darwin.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Foundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreFoundation.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/CoreGraphics.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Swift.swiftmodule /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/UIKit.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/objc/ObjectiveC.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/OpenGLES.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImage.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/QuartzCore.apinotes /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/arm64/Dispatch.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Network.framework/Headers/Network.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Metal.framework/Headers/Metal.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/usr/include/Darwin.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.apinotes /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework/Headers/Security.apinotes diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.dia b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.dia new file mode 100644 index 0000000..0d97cb3 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.dia differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.swiftdeps b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.swiftdeps new file mode 100644 index 0000000..e22a304 --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.swiftdeps @@ -0,0 +1,16 @@ +version: "Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5)" +options: "ef957462ef2db294df30e070a1125d15" +build_time: [1563822958, 300458000] +inputs: + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift": [9223372036, 854775807] diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.swiftdeps~moduleonly b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.swiftdeps~moduleonly new file mode 100644 index 0000000..e22a304 --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.swiftdeps~moduleonly @@ -0,0 +1,16 @@ +version: "Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5)" +options: "ef957462ef2db294df30e070a1125d15" +build_time: [1563822958, 300458000] +inputs: + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift": [9223372036, 854775807] + "/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift": [9223372036, 854775807] diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList new file mode 100644 index 0000000..fbb61fc --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList @@ -0,0 +1,13 @@ +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.o +/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc new file mode 100644 index 0000000..3e5a198 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule new file mode 100644 index 0000000..96da784 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_dependency_info.dat b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_dependency_info.dat new file mode 100644 index 0000000..053dfb5 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_dependency_info.dat differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.d b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.d new file mode 100644 index 0000000..1e261ca --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.d @@ -0,0 +1,2 @@ +dependencies: \ + /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.dia b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.dia new file mode 100644 index 0000000..c85cbfc Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.dia differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o new file mode 100644 index 0000000..9f99d1a Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.o b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.o new file mode 100644 index 0000000..ca84cc2 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.o differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap new file mode 100644 index 0000000..dd8b535 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-target-headers.hmap b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-target-headers.hmap new file mode 100644 index 0000000..3def910 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-target-headers.hmap differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap new file mode 100644 index 0000000..dd8b535 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap new file mode 100644 index 0000000..d1f26c1 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap new file mode 100644 index 0000000..d1f26c1 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS.hmap b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS.hmap new file mode 100644 index 0000000..dd8b535 Binary files /dev/null and b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS.hmap differ diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml new file mode 100644 index 0000000..eceb031 --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml @@ -0,0 +1 @@ +{"case-sensitive":"false","roots":[{"contents":[{"external-contents":"/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h","name":"RandixMTS-Swift.h","type":"file"},{"external-contents":"/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h","name":"RandixMTS.h","type":"file"}],"name":"/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers","type":"directory"},{"contents":[{"external-contents":"/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap","name":"module.modulemap","type":"file"}],"name":"/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules","type":"directory"}],"version":0} \ No newline at end of file diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap new file mode 100644 index 0000000..44f33d0 --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap @@ -0,0 +1,11 @@ +framework module RandixMTS { + umbrella header "RandixMTS.h" + + export * + module * { export * } +} + +module RandixMTS.Swift { + header "RandixMTS-Swift.h" + requires objc +} diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml new file mode 100644 index 0000000..a158a2a --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml @@ -0,0 +1,13 @@ +{ + 'version': 0, + 'case-sensitive': 'false', + 'roots': [{ + 'type': 'directory', + 'name': "/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules" + 'contents': [{ + 'type': 'file', + 'name': "module.modulemap", + 'external-contents': "/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap", + }] + }] +} diff --git a/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap new file mode 100644 index 0000000..499e796 --- /dev/null +++ b/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap @@ -0,0 +1,10 @@ +framework module RandixMTS { + umbrella header "RandixMTS.h" + + export * + module * { export * } +} + +module RandixMTS.__Swift { + exclude header "RandixMTS-Swift.h" +} diff --git a/build/Release-iphoneos/RandixMTS.framework.dSYM/Contents/Info.plist b/build/Release-iphoneos/RandixMTS.framework.dSYM/Contents/Info.plist new file mode 100644 index 0000000..effbd1e --- /dev/null +++ b/build/Release-iphoneos/RandixMTS.framework.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.com.randix.RandixMTS + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/build/Release-iphoneos/RandixMTS.framework.dSYM/Contents/Resources/DWARF/RandixMTS b/build/Release-iphoneos/RandixMTS.framework.dSYM/Contents/Resources/DWARF/RandixMTS new file mode 100644 index 0000000..ac31d41 Binary files /dev/null and b/build/Release-iphoneos/RandixMTS.framework.dSYM/Contents/Resources/DWARF/RandixMTS differ diff --git a/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h b/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h new file mode 100644 index 0000000..dd175a3 --- /dev/null +++ b/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h @@ -0,0 +1,189 @@ +// Generated by Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif + +#if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +#else +# define SWIFT_RUNTIME_NAME(X) +#endif +#if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +#else +# define SWIFT_COMPILE_NAME(X) +#endif +#if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +#else +# define SWIFT_METHOD_FAMILY(X) +#endif +#if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +#else +# define SWIFT_NOESCAPE +#endif +#if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +# define SWIFT_WARN_UNUSED_RESULT +#endif +#if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +#else +# define SWIFT_NORETURN +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif + +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif + +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif + +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if defined(__has_attribute) && __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +#else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +#endif +#if __has_feature(modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="RandixMTS",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#pragma clang diagnostic pop diff --git a/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h b/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h new file mode 100644 index 0000000..2629372 --- /dev/null +++ b/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h @@ -0,0 +1,19 @@ +// +// RandixMTS.h +// RandixMTS +// +// Created by UTC Mobile Dev on 7/22/19. +// Copyright © 2019 randix. All rights reserved. +// + +#import + +//! Project version number for RandixMTS. +FOUNDATION_EXPORT double RandixMTSVersionNumber; + +//! Project version string for RandixMTS. +FOUNDATION_EXPORT const unsigned char RandixMTSVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/build/Release-iphoneos/RandixMTS.framework/Info.plist b/build/Release-iphoneos/RandixMTS.framework/Info.plist new file mode 100644 index 0000000..d272234 Binary files /dev/null and b/build/Release-iphoneos/RandixMTS.framework/Info.plist differ diff --git a/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc b/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000..3e5a198 Binary files /dev/null and b/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc differ diff --git a/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule b/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000..96da784 Binary files /dev/null and b/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule differ diff --git a/build/Release-iphoneos/RandixMTS.framework/Modules/module.modulemap b/build/Release-iphoneos/RandixMTS.framework/Modules/module.modulemap new file mode 100644 index 0000000..44f33d0 --- /dev/null +++ b/build/Release-iphoneos/RandixMTS.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module RandixMTS { + umbrella header "RandixMTS.h" + + export * + module * { export * } +} + +module RandixMTS.Swift { + header "RandixMTS-Swift.h" + requires objc +} diff --git a/build/Release-iphoneos/RandixMTS.framework/RandixMTS b/build/Release-iphoneos/RandixMTS.framework/RandixMTS new file mode 100755 index 0000000..3231c63 Binary files /dev/null and b/build/Release-iphoneos/RandixMTS.framework/RandixMTS differ diff --git a/build/XCBuildData/51d9cf814944e1982fc13e769f54f456-desc.xcbuild b/build/XCBuildData/51d9cf814944e1982fc13e769f54f456-desc.xcbuild new file mode 100644 index 0000000..228d858 Binary files /dev/null and b/build/XCBuildData/51d9cf814944e1982fc13e769f54f456-desc.xcbuild differ diff --git a/build/XCBuildData/51d9cf814944e1982fc13e769f54f456-manifest.xcbuild b/build/XCBuildData/51d9cf814944e1982fc13e769f54f456-manifest.xcbuild new file mode 100644 index 0000000..1399ef9 --- /dev/null +++ b/build/XCBuildData/51d9cf814944e1982fc13e769f54f456-manifest.xcbuild @@ -0,0 +1,70 @@ +client: + name: basic + version: 0 + file-system: default + +targets: + "": [""] + +nodes: + "/Users/utcmobiledev/Desktop/RandixMTS/build": {"is-mutated":true} + +commands: + "": {"tool":"phony","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers","",""],"outputs":[""]} + "": {"tool":"stale-file-removal","expectedOutputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/module.modulemap","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework.dSYM/Contents/Resources/DWARF/RandixMTS","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/RandixMTS","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Info.plist","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap"],"roots":["/tmp/RandixMTS.dst","/Users/utcmobiledev/Desktop/RandixMTS/build","/Users/utcmobiledev/Desktop/RandixMTS/build"],"outputs":[""]} + "Gate /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework.dSYM-target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-": {"tool":"phony","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework.dSYM/Contents/Resources/DWARF/RandixMTS","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework.dSYM/"]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--Barrier-ChangeAlternatePermissions": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--Barrier-ChangePermissions": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--Barrier-CodeSign": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--Barrier-CopyAside": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--Barrier-StripSymbols": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--Barrier-Validate": {"tool":"phony","inputs":["","",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--GeneratedFilesTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--HeadermapTaskProducer": {"tool":"phony","inputs":["","","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml"],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--InfoPlistTaskProducer": {"tool":"phony","inputs":["","","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Info.plist"],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--ModuleMapTaskProducer": {"tool":"phony","inputs":["","","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/module.modulemap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap"],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--ProductPostprocessingTaskProducer": {"tool":"phony","inputs":["","","","","","","","","",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--ProductStructureTaskProducer": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--SanitizerTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--StubBinaryTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--SwiftStandardLibrariesTaskProducer": {"tool":"phony","inputs":["","",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--TestTargetPostprocessingTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--TestTargetTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--VersionPlistTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--begin-compiling": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--end": {"tool":"phony","inputs":["","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework.dSYM/","","","","","","","","","","","","","","","","","","","","","","","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/module.modulemap","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule","","","","","","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Info.plist","","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap"],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--entry": {"tool":"phony","inputs":["","","","",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--generated-headers": {"tool":"phony","inputs":["","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h"],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--immediate": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--modules-ready": {"tool":"phony","inputs":["","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule","","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json"],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--phase0-copy-headers": {"tool":"phony","inputs":["","","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h"],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--phase1-compile-sources": {"tool":"phony","inputs":["","","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule","","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList"],"outputs":[""]} + "Gate target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd--phase3-copy-bundle-resources": {"tool":"phony","inputs":["",""],"outputs":[""]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::CompileC /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c normal arm64 c com.apple.compilers.llvm.clang.1_0.compiler": {"tool":"shell","description":"CompileC /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c normal arm64 c com.apple.compilers.llvm.clang.1_0.compiler","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap","","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o"],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang","-x","c","-arch","arm64","-fmessage-length=0","-fdiagnostics-show-note-include-stack","-fmacro-backtrace-limit=0","-std=gnu11","-fmodules","-gmodules","-fmodules-prune-interval=86400","-fmodules-prune-after=345600","-fbuild-session-file=/var/folders/kw/c9v5swy93_l80mzc_xqlk0yr0000gn/C/org.llvm.clang/ModuleCache.noindex/Session.modulevalidation","-fmodules-validate-once-per-build-session","-Wnon-modular-include-in-framework-module","-Werror=non-modular-include-in-framework-module","-fmodule-name=RandixMTS","-Wno-trigraphs","-fpascal-strings","-Os","-fno-common","-Wno-missing-field-initializers","-Wno-missing-prototypes","-Werror=return-type","-Wdocumentation","-Wunreachable-code","-Werror=deprecated-objc-isa-usage","-Werror=objc-root-class","-Wno-missing-braces","-Wparentheses","-Wswitch","-Wunused-function","-Wno-unused-label","-Wno-unused-parameter","-Wunused-variable","-Wunused-value","-Wempty-body","-Wuninitialized","-Wconditional-uninitialized","-Wno-unknown-pragmas","-Wno-shadow","-Wno-four-char-constants","-Wno-conversion","-Wconstant-conversion","-Wint-conversion","-Wbool-conversion","-Wenum-conversion","-Wno-float-conversion","-Wnon-literal-null-conversion","-Wobjc-literal-conversion","-Wshorten-64-to-32","-Wpointer-sign","-Wno-newline-eof","-isysroot","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk","-fstrict-aliasing","-Wdeprecated-declarations","-miphoneos-version-min=12.2","-g","-Wno-sign-conversion","-Winfinite-recursion","-Wcomma","-Wblock-capture-autoreleasing","-Wstrict-prototypes","-Wno-semicolon-before-method-body","-Wunguarded-availability","-fembed-bitcode-marker","-iquote","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap","-ivfsoverlay","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml","-iquote","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap","-I/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/include","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources-normal/arm64","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/arm64","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources","-F/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos","-MMD","-MT","dependencies","-MF","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.d","--serialize-diagnostics","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.dia","-c","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c","-o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o"],"env":{"LANG":"en_US.US-ASCII"},"working-directory":"/Users/utcmobiledev/Desktop/RandixMTS","deps":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.d"],"deps-style":"makefile","signature":"ff2ee2969fc093fc1418e2358e0b2666"} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler": {"tool":"shell","description":"CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc"],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc","-incremental","-module-name","RandixMTS","-O","-whole-module-optimization","-enforce-exclusivity=checked","-sdk","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk","-target","arm64-apple-ios12.2","-g","-Xfrontend","-serialize-debugging-options","-embed-bitcode-marker","-swift-version","5","-I","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos","-F","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos","-c","-num-threads","8","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/TypeAliases.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequest.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClientDelegate.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/MTSClient.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanStateChange.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSDataModel.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSMessage.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/ICanLog.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSClient/ICanCreateTLSParams.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSServer.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/MTSRequestType.swift","/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/MTS/MTSRequest/ICanConvertFromMtsMessage.swift","-output-file-map","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json","-parseable-output","-serialize-diagnostics","-emit-dependencies","-emit-module","-emit-module-path","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule","-Xcc","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/swift-overrides.hmap","-Xcc","-iquote","-Xcc","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap","-Xcc","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap","-Xcc","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap","-Xcc","-ivfsoverlay","-Xcc","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml","-Xcc","-iquote","-Xcc","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap","-Xcc","-I/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/include","-Xcc","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources-normal/arm64","-Xcc","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/arm64","-Xcc","-I/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources","-emit-objc-header","-emit-objc-header-path","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h","-import-underlying-module","-Xcc","-ivfsoverlay","-Xcc","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml","-working-directory","/Users/utcmobiledev/Desktop/RandixMTS"],"env":{"DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk"},"working-directory":"/Users/utcmobiledev/Desktop/RandixMTS","deps":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-master.d"],"deps-style":"makefile","signature":"7203b156825d513e033ddd2ef414a464"} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::CpHeader /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h": {"tool":"file-copy","description":"CpHeader /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/RandixMTS.h/","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS.h"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::CreateBuildDirectory /Users/utcmobiledev/Desktop/RandixMTS/build": {"tool":"create-build-directory","description":"CreateBuildDirectory /Users/utcmobiledev/Desktop/RandixMTS/build","inputs":[],"outputs":["","/Users/utcmobiledev/Desktop/RandixMTS/build"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::Ditto /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/module.modulemap": {"tool":"file-copy","description":"Ditto /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/module.modulemap","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap/","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/module.modulemap"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::Ditto /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h": {"tool":"shell","description":"Ditto /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h"],"args":["/usr/bin/ditto","-rsrc","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-Swift.h","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers/RandixMTS-Swift.h"],"env":{},"working-directory":"/Users/utcmobiledev/Desktop/RandixMTS","signature":"610c752c8683360f00eb683c667985f0"} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::Ditto /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc": {"tool":"shell","description":"Ditto /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc"],"args":["/usr/bin/ditto","-rsrc","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftdoc","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftdoc"],"env":{},"working-directory":"/Users/utcmobiledev/Desktop/RandixMTS","signature":"0f92cd0fbe26d3e0946a51f662e0a83f"} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::Ditto /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule": {"tool":"shell","description":"Ditto /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule"],"args":["/usr/bin/ditto","-rsrc","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Modules/RandixMTS.swiftmodule/arm64.swiftmodule"],"env":{},"working-directory":"/Users/utcmobiledev/Desktop/RandixMTS","signature":"47703cfe720cf010d5407e3c084ec276"} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::GenerateDSYMFile /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework.dSYM /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/RandixMTS": {"tool":"shell","description":"GenerateDSYMFile /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework.dSYM /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/RandixMTS","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/RandixMTS","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Info.plist","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework.dSYM/Contents/Resources/DWARF/RandixMTS",""],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/RandixMTS","-o","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework.dSYM"],"env":{},"working-directory":"/Users/utcmobiledev/Desktop/RandixMTS","signature":"a067f8b826e1c0d0db0bcbe87eddfe24"} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::Ld /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/RandixMTS normal arm64": {"tool":"shell","description":"Ld /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/RandixMTS normal arm64","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/TypeAliases.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequest.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClientDelegate.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSClient.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanStateChange.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSDataModel.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSMessage.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanLog.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanCreateTLSParams.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSServer.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/MTSRequestType.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/ICanConvertFromMtsMessage.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_vers.o","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/RandixMTS",""],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang","-arch","arm64","-dynamiclib","-isysroot","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk","-L/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos","-F/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos","-filelist","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList","-install_name","@rpath/RandixMTS.framework/RandixMTS","-Xlinker","-rpath","-Xlinker","/usr/lib/swift","-Xlinker","-rpath","-Xlinker","@executable_path/Frameworks","-Xlinker","-rpath","-Xlinker","@loader_path/Frameworks","-miphoneos-version-min=12.2","-dead_strip","-Xlinker","-object_path_lto","-Xlinker","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_lto.o","-fembed-bitcode-marker","-fobjc-link-runtime","-L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos","-Xlinker","-add_ast_path","-Xlinker","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.swiftmodule","-compatibility_version","1","-current_version","1","-Xlinker","-dependency_info","-Xlinker","/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_dependency_info.dat","-o","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/RandixMTS"],"env":{"IPHONEOS_DEPLOYMENT_TARGET":"12.2"},"working-directory":"/Users/utcmobiledev/Desktop/RandixMTS","deps":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS_dependency_info.dat"],"deps-style":"dependency-info","signature":"1ae26df81774c9722f6830602b73587f"} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::MkDir /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework": {"tool":"mkdir","description":"MkDir /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework",""]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::MkDir /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers": {"tool":"mkdir","description":"MkDir /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Headers",""]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::ProcessInfoPlistFile /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Info.plist /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/Info.plist": {"tool":"info-plist-processor","description":"ProcessInfoPlistFile /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Info.plist /Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/Info.plist","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/RandixMTS/Info.plist","",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework/Info.plist"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::Touch /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework": {"tool":"shell","description":"Touch /Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework","inputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework","",""],"outputs":[""],"args":["/usr/bin/touch","-c","/Users/utcmobiledev/Desktop/RandixMTS/build/Release-iphoneos/RandixMTS.framework"],"env":{},"working-directory":"/Users/utcmobiledev/Desktop/RandixMTS","signature":"8aea051706c6836a23ab9611fd6918bc"} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/DerivedSources/RandixMTS_vers.c"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS-OutputFileMap.json"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/Objects-normal/arm64/RandixMTS.LinkFileList"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-non-framework-target-headers.hmap"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-target-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-target-headers.hmap","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-all-target-headers.hmap"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-generated-files.hmap"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-own-target-headers.hmap"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS-project-headers.hmap"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS.hmap","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/RandixMTS.hmap"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/all-product-headers.yaml"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/module.modulemap"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module-overlay.yaml"]} + "target-RandixMTS-ed7cc17273431eae510facbe25c4ff29a8362a741f95bcd277755a6abcf3b7dd-::WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap","inputs":["",""],"outputs":["/Users/utcmobiledev/Desktop/RandixMTS/build/RandixMTS.build/Release-iphoneos/RandixMTS.build/unextended-module.modulemap"]} + diff --git a/build/XCBuildData/BuildDescriptionCacheIndex-debbbb99c1ceac2218d10f4226450e29 b/build/XCBuildData/BuildDescriptionCacheIndex-debbbb99c1ceac2218d10f4226450e29 new file mode 100644 index 0000000..84f332f Binary files /dev/null and b/build/XCBuildData/BuildDescriptionCacheIndex-debbbb99c1ceac2218d10f4226450e29 differ diff --git a/build/XCBuildData/build.db b/build/XCBuildData/build.db new file mode 100644 index 0000000..8ef2fdc Binary files /dev/null and b/build/XCBuildData/build.db differ diff --git a/docs/Protocols.html b/docs/Protocols.html new file mode 100644 index 0000000..bb10ab4 --- /dev/null +++ b/docs/Protocols.html @@ -0,0 +1,440 @@ + + + + Protocols Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • +
    + + + + ICanLog + +
    +
    +
    +
    +
    +
    +

    Conforming types are required to specify a logging function.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ICanLog
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + IHasLog + +
    +
    +
    +
    +
    +
    +

    Conforming types are required to specify a reference to a +logging function.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol IHasLog
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + ICanCreateTLSParams + +
    +
    +
    +
    +
    +
    +

    Conforming types get createTLSParameters:allowInsecure:queue +convenience method.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ICanCreateTLSParams
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + ICanStateChange + +
    +
    +
    +
    +
    +
    +

    Conforming types where Self: MTSClient, inherit the +stateDidChange:to convenience method.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ICanStateChange : AnyObject, ICanLog, MTSClientDelegate
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
    +
  • +
    + + + + MTSClientDelegate + +
    +
    +
    +
    +
    +
    +

    Conformers to this protocol can serve as a delegate for +MTSClient conformers.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol MTSClientDelegate
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Types conforming to this protocol have convert:from: method +signature.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ICanConvertFromMtsMessage
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MTSRequest + +
    +
    +
    +
    +
    +
    +

    Conforming types are messages that are able to request MTS +transactions over network connections.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol MTSRequest : ICanConvertFromMtsMessage, ICanLog
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MTSRequestType + +
    +
    +
    +
    +
    +
    +

    Types conforming to this protocol can be returned by an +MTSRequest’s convert:from: method.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol MTSRequestType
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MTSServer + +
    +
    +
    +
    +
    +
    +

    Conforming types can act as an MTS server that an MTS client +can attempt to connect with using MTS transactions.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol MTSServer : ICanCreateTLSParams
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/ICanConvertFromMtsMessage.html b/docs/Protocols/ICanConvertFromMtsMessage.html new file mode 100644 index 0000000..20fa784 --- /dev/null +++ b/docs/Protocols/ICanConvertFromMtsMessage.html @@ -0,0 +1,182 @@ + + + + ICanConvertFromMtsMessage Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

ICanConvertFromMtsMessage

+
+
+
public protocol ICanConvertFromMtsMessage
+ +
+
+

Types conforming to this protocol have convert:from: method +signature.

+ +
+
+
+
    +
  • +
    + + + + convert(from:) + +
    +
    +
    +
    +
    +
    +

    This method converts passed MTSMessage parameter into an +concrete object conforming to OnPortalRequestType.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func convert(from mtsMessage: MTSMessage) -> MTSRequestType
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + mtsMessage + + +
    +

    This parameter references an + MTSMessage object that method + will attempt to convert.

    +
    +
    +
    +
    +

    Return Value

    +

    A concrete object conforming to + OnPortalRequestType. If conversion fails, will + be an OPError.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/ICanCreateTLSParams.html b/docs/Protocols/ICanCreateTLSParams.html new file mode 100644 index 0000000..807d29c --- /dev/null +++ b/docs/Protocols/ICanCreateTLSParams.html @@ -0,0 +1,195 @@ + + + + ICanCreateTLSParams Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

ICanCreateTLSParams

+
+
+
public protocol ICanCreateTLSParams
+ +
+
+

Conforming types get createTLSParameters:allowInsecure:queue +convenience method.

+ +
+
+
+
    +
  • +
    + + + + createTLSParameters(allowInsecure:queue:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This convenience method generates TLS parameters for +specified arguments.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func createTLSParameters(allowInsecure: Bool, queue: DispatchQueue) -> NWParameters
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + allowInsecure + + +
    +

    If true, insecure TLS + connections authorized.

    +
    +
    + + queue + + +
    +

    This is the dispacth queue that will + host TLS authentication.

    +
    +
    +
    +
    +

    Return Value

    +

    Networking Parameters from TLS connection.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/ICanLog.html b/docs/Protocols/ICanLog.html new file mode 100644 index 0000000..d1c19ec --- /dev/null +++ b/docs/Protocols/ICanLog.html @@ -0,0 +1,175 @@ + + + + ICanLog Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

ICanLog

+
+
+
public protocol ICanLog
+ +
+
+

Conforming types are required to specify a logging function.

+ +
+
+
+
    +
  • +
    + + + + log(_:) + +
    +
    +
    +
    +
    +
    +

    This method provides callbacks to logging activity, +which can be executed in an environmentally compatible +way.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func log(_ msg: String)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + msg + + +
    +

    This parameter references a text string + describing the logging message.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/ICanStateChange.html b/docs/Protocols/ICanStateChange.html new file mode 100644 index 0000000..44cf957 --- /dev/null +++ b/docs/Protocols/ICanStateChange.html @@ -0,0 +1,179 @@ + + + + ICanStateChange Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

ICanStateChange

+
+
+
public protocol ICanStateChange : AnyObject, ICanLog, MTSClientDelegate
+ +
+
+

Conforming types where Self: MTSClient, inherit the +stateDidChange:to convenience method.

+ +
+
+
+
    +
  • +
    + + + + stateDidChange(to:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This convenience method logs state changes and updates +self when connection is ready, firing off mtsConnect +and updating mtsModel.isConnected boolean value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func stateDidChange(to newState: NWConnection.State)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + newState + + +
    +

    The NWConnection.State that + connection has changed to.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/IHasLog.html b/docs/Protocols/IHasLog.html new file mode 100644 index 0000000..20430eb --- /dev/null +++ b/docs/Protocols/IHasLog.html @@ -0,0 +1,155 @@ + + + + IHasLog Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

IHasLog

+
+
+
public protocol IHasLog
+ +
+
+

Conforming types are required to specify a reference to a +logging function.

+ +
+
+
+
    +
  • +
    + + + + log + +
    +
    +
    +
    +
    +
    +

    This read-only property stores a reference to a logging +method that conforms to LoggerReference signature.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var log: LoggerReference { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/MTSClient.html b/docs/Protocols/MTSClient.html new file mode 100644 index 0000000..0175a84 --- /dev/null +++ b/docs/Protocols/MTSClient.html @@ -0,0 +1,883 @@ + + + + MTSClient Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSClient

+
+
+
public protocol MTSClient : ICanCreateTLSParams, ICanStateChange
+ +
+
+

Conforming types can conduct MTS transactions over network +connections.

+ +
+
+
+ +
    +
  • +
    + + + + mtsModel + +
    +
    +
    +
    +
    +
    +

    This property stores a reference to an MTSDataModel with +appropriate cached values needed to interact with MTS +transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var mtsModel: MTSDataModel { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    This property stores a reference to an MTSClientDelegate +which provides protocol specific behaviors for MTS +transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var delegate: MTSClientDelegate? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + port + +
    +
    +
    +
    +
    +
    +

    This property stores the value of an UInt16 value that +equals port number to be used by MTS transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var port: UInt16 { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + host + +
    +
    +
    +
    +
    +
    +

    This property stores the value of an string value that +equals host address to be used by MTS transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var host: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + requestedObj + +
    +
    +
    +
    +
    +
    +

    This optional property can store the object requested +during MTS transaction. If nil, no object was recovered.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var requestedObj: MTSRequestType? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + await + +
    +
    +
    +
    +
    +
    +

    This private constant stores a dispatch semaphore in order +to block thread during asynchronous waits.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var await: DispatchSemaphore { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isWaiting + +
    +
    +
    +
    +
    +
    +

    This private boolean is true when thread is blocked and +client awaits connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isWaiting: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + expected + +
    +
    +
    +
    +
    +
    +

    This ivar stores expected message length for recursive +transactions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var expected: Int { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buffer + +
    +
    +
    +
    +
    +
    +

    This ivar temporarily caches data that has been downloaded +over MTS for cross method use and recurssion.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var buffer: Data { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This boolean property allows for any process to register +connection no longer needed. Between transactions, it will +be checked to ensure that connection is terminated when data +transactions are complete.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isNeedsConnectionKilled: Bool { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + waitReceiver(_:) + +
    +
    +
    +
    +
    +
    +

    After sendWait is called, if it is successful this method +will be called to handle conversion of requested object +into a predefined MTSRequestType.

    +
    +

    Note

    +

    Await ivar should be signalled here, and isWaiting + should be set to false.

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func waitReceiver(_ mtsMessage: MTSMessage)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + mtsMessage + + +
    +

    The MTSMessage that was used to + initiate the original transaction + request.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + withTLS(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method uses passed arguments to configure connection +for TLS using a certificate.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @discardableResult
    +public func withTLS(_ certificate: Data? = nil) -> MTSClient
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + certificate + + +
    +

    The license to use for TLS config.

    +
    +
    +
    +
    +

    Return Value

    +

    A discardableResult of self: MTSClient.

    +
    +
    +
    +
  • +
  • +
    + + + + connect() + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method attempts to connect to MTS server.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @discardableResult
    +public func connect() -> MTSClient
    + +
    +
    +
    +

    Return Value

    +

    A discardableResult of self as MTSClient.

    +
    +
    +
    +
  • +
  • +
    + + + + connectionFailed(error:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method is where failed connections are handled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func connectionFailed(error: NWError?)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + error + + +
    +

    The NWError generated during connection + failure.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + stop(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method ends MTS transactions and closes connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func stop(_ status: String)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + status + + +
    +

    The status before stop was triggered.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + send(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method sends passed argument of MTS connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func send(_ data: Data)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + data + + +
    +

    This argument is a raw Data type.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + send(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method sends passed argument of MTS connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func send(_ msg: MTSMessage)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + msg + + +
    +

    A predefined MTSMessage.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + setupReceive(on:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method is where conforming type will handle received +objects from the connection hosting MTS transactions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func setupReceive(on connection: NWConnection)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + connection + + +
    +

    The network connection hosting MTS + transactions.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + sendWait(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method is where conforming type will coordinate sending +over MTS transaction and then waiting for a response to sent +request.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sendWait(_ data: MTSMessage) -> MTSRequestType
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + data + + +
    +

    A predefined MTSMessage that requests an + acknowledgement or query results.

    +
    +
    +
    +
    +

    Return Value

    +

    The MTSRequestType returned from MTS transaction.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/MTSClientDelegate.html b/docs/Protocols/MTSClientDelegate.html new file mode 100644 index 0000000..9dfca3d --- /dev/null +++ b/docs/Protocols/MTSClientDelegate.html @@ -0,0 +1,230 @@ + + + + MTSClientDelegate Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSClientDelegate

+
+
+
public protocol MTSClientDelegate
+ +
+
+

Conformers to this protocol can serve as a delegate for +MTSClient conformers.

+ +
+
+
+
    +
  • +
    + + + + mtsConnect() + +
    +
    +
    +
    +
    +
    +

    This method is where delegate defines connection behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func mtsConnect()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + mtsDisconnect() + +
    +
    +
    +
    +
    +
    +

    This method is where delegate defines disconnection +behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func mtsDisconnect()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + mtsReceive(_:) + +
    +
    +
    +
    +
    +
    +

    This method is where delegate defines how received MTS +messages are handled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func mtsReceive(_ mtsMessage: MTSMessage)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + mtsMessage + + +
    +

    This parameter references MTS + message received.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/MTSRequest.html b/docs/Protocols/MTSRequest.html new file mode 100644 index 0000000..0442a70 --- /dev/null +++ b/docs/Protocols/MTSRequest.html @@ -0,0 +1,162 @@ + + + + MTSRequest Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSRequest

+
+
+
public protocol MTSRequest : ICanConvertFromMtsMessage, ICanLog
+ +
+
+

Conforming types are messages that are able to request MTS +transactions over network connections.

+ +
+
+
+ +
    +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    +

    This read-only property is the only way to require enum +conformance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var rawValue: Int { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/MTSServer.html b/docs/Protocols/MTSServer.html new file mode 100644 index 0000000..07a823f --- /dev/null +++ b/docs/Protocols/MTSServer.html @@ -0,0 +1,440 @@ + + + + MTSServer Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSServer

+
+
+
public protocol MTSServer : ICanCreateTLSParams
+ +
+
+

Conforming types can act as an MTS server that an MTS client +can attempt to connect with using MTS transactions.

+ +
+
+
+ +
    +
  • +
    + + + + mtsModel + +
    +
    +
    +
    +
    +
    +

    This property stores a reference to an MTSDataModel with +appropriate cached values needed to interact with MTS +transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var mtsModel: MTSDataModel { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + port + +
    +
    +
    +
    +
    +
    +

    This property is equal to the port id that network +connections will use.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var port: UInt16 { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + clientCertRequired + +
    +
    +
    +
    +
    +
    +

    This property is a boolean value that is true when TLS +certificate is required for connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var clientCertRequired: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + listener + +
    +
    +
    +
    +
    +
    +

    This is the network listener that will listen for +connections.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var listener: NWListener? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + start() + +
    +
    +
    +
    +
    +
    +

    This method starts the server listening on its port.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func start() -> MTSServer
    + +
    +
    +
    +

    Return Value

    +

    A discardableResult of self as MTSServer.

    +
    +
    +
    +
  • +
  • +
    + + + + mtsDisconnect(_:) + +
    +
    +
    +
    +
    +
    +

    This method disconnects specified client from server +and performs any clean up required.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func mtsDisconnect(_ client: MTSClient)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + client + + +
    +

    The specific MTSClient to be + disconnected.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + withTLS(certificate:clientCertificateRequired:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method uses passed arguments to configure connection +for TLS using a certificate.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @discardableResult
    +mutating public func withTLS(certificate: Data?, clientCertificateRequired: Bool) -> MTSServer
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + certificate + + +
    +

    The license to use for TLS config.

    +
    +
    + + clientCertificateRequired + + +
    +

    When set to true, + this server instance will require TLS + certificate.

    +
    +
    +
    +
    +

    Return Value

    +

    A discardableResult of self: MTSServer

    +
    +
    +
    +
  • +
  • +
    + + + + stop() + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method ends MTS transactions and closes connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func stop()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Structs.html b/docs/Structs.html new file mode 100644 index 0000000..76a9c6f --- /dev/null +++ b/docs/Structs.html @@ -0,0 +1,182 @@ + + + + Structures Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

Structures

+

The following structures are available globally.

+ +
+
+
+
    +
  • +
    + + + + MTSDataModel + +
    +
    +
    +
    +
    +
    +

    This value type contains the various IVars needed for MTS +clients and servers to make successful MTS transactions, and +their default values when necessary.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct MTSDataModel
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MTSMessage + +
    +
    +
    +
    +
    +
    +

    This value type defines the MTS primary message structure.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct MTSMessage : Codable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Structs/MTSDataModel.html b/docs/Structs/MTSDataModel.html new file mode 100644 index 0000000..8a13d4a --- /dev/null +++ b/docs/Structs/MTSDataModel.html @@ -0,0 +1,360 @@ + + + + MTSDataModel Structure Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSDataModel

+
+
+
public struct MTSDataModel
+ +
+
+

This value type contains the various IVars needed for MTS +clients and servers to make successful MTS transactions, and +their default values when necessary.

+ +
+
+
+ +
    +
  • +
    + + + + user + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores an account name +associated with USER for MTS authentication.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var user: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pass + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores an account passphrase +associated with USER for MTS authentication.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var pass: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isUsingTls + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores a boolean value that +is true when connecting with TLS certificates.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isUsingTls: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + certificate + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores a raw data version of +the certificate that is used with TLS connections.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var certificate: Data?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + jwt + +
    +
    +
    +
    +
    +
    +

    This public optional variable can store a string +representation of JSON Web Token used for MTS +authentication.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var jwt: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isConnected + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores a boolean value that +is true when client / server is connected.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isConnected: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + connection + +
    +
    +
    +
    +
    +
    +

    This optional property can store a reference to the +network connection that MTS is interacting over.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var connection: NWConnection?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    This overrides convenience init in order to ensure that it +is publicly accessible.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Structs/MTSMessage.html b/docs/Structs/MTSMessage.html new file mode 100644 index 0000000..8334b2a --- /dev/null +++ b/docs/Structs/MTSMessage.html @@ -0,0 +1,319 @@ + + + + MTSMessage Structure Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSMessage

+
+
+
public struct MTSMessage : Codable
+ +
+
+

This value type defines the MTS primary message structure.

+ +
+
+
+
    +
  • +
    + + + + route + +
    +
    +
    +
    +
    +
    +

    This public property stores message route as an integer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var route: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + jwt + +
    +
    +
    +
    +
    +
    +

    This public property stores JSON Web Token as a string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var jwt: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + data + +
    +
    +
    +
    +
    +
    +

    This public property stores messages content as data.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var data: Data
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + reply + +
    +
    +
    +
    +
    +
    +

    This public property stores awknowledgement requirement.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var reply: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributeRoute + +
    +
    +
    +
    +
    +
    +

    This optional public property stores attribute route.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributeRoute: String?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(request: MTSRequest, attributeRoute: String?,
    +     jwt: String, data: Data, reply: Bool = false)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + request + + +
    +

    MTSRequest type for MTS transaction.

    +
    +
    + + attributeRoute + + +
    +

    Optional attribute route path.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Typealiases.html b/docs/Typealiases.html new file mode 100644 index 0000000..22c5a06 --- /dev/null +++ b/docs/Typealiases.html @@ -0,0 +1,297 @@ + + + + Type Aliases Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

Type Aliases

+

The following type aliases are available globally.

+ +
+
+
+ +
    +
  • +
    + + + + LoggerReference + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ log: String) -> Void

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LoggerReference = (_ log: String) -> Void
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + MTSConnection + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ client: OPClient) -> Void

    + +
      +
    • client: The MTSClient conformer that manages MTS transaction + passed as an argument.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias MTSConnection = (_ client: MTSClient) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MTSReceive + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ client: OPClient, _ receive: +MTSMessage) -> Void

    + +
      +
    • client: The MTSClient conformer that manages MTS transaction + passed as an argument.
    • +
    • receive: The MTSMessage conformer that manages connection + passed as an argument.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias MTSReceive = (_ client: MTSClient, _ receive: MTSMessage) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MTSDisconnect + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ client: OPClient) -> Void

    + +
      +
    • client: The MTSClient conformer that manages MTS transaction + passed as an argument.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias MTSDisconnect = (_ client: MTSClient) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MTSConvert + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ mtsMessage: MTSMessage, _ log: +LoggerReference) -> MTSRequestType

    + +
      +
    • receive: The MTSMessage conformer that manages connection + passed as an argument.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias MTSConvert = (_ mtsMessage: MTSMessage, _ log: LoggerReference) -> MTSRequestType
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/badge.svg b/docs/badge.svg new file mode 100644 index 0000000..a096fec --- /dev/null +++ b/docs/badge.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + documentation + + + documentation + + + 100% + + + 100% + + + diff --git a/docs/css/highlight.css b/docs/css/highlight.css new file mode 100644 index 0000000..d0db0e1 --- /dev/null +++ b/docs/css/highlight.css @@ -0,0 +1,200 @@ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight { + /* Comment */ + /* Error */ + /* Keyword */ + /* Operator */ + /* Comment.Multiline */ + /* Comment.Preproc */ + /* Comment.Single */ + /* Comment.Special */ + /* Generic.Deleted */ + /* Generic.Deleted.Specific */ + /* Generic.Emph */ + /* Generic.Error */ + /* Generic.Heading */ + /* Generic.Inserted */ + /* Generic.Inserted.Specific */ + /* Generic.Output */ + /* Generic.Prompt */ + /* Generic.Strong */ + /* Generic.Subheading */ + /* Generic.Traceback */ + /* Keyword.Constant */ + /* Keyword.Declaration */ + /* Keyword.Pseudo */ + /* Keyword.Reserved */ + /* Keyword.Type */ + /* Literal.Number */ + /* Literal.String */ + /* Name.Attribute */ + /* Name.Builtin */ + /* Name.Class */ + /* Name.Constant */ + /* Name.Entity */ + /* Name.Exception */ + /* Name.Function */ + /* Name.Namespace */ + /* Name.Tag */ + /* Name.Variable */ + /* Operator.Word */ + /* Text.Whitespace */ + /* Literal.Number.Float */ + /* Literal.Number.Hex */ + /* Literal.Number.Integer */ + /* Literal.Number.Oct */ + /* Literal.String.Backtick */ + /* Literal.String.Char */ + /* Literal.String.Doc */ + /* Literal.String.Double */ + /* Literal.String.Escape */ + /* Literal.String.Heredoc */ + /* Literal.String.Interpol */ + /* Literal.String.Other */ + /* Literal.String.Regex */ + /* Literal.String.Single */ + /* Literal.String.Symbol */ + /* Name.Builtin.Pseudo */ + /* Name.Variable.Class */ + /* Name.Variable.Global */ + /* Name.Variable.Instance */ + /* Literal.Number.Integer.Long */ } + .highlight .c { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + color: #000000; + font-weight: bold; } + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc { + color: #000000; + font-weight: bold; } + .highlight .kd { + color: #000000; + font-weight: bold; } + .highlight .kp { + color: #000000; + font-weight: bold; } + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; } + .highlight .m { + color: #009999; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #990000; + font-weight: bold; } + .highlight .nf { + color: #990000; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + .highlight .mf { + color: #009999; } + .highlight .mh { + color: #009999; } + .highlight .mi { + color: #009999; } + .highlight .mo { + color: #009999; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #009999; } diff --git a/docs/css/jazzy.css b/docs/css/jazzy.css new file mode 100644 index 0000000..0541d71 --- /dev/null +++ b/docs/css/jazzy.css @@ -0,0 +1,343 @@ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +a { + color: #0088cc; + text-decoration: none; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 26px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 1; } + header img { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 27px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 1; + margin-top: 26px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + padding-left: 3px; + margin-left: 15px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 0px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } +html.dash .height-container { + display: block; } +html.dash .item .token { + margin-left: 0; } +html.dash .content-wrapper { + width: auto; } +html.dash #footer { + position: static; } diff --git a/docs/docsets/.docset/Contents/Info.plist b/docs/docsets/.docset/Contents/Info.plist new file mode 100644 index 0000000..61863ec --- /dev/null +++ b/docs/docsets/.docset/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleIdentifier + com.jazzy. + CFBundleName + + DocSetPlatformFamily + + isDashDocset + + dashIndexFilePath + index.html + isJavaScriptEnabled + + DashDocSetFamily + dashtoc + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols.html new file mode 100644 index 0000000..bb10ab4 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols.html @@ -0,0 +1,440 @@ + + + + Protocols Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • +
    + + + + ICanLog + +
    +
    +
    +
    +
    +
    +

    Conforming types are required to specify a logging function.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ICanLog
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + IHasLog + +
    +
    +
    +
    +
    +
    +

    Conforming types are required to specify a reference to a +logging function.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol IHasLog
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + ICanCreateTLSParams + +
    +
    +
    +
    +
    +
    +

    Conforming types get createTLSParameters:allowInsecure:queue +convenience method.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ICanCreateTLSParams
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + ICanStateChange + +
    +
    +
    +
    +
    +
    +

    Conforming types where Self: MTSClient, inherit the +stateDidChange:to convenience method.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ICanStateChange : AnyObject, ICanLog, MTSClientDelegate
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
    +
  • +
    + + + + MTSClientDelegate + +
    +
    +
    +
    +
    +
    +

    Conformers to this protocol can serve as a delegate for +MTSClient conformers.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol MTSClientDelegate
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Types conforming to this protocol have convert:from: method +signature.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol ICanConvertFromMtsMessage
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MTSRequest + +
    +
    +
    +
    +
    +
    +

    Conforming types are messages that are able to request MTS +transactions over network connections.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol MTSRequest : ICanConvertFromMtsMessage, ICanLog
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MTSRequestType + +
    +
    +
    +
    +
    +
    +

    Types conforming to this protocol can be returned by an +MTSRequest’s convert:from: method.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol MTSRequestType
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MTSServer + +
    +
    +
    +
    +
    +
    +

    Conforming types can act as an MTS server that an MTS client +can attempt to connect with using MTS transactions.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol MTSServer : ICanCreateTLSParams
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanConvertFromMtsMessage.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanConvertFromMtsMessage.html new file mode 100644 index 0000000..20fa784 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanConvertFromMtsMessage.html @@ -0,0 +1,182 @@ + + + + ICanConvertFromMtsMessage Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

ICanConvertFromMtsMessage

+
+
+
public protocol ICanConvertFromMtsMessage
+ +
+
+

Types conforming to this protocol have convert:from: method +signature.

+ +
+
+
+
    +
  • +
    + + + + convert(from:) + +
    +
    +
    +
    +
    +
    +

    This method converts passed MTSMessage parameter into an +concrete object conforming to OnPortalRequestType.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func convert(from mtsMessage: MTSMessage) -> MTSRequestType
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + mtsMessage + + +
    +

    This parameter references an + MTSMessage object that method + will attempt to convert.

    +
    +
    +
    +
    +

    Return Value

    +

    A concrete object conforming to + OnPortalRequestType. If conversion fails, will + be an OPError.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanCreateTLSParams.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanCreateTLSParams.html new file mode 100644 index 0000000..807d29c --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanCreateTLSParams.html @@ -0,0 +1,195 @@ + + + + ICanCreateTLSParams Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

ICanCreateTLSParams

+
+
+
public protocol ICanCreateTLSParams
+ +
+
+

Conforming types get createTLSParameters:allowInsecure:queue +convenience method.

+ +
+
+
+
    +
  • +
    + + + + createTLSParameters(allowInsecure:queue:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This convenience method generates TLS parameters for +specified arguments.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func createTLSParameters(allowInsecure: Bool, queue: DispatchQueue) -> NWParameters
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + allowInsecure + + +
    +

    If true, insecure TLS + connections authorized.

    +
    +
    + + queue + + +
    +

    This is the dispacth queue that will + host TLS authentication.

    +
    +
    +
    +
    +

    Return Value

    +

    Networking Parameters from TLS connection.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanLog.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanLog.html new file mode 100644 index 0000000..d1c19ec --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanLog.html @@ -0,0 +1,175 @@ + + + + ICanLog Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

ICanLog

+
+
+
public protocol ICanLog
+ +
+
+

Conforming types are required to specify a logging function.

+ +
+
+
+
    +
  • +
    + + + + log(_:) + +
    +
    +
    +
    +
    +
    +

    This method provides callbacks to logging activity, +which can be executed in an environmentally compatible +way.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func log(_ msg: String)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + msg + + +
    +

    This parameter references a text string + describing the logging message.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanStateChange.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanStateChange.html new file mode 100644 index 0000000..44cf957 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/ICanStateChange.html @@ -0,0 +1,179 @@ + + + + ICanStateChange Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

ICanStateChange

+
+
+
public protocol ICanStateChange : AnyObject, ICanLog, MTSClientDelegate
+ +
+
+

Conforming types where Self: MTSClient, inherit the +stateDidChange:to convenience method.

+ +
+
+
+
    +
  • +
    + + + + stateDidChange(to:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This convenience method logs state changes and updates +self when connection is ready, firing off mtsConnect +and updating mtsModel.isConnected boolean value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func stateDidChange(to newState: NWConnection.State)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + newState + + +
    +

    The NWConnection.State that + connection has changed to.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols/IHasLog.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/IHasLog.html new file mode 100644 index 0000000..20430eb --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/IHasLog.html @@ -0,0 +1,155 @@ + + + + IHasLog Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

IHasLog

+
+
+
public protocol IHasLog
+ +
+
+

Conforming types are required to specify a reference to a +logging function.

+ +
+
+
+
    +
  • +
    + + + + log + +
    +
    +
    +
    +
    +
    +

    This read-only property stores a reference to a logging +method that conforms to LoggerReference signature.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var log: LoggerReference { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSClient.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSClient.html new file mode 100644 index 0000000..0175a84 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSClient.html @@ -0,0 +1,883 @@ + + + + MTSClient Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSClient

+
+
+
public protocol MTSClient : ICanCreateTLSParams, ICanStateChange
+ +
+
+

Conforming types can conduct MTS transactions over network +connections.

+ +
+
+
+ +
    +
  • +
    + + + + mtsModel + +
    +
    +
    +
    +
    +
    +

    This property stores a reference to an MTSDataModel with +appropriate cached values needed to interact with MTS +transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var mtsModel: MTSDataModel { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    This property stores a reference to an MTSClientDelegate +which provides protocol specific behaviors for MTS +transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var delegate: MTSClientDelegate? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + port + +
    +
    +
    +
    +
    +
    +

    This property stores the value of an UInt16 value that +equals port number to be used by MTS transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var port: UInt16 { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + host + +
    +
    +
    +
    +
    +
    +

    This property stores the value of an string value that +equals host address to be used by MTS transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var host: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + requestedObj + +
    +
    +
    +
    +
    +
    +

    This optional property can store the object requested +during MTS transaction. If nil, no object was recovered.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var requestedObj: MTSRequestType? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + await + +
    +
    +
    +
    +
    +
    +

    This private constant stores a dispatch semaphore in order +to block thread during asynchronous waits.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var await: DispatchSemaphore { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isWaiting + +
    +
    +
    +
    +
    +
    +

    This private boolean is true when thread is blocked and +client awaits connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isWaiting: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + expected + +
    +
    +
    +
    +
    +
    +

    This ivar stores expected message length for recursive +transactions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var expected: Int { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + buffer + +
    +
    +
    +
    +
    +
    +

    This ivar temporarily caches data that has been downloaded +over MTS for cross method use and recurssion.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var buffer: Data { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This boolean property allows for any process to register +connection no longer needed. Between transactions, it will +be checked to ensure that connection is terminated when data +transactions are complete.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isNeedsConnectionKilled: Bool { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + waitReceiver(_:) + +
    +
    +
    +
    +
    +
    +

    After sendWait is called, if it is successful this method +will be called to handle conversion of requested object +into a predefined MTSRequestType.

    +
    +

    Note

    +

    Await ivar should be signalled here, and isWaiting + should be set to false.

    + +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func waitReceiver(_ mtsMessage: MTSMessage)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + mtsMessage + + +
    +

    The MTSMessage that was used to + initiate the original transaction + request.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + withTLS(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method uses passed arguments to configure connection +for TLS using a certificate.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @discardableResult
    +public func withTLS(_ certificate: Data? = nil) -> MTSClient
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + certificate + + +
    +

    The license to use for TLS config.

    +
    +
    +
    +
    +

    Return Value

    +

    A discardableResult of self: MTSClient.

    +
    +
    +
    +
  • +
  • +
    + + + + connect() + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method attempts to connect to MTS server.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @discardableResult
    +public func connect() -> MTSClient
    + +
    +
    +
    +

    Return Value

    +

    A discardableResult of self as MTSClient.

    +
    +
    +
    +
  • +
  • +
    + + + + connectionFailed(error:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method is where failed connections are handled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func connectionFailed(error: NWError?)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + error + + +
    +

    The NWError generated during connection + failure.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + stop(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method ends MTS transactions and closes connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func stop(_ status: String)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + status + + +
    +

    The status before stop was triggered.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + send(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method sends passed argument of MTS connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func send(_ data: Data)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + data + + +
    +

    This argument is a raw Data type.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + send(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method sends passed argument of MTS connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func send(_ msg: MTSMessage)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + msg + + +
    +

    A predefined MTSMessage.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + setupReceive(on:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method is where conforming type will handle received +objects from the connection hosting MTS transactions.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func setupReceive(on connection: NWConnection)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + connection + + +
    +

    The network connection hosting MTS + transactions.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + sendWait(_:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method is where conforming type will coordinate sending +over MTS transaction and then waiting for a response to sent +request.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sendWait(_ data: MTSMessage) -> MTSRequestType
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + data + + +
    +

    A predefined MTSMessage that requests an + acknowledgement or query results.

    +
    +
    +
    +
    +

    Return Value

    +

    The MTSRequestType returned from MTS transaction.

    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSClientDelegate.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSClientDelegate.html new file mode 100644 index 0000000..9dfca3d --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSClientDelegate.html @@ -0,0 +1,230 @@ + + + + MTSClientDelegate Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSClientDelegate

+
+
+
public protocol MTSClientDelegate
+ +
+
+

Conformers to this protocol can serve as a delegate for +MTSClient conformers.

+ +
+
+
+
    +
  • +
    + + + + mtsConnect() + +
    +
    +
    +
    +
    +
    +

    This method is where delegate defines connection behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func mtsConnect()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + mtsDisconnect() + +
    +
    +
    +
    +
    +
    +

    This method is where delegate defines disconnection +behavior.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func mtsDisconnect()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + mtsReceive(_:) + +
    +
    +
    +
    +
    +
    +

    This method is where delegate defines how received MTS +messages are handled.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func mtsReceive(_ mtsMessage: MTSMessage)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + mtsMessage + + +
    +

    This parameter references MTS + message received.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSRequest.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSRequest.html new file mode 100644 index 0000000..0442a70 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSRequest.html @@ -0,0 +1,162 @@ + + + + MTSRequest Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSRequest

+
+
+
public protocol MTSRequest : ICanConvertFromMtsMessage, ICanLog
+ +
+
+

Conforming types are messages that are able to request MTS +transactions over network connections.

+ +
+
+
+ +
    +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    +

    This read-only property is the only way to require enum +conformance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var rawValue: Int { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSServer.html b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSServer.html new file mode 100644 index 0000000..07a823f --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Protocols/MTSServer.html @@ -0,0 +1,440 @@ + + + + MTSServer Protocol Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSServer

+
+
+
public protocol MTSServer : ICanCreateTLSParams
+ +
+
+

Conforming types can act as an MTS server that an MTS client +can attempt to connect with using MTS transactions.

+ +
+
+
+ +
    +
  • +
    + + + + mtsModel + +
    +
    +
    +
    +
    +
    +

    This property stores a reference to an MTSDataModel with +appropriate cached values needed to interact with MTS +transport layer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var mtsModel: MTSDataModel { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + port + +
    +
    +
    +
    +
    +
    +

    This property is equal to the port id that network +connections will use.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var port: UInt16 { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + clientCertRequired + +
    +
    +
    +
    +
    +
    +

    This property is a boolean value that is true when TLS +certificate is required for connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var clientCertRequired: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + listener + +
    +
    +
    +
    +
    +
    +

    This is the network listener that will listen for +connections.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var listener: NWListener? { get set }
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + start() + +
    +
    +
    +
    +
    +
    +

    This method starts the server listening on its port.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func start() -> MTSServer
    + +
    +
    +
    +

    Return Value

    +

    A discardableResult of self as MTSServer.

    +
    +
    +
    +
  • +
  • +
    + + + + mtsDisconnect(_:) + +
    +
    +
    +
    +
    +
    +

    This method disconnects specified client from server +and performs any clean up required.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func mtsDisconnect(_ client: MTSClient)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + client + + +
    +

    The specific MTSClient to be + disconnected.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + withTLS(certificate:clientCertificateRequired:) + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method uses passed arguments to configure connection +for TLS using a certificate.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @discardableResult
    +mutating public func withTLS(certificate: Data?, clientCertificateRequired: Bool) -> MTSServer
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + certificate + + +
    +

    The license to use for TLS config.

    +
    +
    + + clientCertificateRequired + + +
    +

    When set to true, + this server instance will require TLS + certificate.

    +
    +
    +
    +
    +

    Return Value

    +

    A discardableResult of self: MTSServer

    +
    +
    +
    +
  • +
  • +
    + + + + stop() + + + Extension method + +
    +
    +
    +
    +
    +
    +

    This method ends MTS transactions and closes connection.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func stop()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Structs.html b/docs/docsets/.docset/Contents/Resources/Documents/Structs.html new file mode 100644 index 0000000..76a9c6f --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Structs.html @@ -0,0 +1,182 @@ + + + + Structures Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

Structures

+

The following structures are available globally.

+ +
+
+
+
    +
  • +
    + + + + MTSDataModel + +
    +
    +
    +
    +
    +
    +

    This value type contains the various IVars needed for MTS +clients and servers to make successful MTS transactions, and +their default values when necessary.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct MTSDataModel
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MTSMessage + +
    +
    +
    +
    +
    +
    +

    This value type defines the MTS primary message structure.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct MTSMessage : Codable
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Structs/MTSDataModel.html b/docs/docsets/.docset/Contents/Resources/Documents/Structs/MTSDataModel.html new file mode 100644 index 0000000..8a13d4a --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Structs/MTSDataModel.html @@ -0,0 +1,360 @@ + + + + MTSDataModel Structure Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSDataModel

+
+
+
public struct MTSDataModel
+ +
+
+

This value type contains the various IVars needed for MTS +clients and servers to make successful MTS transactions, and +their default values when necessary.

+ +
+
+
+ +
    +
  • +
    + + + + user + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores an account name +associated with USER for MTS authentication.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var user: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pass + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores an account passphrase +associated with USER for MTS authentication.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var pass: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isUsingTls + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores a boolean value that +is true when connecting with TLS certificates.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isUsingTls: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + certificate + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores a raw data version of +the certificate that is used with TLS connections.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var certificate: Data?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + jwt + +
    +
    +
    +
    +
    +
    +

    This public optional variable can store a string +representation of JSON Web Token used for MTS +authentication.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var jwt: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isConnected + +
    +
    +
    +
    +
    +
    +

    This public muteable variable stores a boolean value that +is true when client / server is connected.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isConnected: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + connection + +
    +
    +
    +
    +
    +
    +

    This optional property can store a reference to the +network connection that MTS is interacting over.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var connection: NWConnection?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    This overrides convenience init in order to ensure that it +is publicly accessible.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init()
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Structs/MTSMessage.html b/docs/docsets/.docset/Contents/Resources/Documents/Structs/MTSMessage.html new file mode 100644 index 0000000..8334b2a --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Structs/MTSMessage.html @@ -0,0 +1,319 @@ + + + + MTSMessage Structure Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

MTSMessage

+
+
+
public struct MTSMessage : Codable
+ +
+
+

This value type defines the MTS primary message structure.

+ +
+
+
+
    +
  • +
    + + + + route + +
    +
    +
    +
    +
    +
    +

    This public property stores message route as an integer.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var route: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + jwt + +
    +
    +
    +
    +
    +
    +

    This public property stores JSON Web Token as a string.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var jwt: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + data + +
    +
    +
    +
    +
    +
    +

    This public property stores messages content as data.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var data: Data
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + reply + +
    +
    +
    +
    +
    +
    +

    This public property stores awknowledgement requirement.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var reply: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributeRoute + +
    +
    +
    +
    +
    +
    +

    This optional public property stores attribute route.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var attributeRoute: String?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(request: MTSRequest, attributeRoute: String?,
    +     jwt: String, data: Data, reply: Bool = false)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + request + + +
    +

    MTSRequest type for MTS transaction.

    +
    +
    + + attributeRoute + + +
    +

    Optional attribute route path.

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/Typealiases.html b/docs/docsets/.docset/Contents/Resources/Documents/Typealiases.html new file mode 100644 index 0000000..22c5a06 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/Typealiases.html @@ -0,0 +1,297 @@ + + + + Type Aliases Reference + + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+

Type Aliases

+

The following type aliases are available globally.

+ +
+
+
+ +
    +
  • +
    + + + + LoggerReference + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ log: String) -> Void

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias LoggerReference = (_ log: String) -> Void
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + MTSConnection + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ client: OPClient) -> Void

    + +
      +
    • client: The MTSClient conformer that manages MTS transaction + passed as an argument.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias MTSConnection = (_ client: MTSClient) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MTSReceive + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ client: OPClient, _ receive: +MTSMessage) -> Void

    + +
      +
    • client: The MTSClient conformer that manages MTS transaction + passed as an argument.
    • +
    • receive: The MTSMessage conformer that manages connection + passed as an argument.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias MTSReceive = (_ client: MTSClient, _ receive: MTSMessage) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MTSDisconnect + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ client: OPClient) -> Void

    + +
      +
    • client: The MTSClient conformer that manages MTS transaction + passed as an argument.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias MTSDisconnect = (_ client: MTSClient) -> Void
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MTSConvert + +
    +
    +
    +
    +
    +
    +

    This typealias defines: (_ mtsMessage: MTSMessage, _ log: +LoggerReference) -> MTSRequestType

    + +
      +
    • receive: The MTSMessage conformer that manages connection + passed as an argument.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias MTSConvert = (_ mtsMessage: MTSMessage, _ log: LoggerReference) -> MTSRequestType
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/css/highlight.css b/docs/docsets/.docset/Contents/Resources/Documents/css/highlight.css new file mode 100644 index 0000000..d0db0e1 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/css/highlight.css @@ -0,0 +1,200 @@ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight { + /* Comment */ + /* Error */ + /* Keyword */ + /* Operator */ + /* Comment.Multiline */ + /* Comment.Preproc */ + /* Comment.Single */ + /* Comment.Special */ + /* Generic.Deleted */ + /* Generic.Deleted.Specific */ + /* Generic.Emph */ + /* Generic.Error */ + /* Generic.Heading */ + /* Generic.Inserted */ + /* Generic.Inserted.Specific */ + /* Generic.Output */ + /* Generic.Prompt */ + /* Generic.Strong */ + /* Generic.Subheading */ + /* Generic.Traceback */ + /* Keyword.Constant */ + /* Keyword.Declaration */ + /* Keyword.Pseudo */ + /* Keyword.Reserved */ + /* Keyword.Type */ + /* Literal.Number */ + /* Literal.String */ + /* Name.Attribute */ + /* Name.Builtin */ + /* Name.Class */ + /* Name.Constant */ + /* Name.Entity */ + /* Name.Exception */ + /* Name.Function */ + /* Name.Namespace */ + /* Name.Tag */ + /* Name.Variable */ + /* Operator.Word */ + /* Text.Whitespace */ + /* Literal.Number.Float */ + /* Literal.Number.Hex */ + /* Literal.Number.Integer */ + /* Literal.Number.Oct */ + /* Literal.String.Backtick */ + /* Literal.String.Char */ + /* Literal.String.Doc */ + /* Literal.String.Double */ + /* Literal.String.Escape */ + /* Literal.String.Heredoc */ + /* Literal.String.Interpol */ + /* Literal.String.Other */ + /* Literal.String.Regex */ + /* Literal.String.Single */ + /* Literal.String.Symbol */ + /* Name.Builtin.Pseudo */ + /* Name.Variable.Class */ + /* Name.Variable.Global */ + /* Name.Variable.Instance */ + /* Literal.Number.Integer.Long */ } + .highlight .c { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + color: #000000; + font-weight: bold; } + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc { + color: #000000; + font-weight: bold; } + .highlight .kd { + color: #000000; + font-weight: bold; } + .highlight .kp { + color: #000000; + font-weight: bold; } + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; } + .highlight .m { + color: #009999; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #990000; + font-weight: bold; } + .highlight .nf { + color: #990000; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + .highlight .mf { + color: #009999; } + .highlight .mh { + color: #009999; } + .highlight .mi { + color: #009999; } + .highlight .mo { + color: #009999; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #009999; } diff --git a/docs/docsets/.docset/Contents/Resources/Documents/css/jazzy.css b/docs/docsets/.docset/Contents/Resources/Documents/css/jazzy.css new file mode 100644 index 0000000..0541d71 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/css/jazzy.css @@ -0,0 +1,343 @@ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +a { + color: #0088cc; + text-decoration: none; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 26px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 1; } + header img { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 27px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 1; + margin-top: 26px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + padding-left: 3px; + margin-left: 15px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 0px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } +html.dash .height-container { + display: block; } +html.dash .item .token { + margin-left: 0; } +html.dash .content-wrapper { + width: auto; } +html.dash #footer { + position: static; } diff --git a/docs/docsets/.docset/Contents/Resources/Documents/img/carat.png b/docs/docsets/.docset/Contents/Resources/Documents/img/carat.png new file mode 100755 index 0000000..29d2f7f Binary files /dev/null and b/docs/docsets/.docset/Contents/Resources/Documents/img/carat.png differ diff --git a/docs/docsets/.docset/Contents/Resources/Documents/img/dash.png b/docs/docsets/.docset/Contents/Resources/Documents/img/dash.png new file mode 100755 index 0000000..6f694c7 Binary files /dev/null and b/docs/docsets/.docset/Contents/Resources/Documents/img/dash.png differ diff --git a/docs/docsets/.docset/Contents/Resources/Documents/img/gh.png b/docs/docsets/.docset/Contents/Resources/Documents/img/gh.png new file mode 100755 index 0000000..628da97 Binary files /dev/null and b/docs/docsets/.docset/Contents/Resources/Documents/img/gh.png differ diff --git a/docs/docsets/.docset/Contents/Resources/Documents/index.html b/docs/docsets/.docset/Contents/Resources/Documents/index.html new file mode 100644 index 0000000..463db5a --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/index.html @@ -0,0 +1,113 @@ + + + + Reference + + + + + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+ +

Authors

+ +
+
+ +
+
+ + + diff --git a/docs/docsets/.docset/Contents/Resources/Documents/js/jazzy.js b/docs/docsets/.docset/Contents/Resources/Documents/js/jazzy.js new file mode 100755 index 0000000..c31dc05 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/js/jazzy.js @@ -0,0 +1,59 @@ +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`.token[href="${location.hash}"]`); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); diff --git a/docs/docsets/.docset/Contents/Resources/Documents/js/jquery.min.js b/docs/docsets/.docset/Contents/Resources/Documents/js/jquery.min.js new file mode 100644 index 0000000..4d9b3a2 --- /dev/null +++ b/docs/docsets/.docset/Contents/Resources/Documents/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" + + + + + +
+
+

Docs (100% documented)

+
+
+
+ +
+
+ +
+
+
+ +

Authors

+ +
+
+ +
+
+ + + diff --git a/docs/js/jazzy.js b/docs/js/jazzy.js new file mode 100755 index 0000000..c31dc05 --- /dev/null +++ b/docs/js/jazzy.js @@ -0,0 +1,59 @@ +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`.token[href="${location.hash}"]`); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); diff --git a/docs/js/jquery.min.js b/docs/js/jquery.min.js new file mode 100644 index 0000000..4d9b3a2 --- /dev/null +++ b/docs/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("