From 1bc000ec1a36812fac8abc7c56a39b9286be45f7 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 27 Sep 2020 16:39:08 +0900 Subject: [PATCH 001/101] Add some files --- .gitignore | 1 + .ruby-version | 1 + .../Portannict.xcodeproj/project.pbxproj | 397 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcschemes/xcschememanagement.plist | 14 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 98 +++++ .../Portannict/Assets.xcassets/Contents.json | 6 + .../Portannict/Home/ActivityStatusView.swift | 47 +++ Portannict/Portannict/Home/HomeView.swift | 41 ++ .../Portannict/Home/HomeViewModel.swift | 23 + .../Portannict/Home/QuoteWorkView.swift | 31 ++ Portannict/Portannict/Info.plist | 48 +++ Portannict/Portannict/Login/LoginView.swift | 20 + Portannict/Portannict/Models/Activity.swift | 43 ++ .../Portannict/Models/PreviewModel.swift | 31 ++ Portannict/Portannict/Models/Work.swift | 12 + Portannict/Portannict/PortannictApp.swift | 17 + .../Preview Assets.xcassets/Contents.json | 6 + Portannict/Portannict/ProfileView.swift | 48 +++ Portannict/Portannict/RootTabView.swift | 43 ++ Portannict/Portannict/RootView.swift | 26 ++ 23 files changed, 979 insertions(+) create mode 100644 .ruby-version create mode 100644 Portannict/Portannict.xcodeproj/project.pbxproj create mode 100644 Portannict/Portannict.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Portannict/Portannict/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Portannict/Portannict/Assets.xcassets/Contents.json create mode 100644 Portannict/Portannict/Home/ActivityStatusView.swift create mode 100644 Portannict/Portannict/Home/HomeView.swift create mode 100644 Portannict/Portannict/Home/HomeViewModel.swift create mode 100644 Portannict/Portannict/Home/QuoteWorkView.swift create mode 100644 Portannict/Portannict/Info.plist create mode 100644 Portannict/Portannict/Login/LoginView.swift create mode 100644 Portannict/Portannict/Models/Activity.swift create mode 100644 Portannict/Portannict/Models/PreviewModel.swift create mode 100644 Portannict/Portannict/Models/Work.swift create mode 100644 Portannict/Portannict/PortannictApp.swift create mode 100644 Portannict/Portannict/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 Portannict/Portannict/ProfileView.swift create mode 100644 Portannict/Portannict/RootTabView.swift create mode 100644 Portannict/Portannict/RootView.swift diff --git a/.gitignore b/.gitignore index fb208270..75eb28e5 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ Pods/ .DS_Store **/*.xcuserstate +xcuserdata node_modules vendor/bundle diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 00000000..e70b4523 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.6.0 diff --git a/Portannict/Portannict.xcodeproj/project.pbxproj b/Portannict/Portannict.xcodeproj/project.pbxproj new file mode 100644 index 00000000..d83a05b0 --- /dev/null +++ b/Portannict/Portannict.xcodeproj/project.pbxproj @@ -0,0 +1,397 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */; }; + CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */; }; + CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */; }; + CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CF08FC0D24B9AD1A00CD29DD /* Preview Assets.xcassets */; }; + CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC1524B9AFC500CD29DD /* ProfileView.swift */; }; + CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC1724B9B04900CD29DD /* HomeView.swift */; }; + CF42CFD124C9D73400AAD8E8 /* Work.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD024C9D73400AAD8E8 /* Work.swift */; }; + CF42CFD324C9D7D300AAD8E8 /* Activity.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD224C9D7D300AAD8E8 /* Activity.swift */; }; + CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */; }; + CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; + CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; + CF841D4724CA6A1F00F3723B /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4624CA6A1F00F3723B /* RootView.swift */; }; + CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */; }; + CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + CF08FC0324B9AD1A00CD29DD /* Portannict.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Portannict.app; sourceTree = BUILT_PRODUCTS_DIR; }; + CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortannictApp.swift; sourceTree = ""; }; + CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootTabView.swift; sourceTree = ""; }; + CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + CF08FC0D24B9AD1A00CD29DD /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + CF08FC0F24B9AD1A00CD29DD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + CF08FC1524B9AFC500CD29DD /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; + CF08FC1724B9B04900CD29DD /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; + CF42CFD024C9D73400AAD8E8 /* Work.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Work.swift; sourceTree = ""; }; + CF42CFD224C9D7D300AAD8E8 /* Activity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Activity.swift; sourceTree = ""; }; + CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewModel.swift; sourceTree = ""; }; + CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; + CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; + CF841D4624CA6A1F00F3723B /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; }; + CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; + CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteWorkView.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + CF08FC0024B9AD1A00CD29DD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + CF08FBFA24B9AD1A00CD29DD = { + isa = PBXGroup; + children = ( + CF08FC0524B9AD1A00CD29DD /* Portannict */, + CF08FC0424B9AD1A00CD29DD /* Products */, + ); + sourceTree = ""; + }; + CF08FC0424B9AD1A00CD29DD /* Products */ = { + isa = PBXGroup; + children = ( + CF08FC0324B9AD1A00CD29DD /* Portannict.app */, + ); + name = Products; + sourceTree = ""; + }; + CF08FC0524B9AD1A00CD29DD /* Portannict */ = { + isa = PBXGroup; + children = ( + CF841D4624CA6A1F00F3723B /* RootView.swift */, + CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */, + CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, + CF42CFCF24C9D72800AAD8E8 /* Models */, + CF841D3E24CA67F600F3723B /* Login */, + CFFE4FFA24C9BF1A003AECE5 /* Home */, + CF08FC1524B9AFC500CD29DD /* ProfileView.swift */, + CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, + CF08FC0F24B9AD1A00CD29DD /* Info.plist */, + CF08FC0C24B9AD1A00CD29DD /* Preview Content */, + ); + path = Portannict; + sourceTree = ""; + }; + CF08FC0C24B9AD1A00CD29DD /* Preview Content */ = { + isa = PBXGroup; + children = ( + CF08FC0D24B9AD1A00CD29DD /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + CF42CFCF24C9D72800AAD8E8 /* Models */ = { + isa = PBXGroup; + children = ( + CF42CFD024C9D73400AAD8E8 /* Work.swift */, + CF42CFD224C9D7D300AAD8E8 /* Activity.swift */, + CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + CF841D3E24CA67F600F3723B /* Login */ = { + isa = PBXGroup; + children = ( + CF841D4424CA69A600F3723B /* LoginView.swift */, + ); + path = Login; + sourceTree = ""; + }; + CFFE4FFA24C9BF1A003AECE5 /* Home */ = { + isa = PBXGroup; + children = ( + CF08FC1724B9B04900CD29DD /* HomeView.swift */, + CF841D3C24CA626400F3723B /* HomeViewModel.swift */, + CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */, + CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */, + ); + path = Home; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + CF08FC0224B9AD1A00CD29DD /* Portannict */ = { + isa = PBXNativeTarget; + buildConfigurationList = CF08FC1224B9AD1A00CD29DD /* Build configuration list for PBXNativeTarget "Portannict" */; + buildPhases = ( + CF08FBFF24B9AD1A00CD29DD /* Sources */, + CF08FC0024B9AD1A00CD29DD /* Frameworks */, + CF08FC0124B9AD1A00CD29DD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Portannict; + productName = Portannict; + productReference = CF08FC0324B9AD1A00CD29DD /* Portannict.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + CF08FBFB24B9AD1A00CD29DD /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1200; + LastUpgradeCheck = 1200; + TargetAttributes = { + CF08FC0224B9AD1A00CD29DD = { + CreatedOnToolsVersion = 12.0; + }; + }; + }; + buildConfigurationList = CF08FBFE24B9AD1A00CD29DD /* Build configuration list for PBXProject "Portannict" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = CF08FBFA24B9AD1A00CD29DD; + productRefGroup = CF08FC0424B9AD1A00CD29DD /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + CF08FC0224B9AD1A00CD29DD /* Portannict */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + CF08FC0124B9AD1A00CD29DD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, + CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + CF08FBFF24B9AD1A00CD29DD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, + CF42CFD124C9D73400AAD8E8 /* Work.swift in Sources */, + CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, + CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, + CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, + CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, + CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, + CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */, + CF841D4724CA6A1F00F3723B /* RootView.swift in Sources */, + CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */, + CF42CFD324C9D7D300AAD8E8 /* Activity.swift in Sources */, + CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + CF08FC1024B9AD1A00CD29DD /* 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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; + COPY_PHASE_STRIP = NO; + 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 = 14.0; + 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; + }; + CF08FC1124B9AD1A00CD29DD /* 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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; + COPY_PHASE_STRIP = NO; + 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 = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + CF08FC1324B9AD1A00CD29DD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"Portannict/Preview Content\""; + DEVELOPMENT_TEAM = V8AZ23YEL4; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = Portannict/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.YutoAkiba.Annict-for-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + CF08FC1424B9AD1A00CD29DD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"Portannict/Preview Content\""; + DEVELOPMENT_TEAM = V8AZ23YEL4; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = Portannict/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.YutoAkiba.Annict-for-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + CF08FBFE24B9AD1A00CD29DD /* Build configuration list for PBXProject "Portannict" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CF08FC1024B9AD1A00CD29DD /* Debug */, + CF08FC1124B9AD1A00CD29DD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + CF08FC1224B9AD1A00CD29DD /* Build configuration list for PBXNativeTarget "Portannict" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CF08FC1324B9AD1A00CD29DD /* Debug */, + CF08FC1424B9AD1A00CD29DD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = CF08FBFB24B9AD1A00CD29DD /* Project object */; +} diff --git a/Portannict/Portannict.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Portannict/Portannict.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/Portannict/Portannict.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist b/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..f027ab2e --- /dev/null +++ b/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Portannict.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Portannict/Portannict/Assets.xcassets/AccentColor.colorset/Contents.json b/Portannict/Portannict/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/Portannict/Portannict/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..9221b9bb --- /dev/null +++ b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Portannict/Portannict/Assets.xcassets/Contents.json b/Portannict/Portannict/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/Portannict/Portannict/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Portannict/Portannict/Home/ActivityStatusView.swift b/Portannict/Portannict/Home/ActivityStatusView.swift new file mode 100644 index 00000000..74c88aec --- /dev/null +++ b/Portannict/Portannict/Home/ActivityStatusView.swift @@ -0,0 +1,47 @@ +// +// ActivityStatusView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/23. +// + +import SwiftUI + +struct ActivityStatusView: View { + @Binding var activityStatus: ActivityStatus + + var body: some View { + HStack(alignment: .top, spacing: 12) { + Circle() + .frame(width: 40, height: 40, alignment: .leading) + .foregroundColor(.gray) + VStack(alignment: .leading, spacing: 12) { + HStack { + Text("touyu") + .font(.system(size: 14, weight: .bold, design: .default)) + Text("@touyu") + .font(.system(size: 14, weight: .regular, design: .default)) + .foregroundColor(.gray) + Text("・10分前") + .font(.system(size: 14, weight: .regular, design: .default)) + .foregroundColor(.gray) + } + Text("ステータスを見たに変更しました。") + QuoteWorkView(work: $activityStatus.work) + .frame(height: 80) + .cornerRadius(8) + .overlay(RoundedRectangle(cornerRadius: 8) + .stroke(Color.gray, lineWidth: 0.5)) + } + Spacer(minLength: 0) + } + } +} + +struct ActivityStatusView_Previews: PreviewProvider { + static var previews: some View { + let item = PreviewModel.activityStatus + ActivityStatusView(activityStatus: .constant(item)) + .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/400.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/200.0/*@END_MENU_TOKEN@*/)) + } +} diff --git a/Portannict/Portannict/Home/HomeView.swift b/Portannict/Portannict/Home/HomeView.swift new file mode 100644 index 00000000..7d6a7644 --- /dev/null +++ b/Portannict/Portannict/Home/HomeView.swift @@ -0,0 +1,41 @@ +// +// HomeView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/11. +// + +import SwiftUI + +struct HomeView: View { + @ObservedObject var viewModel: HomeViewModel + + var body: some View { + NavigationView { + ScrollView { + LazyVStack { + ForEach(viewModel.activities.indices, id: \.self) { index in + let activity = $viewModel.activities[index] + switch activity.wrappedValue.action { + case .status: + ActivityStatusView(activityStatus: Binding(activity.status)!) + .padding(EdgeInsets(top: 0, leading: 12, bottom: 12, trailing: 12)) + } + } + } + .padding(.top, 24) + } + .navigationBarTitle("Home") + .onAppear { + viewModel.fetch() + } + } + } +} + +struct HomeView_Previews: PreviewProvider { + static var previews: some View { + let viewModel = HomeViewModel(activities: PreviewModel.activities) + HomeView(viewModel: viewModel) + } +} diff --git a/Portannict/Portannict/Home/HomeViewModel.swift b/Portannict/Portannict/Home/HomeViewModel.swift new file mode 100644 index 00000000..e735e069 --- /dev/null +++ b/Portannict/Portannict/Home/HomeViewModel.swift @@ -0,0 +1,23 @@ +// +// HomeViewModel.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/24. +// + +import Foundation + +final class HomeViewModel: ObservableObject { + @Published var activities: [Activity] = [] + + init(activities: [Activity] = []) { + self.activities = activities + } + + func fetch() { + print("Fetch") + Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { [weak self] _ in + self?.activities = PreviewModel.activities + } + } +} diff --git a/Portannict/Portannict/Home/QuoteWorkView.swift b/Portannict/Portannict/Home/QuoteWorkView.swift new file mode 100644 index 00000000..d90eb4f2 --- /dev/null +++ b/Portannict/Portannict/Home/QuoteWorkView.swift @@ -0,0 +1,31 @@ +// +// QuoteWorkView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/23. +// + +import SwiftUI + +struct QuoteWorkView: View { + @Binding var work: Work + + var body: some View { + HStack(alignment: .center, spacing: 8) { + Rectangle() + .foregroundColor(.gray) + .aspectRatio(3/4, contentMode: .fit) + Text(work.title) + .font(.subheadline) + Spacer(minLength: 0) + } + } +} + +struct QuoteWorkView_Previews: PreviewProvider { + static var previews: some View { + let work = PreviewModel.work + QuoteWorkView(work: .constant(work)) + .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) + } +} diff --git a/Portannict/Portannict/Info.plist b/Portannict/Portannict/Info.plist new file mode 100644 index 00000000..534b9943 --- /dev/null +++ b/Portannict/Portannict/Info.plist @@ -0,0 +1,48 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Portannict/Portannict/Login/LoginView.swift b/Portannict/Portannict/Login/LoginView.swift new file mode 100644 index 00000000..8a4f1951 --- /dev/null +++ b/Portannict/Portannict/Login/LoginView.swift @@ -0,0 +1,20 @@ +// +// LoginView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/24. +// + +import SwiftUI + +struct LoginView: View { + var body: some View { + Text("Login Screen") + } +} + +struct LoginView_Previews: PreviewProvider { + static var previews: some View { + LoginView() + } +} diff --git a/Portannict/Portannict/Models/Activity.swift b/Portannict/Portannict/Models/Activity.swift new file mode 100644 index 00000000..5be8e316 --- /dev/null +++ b/Portannict/Portannict/Models/Activity.swift @@ -0,0 +1,43 @@ +// +// Activity.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/23. +// + +import Foundation + +enum ActivityAction { + case status +} + +struct Activity: Identifiable { + var id = UUID() + let action: ActivityAction + var status: ActivityStatus? +} + +//enum Activity { +// case status(ActivityStatus) +// +// var status: ActivityStatus { +// switch self { +// case .status(let item): +// return item +// } +// } +//} +// +//extension Activity: Identifiable { +// var id: UUID { +// switch self { +// case .status(let item): +// return item.id +// } +// } +//} + +struct ActivityStatus: Identifiable { + var id = UUID() + var work: Work +} diff --git a/Portannict/Portannict/Models/PreviewModel.swift b/Portannict/Portannict/Models/PreviewModel.swift new file mode 100644 index 00000000..6cc51321 --- /dev/null +++ b/Portannict/Portannict/Models/PreviewModel.swift @@ -0,0 +1,31 @@ +// +// PreviewModel.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/23. +// + +import Foundation + +struct PreviewModel { + static var work: Work { + Work(title: "やはり俺の青春ラブコメは間違っている。完") + } + + static var activityStatus: ActivityStatus { + ActivityStatus(work: work) + } + + static var activity: Activity { + Activity(action: .status, status: activityStatus) + } + + static var activities: [Activity] { + var result = [Activity]() + for _ in 0..<30 { + result.append(activity) + } + print(result) + return result + } +} diff --git a/Portannict/Portannict/Models/Work.swift b/Portannict/Portannict/Models/Work.swift new file mode 100644 index 00000000..f403dfe4 --- /dev/null +++ b/Portannict/Portannict/Models/Work.swift @@ -0,0 +1,12 @@ +// +// Work.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/23. +// + +import Foundation + +struct Work { + let title: String +} diff --git a/Portannict/Portannict/PortannictApp.swift b/Portannict/Portannict/PortannictApp.swift new file mode 100644 index 00000000..5e45ca73 --- /dev/null +++ b/Portannict/Portannict/PortannictApp.swift @@ -0,0 +1,17 @@ +// +// PortannictApp.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/11. +// + +import SwiftUI + +@main +struct PortannictApp: App { + var body: some Scene { + WindowGroup { + RootView() + } + } +} diff --git a/Portannict/Portannict/Preview Content/Preview Assets.xcassets/Contents.json b/Portannict/Portannict/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/Portannict/Portannict/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Portannict/Portannict/ProfileView.swift b/Portannict/Portannict/ProfileView.swift new file mode 100644 index 00000000..506cad4a --- /dev/null +++ b/Portannict/Portannict/ProfileView.swift @@ -0,0 +1,48 @@ +// +// ProfileView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/11. +// + +import SwiftUI + +struct ProfileView: View { + var body: some View { + ScrollView { + VStack(alignment: .leading) { + HStack(spacing: 16) { + Circle() + .fill(Color.gray) + .frame(width: 100, height: /*@START_MENU_TOKEN@*/100/*@END_MENU_TOKEN@*/) + VStack(alignment: .leading) { + Text("Name") + .font(.title) + .bold() + Text("@username") + .fontWeight(.medium) + .foregroundColor(.gray) + } + Spacer() + } + .padding(.init(top: 20, leading: 20, bottom: 20, trailing: 20)) + Text("「Portannict」というAnnictのクライアントアプリを作っています。") + .padding(.init(top: 0, leading: 20, bottom: 0, trailing: 20)) + + LazyVStack(alignment: .leading) { + ForEach(0..<100) { i in + Text("\(i)") + } + .padding(.init(top: 0, leading: 20, bottom: 0, trailing: 20)) + } + } + } + } +} + +struct ProfileView_Previews: PreviewProvider { + static var previews: some View { + ProfileView() + } +} + diff --git a/Portannict/Portannict/RootTabView.swift b/Portannict/Portannict/RootTabView.swift new file mode 100644 index 00000000..504e1e5d --- /dev/null +++ b/Portannict/Portannict/RootTabView.swift @@ -0,0 +1,43 @@ +// +// RootTabView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/11. +// + +import SwiftUI + +struct RootTabView: View { + var body: some View { + TabView { + HomeView(viewModel: HomeViewModel()) + .tabItem { + Image(systemName: "house.fill") + .font(.system(size: 21)) + } + Image(systemName: "pencil.circle.fill") + .tabItem { + Image(systemName: "pencil.circle.fill") + .font(.system(size: 21)) + } + Image(systemName: "pencil.circle.fill") + .tabItem { + Image(systemName: "magnifyingglass.circle.fill") + .font(.system(size: 21)) + } + ProfileView() + .tabItem { + Image(systemName: "person.fill") + .font(.system(size: 21)) + } + } + } +} + +struct RootTabView_Previews: PreviewProvider { + static var previews: some View { + RootTabView() + .previewDevice("iPhone 11") + + } +} diff --git a/Portannict/Portannict/RootView.swift b/Portannict/Portannict/RootView.swift new file mode 100644 index 00000000..83cba9f7 --- /dev/null +++ b/Portannict/Portannict/RootView.swift @@ -0,0 +1,26 @@ +// +// RootView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/24. +// + +import SwiftUI + +struct RootView: View { + @State private var isLogin: Bool = true + + var body: some View { + if isLogin { + RootTabView() + } else { + LoginView() + } + } +} + +struct RootView_Previews: PreviewProvider { + static var previews: some View { + RootView() + } +} From b6b2c7f838b1ffe64309648dc3908a30ffea2734 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Fri, 13 Nov 2020 00:56:38 +0900 Subject: [PATCH 002/101] Fix --- Annict-for-iOS/schema.json | 248 ++--- Portannict/Common/ViewModel.swift | 97 ++ .../Portannict.xcodeproj/project.pbxproj | 26 +- Portannict/Portannict/PortannictApp.swift | 2 +- Portannict/Portannict/Root/RootView.swift | 35 + .../Portannict/Root/RootViewModel.swift | 55 + Portannict/Portannict/RootView.swift | 26 - package-lock.json | 966 +++++++++--------- 8 files changed, 820 insertions(+), 635 deletions(-) create mode 100644 Portannict/Common/ViewModel.swift create mode 100644 Portannict/Portannict/Root/RootView.swift create mode 100644 Portannict/Portannict/Root/RootViewModel.swift delete mode 100644 Portannict/Portannict/RootView.swift diff --git a/Annict-for-iOS/schema.json b/Annict-for-iOS/schema.json index eb289596..adbc7128 100644 --- a/Annict-for-iOS/schema.json +++ b/Annict-for-iOS/schema.json @@ -706,7 +706,7 @@ }, { "kind": "OBJECT", - "name": "Status", + "name": "MultipleRecord", "ofType": null }, { @@ -716,7 +716,7 @@ }, { "kind": "OBJECT", - "name": "MultipleRecord", + "name": "Status", "ofType": null }, { @@ -5243,7 +5243,7 @@ "possibleTypes": [ { "kind": "OBJECT", - "name": "Status", + "name": "MultipleRecord", "ofType": null }, { @@ -5258,14 +5258,14 @@ }, { "kind": "OBJECT", - "name": "MultipleRecord", + "name": "Status", "ofType": null } ] }, { "kind": "OBJECT", - "name": "Status", + "name": "MultipleRecord", "description": null, "fields": [ { @@ -5317,33 +5317,54 @@ "deprecationReason": null }, { - "name": "likesCount", + "name": "records", "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "state", - "description": null, - "args": [], + ], "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "StatusState", - "ofType": null - } + "kind": "OBJECT", + "name": "RecordConnection", + "ofType": null }, "isDeprecated": false, "deprecationReason": null @@ -5392,53 +5413,6 @@ "enumValues": null, "possibleTypes": null }, - { - "kind": "ENUM", - "name": "StatusState", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "WANNA_WATCH", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "WATCHING", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "WATCHED", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ON_HOLD", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "STOP_WATCHING", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "NO_STATE", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, { "kind": "OBJECT", "name": "Review", @@ -5686,7 +5660,7 @@ }, { "kind": "OBJECT", - "name": "MultipleRecord", + "name": "Status", "description": null, "fields": [ { @@ -5738,54 +5712,33 @@ "deprecationReason": null }, { - "name": "records", + "name": "likesCount", "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null } - ], + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": null, + "args": [], "type": { - "kind": "OBJECT", - "name": "RecordConnection", - "ofType": null + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "StatusState", + "ofType": null + } }, "isDeprecated": false, "deprecationReason": null @@ -5834,6 +5787,53 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "ENUM", + "name": "StatusState", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "WANNA_WATCH", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "WATCHING", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "WATCHED", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ON_HOLD", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STOP_WATCHING", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NO_STATE", + "description": "", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, { "kind": "OBJECT", "name": "Activity", @@ -7733,12 +7733,12 @@ "possibleTypes": [ { "kind": "OBJECT", - "name": "Person", + "name": "Organization", "ofType": null }, { "kind": "OBJECT", - "name": "Organization", + "name": "Person", "ofType": null } ] diff --git a/Portannict/Common/ViewModel.swift b/Portannict/Common/ViewModel.swift new file mode 100644 index 00000000..1ba53b89 --- /dev/null +++ b/Portannict/Common/ViewModel.swift @@ -0,0 +1,97 @@ +// +// ViewModel.swift +// Portannict +// +// Created by Yuto Akiba on 2020/11/13. +// + +import Foundation +import Combine +import SwiftUI + +public protocol ViewModel: ObservableObject { + associatedtype Action + associatedtype Mutation + associatedtype State: ObservableObject + + var action: PassthroughSubject { get } + var state: State { get set } + + var cancellables: Set { get set } + + func mutate(action: Action) -> AnyPublisher + func reduce(mutation: Mutation) + + func transform(action: AnyPublisher) -> AnyPublisher + func transform(mutation: AnyPublisher) -> AnyPublisher +// func transform(state: AnyPublisher) -> AnyPublisher + + func initilize() +} + +fileprivate enum ViewModelAssociatedKey { + static var action: UInt8 = 0 + static var cancellables: UInt8 = 0 +} + +public extension ViewModel { + var action: PassthroughSubject { + get { return objc_getAssociatedObject(self, &ViewModelAssociatedKey.action) as! PassthroughSubject } + set { objc_setAssociatedObject(self, &ViewModelAssociatedKey.action, newValue, .OBJC_ASSOCIATION_RETAIN) } + } + + var cancellables: Set { + get { return objc_getAssociatedObject(self, &ViewModelAssociatedKey.cancellables) as! Set } + set { objc_setAssociatedObject(self, &ViewModelAssociatedKey.cancellables, newValue, .OBJC_ASSOCIATION_RETAIN) } + } + + func mutate(action: Action) -> AnyPublisher { + Empty().eraseToAnyPublisher() + } + + func reduce(mutation: Mutation) { + + } + + func transform(action: AnyPublisher) -> AnyPublisher { + action + } + + func transform(mutation: AnyPublisher) -> AnyPublisher { + mutation + } +} + +public extension ViewModel where Self.ObjectWillChangePublisher == ObservableObjectPublisher { + func initilize() { + + self.action = PassthroughSubject() + self.cancellables = Set() + + // Create bind stream + let action = self.action + .eraseToAnyPublisher() + + let transformedAction = transform(action: action) + + let mutation = transformedAction.flatMap { [weak self] action in + return self?.mutate(action: action) ?? Empty().eraseToAnyPublisher() + } + .eraseToAnyPublisher() + + let transformedMutation = transform(mutation: mutation) + + transformedMutation.sink { completion in + + } receiveValue: { [weak self] mutation in + self?.reduce(mutation: mutation) + } + .store(in: &cancellables) + + // State changed event -> ViewModel changed event + state.objectWillChange.sink(receiveValue: { [weak self] _ in + self?.objectWillChange.send() + }) + .store(in: &cancellables) + } +} diff --git a/Portannict/Portannict.xcodeproj/project.pbxproj b/Portannict/Portannict.xcodeproj/project.pbxproj index d83a05b0..dc465b2a 100644 --- a/Portannict/Portannict.xcodeproj/project.pbxproj +++ b/Portannict/Portannict.xcodeproj/project.pbxproj @@ -19,6 +19,8 @@ CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF841D4724CA6A1F00F3723B /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4624CA6A1F00F3723B /* RootView.swift */; }; + CFB8D8BB255D18A20092764B /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB8D8BA255D18A20092764B /* RootViewModel.swift */; }; + CFCA3EF3255D8F2F00AA2469 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */; }; CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */; }; CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */; }; /* End PBXBuildFile section */ @@ -38,6 +40,8 @@ CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF841D4624CA6A1F00F3723B /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; }; + CFB8D8BA255D18A20092764B /* RootViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewModel.swift; sourceTree = ""; }; + CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewModel.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteWorkView.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -56,6 +60,7 @@ CF08FBFA24B9AD1A00CD29DD = { isa = PBXGroup; children = ( + CFCA3EF1255D8F1A00AA2469 /* Common */, CF08FC0524B9AD1A00CD29DD /* Portannict */, CF08FC0424B9AD1A00CD29DD /* Products */, ); @@ -72,7 +77,7 @@ CF08FC0524B9AD1A00CD29DD /* Portannict */ = { isa = PBXGroup; children = ( - CF841D4624CA6A1F00F3723B /* RootView.swift */, + CFB8D8B9255D18740092764B /* Root */, CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */, CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF42CFCF24C9D72800AAD8E8 /* Models */, @@ -112,6 +117,23 @@ path = Login; sourceTree = ""; }; + CFB8D8B9255D18740092764B /* Root */ = { + isa = PBXGroup; + children = ( + CF841D4624CA6A1F00F3723B /* RootView.swift */, + CFB8D8BA255D18A20092764B /* RootViewModel.swift */, + ); + path = Root; + sourceTree = ""; + }; + CFCA3EF1255D8F1A00AA2469 /* Common */ = { + isa = PBXGroup; + children = ( + CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */, + ); + path = Common; + sourceTree = ""; + }; CFFE4FFA24C9BF1A003AECE5 /* Home */ = { isa = PBXGroup; children = ( @@ -194,9 +216,11 @@ files = ( CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, CF42CFD124C9D73400AAD8E8 /* Work.swift in Sources */, + CFB8D8BB255D18A20092764B /* RootViewModel.swift in Sources */, CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, + CFCA3EF3255D8F2F00AA2469 /* ViewModel.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */, diff --git a/Portannict/Portannict/PortannictApp.swift b/Portannict/Portannict/PortannictApp.swift index 5e45ca73..ea625d67 100644 --- a/Portannict/Portannict/PortannictApp.swift +++ b/Portannict/Portannict/PortannictApp.swift @@ -11,7 +11,7 @@ import SwiftUI struct PortannictApp: App { var body: some Scene { WindowGroup { - RootView() + RootView(viewModel: .init()) } } } diff --git a/Portannict/Portannict/Root/RootView.swift b/Portannict/Portannict/Root/RootView.swift new file mode 100644 index 00000000..d0d4cf16 --- /dev/null +++ b/Portannict/Portannict/Root/RootView.swift @@ -0,0 +1,35 @@ +// +// RootView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/24. +// + +import SwiftUI + +struct RootView: View { + @ObservedObject var viewModel: RootViewModel + + @State private var isLogin: Bool = true + + init(viewModel: RootViewModel) { + self.viewModel = viewModel + } + + var body: some View { + VStack { + TextField("AAAA", value: $viewModel.state.number, formatter: NumberFormatter()) + Button(action: { + viewModel.action.send(.increment) + }, label: { + Text("Button") + }) + } + } +} + +struct RootView_Previews: PreviewProvider { + static var previews: some View { + RootView(viewModel: .init()) + } +} diff --git a/Portannict/Portannict/Root/RootViewModel.swift b/Portannict/Portannict/Root/RootViewModel.swift new file mode 100644 index 00000000..2504223f --- /dev/null +++ b/Portannict/Portannict/Root/RootViewModel.swift @@ -0,0 +1,55 @@ +// +// RootViewModel.swift +// Portannict +// +// Created by Yuto Akiba on 2020/11/12. +// + +import Foundation +import Combine +import SwiftUI + +final class RootViewModel: ViewModel { + enum Action { + case increment + } + + enum Mutation { + case increment + } + + class State: ObservableObject { + @Published var number = 0 + } + + @Published var state = State() + + init() { + initilize() + } + + func mutate(action: Action) -> AnyPublisher { + switch action { + case .increment: + return APIClient.send() + .map { _ in Mutation.increment } + .catch { _ in Just(Mutation.increment) } + .eraseToAnyPublisher() + } + } + + func reduce(mutation: Mutation) { + switch mutation { + case .increment: + state.number += 1 + } + } +} + +final class APIClient { + static func send() -> Future { + return Future { promise in + promise(.success(1)) + } + } +} diff --git a/Portannict/Portannict/RootView.swift b/Portannict/Portannict/RootView.swift deleted file mode 100644 index 83cba9f7..00000000 --- a/Portannict/Portannict/RootView.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// RootView.swift -// Portannict -// -// Created by Yuto Akiba on 2020/07/24. -// - -import SwiftUI - -struct RootView: View { - @State private var isLogin: Bool = true - - var body: some View { - if isLogin { - RootTabView() - } else { - LoginView() - } - } -} - -struct RootView_Previews: PreviewProvider { - static var previews: some View { - RootView() - } -} diff --git a/package-lock.json b/package-lock.json index e00091cd..fd1de538 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "resolved": "https://registry.npmjs.org/@apollo/federation/-/federation-0.11.0.tgz", "integrity": "sha512-kzhnNl+G9G18R3tSkZ9kZKvDZq0Pq1X9WtbOLC+K2GfTvYLTIE5BG/21LuPZb9gO7W1/Xf1iquvMMGZdpILwRw==", "requires": { - "apollo-graphql": "0.3.5", - "apollo-server-env": "2.4.3", - "core-js": "3.4.7", - "lodash.xorby": "4.7.0" + "apollo-graphql": "^0.3.4", + "apollo-server-env": "^2.4.3", + "core-js": "^3.4.0", + "lodash.xorby": "^4.7.0" } }, "@apollographql/apollo-tools": { @@ -20,7 +20,7 @@ "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.4.1.tgz", "integrity": "sha512-9NaTBPX+YYCsio6AqnLHlLiqYBszgTBul2qzG2+YNZ/1RQ2owhO/7xB5XJyQz76NGOefORaZt5idwvTJXpg/Sg==", "requires": { - "apollo-env": "0.6.0" + "apollo-env": "^0.6.0" } }, "@apollographql/graphql-language-service-interface": { @@ -28,9 +28,9 @@ "resolved": "https://registry.npmjs.org/@apollographql/graphql-language-service-interface/-/graphql-language-service-interface-2.0.2.tgz", "integrity": "sha512-28wePK0hlIVjgmvMXMAUq8qRSjz9O+6lqFp4PzOTHtfJfSsjVe9EfjF98zTpHsTgT3HcOxmbqDZZy8jlXtOqEA==", "requires": { - "@apollographql/graphql-language-service-parser": "2.0.2", - "@apollographql/graphql-language-service-types": "2.0.2", - "@apollographql/graphql-language-service-utils": "2.0.2" + "@apollographql/graphql-language-service-parser": "^2.0.0", + "@apollographql/graphql-language-service-types": "^2.0.0", + "@apollographql/graphql-language-service-utils": "^2.0.2" } }, "@apollographql/graphql-language-service-parser": { @@ -38,7 +38,7 @@ "resolved": "https://registry.npmjs.org/@apollographql/graphql-language-service-parser/-/graphql-language-service-parser-2.0.2.tgz", "integrity": "sha512-rpTPrEJu1PMaRQxz5P8BZWsixNNhYloS0H0dwTxNBuE3qctbARvR7o8UCKLsmKgTbo+cz3T3a6IAsWlkHgMWGg==", "requires": { - "@apollographql/graphql-language-service-types": "2.0.2" + "@apollographql/graphql-language-service-types": "^2.0.0" } }, "@apollographql/graphql-language-service-types": { @@ -51,7 +51,7 @@ "resolved": "https://registry.npmjs.org/@apollographql/graphql-language-service-utils/-/graphql-language-service-utils-2.0.2.tgz", "integrity": "sha512-fDj5rWlTi/czvUS5t7V7I45Ai6bOO3Z7JARYj21Y2xxfbRGtJi6h8FvLX0N/EbzQgo/fiZc/HAhtfwn+OCjD7A==", "requires": { - "@apollographql/graphql-language-service-types": "2.0.2" + "@apollographql/graphql-language-service-types": "^2.0.0" } }, "@babel/generator": { @@ -59,10 +59,10 @@ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", "requires": { - "@babel/types": "7.6.3", - "jsesc": "2.5.2", - "lodash": "4.17.15", - "source-map": "0.5.7" + "@babel/types": "^7.6.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" } }, "@babel/parser": { @@ -75,9 +75,9 @@ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", "requires": { - "esutils": "2.0.3", - "lodash": "4.17.15", - "to-fast-properties": "2.0.0" + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } }, "@endemolshinegroup/cosmiconfig-typescript-loader": { @@ -85,10 +85,10 @@ "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.1.tgz", "integrity": "sha512-bhUR9035PbgL6A/nfLayjoqKo4W7hCtzxqVxq2cgDB+Ndpsa3dGIr71/ymgY3vCTCQaufkFxAcEeoECyJ498CA==", "requires": { - "lodash.get": "4.4.2", - "make-error": "1.3.5", - "ts-node": "8.5.4", - "tslib": "1.10.0" + "lodash.get": "^4", + "make-error": "^1", + "ts-node": "^8", + "tslib": "^1" } }, "@oclif/color": { @@ -96,9 +96,9 @@ "resolved": "https://registry.npmjs.org/@oclif/color/-/color-0.0.0.tgz", "integrity": "sha512-KKd3W7eNwfNF061tr663oUNdt8EMnfuyf5Xv55SGWA1a0rjhWqS/32P7OeB7CbXcJUBdfVrPyR//1afaW12AWw==", "requires": { - "ansi-styles": "3.2.1", - "supports-color": "5.5.0", - "tslib": "1.10.0" + "ansi-styles": "^3.2.1", + "supports-color": "^5.4.0", + "tslib": "^1" } }, "@oclif/command": { @@ -106,12 +106,12 @@ "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.5.19.tgz", "integrity": "sha512-6+iaCMh/JXJaB2QWikqvGE9//wLEVYYwZd5sud8aLoLKog1Q75naZh2vlGVtg5Mq/NqpqGQvdIjJb3Bm+64AUQ==", "requires": { - "@oclif/config": "1.13.3", - "@oclif/errors": "1.2.2", - "@oclif/parser": "3.8.4", - "@oclif/plugin-help": "2.2.1", - "debug": "4.1.1", - "semver": "5.7.1" + "@oclif/config": "^1", + "@oclif/errors": "^1.2.2", + "@oclif/parser": "^3.8.3", + "@oclif/plugin-help": "^2", + "debug": "^4.1.1", + "semver": "^5.6.0" } }, "@oclif/config": { @@ -119,9 +119,9 @@ "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.13.3.tgz", "integrity": "sha512-qs5XvGRw+1M41abOKCjd0uoeHCgsMxa2MurD2g2K8CtQlzlMXl0rW5idVeimIg5208LLuxkfzQo8TKAhhRCWLg==", "requires": { - "@oclif/parser": "3.8.4", - "debug": "4.1.1", - "tslib": "1.10.0" + "@oclif/parser": "^3.8.0", + "debug": "^4.1.1", + "tslib": "^1.9.3" } }, "@oclif/errors": { @@ -129,11 +129,11 @@ "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.2.2.tgz", "integrity": "sha512-Eq8BFuJUQcbAPVofDxwdE0bL14inIiwt5EaKRVY9ZDIG11jwdXZqiQEECJx0VfnLyUZdYfRd/znDI/MytdJoKg==", "requires": { - "clean-stack": "1.3.0", - "fs-extra": "7.0.1", - "indent-string": "3.2.0", - "strip-ansi": "5.2.0", - "wrap-ansi": "4.0.0" + "clean-stack": "^1.3.0", + "fs-extra": "^7.0.0", + "indent-string": "^3.2.0", + "strip-ansi": "^5.0.0", + "wrap-ansi": "^4.0.0" } }, "@oclif/linewrap": { @@ -146,9 +146,9 @@ "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.4.tgz", "integrity": "sha512-cyP1at3l42kQHZtqDS3KfTeyMvxITGwXwH1qk9ktBYvqgMp5h4vHT+cOD74ld3RqJUOZY/+Zi9lb4Tbza3BtuA==", "requires": { - "@oclif/linewrap": "1.0.0", - "chalk": "2.4.2", - "tslib": "1.10.0" + "@oclif/linewrap": "^1.0.0", + "chalk": "^2.4.2", + "tslib": "^1.9.3" } }, "@oclif/plugin-autocomplete": { @@ -156,14 +156,14 @@ "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.1.4.tgz", "integrity": "sha512-ZyxJyL6jSt9Df68Smeu14xhZZwELE9IB5twhie1/56rt62nG6TJB4CZhaMqRk+33MDfU3JyWxNbIDMNMESlGqg==", "requires": { - "@oclif/command": "1.5.19", - "@oclif/config": "1.13.3", - "@types/fs-extra": "5.1.0", - "chalk": "2.4.2", - "cli-ux": "4.9.3", - "debug": "3.2.6", - "fs-extra": "6.0.1", - "moment": "2.24.0" + "@oclif/command": "^1.4.31", + "@oclif/config": "^1.6.22", + "@types/fs-extra": "^5.0.2", + "chalk": "^2.4.1", + "cli-ux": "^4.4.0", + "debug": "^3.1.0", + "fs-extra": "^6.0.1", + "moment": "^2.22.1" }, "dependencies": { "debug": { @@ -171,7 +171,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "fs-extra": { @@ -179,9 +179,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", "requires": { - "graceful-fs": "4.2.3", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } } } @@ -191,14 +191,14 @@ "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-2.2.1.tgz", "integrity": "sha512-psEA3t41MSGBErLk6xCaAq2jKrRtx3Br+kHpd43vZeGEeZ7Gos4wgK0JAaHBbvhvUQskCHg8dzoqv4XEeTWeVQ==", "requires": { - "@oclif/command": "1.5.19", - "chalk": "2.4.2", - "indent-string": "3.2.0", - "lodash.template": "4.5.0", - "string-width": "3.1.0", - "strip-ansi": "5.2.0", - "widest-line": "2.0.1", - "wrap-ansi": "4.0.0" + "@oclif/command": "^1.5.13", + "chalk": "^2.4.1", + "indent-string": "^3.2.0", + "lodash.template": "^4.4.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0", + "widest-line": "^2.0.1", + "wrap-ansi": "^4.0.0" }, "dependencies": { "string-width": { @@ -206,9 +206,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } } } @@ -218,11 +218,11 @@ "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-1.2.3.tgz", "integrity": "sha512-Igbw2T4gLrb/f28Llr730FeMXBSI2PXdky2YvQfsZeQGDsyBZmC4gprJJtmrMWQcjz0B51IInRBnZYERvwfIpw==", "requires": { - "@oclif/color": "0.0.0", - "@oclif/command": "1.5.19", - "cli-ux": "4.9.3", - "fast-levenshtein": "2.0.6", - "lodash": "4.17.15" + "@oclif/color": "^0.0.0", + "@oclif/command": "^1.5.3", + "cli-ux": "^4.9.0", + "fast-levenshtein": "^2.0.6", + "lodash": "^4.17.13" } }, "@oclif/plugin-plugins": { @@ -230,18 +230,18 @@ "resolved": "https://registry.npmjs.org/@oclif/plugin-plugins/-/plugin-plugins-1.7.8.tgz", "integrity": "sha512-GxLxaf8Lk1RqHVAIBZyA7hmhU7u5oV97i/OsWgFPdjPaT+BmWlWXR8IpmtA8giNo6atR+JpfgDmYndMU75zYUQ==", "requires": { - "@oclif/color": "0.0.0", - "@oclif/command": "1.5.19", - "chalk": "2.4.2", - "cli-ux": "5.3.3", - "debug": "4.1.1", - "fs-extra": "7.0.1", - "http-call": "5.3.0", - "load-json-file": "5.3.0", - "npm-run-path": "3.1.0", - "semver": "5.7.1", - "tslib": "1.10.0", - "yarn": "1.21.0" + "@oclif/color": "^0.0.0", + "@oclif/command": "^1.5.12", + "chalk": "^2.4.2", + "cli-ux": "^5.2.1", + "debug": "^4.1.0", + "fs-extra": "^7.0.1", + "http-call": "^5.2.2", + "load-json-file": "^5.2.0", + "npm-run-path": "^3.0.0", + "semver": "^5.6.0", + "tslib": "^1.9.3", + "yarn": "^1.15.0" }, "dependencies": { "clean-stack": { @@ -254,30 +254,30 @@ "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.3.3.tgz", "integrity": "sha512-a16g+BTjASUH41s1pevai4P3JKwhx85wkOSm6sXWsk6KkdSmDeJ16pSCn2x3nqK7W8n35igOu2YiW+qFkqLRJg==", "requires": { - "@oclif/command": "1.5.19", - "@oclif/errors": "1.2.2", - "@oclif/linewrap": "1.0.0", - "@oclif/screen": "1.0.4", - "ansi-escapes": "3.2.0", - "ansi-styles": "3.2.1", - "cardinal": "2.1.1", - "chalk": "2.4.2", - "clean-stack": "2.2.0", - "extract-stack": "1.0.0", - "fs-extra": "7.0.1", - "hyperlinker": "1.0.0", - "indent-string": "3.2.0", - "is-wsl": "1.1.0", - "lodash": "4.17.15", - "natural-orderby": "2.0.3", - "password-prompt": "1.1.2", - "semver": "5.7.1", - "string-width": "3.1.0", - "strip-ansi": "5.2.0", - "supports-color": "5.5.0", - "supports-hyperlinks": "1.0.1", - "treeify": "1.1.0", - "tslib": "1.10.0" + "@oclif/command": "^1.5.1", + "@oclif/errors": "^1.2.1", + "@oclif/linewrap": "^1.0.0", + "@oclif/screen": "^1.0.3", + "ansi-escapes": "^3.1.0", + "ansi-styles": "^3.2.1", + "cardinal": "^2.1.1", + "chalk": "^2.4.1", + "clean-stack": "^2.0.0", + "extract-stack": "^1.0.0", + "fs-extra": "^7.0.1", + "hyperlinker": "^1.0.0", + "indent-string": "^3.2.0", + "is-wsl": "^1.1.0", + "lodash": "^4.17.11", + "natural-orderby": "^2.0.1", + "password-prompt": "^1.1.2", + "semver": "^5.6.0", + "string-width": "^3.1.0", + "strip-ansi": "^5.1.0", + "supports-color": "^5.5.0", + "supports-hyperlinks": "^1.0.1", + "treeify": "^1.1.0", + "tslib": "^1.9.3" } }, "string-width": { @@ -285,9 +285,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } } } @@ -297,15 +297,15 @@ "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-1.7.0.tgz", "integrity": "sha512-Nwyz3BJ8RhsfQ+OmFSsJSPIfn5YJqMrCzPh72Zgo2jqIjKIBWD8N9vTTe4kZlpeUUn77SyXFfwlBQbNCL5OEuQ==", "requires": { - "@oclif/command": "1.5.19", - "@oclif/config": "1.13.3", - "@oclif/errors": "1.2.2", - "chalk": "2.4.2", - "debug": "4.1.1", - "fs-extra": "7.0.1", - "http-call": "5.3.0", - "lodash.template": "4.5.0", - "semver": "5.7.1" + "@oclif/command": "^1.5.10", + "@oclif/config": "^1.12.8", + "@oclif/errors": "^1.2.2", + "chalk": "^2.4.1", + "debug": "^4.1.0", + "fs-extra": "^7.0.0", + "http-call": "^5.2.2", + "lodash.template": "^4.4.0", + "semver": "^5.6.0" } }, "@oclif/screen": { @@ -318,7 +318,7 @@ "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", "requires": { - "any-observable": "0.3.0" + "any-observable": "^0.3.0" } }, "@types/fs-extra": { @@ -326,7 +326,7 @@ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.1.0.tgz", "integrity": "sha512-AInn5+UBFIK9FK5xc9yP5e3TQSPNNgjHByqYcj9g5elVBnDQcQL7PlO1CIRy2gWlbwK7UPYqi7vRvFA44dCmYQ==", "requires": { - "@types/node": "12.12.14" + "@types/node": "*" } }, "@types/node": { @@ -339,7 +339,7 @@ "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.9.tgz", "integrity": "sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ==", "requires": { - "tslib": "1.10.0" + "tslib": "^1.9.3" } }, "ajv": { @@ -347,10 +347,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-escapes": { @@ -368,7 +368,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "ansicolors": { @@ -386,7 +386,7 @@ "resolved": "https://registry.npmjs.org/apollo/-/apollo-2.21.1.tgz", "integrity": "sha512-bpQ+ToZS2HPBYzRCnv9hTbPmeuJZKDhOFy0EzxQhTPQPVqGkm1KZqFmFJZKdlydB6+XwIapdk0U1Q1utYKuXkQ==", "requires": { - "@apollographql/apollo-tools": "0.4.1", + "@apollographql/apollo-tools": "^0.4.1", "@oclif/command": "1.5.19", "@oclif/config": "1.13.3", "@oclif/errors": "1.2.2", @@ -395,21 +395,21 @@ "@oclif/plugin-not-found": "1.2.3", "@oclif/plugin-plugins": "1.7.8", "@oclif/plugin-warn-if-update-available": "1.7.0", - "apollo-codegen-core": "0.35.8", - "apollo-codegen-flow": "0.33.33", - "apollo-codegen-scala": "0.34.33", - "apollo-codegen-swift": "0.35.13", - "apollo-codegen-typescript": "0.35.8", - "apollo-env": "0.6.0", - "apollo-graphql": "0.3.5", - "apollo-language-server": "1.17.1", + "apollo-codegen-core": "^0.35.8", + "apollo-codegen-flow": "^0.33.33", + "apollo-codegen-scala": "^0.34.33", + "apollo-codegen-swift": "^0.35.13", + "apollo-codegen-typescript": "^0.35.8", + "apollo-env": "^0.6.0", + "apollo-graphql": "^0.3.5", + "apollo-language-server": "^1.17.1", "chalk": "2.4.2", "env-ci": "3.2.2", "gaze": "1.1.3", "git-parse": "1.0.3", "git-rev-sync": "1.12.0", "glob": "7.1.5", - "graphql": "14.5.8", + "graphql": "14.0.2 - 14.2.0 || ^14.3.1", "graphql-tag": "2.10.1", "listr": "0.14.3", "lodash.identity": "3.0.0", @@ -427,13 +427,13 @@ "integrity": "sha512-MWa7/3NWc2TkXTamD8Kypr+7P/QPGb7OOR+kpvZlffySZzjKvyCYI0odN6NhjmbKZFULNtZPg7OXX9SQX6YvoQ==", "requires": { "@babel/generator": "7.6.4", - "@babel/parser": "7.7.4", + "@babel/parser": "^7.1.3", "@babel/types": "7.6.3", - "apollo-env": "0.6.0", - "apollo-language-server": "1.17.1", - "ast-types": "0.13.2", - "common-tags": "1.8.0", - "recast": "0.18.5" + "apollo-env": "^0.6.0", + "apollo-language-server": "^1.17.1", + "ast-types": "^0.13.0", + "common-tags": "^1.5.1", + "recast": "^0.18.0" } }, "apollo-codegen-flow": { @@ -443,10 +443,10 @@ "requires": { "@babel/generator": "7.6.4", "@babel/types": "7.6.3", - "apollo-codegen-core": "0.35.8", - "change-case": "3.1.0", - "common-tags": "1.8.0", - "inflected": "2.0.4" + "apollo-codegen-core": "^0.35.8", + "change-case": "^3.0.1", + "common-tags": "^1.5.1", + "inflected": "^2.0.3" } }, "apollo-codegen-scala": { @@ -454,10 +454,10 @@ "resolved": "https://registry.npmjs.org/apollo-codegen-scala/-/apollo-codegen-scala-0.34.33.tgz", "integrity": "sha512-h47IjNXdK0IWHcujPUynzdjkEvVZ1FoCDjAV1+yd3t27CwlEsND/q/ZH6DT5NwxZIWBJWnPNwBiiSOCt2/xFyw==", "requires": { - "apollo-codegen-core": "0.35.8", - "change-case": "3.1.0", - "common-tags": "1.8.0", - "inflected": "2.0.4" + "apollo-codegen-core": "^0.35.8", + "change-case": "^3.0.1", + "common-tags": "^1.5.1", + "inflected": "^2.0.3" } }, "apollo-codegen-swift": { @@ -465,10 +465,10 @@ "resolved": "https://registry.npmjs.org/apollo-codegen-swift/-/apollo-codegen-swift-0.35.13.tgz", "integrity": "sha512-I29/lAcFeeeN/Dp6qp19kALh7aWXZXjEtPx1A6Ee7WjGonmIndixaQLL+glFLEXtACf/Eaq13pMl+2ZLG9098g==", "requires": { - "apollo-codegen-core": "0.35.8", - "change-case": "3.1.0", - "common-tags": "1.8.0", - "inflected": "2.0.4" + "apollo-codegen-core": "^0.35.8", + "change-case": "^3.0.1", + "common-tags": "^1.5.1", + "inflected": "^2.0.3" } }, "apollo-codegen-typescript": { @@ -478,10 +478,10 @@ "requires": { "@babel/generator": "7.6.4", "@babel/types": "7.6.3", - "apollo-codegen-core": "0.35.8", - "change-case": "3.1.0", - "common-tags": "1.8.0", - "inflected": "2.0.4" + "apollo-codegen-core": "^0.35.8", + "change-case": "^3.0.1", + "common-tags": "^1.5.1", + "inflected": "^2.0.3" } }, "apollo-datasource": { @@ -489,8 +489,8 @@ "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.6.3.tgz", "integrity": "sha512-gRYyFVpJgHE2hhS+VxMeOerxXQ/QYxWG7T6QddfugJWYAG9DRCl65e2b7txcGq2NP3r+O1iCm4GNwhRBDJbd8A==", "requires": { - "apollo-server-caching": "0.5.0", - "apollo-server-env": "2.4.3" + "apollo-server-caching": "^0.5.0", + "apollo-server-env": "^2.4.3" } }, "apollo-env": { @@ -498,9 +498,9 @@ "resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.6.0.tgz", "integrity": "sha512-DttHOpLISRej8STjbXjQCXq3YeE2pATaC4UEd2YE7TjjYhQmp9yxohlkHfSR78BvPzczhyDs6WQQEzasHv0M0A==", "requires": { - "core-js": "3.4.7", - "node-fetch": "2.6.0", - "sha.js": "2.4.11" + "core-js": "^3.0.1", + "node-fetch": "^2.2.0", + "sha.js": "^2.4.11" } }, "apollo-graphql": { @@ -508,8 +508,8 @@ "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.3.5.tgz", "integrity": "sha512-X2N/LREJSAkI0RhMEJ6d0kGjdJSI4SFyf6soLvLLTQn0Bhi/52hMLf8k4kO5t0SCKuWc1+Pw/tdCniK4Gc1IdA==", "requires": { - "apollo-env": "0.6.0", - "lodash.sortby": "4.7.0" + "apollo-env": "^0.6.0", + "lodash.sortby": "^4.7.0" } }, "apollo-language-server": { @@ -518,29 +518,29 @@ "integrity": "sha512-Ok3C+7W/P/VskQ99qxWMtWsr7g1opeEHfKtU+xJgoQN2qUJYwAEUMVNUFQ+HYRlVgyO1fZ4idcIGTcI+Lpa8Hw==", "requires": { "@apollo/federation": "0.11.0", - "@apollographql/apollo-tools": "0.4.1", - "@apollographql/graphql-language-service-interface": "2.0.2", - "@endemolshinegroup/cosmiconfig-typescript-loader": "1.0.1", - "apollo-datasource": "0.6.3", - "apollo-env": "0.6.0", - "apollo-graphql": "0.3.5", - "apollo-link": "1.2.13", - "apollo-link-context": "1.0.19", - "apollo-link-error": "1.1.12", - "apollo-link-http": "1.5.16", - "apollo-server-errors": "2.3.4", - "await-to-js": "2.1.1", - "core-js": "3.4.7", - "cosmiconfig": "5.2.1", - "dotenv": "8.2.0", - "glob": "7.1.5", - "graphql": "14.5.8", - "graphql-tag": "2.10.1", - "lodash.debounce": "4.0.8", - "lodash.merge": "4.6.2", - "minimatch": "3.0.4", - "moment": "2.24.0", - "vscode-languageserver": "5.2.1", + "@apollographql/apollo-tools": "^0.4.1", + "@apollographql/graphql-language-service-interface": "^2.0.2", + "@endemolshinegroup/cosmiconfig-typescript-loader": "^1.0.0", + "apollo-datasource": "^0.6.0", + "apollo-env": "^0.6.0", + "apollo-graphql": "^0.3.5", + "apollo-link": "^1.2.3", + "apollo-link-context": "^1.0.9", + "apollo-link-error": "^1.1.1", + "apollo-link-http": "^1.5.5", + "apollo-server-errors": "^2.0.2", + "await-to-js": "^2.0.1", + "core-js": "^3.0.1", + "cosmiconfig": "^5.0.6", + "dotenv": "^8.0.0", + "glob": "^7.1.3", + "graphql": "14.0.2 - 14.2.0 || ^14.3.1", + "graphql-tag": "^2.10.1", + "lodash.debounce": "^4.0.8", + "lodash.merge": "^4.6.1", + "minimatch": "^3.0.4", + "moment": "^2.24.0", + "vscode-languageserver": "^5.1.0", "vscode-uri": "1.0.6" } }, @@ -549,10 +549,10 @@ "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.13.tgz", "integrity": "sha512-+iBMcYeevMm1JpYgwDEIDt/y0BB7VWyvlm/7x+TIPNLHCTCMgcEgDuW5kH86iQZWo0I7mNwQiTOz+/3ShPFmBw==", "requires": { - "apollo-utilities": "1.3.2", - "ts-invariant": "0.4.4", - "tslib": "1.10.0", - "zen-observable-ts": "0.8.20" + "apollo-utilities": "^1.3.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3", + "zen-observable-ts": "^0.8.20" } }, "apollo-link-context": { @@ -560,8 +560,8 @@ "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.19.tgz", "integrity": "sha512-TUi5TyufU84hEiGkpt+5gdH5HkB3Gx46npNfoxR4of3DKBCMuItGERt36RCaryGcU/C3u2zsICU3tJ+Z9LjFoQ==", "requires": { - "apollo-link": "1.2.13", - "tslib": "1.10.0" + "apollo-link": "^1.2.13", + "tslib": "^1.9.3" } }, "apollo-link-error": { @@ -569,9 +569,9 @@ "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.12.tgz", "integrity": "sha512-psNmHyuy3valGikt/XHJfe0pKJnRX19tLLs6P6EHRxg+6q6JMXNVLYPaQBkL0FkwdTCB0cbFJAGRYCBviG8TDA==", "requires": { - "apollo-link": "1.2.13", - "apollo-link-http-common": "0.2.15", - "tslib": "1.10.0" + "apollo-link": "^1.2.13", + "apollo-link-http-common": "^0.2.15", + "tslib": "^1.9.3" } }, "apollo-link-http": { @@ -579,9 +579,9 @@ "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.16.tgz", "integrity": "sha512-IA3xA/OcrOzINRZEECI6IdhRp/Twom5X5L9jMehfzEo2AXdeRwAMlH5LuvTZHgKD8V1MBnXdM6YXawXkTDSmJw==", "requires": { - "apollo-link": "1.2.13", - "apollo-link-http-common": "0.2.15", - "tslib": "1.10.0" + "apollo-link": "^1.2.13", + "apollo-link-http-common": "^0.2.15", + "tslib": "^1.9.3" } }, "apollo-link-http-common": { @@ -589,9 +589,9 @@ "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.15.tgz", "integrity": "sha512-+Heey4S2IPsPyTf8Ag3PugUupASJMW894iVps6hXbvwtg1aHSNMXUYO5VG7iRHkPzqpuzT4HMBanCTXPjtGzxg==", "requires": { - "apollo-link": "1.2.13", - "ts-invariant": "0.4.4", - "tslib": "1.10.0" + "apollo-link": "^1.2.13", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3" } }, "apollo-server-caching": { @@ -599,7 +599,7 @@ "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.5.0.tgz", "integrity": "sha512-l7ieNCGxUaUAVAAp600HjbUJxVaxjJygtPV0tPTe1Q3HkPy6LEWoY6mNHV7T268g1hxtPTxcdRu7WLsJrg7ufw==", "requires": { - "lru-cache": "5.1.1" + "lru-cache": "^5.0.0" } }, "apollo-server-env": { @@ -607,8 +607,8 @@ "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.4.3.tgz", "integrity": "sha512-23R5Xo9OMYX0iyTu2/qT0EUb+AULCBriA9w8HDfMoChB8M+lFClqUkYtaTTHDfp6eoARLW8kDBhPOBavsvKAjA==", "requires": { - "node-fetch": "2.6.0", - "util.promisify": "1.0.0" + "node-fetch": "^2.1.2", + "util.promisify": "^1.0.0" } }, "apollo-server-errors": { @@ -621,10 +621,10 @@ "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.2.tgz", "integrity": "sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg==", "requires": { - "@wry/equality": "0.1.9", - "fast-json-stable-stringify": "2.0.0", - "ts-invariant": "0.4.4", - "tslib": "1.10.0" + "@wry/equality": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3" } }, "arg": { @@ -637,7 +637,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "ast-types": { @@ -660,9 +660,9 @@ "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.6.10", - "regenerator-runtime": "0.10.5" + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" }, "dependencies": { "core-js": { @@ -677,8 +677,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.6.10", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" }, "dependencies": { "core-js": { @@ -703,7 +703,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -722,7 +722,7 @@ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "requires": { - "callsites": "2.0.0" + "callsites": "^2.0.0" } }, "caller-path": { @@ -730,7 +730,7 @@ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "requires": { - "caller-callsite": "2.0.0" + "caller-callsite": "^2.0.0" } }, "callsites": { @@ -743,8 +743,8 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, "cardinal": { @@ -752,8 +752,8 @@ "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", "requires": { - "ansicolors": "0.3.2", - "redeyed": "2.1.1" + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" } }, "chalk": { @@ -761,9 +761,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "change-case": { @@ -771,24 +771,24 @@ "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.1.0.tgz", "integrity": "sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==", "requires": { - "camel-case": "3.0.0", - "constant-case": "2.0.0", - "dot-case": "2.1.1", - "header-case": "1.0.1", - "is-lower-case": "1.1.3", - "is-upper-case": "1.1.2", - "lower-case": "1.1.4", - "lower-case-first": "1.0.2", - "no-case": "2.3.2", - "param-case": "2.1.1", - "pascal-case": "2.0.1", - "path-case": "2.1.1", - "sentence-case": "2.1.1", - "snake-case": "2.1.0", - "swap-case": "1.1.2", - "title-case": "2.1.1", - "upper-case": "1.1.3", - "upper-case-first": "1.1.2" + "camel-case": "^3.0.0", + "constant-case": "^2.0.0", + "dot-case": "^2.1.0", + "header-case": "^1.0.0", + "is-lower-case": "^1.1.0", + "is-upper-case": "^1.1.0", + "lower-case": "^1.1.1", + "lower-case-first": "^1.0.0", + "no-case": "^2.3.2", + "param-case": "^2.1.0", + "pascal-case": "^2.0.0", + "path-case": "^2.1.0", + "sentence-case": "^2.1.0", + "snake-case": "^2.1.0", + "swap-case": "^1.1.0", + "title-case": "^2.1.0", + "upper-case": "^1.1.1", + "upper-case-first": "^1.1.0" } }, "clean-stack": { @@ -801,7 +801,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-truncate": { @@ -810,7 +810,7 @@ "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", "requires": { "slice-ansi": "0.0.4", - "string-width": "1.0.2" + "string-width": "^1.0.1" }, "dependencies": { "ansi-regex": { @@ -823,7 +823,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -831,9 +831,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -841,7 +841,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -851,27 +851,27 @@ "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-4.9.3.tgz", "integrity": "sha512-/1owvF0SZ5Gn54cgrikJ0QskgTzeg30HGjkmjFoaHDJzAqFpuX1DBpFR8aLvsE1J5s9MgeYRENQK4BFwOag5VA==", "requires": { - "@oclif/errors": "1.2.2", - "@oclif/linewrap": "1.0.0", - "@oclif/screen": "1.0.4", - "ansi-escapes": "3.2.0", - "ansi-styles": "3.2.1", - "cardinal": "2.1.1", - "chalk": "2.4.2", - "clean-stack": "2.2.0", - "extract-stack": "1.0.0", - "fs-extra": "7.0.1", - "hyperlinker": "1.0.0", - "indent-string": "3.2.0", - "is-wsl": "1.1.0", - "lodash": "4.17.15", - "password-prompt": "1.1.2", - "semver": "5.7.1", - "strip-ansi": "5.2.0", - "supports-color": "5.5.0", - "supports-hyperlinks": "1.0.1", - "treeify": "1.1.0", - "tslib": "1.10.0" + "@oclif/errors": "^1.2.2", + "@oclif/linewrap": "^1.0.0", + "@oclif/screen": "^1.0.3", + "ansi-escapes": "^3.1.0", + "ansi-styles": "^3.2.1", + "cardinal": "^2.1.1", + "chalk": "^2.4.1", + "clean-stack": "^2.0.0", + "extract-stack": "^1.0.0", + "fs-extra": "^7.0.0", + "hyperlinker": "^1.0.0", + "indent-string": "^3.2.0", + "is-wsl": "^1.1.0", + "lodash": "^4.17.11", + "password-prompt": "^1.0.7", + "semver": "^5.6.0", + "strip-ansi": "^5.0.0", + "supports-color": "^5.5.0", + "supports-hyperlinks": "^1.0.1", + "treeify": "^1.1.0", + "tslib": "^1.9.3" }, "dependencies": { "clean-stack": { @@ -914,8 +914,8 @@ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", "integrity": "sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=", "requires": { - "snake-case": "2.1.0", - "upper-case": "1.1.3" + "snake-case": "^2.1.0", + "upper-case": "^1.1.1" } }, "content-type": { @@ -933,10 +933,10 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "requires": { - "import-fresh": "2.0.0", - "is-directory": "0.3.1", - "js-yaml": "3.13.1", - "parse-json": "4.0.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" } }, "cross-spawn": { @@ -944,11 +944,11 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "nice-try": "1.0.5", - "path-key": "2.0.1", - "semver": "5.7.1", - "shebang-command": "1.2.0", - "which": "1.3.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "date-fns": { @@ -961,7 +961,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "define-properties": { @@ -969,7 +969,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "object-keys": "1.1.1" + "object-keys": "^1.0.12" } }, "diff": { @@ -982,7 +982,7 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", "integrity": "sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=", "requires": { - "no-case": "2.3.2" + "no-case": "^2.2.0" } }, "dotenv": { @@ -1005,7 +1005,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "env-ci": { @@ -1013,8 +1013,8 @@ "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-3.2.2.tgz", "integrity": "sha512-AOiNZ3lmxrtva3r/roqaYDF+1PX2V+ouUzuGqJf7KNxyyYkuU+CsfFbbUeibQPdixxjI/lP6eDtvtkX1/wymJw==", "requires": { - "execa": "1.0.0", - "java-properties": "1.0.2" + "execa": "^1.0.0", + "java-properties": "^1.0.0" } }, "error-ex": { @@ -1022,7 +1022,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es-abstract": { @@ -1030,16 +1030,16 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.3.tgz", "integrity": "sha512-WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw==", "requires": { - "es-to-primitive": "1.2.1", - "function-bind": "1.1.1", - "has": "1.0.3", - "has-symbols": "1.0.1", - "is-callable": "1.1.4", - "is-regex": "1.0.4", - "object-inspect": "1.7.0", - "object-keys": "1.1.1", - "string.prototype.trimleft": "2.1.0", - "string.prototype.trimright": "2.1.0" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" } }, "es-to-primitive": { @@ -1047,9 +1047,9 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { - "is-callable": "1.1.4", - "is-date-object": "1.0.1", - "is-symbol": "1.0.3" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, "escape-string-regexp": { @@ -1072,13 +1072,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { - "cross-spawn": "6.0.5", - "get-stream": "4.1.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "dependencies": { "is-stream": { @@ -1091,7 +1091,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } } } @@ -1121,8 +1121,8 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "fs-extra": { @@ -1130,9 +1130,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "requires": { - "graceful-fs": "4.2.3", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "fs.realpath": { @@ -1150,7 +1150,7 @@ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", "requires": { - "globule": "1.2.1" + "globule": "^1.0.0" } }, "get-stream": { @@ -1158,7 +1158,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } }, "git-parse": { @@ -1193,12 +1193,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.4", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "globule": { @@ -1206,9 +1206,9 @@ "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", "requires": { - "glob": "7.1.5", - "lodash": "4.17.15", - "minimatch": "3.0.4" + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" } }, "graceful-fs": { @@ -1221,7 +1221,7 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.5.8.tgz", "integrity": "sha512-MMwmi0zlVLQKLdGiMfWkgQD7dY/TUKt4L+zgJ/aR0Howebod3aNgP5JkgvAULiR2HPVZaP2VEElqtdidHweLkg==", "requires": { - "iterall": "1.2.2" + "iterall": "^1.2.2" } }, "graphql-tag": { @@ -1234,7 +1234,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.1.1" } }, "has-ansi": { @@ -1242,7 +1242,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -1267,8 +1267,8 @@ "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", "integrity": "sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=", "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" + "no-case": "^2.2.0", + "upper-case": "^1.1.3" } }, "http-call": { @@ -1276,12 +1276,12 @@ "resolved": "https://registry.npmjs.org/http-call/-/http-call-5.3.0.tgz", "integrity": "sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==", "requires": { - "content-type": "1.0.4", - "debug": "4.1.1", - "is-retry-allowed": "1.2.0", - "is-stream": "2.0.0", - "parse-json": "4.0.0", - "tunnel-agent": "0.6.0" + "content-type": "^1.0.4", + "debug": "^4.1.1", + "is-retry-allowed": "^1.1.0", + "is-stream": "^2.0.0", + "parse-json": "^4.0.0", + "tunnel-agent": "^0.6.0" } }, "hyperlinker": { @@ -1294,8 +1294,8 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "requires": { - "caller-path": "2.0.0", - "resolve-from": "3.0.0" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, "indent-string": { @@ -1313,8 +1313,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1357,7 +1357,7 @@ "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", "requires": { - "lower-case": "1.1.4" + "lower-case": "^1.1.0" } }, "is-observable": { @@ -1365,7 +1365,7 @@ "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "requires": { - "symbol-observable": "1.2.0" + "symbol-observable": "^1.1.0" } }, "is-promise": { @@ -1378,7 +1378,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "requires": { - "has": "1.0.3" + "has": "^1.0.1" } }, "is-retry-allowed": { @@ -1396,7 +1396,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { - "has-symbols": "1.0.1" + "has-symbols": "^1.0.1" } }, "is-upper-case": { @@ -1404,7 +1404,7 @@ "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", "requires": { - "upper-case": "1.1.3" + "upper-case": "^1.1.0" } }, "is-wsl": { @@ -1432,8 +1432,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { - "argparse": "1.0.10", - "esprima": "4.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsesc": { @@ -1456,7 +1456,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "graceful-fs": "4.2.3" + "graceful-fs": "^4.1.6" } }, "listr": { @@ -1464,15 +1464,15 @@ "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", "requires": { - "@samverschueren/stream-to-observable": "0.3.0", - "is-observable": "1.1.0", - "is-promise": "2.1.0", - "is-stream": "1.1.0", - "listr-silent-renderer": "1.1.1", - "listr-update-renderer": "0.5.0", - "listr-verbose-renderer": "0.5.0", - "p-map": "2.1.0", - "rxjs": "6.5.3" + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" }, "dependencies": { "is-stream": { @@ -1492,14 +1492,14 @@ "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "elegant-spinner": "1.0.1", - "figures": "1.7.0", - "indent-string": "3.2.0", - "log-symbols": "1.0.2", - "log-update": "2.3.0", - "strip-ansi": "3.0.1" + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { @@ -1517,11 +1517,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -1529,7 +1529,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1544,10 +1544,10 @@ "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", "requires": { - "chalk": "2.4.2", - "cli-cursor": "2.1.0", - "date-fns": "1.30.1", - "figures": "2.0.0" + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" }, "dependencies": { "figures": { @@ -1555,7 +1555,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } } } @@ -1565,11 +1565,11 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", "requires": { - "graceful-fs": "4.2.3", - "parse-json": "4.0.0", - "pify": "4.0.1", - "strip-bom": "3.0.0", - "type-fest": "0.3.1" + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" } }, "lodash": { @@ -1617,8 +1617,8 @@ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.templatesettings": "4.2.0" + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { @@ -1626,7 +1626,7 @@ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "requires": { - "lodash._reinterpolate": "3.0.0" + "lodash._reinterpolate": "^3.0.0" } }, "lodash.xorby": { @@ -1639,7 +1639,7 @@ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "requires": { - "chalk": "1.1.3" + "chalk": "^1.0.0" }, "dependencies": { "ansi-regex": { @@ -1657,11 +1657,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -1669,7 +1669,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1684,9 +1684,9 @@ "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", "requires": { - "ansi-escapes": "3.2.0", - "cli-cursor": "2.1.0", - "wrap-ansi": "3.0.1" + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { @@ -1699,7 +1699,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "wrap-ansi": { @@ -1707,8 +1707,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" } } } @@ -1723,7 +1723,7 @@ "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", "requires": { - "lower-case": "1.1.4" + "lower-case": "^1.1.2" } }, "lru-cache": { @@ -1731,7 +1731,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "requires": { - "yallist": "3.1.1" + "yallist": "^3.0.2" } }, "make-error": { @@ -1749,7 +1749,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "moment": { @@ -1777,7 +1777,7 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "requires": { - "lower-case": "1.1.4" + "lower-case": "^1.1.1" } }, "node-fetch": { @@ -1790,7 +1790,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", "requires": { - "path-key": "3.1.1" + "path-key": "^3.0.0" }, "dependencies": { "path-key": { @@ -1825,8 +1825,8 @@ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.16.3" + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" } }, "once": { @@ -1834,7 +1834,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -1842,7 +1842,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "p-finally": { @@ -1860,7 +1860,7 @@ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "requires": { - "no-case": "2.3.2" + "no-case": "^2.2.0" } }, "parse-json": { @@ -1868,8 +1868,8 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { - "error-ex": "1.3.2", - "json-parse-better-errors": "1.0.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "pascal-case": { @@ -1877,8 +1877,8 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", "integrity": "sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=", "requires": { - "camel-case": "3.0.0", - "upper-case-first": "1.1.2" + "camel-case": "^3.0.0", + "upper-case-first": "^1.1.0" } }, "password-prompt": { @@ -1886,8 +1886,8 @@ "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", "requires": { - "ansi-escapes": "3.2.0", - "cross-spawn": "6.0.5" + "ansi-escapes": "^3.1.0", + "cross-spawn": "^6.0.5" } }, "path-case": { @@ -1895,7 +1895,7 @@ "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", "integrity": "sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=", "requires": { - "no-case": "2.3.2" + "no-case": "^2.2.0" } }, "path-is-absolute": { @@ -1928,8 +1928,8 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "requires": { - "end-of-stream": "1.4.4", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "punycode": { @@ -1943,9 +1943,9 @@ "integrity": "sha512-sD1WJrpLQAkXGyQZyGzTM75WJvyAd98II5CHdK3IYbt/cZlU0UzCRVU11nUFNXX9fBVEt4E9ajkMjBlUlG+Oog==", "requires": { "ast-types": "0.13.2", - "esprima": "4.0.1", - "private": "0.1.8", - "source-map": "0.6.1" + "esprima": "~4.0.0", + "private": "^0.1.8", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { @@ -1960,7 +1960,7 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "requires": { - "resolve": "1.13.1" + "resolve": "^1.1.6" } }, "redeyed": { @@ -1968,7 +1968,7 @@ "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", "requires": { - "esprima": "4.0.1" + "esprima": "~4.0.0" } }, "regenerator-runtime": { @@ -1981,7 +1981,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", "requires": { - "path-parse": "1.0.6" + "path-parse": "^1.0.6" } }, "resolve-from": { @@ -1994,8 +1994,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "rxjs": { @@ -2003,7 +2003,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "requires": { - "tslib": "1.10.0" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -2021,8 +2021,8 @@ "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", "integrity": "sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=", "requires": { - "no-case": "2.3.2", - "upper-case-first": "1.1.2" + "no-case": "^2.2.0", + "upper-case-first": "^1.1.2" } }, "sha.js": { @@ -2030,8 +2030,8 @@ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { - "inherits": "2.0.4", - "safe-buffer": "5.2.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "shebang-command": { @@ -2039,7 +2039,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -2052,9 +2052,9 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", "requires": { - "glob": "7.1.5", - "interpret": "1.2.0", - "rechoir": "0.6.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" } }, "signal-exit": { @@ -2072,7 +2072,7 @@ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", "integrity": "sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=", "requires": { - "no-case": "2.3.2" + "no-case": "^2.2.0" } }, "source-map": { @@ -2085,8 +2085,8 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { - "buffer-from": "1.1.1", - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" }, "dependencies": { "source-map": { @@ -2106,8 +2106,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -2120,7 +2120,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -2130,8 +2130,8 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", "requires": { - "define-properties": "1.1.3", - "function-bind": "1.1.1" + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } }, "string.prototype.trimright": { @@ -2139,8 +2139,8 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", "requires": { - "define-properties": "1.1.3", - "function-bind": "1.1.1" + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } }, "strip-ansi": { @@ -2148,7 +2148,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } }, "strip-bom": { @@ -2166,7 +2166,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "supports-hyperlinks": { @@ -2174,8 +2174,8 @@ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", "requires": { - "has-flag": "2.0.0", - "supports-color": "5.5.0" + "has-flag": "^2.0.0", + "supports-color": "^5.0.0" }, "dependencies": { "has-flag": { @@ -2190,8 +2190,8 @@ "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", "requires": { - "lower-case": "1.1.4", - "upper-case": "1.1.3" + "lower-case": "^1.1.1", + "upper-case": "^1.1.1" } }, "symbol-observable": { @@ -2204,10 +2204,10 @@ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "requires": { - "ajv": "6.10.2", - "lodash": "4.17.15", - "slice-ansi": "2.1.0", - "string-width": "3.1.0" + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" }, "dependencies": { "slice-ansi": { @@ -2215,9 +2215,9 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "requires": { - "ansi-styles": "3.2.1", - "astral-regex": "1.0.0", - "is-fullwidth-code-point": "2.0.0" + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" } }, "string-width": { @@ -2225,9 +2225,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } } } @@ -2237,8 +2237,8 @@ "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", "integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=", "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" + "no-case": "^2.2.0", + "upper-case": "^1.0.3" } }, "to-fast-properties": { @@ -2256,7 +2256,7 @@ "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", "requires": { - "tslib": "1.10.0" + "tslib": "^1.9.3" } }, "ts-node": { @@ -2264,11 +2264,11 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.5.4.tgz", "integrity": "sha512-izbVCRV68EasEPQ8MSIGBNK9dc/4sYJJKYA+IarMQct1RtEot6Xp0bXuClsbUSnKpg50ho+aOAx8en5c+y4OFw==", "requires": { - "arg": "4.1.2", - "diff": "4.0.1", - "make-error": "1.3.5", - "source-map-support": "0.5.16", - "yn": "3.1.1" + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" } }, "tslib": { @@ -2286,7 +2286,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.2.0" + "safe-buffer": "^5.0.1" } }, "type-fest": { @@ -2309,7 +2309,7 @@ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", "requires": { - "upper-case": "1.1.3" + "upper-case": "^1.1.1" } }, "uri-js": { @@ -2317,7 +2317,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "2.1.1" + "punycode": "^2.1.0" } }, "util.promisify": { @@ -2325,8 +2325,8 @@ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "requires": { - "define-properties": "1.1.3", - "object.getownpropertydescriptors": "2.0.3" + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } }, "vscode-jsonrpc": { @@ -2340,7 +2340,7 @@ "integrity": "sha512-GuayqdKZqAwwaCUjDvMTAVRPJOp/SLON3mJ07eGsx/Iq9HjRymhKWztX41rISqDKhHVVyFM+IywICyZDla6U3A==", "requires": { "vscode-languageserver-protocol": "3.14.1", - "vscode-uri": "1.0.6" + "vscode-uri": "^1.0.6" } }, "vscode-languageserver-protocol": { @@ -2348,7 +2348,7 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz", "integrity": "sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g==", "requires": { - "vscode-jsonrpc": "4.0.0", + "vscode-jsonrpc": "^4.0.0", "vscode-languageserver-types": "3.14.0" } }, @@ -2367,7 +2367,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "widest-line": { @@ -2375,7 +2375,7 @@ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" } }, "wrap-ansi": { @@ -2383,9 +2383,9 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==", "requires": { - "ansi-styles": "3.2.1", - "string-width": "2.1.1", - "strip-ansi": "4.0.0" + "ansi-styles": "^3.2.0", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -2398,7 +2398,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -2433,8 +2433,8 @@ "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.20.tgz", "integrity": "sha512-2rkjiPALhOtRaDX6pWyNqK1fnP5KkJJybYebopNSn6wDG1lxBoFs2+nwwXKoA6glHIrtwrfBBy6da0stkKtTAA==", "requires": { - "tslib": "1.10.0", - "zen-observable": "0.8.15" + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" } } } From 2088005473900e8bebc7634977c2470b8937b47a Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Fri, 13 Nov 2020 01:07:13 +0900 Subject: [PATCH 003/101] Impl Fluxer --- Portannict/Fluxer/Fluxer.h | 18 ++ Portannict/Fluxer/Info.plist | 22 +++ Portannict/{Common => Fluxer}/ViewModel.swift | 2 +- .../Portannict.xcodeproj/project.pbxproj | 175 +++++++++++++++++- .../xcschemes/xcschememanagement.plist | 5 + .../Portannict/Root/RootViewModel.swift | 9 + 6 files changed, 225 insertions(+), 6 deletions(-) create mode 100644 Portannict/Fluxer/Fluxer.h create mode 100644 Portannict/Fluxer/Info.plist rename Portannict/{Common => Fluxer}/ViewModel.swift (99%) diff --git a/Portannict/Fluxer/Fluxer.h b/Portannict/Fluxer/Fluxer.h new file mode 100644 index 00000000..80d0b311 --- /dev/null +++ b/Portannict/Fluxer/Fluxer.h @@ -0,0 +1,18 @@ +// +// Fluxer.h +// Fluxer +// +// Created by Yuto Akiba on 2020/11/13. +// + +#import + +//! Project version number for Fluxer. +FOUNDATION_EXPORT double FluxerVersionNumber; + +//! Project version string for Fluxer. +FOUNDATION_EXPORT const unsigned char FluxerVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Portannict/Fluxer/Info.plist b/Portannict/Fluxer/Info.plist new file mode 100644 index 00000000..9bcb2444 --- /dev/null +++ b/Portannict/Fluxer/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Portannict/Common/ViewModel.swift b/Portannict/Fluxer/ViewModel.swift similarity index 99% rename from Portannict/Common/ViewModel.swift rename to Portannict/Fluxer/ViewModel.swift index 1ba53b89..d55bcc56 100644 --- a/Portannict/Common/ViewModel.swift +++ b/Portannict/Fluxer/ViewModel.swift @@ -1,6 +1,6 @@ // // ViewModel.swift -// Portannict +// Fluxer // // Created by Yuto Akiba on 2020/11/13. // diff --git a/Portannict/Portannict.xcodeproj/project.pbxproj b/Portannict/Portannict.xcodeproj/project.pbxproj index dc465b2a..891c556d 100644 --- a/Portannict/Portannict.xcodeproj/project.pbxproj +++ b/Portannict/Portannict.xcodeproj/project.pbxproj @@ -20,11 +20,38 @@ CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF841D4724CA6A1F00F3723B /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4624CA6A1F00F3723B /* RootView.swift */; }; CFB8D8BB255D18A20092764B /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB8D8BA255D18A20092764B /* RootViewModel.swift */; }; - CFCA3EF3255D8F2F00AA2469 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */; }; + CFCA3EFF255D934900AA2469 /* Fluxer.h in Headers */ = {isa = PBXBuildFile; fileRef = CFCA3EFD255D934900AA2469 /* Fluxer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFCA3F02255D934900AA2469 /* Fluxer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CFCA3EFB255D934900AA2469 /* Fluxer.framework */; }; + CFCA3F03255D934900AA2469 /* Fluxer.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CFCA3EFB255D934900AA2469 /* Fluxer.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + CFCA3F09255D935000AA2469 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */; }; CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */; }; CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + CFCA3F00255D934900AA2469 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CF08FBFB24B9AD1A00CD29DD /* Project object */; + proxyType = 1; + remoteGlobalIDString = CFCA3EFA255D934900AA2469; + remoteInfo = Fluxer; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + CFCA3F07255D934900AA2469 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + CFCA3F03255D934900AA2469 /* Fluxer.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ CF08FC0324B9AD1A00CD29DD /* Portannict.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Portannict.app; sourceTree = BUILT_PRODUCTS_DIR; }; CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortannictApp.swift; sourceTree = ""; }; @@ -42,12 +69,23 @@ CF841D4624CA6A1F00F3723B /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; }; CFB8D8BA255D18A20092764B /* RootViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewModel.swift; sourceTree = ""; }; CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewModel.swift; sourceTree = ""; }; + CFCA3EFB255D934900AA2469 /* Fluxer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Fluxer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CFCA3EFD255D934900AA2469 /* Fluxer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fluxer.h; sourceTree = ""; }; + CFCA3EFE255D934900AA2469 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteWorkView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ CF08FC0024B9AD1A00CD29DD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CFCA3F02255D934900AA2469 /* Fluxer.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + CFCA3EF8255D934900AA2469 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -60,8 +98,8 @@ CF08FBFA24B9AD1A00CD29DD = { isa = PBXGroup; children = ( - CFCA3EF1255D8F1A00AA2469 /* Common */, CF08FC0524B9AD1A00CD29DD /* Portannict */, + CFCA3EFC255D934900AA2469 /* Fluxer */, CF08FC0424B9AD1A00CD29DD /* Products */, ); sourceTree = ""; @@ -70,6 +108,7 @@ isa = PBXGroup; children = ( CF08FC0324B9AD1A00CD29DD /* Portannict.app */, + CFCA3EFB255D934900AA2469 /* Fluxer.framework */, ); name = Products; sourceTree = ""; @@ -126,12 +165,14 @@ path = Root; sourceTree = ""; }; - CFCA3EF1255D8F1A00AA2469 /* Common */ = { + CFCA3EFC255D934900AA2469 /* Fluxer */ = { isa = PBXGroup; children = ( CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */, + CFCA3EFD255D934900AA2469 /* Fluxer.h */, + CFCA3EFE255D934900AA2469 /* Info.plist */, ); - path = Common; + path = Fluxer; sourceTree = ""; }; CFFE4FFA24C9BF1A003AECE5 /* Home */ = { @@ -147,6 +188,17 @@ }; /* End PBXGroup section */ +/* Begin PBXHeadersBuildPhase section */ + CFCA3EF6255D934900AA2469 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + CFCA3EFF255D934900AA2469 /* Fluxer.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + /* Begin PBXNativeTarget section */ CF08FC0224B9AD1A00CD29DD /* Portannict */ = { isa = PBXNativeTarget; @@ -155,16 +207,36 @@ CF08FBFF24B9AD1A00CD29DD /* Sources */, CF08FC0024B9AD1A00CD29DD /* Frameworks */, CF08FC0124B9AD1A00CD29DD /* Resources */, + CFCA3F07255D934900AA2469 /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( + CFCA3F01255D934900AA2469 /* PBXTargetDependency */, ); name = Portannict; productName = Portannict; productReference = CF08FC0324B9AD1A00CD29DD /* Portannict.app */; productType = "com.apple.product-type.application"; }; + CFCA3EFA255D934900AA2469 /* Fluxer */ = { + isa = PBXNativeTarget; + buildConfigurationList = CFCA3F04255D934900AA2469 /* Build configuration list for PBXNativeTarget "Fluxer" */; + buildPhases = ( + CFCA3EF6255D934900AA2469 /* Headers */, + CFCA3EF7255D934900AA2469 /* Sources */, + CFCA3EF8255D934900AA2469 /* Frameworks */, + CFCA3EF9255D934900AA2469 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Fluxer; + productName = Fluxer; + productReference = CFCA3EFB255D934900AA2469 /* Fluxer.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -177,6 +249,9 @@ CF08FC0224B9AD1A00CD29DD = { CreatedOnToolsVersion = 12.0; }; + CFCA3EFA255D934900AA2469 = { + CreatedOnToolsVersion = 12.1; + }; }; }; buildConfigurationList = CF08FBFE24B9AD1A00CD29DD /* Build configuration list for PBXProject "Portannict" */; @@ -193,6 +268,7 @@ projectRoot = ""; targets = ( CF08FC0224B9AD1A00CD29DD /* Portannict */, + CFCA3EFA255D934900AA2469 /* Fluxer */, ); }; /* End PBXProject section */ @@ -207,6 +283,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + CFCA3EF9255D934900AA2469 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -220,7 +303,6 @@ CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, - CFCA3EF3255D8F2F00AA2469 /* ViewModel.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */, @@ -231,8 +313,24 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + CFCA3EF7255D934900AA2469 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CFCA3F09255D935000AA2469 /* ViewModel.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + CFCA3F01255D934900AA2469 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = CFCA3EFA255D934900AA2469 /* Fluxer */; + targetProxy = CFCA3F00255D934900AA2469 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ CF08FC1024B9AD1A00CD29DD /* Debug */ = { isa = XCBuildConfiguration; @@ -353,6 +451,7 @@ CF08FC1324B9AD1A00CD29DD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; @@ -375,6 +474,7 @@ CF08FC1424B9AD1A00CD29DD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; @@ -394,6 +494,62 @@ }; name = Release; }; + CFCA3F05255D934900AA2469 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = V8AZ23YEL4; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Fluxer/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.touyu.Fluxer; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + CFCA3F06255D934900AA2469 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = V8AZ23YEL4; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Fluxer/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.touyu.Fluxer; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -415,6 +571,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + CFCA3F04255D934900AA2469 /* Build configuration list for PBXNativeTarget "Fluxer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CFCA3F05255D934900AA2469 /* Debug */, + CFCA3F06255D934900AA2469 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = CF08FBFB24B9AD1A00CD29DD /* Project object */; diff --git a/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist b/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist index f027ab2e..c0278bf6 100644 --- a/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,6 +4,11 @@ SchemeUserState + Fluxer.xcscheme_^#shared#^_ + + orderHint + 1 + Portannict.xcscheme_^#shared#^_ orderHint diff --git a/Portannict/Portannict/Root/RootViewModel.swift b/Portannict/Portannict/Root/RootViewModel.swift index 2504223f..f9620215 100644 --- a/Portannict/Portannict/Root/RootViewModel.swift +++ b/Portannict/Portannict/Root/RootViewModel.swift @@ -8,6 +8,7 @@ import Foundation import Combine import SwiftUI +import Fluxer final class RootViewModel: ViewModel { enum Action { @@ -44,6 +45,14 @@ final class RootViewModel: ViewModel { state.number += 1 } } + + func transform(mutation: AnyPublisher) -> AnyPublisher { + let m = Timer.publish(every: 1.0, on: .main, in: .common) + .autoconnect() + .map { _ in Mutation.increment } + + return mutation.merge(with: m).eraseToAnyPublisher() + } } final class APIClient { From 6023e32a1c1faa380573604261f0398f51c50cfd Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Fri, 13 Nov 2020 01:07:32 +0900 Subject: [PATCH 004/101] Update ViewModel.swift --- Portannict/Fluxer/ViewModel.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Portannict/Fluxer/ViewModel.swift b/Portannict/Fluxer/ViewModel.swift index d55bcc56..04f60831 100644 --- a/Portannict/Fluxer/ViewModel.swift +++ b/Portannict/Fluxer/ViewModel.swift @@ -68,7 +68,7 @@ public extension ViewModel where Self.ObjectWillChangePublisher == ObservableObj self.action = PassthroughSubject() self.cancellables = Set() - // Create bind stream + // Create binding stream let action = self.action .eraseToAnyPublisher() From 7ecf65e364668b8cd09f6477e1d874849f54e97f Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Fri, 13 Nov 2020 01:29:01 +0900 Subject: [PATCH 005/101] Impl --- Portannict/Fluxer/UI/Button.swift | 16 ++++++++++++++++ Portannict/Portannict.xcodeproj/project.pbxproj | 12 ++++++++++++ Portannict/Portannict/Root/RootView.swift | 9 ++++----- 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 Portannict/Fluxer/UI/Button.swift diff --git a/Portannict/Fluxer/UI/Button.swift b/Portannict/Fluxer/UI/Button.swift new file mode 100644 index 00000000..4d4d62e2 --- /dev/null +++ b/Portannict/Fluxer/UI/Button.swift @@ -0,0 +1,16 @@ +// +// Button.swift +// Fluxer +// +// Created by Yuto Akiba on 2020/11/13. +// + +import SwiftUI + +public extension SwiftUI.Button { + init(viewModel: VM, action: VM.Action, @ViewBuilder label: @escaping () -> Label) where VM: ViewModel { + self.init(action: { + viewModel.action.send(action) + }, label: label) + } +} diff --git a/Portannict/Portannict.xcodeproj/project.pbxproj b/Portannict/Portannict.xcodeproj/project.pbxproj index 891c556d..f62b4d60 100644 --- a/Portannict/Portannict.xcodeproj/project.pbxproj +++ b/Portannict/Portannict.xcodeproj/project.pbxproj @@ -24,6 +24,7 @@ CFCA3F02255D934900AA2469 /* Fluxer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CFCA3EFB255D934900AA2469 /* Fluxer.framework */; }; CFCA3F03255D934900AA2469 /* Fluxer.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CFCA3EFB255D934900AA2469 /* Fluxer.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; CFCA3F09255D935000AA2469 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */; }; + CFCA3F11255D958300AA2469 /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3F10255D958300AA2469 /* Button.swift */; }; CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */; }; CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */; }; /* End PBXBuildFile section */ @@ -72,6 +73,7 @@ CFCA3EFB255D934900AA2469 /* Fluxer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Fluxer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CFCA3EFD255D934900AA2469 /* Fluxer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fluxer.h; sourceTree = ""; }; CFCA3EFE255D934900AA2469 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + CFCA3F10255D958300AA2469 /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteWorkView.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -168,6 +170,7 @@ CFCA3EFC255D934900AA2469 /* Fluxer */ = { isa = PBXGroup; children = ( + CFCA3F0F255D957900AA2469 /* UI */, CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */, CFCA3EFD255D934900AA2469 /* Fluxer.h */, CFCA3EFE255D934900AA2469 /* Info.plist */, @@ -175,6 +178,14 @@ path = Fluxer; sourceTree = ""; }; + CFCA3F0F255D957900AA2469 /* UI */ = { + isa = PBXGroup; + children = ( + CFCA3F10255D958300AA2469 /* Button.swift */, + ); + path = UI; + sourceTree = ""; + }; CFFE4FFA24C9BF1A003AECE5 /* Home */ = { isa = PBXGroup; children = ( @@ -318,6 +329,7 @@ buildActionMask = 2147483647; files = ( CFCA3F09255D935000AA2469 /* ViewModel.swift in Sources */, + CFCA3F11255D958300AA2469 /* Button.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Portannict/Portannict/Root/RootView.swift b/Portannict/Portannict/Root/RootView.swift index d0d4cf16..09d7b594 100644 --- a/Portannict/Portannict/Root/RootView.swift +++ b/Portannict/Portannict/Root/RootView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import Fluxer struct RootView: View { @ObservedObject var viewModel: RootViewModel @@ -19,11 +20,9 @@ struct RootView: View { var body: some View { VStack { TextField("AAAA", value: $viewModel.state.number, formatter: NumberFormatter()) - Button(action: { - viewModel.action.send(.increment) - }, label: { - Text("Button") - }) + Button(viewModel: viewModel, action: .increment) { + Text("AAAA") + } } } } From b89cc005c6d03768f2ebe00895e53ded84784934 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Fri, 13 Nov 2020 01:39:33 +0900 Subject: [PATCH 006/101] Fix --- Portannict/Fluxer/AssociatedKey.swift | 13 +++++++++++++ Portannict/Fluxer/ViewModel.swift | 13 ++++--------- Portannict/Portannict.xcodeproj/project.pbxproj | 4 ++++ 3 files changed, 21 insertions(+), 9 deletions(-) create mode 100644 Portannict/Fluxer/AssociatedKey.swift diff --git a/Portannict/Fluxer/AssociatedKey.swift b/Portannict/Fluxer/AssociatedKey.swift new file mode 100644 index 00000000..0c73a24b --- /dev/null +++ b/Portannict/Fluxer/AssociatedKey.swift @@ -0,0 +1,13 @@ +// +// AssociatedKey.swift +// Fluxer +// +// Created by Yuto Akiba on 2020/11/13. +// + +import Foundation + +enum AssociatedKey { + static var action: UInt8 = 0 + static var cancellables: UInt8 = 0 +} diff --git a/Portannict/Fluxer/ViewModel.swift b/Portannict/Fluxer/ViewModel.swift index 04f60831..20d90293 100644 --- a/Portannict/Fluxer/ViewModel.swift +++ b/Portannict/Fluxer/ViewModel.swift @@ -29,20 +29,15 @@ public protocol ViewModel: ObservableObject { func initilize() } -fileprivate enum ViewModelAssociatedKey { - static var action: UInt8 = 0 - static var cancellables: UInt8 = 0 -} - public extension ViewModel { var action: PassthroughSubject { - get { return objc_getAssociatedObject(self, &ViewModelAssociatedKey.action) as! PassthroughSubject } - set { objc_setAssociatedObject(self, &ViewModelAssociatedKey.action, newValue, .OBJC_ASSOCIATION_RETAIN) } + get { return objc_getAssociatedObject(self, &AssociatedKey.action) as! PassthroughSubject } + set { objc_setAssociatedObject(self, &AssociatedKey.action, newValue, .OBJC_ASSOCIATION_RETAIN) } } var cancellables: Set { - get { return objc_getAssociatedObject(self, &ViewModelAssociatedKey.cancellables) as! Set } - set { objc_setAssociatedObject(self, &ViewModelAssociatedKey.cancellables, newValue, .OBJC_ASSOCIATION_RETAIN) } + get { return objc_getAssociatedObject(self, &AssociatedKey.cancellables) as! Set } + set { objc_setAssociatedObject(self, &AssociatedKey.cancellables, newValue, .OBJC_ASSOCIATION_RETAIN) } } func mutate(action: Action) -> AnyPublisher { diff --git a/Portannict/Portannict.xcodeproj/project.pbxproj b/Portannict/Portannict.xcodeproj/project.pbxproj index f62b4d60..5716620e 100644 --- a/Portannict/Portannict.xcodeproj/project.pbxproj +++ b/Portannict/Portannict.xcodeproj/project.pbxproj @@ -25,6 +25,7 @@ CFCA3F03255D934900AA2469 /* Fluxer.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CFCA3EFB255D934900AA2469 /* Fluxer.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; CFCA3F09255D935000AA2469 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */; }; CFCA3F11255D958300AA2469 /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3F10255D958300AA2469 /* Button.swift */; }; + CFCA3F15255D9C3400AA2469 /* AssociatedKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3F14255D9C3400AA2469 /* AssociatedKey.swift */; }; CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */; }; CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */; }; /* End PBXBuildFile section */ @@ -74,6 +75,7 @@ CFCA3EFD255D934900AA2469 /* Fluxer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fluxer.h; sourceTree = ""; }; CFCA3EFE255D934900AA2469 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; CFCA3F10255D958300AA2469 /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = ""; }; + CFCA3F14255D9C3400AA2469 /* AssociatedKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssociatedKey.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteWorkView.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -172,6 +174,7 @@ children = ( CFCA3F0F255D957900AA2469 /* UI */, CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */, + CFCA3F14255D9C3400AA2469 /* AssociatedKey.swift */, CFCA3EFD255D934900AA2469 /* Fluxer.h */, CFCA3EFE255D934900AA2469 /* Info.plist */, ); @@ -329,6 +332,7 @@ buildActionMask = 2147483647; files = ( CFCA3F09255D935000AA2469 /* ViewModel.swift in Sources */, + CFCA3F15255D9C3400AA2469 /* AssociatedKey.swift in Sources */, CFCA3F11255D958300AA2469 /* Button.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; From 3f999387ac0d6c429239a0d974d0b3c64c69cbbb Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Fri, 25 Dec 2020 12:57:11 +0900 Subject: [PATCH 007/101] Impl --- .gitignore | 1 + .../AppIcon.appiconset/Contents.json | 116 -------- Annict-for-iOS/Assets.xcassets/Contents.json | 6 +- Annict-for-iOS/Commons/API/HTTPClient.swift | 62 ++-- Portannict/Fluxer/AssociatedKey.swift | 13 - Portannict/Fluxer/Fluxer.h | 18 -- Portannict/Fluxer/Info.plist | 22 -- Portannict/Fluxer/UI/Button.swift | 16 -- Portannict/Fluxer/ViewModel.swift | 92 ------ .../Portannict.xcodeproj/project.pbxproj | 268 ++++++------------ .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/swiftpm/Package.resolved | 16 ++ .../AppIcon.appiconset/Contents.json | 18 ++ .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../Icon-App-20x20@2x-1.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../Icon-App-29x29@2x-1.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../Icon-App-40x40@2x-1.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../Icon-App-83.5x83.5@2x.png | Bin .../AppIcon.appiconset/ItunesArtwork@2x.png | Bin .../Common/API/REST/HTTPClient.swift | 72 +++++ .../Common/API/REST/OauthTokenRequest.swift | 39 +++ Portannict/Portannict/Common/Constants.swift | 28 ++ Portannict/Portannict/Common/Env.swift | 54 ++++ Portannict/Portannict/Info.plist | 11 + Portannict/Portannict/Login/LoginView.swift | 20 +- .../Portannict/Login/LoginViewModel.swift | 92 ++++++ Portannict/Portannict/PortannictApp.swift | 9 + Portannict/Portannict/Root/RootView.swift | 20 +- .../Portannict/Root/RootViewModel.swift | 44 +-- Portannict/Portannict/Test/TestView.swift | 34 +++ .../Portannict/Test/TestViewModel.swift | 64 +++++ 43 files changed, 610 insertions(+), 533 deletions(-) delete mode 100644 Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 Portannict/Fluxer/AssociatedKey.swift delete mode 100644 Portannict/Fluxer/Fluxer.h delete mode 100644 Portannict/Fluxer/Info.plist delete mode 100644 Portannict/Fluxer/UI/Button.swift delete mode 100644 Portannict/Fluxer/ViewModel.swift create mode 100644 Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename {Annict-for-iOS => Portannict/Portannict}/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png (100%) create mode 100644 Portannict/Portannict/Common/API/REST/HTTPClient.swift create mode 100644 Portannict/Portannict/Common/API/REST/OauthTokenRequest.swift create mode 100644 Portannict/Portannict/Common/Constants.swift create mode 100644 Portannict/Portannict/Common/Env.swift create mode 100644 Portannict/Portannict/Login/LoginViewModel.swift create mode 100644 Portannict/Portannict/Test/TestView.swift create mode 100644 Portannict/Portannict/Test/TestViewModel.swift diff --git a/.gitignore b/.gitignore index 75eb28e5..1be142ec 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,6 @@ node_modules vendor/bundle .env +Envfile node_modules diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 4a89182c..00000000 --- a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x-1.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x-1.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x-1.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "ItunesArtwork@2x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Annict-for-iOS/Assets.xcassets/Contents.json b/Annict-for-iOS/Assets.xcassets/Contents.json index da4a164c..73c00596 100644 --- a/Annict-for-iOS/Assets.xcassets/Contents.json +++ b/Annict-for-iOS/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/Annict-for-iOS/Commons/API/HTTPClient.swift b/Annict-for-iOS/Commons/API/HTTPClient.swift index 9972081e..8ccba7ea 100644 --- a/Annict-for-iOS/Commons/API/HTTPClient.swift +++ b/Annict-for-iOS/Commons/API/HTTPClient.swift @@ -7,7 +7,6 @@ // import Foundation -import RxSwift enum HTTPClientError: Error { case noData @@ -15,7 +14,6 @@ enum HTTPClientError: Error { } enum HTTPMethod: String { -// case get = "GET" case post = "POST" } @@ -38,18 +36,13 @@ extension HTTPRequest { } final class HTTPClient { - enum Result { - case success(T) - case failure(Error) - } - private static var decoder: JSONDecoder { let decoder = JSONDecoder() decoder.keyDecodingStrategy = .convertFromSnakeCase return decoder } - static func send(request: T, completion: ((Result) -> Void)?) { + static func send(request: T, completion: ((Result) -> Void)?) { let request = request.buildRequest() let task = URLSession.shared.dataTask(with: request) { data, response, error in DispatchQueue.main.async { @@ -73,18 +66,43 @@ final class HTTPClient { } task.resume() } - - static func send(request: T) -> Single { - return Single.create { singleEvent in - send(request: request) { result in - switch result { - case .success(let value): - singleEvent(.success(value)) - case .failure(let error): - singleEvent(.error(error)) - } - } - return Disposables.create() - } - } + +// static func send(request: T, completion: ((Result) -> Void)?) { +// let request = request.buildRequest() +// let task = URLSession.shared.dataTask(with: request) { data, response, error in +// DispatchQueue.main.async { +// if let error = error { +// completion?(.failure(error)) +// return +// } +// +// guard let data = data else { +// completion?(.failure(HTTPClientError.noData)) +// return +// } +// +// do { +// let res = try decoder.decode(T.Response.self, from: data) +// completion?(.success(res)) +// } catch { +// completion?(.failure(error)) +// } +// } +// } +// task.resume() +// } +// +// static func send(request: T) -> Single { +// return Single.create { singleEvent in +// send(request: request) { result in +// switch result { +// case .success(let value): +// singleEvent(.success(value)) +// case .failure(let error): +// singleEvent(.error(error)) +// } +// } +// return Disposables.create() +// } +// } } diff --git a/Portannict/Fluxer/AssociatedKey.swift b/Portannict/Fluxer/AssociatedKey.swift deleted file mode 100644 index 0c73a24b..00000000 --- a/Portannict/Fluxer/AssociatedKey.swift +++ /dev/null @@ -1,13 +0,0 @@ -// -// AssociatedKey.swift -// Fluxer -// -// Created by Yuto Akiba on 2020/11/13. -// - -import Foundation - -enum AssociatedKey { - static var action: UInt8 = 0 - static var cancellables: UInt8 = 0 -} diff --git a/Portannict/Fluxer/Fluxer.h b/Portannict/Fluxer/Fluxer.h deleted file mode 100644 index 80d0b311..00000000 --- a/Portannict/Fluxer/Fluxer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Fluxer.h -// Fluxer -// -// Created by Yuto Akiba on 2020/11/13. -// - -#import - -//! Project version number for Fluxer. -FOUNDATION_EXPORT double FluxerVersionNumber; - -//! Project version string for Fluxer. -FOUNDATION_EXPORT const unsigned char FluxerVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Portannict/Fluxer/Info.plist b/Portannict/Fluxer/Info.plist deleted file mode 100644 index 9bcb2444..00000000 --- a/Portannict/Fluxer/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.0 - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - - diff --git a/Portannict/Fluxer/UI/Button.swift b/Portannict/Fluxer/UI/Button.swift deleted file mode 100644 index 4d4d62e2..00000000 --- a/Portannict/Fluxer/UI/Button.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// Button.swift -// Fluxer -// -// Created by Yuto Akiba on 2020/11/13. -// - -import SwiftUI - -public extension SwiftUI.Button { - init(viewModel: VM, action: VM.Action, @ViewBuilder label: @escaping () -> Label) where VM: ViewModel { - self.init(action: { - viewModel.action.send(action) - }, label: label) - } -} diff --git a/Portannict/Fluxer/ViewModel.swift b/Portannict/Fluxer/ViewModel.swift deleted file mode 100644 index 20d90293..00000000 --- a/Portannict/Fluxer/ViewModel.swift +++ /dev/null @@ -1,92 +0,0 @@ -// -// ViewModel.swift -// Fluxer -// -// Created by Yuto Akiba on 2020/11/13. -// - -import Foundation -import Combine -import SwiftUI - -public protocol ViewModel: ObservableObject { - associatedtype Action - associatedtype Mutation - associatedtype State: ObservableObject - - var action: PassthroughSubject { get } - var state: State { get set } - - var cancellables: Set { get set } - - func mutate(action: Action) -> AnyPublisher - func reduce(mutation: Mutation) - - func transform(action: AnyPublisher) -> AnyPublisher - func transform(mutation: AnyPublisher) -> AnyPublisher -// func transform(state: AnyPublisher) -> AnyPublisher - - func initilize() -} - -public extension ViewModel { - var action: PassthroughSubject { - get { return objc_getAssociatedObject(self, &AssociatedKey.action) as! PassthroughSubject } - set { objc_setAssociatedObject(self, &AssociatedKey.action, newValue, .OBJC_ASSOCIATION_RETAIN) } - } - - var cancellables: Set { - get { return objc_getAssociatedObject(self, &AssociatedKey.cancellables) as! Set } - set { objc_setAssociatedObject(self, &AssociatedKey.cancellables, newValue, .OBJC_ASSOCIATION_RETAIN) } - } - - func mutate(action: Action) -> AnyPublisher { - Empty().eraseToAnyPublisher() - } - - func reduce(mutation: Mutation) { - - } - - func transform(action: AnyPublisher) -> AnyPublisher { - action - } - - func transform(mutation: AnyPublisher) -> AnyPublisher { - mutation - } -} - -public extension ViewModel where Self.ObjectWillChangePublisher == ObservableObjectPublisher { - func initilize() { - - self.action = PassthroughSubject() - self.cancellables = Set() - - // Create binding stream - let action = self.action - .eraseToAnyPublisher() - - let transformedAction = transform(action: action) - - let mutation = transformedAction.flatMap { [weak self] action in - return self?.mutate(action: action) ?? Empty().eraseToAnyPublisher() - } - .eraseToAnyPublisher() - - let transformedMutation = transform(mutation: mutation) - - transformedMutation.sink { completion in - - } receiveValue: { [weak self] mutation in - self?.reduce(mutation: mutation) - } - .store(in: &cancellables) - - // State changed event -> ViewModel changed event - state.objectWillChange.sink(receiveValue: { [weak self] _ in - self?.objectWillChange.send() - }) - .store(in: &cancellables) - } -} diff --git a/Portannict/Portannict.xcodeproj/project.pbxproj b/Portannict/Portannict.xcodeproj/project.pbxproj index 5716620e..2312d0e0 100644 --- a/Portannict/Portannict.xcodeproj/project.pbxproj +++ b/Portannict/Portannict.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -18,28 +18,21 @@ CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; - CF841D4724CA6A1F00F3723B /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4624CA6A1F00F3723B /* RootView.swift */; }; - CFB8D8BB255D18A20092764B /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB8D8BA255D18A20092764B /* RootViewModel.swift */; }; - CFCA3EFF255D934900AA2469 /* Fluxer.h in Headers */ = {isa = PBXBuildFile; fileRef = CFCA3EFD255D934900AA2469 /* Fluxer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFCA3F02255D934900AA2469 /* Fluxer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CFCA3EFB255D934900AA2469 /* Fluxer.framework */; }; - CFCA3F03255D934900AA2469 /* Fluxer.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CFCA3EFB255D934900AA2469 /* Fluxer.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - CFCA3F09255D935000AA2469 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */; }; - CFCA3F11255D958300AA2469 /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3F10255D958300AA2469 /* Button.swift */; }; - CFCA3F15255D9C3400AA2469 /* AssociatedKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCA3F14255D9C3400AA2469 /* AssociatedKey.swift */; }; + CF841D4724CA6A1F00F3723B /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4624CA6A1F00F3723B /* TestView.swift */; }; + CFB8D8BB255D18A20092764B /* TestViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB8D8BA255D18A20092764B /* TestViewModel.swift */; }; + CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03EFE259483D9001516D3 /* HTTPClient.swift */; }; + CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F002594895F001516D3 /* LoginViewModel.swift */; }; + CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */; }; + CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */ = {isa = PBXBuildFile; productRef = CFCA3FEA255DAB4900AA2469 /* Fluxer */; }; + CFE38313258E603300CEE318 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE38312258E603300CEE318 /* RootView.swift */; }; + CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE38314258E610F00CEE318 /* RootViewModel.swift */; }; + CFE3831E258E628C00CEE318 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831D258E628C00CEE318 /* Constants.swift */; }; + CFE38320258E64F600CEE318 /* Env.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831F258E64F600CEE318 /* Env.swift */; }; + CFEB60C2258E670700CE6B24 /* Envfile in Resources */ = {isa = PBXBuildFile; fileRef = CFEB60C1258E670700CE6B24 /* Envfile */; }; CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */; }; CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - CFCA3F00255D934900AA2469 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = CF08FBFB24B9AD1A00CD29DD /* Project object */; - proxyType = 1; - remoteGlobalIDString = CFCA3EFA255D934900AA2469; - remoteInfo = Fluxer; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXCopyFilesBuildPhase section */ CFCA3F07255D934900AA2469 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -47,7 +40,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - CFCA3F03255D934900AA2469 /* Fluxer.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -68,14 +60,16 @@ CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewModel.swift; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; - CF841D4624CA6A1F00F3723B /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; }; - CFB8D8BA255D18A20092764B /* RootViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewModel.swift; sourceTree = ""; }; - CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewModel.swift; sourceTree = ""; }; - CFCA3EFB255D934900AA2469 /* Fluxer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Fluxer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CFCA3EFD255D934900AA2469 /* Fluxer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fluxer.h; sourceTree = ""; }; - CFCA3EFE255D934900AA2469 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - CFCA3F10255D958300AA2469 /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = ""; }; - CFCA3F14255D9C3400AA2469 /* AssociatedKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssociatedKey.swift; sourceTree = ""; }; + CF841D4624CA6A1F00F3723B /* TestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestView.swift; sourceTree = ""; }; + CFB8D8BA255D18A20092764B /* TestViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestViewModel.swift; sourceTree = ""; }; + CFC03EFE259483D9001516D3 /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; + CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; + CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OauthTokenRequest.swift; sourceTree = ""; }; + CFE38312258E603300CEE318 /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; }; + CFE38314258E610F00CEE318 /* RootViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewModel.swift; sourceTree = ""; }; + CFE3831D258E628C00CEE318 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + CFE3831F258E64F600CEE318 /* Env.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Env.swift; sourceTree = ""; }; + CFEB60C1258E670700CE6B24 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteWorkView.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -85,14 +79,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CFCA3F02255D934900AA2469 /* Fluxer.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - CFCA3EF8255D934900AA2469 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +90,6 @@ isa = PBXGroup; children = ( CF08FC0524B9AD1A00CD29DD /* Portannict */, - CFCA3EFC255D934900AA2469 /* Fluxer */, CF08FC0424B9AD1A00CD29DD /* Products */, ); sourceTree = ""; @@ -112,7 +98,6 @@ isa = PBXGroup; children = ( CF08FC0324B9AD1A00CD29DD /* Portannict.app */, - CFCA3EFB255D934900AA2469 /* Fluxer.framework */, ); name = Products; sourceTree = ""; @@ -120,6 +105,8 @@ CF08FC0524B9AD1A00CD29DD /* Portannict */ = { isa = PBXGroup; children = ( + CFE38316258E621400CEE318 /* Common */, + CFE38311258E5FD000CEE318 /* Test */, CFB8D8B9255D18740092764B /* Root */, CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */, CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, @@ -128,6 +115,7 @@ CFFE4FFA24C9BF1A003AECE5 /* Home */, CF08FC1524B9AFC500CD29DD /* ProfileView.swift */, CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, + CFEB60C1258E670700CE6B24 /* Envfile */, CF08FC0F24B9AD1A00CD29DD /* Info.plist */, CF08FC0C24B9AD1A00CD29DD /* Preview Content */, ); @@ -156,6 +144,7 @@ isa = PBXGroup; children = ( CF841D4424CA69A600F3723B /* LoginView.swift */, + CFC03F002594895F001516D3 /* LoginViewModel.swift */, ); path = Login; sourceTree = ""; @@ -163,30 +152,46 @@ CFB8D8B9255D18740092764B /* Root */ = { isa = PBXGroup; children = ( - CF841D4624CA6A1F00F3723B /* RootView.swift */, - CFB8D8BA255D18A20092764B /* RootViewModel.swift */, + CFE38312258E603300CEE318 /* RootView.swift */, + CFE38314258E610F00CEE318 /* RootViewModel.swift */, ); path = Root; sourceTree = ""; }; - CFCA3EFC255D934900AA2469 /* Fluxer */ = { + CFE38311258E5FD000CEE318 /* Test */ = { isa = PBXGroup; children = ( - CFCA3F0F255D957900AA2469 /* UI */, - CFCA3EF2255D8F2F00AA2469 /* ViewModel.swift */, - CFCA3F14255D9C3400AA2469 /* AssociatedKey.swift */, - CFCA3EFD255D934900AA2469 /* Fluxer.h */, - CFCA3EFE255D934900AA2469 /* Info.plist */, + CF841D4624CA6A1F00F3723B /* TestView.swift */, + CFB8D8BA255D18A20092764B /* TestViewModel.swift */, ); - path = Fluxer; + path = Test; sourceTree = ""; }; - CFCA3F0F255D957900AA2469 /* UI */ = { + CFE38316258E621400CEE318 /* Common */ = { isa = PBXGroup; children = ( - CFCA3F10255D958300AA2469 /* Button.swift */, + CFE38317258E621A00CEE318 /* API */, + CFE3831D258E628C00CEE318 /* Constants.swift */, + CFE3831F258E64F600CEE318 /* Env.swift */, ); - path = UI; + path = Common; + sourceTree = ""; + }; + CFE38317258E621A00CEE318 /* API */ = { + isa = PBXGroup; + children = ( + CFE38318258E623700CEE318 /* REST */, + ); + path = API; + sourceTree = ""; + }; + CFE38318258E623700CEE318 /* REST */ = { + isa = PBXGroup; + children = ( + CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */, + CFC03EFE259483D9001516D3 /* HTTPClient.swift */, + ); + path = REST; sourceTree = ""; }; CFFE4FFA24C9BF1A003AECE5 /* Home */ = { @@ -202,17 +207,6 @@ }; /* End PBXGroup section */ -/* Begin PBXHeadersBuildPhase section */ - CFCA3EF6255D934900AA2469 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - CFCA3EFF255D934900AA2469 /* Fluxer.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - /* Begin PBXNativeTarget section */ CF08FC0224B9AD1A00CD29DD /* Portannict */ = { isa = PBXNativeTarget; @@ -226,31 +220,15 @@ buildRules = ( ); dependencies = ( - CFCA3F01255D934900AA2469 /* PBXTargetDependency */, ); name = Portannict; + packageProductDependencies = ( + CFCA3FEA255DAB4900AA2469 /* Fluxer */, + ); productName = Portannict; productReference = CF08FC0324B9AD1A00CD29DD /* Portannict.app */; productType = "com.apple.product-type.application"; }; - CFCA3EFA255D934900AA2469 /* Fluxer */ = { - isa = PBXNativeTarget; - buildConfigurationList = CFCA3F04255D934900AA2469 /* Build configuration list for PBXNativeTarget "Fluxer" */; - buildPhases = ( - CFCA3EF6255D934900AA2469 /* Headers */, - CFCA3EF7255D934900AA2469 /* Sources */, - CFCA3EF8255D934900AA2469 /* Frameworks */, - CFCA3EF9255D934900AA2469 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Fluxer; - productName = Fluxer; - productReference = CFCA3EFB255D934900AA2469 /* Fluxer.framework */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -263,9 +241,6 @@ CF08FC0224B9AD1A00CD29DD = { CreatedOnToolsVersion = 12.0; }; - CFCA3EFA255D934900AA2469 = { - CreatedOnToolsVersion = 12.1; - }; }; }; buildConfigurationList = CF08FBFE24B9AD1A00CD29DD /* Build configuration list for PBXProject "Portannict" */; @@ -277,12 +252,14 @@ Base, ); mainGroup = CF08FBFA24B9AD1A00CD29DD; + packageReferences = ( + CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */, + ); productRefGroup = CF08FC0424B9AD1A00CD29DD /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( CF08FC0224B9AD1A00CD29DD /* Portannict */, - CFCA3EFA255D934900AA2469 /* Fluxer */, ); }; /* End PBXProject section */ @@ -292,18 +269,12 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + CFEB60C2258E670700CE6B24 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - CFCA3EF9255D934900AA2469 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -312,41 +283,30 @@ buildActionMask = 2147483647; files = ( CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, + CFE38320258E64F600CEE318 /* Env.swift in Sources */, CF42CFD124C9D73400AAD8E8 /* Work.swift in Sources */, - CFB8D8BB255D18A20092764B /* RootViewModel.swift in Sources */, + CFB8D8BB255D18A20092764B /* TestViewModel.swift in Sources */, CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, + CFE38313258E603300CEE318 /* RootView.swift in Sources */, CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, + CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */, - CF841D4724CA6A1F00F3723B /* RootView.swift in Sources */, + CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, + CF841D4724CA6A1F00F3723B /* TestView.swift in Sources */, + CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */, CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */, CF42CFD324C9D7D300AAD8E8 /* Activity.swift in Sources */, + CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */, + CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */, CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - CFCA3EF7255D934900AA2469 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CFCA3F09255D935000AA2469 /* ViewModel.swift in Sources */, - CFCA3F15255D9C3400AA2469 /* AssociatedKey.swift in Sources */, - CFCA3F11255D958300AA2469 /* Button.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - CFCA3F01255D934900AA2469 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = CFCA3EFA255D934900AA2469 /* Fluxer */; - targetProxy = CFCA3F00255D934900AA2469 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin XCBuildConfiguration section */ CF08FC1024B9AD1A00CD29DD /* Debug */ = { isa = XCBuildConfiguration; @@ -467,7 +427,6 @@ CF08FC1324B9AD1A00CD29DD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; @@ -490,7 +449,6 @@ CF08FC1424B9AD1A00CD29DD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; @@ -510,62 +468,6 @@ }; name = Release; }; - CFCA3F05255D934900AA2469 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = V8AZ23YEL4; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Fluxer/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.touyu.Fluxer; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - CFCA3F06255D934900AA2469 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = V8AZ23YEL4; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Fluxer/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.touyu.Fluxer; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -587,16 +489,26 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CFCA3F04255D934900AA2469 /* Build configuration list for PBXNativeTarget "Fluxer" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CFCA3F05255D934900AA2469 /* Debug */, - CFCA3F06255D934900AA2469 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "git@github.com:touyu/Fluxer.git"; + requirement = { + branch = master; + kind = branch; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + CFCA3FEA255DAB4900AA2469 /* Fluxer */ = { + isa = XCSwiftPackageProductDependency; + package = CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */; + productName = Fluxer; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = CF08FBFB24B9AD1A00CD29DD /* Project object */; } diff --git a/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..a9be163a --- /dev/null +++ b/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "Fluxer", + "repositoryURL": "git@github.com:touyu/Fluxer.git", + "state": { + "branch": "master", + "revision": "33037d811247f378892bda4d41358fd28f14ecac", + "version": null + } + } + ] + }, + "version": 1 +} diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json index 9221b9bb..78d34c2c 100644 --- a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,91 +1,109 @@ { "images" : [ { + "filename" : "Icon-App-20x20@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "20x20" }, { + "filename" : "Icon-App-20x20@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "20x20" }, { + "filename" : "Icon-App-29x29@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "29x29" }, { + "filename" : "Icon-App-29x29@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "29x29" }, { + "filename" : "Icon-App-40x40@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "40x40" }, { + "filename" : "Icon-App-40x40@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "40x40" }, { + "filename" : "Icon-App-60x60@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "60x60" }, { + "filename" : "Icon-App-60x60@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "60x60" }, { + "filename" : "Icon-App-20x20@1x.png", "idiom" : "ipad", "scale" : "1x", "size" : "20x20" }, { + "filename" : "Icon-App-20x20@2x-1.png", "idiom" : "ipad", "scale" : "2x", "size" : "20x20" }, { + "filename" : "Icon-App-29x29@1x.png", "idiom" : "ipad", "scale" : "1x", "size" : "29x29" }, { + "filename" : "Icon-App-29x29@2x-1.png", "idiom" : "ipad", "scale" : "2x", "size" : "29x29" }, { + "filename" : "Icon-App-40x40@1x.png", "idiom" : "ipad", "scale" : "1x", "size" : "40x40" }, { + "filename" : "Icon-App-40x40@2x-1.png", "idiom" : "ipad", "scale" : "2x", "size" : "40x40" }, { + "filename" : "Icon-App-76x76@1x.png", "idiom" : "ipad", "scale" : "1x", "size" : "76x76" }, { + "filename" : "Icon-App-76x76@2x.png", "idiom" : "ipad", "scale" : "2x", "size" : "76x76" }, { + "filename" : "Icon-App-83.5x83.5@2x.png", "idiom" : "ipad", "scale" : "2x", "size" : "83.5x83.5" }, { + "filename" : "ItunesArtwork@2x.png", "idiom" : "ios-marketing", "scale" : "1x", "size" : "1024x1024" diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png b/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png similarity index 100% rename from Annict-for-iOS/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png rename to Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png diff --git a/Portannict/Portannict/Common/API/REST/HTTPClient.swift b/Portannict/Portannict/Common/API/REST/HTTPClient.swift new file mode 100644 index 00000000..3a5ee054 --- /dev/null +++ b/Portannict/Portannict/Common/API/REST/HTTPClient.swift @@ -0,0 +1,72 @@ +// +// HTTPClient.swift +// Portannict +// +// Created by Yuto Akiba on 2018/10/23. +// Copyright © 2018 Yuto Akiba. All rights reserved. +// + +import Foundation +import Combine + +enum HTTPClientError: Error { + case unknown + case noData + case decode + case validatedStatusCode +} + +enum HTTPMethod: String { + case post = "POST" +} + +protocol HTTPRequest { + associatedtype Response: Decodable + var url: String { get } + var method: HTTPMethod { get } + var parameters: [String: Any] { get } +} + +extension HTTPRequest { + func buildRequest() -> URLRequest { + let url = URL(string: self.url)! + var request = URLRequest(url: url) + request.httpMethod = method.rawValue + request.addValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) + return request + } +} + +final class HTTPClient { + private static var decoder: JSONDecoder { + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + return decoder + } + + static func send(request: T) -> AnyPublisher { + let request = request.buildRequest() + return URLSession.shared.dataTaskPublisher(for: request) + .validate(statusCode: 200..<300) + .map(\.data) + .decode(type: T.Response.self, decoder: decoder) + .eraseToAnyPublisher() + } +} + +extension URLSession.DataTaskPublisher { + func validate(statusCode range: S) -> Self where S.Iterator.Element == Int { + tryMap { data, response -> Data in + guard let statusCode = (response as? HTTPURLResponse)?.statusCode else { + throw HTTPClientError.unknown + } + + if range.contains(statusCode) { + return data + } else { + throw HTTPClientError.validatedStatusCode + } + }.upstream + } +} diff --git a/Portannict/Portannict/Common/API/REST/OauthTokenRequest.swift b/Portannict/Portannict/Common/API/REST/OauthTokenRequest.swift new file mode 100644 index 00000000..aef7f1d9 --- /dev/null +++ b/Portannict/Portannict/Common/API/REST/OauthTokenRequest.swift @@ -0,0 +1,39 @@ +// +// OauthTokenRequest.swift +// Annict-for-iOS +// +// Created by Yuto Akiba on 2018/10/23. +// Copyright © 2018 Yuto Akiba. All rights reserved. +// + +import Foundation + +struct OauthTokenRequest: HTTPRequest { + typealias Response = OauthTokenResponse + + var url: String { + return Constants.rootURI + "/oauth/token" + } + + var method: HTTPMethod { + return .post + } + + var parameters: [String : Any] { + return ["client_id": Constants.clientID, + "client_secret": Constants.clientSecret, + "grant_type": "authorization_code", + "redirect_uri": Constants.redirectURI, + "code": code] + } + + private var code: String + + init(code: String) { + self.code = code + } +} + +struct OauthTokenResponse: Codable { + var accessToken: String +} diff --git a/Portannict/Portannict/Common/Constants.swift b/Portannict/Portannict/Common/Constants.swift new file mode 100644 index 00000000..3c3ec716 --- /dev/null +++ b/Portannict/Portannict/Common/Constants.swift @@ -0,0 +1,28 @@ +// +// Constants.swift +// Portannict +// +// Created by Yuto Akiba on 2020/12/20. +// + +import SwiftUI + +struct Constants { + @Environment(\.envValues) static var envValues + + static let rootURI = "https://api.annict.com" + static let callbackURLScheme = "annict://" + static let redirectURI = "annict://oauth" + static var clientID = envValues["AnnictClientID"] as! String + static var clientSecret = envValues["AnnictClientSecret"] as! String + static let baseImageURL = envValues["BaseImageURL"] as! String + + static var oauthURL: URL! { + var oauthURL = "\(rootURI)/oauth/authorize" + oauthURL += "?client_id=\(clientID)" + oauthURL += "&response_type=code" + oauthURL += "&redirect_uri=\(redirectURI)" + oauthURL += "&scope=read+write" + return URL(string: oauthURL)! + } +} diff --git a/Portannict/Portannict/Common/Env.swift b/Portannict/Portannict/Common/Env.swift new file mode 100644 index 00000000..7d0dafd3 --- /dev/null +++ b/Portannict/Portannict/Common/Env.swift @@ -0,0 +1,54 @@ +// +// Env.swift +// Portannict +// +// Created by Yuto Akiba on 2020/12/20. +// + +import Foundation +import SwiftUI + +struct Env: EnvironmentKey { + static let defaultValue: [String: Any] = configure() + + static func configure() -> [String: Any] { + guard let path = Bundle.main.path(forResource: "Envfile", ofType: nil) else { + fatalError("Not found: '/path/to/Envfile'.\nPlease create Envfile file") + } + let url = URL(fileURLWithPath: path) + do { + let data = try Data(contentsOf: url) + let str = String(data: data, encoding: .utf8) ?? "Empty File" + let clean = str.replacingOccurrences(of: "\"", with: "").replacingOccurrences(of: "'", with: "") + let envVars = clean.components(separatedBy:"\n") + var values: [String: Any] = [:] + for envVar in envVars { + let keyVal = envVar.components(separatedBy:"=") + if keyVal.count == 2 { + values[keyVal[0]] = keyVal[1] + } + } + return values + } catch { + fatalError(error.localizedDescription) + } + } +} + +extension EnvironmentValues { + var envValues: [String: Any] { + get { self[Env.self] } + } + + var clientID: String { + get { envValues["AnnictClientID"] as! String } + } + + var clientSecret: String { + get { envValues["AnnictClientSecret"] as! String } + } + + var baseImageURL: String { + get { envValues["BaseImageURL"] as! String } + } +} diff --git a/Portannict/Portannict/Info.plist b/Portannict/Portannict/Info.plist index 534b9943..fefcd1f7 100644 --- a/Portannict/Portannict/Info.plist +++ b/Portannict/Portannict/Info.plist @@ -16,6 +16,17 @@ $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString 1.0 + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + annict + + + CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/Portannict/Portannict/Login/LoginView.swift b/Portannict/Portannict/Login/LoginView.swift index 8a4f1951..ec7f3e44 100644 --- a/Portannict/Portannict/Login/LoginView.swift +++ b/Portannict/Portannict/Login/LoginView.swift @@ -6,15 +6,31 @@ // import SwiftUI +import Combine +import SafariServices +import Fluxer struct LoginView: View { + typealias ViewModel = LoginViewModel + + @ObservedObject var viewModel: LoginViewModel + + init(viewModel: ViewModel) { + self.viewModel = viewModel + } + var body: some View { - Text("Login Screen") + VStack(spacing: 60) { + Text("Login Screen") + Button(viewModel: viewModel, action: .login) { + Text("Login") + } + } } } struct LoginView_Previews: PreviewProvider { static var previews: some View { - LoginView() + LoginView(viewModel: .init()) } } diff --git a/Portannict/Portannict/Login/LoginViewModel.swift b/Portannict/Portannict/Login/LoginViewModel.swift new file mode 100644 index 00000000..e767739b --- /dev/null +++ b/Portannict/Portannict/Login/LoginViewModel.swift @@ -0,0 +1,92 @@ +// +// LoginViewModel.swift +// Portannict +// +// Created by Yuto Akiba on 2020/12/24. +// + +import Fluxer +import SwiftUI +import Combine +import AuthenticationServices + +final class LoginViewModel: NSObject, ViewModel { + enum Action { + case login + } + + enum Mutation { + case setAccessToken(String) + case setError(Error) + } + + class State: ObservableObject { + @Published var accessToken: String? + @Published var error: Error? + } + + enum E: Error { + case invalidURL + } + + @Published var state = State() + + override init() { + super.init() + + initilize() + } + + func mutate(action: Action) -> AnyPublisher { + switch action { + case .login: + return startWebAuthentication() + .flatMap { [weak self] code in self?.login(code: code) ?? Empty().eraseToAnyPublisher() } + .map { Mutation.setAccessToken($0.accessToken) } + .catch { Just(Mutation.setError($0)) } + .assertNoFailure() + .eraseToAnyPublisher() + } + } + + func reduce(mutation: Mutation) { + switch mutation { + case .setAccessToken(let token): + state.accessToken = token + case .setError(let error): + state.error = error + } + } + + private func login(code: String) -> AnyPublisher { + let request = OauthTokenRequest(code: code) + return HTTPClient.send(request: request) + } + + private func startWebAuthentication() -> Future { + return Future { resolve in + let session = ASWebAuthenticationSession(url: Constants.oauthURL, callbackURLScheme: Constants.callbackURLScheme) { url, error in + if let error = error { + return resolve(.failure(error)) + } + guard let url = url else { + return resolve(.failure(E.invalidURL)) + } + let components = URLComponents(url: url, resolvingAgainstBaseURL: false) + guard let code = components?.queryItems?.first?.value else { + return resolve(.failure(E.invalidURL)) + } + + return resolve(.success(code)) + } + session.presentationContextProvider = self + session.start() + } + } +} + +extension LoginViewModel: ASWebAuthenticationPresentationContextProviding { + func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor { + return ASPresentationAnchor() + } +} diff --git a/Portannict/Portannict/PortannictApp.swift b/Portannict/Portannict/PortannictApp.swift index ea625d67..6d28f233 100644 --- a/Portannict/Portannict/PortannictApp.swift +++ b/Portannict/Portannict/PortannictApp.swift @@ -9,9 +9,18 @@ import SwiftUI @main struct PortannictApp: App { + @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { WindowGroup { RootView(viewModel: .init()) } } } + +class AppDelegate: UIResponder, UIApplicationDelegate { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { +// print("Call") +// Env.configure() + return true + } +} diff --git a/Portannict/Portannict/Root/RootView.swift b/Portannict/Portannict/Root/RootView.swift index 09d7b594..3251c590 100644 --- a/Portannict/Portannict/Root/RootView.swift +++ b/Portannict/Portannict/Root/RootView.swift @@ -2,28 +2,22 @@ // RootView.swift // Portannict // -// Created by Yuto Akiba on 2020/07/24. +// Created by Yuto Akiba on 2020/12/20. // import SwiftUI -import Fluxer struct RootView: View { - @ObservedObject var viewModel: RootViewModel + typealias ViewModel = RootViewModel - @State private var isLogin: Bool = true + var viewModel: ViewModel - init(viewModel: RootViewModel) { - self.viewModel = viewModel + var body: some View { + LoginView(viewModel: .init()) } - var body: some View { - VStack { - TextField("AAAA", value: $viewModel.state.number, formatter: NumberFormatter()) - Button(viewModel: viewModel, action: .increment) { - Text("AAAA") - } - } + init(viewModel: ViewModel) { + self.viewModel = viewModel } } diff --git a/Portannict/Portannict/Root/RootViewModel.swift b/Portannict/Portannict/Root/RootViewModel.swift index f9620215..9c245759 100644 --- a/Portannict/Portannict/Root/RootViewModel.swift +++ b/Portannict/Portannict/Root/RootViewModel.swift @@ -2,25 +2,26 @@ // RootViewModel.swift // Portannict // -// Created by Yuto Akiba on 2020/11/12. +// Created by Yuto Akiba on 2020/12/20. // -import Foundation import Combine import SwiftUI import Fluxer final class RootViewModel: ViewModel { + @Environment(\.envValues) var envValues + enum Action { - case increment + } enum Mutation { - case increment + } class State: ObservableObject { - @Published var number = 0 + var accessToken: String? } @Published var state = State() @@ -28,37 +29,4 @@ final class RootViewModel: ViewModel { init() { initilize() } - - func mutate(action: Action) -> AnyPublisher { - switch action { - case .increment: - return APIClient.send() - .map { _ in Mutation.increment } - .catch { _ in Just(Mutation.increment) } - .eraseToAnyPublisher() - } - } - - func reduce(mutation: Mutation) { - switch mutation { - case .increment: - state.number += 1 - } - } - - func transform(mutation: AnyPublisher) -> AnyPublisher { - let m = Timer.publish(every: 1.0, on: .main, in: .common) - .autoconnect() - .map { _ in Mutation.increment } - - return mutation.merge(with: m).eraseToAnyPublisher() - } -} - -final class APIClient { - static func send() -> Future { - return Future { promise in - promise(.success(1)) - } - } } diff --git a/Portannict/Portannict/Test/TestView.swift b/Portannict/Portannict/Test/TestView.swift new file mode 100644 index 00000000..03b67c74 --- /dev/null +++ b/Portannict/Portannict/Test/TestView.swift @@ -0,0 +1,34 @@ +// +// TestView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/24. +// + +import SwiftUI +import Fluxer + +struct TestView: View { + @ObservedObject var viewModel: TestViewModel + + @State private var isLogin: Bool = true + + init(viewModel: TestViewModel) { + self.viewModel = viewModel + } + + var body: some View { + VStack { + TextField("AAAA", value: $viewModel.state.number, formatter: NumberFormatter()) + Button(viewModel: viewModel, action: .increment) { + Text("AAAA") + } + } + } +} + +struct TestView_Previews: PreviewProvider { + static var previews: some View { + TestView(viewModel: .init()) + } +} diff --git a/Portannict/Portannict/Test/TestViewModel.swift b/Portannict/Portannict/Test/TestViewModel.swift new file mode 100644 index 00000000..fce73b4c --- /dev/null +++ b/Portannict/Portannict/Test/TestViewModel.swift @@ -0,0 +1,64 @@ +// +// RootViewModel.swift +// Portannict +// +// Created by Yuto Akiba on 2020/11/12. +// + +import Foundation +import Combine +import SwiftUI +import Fluxer + +final class TestViewModel: ViewModel { + enum Action { + case increment + } + + enum Mutation { + case increment + } + + class State: ObservableObject { + @Published var number = 0 + } + + @Published var state = State() + + init() { + initilize() + } + + func mutate(action: Action) -> AnyPublisher { + switch action { + case .increment: + return TestAPIClient.send() + .map { _ in Mutation.increment } + .catch { _ in Just(Mutation.increment) } + .eraseToAnyPublisher() + } + } + + func reduce(mutation: Mutation) { + switch mutation { + case .increment: + state.number += 1 + } + } + + func transform(mutation: AnyPublisher) -> AnyPublisher { + let m = Timer.publish(every: 1.0, on: .main, in: .common) + .autoconnect() + .map { _ in Mutation.increment } + + return mutation.merge(with: m).eraseToAnyPublisher() + } +} + +final class TestAPIClient { + static func send() -> Future { + return Future { promise in + promise(.success(1)) + } + } +} From 6671ccfde0db9520b55c5ae5969133cd453a6467 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 31 Dec 2020 01:38:56 +0900 Subject: [PATCH 008/101] Impl --- .../Portannict.xcodeproj/project.pbxproj | 39 ++++++++- .../xcshareddata/swiftpm/Package.resolved | 11 ++- .../Portannict/Common/LoginSession.swift | 16 ++++ Portannict/Portannict/Home/HomeView.swift | 8 ++ Portannict/Portannict/Login/LoginView.swift | 3 +- .../Portannict/Login/LoginViewModel.swift | 16 ++-- Portannict/Portannict/PortannictApp.swift | 1 + Portannict/Portannict/Root/RootView.swift | 9 +- .../Portannict/Root/RootViewModel.swift | 4 +- .../Portannict/Work/WorkHeaderView.swift | 51 ++++++++++++ Portannict/Portannict/Work/WorkView.swift | 83 +++++++++++++++++++ 11 files changed, 226 insertions(+), 15 deletions(-) create mode 100644 Portannict/Portannict/Common/LoginSession.swift create mode 100644 Portannict/Portannict/Work/WorkHeaderView.swift create mode 100644 Portannict/Portannict/Work/WorkView.swift diff --git a/Portannict/Portannict.xcodeproj/project.pbxproj b/Portannict/Portannict.xcodeproj/project.pbxproj index 2312d0e0..ecc737c4 100644 --- a/Portannict/Portannict.xcodeproj/project.pbxproj +++ b/Portannict/Portannict.xcodeproj/project.pbxproj @@ -23,12 +23,16 @@ CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03EFE259483D9001516D3 /* HTTPClient.swift */; }; CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F002594895F001516D3 /* LoginViewModel.swift */; }; CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */; }; + CFC03F0725959BDD001516D3 /* LoginSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0625959BDD001516D3 /* LoginSession.swift */; }; CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */ = {isa = PBXBuildFile; productRef = CFCA3FEA255DAB4900AA2469 /* Fluxer */; }; CFE38313258E603300CEE318 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE38312258E603300CEE318 /* RootView.swift */; }; CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE38314258E610F00CEE318 /* RootViewModel.swift */; }; CFE3831E258E628C00CEE318 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831D258E628C00CEE318 /* Constants.swift */; }; CFE38320258E64F600CEE318 /* Env.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831F258E64F600CEE318 /* Env.swift */; }; CFEB60C2258E670700CE6B24 /* Envfile in Resources */ = {isa = PBXBuildFile; fileRef = CFEB60C1258E670700CE6B24 /* Envfile */; }; + CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */; }; + CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */; }; + CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */; }; CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */; }; CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */; }; /* End PBXBuildFile section */ @@ -65,11 +69,14 @@ CFC03EFE259483D9001516D3 /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OauthTokenRequest.swift; sourceTree = ""; }; + CFC03F0625959BDD001516D3 /* LoginSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginSession.swift; sourceTree = ""; }; CFE38312258E603300CEE318 /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; }; CFE38314258E610F00CEE318 /* RootViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewModel.swift; sourceTree = ""; }; CFE3831D258E628C00CEE318 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; CFE3831F258E64F600CEE318 /* Env.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Env.swift; sourceTree = ""; }; CFEB60C1258E670700CE6B24 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = ""; }; + CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkView.swift; sourceTree = ""; }; + CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderView.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuoteWorkView.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -79,6 +86,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */, CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -109,11 +117,12 @@ CFE38311258E5FD000CEE318 /* Test */, CFB8D8B9255D18740092764B /* Root */, CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */, - CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF42CFCF24C9D72800AAD8E8 /* Models */, CF841D3E24CA67F600F3723B /* Login */, CFFE4FFA24C9BF1A003AECE5 /* Home */, + CFFDC8A6259C6EE9001C8E29 /* Work */, CF08FC1524B9AFC500CD29DD /* ProfileView.swift */, + CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, CFEB60C1258E670700CE6B24 /* Envfile */, CF08FC0F24B9AD1A00CD29DD /* Info.plist */, @@ -173,6 +182,7 @@ CFE38317258E621A00CEE318 /* API */, CFE3831D258E628C00CEE318 /* Constants.swift */, CFE3831F258E64F600CEE318 /* Env.swift */, + CFC03F0625959BDD001516D3 /* LoginSession.swift */, ); path = Common; sourceTree = ""; @@ -194,6 +204,15 @@ path = REST; sourceTree = ""; }; + CFFDC8A6259C6EE9001C8E29 /* Work */ = { + isa = PBXGroup; + children = ( + CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */, + CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */, + ); + path = Work; + sourceTree = ""; + }; CFFE4FFA24C9BF1A003AECE5 /* Home */ = { isa = PBXGroup; children = ( @@ -224,6 +243,7 @@ name = Portannict; packageProductDependencies = ( CFCA3FEA255DAB4900AA2469 /* Fluxer */, + CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */, ); productName = Portannict; productReference = CF08FC0324B9AD1A00CD29DD /* Portannict.app */; @@ -254,6 +274,7 @@ mainGroup = CF08FBFA24B9AD1A00CD29DD; packageReferences = ( CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */, + CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */, ); productRefGroup = CF08FC0424B9AD1A00CD29DD /* Products */; projectDirPath = ""; @@ -289,13 +310,16 @@ CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, CFE38313258E603300CEE318 /* RootView.swift in Sources */, CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, + CFC03F0725959BDD001516D3 /* LoginSession.swift in Sources */, CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, + CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, CF841D4724CA6A1F00F3723B /* TestView.swift in Sources */, + CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */, CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */, CF42CFD324C9D7D300AAD8E8 /* Activity.swift in Sources */, @@ -500,6 +524,14 @@ kind = branch; }; }; + CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/onevcat/Kingfisher"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.15.8; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -508,6 +540,11 @@ package = CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */; productName = Fluxer; }; + CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */ = { + isa = XCSwiftPackageProductDependency; + package = CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */; + productName = KingfisherSwiftUI; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = CF08FBFB24B9AD1A00CD29DD /* Project object */; diff --git a/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index a9be163a..aa2edb7a 100644 --- a/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,9 +6,18 @@ "repositoryURL": "git@github.com:touyu/Fluxer.git", "state": { "branch": "master", - "revision": "33037d811247f378892bda4d41358fd28f14ecac", + "revision": "e78bfc6b04c6559e1a9765541079e528d8faeb5a", "version": null } + }, + { + "package": "Kingfisher", + "repositoryURL": "https://github.com/onevcat/Kingfisher", + "state": { + "branch": null, + "revision": "2a10bf41da75599a9f8e872dbd44fe0155a2e00c", + "version": "5.15.8" + } } ] }, diff --git a/Portannict/Portannict/Common/LoginSession.swift b/Portannict/Portannict/Common/LoginSession.swift new file mode 100644 index 00000000..28976d71 --- /dev/null +++ b/Portannict/Portannict/Common/LoginSession.swift @@ -0,0 +1,16 @@ +// +// LoginSession.swift +// Portannict +// +// Created by Yuto Akiba on 2020/12/25. +// + +import SwiftUI + +final class LoginSession: ObservableObject { + @Published var accessToken: String? = UserDefaults.standard.string(forKey: "accessToken") { + didSet { + UserDefaults.standard.setValue(accessToken, forKey: "accessToken") + } + } +} diff --git a/Portannict/Portannict/Home/HomeView.swift b/Portannict/Portannict/Home/HomeView.swift index 7d6a7644..fd5afeda 100644 --- a/Portannict/Portannict/Home/HomeView.swift +++ b/Portannict/Portannict/Home/HomeView.swift @@ -10,6 +10,8 @@ import SwiftUI struct HomeView: View { @ObservedObject var viewModel: HomeViewModel + @State var isPresented: Bool = false + var body: some View { NavigationView { ScrollView { @@ -20,6 +22,12 @@ struct HomeView: View { case .status: ActivityStatusView(activityStatus: Binding(activity.status)!) .padding(EdgeInsets(top: 0, leading: 12, bottom: 12, trailing: 12)) + .onTapGesture { + isPresented = true + } + .sheet(isPresented: $isPresented) { + WorkView() + } } } } diff --git a/Portannict/Portannict/Login/LoginView.swift b/Portannict/Portannict/Login/LoginView.swift index ec7f3e44..6713bf8e 100644 --- a/Portannict/Portannict/Login/LoginView.swift +++ b/Portannict/Portannict/Login/LoginView.swift @@ -12,7 +12,6 @@ import Fluxer struct LoginView: View { typealias ViewModel = LoginViewModel - @ObservedObject var viewModel: LoginViewModel init(viewModel: ViewModel) { @@ -31,6 +30,6 @@ struct LoginView: View { struct LoginView_Previews: PreviewProvider { static var previews: some View { - LoginView(viewModel: .init()) + LoginView(viewModel: .init(session: LoginSession())) } } diff --git a/Portannict/Portannict/Login/LoginViewModel.swift b/Portannict/Portannict/Login/LoginViewModel.swift index e767739b..82ef5211 100644 --- a/Portannict/Portannict/Login/LoginViewModel.swift +++ b/Portannict/Portannict/Login/LoginViewModel.swift @@ -10,7 +10,7 @@ import SwiftUI import Combine import AuthenticationServices -final class LoginViewModel: NSObject, ViewModel { +final class LoginViewModel: ViewModel { enum Action { case login } @@ -30,10 +30,11 @@ final class LoginViewModel: NSObject, ViewModel { } @Published var state = State() + private let presentationContextProvider = AuthPresentationContextProvider() + private var session: LoginSession - override init() { - super.init() - + init(session: LoginSession) { + self.session = session initilize() } @@ -53,6 +54,7 @@ final class LoginViewModel: NSObject, ViewModel { switch mutation { case .setAccessToken(let token): state.accessToken = token + session.accessToken = token case .setError(let error): state.error = error } @@ -64,7 +66,7 @@ final class LoginViewModel: NSObject, ViewModel { } private func startWebAuthentication() -> Future { - return Future { resolve in + return Future { [weak self] resolve in let session = ASWebAuthenticationSession(url: Constants.oauthURL, callbackURLScheme: Constants.callbackURLScheme) { url, error in if let error = error { return resolve(.failure(error)) @@ -79,13 +81,13 @@ final class LoginViewModel: NSObject, ViewModel { return resolve(.success(code)) } - session.presentationContextProvider = self + session.presentationContextProvider = self?.presentationContextProvider session.start() } } } -extension LoginViewModel: ASWebAuthenticationPresentationContextProviding { +final class AuthPresentationContextProvider: NSObject, ASWebAuthenticationPresentationContextProviding { func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor { return ASPresentationAnchor() } diff --git a/Portannict/Portannict/PortannictApp.swift b/Portannict/Portannict/PortannictApp.swift index 6d28f233..05cdf3bf 100644 --- a/Portannict/Portannict/PortannictApp.swift +++ b/Portannict/Portannict/PortannictApp.swift @@ -13,6 +13,7 @@ struct PortannictApp: App { var body: some Scene { WindowGroup { RootView(viewModel: .init()) + .environmentObject(LoginSession()) } } } diff --git a/Portannict/Portannict/Root/RootView.swift b/Portannict/Portannict/Root/RootView.swift index 3251c590..807b2840 100644 --- a/Portannict/Portannict/Root/RootView.swift +++ b/Portannict/Portannict/Root/RootView.swift @@ -10,10 +10,15 @@ import SwiftUI struct RootView: View { typealias ViewModel = RootViewModel - var viewModel: ViewModel + @ObservedObject var viewModel: ViewModel + @EnvironmentObject var session: LoginSession var body: some View { - LoginView(viewModel: .init()) + if session.accessToken == nil { + LoginView(viewModel: .init(session: session)) + } else { + RootTabView() + } } init(viewModel: ViewModel) { diff --git a/Portannict/Portannict/Root/RootViewModel.swift b/Portannict/Portannict/Root/RootViewModel.swift index 9c245759..f1b78437 100644 --- a/Portannict/Portannict/Root/RootViewModel.swift +++ b/Portannict/Portannict/Root/RootViewModel.swift @@ -10,7 +10,7 @@ import SwiftUI import Fluxer final class RootViewModel: ViewModel { - @Environment(\.envValues) var envValues +// @Environment(\.envValues) var envValues enum Action { @@ -21,7 +21,7 @@ final class RootViewModel: ViewModel { } class State: ObservableObject { - var accessToken: String? + } @Published var state = State() diff --git a/Portannict/Portannict/Work/WorkHeaderView.swift b/Portannict/Portannict/Work/WorkHeaderView.swift new file mode 100644 index 00000000..3ff9aff7 --- /dev/null +++ b/Portannict/Portannict/Work/WorkHeaderView.swift @@ -0,0 +1,51 @@ +// +// WorkHeaderView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/12/30. +// + +import SwiftUI +import KingfisherSwiftUI + +struct WorkHeaderView: View { + private let psychopassURL = URL(string: "https://media.kitsu.io/anime/poster_images/7000/large.jpg?1597696781") + private let summerwarsURL = URL(string: "https://media.kitsu.io/anime/poster_images/4241/large.jpg?1597697638") + + private let black = Color(hex: 0x222222) + private var gradient: Gradient { + Gradient(stops: [Gradient.Stop(color: black, location: 0), + Gradient.Stop(color: .clear, location: 0.5), + Gradient.Stop(color: black.opacity(0.9), location: 0.8), + Gradient.Stop(color: black, location: 1)]) + } + + var body: some View { + GeometryReader { geometry in + ZStack(alignment: .bottomLeading) { + KFImage(psychopassURL) + .resizable() + .aspectRatio(contentMode: .fill) + .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: .top) + LinearGradient(gradient: gradient, + startPoint: .top, + endPoint: .bottom) + .frame(width: geometry.size.width, height: geometry.size.width * 1.5) + Text("PSYCHO-PASS") + .font(.title) + .fontWeight(.bold) + .foregroundColor(.white) + .offset(x: 16, y: -32) + } + } + } +} + + +struct WorkHeaderView_Previews: PreviewProvider { + static var previews: some View { + Group { + WorkHeaderView() + } + } +} diff --git a/Portannict/Portannict/Work/WorkView.swift b/Portannict/Portannict/Work/WorkView.swift new file mode 100644 index 00000000..09ee72d8 --- /dev/null +++ b/Portannict/Portannict/Work/WorkView.swift @@ -0,0 +1,83 @@ +// +// WorkView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/12/30. +// + +import SwiftUI +import KingfisherSwiftUI + +struct WorkView: View { + private let black = Color(hex: 0x222222) + + var body: some View { + GeometryReader { geometry in + ScrollView(.vertical) { + WorkHeaderView() + .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) + LazyVStack(alignment: .leading, spacing: 24) { + Text("Episodes") + .font(.title2) + .fontWeight(.bold) + ForEach(0..<5, id: \.self) { i in + WorkEpisodeCell(number: i+1, title: "魔神が生まれた日") + } + Button(action: { + + }, label: { + Spacer() + Text("もっと見る") + .font(.system(size: 14)) + Spacer() + + }) +// Text("Charactors") +// .font(.title2) +// .fontWeight(.bold) +// ForEach(10..<15, id: \.self) { i in +// WorkEpisodeCell(number: i+1, title: "魔神が生まれた日") +// } + } + .padding(.init(top: 0, leading: 16, bottom: 20, trailing: 16)) + } + } + .background(black) + .edgesIgnoringSafeArea(.all) + } +} + +struct WorkView_Previews: PreviewProvider { + static var previews: some View { + WorkView() + } +} + +struct WorkEpisodeCell: View { + let number: Int + let title: String + + var body: some View { + VStack(alignment: .leading) { + Text("第\(number)話") + Text(title) + } + } +} + +extension Color { + init(hex: Int, alpha: Double = 1) { + let components = ( + R: Double((hex >> 16) & 0xff) / 255, + G: Double((hex >> 08) & 0xff) / 255, + B: Double((hex >> 00) & 0xff) / 255 + ) + self.init( + .sRGB, + red: components.R, + green: components.G, + blue: components.B, + opacity: alpha + ) + } +} From 9eac9db34f8c4d48809e11c3e8fd85513d787a1b Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 31 Dec 2020 01:52:22 +0900 Subject: [PATCH 009/101] Remove old codes --- Annict-for-iOS.xcodeproj/project.pbxproj | 1473 --- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 5 - .../UserInterfaceState.xcuserstate | Bin 69280 -> 0 bytes .../WorkspaceSettings.xcsettings | 18 - .../xcschemes/Annict-for-iOS.xcscheme | 87 - .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 - .../xcschemes/xcschememanagement.plist | 27 - .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 5 - .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 - .../WorkspaceSettings.xcsettings | 18 - .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 - Annict-for-iOS/API.swift | 4349 ------- Annict-for-iOS/Assets.xcassets/Contents.json | 6 - .../Assets.xcassets/Tab/Contents.json | 6 - .../Tab/account.imageset/Contents.json | 15 - .../Tab/account.imageset/User.pdf | Bin 145688 -> 0 bytes .../Tab/home.imageset/Contents.json | 15 - .../Tab/home.imageset/Home.pdf | Bin 145791 -> 0 bytes .../Tab/pencil.imageset/Contents.json | 15 - .../Tab/pencil.imageset/Pencil.pdf | Bin 145688 -> 0 bytes .../Tab/search.imageset/Contents.json | 15 - .../Tab/search.imageset/Search.pdf | Bin 145725 -> 0 bytes .../calendar.imageset/Contents.json | 15 - .../calendar.imageset/calendar.pdf | Bin 145719 -> 0 bytes .../paperplane_fill.imageset/Contents.json | 15 - .../paperplane_fill.pdf | Bin 145733 -> 0 bytes .../portannict_logo.imageset/Contents.json | 15 - .../portannict_logo.pdf | Bin 6497 -> 0 bytes .../three_dot.imageset/Contents.json | 15 - .../three_dot.imageset/three_dot.pdf | Bin 4029 -> 0 bytes .../under_arrow.imageset/Contents.json | 15 - .../under_arrow.imageset/under_arrow.pdf | Bin 4056 -> 0 bytes .../Base.lproj/LaunchScreen.storyboard | 25 - .../Commons/API/GraphQL/CreateRecord.graphql | 7 - .../Commons/API/GraphQL/DeleteRecord.graphql | 7 - .../API/GraphQL/EpisodeDetails.graphql | 8 - .../Commons/API/GraphQL/Fragment.graphql | 60 - .../GraphQL/GetFollowingActivities.graphql | 64 - .../Commons/API/GraphQL/GetRecords.graphql | 12 - .../Commons/API/GraphQL/GetViewerInfo.graphql | 13 - .../GraphQL/GetViewerWatchingEpisodes.graphql | 20 - .../API/GraphQL/GetViewerWorks.graphql | 13 - .../Commons/API/GraphQL/SearchWorks.graphql | 11 - .../API/GraphQL/SearchWorksByID.graphql | 14 - .../API/GraphQL/SearchWorksByTitle.graphql | 7 - .../Commons/API/GraphQL/UpdateStatus.graphql | 7 - Annict-for-iOS/Commons/API/HTTPClient.swift | 108 - .../Commons/API/REST/OauthTokenRequest.swift | 39 - Annict-for-iOS/Commons/AppDelegate.swift | 54 - Annict-for-iOS/Commons/BlurKit/BlurKit.swift | 90 - Annict-for-iOS/Commons/BlurKit/BlurView.swift | 61 - Annict-for-iOS/Commons/Constants.swift | 34 - .../Commons/Extensions/AnnictGraphQL.swift | 56 - .../Commons/Extensions/CALayer.swift | 20 - .../Commons/Extensions/CGSize.swift | 15 - .../Commons/Extensions/CachePolicy.swift | 15 - .../Commons/Extensions/Entity+Extension.swift | 79 - .../Extensions/GraphQLSelectionSet.swift | 55 - Annict-for-iOS/Commons/Extensions/HUD.swift | 19 - Annict-for-iOS/Commons/Extensions/Icon.swift | 65 - .../Extensions/NSMutableParagraphStyle.swift | 42 - .../Commons/Extensions/NSObject.swift | 20 - .../Commons/Extensions/StatusState.swift | 32 - .../Extensions/StoryboardLoadable.swift | 37 - .../Commons/Extensions/SwiftyDate.swift | 15 - .../Commons/Extensions/UIApplication.swift | 41 - .../Commons/Extensions/UICollectionView.swift | 22 - .../Commons/Extensions/UIColor.swift | 69 - .../Commons/Extensions/UIImage.swift | 22 - .../Commons/Extensions/UIImageView.swift | 45 - .../Commons/Extensions/UINavigationBar.swift | 32 - .../Commons/Extensions/UITableView.swift | 28 - .../Commons/Extensions/UIView.swift | 53 - .../Commons/Extensions/URLConvertible.swift | 25 - .../Commons/NotificationCenter.swift | 19 - Annict-for-iOS/Commons/NotificationName.swift | 13 - .../Commons/ParentPagerViewController.swift | 141 - .../Commons/PortannictExtension.swift | 32 - .../Protocol/AssociatedObjectStore.swift | 30 - .../Commons/Protocol/NibOwnerLoadable.swift | 39 - Annict-for-iOS/Commons/Rx/GradationView.swift | 70 - .../Commons/Rx/ObservableType.swift | 46 - Annict-for-iOS/Commons/Rx/RxApollo.swift | 121 - .../Commons/Rx/RxUIScrollView.swift | 42 - .../Commons/Rx/RxUIViewController.swift | 42 - .../Commons/Services/APIService.swift | 29 - .../Commons/Services/BaseService.swift | 17 - .../Commons/Services/EpisodeAPIService.swift | 45 - .../Commons/Services/ServiceProvider.swift | 23 - .../Services/UserDefaultsService.swift | 41 - .../Commons/Services/WorkAPIService.swift | 44 - Annict-for-iOS/Commons/StatusBarManager.swift | 88 - .../Commons/SwiftyAttributedString.swift | 184 - Annict-for-iOS/Commons/Taptic.swift | 46 - .../Commons/UIKit/ActionClosurable.swift | 94 - Annict-for-iOS/Commons/UIKit/Ornament.swift | 38 - .../Commons/UIKit/PaddingLabel.swift | 30 - .../Commons/UserDefaultsRepository.swift | 110 - .../Commons/Views/RadioButton.swift | 102 - .../Commons/Views/RecordStatusTagButton.swift | 92 - .../Commons/Views/RecordStatusTagButton.xib | 41 - .../Commons/Views/RecordStatusTagView.swift | 43 - .../Commons/Views/RecordStatusTagView.xib | 40 - Annict-for-iOS/Info.plist | 58 - .../Cells/EpisodeRecordTableViewCell.swift | 66 - .../Cells/EpisodeRecordTableViewCell.xib | 113 - .../EpisodeRecordTitleTableViewCell.swift | 23 - .../Cells/EpisodeRecordTitleTableViewCell.xib | 45 - .../EpisodeRecordsViewController.storyboard | 43 - .../EpisodeRecordsViewController.swift | 156 - .../EpisodeRecordsViewReactor.swift | 107 - .../Home/HomeViewController.storyboard | 48 - .../Modules/Home/HomeViewController.swift | 168 - .../Modules/Home/HomeViewReactor.swift | 174 - .../ActivityMultipleRecordTableViewCell.swift | 92 - .../ActivityMultipleRecordTableViewCell.xib | 112 - ...tyMultipleRecordTableViewCellReactor.swift | 52 - .../Views/ActivityRecordTableViewCell.swift | 95 - .../Views/ActivityRecordTableViewCell.xib | 122 - .../ActivityRecordTableViewCellReactor.swift | 56 - .../Views/ActivityStatusTableViewCell.swift | 78 - .../Views/ActivityStatusTableViewCell.xib | 112 - .../ActivityStatusTableViewCellReactor.swift | 56 - .../Home/Views/HomeTitleTableViewCell.swift | 23 - .../Home/Views/HomeTitleTableViewCell.xib | 42 - .../Home/Views/WorkAndEpisodeQuoteView.swift | 92 - .../Home/Views/WorkAndEpisodeQuoteView.xib | 63 - .../Modules/Home/Views/WorkQuoteView.swift | 72 - .../Modules/Home/Views/WorkQuoteView.xib | 51 - .../Login/LoginViewController.storyboard | 81 - .../Modules/Login/LoginViewController.swift | 106 - .../Modules/Login/LoginViewReactor.swift | 60 - .../Profile/ProfileViewController.swift | 87 - .../ChildPagerViewController.swift | 65 - .../ProfileWorksViewController.storyboard | 50 - .../ProfileWorksViewController.swift | 106 - .../ProfileWorksViewReactor.swift | 115 - .../Views/ProfileWorkCollectionViewCell.swift | 35 - .../Views/ProfileWorkCollectionViewCell.xib | 54 - .../ProfileViewController.storyboard | 73 - .../ProfileViewController.swift | 86 - .../ViewControllers/ProfileViewReactor.swift | 66 - .../Profile/Views/ButtonMarkView.swift | 101 - .../Profile/Views/ProfileHeaderView.swift | 50 - .../Profile/Views/ProfileHeaderView.xib | 138 - .../Profile/Views/UserInfoTableViewCell.swift | 54 - .../Profile/Views/UserInfoTableViewCell.xib | 137 - .../Views/UserWorkCollectionViewCell.swift | 41 - .../Views/UserWorkCollectionViewCell.xib | 54 - .../Views/UserWorksWithSectionTitleCell.swift | 56 - .../Views/UserWorksWithSectionTitleCell.xib | 59 - .../PostRecord/PlaceholderTextView.swift | 148 - .../PostRecordViewController.storyboard | 103 - .../PostRecord/PostRecordViewController.swift | 126 - .../PostRecord/PostRecordViewReactor.swift | 63 - .../Views/RatingStatusTagsView.swift | 61 - .../PostRecord/Views/RatingStatusTagsView.xib | 60 - .../PostRecordTransitioningDelegate.swift | 15 - .../SemiModalPresentationController.swift | 52 - .../RecordViewController.storyboard | 48 - .../RecordViewController.swift | 116 - .../ViewControllers/RecordViewReactor.swift | 107 - .../Views/RecordEpisodeTableViewCell.swift | 74 - .../Views/RecordEpisodeTableViewCell.xib | 65 - .../RecordEpisodeTableViewCellReactor.swift | 57 - .../Root/RootViewController.storyboard | 28 - .../Modules/Root/RootViewController.swift | 73 - .../Modules/Root/RootViewReactor.swift | 67 - Annict-for-iOS/Modules/Search/Season.swift | 127 - .../SearchResultViewController.storyboard | 44 - .../SearchResultViewController.swift | 82 - .../SearchResultViewReactor.swift | 79 - .../SearchViewController.storyboard | 85 - .../SearchViewController.swift | 151 - .../ViewControllers/SearchViewReactor.swift | 122 - .../TermSettingViewController.storyboard | 92 - .../TermSettingViewController.swift | 120 - .../TermSettingViewReactor.swift | 53 - .../Search/Views/SearchResultWorkCell.swift | 32 - .../Search/Views/SearchResultWorkCell.xib | 52 - .../SeasonWorkCollectionViewCell.swift | 99 - .../SeasonWorkCollectionViewCell.xib | 59 - .../TabBar/RootTabBarController.storyboard | 73 - .../Modules/TabBar/RootTabBarController.swift | 49 - .../Modules/TabBar/RootTabBarReactor.md | 2 - .../Modules/TabBar/RootTabBarReactor.swift | 48 - .../EpisodeCountSectionTableViewCell.swift | 33 - .../EpisodeCountSectionTableViewCell.xib | 51 - .../Views/EpisodeTitleTableViewCell.swift | 38 - .../Work/Views/EpisodeTitleTableViewCell.xib | 56 - .../Work/Views/WorkHeaderTableViewCell.swift | 46 - .../Work/Views/WorkHeaderTableViewCell.xib | 73 - .../Modules/Work/Views/WorkStatusButton.swift | 87 - .../Modules/Work/Views/WorkStatusButton.xib | 53 - .../Work/WorkViewController.storyboard | 44 - .../Modules/Work/WorkViewController.swift | 176 - .../Modules/Work/WorkViewReactor.swift | 113 - Annict-for-iOS/schema.json | 10153 ---------------- Cartfile | 9 - Cartfile.resolved | 9 - Gemfile | 6 - Gemfile.lock | 86 - .../Portannict.xcodeproj/project.pbxproj | 8 +- .../RK_Base.xctemplate/TemplateIcon.png | Bin 4587 -> 0 bytes .../RK_Base.xctemplate/TemplateIcon@2x.png | Bin 7031 -> 0 bytes .../RK_Base.xctemplate/TemplateInfo.plist | 33 - ...__FILEBASENAME___ViewController.storyboard | 27 - .../___FILEBASENAME___ViewController.swift | 20 - .../___FILEBASENAME___ViewReactor.swift | 32 - .../RK_Reactor.xctemplate/TemplateIcon.png | Bin 4587 -> 0 bytes .../RK_Reactor.xctemplate/TemplateIcon@2x.png | Bin 7031 -> 0 bytes .../RK_Reactor.xctemplate/TemplateInfo.plist | 39 - .../___FILEBASENAME___Reactor.swift | 24 - .../TemplateIcon.png | Bin 4587 -> 0 bytes .../TemplateIcon@2x.png | Bin 7031 -> 0 bytes .../TemplateInfo.plist | 39 - .../___FILEBASENAME___ViewController.swift | 20 - Share/Templates/copy_templates.sh | 12 - 222 files changed, 4 insertions(+), 27049 deletions(-) delete mode 100644 Annict-for-iOS.xcodeproj/project.pbxproj delete mode 100644 Annict-for-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 Annict-for-iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 Annict-for-iOS.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 Annict-for-iOS.xcodeproj/project.xcworkspace/xcuserdata/yuto.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 Annict-for-iOS.xcodeproj/project.xcworkspace/xcuserdata/yuto.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100644 Annict-for-iOS.xcodeproj/xcshareddata/xcschemes/Annict-for-iOS.xcscheme delete mode 100644 Annict-for-iOS.xcodeproj/xcuserdata/yuto.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 Annict-for-iOS.xcodeproj/xcuserdata/yuto.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 Annict-for-iOS.xcworkspace/contents.xcworkspacedata delete mode 100644 Annict-for-iOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 Annict-for-iOS.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 Annict-for-iOS.xcworkspace/xcuserdata/touyu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 Annict-for-iOS.xcworkspace/xcuserdata/yuto.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100644 Annict-for-iOS.xcworkspace/xcuserdata/yuto.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 Annict-for-iOS/API.swift delete mode 100644 Annict-for-iOS/Assets.xcassets/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/Tab/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/Tab/account.imageset/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/Tab/account.imageset/User.pdf delete mode 100644 Annict-for-iOS/Assets.xcassets/Tab/home.imageset/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/Tab/home.imageset/Home.pdf delete mode 100644 Annict-for-iOS/Assets.xcassets/Tab/pencil.imageset/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/Tab/pencil.imageset/Pencil.pdf delete mode 100644 Annict-for-iOS/Assets.xcassets/Tab/search.imageset/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/Tab/search.imageset/Search.pdf delete mode 100644 Annict-for-iOS/Assets.xcassets/calendar.imageset/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/calendar.imageset/calendar.pdf delete mode 100644 Annict-for-iOS/Assets.xcassets/paperplane_fill.imageset/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/paperplane_fill.imageset/paperplane_fill.pdf delete mode 100644 Annict-for-iOS/Assets.xcassets/portannict_logo.imageset/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/portannict_logo.imageset/portannict_logo.pdf delete mode 100644 Annict-for-iOS/Assets.xcassets/three_dot.imageset/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/three_dot.imageset/three_dot.pdf delete mode 100644 Annict-for-iOS/Assets.xcassets/under_arrow.imageset/Contents.json delete mode 100644 Annict-for-iOS/Assets.xcassets/under_arrow.imageset/under_arrow.pdf delete mode 100644 Annict-for-iOS/Base.lproj/LaunchScreen.storyboard delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/CreateRecord.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/DeleteRecord.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/EpisodeDetails.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/Fragment.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/GetFollowingActivities.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/GetRecords.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/GetViewerInfo.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/GetViewerWatchingEpisodes.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/GetViewerWorks.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/SearchWorks.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/SearchWorksByID.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/SearchWorksByTitle.graphql delete mode 100644 Annict-for-iOS/Commons/API/GraphQL/UpdateStatus.graphql delete mode 100644 Annict-for-iOS/Commons/API/HTTPClient.swift delete mode 100644 Annict-for-iOS/Commons/API/REST/OauthTokenRequest.swift delete mode 100644 Annict-for-iOS/Commons/AppDelegate.swift delete mode 100755 Annict-for-iOS/Commons/BlurKit/BlurKit.swift delete mode 100755 Annict-for-iOS/Commons/BlurKit/BlurView.swift delete mode 100644 Annict-for-iOS/Commons/Constants.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/AnnictGraphQL.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/CALayer.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/CGSize.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/CachePolicy.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/Entity+Extension.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/GraphQLSelectionSet.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/HUD.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/Icon.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/NSMutableParagraphStyle.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/NSObject.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/StatusState.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/StoryboardLoadable.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/SwiftyDate.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/UIApplication.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/UICollectionView.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/UIColor.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/UIImage.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/UIImageView.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/UINavigationBar.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/UITableView.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/UIView.swift delete mode 100644 Annict-for-iOS/Commons/Extensions/URLConvertible.swift delete mode 100644 Annict-for-iOS/Commons/NotificationCenter.swift delete mode 100644 Annict-for-iOS/Commons/NotificationName.swift delete mode 100644 Annict-for-iOS/Commons/ParentPagerViewController.swift delete mode 100644 Annict-for-iOS/Commons/PortannictExtension.swift delete mode 100644 Annict-for-iOS/Commons/Protocol/AssociatedObjectStore.swift delete mode 100644 Annict-for-iOS/Commons/Protocol/NibOwnerLoadable.swift delete mode 100644 Annict-for-iOS/Commons/Rx/GradationView.swift delete mode 100644 Annict-for-iOS/Commons/Rx/ObservableType.swift delete mode 100644 Annict-for-iOS/Commons/Rx/RxApollo.swift delete mode 100644 Annict-for-iOS/Commons/Rx/RxUIScrollView.swift delete mode 100644 Annict-for-iOS/Commons/Rx/RxUIViewController.swift delete mode 100644 Annict-for-iOS/Commons/Services/APIService.swift delete mode 100644 Annict-for-iOS/Commons/Services/BaseService.swift delete mode 100644 Annict-for-iOS/Commons/Services/EpisodeAPIService.swift delete mode 100644 Annict-for-iOS/Commons/Services/ServiceProvider.swift delete mode 100644 Annict-for-iOS/Commons/Services/UserDefaultsService.swift delete mode 100644 Annict-for-iOS/Commons/Services/WorkAPIService.swift delete mode 100644 Annict-for-iOS/Commons/StatusBarManager.swift delete mode 100644 Annict-for-iOS/Commons/SwiftyAttributedString.swift delete mode 100644 Annict-for-iOS/Commons/Taptic.swift delete mode 100644 Annict-for-iOS/Commons/UIKit/ActionClosurable.swift delete mode 100644 Annict-for-iOS/Commons/UIKit/Ornament.swift delete mode 100644 Annict-for-iOS/Commons/UIKit/PaddingLabel.swift delete mode 100644 Annict-for-iOS/Commons/UserDefaultsRepository.swift delete mode 100644 Annict-for-iOS/Commons/Views/RadioButton.swift delete mode 100644 Annict-for-iOS/Commons/Views/RecordStatusTagButton.swift delete mode 100644 Annict-for-iOS/Commons/Views/RecordStatusTagButton.xib delete mode 100644 Annict-for-iOS/Commons/Views/RecordStatusTagView.swift delete mode 100644 Annict-for-iOS/Commons/Views/RecordStatusTagView.xib delete mode 100644 Annict-for-iOS/Info.plist delete mode 100644 Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTitleTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTitleTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewController.swift delete mode 100644 Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Home/HomeViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Home/HomeViewController.swift delete mode 100644 Annict-for-iOS/Modules/Home/HomeViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCellReactor.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCellReactor.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCellReactor.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/HomeTitleTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/HomeTitleTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Home/Views/WorkAndEpisodeQuoteView.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/WorkAndEpisodeQuoteView.xib delete mode 100644 Annict-for-iOS/Modules/Home/Views/WorkQuoteView.swift delete mode 100644 Annict-for-iOS/Modules/Home/Views/WorkQuoteView.xib delete mode 100644 Annict-for-iOS/Modules/Login/LoginViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Login/LoginViewController.swift delete mode 100644 Annict-for-iOS/Modules/Login/LoginViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Profile/ProfileViewController.swift delete mode 100644 Annict-for-iOS/Modules/Profile/ProfileWorks/ChildPagerViewController.swift delete mode 100644 Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewController.swift delete mode 100644 Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Profile/ProfileWorks/Views/ProfileWorkCollectionViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Profile/ProfileWorks/Views/ProfileWorkCollectionViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewController.swift delete mode 100644 Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Profile/Views/ButtonMarkView.swift delete mode 100644 Annict-for-iOS/Modules/Profile/Views/ProfileHeaderView.swift delete mode 100644 Annict-for-iOS/Modules/Profile/Views/ProfileHeaderView.xib delete mode 100644 Annict-for-iOS/Modules/Profile/Views/UserInfoTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Profile/Views/UserInfoTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Profile/Views/UserWorkCollectionViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Profile/Views/UserWorkCollectionViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Profile/Views/UserWorksWithSectionTitleCell.swift delete mode 100644 Annict-for-iOS/Modules/Profile/Views/UserWorksWithSectionTitleCell.xib delete mode 100644 Annict-for-iOS/Modules/Record/PostRecord/PlaceholderTextView.swift delete mode 100644 Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewController.swift delete mode 100644 Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Record/PostRecord/Views/RatingStatusTagsView.swift delete mode 100644 Annict-for-iOS/Modules/Record/PostRecord/Views/RatingStatusTagsView.xib delete mode 100644 Annict-for-iOS/Modules/Record/Transition/PostRecordTransitioningDelegate.swift delete mode 100644 Annict-for-iOS/Modules/Record/Transition/SemiModalPresentationController.swift delete mode 100644 Annict-for-iOS/Modules/Record/ViewControllers/RecordViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Record/ViewControllers/RecordViewController.swift delete mode 100644 Annict-for-iOS/Modules/Record/ViewControllers/RecordViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCellReactor.swift delete mode 100644 Annict-for-iOS/Modules/Root/RootViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Root/RootViewController.swift delete mode 100644 Annict-for-iOS/Modules/Root/RootViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Search/Season.swift delete mode 100644 Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewController.swift delete mode 100644 Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Search/ViewControllers/SearchViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Search/ViewControllers/SearchViewController.swift delete mode 100644 Annict-for-iOS/Modules/Search/ViewControllers/SearchViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewController.swift delete mode 100644 Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewReactor.swift delete mode 100644 Annict-for-iOS/Modules/Search/Views/SearchResultWorkCell.swift delete mode 100644 Annict-for-iOS/Modules/Search/Views/SearchResultWorkCell.xib delete mode 100644 Annict-for-iOS/Modules/Search/Views/SeasonWorksCollectionViewCell/SeasonWorkCollectionViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Search/Views/SeasonWorksCollectionViewCell/SeasonWorkCollectionViewCell.xib delete mode 100644 Annict-for-iOS/Modules/TabBar/RootTabBarController.storyboard delete mode 100644 Annict-for-iOS/Modules/TabBar/RootTabBarController.swift delete mode 100644 Annict-for-iOS/Modules/TabBar/RootTabBarReactor.md delete mode 100644 Annict-for-iOS/Modules/TabBar/RootTabBarReactor.swift delete mode 100644 Annict-for-iOS/Modules/Work/Views/EpisodeCountSectionTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Work/Views/EpisodeCountSectionTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Work/Views/EpisodeTitleTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Work/Views/EpisodeTitleTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Work/Views/WorkHeaderTableViewCell.swift delete mode 100644 Annict-for-iOS/Modules/Work/Views/WorkHeaderTableViewCell.xib delete mode 100644 Annict-for-iOS/Modules/Work/Views/WorkStatusButton.swift delete mode 100644 Annict-for-iOS/Modules/Work/Views/WorkStatusButton.xib delete mode 100644 Annict-for-iOS/Modules/Work/WorkViewController.storyboard delete mode 100644 Annict-for-iOS/Modules/Work/WorkViewController.swift delete mode 100644 Annict-for-iOS/Modules/Work/WorkViewReactor.swift delete mode 100644 Annict-for-iOS/schema.json delete mode 100644 Cartfile delete mode 100644 Cartfile.resolved delete mode 100644 Gemfile delete mode 100644 Gemfile.lock delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/TemplateIcon.png delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/TemplateIcon@2x.png delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/TemplateInfo.plist delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewController.storyboard delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewController.swift delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewReactor.swift delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Reactor.xctemplate/TemplateIcon.png delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Reactor.xctemplate/TemplateIcon@2x.png delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Reactor.xctemplate/TemplateInfo.plist delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_Reactor.xctemplate/___FILEBASENAME___Reactor.swift delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_StoryBoardView.xctemplate/TemplateIcon.png delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_StoryBoardView.xctemplate/TemplateIcon@2x.png delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_StoryBoardView.xctemplate/TemplateInfo.plist delete mode 100644 Share/Templates/Templates/File Templates/ReactorKit/RK_StoryBoardView.xctemplate/___FILEBASENAME___ViewController.swift delete mode 100644 Share/Templates/copy_templates.sh diff --git a/Annict-for-iOS.xcodeproj/project.pbxproj b/Annict-for-iOS.xcodeproj/project.pbxproj deleted file mode 100644 index 1d3a8a66..00000000 --- a/Annict-for-iOS.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1473 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - C917CDDC4A16A7899040361A /* Pods_Annict_for_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0567F169D06E4DEA7E47513F /* Pods_Annict_for_iOS.framework */; }; - CFBBD25B2397D5D400127DCB /* RadioButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBBD25A2397D5D400127DCB /* RadioButton.swift */; }; - CFBBD25D2397EB7C00127DCB /* Icon.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBBD25C2397EB7C00127DCB /* Icon.swift */; }; - CFBBD25F2397ECC800127DCB /* HUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBBD25E2397ECC800127DCB /* HUD.swift */; }; - D118FCBF217F1D1C00FD5B82 /* NotificationName.swift in Sources */ = {isa = PBXBuildFile; fileRef = D118FCBE217F1D1C00FD5B82 /* NotificationName.swift */; }; - D1199E492238FF3F00531BF3 /* BlurView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1199E472238FF3E00531BF3 /* BlurView.swift */; }; - D1199E4A2238FF3F00531BF3 /* BlurKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1199E482238FF3E00531BF3 /* BlurKit.swift */; }; - D1199E4D22390FA200531BF3 /* HomeTitleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1199E4B22390FA200531BF3 /* HomeTitleTableViewCell.swift */; }; - D1199E4E22390FA200531BF3 /* HomeTitleTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1199E4C22390FA200531BF3 /* HomeTitleTableViewCell.xib */; }; - D1199E50223E994700531BF3 /* CachePolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1199E4F223E994700531BF3 /* CachePolicy.swift */; }; - D11D57E12237B1B0000D3CC0 /* Fragment.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D11D57E02237B1B0000D3CC0 /* Fragment.graphql */; }; - D11D57E52237B4E9000D3CC0 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = D11D57E42237B4E9000D3CC0 /* API.swift */; }; - D11D57E92237BC3B000D3CC0 /* ActivityRecordTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D11D57E72237BC3B000D3CC0 /* ActivityRecordTableViewCell.swift */; }; - D11D57EA2237BC3B000D3CC0 /* ActivityRecordTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D11D57E82237BC3B000D3CC0 /* ActivityRecordTableViewCell.xib */; }; - D11D57ED2237C1DA000D3CC0 /* ActivityStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D11D57EB2237C1DA000D3CC0 /* ActivityStatusTableViewCell.swift */; }; - D11D57EE2237C1DA000D3CC0 /* ActivityStatusTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D11D57EC2237C1DA000D3CC0 /* ActivityStatusTableViewCell.xib */; }; - D11D57F02237C5F3000D3CC0 /* WorkAndEpisodeQuoteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D11D57EF2237C5F3000D3CC0 /* WorkAndEpisodeQuoteView.swift */; }; - D11D57F22237C663000D3CC0 /* WorkAndEpisodeQuoteView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D11D57F12237C663000D3CC0 /* WorkAndEpisodeQuoteView.xib */; }; - D11D57F42237D3DD000D3CC0 /* Entity+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D11D57F32237D3DD000D3CC0 /* Entity+Extension.swift */; }; - D11D57F72237D9B9000D3CC0 /* RootTabBarReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D11D57F62237D9B9000D3CC0 /* RootTabBarReactor.swift */; }; - D11D57F92237DE1A000D3CC0 /* WorkQuoteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D11D57F82237DE1A000D3CC0 /* WorkQuoteView.swift */; }; - D11D57FB2237DE2D000D3CC0 /* WorkQuoteView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D11D57FA2237DE2D000D3CC0 /* WorkQuoteView.xib */; }; - D11D57FE2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D11D57FC2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.swift */; }; - D11D57FF2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D11D57FD2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.xib */; }; - D123D0D122D8F2D500C023F1 /* PanModal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D123D0D022D8F2D500C023F1 /* PanModal.framework */; }; - D123F254217CBD2500AE38FD /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D123F253217CBD2500AE38FD /* AppDelegate.swift */; }; - D123F25B217CBD2600AE38FD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D123F25A217CBD2600AE38FD /* Assets.xcassets */; }; - D123F25E217CBD2600AE38FD /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D123F25C217CBD2600AE38FD /* LaunchScreen.storyboard */; }; - D127411D217CDEF300DD09C2 /* BaseService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D127411C217CDEF300DD09C2 /* BaseService.swift */; }; - D127411F217CDF1000DD09C2 /* ServiceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D127411E217CDF1000DD09C2 /* ServiceProvider.swift */; }; - D12E01E922E38FFA000D3C10 /* RecordEpisodeTableViewCellReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D12E01E822E38FFA000D3C10 /* RecordEpisodeTableViewCellReactor.swift */; }; - D12E01EB22E39EA5000D3C10 /* PlaceholderTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D12E01EA22E39EA5000D3C10 /* PlaceholderTextView.swift */; }; - D12E01ED22E41B52000D3C10 /* EpisodeAPIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D12E01EC22E41B52000D3C10 /* EpisodeAPIService.swift */; }; - D136EA6E2180439B00BA08EA /* UserDefaultsRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = D136EA6D2180439B00BA08EA /* UserDefaultsRepository.swift */; }; - D136EA7121807E9500BA08EA /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D136EA7021807E9500BA08EA /* APIService.swift */; }; - D136EA742180885400BA08EA /* UserDefaultsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D136EA732180885400BA08EA /* UserDefaultsService.swift */; }; - D13C668622EB75490087284B /* EpisodeCountSectionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D13C668422EB75490087284B /* EpisodeCountSectionTableViewCell.swift */; }; - D13C668722EB75490087284B /* EpisodeCountSectionTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D13C668522EB75490087284B /* EpisodeCountSectionTableViewCell.xib */; }; - D13F2EBA222E2B0700509FB2 /* GetFollowingActivities.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D13F2EB9222E2B0700509FB2 /* GetFollowingActivities.graphql */; }; - D14ED3B722E8857200437DF9 /* RatingStatusTagsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D14ED3B622E8857200437DF9 /* RatingStatusTagsView.swift */; }; - D14ED3B922E8859000437DF9 /* RatingStatusTagsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D14ED3B822E8859000437DF9 /* RatingStatusTagsView.xib */; }; - D15A325122EAE8CB00DDC404 /* PaddingLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15A325022EAE8CB00DDC404 /* PaddingLabel.swift */; }; - D15A325322EAF30D00DDC404 /* PKHUD.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D15A325222EAF30D00DDC404 /* PKHUD.framework */; }; - D16193C222E8581400B6BEBC /* RecordStatusTagButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16193C122E8581400B6BEBC /* RecordStatusTagButton.swift */; }; - D16193C422E8585100B6BEBC /* RecordStatusTagButton.xib in Resources */ = {isa = PBXBuildFile; fileRef = D16193C322E8585100B6BEBC /* RecordStatusTagButton.xib */; }; - D1621DE92186214900819D93 /* RootTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1621DE82186214900819D93 /* RootTabBarController.swift */; }; - D1621DEB2186218200819D93 /* RootTabBarController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1621DEA2186218200819D93 /* RootTabBarController.storyboard */; }; - D1621DF02186262300819D93 /* RecordViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1621DED2186262300819D93 /* RecordViewReactor.swift */; }; - D1621DF12186262300819D93 /* RecordViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1621DEE2186262300819D93 /* RecordViewController.storyboard */; }; - D1621DF22186262300819D93 /* RecordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1621DEF2186262300819D93 /* RecordViewController.swift */; }; - D1621DF72186273200819D93 /* ProfileViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1621DF42186273200819D93 /* ProfileViewReactor.swift */; }; - D1621DF82186273200819D93 /* ProfileViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1621DF52186273200819D93 /* ProfileViewController.storyboard */; }; - D1621DF92186273200819D93 /* ProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1621DF62186273200819D93 /* ProfileViewController.swift */; }; - D1621DFF21862BA600819D93 /* PostRecordViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1621DFC21862BA600819D93 /* PostRecordViewReactor.swift */; }; - D1621E0021862BA600819D93 /* PostRecordViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1621DFD21862BA600819D93 /* PostRecordViewController.storyboard */; }; - D1621E0121862BA600819D93 /* PostRecordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1621DFE21862BA600819D93 /* PostRecordViewController.swift */; }; - D1621E0321862C3B00819D93 /* SemiModalPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1621E0221862C3B00819D93 /* SemiModalPresentationController.swift */; }; - D1621E0521862F4500819D93 /* PostRecordTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1621E0421862F4500819D93 /* PostRecordTransitioningDelegate.swift */; }; - D1621E0A2186BB9300819D93 /* GetViewerWatchingEpisodes.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D1621E092186BB9300819D93 /* GetViewerWatchingEpisodes.graphql */; }; - D163090121F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16308FF21F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.swift */; }; - D163090221F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D163090021F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.xib */; }; - D165C9B621B0E051002E8FFA /* UINavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D165C9B521B0E051002E8FFA /* UINavigationBar.swift */; }; - D165C9B921B0E306002E8FFA /* SearchViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D165C9B821B0E306002E8FFA /* SearchViewReactor.swift */; }; - D165C9BB21B0E596002E8FFA /* SearchWorks.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D165C9BA21B0E596002E8FFA /* SearchWorks.graphql */; }; - D165C9BD21B158EA002E8FFA /* SearchResultViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D165C9BC21B158EA002E8FFA /* SearchResultViewReactor.swift */; }; - D165C9BF21B15B36002E8FFA /* SearchWorksByTitle.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D165C9BE21B15B36002E8FFA /* SearchWorksByTitle.graphql */; }; - D165C9C121B15EE9002E8FFA /* SearchResultWorkCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D165C9C021B15EE9002E8FFA /* SearchResultWorkCell.xib */; }; - D165C9C321B15EF1002E8FFA /* SearchResultWorkCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D165C9C221B15EF1002E8FFA /* SearchResultWorkCell.swift */; }; - D16C5985224A6824004F0983 /* AssociatedObjectStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C5984224A6824004F0983 /* AssociatedObjectStore.swift */; }; - D18389B321B05137004A072C /* SearchResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18389B221B05137004A072C /* SearchResultViewController.swift */; }; - D18389B521B05146004A072C /* SearchResultViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D18389B421B05146004A072C /* SearchResultViewController.storyboard */; }; - D18447C621BD021D00CF44AB /* GradationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18447C521BD021D00CF44AB /* GradationView.swift */; }; - D1891A6022E1FA5400D26512 /* UpdateStatus.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D1891A5F22E1FA5400D26512 /* UpdateStatus.graphql */; }; - D1891A6222E1FDD900D26512 /* WorkAPIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1891A6122E1FDD900D26512 /* WorkAPIService.swift */; }; - D19718CD217E29D2009B5F0F /* RxApollo.swift in Sources */ = {isa = PBXBuildFile; fileRef = D19718CC217E29D2009B5F0F /* RxApollo.swift */; }; - D19718CF217E2ED3009B5F0F /* ObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D19718CE217E2ED3009B5F0F /* ObservableType.swift */; }; - D1AF34BA219B0921004DD229 /* GetViewerWorks.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D1AF34B9219B0921004DD229 /* GetViewerWorks.graphql */; }; - D1AF34BC219B3CBF004DD229 /* GetViewerInfo.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D1AF34BB219B3CBF004DD229 /* GetViewerInfo.graphql */; }; - D1AF34C1219B4042004DD229 /* UserInfoTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1AF34BF219B4042004DD229 /* UserInfoTableViewCell.swift */; }; - D1AF34C2219B4042004DD229 /* UserInfoTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1AF34C0219B4042004DD229 /* UserInfoTableViewCell.xib */; }; - D1AF34C4219B4202004DD229 /* UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1AF34C3219B4202004DD229 /* UITableView.swift */; }; - D1AF34C6219B4238004DD229 /* UICollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1AF34C5219B4238004DD229 /* UICollectionView.swift */; }; - D1B27B2822525B01007F8B95 /* ParentPagerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B27B2722525B01007F8B95 /* ParentPagerViewController.swift */; }; - D1B27B2A22525B57007F8B95 /* StatusBarManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B27B2922525B57007F8B95 /* StatusBarManager.swift */; }; - D1B27B3322526ECF007F8B95 /* SearchWorksByID.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D1B27B3222526ECF007F8B95 /* SearchWorksByID.graphql */; }; - D1B4C83622E983EB000C2741 /* RecordStatusTagView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C83522E983EB000C2741 /* RecordStatusTagView.swift */; }; - D1B4C83822E983F5000C2741 /* RecordStatusTagView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1B4C83722E983F5000C2741 /* RecordStatusTagView.xib */; }; - D1B4C83B22E987BB000C2741 /* EpisodeRecordTitleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C83922E987BB000C2741 /* EpisodeRecordTitleTableViewCell.swift */; }; - D1B4C83C22E987BB000C2741 /* EpisodeRecordTitleTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1B4C83A22E987BB000C2741 /* EpisodeRecordTitleTableViewCell.xib */; }; - D1B4C83E22E98AD8000C2741 /* ActivityRecordTableViewCellReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C83D22E98AD8000C2741 /* ActivityRecordTableViewCellReactor.swift */; }; - D1B4C84022E98B0C000C2741 /* ActivityStatusTableViewCellReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C83F22E98B0C000C2741 /* ActivityStatusTableViewCellReactor.swift */; }; - D1B4C84222E98B35000C2741 /* ActivityMultipleRecordTableViewCellReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C84122E98B35000C2741 /* ActivityMultipleRecordTableViewCellReactor.swift */; }; - D1B4C84622E9BDD5000C2741 /* CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C84522E9BDD5000C2741 /* CALayer.swift */; }; - D1B4C84822E9C55B000C2741 /* SwiftyAttributedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C84722E9C55B000C2741 /* SwiftyAttributedString.swift */; }; - D1B4C84C22E9C83B000C2741 /* PortannictExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C84B22E9C83B000C2741 /* PortannictExtension.swift */; }; - D1B4C84E22E9CBA3000C2741 /* SwiftyDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C84D22E9CBA3000C2741 /* SwiftyDate.swift */; }; - D1B4C85222EAC713000C2741 /* TermSettingViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C84F22EAC713000C2741 /* TermSettingViewReactor.swift */; }; - D1B4C85322EAC713000C2741 /* TermSettingViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1B4C85022EAC713000C2741 /* TermSettingViewController.storyboard */; }; - D1B4C85422EAC713000C2741 /* TermSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4C85122EAC713000C2741 /* TermSettingViewController.swift */; }; - D1B4F161217EB3770011BAFF /* RootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4F160217EB3770011BAFF /* RootViewController.swift */; }; - D1B4F163217EB38D0011BAFF /* RootViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1B4F162217EB38D0011BAFF /* RootViewController.storyboard */; }; - D1B4F165217EB4080011BAFF /* RootViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4F164217EB4080011BAFF /* RootViewReactor.swift */; }; - D1B4F167217EB5E60011BAFF /* RxUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4F166217EB5E60011BAFF /* RxUIViewController.swift */; }; - D1B4F16A217EB8380011BAFF /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4F169217EB8380011BAFF /* LoginViewController.swift */; }; - D1B4F16C217EB8580011BAFF /* LoginViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1B4F16B217EB8580011BAFF /* LoginViewController.storyboard */; }; - D1B4F16F217EB8A70011BAFF /* StoryboardLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4F16E217EB8A70011BAFF /* StoryboardLoadable.swift */; }; - D1B4F171217EB8D50011BAFF /* NSObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4F170217EB8D50011BAFF /* NSObject.swift */; }; - D1B4F174217EBB940011BAFF /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4F173217EBB940011BAFF /* UIView.swift */; }; - D1B4F176217EBF200011BAFF /* LoginViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4F175217EBF200011BAFF /* LoginViewReactor.swift */; }; - D1B4F178217EC0970011BAFF /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B4F177217EC0970011BAFF /* Constants.swift */; }; - D1BCB8C2217F327400B84F82 /* NotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BCB8C1217F327400B84F82 /* NotificationCenter.swift */; }; - D1BCB8C4217F350A00B84F82 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BCB8C3217F350A00B84F82 /* HTTPClient.swift */; }; - D1BCB8C9217F3E8300B84F82 /* OauthTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BCB8C8217F3E8300B84F82 /* OauthTokenRequest.swift */; }; - D1BCB8CB217F451C00B84F82 /* UIApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BCB8CA217F451C00B84F82 /* UIApplication.swift */; }; - D1BCB8CE217F469800B84F82 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BCB8CD217F469800B84F82 /* HomeViewController.swift */; }; - D1BCB8D1217F46B600B84F82 /* HomeViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1BCB8D0217F46B600B84F82 /* HomeViewController.storyboard */; }; - D1BCB8D3217F4A3D00B84F82 /* HomeViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BCB8D2217F4A3D00B84F82 /* HomeViewReactor.swift */; }; - D1BD1F7522E8C11700A260F5 /* EpisodeRecordTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BD1F7322E8C11700A260F5 /* EpisodeRecordTableViewCell.swift */; }; - D1BD1F7622E8C11700A260F5 /* EpisodeRecordTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1BD1F7422E8C11700A260F5 /* EpisodeRecordTableViewCell.xib */; }; - D1BD1F7A22E8C13800A260F5 /* EpisodeRecordsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1BD1F7722E8C13800A260F5 /* EpisodeRecordsViewController.storyboard */; }; - D1BD1F7B22E8C13800A260F5 /* EpisodeRecordsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BD1F7822E8C13800A260F5 /* EpisodeRecordsViewController.swift */; }; - D1BD1F7C22E8C13800A260F5 /* EpisodeRecordsViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BD1F7922E8C13800A260F5 /* EpisodeRecordsViewReactor.swift */; }; - D1BD1F8F22E8C8B600A260F5 /* GetRecords.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D1BD1F8D22E8C85600A260F5 /* GetRecords.graphql */; }; - D1C53C0821EE4C7700DA9A1D /* XLPagerTabStrip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1C53C0721EE4C7700DA9A1D /* XLPagerTabStrip.framework */; }; - D1C53C0D21EE4F1200DA9A1D /* ProfileWorksViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1C53C0A21EE4F1200DA9A1D /* ProfileWorksViewReactor.swift */; }; - D1C53C0E21EE4F1200DA9A1D /* ProfileWorksViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1C53C0B21EE4F1200DA9A1D /* ProfileWorksViewController.storyboard */; }; - D1C53C1121EEFA0300DA9A1D /* ProfileHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1C53C1021EEFA0300DA9A1D /* ProfileHeaderView.swift */; }; - D1C53C1321EEFA1900DA9A1D /* ProfileHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1C53C1221EEFA1900DA9A1D /* ProfileHeaderView.xib */; }; - D1C53C1621EEFB9A00DA9A1D /* NibOwnerLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1C53C1521EEFB9A00DA9A1D /* NibOwnerLoadable.swift */; }; - D1C53C1821EF38E800DA9A1D /* ProfileWorksViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1C53C1721EF38E700DA9A1D /* ProfileWorksViewController.swift */; }; - D1C53C2021EF733200DA9A1D /* ProfileWorkCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1C53C1E21EF733200DA9A1D /* ProfileWorkCollectionViewCell.swift */; }; - D1C53C2121EF733200DA9A1D /* ProfileWorkCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1C53C1F21EF733200DA9A1D /* ProfileWorkCollectionViewCell.xib */; }; - D1CEDD7522F14BA000EC2D94 /* DeleteRecord.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D1CEDD7422F14BA000EC2D94 /* DeleteRecord.graphql */; }; - D1E66AB72204B9000058BFEF /* SnapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1E66AB62204B9000058BFEF /* SnapKit.framework */; }; - D1E6DEEC22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1E6DEEA22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.swift */; }; - D1E6DEED22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1E6DEEB22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.xib */; }; - D1E6DEF022E0EC2B003D03F0 /* WorkHeaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1E6DEEE22E0EC2B003D03F0 /* WorkHeaderTableViewCell.swift */; }; - D1E6DEF122E0EC2B003D03F0 /* WorkHeaderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1E6DEEF22E0EC2B003D03F0 /* WorkHeaderTableViewCell.xib */; }; - D1E6DEF322E3712F003D03F0 /* Season.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1E6DEF222E3712F003D03F0 /* Season.swift */; }; - D1F553A6224B8132001D971C /* ButtonMarkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F553A5224B8132001D971C /* ButtonMarkView.swift */; }; - D1F553A8224B8944001D971C /* ChildPagerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F553A7224B8944001D971C /* ChildPagerViewController.swift */; }; - D1F87E4222E176C1001EB9DD /* WorkStatusButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F87E4122E176C1001EB9DD /* WorkStatusButton.swift */; }; - D1F87E4422E176E2001EB9DD /* WorkStatusButton.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1F87E4322E176E2001EB9DD /* WorkStatusButton.xib */; }; - D1F87E4622E17C28001EB9DD /* Taptic.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F87E4522E17C28001EB9DD /* Taptic.swift */; }; - D1F9143321AA6A61006986A1 /* Kingfisher.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1F9143221AA6A61006986A1 /* Kingfisher.framework */; }; - D1F9143521AA74FA006986A1 /* NSMutableParagraphStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9143421AA74FA006986A1 /* NSMutableParagraphStyle.swift */; }; - D1F9143721AA756F006986A1 /* UIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9143621AA756F006986A1 /* UIImageView.swift */; }; - D1F9143921AA75A0006986A1 /* URLConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9143821AA75A0006986A1 /* URLConvertible.swift */; }; - D1F9143B21AA75C8006986A1 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9143A21AA75C8006986A1 /* UIImage.swift */; }; - D1F9143D21AA7615006986A1 /* CGSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9143C21AA7615006986A1 /* CGSize.swift */; }; - D1F9144021AA7B4F006986A1 /* UserWorksWithSectionTitleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9143E21AA7B4F006986A1 /* UserWorksWithSectionTitleCell.swift */; }; - D1F9144121AA7B4F006986A1 /* UserWorksWithSectionTitleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1F9143F21AA7B4F006986A1 /* UserWorksWithSectionTitleCell.xib */; }; - D1F9144A21AA7FD2006986A1 /* UserWorkCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9144821AA7FD2006986A1 /* UserWorkCollectionViewCell.swift */; }; - D1F9144B21AA7FD2006986A1 /* UserWorkCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1F9144921AA7FD2006986A1 /* UserWorkCollectionViewCell.xib */; }; - D1F9144D21AA85C1006986A1 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9144C21AA85C1006986A1 /* UIColor.swift */; }; - D1F9ED0321B2748500AB3DAE /* Hero.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1F9ED0221B2748500AB3DAE /* Hero.framework */; }; - D1F9ED0821B274CD00AB3DAE /* WorkViewReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9ED0521B274CD00AB3DAE /* WorkViewReactor.swift */; }; - D1F9ED0921B274CD00AB3DAE /* WorkViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1F9ED0621B274CD00AB3DAE /* WorkViewController.storyboard */; }; - D1F9ED0A21B274CD00AB3DAE /* WorkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F9ED0721B274CD00AB3DAE /* WorkViewController.swift */; }; - D1FFB57921AE867B001099E6 /* StatusState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FFB57821AE867B001099E6 /* StatusState.swift */; }; - D1FFB57B21AE8696001099E6 /* GraphQLSelectionSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FFB57A21AE8696001099E6 /* GraphQLSelectionSet.swift */; }; - D1FFB57F21AE98DD001099E6 /* AnnictGraphQL.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FFB57E21AE98DD001099E6 /* AnnictGraphQL.swift */; }; - D1FFB58421AECF04001099E6 /* RecordEpisodeTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FFB58221AECF04001099E6 /* RecordEpisodeTableViewCell.swift */; }; - D1FFB58521AECF04001099E6 /* RecordEpisodeTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1FFB58321AECF04001099E6 /* RecordEpisodeTableViewCell.xib */; }; - D1FFB58721AED24F001099E6 /* Ornament.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FFB58621AED24F001099E6 /* Ornament.swift */; }; - D1FFB58A21AEE427001099E6 /* CreateRecord.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D1FFB58921AEE427001099E6 /* CreateRecord.graphql */; }; - D1FFB58C21AEE904001099E6 /* EpisodeDetails.graphql in Resources */ = {isa = PBXBuildFile; fileRef = D1FFB58B21AEE904001099E6 /* EpisodeDetails.graphql */; }; - D1FFB58E21AEF3A3001099E6 /* RxUIScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FFB58D21AEF3A3001099E6 /* RxUIScrollView.swift */; }; - D1FFB59021AEF644001099E6 /* ActionClosurable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FFB58F21AEF644001099E6 /* ActionClosurable.swift */; }; - D1FFB59321B03A14001099E6 /* Apollo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1FFB59121B03A13001099E6 /* Apollo.framework */; }; - D1FFB59421B03A14001099E6 /* ApolloSQLite.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1FFB59221B03A13001099E6 /* ApolloSQLite.framework */; }; - D1FFB59621B03A4D001099E6 /* SQLite.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1FFB59521B03A4D001099E6 /* SQLite.framework */; }; - D1FFB59A21B04693001099E6 /* SearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FFB59921B04693001099E6 /* SearchViewController.swift */; }; - D1FFB59C21B046BE001099E6 /* SearchViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1FFB59B21B046BE001099E6 /* SearchViewController.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 0567F169D06E4DEA7E47513F /* Pods_Annict_for_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Annict_for_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4C866238FE78822277121123 /* Pods-Annict-for-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Annict-for-iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-Annict-for-iOS/Pods-Annict-for-iOS.release.xcconfig"; sourceTree = ""; }; - CC015B11081256C34FD80D74 /* Pods-Annict-for-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Annict-for-iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Annict-for-iOS/Pods-Annict-for-iOS.debug.xcconfig"; sourceTree = ""; }; - CFBBD25A2397D5D400127DCB /* RadioButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButton.swift; sourceTree = ""; }; - CFBBD25C2397EB7C00127DCB /* Icon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Icon.swift; sourceTree = ""; }; - CFBBD25E2397ECC800127DCB /* HUD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUD.swift; sourceTree = ""; }; - D118FCBE217F1D1C00FD5B82 /* NotificationName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationName.swift; sourceTree = ""; }; - D1199E472238FF3E00531BF3 /* BlurView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlurView.swift; sourceTree = ""; }; - D1199E482238FF3E00531BF3 /* BlurKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlurKit.swift; sourceTree = ""; }; - D1199E4B22390FA200531BF3 /* HomeTitleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTitleTableViewCell.swift; sourceTree = ""; }; - D1199E4C22390FA200531BF3 /* HomeTitleTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeTitleTableViewCell.xib; sourceTree = ""; }; - D1199E4F223E994700531BF3 /* CachePolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CachePolicy.swift; sourceTree = ""; }; - D11D57E02237B1B0000D3CC0 /* Fragment.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fragment.graphql; sourceTree = ""; }; - D11D57E42237B4E9000D3CC0 /* API.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = API.swift; path = "Annict-for-iOS/API.swift"; sourceTree = SOURCE_ROOT; }; - D11D57E72237BC3B000D3CC0 /* ActivityRecordTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityRecordTableViewCell.swift; sourceTree = ""; }; - D11D57E82237BC3B000D3CC0 /* ActivityRecordTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ActivityRecordTableViewCell.xib; sourceTree = ""; }; - D11D57EB2237C1DA000D3CC0 /* ActivityStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusTableViewCell.swift; sourceTree = ""; }; - D11D57EC2237C1DA000D3CC0 /* ActivityStatusTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ActivityStatusTableViewCell.xib; sourceTree = ""; }; - D11D57EF2237C5F3000D3CC0 /* WorkAndEpisodeQuoteView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkAndEpisodeQuoteView.swift; sourceTree = ""; }; - D11D57F12237C663000D3CC0 /* WorkAndEpisodeQuoteView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = WorkAndEpisodeQuoteView.xib; sourceTree = ""; }; - D11D57F32237D3DD000D3CC0 /* Entity+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Entity+Extension.swift"; sourceTree = ""; }; - D11D57F62237D9B9000D3CC0 /* RootTabBarReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootTabBarReactor.swift; sourceTree = ""; }; - D11D57F82237DE1A000D3CC0 /* WorkQuoteView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkQuoteView.swift; sourceTree = ""; }; - D11D57FA2237DE2D000D3CC0 /* WorkQuoteView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = WorkQuoteView.xib; sourceTree = ""; }; - D11D57FC2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityMultipleRecordTableViewCell.swift; sourceTree = ""; }; - D11D57FD2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ActivityMultipleRecordTableViewCell.xib; sourceTree = ""; }; - D123D0D022D8F2D500C023F1 /* PanModal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PanModal.framework; path = Carthage/Build/iOS/PanModal.framework; sourceTree = ""; }; - D123F250217CBD2500AE38FD /* Portannict.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Portannict.app; sourceTree = BUILT_PRODUCTS_DIR; }; - D123F253217CBD2500AE38FD /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - D123F25A217CBD2600AE38FD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - D123F25D217CBD2600AE38FD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - D123F25F217CBD2600AE38FD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D127410C217CCB4000DD09C2 /* ReactorKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReactorKit.framework; path = Carthage/Build/iOS/ReactorKit.framework; sourceTree = ""; }; - D127410D217CCB4000DD09C2 /* ReactorKitRuntime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReactorKitRuntime.framework; path = Carthage/Build/iOS/ReactorKitRuntime.framework; sourceTree = ""; }; - D1274111217CCCF000DD09C2 /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxCocoa.framework; path = Carthage/Build/iOS/RxCocoa.framework; sourceTree = ""; }; - D1274112217CCCF000DD09C2 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/iOS/RxSwift.framework; sourceTree = ""; }; - D127411C217CDEF300DD09C2 /* BaseService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseService.swift; sourceTree = ""; }; - D127411E217CDF1000DD09C2 /* ServiceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServiceProvider.swift; sourceTree = ""; }; - D12E01E822E38FFA000D3C10 /* RecordEpisodeTableViewCellReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordEpisodeTableViewCellReactor.swift; sourceTree = ""; }; - D12E01EA22E39EA5000D3C10 /* PlaceholderTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceholderTextView.swift; sourceTree = ""; }; - D12E01EC22E41B52000D3C10 /* EpisodeAPIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeAPIService.swift; sourceTree = ""; }; - D136EA6D2180439B00BA08EA /* UserDefaultsRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsRepository.swift; sourceTree = ""; }; - D136EA7021807E9500BA08EA /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; }; - D136EA732180885400BA08EA /* UserDefaultsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsService.swift; sourceTree = ""; }; - D13C668422EB75490087284B /* EpisodeCountSectionTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeCountSectionTableViewCell.swift; sourceTree = ""; }; - D13C668522EB75490087284B /* EpisodeCountSectionTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EpisodeCountSectionTableViewCell.xib; sourceTree = ""; }; - D13F2EB9222E2B0700509FB2 /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; - D14ED3B622E8857200437DF9 /* RatingStatusTagsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingStatusTagsView.swift; sourceTree = ""; }; - D14ED3B822E8859000437DF9 /* RatingStatusTagsView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RatingStatusTagsView.xib; sourceTree = ""; }; - D15A325022EAE8CB00DDC404 /* PaddingLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaddingLabel.swift; sourceTree = ""; }; - D15A325222EAF30D00DDC404 /* PKHUD.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PKHUD.framework; path = Carthage/Build/iOS/PKHUD.framework; sourceTree = ""; }; - D16193C122E8581400B6BEBC /* RecordStatusTagButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordStatusTagButton.swift; sourceTree = ""; }; - D16193C322E8585100B6BEBC /* RecordStatusTagButton.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RecordStatusTagButton.xib; sourceTree = ""; }; - D1621DE82186214900819D93 /* RootTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootTabBarController.swift; sourceTree = ""; }; - D1621DEA2186218200819D93 /* RootTabBarController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = RootTabBarController.storyboard; sourceTree = ""; }; - D1621DED2186262300819D93 /* RecordViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordViewReactor.swift; sourceTree = ""; }; - D1621DEE2186262300819D93 /* RecordViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = RecordViewController.storyboard; sourceTree = ""; }; - D1621DEF2186262300819D93 /* RecordViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordViewController.swift; sourceTree = ""; }; - D1621DF42186273200819D93 /* ProfileViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewReactor.swift; sourceTree = ""; }; - D1621DF52186273200819D93 /* ProfileViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = ProfileViewController.storyboard; sourceTree = ""; }; - D1621DF62186273200819D93 /* ProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewController.swift; sourceTree = ""; }; - D1621DFC21862BA600819D93 /* PostRecordViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostRecordViewReactor.swift; sourceTree = ""; }; - D1621DFD21862BA600819D93 /* PostRecordViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = PostRecordViewController.storyboard; sourceTree = ""; }; - D1621DFE21862BA600819D93 /* PostRecordViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostRecordViewController.swift; sourceTree = ""; }; - D1621E0221862C3B00819D93 /* SemiModalPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SemiModalPresentationController.swift; sourceTree = ""; }; - D1621E0421862F4500819D93 /* PostRecordTransitioningDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostRecordTransitioningDelegate.swift; sourceTree = ""; }; - D1621E092186BB9300819D93 /* GetViewerWatchingEpisodes.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewerWatchingEpisodes.graphql; sourceTree = ""; }; - D16308FF21F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeasonWorkCollectionViewCell.swift; sourceTree = ""; }; - D163090021F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SeasonWorkCollectionViewCell.xib; sourceTree = ""; }; - D165C9B521B0E051002E8FFA /* UINavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UINavigationBar.swift; sourceTree = ""; }; - D165C9B821B0E306002E8FFA /* SearchViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewReactor.swift; sourceTree = ""; }; - D165C9BA21B0E596002E8FFA /* SearchWorks.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorks.graphql; sourceTree = ""; }; - D165C9BC21B158EA002E8FFA /* SearchResultViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultViewReactor.swift; sourceTree = ""; }; - D165C9BE21B15B36002E8FFA /* SearchWorksByTitle.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorksByTitle.graphql; sourceTree = ""; }; - D165C9C021B15EE9002E8FFA /* SearchResultWorkCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SearchResultWorkCell.xib; sourceTree = ""; }; - D165C9C221B15EF1002E8FFA /* SearchResultWorkCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultWorkCell.swift; sourceTree = ""; }; - D16C5984224A6824004F0983 /* AssociatedObjectStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssociatedObjectStore.swift; sourceTree = ""; }; - D18389B221B05137004A072C /* SearchResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultViewController.swift; sourceTree = ""; }; - D18389B421B05146004A072C /* SearchResultViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SearchResultViewController.storyboard; sourceTree = ""; }; - D18447C521BD021D00CF44AB /* GradationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradationView.swift; sourceTree = ""; }; - D1891A5F22E1FA5400D26512 /* UpdateStatus.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = UpdateStatus.graphql; sourceTree = ""; }; - D1891A6122E1FDD900D26512 /* WorkAPIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkAPIService.swift; sourceTree = ""; }; - D19718CC217E29D2009B5F0F /* RxApollo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RxApollo.swift; sourceTree = ""; }; - D19718CE217E2ED3009B5F0F /* ObservableType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObservableType.swift; sourceTree = ""; }; - D1AF34B9219B0921004DD229 /* GetViewerWorks.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewerWorks.graphql; sourceTree = ""; }; - D1AF34BB219B3CBF004DD229 /* GetViewerInfo.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewerInfo.graphql; sourceTree = ""; }; - D1AF34BF219B4042004DD229 /* UserInfoTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInfoTableViewCell.swift; sourceTree = ""; }; - D1AF34C0219B4042004DD229 /* UserInfoTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UserInfoTableViewCell.xib; sourceTree = ""; }; - D1AF34C3219B4202004DD229 /* UITableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITableView.swift; sourceTree = ""; }; - D1AF34C5219B4238004DD229 /* UICollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UICollectionView.swift; sourceTree = ""; }; - D1B27B2722525B01007F8B95 /* ParentPagerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParentPagerViewController.swift; sourceTree = ""; }; - D1B27B2922525B57007F8B95 /* StatusBarManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarManager.swift; sourceTree = ""; }; - D1B27B3222526ECF007F8B95 /* SearchWorksByID.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorksByID.graphql; sourceTree = ""; }; - D1B4C83522E983EB000C2741 /* RecordStatusTagView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordStatusTagView.swift; sourceTree = ""; }; - D1B4C83722E983F5000C2741 /* RecordStatusTagView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RecordStatusTagView.xib; sourceTree = ""; }; - D1B4C83922E987BB000C2741 /* EpisodeRecordTitleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeRecordTitleTableViewCell.swift; sourceTree = ""; }; - D1B4C83A22E987BB000C2741 /* EpisodeRecordTitleTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EpisodeRecordTitleTableViewCell.xib; sourceTree = ""; }; - D1B4C83D22E98AD8000C2741 /* ActivityRecordTableViewCellReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityRecordTableViewCellReactor.swift; sourceTree = ""; }; - D1B4C83F22E98B0C000C2741 /* ActivityStatusTableViewCellReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusTableViewCellReactor.swift; sourceTree = ""; }; - D1B4C84122E98B35000C2741 /* ActivityMultipleRecordTableViewCellReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityMultipleRecordTableViewCellReactor.swift; sourceTree = ""; }; - D1B4C84522E9BDD5000C2741 /* CALayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CALayer.swift; sourceTree = ""; }; - D1B4C84722E9C55B000C2741 /* SwiftyAttributedString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftyAttributedString.swift; sourceTree = ""; }; - D1B4C84B22E9C83B000C2741 /* PortannictExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortannictExtension.swift; sourceTree = ""; }; - D1B4C84D22E9CBA3000C2741 /* SwiftyDate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftyDate.swift; sourceTree = ""; }; - D1B4C84F22EAC713000C2741 /* TermSettingViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermSettingViewReactor.swift; sourceTree = ""; }; - D1B4C85022EAC713000C2741 /* TermSettingViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = TermSettingViewController.storyboard; sourceTree = ""; }; - D1B4C85122EAC713000C2741 /* TermSettingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermSettingViewController.swift; sourceTree = ""; }; - D1B4F160217EB3770011BAFF /* RootViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewController.swift; sourceTree = ""; }; - D1B4F162217EB38D0011BAFF /* RootViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = RootViewController.storyboard; sourceTree = ""; }; - D1B4F164217EB4080011BAFF /* RootViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewReactor.swift; sourceTree = ""; }; - D1B4F166217EB5E60011BAFF /* RxUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RxUIViewController.swift; sourceTree = ""; }; - D1B4F169217EB8380011BAFF /* LoginViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; }; - D1B4F16B217EB8580011BAFF /* LoginViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LoginViewController.storyboard; sourceTree = ""; }; - D1B4F16E217EB8A70011BAFF /* StoryboardLoadable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryboardLoadable.swift; sourceTree = ""; }; - D1B4F170217EB8D50011BAFF /* NSObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSObject.swift; sourceTree = ""; }; - D1B4F173217EBB940011BAFF /* UIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIView.swift; sourceTree = ""; }; - D1B4F175217EBF200011BAFF /* LoginViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewReactor.swift; sourceTree = ""; }; - D1B4F177217EC0970011BAFF /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - D1BCB8C1217F327400B84F82 /* NotificationCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationCenter.swift; sourceTree = ""; }; - D1BCB8C3217F350A00B84F82 /* HTTPClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; - D1BCB8C8217F3E8300B84F82 /* OauthTokenRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OauthTokenRequest.swift; sourceTree = ""; }; - D1BCB8CA217F451C00B84F82 /* UIApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIApplication.swift; sourceTree = ""; }; - D1BCB8CD217F469800B84F82 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; - D1BCB8D0217F46B600B84F82 /* HomeViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = HomeViewController.storyboard; sourceTree = ""; }; - D1BCB8D2217F4A3D00B84F82 /* HomeViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewReactor.swift; sourceTree = ""; }; - D1BD1F7322E8C11700A260F5 /* EpisodeRecordTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EpisodeRecordTableViewCell.swift; sourceTree = ""; }; - D1BD1F7422E8C11700A260F5 /* EpisodeRecordTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EpisodeRecordTableViewCell.xib; sourceTree = ""; }; - D1BD1F7722E8C13800A260F5 /* EpisodeRecordsViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = EpisodeRecordsViewController.storyboard; sourceTree = ""; }; - D1BD1F7822E8C13800A260F5 /* EpisodeRecordsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EpisodeRecordsViewController.swift; sourceTree = ""; wrapsLines = 0; }; - D1BD1F7922E8C13800A260F5 /* EpisodeRecordsViewReactor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EpisodeRecordsViewReactor.swift; sourceTree = ""; }; - D1BD1F8D22E8C85600A260F5 /* GetRecords.graphql */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GetRecords.graphql; sourceTree = ""; }; - D1C53C0721EE4C7700DA9A1D /* XLPagerTabStrip.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XLPagerTabStrip.framework; path = Carthage/Build/iOS/XLPagerTabStrip.framework; sourceTree = ""; }; - D1C53C0A21EE4F1200DA9A1D /* ProfileWorksViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileWorksViewReactor.swift; sourceTree = ""; }; - D1C53C0B21EE4F1200DA9A1D /* ProfileWorksViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = ProfileWorksViewController.storyboard; sourceTree = ""; }; - D1C53C1021EEFA0300DA9A1D /* ProfileHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileHeaderView.swift; sourceTree = ""; }; - D1C53C1221EEFA1900DA9A1D /* ProfileHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProfileHeaderView.xib; sourceTree = ""; }; - D1C53C1521EEFB9A00DA9A1D /* NibOwnerLoadable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NibOwnerLoadable.swift; sourceTree = ""; }; - D1C53C1721EF38E700DA9A1D /* ProfileWorksViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileWorksViewController.swift; sourceTree = ""; }; - D1C53C1E21EF733200DA9A1D /* ProfileWorkCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileWorkCollectionViewCell.swift; sourceTree = ""; }; - D1C53C1F21EF733200DA9A1D /* ProfileWorkCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProfileWorkCollectionViewCell.xib; sourceTree = ""; }; - D1CEDD7422F14BA000EC2D94 /* DeleteRecord.graphql */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DeleteRecord.graphql; sourceTree = ""; }; - D1E66AB42204B8ED0058BFEF /* Carthage */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Carthage; sourceTree = ""; }; - D1E66AB62204B9000058BFEF /* SnapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SnapKit.framework; path = Carthage/Build/iOS/SnapKit.framework; sourceTree = ""; }; - D1E6DEEA22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeTitleTableViewCell.swift; sourceTree = ""; }; - D1E6DEEB22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EpisodeTitleTableViewCell.xib; sourceTree = ""; }; - D1E6DEEE22E0EC2B003D03F0 /* WorkHeaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderTableViewCell.swift; sourceTree = ""; }; - D1E6DEEF22E0EC2B003D03F0 /* WorkHeaderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = WorkHeaderTableViewCell.xib; sourceTree = ""; }; - D1E6DEF222E3712F003D03F0 /* Season.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Season.swift; sourceTree = ""; }; - D1F553A5224B8132001D971C /* ButtonMarkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonMarkView.swift; sourceTree = ""; }; - D1F553A7224B8944001D971C /* ChildPagerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChildPagerViewController.swift; sourceTree = ""; }; - D1F87E4122E176C1001EB9DD /* WorkStatusButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkStatusButton.swift; sourceTree = ""; }; - D1F87E4322E176E2001EB9DD /* WorkStatusButton.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = WorkStatusButton.xib; sourceTree = ""; }; - D1F87E4522E17C28001EB9DD /* Taptic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Taptic.swift; sourceTree = ""; }; - D1F9143221AA6A61006986A1 /* Kingfisher.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Kingfisher.framework; path = Carthage/Build/iOS/Kingfisher.framework; sourceTree = ""; }; - D1F9143421AA74FA006986A1 /* NSMutableParagraphStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSMutableParagraphStyle.swift; sourceTree = ""; }; - D1F9143621AA756F006986A1 /* UIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageView.swift; sourceTree = ""; }; - D1F9143821AA75A0006986A1 /* URLConvertible.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLConvertible.swift; sourceTree = ""; }; - D1F9143A21AA75C8006986A1 /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; - D1F9143C21AA7615006986A1 /* CGSize.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CGSize.swift; sourceTree = ""; }; - D1F9143E21AA7B4F006986A1 /* UserWorksWithSectionTitleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserWorksWithSectionTitleCell.swift; sourceTree = ""; }; - D1F9143F21AA7B4F006986A1 /* UserWorksWithSectionTitleCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UserWorksWithSectionTitleCell.xib; sourceTree = ""; }; - D1F9144821AA7FD2006986A1 /* UserWorkCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserWorkCollectionViewCell.swift; sourceTree = ""; }; - D1F9144921AA7FD2006986A1 /* UserWorkCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UserWorkCollectionViewCell.xib; sourceTree = ""; }; - D1F9144C21AA85C1006986A1 /* UIColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = ""; }; - D1F9ED0221B2748500AB3DAE /* Hero.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Hero.framework; path = Carthage/Build/iOS/Hero.framework; sourceTree = ""; }; - D1F9ED0521B274CD00AB3DAE /* WorkViewReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkViewReactor.swift; sourceTree = ""; }; - D1F9ED0621B274CD00AB3DAE /* WorkViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = WorkViewController.storyboard; sourceTree = ""; }; - D1F9ED0721B274CD00AB3DAE /* WorkViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkViewController.swift; sourceTree = ""; }; - D1FFB57821AE867B001099E6 /* StatusState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusState.swift; sourceTree = ""; }; - D1FFB57A21AE8696001099E6 /* GraphQLSelectionSet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphQLSelectionSet.swift; sourceTree = ""; }; - D1FFB57E21AE98DD001099E6 /* AnnictGraphQL.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictGraphQL.swift; sourceTree = ""; }; - D1FFB58221AECF04001099E6 /* RecordEpisodeTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordEpisodeTableViewCell.swift; sourceTree = ""; }; - D1FFB58321AECF04001099E6 /* RecordEpisodeTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RecordEpisodeTableViewCell.xib; sourceTree = ""; }; - D1FFB58621AED24F001099E6 /* Ornament.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Ornament.swift; sourceTree = ""; }; - D1FFB58921AEE427001099E6 /* CreateRecord.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = CreateRecord.graphql; sourceTree = ""; }; - D1FFB58B21AEE904001099E6 /* EpisodeDetails.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = EpisodeDetails.graphql; sourceTree = ""; }; - D1FFB58D21AEF3A3001099E6 /* RxUIScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RxUIScrollView.swift; sourceTree = ""; }; - D1FFB58F21AEF644001099E6 /* ActionClosurable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionClosurable.swift; sourceTree = ""; }; - D1FFB59121B03A13001099E6 /* Apollo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Apollo.framework; path = Carthage/Build/iOS/Apollo.framework; sourceTree = ""; }; - D1FFB59221B03A13001099E6 /* ApolloSQLite.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApolloSQLite.framework; path = Carthage/Build/iOS/ApolloSQLite.framework; sourceTree = ""; }; - D1FFB59521B03A4D001099E6 /* SQLite.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SQLite.framework; path = Carthage/Build/iOS/SQLite.framework; sourceTree = ""; }; - D1FFB59921B04693001099E6 /* SearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewController.swift; sourceTree = ""; }; - D1FFB59B21B046BE001099E6 /* SearchViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SearchViewController.storyboard; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - D123F24D217CBD2500AE38FD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D15A325322EAF30D00DDC404 /* PKHUD.framework in Frameworks */, - D123D0D122D8F2D500C023F1 /* PanModal.framework in Frameworks */, - D1E66AB72204B9000058BFEF /* SnapKit.framework in Frameworks */, - D1C53C0821EE4C7700DA9A1D /* XLPagerTabStrip.framework in Frameworks */, - D1F9ED0321B2748500AB3DAE /* Hero.framework in Frameworks */, - D1FFB59621B03A4D001099E6 /* SQLite.framework in Frameworks */, - D1FFB59321B03A14001099E6 /* Apollo.framework in Frameworks */, - D1FFB59421B03A14001099E6 /* ApolloSQLite.framework in Frameworks */, - D1F9143321AA6A61006986A1 /* Kingfisher.framework in Frameworks */, - C917CDDC4A16A7899040361A /* Pods_Annict_for_iOS.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - D1199E462238FF2E00531BF3 /* BlurKit */ = { - isa = PBXGroup; - children = ( - D1199E482238FF3E00531BF3 /* BlurKit.swift */, - D1199E472238FF3E00531BF3 /* BlurView.swift */, - ); - path = BlurKit; - sourceTree = ""; - }; - D11D57E62237BBF8000D3CC0 /* Views */ = { - isa = PBXGroup; - children = ( - D11D57E72237BC3B000D3CC0 /* ActivityRecordTableViewCell.swift */, - D1B4C83D22E98AD8000C2741 /* ActivityRecordTableViewCellReactor.swift */, - D11D57E82237BC3B000D3CC0 /* ActivityRecordTableViewCell.xib */, - D11D57EB2237C1DA000D3CC0 /* ActivityStatusTableViewCell.swift */, - D1B4C83F22E98B0C000C2741 /* ActivityStatusTableViewCellReactor.swift */, - D11D57EC2237C1DA000D3CC0 /* ActivityStatusTableViewCell.xib */, - D11D57FC2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.swift */, - D1B4C84122E98B35000C2741 /* ActivityMultipleRecordTableViewCellReactor.swift */, - D11D57FD2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.xib */, - D11D57EF2237C5F3000D3CC0 /* WorkAndEpisodeQuoteView.swift */, - D11D57F12237C663000D3CC0 /* WorkAndEpisodeQuoteView.xib */, - D11D57F82237DE1A000D3CC0 /* WorkQuoteView.swift */, - D11D57FA2237DE2D000D3CC0 /* WorkQuoteView.xib */, - D1199E4B22390FA200531BF3 /* HomeTitleTableViewCell.swift */, - D1199E4C22390FA200531BF3 /* HomeTitleTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - D123F247217CBD2500AE38FD = { - isa = PBXGroup; - children = ( - D123F252217CBD2500AE38FD /* Annict-for-iOS */, - D123F251217CBD2500AE38FD /* Products */, - D127410B217CCB3F00DD09C2 /* Frameworks */, - F195834130FE771215D4C51F /* Pods */, - ); - sourceTree = ""; - }; - D123F251217CBD2500AE38FD /* Products */ = { - isa = PBXGroup; - children = ( - D123F250217CBD2500AE38FD /* Portannict.app */, - ); - name = Products; - sourceTree = ""; - }; - D123F252217CBD2500AE38FD /* Annict-for-iOS */ = { - isa = PBXGroup; - children = ( - D1B4F15D217EB3080011BAFF /* Commons */, - D1B4F15E217EB33E0011BAFF /* Modules */, - D123F25A217CBD2600AE38FD /* Assets.xcassets */, - D123F25C217CBD2600AE38FD /* LaunchScreen.storyboard */, - D123F25F217CBD2600AE38FD /* Info.plist */, - ); - path = "Annict-for-iOS"; - sourceTree = ""; - }; - D127410B217CCB3F00DD09C2 /* Frameworks */ = { - isa = PBXGroup; - children = ( - D15A325222EAF30D00DDC404 /* PKHUD.framework */, - D123D0D022D8F2D500C023F1 /* PanModal.framework */, - D1E66AB62204B9000058BFEF /* SnapKit.framework */, - D1E66AB42204B8ED0058BFEF /* Carthage */, - D1C53C0721EE4C7700DA9A1D /* XLPagerTabStrip.framework */, - D1F9ED0221B2748500AB3DAE /* Hero.framework */, - D1FFB59521B03A4D001099E6 /* SQLite.framework */, - D1FFB59121B03A13001099E6 /* Apollo.framework */, - D1FFB59221B03A13001099E6 /* ApolloSQLite.framework */, - D1F9143221AA6A61006986A1 /* Kingfisher.framework */, - D1274111217CCCF000DD09C2 /* RxCocoa.framework */, - D1274112217CCCF000DD09C2 /* RxSwift.framework */, - D127410C217CCB4000DD09C2 /* ReactorKit.framework */, - D127410D217CCB4000DD09C2 /* ReactorKitRuntime.framework */, - 0567F169D06E4DEA7E47513F /* Pods_Annict_for_iOS.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - D130207F21B8065E00CE2F3A /* Views */ = { - isa = PBXGroup; - children = ( - D1E6DEEA22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.swift */, - D1E6DEEB22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.xib */, - D1E6DEEE22E0EC2B003D03F0 /* WorkHeaderTableViewCell.swift */, - D1E6DEEF22E0EC2B003D03F0 /* WorkHeaderTableViewCell.xib */, - D1F87E4122E176C1001EB9DD /* WorkStatusButton.swift */, - D1F87E4322E176E2001EB9DD /* WorkStatusButton.xib */, - D13C668422EB75490087284B /* EpisodeCountSectionTableViewCell.swift */, - D13C668522EB75490087284B /* EpisodeCountSectionTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - D136EA6F21807DD600BA08EA /* Services */ = { - isa = PBXGroup; - children = ( - D127411C217CDEF300DD09C2 /* BaseService.swift */, - D127411E217CDF1000DD09C2 /* ServiceProvider.swift */, - D136EA7021807E9500BA08EA /* APIService.swift */, - D1891A6122E1FDD900D26512 /* WorkAPIService.swift */, - D12E01EC22E41B52000D3C10 /* EpisodeAPIService.swift */, - D136EA732180885400BA08EA /* UserDefaultsService.swift */, - ); - path = Services; - sourceTree = ""; - }; - D14ED3B522E863C000437DF9 /* Views */ = { - isa = PBXGroup; - children = ( - D14ED3B622E8857200437DF9 /* RatingStatusTagsView.swift */, - D14ED3B822E8859000437DF9 /* RatingStatusTagsView.xib */, - ); - path = Views; - sourceTree = ""; - }; - D14ED3BA22E8AD2F00437DF9 /* EpisodeRecords */ = { - isa = PBXGroup; - children = ( - D1BD1F7722E8C13800A260F5 /* EpisodeRecordsViewController.storyboard */, - D1BD1F7822E8C13800A260F5 /* EpisodeRecordsViewController.swift */, - D1BD1F7922E8C13800A260F5 /* EpisodeRecordsViewReactor.swift */, - D1D4CD2B22E8BC5700BCBE82 /* Cells */, - ); - path = EpisodeRecords; - sourceTree = ""; - }; - D16193C022E857E500B6BEBC /* Views */ = { - isa = PBXGroup; - children = ( - D16193C122E8581400B6BEBC /* RecordStatusTagButton.swift */, - D16193C322E8585100B6BEBC /* RecordStatusTagButton.xib */, - D1B4C83522E983EB000C2741 /* RecordStatusTagView.swift */, - D1B4C83722E983F5000C2741 /* RecordStatusTagView.xib */, - CFBBD25A2397D5D400127DCB /* RadioButton.swift */, - ); - path = Views; - sourceTree = ""; - }; - D1621DE72186211C00819D93 /* TabBar */ = { - isa = PBXGroup; - children = ( - D1621DE82186214900819D93 /* RootTabBarController.swift */, - D11D57F62237D9B9000D3CC0 /* RootTabBarReactor.swift */, - D1621DEA2186218200819D93 /* RootTabBarController.storyboard */, - ); - path = TabBar; - sourceTree = ""; - }; - D1621DEC218625DB00819D93 /* Record */ = { - isa = PBXGroup; - children = ( - D1FFB58121AECECF001099E6 /* Views */, - D1FFB58021AECEC1001099E6 /* ViewControllers */, - D1621DFB21862B8E00819D93 /* PostRecord */, - D1621DFA21862B5700819D93 /* Transition */, - ); - path = Record; - sourceTree = ""; - }; - D1621DF32186272300819D93 /* Profile */ = { - isa = PBXGroup; - children = ( - D1C53C0921EE4EE600DA9A1D /* ProfileWorks */, - D1AF34BE219B400C004DD229 /* Views */, - D1AF34BD219B3FE5004DD229 /* ViewControllers */, - ); - path = Profile; - sourceTree = ""; - }; - D1621DFA21862B5700819D93 /* Transition */ = { - isa = PBXGroup; - children = ( - D1621E0221862C3B00819D93 /* SemiModalPresentationController.swift */, - D1621E0421862F4500819D93 /* PostRecordTransitioningDelegate.swift */, - ); - path = Transition; - sourceTree = ""; - }; - D1621DFB21862B8E00819D93 /* PostRecord */ = { - isa = PBXGroup; - children = ( - D14ED3B522E863C000437DF9 /* Views */, - D1621DFC21862BA600819D93 /* PostRecordViewReactor.swift */, - D1621DFD21862BA600819D93 /* PostRecordViewController.storyboard */, - D1621DFE21862BA600819D93 /* PostRecordViewController.swift */, - D12E01EA22E39EA5000D3C10 /* PlaceholderTextView.swift */, - ); - path = PostRecord; - sourceTree = ""; - }; - D1621E062186BB4B00819D93 /* GraphQL */ = { - isa = PBXGroup; - children = ( - D11D57E42237B4E9000D3CC0 /* API.swift */, - D11D57E02237B1B0000D3CC0 /* Fragment.graphql */, - D1FFB58B21AEE904001099E6 /* EpisodeDetails.graphql */, - D1FFB58921AEE427001099E6 /* CreateRecord.graphql */, - D1621E092186BB9300819D93 /* GetViewerWatchingEpisodes.graphql */, - D1AF34B9219B0921004DD229 /* GetViewerWorks.graphql */, - D1AF34BB219B3CBF004DD229 /* GetViewerInfo.graphql */, - D165C9BA21B0E596002E8FFA /* SearchWorks.graphql */, - D165C9BE21B15B36002E8FFA /* SearchWorksByTitle.graphql */, - D13F2EB9222E2B0700509FB2 /* GetFollowingActivities.graphql */, - D1B27B3222526ECF007F8B95 /* SearchWorksByID.graphql */, - D1891A5F22E1FA5400D26512 /* UpdateStatus.graphql */, - D1BD1F8D22E8C85600A260F5 /* GetRecords.graphql */, - D1CEDD7422F14BA000EC2D94 /* DeleteRecord.graphql */, - ); - path = GraphQL; - sourceTree = ""; - }; - D16308FE21F0ED7500EE3009 /* SeasonWorksCollectionViewCell */ = { - isa = PBXGroup; - children = ( - D16308FF21F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.swift */, - D163090021F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.xib */, - ); - path = SeasonWorksCollectionViewCell; - sourceTree = ""; - }; - D165C9B721B0E242002E8FFA /* Views */ = { - isa = PBXGroup; - children = ( - D165C9C021B15EE9002E8FFA /* SearchResultWorkCell.xib */, - D165C9C221B15EF1002E8FFA /* SearchResultWorkCell.swift */, - D16308FE21F0ED7500EE3009 /* SeasonWorksCollectionViewCell */, - ); - path = Views; - sourceTree = ""; - }; - D19718CB217E29BA009B5F0F /* Rx */ = { - isa = PBXGroup; - children = ( - D19718CC217E29D2009B5F0F /* RxApollo.swift */, - D19718CE217E2ED3009B5F0F /* ObservableType.swift */, - D1B4F166217EB5E60011BAFF /* RxUIViewController.swift */, - D1FFB58D21AEF3A3001099E6 /* RxUIScrollView.swift */, - D18447C521BD021D00CF44AB /* GradationView.swift */, - ); - path = Rx; - sourceTree = ""; - }; - D1AF34BD219B3FE5004DD229 /* ViewControllers */ = { - isa = PBXGroup; - children = ( - D1621DF42186273200819D93 /* ProfileViewReactor.swift */, - D1621DF52186273200819D93 /* ProfileViewController.storyboard */, - D1621DF62186273200819D93 /* ProfileViewController.swift */, - ); - path = ViewControllers; - sourceTree = ""; - }; - D1AF34BE219B400C004DD229 /* Views */ = { - isa = PBXGroup; - children = ( - D1AF34BF219B4042004DD229 /* UserInfoTableViewCell.swift */, - D1AF34C0219B4042004DD229 /* UserInfoTableViewCell.xib */, - D1F9143E21AA7B4F006986A1 /* UserWorksWithSectionTitleCell.swift */, - D1F9143F21AA7B4F006986A1 /* UserWorksWithSectionTitleCell.xib */, - D1F9144821AA7FD2006986A1 /* UserWorkCollectionViewCell.swift */, - D1F9144921AA7FD2006986A1 /* UserWorkCollectionViewCell.xib */, - D1C53C1021EEFA0300DA9A1D /* ProfileHeaderView.swift */, - D1C53C1221EEFA1900DA9A1D /* ProfileHeaderView.xib */, - D1F553A5224B8132001D971C /* ButtonMarkView.swift */, - ); - path = Views; - sourceTree = ""; - }; - D1B4F15D217EB3080011BAFF /* Commons */ = { - isa = PBXGroup; - children = ( - D123F253217CBD2500AE38FD /* AppDelegate.swift */, - D1199E462238FF2E00531BF3 /* BlurKit */, - D136EA6F21807DD600BA08EA /* Services */, - D1BCB8C5217F3E0900B84F82 /* API */, - D19718CB217E29BA009B5F0F /* Rx */, - D1B4F16D217EB8980011BAFF /* Extensions */, - D1FFB58821AED26B001099E6 /* UIKit */, - D1C53C1421EEFB7B00DA9A1D /* Protocol */, - D16193C022E857E500B6BEBC /* Views */, - D1B4F177217EC0970011BAFF /* Constants.swift */, - D118FCBE217F1D1C00FD5B82 /* NotificationName.swift */, - D1BCB8C1217F327400B84F82 /* NotificationCenter.swift */, - D136EA6D2180439B00BA08EA /* UserDefaultsRepository.swift */, - D1B27B2722525B01007F8B95 /* ParentPagerViewController.swift */, - D1B27B2922525B57007F8B95 /* StatusBarManager.swift */, - D1F87E4522E17C28001EB9DD /* Taptic.swift */, - D1B4C84722E9C55B000C2741 /* SwiftyAttributedString.swift */, - D1B4C84B22E9C83B000C2741 /* PortannictExtension.swift */, - ); - path = Commons; - sourceTree = ""; - }; - D1B4F15E217EB33E0011BAFF /* Modules */ = { - isa = PBXGroup; - children = ( - D14ED3BA22E8AD2F00437DF9 /* EpisodeRecords */, - D1F9ED0421B274C000AB3DAE /* Work */, - D1FFB59721B0464F001099E6 /* Search */, - D1621DF32186272300819D93 /* Profile */, - D1621DEC218625DB00819D93 /* Record */, - D1621DE72186211C00819D93 /* TabBar */, - D1BCB8CC217F468800B84F82 /* Home */, - D1B4F15F217EB3510011BAFF /* Root */, - D1B4F168217EB81A0011BAFF /* Login */, - ); - path = Modules; - sourceTree = ""; - }; - D1B4F15F217EB3510011BAFF /* Root */ = { - isa = PBXGroup; - children = ( - D1B4F160217EB3770011BAFF /* RootViewController.swift */, - D1B4F164217EB4080011BAFF /* RootViewReactor.swift */, - D1B4F162217EB38D0011BAFF /* RootViewController.storyboard */, - ); - path = Root; - sourceTree = ""; - }; - D1B4F168217EB81A0011BAFF /* Login */ = { - isa = PBXGroup; - children = ( - D1B4F169217EB8380011BAFF /* LoginViewController.swift */, - D1B4F16B217EB8580011BAFF /* LoginViewController.storyboard */, - D1B4F175217EBF200011BAFF /* LoginViewReactor.swift */, - ); - path = Login; - sourceTree = ""; - }; - D1B4F16D217EB8980011BAFF /* Extensions */ = { - isa = PBXGroup; - children = ( - D1BCB8CA217F451C00B84F82 /* UIApplication.swift */, - D1B4F16E217EB8A70011BAFF /* StoryboardLoadable.swift */, - D1B4F170217EB8D50011BAFF /* NSObject.swift */, - D1B4F173217EBB940011BAFF /* UIView.swift */, - D1AF34C3219B4202004DD229 /* UITableView.swift */, - D1AF34C5219B4238004DD229 /* UICollectionView.swift */, - D1F9143421AA74FA006986A1 /* NSMutableParagraphStyle.swift */, - D1F9143621AA756F006986A1 /* UIImageView.swift */, - D1F9143821AA75A0006986A1 /* URLConvertible.swift */, - D1F9143A21AA75C8006986A1 /* UIImage.swift */, - D1F9143C21AA7615006986A1 /* CGSize.swift */, - D1F9144C21AA85C1006986A1 /* UIColor.swift */, - D1FFB57821AE867B001099E6 /* StatusState.swift */, - D1FFB57A21AE8696001099E6 /* GraphQLSelectionSet.swift */, - D1FFB57E21AE98DD001099E6 /* AnnictGraphQL.swift */, - D165C9B521B0E051002E8FFA /* UINavigationBar.swift */, - D11D57F32237D3DD000D3CC0 /* Entity+Extension.swift */, - D1199E4F223E994700531BF3 /* CachePolicy.swift */, - D1B4C84522E9BDD5000C2741 /* CALayer.swift */, - D1B4C84D22E9CBA3000C2741 /* SwiftyDate.swift */, - CFBBD25C2397EB7C00127DCB /* Icon.swift */, - CFBBD25E2397ECC800127DCB /* HUD.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - D1BCB8C5217F3E0900B84F82 /* API */ = { - isa = PBXGroup; - children = ( - D1BCB8C3217F350A00B84F82 /* HTTPClient.swift */, - D1621E062186BB4B00819D93 /* GraphQL */, - D1BCB8C6217F3E1100B84F82 /* REST */, - ); - path = API; - sourceTree = ""; - }; - D1BCB8C6217F3E1100B84F82 /* REST */ = { - isa = PBXGroup; - children = ( - D1BCB8C8217F3E8300B84F82 /* OauthTokenRequest.swift */, - ); - path = REST; - sourceTree = ""; - }; - D1BCB8CC217F468800B84F82 /* Home */ = { - isa = PBXGroup; - children = ( - D11D57E62237BBF8000D3CC0 /* Views */, - D1BCB8CD217F469800B84F82 /* HomeViewController.swift */, - D1BCB8D2217F4A3D00B84F82 /* HomeViewReactor.swift */, - D1BCB8D0217F46B600B84F82 /* HomeViewController.storyboard */, - ); - path = Home; - sourceTree = ""; - }; - D1C53C0921EE4EE600DA9A1D /* ProfileWorks */ = { - isa = PBXGroup; - children = ( - D1C53C1921EF40DE00DA9A1D /* Views */, - D1C53C0A21EE4F1200DA9A1D /* ProfileWorksViewReactor.swift */, - D1C53C0B21EE4F1200DA9A1D /* ProfileWorksViewController.storyboard */, - D1C53C1721EF38E700DA9A1D /* ProfileWorksViewController.swift */, - D1F553A7224B8944001D971C /* ChildPagerViewController.swift */, - ); - path = ProfileWorks; - sourceTree = ""; - }; - D1C53C1421EEFB7B00DA9A1D /* Protocol */ = { - isa = PBXGroup; - children = ( - D1C53C1521EEFB9A00DA9A1D /* NibOwnerLoadable.swift */, - D16C5984224A6824004F0983 /* AssociatedObjectStore.swift */, - ); - path = Protocol; - sourceTree = ""; - }; - D1C53C1921EF40DE00DA9A1D /* Views */ = { - isa = PBXGroup; - children = ( - D1C53C1E21EF733200DA9A1D /* ProfileWorkCollectionViewCell.swift */, - D1C53C1F21EF733200DA9A1D /* ProfileWorkCollectionViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - D1D4CD2B22E8BC5700BCBE82 /* Cells */ = { - isa = PBXGroup; - children = ( - D1BD1F7322E8C11700A260F5 /* EpisodeRecordTableViewCell.swift */, - D1BD1F7422E8C11700A260F5 /* EpisodeRecordTableViewCell.xib */, - D1B4C83922E987BB000C2741 /* EpisodeRecordTitleTableViewCell.swift */, - D1B4C83A22E987BB000C2741 /* EpisodeRecordTitleTableViewCell.xib */, - ); - path = Cells; - sourceTree = ""; - }; - D1F9ED0421B274C000AB3DAE /* Work */ = { - isa = PBXGroup; - children = ( - D130207F21B8065E00CE2F3A /* Views */, - D1F9ED0521B274CD00AB3DAE /* WorkViewReactor.swift */, - D1F9ED0621B274CD00AB3DAE /* WorkViewController.storyboard */, - D1F9ED0721B274CD00AB3DAE /* WorkViewController.swift */, - ); - path = Work; - sourceTree = ""; - }; - D1FFB58021AECEC1001099E6 /* ViewControllers */ = { - isa = PBXGroup; - children = ( - D1621DED2186262300819D93 /* RecordViewReactor.swift */, - D1621DEE2186262300819D93 /* RecordViewController.storyboard */, - D1621DEF2186262300819D93 /* RecordViewController.swift */, - ); - path = ViewControllers; - sourceTree = ""; - }; - D1FFB58121AECECF001099E6 /* Views */ = { - isa = PBXGroup; - children = ( - D1FFB58221AECF04001099E6 /* RecordEpisodeTableViewCell.swift */, - D1FFB58321AECF04001099E6 /* RecordEpisodeTableViewCell.xib */, - D12E01E822E38FFA000D3C10 /* RecordEpisodeTableViewCellReactor.swift */, - ); - path = Views; - sourceTree = ""; - }; - D1FFB58821AED26B001099E6 /* UIKit */ = { - isa = PBXGroup; - children = ( - D1FFB58621AED24F001099E6 /* Ornament.swift */, - D1FFB58F21AEF644001099E6 /* ActionClosurable.swift */, - D15A325022EAE8CB00DDC404 /* PaddingLabel.swift */, - ); - path = UIKit; - sourceTree = ""; - }; - D1FFB59721B0464F001099E6 /* Search */ = { - isa = PBXGroup; - children = ( - D165C9B721B0E242002E8FFA /* Views */, - D1FFB59821B04680001099E6 /* ViewControllers */, - D1E6DEF222E3712F003D03F0 /* Season.swift */, - ); - path = Search; - sourceTree = ""; - }; - D1FFB59821B04680001099E6 /* ViewControllers */ = { - isa = PBXGroup; - children = ( - D1FFB59921B04693001099E6 /* SearchViewController.swift */, - D1FFB59B21B046BE001099E6 /* SearchViewController.storyboard */, - D165C9B821B0E306002E8FFA /* SearchViewReactor.swift */, - D18389B221B05137004A072C /* SearchResultViewController.swift */, - D18389B421B05146004A072C /* SearchResultViewController.storyboard */, - D165C9BC21B158EA002E8FFA /* SearchResultViewReactor.swift */, - D1B4C84F22EAC713000C2741 /* TermSettingViewReactor.swift */, - D1B4C85022EAC713000C2741 /* TermSettingViewController.storyboard */, - D1B4C85122EAC713000C2741 /* TermSettingViewController.swift */, - ); - path = ViewControllers; - sourceTree = ""; - }; - F195834130FE771215D4C51F /* Pods */ = { - isa = PBXGroup; - children = ( - CC015B11081256C34FD80D74 /* Pods-Annict-for-iOS.debug.xcconfig */, - 4C866238FE78822277121123 /* Pods-Annict-for-iOS.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - D123F24F217CBD2500AE38FD /* Annict-for-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = D123F262217CBD2600AE38FD /* Build configuration list for PBXNativeTarget "Annict-for-iOS" */; - buildPhases = ( - 8797AD0F81A25331BCAE0A81 /* [CP] Check Pods Manifest.lock */, - D1274122217E09D600DD09C2 /* ShellScript */, - D123F24C217CBD2500AE38FD /* Sources */, - D123F24D217CBD2500AE38FD /* Frameworks */, - D123F24E217CBD2500AE38FD /* Resources */, - D1274110217CCB5700DD09C2 /* ShellScript */, - 5BB8CB85AAE678D01443BD23 /* [CP] Embed Pods Frameworks */, - D136EA662180424600BA08EA /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Annict-for-iOS"; - productName = "Annict-for-iOS"; - productReference = D123F250217CBD2500AE38FD /* Portannict.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - D123F248217CBD2500AE38FD /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1000; - LastUpgradeCheck = 1000; - ORGANIZATIONNAME = "Yuto Akiba"; - TargetAttributes = { - D123F24F217CBD2500AE38FD = { - CreatedOnToolsVersion = 10.0; - LastSwiftMigration = 1020; - }; - }; - }; - buildConfigurationList = D123F24B217CBD2500AE38FD /* Build configuration list for PBXProject "Annict-for-iOS" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = D123F247217CBD2500AE38FD; - productRefGroup = D123F251217CBD2500AE38FD /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - D123F24F217CBD2500AE38FD /* Annict-for-iOS */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - D123F24E217CBD2500AE38FD /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D1FFB58A21AEE427001099E6 /* CreateRecord.graphql in Resources */, - D1BD1F8F22E8C8B600A260F5 /* GetRecords.graphql in Resources */, - D11D57FB2237DE2D000D3CC0 /* WorkQuoteView.xib in Resources */, - D123F25E217CBD2600AE38FD /* LaunchScreen.storyboard in Resources */, - D1621DEB2186218200819D93 /* RootTabBarController.storyboard in Resources */, - D1F9ED0921B274CD00AB3DAE /* WorkViewController.storyboard in Resources */, - D1BD1F7622E8C11700A260F5 /* EpisodeRecordTableViewCell.xib in Resources */, - D1B4C83C22E987BB000C2741 /* EpisodeRecordTitleTableViewCell.xib in Resources */, - D18389B521B05146004A072C /* SearchResultViewController.storyboard in Resources */, - D1FFB59C21B046BE001099E6 /* SearchViewController.storyboard in Resources */, - D1AF34C2219B4042004DD229 /* UserInfoTableViewCell.xib in Resources */, - D1BCB8D1217F46B600B84F82 /* HomeViewController.storyboard in Resources */, - D13C668722EB75490087284B /* EpisodeCountSectionTableViewCell.xib in Resources */, - D1891A6022E1FA5400D26512 /* UpdateStatus.graphql in Resources */, - D1C53C2121EF733200DA9A1D /* ProfileWorkCollectionViewCell.xib in Resources */, - D14ED3B922E8859000437DF9 /* RatingStatusTagsView.xib in Resources */, - D1199E4E22390FA200531BF3 /* HomeTitleTableViewCell.xib in Resources */, - D1621E0021862BA600819D93 /* PostRecordViewController.storyboard in Resources */, - D11D57EA2237BC3B000D3CC0 /* ActivityRecordTableViewCell.xib in Resources */, - D1E6DEF122E0EC2B003D03F0 /* WorkHeaderTableViewCell.xib in Resources */, - D1BD1F7A22E8C13800A260F5 /* EpisodeRecordsViewController.storyboard in Resources */, - D11D57F22237C663000D3CC0 /* WorkAndEpisodeQuoteView.xib in Resources */, - D165C9C121B15EE9002E8FFA /* SearchResultWorkCell.xib in Resources */, - D163090221F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.xib in Resources */, - D1B4C83822E983F5000C2741 /* RecordStatusTagView.xib in Resources */, - D1FFB58521AECF04001099E6 /* RecordEpisodeTableViewCell.xib in Resources */, - D1621E0A2186BB9300819D93 /* GetViewerWatchingEpisodes.graphql in Resources */, - D11D57FF2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.xib in Resources */, - D1B4C85322EAC713000C2741 /* TermSettingViewController.storyboard in Resources */, - D1AF34BC219B3CBF004DD229 /* GetViewerInfo.graphql in Resources */, - D1CEDD7522F14BA000EC2D94 /* DeleteRecord.graphql in Resources */, - D1F9144B21AA7FD2006986A1 /* UserWorkCollectionViewCell.xib in Resources */, - D1F9144121AA7B4F006986A1 /* UserWorksWithSectionTitleCell.xib in Resources */, - D11D57EE2237C1DA000D3CC0 /* ActivityStatusTableViewCell.xib in Resources */, - D1F87E4422E176E2001EB9DD /* WorkStatusButton.xib in Resources */, - D1E6DEED22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.xib in Resources */, - D11D57E12237B1B0000D3CC0 /* Fragment.graphql in Resources */, - D16193C422E8585100B6BEBC /* RecordStatusTagButton.xib in Resources */, - D1FFB58C21AEE904001099E6 /* EpisodeDetails.graphql in Resources */, - D1621DF12186262300819D93 /* RecordViewController.storyboard in Resources */, - D1C53C1321EEFA1900DA9A1D /* ProfileHeaderView.xib in Resources */, - D1C53C0E21EE4F1200DA9A1D /* ProfileWorksViewController.storyboard in Resources */, - D165C9BF21B15B36002E8FFA /* SearchWorksByTitle.graphql in Resources */, - D165C9BB21B0E596002E8FFA /* SearchWorks.graphql in Resources */, - D1AF34BA219B0921004DD229 /* GetViewerWorks.graphql in Resources */, - D1621DF82186273200819D93 /* ProfileViewController.storyboard in Resources */, - D13F2EBA222E2B0700509FB2 /* GetFollowingActivities.graphql in Resources */, - D123F25B217CBD2600AE38FD /* Assets.xcassets in Resources */, - D1B27B3322526ECF007F8B95 /* SearchWorksByID.graphql in Resources */, - D1B4F16C217EB8580011BAFF /* LoginViewController.storyboard in Resources */, - D1B4F163217EB38D0011BAFF /* RootViewController.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 5BB8CB85AAE678D01443BD23 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-Annict-for-iOS/Pods-Annict-for-iOS-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Keys/Keys.framework", - "${BUILT_PRODUCTS_DIR}/ReactorKit/ReactorKit.framework", - "${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework", - "${BUILT_PRODUCTS_DIR}/RxGesture/RxGesture.framework", - "${BUILT_PRODUCTS_DIR}/RxRelay/RxRelay.framework", - "${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework", - "${BUILT_PRODUCTS_DIR}/SPStorkController/SPStorkController.framework", - "${BUILT_PRODUCTS_DIR}/SwiftDate/SwiftDate.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - ); - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Keys.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactorKit.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCocoa.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxGesture.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxRelay.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SPStorkController.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftDate.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Annict-for-iOS/Pods-Annict-for-iOS-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 8797AD0F81A25331BCAE0A81 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Annict-for-iOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - D1274110217CCB5700DD09C2 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "$(SRCROOT)/Carthage/Build/iOS/Apollo.framework", - "$(SRCROOT)/Carthage/Build/iOS/Kingfisher.framework", - "$(SRCROOT)/Carthage/Build/iOS/ApolloSQLite.framework", - "$(SRCROOT)/Carthage/Build/iOS/SQLite.framework", - "$(SRCROOT)/Carthage/Build/iOS/Hero.framework", - "$(SRCROOT)/Carthage/Build/iOS/XLPagerTabStrip.framework", - "$(SRCROOT)/Carthage/Build/iOS/SnapKit.framework", - "$(SRCROOT)/Carthage/Build/iOS/PanModal.framework", - "$(SRCROOT)/Carthage/Build/iOS/PKHUD.framework", - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/usr/local/bin/carthage copy-frameworks\n"; - }; - D1274122217E09D600DD09C2 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "SCRIPT_PATH=\"${SRCROOT}/Carthage/Checkouts/apollo-ios/scripts\"\ncd \"${SRCROOT}/${TARGET_NAME}\"\n\"${SCRIPT_PATH}\"/run-bundled-codegen.sh codegen:generate --target=swift --includes=./**/*.graphql --localSchemaFile=\"schema.json\" API.swift\n"; - }; - D136EA662180424600BA08EA /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "sh ${SRCROOT}/Share/Templates/copy_templates.sh\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - D123F24C217CBD2500AE38FD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D1B4F161217EB3770011BAFF /* RootViewController.swift in Sources */, - D1C53C1821EF38E800DA9A1D /* ProfileWorksViewController.swift in Sources */, - D1BCB8CB217F451C00B84F82 /* UIApplication.swift in Sources */, - D1E6DEF022E0EC2B003D03F0 /* WorkHeaderTableViewCell.swift in Sources */, - D1B4F16A217EB8380011BAFF /* LoginViewController.swift in Sources */, - D1621DF22186262300819D93 /* RecordViewController.swift in Sources */, - D16193C222E8581400B6BEBC /* RecordStatusTagButton.swift in Sources */, - D1F9144D21AA85C1006986A1 /* UIColor.swift in Sources */, - D1B4F16F217EB8A70011BAFF /* StoryboardLoadable.swift in Sources */, - D165C9BD21B158EA002E8FFA /* SearchResultViewReactor.swift in Sources */, - D1B4C84C22E9C83B000C2741 /* PortannictExtension.swift in Sources */, - D1B27B2822525B01007F8B95 /* ParentPagerViewController.swift in Sources */, - D1AF34C4219B4202004DD229 /* UITableView.swift in Sources */, - D1B4C83B22E987BB000C2741 /* EpisodeRecordTitleTableViewCell.swift in Sources */, - D1B4F171217EB8D50011BAFF /* NSObject.swift in Sources */, - D13C668622EB75490087284B /* EpisodeCountSectionTableViewCell.swift in Sources */, - D1F553A6224B8132001D971C /* ButtonMarkView.swift in Sources */, - D1199E50223E994700531BF3 /* CachePolicy.swift in Sources */, - D127411F217CDF1000DD09C2 /* ServiceProvider.swift in Sources */, - D165C9B621B0E051002E8FFA /* UINavigationBar.swift in Sources */, - D1B4C85422EAC713000C2741 /* TermSettingViewController.swift in Sources */, - D1BCB8C2217F327400B84F82 /* NotificationCenter.swift in Sources */, - D18389B321B05137004A072C /* SearchResultViewController.swift in Sources */, - D1BD1F7B22E8C13800A260F5 /* EpisodeRecordsViewController.swift in Sources */, - D1BD1F7C22E8C13800A260F5 /* EpisodeRecordsViewReactor.swift in Sources */, - D1C53C1621EEFB9A00DA9A1D /* NibOwnerLoadable.swift in Sources */, - D136EA742180885400BA08EA /* UserDefaultsService.swift in Sources */, - D1FFB57921AE867B001099E6 /* StatusState.swift in Sources */, - CFBBD25F2397ECC800127DCB /* HUD.swift in Sources */, - D14ED3B722E8857200437DF9 /* RatingStatusTagsView.swift in Sources */, - D1F9143D21AA7615006986A1 /* CGSize.swift in Sources */, - CFBBD25D2397EB7C00127DCB /* Icon.swift in Sources */, - D19718CD217E29D2009B5F0F /* RxApollo.swift in Sources */, - D1BCB8D3217F4A3D00B84F82 /* HomeViewReactor.swift in Sources */, - D1621DFF21862BA600819D93 /* PostRecordViewReactor.swift in Sources */, - CFBBD25B2397D5D400127DCB /* RadioButton.swift in Sources */, - D1BCB8CE217F469800B84F82 /* HomeViewController.swift in Sources */, - D1621DF92186273200819D93 /* ProfileViewController.swift in Sources */, - D1E6DEEC22E0EA8F003D03F0 /* EpisodeTitleTableViewCell.swift in Sources */, - D1B4C85222EAC713000C2741 /* TermSettingViewReactor.swift in Sources */, - D1F87E4222E176C1001EB9DD /* WorkStatusButton.swift in Sources */, - D1621DF02186262300819D93 /* RecordViewReactor.swift in Sources */, - D1B4C84022E98B0C000C2741 /* ActivityStatusTableViewCellReactor.swift in Sources */, - D1621DF72186273200819D93 /* ProfileViewReactor.swift in Sources */, - D11D57F42237D3DD000D3CC0 /* Entity+Extension.swift in Sources */, - D127411D217CDEF300DD09C2 /* BaseService.swift in Sources */, - D12E01E922E38FFA000D3C10 /* RecordEpisodeTableViewCellReactor.swift in Sources */, - D1C53C2021EF733200DA9A1D /* ProfileWorkCollectionViewCell.swift in Sources */, - D1621E0521862F4500819D93 /* PostRecordTransitioningDelegate.swift in Sources */, - D1F9144A21AA7FD2006986A1 /* UserWorkCollectionViewCell.swift in Sources */, - D1F9ED0821B274CD00AB3DAE /* WorkViewReactor.swift in Sources */, - D1B4C84822E9C55B000C2741 /* SwiftyAttributedString.swift in Sources */, - D11D57E92237BC3B000D3CC0 /* ActivityRecordTableViewCell.swift in Sources */, - D118FCBF217F1D1C00FD5B82 /* NotificationName.swift in Sources */, - D11D57F92237DE1A000D3CC0 /* WorkQuoteView.swift in Sources */, - D1199E492238FF3F00531BF3 /* BlurView.swift in Sources */, - D12E01ED22E41B52000D3C10 /* EpisodeAPIService.swift in Sources */, - D1FFB57B21AE8696001099E6 /* GraphQLSelectionSet.swift in Sources */, - D163090121F0ED9F00EE3009 /* SeasonWorkCollectionViewCell.swift in Sources */, - D11D57E52237B4E9000D3CC0 /* API.swift in Sources */, - D1BD1F7522E8C11700A260F5 /* EpisodeRecordTableViewCell.swift in Sources */, - D1FFB58721AED24F001099E6 /* Ornament.swift in Sources */, - D1621DE92186214900819D93 /* RootTabBarController.swift in Sources */, - D1F553A8224B8944001D971C /* ChildPagerViewController.swift in Sources */, - D1C53C1121EEFA0300DA9A1D /* ProfileHeaderView.swift in Sources */, - D1FFB59021AEF644001099E6 /* ActionClosurable.swift in Sources */, - D11D57ED2237C1DA000D3CC0 /* ActivityStatusTableViewCell.swift in Sources */, - D1199E4A2238FF3F00531BF3 /* BlurKit.swift in Sources */, - D15A325122EAE8CB00DDC404 /* PaddingLabel.swift in Sources */, - D1F87E4622E17C28001EB9DD /* Taptic.swift in Sources */, - D1E6DEF322E3712F003D03F0 /* Season.swift in Sources */, - D1BCB8C9217F3E8300B84F82 /* OauthTokenRequest.swift in Sources */, - D1621E0321862C3B00819D93 /* SemiModalPresentationController.swift in Sources */, - D1B4C83622E983EB000C2741 /* RecordStatusTagView.swift in Sources */, - D1B4C84622E9BDD5000C2741 /* CALayer.swift in Sources */, - D18447C621BD021D00CF44AB /* GradationView.swift in Sources */, - D165C9C321B15EF1002E8FFA /* SearchResultWorkCell.swift in Sources */, - D1B4C83E22E98AD8000C2741 /* ActivityRecordTableViewCellReactor.swift in Sources */, - D136EA6E2180439B00BA08EA /* UserDefaultsRepository.swift in Sources */, - D1F9143721AA756F006986A1 /* UIImageView.swift in Sources */, - D1B4C84E22E9CBA3000C2741 /* SwiftyDate.swift in Sources */, - D1F9144021AA7B4F006986A1 /* UserWorksWithSectionTitleCell.swift in Sources */, - D1B4F165217EB4080011BAFF /* RootViewReactor.swift in Sources */, - D1FFB58421AECF04001099E6 /* RecordEpisodeTableViewCell.swift in Sources */, - D1FFB58E21AEF3A3001099E6 /* RxUIScrollView.swift in Sources */, - D1F9143B21AA75C8006986A1 /* UIImage.swift in Sources */, - D1891A6222E1FDD900D26512 /* WorkAPIService.swift in Sources */, - D1B4C84222E98B35000C2741 /* ActivityMultipleRecordTableViewCellReactor.swift in Sources */, - D1B4F176217EBF200011BAFF /* LoginViewReactor.swift in Sources */, - D1B4F167217EB5E60011BAFF /* RxUIViewController.swift in Sources */, - D1FFB59A21B04693001099E6 /* SearchViewController.swift in Sources */, - D1F9ED0A21B274CD00AB3DAE /* WorkViewController.swift in Sources */, - D16C5985224A6824004F0983 /* AssociatedObjectStore.swift in Sources */, - D1B4F178217EC0970011BAFF /* Constants.swift in Sources */, - D123F254217CBD2500AE38FD /* AppDelegate.swift in Sources */, - D11D57F72237D9B9000D3CC0 /* RootTabBarReactor.swift in Sources */, - D1B27B2A22525B57007F8B95 /* StatusBarManager.swift in Sources */, - D1BCB8C4217F350A00B84F82 /* HTTPClient.swift in Sources */, - D12E01EB22E39EA5000D3C10 /* PlaceholderTextView.swift in Sources */, - D1C53C0D21EE4F1200DA9A1D /* ProfileWorksViewReactor.swift in Sources */, - D1F9143521AA74FA006986A1 /* NSMutableParagraphStyle.swift in Sources */, - D1B4F174217EBB940011BAFF /* UIView.swift in Sources */, - D1FFB57F21AE98DD001099E6 /* AnnictGraphQL.swift in Sources */, - D1199E4D22390FA200531BF3 /* HomeTitleTableViewCell.swift in Sources */, - D1AF34C6219B4238004DD229 /* UICollectionView.swift in Sources */, - D1AF34C1219B4042004DD229 /* UserInfoTableViewCell.swift in Sources */, - D1621E0121862BA600819D93 /* PostRecordViewController.swift in Sources */, - D11D57F02237C5F3000D3CC0 /* WorkAndEpisodeQuoteView.swift in Sources */, - D11D57FE2237E40E000D3CC0 /* ActivityMultipleRecordTableViewCell.swift in Sources */, - D165C9B921B0E306002E8FFA /* SearchViewReactor.swift in Sources */, - D136EA7121807E9500BA08EA /* APIService.swift in Sources */, - D19718CF217E2ED3009B5F0F /* ObservableType.swift in Sources */, - D1F9143921AA75A0006986A1 /* URLConvertible.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - D123F25C217CBD2600AE38FD /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - D123F25D217CBD2600AE38FD /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - D123F260217CBD2600AE38FD /* 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; - 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.0; - 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; - }; - D123F261217CBD2600AE38FD /* 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"; - 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.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - D123F263217CBD2600AE38FD /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CC015B11081256C34FD80D74 /* Pods-Annict-for-iOS.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - BUNDLE_DISPLAY_NAME_PREFIX = "Debug-"; - BUNDLE_ID_SUFFIX = .debug; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = V8AZ23YEL4; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - INFOPLIST_FILE = "Annict-for-iOS/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 2.2.0; - OTHER_SWIFT_FLAGS = "$(inherited) -D DEBUG"; - PRODUCT_BUNDLE_IDENTIFIER = "com.YutoAkiba.Annict-for-iOS"; - PRODUCT_NAME = Portannict; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - D123F264217CBD2600AE38FD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4C866238FE78822277121123 /* Pods-Annict-for-iOS.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - BUNDLE_DISPLAY_NAME_PREFIX = ""; - BUNDLE_ID_SUFFIX = ""; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = V8AZ23YEL4; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - INFOPLIST_FILE = "Annict-for-iOS/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 2.2.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.YutoAkiba.Annict-for-iOS"; - PRODUCT_NAME = Portannict; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - D123F24B217CBD2500AE38FD /* Build configuration list for PBXProject "Annict-for-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D123F260217CBD2600AE38FD /* Debug */, - D123F261217CBD2600AE38FD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D123F262217CBD2600AE38FD /* Build configuration list for PBXNativeTarget "Annict-for-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D123F263217CBD2600AE38FD /* Debug */, - D123F264217CBD2600AE38FD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = D123F248217CBD2500AE38FD /* Project object */; -} diff --git a/Annict-for-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Annict-for-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 24919e6d..00000000 --- a/Annict-for-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Annict-for-iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Annict-for-iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/Annict-for-iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Annict-for-iOS.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/Annict-for-iOS.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index 0c67376e..00000000 --- a/Annict-for-iOS.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Annict-for-iOS.xcodeproj/project.xcworkspace/xcuserdata/yuto.xcuserdatad/UserInterfaceState.xcuserstate b/Annict-for-iOS.xcodeproj/project.xcworkspace/xcuserdata/yuto.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index fe7938e7a764fdedb1e108650898320e5c0daed5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69280 zcmeEv2VfINx9-l&7Oi$Att4t_2Gc?Al>~6Z!SrBybBry(!Pv&KDIp|#(tGa}8v`Ld zr1#!?Af)%+3+W-@o!QmOmTeO9C-+|NdoM%=YiFl?bLPycGmGo0t0E04DLVurP=N`e zAPI7pL%WpE8MrE3AE~OXnKQ6<@nPYLhREE3<@FWIs_^R>0~>1V0s=XH!}WgY9zhXY zLU*Bu&{H@-=p}@NBq3Qy5mJRTAzjE2CI}OSNy21diZE4}CLAJ67fOX0!c3uDSS(Zs zl|oo(6jlkVg*C!j;c#J{0K(D2iNZ<3$--H}Il@K4Wy0mc6~ZQAt8j;Kr*M~Ww{VYe zuW+Amzwos1jPR`RobbG`LwHGeRd`MKMEF$rO!!*(M)+R%L)b%Pq7x7Cldhy2Ie_#f z{m1~4NQRK%WCR&WLgZjFo|KRYWFnbFCX*>-Dw#$OA=AlBGKnW8`u21bLD?MV=-* z$V+4=d6~RT-XZUj&&e0$OY#-@j*3*GGF7OHs?<$2s?#2{Cq01nqP=MX9YTlF6q-uY zXeP~~2hn_bFda`z=u|q59zv(nIdm?aM;FmD8m7x=HC;hh({=PTdOE$BUP3RWm(j~< zGu=wBqF2*v=*{#NdMmw~-a{XvkI~2J)ASko0)3J0q%YG~=&STi`YwHsenLN`U(;Xc zuk<&%n+Ytyf~*Vc%DS=ctOx7K2C>0x2ph_Vu@K8(nJkNqVPjbVD`X{X0-M67vT5uP zHl594^Vod0lr3Xb>@c>Rt!8W3T6Q>F$ABHpPGqOC3)qG1BDRsWuubf0b`86c-No)^ z_pry<*5>YJK~4pr{cHbcj7Mb zdvUiUOKz#RG*lWU4VOkpBc+g(DP>97(rBqb8ZVVd6QpU*PCq(#zV zsX|&It(1AbhJEVK0d!+}Zhor}($EByG zXQUUT7p0xj%hD^-8`3+{yV94^SJKzgZ_;k*cj*slk1WZutjS&FZgPU$UmhY4m6POj zd9*x69xs>3v*kJRTzQ^6UtSxmK=|SIYJB8u>{1DA|;cmrs_@l+Tqfl`oSo zm#>nqmambom9LYpmv4~omLHNImLHd&ke`&FmEV%zmfw-zmEV)!mp_odlXuDA%Rk6J z%0J1w<=^E$6sousRWXz`<)(nsm93{Vo4fyy9dtdghXD+NlSQlyMiij{+v@k)s@ zL7A+SDl?S1$~1uZLZs0ce@^RJ?47B^`h$y*PE^nT_3qVcKzh~+4YO- zSJ!W@-LBtNrmCu2)l|RQRqdtrQwOPo)nRI?nyrpj4^|IRr>hIp#cGARL_I=XuO6u$ zrJ5?JN2|xE$EwGv=c(tb7pNDi7pYs+tJQ1N8`K-sThv?CJJq|?`_%i@r`2cFXVvG_ z=hYqROX}h9+5 z?e60axs%+bJI$T$&T!|r4|0!om$)apr?_XhE8SstmHRMvjl0&p&V7V?z57V_ zQSM{h$GT5;pW?p6eX090_vP*@+#B3Y?q>HE_m%Fg?rYuGx$kt}>%PzZi2Eh?PWNl> zx7=^LKXiZU{>;7G{k!`Q_a05qh(iaN9srE$LJ^MC+nx{XY1$d7wDJhSLiMJ zCVjJhgMOpFO}|OMO}|UOTYpr4Qh!Q+PJdqCp}(ZRtG}neuYaI_sDG+|qyMb`qW|iV zJ&MQWQ9W*t*VEP0$J5s{+%v*6(i8F|dD1+&o>86yJqLM4d&YQ*JqLTndlq>Xdn!Cj zJmlbGGMv&*h$G&t}ino*O;eJhyu8 z_T1}v*z>sOSHW(4 zop+b_C-2YR-QM4Q#7BLyPw{C!-Pgm{(|3Tcm#?=k!8gP=)R*E*^`-g7_{RG3eEGft zU$JkpZ;EfKZ?}%wTjE>lTjs0st?)JYj_|Gb9qBvScZ%;+-)X+neP{bF@?Gq^ z#CNH$#ka|Kqi>tW4MuOq#2`(1C4`>@kWU;!I)@FGNu`` zjWXj$OV8^;;P8z&g&80Q-28Rr`p7?&8$#zy06;~L{y;|}9a z<1XWF;~wJy<8kA8;|1eQ<1OQD;~nE&<3r;M<9p)=<3~UBGr#DU{IcKe_xl6>1N^=G zz5PS|!~DbjBm5)%DgJE#Sbv^>l7F&)ihrtqntz6WzQ4j>=@0u?`s@7>e}li#zt(U1 zPxPPUKiPl2{{sJo{)_w<`!Dxz@?Yz}&VRlCF8|&Bd;ItM@AE(8f71Vyf4hH&|0Vys z{`dUv`#OFJjsIK!cm7@e-~77+u7DbF2eg15Faq7ZBLh7GJp%^>1_TlV0|P06 z)IeGwJ&+N|35*To1;z(T0y6`%02`yz~O;)fg=Lz0}wbdaAx4F zz}bPz16Kq#1eyZPfz5$y1GfZj4LlflDDZILk-(#YCj&18UJPsxydHQX@MhrCz-NKa z178Hb4162-IVc24kOsX$U(g8pgMnbTV4vWi;NakpV0thkm>J9pW(N-p76c~*CkAH+ z=LF{l=LP2n%YsXSOM}aTb-|Uv`rwhlqk?7-f=36B51tl0J$Qcbg5ZV0%Y#=0Hw14E z-V(eucw6xH;2ps`gLeh*4&D>IH+Wz0{@??_r-Dxhp9wx2+!=f)_-^pM;QPT3f*%II z4t^8-Huzm|ckuV%A6;Bs)Gm6L-d*~1>D#4WmxL|@yA0_vw9BwA$z3wL9N1-SmqWVD z>@us%ye{**l+7Gi(^y@-T~GzLpb5I*7rM=!Qkt|pyf!iq|BlM-vj$dFmq#Kkf=BQQ zKEW`l$xP9dT7-ZQ6uJmqO&LfA&=jDTnj_1Mfhn0q*{NAMnW41I%yFTNl+2t^eo8@V zC^I#uC_TM6b6jz13Kq-G&PdHJDlQ0RjLS_8Wu)b&hYAX^GeU(q>BU8bMLF4N<5IC$ zVNU9}w3MREP-;p+PADTcBRfCnN~{g#kjMshBQPHQlCW>ZWIlFi03I3=xK6q2a=C z(+eckOa_vM#d_kO5oN}hwk^ykUtCyQ(@nTF{%17^_d zVs*`EU#%8S6PJv zicBhBTie)BW*FF+(q*-)r%i4PTtKj7DirV_M z2iKR^Eh`EyZd|$)XUG`I$L7#S941BKNY&CB{%$GivJJDU!mAhXAFb~?U76WXg$1g@ zk%d^9-Ch2gA*c>OvxND=$QEI?Fh`gx%rkqLz0E#m-xgtkuuxbel$rg^baTGBfDb%j zPDO2HI0=W*IlxRb2bzO63pGM5u7x2&y$~@6n;|n9|D>3y zyxV-8jayS!UQ-#aENKX@h|H)DV^=x6v2MgYF91aW$NrE6a@j_;`A_0#~rJlG~Tzt0}r#upp9)kJlK*gSX)f^$6iep<9!%-W<{- z9AysW{D~KxRbGvFkgc~^}TrFH9Tq|5BTrb>UW|)~~mYHql zn7NyUZNg2~O1@PXVvaHowAS!Eqz0q}&Mj~PE0!15uBfXI<1((Tv0yDTy5l2@NN3cS z*F>st9xWb)79Br4+xL)#rUA`knphZhhZ4+YhCSvlo@DQRh z4pAvKM{g3|LsW(f9||9t2O};$%@T7iUoL|jZ1Ss-*;TIP(AN~#)=vqqo>tx%30Fo( z)YmEJEJJ&qaXDCg!XD7)!uDq23mnpTJ}6u>@k=aW(4d4=yX3dRt|s9-bAmbNCE*9* zN0d)~5`Gqb5q=eZ6Lt%~BkOl~!=&1Za=zRal~m$9RV}Fs*H0^NSZ0-2QC?Nk`gIv@ zf5^DjOkLu<+xpBD%t_{KbD}v5Cp5-Ir;vZ4H+(ifVZqR-cJL zq!vO5C5(vXWOJH1-7Ga{ZYK(Hq4uf@c|@Dn+Tu*BFXj|nR8x^4QWE&C(<)UYEkJ+wo${Z87E%i!+imf&bLgd_V&;Ds#Vvt@~Zk~VhCscMH#0@0p26?5Z-|~GnVn$ zO-PMC6JE5Q<@0Aw@m|(fGwl8jIH;0ut_cx)MI<1TOo*S%F?N>|NPiS6^Xu!&*EW*` z;mqJsd+h)0#{*%zK{81e$tF1@*IbA!b&*+S9%`1G zi_HqN(hQqRt`>%ngM{H^3>i!E_#eLUl00OwOK}M)UUM z_MG$8=`dt#X;v(^_-uK3O<1)_&O48ZzI$ zCWXtFhb!&f3m5jB>9Hr#J*v3Ac127Wb*io-^}LTO%}5i8m<_y-{-RkkVnS&v7bUBO zT^q?7vX&ffHk#|qBh5KZCF=}#*IsDPcAw^FeFbDBJroY|qtv#`l?%p6T^|IUUFE1YHf)a>6&8yBy@#W>IY z&8o`?;u}TbCFPCP4OT@QElx;LMJPs1$kd|6rtvBxTo8+AwUK$%mMYdpnkLVX=Q;U5 zOP({&FwblzFOV0_v&^&25euz~r`1MK0;;V+p~3D`RGHgb69dNVdHxA!E?yz8^SWOp zubJnV=Qfi!$eZSQ=7Z*lx%pgosKFIFV=`{FPWku9N1SfnCm)ax&GXF*%nLV?k8xf; zH7~-sxS!L_u()1Wa!M(xlQm1Nf5s$o)aa1k#Fve#679b~I9$6T+)%&P<_%w?j6%LK zFK%6byU1^7X&~Q|AIOj7C-O7-h5Tw>VqR)qW?pVyVQw&+wvgTAck&0>L-tTYso899 zG;c6(#y|I%_nIRXaE{BBdCp7c+kJ`(SUvW(DdPObZH7}U`$A7g#_8l)FXve+zl+IE z^POiir%x&~0(FgxtE(!KBDIb672y!qS)&s`Jv1P6YoT81qXzYxE#@Y3v$>^(25A=| zk9IS!G_S&mxSCJI0j1XKh4{8Tq@;)iuth709UoS3!-_TRq}nA*B4JeU`u}OE>Z%%K zR=qov;r%VHt**p5x2BBtAyO0VYi>1X+Q0WlkqtE*>knVT)}NV)7IVQL&RB=hkwUj- zI-HI$uQ9J}rXiYSUT0o!j-0s!YmY3dj9Q!~g=>~JEVHXlC(;IUra{`suQZ$Hp#1s^ zJgJ0H#LzxNFvBn0yUOFBq~;y zaUB%bay!v6vbt(XL&8u?J6eJUv0+Yy6X+yf;Y9P+COX-?%^WeWDmL*bR>kCAZj-Rt zm9sM@71rWj9d_|pkr+K$|SDBxr ztO>2*^AWOo7mC;vRmCgieH@jXoIDfvuE}@Jk#?19`1)OIKHR!Sj-bc> z70ac^(c|d}^hA0RJ(-?jK4Ly4N<~$R?HdnT+Zdrq-W8y z={e?O=HuoQ=94Y-JbFI%?n3h^^EvF_^ZOT8?jk_X6j1+mO?}XpU^hlo`n}+KbzRY?V1FCIQDxp7s>qOQenTK6*cWz}#uRV!jsBpmF+=P+xr+`7SEV zT{>I)QB{>bVX3OG;>=8KXE||7JZqJBy|WTgp0=IN5`Hn?MD8V&8Iw6r_}5s}qIliD z%m~Gh;+(hhRoeN&+-@zxH*M(N;`9Et`JOowrOeg^hYKyI{d#+!e#m!%56lmm=tt&< zd>QPU(B=@zXY>m$a=&Jt+eE)KKQc!+55A$_<4UIA((mXl^JDW9^V5y=2V5&ZnV)eH z+4bKbnbF@l5Pz7T$JhiTOhq=qC}T`y5|f$2T;><%m*!XI*XB3ox8`?S=y6PAI`c3u z^DzV2#4aEL5D|z31btk}{wAJ95oZUme#oO(FV>s&VSUZ-%^%Dk&7WFW0_RaI(frxs zQM>mm9>s>^6tNNJFHs)Fl8{HSWR}7|=C9^&)@P>C#SoogX0uTiYht;`ntpF)2eO0A zKg>NHSd+CDSe_+*`CX5;VNM!X2iB)wt$tR z;hZgGi&z;u6o>{y2jT(ZZDEU91x;dMAU+^n%{q_Ba!E^^+38d;a1m!b4@=Qbt1LZQ5P2^q`Nu7o{E!%UCr!d zb_x(=hrMFTBRid)-QE(y&Jl*Q^MIg%0muR7$Qaa#dB??>QP{=o@(wRwfiE`!>CIp6 zV~%W{p2WO!ceJ&iu+8jBKCmr7`ZckwKoYExp{yA*7_^$7*tNX>*D;*@{y+w{_J13@ zwL=$f!!FzbWB~6%B6cBW`bf+>Wv^j7FR(XhCVNXLor96imcM5fDom)u z%&)MWUAB!i!O@iVrqa)^t>ue#e3S z!S-;yrV{NfQ~hl2VkelLP$o)ppT7GR#D2BnQr(*F@%p;;wnJ*r>YJ98k&v31hM(M= zgxs|3gcSUfmYJ23keZQ^l7O!Il!Wx`=r`#ZsU4mVEXc|#O3ls84HXn&KuJd7xRg*% zaTW&2WaMB-OrLV z^h@YJAaUTJ!9#`)8$M!WC@DE5H7z|oGb=kMcU1a8qsJ_qQraeT275T8s-YU!t{+El zKbUSs!|*_lKF(Lg7}``?f$O{`20%#>hBYDO7Sy9j7(GHIk=8=9PBXzatEv!e4w~z-w*=Duw__(!ZbkRivdazV!!`kZb(yQ%@ zGf^q zyfBf>AQhOJa3R@@7Vrnjdzf6Xn=;ys4#1>=@n~~cOOM60fJ-qQU;`!ua2;|py%N&` zuA$e_8|h7$8gMJBe%61K*neY`P~3m?E+FaFG8c(RaWb7S30!s?@hc{riRg2qXLRQj zCDDVzx+sf^=n_@YEovf4Aelh2fMf&70g?-36p#bAh+fer3=#dJ%nkEE4g$2yB?Con znQ58jafcq$b`iueuK!mex5U2UP>kFX`-ur+e{q1AC=L_{iGxLSRE!2P2FO?-c|h`k z6aXm%QUqk&R&kgxTpS^e6hmT?n2hjZiDJGJKMk}u(EdON0v&02K1Rg*c#!@PaxOjD zdOylm_E)iAZMOt3_1_=8wb!6Chx$f~lrUO}S0fhozJ&;>~JZej` zf9ZtTtGB3)cjoVViT2`{+IQzs2TzrQU72`jT!fKWA%;=16f1$0Hi=7s%=p`u2JtYl zn#fqv8;@RRk;<-TP0+|P7K9B`1 z;`v+;7cT;IK%=n`$f5g{CN6H^;GmwcD5{E!EvSl%o3P9H0d$ySm+=SsGMqq1@fz`Z zOBENdGp_+sj=H#bqxlDr#T}G!qq&XHD&A@ft>T?P!j8~d*~S+)a69T%soJL(7G(_B9gcL=4t04lqcz}Uju0bvg$u}>5lb^+Z<-_ zgZOh>m#+AW_$v@xo9DDHo8KkUeg#WZ$dg1MYdGDV6As)*$m`xAjbeX!TSFUAZNz9BK465;0l)dO8uk+2{l_}7e@d=UH`}y zDUq*WX)utZ>=kV8FDrOj6l*C-O0`y`l)_ge;EI&e`HDQc!;18i!`hIXlq2PGlbCc6 zkW&EzMJ$`xDHiohW6&!pjg^oI90%mY7~x2T(m3SE5{e1OH%Z+QOU~3g^-K<$RJ*jQ zCf?R%ufk5;lhQ`jIZXlDiWWb1Rz#(=tOIMQ!d1K+$hn-g+~ly98sv;pEs*nC3A|o9{I6IGJx)48S}z?b z9mRYSaN*#5Ajn{D1hUz37i?=~EyqeHan^F2bi8zebRv)ofLsU!1%iuPq?0YyavG3J zY}Rtc{=!;p#Lwm6pat^MsBj=%h{Az%k#sTt0J#jv<@Qe$4|HRw1Add#VzZ--oE>f8 z>}WG*M@^luqbu98qpPKBgx{p=xZrU;kQQ?`kd6PbFHzb?q)pOI(#_H>(yh{MKsEu{ z0t5}5R|B~gr`rzAm5$=hK%6)34MeNaUU`;N{yy%A1ac+!M9#EIJ5L_ApIpVC%#Jby z=b7b{1ab{;rE{;OWO*flT-R9<+btfK^N1O5aJlr0;>;0pv~~Xot9azjG?cf=qGKlL?S}n`8#$zCW?O z%P0ml%Pv_3azBsmbTpr@<nB@>ks;@F z=n}dR>Baqj$>)g!4G?S&Yo zwwI@tV*{<4@j=>_@noO!y5xm&C1&%;i{vu-P`O-QETgW9W_(mgUIMZc$jd-p*(`_U zCGt{Xh+HKM0rD!4Hvl6olYzW#$1!)B;ng7tr+vOvH2Qq+IbDA0aq@Nyn3!|4A-xnR?f3TF*GjH zYN20A ze9l|w7R{*Ofw0^&TDYvX76b2a3en8nFs?kZc1Eq8%hV7)gm=a=f6ur2#j{I!fN#M1 ztrQb4G2zC}zp>eKL3u;PGEV0+!fP6=w`VND-*(D3%G>0d+R>InR1*bp^;bK)!Hs_4aEZ-|oN~ z?~(77@00K6-Yoe+>`8bH`f@6&8j7kSb=Bo-F~kU4n1i^j;2yXc4cIv#U-25goL`hb zV_aGB)ajG+XINHh`4Rcic7w48f^Rp=k8$@C--u!(jXiAleJcVrwKZY8>ZjzV%M6|> z75{b|kj?Tlyp6vo<UqP$n zaQSs%8(-_cpn%a6s27v^kRbX*t+hOPp<_m!o&I4lr*=td_~c*6=i6%{p)L>X^DJgD!vwFK^vsH^oYW=d=zDAv z_tKHwD}$9Z%-&Ll$UBr_%5Y_bGExaCNlLPkqND;f_)?;NpaGykpk07=1=X#^5R}OQ8~3kE11cpoWV1>08=OMl_L&~d*vMEJU-#)0uAj`;#Qo| zheuQJ)c0%*Be&u?luOtijN^#>FOK7A@0mbJ3%8S41jGIs!V&1#SqMi)W@cti=BNWP zgd;OAzu>w*5Z8f$9csJC4(j(G{wI+gPYLf}PW&D; zVg*P~JfN}{>4UKyAvJ*PYT z?{WomF}EmJC>xX}rCHgiv?!Z^;trYyG#x0O6qE@x3uyKhWs7npZktyrXmvnOIn4oj zF%RCj1dDSyj&uJpZOQ-t$>0s;Hst{f-cW8=?ojSj?h-~R_Xr0m_bK-S%>_CN=z%~F z!qcSaXcHxpF+j&|RUSmP`>^te@~HBd@;DEp1)9fs@Oq$U06iP%IY2M6!fOA$(2c)! z#7=97NG!1zd3)!F0Xc-VLwSqi@RG7qd0BZyc~yB$d0lx!c@t%}pO|A}X*eNOpGMCy(eY z!(2owNB8fCT67*$u@7+{o#pIy2)l^+o|Rp~FUk+-d!|#lWIwT^?^)T!eb35omhYKP z<-TV+sg31b`Q7$Cy9m%JQQtG29FwG@nSODx@o~Oqm#dBMnNH)XwG&Y4@}N;z`2o8X z^RT%5E_B{Dxlov%-sD1Ix|A>Wzmft&7tFYoiT)lu|WJ#1#Tzy^W%8ic;aU}|Q zu0cR&@>#Epx_(?kv16`bKxegfY@{pWuU$W`ELXNG$CYCziU38S^H87_{C^@_nIcYC z#<?&ahO*M+EK zxh`^D40I*X`j~>@y3EzoUi5FDy5PXR#dURuqPYLNuCu)kG{V({3qP<#3+J6}uA6xu zZvxu**IozL9j-g$EUvD5T=(JYwj08Q+vb|6(&T!G59eXmBS6;zUDrCC$6Zf%=p(uz zT+i8V2zog0W7VN?ecbMPxx+gT2}4}3aW@3=+9UWo3+|75=PlQ}s4BYNcD)1iNT5eG z3yWOub4P<|O+vf@$#MkzrSrjo>=W15XclyR>iW#}x$6tpm#(jX0??y@9s~4Pph%U+ zZ+3m-`quRwcJh0^FP;GOWWfAb?Cfd(%op(2*86|=$T(-vf2e|Eg;#MKJ27U3S4CAu z5>O?eC+&kTpyQcps;+utRr`RR+FEr$#hna;6Vw5` zTm6Ba*`y`{J&Vu#J{mmKA#H6Z>Tos0gRMFqO%nx2O;d4Wi!O8(MeuW@t3b^`(}9|+ zj#5#OJP+vkfN9Oni8AUKwV*v&bJIcVi84<0EqDdwGc$XgQ)}?WWO>T~r+JRXX82*u&6}1GYm6j#o|7Udk z|BR0R1)9Gpw$u9szyGK|(fjw0j1FgUE>$ssbE~>ctx^wDm#fw43bjV9RqKFW2J~{E zR{-4rvb+x)iU8^3>wbRWY9Rt$wAe{@+Hjr)t=@yV~ zHsf>5o0rYtFG~Bw?6Vwyc zlcb*NDSTJn0`y9t7`Su>(5uY1H>;lmu|V_@R@nS?5OxB-pk<<+%IV~to%rBAD`Z z+P4r_2GaxMy4S7|j5uVRVYO}gg zZBaJ?y%p%QK;HxU1u(>-O|X)B6|S`VfL>c>lywq0wQq;c;K`SR(o(F0>XJE$Bvsep z$dkF5F^M0_Y~$Fr)$8q6uP-wyI%)OqMQ={WB-Uj9qkU{?r!C)Xw|rxnQT~rxw&K9- zxYky3*~^IUu-m<<%qZ=o-F?G(->|*cZt0dXBiu<#e-GO>BiuW>f^}TF`hfZ<>Uipd z>O<2?2_H=jw9#M@ceXZy4Arpy4 z{a|nfE~8a=Dig+IB$gDk0v$UgCBA3eR8>$|UbBiHAKv!-P)i|JUqFReeG%y0=FEAO z>2;xu*`cf==X@!3r}_#PKVJrVZ z_s0ovZ>b-0PW86>j{2_pp8CG}0ni74J_z(7pbrB@SRUQ1ex!b^exiP=e#VuI$ACT# z^a-GtMfQwkcAHmQyP~+9pK?0C5P2sCxNtU)u?3tdgezy%)=lE4EkrRZLaYYb$M}^L z&8Us_)rP=1fo^hn9ag{}#tx5bZ3ZO*B*3bQFrK;|JsU7_>^IiHgt_Z-(5IB0nrk05 zss2c$X7wlaXP`KnPa%l;S(8JPmWMJ{Pn}mVcU~wxC)AKq?=Y#~)jw?cK5^{xc74$& zZt7N$THMSnx+S*^^f{o<1APJLi!E-KTXwtM=p)~bzXE*;=*#~z)Zz{xwYY;oci=!X zizbIwW`vf^8Rv|lySpb+iyQ4{JDX5Ow{+CK6N~d!U-uxS5qCd#g1f(afIHDW5a=sF zk=kAZ`Z~}zfWC<|;vV82>K^7E9;K1DfW8eB)#7*e8ycCvE+-omj;!3IOq)2|nXPa+ zqs?`X+6x7YaTo5D0*a6VirohTecz&h4}s!&I@SVqPvC7#1U#r`=Dc~;>7jYKp_OY^ zJIzgXAJT40oF_Bg3-$^2MeZ{9q3-f1>>mUD1n6f#Kj*N|Uzf&LLk`B)M@PJb_hu>3 zPq8;k4yg;(tq$d8E_d2o?#4ttt_gP_|2lUgAN)#py*uJ=0Qx0Rv`2gm^qUs zje9N7Z}C^4yMX@iKScf}9~}Vw4o8=MSY{}a7D}64>x}L=_X!;9^Jm3 zZ(Vvio~3|iw?&BoPZeu+x42Q@`UB`5#H^JewqcVF4p+Ia-V1SD??&t1UU=gzxH4{Y z-wurNmBA!nva>So;pVt_guo73s3a7dI-4E_%WjyMBW}jBZbMEKeFSuW{ zCxj`$T)5-&06?k$%xWUma+@HI5p?Aamh5JkQSMIOf-?+bZe+SG5%mC&G z7629m)&*GCE$;8#Ke&H%|K$GJ{fqloVBLWA0CoVdUch<-O90lNFVpUk=pj2ivaXFp zGv7W-F&b}YRE8VMtE$_?vPLR+d}htk5FU@hFY<^Uy~uBqjDF>-#_hWp&#B-_7#3Ps zi&sakLRrLmZgEFV!~^m*B#Q1lHm*xja(-Q1Nkwf<5}u`4g@5D7?Q$wF=LXhuujP0Y zWI;(`RI`~HZK}1y(Mi>Onqg0>^F>hWigT$UW__A81j&k7@?rdG?2ZiQENSfkGN(yH z`1+a44@p{Nk9ZOen2*k>E_P|Ya8LU?D{8s(;*Lt-=)2CLo+#!H?xglI z`@0!!Dt9PnvNjb7(RSo$(}3XyZWBKqm)@++&}ITl0hSdr?P_y0bl7dw=4$h_`M^?v zr2$Lds4WzRXl1}M&=0^e|Ne>L{afie?(nEq-jJAAd1zZTLR+dW@1!GAqA*;m;ZgBD zfn{^^@%sC%*DxlkBMSCVBglod24JJinLD)AcrYy*m^=3N_A}1HvXkGl8C3ZE;`Tqd6_dGM`=f+L0&U805%5L*kSbvl2hc2+zaI#;_G?JwGS+WFcA z+J)Lhz{UZ?wR14A@xV$pX_si1YL{u3YgYi90Bkz2C4k4dv6X*wNsWjbn~hSG=q=OL zv}I^Z7uY;t^S5d*X*;!-wO6!P zwb!)QwKudkfh_>G5YV5_kcX55TMVoMSS7G9Cj{GlnciV0i>=HS>o%PpMR@pAaau-k zT55J-K~Y*}N=p8?^qgWmn#p-o)bUZ2Y&uko`5zV4nB7vzPjBLZfoVw?2hJZ4zz#JF=Ak(|0b9V+3!QcQllF7`+rMeM zm78u^a(VhkFjW*ish~4*s zvW1MEz&qR@SZyqrM<1x8@quH9g6dx0b$UHaA07vk9?~%#phZv8ll2rGcgF}Y+*uld zt!mNJ^$a~z&jPj@m_F z0EYuRD#p_E5`8kV9({s7QAb{fbaDi+^&9mmwoGy4f0<0-3}UuEzmxXcixN)ha(y}S zJbkfVp;zi*eTlwQU#3^-NV2$R9}VmnV7Ox+2Y7rZI|0~J3(e?l5dCoMLI>ax%WA)?Oa-tK3?HkMj zr}QcMsqv-H(9ewj;vD^4`-@rjEqTtH7wQ+at@cvRFD?UiPFn`IL2uHVIfFYN@ZeQ; zt|cONrs@1mg@kiSk2LJRA; z18V_>oyU76+GvdW6SiV^MVWD=bLvWERfO9mRxGYwi-)S?;Y=0F%a-trS3Ddg{+_+j zRtDGNC7D^}i&F+$C9Mms#+OHyjZV$X$W6;hPsvWh_>c6o3=9CtZc_%Y>9b!iPs0*f zDQ!FTtlg=mf6%GiaK_?{)IaG|7M^37iPs$Drgqw?%AE3y%D7J1M=7w4Wq##72dWj; zsWOPt%o3isG_!=eW5!nSOD;mI@kUc_L#eE)w{AdP8+U6(=eqddzrG%$l;498e;EcE zR?uE!dCeoq)=tW8Ec|3GesfU7xvnEzpF9okhQQ0mS7T4o3yvf$I^ASg)P*?=RzepaBSJ&~ILu_!8 zmPL=Si4_Rd;e~*a(Rj*!1$u7V-t6I29$n4Ye`|2q#d^HpqLLp<+3wDf(BkUlE7z=A zUA}bfvSo``E?#n2b#>k1HOmicY*%|F!|*wX6SQ1N`&V zo?KN^QH^)${Vyh_C^IazZfuGq+xHdyUo)OI=bg1<)O;t3KJDzPrmETqFA<6{_Q4H! zr+URQj01{{uBctXcgX5+Qe{I@?E55ZcZo)=Ig;Q`{dKNrzO28ZzpB3mY!k4}fMz6i zWsCj>PZ81I2Da5o5n)$ziEzKUPEF^BO6ng2yDFL@qJM@dA}j@O9l;OY;nBnTIPoU> zw>n-8gV(6(yD&wBU4tni`j2=j7`wKUQ^DSH;Q7rXaCmm>zw3YKdjRhpU^f7}5!kjC z58?25L|`}B@Z7Rr!Q;^o9*+(T55uxd6dvE7!Q<)X>1n~^>A~T-^-ti5V&m!O8Hm_; z5z&hUJtdw}RQo*>JQF>WJd-_BJX1Z>JcoGDX8jnjCxAT#>=|Is0eb=P8U*$du$Q-b zW_V_LW_f0N=6L3M=6U9O(9ZcPuy=rc2<%f}UjX|S*pI+|1GXnl|M8UDs>b7GMw%nk zWAG$O^y$Sp*@amdX`$SVoQzOLW_o%kH)~ve2)|FwOexAv%}6h7qqBIH*cCn5p`x7J z?BdM)f|O8NN^W{6V_bG_D1Tg5ZYVQ7zbG>&H$A6aMa%7q@F<#gJ<3VR$t=#w85hdQ z$ju35;Js0yoXqU}P;o|PMn*w#MnP77M%y0YLAMxA$)4>{QASpNN@`|SYA6$LG2oXM z6oqp0^YI#kV${>Ji;Kq<6z8|CsL`(I`3@DOq!gqSXBB3J(sEM^LmBxQ#dse=WNy>)d>*t?z1HMGE7j|qC&U61+xwF2 zOOQS1@Rf?DkT=YkFY)^xJr~eY&xM|g@VKSRJmsFt(0^|`ysZO*EQ9o1ODxB;s?bXO zwkf!PJr3;6?Vc+<8?c5<@hT6h-hNEa=h8bbW?!9YMeE1Dv##|4_Lg;al4ql*1#el1 zJ#6-D63%SV7sGp=N-VSM|t4)&ZsddJXdcKL0hIgzNbGWWI z`g!xb`Q8F=p|{98&Rgs~SORZ}cY=4KcanFqcZzqacbfMQ?{sgecZPQ+GrY6K)4X%N z^StxD3%m=xi$G)`N+2pAsvv40dO-Anh&P6912G6Z%gHAtAW+Gcz59%F3=qS$$~%wCL1@m7K4{AnfjS=?v>|1nw) zne83y-)4R;5{5LUcO`4fhTVBbV@7VOicGG=3Uqt(c-k+{g+v_FbO>gu6;`hmj0OJ~Ig7k) zKklDUhR2CK%CIx%jG6|A3`_LGSQ1u zxq7_+;8e(QDgtqmgVVu?lW)AQgnvMs4B`~~CmNx>Mqg*d(|n~iOw&0`(>P2sIZPN@ zyQngHx2kQ?@{{A7m*)9U1#a=p_bu=(^eqCh6vP=I&IEB*i|e+c3@DzhF9y z!?Ya4ISx#C(pD$r)hzmhP zkjg+jw8eLv?|9z{K2)U3L97HZ4C0dg3!pPNKxcxu*Z~M_rY*j6=_dXGvBG@T`hirG zl$bXl>c;5m4E-|S1{<#{I9^MeX$bGOzs~Gp@&$lah6!*Z#BOZskbb24ana)SVouyO2rX2gF*=Oz{UIr8%R0(D#T9 z&%+#^m7JU&;*jNJM zCmMMCQHybsak6oWaVm&gLBtL2Y7nn!F;2H2It#>WZHR8zzaYZ9@tTZ_K)lX@2t&+U zjLT>e|A2VCiJLP1K%O0RAZjtT*br^z5Z%bBXe+0pZJj{mWce7^88>l=t~YKlZZy#G zaWjawfOsp2x3w5ITM*&?db$a}0;4BLz8tzG%G6vDt3yFkUitf_M*z_kxHm-rr)pVqx<-h!5D<>|X&f z#(Nx__d$Hn!3M*tT6`rmiGNTL;pBrqT3OJS#y2)PUvqRG=IiS_zP>t%exVOJ0R3cO zMp%pSv+;}ZtMMC%j{#nAEIt9^lP$*Y93Z~{;!`$2&+b>m%unv0r45mfba*dFF86|f6(8}g2>;ML-ZUHkiQ2fpyxZTFZ#3dQXl^Sgvj65-_M`m zM+f4IAZ`b72Z%4V_^qpe{ewZ=X+!kN{smEpLxjZgvI9}-pRF%{j{iU#o>3g0R}r4Q zN!AWF`Tk;#O@Y7AU*sPLBCe)4KtxgXtrq{m7Wqs7@ogKMclR%Ba6fPIqi^;d2b-CE zeU0~I^ADHZ*!}j;*b4J6@R!;6EaLdQ$H}Lhlh6Ad$%p*rK(xe1wAepe zAp-xgHblp8h`!(u9nT^9vLi%HcOW{&k2zZ{{!{&@`A_$w-263&-+=fnh~KsN&$1vw z!Eu)jk#!u<{sYk^9HL7>#F!B)sMCMNpRTaY{;f7VS8{lM&T9U&rzJ1_0@^QdY6%l=pV zulipDyfI#qK$1aHTKsSL-}Jxbe;XthNE%2wNY-s|`wtEAxM}~#AgK;WJZ{?mxpA5Q zbF?~2ZWI%(pHmQ~(-ZTCN7egAXYk+qf3gw#kt62i>U|R5_&Zu@oi~0DP!880{yhO9 zKtM7;@`DrrDcBNV0Wly25V|fP^#G|SNC)g!G!@|YM+Ceeb&bLm@FQG-Kp@CJAaw(& zyZsa4nw6MmUvn!M2So=T=oRQ|!4>Gk;p&BO1rj)c_3lVudf0hsPyiFcTLOavLjpqs z!$9f_Qa_LqKsF1Q3O6nA%btGf$O zIdzv)|0mF%({s*uzkC1xx&QNgrF&=g_`I`b_Utul){3Dcw$c$Abc7}yp;gBpw+>Ar z9ihDejn01-H0exeGUy20PiS`kTWAjPXKp}qgb9rVEKT1d7 z=?Dut!jg_4)bWq6qccTESZ$zV_n(E%A`_h@I>P!VIwt@+{3rQOF)up8hK{h^xPzI8 zmskB~i!bs6^BK(Xb(x8gJ#&h_#+;&o4xGPlsKFRN6W!(q;>LCSclcNMSNYfI2q!vX zI~}ouj&QEyzqbw(c*nYIz~uIy1=DjTOfTpN*Pk%G1~Bm^ZTzjTvcW=|`TtKc`pExf z1ESANh}@au>>G2O5&s25dOsjS!jbF%A|wkEfn-Ip(Gi|>1eo+lbcA;uauX9GBqtr= zvjLIse-uPWB!CDBmL%jK5Fv#CL_GJvMiID}TOVL032uJ?gp@!^uLFdXVglp`Xb368 zq@jO~Gd}3gT}PxM64=eCLnfbVP6+Qf(a|Fms1&02KD01&}Ti zAU!%F^d~@u0HFW!6^1lNT5iB&!GtFqzyrSZ!R!5>yJ$a&#}2ujiH$wd0qKYYgNs5( zMA8vabOf~yxnmt0S2`kk1Dp8&ENnCZ&5$Rs9AamaXN0usE{lj(>QIwF;hNUK98 zufvo^N9@{wiT0lb(;g;Fd+CVupD-O*A7jWvJok`bn+r4}W8)5BV*lCR9Ay3mNO??< z=*)3e$Q)<8{|OQ__h+I~WI3>kgDj&X_EsaoyL}%}EeKBGF!ge6SZDv6vXYW3$ z1p;NLz_8%oO9Y}w{xQH71vrWHFAgIEbC>}MaRKYK`@2>NeQh&MZ8K9XUDd6cmg?Zh zoenq!rlVo1s;jAKuB&0X6|aj^ciT9-?Y5zs!*ksA%rpJ>k@7l3*f3-==>4xr9I4FcAc%P$>#spBp>Yv`>--hu8OWP@4py$fVaHkbmC?NYAmT1S3%;Tt442=xyfcrGA6A^{Hx%u0211lU^Kq5of1 z;5!QbFEZHl0EIvS&Gn0PL?a#1M8p1Q#k%EX)Mlo=CBXxKv%E~-O_T*1HDW<06J?`z zGOdHeddT`QM+@+Fk&TO@@KTBa&ZH@zCZAk1)6YTV@VFqf7s-Io1>W{-{e0N`S^fL(~Wf(^zR}ngFmGYzZ{lfSBe{5m7Oh#3dww z)_RPLtQ-h&4owLJr4Hkyc!nzN;Y zvrAx7oT^z=M8NsYib_EC7rjx+pXq<8x-e}Mv$`tkTD7WbTWFhU95l{apb(M9MdPON z(1gG!0+n-N*3#A5H5Mp_`6DryGBz@1R`eHNshbED%T0dB+%XW%-hq5jM%0n8pXb`AjTjl&Nhh0}H)2WR{E zIHoi|)6!0Ittg2sg57~Rc;3I`UgP2LFML64FVYW6 zsPS^RFW#fsH632oFRJ!sF*3OEqvpBfVffozfm{xXSi zRHoYsxKZIQJAjSoO(Y0}o%2Up;0=)^1V#eQO8!y=(1TJ0Kk%NA(ooZo0hay_~DsuUEuEV_p@;R;eMPD>gE94CJ+b=Lya@r z0o*pgy)!=C)fBi@fV(Xy#?lqIjez@VNW2x(tp$O=1ye#?+<{vHxNRbLIyeHiK5&Ql z$C`TrHxRak*MtOGGy4f(20tDeXYB&qpgj2Vn5Z4h_<-5VVi*vJx7hG!2?~$0W!3=$ z{QF`PoSFXXbxsK}XVw#x#d0~!&&CP3!34zeHZX#~j1Tfbps8_A%sjy}0v{RSz%17U zxEVl&F0;Mh8F4u-#D&>s8W0F8CN9Q>nHJQI)g>s@(i*refjcQA#)|0=+RHjYjaa8M zfC=lDnD`ycwu3gZSq4VBGV^581iUBcVA>qJ37`X5M5zc&OreLO_f{-Xk5QrH8(*5+6 zf&_r{8|j#NM1hO>#LV~MdcOWY%2Na7nM>3|;z4)_G9n*-l? z5EcyFzm}o_=tu+Nv|iVZIxxeTr9ApkN)$*DuwK?iI%X?3>Shk=90^GQVa&R%x12?Y zMV&;8u8em_h7v*paTJ^G{6Xi(Q*TmLIwKQW#Lc*TL7 zBR~ryf8Y}fYV!ruJN!rLKhaz-F&7=LNTo8ew_E!(tk;;?cB$Plo~31N{*T(2fUm%A^fdKrz4e-9{u6tM86sWa zTucj!%tceFJ`HJ~1F3(8GW#L$fWvzS$Zi$&F7>DCb?R;EZ`5!98AJVw`ZM)Q>eV3R z3A_N_4aVoN#P?TVlidWW-&OUX)n`>;wP00P&wIUftaw%{R!fK! z>sF>e>lRiU;MQZtiUVtG@VzfcSuR zgn*um0m!C7=#c%8BamE35u^-K1*wBHLpmTmkU_{8WE!#nIRQBfxdgcZ-Y54VParQL z?;)R|P$(Oe3yOq_KqaAaP%KmfstYxOT0rffJD?s=UtqyE5*iOpgYJPIf#yTYpw-Z3 zXg72iIt^Who`YV4u0kI{Uqe5^;4n@Y3MLMdhi!rB!c1Ydz}$g1EEpCIOM&f$Wy4Bf zHLy0=0Bjm|0(J?u0($~`2Zz8p;DT^zxGG#1ZVq>Zd%}a@G4OQwVK@U`1MdKHz#{wt zdJj-`xC$gM$OZ zp~tbEBNXV`E#c_mSmIda_z0AgD|4E2k~rfzvpE|%r-0_QH(XpmW0na}?i9zB4HU)9 za^2?oog2xm2J}+|aA$Cra}RKz=YGz!iARpdl*flBg@?h@3yu~%<=w<9&uh->$D7Vu z&O6L|h4&qhI@`+U$VUP4EiHV@d=L5Az&5f4e*php{#yQ7{=0xHF9X=I{>VLmr!|kf zk77kBpsZ10s3WL$)M?a90e%530XKmpfpURyffYfxpuC{9V1!_fV2|Ks!B0ZsLZ(82 zLWhJpgw6|n5Ed0S5e^hSEZix4N%)h9l!%2$xJaJJpvWyW3tAby9i51-M9-t2ilRgf zMEyk%i}r|K7lVl@i|r6g6{{6HDfUiWLYyE@6)zQ^6@MxrC}AQICQ&FcA@N8ODQP4b zDp@EwDfw7RK+04qLaIb+PU@w!n6#C2ymYnnY3a`x1&k|ZH>MMFOJ=i-u1t_jq0EfT zOIb--d)YMER@v)vo8)xmLgb3&7Ue$3E6BUcACMoEf2bg=V6Bj%(5i4#kxS87FtzhL8$1dM5@%NTv6pzHC0VeZB<=W z6I8QP+pRXJ_I!)%7SAntTNbx`Q`c6H0B^S&Tlu%zY~8(eWb11UWetCga*d0cT$+}e z8Ja_yue7jQfm)SXSGAGa_Sy%uXSBcKbZ{}a4%{OhSsh=U3Y{yuC|xJrOx-0tgr1pR zhTfRoM}3@roPLk~3j;eqxD^%(MG^K|oU@O+nBiti8DeM$q%5Wrq zWO(FUltffg)Hy1ax}Uldtsh+!{W8WjrXdy@>m553hXNm%C*u|4_rU>7q67ql?;{2mgbgzDGMpPRBl$@Ss_+&sN%!XfTQOtO)5L8#H)@} zeL5C;>}oZkdZ0$WhEdB}n^60p&aG~-Ubnuv0o`z<;cH`L<4V(xrnzRF=H?c$mYh~t zYkcdYHd5Q!c6|F#hiXT4r(oxiE=X5=*W+&A?#n&4Ju|(!y&ZjWeHH!4{=);%f#iXg zgCT<}LmorthHZvtMhr&!N7Y6f$E3%~#|6f7CN@v(o%lYPGWl+bI`woqc>3-PdFI9} zarWZe_PNvZw)0C1mJ73sri+tH+m^mDCGfjcp9Qu}28DeY7Jr*WqT&gh&O zI;(ef z{_}^!zl;3d^ilWY;wSe{zkN>p!uF-)tJ2qzZ?@lVey4o@P7?>LpV&C>Kln^c?a#Hb z@eY6)#B_qt#H7Elduoy${_+fBq^1GZ%{uR=CY8x}O3zs53H`xr3)tXW*3ba!3Gj;k z?hgz`J2(SNAxx8J8(h+Jd-l4-0CT@I=-(`Ydx2G32qYSk1lb2U067F!Aw`f1umb4> z>yJLj0Av_43K@q?f>p?A$ThG6c?4D;U!knfO;8T7{@{U1KxLpNP%|hVY72FQZihNU zUBUXp3+fFeL;b+|BOlriU4)*5o`#-;mjI>;dczSbqq>h2dgw3Ahv- z1INPE;W)Sv+yrh0$HT4R+fn1FNz@$bJnAy)7HSRk0`(g8U4TV^Q-DVRC7>jrB48@u z4Bm@g8!I*#bmJGa|1bXpyy?)N`tDF%C={^vhrEj7LGdE5qxezC^}T@>I-(V956}@{ z1FOA(p9Q9d5<&^X)PS5lLKw)|Bfxf67ZA1YWNsK>{yk@($>IEOBLM;ekre)YPRvNo zammb`sQ)IWODJ>O48%N-l7?`gFen)&$1o1~G7Sy*5_=Yh>4?sCjd&7z-2iBnE zAh|v+K*2+@lwTY${-Upm<9)oo%Yssdys3q7gViq=4NhYLJapoZ4F!}s3M}obA>1^0 zH44Zt_5IKShQcvZfcPMU86Qp~ZscSLd9xn-=d%eE(aFohk_9w<5jItAsz9Jo1a4E5 zHRlw!C(3TqQEohkJX0SRQ-v2Fu;tCP>kS3lb>IvOf{pj#g~rrDi5MdDL7jf;*WA$Ny&&z?rF( zXkFs`YR58vhdOSDZaIa2^3T ztN&l&3^qdl2RQ#Lg;D<>aQ%O;%>NdSJ{vfW{r^=A^exu5eWXA9>r z=P2hmF#jps_OZUo@3 zY~tqN=Hlkz<^x|;0)VTc%&h{xtkeOoMT;B9t;?;?ZOCoJ?GAM9?c&bmZs5Mey~h2H z2hM}wVFkK2#CRllq*k&1Jqyl>UE;mU zd!6?t?-Smq;L8odw+Wp3k>}IoGvu@2v*B~+^JE?Z;q&A3=cDpP^TqJR@x_Bv3uSyq z`KtJ8`0Dr?m?HXo{d|LbbA0FcF7RCfGU?a&ZU7PV$9zxup7Xurd(HQj?>*n|KwMds zpTNHp$b;qq`Nw1Y&HSzW?fjkm-9X51jDLcEihqWGj{hbShQuL>Ku#q98H5Z$CL(Fb zEMy_F3`jooAt#a3V0V5V?8q-8FCs64?e6Qyo5C=!Z{ z@;GDp1ffa!@fqMe41l|a|6Zjw~CMYMUDySi7Acz-?5{wh9 z5^NG26r2z|A$V7aRR}4hETkf&CZsN;A*3aQ6VesZ7cvww5;75T7xEDD67m)z3;7B8 zgKyYip-`c4A&O9x&|#rwp=qJBLidEe3G)lf3!4eM3r7hj2`3Au3hx!p63!OR6)qL7 z6mAvn5bhH0748=v6uu#RPx!v@Z^CbdKMH>q{we|!VG&^!VF%y9W+ILvJ49SW+(kS@ zyhNfzl0-5@=puVW_K6%2DHJIeIVw^mQZ3RX(jw9((jn3%G9hw8+8a$q`=R~O3Fr)TCOQY5hb}}j&?V>r z^ep-+`a1e1`Zjt6y@tMret>?6ehj|7p`vh6geaTnCQ%MiE>T`lq^O{%h^VNjhN!Km zk7$JG9?@*kI?*A~8=?Bk@$?mBbr~ zcM_i@zDRtNgh;YV3P?&wN=iyg%1G);>Ps2|Zi0!VnWU|xljIIb7fClsf5{-p5Xo>! zie!}JUdcwuKFLAJVaYMc3CStR6O!*Gze{mS2}@z5WToV#6s1YhfzpxEd!-LaS4rQL zekA=$`m6MJ3={*$aANo|LKrEG3`P#{BTO+4fG6RO@xXXtc47iBL6{Is7$z2zfJwrn zU=Cmym=a7GrUFxmIfkjh)M0ut{g^?_FlH1pj+w+vV`eeeFb^;`{giI&NgDV3>^sgyY;(=5{?(Z2WT#|jWanfr$gaq)$=;KFAcvE)kc*ewEw@*0zuZB&Jh?(ShFpnUx7>u> zwA`%Rg4~kaakXc5)#TOXHRZMC{p6G7^W@9q zkIGlcSIc+EkIPTWPs`8B&&w~$FUy~hzb=1M{KQU-bI;nI`X-(6`&AFB9#+j%%~35;tygVQ zZBcDgomX8_J+696^^EFO)f=j}RaaCWsUg*b)y&jv)uPoB)GE}5)TY&zHRLsvfC)+y z4T6S)hL=W|21SFa5v!4)k*txXk)e^Tk*86p!O$qxsL-g?IHpmfaaZHDrYPW_g=p^8 ztkP`LoYb7roY!2^JfV47^PJ{I%`2MMHJ@p|)O@Y^PV;xo&zj$~pjvP(gch5YfR>_` zftG_-fL4LlF|A&$lUmobo@>3*daLz8>yy@3ZHP8pn^k+0HmA0Hxtc9ao)HohqFP zokgAFI;V8b=v>uV)w!qhKLUrM~thyY!T)Mov{JPS*GP=6D2D;mH zjde|R@w)c9p1R(;WL-bqKHUY~3%ZwdujpRay{r2`_mS=sJ-8l9Pe@NhPfSlzPghT0 zZ=0Tpp1B@T&r8o+kF4jX7obPcOVQf}c#?FzGQFdEReCjgb$ac3U3$HG{dzNci+acP zPU)T3yQFtj@4DVYeO`S5eT=?>zLGvxUtM1la4~iDE%fd59rT^_cj$ZQlk|P`{q+6y zBlM&6V*rPfuAi%)uV1Lo&@a(1)34C4)Nj}C1boka{UQBP{R#bP{aO99`q%Vt>fg~{ z)4#9(T>q8+8~u0szw3W85Hi?i;AcQHpc`Zx6c`j4lo%W}s4}QAs59s_7%(_taN6LU z!3Bd$23HMM4IUUgGI(n6+~BjpH$y1cKw>l8WGG>1Y3OX|X6Ru^G9(-N8Accu8y+)k zH|#R(G3+Z|pF<>}>369AjK!JZ5~u_@41^#*dAk8ox9CW&$-~F<~>=Y{F^6ZNh6J zZh|q9HBm58F;O$wYNBakW@2IDY2t0-YqHZM&?MNT)TG9w-K5K;*JQwC*ksIP!sLX> zX_K=i=S`lQd^Y)J3NeM5vYQH+3Y(%$#Y|;Qx0-61;!Jf-38pTl?xr55UVw9)XqsZ0 zW}0rgYWl&9#f;UA-HgKwWhP{XHWM?`GBY)^F|#*wGIKU_Gb5YrGz&BfHVZS0FxzXE zV^(2SZ`NeiYSv-aZ8l;yW;S6qWj13rXSQbc-5g_XU~Xk@Ywlpa-Q308%{9mGCO~E%>c?eY`Q=3~vFr+%9-8yf>bV_rr(a!|@b66(567 z#UI4y;PdbW_#%7-z6xKBufsRsJMm-qMf`F6Dg0Ud1^i|FD*hh+H~eG#Q~V43D+`o` zhQ)S^K#P4A`4&|cH5T<2O%|;d9Twdd6Bg4Ja~6vh%N8dsPFtL{_|4+ICA+19rJH4n z3(GH-UoF28AOtP~ zFM*#RKoBON2?_*7f)W8s&?Rgmm=MefRs>su1Hp+9K}aDSAmkDX2n<3gp@L9PXe6`{ z+6i5R9>NL2W5RnY4l5ZeMJrRl#dozLTZLK0TP0bgTBTW~ThXodS`}HfTMbx^T1{9@ zSltpN36%J zC#|QgXRYsAf3*>^(XcVKA=!l5#Mva;q<}pFn#~@YY@0lr0-GY65}R_Hqc;6Ew`}=r zHEfBtezrljp|%mWk+yqn3v4TFt88m*>uiT@M{Or;r)+0!7i>S-!Rh>D;TJ|`5U3-0dSNk~oO#5>C zPWw6gtM*SF*c~tq`VQs}cn2Uc2{^7EfU`<=@N?MbknK?5z;GyaD0jH%$l)mLDDEib zDC4N;sO+fXsOD(t7~&Z3nB2SCfugo=G+$DmfcRcU3Pon_SGHbF6plAPIQlO&v4ImFK{n%FL5t-?{gn; zA9f#epLD6R!{-5FZjB z6Q2^F6JHWv6W@BkJrEx39vmLr9(*1s4KWsC$TQ!w$g{+=%(K^X%5&NCq~{sW^PZPHZ+otK-t&Cm z`N;E$7u<{6OVmr&OTkOoOVvx=OV7)|Ynzv`m#LSzm!DUPuTx%Uy)JlN z@_OX;+UtYYC$Fzw-$|S#BuRiIL=quMkz`16Bt?=kNrz-aG9j6f@FZK31IdZxOmZdp zkitokq-atcDS?zk$|RMN%1Gs;qofv6JE@D*OBx^zk)}xtq-D}c(rMBS(i-U==>h2> z=>_RE=`HC4>7zHyo5x$wTi6@zE#@ubE$^-9jrCUb#(A52TY1}hJ9s;LyLuD7J-s8n z^Smp)TfIBHyS@9o2fatU$GwkxpYlHIeZl*Z_f_xf-Z#D9_`rNnKDs`^KKp$Nd>B3@ zKIJ}@KF568eY$*leFl7nd`5hheO7&*`@Hgb4K~5lNkZI)IubHp4udT1WucNP#t04~5fz&5}kV0(Z|fO~*vfOmjz0FdGhNDC+pXb2b&co_%_lnmS& zXcy=a7!()^4thid#stO(CI;>eJP>#|Fe@-Oupp2TSQ2)(j4SN{&B!ud$>n0{B8J$@K51i!oNkJBNQUE zB6K43Beq4DM3_fdMmR^fMR-JzBFGUtBLX6VBBCR9MHEL&L|lz{67c~DYQib3V2@XT zB1jRUh)^(;Efigf0mX=7O2Jd?DNYn;iW|j);zbFd1XIE&5tKyAUdjQ=VM-PyhmuFB zq_k2xDBYAk${=NgGEO;8IYl{3xj?y0xkkA`xkY(Ic};mo`JM795&`y*k&&oK!AQwS zl}PPK-AIE-qe#<8n@Iaer%2~Ww@6}ST;##Xj>yHxvym4fFGpUDyc_v4@=fIX$d8d< zBELnUqZFdFqI9D4qqaqvM43lfMma~hMR`P#qR3G@qXMFWqN1aAMHNR)L|u(~67@dn zJC%jXM%_&1qzX|n)GbtX>Q<^I)sSjU-9dGw5~*HPA8If)j7p(Wsj<{}YC4rp-3#`% z^Qe{7YHA&|k=jgcr4CW&sY}!o)YH^+)Qi+B)O*z5sE?`7s4uB+sPCvBqT$h;(LB-o z(Wq$YXiT(Bv|O}Wv_Z5{v}rUxnhd`h%JdNi#;0qAofk{yVwu0pW=+;?BX2aoZ_70O5*C{I^w$H z`r-!TM&f4U7UGuUPR5;yI~VsQ9vkl&zb8I7z960vUm9N#Um4#R-xl8)-xJ>#KOMgm zeL{JHq6@i*dc#jnJ##lMXIn!uZ&m9QSnpIMFiED={oFHnAYF zEO8|9Y~roN+lhA)R}-HneoXw5_&o`hgh*mfLM90&i6n_7NhV>EWRo0|b|tkX-AHCh z=1WE;3ninI#giqI6_Zty)sr=owUf<~t&?q&?UNmo-I6_$y^?*BeUtYlXC;>XAr}U+qNqL-#NL5R$qq=u%3rADO2rzWMQ zrtV5Tm|B#|NG(n+O>IbROl?YSNgYfbN*zueO`S_UmwG<+Lh7Z|+o`Lm_fj9Een|b4 z`ZW!b22bNm6G@XwlSz|LQ%X}$(@evq>7^N@nWb5$MWpRd%Sp>mD@rR)t4pg-Ye;KK zn@Ky9b~f!?+J&^0v`1-A(_W;#PJ5U3Z5MPG%PzKEn|E>U(%BWbt8mxsuCu!??7F<` z+OC_sZtr@%>vK9J9iGmb&YmuiE|xBtj!BnGS4rQJzBOGd9hZ(z-<}?jelWc#y&}CT zy(Yary)C^ny*s@xeIR`{{c`%X^qc8-($~`Or$0=8lKwpXRR&82TgK)Lt_AnU+FJ zqaC6hrX8VW(aLD$v!tP4256JC8QMH;k#?1KgLa#?O1no_qHEBN>6UbB zx*gq-?nd{Zljvl+AAK*qlHN`qpbyi>=o9o4^po^c^fUBF^!N0yyCJ*byIFU0?dIK$ z+%33Uc(>ech22WKRd%=U9@#y%dt&$W9L$ zpGnBH&Ln1fWrk!%XU1hFW~OBB%G{rMDDy~WR%UKyer9LprOc06!dcQ;vRMjQN?96N z23gy(jI&I$%(E=Ac4WC{d1R5Y{IdMBg0e!g60`PZWo6}N6=X58O0#OR>a&`%TC+N` zy0T7Xy~!5J#$_94n`K*M6SAGMJ+evJ?q1oZtl`xh%PCxrVvcxwg6XxlXzJ za`STwa~Zj%xuO-{ybF|CIkV|9gRGfoy?7fpURLfoTE0z_Nf)U;`wCJPW)F!U`w_)PmT8go303 zdcod;0|kc)DhsL$Y76QL8Vgzq1`9?C77LCSoGLh5aG~H*!R><8f_nuI3O*NnD})q6 z3t0-;3Q>hZh3GI8%R7NZ#fsxEeV`MOP zGxjkKGLA5^8F`FCMlqv|ag=e4QOjsxG&9;5os1qvKVyh7%9vnGGv*kJjN^<`#oWbw z#i(MTVsx>1u~e~4v3#*ou}bllVvS<$V%=hcVxwZyVtg^7*rwRN*s0jL*sa*3m{d$I z-dP-298w%!Oesz&PAg6?rWY?1Unss*e5Lq$iGB&8#Ja?`#G$0Tq^YE(q^+d0DAKfrMJpd%k;|(%Z$oQ%WBFx%eu>Y%LdB6m2;GH zmGhMImq(SSm8X}}%J-C?D8E{Mz5HhRoeGT#;|kLX^9sv~_KJ~;v5JX`>7(37MURRf zl{|_$N;{f$H0NmE(ZZweDq)o@m8_MUD!nR0D#I!xDx)fwD=$}Gt-M}&s|r)KrD|)H zW)-e#PgQPJepO*ran+-$_f@}FeX9C;Y{xP3F~4K}$AXSc9y@vL^s%$YE>x>k8&q$r zHm)|SE~&1sZme#uZma%S!&<{$v$=+=CZZ;}Cbec)4Xx%<&05Wqn&&mIYTnj-sD;$R zfg~DxEk`X^t#YkXZCq_ZZAEQWZB1=mZF}uN?NIGV?O5$Z?Nse@?d94VwYO?lYVX(n zR{Oa2Y3=9QZ*?4Xs5+rKbe(veRGm_tN}XDrdYxvScHNG;q`Hc_(Ym?1#k%8lC+jZN z-L6}$yI1#H-Q&8aboN6m^&0gC^+xrk_4s;1y;Hq& zy=%RDy=OhCKDoZCeztzC{z?7w`d9UD>c2D~8rT{(HE=X=HSjcuHApweG{`q#8&n(A z8#EeB8}JR=8$27l8+;r58-g058e$sa8#Hj$cqn!=l?O)*XJO({)jO&Lw} zrrf52rejUbO>Iq`O+8KhO%qMiO><3)O~;!~Ha%+QY1VAs(d^ai)9lym-yG2#-<;H( z+MM1@Z{E|quQ|IpxA|yuO>`Z}Uv^ndYm_H=1uZuQuOne%Ac5`E~Q# z<`2yuTLfDSTYOtGS`M}xX~}NMZ7FT3X{l>zXlZI`X=!U2ZkcGAYME_WYB}C=vgLHk zt(M0vZ(82Bd~EsB^1YS4m7|rrm9G`mD%h&o>e0HZwW77YwW+nWwY_zqb+UD)b*^=> zb-DFK>&4d9)(5Q*Tc5PPY<=DOuJuD3Yulza!8XY@Oq*PrVjH$it4*g(ug##%sLiC! zyKPTfW7|U8nYQz7m)fqht+YLAd(!r-?M2(Gwm0pNc0@Z{`{s6@cD{C0yI{LqyJEX` zyHUF-kbNYy+q65kyR{SBJ=?w8$?a+FHSG)S_uHShziNNm{=WTt2Ybin4z3QK4*m{Q zhhT?Hhhm2^keAfx(CX0X(Ce`3um6c6HD?c6U^D%y&HM zWbfqbM0E;vigaQ+v7Kt2>YbXM+MPO`dYzV?ww?B!PMxlu?wy{Uq|Wfp$j;Qxy`2X- z4|isD=605LR&-W&9_y^_tnZxZeAva=h3(Sn(&^IgGVHSGa_DmE+R^3G<<>>)3hWB& zis*{!it9?~O72SSI^0#HZ|)xFZa*8ROluE)A3q$j#3t|zf4xo3CJk)G_H+@6A-qMqWO(w>H%)}HpBuAcs$ z!Jd(xv7Qq>r+aSn-0S(R=W)-oo|iozd%pC1>xJ~fdl9{uUaQ`S-Xpz*y~Vv{y%oLn zy&b(>y*<5sy#u{Nz4N`tdr$VB>Al!{x%XP{jo!z-ANnAD@IKbQO?{kw0)4`L=svMN z$v){mqrQN?gME#CU46ZM1ARk%(|yPLPW7GbyU=&J?`q%uzQ=t}`(E_D?R($%vF~&L z=6ns zXxos@kmJzyAr~N_>ow#vSEM8Qwp9WH@U$cQ}8zdbneF zaCl^Re0XYjcKGD*nc?%pmxiwnUmyN3B0gd|;yV&L5-}1r5e1TKw$c94q0!ONiP7oN+0psY^P^WruZ`XuT^+qU`e5|o=!Y?u zF|IM*G31!wn8+ArOm0kJOleGIOl{0|EPAYHtZ!_5Y-((FY<}$Y*p;zsV>iZbjoler z9eY0ZX6)VA?_*!bzK=u4;p6<{lH-cw*m1S-t>aqb+r~}C&BpQLgmLTfpz+M{uJJSD zSI2LR-yUBXe>DDj{O$Pr@!!WkjenWgG{HT=JAs@KoCVonjlQrOxRC2 zO*l`GCddPE0CCGpX8fFO$ttmOo~p5PbyDtncO<5 zHK{jgFljVtGU+%;nhcx_nGBzdoQww2)w?D$Ch3!VC-+a*PA*SAo8p`jm=c~6of4mt zpV~5|F{M4FJ7qAnZOVAcbjo4MdCGN)IORP>p4vGTFcmwMFtukYb1G*lf2wGzWU6|q zZmMCbX{vRqed_qs%W2fK=Ct9o@wC}Ae%gN8ZQ5g+G)FKl6&t{M_Ix}uS`g`Y0;7srgbtZWx zZ6QW@~2aX1iwxW`|}+XQyUoX6I)YXD`p* zoqam{V)pgyyV>98pmQv9taI#h9CKWA%5zS0adQQ86?0W{HFI@y?Q;Wj!*gSElXEk3 zb8`!GOLLdzuFu_^yEAuh?!nxnxhHd<=DyBvo=46L&Wp^8%}dTJ&SU3Q=eNvj%xleW zpHG}GpC6f@onM$=oL2?1J zuw_AGL3=@W!C+zAg6)FmLhwS;Lh3^L0)1ic!hwau3t0=f3)KsC3k?fR3#|(s3*8HS z3j+&73o{F+79K2oUF2U>STtTFE=DePE)Fb?FD@-!TD-YvRAidl+ZN?J-?N?)Qc?ODoQDqbpEI=Xahsd1@gseP$ysb}fN@}_0&Wy59L zW#Te#Pja?Eo4a?*0j@}A{=%SV<=maCR)mg|?BmOGbwmiw27mPeMymrpKV zTV7edyZm7J(elgXH_PvrKQ4bh4m-}V!dNL?X;|r98CV%!8C#iLnOT`%Ilppg<;u$S zm0K%!R#sQ;uClMHuDY+%R}Zh|ua>V?t~RcAtoE+Xtj?{TTD`b>dG+e*_0^lJk5-?q zK3{#c`gZmG>i0F)HTJd5Yn*G`YeH-2HL*2`HH9^+HQP0Zwe4#zYwl~FYu;G|YkSxBuN_=Fa`(>Nr+1&;Axo T;5Q7m@rw%B`2BgmKlFb9nLQnp diff --git a/Annict-for-iOS.xcodeproj/project.xcworkspace/xcuserdata/yuto.xcuserdatad/WorkspaceSettings.xcsettings b/Annict-for-iOS.xcodeproj/project.xcworkspace/xcuserdata/yuto.xcuserdatad/WorkspaceSettings.xcsettings deleted file mode 100644 index f25782dd..00000000 --- a/Annict-for-iOS.xcodeproj/project.xcworkspace/xcuserdata/yuto.xcuserdatad/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,18 +0,0 @@ - - - - - BuildLocationStyle - UseAppPreferences - CustomBuildLocationType - RelativeToDerivedData - DerivedDataLocationStyle - Default - EnabledFullIndexStoreVisibility - - IssueFilterStyle - ShowActiveSchemeOnly - LiveSourceIssuesEnabled - - - diff --git a/Annict-for-iOS.xcodeproj/xcshareddata/xcschemes/Annict-for-iOS.xcscheme b/Annict-for-iOS.xcodeproj/xcshareddata/xcschemes/Annict-for-iOS.xcscheme deleted file mode 100644 index 64fedcfd..00000000 --- a/Annict-for-iOS.xcodeproj/xcshareddata/xcschemes/Annict-for-iOS.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS.xcodeproj/xcuserdata/yuto.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Annict-for-iOS.xcodeproj/xcuserdata/yuto.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index fe2b4541..00000000 --- a/Annict-for-iOS.xcodeproj/xcuserdata/yuto.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/Annict-for-iOS.xcodeproj/xcuserdata/yuto.xcuserdatad/xcschemes/xcschememanagement.plist b/Annict-for-iOS.xcodeproj/xcuserdata/yuto.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 96819643..00000000 --- a/Annict-for-iOS.xcodeproj/xcuserdata/yuto.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - Annict-for-iOS.xcscheme - - orderHint - 2 - - Annict-for-iOS.xcscheme_^#shared#^_ - - orderHint - 9 - - - SuppressBuildableAutocreation - - D123F24F217CBD2500AE38FD - - primary - - - - - diff --git a/Annict-for-iOS.xcworkspace/contents.xcworkspacedata b/Annict-for-iOS.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 75c57c8e..00000000 --- a/Annict-for-iOS.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/Annict-for-iOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Annict-for-iOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/Annict-for-iOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Annict-for-iOS.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/Annict-for-iOS.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index 0c67376e..00000000 --- a/Annict-for-iOS.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Annict-for-iOS.xcworkspace/xcuserdata/touyu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Annict-for-iOS.xcworkspace/xcuserdata/touyu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index c9e96637..00000000 --- a/Annict-for-iOS.xcworkspace/xcuserdata/touyu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/Annict-for-iOS.xcworkspace/xcuserdata/yuto.xcuserdatad/WorkspaceSettings.xcsettings b/Annict-for-iOS.xcworkspace/xcuserdata/yuto.xcuserdatad/WorkspaceSettings.xcsettings deleted file mode 100644 index f25782dd..00000000 --- a/Annict-for-iOS.xcworkspace/xcuserdata/yuto.xcuserdatad/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,18 +0,0 @@ - - - - - BuildLocationStyle - UseAppPreferences - CustomBuildLocationType - RelativeToDerivedData - DerivedDataLocationStyle - Default - EnabledFullIndexStoreVisibility - - IssueFilterStyle - ShowActiveSchemeOnly - LiveSourceIssuesEnabled - - - diff --git a/Annict-for-iOS.xcworkspace/xcuserdata/yuto.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Annict-for-iOS.xcworkspace/xcuserdata/yuto.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index ed9a9b4d..00000000 --- a/Annict-for-iOS.xcworkspace/xcuserdata/yuto.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/Annict-for-iOS/API.swift b/Annict-for-iOS/API.swift deleted file mode 100644 index 42404c45..00000000 --- a/Annict-for-iOS/API.swift +++ /dev/null @@ -1,4349 +0,0 @@ -// This file was automatically generated and should not be edited. - -import Apollo - -public enum RatingState: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { - public typealias RawValue = String - case great - case good - case average - case bad - /// Auto generated constant for unknown enum values - case __unknown(RawValue) - - public init?(rawValue: RawValue) { - switch rawValue { - case "GREAT": self = .great - case "GOOD": self = .good - case "AVERAGE": self = .average - case "BAD": self = .bad - default: self = .__unknown(rawValue) - } - } - - public var rawValue: RawValue { - switch self { - case .great: return "GREAT" - case .good: return "GOOD" - case .average: return "AVERAGE" - case .bad: return "BAD" - case .__unknown(let value): return value - } - } - - public static func == (lhs: RatingState, rhs: RatingState) -> Bool { - switch (lhs, rhs) { - case (.great, .great): return true - case (.good, .good): return true - case (.average, .average): return true - case (.bad, .bad): return true - case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue - default: return false - } - } - - public static var allCases: [RatingState] { - return [ - .great, - .good, - .average, - .bad, - ] - } -} - -public enum StatusState: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { - public typealias RawValue = String - case wannaWatch - case watching - case watched - case onHold - case stopWatching - case noState - /// Auto generated constant for unknown enum values - case __unknown(RawValue) - - public init?(rawValue: RawValue) { - switch rawValue { - case "WANNA_WATCH": self = .wannaWatch - case "WATCHING": self = .watching - case "WATCHED": self = .watched - case "ON_HOLD": self = .onHold - case "STOP_WATCHING": self = .stopWatching - case "NO_STATE": self = .noState - default: self = .__unknown(rawValue) - } - } - - public var rawValue: RawValue { - switch self { - case .wannaWatch: return "WANNA_WATCH" - case .watching: return "WATCHING" - case .watched: return "WATCHED" - case .onHold: return "ON_HOLD" - case .stopWatching: return "STOP_WATCHING" - case .noState: return "NO_STATE" - case .__unknown(let value): return value - } - } - - public static func == (lhs: StatusState, rhs: StatusState) -> Bool { - switch (lhs, rhs) { - case (.wannaWatch, .wannaWatch): return true - case (.watching, .watching): return true - case (.watched, .watched): return true - case (.onHold, .onHold): return true - case (.stopWatching, .stopWatching): return true - case (.noState, .noState): return true - case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue - default: return false - } - } - - public static var allCases: [StatusState] { - return [ - .wannaWatch, - .watching, - .watched, - .onHold, - .stopWatching, - .noState, - ] - } -} - -/// Season name -public enum SeasonName: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { - public typealias RawValue = String - case winter - case spring - case summer - case autumn - /// Auto generated constant for unknown enum values - case __unknown(RawValue) - - public init?(rawValue: RawValue) { - switch rawValue { - case "WINTER": self = .winter - case "SPRING": self = .spring - case "SUMMER": self = .summer - case "AUTUMN": self = .autumn - default: self = .__unknown(rawValue) - } - } - - public var rawValue: RawValue { - switch self { - case .winter: return "WINTER" - case .spring: return "SPRING" - case .summer: return "SUMMER" - case .autumn: return "AUTUMN" - case .__unknown(let value): return value - } - } - - public static func == (lhs: SeasonName, rhs: SeasonName) -> Bool { - switch (lhs, rhs) { - case (.winter, .winter): return true - case (.spring, .spring): return true - case (.summer, .summer): return true - case (.autumn, .autumn): return true - case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue - default: return false - } - } - - public static var allCases: [SeasonName] { - return [ - .winter, - .spring, - .summer, - .autumn, - ] - } -} - -public final class CreateRecordMutation: GraphQLMutation { - /// mutation CreateRecord($episodeId: ID!, $comment: String, $ratingState: RatingState, $shareTwitter: Boolean) { - /// createRecord(input: {episodeId: $episodeId, comment: $comment, ratingState: $ratingState, shareTwitter: $shareTwitter}) { - /// __typename - /// record { - /// __typename - /// ...MinimumRecord - /// } - /// } - /// } - public let operationDefinition = - "mutation CreateRecord($episodeId: ID!, $comment: String, $ratingState: RatingState, $shareTwitter: Boolean) { createRecord(input: {episodeId: $episodeId, comment: $comment, ratingState: $ratingState, shareTwitter: $shareTwitter}) { __typename record { __typename ...MinimumRecord } } }" - - public let operationName = "CreateRecord" - - public var queryDocument: String { return operationDefinition.appending(MinimumRecord.fragmentDefinition).appending(MinimumUser.fragmentDefinition) } - - public var episodeId: GraphQLID - public var comment: String? - public var ratingState: RatingState? - public var shareTwitter: Bool? - - public init(episodeId: GraphQLID, comment: String? = nil, ratingState: RatingState? = nil, shareTwitter: Bool? = nil) { - self.episodeId = episodeId - self.comment = comment - self.ratingState = ratingState - self.shareTwitter = shareTwitter - } - - public var variables: GraphQLMap? { - return ["episodeId": episodeId, "comment": comment, "ratingState": ratingState, "shareTwitter": shareTwitter] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Mutation"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("createRecord", arguments: ["input": ["episodeId": GraphQLVariable("episodeId"), "comment": GraphQLVariable("comment"), "ratingState": GraphQLVariable("ratingState"), "shareTwitter": GraphQLVariable("shareTwitter")]], type: .object(CreateRecord.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(createRecord: CreateRecord? = nil) { - self.init(unsafeResultMap: ["__typename": "Mutation", "createRecord": createRecord.flatMap { (value: CreateRecord) -> ResultMap in value.resultMap }]) - } - - public var createRecord: CreateRecord? { - get { - return (resultMap["createRecord"] as? ResultMap).flatMap { CreateRecord(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "createRecord") - } - } - - public struct CreateRecord: GraphQLSelectionSet { - public static let possibleTypes = ["CreateRecordPayload"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("record", type: .object(Record.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(record: Record? = nil) { - self.init(unsafeResultMap: ["__typename": "CreateRecordPayload", "record": record.flatMap { (value: Record) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var record: Record? { - get { - return (resultMap["record"] as? ResultMap).flatMap { Record(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "record") - } - } - - public struct Record: GraphQLSelectionSet { - public static let possibleTypes = ["Record"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumRecord.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumRecord: MinimumRecord { - get { - return MinimumRecord(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } -} - -public final class DeleteRecordMutation: GraphQLMutation { - /// mutation DeleteRecord($recordId: ID!) { - /// deleteRecord(input: {recordId: $recordId}) { - /// __typename - /// episode { - /// __typename - /// ...MinimumEpisode - /// } - /// } - /// } - public let operationDefinition = - "mutation DeleteRecord($recordId: ID!) { deleteRecord(input: {recordId: $recordId}) { __typename episode { __typename ...MinimumEpisode } } }" - - public let operationName = "DeleteRecord" - - public var queryDocument: String { return operationDefinition.appending(MinimumEpisode.fragmentDefinition) } - - public var recordId: GraphQLID - - public init(recordId: GraphQLID) { - self.recordId = recordId - } - - public var variables: GraphQLMap? { - return ["recordId": recordId] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Mutation"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("deleteRecord", arguments: ["input": ["recordId": GraphQLVariable("recordId")]], type: .object(DeleteRecord.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(deleteRecord: DeleteRecord? = nil) { - self.init(unsafeResultMap: ["__typename": "Mutation", "deleteRecord": deleteRecord.flatMap { (value: DeleteRecord) -> ResultMap in value.resultMap }]) - } - - public var deleteRecord: DeleteRecord? { - get { - return (resultMap["deleteRecord"] as? ResultMap).flatMap { DeleteRecord(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "deleteRecord") - } - } - - public struct DeleteRecord: GraphQLSelectionSet { - public static let possibleTypes = ["DeleteRecordPayload"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("episode", type: .object(Episode.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(episode: Episode? = nil) { - self.init(unsafeResultMap: ["__typename": "DeleteRecordPayload", "episode": episode.flatMap { (value: Episode) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var episode: Episode? { - get { - return (resultMap["episode"] as? ResultMap).flatMap { Episode(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "episode") - } - } - - public struct Episode: GraphQLSelectionSet { - public static let possibleTypes = ["Episode"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumEpisode.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, sortNumber: Int, viewerRecordsCount: Int, recordCommentsCount: Int, viewerDidTrack: Bool) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "sortNumber": sortNumber, "viewerRecordsCount": viewerRecordsCount, "recordCommentsCount": recordCommentsCount, "viewerDidTrack": viewerDidTrack]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumEpisode: MinimumEpisode { - get { - return MinimumEpisode(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } -} - -public final class GetFollowingActivitiesQuery: GraphQLQuery { - /// query GetFollowingActivities($after: String) { - /// viewer { - /// __typename - /// followingActivities(after: $after, first: 30, orderBy: {field: CREATED_AT, direction: DESC}) { - /// __typename - /// pageInfo { - /// __typename - /// ...PageInfoFrag - /// } - /// edges { - /// __typename - /// annictId - /// node { - /// __typename - /// ... on Status { - /// createdAt - /// annictId - /// id - /// state - /// work { - /// __typename - /// ...MinimumWork - /// } - /// user { - /// __typename - /// ...MinimumUser - /// } - /// } - /// ... on Record { - /// ...MinimumRecord - /// episode { - /// __typename - /// ...MinimumEpisode - /// } - /// work { - /// __typename - /// ...MinimumWork - /// } - /// } - /// ... on Review { - /// createdAt - /// annictId - /// id - /// work { - /// __typename - /// ...MinimumWork - /// } - /// user { - /// __typename - /// ...MinimumUser - /// } - /// } - /// ... on MultipleRecord { - /// createdAt - /// annictId - /// id - /// records(first: 30) { - /// __typename - /// nodes { - /// __typename - /// episode { - /// __typename - /// ...MinimumEpisode - /// } - /// } - /// } - /// work { - /// __typename - /// ...MinimumWork - /// } - /// user { - /// __typename - /// ...MinimumUser - /// } - /// } - /// } - /// } - /// } - /// } - /// } - public let operationDefinition = - "query GetFollowingActivities($after: String) { viewer { __typename followingActivities(after: $after, first: 30, orderBy: {field: CREATED_AT, direction: DESC}) { __typename pageInfo { __typename ...PageInfoFrag } edges { __typename annictId node { __typename ... on Status { createdAt annictId id state work { __typename ...MinimumWork } user { __typename ...MinimumUser } } ... on Record { ...MinimumRecord episode { __typename ...MinimumEpisode } work { __typename ...MinimumWork } } ... on Review { createdAt annictId id work { __typename ...MinimumWork } user { __typename ...MinimumUser } } ... on MultipleRecord { createdAt annictId id records(first: 30) { __typename nodes { __typename episode { __typename ...MinimumEpisode } } } work { __typename ...MinimumWork } user { __typename ...MinimumUser } } } } } } }" - - public let operationName = "GetFollowingActivities" - - public var queryDocument: String { return operationDefinition.appending(PageInfoFrag.fragmentDefinition).appending(MinimumWork.fragmentDefinition).appending(MinimumUser.fragmentDefinition).appending(MinimumRecord.fragmentDefinition).appending(MinimumEpisode.fragmentDefinition) } - - public var after: String? - - public init(after: String? = nil) { - self.after = after - } - - public var variables: GraphQLMap? { - return ["after": after] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Query"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("viewer", type: .object(Viewer.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(viewer: Viewer? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "viewer": viewer.flatMap { (value: Viewer) -> ResultMap in value.resultMap }]) - } - - public var viewer: Viewer? { - get { - return (resultMap["viewer"] as? ResultMap).flatMap { Viewer(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "viewer") - } - } - - public struct Viewer: GraphQLSelectionSet { - public static let possibleTypes = ["User"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("followingActivities", arguments: ["after": GraphQLVariable("after"), "first": 30, "orderBy": ["field": "CREATED_AT", "direction": "DESC"]], type: .object(FollowingActivity.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(followingActivities: FollowingActivity? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "followingActivities": followingActivities.flatMap { (value: FollowingActivity) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var followingActivities: FollowingActivity? { - get { - return (resultMap["followingActivities"] as? ResultMap).flatMap { FollowingActivity(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "followingActivities") - } - } - - public struct FollowingActivity: GraphQLSelectionSet { - public static let possibleTypes = ["ActivityConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("pageInfo", type: .nonNull(.object(PageInfo.selections))), - GraphQLField("edges", type: .list(.object(Edge.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(pageInfo: PageInfo, edges: [Edge?]? = nil) { - self.init(unsafeResultMap: ["__typename": "ActivityConnection", "pageInfo": pageInfo.resultMap, "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// Information to aid in pagination. - public var pageInfo: PageInfo { - get { - return PageInfo(unsafeResultMap: resultMap["pageInfo"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "pageInfo") - } - } - - /// A list of edges. - public var edges: [Edge?]? { - get { - return (resultMap["edges"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Edge?] in value.map { (value: ResultMap?) -> Edge? in value.flatMap { (value: ResultMap) -> Edge in Edge(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, forKey: "edges") - } - } - - public struct PageInfo: GraphQLSelectionSet { - public static let possibleTypes = ["PageInfo"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(PageInfoFrag.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(endCursor: String? = nil, hasNextPage: Bool, hasPreviousPage: Bool, startCursor: String? = nil) { - self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage, "hasPreviousPage": hasPreviousPage, "startCursor": startCursor]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var pageInfoFrag: PageInfoFrag { - get { - return PageInfoFrag(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - - public struct Edge: GraphQLSelectionSet { - public static let possibleTypes = ["ActivityEdge"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("node", type: .object(Node.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(annictId: Int, node: Node? = nil) { - self.init(unsafeResultMap: ["__typename": "ActivityEdge", "annictId": annictId, "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var node: Node? { - get { - return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "node") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Status", "Record", "Review", "MultipleRecord"] - - public static let selections: [GraphQLSelection] = [ - GraphQLTypeCase( - variants: ["Status": AsStatus.selections, "Record": AsRecord.selections, "Review": AsReview.selections, "MultipleRecord": AsMultipleRecord.selections], - default: [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - ] - ) - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public static func makeStatus(createdAt: String, annictId: Int, id: GraphQLID, state: StatusState, work: AsStatus.Work, user: AsStatus.User) -> Node { - return Node(unsafeResultMap: ["__typename": "Status", "createdAt": createdAt, "annictId": annictId, "id": id, "state": state, "work": work.resultMap, "user": user.resultMap]) - } - - public static func makeReview(createdAt: String, annictId: Int, id: GraphQLID, work: AsReview.Work, user: AsReview.User) -> Node { - return Node(unsafeResultMap: ["__typename": "Review", "createdAt": createdAt, "annictId": annictId, "id": id, "work": work.resultMap, "user": user.resultMap]) - } - - public static func makeMultipleRecord(createdAt: String, annictId: Int, id: GraphQLID, records: AsMultipleRecord.Record? = nil, work: AsMultipleRecord.Work, user: AsMultipleRecord.User) -> Node { - return Node(unsafeResultMap: ["__typename": "MultipleRecord", "createdAt": createdAt, "annictId": annictId, "id": id, "records": records.flatMap { (value: AsMultipleRecord.Record) -> ResultMap in value.resultMap }, "work": work.resultMap, "user": user.resultMap]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var asStatus: AsStatus? { - get { - if !AsStatus.possibleTypes.contains(__typename) { return nil } - return AsStatus(unsafeResultMap: resultMap) - } - set { - guard let newValue = newValue else { return } - resultMap = newValue.resultMap - } - } - - public struct AsStatus: GraphQLSelectionSet { - public static let possibleTypes = ["Status"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("state", type: .nonNull(.scalar(StatusState.self))), - GraphQLField("work", type: .nonNull(.object(Work.selections))), - GraphQLField("user", type: .nonNull(.object(User.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(createdAt: String, annictId: Int, id: GraphQLID, state: StatusState, work: Work, user: User) { - self.init(unsafeResultMap: ["__typename": "Status", "createdAt": createdAt, "annictId": annictId, "id": id, "state": state, "work": work.resultMap, "user": user.resultMap]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var createdAt: String { - get { - return resultMap["createdAt"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "createdAt") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var state: StatusState { - get { - return resultMap["state"]! as! StatusState - } - set { - resultMap.updateValue(newValue, forKey: "state") - } - } - - public var work: Work { - get { - return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "work") - } - } - - public var user: User { - get { - return User(unsafeResultMap: resultMap["user"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "user") - } - } - - public struct Work: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumWork.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumWork: MinimumWork { - get { - return MinimumWork(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - - public struct User: GraphQLSelectionSet { - public static let possibleTypes = ["User"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumUser.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(annictId: Int, name: String, username: String, avatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "annictId": annictId, "name": name, "username": username, "avatarUrl": avatarUrl]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumUser: MinimumUser { - get { - return MinimumUser(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - - public var asRecord: AsRecord? { - get { - if !AsRecord.possibleTypes.contains(__typename) { return nil } - return AsRecord(unsafeResultMap: resultMap) - } - set { - guard let newValue = newValue else { return } - resultMap = newValue.resultMap - } - } - - public struct AsRecord: GraphQLSelectionSet { - public static let possibleTypes = ["Record"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumRecord.self), - GraphQLField("episode", type: .nonNull(.object(Episode.selections))), - GraphQLField("work", type: .nonNull(.object(Work.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var episode: Episode { - get { - return Episode(unsafeResultMap: resultMap["episode"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "episode") - } - } - - public var work: Work { - get { - return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "work") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumRecord: MinimumRecord { - get { - return MinimumRecord(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - - public struct Episode: GraphQLSelectionSet { - public static let possibleTypes = ["Episode"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumEpisode.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, sortNumber: Int, viewerRecordsCount: Int, recordCommentsCount: Int, viewerDidTrack: Bool) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "sortNumber": sortNumber, "viewerRecordsCount": viewerRecordsCount, "recordCommentsCount": recordCommentsCount, "viewerDidTrack": viewerDidTrack]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumEpisode: MinimumEpisode { - get { - return MinimumEpisode(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - - public struct Work: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumWork.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumWork: MinimumWork { - get { - return MinimumWork(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - - public var asReview: AsReview? { - get { - if !AsReview.possibleTypes.contains(__typename) { return nil } - return AsReview(unsafeResultMap: resultMap) - } - set { - guard let newValue = newValue else { return } - resultMap = newValue.resultMap - } - } - - public struct AsReview: GraphQLSelectionSet { - public static let possibleTypes = ["Review"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("work", type: .nonNull(.object(Work.selections))), - GraphQLField("user", type: .nonNull(.object(User.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(createdAt: String, annictId: Int, id: GraphQLID, work: Work, user: User) { - self.init(unsafeResultMap: ["__typename": "Review", "createdAt": createdAt, "annictId": annictId, "id": id, "work": work.resultMap, "user": user.resultMap]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var createdAt: String { - get { - return resultMap["createdAt"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "createdAt") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var work: Work { - get { - return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "work") - } - } - - public var user: User { - get { - return User(unsafeResultMap: resultMap["user"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "user") - } - } - - public struct Work: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumWork.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumWork: MinimumWork { - get { - return MinimumWork(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - - public struct User: GraphQLSelectionSet { - public static let possibleTypes = ["User"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumUser.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(annictId: Int, name: String, username: String, avatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "annictId": annictId, "name": name, "username": username, "avatarUrl": avatarUrl]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumUser: MinimumUser { - get { - return MinimumUser(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - - public var asMultipleRecord: AsMultipleRecord? { - get { - if !AsMultipleRecord.possibleTypes.contains(__typename) { return nil } - return AsMultipleRecord(unsafeResultMap: resultMap) - } - set { - guard let newValue = newValue else { return } - resultMap = newValue.resultMap - } - } - - public struct AsMultipleRecord: GraphQLSelectionSet { - public static let possibleTypes = ["MultipleRecord"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("records", arguments: ["first": 30], type: .object(Record.selections)), - GraphQLField("work", type: .nonNull(.object(Work.selections))), - GraphQLField("user", type: .nonNull(.object(User.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(createdAt: String, annictId: Int, id: GraphQLID, records: Record? = nil, work: Work, user: User) { - self.init(unsafeResultMap: ["__typename": "MultipleRecord", "createdAt": createdAt, "annictId": annictId, "id": id, "records": records.flatMap { (value: Record) -> ResultMap in value.resultMap }, "work": work.resultMap, "user": user.resultMap]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var createdAt: String { - get { - return resultMap["createdAt"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "createdAt") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var records: Record? { - get { - return (resultMap["records"] as? ResultMap).flatMap { Record(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "records") - } - } - - public var work: Work { - get { - return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "work") - } - } - - public var user: User { - get { - return User(unsafeResultMap: resultMap["user"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "user") - } - } - - public struct Record: GraphQLSelectionSet { - public static let possibleTypes = ["RecordConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(nodes: [Node?]? = nil) { - self.init(unsafeResultMap: ["__typename": "RecordConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Record"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("episode", type: .nonNull(.object(Episode.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(episode: Episode) { - self.init(unsafeResultMap: ["__typename": "Record", "episode": episode.resultMap]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var episode: Episode { - get { - return Episode(unsafeResultMap: resultMap["episode"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "episode") - } - } - - public struct Episode: GraphQLSelectionSet { - public static let possibleTypes = ["Episode"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumEpisode.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, sortNumber: Int, viewerRecordsCount: Int, recordCommentsCount: Int, viewerDidTrack: Bool) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "sortNumber": sortNumber, "viewerRecordsCount": viewerRecordsCount, "recordCommentsCount": recordCommentsCount, "viewerDidTrack": viewerDidTrack]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumEpisode: MinimumEpisode { - get { - return MinimumEpisode(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } - - public struct Work: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumWork.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumWork: MinimumWork { - get { - return MinimumWork(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - - public struct User: GraphQLSelectionSet { - public static let possibleTypes = ["User"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumUser.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(annictId: Int, name: String, username: String, avatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "annictId": annictId, "name": name, "username": username, "avatarUrl": avatarUrl]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumUser: MinimumUser { - get { - return MinimumUser(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } - } - } - } - } -} - -public final class GetEpisodeRecordsQuery: GraphQLQuery { - /// query GetEpisodeRecords($episodeID: Int!) { - /// searchEpisodes(first: 1, annictIds: [$episodeID]) { - /// __typename - /// nodes { - /// __typename - /// ...MinimumEpisode - /// records(first: 30, hasComment: true) { - /// __typename - /// nodes { - /// __typename - /// ...MinimumRecord - /// } - /// } - /// } - /// } - /// } - public let operationDefinition = - "query GetEpisodeRecords($episodeID: Int!) { searchEpisodes(first: 1, annictIds: [$episodeID]) { __typename nodes { __typename ...MinimumEpisode records(first: 30, hasComment: true) { __typename nodes { __typename ...MinimumRecord } } } } }" - - public let operationName = "GetEpisodeRecords" - - public var queryDocument: String { return operationDefinition.appending(MinimumEpisode.fragmentDefinition).appending(MinimumRecord.fragmentDefinition).appending(MinimumUser.fragmentDefinition) } - - public var episodeID: Int - - public init(episodeID: Int) { - self.episodeID = episodeID - } - - public var variables: GraphQLMap? { - return ["episodeID": episodeID] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Query"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("searchEpisodes", arguments: ["first": 1, "annictIds": [GraphQLVariable("episodeID")]], type: .object(SearchEpisode.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(searchEpisodes: SearchEpisode? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "searchEpisodes": searchEpisodes.flatMap { (value: SearchEpisode) -> ResultMap in value.resultMap }]) - } - - public var searchEpisodes: SearchEpisode? { - get { - return (resultMap["searchEpisodes"] as? ResultMap).flatMap { SearchEpisode(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "searchEpisodes") - } - } - - public struct SearchEpisode: GraphQLSelectionSet { - public static let possibleTypes = ["EpisodeConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(nodes: [Node?]? = nil) { - self.init(unsafeResultMap: ["__typename": "EpisodeConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Episode"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumEpisode.self), - GraphQLField("records", arguments: ["first": 30, "hasComment": true], type: .object(Record.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var records: Record? { - get { - return (resultMap["records"] as? ResultMap).flatMap { Record(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "records") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumEpisode: MinimumEpisode { - get { - return MinimumEpisode(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - - public struct Record: GraphQLSelectionSet { - public static let possibleTypes = ["RecordConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(nodes: [Node?]? = nil) { - self.init(unsafeResultMap: ["__typename": "RecordConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Record"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumRecord.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumRecord: MinimumRecord { - get { - return MinimumRecord(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } - } - } -} - -public final class GetViewerInfoQuery: GraphQLQuery { - /// query GetViewerInfo { - /// viewer { - /// __typename - /// watchingCount - /// recordsCount - /// followersCount - /// followingsCount - /// description - /// annictId - /// username - /// name - /// avatarUrl - /// } - /// } - public let operationDefinition = - "query GetViewerInfo { viewer { __typename watchingCount recordsCount followersCount followingsCount description annictId username name avatarUrl } }" - - public let operationName = "GetViewerInfo" - - public init() { - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Query"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("viewer", type: .object(Viewer.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(viewer: Viewer? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "viewer": viewer.flatMap { (value: Viewer) -> ResultMap in value.resultMap }]) - } - - public var viewer: Viewer? { - get { - return (resultMap["viewer"] as? ResultMap).flatMap { Viewer(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "viewer") - } - } - - public struct Viewer: GraphQLSelectionSet { - public static let possibleTypes = ["User"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("watchingCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("recordsCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("followersCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("followingsCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("description", type: .nonNull(.scalar(String.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("username", type: .nonNull(.scalar(String.self))), - GraphQLField("name", type: .nonNull(.scalar(String.self))), - GraphQLField("avatarUrl", type: .scalar(String.self)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(watchingCount: Int, recordsCount: Int, followersCount: Int, followingsCount: Int, description: String, annictId: Int, username: String, name: String, avatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "watchingCount": watchingCount, "recordsCount": recordsCount, "followersCount": followersCount, "followingsCount": followingsCount, "description": description, "annictId": annictId, "username": username, "name": name, "avatarUrl": avatarUrl]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var watchingCount: Int { - get { - return resultMap["watchingCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "watchingCount") - } - } - - public var recordsCount: Int { - get { - return resultMap["recordsCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "recordsCount") - } - } - - public var followersCount: Int { - get { - return resultMap["followersCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "followersCount") - } - } - - public var followingsCount: Int { - get { - return resultMap["followingsCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "followingsCount") - } - } - - public var description: String { - get { - return resultMap["description"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "description") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var username: String { - get { - return resultMap["username"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "username") - } - } - - public var name: String { - get { - return resultMap["name"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "name") - } - } - - public var avatarUrl: String? { - get { - return resultMap["avatarUrl"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "avatarUrl") - } - } - } - } -} - -public final class GetViewerWatchingEpisodesQuery: GraphQLQuery { - /// query GetViewerWatchingEpisodes($first: Int, $after: String) { - /// viewer { - /// __typename - /// works(state: WATCHING, first: $first, after: $after) { - /// __typename - /// pageInfo { - /// __typename - /// endCursor - /// hasNextPage - /// } - /// nodes { - /// __typename - /// ...MinimumWork - /// episodes(orderBy: {field: CREATED_AT, direction: DESC}) { - /// __typename - /// nodes { - /// __typename - /// ...MinimumEpisode - /// } - /// } - /// } - /// } - /// } - /// } - public let operationDefinition = - "query GetViewerWatchingEpisodes($first: Int, $after: String) { viewer { __typename works(state: WATCHING, first: $first, after: $after) { __typename pageInfo { __typename endCursor hasNextPage } nodes { __typename ...MinimumWork episodes(orderBy: {field: CREATED_AT, direction: DESC}) { __typename nodes { __typename ...MinimumEpisode } } } } } }" - - public let operationName = "GetViewerWatchingEpisodes" - - public var queryDocument: String { return operationDefinition.appending(MinimumWork.fragmentDefinition).appending(MinimumEpisode.fragmentDefinition) } - - public var first: Int? - public var after: String? - - public init(first: Int? = nil, after: String? = nil) { - self.first = first - self.after = after - } - - public var variables: GraphQLMap? { - return ["first": first, "after": after] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Query"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("viewer", type: .object(Viewer.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(viewer: Viewer? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "viewer": viewer.flatMap { (value: Viewer) -> ResultMap in value.resultMap }]) - } - - public var viewer: Viewer? { - get { - return (resultMap["viewer"] as? ResultMap).flatMap { Viewer(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "viewer") - } - } - - public struct Viewer: GraphQLSelectionSet { - public static let possibleTypes = ["User"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("works", arguments: ["state": "WATCHING", "first": GraphQLVariable("first"), "after": GraphQLVariable("after")], type: .object(Work.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(works: Work? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "works": works.flatMap { (value: Work) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var works: Work? { - get { - return (resultMap["works"] as? ResultMap).flatMap { Work(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "works") - } - } - - public struct Work: GraphQLSelectionSet { - public static let possibleTypes = ["WorkConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("pageInfo", type: .nonNull(.object(PageInfo.selections))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(pageInfo: PageInfo, nodes: [Node?]? = nil) { - self.init(unsafeResultMap: ["__typename": "WorkConnection", "pageInfo": pageInfo.resultMap, "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// Information to aid in pagination. - public var pageInfo: PageInfo { - get { - return PageInfo(unsafeResultMap: resultMap["pageInfo"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "pageInfo") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - public struct PageInfo: GraphQLSelectionSet { - public static let possibleTypes = ["PageInfo"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("endCursor", type: .scalar(String.self)), - GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(endCursor: String? = nil, hasNextPage: Bool) { - self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// When paginating forwards, the cursor to continue. - public var endCursor: String? { - get { - return resultMap["endCursor"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "endCursor") - } - } - - /// When paginating forwards, are there more items? - public var hasNextPage: Bool { - get { - return resultMap["hasNextPage"]! as! Bool - } - set { - resultMap.updateValue(newValue, forKey: "hasNextPage") - } - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumWork.self), - GraphQLField("episodes", arguments: ["orderBy": ["field": "CREATED_AT", "direction": "DESC"]], type: .object(Episode.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var episodes: Episode? { - get { - return (resultMap["episodes"] as? ResultMap).flatMap { Episode(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "episodes") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumWork: MinimumWork { - get { - return MinimumWork(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - - public struct Episode: GraphQLSelectionSet { - public static let possibleTypes = ["EpisodeConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(nodes: [Node?]? = nil) { - self.init(unsafeResultMap: ["__typename": "EpisodeConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Episode"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumEpisode.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, sortNumber: Int, viewerRecordsCount: Int, recordCommentsCount: Int, viewerDidTrack: Bool) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "sortNumber": sortNumber, "viewerRecordsCount": viewerRecordsCount, "recordCommentsCount": recordCommentsCount, "viewerDidTrack": viewerDidTrack]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumEpisode: MinimumEpisode { - get { - return MinimumEpisode(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } - } - } - } -} - -public final class GetViewerWorksQuery: GraphQLQuery { - /// query GetViewerWorks($state: StatusState, $after: String) { - /// viewer { - /// __typename - /// works(state: $state, first: 30, after: $after, orderBy: {field: SEASON, direction: DESC}) { - /// __typename - /// nodes { - /// __typename - /// ...MinimumWork - /// } - /// pageInfo { - /// __typename - /// endCursor - /// hasNextPage - /// } - /// } - /// } - /// } - public let operationDefinition = - "query GetViewerWorks($state: StatusState, $after: String) { viewer { __typename works(state: $state, first: 30, after: $after, orderBy: {field: SEASON, direction: DESC}) { __typename nodes { __typename ...MinimumWork } pageInfo { __typename endCursor hasNextPage } } } }" - - public let operationName = "GetViewerWorks" - - public var queryDocument: String { return operationDefinition.appending(MinimumWork.fragmentDefinition) } - - public var state: StatusState? - public var after: String? - - public init(state: StatusState? = nil, after: String? = nil) { - self.state = state - self.after = after - } - - public var variables: GraphQLMap? { - return ["state": state, "after": after] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Query"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("viewer", type: .object(Viewer.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(viewer: Viewer? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "viewer": viewer.flatMap { (value: Viewer) -> ResultMap in value.resultMap }]) - } - - public var viewer: Viewer? { - get { - return (resultMap["viewer"] as? ResultMap).flatMap { Viewer(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "viewer") - } - } - - public struct Viewer: GraphQLSelectionSet { - public static let possibleTypes = ["User"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("works", arguments: ["state": GraphQLVariable("state"), "first": 30, "after": GraphQLVariable("after"), "orderBy": ["field": "SEASON", "direction": "DESC"]], type: .object(Work.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(works: Work? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "works": works.flatMap { (value: Work) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var works: Work? { - get { - return (resultMap["works"] as? ResultMap).flatMap { Work(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "works") - } - } - - public struct Work: GraphQLSelectionSet { - public static let possibleTypes = ["WorkConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - GraphQLField("pageInfo", type: .nonNull(.object(PageInfo.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(nodes: [Node?]? = nil, pageInfo: PageInfo) { - self.init(unsafeResultMap: ["__typename": "WorkConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, "pageInfo": pageInfo.resultMap]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - /// Information to aid in pagination. - public var pageInfo: PageInfo { - get { - return PageInfo(unsafeResultMap: resultMap["pageInfo"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "pageInfo") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumWork.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumWork: MinimumWork { - get { - return MinimumWork(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - - public struct PageInfo: GraphQLSelectionSet { - public static let possibleTypes = ["PageInfo"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("endCursor", type: .scalar(String.self)), - GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(endCursor: String? = nil, hasNextPage: Bool) { - self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// When paginating forwards, the cursor to continue. - public var endCursor: String? { - get { - return resultMap["endCursor"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "endCursor") - } - } - - /// When paginating forwards, are there more items? - public var hasNextPage: Bool { - get { - return resultMap["hasNextPage"]! as! Bool - } - set { - resultMap.updateValue(newValue, forKey: "hasNextPage") - } - } - } - } - } - } -} - -public final class SearchWorksQuery: GraphQLQuery { - /// query SearchWorks($season: String!, $after: String) { - /// searchWorks(seasons: [$season], orderBy: {field: WATCHERS_COUNT, direction: DESC}, first: 30, after: $after) { - /// __typename - /// nodes { - /// __typename - /// ...MinimumWork - /// } - /// pageInfo { - /// __typename - /// endCursor - /// hasNextPage - /// } - /// } - /// } - public let operationDefinition = - "query SearchWorks($season: String!, $after: String) { searchWorks(seasons: [$season], orderBy: {field: WATCHERS_COUNT, direction: DESC}, first: 30, after: $after) { __typename nodes { __typename ...MinimumWork } pageInfo { __typename endCursor hasNextPage } } }" - - public let operationName = "SearchWorks" - - public var queryDocument: String { return operationDefinition.appending(MinimumWork.fragmentDefinition) } - - public var season: String - public var after: String? - - public init(season: String, after: String? = nil) { - self.season = season - self.after = after - } - - public var variables: GraphQLMap? { - return ["season": season, "after": after] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Query"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("searchWorks", arguments: ["seasons": [GraphQLVariable("season")], "orderBy": ["field": "WATCHERS_COUNT", "direction": "DESC"], "first": 30, "after": GraphQLVariable("after")], type: .object(SearchWork.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(searchWorks: SearchWork? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) - } - - public var searchWorks: SearchWork? { - get { - return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") - } - } - - public struct SearchWork: GraphQLSelectionSet { - public static let possibleTypes = ["WorkConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - GraphQLField("pageInfo", type: .nonNull(.object(PageInfo.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(nodes: [Node?]? = nil, pageInfo: PageInfo) { - self.init(unsafeResultMap: ["__typename": "WorkConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, "pageInfo": pageInfo.resultMap]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - /// Information to aid in pagination. - public var pageInfo: PageInfo { - get { - return PageInfo(unsafeResultMap: resultMap["pageInfo"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "pageInfo") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumWork.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumWork: MinimumWork { - get { - return MinimumWork(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - - public struct PageInfo: GraphQLSelectionSet { - public static let possibleTypes = ["PageInfo"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("endCursor", type: .scalar(String.self)), - GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(endCursor: String? = nil, hasNextPage: Bool) { - self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// When paginating forwards, the cursor to continue. - public var endCursor: String? { - get { - return resultMap["endCursor"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "endCursor") - } - } - - /// When paginating forwards, are there more items? - public var hasNextPage: Bool { - get { - return resultMap["hasNextPage"]! as! Bool - } - set { - resultMap.updateValue(newValue, forKey: "hasNextPage") - } - } - } - } - } -} - -public final class SearchWorksByIdQuery: GraphQLQuery { - /// query SearchWorksByID($annictId: Int!, $after: String) { - /// searchWorks(annictIds: [$annictId]) { - /// __typename - /// nodes { - /// __typename - /// episodes(first: 30, after: $after, orderBy: {field: SORT_NUMBER, direction: ASC}) { - /// __typename - /// nodes { - /// __typename - /// ...MinimumEpisode - /// } - /// pageInfo { - /// __typename - /// ...PageInfoF - /// } - /// } - /// } - /// } - /// } - public let operationDefinition = - "query SearchWorksByID($annictId: Int!, $after: String) { searchWorks(annictIds: [$annictId]) { __typename nodes { __typename episodes(first: 30, after: $after, orderBy: {field: SORT_NUMBER, direction: ASC}) { __typename nodes { __typename ...MinimumEpisode } pageInfo { __typename ...PageInfoF } } } } }" - - public let operationName = "SearchWorksByID" - - public var queryDocument: String { return operationDefinition.appending(MinimumEpisode.fragmentDefinition).appending(PageInfoF.fragmentDefinition) } - - public var annictId: Int - public var after: String? - - public init(annictId: Int, after: String? = nil) { - self.annictId = annictId - self.after = after - } - - public var variables: GraphQLMap? { - return ["annictId": annictId, "after": after] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Query"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("searchWorks", arguments: ["annictIds": [GraphQLVariable("annictId")]], type: .object(SearchWork.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(searchWorks: SearchWork? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) - } - - public var searchWorks: SearchWork? { - get { - return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") - } - } - - public struct SearchWork: GraphQLSelectionSet { - public static let possibleTypes = ["WorkConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(nodes: [Node?]? = nil) { - self.init(unsafeResultMap: ["__typename": "WorkConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("episodes", arguments: ["first": 30, "after": GraphQLVariable("after"), "orderBy": ["field": "SORT_NUMBER", "direction": "ASC"]], type: .object(Episode.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(episodes: Episode? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "episodes": episodes.flatMap { (value: Episode) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var episodes: Episode? { - get { - return (resultMap["episodes"] as? ResultMap).flatMap { Episode(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "episodes") - } - } - - public struct Episode: GraphQLSelectionSet { - public static let possibleTypes = ["EpisodeConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - GraphQLField("pageInfo", type: .nonNull(.object(PageInfo.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(nodes: [Node?]? = nil, pageInfo: PageInfo) { - self.init(unsafeResultMap: ["__typename": "EpisodeConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, "pageInfo": pageInfo.resultMap]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - /// Information to aid in pagination. - public var pageInfo: PageInfo { - get { - return PageInfo(unsafeResultMap: resultMap["pageInfo"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "pageInfo") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Episode"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumEpisode.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, sortNumber: Int, viewerRecordsCount: Int, recordCommentsCount: Int, viewerDidTrack: Bool) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "sortNumber": sortNumber, "viewerRecordsCount": viewerRecordsCount, "recordCommentsCount": recordCommentsCount, "viewerDidTrack": viewerDidTrack]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumEpisode: MinimumEpisode { - get { - return MinimumEpisode(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - - public struct PageInfo: GraphQLSelectionSet { - public static let possibleTypes = ["PageInfo"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(PageInfoF.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(endCursor: String? = nil, hasNextPage: Bool) { - self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var pageInfoF: PageInfoF { - get { - return PageInfoF(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } - } - } -} - -public final class SearchWorksByTitleQuery: GraphQLQuery { - /// query SearchWorksByTitle($title: String!) { - /// searchWorks(titles: [$title], orderBy: {field: WATCHERS_COUNT, direction: DESC}, first: 30) { - /// __typename - /// nodes { - /// __typename - /// ...MinimumWork - /// } - /// } - /// } - public let operationDefinition = - "query SearchWorksByTitle($title: String!) { searchWorks(titles: [$title], orderBy: {field: WATCHERS_COUNT, direction: DESC}, first: 30) { __typename nodes { __typename ...MinimumWork } } }" - - public let operationName = "SearchWorksByTitle" - - public var queryDocument: String { return operationDefinition.appending(MinimumWork.fragmentDefinition) } - - public var title: String - - public init(title: String) { - self.title = title - } - - public var variables: GraphQLMap? { - return ["title": title] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Query"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("searchWorks", arguments: ["titles": [GraphQLVariable("title")], "orderBy": ["field": "WATCHERS_COUNT", "direction": "DESC"], "first": 30], type: .object(SearchWork.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(searchWorks: SearchWork? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) - } - - public var searchWorks: SearchWork? { - get { - return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") - } - } - - public struct SearchWork: GraphQLSelectionSet { - public static let possibleTypes = ["WorkConnection"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(nodes: [Node?]? = nil) { - self.init(unsafeResultMap: ["__typename": "WorkConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } - - public struct Node: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumWork.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumWork: MinimumWork { - get { - return MinimumWork(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } -} - -public final class UpdateStatusMutation: GraphQLMutation { - /// mutation UpdateStatus($state: StatusState!, $workId: ID!) { - /// updateStatus(input: {state: $state, workId: $workId}) { - /// __typename - /// work { - /// __typename - /// ...MinimumWork - /// } - /// } - /// } - public let operationDefinition = - "mutation UpdateStatus($state: StatusState!, $workId: ID!) { updateStatus(input: {state: $state, workId: $workId}) { __typename work { __typename ...MinimumWork } } }" - - public let operationName = "UpdateStatus" - - public var queryDocument: String { return operationDefinition.appending(MinimumWork.fragmentDefinition) } - - public var state: StatusState - public var workId: GraphQLID - - public init(state: StatusState, workId: GraphQLID) { - self.state = state - self.workId = workId - } - - public var variables: GraphQLMap? { - return ["state": state, "workId": workId] - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes = ["Mutation"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("updateStatus", arguments: ["input": ["state": GraphQLVariable("state"), "workId": GraphQLVariable("workId")]], type: .object(UpdateStatus.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(updateStatus: UpdateStatus? = nil) { - self.init(unsafeResultMap: ["__typename": "Mutation", "updateStatus": updateStatus.flatMap { (value: UpdateStatus) -> ResultMap in value.resultMap }]) - } - - public var updateStatus: UpdateStatus? { - get { - return (resultMap["updateStatus"] as? ResultMap).flatMap { UpdateStatus(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "updateStatus") - } - } - - public struct UpdateStatus: GraphQLSelectionSet { - public static let possibleTypes = ["UpdateStatusPayload"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("work", type: .object(Work.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(work: Work? = nil) { - self.init(unsafeResultMap: ["__typename": "UpdateStatusPayload", "work": work.flatMap { (value: Work) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var work: Work? { - get { - return (resultMap["work"] as? ResultMap).flatMap { Work(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "work") - } - } - - public struct Work: GraphQLSelectionSet { - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumWork.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumWork: MinimumWork { - get { - return MinimumWork(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } -} - -public struct EpisodeDetails: GraphQLFragment { - /// fragment EpisodeDetails on Episode { - /// __typename - /// id - /// annictId - /// title - /// viewerRecordsCount - /// viewerDidTrack - /// numberText - /// } - public static let fragmentDefinition = - "fragment EpisodeDetails on Episode { __typename id annictId title viewerRecordsCount viewerDidTrack numberText }" - - public static let possibleTypes = ["Episode"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("title", type: .scalar(String.self)), - GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("viewerDidTrack", type: .nonNull(.scalar(Bool.self))), - GraphQLField("numberText", type: .scalar(String.self)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, title: String? = nil, viewerRecordsCount: Int, viewerDidTrack: Bool, numberText: String? = nil) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "viewerRecordsCount": viewerRecordsCount, "viewerDidTrack": viewerDidTrack, "numberText": numberText]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var title: String? { - get { - return resultMap["title"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "title") - } - } - - public var viewerRecordsCount: Int { - get { - return resultMap["viewerRecordsCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "viewerRecordsCount") - } - } - - public var viewerDidTrack: Bool { - get { - return resultMap["viewerDidTrack"]! as! Bool - } - set { - resultMap.updateValue(newValue, forKey: "viewerDidTrack") - } - } - - public var numberText: String? { - get { - return resultMap["numberText"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "numberText") - } - } -} - -public struct MinimumWork: GraphQLFragment { - /// fragment MinimumWork on Work { - /// __typename - /// id - /// annictId - /// title - /// episodesCount - /// watchersCount - /// reviewsCount - /// seasonName - /// seasonYear - /// viewerStatusState - /// image { - /// __typename - /// recommendedImageUrl - /// twitterAvatarUrl - /// } - /// } - public static let fragmentDefinition = - "fragment MinimumWork on Work { __typename id annictId title episodesCount watchersCount reviewsCount seasonName seasonYear viewerStatusState image { __typename recommendedImageUrl twitterAvatarUrl } }" - - public static let possibleTypes = ["Work"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("title", type: .nonNull(.scalar(String.self))), - GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("seasonName", type: .scalar(SeasonName.self)), - GraphQLField("seasonYear", type: .scalar(Int.self)), - GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), - GraphQLField("image", type: .object(Image.selections)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, image: Image? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "image": image.flatMap { (value: Image) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var title: String { - get { - return resultMap["title"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "title") - } - } - - public var episodesCount: Int { - get { - return resultMap["episodesCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "episodesCount") - } - } - - public var watchersCount: Int { - get { - return resultMap["watchersCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "watchersCount") - } - } - - public var reviewsCount: Int { - get { - return resultMap["reviewsCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "reviewsCount") - } - } - - public var seasonName: SeasonName? { - get { - return resultMap["seasonName"] as? SeasonName - } - set { - resultMap.updateValue(newValue, forKey: "seasonName") - } - } - - public var seasonYear: Int? { - get { - return resultMap["seasonYear"] as? Int - } - set { - resultMap.updateValue(newValue, forKey: "seasonYear") - } - } - - public var viewerStatusState: StatusState? { - get { - return resultMap["viewerStatusState"] as? StatusState - } - set { - resultMap.updateValue(newValue, forKey: "viewerStatusState") - } - } - - public var image: Image? { - get { - return (resultMap["image"] as? ResultMap).flatMap { Image(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "image") - } - } - - public struct Image: GraphQLSelectionSet { - public static let possibleTypes = ["WorkImage"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("recommendedImageUrl", type: .scalar(String.self)), - GraphQLField("twitterAvatarUrl", type: .scalar(String.self)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(recommendedImageUrl: String? = nil, twitterAvatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "WorkImage", "recommendedImageUrl": recommendedImageUrl, "twitterAvatarUrl": twitterAvatarUrl]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var recommendedImageUrl: String? { - get { - return resultMap["recommendedImageUrl"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "recommendedImageUrl") - } - } - - public var twitterAvatarUrl: String? { - get { - return resultMap["twitterAvatarUrl"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "twitterAvatarUrl") - } - } - } -} - -public struct MinimumUser: GraphQLFragment { - /// fragment MinimumUser on User { - /// __typename - /// annictId - /// name - /// username - /// avatarUrl - /// } - public static let fragmentDefinition = - "fragment MinimumUser on User { __typename annictId name username avatarUrl }" - - public static let possibleTypes = ["User"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("name", type: .nonNull(.scalar(String.self))), - GraphQLField("username", type: .nonNull(.scalar(String.self))), - GraphQLField("avatarUrl", type: .scalar(String.self)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(annictId: Int, name: String, username: String, avatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "annictId": annictId, "name": name, "username": username, "avatarUrl": avatarUrl]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var name: String { - get { - return resultMap["name"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "name") - } - } - - public var username: String { - get { - return resultMap["username"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "username") - } - } - - public var avatarUrl: String? { - get { - return resultMap["avatarUrl"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "avatarUrl") - } - } -} - -public struct MinimumEpisode: GraphQLFragment { - /// fragment MinimumEpisode on Episode { - /// __typename - /// id - /// annictId - /// title - /// numberText - /// sortNumber - /// viewerRecordsCount - /// recordCommentsCount - /// viewerDidTrack - /// } - public static let fragmentDefinition = - "fragment MinimumEpisode on Episode { __typename id annictId title numberText sortNumber viewerRecordsCount recordCommentsCount viewerDidTrack }" - - public static let possibleTypes = ["Episode"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("title", type: .scalar(String.self)), - GraphQLField("numberText", type: .scalar(String.self)), - GraphQLField("sortNumber", type: .nonNull(.scalar(Int.self))), - GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("recordCommentsCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("viewerDidTrack", type: .nonNull(.scalar(Bool.self))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, sortNumber: Int, viewerRecordsCount: Int, recordCommentsCount: Int, viewerDidTrack: Bool) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "sortNumber": sortNumber, "viewerRecordsCount": viewerRecordsCount, "recordCommentsCount": recordCommentsCount, "viewerDidTrack": viewerDidTrack]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var title: String? { - get { - return resultMap["title"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "title") - } - } - - public var numberText: String? { - get { - return resultMap["numberText"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "numberText") - } - } - - public var sortNumber: Int { - get { - return resultMap["sortNumber"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "sortNumber") - } - } - - public var viewerRecordsCount: Int { - get { - return resultMap["viewerRecordsCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "viewerRecordsCount") - } - } - - public var recordCommentsCount: Int { - get { - return resultMap["recordCommentsCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "recordCommentsCount") - } - } - - public var viewerDidTrack: Bool { - get { - return resultMap["viewerDidTrack"]! as! Bool - } - set { - resultMap.updateValue(newValue, forKey: "viewerDidTrack") - } - } -} - -public struct PageInfoFrag: GraphQLFragment { - /// fragment PageInfoFrag on PageInfo { - /// __typename - /// endCursor - /// hasNextPage - /// hasPreviousPage - /// startCursor - /// } - public static let fragmentDefinition = - "fragment PageInfoFrag on PageInfo { __typename endCursor hasNextPage hasPreviousPage startCursor }" - - public static let possibleTypes = ["PageInfo"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("endCursor", type: .scalar(String.self)), - GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), - GraphQLField("hasPreviousPage", type: .nonNull(.scalar(Bool.self))), - GraphQLField("startCursor", type: .scalar(String.self)), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(endCursor: String? = nil, hasNextPage: Bool, hasPreviousPage: Bool, startCursor: String? = nil) { - self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage, "hasPreviousPage": hasPreviousPage, "startCursor": startCursor]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// When paginating forwards, the cursor to continue. - public var endCursor: String? { - get { - return resultMap["endCursor"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "endCursor") - } - } - - /// When paginating forwards, are there more items? - public var hasNextPage: Bool { - get { - return resultMap["hasNextPage"]! as! Bool - } - set { - resultMap.updateValue(newValue, forKey: "hasNextPage") - } - } - - /// When paginating backwards, are there more items? - public var hasPreviousPage: Bool { - get { - return resultMap["hasPreviousPage"]! as! Bool - } - set { - resultMap.updateValue(newValue, forKey: "hasPreviousPage") - } - } - - /// When paginating backwards, the cursor to continue. - public var startCursor: String? { - get { - return resultMap["startCursor"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "startCursor") - } - } -} - -public struct MinimumRecord: GraphQLFragment { - /// fragment MinimumRecord on Record { - /// __typename - /// id - /// annictId - /// comment - /// commentsCount - /// createdAt - /// likesCount - /// ratingState - /// user { - /// __typename - /// ...MinimumUser - /// } - /// } - public static let fragmentDefinition = - "fragment MinimumRecord on Record { __typename id annictId comment commentsCount createdAt likesCount ratingState user { __typename ...MinimumUser } }" - - public static let possibleTypes = ["Record"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("comment", type: .scalar(String.self)), - GraphQLField("commentsCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), - GraphQLField("likesCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("ratingState", type: .scalar(RatingState.self)), - GraphQLField("user", type: .nonNull(.object(User.selections))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, comment: String? = nil, commentsCount: Int, createdAt: String, likesCount: Int, ratingState: RatingState? = nil, user: User) { - self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "comment": comment, "commentsCount": commentsCount, "createdAt": createdAt, "likesCount": likesCount, "ratingState": ratingState, "user": user.resultMap]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var comment: String? { - get { - return resultMap["comment"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "comment") - } - } - - public var commentsCount: Int { - get { - return resultMap["commentsCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "commentsCount") - } - } - - public var createdAt: String { - get { - return resultMap["createdAt"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "createdAt") - } - } - - public var likesCount: Int { - get { - return resultMap["likesCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "likesCount") - } - } - - public var ratingState: RatingState? { - get { - return resultMap["ratingState"] as? RatingState - } - set { - resultMap.updateValue(newValue, forKey: "ratingState") - } - } - - public var user: User { - get { - return User(unsafeResultMap: resultMap["user"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "user") - } - } - - public struct User: GraphQLSelectionSet { - public static let possibleTypes = ["User"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(MinimumUser.self), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(annictId: Int, name: String, username: String, avatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "annictId": annictId, "name": name, "username": username, "avatarUrl": avatarUrl]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var minimumUser: MinimumUser { - get { - return MinimumUser(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } -} - -public struct PageInfoF: GraphQLFragment { - /// fragment PageInfoF on PageInfo { - /// __typename - /// endCursor - /// hasNextPage - /// } - public static let fragmentDefinition = - "fragment PageInfoF on PageInfo { __typename endCursor hasNextPage }" - - public static let possibleTypes = ["PageInfo"] - - public static let selections: [GraphQLSelection] = [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("endCursor", type: .scalar(String.self)), - GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), - ] - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(endCursor: String? = nil, hasNextPage: Bool) { - self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// When paginating forwards, the cursor to continue. - public var endCursor: String? { - get { - return resultMap["endCursor"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "endCursor") - } - } - - /// When paginating forwards, are there more items? - public var hasNextPage: Bool { - get { - return resultMap["hasNextPage"]! as! Bool - } - set { - resultMap.updateValue(newValue, forKey: "hasNextPage") - } - } -} diff --git a/Annict-for-iOS/Assets.xcassets/Contents.json b/Annict-for-iOS/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596..00000000 --- a/Annict-for-iOS/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Annict-for-iOS/Assets.xcassets/Tab/Contents.json b/Annict-for-iOS/Assets.xcassets/Tab/Contents.json deleted file mode 100644 index da4a164c..00000000 --- a/Annict-for-iOS/Assets.xcassets/Tab/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Annict-for-iOS/Assets.xcassets/Tab/account.imageset/Contents.json b/Annict-for-iOS/Assets.xcassets/Tab/account.imageset/Contents.json deleted file mode 100644 index 2d68969b..00000000 --- a/Annict-for-iOS/Assets.xcassets/Tab/account.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "User.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/Annict-for-iOS/Assets.xcassets/Tab/account.imageset/User.pdf b/Annict-for-iOS/Assets.xcassets/Tab/account.imageset/User.pdf deleted file mode 100644 index a69187b66f7fb05d4b48848d0e7064aba19356b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145688 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%0DOW$m?ZHO}# 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 BnftTYcwT&^@tlR6lTZcPH|uB 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

8(?} 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 diff --git a/Annict-for-iOS/Assets.xcassets/Tab/pencil.imageset/Contents.json b/Annict-for-iOS/Assets.xcassets/Tab/pencil.imageset/Contents.json deleted file mode 100644 index 54cb9b07..00000000 --- a/Annict-for-iOS/Assets.xcassets/Tab/pencil.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "Pencil.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/Annict-for-iOS/Assets.xcassets/Tab/pencil.imageset/Pencil.pdf b/Annict-for-iOS/Assets.xcassets/Tab/pencil.imageset/Pencil.pdf deleted file mode 100644 index 132dba42b5dffe1e9bed6e99df10a54880ca8c27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145688 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 z 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 z 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

>G-DOn=&PO;5m?vWLl;NYFTf;Jc<0T%{EC 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%0ANc|+ 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�DP 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 edpU zbPv(AT!;ai*Uo-vCX|Df>V%fKvf7D7l}}<9s02aX@4!7L=c!dBX$HShTU|t1=Pq&$ zZT1&K_fa8NE|)@tCEl8D4m$=EwnBpnrc167ULpSgrob2NL@n(^%7RH3c|~lrx&4Z^ zd&zofj%xD@=s)>6fm02G1Y2bYUppj~!8RAg`C&)Nf<14k6qcaXGG&E*CX!ZD&aBkk z<_sjE5msH!n$LC%B=R~Wo0YZZ!h>sXd*Wsj5Ef3-CP2ic6hCD*+MG)djuRM8`s(7D zG;gfnNaI$<#+ojBl+-di+#j?b^2AK7OeQEx<&r#}Zd}xC_&wdM&U>RmkMp2D{P{&7 zonhWQ>Dmv;Y9F8ksLU;?3Ch@6w<7~-_i8R(F42Up(T0aZvN2l9JUvhIeTQ8!6TR+y zw0VAUgZN<=1Mf?(4F~*3GAKCHT_}Y-nf6J2_gDl2Y8?jPG+>v7eZR)_`s8)-c|4J@TP? z$nf{tQO3uAR}>qBeki7wkU{r7_*fWgnRJA}?)LEaaB3xyMRqVD5`J+2p54!1oguY_ zjmLQ1!IiW=pxd9Uf}#Tu>&{UT*8+Q`At-dNx2UpX5C3wS1WVgT{KGpqm(0Pw%y|3Gva5N647@whNl+cVg@jA0@#_^0IWbDE2ky^K=pZi(#hBu{fmV7|4qWj_n&Qa zwKq0_2M{xHzytm(5wih-EI?ut;(udItUv$@8}YxNe#R00Pda91;Qz!}nAlnWCk6m8 zGyel)2K=);7Qp{f9t+1mct6|mKQWg7g%`jI_(#1gO#c$pztVrd2MaUspY?J8|H=E= z!~fvrVEG3fE7PYq|F1g!)qhMZ|BX4?>zi8|+r$5BR4AFd8GrUYF{7f5jUzGBXKBQW z#EcTwCN{)O|B)9V)*|NNFkv&%*Jt4bn6T>`vU39TS=kMZj9EF1Iob4?j5v(=;Q#+5 e#5%;EVs~)-99RDq`e(bC0RVUk3Q@Tq@c#!szi+bu diff --git a/Annict-for-iOS/Assets.xcassets/paperplane_fill.imageset/Contents.json b/Annict-for-iOS/Assets.xcassets/paperplane_fill.imageset/Contents.json deleted file mode 100644 index 0c52867e..00000000 --- a/Annict-for-iOS/Assets.xcassets/paperplane_fill.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "paperplane_fill.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/Annict-for-iOS/Assets.xcassets/paperplane_fill.imageset/paperplane_fill.pdf b/Annict-for-iOS/Assets.xcassets/paperplane_fill.imageset/paperplane_fill.pdf deleted file mode 100644 index 19c12375024938a8eef6692f05af23f4ca432c1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145733 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

CCsD$zkGN+p@*ZI0XYe5DJ?)Nu%oc{zxz-_ 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 z

M1J51kKwKSEUME0(yPRrCZ=QTB{8)KUMfNuBH88IjQT*@3cC+9Fne_r&|8!^6) zF)prZmpqpmC#~S6*D{XPC&HVdw%D>13)66nXukT2sjAGYMXSxKbCp|Ad{Cfv(Na_% zYHIO4^)4UzU-=F5vny92Qd>J(F6M3!$BUc9!)o!S;3xVCH??e5=ArEew-*IvM8zl; zZa(mwDNEmWFq{jE-Wrz1ANXuxH?uW2G%-FReh{f0zGLSgQakBjuHydxklGlVSd;gE zA`{?8f@1%zMEPy6#T}n=bl!*9R-h0UG)A_c8Cx7a5i>v?ljRX0gcoz^!f@4Ov&+~F zzu9x+yYG8}7JkP=BWu*iy;M(b-G2OZ`OWE5RvJ&8ac9{#eBXSud(avC<~!r-QwKX^ z%O9h0UYCTgz4Q8OS4o`3+WapFiW+C}nH*}IkMMCA-{2sphoziQQlZuT zsF6Ka^(kdLx?E0eyr|Hx(5*E+XW3|xJ+l8la_jPtQ?TTv%Eo$5Hm52M%ho%%ENoNx zL%LphO4{WTWN_LOKl&KPMOzr!8*TX|$!;gEo;lQ+qNaATlmN?_bUfsvZxNdWboP}? zLADoCmGB2x&;*{Qr()%_A|YHd1($3p9p!BfBn7N62H%7EWv@2fWfpCr)m`oz3zQSD z|F-`Hdah$3`05bfTf$c-fS%l>N`J$DnUJ10SX2^Flfs?C)LtrJ@!y8bUs>A<6UhOFb zUdk8E8JV4)m@bn#ftls*U}6yuZBN=kC=D$-=yUqMy3S9#fYwHMMmkhuA97w4m!NOZiCeRd~#z3a>h^#=s ziy<8OhNv=DARCvY>m4Phvay_Kzg&mgqhj7Vl(GiIN`)Jt5{;8}WW?HU>5xMhDt}kr z{g@0kq+AlP`bd*=5cm@m^IA#0~ml^Vcg1!W|xHhB+NDwP;MkFNeg z+&#z!_IS+(_84FTr|HLIKY@E`mGm3}AaHvho3|9~2S-pyT8zm_nSoriM+-PhoPkZX zLiA8QHtn9_?hz9jsKu>z4zprY%D9^*!hUg{VQ5u7&_a)Ux*zjoTi+1^EMbPE zQ^GRlAUu<5^53vk82`M1yzzqne_Xu>TohN^KAghLth-7QlQpor%)}ZKd+!Q1RBUwV zMS4eyG#gz&5F1!g1f_^{q@#!}_TEcOqDf5Av@^SBmiK?H=6T-l{j$HfFgroAJ9Ex` zU-wnSM)6zb;diAy7gZM{PtW+Cmm0+H;N|-D$ZF8E^ly4E0jV0#p;_xYguroV5et)( zeh81rMM=WZk<0DqOr#2BaY#xzZ*NE-Tg<_lxF7!akMLK>axa#etU5!WV~*v>(8-VK zqjLZ5KqPrrXwB!o0u~%DRPM* zeGL9bpD=mb+9q{ldr?K3@Vw{AnS19HbZjL<7uC-D29_WF2zwXGnQ4TbMm3_18I96q z%Sq!(fs6@e$V#7^R!HCL3pX`vm5buNf6=7Jy>4}J~XfWlXJ zO};Lb5ojd)CQ-HhS3_mvMmfQPZ6IzS=(2`E-Mkd*n}$H4Pp0WEE77)o0-vKP53e6< zJHeN*USJIIL+RH5GNG>-*{zrK|(!dH8@hP zyDe7)i5|-4vf9>E!BSky)TW1(`l@Ld>l+;6<69Y0E0787d1(%_I{!#ytr~r#r?RKH z_4H}C7F%0aH(T2l*B&_aO7JDb2lcI>+a<}AH{Dw228V7~3sc4s^d)2Kl0ECRi#US* zWD<9%d_$%BR!i$mftYJOIgy3F&x<@4eliIEPhz8;Mh^Vr0 zybV03ZtZs?#RNrd9K?aH~Ai2DfiiC9}pS@*!*1{zy)>YGIl6;R(c^I!Xk{&W1 z?X_#$4fu66D?URg-W&0y_>%reUP#XbshS;U11~g<_BuDF$LFf0J#DQr4gMn2AA9#681B0 ztBGX7D=ctfbj@g7LJ+JgFVuB@0|U;Fw6B5B|( z)W8n4=t}-nKDl!3$z#i_)23QlPMdmV;Zp$xGsZ{STB)p#*gTlPi;dE^41NFCpM1#IYK6}=^^MlX2ZGkjFwL855DKHO zpE-r9?D$PlX)!S>n?~OYO_h6(mGFO@yV(T33Nd|RPCpiA;bKT&=wXGn4@EEvbLN{@ zf>y<47H;0XN400m?%YBiAt^swe`D~2^Z=S>y=(-a$YO59nWb+dG}e|Xe|~s_z%&>N zQAWeUQ09|I?XTO=$ZeyFrZ2C{LKC8s{Ggeck@cl^E+FnocGJz=M};?J8W?}aKm-0y zlDo9uOfjIUtN_l5_$Z$;YE@aa>yCw#NiW2wCdE9Ca4g)5&8ex>JR*+Wt&)T40%nn%1)Je*PYAHU7;431Oc| z*BRIR%CHk^@YxS2ufm@GitXt|mNvGFU=Dr_x2K3GEHJU|l7k=%tfK|L3*r{Jc*P8z z=2;bZK9%%{I1BCIKi<7@Z|(0|Yav1QJ?@GD_eIvlH^9}kHlR%)4nR@fx#QtwziO9v zFZ=nsy4K)jTrXMV^$q1)Lvuk3f9O+{)iq)>tQwgsb(ES-Ukq+O{DbIo`HV$|F9EpI z_pU4lKUyOjFRnpg)HLi;pWG>b`3PX2=*C>WeXs?gXKR}m-Qgv}ftNGplmpS%Posm( zdL7{q{_8XX{2(bwMADK5sdOIbTxvzbIF_boBJJb)4;KbF#5+=9J>BT?q8mnl7gw(NtYoY`FOQPYPGn2)rb{n%cGBqJq6N%uL8>$J=y?3N<=WM&&6ZQAc{(kC zW6NU1!lMk$XAV>)HwMBcR%;`#ifb%9P$d%y`AT{AHFMy2a>FdMSMU|drsYafu1%%o zBu)&ZleD6~mGhH2HqpVswErwO((B&{Zg_Gc7FiHXFNJb zru7IUPCJ0E$fg6ObqIkOEUu#t*(3oWFgcm2F&Qei^+9n<)TzNaIcadq<2L7?%HD?g zmht{reHvO@>*`zE>Q}qE8hp@5`2g3|I0hS!{~iNI zH(tZqg`wE|yCiHgKk$WcyR&_jCph?lzak! z+i1&M{8IXxrDLZLMqOq$|9di=Cx3H@QiRo%*~ODVV+2Xg0e@7X$yiG!|8a|a*28bb z-PGUe+D{K!t`M$FXerozaBHiKtUCfN%s>KH)4@bOoql~^@F_a9u1!q>{($Ig5dDI_ z2RYeD_z+NLMy#ispzH1Zi?QkHjOfNPouDsP>Za?)^iI`%&8+cSx9}^V)S=vnLd(P6 zyhhO{S6SRpaOEdpW7_4&!O{IAx335V-&Q03pj_dwYURq4j^_lOD|_x_*V(fUoht;% zn5@8##T;jXMd%ZxhKT-hfv(B{=rEc$|D#lp-TSxi+%Iet6$l&#vX4M+Euo>Xa!kT;ZARF*Dmy2a?0v-f+-x{eFmb}_VbE8U2}dyA@M zOKDySueW8B&oYlU_%}kXyMuLbcemF)mn#JEd+t^iLq5BAgY<)gC1CfdoMYq~%$|1Y z16cay_)+lP7(f0e@+Geg06@KoqdQTLTaeS()4YR@*VP?6-cWxmz{e*jV6`AE$x-?Q zRpDS&UH!2@91L77kca_3fjCxWIR5sSk6^4f-=;iXQe-f($rH<%eaCkksZpKrsawI* ze^`&uP%rmm@T(-pGFh4@vwM2&6CerQA^UL0a9$Ckd~R5 zk+C^9AKJ`ZlWBuY7p*Jb4dIDkKiu_xvky_>)9g6=v?( zl3xIY!%uLh`|Ljohg4esR^hNb-6?C`JB7nC#aD0Z>zcMSVWF77)Tf7+_^LfZ{av;R zSEU4$)kh<15Tk1-t6N%oPP;bS+Pb;h+B6%=YNZYylwaO#dxIqM$M7C85zDH&-S(d1i@Yq*4<*_?~4KsO}#eMSR|1h}!z ztp+OAmn>0%XJCgJXcujw9&{?*mB16U&>DqKrr(0`gw;jEJaC8P!u493X-A_{RcaTr zsVxCbjwfYOp}60<)BU*Hc2oUIxbw!<;tlRHat^3!+bnD%lsUb*zW$8*OuY}by^WMI zE}H`aoz?WV(c)Dd7r*K1xOAz@X=#>V<>a)OHzq~Q-h>T#&^_d^vFi)r>~WeqR9JA3 zCpqllg1o)^1n}L9nB3gFEqUr~c^N4}?-VXI!;n-(Mi%7f7vk^0@-yKvS>UuYbK91! zJKzBXPT?zJrG{_EEVN7EJB3`Qj8*BYv(|4-+Xd;#P{py}Rlvx|Cv8mL_U&7?tBdy} zM8_v@h))&h#AVqF4KL*W_l1Py^>1HT%232$A<}bVHTd4hZZbrAdXkB>4U9>^G0L+ zvk)Y&e5HF>x0%iZerv?|>e<_5j!JiuLjdq2`rcW-cdUr}d*rutGGcxw_l}Wvnb7xE z+E1q{RqshSr=7JRA6eq=^!3fQs`jh(y_8i`gQ59UliJ#xi+(k}wN~(3l!+HlwF}y4Vxy-dFnfl-dxjzdlgw$;1Y1 zw4JHyeZkGyX@4LHP)=2ja(~s1lXu_}e4Ddt1?NG!r_n7|k}|n&P%lvXmHIjC{1q$a z&0Bu%2CtnX*>X~yymwF%Jk5r@#DGueIk~%`ir>Tfel=pj=xCYurli;~RnU>BYS3Xa zfZwzMzcIoNGXvU67JCGIFX@N>(4m%=AICAvF3F(ep_nq9=;1s&k z;1pVSba$irEccwS30?;FOa2WrKYJIQ#`#FsJB9E zHOcbqvnN;1KL7TeYuF@1ALj&wVJH^kWNM6(aTU5aV|>!dG(~Kbhp#|Z?GBovkp;^y zL%XmQEX@LIv%7{XE96rXu0Ex|fwwl;REXnsiw_$Ha#xyIQIA|8Og|d+v^a z()_ytyN_&dI)@!o@ta0Ij|M4g0ct|8U7LLtpyof{BIMe{x7Gk^`UBKF?hmh-dJP?` zye59b7qD=Q?-Q%!dn*?Pffsi~p6 zyUE+Z-pd$&kzlf6REFqQnG7X!{%TK7A%EP?yJ@sY$H%F}ThariPtAABikV0fSG#(rB<+bYTbT zXT^e9G=AxCZSXDi!;=OS;nlw=g4@3+LLjp-JY!Ate^G?r4Jg7VZ&8F#7?dz) zX&n0ZeEiB20c^gj4>q7aID$LBdd%K*%+TM~2cK$xH$zRJ;XZ<>Se~q5EI?}3^of(7 zTX93sh9OS<#<}y?@7VMhxWIGYa)C8Et1QDA=T}@8wBg9WVJ>HOv|U$U?{Ha^DI`gA znZ=p@fy>m=$3_-*tv58XZh2{I&XI_JJ>7`Fl$Et+9tkT8&vOe6HFz@vM=^Lahh@9H z&AiJBI|}o+0Vc*+Omhv3so4X-wg0=AhP_=(9kG~hc(<4iig`I2OAw@d9}c5~d4*r& zrHw+&+s50PC8pnYzit(FmN1h4Hi;EwqKB$3w{~kSM&*;(XhWx+=waxzeY|bMBX<@h z@`LbMeMG+AL){rn#g}_{FXMIZ4G0O_RT?Eo9MJdp1IfilRNb|Wr;i@qglaR3r5^_l zv!DWoSeW{7#3m7QJ7OpKKxTIUci;zDi#4o^94NReK9Jm6+?q>5tIi8L%AGH-y38Z) z_jBa2Us^)cy!f&HV|ICH;9{O0)R`!QlMv8A{^Ue6wB*pX6e$bJE4EgtPu7Hac?GYw zjTIhFWM0>F-}psEKA3WyntCDIERx?uFD*2q6lql1TmtMlcm#-Oo5_7CUq526ker#G znwF8j1I+*L=@_XmnJ+yDmdF~+J_KnKw_c&0F8#p`bvTJg3z7aQo|B7*bT^dZiJY|B z&|3FqQ^`~mJez#WS8p?wI=HYsNoBn8(H5+2{Ye!Aj~UiEEY!s{th}8kW$s*bB7C^X z#(HHd3x^bjcu*T<8~uT*q-sYI;NA?uMkZb`ssD5$)^1m=vPQ4 zCZkt*Sb_tozs%7u+Lyn!L(9%Cfp=uknl(X&>?6rV4s7fE0P>^U@TG!&%7eyW^z__o zHTme}INDd}Z6JQiS9k1DYkwl3mu07|{8CLn8vO&Rk-k5^K=Pq6mED>|K4@*+RawgK zX2UJ!+0KZQ1*fb}j8cUkiZ6$_)Ed2492qzPV>&b1Z|o%6k5_EN_ITunzsct+j1DYN z=xhfO#2hTih!mbAu)pU&x=0|IGrnUpdern~h*hOyS>qi2P$o7rC21W$YJxMM?fxoo zBE8^Sy`3lKMkss@hMVJGw>^DyQYhZLqo6{iUCk*b8kl3#P&K&%j(*D=%j72jiqN<2 zm5WY>@a$i2nSTkG{0;ld?fb96QPJqs8oCwgVIJzN$Hgbwgx*EE+0$n*QzlMcJxV=l za{bc@!i)#Ki+X1<9$nu>lm4(OV1gtgWqA2ex&yI(g71?*S*Uo9nl4ZGto043MOmGn7+rh|nb={s1(-yVV4 z-zam%$tXLqx3M+y{_w_RNXKlU*K7)&dQOt(~W1j(}Htc;o74 zaJ60}W-_Ton|JS5ooTE)-%}B}WDhJXrQmJZ#7qokF6}KZJ)=I~s)7u~nBG#Z!jxbN6?|-4ve}h)Jgk7sf+K8 zyEiBMi`lbHd!u_}X3ZLuGy9%tZ@eyk&fU%Ay}Nf!buqe_d-wjyyl0L$C5Y9NDp8A% zC7sYdfpKq+&D{`_XhMVb8A|g7m5_@o$wC#<(%k?!)hWn~9G+xxbY{--Q)HxyEaqT+ z)t4~zD8Gm%kGK=%zoStCTAxN)F=1O zGNDG}>V}bz)Z|xoj#Q9@QQr?fS;s0tw}QXg%>QPa@en4Gp(%c{i9FqFPa{ z(KODy!TUC^Sa-#8sLDXdp9Z!pT_9R1e_)@TsOafjUAYt{c>UW(Q*lG1j~VTj)~oYq$#${$4#=0^r6S?w0Kt3zvYky;IE0=@1MYIXdK)InnSWn$6#um60a^ zdq2x~w%5jXV0Qee*r0sZz=f6gy=~y~g=_z9;F`+}4IXLQXwb8fLuPe<|80Ug>Y{J0 zUyW6kub-^vw$B27l>J2pJu5xmb{u^R7rQs<;K4n6 z&^oQ)kdT;d5Q=AIZ8wmgWA`K}Odhv1bP$WX_@^PTyCOB*|pQn=ckT>)v@yLZU+jmxg zJ&wZGZ6bvUh?2f}iGJ0UZZ^D^m@3bq94eouDvV-TQEq5@c#0QXY33NXuKcMoW?=o@ z`#G4IE7%v8_g8`0o1l%cwqYz6EDAPPn_E_1T_9NZ=;QR!OhDs}c<8#AU+xFJfEIxE zvX8|IW-o3DS@-M_`pjNSli@RujW;9;^s+Og%0xhqtlj-rri$JvT1KhO)MuWy&zfUr zYpPGtr`XwNB;OcHLQbySq)bDcY3o?t59M>`fK=bp1J$b?n0{mmfY_bZLe_ zL)jUNmrS2=dGSL*n_hxnI6`9-15(vijnOu_LLVjiD8+ly-TKv8c0Q|3p-H*r<71b- zy3SO(C*Jp|%j&MHHx+M*x9aP@qp;m7sWl3p5txl8qud#RebO3( z#Sv&UHeviYf?5k($XMmA=DXlljPhUrK(>q=7t<)I(#op}NeWX&59*d8>ycjzh`^XjQ<@TlBHiB29^bn)7 zh^n5Xhd{ye3ptd`UmK=xA7J{{9N(qB)%I@smV@crL4Y3rJAFeD0(dzJ1MwcJ;{gj$*Bu0Uq0$4%r{kX&vOEMi(c~J9tO{--0q*^YU}^)jRUjHi30E zm`gT*OA6(M!0Ls9l)){o^1c8-c~wZ& zN#PnD&P65QP20P-L?FY@(%~$=J#={Qz7pXtmM$Tk%*Orc`wytVP5o%UhG~ zsI>RI@aV{k!f(@MTIDRMQ_RtS4YNoFxl@ZZS~V!@eaC1R)QdyO6WSqt-X+{Bc~WpM zRVJoef)TEg3UPKHkm{Zwh7M=TGU+vCWk^?c1!6j~Pa0USZW^u_2&zK`cpe%Ko}7Pa zS13gr%m{8Y9O^o)>W*z+Qq4=>k*CaIFOOXwYA=tCQQpYbqjME>AT)FAg}l`fKN7fhzF49HBl^49xvNfTp^IZVH;F&XkS&e>bz_F zvdE~EIOtBNBJ*3^eoeF#Axc87fu1BGP7SAg&eVpaK(ZN1E91MaH zovmx&3aRy&zcB}KV2WeI3c}R3u3pw51u+L>;esU1V#3PHHdd(h>-3il>W3QT&coH) zs?;6F!+m@s{hi{4=aZRlD?9H#R{b^OD*edAS-aemeaj{idUb^c5`1a+*gE?|wPkE*4q<52DbZn}D z1MvPBM*R3Jc}N+hPDE+F|;wxbwzy_w7zwSlHRkd45EjaovM6_tuqZcZrts$P$LryEJR$N#FyRju? z<IQ`@fg~w_Z4p`E3L`R38*;&~nyY{Lc zzpqL~RIABn3xDB*k(cNm?tr|+#>KL_mBnJJnbP;rxbQZGttvvqrPb|Q|=;TFgEEm+MPGlbEuQd+s6 z`|bDUa~ChRtoU-c+X^c|dq5wo#3I%Yu75XtKV!#2k#Ghff-7JA)hJsRO3APB1gMt()=r)LHN;qC9q{Gr5s4K-!L=)Kf zAv%Lh#;JGdW27H0Fc9<7#VIh!a>az$7&F){%7=|rkYULumNo@GR6pmVa6HWi} z0*|a6HgFR(+UF)zJ+KM0#-VDhjHP3GXGej*Fwx>KVq&WJrJH>GuG~k|B+7l{Vxa6F zNo6mHI?>R$&>g$L_O&FSb3Y>U@!+P@eluKb#v6jx-XvU^KUxJ0;nNA!iO&&zm1i1i zy1Kk-Y!r3s_Qv|tnAU}flck7G;al#ESCg%+m)A;u5+_BhqG8fx+63wfX2Xh_^4$lI z6bm{dv&aBPUeb}l%CibrJ($%g>sP@jO0ABG$je=C=+M#*98arP!+A?a?8SbEggPyj zG!L-6UZTFft1pHjQQO*|I_NzZPj<~;s7>fqMSqLpiJ~u8^g>> zgpvE$*|p!h2%+6c5C3hpKQlDj?uKSNDR=$bW;;Y77HF7p%0HewdGp8ACqsr#nL1>s zcAosoRfAiOC!O7|B)Xc5g8Zq@8FFU*;;*i0aI)FUGe6;FN>Angzu9No`ouBR#xGBb$*SAWcw!s1Z8(mEoa=Tos zeY=CTtx||dbZylpSY2{6lb8AW^1i-Sn`Wu?AF;EncGmg|zO~74N7DA;9_;w0wwAB0 zy}0uMe(a!ilbu%at5!`+8m!izVh2sy)457m)w%B3Un*@Y_xJ8+9bJ59*SEV7O3TK= zY!KO8-33Q0s@11U3{Fz)nw7S0;cbtT1q$Wn$}BXj#$>iy!K^OZ80V^%9+>rS-XOl?z7G)LF>gC+I?Wd`Swng6Cfd9&AW*RG>vXAOGnI` z2Q{!R1Ms-aM%STX3aP&tO;Mid>^$?<&cfMXXJPQTpc}LBl0w=oZWVWnxlBpPo=SMg z*>*1o4BHSL#Y-=wr%Y&AQjo98cXvod2yPM8A0sfpwZb5;9|;CP>cdLy)KcjZR@Hc> zt@%5l&Y7Ly;bjk9!ABQ}0v7w~**a8T6JU`|{iy$NTnQ8D=r7(e*Z;x5W;9aj?Zn^S zF()LjbS96b1HF9mx5x4{hRZl`B>fn4i!X1J&uWCNhQQ=g|7Q~bSYv@ztREgVNQDln*1r9Asr1wIM20d23-d^kM(PDFCz)ZbT&dhN2us2tkH`_dL<8`~G*Gyz{ z!+NBnDanwZupyyGn8wb}2n=x^5rcOd64fE22I;oQyI&mw%r+G_{xrARTfza3aF?$A zhAE-!VYhCOng3ef5vTGDzDXIim&_bt+J*R{))+7{7;`MJCN@*UN!aGiyG`M#y<<;xNSKu)Qm-2kb6 z9r{Jx9VJ=TKx{C?KL%Tv?=0m(7`Lhl~wB|}v+U6;_&*cOa#bFYt9zBt9}%Edno zXIdK03`~yk6MFrms|;2Dd!`f(HEC=yb^hR){CzyNXH(ZlTFq9`nP9`eM;xHTB#$wexY2Xw z#&w%B^XFSzFPN{9U6H>FSLv-~?Y+Dl>>IsK35wh7#fFB90-3^P?5^Kj4)5$A+4A}= z2tTD$II9Nli#*O~#2JcnY*$qkSgQR%)i}Pn1hbo;+0x@%a(4-|ALm#V*u~?F<2XaH zucTx@8s-gl-yQ&&DII(hRZwekA(aS2h@vv4Oy`*_Pp6Wh>+JKL(XR`x3q zP5^QER0V~>6f!~)wNkAwVdn?CISA<-G7ZeRl>rZ0Naar{>9WN^!T9%rmjxU8b@ zJJPXgga$%YL0kn$zIRHHf%bq=6Hh2^j6QAkJ$xZDgJ!cOpdv&iC1Pio?ZG++1v&9g z#mUMSSnfyPco@zUI6<@uA%H*TJCU%t%VecpVB zW&_-y!|cKQkDsxWkgvem9|9jsz8B_AbA}A30JXjXaRBS!9PC}<1?0ot_=Z5&^dU!# z=3k*4FI`}%Yyl!I1%n$ecioD}aOOm}6F(R@n%6jLUJI=HQ{twEjlgJ>vvX<%%$z5% z<6J!^APZ5)<9W!yTW!r)n>>H9v+wln17bFGKgL;6m9uJ<67a=i!O z(dSxExEL70p}C({6Q+dKa}+rtdW+sP2GaPy@Q9@ik{2urqiG}g2Pv-Wv=d-2!*e0?TEVgLd%CTP!QkuM-47z3y6M(-Qh zEv*Gl7BapOK!(_?a+k37>qc;Wx zkp}qy_$;A@u>fS<9eYbl_#K;>)D0VwlH!8lI35u!ONiUBHd5t#G`Op+tfaMuFRQLo zR0;H+t{?M5$chu=)Dx^d$A;iQZ$D;ZV0v_{YH^eIb(n#O=}N_cP5U8pTrZn#`&Q%FdrBiAF@on(yQiFQQrP-2ZYyEp`YN?l{rb{Abje;vC-N4wo=gt|XQZP3bF0P~l z)Y6BrC|evnf1xmhe!whR;++K9YcPumkU^SQVh9aAtfYmkw54|*L!-2IV5O!5yKn#) z;~)vfjA=P%#@ab$jn>is9Q!N!!COO-Z!8YyQDG4;nPQ&LbVT5SF|+;yF1c_#>%3LW-N^u=X86kd8&r;LDA0;ZG)$ffoee&&g2l`63i}G875^XxArG zUqR8%HXS|EB)s4R^DK*K6;n>hDY&?DJ2QddFC7<}EN)Kw7s-U^JMmIsz!7RY&VCPxPxC;hBDq( z*CL7XEp%c9%ajn*y345B18I{PkoYte5X~5HHGkl>LD-WIh#9b(pvBll{ozRQ11frd zXdg$BkM9#XT(6}PvIS|8FkmnSB05+&78bB4P;Kqtz9gj3zXE<6e!vH6VcURN4}L-c zECBcCfQJ->6i8xkgxd2%sDdU#sg#A9%9xnov_fcg(tF7Uhs-@UJz zZe73LG#5V0!xdt-QsmgCs$(YvF`jD*tn%~>3`7MmlD2Y&uRN-Pnn2FBQ$mC?5f4W^ zCgKuZML(ZMxq)wqngh?xLx=XcN&)?0Ds9N7L|V?Ih|3{hS)R&L5nr9i7AHxW(1rIf z#t-Re^$mm0bHZ2Pbp?=sU-5)p@-Iy2e5mgr$UVnly*YjI<_+6Z=5uW9=g;eLxQmZx zz}+4kvpF@#+!n`9JKPbB4+=w(v-L&AY>3oVU{`(m8_F)Te{5#d@;l>gR#B4}$lF;#S8^0#iw z{f|enm?Akd`dZE{GSY*G>9>~=$XqH2jSi3lVBt@PB+UuG^>mO84uGCEogfWRN!>VH zc4gTlvbTcZa&*=@(fQ1Jj{Km9QvxnWYR?(7zR~IN2||2AdbF=fvg3TWM(`FONe)@fR8$|{eMYUF%APsAE(E|^4#FwIsuJUT(2_YP79Xz@ z!2LYNv~(Wd|3IzPvG=Rv-B3T@qZN!_MC2Wf z6`w2rW0r8!x$Lc3f@6hcq_s-_3ukjF99{~>P=rnW8I!E{g|amvg`w(IuB&arcLg5} z6ky<^Mi~Y%CocOr;!@>1H-X~+brUGDk8xA!2Xn4nF)$l22Bqnl@?Uv%c5Co{$g6Wq z0uOj3;4{eMd>iATzDB1$*kYEO0QKllW>x30HTCMcs*+B;nIn+jeBW*GZTgAYShtM( z>FCjiZM^oH7|Z;!?EIXN(3H3!UcVo1tCX|!wt=Wbp_|FQEGc`^&TEf~UT@C|4M~X$ z=JhesLQE?c;w%%~J#*M*L#A_Rr7L{t*?AuB7U@E$G?`hDZfMTlWtl6)vC0K5C+|IJ z?Ywcl-EQV=Cx?ZCmZy7_b3I-H$(gPjW(E;M0eX-atnt5txWs*V%H_uOQ_Zh=lER4% zR0n~u9JTra@;m!|SLgSoB^hbpQBUCV)+gk~s%P1HPDKnSB&>5VGnuA6&$R4XcWjkf zKPsQq`D%>b?9Har^%oe|jfKH*yBLwiDv0KvY4lTEqMKQg69TZpf|je{LJ|rW62l%7 zf>^*`6*oOjPUods)+GRL%Qb;5g6NjaN`v)Bn2phCaP+ip@&@95I6h!6U+7yI)}1UP z%ebhm3>|uG_GKbRJp7wyWJm#jnmeq(aB&GozVx^Q2Bl2p5gzL19&w~0gU`GW+2wgm zMrVTNl%R+Vn(Ik5YC3+>bAtr+5`@3cIB54K!3Cw64Edq?P#wQh5#W4Acs?7H%S7h< zm5v5*l{;r?)^*h?w2e*F@?Y}QeUGjg!gwfTI;0IR>j8_LOxIbba z1i}hy)^EcGf5DpbFW6AS6F6;ZugX`l{{KCQ)aVr?L>aqgn>JS7UR&01xF|VE(#z@J zW(n(~Hb$t8(Fq$-ZsNuEc>KWjl4o58Dct+d9Gy#moH)l%vZ5SL674oC-2;xb9^ATT z2gvi$;!0*K&E|ZAOPiX?kJJm~Hv5f&#|~Z&n6#X!N{HDNqV@<1@s8h`xHD0}{!_sW z*BEV*Bl#Iw?ay#gPr|M4B$ z%HG;6CcuyeIt+t-WFRXg-00b)6!*I=Q?RFC`)>7to$I26-v8mEHm!?Ww_!&?61G<8 z85fW>;uKUI3sB>x}ZF7Kceq_SyyI@V0lPOTc9_8)CdrC6-)?#p@xdjU$ z3;B4-CDLCYHds7s#OaKdVUHa;R3-ezRmB{_jkk~WNr(vDEG&UVQ$Xf{7^px(r4N*C z&X2R(+S*%lp1QO`pKWd8+B$U$Y+zlor?$EnjOvMoyFtG+c>ZK#_*t3LiRq`dzlQyl zu9J%k6AaT)PDwRdq<3>tF)dPtoB6`^8E{Ii{?1lrP|o7Os0C5;jxTz)LZ+Q5CD8-= zV}Zj9EzWwFD)4SXsf>5Y1yeAiDXZ>5{xYuX)|0257IZ8f<1`y0P0Z($|L-{%&;NT4 zV&2}JV=ukY_se6(=U9ivE{|DSX?@dCChi8f+3?9J&|flnKOj1NcRI6=-rlAs*PsHqm z{+Uw`KpaqrKQJ{rHkNv+r7c@ot&eVO0rd3J3&t;bS0oHJwxqL)h69;%|rpyP`>x@VV?YiR4^L_ly0ajBTb5qZ)!+33y^^%78MtyC=65w1+I^Z z7NpD4Z6+#eT~LT>euvA|nj?FPLGIZCJ*TN+f*~tmVpSj=D1R=HAnv=sD#=p*pQGRL z3iX9f&!v!BbHkt{KF!>F_D$z)_3cYevz`c~45>YI5jR7j)RjWwA(k>3@tfnLRr($S z!*j)JTVA_OnpKcmm|kEgwY3*HeUdnl$y}GUEf@kkzGrg08dQQ~!Ici#{{AvZC*KbU$g-~t#z_&en+$P988nwkOh`+JQF&E_HXSP3 zv8Rx~`QY^36gn1TY3*6KsQRoeY7oQZqB*RJ&ej3$mF_R3We zr7$eF;!YhY>EyM`*sjtw_JZDubBK&|#5w;ABw@;h0aZ5y-4O2P@v3XQZWwrvf%Amk zA>90czy&ymIgI)A8T9jgY-!&I6izrrzZ3SFp%Ii^G`$56>TBbzFK zCd|&Ja>F;nL~jkJlWSj#AHiN!8zYuylS%q0#u}gG&>%WW4dvY6${wmjyVZyMrbKBz z0i}6{Zi*b5s$(!vvRyu8)UtCwWr4f5Q;Z}n9JVP>I5EvLLw@aW{3`Rl_>wLIp9DK| z7OL@2?qClZCcvI}6#2-4j8hXYahj6$MS#vnBP|rO(1^ZM7llH`>rDbhSW&_% zs|zpn5hPz$k+mf|CuggSEEaPPp2;Y;t2UKZkW(4Co44d_F~z?*Th)rqx!E~ew#!JS z*0T6wYVGm{Q|Whcd|F;+?v`BByqw(Z?P|rwDnWXnVNIAn{T6gkBdBo}I1TX=q(^YZ zWHtn+M?|U=Nj_?6F}o@zI8eysrdf@|2K1rT&yV?Bt}3>26)!DfS1ar=p17tjvhZ+o zPF!X>nA^Lwb=55|4Kr4M&?Mwk2Smcg>WdX+*LMjA&^Xdh*nqVMD=Lc)9!DAwG%Mg> z4?X?t=d*#&{oBf2~WrZM~s){3ic`CI>{Gcql*3M z6>?4LFMUFwz6W0b{RGc{Y~I14H=x&s&`?G z3C91!K$q={{%`^XC9-3U7F*$~nn z9rNdt>RhN9PO*Ml%qZEmP>(>drFM2az2!Rw*Gct|6QeA!d zl7ICgfiCNv22&_*akc*?6x73rqrragq_Q}%bW?e{jEvQC(R(6xg>5xObonFYbOqs_ z|3GNDxJf^kSnLPnLLP+ZN z*yC!^B!g8vuw>UHV%IQG#jawI*gojCU6Fw>an6cvoJ5 zdv)9H?Yi~i$^Vs~RdN-Z52qhO?KfLLi&13dWaZ@Kf`Q$~WPe9yiAx3c>`0T%Te5Pt zsJ7(fWap_Bu5D9uTwG+@HS@>Th`nXtBn4q&A5BYG$G{+rXVkwOB$^3i^kkwj zX^jjm@>JV-uXb3IyKYaUaF?=-LV7JtFj>Aj&G(QM$<$k#Y)Q$<%FNuHnXx4;PX>ah zjY8TihB4_|vvPA)Sgp3^@#1DN%AkA9f$kC6DFCZi(o>ARe|qRaYqD6%G092K&dS=1 ze{wQ%W$0)hE8u+khB+J+y4PE6ZtE~JaIar!q@XoaAQ7cCNj1O_Q9OX@6@l`^(#d6h z$nK!SQG)ok%qXr}e+(ypm%|jTjV=sQuki3%8c`5tpn|<+@D!DAD8~uLCK;O{x>cud z&f6+z3m~GL_K1G$8?YfZod138d^qedBS%w)8vP6|n?T+(viCS~^3;hFr%p9{*gLp; z09Hgu;|aF9G;+0PaFDxTi+O;YX<}Yln#FSj7S z6;XorQ!_XFi49_@@BjW_cJ;IvoDb3woqB`kSZ|4=d)-{r!Of}2|I{F~iQT5k~>$ph* z2Xwo`8B(LW%dYhBva>zmeHMk^SM1s5hSP$gdQGRgr@pqe%eQi+5YBq8DX(ulawRFGt|Oe@N(f>HGUjD(}yaG0|9|GHN5@8@xxfx?Z z7kWZXFK5Ag+@H3nXsO~|t!Z@c-&)h?;lH&eI@PzerZMt|jOh5GC?#V_%pX`A#~CkPGKe~i9pkmw zLr7&y!1Dx7(SkD)*rM&*;kmnpJCw40El(5JxYU#wfv(}Awxt{}{EPuve}EMHg^H*L zgL|Tcwhk--H5LBE;A=n@&ZrFT%K2Za>HlcB_e>0BVh9XYv)?jKm7amePBc|jH3_6u z90{1Rs;Q~U08hqq9)Urg=sBHy>N?sD;~H^@*vjIo_KrFXZ1nvN;~FQNVC!+Br~AZ- z(}LKkO=eG@XzK1c;c3h3f8cC9JZyOEg_%%#4#S;4?`!gBwU z<}T(zHJ$A~HBJKUe9por?>;r--&(Owo<#=$t z2Geo{y|3&JytcRcw2Um*&XU8;yqfp#S-8h8&?X>xo`P=DUR7ELSeBnt=|1Pq-8kAE z#B0||i@QQ{%pF2ZjWO!pAGLjLlxmf)zuoGXJuRU;P)C>aY#2YeFs>mAx>!3z=^9~w zxLu{4&$XQ{ZjR)|EA+dDH90H1*5C&W6b~u=V%&@BRAM<-*K(jbmKUvQ;jy?J=fJh5 z#^g^ansjALfm%}}a_pkz*$qeRCqw| zm*8qmXK$31-4Muh?q*ooe4b8c=ZA*PL!-ydFAuwc8+7!m7eHXNeq8VS+G=Kd%BH+z z^`_*Emy`3ph>F_)&MgXywFegPL28>=YT zQn0mfn|7Nx%jEUxwsQuRTMt*9wLfD&-)kwAGK!sBcINHM7hjOaCXbunX(I-3`?7Xt z?&kGL(nLm)&r?hNK;=_XJcR{y?vRqazx7nhQ`KYp7W#fZZycDvTK4E)0%St8FqKUl zId=>lwn4Umh0p#BMuA!~g!PCE4-qzV^K7Sl{k84WoBS58BJQXMk5_yYGnXuxHS^Nq z2ZFww+9~f}y7b__)uoy5jxKp17_>9ha&SC7x_^c?$?>Ys{WVWza}43|9(1084D4+~ zra|^Mgr}3)7ej6Wfm?+L=Xo?#%rH}4u4w`V$&q{kFP!rB_Moy=f)vND3IbE~SZF7< zzi-MS<_Nv!+?=rRrP$*g*`*;z?+Q9|?ry~qgn22$I6652qst*GgUo2S6JSf;ldibJ z!o999F;XaepzpBgqPiHkoRI*8!Vq&7<5zsY-e4YFDBf0{X=&>gbV2&PX1ziG z5w+`^P`FMS_X->@?R(s9=MxrlT|6v!y~%%EF}it$4t`k^Obl+38gixA!(?udZG^AS z`~_+B!|MxRnYex%CwAx|SBF|JgQn;cQ^7aVCNk9L?F}dXK48p@njhSS@Y4zJG;E;x zktx4k^{_b%TAe~1DeXo&-@Q3xJTGq3KV~6o7|T;pW0a@#j5`4HGsHt4Zrsqix)|=X z>(_Xp0v}-#`9gw!$f@D7DYs6rTzlsE?&Bz8Wq(7;Fg}r4^B|+0Jhzv5g z4h{#GK@M_oI57C&?l!o)yW8M{ySoqW?(PnQySpvl7x&)Xz3<)FitdPtr!y* zGh98z(|Er%~GoTwgq;atUqkDQ>#TcS%AILD}&a(UdAT{t5A*G@>Y^{3_Ib^n#efHuzbVTW?vXXQ@{dO0cY$piHyu zV<@W>?B@C<#0@^CWTM}@bV*Y?uch&{hdwLjE*8DbyOo~{NHYx{ot?9&`nVF%sd*=A z&}zy_rFMZ$H!4F!C=FuOx(kN#A*QM8F{y&MhyCJ-c4H z8_4LdHk?l)@4kIe;QMwT&e&+=^C;aUxo1w7#c2W$+t?tbc(C2dgnrA9007E9$rpPQ zmF&naRl990v8?l2J^8GeFSH7Bfio(VyT_)Hzx;#J>5kW@w|jx6%VTgX2Pq@h;0yuB zn64MCBO?{L-a0!vpy^62taySPP--!)rC4B1w$hg{G^;77?sckt$pA!0?JkglH9fxC zO5wK~WiT-4@~4ywOV(_|AS#YKDvw~Vt(UAks?CRw6Wz_!dRz{;0e#~M{)?A3S<+vJ zWc>8}j8ejrtca_oD-l+Xb;tTDnya8Y>@WUE?(Wet-p*j!LdE>=fj#xT*9i@6#OWKc z^zZ;Sa4)=9h1(6toQmt=c|EkgnlvVmb=-h@BiT6^xkMgALplB@pLuh z?u@)b!4$;uPv7sbQ_7gYzh;eMW46q2D;C5-mXn4v~fGR|A@?_Z@E zXtb9~^*e*QB^s>2i9f`>#t-L#W~UjZC1kc%4Qav11kuAaJvt@VE+bBJF&!l>o61BC z6=!k$1s}fZKH*!hGg^%wL^L?gh%w2XCT9r`?yo%%U&zn{KH1bCWe*1x%sF zcT&yE95lO7kM}f7G1~-pr1jjkU=;#ggX|dw(==p?qhaPaE0M$O!!U&u7W$toJbNV5 zYQKv14=@qC9qC4UB19u0luiduzySBYxSNR@=ylfznpCABWZ_RQIya;PLA(J(j^R`T z()|dodi$ED4c`=9Wrp+qauT?&J%dP)LFo`!NFfQl9Pn8apoCEn*!^%EfhZf<6l}KD}Me z^1Rkth@O#!)p-Yvk2`_J8Jzrdbl&|kF`9=(cL~nnru8_!Pj~UJ+Bh5&hDE9kBJEci z5A3$&r#T4~GcuNxhS8zKeLJ>%s`I{MXZQ9l6JAc#+SimU(?lPGRj{rPY5L<534iUI z7r!Ns?quuN?@c zHS?P8HlMtnBF|Q*ZY95Ll2>u?IIMbYP7OXk#|Lu)Hn1%NpwEWcnGS;RWwTDL5s$W; zM35D;r~9oZ>wfcL)Ne`T=A0vwI&utRv@WfFbCK6Ifju5g z%T9`dIy!eXT}7z*AQN}lsHwW#fr0^7Zl@vWY!B9SMMv_jA>SpIOU$24nHlZr*#vd_ z>&@$LuC7imf5+$XAw_ONhm(s>?$SnCSQ9&ihT*+h5bJ z{2o3SX=bB398#C7pQmdLrq>;0GeWFxqa(iYWC{S-I(e$J8pQ@B;c_QLI6Mm?YE9r~oVeb}=%b5V$toR~Est7UtQ3PNWWRXW)D2&r^Y#m=B_x5Llc=FmALmEKur4%E%k*zNcSC{11?d<0Iw;= zoAYJuo~pgPVQ-QgK^NB7bv0M_b+Nm&NKIqCI|U|8B}}53DeF}C7u_9N=XyRvIy-t< zgvapUZPThL5jBn$ODt%(tBrGrvC;!!oWuxOv&w&sx7={TS{Lj|hbqyB9IbCza+f3ZwIaEmdky zqty-7iUXOEc6T#5NE{l?c2Jh`t5SOIg0RP!qN@Q6(#B$(?DSg+n8PfBGF?+my$iLD zVFNuZJ>B1SN^iREI6naX4Wz_1<5z5n-=k0_uBPdA48UNthQjSQ?=MHK#V-M^%PP}$ zGV276?oObetyXWnO+)p5!;tuTAf;a%F4wnl=M0Axdk9VVo-h+12Fro03kBcF6X_~m zgJ~nya@X)q^^i3@TPLy8_>2ymRv~*kGPMzGewzMLWsVzyHR}>Jr_@8B6@P%e?>M>S z`lgV=l!VhvP*Oq+#6h44*Kh3i=~B{^g*MTX;xv3WpX`rS;O@*a-igH#RCn#nJ2?rl zVq_IrhL~UB^oz=TW_WqbgUNqx>C=K%Zm|hEL9SmEDcwIRuKT{s8McQYm@lA>sT``- z!n*;cV+Uq)eye^nnaWkGxzplZPWbqNMDM`!fdO6g!y5=Cyvm4RPFyo@uv`; z7v4dJ*ryu`)nu+Vg;^op^C|NFaf=@1of``?0y71I2Yd!wET^E`yo-0$_3 zc8__F`qtTpa8vaqqyU@QX7WIrP7U`D3($Jt5G-8i7KeY^eiyqmZN@Z80NcjMqDK$~ zPQdgj2_`nK8g9_TgEU&)=GL3RS8#ayX#b#P_W?a`I{>9bBGJ>xTSr91(;C?D+h*dx z+vKHn5;^|)@$eK7X(Cs>*fJLRvQzNWBkDG(y9L)K9!3j8Fm3zDjOK!##`upBls+_} zmSp2>LM^2*qo!RUZQof0_#?LvB9OQS9`hjkOx`VOPKwwtu7+rev3mXX_gVH=D%0H( zV9$FIA$1aTgw;Y-+!@73rFEbj289RX-Hm3j-xqlL*{2N+wT9|RU1XZ2UCAo$cA+Y6 zJ`J;d=(BaD9)7#(HDmGuxBU&(yG`#X)AyX&g+`1^eovPuS za+J|b+^A^yy*K6MW^TM&nOJaI!uu+B^2da;@OhsN{qXi&kAjofN$kW-&zx&|r9}!H zJUlUc1;d)yb?S&P_x0#zB@Nq5f|8u)3)&J3ceuf3yp`Fi+@Ev8nUARHsEngkm#}B` zYjNwz2BK97GE1j*b$^7PT1|>j7VEI4C(zs~hNEtA)ea<{S-hrD2l8l|E2Y+q#g-x` z+kzbSFYt~^Z&fKMbS$6MI=7L!IT_}^OSH*HK48w2@{3H2l-h+CZMIWLRw|{xYR3PY zw+3}rWe@WfZ8uqovK06^s0gpUuwkAW2A93C}wOk9|Ns#?J!f=;t(VMT;QM4F=BK! zGh_kDChDns^Wy>^+XNy_#EV~Ah{8M;BR_J7^P!?#f59zy_}cyX+Emb8CLvV_ow%*lk_fqPEmNW1AP~{cKbIoY&zbhk4Rd*mlM; z-)0??#XV9>-fe;i=e@n3Zq2RX*`^KH_>JExMzL=&a$TNi%tHxU-U?wwN}mIs_RJW9 zS6hfCzmFx@w;dFw_?3(4a35dXr zsxIlBDseoPSX<8)k~l#t=Nmw11sU|rzmYfm6_ zd+%wWE+XXR+8jM+Gx-u2^z@V%!v6EL1QOC1Xue&4FlnRpez!;5{YXwL1begb zsF>?8!!?}UI4aYG=jRyulElTarNMcvgy?@IjvFw*yvADbC2xX&9y7im>{^&HH=i*_ z-J!AQKu}wO;k5p_a}j(n5@y{5HI8keKJ9z-&GU@a2&CbOIY2KA_x+i{bu1@aL^5l7 z(Mfi!YxfZj5%4#_$My6uAf!^PNa9p91-or#uPt>P$cSQUpdq?_Cj(qUJW zcTg=t+Vs99Mr9MIBtvYA3uG-dxBglxj1!7%#HMP?>Ecr(O460IYyBHWTCP{rVfGwt zjB}h6ZKas|LjhoDcBcRc)Hz@#DlZI(=JU2yYolx}J6r;DAl!Ib;@F@?^33)r9$AeO znQOP&4%Rs}(70UR>zrF`&5Ep;jBB6V2GKlhAECa8 z7FBecFLMhEYNSSEW7W?mGGogjw`cT`7Arnt-7fc8FI9f`ULZTcC~S=n1~36SM$3tC zo=L7N1Hyiy@A5!frdS6C&#A+STIFsMP!0x_yp8snOHi)7L2K*I2%4udIet;)UJ423 z45gP)I~N-{A&8KS5_g30sbud`xDF2aX4~C8CdS6U7TIHspfs)r4!m+`TV%wz(joid zO()Ba6=b@^yg}{erH0VfZTAjW0mf1-%emrJzeqZUQH!Fi5OLY*y{FsHF*=2q4;!dy zUr30bMSj`b7&vw8wEsYI;p>p98ynxd0fxCEBOP?Jq`_G9=-3HlOjKa19dJ3lhQcK?0@%A{4P@3arhj z-@`aBQ?}dyIdm$olerFC7sYdW9ur-Nu%ht(=1-{0kk%)`L?s>#7k(F49qrk6rBe1c zSl);B@8=1lx?VJxSlgb2d*We^Co0hT(yi>K}UY$K6(Aspr&nJ@RYlX|u((!iZY^ z`1PhWgyFz5)`fScq>;0=uu9)>{jhvhc9G*&JGW#HpnZ+#Jv>l6ObY(Obh6WB@GLC3 zo;Jxs{|1U0*;a1wGgeA>3|>-@5TCe{-67*-wq&NVua7&2a{{%J?dR?xt2^t?&P+Vg zS5+&V?HhFF&yi+hFiB`PPq`wbGtegy|QGQ4$GM-Yd zJ5Vr)_=GoYD9G`P`CUsSKkdp3$br)zVxn;FKG^aU-`hl#0h&T#ejEBg+r-GruOGgV z*)lWES|T_r5I4|)*AH03SN&MDxQZ0TKVwSRO>oKiF}V4389B^lEt6LkW<#c`(9ue( zrLwYpy`V-(hw=^=)x4xlGh3H57Mlc zw=BfXqiqtpCJcJ-XBw%eM1E@D-z%Cw@4V_LAVXzGUerVhrMSJ=Q}CgEG&YT_r3%H& z2~`)Q8av!McTdDYQz~S|)A}UyXw2w9c-g{8Gs}}v)z$e5zw4sM=a)-)2-~f?uKytb zer0l)4-VLj&LCxyIawXb4rv*ZMLoOyC;-9IHHV)Dagb2^( zb)NVmnaRS=UA9Sy;-*Z`WpG}IvYXUzFYH2lfKgGp&6FZ(kO+Npq*gX&&!os8AKQdd zik*)n{eArHz1+Z)&(;L=KCCT1BTiQ=1R*Jsgva95@fjY6NJp&BU$CJ-7}oVLYE_Pi zL`-RuMCtPi)TYCP^_*>!)WKGbx*#L@}$7)Z|jHIC*a@iMN|4 zod{qcjV$Aba9Y-|HfR9dFoD@9m&&AKU z?%WO*o*Ibd61Wr;Rn<_*lbG>e<-30GtX#pame`qc?|BONd#lde4HaQ0<#bC!;B|E6 zuttu5=E7YyBlO(37CcC7Y%IBH?;|nY;lT^`?{o8%WgUTh35nwe*9y)Bh68`ATd9O) z)}hm`N?8@)95BjXo$AKSH6yCbLJ4!Wu6un5CkB3z#f;2Ozxcezqd@NzEx8q!Fvjv3 zP)^9fkC~c?2$_|dZQ8-lW;dUFU=+;!d`qI2l&qpDz+g%Fs##uu__A53qVb$KVNcyL zl6|FqGw}T4RC*Y9{YPW`?tFIfIIfgTvfAnBcW8%Jb_TFmeMAP@{t-^wd`>sYI+X^+ zkqA(Spe~8lVFcqh)S6udV6OVgZS;edd>#dCGvrcj)DVqUiNCGoP$eS z_WnvP#*Gk_E3MoYoFO{GrJ?BMsrh90nG4c}J@nE%CG2s|KY~(L; z(bcicY_;(z4)Ur8K90`>;A`PR%2(Ak4f;e^H$SvSDLq8u-?@^u{9w6R#vJNw?>#!7 z4`ni;FZ-dRiihy|?z+O(Ra591W*2DXSR7AK1atMi_=Tane;sQfRt@zH;%lWvr$b(` zF9s+_+kOqnhdRzf-ORKPSPgBaCROn-&v>@9yJiq^;cI7nKgKY_SIsIqyW^v$o??s7 zCTzr2SajPmC+#k_G?HgFy2~+J5tS-f$#C-~2}X{P6UC6JVsTlR2TYC@8YB zo3a<0&a#V-?FG$I+l@QlC0~Lz$UzbotXN4zV#31OvXcujOW&l$yrjkM8`7;pC@x=; zyII-E2QM}K`c4t&m)ty-gNQ?U(|t{bsRE+RhS*JFZKLP@A|KJlkpMgBfZP~)q}1Vw z3)d941@a!Hzveaw3UKR-=tR#*>D=+of<7WpLwO7t3IuQm05m~OGMLlAng<4YeYr92 z_tqpbM(@#VH}+(M&6)M}WzPedqNK>k_5;FU*Qc;6yk93Agv2urdX;!yBRqmGmb?ZP zA(Dhz=d%x{52vb%0TY^w1mTPQyWxhxWM%gL<>t~tTXqr$Q0nuxA}ZJ-R6?EL%u3}9 zb1Ocl(s_e%d`@8bl_?)(oP3%=J)Wj;gNFF#V&LM}voTGd8NjgG=>vxULje|bIO@V* zpQ~8>sgD zB<;%9jh%glcCk(zRs0$z3Nl_6ZbMnM6w>e-@s5(exebiDJp}omzl3CS;B2f4;wZK3 zaoUp7-vgfE>X(Ak@}%7&vGbe?%34YceAuRX#K{x`b1KN}`)S}hn!iWr!`s^!bLro- zv@FdXi&q-@Z=^(yAak!#8KG%d;!?i)(hA49@!D$$P^eF0@<+9^5_im$DI(>~GPgNCcnVL-Q7{dT=M@F1Rc{T7>2K%#lw?mvEkO1_+Q%QK^T!l(tv4IhJGxyG5N2}pw%DyGxu~mpzupKNMTUd17(lOh z-)w1PZVNeiT;*eQH9#+55=xx*F3D&D9xAx4P7FT!Jg0A(SBawR_Vmx;sN2y$iv+=A zN@?7>+1N@1I0!n%GB(jvRm= zSRId8#eAE&DEMqQB>z_H?jc$C#uX3Ly~|0T*&Gejy|M)5nsdR(J4@w$lMq?Box*g- zAJhulMF4DJuqH>`YRwIdyvyQ(G)8bhS_2&*7GwV-yZ^^m4b`?H zZYTSIfe&FWvne{noxP!19HeK2lQDV*yJY^v^M0!TLV5ocY?fEC?l_LLT4}=pMWvSb z^@+ZmX;y_^?{dn^;FH93+_CA$7>+aC>X|*1akTcB;&Wi6|NImUnd&C^KVJu6g|jwlMzh(pLMz)(NOiV9#a`>_-soB`k`r^mgZ{--8h>H}G5# z$1Y{;yFlpB{zYj1pZ|RvE4(SvwP%UJcrmadXx%<8n;xeOPO{3RGZm?yuft&Wjs?! zVfSmVvjW@Xj&$%byxh7@ZaM)~@MXlRKtt+j9QK#%BjHU`-{6d7wZ1F42)E#ZjGE#nkGWZDQLg#k7vbXd;b_B+A8isIrC-cDo=LxG=hFTf*x~ zoU4M68_AJ>VdfJOjjOp6L_1;4U({5p2#`*Jb= z3gLOSjg1lMWnHYrW;O`T)MG$E5;PQm{}+C6ul|y7%-hP2P!!uNb;mt>M3EUqtqL1Hu{Kk zqMoWGGOr!O>xM*<-Ppt3OroWY6*c2BmX+}6$-X=I$>4t^<1KMge(`HwEaS-0haN(3 z!2bPFl@eIv8MKPq2->c)7OuqFe`(UBzcCAtEG3FfDoIUsF#$SC*p#oZ2 zaY-JQg($_5gs8$Glt0xw<@lF<_!`1!oGAWk@DBxPs`ZqjocH&*k2cuACI?kMzwC^! zy0fU4Av-tCIKz}%?HyIeR?`+^01YV^WK-bz4k>^Lp>!dpgoJfib1n3vFVH~}IoeKW z1+pC(VG<5kGAiJtKOktbX0^R2*6*9GJHa^+Bu~a33~61{YiPo`TE0Zx0jGh3kZXs< zX5~Ic6M>AmUu*Zs<0eDQkgd-G{nNo{*!N8OS}NW|b$ zH_g3c1tmH#_OA+2T#WYfs5@Oc{EEmBFa?P-H#X(q@*7G5c=kwmxYM)+;E zXY>?QO@UrJQ~V;p@nvm5T9_jhtfIc`4b_Gpc1G61q3noabr7zpu+knLdX9``n=|w= zEn;x-7S8`!t7CtXI`2~90pE`3=s`haCD7QYk4Y~oxlh_j$`lv{AkHjyTT>IKTm}a- zD?u&Qx!65Dy+r(+U$mk-78=z*PqpHps205u|w zdSWbenHRoJtBolHCVcvyIcsn9T1_ig=P7;1dO93o2je$?piyA2`Qwnj2J8TDTc_VN zPS!*>LEL27u;QI+%xx<7s->le@wfA+(6(LAUdYa%k^muNSI!tEX#3&e4}2!#?2W)U znd|0X&+N8P=xa4aaXFdjPhtx1O|-VDUICA1eePp`_n1;)Hzn-sCW$Y@gq}@Ld+1a* zdDoIwgvJetp5=SHC+aA+8om!7qUj+))`UU>vsPX^rSKm@z3uc1^y1ROb)!<|tg2@+ zjkQE6n%kQ#xZ_))Ka!|VUe`qpgYH?WPu1aBaN% zv+Xq^`pL5GCV(0Up+v_oy>?5_u0#;6v=h}FTeXsYSD}o?JHu}hb=balq$2G8+?hu( zYjr+R`I4{_2}r71ac0o5v}iOuGF!F4XbxR8LYNp6v4tQo5_iYeyQ@2?mJ%j4_Dm#& z?}2r~TZ5zA$-D_>gD>}nde}5EpD{rG^*DsDtV`}wT9M#5+c=x0uBGn2%o~8W8h0LX zTqZNP&*XHaiNWw3YkkJyybeA3tdg>n!7fX!jSN{b?NPb2MDxz5D-_{C+`iOTvFpDE}#bP`mWt`C8<@ASA zkkVQ$ve3@ZP9LrrjPuUCoHP(43A<&HjarMl{j7m&(dweLNEO$#c{+a$pp3IleP=H$ ztq5U3Ih}~D#Nls~iDVPD`(zKdFAPt;;ycUVdrYt(K3h=HsfxjBRZ*=Rl`G`nv1l zyBM-O?r`}JwZm!mJTqN}60kdc_Q*0V=L(k&f~M?oi#@A@^Pae)95Ru8+8mMcN#R#j zF9Hahv439+Yfqk9a(hx&lA*99>xq3%-G!6{bylM-!zV=Hy#dtE9hf8@u_Gz(>*_2b@E zr?(hg*=oVJcNLGpg3%~3oS5)|S8X?Sx0!&v$?sVf;!m=OhnCWQjKUzh{vaE1x9)*t zOXgQwGp)M)tU+-%nhks;`n94iwP6xT6P%#ai+8R>@BDHvZ4a$Xhrg7PryL;Cw;WL% z+4t=AqM+BZ$AsNpOZa*Z-KYJ zPW?!o&i~6B!w#c6#Xqj} z{5xL3&2Ha~3HRJu#+gi*6{ke=nV4JAbY_zNa}CLsWW?flK%=Z<9d5LYk%Q zhpd@eZ1?g`B%g_vgt76;0@Bjcu)5a7htNETLJVdW>+Dx&xyTbJr zZl;o6f;xAkvH2z5og0yYs-#A8m2ztXiz7Y8lTYW0#^UbO=yow>0x0cOHeS{m*J)zXB@@zvsi_H4_hZf zq?$qJ-p4dAV~z?YXP7Jui2D*%oGOfCMPH(n#bbA^Wi&j1i_y;1M!y_`f7_pi9cLOV zQtLW5t$SK@MHtq`AN186zC@XXZcE$n4~1;}f!&oIfx(Y?3Wc2lSvGg4dtu?npW>vF z!Hctu9kGGW16GlnF#u_oHwstYL#%O0!PHA-aZK_ixql9j=ZJ5pk4XVkS*-s$owySw z(kB8Mk+0-i*`A3R#@CfqP-?NS%o`V$9z#~GW75?z#CUN?HA;m|X~HkBe@BsJB7*FT zyLD><`u3JE#($}DIJzv?B8y>Rc8m851J8oOvg1d89AV~|*k}srwCa=BV7_oYq2S=h z?VePjP&9PPX8!)Zud%12 zoBgC4ugypq0v6g~N_1j9d!7W8OP2EW;O=bL>_lNsGTK#_oV97F*h%w}`(?3yem`as z8&l-FSdns>EcfkC!x5ZCocEiP6AogbLtYE`l&+WZh=&9!_zpLCa>`zMz$?kmM7z3exU>uQ|#Vd!$*2YjNfpW&mm)kyKvD}eZll5F0j(D(lO*g>{-F&UkXL$5%Z2E^C&Aj@hR z@K$919uxu30O6si50*{&(dN`e#jmPyzK6%F@p#kBaqySgB-#Q)%b&^y4KKgGa6pnb zp{mMKroI%NQ9(9=iVVg=_gBL1SL5Cx|Hx2(^T2e{^|f6+?<2J9FM78mls|buNYYwO z47W%W24)ufXxJY0PDh*$1csl7#rEwAx8CPCw2p?AXcTvaNoZO;Gd!?IFFa|uxX=^e z&oGguVRefSkx^1@@8RaW8L7!ic@iXbii`Zztwg&26O%udL@I&IulCHQR`~M#^kU9% z@+Xhj>V}1v7h-MP;-+h+*^BPfD?MYTsD9^z=wDK@CKIGx)#Pvx%xoEDpCgx>TB+2q z&FegC5tDYqkv}+p#BoZ@^CB#s&m==e4RUf>pMvAkDk=P&Ux2fXRyP~qVUuHzpz4jq zC9)NOw;h}+M=9H@<@_YY42E=?;+L{wP&9F1@;yi zY$oZAFTtFv{s58HCba4IbUX;0+CZ*GzP9bpX$mmOb0H(Nq<2zGj5LKyoXN+yN|cM* z^-+oCILD%(;2EYyE?(1QHZ zWz^hnWTt@N1xM*bDsQ#XVo@bL8VH?sZ`~z{uYs!_v4-B!01-E7<5@$?Fl zt5Lgu+ip?hUa50btHUdamj~KR1h6!(uX!SZd7bu-T3sfc!0wI<#`l)F&yJsTvpz0& z_p?Qd`!cV|#rztV;71{0J(sD?!I=ntG7nt{$GCyunHqN?@(r~n1!6=WI3`jGrkwKM z@IPZ)R~83l@QZ(|>L0114)w=3-rNQFYMWNkft`7q*3{#A-Au^la14n3chjE#i7OfZ z@RFCvt1V}6tEVr;dGX#liO5aJOLz(y9l2SAiFn)jLP9pi-*}xV9{J?)S$zZ}?aLr7 zD7E)%D6rAXw?9$R|?P=y<9@Rs8@<>c<+2evzGzKZY zX>Q$2EAO#gsCvRn-}!12bPh!?yZD7uT*vVW2T`c;%xculj z2iE;?y36lpF?wU-Lj;Y5d08c?=V1%fqe!PHrjjG?mes=$4QgLLVrGGS#p66^8j`=7 zjsS$HLMsGsLxc;VJu9rQERDv9Q}r);;cJ9>d!_zUQ0p6(nE<(zg{H&BMFGHbVgK@R z@0!)jcW{PS^8Eb%d=?di>TYRl6Tg6tVkfaDeM}IQ;Slh;h-vNe7zF^UiLH#iW62Yw zDR5XzE)0nZ^e>(4en6B26lWtCSsOYy+8gOx{nyOqmpKA62LK58?+F`_lbP#(!T$s0 zDxQH1LTB7g>0-Hja(gR0Zc-lHXT2eg!LVb5NL$CS%A!3Kn@mG=Fc0%t^ov6e_o$* z(l&W7UAdrpFX>>v;;2w)8OZ;Y7@1Ox#A|NZonNBDor zv9N&tckI&qiV$@(91Y|NkG{D0Z_ukXk5|FG+5uWx2)WRLJ)yF$^- z-RSe%1DF(SY#ag1pQ`~B08A3r#x?-v|1lQ^XaaayxLDZrIexJ)GqW=rak6oN*f@Z{ uK6e_>fQ5^TmD!jd;s0L*pbhv8yMyEBzWVQ=fBMD3%!WWoDIzP1@P7dV>5`}b diff --git a/Annict-for-iOS/Assets.xcassets/portannict_logo.imageset/Contents.json b/Annict-for-iOS/Assets.xcassets/portannict_logo.imageset/Contents.json deleted file mode 100644 index d1ec7b98..00000000 --- a/Annict-for-iOS/Assets.xcassets/portannict_logo.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "portannict_logo.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/Annict-for-iOS/Assets.xcassets/portannict_logo.imageset/portannict_logo.pdf b/Annict-for-iOS/Assets.xcassets/portannict_logo.imageset/portannict_logo.pdf deleted file mode 100644 index 8e7d62bb28d277eff24027572d9c2fc571652115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6497 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 MFo2z1PF)`Ge-aApSpWb4 diff --git a/Annict-for-iOS/Assets.xcassets/three_dot.imageset/Contents.json b/Annict-for-iOS/Assets.xcassets/three_dot.imageset/Contents.json deleted file mode 100644 index 4fb841f5..00000000 --- a/Annict-for-iOS/Assets.xcassets/three_dot.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "three_dot.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/Annict-for-iOS/Assets.xcassets/three_dot.imageset/three_dot.pdf b/Annict-for-iOS/Assets.xcassets/three_dot.imageset/three_dot.pdf deleted file mode 100644 index a081e00765401aa0ab7869f82ad2c9bb4ce65da6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4029 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 RVMAc#zkz^&ijFG%e*xeo)x7`! diff --git a/Annict-for-iOS/Assets.xcassets/under_arrow.imageset/Contents.json b/Annict-for-iOS/Assets.xcassets/under_arrow.imageset/Contents.json deleted file mode 100644 index 86b18903..00000000 --- a/Annict-for-iOS/Assets.xcassets/under_arrow.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "under_arrow.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "preserves-vector-representation" : true - } -} \ No newline at end of file diff --git a/Annict-for-iOS/Assets.xcassets/under_arrow.imageset/under_arrow.pdf b/Annict-for-iOS/Assets.xcassets/under_arrow.imageset/under_arrow.pdf deleted file mode 100644 index 9c6357cfbb184a0baf9e3c648f8eed43cafa7991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4056 zcmai%c{r3`|HmyO3`u3lQto7lFf(Qb^Ob!WB5P!4m>Ii~osuO>7}*nrEZMiB64|#z zhHNQIvSmvmYx2yr{Jwpk=lNaFecji6&hULZquA-{2()V@4hv!4V|cgl4yNn8@A3VMzN0XR;LfX12quR zo7aWZCJw%-DjE<@b03%p40Vjv!8SX|c`KjF4|vtCINIY)il#HlEoJ8d^GMI&YZ5U! zBwn7rXRkP7KL*ch#-PInOUFp37oWVxo~cgqDZeEZ{|ZGv@6Hv$;!aFZugUq!og{8h z9CbJ8Rr@jJCZX5Yy11gfs^?r-Zq4-tKle=8TI-t`Yg>}{7qs{G4L6q!p__1*e)S~b zt%eo5E12s0?XAM`(ZE7Nd2pmNSU|T?v47lFrD;rAk|0G}CR(*8Va)yc{ze1jrvA;+ z*(XLdA507dx6ek_HVrksjBGtMHDyUNH)dBeAY*wfT(+UfRO@ReSI`9M0y^LUy_@bBB*vYEdO_zvEj1-G-}km(Tm!nm8NoMssQ10bYWEbq;x4fRjB~^O zx@+=`ViCm`$_PioDT|b;bsGqEJ7gAUfm&L6j&} z4+w5>2QUJ!Wi{AA`cay}dNdJXLO!Z=>TE|vjIo!RsL_%9c4}-)H$rVk7{9RUbu{a% zs?ClQof%ilkn0oa`<)weq>Ir!c9|R@vORESRq5`W8Nu9qg z#5qfoY*^LKC3ygPxsf6w83B{z$Y#tb<)3b=aM>)FJ6G3rCsk-Bo7=RP>p3EmSf@9U zE;yA-1Z7*?5qxi-dyO7fe@Qc)YIf`Fz`*uBZ7L{Rnsv{-P_|2yq#7I7r>HM9R1C>& zsOKImF*_)SOe(*8`%T5x^B2H_ab1=XiaFDl&M6_G@W!=E``){P;CmB z-91^=kYYqt?RrRYcB)i&6`=Y;M^!y>Z~at+i&bLV2WDZWnB`>`PwFgZiE|&N_p(9> zFB>CJTWQ^&_KaooITb?AXtKj`YP0zT`C6(yJ%nvr%JEfKtJuA)CeF3+ zk4E|*lNrOJ9O}Z)hnU1mV8LNQLsLN~q=f0Yu4g#2Ie1%B1%{*aYBcFz5ag&-&d>_D zDFo02E}65!z%Lq}JCr3CEg=7@3SPKLQO(;SPZ z_qq>8gh)VX#B2`p2E*NHCjhFjU=3E<+q4oIG>(d(M@sTgM~2YPtn4{T#qk_@N79ssS$WJD{8g0nWY}oi zRiffq6BT#*gbGiH-YCvi(UaRad@`8>%P4qm{C} z4Ct2b_o{yE_vksB-c4Po;gDx}+QK=-^O;I4+`1)+LGc9xZNIt+1J9bOa=eKE_0iML z3H*69MQZ8sEO|W7Vl@)3%+MZ+%*Na~!O_7r9cfCOvNgsG+g^YU-Lbo4tj#$mg=d9_ z?1VnB9eS8=B3!EA!zgw1Zmf8lu}z$fd1dND+BcYGSzeaTCaw>>?$>KhSV+1d%Rx_% zj1cRBms$@`39b1(7oA{R4L#EA`Puf`=>~8RZ_ug9IKGZX;dn+fkaOsf)3*Tu7lBKx z+zj&!`(a005c(m7x?cPdtp05lwjvL2y-|9u$t$Fj#HJY`z-b^Ll2#pZNz;knQbSlG%3DQ zn_;F~uNrtE5Q0vEr>>_?caJ|Nrm1)nE|BtAW+Tco&9`C9P7X>R3#2mY^X zsxMam^%nOQdJ-+2w>OZq(7wU?Wwt}Xled@V{7p#gwWtWw&6o~iB=Z%-hmDv?mnb_y*RP`RWOq4K} zR(fjj)X-O1R|{eSv98cx&6d~CD$B}iL^qlTy=>|O-rB?{-EA(+j?QkxWMXos?9LP? zl=O?{n&rxN$k;u(61^rrZ7x(9m7$ra8QXQy@Xg@FC7W7OHHq1I&Or!Kf~@PzsT?yk zEma@Bk7_;t;##i%-JNqxaxo?`864vr)?zDShT=kCly16ct5Axbtz+#YtM){kHPxyI8B(o*^uIC8}F+{1*vVV<{-*rDRsq|wITFHwX15WYFeo#Vy0Cy>O?alkT1u<$HRVAz{jI#>-D%+ zXN$T?XZa#L+avS$80hAi{D6C&KwaqfhPP1H-U2~d7SLyM4??={OLS~ARCuEe8khA_zvt-O#!UK*TldMX^{&0^NIcTl+rGi)d&IY9rd5-_nNb~w7amo ztc>HU%ADS%@>}(Pwe9{8{Xti7EOBYlH1P7yc+Y0oO8tY)2YbHneHeVl#usYWP10;l ztw#IG-&>Z=_I%0t^0e;qa)U9({EE#H$2e?UwPfL=`U@3K=%Iqeyu}dixb(UD#j8(O zGTwH+8)=+$4H}@1rERB|KgGuTJm|%io^zR!YddCas zqaSp(#CZ?N4vt6{N+(OT#3pt;oW9aY*nj_3&TYQcOy={W z{?UQO3&Q(Zn@{@8qRq00$A+VxGmoNo^?TopQcLX1QI@iS z8G-dH5&N;jr|L3qTQ6UCTzI_dTEF04wSRlM>{bI^;QX%T9%N#(HgNXVK?V5Gn7Df9%$>^tn+El=kNgLOqSixtZDhqg!XMfDrY_eX3^-}U&V+?!-EG~JtXKu# zYmDE%_zAh<=O(wp*7yFCpD7gj1Dd5^lD~nM!mkvK47r*rD#{p792TGetN~#8JA?w! zznS=N#`Xjt7jalej55IwFo%*u;FR|VBzu#|8wNnM9I>8cc%~paIoltA45NhqGouQ| z3*$nt|B3IOzqtKxEQkHEfsEx?Z#!~hcGeYRr)vlp<2*ba32p!kDgi?R7H5^c9bK>h z45fsGN#ZR;0DW(ahgSeVM))7p@8=~#CU!lV%h zGbmJ;{F37?60npI;QtT#`;2}bI6N2%z+hnL|2=>d5(!5Fc;J@?N0N{DV-;}wtw9k| zc447#DB^6U*e=-LO{-1MIasix2p-^~fBpwB`gTnAQ tJPIp`gTvq$J1887gyQis^5Fj+^0R - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Commons/API/GraphQL/CreateRecord.graphql b/Annict-for-iOS/Commons/API/GraphQL/CreateRecord.graphql deleted file mode 100644 index 4e1da4b8..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/CreateRecord.graphql +++ /dev/null @@ -1,7 +0,0 @@ -mutation CreateRecord($episodeId: ID!, $comment: String, $ratingState: RatingState, $shareTwitter: Boolean) { - createRecord(input: {episodeId: $episodeId, comment: $comment, ratingState: $ratingState, shareTwitter: $shareTwitter}) { - record { - ...MinimumRecord - } - } -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/DeleteRecord.graphql b/Annict-for-iOS/Commons/API/GraphQL/DeleteRecord.graphql deleted file mode 100644 index ef496d2b..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/DeleteRecord.graphql +++ /dev/null @@ -1,7 +0,0 @@ -mutation DeleteRecord($recordId: ID!) { - deleteRecord(input: {recordId: $recordId}) { - episode { - ...MinimumEpisode - } - } -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/EpisodeDetails.graphql b/Annict-for-iOS/Commons/API/GraphQL/EpisodeDetails.graphql deleted file mode 100644 index 10feeb53..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/EpisodeDetails.graphql +++ /dev/null @@ -1,8 +0,0 @@ -fragment EpisodeDetails on Episode { - id - annictId - title - viewerRecordsCount - viewerDidTrack - numberText -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/Fragment.graphql b/Annict-for-iOS/Commons/API/GraphQL/Fragment.graphql deleted file mode 100644 index 9ba307e1..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/Fragment.graphql +++ /dev/null @@ -1,60 +0,0 @@ - -fragment MinimumWork on Work { - id - annictId - title - episodesCount - watchersCount - reviewsCount - seasonName - seasonYear - viewerStatusState - image { - recommendedImageUrl - twitterAvatarUrl - } -} - -fragment MinimumUser on User { - annictId - name - username - avatarUrl -} - - -fragment MinimumEpisode on Episode { - id - annictId - title - numberText - sortNumber - viewerRecordsCount - recordCommentsCount - viewerDidTrack -} - -fragment PageInfoFrag on PageInfo { - endCursor - hasNextPage - hasPreviousPage - startCursor -} - -fragment MinimumRecord on Record { - id - annictId - comment - commentsCount - createdAt - likesCount - ratingState - user { - ...MinimumUser - } -} - -fragment PageInfoF on PageInfo { - endCursor - hasNextPage -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/GetFollowingActivities.graphql b/Annict-for-iOS/Commons/API/GraphQL/GetFollowingActivities.graphql deleted file mode 100644 index 0579d487..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/GetFollowingActivities.graphql +++ /dev/null @@ -1,64 +0,0 @@ -query GetFollowingActivities($after: String) { - viewer { - followingActivities(after: $after, first: 30, orderBy:{field:CREATED_AT, direction:DESC}) { - pageInfo { - ...PageInfoFrag - } - edges { - annictId - node { - ... on Status { - createdAt - annictId - id - state - work { - ...MinimumWork - } - user { - ...MinimumUser - } - } - ... on Record { - ...MinimumRecord - episode { - ...MinimumEpisode - } - work { - ...MinimumWork - } - } - ... on Review { - createdAt - annictId - id - work { - ...MinimumWork - } - user { - ...MinimumUser - } - } - ... on MultipleRecord { - createdAt - annictId - id - records(first: 30) { - nodes { - episode { - ...MinimumEpisode - } - } - } - work { - ...MinimumWork - } - user { - ...MinimumUser - } - } - } - } - } - } -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/GetRecords.graphql b/Annict-for-iOS/Commons/API/GraphQL/GetRecords.graphql deleted file mode 100644 index a718f413..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/GetRecords.graphql +++ /dev/null @@ -1,12 +0,0 @@ -query GetEpisodeRecords($episodeID: Int!) { - searchEpisodes(first:1, annictIds:[$episodeID]) { - nodes { - ...MinimumEpisode - records(first:30, hasComment:true) { - nodes { - ...MinimumRecord - } - } - } - } -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/GetViewerInfo.graphql b/Annict-for-iOS/Commons/API/GraphQL/GetViewerInfo.graphql deleted file mode 100644 index fc4d1780..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/GetViewerInfo.graphql +++ /dev/null @@ -1,13 +0,0 @@ -query GetViewerInfo { - viewer { - watchingCount - recordsCount - followersCount - followingsCount - description - annictId - username - name - avatarUrl - } -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/GetViewerWatchingEpisodes.graphql b/Annict-for-iOS/Commons/API/GraphQL/GetViewerWatchingEpisodes.graphql deleted file mode 100644 index 830561f3..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/GetViewerWatchingEpisodes.graphql +++ /dev/null @@ -1,20 +0,0 @@ -query GetViewerWatchingEpisodes($first: Int, $after: String) { - viewer { - works(state: WATCHING, first: $first, after: $after) { - pageInfo { - endCursor - hasNextPage - } - nodes { - ...MinimumWork - episodes(orderBy: {field: CREATED_AT, direction: DESC}) { - nodes { - ...MinimumEpisode - } - } - } - } - } -} - - diff --git a/Annict-for-iOS/Commons/API/GraphQL/GetViewerWorks.graphql b/Annict-for-iOS/Commons/API/GraphQL/GetViewerWorks.graphql deleted file mode 100644 index a32d1888..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/GetViewerWorks.graphql +++ /dev/null @@ -1,13 +0,0 @@ -query GetViewerWorks($state: StatusState, $after: String) { - viewer { - works(state:$state, first:30, after: $after, orderBy:{field:SEASON, direction:DESC}) { - nodes { - ...MinimumWork - } - pageInfo { - endCursor - hasNextPage - } - } - } -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/SearchWorks.graphql b/Annict-for-iOS/Commons/API/GraphQL/SearchWorks.graphql deleted file mode 100644 index 9c143fec..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/SearchWorks.graphql +++ /dev/null @@ -1,11 +0,0 @@ -query SearchWorks($season: String!, $after: String) { -searchWorks(seasons: [$season], orderBy: { field: WATCHERS_COUNT, direction: DESC }, first: 30, after: $after) { - nodes { - ...MinimumWork - } - pageInfo { - endCursor - hasNextPage - } - } -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/SearchWorksByID.graphql b/Annict-for-iOS/Commons/API/GraphQL/SearchWorksByID.graphql deleted file mode 100644 index d296b2ce..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/SearchWorksByID.graphql +++ /dev/null @@ -1,14 +0,0 @@ -query SearchWorksByID($annictId: Int!, $after: String) { - searchWorks(annictIds: [$annictId]) { - nodes { - episodes(first:30, after: $after, orderBy:{field:SORT_NUMBER, direction:ASC}) { - nodes { - ... MinimumEpisode - } - pageInfo { - ...PageInfoF - } - } - } - } -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/SearchWorksByTitle.graphql b/Annict-for-iOS/Commons/API/GraphQL/SearchWorksByTitle.graphql deleted file mode 100644 index f3e4a9cf..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/SearchWorksByTitle.graphql +++ /dev/null @@ -1,7 +0,0 @@ -query SearchWorksByTitle($title: String!) { - searchWorks(titles: [$title], orderBy: { field: WATCHERS_COUNT, direction: DESC }, first: 30) { - nodes { - ...MinimumWork - } - } -} diff --git a/Annict-for-iOS/Commons/API/GraphQL/UpdateStatus.graphql b/Annict-for-iOS/Commons/API/GraphQL/UpdateStatus.graphql deleted file mode 100644 index 695a3dd8..00000000 --- a/Annict-for-iOS/Commons/API/GraphQL/UpdateStatus.graphql +++ /dev/null @@ -1,7 +0,0 @@ -mutation UpdateStatus($state: StatusState!, $workId: ID!) { - updateStatus(input: {state: $state, workId: $workId}) { - work { - ...MinimumWork - } - } -} diff --git a/Annict-for-iOS/Commons/API/HTTPClient.swift b/Annict-for-iOS/Commons/API/HTTPClient.swift deleted file mode 100644 index 8ccba7ea..00000000 --- a/Annict-for-iOS/Commons/API/HTTPClient.swift +++ /dev/null @@ -1,108 +0,0 @@ -// -// HTTPClient.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation - -enum HTTPClientError: Error { - case noData - case decodeError -} - -enum HTTPMethod: String { - case post = "POST" -} - -protocol HTTPRequest { - associatedtype Response: Decodable - var url: String { get } - var method: HTTPMethod { get } - var parameters: [String: Any] { get } -} - -extension HTTPRequest { - func buildRequest() -> URLRequest { - let url = URL(string: self.url)! - var request = URLRequest(url: url) - request.httpMethod = method.rawValue - request.addValue("application/json", forHTTPHeaderField: "Content-Type") - request.httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) - return request - } -} - -final class HTTPClient { - private static var decoder: JSONDecoder { - let decoder = JSONDecoder() - decoder.keyDecodingStrategy = .convertFromSnakeCase - return decoder - } - - static func send(request: T, completion: ((Result) -> Void)?) { - let request = request.buildRequest() - let task = URLSession.shared.dataTask(with: request) { data, response, error in - DispatchQueue.main.async { - if let error = error { - completion?(.failure(error)) - return - } - - guard let data = data else { - completion?(.failure(HTTPClientError.noData)) - return - } - - do { - let res = try decoder.decode(T.Response.self, from: data) - completion?(.success(res)) - } catch { - completion?(.failure(error)) - } - } - } - task.resume() - } - -// static func send(request: T, completion: ((Result) -> Void)?) { -// let request = request.buildRequest() -// let task = URLSession.shared.dataTask(with: request) { data, response, error in -// DispatchQueue.main.async { -// if let error = error { -// completion?(.failure(error)) -// return -// } -// -// guard let data = data else { -// completion?(.failure(HTTPClientError.noData)) -// return -// } -// -// do { -// let res = try decoder.decode(T.Response.self, from: data) -// completion?(.success(res)) -// } catch { -// completion?(.failure(error)) -// } -// } -// } -// task.resume() -// } -// -// static func send(request: T) -> Single { -// return Single.create { singleEvent in -// send(request: request) { result in -// switch result { -// case .success(let value): -// singleEvent(.success(value)) -// case .failure(let error): -// singleEvent(.error(error)) -// } -// } -// return Disposables.create() -// } -// } -} diff --git a/Annict-for-iOS/Commons/API/REST/OauthTokenRequest.swift b/Annict-for-iOS/Commons/API/REST/OauthTokenRequest.swift deleted file mode 100644 index aef7f1d9..00000000 --- a/Annict-for-iOS/Commons/API/REST/OauthTokenRequest.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// OauthTokenRequest.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation - -struct OauthTokenRequest: HTTPRequest { - typealias Response = OauthTokenResponse - - var url: String { - return Constants.rootURI + "/oauth/token" - } - - var method: HTTPMethod { - return .post - } - - var parameters: [String : Any] { - return ["client_id": Constants.clientID, - "client_secret": Constants.clientSecret, - "grant_type": "authorization_code", - "redirect_uri": Constants.redirectURI, - "code": code] - } - - private var code: String - - init(code: String) { - self.code = code - } -} - -struct OauthTokenResponse: Codable { - var accessToken: String -} diff --git a/Annict-for-iOS/Commons/AppDelegate.swift b/Annict-for-iOS/Commons/AppDelegate.swift deleted file mode 100644 index d3905df7..00000000 --- a/Annict-for-iOS/Commons/AppDelegate.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// AppDelegate.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/21. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { - let urlComponents = NSURLComponents(url: url, resolvingAgainstBaseURL: true) - if let authCode = urlComponents?.queryItems?.first?.value { - NotificationCenter.default.post(name: .safariViewControllerCloseNotification, object: authCode) - } - 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/Annict-for-iOS/Commons/BlurKit/BlurKit.swift b/Annict-for-iOS/Commons/BlurKit/BlurKit.swift deleted file mode 100755 index cb95e8da..00000000 --- a/Annict-for-iOS/Commons/BlurKit/BlurKit.swift +++ /dev/null @@ -1,90 +0,0 @@ -// -// BlurKit.swift -// BlurKit -// -// Created by Yuto Akiba on 2018/10/05. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -public protocol BlurKitCompatible { - associatedtype Compatible - - var bk: Compatible { get } -} - -public final class BlurKit { - let base: Base - public init(_ base: Base) { - self.base = base - } -} - -public extension BlurKitCompatible { - var bk: BlurKit { - return BlurKit(self) - } -} - -extension UIView: BlurKitCompatible {} - -extension BlurKit where Base: UIView { - public var blurRadius: CGFloat { - get { return blurView?.blurRadius ?? 0 } - set { blurView?.blurRadius = newValue } - } - - public var colorTint: UIColor { - get { return blurView?.colorTint ?? .white } - set { blurView?.colorTint = newValue } - } - - public var colorTintAlpha: CGFloat { - get { return blurView?.colorTintAlpha ?? 0 } - set { blurView?.colorTintAlpha = newValue } - } - - public var isBlurHidden: Bool { - get { return blurView?.isHidden ?? false } - set { blurView?.isHidden = newValue } - } - - public func addBlur(blurRadius: CGFloat = 10, colorTint: UIColor? = nil, colorTintAlpha: CGFloat = 0.0) { - if !canAddBlur { return } - - let blurView = BlurView(frame: base.frame) - blurView.restorationIdentifier = blurViewID - blurView.translatesAutoresizingMaskIntoConstraints = false - blurView.blurRadius = blurRadius - blurView.colorTint = colorTint - blurView.colorTintAlpha = colorTintAlpha - base.addSubview(blurView) - addConstrains(view: blurView) - } - - public func removeBlur() { - blurView?.removeFromSuperview() - } - - var blurView: BlurView? { - return base.subviews.first(where: { $0.restorationIdentifier == blurViewID }) as? BlurView - } - - private var canAddBlur: Bool { - return blurView == nil - } - - private var blurViewID: String { - return "_blur_view" + ObjectIdentifier(base).debugDescription - } - - private func addConstrains(view: UIView) { - NSLayoutConstraint.activate([ - view.leadingAnchor.constraint(equalTo: base.leadingAnchor), - view.trailingAnchor.constraint(equalTo: base.trailingAnchor), - view.topAnchor.constraint(equalTo: base.topAnchor), - view.bottomAnchor.constraint(equalTo: base.bottomAnchor), - ]) - } -} diff --git a/Annict-for-iOS/Commons/BlurKit/BlurView.swift b/Annict-for-iOS/Commons/BlurKit/BlurView.swift deleted file mode 100755 index cd389f78..00000000 --- a/Annict-for-iOS/Commons/BlurKit/BlurView.swift +++ /dev/null @@ -1,61 +0,0 @@ -// -// BlurKit.swift -// BlurKit -// -// Created by Yuto Akiba on 2018/10/05. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -open class BlurView: UIVisualEffectView { - - private let blurEffect = (NSClassFromString("_UICustomBlurEffect") as! UIBlurEffect.Type).init() - - open var colorTint: UIColor? { - get { return _value(forKey: "colorTint") as? UIColor } - set { _setValue(newValue, forKey: "colorTint") } - } - - open var colorTintAlpha: CGFloat { - get { return _value(forKey: "colorTintAlpha") as! CGFloat } - set { _setValue(newValue, forKey: "colorTintAlpha") } - } - - open var blurRadius: CGFloat { - get { return _value(forKey: "blurRadius") as! CGFloat } - set { _setValue(newValue, forKey: "blurRadius") } - } - - open var scale: CGFloat { - get { return _value(forKey: "scale") as! CGFloat } - set { _setValue(newValue, forKey: "scale") } - } - - public override init(effect: UIVisualEffect?) { - super.init(effect: effect) - - prepare() - } - - required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - - prepare() - } - - private func prepare() { - scale = 1 - } - - private func _value(forKey key: String) -> Any? { - return blurEffect.value(forKeyPath: key) - } - - private func _setValue(_ value: Any?, forKey key: String) { - blurEffect.setValue(value, forKeyPath: key) - effect = blurEffect - } - -} - diff --git a/Annict-for-iOS/Commons/Constants.swift b/Annict-for-iOS/Commons/Constants.swift deleted file mode 100644 index 6bfe18da..00000000 --- a/Annict-for-iOS/Commons/Constants.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// Constants.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Keys - -struct Constants { - static let rootURI = "https://api.annict.com" - static let redirectURI = "annict://oauth" - - static var clientID: String { - return AnnictForIOSKeys().annictClientID - } - - static var clientSecret: String { - return AnnictForIOSKeys().annictClientSecret - } - - static let baseImageURL = AnnictForIOSKeys().baseImageURL - - static var oauthURL: URL? { - var oauthURL = "\(rootURI)/oauth/authorize" - oauthURL += "?client_id=\(clientID)" - oauthURL += "&response_type=code" - oauthURL += "&redirect_uri=\(redirectURI)" - oauthURL += "&scope=read+write" - return URL(string: oauthURL) - } -} - diff --git a/Annict-for-iOS/Commons/Extensions/AnnictGraphQL.swift b/Annict-for-iOS/Commons/Extensions/AnnictGraphQL.swift deleted file mode 100644 index 7311d438..00000000 --- a/Annict-for-iOS/Commons/Extensions/AnnictGraphQL.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// AnnictGraphQL.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/28. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Apollo -import ApolloSQLite - -final class AnnictGraphQL { - private static var baseURL: URL { - return URL(string: "https://api.annict.com/graphql")! - } - - private static var headers: [AnyHashable : Any] { - guard let token = UserDefaultsRepository.fetch(forKey: .accessToken, type: String.self) else { return [:] } - return ["Authorization": "Bearer \(token)"] - } - - private static var configuration: URLSessionConfiguration { - let config = URLSessionConfiguration.default - config.httpAdditionalHeaders = headers - return config - } - - static var client: ApolloClient = makeClient() - - static func resetClient() { - client = makeClient() - } - - private static func makeClient() -> ApolloClient { - let transport = HTTPNetworkTransport(url: baseURL, session: URLSession(configuration: configuration)) - do { - let fileURL = try temporarySQLiteFileURL() - let sqliteCache = try SQLiteNormalizedCache(fileURL: fileURL) - return ApolloClient(networkTransport: transport, store: ApolloStore(cache: sqliteCache)) - } catch { - return ApolloClient(networkTransport: transport) - } - } - - private static func temporarySQLiteFileURL() throws -> URL { - let applicationSupportPath = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).first! - let applicationSupportURL = URL(fileURLWithPath: applicationSupportPath) - - let temporaryDirectoryURL = try FileManager.default.url( - for: .cachesDirectory, - in: .userDomainMask, - appropriateFor: applicationSupportURL, - create: true) - return temporaryDirectoryURL.appendingPathComponent("db.sqlite3") - } -} diff --git a/Annict-for-iOS/Commons/Extensions/CALayer.swift b/Annict-for-iOS/Commons/Extensions/CALayer.swift deleted file mode 100644 index a80f0898..00000000 --- a/Annict-for-iOS/Commons/Extensions/CALayer.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// CALayer.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -extension CALayer { - private var keyPath: String { - return "continuousCorners" - } - - var smoothCorners: Bool { - get { return value(forKeyPath: keyPath) as? Bool ?? false } - set { setValue(newValue, forKeyPath: keyPath) } - } -} diff --git a/Annict-for-iOS/Commons/Extensions/CGSize.swift b/Annict-for-iOS/Commons/Extensions/CGSize.swift deleted file mode 100644 index 7cc8882c..00000000 --- a/Annict-for-iOS/Commons/Extensions/CGSize.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// CGSize.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/25. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -extension CGSize { - static var one: CGSize { - return .init(width: 1, height: 1) - } -} diff --git a/Annict-for-iOS/Commons/Extensions/CachePolicy.swift b/Annict-for-iOS/Commons/Extensions/CachePolicy.swift deleted file mode 100644 index 61daec1d..00000000 --- a/Annict-for-iOS/Commons/Extensions/CachePolicy.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// CachePolicy.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/18. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import Apollo - -extension CachePolicy { - var takeCount: Int { - return self == .returnCacheDataAndFetch ? 2 : 1 - } -} diff --git a/Annict-for-iOS/Commons/Extensions/Entity+Extension.swift b/Annict-for-iOS/Commons/Extensions/Entity+Extension.swift deleted file mode 100644 index a8c3834c..00000000 --- a/Annict-for-iOS/Commons/Extensions/Entity+Extension.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// Entity.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/12. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import Foundation - -extension MinimumEpisode { - var numberAndTitle: String { - var result = "" - - if let numberText = numberText { - result = "\(numberText) " - } - - if let title = title { - result += title - } - - return result - } -} - -extension HomeViewReactor.Activity { - enum ItemType { - case status(AsStatus) - case record(AsRecord) - case review(AsReview) - case multipleRecord(AsMultipleRecord) - case unknown - } - - var itemType: ItemType { - if let e = asStatus { - return .status(e) - } - - if let e = asRecord { - return .record(e) - } - - if let e = asReview { - return .review(e) - } - - if let e = asMultipleRecord { - return .multipleRecord(e) - } - - return .unknown - } - - var work: MinimumWork? { - get { - switch itemType { - case .status(let item): - return item.work.fragments.minimumWork - case .record(let item): - return item.work.fragments.minimumWork - case .review(let item): - return item.work.fragments.minimumWork - case .multipleRecord(let item): - return item.work.fragments.minimumWork - case .unknown: - return nil - } - } - set { - guard let work = newValue else { return } - asStatus?.work.fragments.minimumWork = work - asRecord?.work.fragments.minimumWork = work - asReview?.work.fragments.minimumWork = work - asMultipleRecord?.work.fragments.minimumWork = work - } - } -} diff --git a/Annict-for-iOS/Commons/Extensions/GraphQLSelectionSet.swift b/Annict-for-iOS/Commons/Extensions/GraphQLSelectionSet.swift deleted file mode 100644 index 8d5b33cf..00000000 --- a/Annict-for-iOS/Commons/Extensions/GraphQLSelectionSet.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// GraphQLSelectionSet.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/28. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import RxSwift -import Apollo - -extension Array: GraphQLSelectionSet where Element: GraphQLSelectionSet { - public init(unsafeResultMap: ResultMap) { - let resultMaps = unsafeResultMap["resultMap"] as! [ResultMap] - let sets = resultMaps.map(Element.init) - self = sets - } - - public static var selections: [GraphQLSelection] { - return [] - } - - public var resultMap: ResultMap { - return ["resultMap": self.map { $0.resultMap }] - } -} - -extension GraphQLSelectionSet { - func iSEqual(_ value: GraphQLSelectionSet) -> Bool { - return (self.resultMap as NSDictionary).isEqual(to: value.resultMap as [AnyHashable : Any]) - } -} - -extension Dictionary where Key == String, Value == Any? { - static func == (lhs: Dictionary, rhs: Dictionary) -> Bool { - return (lhs as NSDictionary).isEqual(to: rhs as [AnyHashable: Any]) - } -} - -extension ObservableType where Element: GraphQLSelectionSet { - func distinctUntilChanged() -> Observable { - return distinctUntilChanged { $0.resultMap == $1.resultMap } - } -} - -protocol Connection { - associatedtype Node - var nodes: [Node?]? { get set } -} - -extension Connection { - var values: [Node] { - return nodes?.compactMap { $0 } ?? [] - } -} diff --git a/Annict-for-iOS/Commons/Extensions/HUD.swift b/Annict-for-iOS/Commons/Extensions/HUD.swift deleted file mode 100644 index 8376ac63..00000000 --- a/Annict-for-iOS/Commons/Extensions/HUD.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// HUD.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/12/04. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import PKHUD - -extension HUD { - static func showToFront(_ content: HUDContentType) { - show(content, onView: UIApplication.shared.windows.last) - } - - static func flashToFront(_ content: HUDContentType, delay: TimeInterval = 0) { - flash(content, onView: UIApplication.shared.windows.last, delay: delay) - } -} diff --git a/Annict-for-iOS/Commons/Extensions/Icon.swift b/Annict-for-iOS/Commons/Extensions/Icon.swift deleted file mode 100644 index 2d5456ba..00000000 --- a/Annict-for-iOS/Commons/Extensions/Icon.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// Icon.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/12/04. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -//enum IconImage { -// case paperAirplane -// -// var image: UIImage? { -// let result: UIImage? -// switch self { -// case .paperAirplane: -// result = UIImage(named: "paperplane_fill") -// } -// return result?.withRenderingMode(.alwaysTemplate) -// } -//} -// -//extension UIButton { -// func configure(icon: IconImage, for state: UIControl.State = .normal) { -// setImage(icon.image, for: state) -// } -//} - -enum IconImage: String { - case pencil = "pencil" - case calendar = "calendar" - case paperAirplane = "paperplane_fill" - - var image: UIImage? { - return UIImage(named: self.rawValue) - } -} - -extension UIButton { - - convenience init(icon: IconImage) { - self.init(type: .custom) - setImage(icon.image?.withRenderingMode(.alwaysTemplate), for: .normal) - imageView?.contentMode = .scaleAspectFit - contentHorizontalAlignment = .fill - contentVerticalAlignment = .fill - backgroundColor = .white - imageEdgeInsets = UIEdgeInsets(top: -8, left: -8, bottom: -8, right: -8) - } - - func configure(icon: IconImage, size: CGFloat = 10, color: UIColor = .white, for state: UIControl.State = .normal) { - setImage(icon.image?.withRenderingMode(.alwaysTemplate), for: .normal) - imageView?.contentMode = .scaleAspectFit - contentHorizontalAlignment = .fill - contentVerticalAlignment = .fill - let inset = (bounds.width - size) / 2 - imageEdgeInsets = UIEdgeInsets(top: inset, left: inset, bottom: inset, right: inset) - tintColor = color - } - - func applyFABShadow() { - applyShadow(opacity: 0.4, radius: 4, offset: CGSize(width: 0, height: 3)) - } -} diff --git a/Annict-for-iOS/Commons/Extensions/NSMutableParagraphStyle.swift b/Annict-for-iOS/Commons/Extensions/NSMutableParagraphStyle.swift deleted file mode 100644 index e55cda96..00000000 --- a/Annict-for-iOS/Commons/Extensions/NSMutableParagraphStyle.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// NSMutableParagraphStyle.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/25. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -public extension NSMutableParagraphStyle { - - convenience init(lineSpacing: CGFloat? = nil, lineBreakMode: NSLineBreakMode? = nil, alignment: NSTextAlignment? = nil, lineHeight: CGFloat? = nil, firstLineHeadIndent: CGFloat? = nil, headIndent: CGFloat? = nil, tailIndent: CGFloat? = nil) { - self.init() - - if let lineSpacing = lineSpacing { - self.lineSpacing = lineSpacing - } - if let lineBreakMode = lineBreakMode { - self.lineBreakMode = lineBreakMode - } - if let alignment = alignment { - self.alignment = alignment - } - if let lineHeight = lineHeight { - self.minimumLineHeight = lineHeight - self.maximumLineHeight = lineHeight - } - - if let firstLineHeadIndent = firstLineHeadIndent { - self.firstLineHeadIndent = firstLineHeadIndent - } - - if let headIndent = headIndent { - self.headIndent = headIndent - } - - if let tailIndent = tailIndent { - self.tailIndent = tailIndent - } - } -} diff --git a/Annict-for-iOS/Commons/Extensions/NSObject.swift b/Annict-for-iOS/Commons/Extensions/NSObject.swift deleted file mode 100644 index bbd24790..00000000 --- a/Annict-for-iOS/Commons/Extensions/NSObject.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// NSObject.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation - -public extension NSObject { - - class var className: String { - return String(describing: self) - } - - var className: String { - return String(describing: type(of: self)) - } -} diff --git a/Annict-for-iOS/Commons/Extensions/StatusState.swift b/Annict-for-iOS/Commons/Extensions/StatusState.swift deleted file mode 100644 index 077bcb79..00000000 --- a/Annict-for-iOS/Commons/Extensions/StatusState.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// StatusState.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/28. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation - -extension StatusState { - static var values: [StatusState] { - return [.watching, .wannaWatch, .watched, .onHold, .stopWatching] - } - - var localizedText: String { - switch self { - case .watching: - return "見てる" - case .wannaWatch: - return "見たい" - case .watched: - return "見た" - case .onHold: - return "中断" - case .stopWatching: - return "中止" - case .noState, .__unknown: - return "ステータスを選択" - } - } -} diff --git a/Annict-for-iOS/Commons/Extensions/StoryboardLoadable.swift b/Annict-for-iOS/Commons/Extensions/StoryboardLoadable.swift deleted file mode 100644 index f967a3aa..00000000 --- a/Annict-for-iOS/Commons/Extensions/StoryboardLoadable.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// UIStoryboard.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit - -extension UIViewController: StoryboardLoadable {} - -protocol StoryboardLoadable {} - -extension StoryboardLoadable where Self: UIViewController { - - static func loadStoryboard() -> Self { - let storyboard = UIStoryboard(name: className, bundle: nil) - return storyboard.instantiateViewController(withIdentifier: className) as! Self - } - - static func loadStoryboard(storyboardName: String) -> Self { - let storyboard = UIStoryboard(name: storyboardName, bundle: nil) - return storyboard.instantiateViewController(withIdentifier: className) as! Self - } -} - -extension StoryboardLoadable where Self: UIViewController & StoryboardView { - static func loadStoryboard(reactor: Reactor) -> Self { - let storyboard = UIStoryboard(name: className, bundle: nil) - let vc = storyboard.instantiateViewController(withIdentifier: className) as! Self - vc.reactor = reactor - return vc - } -} - diff --git a/Annict-for-iOS/Commons/Extensions/SwiftyDate.swift b/Annict-for-iOS/Commons/Extensions/SwiftyDate.swift deleted file mode 100644 index 1e7a2090..00000000 --- a/Annict-for-iOS/Commons/Extensions/SwiftyDate.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// SwiftyDate.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import SwiftDate - -extension DateInRegion { - func toRelativeCurrentLocal() -> String { - return toRelative(locale: Locales.current) - } -} diff --git a/Annict-for-iOS/Commons/Extensions/UIApplication.swift b/Annict-for-iOS/Commons/Extensions/UIApplication.swift deleted file mode 100644 index 7766546e..00000000 --- a/Annict-for-iOS/Commons/Extensions/UIApplication.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// UIApplication.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -extension UIApplication { - static var rootViewController: RootViewController? { - guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return nil } - return appDelegate.window?.rootViewController as? RootViewController - } - - static func topViewController() -> UIViewController? { - guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return nil } - guard let rootVC = appDelegate.window?.rootViewController else { return nil } - return rootVC.topViewController() - } -} - -extension UIViewController { - func topViewController() -> UIViewController { - if let root = self as? RootViewController { - return root.currentViewController?.topViewController() ?? self - } else if let tab = self as? UITabBarController { - if let vc = tab.selectedViewController { - return vc.topViewController() - } - } else if let navi = self as? UINavigationController { - if let vc = navi.viewControllers.last { - return vc.topViewController() - } - } else if let presented = self.presentedViewController { - return presented.topViewController() - } - return self - } -} diff --git a/Annict-for-iOS/Commons/Extensions/UICollectionView.swift b/Annict-for-iOS/Commons/Extensions/UICollectionView.swift deleted file mode 100644 index 84fb0757..00000000 --- a/Annict-for-iOS/Commons/Extensions/UICollectionView.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// UICollectionView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/14. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -extension UICollectionView { - func register(cellTypes: UICollectionViewCell.Type...) { - cellTypes.forEach { - let nib = UINib(nibName: $0.className, bundle: nil) - register(nib, forCellWithReuseIdentifier: $0.className) - } - } - - func dequeueReusableCell(type: T.Type, for indexPath: IndexPath) -> T { - return dequeueReusableCell(withReuseIdentifier: type.className, for: indexPath) as! T - } -} diff --git a/Annict-for-iOS/Commons/Extensions/UIColor.swift b/Annict-for-iOS/Commons/Extensions/UIColor.swift deleted file mode 100644 index 955c8b04..00000000 --- a/Annict-for-iOS/Commons/Extensions/UIColor.swift +++ /dev/null @@ -1,69 +0,0 @@ -// -// UIColor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/25. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -extension UIColor { - public convenience init(hex: NSInteger, alpha: CGFloat = 1) { - let r: Int = (hex >> 16) - let g: Int = (hex >> 8 & 0xFF) - let b: Int = (hex & 0xFF) - self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: alpha) - } -} - -extension UIColor: MonoExtensionCompatible { } - -// Mono - -extension MonoExtension where T: UIColor { - static var white: UIColor { return UIColor(hex: 0x000000) } - static var monoFA: UIColor { return UIColor(hex: 0xFAFAFA) } - static var monoF4: UIColor { return UIColor(hex: 0xF4F4F4) } - static var monoE2: UIColor { return UIColor(hex: 0xE2E2E2) } - static var monoDE: UIColor { return UIColor(hex: 0xDEDEDE) } - static var monoC6: UIColor { return UIColor(hex: 0xC6C6C6) } - static var monoB3: UIColor { return UIColor(hex: 0xB3B3B3) } - static var mono9A: UIColor { return UIColor(hex: 0x9A9A9A) } - static var mono72: UIColor { return UIColor(hex: 0x727272) } - static var black: UIColor { return UIColor(hex: 0x242424) } -} - -public class MonoExtension { - public let base: T - public init(_ base: T) { - self.base = base - } -} - -protocol MonoExtensionCompatible { - associatedtype Compatible - static var mono: MonoExtension.Type { get } - var mono: MonoExtension { get } -} - -extension MonoExtensionCompatible { - public static var mono: MonoExtension.Type { - return MonoExtension.self - } - - public var mono: MonoExtension { - return MonoExtension(self) - } -} - -extension UIColor: PortannictExtensionCompatible { } -extension PortannictExtension where T: UIColor { - static var pink: UIColor { - return UIColor(hex: 0xFA5871) - } - - static var blue: UIColor { - return UIColor(hex: 0x3498db) - } -} diff --git a/Annict-for-iOS/Commons/Extensions/UIImage.swift b/Annict-for-iOS/Commons/Extensions/UIImage.swift deleted file mode 100644 index 864740e4..00000000 --- a/Annict-for-iOS/Commons/Extensions/UIImage.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// UIImage.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/25. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -extension UIImage { - static func make(size: CGSize = .one, color: UIColor) -> UIImage { - let rect = CGRect(origin: .zero, size: size) - UIGraphicsBeginImageContext(rect.size) - let contextRef = UIGraphicsGetCurrentContext() - contextRef?.setFillColor(color.cgColor) - contextRef?.fill(rect) - let img = UIGraphicsGetImageFromCurrentImageContext() ?? UIImage() - UIGraphicsEndImageContext() - return img - } -} diff --git a/Annict-for-iOS/Commons/Extensions/UIImageView.swift b/Annict-for-iOS/Commons/Extensions/UIImageView.swift deleted file mode 100644 index 94b46b78..00000000 --- a/Annict-for-iOS/Commons/Extensions/UIImageView.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// UIImageView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/25. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import Kingfisher -import SQLite -import Keys - -extension UIImageView { - func setImage(url: URLConvertible?, completion: ((UIImage?) -> Void)? = nil) { - let downloader = ImageDownloader.default - downloader.downloadTimeout = 300 - kf.setImage(with: url?.asURL(), - placeholder: UIImage.make(color: UIColor(white: 0.9, alpha: 1)), - options: [.transition(.fade(0.4)), - .downloader(downloader)], - completionHandler: { img, error, _, url in - completion?(img) - }) - } - - func setImage(workID: Int) { - setImage(url: Constants.baseImageURL + "/images/\(workID)") - } -} - -final class SQLiteManager { - static let shared = SQLiteManager() - - let db: SQLite.Connection - - private init() { - do { - let path = Bundle.main.path( forResource: "annict-image", ofType: "sqlite" )! - db = try SQLite.Connection(path) - } catch { - fatalError() - } - } -} diff --git a/Annict-for-iOS/Commons/Extensions/UINavigationBar.swift b/Annict-for-iOS/Commons/Extensions/UINavigationBar.swift deleted file mode 100644 index 88068609..00000000 --- a/Annict-for-iOS/Commons/Extensions/UINavigationBar.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// UINavigationBar.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/30. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -public extension UINavigationBar { - - func clearShadowLine(color: UIColor? = nil) { - if let color = color { - let image = UIImage.make(size: CGSize(width: 300, height: 100), color: color) - self.setBackgroundImage(image, for: .default) - } else { - self.setBackgroundImage(nil, for: .default) - } - self.shadowImage = UIImage() - } - - func transparent() { - self.setBackgroundImage(UIImage(), for: .default) - self.shadowImage = UIImage() - } - - func untransparent() { - self.setBackgroundImage(nil, for: .default) - self.shadowImage = nil - } -} diff --git a/Annict-for-iOS/Commons/Extensions/UITableView.swift b/Annict-for-iOS/Commons/Extensions/UITableView.swift deleted file mode 100644 index a945eba7..00000000 --- a/Annict-for-iOS/Commons/Extensions/UITableView.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// UITableView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/14. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -extension UITableView { - func register(_ cellTypes: UITableViewCell.Type...) { - cellTypes.forEach { - let nib = UINib(nibName: $0.className, bundle: nil) - register(nib, forCellReuseIdentifier: $0.className) - } - } - - func dequeueReusableCell(classType type: T.Type, for indexPath: IndexPath) -> T { - return dequeueReusableCell(withIdentifier: type.className, for: indexPath) as! T - } -} - -extension UITableViewCell { - func clearSeparator() { - separatorInset = UIEdgeInsets(top: 0, left: bounds.width, bottom: 0, right: 0) - } -} diff --git a/Annict-for-iOS/Commons/Extensions/UIView.swift b/Annict-for-iOS/Commons/Extensions/UIView.swift deleted file mode 100644 index 7d7992a3..00000000 --- a/Annict-for-iOS/Commons/Extensions/UIView.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// UIView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -extension UIView { - - func circleFilter() { - layer.cornerRadius = frame.size.width / 2 - layer.masksToBounds = true - } - - func roundedRectangleFilter() { - layer.cornerRadius = frame.size.height / 2 - layer.masksToBounds = true - } - - func removeAll() { - for subview in subviews { - subview.removeFromSuperview() - } - removeFromSuperview() - } - - func applyShadow(color: UIColor = .black, - opacity: Float = 0.16, - radius: CGFloat = 16, - offset: CGSize = .init(width: 0, height: 3), - path: UIBezierPath? = nil, - shouldRasterize: Bool = true) { - layer.shadowColor = color.cgColor - layer.shadowOpacity = opacity - layer.shadowRadius = radius - layer.shadowOffset = offset - layer.shouldRasterize = shouldRasterize - layer.rasterizationScale = UIScreen.main.scale - - if let path = path { - layer.shadowPath = path.cgPath - } else { - layer.shadowPath = UIBezierPath(roundedRect: bounds, cornerRadius: layer.cornerRadius).cgPath - } - } - - func updateShodowPath() { - layer.shadowPath = UIBezierPath(roundedRect: bounds, cornerRadius: layer.cornerRadius).cgPath - } -} diff --git a/Annict-for-iOS/Commons/Extensions/URLConvertible.swift b/Annict-for-iOS/Commons/Extensions/URLConvertible.swift deleted file mode 100644 index f23ef409..00000000 --- a/Annict-for-iOS/Commons/Extensions/URLConvertible.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// URLConvertible.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/25. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation - -protocol URLConvertible { - func asURL() -> URL? -} - -extension String: URLConvertible { - func asURL() -> URL? { - return URL(string: self) - } -} - -extension URL: URLConvertible { - func asURL() -> URL? { - return self - } -} diff --git a/Annict-for-iOS/Commons/NotificationCenter.swift b/Annict-for-iOS/Commons/NotificationCenter.swift deleted file mode 100644 index 3ded0fe2..00000000 --- a/Annict-for-iOS/Commons/NotificationCenter.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// NotificationCenter.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation - -extension NotificationCenter { - func single(forName name: NSNotification.Name?, object obj: Any?, queue: OperationQueue?, using block: @escaping (Notification) -> Void) { - var token: NSObjectProtocol! - token = addObserver(forName: name, object: obj, queue: queue) { [weak self] notification in - self?.removeObserver(token) - block(notification) - } - } -} diff --git a/Annict-for-iOS/Commons/NotificationName.swift b/Annict-for-iOS/Commons/NotificationName.swift deleted file mode 100644 index 970f065c..00000000 --- a/Annict-for-iOS/Commons/NotificationName.swift +++ /dev/null @@ -1,13 +0,0 @@ -// -// NotificationName.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation - -extension NSNotification.Name { - static let safariViewControllerCloseNotification = Notification.Name("safariViewControllerCloseNotification") -} diff --git a/Annict-for-iOS/Commons/ParentPagerViewController.swift b/Annict-for-iOS/Commons/ParentPagerViewController.swift deleted file mode 100644 index f139133c..00000000 --- a/Annict-for-iOS/Commons/ParentPagerViewController.swift +++ /dev/null @@ -1,141 +0,0 @@ -// -// ParentPagerViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/04/01. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import XLPagerTabStrip - -protocol ParentPager { - var headerViewTopConstraint: NSLayoutConstraint! { get } - func viewControllers(_ parentPager: ParentPager) -> [ChildPagerViewController] - func headerView(_ parentPager: ParentPager) -> UIView - func heigthForHeaderView(_ parentPager: ParentPager) -> CGFloat -} - -extension ParentPager where Self: PagerTabStripViewController { - var childScrollViews: [UIScrollView] { - return viewControllers.compactMap { ($0 as? ScrollViewProvider)?.provideScrollView() } - } -} - -class ParentPagerViewController: ButtonBarPagerTabStripViewController, ParentPager, ChildPagerTabStripDelegate { - private enum _Const { - static let normalTextColor = UIColor(hex: 0x8E8E8E) - static let selectedBackgroundColor = UIColor(hex: 0xEFEFEF) - static let selectedTextColor = UIColor(hex: 0x333333) - } - - @IBOutlet weak var headerViewTopConstraint: NSLayoutConstraint! - - override func viewDidLoad() { - super.viewDidLoad() - -// headerView(self).frame.size.height = heigthForHeaderView(self) - - } - - // safeAreaのtopInsetを考慮するかどうか - var isEnableTopSafeAreaInset: Bool = false - - var insetTop: CGFloat { - return heigthForHeaderView(self) + buttonBarView.bounds.height - } - - private var buttonMarkView: ButtonMarkView? { - return buttonBarView as? ButtonMarkView - } - - func headerView(_ parentPager: ParentPager) -> UIView { - return UIView() - } - - func heigthForHeaderView(_ parentPager: ParentPager) -> CGFloat { - return headerView(self).systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height - } - - func viewControllers(_ parentPager: ParentPager) -> [ChildPagerViewController] { - return [] - } - - override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] { - let vcs = viewControllers(self) - vcs.forEach { $0.delegate = self } - return vcs - } - - func scrollViewWillDisplay(_ scrollView: UIScrollView) { - // viewのinsetを取得しようとするとviewDidLoadだと取得できないので決めうちにする必要がある - - let safeAreaInsetTop: CGFloat = 44 - - if isEnableTopSafeAreaInset { - scrollView.contentInset.top = insetTop - safeAreaInsetTop - scrollView.scrollIndicatorInsets.top = insetTop - safeAreaInsetTop - } else { - scrollView.contentInset.top = insetTop - scrollView.scrollIndicatorInsets.top = insetTop - } - scrollView.contentInset.bottom = 1000 - // - var insetTops = childScrollViews - .filter { $0 != scrollView } - .map { min($0.contentOffset.y, -buttonBarView.bounds.height) } - insetTops.append(-insetTop) -// if isEnableTopSafeAreaInset { -// insetTops = insetTops.map { $0 + safeAreaInsetTop } -// } - scrollView.contentOffset.y = insetTops.max() ?? 0 - } - - func scrollViewDidScrolled(_ scrollView: UIScrollView) { - let safeAreaInsetTop: CGFloat = 44 - - var constant = -insetTop - scrollView.contentOffset.y - var minTopConstant = -heigthForHeaderView(self) - if isEnableTopSafeAreaInset { - constant += safeAreaInsetTop - minTopConstant += safeAreaInsetTop - } - - headerViewTopConstraint.constant = max(constant, minTopConstant) - - // TODO: safeArea考慮 - if scrollView.contentOffset.y <= -scrollView.contentInset.top { - return - } - - let otherScrollViews = childScrollViews - .filter { $0 != scrollView } - - for otherScrollView in otherScrollViews { - if scrollView.contentOffset.y >= -buttonBarView.bounds.height { - return - } - otherScrollView.contentOffset.y = scrollView.contentOffset.y - } - - } - - func prepareButtonBar() { - settings.style.selectedBarHeight = 2.0 - settings.style.buttonBarItemBackgroundColor = .clear - settings.style.buttonBarMinimumLineSpacing = 0 - settings.style.buttonBarItemFont = .boldSystemFont(ofSize: 14) - settings.style.buttonBarItemTitleColor = _Const.normalTextColor - settings.style.buttonBarLeftContentInset = 24 - settings.style.buttonBarRightContentInset = 24 - settings.style.buttonBarItemsShouldFillAvailableWidth = true - - changeCurrentIndexProgressive = { (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in - guard changeCurrentIndex == true else { return } - newCell?.label.textColor = _Const.selectedTextColor - oldCell?.label.textColor = _Const.normalTextColor - } - - buttonMarkView?.selectedMarkView.backgroundColor = _Const.selectedBackgroundColor - } -} diff --git a/Annict-for-iOS/Commons/PortannictExtension.swift b/Annict-for-iOS/Commons/PortannictExtension.swift deleted file mode 100644 index 7c28ab43..00000000 --- a/Annict-for-iOS/Commons/PortannictExtension.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// PortannictExtension.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import Foundation - -class PortannictExtension { - let base: T - init(_ base: T) { - self.base = base - } -} - -protocol PortannictExtensionCompatible { - associatedtype Compatible - static var pa: PortannictExtension.Type { get } - var pa: PortannictExtension { get } -} - -extension PortannictExtensionCompatible { - static var pa: PortannictExtension.Type { - return PortannictExtension.self - } - - var pa: PortannictExtension { - return PortannictExtension(self) - } -} diff --git a/Annict-for-iOS/Commons/Protocol/AssociatedObjectStore.swift b/Annict-for-iOS/Commons/Protocol/AssociatedObjectStore.swift deleted file mode 100644 index c64f5088..00000000 --- a/Annict-for-iOS/Commons/Protocol/AssociatedObjectStore.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// AssociatedObjectStore.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/26. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import Foundation - -protocol AssociatedObjectStore {} - -extension AssociatedObjectStore { - func associatedObject(forKey key: UnsafeRawPointer) -> T? { - return objc_getAssociatedObject(self, key) as? T - } - - func associatedObject(forKey key: UnsafeRawPointer, default: @autoclosure () -> T) -> T { - if let object: T = self.associatedObject(forKey: key) { - return object - } - let object = `default`() - self.setAssociatedObject(object, forKey: key) - return object - } - - func setAssociatedObject(_ object: T?, forKey key: UnsafeRawPointer) { - objc_setAssociatedObject(self, key, object, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } -} diff --git a/Annict-for-iOS/Commons/Protocol/NibOwnerLoadable.swift b/Annict-for-iOS/Commons/Protocol/NibOwnerLoadable.swift deleted file mode 100644 index 40489434..00000000 --- a/Annict-for-iOS/Commons/Protocol/NibOwnerLoadable.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// NibOwnerLoadable.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/01/16. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -public protocol NibOwnerLoadable { - -} - -public extension NibOwnerLoadable where Self: UIView { - private var _viewID: String { - return "loadedNibView" - } - - var nibView: UIView? { - return subviews.filter { $0.restorationIdentifier == _viewID }.first - } - - func loadNib() { - guard let view = UINib(nibName: self.className, bundle: nil).instantiate(withOwner: self, options: nil).first as? UIView else { - fatalError("not load nib") - } - view.restorationIdentifier = _viewID - view.translatesAutoresizingMaskIntoConstraints = false - view.backgroundColor = .clear - self.addSubview(view) - NSLayoutConstraint.activate([ - view.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 0), - view.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 0), - view.topAnchor.constraint(equalTo: self.topAnchor, constant: 0), - view.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0) - ]) - } -} diff --git a/Annict-for-iOS/Commons/Rx/GradationView.swift b/Annict-for-iOS/Commons/Rx/GradationView.swift deleted file mode 100644 index be8ebc25..00000000 --- a/Annict-for-iOS/Commons/Rx/GradationView.swift +++ /dev/null @@ -1,70 +0,0 @@ -// -// GradationView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/12/09. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -enum GradationType { - case top, left, topLeft, bottomLeft, arctopLeft - - func points() -> (start: CGPoint, end: CGPoint) { - switch self { - case .top: - return (start: CGPoint(x: 0.5, y: 0), end: CGPoint(x: 0.5, y: 1)) - case .left: - return (start: CGPoint(x: 0, y: 0.5), end: CGPoint(x: 1, y: 0.5)) - case .topLeft: - return (start: CGPoint(x: 0, y: 0), end: CGPoint(x: 1, y: 1)) - case .bottomLeft: - return (start: CGPoint(x: 0, y: 1), end: CGPoint(x: 1, y: 0)) - case .arctopLeft: - return (start: CGPoint(x: 0, y: 0.3), end: CGPoint(x: 1, y: 0.7)) - } - } -} - -class GradationView: UIView { - - var gradientLayer: CAGradientLayer? - - func prepare(type: GradationType, colors: [UIColor]) { - self.gradientLayer?.removeFromSuperlayer() - self.gradientLayer = self.layer.create(type: type, colors: colors) - if let layer = self.gradientLayer { - self.layer.insertSublayer(layer, at: 0) - } - } - - override func layoutSubviews() { - super.layoutSubviews() - self.backgroundColor = .clear - self.gradientLayer?.frame = self.bounds - } - - override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { - let view = super.hitTest(point, with: event) - - if view == self { - return nil - } - - return view - } -} - -extension CALayer { - func create(type: GradationType, colors: [UIColor]) -> CAGradientLayer { - let gradationLayer = CAGradientLayer() - - gradationLayer.startPoint = type.points().start - gradationLayer.endPoint = type.points().end - - gradationLayer.colors = colors.map { $0.cgColor } - gradationLayer.frame = self.bounds - return gradationLayer - } -} diff --git a/Annict-for-iOS/Commons/Rx/ObservableType.swift b/Annict-for-iOS/Commons/Rx/ObservableType.swift deleted file mode 100644 index 283c7ba9..00000000 --- a/Annict-for-iOS/Commons/Rx/ObservableType.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// ObservableType.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import RxSwift - -public protocol OptionalType { - associatedtype Wrapped - var value: Wrapped? { get } -} - -extension Optional: OptionalType { - public var value: Wrapped? { - return self - } -} - -extension ObservableType where Element: OptionalType { - func filterNil() -> Observable { - return self.flatMap { element -> Observable in - guard let value = element.value else { - return Observable.empty() - } - return Observable.just(value) - } - } -} - -extension ObservableType where Element: Sequence { - func mapMany(_ transform: @escaping (Element.Element) throws -> R) -> Observable<[R]> { - return map { collection -> [R] in - return try collection.map(transform) - } - } - - func flatMapMany(_ selector: @escaping (Element.Element) throws -> O) -> Observable<[O.Element]> where O: ObservableType { - return flatMap { collection -> Observable<[O.Element]> in - let new = try collection.map(selector) - return Observable.zip(new) - } - } -} diff --git a/Annict-for-iOS/Commons/Rx/RxApollo.swift b/Annict-for-iOS/Commons/Rx/RxApollo.swift deleted file mode 100644 index e2fc7129..00000000 --- a/Annict-for-iOS/Commons/Rx/RxApollo.swift +++ /dev/null @@ -1,121 +0,0 @@ -// -// RxApollo.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import RxSwift -import Apollo - -enum RxApolloError: Error { - case graphQLErrors([GraphQLError]) -} - -final class ApolloReactiveExtensions { - private let client: ApolloClient - - fileprivate init(_ client: ApolloClient) { - self.client = client - } - - func fetchMaybe( - query: Query, - cachePolicy: CachePolicy = .returnCacheDataElseFetch, - queue: DispatchQueue = DispatchQueue.main) -> Maybe { - return Maybe.create { maybe in - let _ = self.client.fetch(query: query, cachePolicy: cachePolicy, queue: queue) { result in - switch result { - case .success(let value): - if let data = value.data { - maybe(.success(data)) - } else { - maybe(.completed) - } - case .failure(let error): - maybe(.error(error)) - } - } - - return Disposables.create { -// cancellable.cancel() - } - } - } - - func fetch( - query: Query, - cachePolicy: CachePolicy = .returnCacheDataElseFetch, - queue: DispatchQueue = DispatchQueue.main) -> Observable { - return Observable.create { observer in - let _ = self.client.fetch(query: query, cachePolicy: cachePolicy, queue: queue) { result in - switch result { - case .success(let value): - if let data = value.data { - observer.on(.next(data)) - } else { - observer.on(.completed) - } - case .failure(let error): - observer.on(.error(error)) - } - } - - return Disposables.create { - // cancellable.cancel() - } - } - } - - func watch( - query: Query, - cachePolicy: CachePolicy = .returnCacheDataElseFetch, - queue: DispatchQueue = DispatchQueue.main) -> Observable { - return Observable.create { observer in - let watcher = self.client.watch(query: query, cachePolicy: cachePolicy, queue: queue) { result in - switch result { - case .success(let value): - if let data = value.data { - observer.on(.next(data)) - } - case .failure(let error): - observer.on(.error(error)) - } - - // Should we silently ignore the case where `result` and `error` are both nil, or should this be an error situation? - } - - return Disposables.create { - watcher.cancel() - } - } - } - - func perform(mutation: Mutation, queue: DispatchQueue = DispatchQueue.main) -> Maybe { - return Maybe.create { maybe in - let cancellable = self.client.perform(mutation: mutation, queue: queue) { result in - switch result { - case .success(let value): - if let data = value.data { - maybe(.success(data)) - } else { - maybe(.completed) - } - case .failure(let error): - maybe(.error(error)) - } - } - - return Disposables.create { - cancellable.cancel() - } - } - } -} - -extension ApolloClient { - var rx: ApolloReactiveExtensions { - return ApolloReactiveExtensions(self) - } -} diff --git a/Annict-for-iOS/Commons/Rx/RxUIScrollView.swift b/Annict-for-iOS/Commons/Rx/RxUIScrollView.swift deleted file mode 100644 index c98377f1..00000000 --- a/Annict-for-iOS/Commons/Rx/RxUIScrollView.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// RxUIScrollView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import RxSwift -import RxCocoa - -extension Reactive where Base: UIScrollView { - func reachedBottom(offset: CGFloat = 0.0) -> ControlEvent { - let source = contentOffset.map { [base] contentOffset in - let visibleHeight = base.frame.height - base.contentInset.top - base.contentInset.bottom - let y = contentOffset.y + base.contentInset.top - let threshold = max(offset, base.contentSize.height - visibleHeight) - return y >= threshold - } - .distinctUntilChanged() - .filter { $0 } - .map { _ in () } - return ControlEvent(events: source) - } - - func triggeredPagination() -> ControlEvent { - return reachedBottom(offset: 400) - } - - var reachedBottom: Observable { - return contentOffset - .flatMap { [weak base] contentOffset -> Observable in - guard let scrollView = base else { return Observable.empty() } - - let visibleHeight = scrollView.frame.height - scrollView.contentInset.top - scrollView.contentInset.bottom - let y = contentOffset.y + scrollView.contentInset.top - let threshold = max(0.0, scrollView.contentSize.height - visibleHeight) - return y > threshold ? Observable.just(()) : Observable.empty() - } - } -} diff --git a/Annict-for-iOS/Commons/Rx/RxUIViewController.swift b/Annict-for-iOS/Commons/Rx/RxUIViewController.swift deleted file mode 100644 index 29424f26..00000000 --- a/Annict-for-iOS/Commons/Rx/RxUIViewController.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// RxUIViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import RxSwift - -extension Reactive where Base: UIViewController { - var viewDidLoad: Observable { - return sentMessage(#selector(base.viewDidLoad)) - .map { _ in () } - .share(replay: 1) - } - - var viewWillAppear: Observable { - return sentMessage(#selector(base.viewWillAppear)) - .map { _ in () } - .share(replay: 1) - } - - var viewDidLayoutSubviews: Observable { - return sentMessage(#selector(base.viewDidLayoutSubviews)) - .map { _ in () } - .share(replay: 1) - } - - var viewDidAppear: Observable { - return sentMessage(#selector(base.viewDidAppear)) - .map { _ in () } - .share(replay: 1) - } - - var viewWillDisappear: Observable { - return sentMessage(#selector(base.viewWillDisappear(_:))) - .map { _ in () } - .share(replay: 1) - } -} diff --git a/Annict-for-iOS/Commons/Services/APIService.swift b/Annict-for-iOS/Commons/Services/APIService.swift deleted file mode 100644 index 2da5cdbc..00000000 --- a/Annict-for-iOS/Commons/Services/APIService.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// APIService.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/24. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import RxSwift -import Apollo - -protocol APIServiceType { - func getOauthToken(code: String) -> Single - func fetchFollowingActivities(after: String?, cachePolicy: CachePolicy) -> Observable -} - -final class APIService: BaseService, APIServiceType { - func getOauthToken(code: String) -> Single { - let request = OauthTokenRequest(code: code) - return HTTPClient.send(request: request) - } - - func fetchFollowingActivities(after: String?, cachePolicy: CachePolicy) -> Observable { - let query = GetFollowingActivitiesQuery(after: after) - return AnnictGraphQL.client.rx.fetch(query: query, cachePolicy: cachePolicy) - .asObservable() - .take(cachePolicy.takeCount) - } -} diff --git a/Annict-for-iOS/Commons/Services/BaseService.swift b/Annict-for-iOS/Commons/Services/BaseService.swift deleted file mode 100644 index c5cb2a65..00000000 --- a/Annict-for-iOS/Commons/Services/BaseService.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// BaseService.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/22. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation - -class BaseService { - unowned let provider: ServiceProviderType - - init(provider: ServiceProviderType) { - self.provider = provider - } -} diff --git a/Annict-for-iOS/Commons/Services/EpisodeAPIService.swift b/Annict-for-iOS/Commons/Services/EpisodeAPIService.swift deleted file mode 100644 index 0e6a627d..00000000 --- a/Annict-for-iOS/Commons/Services/EpisodeAPIService.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// EpisodeAPIService.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/21. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import RxSwift -import Apollo - -struct EpisodeAPIServiceEvent { - let willCreateRecordEpisodeID = PublishSubject() - let didCreatedRecord = PublishSubject() -} - -protocol EpisodeAPIServiceType { - var event: EpisodeAPIServiceEvent { get } - var client: ApolloClient { get } - - func createRecord(episodeID: GraphQLID, comment: String?, ratingState: RatingState?, shareTwitter: Bool) -> Observable -} - -final class EpisodeAPIService: BaseService, EpisodeAPIServiceType { - let event = EpisodeAPIServiceEvent() - let client = AnnictGraphQL.client - - let disposeBag = DisposeBag() - - func createRecord(episodeID: GraphQLID, comment: String?, ratingState: RatingState?, shareTwitter: Bool = false) -> Observable { - event.willCreateRecordEpisodeID.onNext(episodeID) - let query = CreateRecordMutation(episodeId: episodeID, comment: comment, ratingState: ratingState, shareTwitter: shareTwitter) - let stream = client.rx.perform(mutation: query) - .asObservable() - .share(replay: 1) - - stream - .map { $0.createRecord?.record?.fragments.minimumRecord } - .filterNil() - .bind(to: event.didCreatedRecord) - .disposed(by: disposeBag) - - return stream - } -} diff --git a/Annict-for-iOS/Commons/Services/ServiceProvider.swift b/Annict-for-iOS/Commons/Services/ServiceProvider.swift deleted file mode 100644 index 92ca70fd..00000000 --- a/Annict-for-iOS/Commons/Services/ServiceProvider.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// ServiceProvider.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/22. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation - -protocol ServiceProviderType: class { - var apiService: APIServiceType { get } - var workAPIService: WorkAPIServiceType { get } - var episodeAPIService: EpisodeAPIServiceType { get } - var userDefaultsService: UserDefaultsServiceType { get } -} - -final class ServiceProvider: ServiceProviderType { - lazy var apiService: APIServiceType = APIService(provider: self) - lazy var workAPIService: WorkAPIServiceType = WorkAPIService(provider: self) - lazy var episodeAPIService: EpisodeAPIServiceType = EpisodeAPIService(provider: self) - lazy var userDefaultsService: UserDefaultsServiceType = UserDefaultsService(provider: self) -} diff --git a/Annict-for-iOS/Commons/Services/UserDefaultsService.swift b/Annict-for-iOS/Commons/Services/UserDefaultsService.swift deleted file mode 100644 index d3339ff9..00000000 --- a/Annict-for-iOS/Commons/Services/UserDefaultsService.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// UserDefaultsService.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/24. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import RxSwift - -struct UserDefaultsEvent { - let accessToken = PublishSubject() -} - -protocol UserDefaultsServiceType { - var event: UserDefaultsEvent { get } - func fetch(forKey key: UserDefaultsRepository.Key, type: T.Type) -> T? - func save(value: T?, forKey key: UserDefaultsRepository.Key) -} - -final class UserDefaultsService: BaseService, UserDefaultsServiceType { - let event = UserDefaultsEvent() - - func fetch(forKey key: UserDefaultsRepository.Key, type: T.Type) -> T? { - return UserDefaultsRepository.fetch(forKey: key, type: type) - } - - func save(value: T?, forKey key: UserDefaultsRepository.Key) { - UserDefaultsRepository.save(value: value, forKey: key) - publishEventIfNeeded(value: value, key: key) - } - - private func publishEventIfNeeded(value: T?, key: UserDefaultsRepository.Key) { - switch key { - case .accessToken: - event.accessToken.onNext(value as? String) - default: - break - } - } -} diff --git a/Annict-for-iOS/Commons/Services/WorkAPIService.swift b/Annict-for-iOS/Commons/Services/WorkAPIService.swift deleted file mode 100644 index 1352127d..00000000 --- a/Annict-for-iOS/Commons/Services/WorkAPIService.swift +++ /dev/null @@ -1,44 +0,0 @@ -// -// WorkAPIService.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/19. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import RxSwift -import Apollo - -struct WorkAPIServiceEvent { - let updateWorkState = PublishSubject() -} - -protocol WorkAPIServiceType { - var event: WorkAPIServiceEvent { get } - var client: ApolloClient { get } - - func updateStatus(state: StatusState, workId: GraphQLID) -> Observable -} - -final class WorkAPIService: BaseService, WorkAPIServiceType { - let event = WorkAPIServiceEvent() - - let client = AnnictGraphQL.client - let disposeBag = DisposeBag() - - func updateStatus(state: StatusState, workId: GraphQLID) -> Observable { - let mutation = UpdateStatusMutation(state: state, workId: workId) - let stream = AnnictGraphQL.client.rx.perform(mutation: mutation) - .asObservable() - .map { $0.updateStatus!.work!.fragments.minimumWork } - .share(replay: 1) - - stream - .subscribe(onNext: { [weak self] work in - self?.event.updateWorkState.onNext(work) - }) - .disposed(by: disposeBag) - - return stream - } -} diff --git a/Annict-for-iOS/Commons/StatusBarManager.swift b/Annict-for-iOS/Commons/StatusBarManager.swift deleted file mode 100644 index dabd6ec4..00000000 --- a/Annict-for-iOS/Commons/StatusBarManager.swift +++ /dev/null @@ -1,88 +0,0 @@ -// -// StatusBarManager.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/04/01. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class StatusBarManager { - static let shared = StatusBarManager() - private init() { } - - var isStatusBarHidden: Bool = false - - func hideStatusBar() { - isStatusBarHidden = true - updateStatusBar() - } - - func showStatusBar() { - isStatusBarHidden = false - updateStatusBar() - } - - private func updateStatusBar() { - UIView.animate(withDuration: 0.35) { - let topVC = UIApplication.topViewController() - topVC?.setNeedsStatusBarAppearanceUpdate() - } - } -} - -protocol StatusBarAnimatable { - var statusBarManager: StatusBarManager { get } -} - -extension StatusBarAnimatable { - var statusBarManager: StatusBarManager { - return .shared - } -} - -extension StatusBarAnimatable where Self: UIViewController { - func hideStatusBar() { - statusBarManager.hideStatusBar() -// statusBarManager.isStatusBarHidden = true -// UIView.animate(withDuration: 0.35) { [weak self] in -// self?.setNeedsStatusBarAppearanceUpdate() -// } - } - - func showStatusBar() { - statusBarManager.showStatusBar() -// statusBarManager.isStatusBarHidden = false - -// UIView.animate(withDuration: 0.35) { [weak self] in -// self?.setNeedsStatusBarAppearanceUpdate() -// } - } -} - -class StatusBarAnimatableViewController: UIViewController { - let statusBarManager = StatusBarManager.shared - - override var prefersStatusBarHidden: Bool { - return statusBarManager.isStatusBarHidden - } - - override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { - return .slide - } - - func hideStatusBar() { - statusBarManager.isStatusBarHidden = true - UIView.animate(withDuration: 0.35) { [weak self] in - self?.setNeedsStatusBarAppearanceUpdate() - } - } - - func showStatusBar() { - statusBarManager.isStatusBarHidden = false - UIView.animate(withDuration: 0.35) { [weak self] in - self?.setNeedsStatusBarAppearanceUpdate() - } - } -} diff --git a/Annict-for-iOS/Commons/SwiftyAttributedString.swift b/Annict-for-iOS/Commons/SwiftyAttributedString.swift deleted file mode 100644 index a11ff32a..00000000 --- a/Annict-for-iOS/Commons/SwiftyAttributedString.swift +++ /dev/null @@ -1,184 +0,0 @@ -// -// SwiftyAttributedString.swift -// SwiftyAttributedString -// -// Created by Yuto Akiba on 2018/12/17. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -public struct SwiftyAttributedString { - private let attributedString: NSMutableAttributedString - private let range: NSRange - - public init(attributedString: NSMutableAttributedString, range: NSRange) { - self.attributedString = attributedString - self.range = range - } - - public func apply() -> NSMutableAttributedString { - return attributedString - } - - public func range(_ range: NSRange, handler: (SwiftyAttributedString) -> Void) -> SwiftyAttributedString { - let swiftyAttributedString = SwiftyAttributedString(attributedString: attributedString, range: range) - handler(swiftyAttributedString) - return self - } - - public func range(of word: String, handler: (SwiftyAttributedString) -> Void) -> SwiftyAttributedString { - let r = (attributedString.string as NSString).range(of: word) - return range(r, handler: handler) - } - - public func range(location: Int, length: Int, handler: (SwiftyAttributedString) -> Void) -> SwiftyAttributedString { - return range(NSRange(location: location, length: length), handler: handler) - } - - public func range(start: Int, end: Int, handler: (SwiftyAttributedString) -> Void) -> SwiftyAttributedString { - return range(location: start, length: end - start + 1, handler: handler) - } - - @discardableResult - public func font(_ font: UIFont) -> SwiftyAttributedString { - attributedString.addAttributes([.font: font], range: range) - return self - } - - @discardableResult - public func paragraphStyle(_ paragraphStyle: NSParagraphStyle) -> SwiftyAttributedString { - attributedString.addAttributes([.paragraphStyle: paragraphStyle], range: range) - return self - } - - @discardableResult - public func lineSpacing(_ lineSpacing: CGFloat) -> SwiftyAttributedString { - let s = NSMutableParagraphStyle() - s.lineSpacing = lineSpacing - attributedString.addAttributes([.paragraphStyle: s], range: range) - return self - } - - @discardableResult - public func foregroundColor(_ color: UIColor) -> SwiftyAttributedString { - attributedString.addAttributes([.foregroundColor: color], range: range) - return self - } - - @discardableResult - public func backgroundColor(_ color: UIColor) -> SwiftyAttributedString { - attributedString.addAttributes([.backgroundColor: color], range: range) - return self - } - - @discardableResult - public func ligature(_ ligature: NSNumber) -> SwiftyAttributedString { - attributedString.addAttributes([.ligature: ligature], range: range) - return self - } - - @discardableResult - public func kern(_ kern: Double) -> SwiftyAttributedString { - attributedString.addAttributes([.kern: kern], range: range) - return self - } - - @discardableResult - public func strikethroughStyle(_ strikethroughStyle: NSUnderlineStyle) -> SwiftyAttributedString { - attributedString.addAttributes([.strikethroughStyle: strikethroughStyle.rawValue], range: range) - return self - } - - @discardableResult - public func underlineStyle(_ underlineStyle: NSUnderlineStyle) -> SwiftyAttributedString { - attributedString.addAttributes([.underlineStyle: underlineStyle.rawValue], range: range) - return self - } - - @discardableResult - public func strokeColor(_ color: UIColor) -> SwiftyAttributedString { - attributedString.addAttributes([.strokeColor: color], range: range) - return self - } - - @discardableResult - public func strokeWidth(_ width: Double) -> SwiftyAttributedString { - attributedString.addAttributes([.strokeWidth: width], range: range) - return self - } - - @discardableResult - public func shadow(_ shadow: NSShadow) -> SwiftyAttributedString { - attributedString.addAttributes([.shadow: shadow], range: range) - return self - } - - @discardableResult - public func textEffect(_ textEffect: NSString) -> SwiftyAttributedString { - attributedString.addAttributes([.textEffect: textEffect], range: range) - return self - } - - @discardableResult - public func attachment(_ attachment: NSTextAttachment) -> SwiftyAttributedString { - attributedString.addAttributes([.attachment: attachment], range: range) - return self - } - - @discardableResult - public func link(_ link: URL) -> SwiftyAttributedString { - attributedString.addAttributes([.link: link], range: range) - return self - } - - @discardableResult - public func baselineOffset(_ offset: Double) -> SwiftyAttributedString { - attributedString.addAttributes([.baselineOffset: offset], range: range) - return self - } - - @discardableResult - public func underlineColor(_ color: UIColor) -> SwiftyAttributedString { - attributedString.addAttributes([.underlineColor: color], range: range) - return self - } - - @discardableResult - public func strikethroughColor(_ color: UIColor) -> SwiftyAttributedString { - attributedString.addAttributes([.strikethroughColor: color], range: range) - return self - } - - @discardableResult - public func obliqueness(_ obliqueness: Double) -> SwiftyAttributedString { - attributedString.addAttributes([.obliqueness: obliqueness], range: range) - return self - } - - @discardableResult - public func expansion(_ expansion: Double) -> SwiftyAttributedString { - attributedString.addAttributes([.expansion: expansion], range: range) - return self - } - - @discardableResult - public func writingDirection(_ writingDirection: NSArray) -> SwiftyAttributedString { - attributedString.addAttributes([.writingDirection: writingDirection], range: range) - return self - } - - @discardableResult - public func verticalGlyphForm(_ verticalGlyphForm: Int) -> SwiftyAttributedString { - attributedString.addAttributes([.verticalGlyphForm: verticalGlyphForm], range: range) - return self - } -} - -extension String { - public var attr: SwiftyAttributedString { - let range = (self as NSString).range(of: self) - let attrStr = NSMutableAttributedString(string: self) - return SwiftyAttributedString(attributedString: attrStr, range: range) - } -} diff --git a/Annict-for-iOS/Commons/Taptic.swift b/Annict-for-iOS/Commons/Taptic.swift deleted file mode 100644 index 3524a8f7..00000000 --- a/Annict-for-iOS/Commons/Taptic.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// Taptic.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/19. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -enum Taptic { - - case notification(UINotificationFeedbackGenerator.FeedbackType) - case impact(UIImpactFeedbackGenerator.FeedbackStyle) - case selection - - static func run(_ type: Taptic) { - let closure: () -> Void - switch type { - case .notification(let notificationType): - closure = { - let generator = UINotificationFeedbackGenerator() - generator.prepare() - generator.notificationOccurred(notificationType) - } - - case .impact(let style): - closure = { - let generator = UIImpactFeedbackGenerator(style: style) - generator.prepare() - generator.impactOccurred() - } - - case .selection: - closure = { - let generator = UISelectionFeedbackGenerator() - generator.prepare() - generator.selectionChanged() - } - } - - DispatchQueue.main.async { - closure() - } - } -} diff --git a/Annict-for-iOS/Commons/UIKit/ActionClosurable.swift b/Annict-for-iOS/Commons/UIKit/ActionClosurable.swift deleted file mode 100644 index 2f860418..00000000 --- a/Annict-for-iOS/Commons/UIKit/ActionClosurable.swift +++ /dev/null @@ -1,94 +0,0 @@ -// -// ActionClosurable.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -private class Actor { - @objc func act(sender: AnyObject) { closure(sender as! T) } - fileprivate let closure: (T) -> Void - init(acts closure: @escaping (T) -> Void) { - self.closure = closure - } -} - -private class GreenRoom { - fileprivate var actors: [Any] = [] -} -private var GreenRoomKey: UInt32 = 893 - -private func register(_ actor: Actor, to object: AnyObject) { - let room = objc_getAssociatedObject(object, &GreenRoomKey) as? GreenRoom ?? { - let room = GreenRoom() - objc_setAssociatedObject(object, &GreenRoomKey, room, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - return room - }() - room.actors.append(actor) -} - -public protocol ActionClosurable {} -public extension ActionClosurable where Self: AnyObject { - func convert(closure: @escaping (Self) -> Void, toConfiguration configure: (AnyObject, Selector) -> Void) { - let actor = Actor(acts: closure) - configure(actor, #selector(Actor.act(sender:))) - register(actor, to: self) - } - static func convert(closure: @escaping (Self) -> Void, toConfiguration configure: (AnyObject, Selector) -> Self) -> Self { - let actor = Actor(acts: closure) - let instance = configure(actor, #selector(Actor.act(sender:))) - register(actor, to: instance) - return instance - } -} - -extension NSObject: ActionClosurable {} - -extension ActionClosurable where Self: UIRefreshControl { - func onRefresh(_ closure: @escaping (Self) -> Void) { - convert(closure: closure, toConfiguration: { - self.addTarget($0, action: $1, for: .valueChanged) - }) - } - init(closure: @escaping (Self) -> Void) { - self.init() - onRefresh(closure) - } -} - -extension ActionClosurable where Self: UIGestureRecognizer { - public func onGesture(_ closure: @escaping (Self) -> Void) { - convert(closure: closure, toConfiguration: { - self.addTarget($0, action: $1) - }) - } - public init(closure: @escaping (Self) -> Void) { - self.init() - onGesture(closure) - } -} - -extension ActionClosurable where Self: UISlider { - func onChanged(_ closure: @escaping (Self) -> Void) { - convert(closure: closure, toConfiguration: { - self.addTarget($0, action: $1, for: .valueChanged) - }) - } - init(closure: @escaping (Self) -> Void) { - self.init() - onChanged(closure) - } -} - -extension UIView { - func onTap(handler: @escaping (UITapGestureRecognizer) -> Void) { - let tap = UITapGestureRecognizer { sender in - handler(sender) - } - addGestureRecognizer(tap) - } -} - diff --git a/Annict-for-iOS/Commons/UIKit/Ornament.swift b/Annict-for-iOS/Commons/UIKit/Ornament.swift deleted file mode 100644 index 329bda6b..00000000 --- a/Annict-for-iOS/Commons/UIKit/Ornament.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// Ornament.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/28. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -extension UIView { - enum Ornament { - case workImage - } - - func apply(_ ornament: Ornament) { - switch ornament { - case .workImage: - applyWorkOrnament() - } - } - - private func applyWorkOrnament() { - applyCornerRadius(6) - applyBorder(color: UIColor(white: 0.9, alpha: 1), width: 0.4) - } - - private func applyCornerRadius(_ radius: CGFloat, masksToBounds: Bool = true) { - layer.cornerRadius = radius - layer.masksToBounds = masksToBounds - } - - private func applyBorder(color: UIColor, width: CGFloat) { - layer.borderColor = color.cgColor - layer.borderWidth = width - } -} - diff --git a/Annict-for-iOS/Commons/UIKit/PaddingLabel.swift b/Annict-for-iOS/Commons/UIKit/PaddingLabel.swift deleted file mode 100644 index 00f26d85..00000000 --- a/Annict-for-iOS/Commons/UIKit/PaddingLabel.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// PaddingLabel.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/26. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -class PaddingLabel: UILabel { - - var padding = UIEdgeInsets(top: 4, left: 8, bottom: 4, right: 8) { - didSet { - invalidateIntrinsicContentSize() - } - } - - override func drawText(in rect: CGRect) { - let newRect = rect.inset(by: padding) - super.drawText(in: newRect) - } - - override var intrinsicContentSize: CGSize { - var intrinsicContentSize = super.intrinsicContentSize - intrinsicContentSize.height += padding.top + padding.bottom - intrinsicContentSize.width += padding.left + padding.right - return intrinsicContentSize - } -} diff --git a/Annict-for-iOS/Commons/UserDefaultsRepository.swift b/Annict-for-iOS/Commons/UserDefaultsRepository.swift deleted file mode 100644 index 96a0b008..00000000 --- a/Annict-for-iOS/Commons/UserDefaultsRepository.swift +++ /dev/null @@ -1,110 +0,0 @@ -// -// UserDefaultsRepository.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/24. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import Foundation -import Apollo - -final class UserDefaultsRepository { - enum Key: String { - case accessToken = "access_token" - case viewer = "viewer" - case viewerAllWorks = "viewer_all_works" - case shouldShareTwitter = "should_share_twitter" - } - - private static var userDefaults: UserDefaults { - return UserDefaults.standard - } - - static func fetch(forKey key: Key, type: T.Type) -> T? { - return T.get(key: key.rawValue, userDefaults: userDefaults) - } - - static func save(value: T?, forKey key: Key) { - T.save(key: key.rawValue, value: value, userDefaults: userDefaults) - } - - static func fetch(forKey key: Key, type: T.Type) -> T? { - guard let resultMap = userDefaults.dictionary(forKey: key.rawValue) else { return nil } - return T(unsafeResultMap: resultMap) - } - - static func save(value: T?, forKey key: Key) { - return userDefaults.set(value?.resultMap, forKey: key.rawValue) - } -} - -typealias UserDefaultsSerializable = UserDefaultsGettable & UserDefaultsStorable - -protocol UserDefaultsGettable { - static func get(key: String, userDefaults: UserDefaults) -> Self? -} - -protocol UserDefaultsStorable { - static func save(key: String, value: Self?, userDefaults: UserDefaults) -} - -extension String: UserDefaultsSerializable { - static func get(key: String, userDefaults: UserDefaults) -> String? { - return userDefaults.string(forKey: key) - } - - static func save(key: String, value: String?, userDefaults: UserDefaults) { - userDefaults.set(value, forKey: key) - } -} - -extension Int: UserDefaultsSerializable { - static func get(key: String, userDefaults: UserDefaults) -> Int? { - return userDefaults.integer(forKey: key) - } - - static func save(key: String, value: Int?, userDefaults: UserDefaults) { - userDefaults.set(value, forKey: key) - } -} - -extension UserDefaultsGettable where Self: Decodable { - static func get(key: String, userDefaults: UserDefaults) -> Self? { - return userDefaults.decodable(forKey: key) - } -} - -extension UserDefaultsStorable where Self: Encodable { - static func save(key: String, value: Self?, userDefaults: UserDefaults) { - userDefaults.set(encodable: value, forKey: key) - } -} - -extension UserDefaults { - func set(encodable: T, forKey key: String) { - if let data = try? JSONEncoder().encode(encodable) { - set(data, forKey: key) - } else { - assertionFailure("Encodable \(T.self) is not _actually_ encodable to any data...Please fix 😭") - } - } - - func decodable(forKey key: String) -> T? { - guard let decodableData = data(forKey: key) else { return nil } - return try? JSONDecoder().decode(T.self, from: decodableData) - } -} - - -// MARK: - Deprecated Extension UserDefaults -extension UserDefaults { - var shouldShareTwitter: Bool { - get { - return bool(forKey: "shouldShareTwitter") - } - set { - set(newValue, forKey: "shouldShareTwitter") - } - } -} diff --git a/Annict-for-iOS/Commons/Views/RadioButton.swift b/Annict-for-iOS/Commons/Views/RadioButton.swift deleted file mode 100644 index fed13c90..00000000 --- a/Annict-for-iOS/Commons/Views/RadioButton.swift +++ /dev/null @@ -1,102 +0,0 @@ -// -// RadioButton.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/12/04. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import RxSwift -import RxCocoa - -final class RadioButton: UIControl { - var color: UIColor = UIColor(hex: 0x3498DB) { - didSet { - updateColor() - } - } - - var isOn: Bool = false { - didSet { - Taptic.run(.impact(.medium)) - checkView.isHidden = !isOn - sendActions(for: .valueChanged) - } - } - - let checkView = UIView() - - override init(frame: CGRect) { - super.init(frame: frame) - commonInit() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - commonInit() - } - - func commonInit() { - layer.borderWidth = 1.5 - checkView.isHidden = !isOn - addSubview(checkView) - checkView.snp.makeConstraints { - $0.edges.equalTo(snp.edges).inset(4) - } - updateColor() - - let gesture = UITapGestureRecognizer { [weak self] sender in - self?.isOn.toggle() - } - addGestureRecognizer(gesture) - } - - func updateColor() { - layer.borderColor = color.cgColor - checkView.backgroundColor = color - } - - override func layoutSubviews() { - super.layoutSubviews() - - checkView.layer.cornerRadius = checkView.bounds.width / 2 - checkView.layer.masksToBounds = true - layer.cornerRadius = bounds.width / 2 - layer.masksToBounds = true - } -} - -extension Reactive where Base: RadioButton { - var isOn: ControlProperty { - return value - } - - private var value: ControlProperty { - return UIControl.valuePublic(base, - getter: { control in - control.isOn - }, setter: { control, value in - control.isOn = value - }) - } -} - -extension UIControl { - static func valuePublic(_ control: ControlType, getter: @escaping (ControlType) -> T, setter: @escaping (ControlType, T) -> ()) -> ControlProperty { - let values: Observable = Observable.deferred { [weak control] in - guard let existingSelf = control else { - return Observable.empty() - } - - return (existingSelf as UIControl).rx.controlEvent([.allEditingEvents, .valueChanged]) - .flatMap { _ in - return control.map { Observable.just(getter($0)) } ?? Observable.empty() - } - .startWith(getter(existingSelf)) - } - return ControlProperty(values: values, valueSink: Binder(control) { control, value in - setter(control, value) - }) - } -} diff --git a/Annict-for-iOS/Commons/Views/RecordStatusTagButton.swift b/Annict-for-iOS/Commons/Views/RecordStatusTagButton.swift deleted file mode 100644 index d28b0892..00000000 --- a/Annict-for-iOS/Commons/Views/RecordStatusTagButton.swift +++ /dev/null @@ -1,92 +0,0 @@ -// -// RecordStatusTagView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/24. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class RecordStatusTagButton: UIView, NibOwnerLoadable { - enum Const { - static let textNormalColor = UIColor(hex: 0x565859) - } - - @IBOutlet private weak var titleLabel: UILabel! - - var isSelected: Bool = false { - didSet { - guard let state = ratingState else { return } - configure(ratingState: state) - } - } - var ratingState: RatingState? - - override var intrinsicContentSize: CGSize { - let labelSize = titleLabel.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize) - return CGSize(width: labelSize.width + 32, height: 32) - } - - override init(frame: CGRect) { - super.init(frame: frame) - - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - - commonInit() - } - - override func layoutSubviews() { - super.layoutSubviews() - - roundedRectangleFilter() - } - - private func commonInit() { - loadNib() - titleLabel.textColor = Const.textNormalColor - } - - func configure(ratingState: RatingState) { - self.ratingState = ratingState - backgroundColor = isSelected ? ratingState.color : UIColor(hex: 0xEEEFF0) - titleLabel.textColor = isSelected ? .white : Const.textNormalColor - titleLabel.text = ratingState.localizedText - } -} - -extension RatingState { - var color: UIColor { - switch self { - case .great: - return UIColor(hex: 0x3498DB) - case .good: - return UIColor(hex: 0x2ECC71) - case .average: - return UIColor(hex: 0xF39C12) - case .bad: - return UIColor(hex: 0x95A5A6) - default: - return .white - } - } - - var localizedText: String { - switch self { - case .great: - return "すごく良い" - case .good: - return "良い" - case .average: - return "普通" - case .bad: - return "良くない" - default: - return "" - } - } -} diff --git a/Annict-for-iOS/Commons/Views/RecordStatusTagButton.xib b/Annict-for-iOS/Commons/Views/RecordStatusTagButton.xib deleted file mode 100644 index ce4e7348..00000000 --- a/Annict-for-iOS/Commons/Views/RecordStatusTagButton.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Commons/Views/RecordStatusTagView.swift b/Annict-for-iOS/Commons/Views/RecordStatusTagView.swift deleted file mode 100644 index 5adca6bb..00000000 --- a/Annict-for-iOS/Commons/Views/RecordStatusTagView.swift +++ /dev/null @@ -1,43 +0,0 @@ -// -// RecordStatusTagView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class RecordStatusTagView: UIView, NibOwnerLoadable { - override var intrinsicContentSize: CGSize { - let labelSize = titleLabel.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize) - return CGSize(width: labelSize.width + 16, height: 20) - } - - @IBOutlet private weak var titleLabel: UILabel! - - override init(frame: CGRect) { - super.init(frame: frame) - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - commonInit() - } - - private func commonInit() { - loadNib() - - layer.cornerRadius = 4 - layer.masksToBounds = true - - titleLabel.textColor = .white - } - - func configure(ratingState: RatingState) { - backgroundColor = ratingState.color - titleLabel.text = ratingState.localizedText - invalidateIntrinsicContentSize() - } -} diff --git a/Annict-for-iOS/Commons/Views/RecordStatusTagView.xib b/Annict-for-iOS/Commons/Views/RecordStatusTagView.xib deleted file mode 100644 index d62faa46..00000000 --- a/Annict-for-iOS/Commons/Views/RecordStatusTagView.xib +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Info.plist b/Annict-for-iOS/Info.plist deleted file mode 100644 index a5c6fd20..00000000 --- a/Annict-for-iOS/Info.plist +++ /dev/null @@ -1,58 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER)$(BUNDLE_ID_SUFFIX) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(BUNDLE_DISPLAY_NAME_PREFIX)$(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleURLTypes - - - CFBundleTypeRole - Editor - CFBundleURLSchemes - - annict - - - - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - RootViewController - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIUserInterfaceStyle - Light - UIViewControllerBasedStatusBarAppearance - - - diff --git a/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTableViewCell.swift b/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTableViewCell.swift deleted file mode 100644 index 752bb565..00000000 --- a/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTableViewCell.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// EpisodeRecordTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -protocol EpisodeRecordTableViewCellDelegate: class { - func didTapUnderArrowButton(_ cell: EpisodeRecordTableViewCell, record: MinimumRecord) -} - -final class EpisodeRecordTableViewCell: UITableViewCell { - - @IBOutlet private weak var avatarImageView: UIImageView! - @IBOutlet private weak var nameLabel: UILabel! - @IBOutlet private weak var usernameLabel: UILabel! - @IBOutlet private weak var timeLabel: UILabel! - @IBOutlet private weak var statusTagView: RecordStatusTagView! - @IBOutlet private weak var commentLabel: UILabel! - @IBOutlet private weak var underArrowButton: UIButton! - - weak var delegate: EpisodeRecordTableViewCellDelegate? - private var record: MinimumRecord? - - override func awakeFromNib() { - super.awakeFromNib() - - avatarImageView.circleFilter() - underArrowButton.withImageRenderingMode(.alwaysTemplate) - underArrowButton.tintColor = UIColor(white: 0.9, alpha: 1) - } - - func configure(record: MinimumRecord) { - self.record = record - let user = record.user.fragments.minimumUser - avatarImageView.setImage(url: user.avatarUrl) - nameLabel.text = user.name - usernameLabel.text = user.username - if let time = record.createdAt.toDate()?.toRelativeCurrentLocal() { - timeLabel.text = "・" + time - } - commentLabel.text = record.comment - if let ratingState = record.ratingState { - statusTagView.isHidden = false - statusTagView.configure(ratingState: ratingState) - } else { - statusTagView.isHidden = true - } - } - - @IBAction func tappedUnderArrow(_ sender: UIButton) { - guard let record = record else { return } - delegate?.didTapUnderArrowButton(self, record: record) - } -} - -extension UIButton { - func withImageRenderingMode(_ mode: UIImage.RenderingMode) { - guard let img = imageView?.image?.withRenderingMode(mode) else { return } - setImage(img, for: .normal) - setImage(img, for: .selected) - } -} diff --git a/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTableViewCell.xib b/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTableViewCell.xib deleted file mode 100644 index 185f05cd..00000000 --- a/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTableViewCell.xib +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTitleTableViewCell.swift b/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTitleTableViewCell.swift deleted file mode 100644 index 515672a7..00000000 --- a/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTitleTableViewCell.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// EpisodeRecordTitleTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class EpisodeRecordTitleTableViewCell: UITableViewCell { - - @IBOutlet private weak var titleLabel: UILabel! - - override func awakeFromNib() { - super.awakeFromNib() - - } - - func configure(title: String) { - titleLabel.text = title - } -} diff --git a/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTitleTableViewCell.xib b/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTitleTableViewCell.xib deleted file mode 100644 index c4892677..00000000 --- a/Annict-for-iOS/Modules/EpisodeRecords/Cells/EpisodeRecordTitleTableViewCell.xib +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewController.storyboard b/Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewController.storyboard deleted file mode 100644 index ee249d34..00000000 --- a/Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewController.storyboard +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewController.swift b/Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewController.swift deleted file mode 100644 index 694fad49..00000000 --- a/Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewController.swift +++ /dev/null @@ -1,156 +0,0 @@ -// -// EpisodeRecordsViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift -import SPStorkController - -final class EpisodeRecordsViewController: UIViewController, StoryboardView { - typealias Reactor = EpisodeRecordsViewReactor - - @IBOutlet private weak var tableView: UITableView! - private var postButton: UIButton = { - let button = UIButton(icon: .pencil) - button.layer.cornerRadius = 25 - button.tintColor = UIColor(hex: 0xFA5871) - button.applyFABShadow() - return button - }() - - var disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - - tableView.register(EpisodeRecordTableViewCell.self, - EpisodeRecordTitleTableViewCell.self) - tableView.tableFooterView = UIView() - preparePostButton() - } - - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - - postButton.updateShodowPath() - } - - func bind(reactor: Reactor) { - rx.viewWillAppear - .take(1) - .map { Reactor.Action.fetchRecords } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - tableView.rx.setDataSource(self) - .disposed(by: disposeBag) - - tableView.rx.setDelegate(self) - .disposed(by: disposeBag) - - reactor.state.map { $0.records } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] _ in - self?.tableView.reloadData() - }) - .disposed(by: disposeBag) - - postButton.rx.tap - .subscribe(onNext: { [unowned self] _ in - PostRecordViewController.presentPanModal(fromVC: self, reactor: reactor.reactorForPostRecord()) - }) - .disposed(by: disposeBag) - } - - private func preparePostButton() { - view.addSubview(postButton) - postButton.snp.makeConstraints { - $0.width.height.equalTo(50) - $0.trailing.equalTo(view.snp.trailing).offset(-20) - $0.bottom.equalTo(view.snp.bottom).offset(-40) - } - } -} - -extension EpisodeRecordsViewController { - static func presentAsStork(fromVC: UIViewController, reactor: Reactor) { - let vc = EpisodeRecordsViewController.loadStoryboard(reactor: reactor) - fromVC.presentAsStork(vc, height: nil, showIndicator: false, showCloseButton: false) - } -} - -extension EpisodeRecordsViewController: UITableViewDataSource { - func numberOfSections(in tableView: UITableView) -> Int { - return 2 - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - if section == 0 { - return 1 - } - return reactor!.currentState.records.count - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - if indexPath.section == 0 { - let cell = tableView.dequeueReusableCell(classType: EpisodeRecordTitleTableViewCell.self, for: indexPath) - cell.configure(title: "レビュー" + " (\(reactor!.currentState.episode.recordCommentsCount))") - return cell - } - let cell = tableView.dequeueReusableCell(classType: EpisodeRecordTableViewCell.self, for: indexPath) - cell.configure(record: reactor!.currentState.records[indexPath.row]) - cell.delegate = self - return cell - } -} - -extension EpisodeRecordsViewController: UITableViewDelegate { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - SPStorkController.scrollViewDidScroll(scrollView) - } -} - -extension EpisodeRecordsViewController: EpisodeRecordTableViewCellDelegate { - func didTapUnderArrowButton(_ cell: EpisodeRecordTableViewCell, record: MinimumRecord) { - let user = record.user.fragments.minimumUser -// let viewer = UserDefaultsRepository.fetch(forKey: .viewer, type: Viewer.self) - -// if user.annictId == viewer?.annictId { -// showAlertForMe(record) -// return -// } - - showAlertForOtherUser(cell: cell, user: user) - } - - private func showAlertForOtherUser(cell: EpisodeRecordTableViewCell, user: MinimumUser) { - let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) - let reportAction = UIAlertAction(title: "投稿を報告する", style: .default, handler: nil) - let blockAction = UIAlertAction(title: "ユーザーをブロックする", style: .default) { [weak self] _ in - self?.reactor?.action.onNext(.block(user.annictId)) - } - let cancelAction = UIAlertAction(title: "キャンセル", style: .cancel, handler: nil) - alert.addAction(reportAction) - alert.addAction(blockAction) - alert.addAction(cancelAction) - alert.popoverPresentationController?.sourceView = cell.contentView - alert.popoverPresentationController?.sourceRect = cell.contentView.frame - present(alert, animated: true, completion: nil) - } - - private func showAlertForMe(_ record: MinimumRecord) { - let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) - let deleteAction = UIAlertAction(title: "投稿を削除する", style: .destructive) { [weak self] _ in - self?.reactor?.action.onNext(.deleteRecord(record.id)) - } - let cancelAction = UIAlertAction(title: "キャンセル", style: .cancel, handler: nil) - alert.addAction(deleteAction) - alert.addAction(cancelAction) - present(alert, animated: true, completion: nil) - } -} diff --git a/Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewReactor.swift b/Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewReactor.swift deleted file mode 100644 index 9d9fb187..00000000 --- a/Annict-for-iOS/Modules/EpisodeRecords/EpisodeRecordsViewReactor.swift +++ /dev/null @@ -1,107 +0,0 @@ -// -// EpisodeRecordsViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift -import Apollo - -final class EpisodeRecordsViewReactor: Reactor { - enum Action { - case fetchRecords - case block(Int) - case deleteRecord(GraphQLID) - } - - enum Mutation { - case setRecords([MinimumRecord]) - case appendRecord(MinimumRecord) - case block(Int) - case removeRecord(GraphQLID) - } - - struct State { - let episode: MinimumEpisode - var records: [MinimumRecord] = [] - - init(episode: MinimumEpisode) { - self.episode = episode - } - } - - let initialState: State - private let provider: ServiceProviderType - - init(provider: ServiceProviderType, episode: MinimumEpisode) { - self.provider = provider - initialState = State(episode: episode) - } - - func mutate(action: Action) -> Observable { - switch action { - case .fetchRecords: - return fetchRecords().map { Mutation.setRecords($0) } - case .block(let userID): - return .just(.block(userID)) - case .deleteRecord(let recordId): - let removeRecord = Observable.just(Mutation.removeRecord(recordId)) - let stream = deleteRecord(recordId: recordId) - .flatMap { _ in return Observable.empty() } - .catchError { error -> Observable in - print(error) - return .empty() - } - return .merge(removeRecord, stream) - } - } - - func transform(mutation: Observable) -> Observable { - let createdRecord = provider.episodeAPIService.event.didCreatedRecord - .map { Mutation.appendRecord($0) } - return .merge(mutation, createdRecord) - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setRecords(let records): - state.records = records - case .appendRecord(let record): - state.records.insert(record, at: 0) - case .block(let userID): - state.records = state.records.filter { $0.user.fragments.minimumUser.annictId != userID } - case .removeRecord(let recordId): - state.records.removeAll(where: { $0.id == recordId }) - } - return state - } - - func reactorForPostRecord() -> PostRecordViewReactor { - return .init(provider: provider, episode: currentState.episode) - } - - private func fetchRecords() -> Observable<[MinimumRecord]> { - let query = GetEpisodeRecordsQuery(episodeID: currentState.episode.annictId) - return AnnictGraphQL.client.rx.fetch(query: query, cachePolicy: .fetchIgnoringCacheData) - .map { $0.searchEpisodes?.values.first } - .filterNil() - .map { $0.records?.values } - .filterNil() - .mapMany { $0.fragments.minimumRecord } - } - - private func deleteRecord(recordId: GraphQLID) -> Observable { - let mutation = DeleteRecordMutation(recordId: recordId) - return AnnictGraphQL.client.rx.perform(mutation: mutation) - .asObservable() - .map { $0.deleteRecord?.episode?.fragments.minimumEpisode } - .filterNil() - } -} - -extension GetEpisodeRecordsQuery.Data.SearchEpisode: Connection {} -extension GetEpisodeRecordsQuery.Data.SearchEpisode.Node.Record: Connection {} diff --git a/Annict-for-iOS/Modules/Home/HomeViewController.storyboard b/Annict-for-iOS/Modules/Home/HomeViewController.storyboard deleted file mode 100644 index 83ce745f..00000000 --- a/Annict-for-iOS/Modules/Home/HomeViewController.storyboard +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Home/HomeViewController.swift b/Annict-for-iOS/Modules/Home/HomeViewController.swift deleted file mode 100644 index 42d7dc4b..00000000 --- a/Annict-for-iOS/Modules/Home/HomeViewController.swift +++ /dev/null @@ -1,168 +0,0 @@ -// -// HomeViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift - -final class HomeViewController: UIViewController, StoryboardView { - typealias Reactor = HomeViewReactor - - @IBOutlet weak var tableView: UITableView! - - var disposeBag = DisposeBag() - - private let refreshControl = UIRefreshControl() - - private var cellHeightList: [IndexPath: CGFloat] = [:] - - override func viewDidLoad() { - super.viewDidLoad() - - tableView.register(ActivityRecordTableViewCell.self, - ActivityStatusTableViewCell.self, - ActivityMultipleRecordTableViewCell.self, - HomeTitleTableViewCell.self) - tableView.tableFooterView = UIView() - tableView.refreshControl = refreshControl - tableView.delaysContentTouches = false - } - - func bind(reactor: Reactor) { - rx.viewWillAppear - .take(1) - .map { Reactor.Action.fetchActivities } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - tableView.rx.setDataSource(self) - .disposed(by: disposeBag) - - tableView.rx.setDelegate(self) - .disposed(by: disposeBag) - - tableView.rx.triggeredPagination() - .map { Reactor.Action.loadMore } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - refreshControl.rx.controlEvent(.valueChanged) - .map { Reactor.Action.forceFetch } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - reactor.state.map { $0.items } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] _ in - self?.tableView.reloadData() - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.isLoading } - .distinctUntilChanged() - .filter { !$0 } - .subscribe(onNext: { [weak self] _ in - self?.refreshControl.endRefreshing() - }) - .disposed(by: disposeBag) - } -} - -extension HomeViewController: UITableViewDataSource { - func numberOfSections(in tableView: UITableView) -> Int { - return 2 - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - if section == 0 { - return 1 - } - return reactor!.currentState.items.count - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - if indexPath.section == 0 { - let cell = tableView.dequeueReusableCell(classType: HomeTitleTableViewCell.self, for: indexPath) - cell.configure(title: "Home") - return cell - } - - guard let reactor = reactor else { return .init() } - let item = reactor.currentState.items[indexPath.row] - switch item { - case .status(let reactor): - let cell = tableView.dequeueReusableCell(classType: ActivityStatusTableViewCell.self, for: indexPath) - cell.reactor = reactor - cell.delegate = self - return cell - case .record(let reactor): - let cell = tableView.dequeueReusableCell(classType: ActivityRecordTableViewCell.self, for: indexPath) - cell.reactor = reactor - cell.delegate = self - return cell - case .review: - return .init() - case .multiRecord(let reactor): - let cell = tableView.dequeueReusableCell(classType: ActivityMultipleRecordTableViewCell.self, for: indexPath) - cell.reactor = reactor - cell.delegate = self - return cell - } - } -} - -extension HomeViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - if indexPath.section == 0 { - return - } - - if !cellHeightList.keys.contains(indexPath) { - cellHeightList[indexPath] = cell.frame.height - } - } - - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - if indexPath.section == 0 { - return 100 - } - - guard let height = self.cellHeightList[indexPath] else { - return UITableView.automaticDimension - } - return height - } -} - -extension HomeViewController: HomeCellDelegate { - func didSelect(item: HomeSectionItem) { - guard let work = item.work else { return } - let r = reactor!.reactorForWork(work: work) - WorkViewController.presentPanModal(fromVC: self, reactor: r) - } - - func didTapUnderArrow(_ cell: UITableViewCell, item: HomeSectionItem) { - guard let user = item.user else { return } - showAlert(cell: cell, user: user) - } - - private func showAlert(cell: UITableViewCell, user: MinimumUser) { - let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) - let reportAction = UIAlertAction(title: "投稿を報告する", style: .default, handler: nil) - let blockAction = UIAlertAction(title: "ユーザーをブロックする", style: .default) { [weak self] _ in - self?.reactor?.action.onNext(.block(user.annictId)) - } - let cancelAction = UIAlertAction(title: "キャンセル", style: .cancel, handler: nil) - alert.addAction(reportAction) - alert.addAction(blockAction) - alert.addAction(cancelAction) - alert.popoverPresentationController?.sourceView = cell.contentView - alert.popoverPresentationController?.sourceRect = cell.contentView.frame - present(alert, animated: true, completion: nil) - } -} diff --git a/Annict-for-iOS/Modules/Home/HomeViewReactor.swift b/Annict-for-iOS/Modules/Home/HomeViewReactor.swift deleted file mode 100644 index 1122ca25..00000000 --- a/Annict-for-iOS/Modules/Home/HomeViewReactor.swift +++ /dev/null @@ -1,174 +0,0 @@ -// -// HomeViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift -import Apollo - -final class HomeViewReactor: Reactor { - typealias Activity = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node - - enum Action { - case fetchActivities - case loadMore - case forceFetch - case block(Int) - } - - enum Mutation { - case setActivities([Activity]) - case appendActivities([Activity]) - case setPageInfo(PageInfoFrag) - case setLoading(Bool) - case block(Int) - } - - struct State { - var pageInfo: PageInfoFrag? - var isLoading: Bool = false - var items: [HomeSectionItem] = [] - } - - let initialState: HomeViewReactor.State - let provider: ServiceProviderType - - init(provider: ServiceProviderType) { - initialState = State() - self.provider = provider - } - - func mutate(action: Action) -> Observable { - switch action { - case .fetchActivities: - let startLoading = Observable.just(.setLoading(true)) - let fetchActivitiesEvent = fetchActivities(cachePolicy: .returnCacheDataAndFetch).share() - .catchError { error -> Observable in - print(error) - return .empty() - } - let setActivitiesEvent = fetchActivitiesEvent.map { Mutation.setActivities($0.values) } - let setPageInfoEvent = fetchActivitiesEvent.map { Mutation.setPageInfo($0.pageInfo.fragments.pageInfoFrag) } - let endLoading = Observable.just(.setLoading(false)) - return .concat(startLoading, setActivitiesEvent, setPageInfoEvent, endLoading) - case .loadMore: - guard !currentState.isLoading else { return .empty() } - guard let pageInfo = currentState.pageInfo, pageInfo.hasNextPage else { return .empty() } - let startLoading = Observable.just(.setLoading(true)) - let fetchActivitiesEvent = fetchActivities(after: currentState.pageInfo?.endCursor, cachePolicy: .returnCacheDataElseFetch).share() - let appendActivitiesEvent = fetchActivitiesEvent.map { Mutation.appendActivities($0.values) } - let setPageInfoEvent = fetchActivitiesEvent.map { Mutation.setPageInfo($0.pageInfo.fragments.pageInfoFrag) } - let endLoading = Observable.just(.setLoading(false)) - return .concat(startLoading, appendActivitiesEvent, setPageInfoEvent, endLoading) - case .forceFetch: - let startLoading = Observable.just(.setLoading(true)) - let fetchActivitiesEvent = fetchActivities(cachePolicy: .fetchIgnoringCacheData).share() - let setActivitiesEvent = fetchActivitiesEvent.map { Mutation.setActivities($0.values) } - let setPageInfoEvent = fetchActivitiesEvent.map { Mutation.setPageInfo($0.pageInfo.fragments.pageInfoFrag) } - let endLoading = Observable.just(.setLoading(false)) - return .concat(startLoading, setActivitiesEvent, setPageInfoEvent, endLoading) - case .block(let userID): - return .just(.block(userID)) - } - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setActivities(let activities): - state.items = activities.compactMap { convertSectionItem(activity: $0) } - case .appendActivities(let activities): - state.items += activities.compactMap { convertSectionItem(activity: $0) } - case .setPageInfo(let pageInfo): - state.pageInfo = pageInfo - case .setLoading(let isLoading): - state.isLoading = isLoading - case .block(let userID): - state.items = state.items.filter { $0.user?.annictId != userID } - } - return state - } - - private func fetchActivities(after: String? = nil, cachePolicy: CachePolicy) -> Observable { - return provider.apiService.fetchFollowingActivities(after: after, cachePolicy: cachePolicy) - .map { $0.viewer?.followingActivities } - .filterNil() - } - - func reactorForWork(work: MinimumWork) -> WorkViewReactor { - return .init(provider: provider, work: work) - } - - private func convertSectionItem(activity: Activity) -> HomeSectionItem? { - switch activity.itemType { - case .record(let record): - return .record(.init(provider: provider, record: record)) - case .status(let status): - return .status(.init(provider: provider, status: status)) - case .multipleRecord(let record): - return .multiRecord(.init(provider: provider, multipleRecord: record)) - case .review(let review): - return nil - default: - return nil - } - } -} - -extension GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity { - var values: [Edge.Node] { - return edges?.compactMap { $0?.node } ?? [] - } -} - -enum HomeSectionItem: Equatable { - case record(ActivityRecordTableViewCellReactor) - case status(ActivityStatusTableViewCellReactor) - case multiRecord(ActivityMultipleRecordTableViewCellReactor) - case review - - var work: MinimumWork? { - switch self { - case .record(let reactor): - return reactor.currentState.record.work.fragments.minimumWork - case .status(let reactor): - return reactor.currentState.status.work.fragments.minimumWork - case .multiRecord(let reactor): - return reactor.currentState.multipleRecord.work.fragments.minimumWork - default: - return nil - } - } - - var user: MinimumUser? { - switch self { - case .record(let reactor): - return reactor.currentState.record.fragments.minimumRecord.user.fragments.minimumUser - case .status(let reactor): - return reactor.currentState.status.user.fragments.minimumUser - case .multiRecord(let reactor): - return reactor.currentState.multipleRecord.user.fragments.minimumUser - default: - return nil - } - } - - static func == (lhs: HomeSectionItem, rhs: HomeSectionItem) -> Bool { - switch (lhs, rhs) { - case (.record(let reactor1), .record(let reactor2)): - return reactor1.currentState.record.resultMap == reactor2.currentState.record.resultMap - case (.status(let reactor1), .status(let reactor2)): - return reactor1.currentState.status.resultMap == reactor2.currentState.status.resultMap - case (.multiRecord(let reactor1), .multiRecord(let reactor2)): - return reactor1.currentState.multipleRecord.resultMap == reactor2.currentState.multipleRecord.resultMap - case (.review, .review): - return true - default: - return false - } - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCell.swift b/Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCell.swift deleted file mode 100644 index 43de0cc1..00000000 --- a/Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCell.swift +++ /dev/null @@ -1,92 +0,0 @@ -// -// ActivityMultipleRecordTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/12. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift - -final class ActivityMultipleRecordTableViewCell: UITableViewCell, StoryboardView { - typealias Reactor = ActivityMultipleRecordTableViewCellReactor - - @IBOutlet private weak var avatarImageView: UIImageView! - @IBOutlet private weak var nameLabel: UILabel! - @IBOutlet private weak var usernameLabel: UILabel! - @IBOutlet private weak var messageLabel: UILabel! - @IBOutlet private weak var workQuoteView: WorkQuoteView! - @IBOutlet private weak var timeLabel: UILabel! - @IBOutlet private weak var underArrowButton: UIButton! - - var disposeBag = DisposeBag() - weak var delegate: HomeCellDelegate? - - override func awakeFromNib() { - super.awakeFromNib() - - avatarImageView.layer.masksToBounds = true - avatarImageView.layer.cornerRadius = 40 / 2 - workQuoteView.delegate = self - - underArrowButton.withImageRenderingMode(.alwaysTemplate) - underArrowButton.tintColor = UIColor(white: 0.9, alpha: 1) - } - - override func prepareForReuse() { - super.prepareForReuse() - - disposeBag = DisposeBag() - workQuoteView.delegate = self - } - - func bind(reactor: Reactor) { - underArrowButton.rx.tap - .subscribe(onNext: { [unowned self] _ in - self.delegate?.didTapUnderArrow(self, item: .multiRecord(reactor)) - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.multipleRecord } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] multipleRecord in - self?.configure(activityItem: multipleRecord) - }) - .disposed(by: disposeBag) - } - - func configure(activityItem: HomeViewReactor.Activity.AsMultipleRecord) { - let user = activityItem.user.fragments.minimumUser - avatarImageView.setImage(url: user.avatarUrl) - nameLabel.text = user.name - usernameLabel.text = "@" + user.username - let work = activityItem.work.fragments.minimumWork - workQuoteView.configure(work: work) - prepareMessageLabel(activityItem: activityItem) - if let time = activityItem.createdAt.toDate()?.toRelativeCurrentLocal() { - timeLabel.text = "・" + time - } - } - - private func prepareMessageLabel(activityItem: HomeViewReactor.Activity.AsMultipleRecord) { - let episodes = activityItem.records?.nodes?.compactMap { $0?.episode.fragments.minimumEpisode } - guard let minEpisode = episodes?.min(by: { $0.sortNumber < $1.sortNumber })?.numberText else { - messageLabel.text = "\(activityItem.work.fragments.minimumWork.title)を見ました。" - return - } - guard let maxEpisode = episodes?.max(by: { $0.sortNumber < $1.sortNumber })?.numberText else { - messageLabel.text = "\(activityItem.work.fragments.minimumWork.title)を見ました。" - return - } - messageLabel.text = "\(minEpisode)から\(maxEpisode)を見ました。" - } -} - - -extension ActivityMultipleRecordTableViewCell: QuoteViewDelegate { - func didSelect() { - delegate?.didSelect(item: .multiRecord(reactor!)) - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCell.xib b/Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCell.xib deleted file mode 100644 index a009e98a..00000000 --- a/Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCell.xib +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCellReactor.swift b/Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCellReactor.swift deleted file mode 100644 index 6aeff4b9..00000000 --- a/Annict-for-iOS/Modules/Home/Views/ActivityMultipleRecordTableViewCellReactor.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// ActivityMultipleRecordTableViewCellReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class ActivityMultipleRecordTableViewCellReactor: Reactor { - typealias MultipleRecord = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node.AsMultipleRecord - - enum Action { - - } - - enum Mutation { - case updateWork(MinimumWork) - } - - struct State { - var multipleRecord: MultipleRecord - } - - let initialState: State - private let provider: ServiceProviderType - - init(provider: ServiceProviderType, multipleRecord: MultipleRecord) { - self.provider = provider - initialState = State(multipleRecord: multipleRecord) - } - - func transform(mutation: Observable) -> Observable { - let updateWork = provider.workAPIService.event.updateWorkState - .filter { [weak self] in - $0.annictId == self?.currentState.multipleRecord.work.fragments.minimumWork.annictId - } - .map { Mutation.updateWork($0) } - return .merge(mutation, updateWork) - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .updateWork(let work): - state.multipleRecord.work.fragments.minimumWork = work - } - return state - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCell.swift b/Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCell.swift deleted file mode 100644 index 5e3b9a6c..00000000 --- a/Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCell.swift +++ /dev/null @@ -1,95 +0,0 @@ -// -// ActivityRecordTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/12. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import SwiftDate -import ReactorKit -import RxSwift - -protocol HomeQuoteViewCellDelegate: class { - func didSelect(item: HomeSectionItem) -} - -protocol HomeCellDelegate: HomeQuoteViewCellDelegate { - func didTapUnderArrow(_ cell: UITableViewCell, item: HomeSectionItem) -} - -final class ActivityRecordTableViewCell: UITableViewCell, StoryboardView { - typealias Reactor = ActivityRecordTableViewCellReactor - - @IBOutlet private weak var avatarImageView: UIImageView! - @IBOutlet private weak var nameLabel: UILabel! - @IBOutlet private weak var usernameLabel: UILabel! - @IBOutlet private weak var timeLabel: UILabel! - @IBOutlet private weak var messageLabel: UILabel! - @IBOutlet private weak var workAndEpisodeQuoteView: WorkAndEpisodeQuoteView! - @IBOutlet private weak var recordStatusTagView: RecordStatusTagView! - @IBOutlet private weak var underArrowButton: UIButton! - - var disposeBag = DisposeBag() - weak var delegate: HomeCellDelegate? - - override func awakeFromNib() { - super.awakeFromNib() - - avatarImageView.layer.masksToBounds = true - avatarImageView.layer.cornerRadius = 40 / 2 - workAndEpisodeQuoteView.delegate = self - - underArrowButton.withImageRenderingMode(.alwaysTemplate) - underArrowButton.tintColor = UIColor(white: 0.9, alpha: 1) - } - - override func prepareForReuse() { - super.prepareForReuse() - - disposeBag = DisposeBag() - workAndEpisodeQuoteView.delegate = self - } - - func bind(reactor: Reactor) { - underArrowButton.rx.tap - .subscribe(onNext: { [unowned self] _ in - self.delegate?.didTapUnderArrow(self, item: .record(reactor)) - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.record } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] record in - self?.configure(activityItem: record) - }) - .disposed(by: disposeBag) - } - - func configure(activityItem: HomeViewReactor.Activity.AsRecord) { - let record = activityItem.fragments.minimumRecord - let user = record.user.fragments.minimumUser - avatarImageView.setImage(url: user.avatarUrl) - nameLabel.text = user.name - usernameLabel.text = "@" + user.username - if let time = record.createdAt.toDate()?.toRelativeCurrentLocal() { - timeLabel.text = "・" + time - } - messageLabel.text = record.comment - workAndEpisodeQuoteView.configure(work: activityItem.work.fragments.minimumWork, - episode: activityItem.episode.fragments.minimumEpisode) - if let ratingState = record.ratingState { - recordStatusTagView.isHidden = false - recordStatusTagView.configure(ratingState: ratingState) - } else { - recordStatusTagView.isHidden = true - } - } -} - -extension ActivityRecordTableViewCell: QuoteViewDelegate { - func didSelect() { - delegate?.didSelect(item: .record(reactor!)) - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCell.xib b/Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCell.xib deleted file mode 100644 index 0f7c617f..00000000 --- a/Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCell.xib +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCellReactor.swift b/Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCellReactor.swift deleted file mode 100644 index 84f8eb95..00000000 --- a/Annict-for-iOS/Modules/Home/Views/ActivityRecordTableViewCellReactor.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// ActivityRecordTableViewCellReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class ActivityRecordTableViewCellReactor: Reactor { - typealias Record = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node.AsRecord - - enum Action { - - } - - enum Mutation { - case updateWork(MinimumWork) - } - - struct State { - var record: Record - } - - let initialState: State - private let provider: ServiceProviderType - - init(provider: ServiceProviderType, record: Record) { - self.provider = provider - initialState = State(record: record) - } - - func mutate(action: Action) -> Observable { - return .empty() - } - - func transform(mutation: Observable) -> Observable { - let updateWork = provider.workAPIService.event.updateWorkState - .filter { [weak self] in - $0.annictId == self?.currentState.record.work.fragments.minimumWork.annictId - } - .map { Mutation.updateWork($0) } - return .merge(mutation, updateWork) - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .updateWork(let work): - state.record.work.fragments.minimumWork = work - } - return state - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCell.swift b/Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCell.swift deleted file mode 100644 index 75356514..00000000 --- a/Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCell.swift +++ /dev/null @@ -1,78 +0,0 @@ -// -// ActivityStatusTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/12. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift - -final class ActivityStatusTableViewCell: UITableViewCell, StoryboardView { - typealias Reactor = ActivityStatusTableViewCellReactor - - @IBOutlet private weak var avatarImageView: UIImageView! - @IBOutlet private weak var nameLabel: UILabel! - @IBOutlet private weak var usernameLabel: UILabel! - @IBOutlet private weak var messageLabel: UILabel! - @IBOutlet private weak var timeLabel: UILabel! - @IBOutlet private weak var workQuoteView: WorkQuoteView! - @IBOutlet private weak var underArrowButton: UIButton! - - var disposeBag = DisposeBag() - weak var delegate: HomeCellDelegate? - - override func awakeFromNib() { - super.awakeFromNib() - - avatarImageView.layer.masksToBounds = true - avatarImageView.layer.cornerRadius = 40 / 2 - workQuoteView.delegate = self - - underArrowButton.withImageRenderingMode(.alwaysTemplate) - underArrowButton.tintColor = UIColor(white: 0.9, alpha: 1) - } - - override func prepareForReuse() { - super.prepareForReuse() - - disposeBag = DisposeBag() - workQuoteView.delegate = self - } - - func bind(reactor: Reactor) { - underArrowButton.rx.tap - .subscribe(onNext: { [unowned self] _ in - self.delegate?.didTapUnderArrow(self, item: .status(reactor)) - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.status } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] status in - self?.configure(activityItem: status) - }) - .disposed(by: disposeBag) - } - - func configure(activityItem: HomeViewReactor.Activity.AsStatus) { - let user = activityItem.user.fragments.minimumUser - avatarImageView.setImage(url: user.avatarUrl) - nameLabel.text = user.name - usernameLabel.text = "@" + user.username - let work = activityItem.work.fragments.minimumWork - workQuoteView.configure(work: work) - messageLabel.text = "ステータスを「\(activityItem.state.localizedText)」に変更しました。" - if let time = activityItem.createdAt.toDate()?.toRelativeCurrentLocal() { - timeLabel.text = "・" + time - } - } -} - -extension ActivityStatusTableViewCell: QuoteViewDelegate { - func didSelect() { - delegate?.didSelect(item: .status(reactor!)) - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCell.xib b/Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCell.xib deleted file mode 100644 index 8a172b26..00000000 --- a/Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCell.xib +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCellReactor.swift b/Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCellReactor.swift deleted file mode 100644 index ab01b7f1..00000000 --- a/Annict-for-iOS/Modules/Home/Views/ActivityStatusTableViewCellReactor.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// ActivityStatusTableViewCellReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/25. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class ActivityStatusTableViewCellReactor: Reactor { - typealias Status = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node.AsStatus - - enum Action { - - } - - enum Mutation { - case updateWork(MinimumWork) - } - - struct State { - var status: Status - } - - let initialState: State - private let provider: ServiceProviderType - - init(provider: ServiceProviderType, status: Status) { - self.provider = provider - initialState = State(status: status) - } - - func mutate(action: Action) -> Observable { - return .empty() - } - - func transform(mutation: Observable) -> Observable { - let updateWork = provider.workAPIService.event.updateWorkState - .filter { [weak self] in - $0.annictId == self?.currentState.status.work.fragments.minimumWork.annictId - } - .map { Mutation.updateWork($0) } - return .merge(mutation, updateWork) - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .updateWork(let work): - state.status.work.fragments.minimumWork = work - } - return state - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/HomeTitleTableViewCell.swift b/Annict-for-iOS/Modules/Home/Views/HomeTitleTableViewCell.swift deleted file mode 100644 index b0fdbd37..00000000 --- a/Annict-for-iOS/Modules/Home/Views/HomeTitleTableViewCell.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// HomeTitleTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/13. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class HomeTitleTableViewCell: UITableViewCell { - - @IBOutlet private weak var titleLabel: UILabel! - - override func awakeFromNib() { - super.awakeFromNib() - - } - - func configure(title: String) { - titleLabel.text = title - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/HomeTitleTableViewCell.xib b/Annict-for-iOS/Modules/Home/Views/HomeTitleTableViewCell.xib deleted file mode 100644 index fe36bf2c..00000000 --- a/Annict-for-iOS/Modules/Home/Views/HomeTitleTableViewCell.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Home/Views/WorkAndEpisodeQuoteView.swift b/Annict-for-iOS/Modules/Home/Views/WorkAndEpisodeQuoteView.swift deleted file mode 100644 index 38a22ef4..00000000 --- a/Annict-for-iOS/Modules/Home/Views/WorkAndEpisodeQuoteView.swift +++ /dev/null @@ -1,92 +0,0 @@ -// -// WorkAndEpisodeQuoteView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/12. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -protocol QuoteViewDelegate: class { - func didSelect() -} - -final class WorkAndEpisodeQuoteView: UIView, NibOwnerLoadable { - @IBOutlet private(set) weak var workImageView: UIImageView! - @IBOutlet private weak var workTitleLabel: UILabel! - @IBOutlet private weak var episodeLabel: UILabel! - - weak var delegate: QuoteViewDelegate? - - private var overlay: UIView = { - let v = UIView() - v.backgroundColor = UIColor.black.withAlphaComponent(0.2) - v.alpha = 0 - return v - }() - - override var intrinsicContentSize: CGSize { - return CGSize(width: CGFloat.greatestFiniteMagnitude, height: 60) - } - - override init(frame: CGRect) { - super.init(frame: frame) - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - commonInit() - } - - override func touchesBegan(_ touches: Set, with event: UIEvent?) { - overlay.alpha = 1 - } - - override func touchesCancelled(_ touches: Set, with event: UIEvent?) { - overlay.alpha = 0 - } - - override func touchesEnded(_ touches: Set, with event: UIEvent?) { - overlay.alpha = 0 - delegate?.didSelect() - } - - private func commonInit() { - loadNib() - - layer.masksToBounds = true - layer.cornerRadius = 8 - layer.borderColor = UIColor(hex: 0xE2E2E2).cgColor - layer.borderWidth = 0.5 - - workImageView.layer.cornerRadius = 8 - workImageView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner] - - addSubview(overlay) - overlay.snp.makeConstraints { - $0.edges.equalTo(self) - } - } - - func configure(work: MinimumWork, episode: MinimumEpisode) { - workImageView.setImage(workID: work.annictId) - workTitleLabel.text = work.title - episodeLabel.text = "\(episode.numberAndTitle)" - } -} - -extension MinimumWork.Image { - var url: String? { - if let twitterAvatarUrl = twitterAvatarUrl, !twitterAvatarUrl.isEmpty { - return twitterAvatarUrl - } - - if let recommendedImageUrl = recommendedImageUrl { - return recommendedImageUrl.replacingOccurrences(of: "http://", with: "https://") - } - - return nil - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/WorkAndEpisodeQuoteView.xib b/Annict-for-iOS/Modules/Home/Views/WorkAndEpisodeQuoteView.xib deleted file mode 100644 index 78efdd5c..00000000 --- a/Annict-for-iOS/Modules/Home/Views/WorkAndEpisodeQuoteView.xib +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Home/Views/WorkQuoteView.swift b/Annict-for-iOS/Modules/Home/Views/WorkQuoteView.swift deleted file mode 100644 index d485efa2..00000000 --- a/Annict-for-iOS/Modules/Home/Views/WorkQuoteView.swift +++ /dev/null @@ -1,72 +0,0 @@ -// -// WorkQuoteView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/12. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class WorkQuoteView: UIView, NibOwnerLoadable { - weak var delegate: QuoteViewDelegate? - - @IBOutlet private(set) weak var workImageView: UIImageView! - @IBOutlet private weak var workTitleLabel: UILabel! - - private var overlay: UIView = { - let v = UIView() - v.backgroundColor = UIColor.black.withAlphaComponent(0.2) - v.alpha = 0 - return v - }() - - override var intrinsicContentSize: CGSize { - return CGSize(width: CGFloat.greatestFiniteMagnitude, height: 60) - } - - override init(frame: CGRect) { - super.init(frame: frame) - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - commonInit() - } - - override func touchesBegan(_ touches: Set, with event: UIEvent?) { - overlay.alpha = 1 - } - - override func touchesCancelled(_ touches: Set, with event: UIEvent?) { - overlay.alpha = 0 - } - - override func touchesEnded(_ touches: Set, with event: UIEvent?) { - overlay.alpha = 0 - delegate?.didSelect() - } - - private func commonInit() { - loadNib() - - layer.masksToBounds = true - layer.cornerRadius = 8 - layer.borderColor = UIColor(hex: 0xE2E2E2).cgColor - layer.borderWidth = 0.5 - - workImageView.layer.cornerRadius = 8 - workImageView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner] - - addSubview(overlay) - overlay.snp.makeConstraints { - $0.edges.equalTo(self) - } - } - - func configure(work: MinimumWork) { - workImageView.setImage(workID: work.annictId) - workTitleLabel.text = work.title - } -} diff --git a/Annict-for-iOS/Modules/Home/Views/WorkQuoteView.xib b/Annict-for-iOS/Modules/Home/Views/WorkQuoteView.xib deleted file mode 100644 index 81d8f958..00000000 --- a/Annict-for-iOS/Modules/Home/Views/WorkQuoteView.xib +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Login/LoginViewController.storyboard b/Annict-for-iOS/Modules/Login/LoginViewController.storyboard deleted file mode 100644 index 982119f9..00000000 --- a/Annict-for-iOS/Modules/Login/LoginViewController.storyboard +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Login/LoginViewController.swift b/Annict-for-iOS/Modules/Login/LoginViewController.swift deleted file mode 100644 index f0534243..00000000 --- a/Annict-for-iOS/Modules/Login/LoginViewController.swift +++ /dev/null @@ -1,106 +0,0 @@ -// -// LoginViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift -import RxCocoa -import SafariServices -import RxGesture - -final class LoginViewController: UIViewController, StoryboardView { - typealias Reactor = LoginViewReactor - - var disposeBag = DisposeBag() - - @IBOutlet private weak var logoImageView: UIImageView! - @IBOutlet private weak var loginButton: UIButton! - @IBOutlet private weak var termsOfUseLabel: UILabel! - @IBOutlet private weak var loginSwitch: UISwitch! - - private let fetchedCode = PublishRelay() - - override func viewDidLoad() { - super.viewDidLoad() - - logoImageView.layer.cornerRadius = 32 - logoImageView.layer.smoothCorners = true - - loginButton.layer.cornerRadius = 8 - loginButton.rx.tap - .subscribe(onNext: tappedLoginButton) - .disposed(by: disposeBag) - - termsOfUseLabel.attributedText = "利用規約に同意する" - .attr - .foregroundColor(.gray) - .range(of: "利用規約") { - $0.foregroundColor(UIColor.pa.blue) - $0.underlineStyle(.single) - $0.underlineColor(UIColor.pa.blue) - } - .apply() - - termsOfUseLabel.rx - .tapGesture() - .subscribe(onNext: { [weak self] recognizer in - self?.openTermsOfService() - }) - .disposed(by: disposeBag) - - loginSwitch.rx.isOn - .subscribe(onNext: { [weak self] isOn in - self?.loginButton.isEnabled = isOn - self?.loginButton.alpha = isOn ? 1 : 0.5 - }) - .disposed(by: disposeBag) - } - - func bind(reactor: Reactor) { - fetchedCode - .map { Reactor.Action.login($0) } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - reactor.state.map { $0.loginSuccess } - .distinctUntilChanged() - .filter { $0 } - .subscribe(onNext: { _ in print("login success") }) - .disposed(by: disposeBag) - - reactor.state.map { $0.error } - .filterNil() - .subscribe(onNext: { print("Error: ", $0) }) - .disposed(by: disposeBag) - } - - private func tappedLoginButton() { - guard let url = Constants.oauthURL else { return } - showSafariViewController(url: url) - } - - private func showSafariViewController(url: URL) { - let safariViewController = SFSafariViewController(url: url) - present(safariViewController, animated: true, completion: nil) - - NotificationCenter.default.rx.notification(.safariViewControllerCloseNotification) - .do(onNext: { _ in - safariViewController.dismiss(animated: true, completion: nil) - }) - .map { $0.object as? String } - .filterNil() - .bind(to: fetchedCode) - .disposed(by: disposeBag) - } - - private func openTermsOfService() { - guard let url = URL(string: "https://touyu.github.io/Annict-for-iOS-Website/rule/") else { return } - let safariViewController = SFSafariViewController(url: url) - present(safariViewController, animated: true, completion: nil) - } -} diff --git a/Annict-for-iOS/Modules/Login/LoginViewReactor.swift b/Annict-for-iOS/Modules/Login/LoginViewReactor.swift deleted file mode 100644 index b52558f4..00000000 --- a/Annict-for-iOS/Modules/Login/LoginViewReactor.swift +++ /dev/null @@ -1,60 +0,0 @@ -// -// LoginViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class LoginViewReactor: Reactor { - let initialState: State - let provider: ServiceProviderType - - init(provider: ServiceProviderType) { - self.initialState = State(loginSuccess: false, - error: nil) - self.provider = provider - } - - enum Action { - case login(String) - } - - enum Mutation { - case changeLoginSuccess(Bool) - case setError(Error) - } - - struct State { - var loginSuccess: Bool - var error: Error? - } - - func mutate(action: Action) -> Observable { - switch action { - case .login(let code): - return provider.apiService.getOauthToken(code: code) - .asObservable() - .do(onNext: { [weak self] res in - self?.provider.userDefaultsService.save(value: res.accessToken, forKey: .accessToken) - AnnictGraphQL.resetClient() - }) - .map { _ in .changeLoginSuccess(true) } - .catchError { .just(.setError($0)) } - } - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .changeLoginSuccess(let value): - state.loginSuccess = value - case .setError(let error): - state.error = error - } - return state - } -} diff --git a/Annict-for-iOS/Modules/Profile/ProfileViewController.swift b/Annict-for-iOS/Modules/Profile/ProfileViewController.swift deleted file mode 100644 index 5b7fb13a..00000000 --- a/Annict-for-iOS/Modules/Profile/ProfileViewController.swift +++ /dev/null @@ -1,87 +0,0 @@ -// -// ProfileViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift -import Apollo - -final class ProfileViewController: UIViewController, StoryboardView { - typealias Reactor = ProfileViewReactor - - @IBOutlet private weak var tableView: UITableView! - - var disposeBag = DisposeBag() - - private var client: ApolloClient? = { - let configuration = URLSessionConfiguration.default - guard let token = UserDefaultsRepository.fetch(forKey: .accessToken, type: String.self) else { return nil } - configuration.httpAdditionalHeaders = ["Authorization": "Bearer \(token)"] - let url = URL(string: "https://api.annict.com/graphql")! - let transport = HTTPNetworkTransport(url: url, configuration: configuration) - return ApolloClient(networkTransport: transport) - }() - - override func viewDidLoad() { - super.viewDidLoad() - - - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - - fetch() - } - - func bind(reactor: Reactor) { - - } - - private func fetch() { - guard let client = client else { return } - let states: [StatusState] = [.watching, .wannaWatch, .watched, .onHold, .stopWatching] - let queries = states.compactMap(GetViewerWorksQuery.init) - let requests = queries.compactMap { client.rx.fetch(query: $0).asObservable() } - Observable.zip(requests) - .subscribe(onNext: { data in - for elem in data { - elem.viewer?.works?.value - } - }) - .disposed(by: disposeBag) - - client.rx - .fetch(query: GetViewerInfoQuery()) - .subscribe(onSuccess: { data in - - }) - .disposed(by: disposeBag) - } - - private func prepareTableView() { - tableView.dataSource = self - } -} - -extension ProfileViewController: UITableViewDataSource { - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 0 - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - return UITableViewCell() - } -} - -extension GetViewerWorksQuery.Data.Viewer.Work { - var value: [Edge.Node] { - guard let edges = edges else { return []} - return edges.compactMap { $0?.node } - } -} diff --git a/Annict-for-iOS/Modules/Profile/ProfileWorks/ChildPagerViewController.swift b/Annict-for-iOS/Modules/Profile/ProfileWorks/ChildPagerViewController.swift deleted file mode 100644 index d18fac8d..00000000 --- a/Annict-for-iOS/Modules/Profile/ProfileWorks/ChildPagerViewController.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// ChildPagerViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/27. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import XLPagerTabStrip - -protocol ScrollViewProvider { - var delegate: ChildPagerTabStripDelegate? { get set } - func provideScrollView() -> UIScrollView? -} - -protocol ChildPagerTabStripDelegate: class { - func scrollViewWillDisplay(_ scrollView: UIScrollView) - func scrollViewDidScrolled(_ scrollView: UIScrollView) -} - -class ChildPagerViewController: UIViewController, ScrollViewProvider, UIScrollViewDelegate { - weak var delegate: ChildPagerTabStripDelegate? - - private var observation: NSKeyValueObservation? - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - - observation?.invalidate() - } - - override func viewDidLoad() { - super.viewDidLoad() - - observeContentSize() - if let scrollView = provideScrollView() { -// scrollView.delegate = self - delegate?.scrollViewWillDisplay(scrollView) - } - } - - func provideScrollView() -> UIScrollView? { - fatalError("Unimplemented provideScrollView()") - } - - private func observeContentSize() { - observation = provideScrollView()?.observe(\.contentSize, options: [.new]) { collectionView, value in -// print(value.newValue) -// print(collectionView.frame.size) - guard let newValue = value.newValue else { return } - let newBottomInset = collectionView.frame.size.height - newValue.height - if newBottomInset > 0 { - collectionView.contentInset.bottom = collectionView.frame.size.height - newValue.height - } else { - collectionView.contentInset.bottom = 0 - } - } - } - -// func scrollViewDidScroll(_ scrollView: UIScrollView) { -// delegate?.scrollViewDidScrolled(scrollView) -// } -} - diff --git a/Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewController.storyboard b/Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewController.storyboard deleted file mode 100644 index 6590ded0..00000000 --- a/Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewController.storyboard +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewController.swift b/Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewController.swift deleted file mode 100644 index c34c3f49..00000000 --- a/Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewController.swift +++ /dev/null @@ -1,106 +0,0 @@ -// -// ProfileWorksViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/01/16. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift -import XLPagerTabStrip - -final class ProfileWorksViewController: ChildPagerViewController, StoryboardView { - typealias Reactor = ProfileWorksViewReactor - - var disposeBag = DisposeBag() - - @IBOutlet weak var collectionView: UICollectionView! - - private let column: Int = 3 - - override func viewDidLoad() { - super.viewDidLoad() - - collectionView.register(cellTypes: ProfileWorkCollectionViewCell.self) - } - - func bind(reactor: Reactor) { - rx.viewWillAppear - .take(1) - .map { Reactor.Action.fetch } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - collectionView.rx.setDataSource(self) - .disposed(by: disposeBag) - - collectionView.rx.setDelegate(self) - .disposed(by: disposeBag) - - collectionView.rx.contentOffset - .subscribe(onNext: { [weak self] offset in - guard let self = self else { return } - self.delegate?.scrollViewDidScrolled(self.collectionView) - }) - .disposed(by: disposeBag) - - collectionView.rx.triggeredPagination() - .throttle(.seconds(1), latest: false, scheduler: MainScheduler.instance) - .map { Reactor.Action.loadMore } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - reactor.state.map { $0.works } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] _ in - self?.collectionView.reloadData() - }) - .disposed(by: disposeBag) - } - - override func provideScrollView() -> UIScrollView? { - return collectionView - } -} - -extension ProfileWorksViewController: UICollectionViewDataSource { - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - guard let reactor = reactor else { return 0 } - return reactor.currentState.works.count - } - - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCell(type: ProfileWorkCollectionViewCell.self, for: indexPath) - guard let reactor = reactor else { return cell } - let work = reactor.currentState.works[indexPath.item] - cell.configure(work: work) - cell.setColumnCount(column) - return cell - } -} - -extension ProfileWorksViewController: UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - let mergin: CGFloat = 18 - let column = CGFloat(self.column) - let width = (collectionView.bounds.width - mergin * (column + 1)) / column - return CGSize(width: width, height: width * 1.4 + 40) - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { - return UIEdgeInsets(top: 24, left: 18, bottom: 0, right: 18) - } - - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - guard let reactor = reactor?.reactorForWork(index: indexPath.item) else { return } - WorkViewController.presentPanModal(fromVC: self, reactor: reactor) - } -} - -extension ProfileWorksViewController: IndicatorInfoProvider { - func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo { - return IndicatorInfo(title: reactor?.statusState.localizedText) - } -} diff --git a/Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewReactor.swift b/Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewReactor.swift deleted file mode 100644 index f2775be2..00000000 --- a/Annict-for-iOS/Modules/Profile/ProfileWorks/ProfileWorksViewReactor.swift +++ /dev/null @@ -1,115 +0,0 @@ -// -// WatchingWorksViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/01/16. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class ProfileWorksViewReactor: Reactor { - typealias PageInfo = GetViewerWorksQuery.Data.Viewer.Work.PageInfo - - enum Action { - case fetch - case loadMore - } - - enum Mutation { - case setWorks([MinimumWork]) - case addWorks([MinimumWork]) - case setPageInfo(PageInfo) - case insertWork(MinimumWork) - case removeWork(String) - } - - struct State { - var works: [MinimumWork] = [] - var pageInfo: PageInfo? - } - - let initialState: State - let statusState: StatusState - let provider: ServiceProviderType - - init(provider: ServiceProviderType, statusState: StatusState) { - initialState = State() - self.statusState = statusState - self.provider = provider - } - - func mutate(action: Action) -> Observable { - switch action { - case .fetch: - let fetchWorksEvent = fetchWorks().share() - let works = fetchWorksEvent.map { Mutation.setWorks($0.minimumWorks) } - let pageInfo = fetchWorksEvent.map { Mutation.setPageInfo($0.pageInfo) } - return .merge(works, pageInfo) - case .loadMore: - guard currentState.pageInfo?.hasNextPage ?? false else { return .empty() } - let fetchWorksEvent = fetchMoreWorks(after: currentState.pageInfo?.endCursor).share() - let works = fetchWorksEvent.map { Mutation.addWorks($0.minimumWorks) } - let pageInfo = fetchWorksEvent.map { Mutation.setPageInfo($0.pageInfo) } - return .merge(works, pageInfo) - } - } - - func transform(mutation: Observable) -> Observable { - let currentStatusState = statusState - - let filterWorks = provider.workAPIService.event.updateWorkState - .filter { $0.viewerStatusState != currentStatusState } - .map { Mutation.removeWork($0.id) } - - let appendWork = provider.workAPIService.event.updateWorkState - .filter { $0.viewerStatusState == currentStatusState } - .map { Mutation.insertWork($0) } - - return .merge(mutation, filterWorks, appendWork) - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setWorks(let works): - state.works = works - case .addWorks(let works): - state.works += works - case .setPageInfo(let pageInfo): - state.pageInfo = pageInfo - case .insertWork(let work): - state.works.insert(work, at: 0) - case .removeWork(let id): - state.works.removeAll(where: { $0.id == id }) - } - return state - } - - func reactorForWork(index: Int) -> WorkViewReactor { - return .init(provider: provider, work: currentState.works[index]) - } - - private func fetchWorks(after: String? = nil) -> Observable { - let query = GetViewerWorksQuery(state: statusState, after: after) - return AnnictGraphQL.client.rx.fetch(query: query, cachePolicy: .returnCacheDataAndFetch) - .asObservable() - .map { $0.viewer?.works } - .filterNil() - } - - private func fetchMoreWorks(after: String? = nil) -> Observable { - let query = GetViewerWorksQuery(state: statusState, after: after) - return AnnictGraphQL.client.rx.fetch(query: query, cachePolicy: .fetchIgnoringCacheData) - .asObservable() - .map { $0.viewer?.works } - .filterNil() - } -} - -extension GetViewerWorksQuery.Data.Viewer.Work { - var minimumWorks: [MinimumWork] { - return values.map { $0.fragments.minimumWork } - } -} diff --git a/Annict-for-iOS/Modules/Profile/ProfileWorks/Views/ProfileWorkCollectionViewCell.swift b/Annict-for-iOS/Modules/Profile/ProfileWorks/Views/ProfileWorkCollectionViewCell.swift deleted file mode 100644 index b9d71946..00000000 --- a/Annict-for-iOS/Modules/Profile/ProfileWorks/Views/ProfileWorkCollectionViewCell.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// ProfileWorkCollectionViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/01/16. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -class ProfileWorkCollectionViewCell: UICollectionViewCell { - @IBOutlet private weak var workImageView: UIImageView! - @IBOutlet private weak var titleLabel: UILabel! - - override func awakeFromNib() { - super.awakeFromNib() - - workImageView.apply(.workImage) - } - - func configure(work: MinimumWork) { - workImageView.setImage(workID: work.annictId) - titleLabel.text = work.title - } - - func setColumnCount(_ count: Int) { - if count == 2 { - titleLabel.font = UIFont.boldSystemFont(ofSize: 12) - } - - if count == 3 { - titleLabel.font = UIFont.systemFont(ofSize: 11) - } - } -} diff --git a/Annict-for-iOS/Modules/Profile/ProfileWorks/Views/ProfileWorkCollectionViewCell.xib b/Annict-for-iOS/Modules/Profile/ProfileWorks/Views/ProfileWorkCollectionViewCell.xib deleted file mode 100644 index 6d28893c..00000000 --- a/Annict-for-iOS/Modules/Profile/ProfileWorks/Views/ProfileWorkCollectionViewCell.xib +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewController.storyboard b/Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewController.storyboard deleted file mode 100644 index 09db4678..00000000 --- a/Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewController.storyboard +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewController.swift b/Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewController.swift deleted file mode 100644 index e58d783c..00000000 --- a/Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewController.swift +++ /dev/null @@ -1,86 +0,0 @@ -// -// ProfileViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift -import Apollo -import XLPagerTabStrip - -final class ProfileViewController: ParentPagerViewController, StoryboardView { - typealias Reactor = ProfileViewReactor - - var disposeBag = DisposeBag() - - @IBOutlet private weak var headerView: ProfileHeaderView! - - override func viewDidLoad() { - prepareButtonBar() - super.viewDidLoad() - - let statusBarBackgroundView = UIView(frame: UIApplication.shared.statusBarFrame) - statusBarBackgroundView.backgroundColor = .white - view.addSubview(statusBarBackgroundView) - } - - func bind(reactor: Reactor) { - rx.viewWillAppear - .map { Reactor.Action.fetch } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - reactor.state.map { $0.viewer } - .filterNil() - .distinctUntilChanged() - .subscribe(onNext: { [weak self] viewer in - self?.headerView.prepare(user: viewer) - self?.refreshTableViewContentInsetTop() - }) - .disposed(by: disposeBag) - } - - override func viewControllers(_ parentPager: ParentPager) -> [ChildPagerViewController] { - let vc1 = ProfileWorksViewController.loadStoryboard(reactor: reactor!.reactorForChild(statusState: .watching)) - let vc2 = ProfileWorksViewController.loadStoryboard(reactor: reactor!.reactorForChild(statusState: .wannaWatch)) - let vc3 = ProfileWorksViewController.loadStoryboard(reactor: reactor!.reactorForChild(statusState: .watched)) - let vc4 = ProfileWorksViewController.loadStoryboard(reactor: reactor!.reactorForChild(statusState: .onHold)) - let vc5 = ProfileWorksViewController.loadStoryboard(reactor: reactor!.reactorForChild(statusState: .stopWatching)) - let vcs = [vc1, vc2, vc3, vc4, vc5] - return vcs - } - - override func headerView(_ parentPager: ParentPager) -> UIView { - return headerView - } - - private func refreshTableViewContentInsetTop() { - viewControllers - .compactMap { ($0 as? ScrollViewProvider)?.provideScrollView() } - .forEach { - $0.contentInset.top = insetTop - $0.scrollIndicatorInsets.top = insetTop - $0.contentOffset.y = -insetTop - } - } -} - -extension UIColor { - public convenience init(from fColor: UIColor, to tColor: UIColor, with per: CGFloat) { - var fR: CGFloat = 0, fG: CGFloat = 0, fB: CGFloat = 0, fA: CGFloat = 0 - var tR: CGFloat = 0, tG: CGFloat = 0, tB: CGFloat = 0, tA: CGFloat = 0 - - fColor.getRed(&fR, green: &fG, blue: &fB, alpha: &fA) - tColor.getRed(&tR, green: &tG, blue: &tB, alpha: &tA) - - let r: CGFloat = (tR - fR) * per + fR - let g: CGFloat = (tG - fG) * per + fG - let b: CGFloat = (tB - fB) * per + fB - let a: CGFloat = (tA - fA) * per + fA - self.init(red: r, green: g, blue: b, alpha: a) - } -} diff --git a/Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewReactor.swift b/Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewReactor.swift deleted file mode 100644 index fb2dff64..00000000 --- a/Annict-for-iOS/Modules/Profile/ViewControllers/ProfileViewReactor.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// ProfileViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -typealias Viewer = GetViewerInfoQuery.Data.Viewer - -final class ProfileViewReactor: Reactor { - typealias Work = GetViewerWorksQuery.Data.Viewer.Work.Node - - var initialState: State - - private var client = AnnictGraphQL.client - - private let provider: ServiceProviderType - - init(provider: ServiceProviderType) { - self.provider = provider - initialState = State() - } - - enum Action { - case fetch - } - - enum Mutation { - case setViewer(Viewer) - } - - struct State { - var viewer: Viewer? - } - - func mutate(action: Action) -> Observable { - switch action { - case .fetch: - return client.rx - .fetch(query: GetViewerInfoQuery(), cachePolicy: .returnCacheDataAndFetch) - .map { $0.viewer } - .filterNil() - .map { Mutation.setViewer($0) } - } - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setViewer(let viewer): - state.viewer = viewer - UserDefaultsRepository.save(value: viewer, forKey: .viewer) - } - return state - } - - func reactorForChild(statusState: StatusState) -> ProfileWorksViewReactor { - return .init(provider: provider, statusState: statusState) - } -} - -extension GetViewerWorksQuery.Data.Viewer.Work: Connection { } diff --git a/Annict-for-iOS/Modules/Profile/Views/ButtonMarkView.swift b/Annict-for-iOS/Modules/Profile/Views/ButtonMarkView.swift deleted file mode 100644 index a480578e..00000000 --- a/Annict-for-iOS/Modules/Profile/Views/ButtonMarkView.swift +++ /dev/null @@ -1,101 +0,0 @@ -// -// ButtonMarkView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/27. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import XLPagerTabStrip - -final class ButtonMarkView: ButtonBarView { - lazy var selectedMarkView: UIView = { - let mark = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: selectedMarkViewHeight)) - mark.layer.zPosition = -1 - return mark - }() - - var selectedMarkViewHeight: CGFloat = 30 { - didSet { - updateSelectedMarkViewYPosition() - } - } - - override init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout) { - super.init(frame: frame, collectionViewLayout: layout) - selectedBar.alpha = 0 - addSubview(selectedMarkView) - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - selectedBar.alpha = 0 - addSubview(selectedMarkView) - } - - override func moveTo(index: Int, animated: Bool, swipeDirection: SwipeDirection, pagerScroll: PagerScroll) { - super.moveTo(index: index, animated: animated, swipeDirection: swipeDirection, pagerScroll: pagerScroll) - updateSelectedMarkViewPosition(index, animated: animated, swipeDirection: swipeDirection, pagerScroll: pagerScroll) - } - - override func move(fromIndex: Int, toIndex: Int, progressPercentage: CGFloat, pagerScroll: PagerScroll) { - super.move(fromIndex: fromIndex, toIndex: toIndex, progressPercentage: progressPercentage, pagerScroll: pagerScroll) - - let fromFrame = layoutAttributesForItem(at: IndexPath(item: fromIndex, section: 0))!.frame - let numberOfItems = dataSource!.collectionView(self, numberOfItemsInSection: 0) - - var toFrame: CGRect - - if toIndex < 0 || toIndex > numberOfItems - 1 { - if toIndex < 0 { - let cellAtts = layoutAttributesForItem(at: IndexPath(item: 0, section: 0)) - toFrame = cellAtts!.frame.offsetBy(dx: -cellAtts!.frame.size.width, dy: 0) - } else { - let cellAtts = layoutAttributesForItem(at: IndexPath(item: (numberOfItems - 1), section: 0)) - toFrame = cellAtts!.frame.offsetBy(dx: cellAtts!.frame.size.width, dy: 0) - } - } else { - toFrame = layoutAttributesForItem(at: IndexPath(item: toIndex, section: 0))!.frame - } - - var targetFrame = fromFrame - targetFrame.size.height = selectedMarkView.frame.size.height - targetFrame.size.width += (toFrame.size.width - fromFrame.size.width) * progressPercentage - targetFrame.origin.x += (toFrame.origin.x - fromFrame.origin.x) * progressPercentage - - selectedMarkView.frame = CGRect(x: targetFrame.origin.x, y: selectedMarkView.frame.origin.y, width: targetFrame.size.width, height: selectedMarkView.frame.size.height) - selectedMarkView.roundedRectangleFilter() - } - - func updateSelectedMarkViewPosition(_ index: Int, animated: Bool, swipeDirection: SwipeDirection, pagerScroll: PagerScroll) { - var selectedMarkViewFrame = selectedMarkView.frame - - let selectedCellIndexPath = IndexPath(item: index, section: 0) - let attributes = layoutAttributesForItem(at: selectedCellIndexPath) - let selectedCellFrame = attributes!.frame - - selectedMarkViewFrame.size.width = selectedCellFrame.size.width - selectedMarkViewFrame.origin.x = selectedCellFrame.origin.x - - if animated { - UIView.animate(withDuration: 0.3, animations: { [weak self] in - self?.selectedMarkView.frame = selectedMarkViewFrame - }) - } else { - selectedMarkView.frame = selectedMarkViewFrame - } - } - - private func updateSelectedMarkViewYPosition() { - var selectedBarFrame = selectedMarkView.frame - selectedBarFrame.origin.y = (frame.size.height - selectedMarkViewHeight) / 2 - selectedBarFrame.size.height = selectedMarkViewHeight - selectedMarkView.frame = selectedBarFrame - } - - override func layoutSubviews() { - super.layoutSubviews() - updateSelectedMarkViewYPosition() - } -} diff --git a/Annict-for-iOS/Modules/Profile/Views/ProfileHeaderView.swift b/Annict-for-iOS/Modules/Profile/Views/ProfileHeaderView.swift deleted file mode 100644 index 44096977..00000000 --- a/Annict-for-iOS/Modules/Profile/Views/ProfileHeaderView.swift +++ /dev/null @@ -1,50 +0,0 @@ -// -// ProfileHeaderView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/01/16. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class ProfileHeaderView: UIView, NibOwnerLoadable { - - @IBOutlet weak var avatarImageView: UIImageView! - @IBOutlet weak var nameLabel: UILabel! - @IBOutlet weak var usernameLabel: UILabel! - @IBOutlet weak var descriptionLabel: UILabel! - @IBOutlet weak var recordsCountLabel: UILabel! - @IBOutlet weak var followingCountLabel: UILabel! - @IBOutlet weak var followersCountLabel: UILabel! - - override init(frame: CGRect) { - super.init(frame: frame) - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - commonInit() - } - - private func commonInit() { - loadNib() - } - - override func awakeFromNib() { - super.awakeFromNib() - - avatarImageView.circleFilter() - } - - func prepare(user: GetViewerInfoQuery.Data.Viewer) { - avatarImageView.setImage(url: user.avatarUrl) - nameLabel.text = user.name - usernameLabel.text = "@\(user.username)" - descriptionLabel.text = user.description - recordsCountLabel.text = user.recordsCount.description - followingCountLabel.text = user.followingsCount.description - followersCountLabel.text = user.followersCount.description - } -} diff --git a/Annict-for-iOS/Modules/Profile/Views/ProfileHeaderView.xib b/Annict-for-iOS/Modules/Profile/Views/ProfileHeaderView.xib deleted file mode 100644 index caf68af3..00000000 --- a/Annict-for-iOS/Modules/Profile/Views/ProfileHeaderView.xib +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Profile/Views/UserInfoTableViewCell.swift b/Annict-for-iOS/Modules/Profile/Views/UserInfoTableViewCell.swift deleted file mode 100644 index 2e5a455d..00000000 --- a/Annict-for-iOS/Modules/Profile/Views/UserInfoTableViewCell.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// UserInfoTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/14. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import Kingfisher - -class UserInfoTableViewCell: UITableViewCell { - - @IBOutlet private weak var avatarImageView: UIImageView! - @IBOutlet private weak var nameLabel: UILabel! - @IBOutlet private weak var usernameLabel: UILabel! - @IBOutlet private weak var recordsCountLabel: UILabel! - @IBOutlet private weak var followingCountLable: UILabel! - @IBOutlet private weak var followersCountLabel: UILabel! - @IBOutlet private weak var descriptionLabel: UILabel! - - override func awakeFromNib() { - super.awakeFromNib() - - prepareUI() - } - - func prepare(user: GetViewerInfoQuery.Data.Viewer) { - nameLabel.text = user.name - usernameLabel.text = "@\(user.username)" - avatarImageView.setImage(url: user.avatarUrl) - recordsCountLabel.text = "\(user.recordsCount)" - followingCountLable.text = "\(user.followingsCount)" - followersCountLabel.text = "\(user.followersCount)" - descriptionLabel.attributedText = makeDescriptionText(string: user.description) - } - - private func prepareUI() { - recordsCountLabel.text = "\(0)" - followingCountLable.text = "\(0)" - followersCountLabel.text = "\(0)" - - avatarImageView.circleFilter() - avatarImageView.layer.borderWidth = 0.4 - avatarImageView.layer.borderColor = UIColor.lightGray.cgColor - } - - private func makeDescriptionText(string: String) -> NSAttributedString { - return NSAttributedString(string: string, - attributes: [ - .paragraphStyle: NSMutableParagraphStyle(lineSpacing: 10.0) - ]) - } -} diff --git a/Annict-for-iOS/Modules/Profile/Views/UserInfoTableViewCell.xib b/Annict-for-iOS/Modules/Profile/Views/UserInfoTableViewCell.xib deleted file mode 100644 index bb016407..00000000 --- a/Annict-for-iOS/Modules/Profile/Views/UserInfoTableViewCell.xib +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Profile/Views/UserWorkCollectionViewCell.swift b/Annict-for-iOS/Modules/Profile/Views/UserWorkCollectionViewCell.swift deleted file mode 100644 index 63b5c06a..00000000 --- a/Annict-for-iOS/Modules/Profile/Views/UserWorkCollectionViewCell.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// UserWorkCollectionViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/25. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import Hero - -final class UserWorkCollectionViewCell: UICollectionViewCell { - @IBOutlet private(set) weak var imageView: UIImageView! - @IBOutlet private(set) weak var titleLabel: UILabel! - - override func awakeFromNib() { - super.awakeFromNib() - - imageView.layer.cornerRadius = 4 - imageView.layer.masksToBounds = true - imageView.layer.borderWidth = 0.4 - imageView.layer.borderColor = UIColor(white: 0.9, alpha: 1).cgColor - - imageView.apply(.workImage) - imageView.hero.isEnabled = true - } - - func prepare(work: MinimumWork) { - prepare(url: work.image?.url, title: work.title) - } - - func prepare(url: String?, title: String) { - imageView.setImage(url: url) - titleLabel.text = title - } - - func prepareHero(indexPath: IndexPath) { - imageView.hero.id = "WorkImageView \(indexPath.row)" - titleLabel.hero.id = "TitleLabel \(indexPath.row)" - } -} diff --git a/Annict-for-iOS/Modules/Profile/Views/UserWorkCollectionViewCell.xib b/Annict-for-iOS/Modules/Profile/Views/UserWorkCollectionViewCell.xib deleted file mode 100644 index 04b76e4a..00000000 --- a/Annict-for-iOS/Modules/Profile/Views/UserWorkCollectionViewCell.xib +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Profile/Views/UserWorksWithSectionTitleCell.swift b/Annict-for-iOS/Modules/Profile/Views/UserWorksWithSectionTitleCell.swift deleted file mode 100644 index 2d067936..00000000 --- a/Annict-for-iOS/Modules/Profile/Views/UserWorksWithSectionTitleCell.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// UserWorksWithSectionTitleCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/25. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class UserWorksWithSectionTitleCell: UITableViewCell { - @IBOutlet private weak var titleLabel: UILabel! - @IBOutlet private weak var collectionView: UICollectionView! - - private var works: [MinimumWork] = [] - - override func awakeFromNib() { - super.awakeFromNib() - - prepareCollectionView() - } - - func prepare(title: String, works: [MinimumWork]) { - self.titleLabel.text = title - self.works = works - self.collectionView.reloadData() - } - - private func prepareCollectionView() { - collectionView.dataSource = self - collectionView.delegate = self - collectionView.register(cellTypes: UserWorkCollectionViewCell.self) - } -} - -extension UserWorksWithSectionTitleCell: UICollectionViewDataSource { - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return works.count - } - - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCell(type: UserWorkCollectionViewCell.self, for: indexPath) - cell.prepare(work: works[indexPath.item]) - return cell - } -} - -extension UserWorksWithSectionTitleCell: UICollectionViewDelegateFlowLayout { - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - return CGSize(width: 88, height: 130) - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { - return UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20) - } -} diff --git a/Annict-for-iOS/Modules/Profile/Views/UserWorksWithSectionTitleCell.xib b/Annict-for-iOS/Modules/Profile/Views/UserWorksWithSectionTitleCell.xib deleted file mode 100644 index 132068fe..00000000 --- a/Annict-for-iOS/Modules/Profile/Views/UserWorksWithSectionTitleCell.xib +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Record/PostRecord/PlaceholderTextView.swift b/Annict-for-iOS/Modules/Record/PostRecord/PlaceholderTextView.swift deleted file mode 100644 index 70341a58..00000000 --- a/Annict-for-iOS/Modules/Record/PostRecord/PlaceholderTextView.swift +++ /dev/null @@ -1,148 +0,0 @@ -// -// PlaceholderTextView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/21. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -open class PlaceholderTextView: UITextView { - - private struct Constants { - static let defaultiOSPlaceholderColor = UIColor(red: 0.0, green: 0.0, blue: 0.0980392, alpha: 0.22) - } - - public let placeholderLabel: UILabel = UILabel() - - private var placeholderLabelConstraints = [NSLayoutConstraint]() - - @IBInspectable open var placeholder: String = "" { - didSet { - placeholderLabel.text = placeholder - } - } - - @IBInspectable open var placeholderColor: UIColor = Constants.defaultiOSPlaceholderColor { - didSet { - placeholderLabel.textColor = placeholderColor - } - } - - override open var font: UIFont! { - didSet { - if placeholderFont == nil { - placeholderLabel.font = font - } - } - } - - open var placeholderFont: UIFont? { - didSet { - let font = (placeholderFont != nil) ? placeholderFont : self.font - placeholderLabel.font = font - } - } - - override open var textAlignment: NSTextAlignment { - didSet { - placeholderLabel.textAlignment = textAlignment - } - } - - override open var text: String! { - didSet { - textDidChange() - } - } - - override open var attributedText: NSAttributedString! { - didSet { - textDidChange() - } - } - - override open var textContainerInset: UIEdgeInsets { - didSet { - updateConstraintsForPlaceholderLabel() - } - } - - override public init(frame: CGRect, textContainer: NSTextContainer?) { - super.init(frame: frame, textContainer: textContainer) - commonInit() - } - - required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - commonInit() - } - - private func commonInit() { - #if swift(>=4.2) - let notificationName = UITextView.textDidChangeNotification - #else - let notificationName = NSNotification.Name.UITextView.textDidChangeNotification - #endif - - NotificationCenter.default.addObserver(self, - selector: #selector(textDidChange), - name: notificationName, - object: nil) - - placeholderLabel.font = font - placeholderLabel.textColor = placeholderColor - placeholderLabel.textAlignment = textAlignment - placeholderLabel.text = placeholder - placeholderLabel.numberOfLines = 0 - placeholderLabel.backgroundColor = UIColor.clear - placeholderLabel.translatesAutoresizingMaskIntoConstraints = false - addSubview(placeholderLabel) - updateConstraintsForPlaceholderLabel() - } - - private func updateConstraintsForPlaceholderLabel() { - var newConstraints = NSLayoutConstraint.constraints(withVisualFormat: "H:|-(\(textContainerInset.left + textContainer.lineFragmentPadding))-[placeholder]", - options: [], - metrics: nil, - views: ["placeholder": placeholderLabel]) - newConstraints += NSLayoutConstraint.constraints(withVisualFormat: "V:|-(\(textContainerInset.top))-[placeholder]", - options: [], - metrics: nil, - views: ["placeholder": placeholderLabel]) - newConstraints.append(NSLayoutConstraint( - item: placeholderLabel, - attribute: .width, - relatedBy: .equal, - toItem: self, - attribute: .width, - multiplier: 1.0, - constant: -(textContainerInset.left + textContainerInset.right + textContainer.lineFragmentPadding * 2.0) - )) - removeConstraints(placeholderLabelConstraints) - addConstraints(newConstraints) - placeholderLabelConstraints = newConstraints - } - - @objc private func textDidChange() { - placeholderLabel.isHidden = !text.isEmpty - } - - open override func layoutSubviews() { - super.layoutSubviews() - placeholderLabel.preferredMaxLayoutWidth = textContainer.size.width - textContainer.lineFragmentPadding * 2.0 - } - - deinit { - #if swift(>=4.2) - let notificationName = UITextView.textDidChangeNotification - #else - let notificationName = NSNotification.Name.UITextView.textDidChangeNotification - #endif - - NotificationCenter.default.removeObserver(self, - name: notificationName, - object: nil) - } -} diff --git a/Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewController.storyboard b/Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewController.storyboard deleted file mode 100644 index 09aafa20..00000000 --- a/Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewController.storyboard +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewController.swift b/Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewController.swift deleted file mode 100644 index 25bd6c22..00000000 --- a/Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewController.swift +++ /dev/null @@ -1,126 +0,0 @@ -// -// PostRecordViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift -import PanModal -import PKHUD - -final class PostRecordViewController: UIViewController, StoryboardView { - typealias Reactor = PostRecordViewReactor - - var disposeBag = DisposeBag() - - @IBOutlet private weak var episodeTitleLabel: UILabel! - @IBOutlet private weak var recordButton: UIButton! - @IBOutlet private weak var textView: PlaceholderTextView! - @IBOutlet private weak var ratingStateView: RatingStatusTagsView! - @IBOutlet private weak var twitterShareButton: RadioButton! - @IBOutlet private weak var twitterShareLabel: UILabel! - - override func viewDidLoad() { - super.viewDidLoad() - - recordButton.circleFilter() - recordButton.configure(icon: .paperAirplane, size: 22) - - textView.rx.setDelegate(self) - .disposed(by: disposeBag) - } - - func bind(reactor: Reactor) { - recordButton.rx.tap - .do(onNext: { _ in - HUD.showToFront(.labeledProgress(title: "送信中", subtitle: nil)) - }) - .map { [unowned self] in - Reactor.Action.record(self.textView.text, - self.ratingStateView.selectedRatingState) - } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - twitterShareButton.rx.isOn - .skip(1) - .distinctUntilChanged() - .map { Reactor.Action.setShouldShareTwitter($0) } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - twitterShareLabel.rx.tapGesture() - .skip(1) - .subscribe(onNext: { [weak self] _ in - self?.twitterShareButton.isOn.toggle() - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.episode.numberAndTitle } - .distinctUntilChanged() - .bind(to: episodeTitleLabel.rx.text) - .disposed(by: disposeBag) - - reactor.state.map { $0.isRecordingSuccess } - .filter { $0 } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] _ in - HUD.hide() - self?.textView.resignFirstResponder() - self?.dismiss(animated: true, completion: nil) - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.shouldShareTwitter } - .take(1) - .bind(to: twitterShareButton.rx.isOn) - .disposed(by: disposeBag) - } - - @objc private func handleGesture(_ sender: UIPanGestureRecognizer) { - panModalTransition(to: .longForm) - } -} - -extension PostRecordViewController { - static func presentPanModal(fromVC: UIViewController, reactor: Reactor) { - let vc = PostRecordViewController.loadStoryboard(reactor: reactor) - fromVC.presentPanModal(vc) - } -} - -extension PostRecordViewController: PanModalPresentable { - var panScrollable: UIScrollView? { - return textView - } - - var longFormHeight: PanModalHeight { - return .maxHeightWithTopInset(0) - } - - var shortFormHeight: PanModalHeight { - return .contentHeight(440) - } - - func willRespond(to panModalGestureRecognizer: UIPanGestureRecognizer) { - textView.resignFirstResponder() - } -} - -extension PostRecordViewController: UITextViewDelegate { - func textViewShouldBeginEditing(_ textView: UITextView) -> Bool { - panModalTransition(to: .longForm) - return true - } -} - -extension Array where Element: Comparable & SignedNumeric { - func near(by e: Element) -> Element { - let index = map { abs($0 - e) }.enumerated().min(by: { $0.element < $1.element })!.offset - return self[index] - } -} diff --git a/Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewReactor.swift b/Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewReactor.swift deleted file mode 100644 index 16b72277..00000000 --- a/Annict-for-iOS/Modules/Record/PostRecord/PostRecordViewReactor.swift +++ /dev/null @@ -1,63 +0,0 @@ -// -// PostRecordViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class PostRecordViewReactor: Reactor { - enum Action { - case record(String?, RatingState?) - case setShouldShareTwitter(Bool) - } - - enum Mutation { - case recordSuccess - case setShouldShareTwitter(Bool) - } - - struct State { - var episode: MinimumEpisode - var isRecordingSuccess = false - var shouldShareTwitter = UserDefaults.standard.shouldShareTwitter - - init(episode: MinimumEpisode) { - self.episode = episode - } - } - - let initialState: State - let provider: ServiceProviderType - private let client = AnnictGraphQL.client - - init(provider: ServiceProviderType, episode: MinimumEpisode) { - self.provider = provider - initialState = State(episode: episode) - } - - func mutate(action: Action) -> Observable { - switch action { - case .record(let comment, let ratingState): - return provider.episodeAPIService.createRecord(episodeID: currentState.episode.id, comment: comment, ratingState: ratingState, shareTwitter: currentState.shouldShareTwitter) - .map { _ in .recordSuccess } - case .setShouldShareTwitter(let shouldShareTwitter): - return .just(.setShouldShareTwitter(shouldShareTwitter)) - } - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .recordSuccess: - state.isRecordingSuccess = true - case .setShouldShareTwitter(let shouldShareTwitter): - state.shouldShareTwitter = shouldShareTwitter - UserDefaults.standard.shouldShareTwitter = shouldShareTwitter - } - return state - } -} diff --git a/Annict-for-iOS/Modules/Record/PostRecord/Views/RatingStatusTagsView.swift b/Annict-for-iOS/Modules/Record/PostRecord/Views/RatingStatusTagsView.swift deleted file mode 100644 index f653fe9f..00000000 --- a/Annict-for-iOS/Modules/Record/PostRecord/Views/RatingStatusTagsView.swift +++ /dev/null @@ -1,61 +0,0 @@ -// -// RatingStatusTagsView.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/24. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class RatingStatusTagsView: UIView, NibOwnerLoadable { - - var selectedRatingState: RatingState? { - return allButtons.filter { $0.isSelected }.first?.ratingState - } - - @IBOutlet weak var badButton: RecordStatusTagButton! - @IBOutlet weak var averageButton: RecordStatusTagButton! - @IBOutlet weak var goodButton: RecordStatusTagButton! - @IBOutlet weak var greatButton: RecordStatusTagButton! - - var allButtons: [RecordStatusTagButton] { - return [badButton, averageButton, goodButton, greatButton] - } - - override init(frame: CGRect) { - super.init(frame: frame) - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - commonInit() - } - - private func commonInit() { - loadNib() - - badButton.configure(ratingState: .bad) - averageButton.configure(ratingState: .average) - goodButton.configure(ratingState: .good) - greatButton.configure(ratingState: .great) - - for button in allButtons { - let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapedButton(_:))) - button.addGestureRecognizer(tapGesture) - } - } - - @objc private func tapedButton(_ sender: UITapGestureRecognizer) { - Taptic.run(.impact(.medium)) - - guard let button = sender.view as? RecordStatusTagButton else { return } - button.isSelected.toggle() - - allButtons.filter { $0 != button } - .forEach { - $0.isSelected = false - } - } -} diff --git a/Annict-for-iOS/Modules/Record/PostRecord/Views/RatingStatusTagsView.xib b/Annict-for-iOS/Modules/Record/PostRecord/Views/RatingStatusTagsView.xib deleted file mode 100644 index 6a9d3e9e..00000000 --- a/Annict-for-iOS/Modules/Record/PostRecord/Views/RatingStatusTagsView.xib +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Record/Transition/PostRecordTransitioningDelegate.swift b/Annict-for-iOS/Modules/Record/Transition/PostRecordTransitioningDelegate.swift deleted file mode 100644 index 4c2ffd95..00000000 --- a/Annict-for-iOS/Modules/Record/Transition/PostRecordTransitioningDelegate.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// PostRecordTransitioningDelegate.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class PostRecordTransitioningDelegate: NSObject, UIViewControllerTransitioningDelegate { - func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController? { - return SemiModalPresentationController(presentedViewController: presented, presenting: presenting) - } -} diff --git a/Annict-for-iOS/Modules/Record/Transition/SemiModalPresentationController.swift b/Annict-for-iOS/Modules/Record/Transition/SemiModalPresentationController.swift deleted file mode 100644 index 2026a84b..00000000 --- a/Annict-for-iOS/Modules/Record/Transition/SemiModalPresentationController.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// SemiModalPresentationController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class SemiModalPresentationController: UIPresentationController { - private lazy var overlay: UIView = { - guard let containerView = containerView else { return UIView() } - let view = UIView(frame: containerView.bounds) - view.backgroundColor = .black - view.alpha = 0 - view.addGestureRecognizer(UITapGestureRecognizer(target: self, - action: #selector(tappedOverlay(_:)))) - return view - }() - - override var frameOfPresentedViewInContainerView: CGRect { - guard let containerView = containerView else { return .zero } - return CGRect(x: 0, y: 400, width: containerView.bounds.width, height: containerView.bounds.height - 400) - } - - override func presentationTransitionWillBegin() { - containerView?.insertSubview(overlay, at: 0) - - presentedViewController.view.layer.cornerRadius = 12 - - presentedViewController.transitionCoordinator?.animate(alongsideTransition: { [weak self] context in - self?.overlay.alpha = 0.35 - }, completion: nil) - } - - override func dismissalTransitionWillBegin() { - presentedViewController.transitionCoordinator?.animate(alongsideTransition: { [weak self] context in - self?.overlay.alpha = 0 - }, completion: nil) - } - - override func dismissalTransitionDidEnd(_ completed: Bool) { - if completed { - overlay.removeFromSuperview() - } - } - - @objc private func tappedOverlay(_ sender: UITapGestureRecognizer) { - presentedViewController.dismiss(animated: true, completion: nil) - } -} diff --git a/Annict-for-iOS/Modules/Record/ViewControllers/RecordViewController.storyboard b/Annict-for-iOS/Modules/Record/ViewControllers/RecordViewController.storyboard deleted file mode 100644 index ebca8506..00000000 --- a/Annict-for-iOS/Modules/Record/ViewControllers/RecordViewController.storyboard +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Record/ViewControllers/RecordViewController.swift b/Annict-for-iOS/Modules/Record/ViewControllers/RecordViewController.swift deleted file mode 100644 index ecfa387f..00000000 --- a/Annict-for-iOS/Modules/Record/ViewControllers/RecordViewController.swift +++ /dev/null @@ -1,116 +0,0 @@ -// -// RecordViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift -import Apollo - -final class RecordViewController: UIViewController, StoryboardView { - typealias Reactor = RecordViewReactor - - @IBOutlet private weak var tableView: UITableView! { - didSet { - tableView.dataSource = self - tableView.delegate = self - tableView.tableFooterView = UIView() - tableView.contentInset = UIEdgeInsets(top: 4, left: 0, bottom: 4, right: 0) - tableView.register(RecordEpisodeTableViewCell.self, - HomeTitleTableViewCell.self) - tableView.refreshControl = refreshControl - } - } - - var disposeBag = DisposeBag() - - private let refreshControl = UIRefreshControl() - - override func viewDidLoad() { - super.viewDidLoad() - - } - - func bind(reactor: Reactor) { - rx.viewWillAppear - .take(1) - .map { Reactor.Action.fetch } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - tableView.rx.reachedBottom() - .map { Reactor.Action.loadMore } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - refreshControl.rx - .controlEvent(.valueChanged) - .map { Reactor.Action.fetch } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - reactor.state.map { $0.cellReactors } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] works in - self?.tableView.reloadData() - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.isLoading } - .distinctUntilChanged() - .filter { !$0 } - .subscribe(onNext: { [weak self] _ in - self?.refreshControl.endRefreshing() - }) - .disposed(by: disposeBag) - } -} - -extension RecordViewController: UITableViewDataSource { - func numberOfSections(in tableView: UITableView) -> Int { - return 2 - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - if section == 0 { - return 1 - } - return reactor?.currentState.cellReactors.count ?? 0 - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - if indexPath.section == 0 { - let cell = tableView.dequeueReusableCell(classType: HomeTitleTableViewCell.self, for: indexPath) - cell.configure(title: "Record") - return cell - } - - let cell = tableView.dequeueReusableCell(classType: RecordEpisodeTableViewCell.self, for: indexPath) - cell.reactor = reactor!.currentState.cellReactors[indexPath.row] - cell.didTapImage = { [weak self] in - guard let self = self else { return } - WorkViewController.presentPanModal(fromVC: self, reactor: self.reactor!.reactorForWork(index: indexPath.item)) - } - return cell - } -} - -extension RecordViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: true) - guard let r = reactor!.reactorForPostRecord(index: indexPath.row) else { return } - PostRecordViewController.presentPanModal(fromVC: self, reactor: r) - } - - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - if indexPath.section == 0 { - return 100 - } - - return 100 - } -} diff --git a/Annict-for-iOS/Modules/Record/ViewControllers/RecordViewReactor.swift b/Annict-for-iOS/Modules/Record/ViewControllers/RecordViewReactor.swift deleted file mode 100644 index cc5d17ac..00000000 --- a/Annict-for-iOS/Modules/Record/ViewControllers/RecordViewReactor.swift +++ /dev/null @@ -1,107 +0,0 @@ -// -// RecordViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class RecordViewReactor: Reactor { - typealias Work = GetViewerWatchingEpisodesQuery.Data.Viewer.Work.Node - typealias PageInfo = GetViewerWatchingEpisodesQuery.Data.Viewer.Work.PageInfo - - enum Action { - case fetch - case loadMore - } - - enum Mutation { - case setWorks([Work]) - case appendWorks([Work]) - case setPageInfo(PageInfo) - case setLoading(Bool) - } - - struct State { - var cellReactors: [RecordEpisodeTableViewCellReactor] = [] - var pageInfo: PageInfo? - var isLoading: Bool = false - } - - let initialState: State - let provider: ServiceProviderType - - private var client = AnnictGraphQL.client - - init(provider: ServiceProviderType) { - self.provider = provider - initialState = State() - } - - func mutate(action: Action) -> Observable { - switch action { - case .fetch: - let stream = fetch().share(replay: 1) - let setWorks = stream.map { Mutation.setWorks($0.values) } - let setPageInfo = stream.map { Mutation.setPageInfo($0.pageInfo) } - - return .concat(.just(.setLoading(true)), - setWorks, - setPageInfo, - .just(.setLoading(false))) - case .loadMore: - guard let pageInfo = currentState.pageInfo else { return .empty() } - guard pageInfo.hasNextPage else { return .empty() } - guard !currentState.isLoading else { return .empty() } - - let stream = fetch(after: pageInfo.endCursor).share(replay: 1) - let setWorks = stream.map { Mutation.appendWorks($0.values) } - let setPageInfo = stream.map { Mutation.setPageInfo($0.pageInfo) } - - return .concat(.just(.setLoading(true)), - setWorks, - setPageInfo, - .just(.setLoading(false))) - } - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setWorks(let works): - state.cellReactors = works.map { RecordEpisodeTableViewCellReactor(provider: provider, work: $0) } - case .appendWorks(let works): - state.cellReactors += works.map { RecordEpisodeTableViewCellReactor(provider: provider, work: $0) } - case .setPageInfo(let pageInfo): - state.pageInfo = pageInfo - case .setLoading(let isLoading): - state.isLoading = isLoading - } - return state - } - - func reactorForPostRecord(index: Int) -> PostRecordViewReactor? { - guard let episode = currentState.cellReactors[index].currentState.work.didNotTrackEpisode else { return nil } - return .init(provider: provider, episode: episode) - } - - func reactorForWork(index: Int) -> WorkViewReactor { - let work = currentState.cellReactors[index].currentState.work.fragments.minimumWork - return .init(provider: provider, work: work) - } - - private func fetch(after: String? = nil) -> Observable { - let query = GetViewerWatchingEpisodesQuery(first: 6, after: after) - return client.rx.fetchMaybe(query: query, cachePolicy: .fetchIgnoringCacheData) - .map { $0.viewer?.works } - .asObservable() - .filterNil() - } -} - -extension GetViewerWatchingEpisodesQuery.Data.Viewer.Work: Connection {} -extension GetViewerWatchingEpisodesQuery.Data.Viewer.Work.Node.Episode: Connection {} - diff --git a/Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCell.swift b/Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCell.swift deleted file mode 100644 index 0923bf71..00000000 --- a/Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCell.swift +++ /dev/null @@ -1,74 +0,0 @@ -// -// RecordEpisodeTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/28. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import RxSwift -import ReactorKit -import RxGesture - -final class RecordEpisodeTableViewCell: UITableViewCell, StoryboardView { - typealias Reactor = RecordEpisodeTableViewCellReactor - - var didTapImage: (() -> Void)? - var disposeBag = DisposeBag() - - @IBOutlet private weak var workImageView: UIImageView! - @IBOutlet private weak var workTitleLabel: UILabel! - @IBOutlet private weak var episodeTitleLabel: UILabel! - - override func awakeFromNib() { - super.awakeFromNib() - - workImageView.isUserInteractionEnabled = true - workImageView.apply(.workImage) - } - - override func prepareForReuse() { - super.prepareForReuse() - - disposeBag = DisposeBag() - episodeTitleLabel.text = "" - } - - func bind(reactor: Reactor) { - workImageView.rx.tapGesture() - .when(.began, .ended, .cancelled) - .subscribe(onNext: { [weak self] tapGesture in - self?.didTapImage?() - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.work } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] work in - self?.configure(work: work) - }) - .disposed(by: disposeBag) - } - - func configure(work: Reactor.Work) { - let minimumWork = work.fragments.minimumWork - workImageView.setImage(workID: minimumWork.annictId) - workTitleLabel.text = minimumWork.title - if let episode = work.didNotTrackEpisode { - episodeTitleLabel.text = episode.numberAndTitle - } - } -} - -extension GetViewerWatchingEpisodesQuery.Data.Viewer.Work.Node { - var didNotTrackEpisode: MinimumEpisode? { - guard let episodes = episodes else { return nil } - let es = episodes.values - .map { $0.fragments.minimumEpisode } - guard let maxDidTrack = es.filter({ $0.viewerDidTrack }).max(by: { $0.annictId < $1.annictId }) else { - return es.first - } - return es.filter { $0.annictId > maxDidTrack.annictId }.min(by: { $0.annictId < $1.annictId }) - } -} diff --git a/Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCell.xib b/Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCell.xib deleted file mode 100644 index d2dcf474..00000000 --- a/Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCell.xib +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCellReactor.swift b/Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCellReactor.swift deleted file mode 100644 index 9296a388..00000000 --- a/Annict-for-iOS/Modules/Record/Views/RecordEpisodeTableViewCellReactor.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// RecordEpisodeTableViewCellReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/21. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class RecordEpisodeTableViewCellReactor: Reactor { - typealias Work = GetViewerWatchingEpisodesQuery.Data.Viewer.Work.Node - - enum Action { - - } - - enum Mutation { - case incrementEpisode(String) - } - - struct State { - var work: Work - } - - let initialState: State - let provider: ServiceProviderType - - init(provider: ServiceProviderType, work: Work) { - self.provider = provider - initialState = State(work: work) - } - - func transform(mutation: Observable) -> Observable { - let willCreateRecord = provider.episodeAPIService.event.willCreateRecordEpisodeID - .map { Mutation.incrementEpisode($0) } - return .merge(mutation, willCreateRecord) - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .incrementEpisode(let episodeID): - guard let index = state.work.episodes?.values.firstIndex(where: { $0.fragments.minimumEpisode.id == episodeID }) else { return state } - state.work.episodes?.nodes?[index]?.fragments.minimumEpisode.viewerDidTrack = true - state.work.episodes?.nodes?[index]?.fragments.minimumEpisode.viewerRecordsCount += 1 - } - return state - } -} - -extension RecordEpisodeTableViewCellReactor: Equatable { - static func == (lhs: RecordEpisodeTableViewCellReactor, rhs: RecordEpisodeTableViewCellReactor) -> Bool { - return lhs.currentState.work.resultMap == rhs.currentState.work.resultMap - } -} diff --git a/Annict-for-iOS/Modules/Root/RootViewController.storyboard b/Annict-for-iOS/Modules/Root/RootViewController.storyboard deleted file mode 100644 index cc3ebae1..00000000 --- a/Annict-for-iOS/Modules/Root/RootViewController.storyboard +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Root/RootViewController.swift b/Annict-for-iOS/Modules/Root/RootViewController.swift deleted file mode 100644 index 5de3d09f..00000000 --- a/Annict-for-iOS/Modules/Root/RootViewController.swift +++ /dev/null @@ -1,73 +0,0 @@ -// -// RootViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift - -final class RootViewController: StatusBarAnimatableViewController, StoryboardView { - typealias Reactor = RootViewReactor - - var disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - - reactor = Reactor(provider: ServiceProvider()) - } - - func bind(reactor: RootViewReactor) { - reactor.state.map { $0.loginState } - .filter { $0 == .logout } - .map { _ in reactor.reactorForLogin() } - .subscribe(onNext: showLoginVC) - .disposed(by: disposeBag) - - reactor.state.map { $0.loginState } - .filter { $0 == .login } - .map { _ in reactor.reactorForRoot() } - .subscribe(onNext: showHomeVC) - .disposed(by: disposeBag) - - } - - func setCurrentViewController(_ vc: UIViewController) { - currentViewController = vc - } - - private(set) var currentViewController: UIViewController? { - didSet { - guard let vc = currentViewController else { return } - addChild(vc) - vc.view.frame = view.bounds - view.addSubview(vc.view) - vc.didMove(toParent: self) - - guard let oldVC = oldValue else { return } - view.sendSubviewToBack(vc.view) - UIView.transition( - from: oldVC.view, - to: vc.view, - duration: 0.4, - options: .transitionCrossDissolve) { [weak oldVC] _ in - oldVC?.willMove(toParent: nil) - oldVC?.view.removeAll() - oldVC?.removeFromParent() - oldVC = nil - } - } - } - - private func showLoginVC(reactor: LoginViewReactor) { - currentViewController = LoginViewController.loadStoryboard(reactor: reactor) - } - - private func showHomeVC(reactor: RootTabBarReactor) { - currentViewController = RootTabBarController.loadStoryboard(reactor: reactor) - } -} diff --git a/Annict-for-iOS/Modules/Root/RootViewReactor.swift b/Annict-for-iOS/Modules/Root/RootViewReactor.swift deleted file mode 100644 index 030ffa25..00000000 --- a/Annict-for-iOS/Modules/Root/RootViewReactor.swift +++ /dev/null @@ -1,67 +0,0 @@ -// -// RootViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/23. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class RootViewReactor: Reactor { - enum Action { - - } - - enum Mutation { - case setLoginState(LoginState) - } - - struct State { - var loginState: LoginState - } - - enum LoginState { - case logout - case login - } - - let initialState: State - let provider: ServiceProviderType - - init(provider: ServiceProviderType) { - let token = provider.userDefaultsService.fetch(forKey: .accessToken, type: String.self) - if let token = token, !token.isEmpty { - self.initialState = State(loginState: .login) - } else { - self.initialState = State(loginState: .logout) - } - self.provider = provider - } - - func transform(mutation: Observable) -> Observable { - let loginEvent = provider.userDefaultsService.event.accessToken - .filterNil() - .map { _ in Mutation.setLoginState(.login) } - - return Observable.of(mutation, loginEvent).merge() - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setLoginState(let loginState): - state.loginState = loginState - } - return state - } - - func reactorForLogin() -> LoginViewReactor { - return LoginViewReactor(provider: provider) - } - - func reactorForRoot() -> RootTabBarReactor { - return RootTabBarReactor(provider: provider) - } -} diff --git a/Annict-for-iOS/Modules/Search/Season.swift b/Annict-for-iOS/Modules/Search/Season.swift deleted file mode 100644 index f3eb5816..00000000 --- a/Annict-for-iOS/Modules/Search/Season.swift +++ /dev/null @@ -1,127 +0,0 @@ -// -// Season.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/21. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import Foundation - -struct Season: Equatable { - enum Name: String, Equatable { - case spring = "spring" - case summer = "summer" - case autumn = "autumn" - case winter = "winter" - - var localizedText: String { - switch self { - case .spring: - return "春" - case .summer: - return "夏" - case .autumn: - return "秋" - case .winter: - return "冬" - } - } - } - let name: Name - let year: Int - - var value: String { - return "\(year)-\(name.rawValue)" - } - - func toString() -> String { - if self == .current { - return "今期" - } - - if self == Season.current.next() { - return "来期" - } - - if self == Season.current.previous() { - return "前期" - } - - return "\(year) \(name.localizedText)" - } - - static var currentName: Name { - switch Date().month { - case 4, 5, 6: - return .spring - case 7, 8, 9: - return .summer - case 10, 11, 12: - return .autumn - case 1, 2, 3: - return .winter - default: - return .spring - } - } - - static var current: Season { - return Season(name: currentName, year: Date().year) - } - - func next() -> Season { - var name = self.name - var year = self.year - - switch name { - case .spring: - name = .summer - case .summer: - name = .autumn - case .autumn: - name = .winter - year += 1 - case .winter: - name = .spring - } - return Season(name: name, year: year) - } - - func previous(_ num: Int = 1) -> Season { - var name = self.name - var year = self.year - - switch name { - case .spring: - name = .winter - case .summer: - name = .spring - case .autumn: - name = .summer - case .winter: - name = .autumn - year -= 1 - } - - if num == 1 { - return Season(name: name, year: year) - } else { - return Season(name: name, year: year).previous(num - 1) - } - } -} - -extension Date { - var year: Int { - let dateFormatter = DateFormatter() - dateFormatter.dateFormat = "yyyy" - return Int(dateFormatter.string(from: self))! - } - - var month: Int { - let dateFormatter = DateFormatter() - dateFormatter.dateFormat = "MM" - return Int(dateFormatter.string(from: self))! - } -} diff --git a/Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewController.storyboard b/Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewController.storyboard deleted file mode 100644 index 24f60998..00000000 --- a/Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewController.storyboard +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewController.swift b/Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewController.swift deleted file mode 100644 index 34e32b98..00000000 --- a/Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewController.swift +++ /dev/null @@ -1,82 +0,0 @@ -// -// SearchResultViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/30. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift - -final class SearchResultViewController: UIViewController, StoryboardView { - typealias Reactor = SearchResultViewReactor - - var disposeBag = DisposeBag() - - @IBOutlet private weak var tableView: UITableView! - - override func viewDidLoad() { - super.viewDidLoad() - - prepareTableView() - } - - func bind(reactor: Reactor) { - reactor.state.map { $0.works } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] works in - print(works) - self?.tableView.reloadData() - }) - .disposed(by: disposeBag) - } - - private func prepareTableView() { - tableView.dataSource = self - tableView.delegate = self - tableView.tableFooterView = UIView() - tableView.keyboardDismissMode = .onDrag - tableView.register(SearchResultWorkCell.self) - } -} - -extension SearchResultViewController: UITableViewDataSource { - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return reactor?.currentState.works.count ?? 0 - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(classType: SearchResultWorkCell.self, for: indexPath) - guard let work = reactor?.currentState.works[indexPath.row] else { return .init() } - cell.configure(work: work) - return cell - } -} - -extension SearchResultViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: true) - guard let reactor = reactor?.reactorForWork(index: indexPath.item) else { return } - WorkViewController.presentPanModal(fromVC: self, reactor: reactor) - } -} - -extension SearchResultViewController: UISearchResultsUpdating { - func updateSearchResults(for searchController: UISearchController) { - view.isHidden = false - guard let text = searchController.searchBar.text else { return } - if text.isEmpty { - reactor?.action.onNext(.clear) - return - } - reactor?.action.onNext(.search(text)) - } -} - -extension SearchResultViewController: UISearchBarDelegate { - func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { - reactor?.action.onNext(.clear) - } -} diff --git a/Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewReactor.swift b/Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewReactor.swift deleted file mode 100644 index 0436e2e9..00000000 --- a/Annict-for-iOS/Modules/Search/ViewControllers/SearchResultViewReactor.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// SearchResultViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/30. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class SearchResultViewReactor: Reactor { - enum Action { - case search(String) - case clear - } - - enum Mutation { - case setWorks([MinimumWork]) - case updateWork(MinimumWork) - } - - struct State { - var works: [MinimumWork] = [] - } - - let initialState: State - private let provider: ServiceProviderType - private let client = AnnictGraphQL.client - - init(provider: ServiceProviderType) { - initialState = State() - self.provider = provider - } - - func mutate(action: Action) -> Observable { - switch action { - case .search(let keyword): - return search(keyword: keyword) - .map { $0.searchWorks?.values } - .filterNil() - .map { $0.map { $0.fragments.minimumWork } } - .map { .setWorks($0) } - case .clear: - return .just(.setWorks([])) - } - } - - func transform(mutation: Observable) -> Observable { - let updateStatus = provider.workAPIService.event.updateWorkState - .map { Mutation.updateWork($0) } - - return .merge(mutation, updateStatus) - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setWorks(let works): - state.works = works - case .updateWork(let work): - guard let index = state.works.firstIndex(where: { $0.id == work.id }) else { return state } - state.works[index].viewerStatusState = work.viewerStatusState - } - return state - } - - func reactorForWork(index: Int) -> WorkViewReactor { - return .init(provider: provider, work: currentState.works[index]) - } - - private func search(keyword: String) -> Observable { - let query = SearchWorksByTitleQuery(title: keyword) - return client.rx.fetch(query: query, cachePolicy: .returnCacheDataAndFetch) - } -} - -extension SearchWorksByTitleQuery.Data.SearchWork: Connection {} - diff --git a/Annict-for-iOS/Modules/Search/ViewControllers/SearchViewController.storyboard b/Annict-for-iOS/Modules/Search/ViewControllers/SearchViewController.storyboard deleted file mode 100644 index 4d7a57b4..00000000 --- a/Annict-for-iOS/Modules/Search/ViewControllers/SearchViewController.storyboard +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Search/ViewControllers/SearchViewController.swift b/Annict-for-iOS/Modules/Search/ViewControllers/SearchViewController.swift deleted file mode 100644 index 40be299f..00000000 --- a/Annict-for-iOS/Modules/Search/ViewControllers/SearchViewController.swift +++ /dev/null @@ -1,151 +0,0 @@ -// -// SearchViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/30. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import RxSwift -import ReactorKit - -final class SearchViewController: UIViewController, StoryboardView { - typealias Reactor = SearchViewReactor - - @IBOutlet private weak var collectionView: UICollectionView! - @IBOutlet private weak var seasonLabel: UILabel! - private var calendarButton: UIButton = { - let button = UIButton(icon: .calendar) - button.layer.cornerRadius = 30 - button.backgroundColor = UIColor(hex: 0xFA5871) - button.tintColor = .white - button.imageEdgeInsets = UIEdgeInsets(top: 4, left: 4, bottom: 4, right: 4) - button.applyFABShadow() - return button - }() - - private let column: Int = 3 - private let itemSpacing: CGFloat = 18 - - private lazy var resultController: SearchResultViewController = { - let vc = SearchResultViewController.loadStoryboard() - vc.reactor = reactor?.reactorForResult() - return vc - }() - - private lazy var searchController: UISearchController = { - let sc = UISearchController(searchResultsController: resultController) - sc.searchBar.searchBarStyle = .minimal - sc.searchResultsUpdater = resultController - sc.hidesNavigationBarDuringPresentation = false - sc.dimsBackgroundDuringPresentation = false - sc.searchBar.delegate = resultController - definesPresentationContext = true - return sc - }() - - var disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - - prepareNavigationBar() - prepareCalendarButton() - - collectionView.register(cellTypes: SeasonWorkCollectionViewCell.self) - } - - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - - calendarButton.updateShodowPath() - } - - func bind(reactor: Reactor) { - rx.viewWillAppear - .take(1) - .map { Reactor.Action.fetchWorks } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - collectionView.rx.setDataSource(self) - .disposed(by: disposeBag) - - collectionView.rx.setDelegate(self) - .disposed(by: disposeBag) - - collectionView.rx.triggeredPagination() - .map { Reactor.Action.fetchMore } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - calendarButton.rx.tap - .subscribe(onNext: { [unowned self] _ in - TermSettingViewController.presentPanModal(fromVC: self, reactor: reactor.reactorForTerm) - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.works } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] _ in - self?.collectionView.reloadData() - }) - .disposed(by: disposeBag) - - reactor.reactorForTerm.state.map { $0.selectedSeason } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] season in - self?.seasonLabel.text = season.toString() - }) - .disposed(by: disposeBag) - } - - private func prepareNavigationBar() { - navigationItem.titleView = searchController.searchBar - navigationItem.titleView?.frame = searchController.searchBar.frame - navigationController?.navigationBar.transparent() - } - - private func prepareCalendarButton() { - view.addSubview(calendarButton) - calendarButton.snp.makeConstraints { - $0.width.height.equalTo(60) - $0.trailing.equalTo(view.snp.trailing).offset(-20) - $0.bottom.equalTo(view.snp.bottomMargin).offset(-20) - } - } -} - -extension SearchViewController: UICollectionViewDataSource { - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - guard let reactor = reactor else { return 0 } - return reactor.currentState.works.count - } - - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCell(type: SeasonWorkCollectionViewCell.self, for: indexPath) - guard let reactor = reactor else { return cell } - let work = reactor.currentState.works[indexPath.item] - cell.configure(work: work) - cell.setColumnCount(column) - return cell - } -} - -extension SearchViewController: UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - let column = CGFloat(self.column) - let width = (collectionView.bounds.width - itemSpacing * (column + 1)) / column - return CGSize(width: width, height: width * 1.4 + 40) - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { - return UIEdgeInsets(top: 0, left: itemSpacing, bottom: 0, right: itemSpacing) - } - - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - guard let reactor = reactor?.reactorForWork(index: indexPath.item) else { return } - WorkViewController.presentPanModal(fromVC: self, reactor: reactor) - } -} diff --git a/Annict-for-iOS/Modules/Search/ViewControllers/SearchViewReactor.swift b/Annict-for-iOS/Modules/Search/ViewControllers/SearchViewReactor.swift deleted file mode 100644 index dfdf8d1e..00000000 --- a/Annict-for-iOS/Modules/Search/ViewControllers/SearchViewReactor.swift +++ /dev/null @@ -1,122 +0,0 @@ -// -// SearchViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/30. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class SearchViewReactor: Reactor { - typealias PageInfo = SearchWorksQuery.Data.SearchWork.PageInfo - - enum Action { - case fetchWorks - case fetchMore - } - - enum Mutation { - case setWorks([MinimumWork]) - case appendWorks([MinimumWork]) - case setPageInfo(PageInfo) - case updateWork(MinimumWork) - case clearWorks - } - - struct State { - var works: [MinimumWork] = [] - var pageInfo: PageInfo? - } - - let initialState: State - private let provider: ServiceProviderType - private let client = AnnictGraphQL.client - let reactorForTerm = TermSettingViewReactor() - - init(provider: ServiceProviderType) { - self.provider = provider - initialState = State() - } - - func transform(action: Observable) -> Observable { - let termStream = reactorForTerm.state.map { $0.selectedSeason } - .distinctUntilChanged() - .skip(1) - .do(onNext: { season in - print("fetch: ", season.year, season.name.localizedText) - }) - .map { _ in Action.fetchWorks } - return .merge(action, termStream) - } - - func mutate(action: Action) -> Observable { - switch action { - case .fetchWorks: - let stream = fetch().share(replay: 1) - let setWorks = stream.map { Mutation.setWorks($0.minimumWorks) } - let setPageInfo = stream.map { Mutation.setPageInfo($0.pageInfo) } - return .merge(setWorks, setPageInfo) - case .fetchMore: - guard let pageInfo = currentState.pageInfo else { return .empty() } - guard pageInfo.hasNextPage else { return .empty() } - - let stream = fetch(after: currentState.pageInfo?.endCursor).share(replay: 1) - let setWorks = stream.map { Mutation.appendWorks($0.minimumWorks) } - let setPageInfo = stream.map { Mutation.setPageInfo($0.pageInfo) } - return .merge(setWorks, setPageInfo) - } - } - - func transform(mutation: Observable) -> Observable { - let updateStatus = provider.workAPIService.event.updateWorkState - .map { Mutation.updateWork($0) } - - let termStream = reactorForTerm.state.map { $0.selectedSeason } - .distinctUntilChanged() - .skip(1) - .map { _ in Mutation.clearWorks } - - return .merge(mutation, updateStatus, termStream) - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setWorks(let works): - state.works = works - case .setPageInfo(let pageInfo): - state.pageInfo = pageInfo - case .appendWorks(let works): - state.works += works - case .updateWork(let work): - guard let index = state.works.firstIndex(where: { $0.id == work.id }) else { return state } - state.works[index].viewerStatusState = work.viewerStatusState - case .clearWorks: - state.works = [] - } - return state - } - - func reactorForResult() -> SearchResultViewReactor { - return .init(provider: provider) - } - - func reactorForWork(index: Int) -> WorkViewReactor { - return .init(provider: provider, work: currentState.works[index]) - } - - private func fetch(after: String? = nil) -> Observable { - let request = SearchWorksQuery(season: reactorForTerm.currentState.selectedSeason.value, after: after) - return client.rx.fetchMaybe(query: request, cachePolicy: .returnCacheDataAndFetch).asObservable() - .map { $0.searchWorks } - .filterNil() - } -} - -extension SearchWorksQuery.Data.SearchWork: Connection { - var minimumWorks: [MinimumWork] { - return values.map { $0.fragments.minimumWork } - } -} diff --git a/Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewController.storyboard b/Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewController.storyboard deleted file mode 100644 index 2e501af0..00000000 --- a/Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewController.storyboard +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewController.swift b/Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewController.swift deleted file mode 100644 index 0d8c3c91..00000000 --- a/Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewController.swift +++ /dev/null @@ -1,120 +0,0 @@ -// -// TermSettingViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/26. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift -import PanModal - -final class TermSettingViewController: UIViewController, StoryboardView { - typealias Reactor = TermSettingViewReactor - - @IBOutlet private weak var pickerView: UIPickerView! - @IBOutlet private weak var doneButton: UIButton! - @IBOutlet private weak var thisTermButton: UIButton! - @IBOutlet private weak var nextTermButton: UIButton! - var disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - - pickerView.dataSource = self - pickerView.delegate = self - - thisTermButton.backgroundColor = UIColor(hex: 0xEEEFF0) - nextTermButton.backgroundColor = UIColor(hex: 0xEEEFF0) - thisTermButton.setTitleColor(UIColor(hex: 0x565859), for: .normal) - nextTermButton.setTitleColor(UIColor(hex: 0x565859), for: .normal) - thisTermButton.roundedRectangleFilter() - nextTermButton.roundedRectangleFilter() - doneButton.setTitleColor(.black, for: .normal) - } - - func bind(reactor: Reactor) { - doneButton.rx.tap - .subscribe(onNext: { [unowned self] _ in - reactor.action.onNext(.selected(self.pickerView.selectedRow(inComponent: 0), - self.pickerView.selectedRow(inComponent: 1))) - self.dismiss(animated: true, completion: nil) - }) - .disposed(by: disposeBag) - - Observable.zip(rx.viewWillAppear, - reactor.state.map { $0.selectedSeason }) - .take(1) - .map { $0.1 } - .subscribe(onNext: { [weak self] season in - self?.selectSeason(season) - }) - .disposed(by: disposeBag) - - thisTermButton.rx.tap - .map { Reactor.Action.selectedSeason(Season.current) } - .subscribe(onNext: { [weak self] action in - self?.reactor?.action.onNext(action) - self?.dismiss(animated: true, completion: nil) - }) - .disposed(by: disposeBag) - - nextTermButton.rx.tap - .map { Reactor.Action.selectedSeason(Season.current.next()) } - .subscribe(onNext: { [weak self] action in - self?.reactor?.action.onNext(action) - self?.dismiss(animated: true, completion: nil) - }) - .disposed(by: disposeBag) - } - - private func selectSeason(_ season: Season) { - guard let index1 = reactor!.currentState.years.firstIndex(of: season.year) else { return } - guard let index2 = reactor!.currentState.seasons.firstIndex(of: season.name) else { return } - pickerView.selectRow(index1, inComponent: 0, animated: true) - pickerView.selectRow(index2, inComponent: 1, animated: true) - } -} - -extension TermSettingViewController: UIPickerViewDataSource { - func numberOfComponents(in pickerView: UIPickerView) -> Int { - return 2 - } - - func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { - if component == 0 { - return reactor!.currentState.years.count - } - return reactor!.currentState.seasons.count - } -} - -extension TermSettingViewController: UIPickerViewDelegate { - func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { - if component == 0 { - return reactor!.currentState.years[row].description - } - return reactor!.currentState.seasons[row].localizedText - } -} - -extension TermSettingViewController: PanModalPresentable { - var panScrollable: UIScrollView? { - return nil - } - - var shortFormHeight: PanModalHeight { - return .contentHeight(300) - } - - var longFormHeight: PanModalHeight { - return shortFormHeight - } - - static func presentPanModal(fromVC: UIViewController, reactor: Reactor) { - let vc = TermSettingViewController.loadStoryboard(reactor: reactor) - fromVC.presentPanModal(vc) - } -} diff --git a/Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewReactor.swift b/Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewReactor.swift deleted file mode 100644 index 2ab55b3a..00000000 --- a/Annict-for-iOS/Modules/Search/ViewControllers/TermSettingViewReactor.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// TermSettingViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/26. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class TermSettingViewReactor: Reactor { - enum Action { - case selected(Int, Int) - case selectedSeason(Season) - } - - enum Mutation { - case setSelectedSeason(Int, Season.Name) - } - - struct State { - let years: [Int] = Array(1980...2020).reversed() - let seasons: [Season.Name] = [.spring, .summer, .autumn, .winter] - - var selectedSeason = Season.current - } - - let initialState: State - - init() { - initialState = State() - } - - func mutate(action: Action) -> Observable { - switch action { - case .selected(let yearIndex, let seasonIndex): - return .just(.setSelectedSeason(currentState.years[yearIndex], - currentState.seasons[seasonIndex])) - case .selectedSeason(let season): - return .just(.setSelectedSeason(season.year, season.name)) - } - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setSelectedSeason(let year, let name): - state.selectedSeason = Season(name: name, year: year) - } - return state - } -} diff --git a/Annict-for-iOS/Modules/Search/Views/SearchResultWorkCell.swift b/Annict-for-iOS/Modules/Search/Views/SearchResultWorkCell.swift deleted file mode 100644 index 798888ae..00000000 --- a/Annict-for-iOS/Modules/Search/Views/SearchResultWorkCell.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// SearchResultWorkCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/11/30. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class SearchResultWorkCell: UITableViewCell { - - @IBOutlet private weak var workImageView: UIImageView! - @IBOutlet private weak var titleLabel: UILabel! - - override func prepareForReuse() { - super.prepareForReuse() - - titleLabel.text = "" - } - - override func awakeFromNib() { - super.awakeFromNib() - - workImageView.apply(.workImage) - } - - func configure(work: MinimumWork) { - workImageView.setImage(workID: work.annictId) - titleLabel.text = work.title - } -} diff --git a/Annict-for-iOS/Modules/Search/Views/SearchResultWorkCell.xib b/Annict-for-iOS/Modules/Search/Views/SearchResultWorkCell.xib deleted file mode 100644 index 9ca1ec4d..00000000 --- a/Annict-for-iOS/Modules/Search/Views/SearchResultWorkCell.xib +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Search/Views/SeasonWorksCollectionViewCell/SeasonWorkCollectionViewCell.swift b/Annict-for-iOS/Modules/Search/Views/SeasonWorksCollectionViewCell/SeasonWorkCollectionViewCell.swift deleted file mode 100644 index e80f13f5..00000000 --- a/Annict-for-iOS/Modules/Search/Views/SeasonWorksCollectionViewCell/SeasonWorkCollectionViewCell.swift +++ /dev/null @@ -1,99 +0,0 @@ -// -// SeasonWorkCollectionViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/01/18. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class SeasonWorkCollectionViewCell: UICollectionViewCell { - - @IBOutlet private weak var workImageView: UIImageView! - @IBOutlet private weak var titleLabel: UILabel! - @IBOutlet private weak var statusLabel: BlurBackgroundLabel! - - override func awakeFromNib() { - super.awakeFromNib() - - workImageView.apply(.workImage) - statusLabel.layer.cornerRadius = 4 - statusLabel.layer.masksToBounds = true - } - - func configure(work: MinimumWork) { - workImageView.setImage(workID: work.annictId) - titleLabel.text = work.title - - if let state = work.viewerStatusState { - switch state { - case .wannaWatch, .watching, .watched, .onHold, .stopWatching: - statusLabel.isHidden = false - statusLabel.text = state.localizedText - default: - statusLabel.isHidden = true - } - } - - } - - func setColumnCount(_ count: Int) { - if count == 2 { - titleLabel.font = UIFont.boldSystemFont(ofSize: 12) - } - - if count == 3 { - titleLabel.font = UIFont.systemFont(ofSize: 11) - } - } -} - -final class BlurBackgroundLabel: UIView { - private let blurView = UIVisualEffectView(effect: UIBlurEffect(style: .extraLight)) - private let label = UILabel() - - var text: String? { - get { - return label.text - } - set { - label.text = newValue - layoutIfNeeded() - } - } - - override init(frame: CGRect) { - super.init(frame: frame) - commonInit() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - commonInit() - } - - private func commonInit() { - blurView.alpha = 0.8 - addSubview(blurView) - blurView.snp.makeConstraints { - $0.edges.equalTo(snp.edges) - } - - addSubview(label) - label.snp.makeConstraints { - $0.top.equalTo(snp.top).inset(4) - $0.bottom.equalTo(snp.bottom).inset(4) - $0.left.equalTo(snp.left).inset(8) - $0.right.equalTo(snp.right).inset(8) - } - - backgroundColor = .clear - - layer.cornerRadius = 4 - layer.masksToBounds = true - - label.textColor = .white - label.font = .boldSystemFont(ofSize: 12) - } -} diff --git a/Annict-for-iOS/Modules/Search/Views/SeasonWorksCollectionViewCell/SeasonWorkCollectionViewCell.xib b/Annict-for-iOS/Modules/Search/Views/SeasonWorksCollectionViewCell/SeasonWorkCollectionViewCell.xib deleted file mode 100644 index 7ac89d5f..00000000 --- a/Annict-for-iOS/Modules/Search/Views/SeasonWorksCollectionViewCell/SeasonWorkCollectionViewCell.xib +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/TabBar/RootTabBarController.storyboard b/Annict-for-iOS/Modules/TabBar/RootTabBarController.storyboard deleted file mode 100644 index 465ca02d..00000000 --- a/Annict-for-iOS/Modules/TabBar/RootTabBarController.storyboard +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/TabBar/RootTabBarController.swift b/Annict-for-iOS/Modules/TabBar/RootTabBarController.swift deleted file mode 100644 index 7597df8f..00000000 --- a/Annict-for-iOS/Modules/TabBar/RootTabBarController.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// RootTabbarController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/10/29. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift - -final class RootTabBarController: UITabBarController, StoryboardView { - typealias Reactor = RootTabBarReactor - - var disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - - tabBar.tintColor = UIColor(hex: 0xFA5871) - tabBar.unselectedItemTintColor = UIColor(white: 0.8, alpha: 1) - - for vc in viewControllers ?? [] { - print(vc) - if let homeVC = vc as? HomeViewController { - homeVC.reactor = reactor?.reactorForHome - } - - if let recordVC = vc as? RecordViewController { - recordVC.reactor = reactor?.reactorForRecord - } - - if let profileVC = vc as? ProfileViewController { - profileVC.reactor = reactor?.reactorForProfile - } - - if let nc = vc as? UINavigationController { - if let searchVC = nc.viewControllers.first as? SearchViewController { - searchVC.reactor = reactor?.reactorForSearch - } - } - } - } - - func bind(reactor: Reactor) { - - } -} diff --git a/Annict-for-iOS/Modules/TabBar/RootTabBarReactor.md b/Annict-for-iOS/Modules/TabBar/RootTabBarReactor.md deleted file mode 100644 index 64e53d46..00000000 --- a/Annict-for-iOS/Modules/TabBar/RootTabBarReactor.md +++ /dev/null @@ -1,2 +0,0 @@ -# <#Title#> - diff --git a/Annict-for-iOS/Modules/TabBar/RootTabBarReactor.swift b/Annict-for-iOS/Modules/TabBar/RootTabBarReactor.swift deleted file mode 100644 index b9fab494..00000000 --- a/Annict-for-iOS/Modules/TabBar/RootTabBarReactor.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// RootTabBarReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/03/12. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class RootTabBarReactor: Reactor { - enum Action { - - } - - enum Mutation { - - } - - struct State { - - } - - let initialState: State - let provider: ServiceProviderType - - var reactorForHome: HomeViewReactor { - return .init(provider: provider) - } - - var reactorForRecord: RecordViewReactor { - return .init(provider: provider) - } - - var reactorForProfile: ProfileViewReactor { - return .init(provider: provider) - } - - var reactorForSearch: SearchViewReactor { - return .init(provider: provider) - } - - init(provider: ServiceProviderType) { - initialState = State() - self.provider = provider - } -} diff --git a/Annict-for-iOS/Modules/Work/Views/EpisodeCountSectionTableViewCell.swift b/Annict-for-iOS/Modules/Work/Views/EpisodeCountSectionTableViewCell.swift deleted file mode 100644 index 252b694b..00000000 --- a/Annict-for-iOS/Modules/Work/Views/EpisodeCountSectionTableViewCell.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// EpisodeCountSectionTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/27. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class EpisodeCountSectionTableViewCell: UITableViewCell { - - @IBOutlet private weak var titleLabel: UILabel! - @IBOutlet private weak var countLabel: PaddingLabel! - - override func awakeFromNib() { - super.awakeFromNib() - - countLabel.padding = UIEdgeInsets(top: 4, left: 12, bottom: 4, right: 12) - countLabel.layoutIfNeeded() - countLabel.roundedRectangleFilter() - } - - override func layoutSubviews() { - super.layoutSubviews() - - countLabel.roundedRectangleFilter() - } - - func configure(episodeCount: Int) { - countLabel.text = episodeCount.description - } -} diff --git a/Annict-for-iOS/Modules/Work/Views/EpisodeCountSectionTableViewCell.xib b/Annict-for-iOS/Modules/Work/Views/EpisodeCountSectionTableViewCell.xib deleted file mode 100644 index a11de120..00000000 --- a/Annict-for-iOS/Modules/Work/Views/EpisodeCountSectionTableViewCell.xib +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Work/Views/EpisodeTitleTableViewCell.swift b/Annict-for-iOS/Modules/Work/Views/EpisodeTitleTableViewCell.swift deleted file mode 100644 index 2a70901e..00000000 --- a/Annict-for-iOS/Modules/Work/Views/EpisodeTitleTableViewCell.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// EpisodeTitleTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/19. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -final class EpisodeTitleTableViewCell: UITableViewCell { - - @IBOutlet private weak var titleLabel: UILabel! - @IBOutlet private weak var countLabel: UILabel! - - override func awakeFromNib() { - super.awakeFromNib() - - countLabel.roundedRectangleFilter() - countLabel.backgroundColor = UIColor(hex: 0xEBEBEB) - titleLabel.textColor = UIColor(hex: 0x464646) - } - - override func setHighlighted(_ highlighted: Bool, animated: Bool) { - super.setHighlighted(highlighted, animated: animated) - countLabel.backgroundColor = UIColor(hex: 0xEBEBEB) - } - - override func setSelected(_ selected: Bool, animated: Bool) { - super.setSelected(selected, animated: animated) - countLabel.backgroundColor = UIColor(hex: 0xEBEBEB) - } - - func configure(episode: MinimumEpisode) { - titleLabel.text = episode.numberAndTitle - countLabel.text = "\(episode.viewerRecordsCount)" - } -} diff --git a/Annict-for-iOS/Modules/Work/Views/EpisodeTitleTableViewCell.xib b/Annict-for-iOS/Modules/Work/Views/EpisodeTitleTableViewCell.xib deleted file mode 100644 index 111a4383..00000000 --- a/Annict-for-iOS/Modules/Work/Views/EpisodeTitleTableViewCell.xib +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Work/Views/WorkHeaderTableViewCell.swift b/Annict-for-iOS/Modules/Work/Views/WorkHeaderTableViewCell.swift deleted file mode 100644 index 328968a6..00000000 --- a/Annict-for-iOS/Modules/Work/Views/WorkHeaderTableViewCell.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// WorkHeaderTableViewCell.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/19. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit -import SQLite - -final class WorkHeaderTableViewCell: UITableViewCell { - - @IBOutlet private weak var blurWorkImageView: UIImageView! - @IBOutlet private weak var workImageView: UIImageView! - @IBOutlet private weak var titleLabel: UILabel! - @IBOutlet private(set) weak var statusButton: WorkStatusButton! - - var didTapButton: (() -> Void)? - var didTapDetail: (() -> Void)? - weak var delegate: WorkStatusButtonDelegate? { - didSet { - statusButton.delegate = delegate - } - } - - override func awakeFromNib() { - super.awakeFromNib() - - workImageView.layer.cornerRadius = 6 - workImageView.layer.masksToBounds = true - - blurWorkImageView.layer.masksToBounds = true - blurWorkImageView.bk.addBlur(blurRadius: 24, colorTint: .white, colorTintAlpha: 0.2) - statusButton.roundedRectangleFilter() - } - - func configure(work: MinimumWork) { - workImageView.setImage(workID: work.annictId) - blurWorkImageView.setImage(workID: work.annictId) - titleLabel.text = work.title - statusButton.configure(status: work.viewerStatusState ?? .noState) - statusButton.didTap = didTapButton - statusButton.didTapDetail = didTapDetail - } -} diff --git a/Annict-for-iOS/Modules/Work/Views/WorkHeaderTableViewCell.xib b/Annict-for-iOS/Modules/Work/Views/WorkHeaderTableViewCell.xib deleted file mode 100644 index a6a5f230..00000000 --- a/Annict-for-iOS/Modules/Work/Views/WorkHeaderTableViewCell.xib +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Work/Views/WorkStatusButton.swift b/Annict-for-iOS/Modules/Work/Views/WorkStatusButton.swift deleted file mode 100644 index 32c75428..00000000 --- a/Annict-for-iOS/Modules/Work/Views/WorkStatusButton.swift +++ /dev/null @@ -1,87 +0,0 @@ -// -// WorkStatusButton.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2019/07/19. -// Copyright © 2019 Yuto Akiba. All rights reserved. -// - -import UIKit - -protocol WorkStatusButtonDelegate: class { - func didTap(_ workStatusButton: WorkStatusButton) - func didTapDetail(_ workStatusButton: WorkStatusButton) -} - -final class WorkStatusButton: UIView, NibOwnerLoadable { - var didTap: (() -> Void)? - var didTapDetail: (() -> Void)? - - weak var delegate: WorkStatusButtonDelegate? - - @IBOutlet private weak var titleLabel: UILabel! - @IBOutlet private weak var threeDots: UIImageView! - - private var status: StatusState = .noState - - override var intrinsicContentSize: CGSize { - return CGSize(width: UIView.noIntrinsicMetric, height: 48) - } - - override init(frame: CGRect) { - super.init(frame: frame) - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - commonInit() - } - - private func commonInit() { - loadNib() - - roundedRectangleFilter() - titleLabel.textColor = .white - - let tapGesture = UITapGestureRecognizer(target: self, action: #selector(taped)) - addGestureRecognizer(tapGesture) - - threeDots.image = UIImage(named: "three_dot")?.withRenderingMode(.alwaysTemplate) - threeDots.isUserInteractionEnabled = true - threeDots.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(tapedThreeDots))) - } - - @objc private func taped() { - Taptic.run(.impact(.medium)) - - didTap?() - delegate?.didTap(self) - } - - @objc private func tapedThreeDots() { - Taptic.run(.impact(.medium)) - - didTapDetail?() - delegate?.didTapDetail(self) - } - - func configure(status: StatusState) { - self.status = status - - switch status { - case .noState: - titleLabel.text = "「見たい」に追加" - titleLabel.textColor = UIColor(hex: 0x565859) - backgroundColor = UIColor(hex: 0xEEEFF0) - threeDots.tintColor = UIColor(hex: 0x565859) - case .wannaWatch, .watched, .watching, .stopWatching, .onHold: - titleLabel.text = status.localizedText - titleLabel.textColor = .white - backgroundColor = UIColor(hex: 0x3498DB) - threeDots.tintColor = .white - default: - break - } - } -} diff --git a/Annict-for-iOS/Modules/Work/Views/WorkStatusButton.xib b/Annict-for-iOS/Modules/Work/Views/WorkStatusButton.xib deleted file mode 100644 index 6e14c07a..00000000 --- a/Annict-for-iOS/Modules/Work/Views/WorkStatusButton.xib +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Work/WorkViewController.storyboard b/Annict-for-iOS/Modules/Work/WorkViewController.storyboard deleted file mode 100644 index c3ee6068..00000000 --- a/Annict-for-iOS/Modules/Work/WorkViewController.storyboard +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Annict-for-iOS/Modules/Work/WorkViewController.swift b/Annict-for-iOS/Modules/Work/WorkViewController.swift deleted file mode 100644 index 7451b610..00000000 --- a/Annict-for-iOS/Modules/Work/WorkViewController.swift +++ /dev/null @@ -1,176 +0,0 @@ -// -// WorkViewController.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/12/01. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import UIKit -import ReactorKit -import RxSwift -import PanModal -import SnapKit -import SPStorkController - -final class WorkViewController: UIViewController, StoryboardView { - typealias Reactor = WorkViewReactor - - var disposeBag = DisposeBag() - - @IBOutlet private weak var tableView: UITableView! - - override func viewDidLoad() { - super.viewDidLoad() - - tableView.tableFooterView = UIView() - tableView.showsVerticalScrollIndicator = false - tableView.register(WorkHeaderTableViewCell.self, - EpisodeTitleTableViewCell.self, - EpisodeCountSectionTableViewCell.self) - } - - func bind(reactor: Reactor) { - tableView.rx.setDataSource(self) - .disposed(by: disposeBag) - - tableView.rx.setDelegate(self) - .disposed(by: disposeBag) - - rx.viewWillAppear - .take(1) - .map { Reactor.Action.fetchEpisodes } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - tableView.rx.triggeredPagination() - .throttle(.seconds(1), latest: false, scheduler: MainScheduler.instance) - .map { Reactor.Action.loadMore } - .bind(to: reactor.action) - .disposed(by: disposeBag) - - reactor.state.map { $0.work } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] episodes in - self?.tableView.reloadData() - }) - .disposed(by: disposeBag) - - reactor.state.map { $0.episodes } - .distinctUntilChanged() - .subscribe(onNext: { [weak self] episodes in - self?.tableView.reloadData() - }) - .disposed(by: disposeBag) - } -} - -extension WorkViewController { - static func presentPanModal(fromVC: UIViewController, reactor: Reactor) { - let vc = WorkViewController.loadStoryboard(reactor: reactor) - fromVC.presentAsStork(vc, height: nil, showIndicator: false, showCloseButton: false) - } -} - -extension WorkViewController: UITableViewDataSource { - func numberOfSections(in tableView: UITableView) -> Int { - return 3 - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - if section == 0 { - return 1 - } - if section == 1 { - return 1 - } - return reactor!.currentState.episodes.count - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - if indexPath.section == 0 { - let cell = tableView.dequeueReusableCell(classType: WorkHeaderTableViewCell.self, for: indexPath) - let work = reactor!.currentState.work - cell.configure(work: work) - cell.delegate = self - return cell - } else if indexPath.section == 1 { - let cell = tableView.dequeueReusableCell(classType: EpisodeCountSectionTableViewCell.self, for: indexPath) - cell.configure(episodeCount: reactor!.currentState.work.episodesCount) - return cell - } else { - let cell = tableView.dequeueReusableCell(classType: EpisodeTitleTableViewCell.self, for: indexPath) - cell.configure(episode: reactor!.currentState.episodes[indexPath.row]) - return cell - } - } -} - -extension WorkViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard indexPath.section == 2 else { return } - EpisodeRecordsViewController.presentAsStork(fromVC: self, reactor: reactor!.reactorForEpisode(index: indexPath.item)) - tableView.deselectRow(at: indexPath, animated: true) - } - - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - if indexPath.section == 0 { - return 460 - } else if indexPath.section == 1 { - return 50 - } else { - return 50 - } - } - - func scrollViewDidScroll(_ scrollView: UIScrollView) { - SPStorkController.scrollViewDidScroll(scrollView) - } -} - -extension WorkViewController: WorkStatusButtonDelegate { - func didTap(_ workStatusButton: WorkStatusButton) { - let work = reactor!.currentState.work - let currentState = work.viewerStatusState ?? .noState - - switch currentState { - case .noState: - updateStatusState(.wannaWatch) - case .wannaWatch, .watched, .watching, .onHold, .stopWatching: - showAlert(currentState: currentState) - default: - break - } - } - - func didTapDetail(_ workStatusButton: WorkStatusButton) { - let work = reactor!.currentState.work - showAlert(currentState: work.viewerStatusState ?? .noState) - } - - private func showAlert(currentState: StatusState) { - let ac = UIAlertController(title: "ステータスを変更", message: nil, preferredStyle: .actionSheet) - - let stateList: [StatusState] = [.noState, .wannaWatch, .watching, .watched, .onHold, .stopWatching].filter { $0 != currentState } - let actions = stateList.map { [weak self] statusState -> UIAlertAction in - let title = statusState == .noState ? "選択を解除" : statusState.localizedText - return UIAlertAction(title: title, style: .default, handler: { [weak self] _ in - self?.updateStatusState(statusState) - }) - } - - let cancel = UIAlertAction(title: "キャンセル", style: .cancel, handler: nil) - actions.forEach { - ac.addAction($0) - } - ac.addAction(cancel) - let cell = tableView.cellForRow(at: IndexPath(row: 0, section: 0)) as? WorkHeaderTableViewCell - ac.popoverPresentationController?.sourceView = cell - ac.popoverPresentationController?.sourceRect = cell?.statusButton.frame ?? .zero - present(ac, animated: true, completion: nil) - } - - private func updateStatusState(_ statusState: StatusState) { - reactor?.action.onNext(.updateStatusState(statusState)) - } -} diff --git a/Annict-for-iOS/Modules/Work/WorkViewReactor.swift b/Annict-for-iOS/Modules/Work/WorkViewReactor.swift deleted file mode 100644 index bd40f425..00000000 --- a/Annict-for-iOS/Modules/Work/WorkViewReactor.swift +++ /dev/null @@ -1,113 +0,0 @@ -// -// WorkViewReactor.swift -// Annict-for-iOS -// -// Created by Yuto Akiba on 2018/12/01. -// Copyright © 2018 Yuto Akiba. All rights reserved. -// - -import ReactorKit -import RxSwift - -final class WorkViewReactor: Reactor { - enum Action { - case fetchEpisodes - case loadMore - case updateStatusState(StatusState) - } - - enum Mutation { - case setEpisodes([MinimumEpisode]) - case apppendEpisodes([MinimumEpisode]) - case updateStatus(StatusState) - case setWork(MinimumWork) - case setPageInfo(PageInfoF) - } - - struct State { - var work: MinimumWork - var episodes: [MinimumEpisode] = [] - var pageInfo: PageInfoF? - - init(work: MinimumWork) { - self.work = work - } - } - - let initialState: State - let provider: ServiceProviderType - - init(provider: ServiceProviderType, work: MinimumWork) { - initialState = State(work: work) - self.provider = provider - } - - func reactorForEpisode(index: Int) -> EpisodeRecordsViewReactor { - return .init(provider: provider, episode: currentState.episodes[index]) - } - - func mutate(action: Action) -> Observable { - switch action { - case .fetchEpisodes: - let fetch = fetchEpisodes().share(replay: 1) - let setEpisodes = fetch - .map { $0.values.map { $0.fragments.minimumEpisode } } - .map { Mutation.setEpisodes($0) } - let setPageInfo = fetch - .map { $0.pageInfo.fragments.pageInfoF } - .map { Mutation.setPageInfo($0) } - return Observable.merge(setEpisodes, setPageInfo) - case .loadMore: - guard let pageInfo = currentState.pageInfo, pageInfo.hasNextPage else { return .empty() } - let fetch = fetchEpisodes(after: pageInfo.endCursor).share(replay: 1) - let setEpisodes = fetch - .map { $0.values.map { $0.fragments.minimumEpisode } } - .map { Mutation.apppendEpisodes($0) } - let setPageInfo = fetch - .map { $0.pageInfo.fragments.pageInfoF } - .map { Mutation.setPageInfo($0) } - return Observable.merge(setEpisodes, setPageInfo) - case .updateStatusState(let state): - let localUpdateStatus = Observable.just(Mutation.updateStatus(state)) - let updateStatusStream = updateStatus(state: state).map { Mutation.setWork($0) } - return .merge(localUpdateStatus, updateStatusStream) - } - } - - func reduce(state: State, mutation: Mutation) -> State { - var state = state - switch mutation { - case .setEpisodes(let episodes): - state.episodes = episodes - case .apppendEpisodes(let episodes): - state.episodes += episodes - case .updateStatus(let statusState): - state.work.viewerStatusState = statusState - case .setWork(let work): - state.work = work - case .setPageInfo(let pageInfo): - state.pageInfo = pageInfo - } - return state - } - - private func fetchEpisodes(after: String? = nil) -> Observable { - let query = SearchWorksByIdQuery(annictId: currentState.work.annictId, after: after) - var stream = AnnictGraphQL.client.rx.fetch(query: query, cachePolicy: .returnCacheDataAndFetch) - if after != nil { - stream = AnnictGraphQL.client.rx.fetchMaybe(query: query, cachePolicy: .returnCacheDataAndFetch).asObservable() - } - - return stream - .map { $0.searchWorks?.values.first?.episodes } - .filterNil() - } - - private func updateStatus(state: StatusState) -> Observable { - return provider.workAPIService.updateStatus(state: state, workId: currentState.work.id) - } -} - -extension SearchWorksByIdQuery.Data.SearchWork: Connection {} -extension SearchWorksByIdQuery.Data.SearchWork.Node.Episode: Connection {} - diff --git a/Annict-for-iOS/schema.json b/Annict-for-iOS/schema.json deleted file mode 100644 index adbc7128..00000000 --- a/Annict-for-iOS/schema.json +++ /dev/null @@ -1,10153 +0,0 @@ -{ - "__schema": { - "queryType": { - "name": "Query" - }, - "mutationType": { - "name": "Mutation" - }, - "subscriptionType": null, - "types": [ - { - "kind": "OBJECT", - "name": "Query", - "description": null, - "fields": [ - { - "name": "node", - "description": "Fetches an object given its ID.", - "args": [ - { - "name": "id", - "description": "ID of the object.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "Fetches a list of objects given a list of IDs.", - "args": [ - { - "name": "ids", - "description": "IDs of the objects.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "searchCharacters", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "annictIds", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "names", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "CharacterOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "CharacterConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "searchEpisodes", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "annictIds", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "EpisodeOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "EpisodeConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "searchOrganizations", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "annictIds", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "names", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "OrganizationOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "OrganizationConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "searchPeople", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "annictIds", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "names", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "PersonOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "PersonConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "searchWorks", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "annictIds", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "seasons", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "titles", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "WorkOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "WorkConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "user", - "description": null, - "args": [ - { - "name": "username", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "User", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "viewer", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "User", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ID", - "description": "The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INTERFACE", - "name": "Node", - "description": "An object with an ID.", - "fields": [ - { - "name": "id", - "description": "ID of the object.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": [ - { - "kind": "OBJECT", - "name": "Character", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Series", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Work", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Cast", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Person", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Prefecture", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Episode", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Record", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "User", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "MultipleRecord", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Review", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Status", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Activity", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Program", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Channel", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "ChannelGroup", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "WorkImage", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Staff", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Organization", - "ofType": null - } - ] - }, - { - "kind": "SCALAR", - "name": "String", - "description": "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Int", - "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "CharacterOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "CharacterOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "CharacterOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FAVORITE_CHARACTERS_COUNT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "OrderDirection", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "ASC", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "DESC", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "CharacterConnection", - "description": "The connection type for Character.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "CharacterEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Character", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "CharacterEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Character", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Character", - "description": null, - "fields": [ - { - "name": "age", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ageEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "birthday", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "birthdayEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bloodType", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bloodTypeEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "descriptionEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "descriptionSource", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "descriptionSourceEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "favoriteCharactersCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "height", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "heightEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameKana", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nationality", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nationalityEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nickname", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nicknameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "occupation", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "occupationEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "series", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Series", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "weight", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "weightEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Series", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameRo", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "works", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "SeriesWorkOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "SeriesWorkConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SeriesWorkOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "SeriesWorkOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "SeriesWorkOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "SEASON", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SeriesWorkConnection", - "description": "The connection type for Work.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SeriesWorkEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SeriesWorkEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "summary", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "summaryEn", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Work", - "description": "An anime title", - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "casts", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "CastOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "CastConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "episodes", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "EpisodeOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "EpisodeConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "episodesCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "image", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "WorkImage", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "malAnimeId", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "media", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "Media", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "noEpisodes", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "officialSiteUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "officialSiteUrlEn", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "programs", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "ProgramOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "ProgramConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "reviews", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "ReviewOrder", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "hasBody", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "ReviewConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "reviewsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "satisfactionRate", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Float", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "seasonName", - "description": null, - "args": [], - "type": { - "kind": "ENUM", - "name": "SeasonName", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "seasonYear", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "seriesList", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "SeriesConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "staffs", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "StaffOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "StaffConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "syobocalTid", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "title", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "titleEn", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "titleKana", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "titleRo", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterHashtag", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterUsername", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "viewerStatusState", - "description": null, - "args": [], - "type": { - "kind": "ENUM", - "name": "StatusState", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "watchersCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "wikipediaUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "wikipediaUrlEn", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "CastOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "CastOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "CastOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SORT_NUMBER", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "CastConnection", - "description": "The connection type for Cast.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "CastEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Cast", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "CastEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Cast", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Cast", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "character", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Character", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "person", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Person", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sortNumber", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Person", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "birthday", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bloodType", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "castsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "favoritePeopleCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "genderText", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "height", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameKana", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nickname", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nicknameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "prefecture", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Prefecture", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "staffsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterUsername", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterUsernameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "url", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "urlEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "wikipediaUrl", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "wikipediaUrlEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Prefecture", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PageInfo", - "description": "Information about pagination in a connection.", - "fields": [ - { - "name": "endCursor", - "description": "When paginating forwards, the cursor to continue.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hasNextPage", - "description": "When paginating forwards, are there more items?", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hasPreviousPage", - "description": "When paginating backwards, are there more items?", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "startCursor", - "description": "When paginating backwards, the cursor to continue.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Boolean", - "description": "The `Boolean` scalar type represents `true` or `false`.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "EpisodeOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "EpisodeOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "EpisodeOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SORT_NUMBER", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "EpisodeConnection", - "description": "The connection type for Episode.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "EpisodeEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Episode", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "EpisodeEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Episode", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Episode", - "description": "An episode of a work", - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nextEpisode", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Episode", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "number", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "numberText", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "prevEpisode", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Episode", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "recordCommentsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "records", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "RecordOrder", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "hasComment", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "RecordConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "recordsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "satisfactionRate", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Float", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sortNumber", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "title", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "viewerDidTrack", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "viewerRecordsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "RecordOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "RecordOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "RecordOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "LIKES_COUNT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "RecordConnection", - "description": "The connection type for Record.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "RecordEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Record", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "RecordEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Record", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Record", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "comment", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "commentsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createdAt", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "DateTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "episode", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Episode", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "facebookClickCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "likesCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "modified", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "rating", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Float", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ratingState", - "description": null, - "args": [], - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterClickCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updatedAt", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "DateTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "user", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "User", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "DateTime", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Float", - "description": "The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "RatingState", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "GREAT", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "GOOD", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "AVERAGE", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "BAD", - "description": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "User", - "description": null, - "fields": [ - { - "name": "activities", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "ActivityOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "ActivityConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "avatarUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "backgroundImageUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createdAt", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "DateTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "email", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "followers", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "UserConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "followersCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "following", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "UserConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "followingActivities", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "ActivityOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "ActivityConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "followingsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notificationsCount", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "onHoldCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "programs", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "unwatched", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "ProgramOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "ProgramConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "records", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "RecordOrder", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "hasComment", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "RecordConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "recordsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stopWatchingCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "url", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "username", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "viewerCanFollow", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "viewerIsFollowing", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "wannaWatchCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "watchedCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "watchingCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "works", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "annictIds", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "seasons", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "titles", - "description": null, - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "state", - "description": null, - "type": { - "kind": "ENUM", - "name": "StatusState", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "orderBy", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "WorkOrder", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "WorkConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "ActivityOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "ActivityOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "ActivityOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ActivityConnection", - "description": "The connection type for Activity.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ActivityEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Activity", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ActivityEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "action", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "ActivityAction", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": null, - "args": [], - "type": { - "kind": "UNION", - "name": "ActivityItem", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "user", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "User", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "ActivityAction", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATE", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "UNION", - "name": "ActivityItem", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": [ - { - "kind": "OBJECT", - "name": "MultipleRecord", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Record", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Review", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Status", - "ofType": null - } - ] - }, - { - "kind": "OBJECT", - "name": "MultipleRecord", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createdAt", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "DateTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "records", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "RecordConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "user", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "User", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Review", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "body", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createdAt", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "DateTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "impressionsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "likesCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "modifiedAt", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "DateTime", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ratingAnimationState", - "description": null, - "args": [], - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ratingCharacterState", - "description": null, - "args": [], - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ratingMusicState", - "description": null, - "args": [], - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ratingOverallState", - "description": null, - "args": [], - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ratingStoryState", - "description": null, - "args": [], - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "title", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updatedAt", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "DateTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "user", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "User", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Status", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createdAt", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "DateTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "likesCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "state", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "StatusState", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "user", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "User", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "StatusState", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "WANNA_WATCH", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "WATCHING", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "WATCHED", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ON_HOLD", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "STOP_WATCHING", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "NO_STATE", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Activity", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": "ID of the object.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "user", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "User", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UserConnection", - "description": "The connection type for User.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "UserEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "User", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UserEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "User", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "ProgramOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "ProgramOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "ProgramOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "STARTED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ProgramConnection", - "description": "The connection type for Program.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ProgramEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Program", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ProgramEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Program", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Program", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "channel", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Channel", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "episode", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Episode", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "rebroadcast", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "scPid", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "startedAt", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "DateTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "state", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "ProgramState", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Channel", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "channelGroup", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ChannelGroup", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "programs", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "ProgramConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "published", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "scChid", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ChannelGroup", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "channels", - "description": null, - "args": [ - { - "name": "after", - "description": "Returns the elements in the list that come after the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "before", - "description": "Returns the elements in the list that come before the specified cursor.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "first", - "description": "Returns the first _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "last", - "description": "Returns the last _n_ elements from the list.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "ChannelConnection", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sortNumber", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ChannelConnection", - "description": "The connection type for Channel.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ChannelEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Channel", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ChannelEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Channel", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "ProgramState", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "PUBLISHED", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "HIDDEN", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "WorkOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "WorkOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "WorkOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SEASON", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "WATCHERS_COUNT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "WorkConnection", - "description": "The connection type for Work.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "WorkEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "WorkEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "WorkImage", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "facebookOgImageUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "internalUrl", - "description": null, - "args": [ - { - "name": "size", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "recommendedImageUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterAvatarUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterBiggerAvatarUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterMiniAvatarUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterNormalAvatarUrl", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "Media", - "description": "Media of anime", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "TV", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "OVA", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "MOVIE", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "WEB", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "OTHER", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "ReviewOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "ReviewOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "ReviewOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "LIKES_COUNT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ReviewConnection", - "description": "The connection type for Review.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ReviewEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Review", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ReviewEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Review", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "SeasonName", - "description": "Season name", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "WINTER", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SPRING", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SUMMER", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "AUTUMN", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SeriesConnection", - "description": "The connection type for Series.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SeriesEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Series", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SeriesEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Series", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "StaffOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "StaffOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "StaffOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SORT_NUMBER", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "StaffConnection", - "description": "The connection type for Staff.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "StaffEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Staff", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "StaffEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Staff", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Staff", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "resource", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "UNION", - "name": "StaffResourceItem", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "roleOther", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "roleOtherEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "roleText", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sortNumber", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "UNION", - "name": "StaffResourceItem", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": [ - { - "kind": "OBJECT", - "name": "Organization", - "ofType": null - }, - { - "kind": "OBJECT", - "name": "Person", - "ofType": null - } - ] - }, - { - "kind": "OBJECT", - "name": "Organization", - "description": null, - "fields": [ - { - "name": "annictId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "favoriteOrganizationsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nameKana", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "staffsCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterUsername", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "twitterUsernameEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "url", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "urlEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "wikipediaUrl", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "wikipediaUrlEn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "OrganizationOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrganizationOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "OrganizationOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FAVORITE_ORGANIZATIONS_COUNT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "OrganizationConnection", - "description": "The connection type for Organization.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "OrganizationEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Organization", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "OrganizationEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Organization", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "PersonOrder", - "description": null, - "fields": null, - "inputFields": [ - { - "name": "field", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "PersonOrderField", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "OrderDirection", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "PersonOrderField", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CREATED_AT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FAVORITE_PEOPLE_COUNT", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PersonConnection", - "description": "The connection type for Person.", - "fields": [ - { - "name": "edges", - "description": "A list of edges.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PersonEdge", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodes", - "description": "A list of nodes.", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Person", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "Information to aid in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PageInfo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PersonEdge", - "description": "An edge in a connection.", - "fields": [ - { - "name": "cursor", - "description": "A cursor for use in pagination.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "node", - "description": "The item at the end of the edge.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Person", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Mutation", - "description": null, - "fields": [ - { - "name": "createRecord", - "description": null, - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "CreateRecordInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "CreateRecordPayload", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createReview", - "description": null, - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "CreateReviewInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "CreateReviewPayload", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deleteRecord", - "description": null, - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "DeleteRecordInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "DeleteRecordPayload", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deleteReview", - "description": null, - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "DeleteReviewInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "DeleteReviewPayload", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updateRecord", - "description": null, - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "UpdateRecordInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "UpdateRecordPayload", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updateReview", - "description": null, - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "UpdateReviewInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "UpdateReviewPayload", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "updateStatus", - "description": null, - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "UpdateStatusInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "UpdateStatusPayload", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "CreateRecordInput", - "description": "Autogenerated input type of CreateRecord", - "fields": null, - "inputFields": [ - { - "name": "episodeId", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "comment", - "description": null, - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "ratingState", - "description": null, - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "shareTwitter", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "shareFacebook", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "CreateRecordPayload", - "description": "Autogenerated return type of CreateRecord", - "fields": [ - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "record", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Record", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "CreateReviewInput", - "description": "Autogenerated input type of CreateReview", - "fields": null, - "inputFields": [ - { - "name": "workId", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "title", - "description": null, - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "body", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "ratingOverallState", - "description": null, - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "ratingAnimationState", - "description": null, - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "ratingMusicState", - "description": null, - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "ratingStoryState", - "description": null, - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "ratingCharacterState", - "description": null, - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "shareTwitter", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "shareFacebook", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "CreateReviewPayload", - "description": "Autogenerated return type of CreateReview", - "fields": [ - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "review", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Review", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "DeleteRecordInput", - "description": "Autogenerated input type of DeleteRecord", - "fields": null, - "inputFields": [ - { - "name": "recordId", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DeleteRecordPayload", - "description": "Autogenerated return type of DeleteRecord", - "fields": [ - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "episode", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Episode", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "DeleteReviewInput", - "description": "Autogenerated input type of DeleteReview", - "fields": null, - "inputFields": [ - { - "name": "reviewId", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DeleteReviewPayload", - "description": "Autogenerated return type of DeleteReview", - "fields": [ - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "UpdateRecordInput", - "description": "Autogenerated input type of UpdateRecord", - "fields": null, - "inputFields": [ - { - "name": "recordId", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "comment", - "description": null, - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "ratingState", - "description": null, - "type": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "shareTwitter", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "shareFacebook", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UpdateRecordPayload", - "description": "Autogenerated return type of UpdateRecord", - "fields": [ - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "record", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Record", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "UpdateReviewInput", - "description": "Autogenerated input type of UpdateReview", - "fields": null, - "inputFields": [ - { - "name": "reviewId", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "title", - "description": null, - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "body", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "ratingOverallState", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "ratingAnimationState", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "ratingMusicState", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "ratingStoryState", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "ratingCharacterState", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "RatingState", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "shareTwitter", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "shareFacebook", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UpdateReviewPayload", - "description": "Autogenerated return type of UpdateReview", - "fields": [ - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "review", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Review", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "UpdateStatusInput", - "description": "Autogenerated input type of UpdateStatus", - "fields": null, - "inputFields": [ - { - "name": "workId", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "state", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "StatusState", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UpdateStatusPayload", - "description": "Autogenerated return type of UpdateStatus", - "fields": [ - { - "name": "clientMutationId", - "description": "A unique identifier for the client performing the mutation.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "work", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Work", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__Schema", - "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", - "fields": [ - { - "name": "types", - "description": "A list of all types supported by this server.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__Type", - "ofType": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "queryType", - "description": "The type that query operations will be rooted at.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__Type", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "mutationType", - "description": "If this server supports mutation, the type that mutation operations will be rooted at.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "__Type", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "subscriptionType", - "description": "If this server support subscription, the type that subscription operations will be rooted at.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "__Type", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "directives", - "description": "A list of all directives supported by this server.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__Directive", - "ofType": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__Type", - "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.", - "fields": [ - { - "name": "kind", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "__TypeKind", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fields", - "description": null, - "args": [ - { - "name": "includeDeprecated", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": "false" - } - ], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__Field", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "interfaces", - "description": null, - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__Type", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "possibleTypes", - "description": null, - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__Type", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "enumValues", - "description": null, - "args": [ - { - "name": "includeDeprecated", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": "false" - } - ], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__EnumValue", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "inputFields", - "description": null, - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__InputValue", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ofType", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "__Type", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "__TypeKind", - "description": "An enum describing what kind of type a given `__Type` is.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "SCALAR", - "description": "Indicates this type is a scalar.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "OBJECT", - "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INTERFACE", - "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "UNION", - "description": "Indicates this type is a union. `possibleTypes` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ENUM", - "description": "Indicates this type is an enum. `enumValues` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INPUT_OBJECT", - "description": "Indicates this type is an input object. `inputFields` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "LIST", - "description": "Indicates this type is a list. `ofType` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "NON_NULL", - "description": "Indicates this type is a non-null. `ofType` is a valid field.", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__Field", - "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.", - "fields": [ - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "args", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__InputValue", - "ofType": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__Type", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isDeprecated", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deprecationReason", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__InputValue", - "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.", - "fields": [ - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__Type", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "defaultValue", - "description": "A GraphQL-formatted string representing the default value for this input value.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__EnumValue", - "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.", - "fields": [ - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isDeprecated", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deprecationReason", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "__Directive", - "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", - "fields": [ - { - "name": "name", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "description", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "locations", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "__DirectiveLocation", - "ofType": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "args", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "__InputValue", - "ofType": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "__DirectiveLocation", - "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "QUERY", - "description": "Location adjacent to a query operation.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "MUTATION", - "description": "Location adjacent to a mutation operation.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SUBSCRIPTION", - "description": "Location adjacent to a subscription operation.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FIELD", - "description": "Location adjacent to a field.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FRAGMENT_DEFINITION", - "description": "Location adjacent to a fragment definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FRAGMENT_SPREAD", - "description": "Location adjacent to a fragment spread.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INLINE_FRAGMENT", - "description": "Location adjacent to an inline fragment.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "VARIABLE_DEFINITION", - "description": "Location adjacent to a variable definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SCHEMA", - "description": "Location adjacent to a schema definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SCALAR", - "description": "Location adjacent to a scalar definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "OBJECT", - "description": "Location adjacent to an object type definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "FIELD_DEFINITION", - "description": "Location adjacent to a field definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ARGUMENT_DEFINITION", - "description": "Location adjacent to an argument definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INTERFACE", - "description": "Location adjacent to an interface definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "UNION", - "description": "Location adjacent to a union definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ENUM", - "description": "Location adjacent to an enum definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ENUM_VALUE", - "description": "Location adjacent to an enum value definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INPUT_OBJECT", - "description": "Location adjacent to an input object type definition.", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "INPUT_FIELD_DEFINITION", - "description": "Location adjacent to an input object field definition.", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - } - ], - "directives": [ - { - "name": "include", - "description": "Directs the executor to include this field or fragment only when the `if` argument is true.", - "locations": [ - "FIELD", - "FRAGMENT_SPREAD", - "INLINE_FRAGMENT" - ], - "args": [ - { - "name": "if", - "description": "Included when true.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - } - ] - }, - { - "name": "skip", - "description": "Directs the executor to skip this field or fragment when the `if` argument is true.", - "locations": [ - "FIELD", - "FRAGMENT_SPREAD", - "INLINE_FRAGMENT" - ], - "args": [ - { - "name": "if", - "description": "Skipped when true.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - } - ] - }, - { - "name": "deprecated", - "description": "Marks an element of a GraphQL schema as no longer supported.", - "locations": [ - "FIELD_DEFINITION", - "ENUM_VALUE" - ], - "args": [ - { - "name": "reason", - "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": "\"No longer supported\"" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/Cartfile b/Cartfile deleted file mode 100644 index 8219dd63..00000000 --- a/Cartfile +++ /dev/null @@ -1,9 +0,0 @@ -github "apollostack/apollo-ios" -github "onevcat/Kingfisher" "5.5.0" -github "HeroTransitions/Hero" -github "xmartlabs/XLPagerTabStrip" -github "SnapKit/SnapKit" -github "malcommac/SwiftDate" -github "slackhq/PanModal" -github "pkluz/PKHUD" -github "stephencelis/SQLite.swift" diff --git a/Cartfile.resolved b/Cartfile.resolved deleted file mode 100644 index 13d0127b..00000000 --- a/Cartfile.resolved +++ /dev/null @@ -1,9 +0,0 @@ -github "HeroTransitions/Hero" "1.4.0" -github "SnapKit/SnapKit" "5.0.1" -github "apollostack/apollo-ios" "0.16.1" -github "malcommac/SwiftDate" "6.1.0" -github "onevcat/Kingfisher" "5.5.0" -github "pkluz/PKHUD" "5.3.0" -github "slackhq/PanModal" "1.2.4" -github "stephencelis/SQLite.swift" "0.12.2" -github "xmartlabs/XLPagerTabStrip" "9.0.0" diff --git a/Gemfile b/Gemfile deleted file mode 100644 index b049bd85..00000000 --- a/Gemfile +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -gem "cocoapods" -gem "cocoapods-keys" \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 439056ac..00000000 --- a/Gemfile.lock +++ /dev/null @@ -1,86 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - CFPropertyList (3.0.0) - RubyInline (3.12.4) - ZenTest (~> 4.3) - ZenTest (4.11.1) - activesupport (4.2.10) - i18n (~> 0.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - atomos (0.1.3) - claide (1.0.2) - cocoapods (1.5.3) - activesupport (>= 4.0.2, < 5) - claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.5.3) - cocoapods-deintegrate (>= 1.0.2, < 2.0) - cocoapods-downloader (>= 1.2.0, < 2.0) - cocoapods-plugins (>= 1.0.0, < 2.0) - cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-stats (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.3.0, < 2.0) - cocoapods-try (>= 1.1.0, < 2.0) - colored2 (~> 3.1) - escape (~> 0.0.4) - fourflusher (~> 2.0.1) - gh_inspector (~> 1.0) - molinillo (~> 0.6.5) - nap (~> 1.0) - ruby-macho (~> 1.1) - xcodeproj (>= 1.5.7, < 2.0) - cocoapods-core (1.5.3) - activesupport (>= 4.0.2, < 6) - fuzzy_match (~> 2.0.4) - nap (~> 1.0) - cocoapods-deintegrate (1.0.2) - cocoapods-downloader (1.2.2) - cocoapods-keys (2.0.6) - dotenv - osx_keychain - cocoapods-plugins (1.0.0) - nap - cocoapods-search (1.0.0) - cocoapods-stats (1.0.0) - cocoapods-trunk (1.3.1) - nap (>= 0.8, < 2.0) - netrc (~> 0.11) - cocoapods-try (1.1.0) - colored2 (3.1.2) - concurrent-ruby (1.0.5) - dotenv (2.5.0) - escape (0.0.4) - fourflusher (2.0.1) - fuzzy_match (2.0.4) - gh_inspector (1.1.3) - i18n (0.9.5) - concurrent-ruby (~> 1.0) - minitest (5.11.3) - molinillo (0.6.6) - nanaimo (0.2.6) - nap (1.1.0) - netrc (0.11.0) - osx_keychain (1.0.2) - RubyInline (~> 3) - ruby-macho (1.3.1) - thread_safe (0.3.6) - tzinfo (1.2.5) - thread_safe (~> 0.1) - xcodeproj (1.7.0) - CFPropertyList (>= 2.3.3, < 4.0) - atomos (~> 0.1.3) - claide (>= 1.0.2, < 2.0) - colored2 (~> 3.1) - nanaimo (~> 0.2.6) - -PLATFORMS - ruby - -DEPENDENCIES - cocoapods - cocoapods-keys - -BUNDLED WITH - 1.16.2 diff --git a/Portannict/Portannict.xcodeproj/project.pbxproj b/Portannict/Portannict.xcodeproj/project.pbxproj index ecc737c4..94ab692f 100644 --- a/Portannict/Portannict.xcodeproj/project.pbxproj +++ b/Portannict/Portannict.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF841D4724CA6A1F00F3723B /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4624CA6A1F00F3723B /* TestView.swift */; }; + CFA7129B259CE78600DD0195 /* Envfile in Resources */ = {isa = PBXBuildFile; fileRef = CFA7129A259CE78600DD0195 /* Envfile */; }; CFB8D8BB255D18A20092764B /* TestViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB8D8BA255D18A20092764B /* TestViewModel.swift */; }; CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03EFE259483D9001516D3 /* HTTPClient.swift */; }; CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F002594895F001516D3 /* LoginViewModel.swift */; }; @@ -29,7 +30,6 @@ CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE38314258E610F00CEE318 /* RootViewModel.swift */; }; CFE3831E258E628C00CEE318 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831D258E628C00CEE318 /* Constants.swift */; }; CFE38320258E64F600CEE318 /* Env.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831F258E64F600CEE318 /* Env.swift */; }; - CFEB60C2258E670700CE6B24 /* Envfile in Resources */ = {isa = PBXBuildFile; fileRef = CFEB60C1258E670700CE6B24 /* Envfile */; }; CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */; }; CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */; }; CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */; }; @@ -65,6 +65,7 @@ CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF841D4624CA6A1F00F3723B /* TestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestView.swift; sourceTree = ""; }; + CFA7129A259CE78600DD0195 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = SOURCE_ROOT; }; CFB8D8BA255D18A20092764B /* TestViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestViewModel.swift; sourceTree = ""; }; CFC03EFE259483D9001516D3 /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; @@ -74,7 +75,6 @@ CFE38314258E610F00CEE318 /* RootViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewModel.swift; sourceTree = ""; }; CFE3831D258E628C00CEE318 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; CFE3831F258E64F600CEE318 /* Env.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Env.swift; sourceTree = ""; }; - CFEB60C1258E670700CE6B24 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = ""; }; CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkView.swift; sourceTree = ""; }; CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderView.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; @@ -124,7 +124,7 @@ CF08FC1524B9AFC500CD29DD /* ProfileView.swift */, CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, - CFEB60C1258E670700CE6B24 /* Envfile */, + CFA7129A259CE78600DD0195 /* Envfile */, CF08FC0F24B9AD1A00CD29DD /* Info.plist */, CF08FC0C24B9AD1A00CD29DD /* Preview Content */, ); @@ -290,7 +290,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - CFEB60C2258E670700CE6B24 /* Envfile in Resources */, + CFA7129B259CE78600DD0195 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, ); diff --git a/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/TemplateIcon.png b/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/TemplateIcon.png deleted file mode 100644 index e885da0f2e81453448a05f02be3f2f0a26f9ce83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4587 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 - - - - Options - - - NotPersisted - YES - Default - - Type - text - Description - The name of the class to create - Name - ReactorKit_Base - Required - YES - Identifier - productName - - - Kind - Xcode.IDEFoundation.TextSubstitutionFileTemplateKind - Description - A reactor file - Summary - A reactor file - SortOrder - 1 - - diff --git a/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewController.storyboard b/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewController.storyboard deleted file mode 100644 index f9866580..00000000 --- a/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewController.storyboard +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewController.swift b/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewController.swift deleted file mode 100644 index 24d0509b..00000000 --- a/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewController.swift +++ /dev/null @@ -1,20 +0,0 @@ -//___FILEHEADER___ - -import UIKit -import ReactorKit -import RxSwift - -final class ___FILEBASENAMEASIDENTIFIER___: UIViewController, StoryboardView { - typealias Reactor = ___VARIABLE_productName___ViewReactor - - var disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - - } - - func bind(reactor: Reactor) { - - } -} diff --git a/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewReactor.swift b/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewReactor.swift deleted file mode 100644 index 120d9559..00000000 --- a/Share/Templates/Templates/File Templates/ReactorKit/RK_Base.xctemplate/___FILEBASENAME___ViewReactor.swift +++ /dev/null @@ -1,32 +0,0 @@ -//___FILEHEADER___ - -import ReactorKit -import RxSwift - -final class ___FILEBASENAMEASIDENTIFIER___: Reactor { - var initialState: State - - init() { - initialState = State() - } - - enum Action { - - } - - enum Mutation { - - } - - struct State { - - } - - func mutate(action: Action) -> Observable { - return .empty() - } - - func reduce(state: State, mutation: Mutation) -> State { - return state - } -} diff --git a/Share/Templates/Templates/File Templates/ReactorKit/RK_Reactor.xctemplate/TemplateIcon.png b/Share/Templates/Templates/File Templates/ReactorKit/RK_Reactor.xctemplate/TemplateIcon.png deleted file mode 100644 index e885da0f2e81453448a05f02be3f2f0a26f9ce83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4587 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 - - - - Options - - - NotPersisted - YES - Default - - Type - text - Description - The name of the class to create - Name - Reactor: - Required - YES - Identifier - productName - - - Kind - Xcode.IDEFoundation.TextSubstitutionFileTemplateKind - Description - A reactor file - Summary - A reactor file - SortOrder - 1 - AllowedTypes - - public.swift-source - - MainTemplateFile - ___FILEBASENAME___Reactor.swift - - diff --git a/Share/Templates/Templates/File Templates/ReactorKit/RK_Reactor.xctemplate/___FILEBASENAME___Reactor.swift b/Share/Templates/Templates/File Templates/ReactorKit/RK_Reactor.xctemplate/___FILEBASENAME___Reactor.swift deleted file mode 100644 index 8325a839..00000000 --- a/Share/Templates/Templates/File Templates/ReactorKit/RK_Reactor.xctemplate/___FILEBASENAME___Reactor.swift +++ /dev/null @@ -1,24 +0,0 @@ -//___FILEHEADER___ - -import ReactorKit -import RxSwift - -final class ___FILEBASENAMEASIDENTIFIER___: Reactor { - var initialState: State - - init() { - initialState = State() - } - - enum Action { - - } - - enum Mutation { - - } - - struct State { - - } -} diff --git a/Share/Templates/Templates/File Templates/ReactorKit/RK_StoryBoardView.xctemplate/TemplateIcon.png b/Share/Templates/Templates/File Templates/ReactorKit/RK_StoryBoardView.xctemplate/TemplateIcon.png deleted file mode 100644 index e885da0f2e81453448a05f02be3f2f0a26f9ce83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4587 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 - - - - Options - - - NotPersisted - YES - Default - - Type - text - Description - The name of the class to create - Name - ViewController+StoryboardView: - Required - YES - Identifier - productName - - - Kind - Xcode.IDEFoundation.TextSubstitutionFileTemplateKind - Description - A storyboardView file - Summary - A storyboardView file - SortOrder - 1 - AllowedTypes - - public.swift-source - - MainTemplateFile - ___FILEBASENAME___ViewController.swift - - diff --git a/Share/Templates/Templates/File Templates/ReactorKit/RK_StoryBoardView.xctemplate/___FILEBASENAME___ViewController.swift b/Share/Templates/Templates/File Templates/ReactorKit/RK_StoryBoardView.xctemplate/___FILEBASENAME___ViewController.swift deleted file mode 100644 index e6ba4efa..00000000 --- a/Share/Templates/Templates/File Templates/ReactorKit/RK_StoryBoardView.xctemplate/___FILEBASENAME___ViewController.swift +++ /dev/null @@ -1,20 +0,0 @@ -//___FILEHEADER___ - -import UIKit -import ReactorKit -import RxSwift - -final class ___FILEBASENAMEASIDENTIFIER___: UIViewController, StoryboardView { - typealias Reactor = ___VARIABLE_productName___Reactor - - var disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - - } - - func bind(reactor: Reactor) { - - } -} diff --git a/Share/Templates/copy_templates.sh b/Share/Templates/copy_templates.sh deleted file mode 100644 index 202b8b46..00000000 --- a/Share/Templates/copy_templates.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -current_path=$(cd $(dirname $0); pwd) -if [ ! -d ~/Library/Developer/Xcode/Templates ] -then - mkdir ~/Library/Developer/Xcode/Templates -fi -if [ ! -d ~/Library/Developer/Xcode/Templates/File\ Templates ] -then - mkdir ~/Library/Developer/Xcode/Templates/File\ Templates -fi -ln -fs ${current_path}/Templates/File\ Templates/* ~/Library/Developer/Xcode/Templates/File\ Templates From fc9275cfc4d500f14b0bd85e69196414b2091df9 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 31 Dec 2020 01:57:28 +0900 Subject: [PATCH 010/101] Fix path --- .../project.pbxproj | 8 ++++---- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../xcshareddata/swiftpm/Package.resolved | 0 .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../Icon-App-20x20@2x-1.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../Icon-App-29x29@2x-1.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../Icon-App-40x40@2x-1.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../Icon-App-83.5x83.5@2x.png | Bin .../AppIcon.appiconset/ItunesArtwork@2x.png | Bin .../Assets.xcassets/Contents.json | 0 .../Common/API/REST/HTTPClient.swift | 0 .../Common/API/REST/OauthTokenRequest.swift | 0 .../{Portannict => }/Common/Constants.swift | 0 Portannict/{Portannict => }/Common/Env.swift | 0 .../Common/LoginSession.swift | 0 .../Home/ActivityStatusView.swift | 0 .../{Portannict => }/Home/HomeView.swift | 0 .../{Portannict => }/Home/HomeViewModel.swift | 0 .../{Portannict => }/Home/QuoteWorkView.swift | 0 Portannict/{Portannict => }/Info.plist | 0 .../{Portannict => }/Login/LoginView.swift | 0 .../Login/LoginViewModel.swift | 0 .../{Portannict => }/Models/Activity.swift | 0 .../Models/PreviewModel.swift | 0 Portannict/{Portannict => }/Models/Work.swift | 0 .../xcschemes/xcschememanagement.plist | 19 ------------------ .../{Portannict => }/PortannictApp.swift | 0 .../Preview Assets.xcassets/Contents.json | 0 Portannict/{Portannict => }/ProfileView.swift | 0 .../{Portannict => }/Root/RootView.swift | 0 .../{Portannict => }/Root/RootViewModel.swift | 0 Portannict/{Portannict => }/RootTabView.swift | 0 .../{Portannict => }/Test/TestView.swift | 0 .../{Portannict => }/Test/TestViewModel.swift | 0 .../Work/WorkHeaderView.swift | 0 .../{Portannict => }/Work/WorkView.swift | 0 52 files changed, 4 insertions(+), 23 deletions(-) rename {Portannict/Portannict.xcodeproj => Portannict.xcodeproj}/project.pbxproj (98%) rename {Portannict/Portannict.xcodeproj => Portannict.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%) rename {Portannict/Portannict.xcodeproj => Portannict.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {Portannict/Portannict.xcodeproj => Portannict.xcodeproj}/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {Portannict/Portannict.xcodeproj => Portannict.xcodeproj}/project.xcworkspace/xcshareddata/swiftpm/Package.resolved (100%) rename Portannict/{Portannict => }/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png (100%) rename Portannict/{Portannict => }/Assets.xcassets/Contents.json (100%) rename Portannict/{Portannict => }/Common/API/REST/HTTPClient.swift (100%) rename Portannict/{Portannict => }/Common/API/REST/OauthTokenRequest.swift (100%) rename Portannict/{Portannict => }/Common/Constants.swift (100%) rename Portannict/{Portannict => }/Common/Env.swift (100%) rename Portannict/{Portannict => }/Common/LoginSession.swift (100%) rename Portannict/{Portannict => }/Home/ActivityStatusView.swift (100%) rename Portannict/{Portannict => }/Home/HomeView.swift (100%) rename Portannict/{Portannict => }/Home/HomeViewModel.swift (100%) rename Portannict/{Portannict => }/Home/QuoteWorkView.swift (100%) rename Portannict/{Portannict => }/Info.plist (100%) rename Portannict/{Portannict => }/Login/LoginView.swift (100%) rename Portannict/{Portannict => }/Login/LoginViewModel.swift (100%) rename Portannict/{Portannict => }/Models/Activity.swift (100%) rename Portannict/{Portannict => }/Models/PreviewModel.swift (100%) rename Portannict/{Portannict => }/Models/Work.swift (100%) delete mode 100644 Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist rename Portannict/{Portannict => }/PortannictApp.swift (100%) rename Portannict/{Portannict => }/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename Portannict/{Portannict => }/ProfileView.swift (100%) rename Portannict/{Portannict => }/Root/RootView.swift (100%) rename Portannict/{Portannict => }/Root/RootViewModel.swift (100%) rename Portannict/{Portannict => }/RootTabView.swift (100%) rename Portannict/{Portannict => }/Test/TestView.swift (100%) rename Portannict/{Portannict => }/Test/TestViewModel.swift (100%) rename Portannict/{Portannict => }/Work/WorkHeaderView.swift (100%) rename Portannict/{Portannict => }/Work/WorkView.swift (100%) diff --git a/Portannict/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj similarity index 98% rename from Portannict/Portannict.xcodeproj/project.pbxproj rename to Portannict.xcodeproj/project.pbxproj index 94ab692f..e8c1be93 100644 --- a/Portannict/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -13,13 +13,13 @@ CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CF08FC0D24B9AD1A00CD29DD /* Preview Assets.xcassets */; }; CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC1524B9AFC500CD29DD /* ProfileView.swift */; }; CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC1724B9B04900CD29DD /* HomeView.swift */; }; + CF1E5E5D259CE88500035D50 /* Envfile in Resources */ = {isa = PBXBuildFile; fileRef = CF1E5E5C259CE88500035D50 /* Envfile */; }; CF42CFD124C9D73400AAD8E8 /* Work.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD024C9D73400AAD8E8 /* Work.swift */; }; CF42CFD324C9D7D300AAD8E8 /* Activity.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD224C9D7D300AAD8E8 /* Activity.swift */; }; CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF841D4724CA6A1F00F3723B /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4624CA6A1F00F3723B /* TestView.swift */; }; - CFA7129B259CE78600DD0195 /* Envfile in Resources */ = {isa = PBXBuildFile; fileRef = CFA7129A259CE78600DD0195 /* Envfile */; }; CFB8D8BB255D18A20092764B /* TestViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB8D8BA255D18A20092764B /* TestViewModel.swift */; }; CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03EFE259483D9001516D3 /* HTTPClient.swift */; }; CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F002594895F001516D3 /* LoginViewModel.swift */; }; @@ -59,13 +59,13 @@ CF08FC0F24B9AD1A00CD29DD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; CF08FC1524B9AFC500CD29DD /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; CF08FC1724B9B04900CD29DD /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; + CF1E5E5C259CE88500035D50 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = ""; }; CF42CFD024C9D73400AAD8E8 /* Work.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Work.swift; sourceTree = ""; }; CF42CFD224C9D7D300AAD8E8 /* Activity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Activity.swift; sourceTree = ""; }; CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewModel.swift; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF841D4624CA6A1F00F3723B /* TestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestView.swift; sourceTree = ""; }; - CFA7129A259CE78600DD0195 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = SOURCE_ROOT; }; CFB8D8BA255D18A20092764B /* TestViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestViewModel.swift; sourceTree = ""; }; CFC03EFE259483D9001516D3 /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; @@ -124,7 +124,7 @@ CF08FC1524B9AFC500CD29DD /* ProfileView.swift */, CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, - CFA7129A259CE78600DD0195 /* Envfile */, + CF1E5E5C259CE88500035D50 /* Envfile */, CF08FC0F24B9AD1A00CD29DD /* Info.plist */, CF08FC0C24B9AD1A00CD29DD /* Preview Content */, ); @@ -290,7 +290,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - CFA7129B259CE78600DD0195 /* Envfile in Resources */, + CF1E5E5D259CE88500035D50 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, ); diff --git a/Portannict/Portannict.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Portannict.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Portannict/Portannict.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Portannict.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Portannict.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to Portannict.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from Portannict/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/Portannict/Portannict/Assets.xcassets/AccentColor.colorset/Contents.json b/Portannict/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AccentColor.colorset/Contents.json rename to Portannict/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json b/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png b/Portannict/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png similarity index 100% rename from Portannict/Portannict/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png rename to Portannict/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png diff --git a/Portannict/Portannict/Assets.xcassets/Contents.json b/Portannict/Assets.xcassets/Contents.json similarity index 100% rename from Portannict/Portannict/Assets.xcassets/Contents.json rename to Portannict/Assets.xcassets/Contents.json diff --git a/Portannict/Portannict/Common/API/REST/HTTPClient.swift b/Portannict/Common/API/REST/HTTPClient.swift similarity index 100% rename from Portannict/Portannict/Common/API/REST/HTTPClient.swift rename to Portannict/Common/API/REST/HTTPClient.swift diff --git a/Portannict/Portannict/Common/API/REST/OauthTokenRequest.swift b/Portannict/Common/API/REST/OauthTokenRequest.swift similarity index 100% rename from Portannict/Portannict/Common/API/REST/OauthTokenRequest.swift rename to Portannict/Common/API/REST/OauthTokenRequest.swift diff --git a/Portannict/Portannict/Common/Constants.swift b/Portannict/Common/Constants.swift similarity index 100% rename from Portannict/Portannict/Common/Constants.swift rename to Portannict/Common/Constants.swift diff --git a/Portannict/Portannict/Common/Env.swift b/Portannict/Common/Env.swift similarity index 100% rename from Portannict/Portannict/Common/Env.swift rename to Portannict/Common/Env.swift diff --git a/Portannict/Portannict/Common/LoginSession.swift b/Portannict/Common/LoginSession.swift similarity index 100% rename from Portannict/Portannict/Common/LoginSession.swift rename to Portannict/Common/LoginSession.swift diff --git a/Portannict/Portannict/Home/ActivityStatusView.swift b/Portannict/Home/ActivityStatusView.swift similarity index 100% rename from Portannict/Portannict/Home/ActivityStatusView.swift rename to Portannict/Home/ActivityStatusView.swift diff --git a/Portannict/Portannict/Home/HomeView.swift b/Portannict/Home/HomeView.swift similarity index 100% rename from Portannict/Portannict/Home/HomeView.swift rename to Portannict/Home/HomeView.swift diff --git a/Portannict/Portannict/Home/HomeViewModel.swift b/Portannict/Home/HomeViewModel.swift similarity index 100% rename from Portannict/Portannict/Home/HomeViewModel.swift rename to Portannict/Home/HomeViewModel.swift diff --git a/Portannict/Portannict/Home/QuoteWorkView.swift b/Portannict/Home/QuoteWorkView.swift similarity index 100% rename from Portannict/Portannict/Home/QuoteWorkView.swift rename to Portannict/Home/QuoteWorkView.swift diff --git a/Portannict/Portannict/Info.plist b/Portannict/Info.plist similarity index 100% rename from Portannict/Portannict/Info.plist rename to Portannict/Info.plist diff --git a/Portannict/Portannict/Login/LoginView.swift b/Portannict/Login/LoginView.swift similarity index 100% rename from Portannict/Portannict/Login/LoginView.swift rename to Portannict/Login/LoginView.swift diff --git a/Portannict/Portannict/Login/LoginViewModel.swift b/Portannict/Login/LoginViewModel.swift similarity index 100% rename from Portannict/Portannict/Login/LoginViewModel.swift rename to Portannict/Login/LoginViewModel.swift diff --git a/Portannict/Portannict/Models/Activity.swift b/Portannict/Models/Activity.swift similarity index 100% rename from Portannict/Portannict/Models/Activity.swift rename to Portannict/Models/Activity.swift diff --git a/Portannict/Portannict/Models/PreviewModel.swift b/Portannict/Models/PreviewModel.swift similarity index 100% rename from Portannict/Portannict/Models/PreviewModel.swift rename to Portannict/Models/PreviewModel.swift diff --git a/Portannict/Portannict/Models/Work.swift b/Portannict/Models/Work.swift similarity index 100% rename from Portannict/Portannict/Models/Work.swift rename to Portannict/Models/Work.swift diff --git a/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist b/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index c0278bf6..00000000 --- a/Portannict/Portannict.xcodeproj/xcuserdata/touyu.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,19 +0,0 @@ - - - - - SchemeUserState - - Fluxer.xcscheme_^#shared#^_ - - orderHint - 1 - - Portannict.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/Portannict/Portannict/PortannictApp.swift b/Portannict/PortannictApp.swift similarity index 100% rename from Portannict/Portannict/PortannictApp.swift rename to Portannict/PortannictApp.swift diff --git a/Portannict/Portannict/Preview Content/Preview Assets.xcassets/Contents.json b/Portannict/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from Portannict/Portannict/Preview Content/Preview Assets.xcassets/Contents.json rename to Portannict/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/Portannict/Portannict/ProfileView.swift b/Portannict/ProfileView.swift similarity index 100% rename from Portannict/Portannict/ProfileView.swift rename to Portannict/ProfileView.swift diff --git a/Portannict/Portannict/Root/RootView.swift b/Portannict/Root/RootView.swift similarity index 100% rename from Portannict/Portannict/Root/RootView.swift rename to Portannict/Root/RootView.swift diff --git a/Portannict/Portannict/Root/RootViewModel.swift b/Portannict/Root/RootViewModel.swift similarity index 100% rename from Portannict/Portannict/Root/RootViewModel.swift rename to Portannict/Root/RootViewModel.swift diff --git a/Portannict/Portannict/RootTabView.swift b/Portannict/RootTabView.swift similarity index 100% rename from Portannict/Portannict/RootTabView.swift rename to Portannict/RootTabView.swift diff --git a/Portannict/Portannict/Test/TestView.swift b/Portannict/Test/TestView.swift similarity index 100% rename from Portannict/Portannict/Test/TestView.swift rename to Portannict/Test/TestView.swift diff --git a/Portannict/Portannict/Test/TestViewModel.swift b/Portannict/Test/TestViewModel.swift similarity index 100% rename from Portannict/Portannict/Test/TestViewModel.swift rename to Portannict/Test/TestViewModel.swift diff --git a/Portannict/Portannict/Work/WorkHeaderView.swift b/Portannict/Work/WorkHeaderView.swift similarity index 100% rename from Portannict/Portannict/Work/WorkHeaderView.swift rename to Portannict/Work/WorkHeaderView.swift diff --git a/Portannict/Portannict/Work/WorkView.swift b/Portannict/Work/WorkView.swift similarity index 100% rename from Portannict/Portannict/Work/WorkView.swift rename to Portannict/Work/WorkView.swift From ddd51618f58cc48b93f01db53aea5b2e874ffc12 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 31 Dec 2020 01:58:15 +0900 Subject: [PATCH 011/101] Fix dir name --- Portannict.xcodeproj/project.pbxproj | 6 +++--- .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x-1.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x-1.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x-1.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../AppIcon.appiconset/Icon-App-83.5x83.5@2x.png | Bin .../AppIcon.appiconset/ItunesArtwork@2x.png | Bin .../Assets.xcassets/Contents.json | 0 .../Common/API/REST/HTTPClient.swift | 0 .../Common/API/REST/OauthTokenRequest.swift | 0 {Portannict => Sources}/Common/Constants.swift | 0 {Portannict => Sources}/Common/Env.swift | 0 {Portannict => Sources}/Common/LoginSession.swift | 0 .../Home/ActivityStatusView.swift | 0 {Portannict => Sources}/Home/HomeView.swift | 0 {Portannict => Sources}/Home/HomeViewModel.swift | 0 {Portannict => Sources}/Home/QuoteWorkView.swift | 0 {Portannict => Sources}/Info.plist | 0 {Portannict => Sources}/Login/LoginView.swift | 0 {Portannict => Sources}/Login/LoginViewModel.swift | 0 {Portannict => Sources}/Models/Activity.swift | 0 {Portannict => Sources}/Models/PreviewModel.swift | 0 {Portannict => Sources}/Models/Work.swift | 0 {Portannict => Sources}/PortannictApp.swift | 0 .../Preview Assets.xcassets/Contents.json | 0 {Portannict => Sources}/ProfileView.swift | 0 {Portannict => Sources}/Root/RootView.swift | 0 {Portannict => Sources}/Root/RootViewModel.swift | 0 {Portannict => Sources}/RootTabView.swift | 0 {Portannict => Sources}/Test/TestView.swift | 0 {Portannict => Sources}/Test/TestViewModel.swift | 0 {Portannict => Sources}/Work/WorkHeaderView.swift | 0 {Portannict => Sources}/Work/WorkView.swift | 0 47 files changed, 3 insertions(+), 3 deletions(-) rename {Portannict => Sources}/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename {Portannict => Sources}/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png (100%) rename {Portannict => Sources}/Assets.xcassets/Contents.json (100%) rename {Portannict => Sources}/Common/API/REST/HTTPClient.swift (100%) rename {Portannict => Sources}/Common/API/REST/OauthTokenRequest.swift (100%) rename {Portannict => Sources}/Common/Constants.swift (100%) rename {Portannict => Sources}/Common/Env.swift (100%) rename {Portannict => Sources}/Common/LoginSession.swift (100%) rename {Portannict => Sources}/Home/ActivityStatusView.swift (100%) rename {Portannict => Sources}/Home/HomeView.swift (100%) rename {Portannict => Sources}/Home/HomeViewModel.swift (100%) rename {Portannict => Sources}/Home/QuoteWorkView.swift (100%) rename {Portannict => Sources}/Info.plist (100%) rename {Portannict => Sources}/Login/LoginView.swift (100%) rename {Portannict => Sources}/Login/LoginViewModel.swift (100%) rename {Portannict => Sources}/Models/Activity.swift (100%) rename {Portannict => Sources}/Models/PreviewModel.swift (100%) rename {Portannict => Sources}/Models/Work.swift (100%) rename {Portannict => Sources}/PortannictApp.swift (100%) rename {Portannict => Sources}/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename {Portannict => Sources}/ProfileView.swift (100%) rename {Portannict => Sources}/Root/RootView.swift (100%) rename {Portannict => Sources}/Root/RootViewModel.swift (100%) rename {Portannict => Sources}/RootTabView.swift (100%) rename {Portannict => Sources}/Test/TestView.swift (100%) rename {Portannict => Sources}/Test/TestViewModel.swift (100%) rename {Portannict => Sources}/Work/WorkHeaderView.swift (100%) rename {Portannict => Sources}/Work/WorkView.swift (100%) diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index e8c1be93..039f0c52 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -97,7 +97,7 @@ CF08FBFA24B9AD1A00CD29DD = { isa = PBXGroup; children = ( - CF08FC0524B9AD1A00CD29DD /* Portannict */, + CF08FC0524B9AD1A00CD29DD /* Sources */, CF08FC0424B9AD1A00CD29DD /* Products */, ); sourceTree = ""; @@ -110,7 +110,7 @@ name = Products; sourceTree = ""; }; - CF08FC0524B9AD1A00CD29DD /* Portannict */ = { + CF08FC0524B9AD1A00CD29DD /* Sources */ = { isa = PBXGroup; children = ( CFE38316258E621400CEE318 /* Common */, @@ -128,7 +128,7 @@ CF08FC0F24B9AD1A00CD29DD /* Info.plist */, CF08FC0C24B9AD1A00CD29DD /* Preview Content */, ); - path = Portannict; + path = Sources; sourceTree = ""; }; CF08FC0C24B9AD1A00CD29DD /* Preview Content */ = { diff --git a/Portannict/Assets.xcassets/AccentColor.colorset/Contents.json b/Sources/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from Portannict/Assets.xcassets/AccentColor.colorset/Contents.json rename to Sources/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json b/Sources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Sources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x-1.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x-1.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x-1.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/Portannict/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png b/Sources/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png similarity index 100% rename from Portannict/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png rename to Sources/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png diff --git a/Portannict/Assets.xcassets/Contents.json b/Sources/Assets.xcassets/Contents.json similarity index 100% rename from Portannict/Assets.xcassets/Contents.json rename to Sources/Assets.xcassets/Contents.json diff --git a/Portannict/Common/API/REST/HTTPClient.swift b/Sources/Common/API/REST/HTTPClient.swift similarity index 100% rename from Portannict/Common/API/REST/HTTPClient.swift rename to Sources/Common/API/REST/HTTPClient.swift diff --git a/Portannict/Common/API/REST/OauthTokenRequest.swift b/Sources/Common/API/REST/OauthTokenRequest.swift similarity index 100% rename from Portannict/Common/API/REST/OauthTokenRequest.swift rename to Sources/Common/API/REST/OauthTokenRequest.swift diff --git a/Portannict/Common/Constants.swift b/Sources/Common/Constants.swift similarity index 100% rename from Portannict/Common/Constants.swift rename to Sources/Common/Constants.swift diff --git a/Portannict/Common/Env.swift b/Sources/Common/Env.swift similarity index 100% rename from Portannict/Common/Env.swift rename to Sources/Common/Env.swift diff --git a/Portannict/Common/LoginSession.swift b/Sources/Common/LoginSession.swift similarity index 100% rename from Portannict/Common/LoginSession.swift rename to Sources/Common/LoginSession.swift diff --git a/Portannict/Home/ActivityStatusView.swift b/Sources/Home/ActivityStatusView.swift similarity index 100% rename from Portannict/Home/ActivityStatusView.swift rename to Sources/Home/ActivityStatusView.swift diff --git a/Portannict/Home/HomeView.swift b/Sources/Home/HomeView.swift similarity index 100% rename from Portannict/Home/HomeView.swift rename to Sources/Home/HomeView.swift diff --git a/Portannict/Home/HomeViewModel.swift b/Sources/Home/HomeViewModel.swift similarity index 100% rename from Portannict/Home/HomeViewModel.swift rename to Sources/Home/HomeViewModel.swift diff --git a/Portannict/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift similarity index 100% rename from Portannict/Home/QuoteWorkView.swift rename to Sources/Home/QuoteWorkView.swift diff --git a/Portannict/Info.plist b/Sources/Info.plist similarity index 100% rename from Portannict/Info.plist rename to Sources/Info.plist diff --git a/Portannict/Login/LoginView.swift b/Sources/Login/LoginView.swift similarity index 100% rename from Portannict/Login/LoginView.swift rename to Sources/Login/LoginView.swift diff --git a/Portannict/Login/LoginViewModel.swift b/Sources/Login/LoginViewModel.swift similarity index 100% rename from Portannict/Login/LoginViewModel.swift rename to Sources/Login/LoginViewModel.swift diff --git a/Portannict/Models/Activity.swift b/Sources/Models/Activity.swift similarity index 100% rename from Portannict/Models/Activity.swift rename to Sources/Models/Activity.swift diff --git a/Portannict/Models/PreviewModel.swift b/Sources/Models/PreviewModel.swift similarity index 100% rename from Portannict/Models/PreviewModel.swift rename to Sources/Models/PreviewModel.swift diff --git a/Portannict/Models/Work.swift b/Sources/Models/Work.swift similarity index 100% rename from Portannict/Models/Work.swift rename to Sources/Models/Work.swift diff --git a/Portannict/PortannictApp.swift b/Sources/PortannictApp.swift similarity index 100% rename from Portannict/PortannictApp.swift rename to Sources/PortannictApp.swift diff --git a/Portannict/Preview Content/Preview Assets.xcassets/Contents.json b/Sources/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from Portannict/Preview Content/Preview Assets.xcassets/Contents.json rename to Sources/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/Portannict/ProfileView.swift b/Sources/ProfileView.swift similarity index 100% rename from Portannict/ProfileView.swift rename to Sources/ProfileView.swift diff --git a/Portannict/Root/RootView.swift b/Sources/Root/RootView.swift similarity index 100% rename from Portannict/Root/RootView.swift rename to Sources/Root/RootView.swift diff --git a/Portannict/Root/RootViewModel.swift b/Sources/Root/RootViewModel.swift similarity index 100% rename from Portannict/Root/RootViewModel.swift rename to Sources/Root/RootViewModel.swift diff --git a/Portannict/RootTabView.swift b/Sources/RootTabView.swift similarity index 100% rename from Portannict/RootTabView.swift rename to Sources/RootTabView.swift diff --git a/Portannict/Test/TestView.swift b/Sources/Test/TestView.swift similarity index 100% rename from Portannict/Test/TestView.swift rename to Sources/Test/TestView.swift diff --git a/Portannict/Test/TestViewModel.swift b/Sources/Test/TestViewModel.swift similarity index 100% rename from Portannict/Test/TestViewModel.swift rename to Sources/Test/TestViewModel.swift diff --git a/Portannict/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift similarity index 100% rename from Portannict/Work/WorkHeaderView.swift rename to Sources/Work/WorkHeaderView.swift diff --git a/Portannict/Work/WorkView.swift b/Sources/Work/WorkView.swift similarity index 100% rename from Portannict/Work/WorkView.swift rename to Sources/Work/WorkView.swift From 9532be7798448c9ae99c34172415ea59305acec9 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 31 Dec 2020 01:59:29 +0900 Subject: [PATCH 012/101] Update project.pbxproj --- Portannict.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 039f0c52..3bfd8f59 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -454,10 +454,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_ASSET_PATHS = "\"Portannict/Preview Content\""; + DEVELOPMENT_ASSET_PATHS = "\"Sources/Preview Content\""; DEVELOPMENT_TEAM = V8AZ23YEL4; ENABLE_PREVIEWS = YES; - INFOPLIST_FILE = Portannict/Info.plist; + INFOPLIST_FILE = Sources/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -476,10 +476,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_ASSET_PATHS = "\"Portannict/Preview Content\""; + DEVELOPMENT_ASSET_PATHS = "\"Sources/Preview Content\""; DEVELOPMENT_TEAM = V8AZ23YEL4; ENABLE_PREVIEWS = YES; - INFOPLIST_FILE = Portannict/Info.plist; + INFOPLIST_FILE = Sources/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", From 1ea706ae27952977d8612c3e5aa669cdb6adbbcc Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 31 Dec 2020 02:59:06 +0900 Subject: [PATCH 013/101] Impl Codegen --- .gitignore | 3 + Codegen/.gitignore | 5 + .../contents.xcworkspacedata | 7 + Codegen/Package.resolved | 70 + Codegen/Package.swift | 27 + Codegen/README.md | 3 + Codegen/Sources/Codegen/main.swift | 57 + Codegen/Tests/CodegenTests/CodegenTests.swift | 47 + .../Tests/CodegenTests/XCTestManifests.swift | 9 + Codegen/Tests/LinuxMain.swift | 7 + Portannict.xcodeproj/project.pbxproj | 33 + .../xcshareddata/swiftpm/Package.resolved | 72 + Sources/API.swift | 145 + .../Common/API/Query/SearchWorksByID.graphql | 7 + Sources/operationIDs.json | 6 + Sources/schema.json | 10238 ++++++++++++++++ 16 files changed, 10736 insertions(+) create mode 100644 Codegen/.gitignore create mode 100644 Codegen/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 Codegen/Package.resolved create mode 100644 Codegen/Package.swift create mode 100644 Codegen/README.md create mode 100644 Codegen/Sources/Codegen/main.swift create mode 100644 Codegen/Tests/CodegenTests/CodegenTests.swift create mode 100644 Codegen/Tests/CodegenTests/XCTestManifests.swift create mode 100644 Codegen/Tests/LinuxMain.swift create mode 100644 Sources/API.swift create mode 100644 Sources/Common/API/Query/SearchWorksByID.graphql create mode 100644 Sources/operationIDs.json create mode 100644 Sources/schema.json diff --git a/.gitignore b/.gitignore index 1be142ec..c4439d54 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ vendor/bundle Envfile node_modules + +# Apollo +Codegen/ApolloCLI diff --git a/Codegen/.gitignore b/Codegen/.gitignore new file mode 100644 index 00000000..95c43209 --- /dev/null +++ b/Codegen/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ diff --git a/Codegen/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/Codegen/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/Codegen/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Codegen/Package.resolved b/Codegen/Package.resolved new file mode 100644 index 00000000..61e1fe2a --- /dev/null +++ b/Codegen/Package.resolved @@ -0,0 +1,70 @@ +{ + "object": { + "pins": [ + { + "package": "Apollo", + "repositoryURL": "https://github.com/apollographql/apollo-ios.git", + "state": { + "branch": null, + "revision": "1f00f539a8e8c8929b18629e929a91385a26399b", + "version": "0.29.1" + } + }, + { + "package": "PathKit", + "repositoryURL": "https://github.com/kylef/PathKit.git", + "state": { + "branch": null, + "revision": "e2f5be30e4c8f531c9c1e8765aa7b71c0a45d7a0", + "version": "0.9.2" + } + }, + { + "package": "Spectre", + "repositoryURL": "https://github.com/kylef/Spectre.git", + "state": { + "branch": null, + "revision": "f79d4ecbf8bc4e1579fbd86c3e1d652fb6876c53", + "version": "0.9.2" + } + }, + { + "package": "SQLite.swift", + "repositoryURL": "https://github.com/stephencelis/SQLite.swift.git", + "state": { + "branch": null, + "revision": "0a9893ec030501a3956bee572d6b4fdd3ae158a1", + "version": "0.12.2" + } + }, + { + "package": "Starscream", + "repositoryURL": "https://github.com/daltoniam/Starscream", + "state": { + "branch": null, + "revision": "e6b65c6d9077ea48b4a7bdda8994a1d3c6969c8d", + "version": "3.1.1" + } + }, + { + "package": "Stencil", + "repositoryURL": "https://github.com/stencilproject/Stencil.git", + "state": { + "branch": null, + "revision": "0e9a78d6584e3812cd9c09494d5c7b483e8f533c", + "version": "0.13.1" + } + }, + { + "package": "swift-nio-zlib-support", + "repositoryURL": "https://github.com/apple/swift-nio-zlib-support.git", + "state": { + "branch": null, + "revision": "37760e9a52030bb9011972c5213c3350fa9d41fd", + "version": "1.0.0" + } + } + ] + }, + "version": 1 +} diff --git a/Codegen/Package.swift b/Codegen/Package.swift new file mode 100644 index 00000000..91470a88 --- /dev/null +++ b/Codegen/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version:5.3 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "Codegen", + dependencies: [ + // Dependencies declare other packages that this package depends on. + // .package(url: /* package url */, from: "1.0.0"), + .package(name: "Apollo", + url: "https://github.com/apollographql/apollo-ios.git", + .upToNextMinor(from: "0.29.0")) + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "Codegen", + dependencies: [ + .product(name: "ApolloCodegenLib", package: "Apollo"), + ]), + .testTarget( + name: "CodegenTests", + dependencies: ["Codegen"]), + ] +) diff --git a/Codegen/README.md b/Codegen/README.md new file mode 100644 index 00000000..ac6e4f97 --- /dev/null +++ b/Codegen/README.md @@ -0,0 +1,3 @@ +# Codegen + +A description of this package. diff --git a/Codegen/Sources/Codegen/main.swift b/Codegen/Sources/Codegen/main.swift new file mode 100644 index 00000000..430f90a7 --- /dev/null +++ b/Codegen/Sources/Codegen/main.swift @@ -0,0 +1,57 @@ +import Foundation +import ApolloCodegenLib + +// Grab the parent folder of this file on the filesystem +let parentFolderOfScriptFile = FileFinder.findParentFolder() + +// Use that to calculate the source root of both the +let sourceRootURL = parentFolderOfScriptFile + .apollo.parentFolderURL() // Sources + .apollo.parentFolderURL() // Codegen + .apollo.parentFolderURL() // MyProject + +// From the source root, figure out where your target +// root is within your main project +let targetRootURL = sourceRootURL + .apollo.childFolderURL(folderName: "Sources") + +// Set up the URL you want to use to download the project +let endpoint = URL(string: "https://api.annict.com/graphql")! + +// Create an options object for downloading the schema +let schemaDownloadOptions = ApolloSchemaOptions(endpointURL: endpoint, + headers: ["Authorization: Bearer 1Nr6dv0PB1DRdugaL8GAHtPtirQXCdq7embWuBKXg1k"], + outputFolderURL: targetRootURL) +// +// Calculate where you want to create the folder where the CLI will +// be downloaded by the ApolloCodegenLib framework. +let cliFolderURL = sourceRootURL + .apollo.childFolderURL(folderName: "Codegen") + .apollo.childFolderURL(folderName: "ApolloCLI") + +do { + // Actually attempt to download the schema. + try ApolloSchemaDownloader.run(with: cliFolderURL, + options: schemaDownloadOptions) +} catch { + // This makes the error message in Xcode a lot more legible, + // and prevents the script from continuing to try to generate + // code if the schema download failed. + exit(1) +} + +// Create the default Codegen options object (assumes schema.json +// is in the target root folder, all queries are in some kind +// of subfolder of the target folder and will output as a +// single file to API.swift in the target folder) +let codegenOptions = ApolloCodegenOptions(targetRootURL: targetRootURL) + +do { + // Actually attempt to generate code. + try ApolloCodegen.run(from: targetRootURL, + with: cliFolderURL, + options: codegenOptions) +} catch { + // This makes the error message in Xcode a lot more legible. + exit(1) +} diff --git a/Codegen/Tests/CodegenTests/CodegenTests.swift b/Codegen/Tests/CodegenTests/CodegenTests.swift new file mode 100644 index 00000000..732f78bc --- /dev/null +++ b/Codegen/Tests/CodegenTests/CodegenTests.swift @@ -0,0 +1,47 @@ +import XCTest +import class Foundation.Bundle + +final class CodegenTests: XCTestCase { + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct + // results. + + // Some of the APIs that we use below are available in macOS 10.13 and above. + guard #available(macOS 10.13, *) else { + return + } + + let fooBinary = productsDirectory.appendingPathComponent("Codegen") + + let process = Process() + process.executableURL = fooBinary + + let pipe = Pipe() + process.standardOutput = pipe + + try process.run() + process.waitUntilExit() + + let data = pipe.fileHandleForReading.readDataToEndOfFile() + let output = String(data: data, encoding: .utf8) + + XCTAssertEqual(output, "Hello, world!\n") + } + + /// Returns path to the built products directory. + var productsDirectory: URL { + #if os(macOS) + for bundle in Bundle.allBundles where bundle.bundlePath.hasSuffix(".xctest") { + return bundle.bundleURL.deletingLastPathComponent() + } + fatalError("couldn't find the products directory") + #else + return Bundle.main.bundleURL + #endif + } + + static var allTests = [ + ("testExample", testExample), + ] +} diff --git a/Codegen/Tests/CodegenTests/XCTestManifests.swift b/Codegen/Tests/CodegenTests/XCTestManifests.swift new file mode 100644 index 00000000..eb066481 --- /dev/null +++ b/Codegen/Tests/CodegenTests/XCTestManifests.swift @@ -0,0 +1,9 @@ +import XCTest + +#if !canImport(ObjectiveC) +public func allTests() -> [XCTestCaseEntry] { + return [ + testCase(CodegenTests.allTests), + ] +} +#endif diff --git a/Codegen/Tests/LinuxMain.swift b/Codegen/Tests/LinuxMain.swift new file mode 100644 index 00000000..1eb9b491 --- /dev/null +++ b/Codegen/Tests/LinuxMain.swift @@ -0,0 +1,7 @@ +import XCTest + +import CodegenTests + +var tests = [XCTestCaseEntry]() +tests += CodegenTests.allTests() +XCTMain(tests) diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 3bfd8f59..02f4c6e8 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -14,6 +14,9 @@ CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC1524B9AFC500CD29DD /* ProfileView.swift */; }; CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC1724B9B04900CD29DD /* HomeView.swift */; }; CF1E5E5D259CE88500035D50 /* Envfile in Resources */ = {isa = PBXBuildFile; fileRef = CF1E5E5C259CE88500035D50 /* Envfile */; }; + CF1E5E60259CEA5300035D50 /* Apollo in Frameworks */ = {isa = PBXBuildFile; productRef = CF1E5E5F259CEA5300035D50 /* Apollo */; }; + CF1E5E87259CF4CE00035D50 /* SearchWorksByID.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */; }; + CF1E5E89259CF69E00035D50 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1E5E88259CF69E00035D50 /* API.swift */; }; CF42CFD124C9D73400AAD8E8 /* Work.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD024C9D73400AAD8E8 /* Work.swift */; }; CF42CFD324C9D7D300AAD8E8 /* Activity.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD224C9D7D300AAD8E8 /* Activity.swift */; }; CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */; }; @@ -60,6 +63,8 @@ CF08FC1524B9AFC500CD29DD /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; CF08FC1724B9B04900CD29DD /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; CF1E5E5C259CE88500035D50 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = ""; }; + CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorksByID.graphql; sourceTree = ""; }; + CF1E5E88259CF69E00035D50 /* API.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; }; CF42CFD024C9D73400AAD8E8 /* Work.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Work.swift; sourceTree = ""; }; CF42CFD224C9D7D300AAD8E8 /* Activity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Activity.swift; sourceTree = ""; }; CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewModel.swift; sourceTree = ""; }; @@ -87,6 +92,7 @@ buildActionMask = 2147483647; files = ( CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */, + CF1E5E60259CEA5300035D50 /* Apollo in Frameworks */, CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -113,6 +119,7 @@ CF08FC0524B9AD1A00CD29DD /* Sources */ = { isa = PBXGroup; children = ( + CF1E5E88259CF69E00035D50 /* API.swift */, CFE38316258E621400CEE318 /* Common */, CFE38311258E5FD000CEE318 /* Test */, CFB8D8B9255D18740092764B /* Root */, @@ -139,6 +146,14 @@ path = "Preview Content"; sourceTree = ""; }; + CF1E5E85259CF4B800035D50 /* Query */ = { + isa = PBXGroup; + children = ( + CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */, + ); + path = Query; + sourceTree = ""; + }; CF42CFCF24C9D72800AAD8E8 /* Models */ = { isa = PBXGroup; children = ( @@ -190,6 +205,7 @@ CFE38317258E621A00CEE318 /* API */ = { isa = PBXGroup; children = ( + CF1E5E85259CF4B800035D50 /* Query */, CFE38318258E623700CEE318 /* REST */, ); path = API; @@ -244,6 +260,7 @@ packageProductDependencies = ( CFCA3FEA255DAB4900AA2469 /* Fluxer */, CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */, + CF1E5E5F259CEA5300035D50 /* Apollo */, ); productName = Portannict; productReference = CF08FC0324B9AD1A00CD29DD /* Portannict.app */; @@ -275,6 +292,7 @@ packageReferences = ( CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */, CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */, + CF1E5E5E259CEA5300035D50 /* XCRemoteSwiftPackageReference "apollo-ios" */, ); productRefGroup = CF08FC0424B9AD1A00CD29DD /* Products */; projectDirPath = ""; @@ -293,6 +311,7 @@ CF1E5E5D259CE88500035D50 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, + CF1E5E87259CF4CE00035D50 /* SearchWorksByID.graphql in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -325,6 +344,7 @@ CF42CFD324C9D7D300AAD8E8 /* Activity.swift in Sources */, CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */, CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */, + CF1E5E89259CF69E00035D50 /* API.swift in Sources */, CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -516,6 +536,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + CF1E5E5E259CEA5300035D50 /* XCRemoteSwiftPackageReference "apollo-ios" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/apollographql/apollo-ios.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.39.0; + }; + }; CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "git@github.com:touyu/Fluxer.git"; @@ -535,6 +563,11 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + CF1E5E5F259CEA5300035D50 /* Apollo */ = { + isa = XCSwiftPackageProductDependency; + package = CF1E5E5E259CEA5300035D50 /* XCRemoteSwiftPackageReference "apollo-ios" */; + productName = Apollo; + }; CFCA3FEA255DAB4900AA2469 /* Fluxer */ = { isa = XCSwiftPackageProductDependency; package = CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */; diff --git a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index aa2edb7a..a6ebf8e1 100644 --- a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,6 +1,15 @@ { "object": { "pins": [ + { + "package": "Apollo", + "repositoryURL": "https://github.com/apollographql/apollo-ios.git", + "state": { + "branch": null, + "revision": "ac158ccaad973ff44f8c2a78a50933c29f34bdd9", + "version": "0.39.0" + } + }, { "package": "Fluxer", "repositoryURL": "git@github.com:touyu/Fluxer.git", @@ -10,6 +19,15 @@ "version": null } }, + { + "package": "InflectorKit", + "repositoryURL": "https://github.com/apollographql/InflectorKit", + "state": { + "branch": null, + "revision": "b1d0099abe36facd198113633f502889842906af", + "version": "0.0.2" + } + }, { "package": "Kingfisher", "repositoryURL": "https://github.com/onevcat/Kingfisher", @@ -18,6 +36,60 @@ "revision": "2a10bf41da75599a9f8e872dbd44fe0155a2e00c", "version": "5.15.8" } + }, + { + "package": "PathKit", + "repositoryURL": "https://github.com/kylef/PathKit.git", + "state": { + "branch": null, + "revision": "73f8e9dca9b7a3078cb79128217dc8f2e585a511", + "version": "1.0.0" + } + }, + { + "package": "Spectre", + "repositoryURL": "https://github.com/kylef/Spectre.git", + "state": { + "branch": null, + "revision": "f79d4ecbf8bc4e1579fbd86c3e1d652fb6876c53", + "version": "0.9.2" + } + }, + { + "package": "SQLite.swift", + "repositoryURL": "https://github.com/stephencelis/SQLite.swift.git", + "state": { + "branch": null, + "revision": "0a9893ec030501a3956bee572d6b4fdd3ae158a1", + "version": "0.12.2" + } + }, + { + "package": "Starscream", + "repositoryURL": "https://github.com/daltoniam/Starscream", + "state": { + "branch": null, + "revision": "e6b65c6d9077ea48b4a7bdda8994a1d3c6969c8d", + "version": "3.1.1" + } + }, + { + "package": "Stencil", + "repositoryURL": "https://github.com/stencilproject/Stencil.git", + "state": { + "branch": null, + "revision": "94197b3adbbf926348ad8765476a158aa4e54f8a", + "version": "0.14.0" + } + }, + { + "package": "swift-nio-zlib-support", + "repositoryURL": "https://github.com/apple/swift-nio-zlib-support.git", + "state": { + "branch": null, + "revision": "37760e9a52030bb9011972c5213c3350fa9d41fd", + "version": "1.0.0" + } } ] }, diff --git a/Sources/API.swift b/Sources/API.swift new file mode 100644 index 00000000..c368c7a9 --- /dev/null +++ b/Sources/API.swift @@ -0,0 +1,145 @@ +// @generated +// This file was automatically generated and should not be edited. + +import Apollo +import Foundation + +public final class SearchWorksByIdQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query SearchWorksByID($annictId: Int!, $after: String) { + searchWorks(annictIds: [$annictId]) { + __typename + nodes { + __typename + title + } + } + } + """ + + public let operationName: String = "SearchWorksByID" + + public let operationIdentifier: String? = "08dc30ef401cc85bcff5882236bd4fa8c3c53a7b472e27244411992272b88395" + + public var annictId: Int + public var after: String? + + public init(annictId: Int, after: String? = nil) { + self.annictId = annictId + self.after = after + } + + public var variables: GraphQLMap? { + return ["annictId": annictId, "after": after] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("searchWorks", arguments: ["annictIds": [GraphQLVariable("annictId")]], type: .object(SearchWork.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(searchWorks: SearchWork? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) + } + + public var searchWorks: SearchWork? { + get { + return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") + } + } + + public struct SearchWork: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("nodes", type: .list(.object(Node.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(nodes: [Node?]? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of nodes. + public var nodes: [Node?]? { + get { + return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(title: String) { + self.init(unsafeResultMap: ["__typename": "Work", "title": title]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + } + } + } +} diff --git a/Sources/Common/API/Query/SearchWorksByID.graphql b/Sources/Common/API/Query/SearchWorksByID.graphql new file mode 100644 index 00000000..aecb44d3 --- /dev/null +++ b/Sources/Common/API/Query/SearchWorksByID.graphql @@ -0,0 +1,7 @@ +query SearchWorksByID($annictId: Int!, $after: String) { + searchWorks(annictIds: [$annictId]) { + nodes { + title + } + } +} diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json new file mode 100644 index 00000000..48be1a45 --- /dev/null +++ b/Sources/operationIDs.json @@ -0,0 +1,6 @@ +{ + "08dc30ef401cc85bcff5882236bd4fa8c3c53a7b472e27244411992272b88395": { + "name": "SearchWorksByID", + "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId]) {\n __typename\n nodes {\n __typename\n title\n }\n }\n}" + } +} \ No newline at end of file diff --git a/Sources/schema.json b/Sources/schema.json new file mode 100644 index 00000000..c7dbcc2c --- /dev/null +++ b/Sources/schema.json @@ -0,0 +1,10238 @@ +{ + "__schema": { + "queryType": { + "name": "Query" + }, + "mutationType": { + "name": "Mutation" + }, + "subscriptionType": null, + "types": [ + { + "kind": "OBJECT", + "name": "Query", + "description": null, + "fields": [ + { + "name": "node", + "description": "Fetches an object given its ID.", + "args": [ + { + "name": "id", + "description": "ID of the object.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "Fetches a list of objects given a list of IDs.", + "args": [ + { + "name": "ids", + "description": "IDs of the objects.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + } + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "searchCharacters", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "annictIds", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "names", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "CharacterOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CharacterConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "searchEpisodes", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "annictIds", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "EpisodeOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "EpisodeConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "searchOrganizations", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "annictIds", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "names", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "OrganizationOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "OrganizationConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "searchPeople", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "annictIds", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "names", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "PersonOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "PersonConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "searchWorks", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "annictIds", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "seasons", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "titles", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "WorkOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "WorkConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "user", + "description": null, + "args": [ + { + "name": "username", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "User", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "viewer", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "User", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "ID", + "description": "The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INTERFACE", + "name": "Node", + "description": "An object with an ID.", + "fields": [ + { + "name": "id", + "description": "ID of the object.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": [ + { + "kind": "OBJECT", + "name": "Character", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Series", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Work", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Cast", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Person", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Prefecture", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Episode", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Record", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "User", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "MultipleRecord", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Review", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Status", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Activity", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Program", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Channel", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "ChannelGroup", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "WorkImage", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Staff", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Organization", + "ofType": null + } + ] + }, + { + "kind": "SCALAR", + "name": "String", + "description": "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Int", + "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CharacterOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CharacterOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CharacterOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FAVORITE_CHARACTERS_COUNT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "OrderDirection", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CharacterConnection", + "description": "The connection type for Character.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CharacterEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Character", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CharacterEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Character", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Character", + "description": null, + "fields": [ + { + "name": "age", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ageEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "birthday", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "birthdayEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "bloodType", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "bloodTypeEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "descriptionEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "descriptionSource", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "descriptionSourceEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "favoriteCharactersCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "height", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "heightEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameKana", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nationality", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nationalityEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nickname", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nicknameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "occupation", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "occupationEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "series", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Series", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "weight", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "weightEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Series", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameRo", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "works", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "SeriesWorkOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "SeriesWorkConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "SeriesWorkOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "SeriesWorkOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "SeriesWorkOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "SEASON", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SeriesWorkConnection", + "description": "The connection type for Work.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "SeriesWorkEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SeriesWorkEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "summary", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "summaryEn", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Work", + "description": "An anime title", + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "casts", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "CastOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CastConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "episodes", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "EpisodeOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "EpisodeConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "episodesCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "image", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "WorkImage", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "malAnimeId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "media", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "Media", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "noEpisodes", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "officialSiteUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "officialSiteUrlEn", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "programs", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "ProgramOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "ProgramConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "reviews", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "ReviewOrder", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "hasBody", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "ReviewConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "reviewsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "satisfactionRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "seasonName", + "description": null, + "args": [], + "type": { + "kind": "ENUM", + "name": "SeasonName", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "seasonYear", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "seriesList", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "SeriesConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "staffs", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "StaffOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "StaffConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "syobocalTid", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "title", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "titleEn", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "titleKana", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "titleRo", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterHashtag", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterUsername", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "viewerStatusState", + "description": null, + "args": [], + "type": { + "kind": "ENUM", + "name": "StatusState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "watchersCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "wikipediaUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "wikipediaUrlEn", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CastOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CastOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CastOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SORT_NUMBER", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CastConnection", + "description": "The connection type for Cast.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CastEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Cast", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CastEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Cast", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Cast", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "character", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Character", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "person", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Person", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sortNumber", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Person", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "birthday", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "bloodType", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "castsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "favoritePeopleCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "genderText", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "height", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameKana", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nickname", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nicknameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "prefecture", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Prefecture", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "staffsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterUsername", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterUsernameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "url", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "urlEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "wikipediaUrl", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "wikipediaUrlEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Prefecture", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "PageInfo", + "description": "Information about pagination in a connection.", + "fields": [ + { + "name": "endCursor", + "description": "When paginating forwards, the cursor to continue.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hasNextPage", + "description": "When paginating forwards, are there more items?", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hasPreviousPage", + "description": "When paginating backwards, are there more items?", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "startCursor", + "description": "When paginating backwards, the cursor to continue.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Boolean", + "description": "The `Boolean` scalar type represents `true` or `false`.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "EpisodeOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "EpisodeOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "EpisodeOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SORT_NUMBER", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "EpisodeConnection", + "description": "The connection type for Episode.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "EpisodeEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Episode", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "EpisodeEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Episode", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Episode", + "description": "An episode of a work", + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nextEpisode", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Episode", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "number", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "numberText", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "prevEpisode", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Episode", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "recordCommentsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "records", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "RecordOrder", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "hasComment", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "RecordConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "recordsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "satisfactionRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sortNumber", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "title", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "viewerDidTrack", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "viewerRecordsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "RecordOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "RecordOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "RecordOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LIKES_COUNT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "RecordConnection", + "description": "The connection type for Record.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "RecordEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Record", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "RecordEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Record", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Record", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "comment", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commentsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "episode", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Episode", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "facebookClickCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "likesCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "modified", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "rating", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ratingState", + "description": null, + "args": [], + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterClickCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "user", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "DateTime", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Float", + "description": "The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "RatingState", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "GREAT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "GOOD", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "AVERAGE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BAD", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "User", + "description": null, + "fields": [ + { + "name": "activities", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "ActivityOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "ActivityConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "avatarUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "backgroundImageUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "email", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "followers", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "UserConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "followersCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "following", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "UserConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "followingActivities", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "ActivityOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "ActivityConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "followingsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "notificationsCount", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onHoldCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "programs", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "unwatched", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "ProgramOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "ProgramConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "records", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "RecordOrder", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "hasComment", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "RecordConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "recordsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "stopWatchingCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "url", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "username", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "viewerCanFollow", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "viewerIsFollowing", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "wannaWatchCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "watchedCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "watchingCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "works", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "annictIds", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "seasons", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "titles", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + }, + { + "name": "state", + "description": null, + "type": { + "kind": "ENUM", + "name": "StatusState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "WorkOrder", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "WorkConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "ActivityOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "ActivityOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "ActivityOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ActivityConnection", + "description": "The connection type for Activity.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ActivityEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Activity", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ActivityEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "action", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "ActivityAction", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": null, + "args": [], + "type": { + "kind": "UNION", + "name": "ActivityItem", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "user", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "ActivityAction", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "UNION", + "name": "ActivityItem", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": [ + { + "kind": "OBJECT", + "name": "MultipleRecord", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Record", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Review", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Status", + "ofType": null + } + ] + }, + { + "kind": "OBJECT", + "name": "MultipleRecord", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "records", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "RecordConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "user", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Review", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "body", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "impressionsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "likesCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "modifiedAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ratingAnimationState", + "description": null, + "args": [], + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ratingCharacterState", + "description": null, + "args": [], + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ratingMusicState", + "description": null, + "args": [], + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ratingOverallState", + "description": null, + "args": [], + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ratingStoryState", + "description": null, + "args": [], + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "title", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "user", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Status", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "likesCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "StatusState", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "user", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "StatusState", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "WANNA_WATCH", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "WATCHING", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "WATCHED", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ON_HOLD", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STOP_WATCHING", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NO_STATE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Activity", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": "ID of the object.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "user", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "UserConnection", + "description": "The connection type for User.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "UserEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "UserEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "User", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "ProgramOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "ProgramOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "ProgramOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "STARTED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ProgramConnection", + "description": "The connection type for Program.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ProgramEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Program", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ProgramEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Program", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Program", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "channel", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Channel", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "episode", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Episode", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "rebroadcast", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "scPid", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "startedAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "ProgramState", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Channel", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "channelGroup", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ChannelGroup", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "programs", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "ProgramConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "published", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "scChid", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ChannelGroup", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "channels", + "description": null, + "args": [ + { + "name": "after", + "description": "Returns the elements in the list that come after the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "before", + "description": "Returns the elements in the list that come before the specified cursor.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": "Returns the first _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "last", + "description": "Returns the last _n_ elements from the list.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "ChannelConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sortNumber", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ChannelConnection", + "description": "The connection type for Channel.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ChannelEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Channel", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ChannelEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Channel", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "ProgramState", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "PUBLISHED", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "HIDDEN", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "WorkOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "WorkOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "WorkOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEASON", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "WATCHERS_COUNT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "WorkConnection", + "description": "The connection type for Work.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "WorkEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "WorkEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "WorkImage", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "facebookOgImageUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "internalUrl", + "description": null, + "args": [ + { + "name": "size", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "recommendedImageUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterAvatarUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterBiggerAvatarUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterMiniAvatarUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterNormalAvatarUrl", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "Media", + "description": "Media of anime", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "TV", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OVA", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MOVIE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "WEB", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OTHER", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "ReviewOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "ReviewOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "ReviewOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LIKES_COUNT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ReviewConnection", + "description": "The connection type for Review.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ReviewEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Review", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ReviewEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Review", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "SeasonName", + "description": "Season name", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "WINTER", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SPRING", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUMMER", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "AUTUMN", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SeriesConnection", + "description": "The connection type for Series.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "SeriesEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Series", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SeriesEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Series", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "StaffOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "StaffOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "StaffOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SORT_NUMBER", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "StaffConnection", + "description": "The connection type for Staff.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "StaffEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Staff", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "StaffEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Staff", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Staff", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "resource", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "UNION", + "name": "StaffResourceItem", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "roleOther", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "roleOtherEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "roleText", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sortNumber", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "UNION", + "name": "StaffResourceItem", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": [ + { + "kind": "OBJECT", + "name": "Organization", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "Person", + "ofType": null + } + ] + }, + { + "kind": "OBJECT", + "name": "Organization", + "description": null, + "fields": [ + { + "name": "annictId", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "favoriteOrganizationsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nameKana", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "staffsCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterUsername", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "twitterUsernameEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "url", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "urlEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "wikipediaUrl", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "wikipediaUrlEn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "OrganizationOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrganizationOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "OrganizationOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FAVORITE_ORGANIZATIONS_COUNT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "OrganizationConnection", + "description": "The connection type for Organization.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "OrganizationEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Organization", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "OrganizationEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Organization", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "PersonOrder", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "field", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "PersonOrderField", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "direction", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "PersonOrderField", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "CREATED_AT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FAVORITE_PEOPLE_COUNT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "PersonConnection", + "description": "The connection type for Person.", + "fields": [ + { + "name": "edges", + "description": "A list of edges.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PersonEdge", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of nodes.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Person", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "PersonEdge", + "description": "An edge in a connection.", + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The item at the end of the edge.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "Person", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Mutation", + "description": null, + "fields": [ + { + "name": "createRecord", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CreateRecordInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CreateRecordPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createReview", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CreateReviewInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CreateReviewPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deleteRecord", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "DeleteRecordInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "DeleteRecordPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deleteReview", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "DeleteReviewInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "DeleteReviewPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updateRecord", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "UpdateRecordInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "UpdateRecordPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updateReview", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "UpdateReviewInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "UpdateReviewPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updateStatus", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "UpdateStatusInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "UpdateStatusPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CreateRecordInput", + "description": "Autogenerated input type of CreateRecord", + "fields": null, + "inputFields": [ + { + "name": "episodeId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "comment", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "ratingState", + "description": null, + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "shareTwitter", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "shareFacebook", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CreateRecordPayload", + "description": "Autogenerated return type of CreateRecord", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "record", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Record", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CreateReviewInput", + "description": "Autogenerated input type of CreateReview", + "fields": null, + "inputFields": [ + { + "name": "workId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "title", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "body", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "ratingOverallState", + "description": null, + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "ratingAnimationState", + "description": null, + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "ratingMusicState", + "description": null, + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "ratingStoryState", + "description": null, + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "ratingCharacterState", + "description": null, + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "shareTwitter", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "shareFacebook", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CreateReviewPayload", + "description": "Autogenerated return type of CreateReview", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "review", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Review", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "DeleteRecordInput", + "description": "Autogenerated input type of DeleteRecord", + "fields": null, + "inputFields": [ + { + "name": "recordId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "DeleteRecordPayload", + "description": "Autogenerated return type of DeleteRecord", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "episode", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Episode", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "DeleteReviewInput", + "description": "Autogenerated input type of DeleteReview", + "fields": null, + "inputFields": [ + { + "name": "reviewId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "DeleteReviewPayload", + "description": "Autogenerated return type of DeleteReview", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "UpdateRecordInput", + "description": "Autogenerated input type of UpdateRecord", + "fields": null, + "inputFields": [ + { + "name": "recordId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "comment", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "ratingState", + "description": null, + "type": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "shareTwitter", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "shareFacebook", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "UpdateRecordPayload", + "description": "Autogenerated return type of UpdateRecord", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "record", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Record", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "UpdateReviewInput", + "description": "Autogenerated input type of UpdateReview", + "fields": null, + "inputFields": [ + { + "name": "reviewId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "title", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "body", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "ratingOverallState", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "ratingAnimationState", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "ratingMusicState", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "ratingStoryState", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "ratingCharacterState", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "RatingState", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "shareTwitter", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "shareFacebook", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "UpdateReviewPayload", + "description": "Autogenerated return type of UpdateReview", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "review", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Review", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "UpdateStatusInput", + "description": "Autogenerated input type of UpdateStatus", + "fields": null, + "inputFields": [ + { + "name": "workId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "state", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "StatusState", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "UpdateStatusPayload", + "description": "Autogenerated return type of UpdateStatus", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "work", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Work", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Schema", + "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", + "fields": [ + { + "name": "types", + "description": "A list of all types supported by this server.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "queryType", + "description": "The type that query operations will be rooted at.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mutationType", + "description": "If this server supports mutation, the type that mutation operations will be rooted at.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "subscriptionType", + "description": "If this server support subscription, the type that subscription operations will be rooted at.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "directives", + "description": "A list of all directives supported by this server.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Directive", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Type", + "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.", + "fields": [ + { + "name": "kind", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "__TypeKind", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "fields", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false" + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Field", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "interfaces", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "possibleTypes", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "enumValues", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false" + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__EnumValue", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inputFields", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ofType", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "__TypeKind", + "description": "An enum describing what kind of type a given `__Type` is.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "SCALAR", + "description": "Indicates this type is a scalar.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OBJECT", + "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INTERFACE", + "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UNION", + "description": "Indicates this type is a union. `possibleTypes` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM", + "description": "Indicates this type is an enum. `enumValues` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_OBJECT", + "description": "Indicates this type is an input object. `inputFields` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LIST", + "description": "Indicates this type is a list. `ofType` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NON_NULL", + "description": "Indicates this type is a non-null. `ofType` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Field", + "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.", + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "args", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__InputValue", + "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.", + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "defaultValue", + "description": "A GraphQL-formatted string representing the default value for this input value.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__EnumValue", + "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.", + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Directive", + "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "locations", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "__DirectiveLocation", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "args", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "__DirectiveLocation", + "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "QUERY", + "description": "Location adjacent to a query operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MUTATION", + "description": "Location adjacent to a mutation operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUBSCRIPTION", + "description": "Location adjacent to a subscription operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIELD", + "description": "Location adjacent to a field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FRAGMENT_DEFINITION", + "description": "Location adjacent to a fragment definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FRAGMENT_SPREAD", + "description": "Location adjacent to a fragment spread.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INLINE_FRAGMENT", + "description": "Location adjacent to an inline fragment.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "VARIABLE_DEFINITION", + "description": "Location adjacent to a variable definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SCHEMA", + "description": "Location adjacent to a schema definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SCALAR", + "description": "Location adjacent to a scalar definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OBJECT", + "description": "Location adjacent to an object type definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIELD_DEFINITION", + "description": "Location adjacent to a field definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ARGUMENT_DEFINITION", + "description": "Location adjacent to an argument definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INTERFACE", + "description": "Location adjacent to an interface definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UNION", + "description": "Location adjacent to a union definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM", + "description": "Location adjacent to an enum definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM_VALUE", + "description": "Location adjacent to an enum value definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_OBJECT", + "description": "Location adjacent to an input object type definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_FIELD_DEFINITION", + "description": "Location adjacent to an input object field definition.", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + } + ], + "directives": [ + { + "name": "skip", + "description": "Directs the executor to skip this field or fragment when the `if` argument is true.", + "locations": [ + "FIELD", + "FRAGMENT_SPREAD", + "INLINE_FRAGMENT" + ], + "args": [ + { + "name": "if", + "description": "Skipped when true.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null + } + ] + }, + { + "name": "include", + "description": "Directs the executor to include this field or fragment only when the `if` argument is true.", + "locations": [ + "FIELD", + "FRAGMENT_SPREAD", + "INLINE_FRAGMENT" + ], + "args": [ + { + "name": "if", + "description": "Included when true.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null + } + ] + }, + { + "name": "deprecated", + "description": "Marks an element of a GraphQL schema as no longer supported.", + "locations": [ + "FIELD_DEFINITION", + "ENUM_VALUE" + ], + "args": [ + { + "name": "reason", + "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax (as specified by [CommonMark](https://commonmark.org/).", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": "\"No longer supported\"" + } + ] + }, + { + "name": "client", + "description": "Direct the client to resolve this field locally, either from the cache or local resolvers.", + "locations": [ + "FIELD", + "FRAGMENT_DEFINITION", + "INLINE_FRAGMENT" + ], + "args": [ + { + "name": "always", + "description": "When true, the client will never use the cache for this value. See\nhttps://www.apollographql.com/docs/react/essentials/local-state/#forcing-resolvers-with-clientalways-true", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null + } + ] + }, + { + "name": "export", + "description": "Export this locally resolved field as a variable to be used in the remainder of this query. See\nhttps://www.apollographql.com/docs/react/essentials/local-state/#using-client-fields-as-variables", + "locations": [ + "FIELD" + ], + "args": [ + { + "name": "as", + "description": "The variable name to export this field as.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + } + ] + }, + { + "name": "connection", + "description": "Specify a custom store key for this result. See\nhttps://www.apollographql.com/docs/react/advanced/caching/#the-connection-directive", + "locations": [ + "FIELD" + ], + "args": [ + { + "name": "key", + "description": "Specify the store key.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "filter", + "description": "An array of query argument names to include in the generated custom store key.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null + } + ] + } + ] + } +} \ No newline at end of file From 6153c0ec916535944c4a8f615c88d5f971b61523 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 31 Dec 2020 03:01:29 +0900 Subject: [PATCH 014/101] Fix --- Portannict.xcodeproj/project.pbxproj | 22 +++++++++++++++++++ Sources/API.swift | 6 ++--- .../Common/API/Query/SearchWorksByID.graphql | 2 +- Sources/operationIDs.json | 4 ++-- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 02f4c6e8..4cb94398 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -247,6 +247,7 @@ isa = PBXNativeTarget; buildConfigurationList = CF08FC1224B9AD1A00CD29DD /* Build configuration list for PBXNativeTarget "Portannict" */; buildPhases = ( + CF1E5E8A259CF79B00035D50 /* Apollo Codegen */, CF08FBFF24B9AD1A00CD29DD /* Sources */, CF08FC0024B9AD1A00CD29DD /* Frameworks */, CF08FC0124B9AD1A00CD29DD /* Resources */, @@ -317,6 +318,27 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + CF1E5E8A259CF79B00035D50 /* Apollo Codegen */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Apollo Codegen"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cd \"${SRCROOT}\"/Codegen\nxcrun -sdk macosx swift run\n"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ CF08FBFF24B9AD1A00CD29DD /* Sources */ = { isa = PBXSourcesBuildPhase; diff --git a/Sources/API.swift b/Sources/API.swift index c368c7a9..bdd03e80 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -9,7 +9,7 @@ public final class SearchWorksByIdQuery: GraphQLQuery { public let operationDefinition: String = """ query SearchWorksByID($annictId: Int!, $after: String) { - searchWorks(annictIds: [$annictId]) { + searchWorks(annictIds: [$annictId], after: $after) { __typename nodes { __typename @@ -21,7 +21,7 @@ public final class SearchWorksByIdQuery: GraphQLQuery { public let operationName: String = "SearchWorksByID" - public let operationIdentifier: String? = "08dc30ef401cc85bcff5882236bd4fa8c3c53a7b472e27244411992272b88395" + public let operationIdentifier: String? = "3b9eb2da1c386ed036fff333db148c6ded4bdf64326c73ec4b41dab4a3d31745" public var annictId: Int public var after: String? @@ -40,7 +40,7 @@ public final class SearchWorksByIdQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ - GraphQLField("searchWorks", arguments: ["annictIds": [GraphQLVariable("annictId")]], type: .object(SearchWork.selections)), + GraphQLField("searchWorks", arguments: ["annictIds": [GraphQLVariable("annictId")], "after": GraphQLVariable("after")], type: .object(SearchWork.selections)), ] } diff --git a/Sources/Common/API/Query/SearchWorksByID.graphql b/Sources/Common/API/Query/SearchWorksByID.graphql index aecb44d3..04e4dc78 100644 --- a/Sources/Common/API/Query/SearchWorksByID.graphql +++ b/Sources/Common/API/Query/SearchWorksByID.graphql @@ -1,5 +1,5 @@ query SearchWorksByID($annictId: Int!, $after: String) { - searchWorks(annictIds: [$annictId]) { + searchWorks(annictIds: [$annictId], after: $after) { nodes { title } diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 48be1a45..3ff898da 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -1,6 +1,6 @@ { - "08dc30ef401cc85bcff5882236bd4fa8c3c53a7b472e27244411992272b88395": { + "3b9eb2da1c386ed036fff333db148c6ded4bdf64326c73ec4b41dab4a3d31745": { "name": "SearchWorksByID", - "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId]) {\n __typename\n nodes {\n __typename\n title\n }\n }\n}" + "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId], after: $after) {\n __typename\n nodes {\n __typename\n title\n }\n }\n}" } } \ No newline at end of file From 0dfda15205098b1858e644a61cf9efc3d7dade4a Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 31 Dec 2020 03:02:15 +0900 Subject: [PATCH 015/101] Update main.swift --- Codegen/Sources/Codegen/main.swift | 35 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/Codegen/Sources/Codegen/main.swift b/Codegen/Sources/Codegen/main.swift index 430f90a7..6e672f62 100644 --- a/Codegen/Sources/Codegen/main.swift +++ b/Codegen/Sources/Codegen/main.swift @@ -15,13 +15,6 @@ let sourceRootURL = parentFolderOfScriptFile let targetRootURL = sourceRootURL .apollo.childFolderURL(folderName: "Sources") -// Set up the URL you want to use to download the project -let endpoint = URL(string: "https://api.annict.com/graphql")! - -// Create an options object for downloading the schema -let schemaDownloadOptions = ApolloSchemaOptions(endpointURL: endpoint, - headers: ["Authorization: Bearer 1Nr6dv0PB1DRdugaL8GAHtPtirQXCdq7embWuBKXg1k"], - outputFolderURL: targetRootURL) // // Calculate where you want to create the folder where the CLI will // be downloaded by the ApolloCodegenLib framework. @@ -29,16 +22,24 @@ let cliFolderURL = sourceRootURL .apollo.childFolderURL(folderName: "Codegen") .apollo.childFolderURL(folderName: "ApolloCLI") -do { - // Actually attempt to download the schema. - try ApolloSchemaDownloader.run(with: cliFolderURL, - options: schemaDownloadOptions) -} catch { - // This makes the error message in Xcode a lot more legible, - // and prevents the script from continuing to try to generate - // code if the schema download failed. - exit(1) -} +//// Set up the URL you want to use to download the project +//let endpoint = URL(string: "https://api.annict.com/graphql")! +// +//// Create an options object for downloading the schema +//let schemaDownloadOptions = ApolloSchemaOptions(endpointURL: endpoint, +// headers: ["Authorization: Bearer 1Nr6dv0PB1DRdugaL8GAHtPtirQXCdq7embWuBKXg1k"], +// outputFolderURL: targetRootURL) + +//do { +// // Actually attempt to download the schema. +// try ApolloSchemaDownloader.run(with: cliFolderURL, +// options: schemaDownloadOptions) +//} catch { +// // This makes the error message in Xcode a lot more legible, +// // and prevents the script from continuing to try to generate +// // code if the schema download failed. +// exit(1) +//} // Create the default Codegen options object (assumes schema.json // is in the target root folder, all queries are in some kind From 2224c5314a87d463d9cc3292706597a498fdcb9b Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 31 Dec 2020 03:08:55 +0900 Subject: [PATCH 016/101] Fix --- Podfile | 24 - Podfile.lock | 58 - .../xcschemes/Portannict.xcscheme | 78 + package-lock.json | 2441 ----------------- package.json | 22 - 5 files changed, 78 insertions(+), 2545 deletions(-) delete mode 100644 Podfile delete mode 100644 Podfile.lock create mode 100644 Portannict.xcodeproj/xcshareddata/xcschemes/Portannict.xcscheme delete mode 100644 package-lock.json delete mode 100644 package.json diff --git a/Podfile b/Podfile deleted file mode 100644 index e76d576e..00000000 --- a/Podfile +++ /dev/null @@ -1,24 +0,0 @@ -# Uncomment the next line to define a global platform for your project -platform :ios, '11.0' - -target 'Annict-for-iOS' do - # Comment the next line if you're not using Swift and don't want to use dynamic frameworks - use_frameworks! - - # Pods for Annict-for-iOS - pod 'RxSwift', '~> 5' - pod 'RxCocoa', '~> 5' - pod 'RxGesture' - pod 'ReactorKit' - pod 'SPStorkController' - pod 'SwiftDate', :git => 'git@github.com:touyu/SwiftDate.git' - -end - -plugin 'cocoapods-keys', { - :project => "Annict-for-iOS", - :keys => [ - "AnnictClientID", - "AnnictClientSecret", - "BaseImageURL" -]} diff --git a/Podfile.lock b/Podfile.lock deleted file mode 100644 index 441d7f1f..00000000 --- a/Podfile.lock +++ /dev/null @@ -1,58 +0,0 @@ -PODS: - - Keys (1.0.1) - - ReactorKit (2.0.1): - - RxSwift (~> 5.0) - - RxCocoa (5.0.0): - - RxRelay (~> 5) - - RxSwift (~> 5) - - RxGesture (3.0.0): - - RxCocoa (~> 5.0) - - RxSwift (~> 5.0) - - RxRelay (5.0.0): - - RxSwift (~> 5) - - RxSwift (5.0.0) - - SPStorkController (1.7.9) - - SwiftDate (6.0.3) - -DEPENDENCIES: - - Keys (from `Pods/CocoaPodsKeys`) - - ReactorKit - - RxCocoa (~> 5) - - RxGesture - - RxSwift (~> 5) - - SPStorkController - - "SwiftDate (from `git@github.com:touyu/SwiftDate.git`)" - -SPEC REPOS: - https://github.com/cocoapods/specs.git: - - ReactorKit - - RxCocoa - - RxGesture - - RxRelay - - RxSwift - - SPStorkController - -EXTERNAL SOURCES: - Keys: - :path: Pods/CocoaPodsKeys - SwiftDate: - :git: "git@github.com:touyu/SwiftDate.git" - -CHECKOUT OPTIONS: - SwiftDate: - :commit: 7d5f5da5727d0adc81e5d2b7d30cd55bec253a7d - :git: "git@github.com:touyu/SwiftDate.git" - -SPEC CHECKSUMS: - Keys: a576f4c9c1c641ca913a959a9c62ed3f215a8de9 - ReactorKit: a63c5e11e0fd32d59d672e54178b0ed2876b764b - RxCocoa: fcf32050ac00d801f34a7f71d5e8e7f23026dcd8 - RxGesture: 0cd8e37ff9a266e1c31f46bcaed6de1c536bc81e - RxRelay: 4f7409406a51a55cd88483f21ed898c234d60f18 - RxSwift: 8b0671caa829a763bbce7271095859121cbd895f - SPStorkController: 36bd84206267232747b19d48852659bd71ede28f - SwiftDate: f86a9de882243beb90f8ada88a9108fbe8479c59 - -PODFILE CHECKSUM: 291f368b7b1345cb9155d47bcc5bff2581c4d3e8 - -COCOAPODS: 1.5.3 diff --git a/Portannict.xcodeproj/xcshareddata/xcschemes/Portannict.xcscheme b/Portannict.xcodeproj/xcshareddata/xcschemes/Portannict.xcscheme new file mode 100644 index 00000000..707f37a1 --- /dev/null +++ b/Portannict.xcodeproj/xcshareddata/xcschemes/Portannict.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index fd1de538..00000000 --- a/package-lock.json +++ /dev/null @@ -1,2441 +0,0 @@ -{ - "name": "portannict", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@apollo/federation": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@apollo/federation/-/federation-0.11.0.tgz", - "integrity": "sha512-kzhnNl+G9G18R3tSkZ9kZKvDZq0Pq1X9WtbOLC+K2GfTvYLTIE5BG/21LuPZb9gO7W1/Xf1iquvMMGZdpILwRw==", - "requires": { - "apollo-graphql": "^0.3.4", - "apollo-server-env": "^2.4.3", - "core-js": "^3.4.0", - "lodash.xorby": "^4.7.0" - } - }, - "@apollographql/apollo-tools": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.4.1.tgz", - "integrity": "sha512-9NaTBPX+YYCsio6AqnLHlLiqYBszgTBul2qzG2+YNZ/1RQ2owhO/7xB5XJyQz76NGOefORaZt5idwvTJXpg/Sg==", - "requires": { - "apollo-env": "^0.6.0" - } - }, - "@apollographql/graphql-language-service-interface": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-language-service-interface/-/graphql-language-service-interface-2.0.2.tgz", - "integrity": "sha512-28wePK0hlIVjgmvMXMAUq8qRSjz9O+6lqFp4PzOTHtfJfSsjVe9EfjF98zTpHsTgT3HcOxmbqDZZy8jlXtOqEA==", - "requires": { - "@apollographql/graphql-language-service-parser": "^2.0.0", - "@apollographql/graphql-language-service-types": "^2.0.0", - "@apollographql/graphql-language-service-utils": "^2.0.2" - } - }, - "@apollographql/graphql-language-service-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-language-service-parser/-/graphql-language-service-parser-2.0.2.tgz", - "integrity": "sha512-rpTPrEJu1PMaRQxz5P8BZWsixNNhYloS0H0dwTxNBuE3qctbARvR7o8UCKLsmKgTbo+cz3T3a6IAsWlkHgMWGg==", - "requires": { - "@apollographql/graphql-language-service-types": "^2.0.0" - } - }, - "@apollographql/graphql-language-service-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-language-service-types/-/graphql-language-service-types-2.0.2.tgz", - "integrity": "sha512-vE+Dz8pG+Xa1Z2nMl82LoO66lQ6JqBUjaXqLDvS3eMjvA3N4hf+YUDOWfPdNZ0zjhHhHXzUIIZCkax6bXfFbzQ==" - }, - "@apollographql/graphql-language-service-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-language-service-utils/-/graphql-language-service-utils-2.0.2.tgz", - "integrity": "sha512-fDj5rWlTi/czvUS5t7V7I45Ai6bOO3Z7JARYj21Y2xxfbRGtJi6h8FvLX0N/EbzQgo/fiZc/HAhtfwn+OCjD7A==", - "requires": { - "@apollographql/graphql-language-service-types": "^2.0.0" - } - }, - "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", - "requires": { - "@babel/types": "^7.6.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/parser": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.4.tgz", - "integrity": "sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==" - }, - "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "@endemolshinegroup/cosmiconfig-typescript-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.1.tgz", - "integrity": "sha512-bhUR9035PbgL6A/nfLayjoqKo4W7hCtzxqVxq2cgDB+Ndpsa3dGIr71/ymgY3vCTCQaufkFxAcEeoECyJ498CA==", - "requires": { - "lodash.get": "^4", - "make-error": "^1", - "ts-node": "^8", - "tslib": "^1" - } - }, - "@oclif/color": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/@oclif/color/-/color-0.0.0.tgz", - "integrity": "sha512-KKd3W7eNwfNF061tr663oUNdt8EMnfuyf5Xv55SGWA1a0rjhWqS/32P7OeB7CbXcJUBdfVrPyR//1afaW12AWw==", - "requires": { - "ansi-styles": "^3.2.1", - "supports-color": "^5.4.0", - "tslib": "^1" - } - }, - "@oclif/command": { - "version": "1.5.19", - "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.5.19.tgz", - "integrity": "sha512-6+iaCMh/JXJaB2QWikqvGE9//wLEVYYwZd5sud8aLoLKog1Q75naZh2vlGVtg5Mq/NqpqGQvdIjJb3Bm+64AUQ==", - "requires": { - "@oclif/config": "^1", - "@oclif/errors": "^1.2.2", - "@oclif/parser": "^3.8.3", - "@oclif/plugin-help": "^2", - "debug": "^4.1.1", - "semver": "^5.6.0" - } - }, - "@oclif/config": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.13.3.tgz", - "integrity": "sha512-qs5XvGRw+1M41abOKCjd0uoeHCgsMxa2MurD2g2K8CtQlzlMXl0rW5idVeimIg5208LLuxkfzQo8TKAhhRCWLg==", - "requires": { - "@oclif/parser": "^3.8.0", - "debug": "^4.1.1", - "tslib": "^1.9.3" - } - }, - "@oclif/errors": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.2.2.tgz", - "integrity": "sha512-Eq8BFuJUQcbAPVofDxwdE0bL14inIiwt5EaKRVY9ZDIG11jwdXZqiQEECJx0VfnLyUZdYfRd/znDI/MytdJoKg==", - "requires": { - "clean-stack": "^1.3.0", - "fs-extra": "^7.0.0", - "indent-string": "^3.2.0", - "strip-ansi": "^5.0.0", - "wrap-ansi": "^4.0.0" - } - }, - "@oclif/linewrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz", - "integrity": "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==" - }, - "@oclif/parser": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.4.tgz", - "integrity": "sha512-cyP1at3l42kQHZtqDS3KfTeyMvxITGwXwH1qk9ktBYvqgMp5h4vHT+cOD74ld3RqJUOZY/+Zi9lb4Tbza3BtuA==", - "requires": { - "@oclif/linewrap": "^1.0.0", - "chalk": "^2.4.2", - "tslib": "^1.9.3" - } - }, - "@oclif/plugin-autocomplete": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.1.4.tgz", - "integrity": "sha512-ZyxJyL6jSt9Df68Smeu14xhZZwELE9IB5twhie1/56rt62nG6TJB4CZhaMqRk+33MDfU3JyWxNbIDMNMESlGqg==", - "requires": { - "@oclif/command": "^1.4.31", - "@oclif/config": "^1.6.22", - "@types/fs-extra": "^5.0.2", - "chalk": "^2.4.1", - "cli-ux": "^4.4.0", - "debug": "^3.1.0", - "fs-extra": "^6.0.1", - "moment": "^2.22.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "@oclif/plugin-help": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-2.2.1.tgz", - "integrity": "sha512-psEA3t41MSGBErLk6xCaAq2jKrRtx3Br+kHpd43vZeGEeZ7Gos4wgK0JAaHBbvhvUQskCHg8dzoqv4XEeTWeVQ==", - "requires": { - "@oclif/command": "^1.5.13", - "chalk": "^2.4.1", - "indent-string": "^3.2.0", - "lodash.template": "^4.4.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0", - "widest-line": "^2.0.1", - "wrap-ansi": "^4.0.0" - }, - "dependencies": { - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "@oclif/plugin-not-found": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-1.2.3.tgz", - "integrity": "sha512-Igbw2T4gLrb/f28Llr730FeMXBSI2PXdky2YvQfsZeQGDsyBZmC4gprJJtmrMWQcjz0B51IInRBnZYERvwfIpw==", - "requires": { - "@oclif/color": "^0.0.0", - "@oclif/command": "^1.5.3", - "cli-ux": "^4.9.0", - "fast-levenshtein": "^2.0.6", - "lodash": "^4.17.13" - } - }, - "@oclif/plugin-plugins": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@oclif/plugin-plugins/-/plugin-plugins-1.7.8.tgz", - "integrity": "sha512-GxLxaf8Lk1RqHVAIBZyA7hmhU7u5oV97i/OsWgFPdjPaT+BmWlWXR8IpmtA8giNo6atR+JpfgDmYndMU75zYUQ==", - "requires": { - "@oclif/color": "^0.0.0", - "@oclif/command": "^1.5.12", - "chalk": "^2.4.2", - "cli-ux": "^5.2.1", - "debug": "^4.1.0", - "fs-extra": "^7.0.1", - "http-call": "^5.2.2", - "load-json-file": "^5.2.0", - "npm-run-path": "^3.0.0", - "semver": "^5.6.0", - "tslib": "^1.9.3", - "yarn": "^1.15.0" - }, - "dependencies": { - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cli-ux": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.3.3.tgz", - "integrity": "sha512-a16g+BTjASUH41s1pevai4P3JKwhx85wkOSm6sXWsk6KkdSmDeJ16pSCn2x3nqK7W8n35igOu2YiW+qFkqLRJg==", - "requires": { - "@oclif/command": "^1.5.1", - "@oclif/errors": "^1.2.1", - "@oclif/linewrap": "^1.0.0", - "@oclif/screen": "^1.0.3", - "ansi-escapes": "^3.1.0", - "ansi-styles": "^3.2.1", - "cardinal": "^2.1.1", - "chalk": "^2.4.1", - "clean-stack": "^2.0.0", - "extract-stack": "^1.0.0", - "fs-extra": "^7.0.1", - "hyperlinker": "^1.0.0", - "indent-string": "^3.2.0", - "is-wsl": "^1.1.0", - "lodash": "^4.17.11", - "natural-orderby": "^2.0.1", - "password-prompt": "^1.1.2", - "semver": "^5.6.0", - "string-width": "^3.1.0", - "strip-ansi": "^5.1.0", - "supports-color": "^5.5.0", - "supports-hyperlinks": "^1.0.1", - "treeify": "^1.1.0", - "tslib": "^1.9.3" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "@oclif/plugin-warn-if-update-available": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-1.7.0.tgz", - "integrity": "sha512-Nwyz3BJ8RhsfQ+OmFSsJSPIfn5YJqMrCzPh72Zgo2jqIjKIBWD8N9vTTe4kZlpeUUn77SyXFfwlBQbNCL5OEuQ==", - "requires": { - "@oclif/command": "^1.5.10", - "@oclif/config": "^1.12.8", - "@oclif/errors": "^1.2.2", - "chalk": "^2.4.1", - "debug": "^4.1.0", - "fs-extra": "^7.0.0", - "http-call": "^5.2.2", - "lodash.template": "^4.4.0", - "semver": "^5.6.0" - } - }, - "@oclif/screen": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-1.0.4.tgz", - "integrity": "sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==" - }, - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", - "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", - "requires": { - "any-observable": "^0.3.0" - } - }, - "@types/fs-extra": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.1.0.tgz", - "integrity": "sha512-AInn5+UBFIK9FK5xc9yP5e3TQSPNNgjHByqYcj9g5elVBnDQcQL7PlO1CIRy2gWlbwK7UPYqi7vRvFA44dCmYQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/node": { - "version": "12.12.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", - "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==" - }, - "@wry/equality": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.9.tgz", - "integrity": "sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ==", - "requires": { - "tslib": "^1.9.3" - } - }, - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=" - }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==" - }, - "apollo": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/apollo/-/apollo-2.21.1.tgz", - "integrity": "sha512-bpQ+ToZS2HPBYzRCnv9hTbPmeuJZKDhOFy0EzxQhTPQPVqGkm1KZqFmFJZKdlydB6+XwIapdk0U1Q1utYKuXkQ==", - "requires": { - "@apollographql/apollo-tools": "^0.4.1", - "@oclif/command": "1.5.19", - "@oclif/config": "1.13.3", - "@oclif/errors": "1.2.2", - "@oclif/plugin-autocomplete": "0.1.4", - "@oclif/plugin-help": "2.2.1", - "@oclif/plugin-not-found": "1.2.3", - "@oclif/plugin-plugins": "1.7.8", - "@oclif/plugin-warn-if-update-available": "1.7.0", - "apollo-codegen-core": "^0.35.8", - "apollo-codegen-flow": "^0.33.33", - "apollo-codegen-scala": "^0.34.33", - "apollo-codegen-swift": "^0.35.13", - "apollo-codegen-typescript": "^0.35.8", - "apollo-env": "^0.6.0", - "apollo-graphql": "^0.3.5", - "apollo-language-server": "^1.17.1", - "chalk": "2.4.2", - "env-ci": "3.2.2", - "gaze": "1.1.3", - "git-parse": "1.0.3", - "git-rev-sync": "1.12.0", - "glob": "7.1.5", - "graphql": "14.0.2 - 14.2.0 || ^14.3.1", - "graphql-tag": "2.10.1", - "listr": "0.14.3", - "lodash.identity": "3.0.0", - "lodash.pickby": "4.6.0", - "moment": "2.24.0", - "strip-ansi": "5.2.0", - "table": "5.4.6", - "tty": "1.0.1", - "vscode-uri": "1.0.6" - } - }, - "apollo-codegen-core": { - "version": "0.35.8", - "resolved": "https://registry.npmjs.org/apollo-codegen-core/-/apollo-codegen-core-0.35.8.tgz", - "integrity": "sha512-MWa7/3NWc2TkXTamD8Kypr+7P/QPGb7OOR+kpvZlffySZzjKvyCYI0odN6NhjmbKZFULNtZPg7OXX9SQX6YvoQ==", - "requires": { - "@babel/generator": "7.6.4", - "@babel/parser": "^7.1.3", - "@babel/types": "7.6.3", - "apollo-env": "^0.6.0", - "apollo-language-server": "^1.17.1", - "ast-types": "^0.13.0", - "common-tags": "^1.5.1", - "recast": "^0.18.0" - } - }, - "apollo-codegen-flow": { - "version": "0.33.33", - "resolved": "https://registry.npmjs.org/apollo-codegen-flow/-/apollo-codegen-flow-0.33.33.tgz", - "integrity": "sha512-vNUiSVTxXrPDrkge68SuaD1dBdlm2ZuxN5/GcICJP4VcVEtDCu/gXaWFkPAfyvQdCm9YdnzaR+ZQ3uF9MBCjhg==", - "requires": { - "@babel/generator": "7.6.4", - "@babel/types": "7.6.3", - "apollo-codegen-core": "^0.35.8", - "change-case": "^3.0.1", - "common-tags": "^1.5.1", - "inflected": "^2.0.3" - } - }, - "apollo-codegen-scala": { - "version": "0.34.33", - "resolved": "https://registry.npmjs.org/apollo-codegen-scala/-/apollo-codegen-scala-0.34.33.tgz", - "integrity": "sha512-h47IjNXdK0IWHcujPUynzdjkEvVZ1FoCDjAV1+yd3t27CwlEsND/q/ZH6DT5NwxZIWBJWnPNwBiiSOCt2/xFyw==", - "requires": { - "apollo-codegen-core": "^0.35.8", - "change-case": "^3.0.1", - "common-tags": "^1.5.1", - "inflected": "^2.0.3" - } - }, - "apollo-codegen-swift": { - "version": "0.35.13", - "resolved": "https://registry.npmjs.org/apollo-codegen-swift/-/apollo-codegen-swift-0.35.13.tgz", - "integrity": "sha512-I29/lAcFeeeN/Dp6qp19kALh7aWXZXjEtPx1A6Ee7WjGonmIndixaQLL+glFLEXtACf/Eaq13pMl+2ZLG9098g==", - "requires": { - "apollo-codegen-core": "^0.35.8", - "change-case": "^3.0.1", - "common-tags": "^1.5.1", - "inflected": "^2.0.3" - } - }, - "apollo-codegen-typescript": { - "version": "0.35.8", - "resolved": "https://registry.npmjs.org/apollo-codegen-typescript/-/apollo-codegen-typescript-0.35.8.tgz", - "integrity": "sha512-3dc4mle4o0tdXX/rSzKwMthlzHEV0RWMVMwbqSTy1pygyWsFI8UMkAFU4bC2KESILCA1k48LFjYQ7bKqx5RAFQ==", - "requires": { - "@babel/generator": "7.6.4", - "@babel/types": "7.6.3", - "apollo-codegen-core": "^0.35.8", - "change-case": "^3.0.1", - "common-tags": "^1.5.1", - "inflected": "^2.0.3" - } - }, - "apollo-datasource": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.6.3.tgz", - "integrity": "sha512-gRYyFVpJgHE2hhS+VxMeOerxXQ/QYxWG7T6QddfugJWYAG9DRCl65e2b7txcGq2NP3r+O1iCm4GNwhRBDJbd8A==", - "requires": { - "apollo-server-caching": "^0.5.0", - "apollo-server-env": "^2.4.3" - } - }, - "apollo-env": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.6.0.tgz", - "integrity": "sha512-DttHOpLISRej8STjbXjQCXq3YeE2pATaC4UEd2YE7TjjYhQmp9yxohlkHfSR78BvPzczhyDs6WQQEzasHv0M0A==", - "requires": { - "core-js": "^3.0.1", - "node-fetch": "^2.2.0", - "sha.js": "^2.4.11" - } - }, - "apollo-graphql": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.3.5.tgz", - "integrity": "sha512-X2N/LREJSAkI0RhMEJ6d0kGjdJSI4SFyf6soLvLLTQn0Bhi/52hMLf8k4kO5t0SCKuWc1+Pw/tdCniK4Gc1IdA==", - "requires": { - "apollo-env": "^0.6.0", - "lodash.sortby": "^4.7.0" - } - }, - "apollo-language-server": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/apollo-language-server/-/apollo-language-server-1.17.1.tgz", - "integrity": "sha512-Ok3C+7W/P/VskQ99qxWMtWsr7g1opeEHfKtU+xJgoQN2qUJYwAEUMVNUFQ+HYRlVgyO1fZ4idcIGTcI+Lpa8Hw==", - "requires": { - "@apollo/federation": "0.11.0", - "@apollographql/apollo-tools": "^0.4.1", - "@apollographql/graphql-language-service-interface": "^2.0.2", - "@endemolshinegroup/cosmiconfig-typescript-loader": "^1.0.0", - "apollo-datasource": "^0.6.0", - "apollo-env": "^0.6.0", - "apollo-graphql": "^0.3.5", - "apollo-link": "^1.2.3", - "apollo-link-context": "^1.0.9", - "apollo-link-error": "^1.1.1", - "apollo-link-http": "^1.5.5", - "apollo-server-errors": "^2.0.2", - "await-to-js": "^2.0.1", - "core-js": "^3.0.1", - "cosmiconfig": "^5.0.6", - "dotenv": "^8.0.0", - "glob": "^7.1.3", - "graphql": "14.0.2 - 14.2.0 || ^14.3.1", - "graphql-tag": "^2.10.1", - "lodash.debounce": "^4.0.8", - "lodash.merge": "^4.6.1", - "minimatch": "^3.0.4", - "moment": "^2.24.0", - "vscode-languageserver": "^5.1.0", - "vscode-uri": "1.0.6" - } - }, - "apollo-link": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.13.tgz", - "integrity": "sha512-+iBMcYeevMm1JpYgwDEIDt/y0BB7VWyvlm/7x+TIPNLHCTCMgcEgDuW5kH86iQZWo0I7mNwQiTOz+/3ShPFmBw==", - "requires": { - "apollo-utilities": "^1.3.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.20" - } - }, - "apollo-link-context": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.19.tgz", - "integrity": "sha512-TUi5TyufU84hEiGkpt+5gdH5HkB3Gx46npNfoxR4of3DKBCMuItGERt36RCaryGcU/C3u2zsICU3tJ+Z9LjFoQ==", - "requires": { - "apollo-link": "^1.2.13", - "tslib": "^1.9.3" - } - }, - "apollo-link-error": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.12.tgz", - "integrity": "sha512-psNmHyuy3valGikt/XHJfe0pKJnRX19tLLs6P6EHRxg+6q6JMXNVLYPaQBkL0FkwdTCB0cbFJAGRYCBviG8TDA==", - "requires": { - "apollo-link": "^1.2.13", - "apollo-link-http-common": "^0.2.15", - "tslib": "^1.9.3" - } - }, - "apollo-link-http": { - "version": "1.5.16", - "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.16.tgz", - "integrity": "sha512-IA3xA/OcrOzINRZEECI6IdhRp/Twom5X5L9jMehfzEo2AXdeRwAMlH5LuvTZHgKD8V1MBnXdM6YXawXkTDSmJw==", - "requires": { - "apollo-link": "^1.2.13", - "apollo-link-http-common": "^0.2.15", - "tslib": "^1.9.3" - } - }, - "apollo-link-http-common": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.15.tgz", - "integrity": "sha512-+Heey4S2IPsPyTf8Ag3PugUupASJMW894iVps6hXbvwtg1aHSNMXUYO5VG7iRHkPzqpuzT4HMBanCTXPjtGzxg==", - "requires": { - "apollo-link": "^1.2.13", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" - } - }, - "apollo-server-caching": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.5.0.tgz", - "integrity": "sha512-l7ieNCGxUaUAVAAp600HjbUJxVaxjJygtPV0tPTe1Q3HkPy6LEWoY6mNHV7T268g1hxtPTxcdRu7WLsJrg7ufw==", - "requires": { - "lru-cache": "^5.0.0" - } - }, - "apollo-server-env": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.4.3.tgz", - "integrity": "sha512-23R5Xo9OMYX0iyTu2/qT0EUb+AULCBriA9w8HDfMoChB8M+lFClqUkYtaTTHDfp6eoARLW8kDBhPOBavsvKAjA==", - "requires": { - "node-fetch": "^2.1.2", - "util.promisify": "^1.0.0" - } - }, - "apollo-server-errors": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.3.4.tgz", - "integrity": "sha512-Y0PKQvkrb2Kd18d1NPlHdSqmlr8TgqJ7JQcNIfhNDgdb45CnqZlxL1abuIRhr8tiw8OhVOcFxz2KyglBi8TKdA==" - }, - "apollo-utilities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.2.tgz", - "integrity": "sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg==", - "requires": { - "@wry/equality": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" - } - }, - "arg": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.2.tgz", - "integrity": "sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "ast-types": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz", - "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" - }, - "await-to-js": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-2.1.1.tgz", - "integrity": "sha512-CHBC6gQGCIzjZ09tJ+XmpQoZOn4GdWePB4qUweCaKNJ0D3f115YdhmYVTZ4rMVpiJ3cFzZcTYK1VMYEICV4YXw==" - }, - "babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", - "requires": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "byline": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", - "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=" - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", - "requires": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "change-case": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.1.0.tgz", - "integrity": "sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==", - "requires": { - "camel-case": "^3.0.0", - "constant-case": "^2.0.0", - "dot-case": "^2.1.0", - "header-case": "^1.0.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "no-case": "^2.3.2", - "param-case": "^2.1.0", - "pascal-case": "^2.0.0", - "path-case": "^2.1.0", - "sentence-case": "^2.1.0", - "snake-case": "^2.1.0", - "swap-case": "^1.1.0", - "title-case": "^2.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" - } - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=" - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "cli-ux": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-4.9.3.tgz", - "integrity": "sha512-/1owvF0SZ5Gn54cgrikJ0QskgTzeg30HGjkmjFoaHDJzAqFpuX1DBpFR8aLvsE1J5s9MgeYRENQK4BFwOag5VA==", - "requires": { - "@oclif/errors": "^1.2.2", - "@oclif/linewrap": "^1.0.0", - "@oclif/screen": "^1.0.3", - "ansi-escapes": "^3.1.0", - "ansi-styles": "^3.2.1", - "cardinal": "^2.1.1", - "chalk": "^2.4.1", - "clean-stack": "^2.0.0", - "extract-stack": "^1.0.0", - "fs-extra": "^7.0.0", - "hyperlinker": "^1.0.0", - "indent-string": "^3.2.0", - "is-wsl": "^1.1.0", - "lodash": "^4.17.11", - "password-prompt": "^1.0.7", - "semver": "^5.6.0", - "strip-ansi": "^5.0.0", - "supports-color": "^5.5.0", - "supports-hyperlinks": "^1.0.1", - "treeify": "^1.1.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - } - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "constant-case": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", - "integrity": "sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=", - "requires": { - "snake-case": "^2.1.0", - "upper-case": "^1.1.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "core-js": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.7.tgz", - "integrity": "sha512-qaPVGw30J1wQ0GR3GvoPqlGf9GZfKKF4kFC7kiHlcsPTqH3txrs9crCp3ZiMAXuSenhz89Jnl4GZs/67S5VOSg==" - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "diff": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", - "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==" - }, - "dot-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", - "integrity": "sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=", - "requires": { - "no-case": "^2.2.0" - } - }, - "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" - }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "env-ci": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-3.2.2.tgz", - "integrity": "sha512-AOiNZ3lmxrtva3r/roqaYDF+1PX2V+ouUzuGqJf7KNxyyYkuU+CsfFbbUeibQPdixxjI/lP6eDtvtkX1/wymJw==", - "requires": { - "execa": "^1.0.0", - "java-properties": "^1.0.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.3.tgz", - "integrity": "sha512-WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - } - } - }, - "extract-stack": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-1.0.0.tgz", - "integrity": "sha1-uXrK+UQe6iMyUpYktzL8WhyBZfo=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "requires": { - "globule": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "git-parse": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/git-parse/-/git-parse-1.0.3.tgz", - "integrity": "sha512-LlGDePBQ9Lr/jsL3ULrnV8SQL8sk3cdScyc+vAk6jVLkHBOxdIj3JosNWemH2o9pNnGtcqukl+ym1Nl6k5jw0Q==", - "requires": { - "babel-polyfill": "6.26.0", - "byline": "5.0.0", - "util.promisify": "1.0.0" - } - }, - "git-rev-sync": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/git-rev-sync/-/git-rev-sync-1.12.0.tgz", - "integrity": "sha1-RGhAbH5sO6TPRYeZnhrbKNnRr1U=", - "requires": { - "escape-string-regexp": "1.0.5", - "graceful-fs": "4.1.11", - "shelljs": "0.7.7" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - } - } - }, - "glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" - }, - "graphql": { - "version": "14.5.8", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.5.8.tgz", - "integrity": "sha512-MMwmi0zlVLQKLdGiMfWkgQD7dY/TUKt4L+zgJ/aR0Howebod3aNgP5JkgvAULiR2HPVZaP2VEElqtdidHweLkg==", - "requires": { - "iterall": "^1.2.2" - } - }, - "graphql-tag": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.10.1.tgz", - "integrity": "sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "header-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", - "integrity": "sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" - } - }, - "http-call": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/http-call/-/http-call-5.3.0.tgz", - "integrity": "sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==", - "requires": { - "content-type": "^1.0.4", - "debug": "^4.1.1", - "is-retry-allowed": "^1.1.0", - "is-stream": "^2.0.0", - "parse-json": "^4.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "hyperlinker": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", - "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==" - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" - }, - "inflected": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inflected/-/inflected-2.0.4.tgz", - "integrity": "sha512-HQPzFLTTUvwfeUH6RAGjD8cHS069mBqXG5n4qaxX7sJXBhVQrsGgF+0ZJGkSuN6a8pcUWB/GXStta11kKi/WvA==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", - "requires": { - "lower-case": "^1.1.0" - } - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "^1.0.1" - } - }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", - "requires": { - "upper-case": "^1.1.0" - } - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "iterall": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", - "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==" - }, - "java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - }, - "dependencies": { - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" - }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, - "dependencies": { - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "^1.0.5" - } - } - } - }, - "load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "requires": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.identity": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-3.0.0.tgz", - "integrity": "sha1-rXvGpOZH15yXLhuA/u968VYmeHY=" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.xorby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.xorby/-/lodash.xorby-4.7.0.tgz", - "integrity": "sha1-nBmm+fBjputT3QPBtocXmYAUY9c=" - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "requires": { - "chalk": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - } - } - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - }, - "lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", - "requires": { - "lower-case": "^1.1.2" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==" - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "natural-orderby": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", - "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" - }, - "npm-run-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", - "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", - "requires": { - "path-key": "^3.0.0" - }, - "dependencies": { - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - } - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "requires": { - "no-case": "^2.2.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", - "integrity": "sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=", - "requires": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" - } - }, - "password-prompt": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", - "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", - "requires": { - "ansi-escapes": "^3.1.0", - "cross-spawn": "^6.0.5" - } - }, - "path-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", - "integrity": "sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=", - "requires": { - "no-case": "^2.2.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "recast": { - "version": "0.18.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.18.5.tgz", - "integrity": "sha512-sD1WJrpLQAkXGyQZyGzTM75WJvyAd98II5CHdK3IYbt/cZlU0UzCRVU11nUFNXX9fBVEt4E9ajkMjBlUlG+Oog==", - "requires": { - "ast-types": "0.13.2", - "esprima": "~4.0.0", - "private": "^0.1.8", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "^1.1.6" - } - }, - "redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", - "requires": { - "esprima": "~4.0.0" - } - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" - }, - "resolve": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", - "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", - "integrity": "sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=", - "requires": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" - } - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shelljs": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", - "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" - }, - "snake-case": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", - "integrity": "sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=", - "requires": { - "no-case": "^2.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-hyperlinks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", - "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", - "requires": { - "has-flag": "^2.0.0", - "supports-color": "^5.0.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" - } - } - }, - "swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", - "requires": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "treeify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", - "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==" - }, - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "ts-node": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.5.4.tgz", - "integrity": "sha512-izbVCRV68EasEPQ8MSIGBNK9dc/4sYJJKYA+IarMQct1RtEot6Xp0bXuClsbUSnKpg50ho+aOAx8en5c+y4OFw==", - "requires": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" - } - }, - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" - }, - "tty": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tty/-/tty-1.0.1.tgz", - "integrity": "sha1-5ECayYsN0cULWf846G6sPwdk7kU=" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - }, - "upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", - "requires": { - "upper-case": "^1.1.1" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "vscode-jsonrpc": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz", - "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==" - }, - "vscode-languageserver": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz", - "integrity": "sha512-GuayqdKZqAwwaCUjDvMTAVRPJOp/SLON3mJ07eGsx/Iq9HjRymhKWztX41rISqDKhHVVyFM+IywICyZDla6U3A==", - "requires": { - "vscode-languageserver-protocol": "3.14.1", - "vscode-uri": "^1.0.6" - } - }, - "vscode-languageserver-protocol": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz", - "integrity": "sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g==", - "requires": { - "vscode-jsonrpc": "^4.0.0", - "vscode-languageserver-types": "3.14.0" - } - }, - "vscode-languageserver-types": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", - "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==" - }, - "vscode-uri": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.6.tgz", - "integrity": "sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "requires": { - "string-width": "^2.1.1" - } - }, - "wrap-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", - "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yarn": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.21.0.tgz", - "integrity": "sha512-g9cvrdKXPZlz1eJYpKanQm3eywEmecudeyDkwiVWeswBrpHK3nJFBholkphHF9eNc8y/FNEhSQ8Et5ZAx4XyLw==" - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - }, - "zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "zen-observable-ts": { - "version": "0.8.20", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.20.tgz", - "integrity": "sha512-2rkjiPALhOtRaDX6pWyNqK1fnP5KkJJybYebopNSn6wDG1lxBoFs2+nwwXKoA6glHIrtwrfBBy6da0stkKtTAA==", - "requires": { - "tslib": "^1.9.3", - "zen-observable": "^0.8.0" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 5d1786ae..00000000 --- a/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "portannict", - "version": "1.0.0", - "description": ":iphone: Annict Client App for iOS. Twitter-like UI.", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/touyu/Portannict.git" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/touyu/Portannict/issues" - }, - "homepage": "https://github.com/touyu/Portannict#readme", - "dependencies": { - "apollo": "^2.21.1" - } -} From 2a1e58a1b3f9f1c4abfe40ecca9db3d1b5ce051b Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 3 Jan 2021 00:48:47 +0900 Subject: [PATCH 017/101] Impl --- Portannict.xcodeproj/project.pbxproj | 48 +- Sources/API.swift | 1628 ++++++++++++++++- Sources/Common/API/Query/Fragments.graphql | 28 + .../API/Query/GetFollowingActivities.graphql | 22 + .../Common/API/Query/SearchWorksByID.graphql | 19 +- Sources/Home/ActivityRecordView.swift | 48 + Sources/Home/ActivityStatusView.swift | 58 +- Sources/Home/HomeView.swift | 89 +- Sources/Home/HomeViewModel.swift | 43 +- Sources/Home/QuoteWorkView.swift | 5 +- Sources/Models/Activity.swift | 43 - Sources/Models/PreviewModel.swift | 31 - Sources/Models/Work.swift | 12 - Sources/Test/TestView.swift | 34 - Sources/Test/TestViewModel.swift | 64 - Sources/Work/WorkHeaderView.swift | 18 +- Sources/Work/WorkView.swift | 107 +- Sources/operationIDs.json | 8 +- 18 files changed, 1989 insertions(+), 316 deletions(-) create mode 100644 Sources/Common/API/Query/Fragments.graphql create mode 100644 Sources/Common/API/Query/GetFollowingActivities.graphql create mode 100644 Sources/Home/ActivityRecordView.swift delete mode 100644 Sources/Models/Activity.swift delete mode 100644 Sources/Models/PreviewModel.swift delete mode 100644 Sources/Models/Work.swift delete mode 100644 Sources/Test/TestView.swift delete mode 100644 Sources/Test/TestViewModel.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 4cb94398..1cf2ef5c 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -17,13 +17,11 @@ CF1E5E60259CEA5300035D50 /* Apollo in Frameworks */ = {isa = PBXBuildFile; productRef = CF1E5E5F259CEA5300035D50 /* Apollo */; }; CF1E5E87259CF4CE00035D50 /* SearchWorksByID.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */; }; CF1E5E89259CF69E00035D50 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1E5E88259CF69E00035D50 /* API.swift */; }; - CF42CFD124C9D73400AAD8E8 /* Work.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD024C9D73400AAD8E8 /* Work.swift */; }; - CF42CFD324C9D7D300AAD8E8 /* Activity.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD224C9D7D300AAD8E8 /* Activity.swift */; }; - CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */; }; + CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; - CF841D4724CA6A1F00F3723B /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4624CA6A1F00F3723B /* TestView.swift */; }; - CFB8D8BB255D18A20092764B /* TestViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB8D8BA255D18A20092764B /* TestViewModel.swift */; }; + CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */; }; + CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFB9BA77259DCD0D00C51708 /* Fragments.graphql */; }; CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03EFE259483D9001516D3 /* HTTPClient.swift */; }; CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F002594895F001516D3 /* LoginViewModel.swift */; }; CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */; }; @@ -65,13 +63,11 @@ CF1E5E5C259CE88500035D50 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = ""; }; CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorksByID.graphql; sourceTree = ""; }; CF1E5E88259CF69E00035D50 /* API.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; }; - CF42CFD024C9D73400AAD8E8 /* Work.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Work.swift; sourceTree = ""; }; - CF42CFD224C9D7D300AAD8E8 /* Activity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Activity.swift; sourceTree = ""; }; - CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewModel.swift; sourceTree = ""; }; + CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; - CF841D4624CA6A1F00F3723B /* TestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestView.swift; sourceTree = ""; }; - CFB8D8BA255D18A20092764B /* TestViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestViewModel.swift; sourceTree = ""; }; + CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityRecordView.swift; sourceTree = ""; }; + CFB9BA77259DCD0D00C51708 /* Fragments.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fragments.graphql; sourceTree = ""; }; CFC03EFE259483D9001516D3 /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OauthTokenRequest.swift; sourceTree = ""; }; @@ -121,10 +117,8 @@ children = ( CF1E5E88259CF69E00035D50 /* API.swift */, CFE38316258E621400CEE318 /* Common */, - CFE38311258E5FD000CEE318 /* Test */, CFB8D8B9255D18740092764B /* Root */, CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */, - CF42CFCF24C9D72800AAD8E8 /* Models */, CF841D3E24CA67F600F3723B /* Login */, CFFE4FFA24C9BF1A003AECE5 /* Home */, CFFDC8A6259C6EE9001C8E29 /* Work */, @@ -150,20 +144,12 @@ isa = PBXGroup; children = ( CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */, + CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */, + CFB9BA77259DCD0D00C51708 /* Fragments.graphql */, ); path = Query; sourceTree = ""; }; - CF42CFCF24C9D72800AAD8E8 /* Models */ = { - isa = PBXGroup; - children = ( - CF42CFD024C9D73400AAD8E8 /* Work.swift */, - CF42CFD224C9D7D300AAD8E8 /* Activity.swift */, - CF42CFD424C9D83B00AAD8E8 /* PreviewModel.swift */, - ); - path = Models; - sourceTree = ""; - }; CF841D3E24CA67F600F3723B /* Login */ = { isa = PBXGroup; children = ( @@ -182,15 +168,6 @@ path = Root; sourceTree = ""; }; - CFE38311258E5FD000CEE318 /* Test */ = { - isa = PBXGroup; - children = ( - CF841D4624CA6A1F00F3723B /* TestView.swift */, - CFB8D8BA255D18A20092764B /* TestViewModel.swift */, - ); - path = Test; - sourceTree = ""; - }; CFE38316258E621400CEE318 /* Common */ = { isa = PBXGroup; children = ( @@ -236,6 +213,7 @@ CF841D3C24CA626400F3723B /* HomeViewModel.swift */, CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */, CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */, + CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */, ); path = Home; sourceTree = ""; @@ -309,6 +287,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */, + CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */, CF1E5E5D259CE88500035D50 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, @@ -346,8 +326,6 @@ files = ( CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, CFE38320258E64F600CEE318 /* Env.swift in Sources */, - CF42CFD124C9D73400AAD8E8 /* Work.swift in Sources */, - CFB8D8BB255D18A20092764B /* TestViewModel.swift in Sources */, CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, CFE38313258E603300CEE318 /* RootView.swift in Sources */, CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, @@ -357,16 +335,14 @@ CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, - CF42CFD524C9D83B00AAD8E8 /* PreviewModel.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, - CF841D4724CA6A1F00F3723B /* TestView.swift in Sources */, CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */, CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */, - CF42CFD324C9D7D300AAD8E8 /* Activity.swift in Sources */, CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */, CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */, CF1E5E89259CF69E00035D50 /* API.swift in Sources */, + CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */, CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Sources/API.swift b/Sources/API.swift index bdd03e80..3e4013e6 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -4,6 +4,850 @@ import Apollo import Foundation +/// Season name +public enum SeasonName: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { + public typealias RawValue = String + case winter + case spring + case summer + case autumn + /// Auto generated constant for unknown enum values + case __unknown(RawValue) + + public init?(rawValue: RawValue) { + switch rawValue { + case "WINTER": self = .winter + case "SPRING": self = .spring + case "SUMMER": self = .summer + case "AUTUMN": self = .autumn + default: self = .__unknown(rawValue) + } + } + + public var rawValue: RawValue { + switch self { + case .winter: return "WINTER" + case .spring: return "SPRING" + case .summer: return "SUMMER" + case .autumn: return "AUTUMN" + case .__unknown(let value): return value + } + } + + public static func == (lhs: SeasonName, rhs: SeasonName) -> Bool { + switch (lhs, rhs) { + case (.winter, .winter): return true + case (.spring, .spring): return true + case (.summer, .summer): return true + case (.autumn, .autumn): return true + case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue + default: return false + } + } + + public static var allCases: [SeasonName] { + return [ + .winter, + .spring, + .summer, + .autumn, + ] + } +} + +public enum StatusState: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { + public typealias RawValue = String + case wannaWatch + case watching + case watched + case onHold + case stopWatching + case noState + /// Auto generated constant for unknown enum values + case __unknown(RawValue) + + public init?(rawValue: RawValue) { + switch rawValue { + case "WANNA_WATCH": self = .wannaWatch + case "WATCHING": self = .watching + case "WATCHED": self = .watched + case "ON_HOLD": self = .onHold + case "STOP_WATCHING": self = .stopWatching + case "NO_STATE": self = .noState + default: self = .__unknown(rawValue) + } + } + + public var rawValue: RawValue { + switch self { + case .wannaWatch: return "WANNA_WATCH" + case .watching: return "WATCHING" + case .watched: return "WATCHED" + case .onHold: return "ON_HOLD" + case .stopWatching: return "STOP_WATCHING" + case .noState: return "NO_STATE" + case .__unknown(let value): return value + } + } + + public static func == (lhs: StatusState, rhs: StatusState) -> Bool { + switch (lhs, rhs) { + case (.wannaWatch, .wannaWatch): return true + case (.watching, .watching): return true + case (.watched, .watched): return true + case (.onHold, .onHold): return true + case (.stopWatching, .stopWatching): return true + case (.noState, .noState): return true + case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue + default: return false + } + } + + public static var allCases: [StatusState] { + return [ + .wannaWatch, + .watching, + .watched, + .onHold, + .stopWatching, + .noState, + ] + } +} + +public final class GetFollowingActivitiesQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query GetFollowingActivities($first: Int, $after: String) { + viewer { + __typename + followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) { + __typename + edges { + __typename + node { + __typename + ... on Record { + ...RecordFragment + } + ... on Review { + id + } + ... on Status { + id + } + ... on MultipleRecord { + id + } + } + } + } + } + } + """ + + public let operationName: String = "GetFollowingActivities" + + public let operationIdentifier: String? = "b012a2ace9950d6d55c36de1147976ac1ac38abb05b78ee6b4fc153f6d4937a3" + + public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition) } + + public var first: Int? + public var after: String? + + public init(first: Int? = nil, after: String? = nil) { + self.first = first + self.after = after + } + + public var variables: GraphQLMap? { + return ["first": first, "after": after] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("viewer", type: .object(Viewer.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(viewer: Viewer? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "viewer": viewer.flatMap { (value: Viewer) -> ResultMap in value.resultMap }]) + } + + public var viewer: Viewer? { + get { + return (resultMap["viewer"] as? ResultMap).flatMap { Viewer(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "viewer") + } + } + + public struct Viewer: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("followingActivities", arguments: ["first": GraphQLVariable("first"), "after": GraphQLVariable("after"), "orderBy": ["field": "CREATED_AT", "direction": "DESC"]], type: .object(FollowingActivity.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(followingActivities: FollowingActivity? = nil) { + self.init(unsafeResultMap: ["__typename": "User", "followingActivities": followingActivities.flatMap { (value: FollowingActivity) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var followingActivities: FollowingActivity? { + get { + return (resultMap["followingActivities"] as? ResultMap).flatMap { FollowingActivity(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "followingActivities") + } + } + + public struct FollowingActivity: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["ActivityConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("edges", type: .list(.object(Edge.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(edges: [Edge?]? = nil) { + self.init(unsafeResultMap: ["__typename": "ActivityConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of edges. + public var edges: [Edge?]? { + get { + return (resultMap["edges"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Edge?] in value.map { (value: ResultMap?) -> Edge? in value.flatMap { (value: ResultMap) -> Edge in Edge(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, forKey: "edges") + } + } + + public struct Edge: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["ActivityEdge"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("node", type: .object(Node.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(node: Node? = nil) { + self.init(unsafeResultMap: ["__typename": "ActivityEdge", "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var node: Node? { + get { + return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "node") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["MultipleRecord", "Record", "Review", "Status"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLTypeCase( + variants: ["Record": AsRecord.selections, "Review": AsReview.selections, "Status": AsStatus.selections, "MultipleRecord": AsMultipleRecord.selections], + default: [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + ] + ) + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public static func makeRecord(id: GraphQLID, annictId: Int, user: AsRecord.User, work: AsRecord.Work) -> Node { + return Node(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "user": user.resultMap, "work": work.resultMap]) + } + + public static func makeReview(id: GraphQLID) -> Node { + return Node(unsafeResultMap: ["__typename": "Review", "id": id]) + } + + public static func makeStatus(id: GraphQLID) -> Node { + return Node(unsafeResultMap: ["__typename": "Status", "id": id]) + } + + public static func makeMultipleRecord(id: GraphQLID) -> Node { + return Node(unsafeResultMap: ["__typename": "MultipleRecord", "id": id]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var asRecord: AsRecord? { + get { + if !AsRecord.possibleTypes.contains(__typename) { return nil } + return AsRecord(unsafeResultMap: resultMap) + } + set { + guard let newValue = newValue else { return } + resultMap = newValue.resultMap + } + } + + public struct AsRecord: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Record"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("user", type: .nonNull(.object(User.selections))), + GraphQLField("work", type: .nonNull(.object(Work.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, user: User, work: Work) { + self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "user": user.resultMap, "work": work.resultMap]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var user: User { + get { + return User(unsafeResultMap: resultMap["user"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "user") + } + } + + public var work: Work { + get { + return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "work") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var recordFragment: RecordFragment { + get { + return RecordFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + + public struct User: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, name: String, username: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var userFragment: UserFragment { + get { + return UserFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + + public var asReview: AsReview? { + get { + if !AsReview.possibleTypes.contains(__typename) { return nil } + return AsReview(unsafeResultMap: resultMap) + } + set { + guard let newValue = newValue else { return } + resultMap = newValue.resultMap + } + } + + public struct AsReview: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Review"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID) { + self.init(unsafeResultMap: ["__typename": "Review", "id": id]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + } + + public var asStatus: AsStatus? { + get { + if !AsStatus.possibleTypes.contains(__typename) { return nil } + return AsStatus(unsafeResultMap: resultMap) + } + set { + guard let newValue = newValue else { return } + resultMap = newValue.resultMap + } + } + + public struct AsStatus: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Status"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID) { + self.init(unsafeResultMap: ["__typename": "Status", "id": id]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + } + + public var asMultipleRecord: AsMultipleRecord? { + get { + if !AsMultipleRecord.possibleTypes.contains(__typename) { return nil } + return AsMultipleRecord(unsafeResultMap: resultMap) + } + set { + guard let newValue = newValue else { return } + resultMap = newValue.resultMap + } + } + + public struct AsMultipleRecord: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["MultipleRecord"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID) { + self.init(unsafeResultMap: ["__typename": "MultipleRecord", "id": id]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + } + } + } + } + } + } +} + public final class SearchWorksByIdQuery: GraphQLQuery { /// The raw GraphQL definition of this operation. public let operationDefinition: String = @@ -13,7 +857,18 @@ public final class SearchWorksByIdQuery: GraphQLQuery { __typename nodes { __typename - title + ...WorkFragment + episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) { + __typename + nodes { + __typename + id + annictId + title + numberText + viewerRecordsCount + } + } } } } @@ -21,7 +876,9 @@ public final class SearchWorksByIdQuery: GraphQLQuery { public let operationName: String = "SearchWorksByID" - public let operationIdentifier: String? = "3b9eb2da1c386ed036fff333db148c6ded4bdf64326c73ec4b41dab4a3d31745" + public let operationIdentifier: String? = "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172" + + public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } public var annictId: Int public var after: String? @@ -108,7 +965,17 @@ public final class SearchWorksByIdQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("episodes", arguments: ["first": 5, "orderBy": ["direction": "ASC", "field": "SORT_NUMBER"]], type: .object(Episode.selections)), ] } @@ -118,8 +985,8 @@ public final class SearchWorksByIdQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(title: String) { - self.init(unsafeResultMap: ["__typename": "Work", "title": title]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, episodes: Episode? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "episodes": episodes.flatMap { (value: Episode) -> ResultMap in value.resultMap }]) } public var __typename: String { @@ -131,6 +998,24 @@ public final class SearchWorksByIdQuery: GraphQLQuery { } } + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + public var title: String { get { return resultMap["title"]! as! String @@ -139,7 +1024,740 @@ public final class SearchWorksByIdQuery: GraphQLQuery { resultMap.updateValue(newValue, forKey: "title") } } - } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var episodes: Episode? { + get { + return (resultMap["episodes"] as? ResultMap).flatMap { Episode(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "episodes") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + + public struct Episode: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["EpisodeConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("nodes", type: .list(.object(Node.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(nodes: [Node?]? = nil) { + self.init(unsafeResultMap: ["__typename": "EpisodeConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of nodes. + public var nodes: [Node?]? { + get { + return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .scalar(String.self)), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, viewerRecordsCount: Int) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "viewerRecordsCount": viewerRecordsCount]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var viewerRecordsCount: Int { + get { + return resultMap["viewerRecordsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "viewerRecordsCount") + } + } + } + } + } + } + } +} + +public struct WorkFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment WorkFragment on Work { + __typename + id + annictId + title + episodesCount + watchersCount + reviewsCount + seasonName + seasonYear + viewerStatusState + } + """ + + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } +} + +public struct RecordFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment RecordFragment on Record { + __typename + id + annictId + user { + __typename + ...UserFragment + } + work { + __typename + ...WorkFragment + } + } + """ + + public static let possibleTypes: [String] = ["Record"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("user", type: .nonNull(.object(User.selections))), + GraphQLField("work", type: .nonNull(.object(Work.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, user: User, work: Work) { + self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "user": user.resultMap, "work": work.resultMap]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var user: User { + get { + return User(unsafeResultMap: resultMap["user"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "user") + } + } + + public var work: Work { + get { + return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "work") + } + } + + public struct User: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, name: String, username: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var userFragment: UserFragment { + get { + return UserFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } +} + +public struct UserFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment UserFragment on User { + __typename + id + name + username + } + """ + + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, name: String, username: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") } } } diff --git a/Sources/Common/API/Query/Fragments.graphql b/Sources/Common/API/Query/Fragments.graphql new file mode 100644 index 00000000..ba0a40a0 --- /dev/null +++ b/Sources/Common/API/Query/Fragments.graphql @@ -0,0 +1,28 @@ +fragment WorkFragment on Work { + id + annictId + title + episodesCount + watchersCount + reviewsCount + seasonName + seasonYear + viewerStatusState +} + +fragment RecordFragment on Record { + id + annictId + user { + ...UserFragment + } + work { + ...WorkFragment + } +} + +fragment UserFragment on User { + id + name + username +} diff --git a/Sources/Common/API/Query/GetFollowingActivities.graphql b/Sources/Common/API/Query/GetFollowingActivities.graphql new file mode 100644 index 00000000..6367b398 --- /dev/null +++ b/Sources/Common/API/Query/GetFollowingActivities.graphql @@ -0,0 +1,22 @@ +query GetFollowingActivities($first: Int, $after: String) { + viewer { + followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) { + edges { + node { + ... on Record { + ...RecordFragment + } + ... on Review { + id + } + ... on Status { + id + } + ... on MultipleRecord { + id + } + } + } + } + } +} diff --git a/Sources/Common/API/Query/SearchWorksByID.graphql b/Sources/Common/API/Query/SearchWorksByID.graphql index 04e4dc78..97aca5cf 100644 --- a/Sources/Common/API/Query/SearchWorksByID.graphql +++ b/Sources/Common/API/Query/SearchWorksByID.graphql @@ -1,7 +1,16 @@ query SearchWorksByID($annictId: Int!, $after: String) { - searchWorks(annictIds: [$annictId], after: $after) { - nodes { - title - } - } + searchWorks(annictIds: [$annictId], after: $after) { + nodes { + ...WorkFragment + episodes(first: 5, orderBy:{direction: ASC, field:SORT_NUMBER}) { + nodes { + id + annictId + title + numberText + viewerRecordsCount + } + } + } + } } diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift new file mode 100644 index 00000000..0dc89903 --- /dev/null +++ b/Sources/Home/ActivityRecordView.swift @@ -0,0 +1,48 @@ +// +// ActivityRecordView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/12/31. +// + +import SwiftUI + +struct ActivityRecordView: View { + let record: RecordFragment + + var body: some View { + HStack(alignment: .top, spacing: 12) { + Circle() + .frame(width: 40, height: 40, alignment: .leading) + .foregroundColor(.gray) + VStack(alignment: .leading, spacing: 12) { + HStack { + Text(record.user.name) + .font(.system(size: 14, weight: .bold, design: .default)) + Text("\(record.user.username)") + .font(.system(size: 14, weight: .regular, design: .default)) + .foregroundColor(.gray) + Text("・10分前") + .font(.system(size: 14, weight: .regular, design: .default)) + .foregroundColor(.gray) + } + Text("記録しました") +// QuoteWorkView(work: activityStatus.work) +// .frame(height: 80) +// .cornerRadius(8) +// .overlay(RoundedRectangle(cornerRadius: 8) +// .stroke(Color.gray, lineWidth: 0.5)) + } + Spacer(minLength: 0) + } + } +} + +struct ActivityRecordView_Previews: PreviewProvider { + static var previews: some View { + let recordWork = RecordFragment.Work(id: "record", annictId: 586, title: "Test", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + let user = RecordFragment.User(id: "user", name: "touyu", username: "touyu") + return ActivityRecordView(record: RecordFragment(id: "", annictId: 0, user: user, work: recordWork)) + .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) + } +} diff --git a/Sources/Home/ActivityStatusView.swift b/Sources/Home/ActivityStatusView.swift index 74c88aec..96281c62 100644 --- a/Sources/Home/ActivityStatusView.swift +++ b/Sources/Home/ActivityStatusView.swift @@ -8,40 +8,42 @@ import SwiftUI struct ActivityStatusView: View { - @Binding var activityStatus: ActivityStatus +// @Binding var activityStatus: ActivityStatus var body: some View { - HStack(alignment: .top, spacing: 12) { - Circle() - .frame(width: 40, height: 40, alignment: .leading) - .foregroundColor(.gray) - VStack(alignment: .leading, spacing: 12) { - HStack { - Text("touyu") - .font(.system(size: 14, weight: .bold, design: .default)) - Text("@touyu") - .font(.system(size: 14, weight: .regular, design: .default)) - .foregroundColor(.gray) - Text("・10分前") - .font(.system(size: 14, weight: .regular, design: .default)) - .foregroundColor(.gray) - } - Text("ステータスを見たに変更しました。") - QuoteWorkView(work: $activityStatus.work) - .frame(height: 80) - .cornerRadius(8) - .overlay(RoundedRectangle(cornerRadius: 8) - .stroke(Color.gray, lineWidth: 0.5)) - } - Spacer(minLength: 0) - } + Text("AAAAA") +// HStack(alignment: .top, spacing: 12) { +// Circle() +// .frame(width: 40, height: 40, alignment: .leading) +// .foregroundColor(.gray) +// VStack(alignment: .leading, spacing: 12) { +// HStack { +// Text("touyu") +// .font(.system(size: 14, weight: .bold, design: .default)) +// Text("@touyu") +// .font(.system(size: 14, weight: .regular, design: .default)) +// .foregroundColor(.gray) +// Text("・10分前") +// .font(.system(size: 14, weight: .regular, design: .default)) +// .foregroundColor(.gray) +// } +// Text("ステータスを見たに変更しました。") +// QuoteWorkView(work: $activityStatus.work) +// .frame(height: 80) +// .cornerRadius(8) +// .overlay(RoundedRectangle(cornerRadius: 8) +// .stroke(Color.gray, lineWidth: 0.5)) +// } +// Spacer(minLength: 0) +// } } } struct ActivityStatusView_Previews: PreviewProvider { static var previews: some View { - let item = PreviewModel.activityStatus - ActivityStatusView(activityStatus: .constant(item)) - .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/400.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/200.0/*@END_MENU_TOKEN@*/)) + return ActivityStatusView() +// let item = PreviewModel.activityStatus +// ActivityStatusView(activityStatus: .constant(item)) +// .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/400.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/200.0/*@END_MENU_TOKEN@*/)) } } diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index fd5afeda..142f6daa 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -10,32 +10,62 @@ import SwiftUI struct HomeView: View { @ObservedObject var viewModel: HomeViewModel - @State var isPresented: Bool = false + @State var isPresented: Bool = true + + @State var activities: [GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node] = [] var body: some View { NavigationView { ScrollView { LazyVStack { - ForEach(viewModel.activities.indices, id: \.self) { index in - let activity = $viewModel.activities[index] - switch activity.wrappedValue.action { + ForEach(activities.indices, id: \.self) { index in + let activity = activities[index] + switch activity.activityItem { + case .record(let record): + ActivityRecordView(record: record.fragments.recordFragment) + case .review: + Text("Review") case .status: - ActivityStatusView(activityStatus: Binding(activity.status)!) - .padding(EdgeInsets(top: 0, leading: 12, bottom: 12, trailing: 12)) - .onTapGesture { - isPresented = true - } - .sheet(isPresented: $isPresented) { - WorkView() - } + Text("Status") + case .multipleRecord: + Text("MultipleRecord") + case .none: + Text("None") } } +// ForEach(viewModel.activities.indices, id: \.self) { index in +// let activity = $viewModel.activities[index] +// switch activity.wrappedValue.action { +// case .status: +// ActivityStatusView(activityStatus: Binding(activity.status)!) +// .padding(EdgeInsets(top: 0, leading: 12, bottom: 12, trailing: 12)) +// .onTapGesture { +// isPresented = true +// } +// .sheet(isPresented: $isPresented) { +// WorkView() +// } +// } +// } } .padding(.top, 24) } .navigationBarTitle("Home") .onAppear { - viewModel.fetch() +// viewModel.fetch() + fetch() + } + } + } + + private func fetch() { + let query = GetFollowingActivitiesQuery(first: 30, after: nil) + Network.shared.apollo.fetch(query: query) { result in + switch result { + case .success(let data): + self.activities = data.data?.viewer?.followingActivities?.edges?.compactMap { $0?.node } ?? [] + case .failure(let error): + print(error) } } } @@ -43,7 +73,38 @@ struct HomeView: View { struct HomeView_Previews: PreviewProvider { static var previews: some View { - let viewModel = HomeViewModel(activities: PreviewModel.activities) + let viewModel = HomeViewModel() HomeView(viewModel: viewModel) } } + +extension GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node { + enum ActivityItem { + case none + case record(AsRecord) + case review(AsReview) + case status(AsStatus) + case multipleRecord(AsMultipleRecord) + + } + + var activityItem: ActivityItem { + if let record = asRecord { + return .record(record) + } + + if let review = asReview { + return .review(review) + } + + if let status = asStatus { + return .status(status) + } + + if let multi = asMultipleRecord { + return .multipleRecord(multi) + } + + return .none + } +} diff --git a/Sources/Home/HomeViewModel.swift b/Sources/Home/HomeViewModel.swift index e735e069..f09cb81c 100644 --- a/Sources/Home/HomeViewModel.swift +++ b/Sources/Home/HomeViewModel.swift @@ -6,18 +6,45 @@ // import Foundation +import Combine +import Fluxer -final class HomeViewModel: ObservableObject { - @Published var activities: [Activity] = [] +final class HomeViewModel: ViewModel { +// @Published var activities: [Activity] = [] +// +// init(activities: [Activity] = []) { +// self.activities = activities +// } + + enum Action { +// case fetch + } + + enum Mutation { + + } + + class State: ObservableObject { + + } + + @Published var state: State = State() + + init() { + initilize() + } + + func mutate(action: Action) -> AnyPublisher { + return Empty().eraseToAnyPublisher() + } + + func reduce(mutation: Mutation) { - init(activities: [Activity] = []) { - self.activities = activities } func fetch() { - print("Fetch") - Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { [weak self] _ in - self?.activities = PreviewModel.activities - } +// Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { [weak self] _ in +// self?.activities = PreviewModel.activities +// } } } diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index d90eb4f2..11cc68b6 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -8,7 +8,7 @@ import SwiftUI struct QuoteWorkView: View { - @Binding var work: Work + @Binding var work: WorkFragment var body: some View { HStack(alignment: .center, spacing: 8) { @@ -24,8 +24,7 @@ struct QuoteWorkView: View { struct QuoteWorkView_Previews: PreviewProvider { static var previews: some View { - let work = PreviewModel.work - QuoteWorkView(work: .constant(work)) + QuoteWorkView(work: .constant(WorkFragment.dummy)) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) } } diff --git a/Sources/Models/Activity.swift b/Sources/Models/Activity.swift deleted file mode 100644 index 5be8e316..00000000 --- a/Sources/Models/Activity.swift +++ /dev/null @@ -1,43 +0,0 @@ -// -// Activity.swift -// Portannict -// -// Created by Yuto Akiba on 2020/07/23. -// - -import Foundation - -enum ActivityAction { - case status -} - -struct Activity: Identifiable { - var id = UUID() - let action: ActivityAction - var status: ActivityStatus? -} - -//enum Activity { -// case status(ActivityStatus) -// -// var status: ActivityStatus { -// switch self { -// case .status(let item): -// return item -// } -// } -//} -// -//extension Activity: Identifiable { -// var id: UUID { -// switch self { -// case .status(let item): -// return item.id -// } -// } -//} - -struct ActivityStatus: Identifiable { - var id = UUID() - var work: Work -} diff --git a/Sources/Models/PreviewModel.swift b/Sources/Models/PreviewModel.swift deleted file mode 100644 index 6cc51321..00000000 --- a/Sources/Models/PreviewModel.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// PreviewModel.swift -// Portannict -// -// Created by Yuto Akiba on 2020/07/23. -// - -import Foundation - -struct PreviewModel { - static var work: Work { - Work(title: "やはり俺の青春ラブコメは間違っている。完") - } - - static var activityStatus: ActivityStatus { - ActivityStatus(work: work) - } - - static var activity: Activity { - Activity(action: .status, status: activityStatus) - } - - static var activities: [Activity] { - var result = [Activity]() - for _ in 0..<30 { - result.append(activity) - } - print(result) - return result - } -} diff --git a/Sources/Models/Work.swift b/Sources/Models/Work.swift deleted file mode 100644 index f403dfe4..00000000 --- a/Sources/Models/Work.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// Work.swift -// Portannict -// -// Created by Yuto Akiba on 2020/07/23. -// - -import Foundation - -struct Work { - let title: String -} diff --git a/Sources/Test/TestView.swift b/Sources/Test/TestView.swift deleted file mode 100644 index 03b67c74..00000000 --- a/Sources/Test/TestView.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// TestView.swift -// Portannict -// -// Created by Yuto Akiba on 2020/07/24. -// - -import SwiftUI -import Fluxer - -struct TestView: View { - @ObservedObject var viewModel: TestViewModel - - @State private var isLogin: Bool = true - - init(viewModel: TestViewModel) { - self.viewModel = viewModel - } - - var body: some View { - VStack { - TextField("AAAA", value: $viewModel.state.number, formatter: NumberFormatter()) - Button(viewModel: viewModel, action: .increment) { - Text("AAAA") - } - } - } -} - -struct TestView_Previews: PreviewProvider { - static var previews: some View { - TestView(viewModel: .init()) - } -} diff --git a/Sources/Test/TestViewModel.swift b/Sources/Test/TestViewModel.swift deleted file mode 100644 index fce73b4c..00000000 --- a/Sources/Test/TestViewModel.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// RootViewModel.swift -// Portannict -// -// Created by Yuto Akiba on 2020/11/12. -// - -import Foundation -import Combine -import SwiftUI -import Fluxer - -final class TestViewModel: ViewModel { - enum Action { - case increment - } - - enum Mutation { - case increment - } - - class State: ObservableObject { - @Published var number = 0 - } - - @Published var state = State() - - init() { - initilize() - } - - func mutate(action: Action) -> AnyPublisher { - switch action { - case .increment: - return TestAPIClient.send() - .map { _ in Mutation.increment } - .catch { _ in Just(Mutation.increment) } - .eraseToAnyPublisher() - } - } - - func reduce(mutation: Mutation) { - switch mutation { - case .increment: - state.number += 1 - } - } - - func transform(mutation: AnyPublisher) -> AnyPublisher { - let m = Timer.publish(every: 1.0, on: .main, in: .common) - .autoconnect() - .map { _ in Mutation.increment } - - return mutation.merge(with: m).eraseToAnyPublisher() - } -} - -final class TestAPIClient { - static func send() -> Future { - return Future { promise in - promise(.success(1)) - } - } -} diff --git a/Sources/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift index 3ff9aff7..add7bdb4 100644 --- a/Sources/Work/WorkHeaderView.swift +++ b/Sources/Work/WorkHeaderView.swift @@ -12,6 +12,12 @@ struct WorkHeaderView: View { private let psychopassURL = URL(string: "https://media.kitsu.io/anime/poster_images/7000/large.jpg?1597696781") private let summerwarsURL = URL(string: "https://media.kitsu.io/anime/poster_images/4241/large.jpg?1597697638") + let work: WorkFragment + + init(work: WorkFragment) { + self.work = work + } + private let black = Color(hex: 0x222222) private var gradient: Gradient { Gradient(stops: [Gradient.Stop(color: black, location: 0), @@ -23,7 +29,7 @@ struct WorkHeaderView: View { var body: some View { GeometryReader { geometry in ZStack(alignment: .bottomLeading) { - KFImage(psychopassURL) + KFImage(URL(string: "\(Constants.baseImageURL)/images/\(work.annictId)")) .resizable() .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: .top) @@ -31,7 +37,7 @@ struct WorkHeaderView: View { startPoint: .top, endPoint: .bottom) .frame(width: geometry.size.width, height: geometry.size.width * 1.5) - Text("PSYCHO-PASS") + Text(work.title) .font(.title) .fontWeight(.bold) .foregroundColor(.white) @@ -45,7 +51,13 @@ struct WorkHeaderView: View { struct WorkHeaderView_Previews: PreviewProvider { static var previews: some View { Group { - WorkHeaderView() + WorkHeaderView(work: .dummy) } } } + +extension WorkFragment { + static var dummy: WorkFragment { + WorkFragment(id: "", annictId: 7193, title: "PSYCHO-PASS", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + } +} diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index 09ee72d8..ac053998 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -7,43 +7,64 @@ import SwiftUI import KingfisherSwiftUI +import Apollo struct WorkView: View { private let black = Color(hex: 0x222222) + @State var work: SearchWorksByIdQuery.Data.SearchWork.Node? + var body: some View { GeometryReader { geometry in ScrollView(.vertical) { - WorkHeaderView() - .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) - LazyVStack(alignment: .leading, spacing: 24) { - Text("Episodes") - .font(.title2) - .fontWeight(.bold) - ForEach(0..<5, id: \.self) { i in - WorkEpisodeCell(number: i+1, title: "魔神が生まれた日") + if let work = work { + WorkHeaderView(work: work.fragments.workFragment) + .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) + LazyVStack(alignment: .leading, spacing: 24) { + Text("Episodes") + .font(.title2) + .fontWeight(.bold) + ForEach((work.episodes?.nodes ?? []).indices) { index in + if let episode = work.episodes?.nodes?[index] { + WorkEpisodeCell(episode: episode) + } + } + Button(action: { + + }, label: { + Spacer() + Text("もっと見る") + .font(.system(size: 14)) + Spacer() + + }) + // Text("Charactors") + // .font(.title2) + // .fontWeight(.bold) + // ForEach(10..<15, id: \.self) { i in + // WorkEpisodeCell(number: i+1, title: "魔神が生まれた日") + // } } - Button(action: { - - }, label: { - Spacer() - Text("もっと見る") - .font(.system(size: 14)) - Spacer() - - }) -// Text("Charactors") -// .font(.title2) -// .fontWeight(.bold) -// ForEach(10..<15, id: \.self) { i in -// WorkEpisodeCell(number: i+1, title: "魔神が生まれた日") -// } + .padding(.init(top: 0, leading: 16, bottom: 48, trailing: 16)) } - .padding(.init(top: 0, leading: 16, bottom: 20, trailing: 16)) } } .background(black) .edgesIgnoringSafeArea(.all) + .onAppear { + fetch() + } + } + + private func fetch() { + Network.shared.apollo.fetch(query: SearchWorksByIdQuery(annictId: 865)) { result in + switch result { + case .success(let data): + self.work = data.data?.searchWorks?.nodes?.first ?? nil + case .failure(let error): + print(error) + } + } } } @@ -54,13 +75,14 @@ struct WorkView_Previews: PreviewProvider { } struct WorkEpisodeCell: View { - let number: Int - let title: String + let episode: SearchWorksByIdQuery.Data.SearchWork.Node.Episode.Node var body: some View { VStack(alignment: .leading) { - Text("第\(number)話") - Text(title) + Text(episode.numberText ?? "Unknown") + .font(.system(size: 14)) + Text(episode.title ?? "Unknown") + .font(.system(size: 16)) } } } @@ -81,3 +103,32 @@ extension Color { ) } } + +class Network { + static let shared = Network() + + private var headers: [String: String] { + guard let token = UserDefaults.standard.string(forKey: "accessToken") else { return [:] } + return ["Authorization": "Bearer \(token)"] + } + + private(set) lazy var apollo: ApolloClient = { + // The cache is necessary to set up the store, which we're going to hand to the provider + let cache = InMemoryNormalizedCache() + let store = ApolloStore(cache: cache) + + let client = URLSessionClient() + let provider = LegacyInterceptorProvider(client: client, store: store) + let url = URL(string: "https://api.annict.com/graphql")! + + let requestChainTransport = RequestChainNetworkTransport(interceptorProvider: provider, + endpointURL: url, + additionalHeaders: headers) + + + // Remember to give the store you already created to the client so it + // doesn't create one on its own + return ApolloClient(networkTransport: requestChainTransport, + store: store) + }() +} diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 3ff898da..b360e960 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -1,6 +1,10 @@ { - "3b9eb2da1c386ed036fff333db148c6ded4bdf64326c73ec4b41dab4a3d31745": { + "b012a2ace9950d6d55c36de1147976ac1ac38abb05b78ee6b4fc153f6d4937a3": { + "name": "GetFollowingActivities", + "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n id\n }\n ... on Status {\n id\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n }\n }\n}" + }, + "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172": { "name": "SearchWorksByID", - "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId], after: $after) {\n __typename\n nodes {\n __typename\n title\n }\n }\n}" + "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId], after: $after) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n nodes {\n __typename\n id\n annictId\n title\n numberText\n viewerRecordsCount\n }\n }\n }\n }\n}" } } \ No newline at end of file From 039e3c0ee8318df01a3450d1c99e5d21466626f5 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Wed, 6 Jan 2021 13:57:31 +0900 Subject: [PATCH 018/101] Impl --- Portannict.xcodeproj/project.pbxproj | 16 ++++++++ Sources/API.swift | 45 ++++++++++++++++++---- Sources/Common/API/Network.swift | 39 +++++++++++++++++++ Sources/Common/API/Query/Fragments.graphql | 7 ++-- Sources/Common/Extension/KFImage.swift | 21 ++++++++++ Sources/Home/ActivityRecordView.swift | 27 +++++++++---- Sources/Home/HomeView.swift | 41 ++++++++++---------- Sources/Home/QuoteWorkView.swift | 7 +++- Sources/Work/WorkHeaderView.swift | 2 +- Sources/Work/WorkView.swift | 40 +++++-------------- Sources/operationIDs.json | 2 +- 11 files changed, 174 insertions(+), 73 deletions(-) create mode 100644 Sources/Common/API/Network.swift create mode 100644 Sources/Common/Extension/KFImage.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 1cf2ef5c..93a9d72c 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -22,6 +22,8 @@ CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */; }; CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFB9BA77259DCD0D00C51708 /* Fragments.graphql */; }; + CFBB73B425A5718900601DCB /* Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBB73B325A5718900601DCB /* Network.swift */; }; + CFBB73B725A575D700601DCB /* KFImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBB73B625A575D700601DCB /* KFImage.swift */; }; CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03EFE259483D9001516D3 /* HTTPClient.swift */; }; CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F002594895F001516D3 /* LoginViewModel.swift */; }; CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */; }; @@ -68,6 +70,8 @@ CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityRecordView.swift; sourceTree = ""; }; CFB9BA77259DCD0D00C51708 /* Fragments.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fragments.graphql; sourceTree = ""; }; + CFBB73B325A5718900601DCB /* Network.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = ""; }; + CFBB73B625A575D700601DCB /* KFImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KFImage.swift; sourceTree = ""; }; CFC03EFE259483D9001516D3 /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OauthTokenRequest.swift; sourceTree = ""; }; @@ -168,9 +172,18 @@ path = Root; sourceTree = ""; }; + CFBB73B525A575CD00601DCB /* Extension */ = { + isa = PBXGroup; + children = ( + CFBB73B625A575D700601DCB /* KFImage.swift */, + ); + path = Extension; + sourceTree = ""; + }; CFE38316258E621400CEE318 /* Common */ = { isa = PBXGroup; children = ( + CFBB73B525A575CD00601DCB /* Extension */, CFE38317258E621A00CEE318 /* API */, CFE3831D258E628C00CEE318 /* Constants.swift */, CFE3831F258E64F600CEE318 /* Env.swift */, @@ -184,6 +197,7 @@ children = ( CF1E5E85259CF4B800035D50 /* Query */, CFE38318258E623700CEE318 /* REST */, + CFBB73B325A5718900601DCB /* Network.swift */, ); path = API; sourceTree = ""; @@ -329,8 +343,10 @@ CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, CFE38313258E603300CEE318 /* RootView.swift in Sources */, CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, + CFBB73B425A5718900601DCB /* Network.swift in Sources */, CFC03F0725959BDD001516D3 /* LoginSession.swift in Sources */, CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, + CFBB73B725A575D700601DCB /* KFImage.swift in Sources */, CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, diff --git a/Sources/API.swift b/Sources/API.swift index 3e4013e6..8e161fa9 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -149,7 +149,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { public let operationName: String = "GetFollowingActivities" - public let operationIdentifier: String? = "b012a2ace9950d6d55c36de1147976ac1ac38abb05b78ee6b4fc153f6d4937a3" + public let operationIdentifier: String? = "42d4d6b70b281cf29b3e2379b771cce6ec952dafbc36a873ee95c01a762456a1" public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition) } @@ -469,6 +469,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), ] } @@ -478,8 +479,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, name: String, username: String) { - self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username]) + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl]) } public var __typename: String { @@ -518,6 +519,15 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -1469,6 +1479,7 @@ public struct RecordFragment: GraphQLFragment { GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), ] } @@ -1478,8 +1489,8 @@ public struct RecordFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, name: String, username: String) { - self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username]) + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl]) } public var __typename: String { @@ -1518,6 +1529,15 @@ public struct RecordFragment: GraphQLFragment { } } + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -1701,6 +1721,7 @@ public struct UserFragment: GraphQLFragment { id name username + avatarUrl } """ @@ -1712,6 +1733,7 @@ public struct UserFragment: GraphQLFragment { GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), ] } @@ -1721,8 +1743,8 @@ public struct UserFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, name: String, username: String) { - self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username]) + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl]) } public var __typename: String { @@ -1760,4 +1782,13 @@ public struct UserFragment: GraphQLFragment { resultMap.updateValue(newValue, forKey: "username") } } + + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } } diff --git a/Sources/Common/API/Network.swift b/Sources/Common/API/Network.swift new file mode 100644 index 00000000..29299861 --- /dev/null +++ b/Sources/Common/API/Network.swift @@ -0,0 +1,39 @@ +// +// Network.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/06. +// + +import Foundation +import Apollo + +class Network { + static let shared = Network() + + private var headers: [String: String] { + guard let token = UserDefaults.standard.string(forKey: "accessToken") else { return [:] } + return ["Authorization": "Bearer \(token)"] + } + + private(set) lazy var apollo: ApolloClient = { + // The cache is necessary to set up the store, which we're going to hand to the provider + let cache = InMemoryNormalizedCache() + let store = ApolloStore(cache: cache) + + let client = URLSessionClient() + let provider = LegacyInterceptorProvider(client: client, store: store) + let url = URL(string: "https://api.annict.com/graphql")! + + let requestChainTransport = RequestChainNetworkTransport(interceptorProvider: provider, + endpointURL: url, + additionalHeaders: headers) + + + // Remember to give the store you already created to the client so it + // doesn't create one on its own + return ApolloClient(networkTransport: requestChainTransport, + store: store) + }() +} + diff --git a/Sources/Common/API/Query/Fragments.graphql b/Sources/Common/API/Query/Fragments.graphql index ba0a40a0..9ddd4a51 100644 --- a/Sources/Common/API/Query/Fragments.graphql +++ b/Sources/Common/API/Query/Fragments.graphql @@ -22,7 +22,8 @@ fragment RecordFragment on Record { } fragment UserFragment on User { - id - name - username + id + name + username + avatarUrl } diff --git a/Sources/Common/Extension/KFImage.swift b/Sources/Common/Extension/KFImage.swift new file mode 100644 index 00000000..dac7303b --- /dev/null +++ b/Sources/Common/Extension/KFImage.swift @@ -0,0 +1,21 @@ +// +// KFImage.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/06. +// + +import Foundation +import KingfisherSwiftUI + +extension KFImage { + init(_ url: String?) { + let stringURL = url ?? "" + self.init(URL(string: stringURL)) + } + + init(_ workID: Int) { + let url = "\(Constants.baseImageURL)/images/\(workID)" + self.init(url) + } +} diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index 0dc89903..42ced6d3 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -6,20 +6,24 @@ // import SwiftUI +import KingfisherSwiftUI struct ActivityRecordView: View { let record: RecordFragment + @State var isPresented: Bool = false + var body: some View { HStack(alignment: .top, spacing: 12) { - Circle() + KFImage(record.user.avatarUrl) + .resizable() + .clipShape(Circle()) .frame(width: 40, height: 40, alignment: .leading) - .foregroundColor(.gray) VStack(alignment: .leading, spacing: 12) { HStack { Text(record.user.name) .font(.system(size: 14, weight: .bold, design: .default)) - Text("\(record.user.username)") + Text("@\(record.user.username)") .font(.system(size: 14, weight: .regular, design: .default)) .foregroundColor(.gray) Text("・10分前") @@ -27,11 +31,18 @@ struct ActivityRecordView: View { .foregroundColor(.gray) } Text("記録しました") -// QuoteWorkView(work: activityStatus.work) -// .frame(height: 80) -// .cornerRadius(8) -// .overlay(RoundedRectangle(cornerRadius: 8) -// .stroke(Color.gray, lineWidth: 0.5)) + Button(action: { + isPresented = true + }) { + QuoteWorkView(work: .constant(record.work.fragments.workFragment)) + .frame(height: 80) + .cornerRadius(8) + .overlay(RoundedRectangle(cornerRadius: 8) + .stroke(Color.gray, lineWidth: 0.5)) + } + .sheet(isPresented: $isPresented) { + WorkView(workID: record.work.fragments.workFragment.annictId) + } } Spacer(minLength: 0) } diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index 142f6daa..0345ca54 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -8,11 +8,10 @@ import SwiftUI struct HomeView: View { - @ObservedObject var viewModel: HomeViewModel - - @State var isPresented: Bool = true + typealias Activity = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node - @State var activities: [GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node] = [] + @ObservedObject var viewModel: HomeViewModel + @State var activities: [Activity] = [] var body: some View { NavigationView { @@ -33,26 +32,12 @@ struct HomeView: View { Text("None") } } -// ForEach(viewModel.activities.indices, id: \.self) { index in -// let activity = $viewModel.activities[index] -// switch activity.wrappedValue.action { -// case .status: -// ActivityStatusView(activityStatus: Binding(activity.status)!) -// .padding(EdgeInsets(top: 0, leading: 12, bottom: 12, trailing: 12)) -// .onTapGesture { -// isPresented = true -// } -// .sheet(isPresented: $isPresented) { -// WorkView() -// } -// } -// } } .padding(.top, 24) } .navigationBarTitle("Home") .onAppear { -// viewModel.fetch() + // viewModel.fetch() fetch() } } @@ -74,7 +59,9 @@ struct HomeView: View { struct HomeView_Previews: PreviewProvider { static var previews: some View { let viewModel = HomeViewModel() - HomeView(viewModel: viewModel) + Group { + HomeView(viewModel: viewModel) + } } } @@ -86,6 +73,20 @@ extension GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node { case status(AsStatus) case multipleRecord(AsMultipleRecord) + var work: WorkFragment? { + switch self { + case .none: + return nil + case .record(let record): + return record.fragments.recordFragment.work.fragments.workFragment + case .status(let status): + return nil + case .review(let review): + return nil + case .multipleRecord(let mRecord): + return nil + } + } } var activityItem: ActivityItem { diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 11cc68b6..02652829 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -6,17 +6,20 @@ // import SwiftUI +import KingfisherSwiftUI struct QuoteWorkView: View { @Binding var work: WorkFragment var body: some View { HStack(alignment: .center, spacing: 8) { - Rectangle() - .foregroundColor(.gray) + KFImage(work.annictId) + .resizable() .aspectRatio(3/4, contentMode: .fit) + .background(Color.gray) Text(work.title) .font(.subheadline) + .foregroundColor(Color.primary) Spacer(minLength: 0) } } diff --git a/Sources/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift index add7bdb4..a66d215f 100644 --- a/Sources/Work/WorkHeaderView.swift +++ b/Sources/Work/WorkHeaderView.swift @@ -29,7 +29,7 @@ struct WorkHeaderView: View { var body: some View { GeometryReader { geometry in ZStack(alignment: .bottomLeading) { - KFImage(URL(string: "\(Constants.baseImageURL)/images/\(work.annictId)")) + KFImage("\(Constants.baseImageURL)/images/\(work.annictId)") .resizable() .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: .top) diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index ac053998..e746e968 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -12,8 +12,15 @@ import Apollo struct WorkView: View { private let black = Color(hex: 0x222222) + let workID: Int + @State var work: SearchWorksByIdQuery.Data.SearchWork.Node? + init(workID: Int) { + print(workID) + self.workID = workID + } + var body: some View { GeometryReader { geometry in ScrollView(.vertical) { @@ -57,7 +64,7 @@ struct WorkView: View { } private func fetch() { - Network.shared.apollo.fetch(query: SearchWorksByIdQuery(annictId: 865)) { result in + Network.shared.apollo.fetch(query: SearchWorksByIdQuery(annictId: workID)) { result in switch result { case .success(let data): self.work = data.data?.searchWorks?.nodes?.first ?? nil @@ -70,7 +77,7 @@ struct WorkView: View { struct WorkView_Previews: PreviewProvider { static var previews: some View { - WorkView() + WorkView(workID: 865) } } @@ -103,32 +110,3 @@ extension Color { ) } } - -class Network { - static let shared = Network() - - private var headers: [String: String] { - guard let token = UserDefaults.standard.string(forKey: "accessToken") else { return [:] } - return ["Authorization": "Bearer \(token)"] - } - - private(set) lazy var apollo: ApolloClient = { - // The cache is necessary to set up the store, which we're going to hand to the provider - let cache = InMemoryNormalizedCache() - let store = ApolloStore(cache: cache) - - let client = URLSessionClient() - let provider = LegacyInterceptorProvider(client: client, store: store) - let url = URL(string: "https://api.annict.com/graphql")! - - let requestChainTransport = RequestChainNetworkTransport(interceptorProvider: provider, - endpointURL: url, - additionalHeaders: headers) - - - // Remember to give the store you already created to the client so it - // doesn't create one on its own - return ApolloClient(networkTransport: requestChainTransport, - store: store) - }() -} diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index b360e960..921a4171 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -1,5 +1,5 @@ { - "b012a2ace9950d6d55c36de1147976ac1ac38abb05b78ee6b4fc153f6d4937a3": { + "42d4d6b70b281cf29b3e2379b771cce6ec952dafbc36a873ee95c01a762456a1": { "name": "GetFollowingActivities", "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n id\n }\n ... on Status {\n id\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n }\n }\n}" }, From 465aa807d2d8b927a68804be62f667da5e9a799e Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Wed, 6 Jan 2021 16:49:37 +0900 Subject: [PATCH 019/101] Impl fetch more --- Sources/API.swift | 89 +++++++++++++++++-- Sources/Common/API/Network.swift | 26 +++++- .../API/Query/GetFollowingActivities.graphql | 5 ++ Sources/Home/HomeView.swift | 66 ++++++-------- Sources/Home/HomeViewModel.swift | 75 +++++++++++++--- Sources/Work/WorkHeaderView.swift | 4 +- Sources/Work/WorkView.swift | 1 - Sources/operationIDs.json | 4 +- 8 files changed, 204 insertions(+), 66 deletions(-) diff --git a/Sources/API.swift b/Sources/API.swift index 8e161fa9..a0b661ae 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -126,6 +126,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { __typename edges { __typename + cursor node { __typename ... on Record { @@ -142,6 +143,11 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } } + pageInfo { + __typename + endCursor + hasNextPage + } } } } @@ -149,7 +155,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { public let operationName: String = "GetFollowingActivities" - public let operationIdentifier: String? = "42d4d6b70b281cf29b3e2379b771cce6ec952dafbc36a873ee95c01a762456a1" + public let operationIdentifier: String? = "6fef9ab9cc2cae178f518a3f679943e0891b83d51cd593356373e86c5a4c7206" public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition) } @@ -238,6 +244,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("edges", type: .list(.object(Edge.selections))), + GraphQLField("pageInfo", type: .nonNull(.object(PageInfo.selections))), ] } @@ -247,8 +254,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(edges: [Edge?]? = nil) { - self.init(unsafeResultMap: ["__typename": "ActivityConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }]) + public init(edges: [Edge?]? = nil, pageInfo: PageInfo) { + self.init(unsafeResultMap: ["__typename": "ActivityConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, "pageInfo": pageInfo.resultMap]) } public var __typename: String { @@ -270,12 +277,23 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + /// Information to aid in pagination. + public var pageInfo: PageInfo { + get { + return PageInfo(unsafeResultMap: resultMap["pageInfo"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "pageInfo") + } + } + public struct Edge: GraphQLSelectionSet { public static let possibleTypes: [String] = ["ActivityEdge"] public static var selections: [GraphQLSelection] { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("cursor", type: .nonNull(.scalar(String.self))), GraphQLField("node", type: .object(Node.selections)), ] } @@ -286,8 +304,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(node: Node? = nil) { - self.init(unsafeResultMap: ["__typename": "ActivityEdge", "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) + public init(cursor: String, node: Node? = nil) { + self.init(unsafeResultMap: ["__typename": "ActivityEdge", "cursor": cursor, "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) } public var __typename: String { @@ -299,6 +317,16 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + /// A cursor for use in pagination. + public var cursor: String { + get { + return resultMap["cursor"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "cursor") + } + } + public var node: Node? { get { return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } @@ -853,6 +881,57 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } } + + public struct PageInfo: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["PageInfo"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("endCursor", type: .scalar(String.self)), + GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(endCursor: String? = nil, hasNextPage: Bool) { + self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// When paginating forwards, the cursor to continue. + public var endCursor: String? { + get { + return resultMap["endCursor"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "endCursor") + } + } + + /// When paginating forwards, are there more items? + public var hasNextPage: Bool { + get { + return resultMap["hasNextPage"]! as! Bool + } + set { + resultMap.updateValue(newValue, forKey: "hasNextPage") + } + } + } } } } diff --git a/Sources/Common/API/Network.swift b/Sources/Common/API/Network.swift index 29299861..39337ccb 100644 --- a/Sources/Common/API/Network.swift +++ b/Sources/Common/API/Network.swift @@ -7,8 +7,13 @@ import Foundation import Apollo +import Combine -class Network { +enum NetworkError: Error { + case notFoundData +} + +final class Network { static let shared = Network() private var headers: [String: String] { @@ -37,3 +42,22 @@ class Network { }() } +extension ApolloClient { + func fetch(query: Query) -> AnyPublisher { + return Future { [weak self] promise in + self?.fetch(query: query) { result in + switch result { + case .success(let data): + guard let data = data.data else { + promise(.failure(NetworkError.notFoundData)) + return + } + promise(.success(data)) + case .failure(let error): + promise(.failure(error)) + } + } + } + .eraseToAnyPublisher() + } +} diff --git a/Sources/Common/API/Query/GetFollowingActivities.graphql b/Sources/Common/API/Query/GetFollowingActivities.graphql index 6367b398..26f8ba6d 100644 --- a/Sources/Common/API/Query/GetFollowingActivities.graphql +++ b/Sources/Common/API/Query/GetFollowingActivities.graphql @@ -2,6 +2,7 @@ query GetFollowingActivities($first: Int, $after: String) { viewer { followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) { edges { + cursor node { ... on Record { ...RecordFragment @@ -17,6 +18,10 @@ query GetFollowingActivities($first: Int, $after: String) { } } } + pageInfo { + endCursor + hasNextPage + } } } } diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index 0345ca54..10e0a6ca 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -10,47 +10,46 @@ import SwiftUI struct HomeView: View { typealias Activity = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node - @ObservedObject var viewModel: HomeViewModel - @State var activities: [Activity] = [] + // ObservedObject + @StateObject var viewModel: HomeViewModel var body: some View { NavigationView { ScrollView { LazyVStack { - ForEach(activities.indices, id: \.self) { index in - let activity = activities[index] - switch activity.activityItem { - case .record(let record): - ActivityRecordView(record: record.fragments.recordFragment) - case .review: - Text("Review") - case .status: - Text("Status") - case .multipleRecord: - Text("MultipleRecord") - case .none: - Text("None") - } + ForEach(viewModel.state.activities.indices, id: \.self) { index in + let activity = viewModel.state.activities[index] + activityItemView(activity: activity) + .onAppear { + if index == viewModel.state.activities.count-10 { + print("FetchMore") + viewModel.action.send(.fetchMore) + } + } } } .padding(.top, 24) } .navigationBarTitle("Home") .onAppear { - // viewModel.fetch() - fetch() + viewModel.action.send(.fetch) } } } - private func fetch() { - let query = GetFollowingActivitiesQuery(first: 30, after: nil) - Network.shared.apollo.fetch(query: query) { result in - switch result { - case .success(let data): - self.activities = data.data?.viewer?.followingActivities?.edges?.compactMap { $0?.node } ?? [] - case .failure(let error): - print(error) + func activityItemView(activity: Activity) -> some View { + Group { + switch activity.activityItem { + case .record(let record): + ActivityRecordView(record: record.fragments.recordFragment) + case .review: + Text("Review") + case .status: + Text("Status") + case .multipleRecord: + Text("MultipleRecord") + case .none: + Text("None") } } } @@ -72,21 +71,6 @@ extension GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node { case review(AsReview) case status(AsStatus) case multipleRecord(AsMultipleRecord) - - var work: WorkFragment? { - switch self { - case .none: - return nil - case .record(let record): - return record.fragments.recordFragment.work.fragments.workFragment - case .status(let status): - return nil - case .review(let review): - return nil - case .multipleRecord(let mRecord): - return nil - } - } } var activityItem: ActivityItem { diff --git a/Sources/Home/HomeViewModel.swift b/Sources/Home/HomeViewModel.swift index f09cb81c..3022a434 100644 --- a/Sources/Home/HomeViewModel.swift +++ b/Sources/Home/HomeViewModel.swift @@ -10,22 +10,26 @@ import Combine import Fluxer final class HomeViewModel: ViewModel { -// @Published var activities: [Activity] = [] -// -// init(activities: [Activity] = []) { -// self.activities = activities -// } + typealias Activity = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node + typealias PageInfo = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.PageInfo enum Action { -// case fetch + case fetch + case fetchMore } enum Mutation { - + case setActivities([Activity]) + case appendActivities([Activity]) + case setPageInfo(PageInfo?) + case setError(Error) } class State: ObservableObject { - + @Published var activities: [Activity] = [] + @Published var error: Error? + + var pageInfo: PageInfo? } @Published var state: State = State() @@ -35,16 +39,61 @@ final class HomeViewModel: ViewModel { } func mutate(action: Action) -> AnyPublisher { - return Empty().eraseToAnyPublisher() + switch action { + case .fetch: + let fetchStream = fetch().share() + + let setActivitiesStream = fetchStream + .map { Mutation.setActivities($0.viewer?.followingActivities?.edges?.compactMap { $0?.node } ?? []) } + + let setPageInfoStream = fetchStream + .map { Mutation.setPageInfo($0.viewer?.followingActivities?.pageInfo) } + + return setActivitiesStream + .merge(with: setPageInfoStream) + .catch { Just(Mutation.setError($0)) } + .assertNoFailure() + .eraseToAnyPublisher() + case .fetchMore: + let fetchStream = fetchMore().share() + + let appendActivitiesStream = fetchStream + .map { Mutation.appendActivities($0.viewer?.followingActivities?.edges?.compactMap { $0?.node } ?? []) } + + let setPageInfoStream = fetchStream + .map { Mutation.setPageInfo($0.viewer?.followingActivities?.pageInfo) } + + return appendActivitiesStream + .merge(with: setPageInfoStream) + .catch { Just(Mutation.setError($0)) } + .assertNoFailure() + .eraseToAnyPublisher() + } } func reduce(mutation: Mutation) { + switch mutation { + case .setActivities(let activities): + state.activities = activities + case .appendActivities(let activities): + state.activities.append(contentsOf: activities) + print(state.activities.count) + case .setPageInfo(let pageInfo): + state.pageInfo = pageInfo + case .setError(let error): + state.error = error + } + } + private func fetch() -> AnyPublisher { + let query = GetFollowingActivitiesQuery(first: 30, after: nil) + return Network.shared.apollo.fetch(query: query) } - func fetch() { -// Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { [weak self] _ in -// self?.activities = PreviewModel.activities -// } + private func fetchMore() -> AnyPublisher { + guard let pageInfo = state.pageInfo else { return Empty().eraseToAnyPublisher() } + guard pageInfo.hasNextPage else { return Empty().eraseToAnyPublisher() } + let query = GetFollowingActivitiesQuery(first: 30, after: pageInfo.endCursor) + return Network.shared.apollo.fetch(query: query) } } diff --git a/Sources/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift index a66d215f..6374a3aa 100644 --- a/Sources/Work/WorkHeaderView.swift +++ b/Sources/Work/WorkHeaderView.swift @@ -9,9 +9,6 @@ import SwiftUI import KingfisherSwiftUI struct WorkHeaderView: View { - private let psychopassURL = URL(string: "https://media.kitsu.io/anime/poster_images/7000/large.jpg?1597696781") - private let summerwarsURL = URL(string: "https://media.kitsu.io/anime/poster_images/4241/large.jpg?1597697638") - let work: WorkFragment init(work: WorkFragment) { @@ -33,6 +30,7 @@ struct WorkHeaderView: View { .resizable() .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: .top) + .background(Color.gray) LinearGradient(gradient: gradient, startPoint: .top, endPoint: .bottom) diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index e746e968..d7ea7b33 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -17,7 +17,6 @@ struct WorkView: View { @State var work: SearchWorksByIdQuery.Data.SearchWork.Node? init(workID: Int) { - print(workID) self.workID = workID } diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 921a4171..f8b94342 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -1,7 +1,7 @@ { - "42d4d6b70b281cf29b3e2379b771cce6ec952dafbc36a873ee95c01a762456a1": { + "6fef9ab9cc2cae178f518a3f679943e0891b83d51cd593356373e86c5a4c7206": { "name": "GetFollowingActivities", - "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n id\n }\n ... on Status {\n id\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n }\n }\n}" + "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n cursor\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n id\n }\n ... on Status {\n id\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n}" }, "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172": { "name": "SearchWorksByID", From 8b548018aca10f1162ef41d7ae053b13ca697ee2 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Wed, 6 Jan 2021 17:07:42 +0900 Subject: [PATCH 020/101] Add bottom indicator --- Portannict.xcodeproj/project.pbxproj | 12 ++++++++++ Sources/Common/Views/ActivityIndicator.swift | 24 ++++++++++++++++++++ Sources/Home/HomeView.swift | 11 ++++----- Sources/Work/WorkHeaderView.swift | 1 + 4 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 Sources/Common/Views/ActivityIndicator.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 93a9d72c..528c7447 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -20,6 +20,7 @@ CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; + CFADCD0525A5A35900939DA7 /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFADCD0425A5A35900939DA7 /* ActivityIndicator.swift */; }; CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */; }; CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFB9BA77259DCD0D00C51708 /* Fragments.graphql */; }; CFBB73B425A5718900601DCB /* Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBB73B325A5718900601DCB /* Network.swift */; }; @@ -68,6 +69,7 @@ CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; + CFADCD0425A5A35900939DA7 /* ActivityIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityIndicator.swift; sourceTree = ""; }; CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityRecordView.swift; sourceTree = ""; }; CFB9BA77259DCD0D00C51708 /* Fragments.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fragments.graphql; sourceTree = ""; }; CFBB73B325A5718900601DCB /* Network.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = ""; }; @@ -163,6 +165,14 @@ path = Login; sourceTree = ""; }; + CFADCD0325A5A34F00939DA7 /* Views */ = { + isa = PBXGroup; + children = ( + CFADCD0425A5A35900939DA7 /* ActivityIndicator.swift */, + ); + path = Views; + sourceTree = ""; + }; CFB8D8B9255D18740092764B /* Root */ = { isa = PBXGroup; children = ( @@ -183,6 +193,7 @@ CFE38316258E621400CEE318 /* Common */ = { isa = PBXGroup; children = ( + CFADCD0325A5A34F00939DA7 /* Views */, CFBB73B525A575CD00601DCB /* Extension */, CFE38317258E621A00CEE318 /* API */, CFE3831D258E628C00CEE318 /* Constants.swift */, @@ -350,6 +361,7 @@ CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, + CFADCD0525A5A35900939DA7 /* ActivityIndicator.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, diff --git a/Sources/Common/Views/ActivityIndicator.swift b/Sources/Common/Views/ActivityIndicator.swift new file mode 100644 index 00000000..81d09ae3 --- /dev/null +++ b/Sources/Common/Views/ActivityIndicator.swift @@ -0,0 +1,24 @@ +// +// ActivityIndicator.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/06. +// + +import UIKit +import SwiftUI + +struct ActivityIndicator: UIViewRepresentable { + typealias UIViewType = UIActivityIndicatorView + + @Binding var isAnimating: Bool + let style: UIActivityIndicatorView.Style + + func makeUIView(context: UIViewRepresentableContext) -> ActivityIndicator.UIViewType { + UIActivityIndicatorView(style: style) + } + + func updateUIView(_ uiView: UIActivityIndicatorView, context: UIViewRepresentableContext) { + isAnimating ? uiView.startAnimating() : uiView.stopAnimating() + } +} diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index 10e0a6ca..e141c733 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -20,13 +20,12 @@ struct HomeView: View { ForEach(viewModel.state.activities.indices, id: \.self) { index in let activity = viewModel.state.activities[index] activityItemView(activity: activity) - .onAppear { - if index == viewModel.state.activities.count-10 { - print("FetchMore") - viewModel.action.send(.fetchMore) - } - } } + ActivityIndicator(isAnimating: .constant(true), style: .medium) + .frame(height: 40) + .onAppear { + viewModel.action.send(.fetchMore) + } } .padding(.top, 24) } diff --git a/Sources/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift index 6374a3aa..80ea9392 100644 --- a/Sources/Work/WorkHeaderView.swift +++ b/Sources/Work/WorkHeaderView.swift @@ -40,6 +40,7 @@ struct WorkHeaderView: View { .fontWeight(.bold) .foregroundColor(.white) .offset(x: 16, y: -32) + .frame(maxWidth: geometry.size.width - 32, alignment: .leading) } } } From 320679d5f42016a62da31dd88e379e25bcabad81 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Wed, 6 Jan 2021 17:34:51 +0900 Subject: [PATCH 021/101] Impl skelton --- Portannict.xcodeproj/project.pbxproj | 17 +++++++++ .../xcshareddata/swiftpm/Package.resolved | 18 +++++++++ Sources/Home/ActivityRecordView.swift | 37 +++++++++++++++++-- Sources/Home/HomeView.swift | 12 ++++++ Sources/Home/HomeViewModel.swift | 1 - Sources/Home/QuoteWorkView.swift | 1 + 6 files changed, 82 insertions(+), 4 deletions(-) diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 528c7447..f19298b4 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -21,6 +21,7 @@ CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CFADCD0525A5A35900939DA7 /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFADCD0425A5A35900939DA7 /* ActivityIndicator.swift */; }; + CFADCD0825A5A78000939DA7 /* SkeletonUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFADCD0725A5A78000939DA7 /* SkeletonUI */; }; CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */; }; CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFB9BA77259DCD0D00C51708 /* Fragments.graphql */; }; CFBB73B425A5718900601DCB /* Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBB73B325A5718900601DCB /* Network.swift */; }; @@ -94,6 +95,7 @@ buildActionMask = 2147483647; files = ( CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */, + CFADCD0825A5A78000939DA7 /* SkeletonUI in Frameworks */, CF1E5E60259CEA5300035D50 /* Apollo in Frameworks */, CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */, ); @@ -265,6 +267,7 @@ CFCA3FEA255DAB4900AA2469 /* Fluxer */, CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */, CF1E5E5F259CEA5300035D50 /* Apollo */, + CFADCD0725A5A78000939DA7 /* SkeletonUI */, ); productName = Portannict; productReference = CF08FC0324B9AD1A00CD29DD /* Portannict.app */; @@ -297,6 +300,7 @@ CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */, CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */, CF1E5E5E259CEA5300035D50 /* XCRemoteSwiftPackageReference "apollo-ios" */, + CFADCD0625A5A78000939DA7 /* XCRemoteSwiftPackageReference "SkeletonUI" */, ); productRefGroup = CF08FC0424B9AD1A00CD29DD /* Products */; projectDirPath = ""; @@ -570,6 +574,14 @@ minimumVersion = 0.39.0; }; }; + CFADCD0625A5A78000939DA7 /* XCRemoteSwiftPackageReference "SkeletonUI" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/CSolanaM/SkeletonUI"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.5; + }; + }; CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "git@github.com:touyu/Fluxer.git"; @@ -594,6 +606,11 @@ package = CF1E5E5E259CEA5300035D50 /* XCRemoteSwiftPackageReference "apollo-ios" */; productName = Apollo; }; + CFADCD0725A5A78000939DA7 /* SkeletonUI */ = { + isa = XCSwiftPackageProductDependency; + package = CFADCD0625A5A78000939DA7 /* XCRemoteSwiftPackageReference "SkeletonUI" */; + productName = SkeletonUI; + }; CFCA3FEA255DAB4900AA2469 /* Fluxer */ = { isa = XCSwiftPackageProductDependency; package = CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */; diff --git a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index a6ebf8e1..a5e2332a 100644 --- a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -46,6 +46,15 @@ "version": "1.0.0" } }, + { + "package": "SkeletonUI", + "repositoryURL": "https://github.com/CSolanaM/SkeletonUI", + "state": { + "branch": null, + "revision": "af57c38985cc3db4c446b8ae412d628e7025d8b1", + "version": "1.0.5" + } + }, { "package": "Spectre", "repositoryURL": "https://github.com/kylef/Spectre.git", @@ -90,6 +99,15 @@ "revision": "37760e9a52030bb9011972c5213c3350fa9d41fd", "version": "1.0.0" } + }, + { + "package": "SnapshotTesting", + "repositoryURL": "https://github.com/pointfreeco/swift-snapshot-testing", + "state": { + "branch": null, + "revision": "c466812aa2e22898f27557e2e780d3aad7a27203", + "version": "1.8.2" + } } ] }, diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index 42ced6d3..fca4a053 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -7,6 +7,7 @@ import SwiftUI import KingfisherSwiftUI +import SkeletonUI struct ActivityRecordView: View { let record: RecordFragment @@ -37,8 +38,8 @@ struct ActivityRecordView: View { QuoteWorkView(work: .constant(record.work.fragments.workFragment)) .frame(height: 80) .cornerRadius(8) - .overlay(RoundedRectangle(cornerRadius: 8) - .stroke(Color.gray, lineWidth: 0.5)) +// .overlay(RoundedRectangle(cornerRadius: 8) +// .stroke(Color.gray, lineWidth: 0.5)) } .sheet(isPresented: $isPresented) { WorkView(workID: record.work.fragments.workFragment.annictId) @@ -54,6 +55,36 @@ struct ActivityRecordView_Previews: PreviewProvider { let recordWork = RecordFragment.Work(id: "record", annictId: 586, title: "Test", episodesCount: 0, watchersCount: 0, reviewsCount: 0) let user = RecordFragment.User(id: "user", name: "touyu", username: "touyu") return ActivityRecordView(record: RecordFragment(id: "", annictId: 0, user: user, work: recordWork)) - .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) + .preferredColorScheme(.dark) + .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: 200)) + } +} + +struct ActivityRecordEmptyView: View { + var body: some View { + HStack(alignment: .top, spacing: 12) { + Circle() + .skeleton(with: true) + .frame(width: 40, height: 40, alignment: .leading) + + VStack(alignment: .leading, spacing: 12) { + HStack { + Text("") + .skeleton(with: true) + .frame(height: 14) + } + Text("記録しました") + .skeleton(with: true) + .frame(height: 18) + } + Spacer(minLength: 0) + } + } +} + +struct ActivityRecordEmptyView_Previews: PreviewProvider { + static var previews: some View { + ActivityRecordEmptyView() + .previewLayout(.fixed(width: 375, height: 200)) } } diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index e141c733..c2b2e02a 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import SkeletonUI struct HomeView: View { typealias Activity = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node @@ -16,10 +17,21 @@ struct HomeView: View { var body: some View { NavigationView { ScrollView { + if viewModel.state.activities.isEmpty { + VStack { + ForEach(0..<10) { i in + ActivityRecordEmptyView() + .frame(height: 80) + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + } + } + } + LazyVStack { ForEach(viewModel.state.activities.indices, id: \.self) { index in let activity = viewModel.state.activities[index] activityItemView(activity: activity) + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) } ActivityIndicator(isAnimating: .constant(true), style: .medium) .frame(height: 40) diff --git a/Sources/Home/HomeViewModel.swift b/Sources/Home/HomeViewModel.swift index 3022a434..94d4544e 100644 --- a/Sources/Home/HomeViewModel.swift +++ b/Sources/Home/HomeViewModel.swift @@ -77,7 +77,6 @@ final class HomeViewModel: ViewModel { state.activities = activities case .appendActivities(let activities): state.activities.append(contentsOf: activities) - print(state.activities.count) case .setPageInfo(let pageInfo): state.pageInfo = pageInfo case .setError(let error): diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 02652829..6e956e27 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -22,6 +22,7 @@ struct QuoteWorkView: View { .foregroundColor(Color.primary) Spacer(minLength: 0) } + .background(Color(UIColor.secondarySystemBackground)) } } From 17c74b344581aac4f9df9faeeca17203d57b1afc Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Wed, 6 Jan 2021 17:39:09 +0900 Subject: [PATCH 022/101] Update ActivityRecordView.swift --- Sources/Home/ActivityRecordView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index fca4a053..a7b3b0e1 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -19,6 +19,7 @@ struct ActivityRecordView: View { KFImage(record.user.avatarUrl) .resizable() .clipShape(Circle()) + .foregroundColor(.gray) .frame(width: 40, height: 40, alignment: .leading) VStack(alignment: .leading, spacing: 12) { HStack { @@ -45,7 +46,6 @@ struct ActivityRecordView: View { WorkView(workID: record.work.fragments.workFragment.annictId) } } - Spacer(minLength: 0) } } } From 814fa25601b9d2693ec7dd00d08028976c960f4f Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Wed, 6 Jan 2021 18:03:50 +0900 Subject: [PATCH 023/101] Remove unused files --- .bundle/config | 2 -- .ruby-version | 1 - 2 files changed, 3 deletions(-) delete mode 100644 .bundle/config delete mode 100644 .ruby-version diff --git a/.bundle/config b/.bundle/config deleted file mode 100644 index 23692288..00000000 --- a/.bundle/config +++ /dev/null @@ -1,2 +0,0 @@ ---- -BUNDLE_PATH: "vendor/bundle" diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index e70b4523..00000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.6.0 From f153fb49eefda60329c7a3c1f2b74545ed6b0640 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 7 Jan 2021 04:01:10 +0900 Subject: [PATCH 024/101] Fix --- Portannict.xcodeproj/project.pbxproj | 27 +- .../xcshareddata/swiftpm/Package.resolved | 9 + Sources/API.swift | 426 +++++++++++++++++- Sources/Common/API/Query/Fragments.graphql | 13 + .../Common/Extension/Model+Extension.swift | 73 +++ Sources/Home/ActivityRecordView.swift | 40 +- Sources/Home/HomeView.swift | 35 +- Sources/Home/QuoteWorkView.swift | 25 +- Sources/Home/RatingStateView.swift | 34 ++ Sources/operationIDs.json | 2 +- 10 files changed, 623 insertions(+), 61 deletions(-) create mode 100644 Sources/Common/Extension/Model+Extension.swift create mode 100644 Sources/Home/RatingStateView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index f19298b4..74a1225a 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -31,6 +31,9 @@ CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */; }; CFC03F0725959BDD001516D3 /* LoginSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0625959BDD001516D3 /* LoginSession.swift */; }; CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */ = {isa = PBXBuildFile; productRef = CFCA3FEA255DAB4900AA2469 /* Fluxer */; }; + CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3425A630E7005401AF /* RatingStateView.swift */; }; + CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3625A63915005401AF /* Model+Extension.swift */; }; + CFD82D3A25A63F8E005401AF /* SwiftDate in Frameworks */ = {isa = PBXBuildFile; productRef = CFD82D3925A63F8E005401AF /* SwiftDate */; }; CFE38313258E603300CEE318 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE38312258E603300CEE318 /* RootView.swift */; }; CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE38314258E610F00CEE318 /* RootViewModel.swift */; }; CFE3831E258E628C00CEE318 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831D258E628C00CEE318 /* Constants.swift */; }; @@ -79,6 +82,8 @@ CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OauthTokenRequest.swift; sourceTree = ""; }; CFC03F0625959BDD001516D3 /* LoginSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginSession.swift; sourceTree = ""; }; + CFD82D3425A630E7005401AF /* RatingStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingStateView.swift; sourceTree = ""; }; + CFD82D3625A63915005401AF /* Model+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Model+Extension.swift"; sourceTree = ""; }; CFE38312258E603300CEE318 /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; }; CFE38314258E610F00CEE318 /* RootViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewModel.swift; sourceTree = ""; }; CFE3831D258E628C00CEE318 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; @@ -96,6 +101,7 @@ files = ( CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */, CFADCD0825A5A78000939DA7 /* SkeletonUI in Frameworks */, + CFD82D3A25A63F8E005401AF /* SwiftDate in Frameworks */, CF1E5E60259CEA5300035D50 /* Apollo in Frameworks */, CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */, ); @@ -188,6 +194,7 @@ isa = PBXGroup; children = ( CFBB73B625A575D700601DCB /* KFImage.swift */, + CFD82D3625A63915005401AF /* Model+Extension.swift */, ); path = Extension; sourceTree = ""; @@ -238,9 +245,10 @@ children = ( CF08FC1724B9B04900CD29DD /* HomeView.swift */, CF841D3C24CA626400F3723B /* HomeViewModel.swift */, + CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */, CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */, + CFD82D3425A630E7005401AF /* RatingStateView.swift */, CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */, - CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */, ); path = Home; sourceTree = ""; @@ -268,6 +276,7 @@ CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */, CF1E5E5F259CEA5300035D50 /* Apollo */, CFADCD0725A5A78000939DA7 /* SkeletonUI */, + CFD82D3925A63F8E005401AF /* SwiftDate */, ); productName = Portannict; productReference = CF08FC0324B9AD1A00CD29DD /* Portannict.app */; @@ -301,6 +310,7 @@ CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */, CF1E5E5E259CEA5300035D50 /* XCRemoteSwiftPackageReference "apollo-ios" */, CFADCD0625A5A78000939DA7 /* XCRemoteSwiftPackageReference "SkeletonUI" */, + CFD82D3825A63F8E005401AF /* XCRemoteSwiftPackageReference "SwiftDate" */, ); productRefGroup = CF08FC0424B9AD1A00CD29DD /* Products */; projectDirPath = ""; @@ -354,6 +364,7 @@ buildActionMask = 2147483647; files = ( CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, + CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */, CFE38320258E64F600CEE318 /* Env.swift in Sources */, CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, CFE38313258E603300CEE318 /* RootView.swift in Sources */, @@ -370,6 +381,7 @@ CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */, + CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */, CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */, CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */, CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */, @@ -590,6 +602,14 @@ kind = branch; }; }; + CFD82D3825A63F8E005401AF /* XCRemoteSwiftPackageReference "SwiftDate" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/malcommac/SwiftDate"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 6.3.1; + }; + }; CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/onevcat/Kingfisher"; @@ -616,6 +636,11 @@ package = CFCA3FE9255DAB4900AA2469 /* XCRemoteSwiftPackageReference "Fluxer" */; productName = Fluxer; }; + CFD82D3925A63F8E005401AF /* SwiftDate */ = { + isa = XCSwiftPackageProductDependency; + package = CFD82D3825A63F8E005401AF /* XCRemoteSwiftPackageReference "SwiftDate" */; + productName = SwiftDate; + }; CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */ = { isa = XCSwiftPackageProductDependency; package = CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */; diff --git a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index a5e2332a..610abbdd 100644 --- a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -108,6 +108,15 @@ "revision": "c466812aa2e22898f27557e2e780d3aad7a27203", "version": "1.8.2" } + }, + { + "package": "SwiftDate", + "repositoryURL": "https://github.com/malcommac/SwiftDate", + "state": { + "branch": null, + "revision": "6190d0cefff3013e77ed567e6b074f324e5c5bf5", + "version": "6.3.1" + } } ] }, diff --git a/Sources/API.swift b/Sources/API.swift index a0b661ae..284df84a 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -115,6 +115,56 @@ public enum StatusState: RawRepresentable, Equatable, Hashable, CaseIterable, Ap } } +public enum RatingState: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { + public typealias RawValue = String + case great + case good + case average + case bad + /// Auto generated constant for unknown enum values + case __unknown(RawValue) + + public init?(rawValue: RawValue) { + switch rawValue { + case "GREAT": self = .great + case "GOOD": self = .good + case "AVERAGE": self = .average + case "BAD": self = .bad + default: self = .__unknown(rawValue) + } + } + + public var rawValue: RawValue { + switch self { + case .great: return "GREAT" + case .good: return "GOOD" + case .average: return "AVERAGE" + case .bad: return "BAD" + case .__unknown(let value): return value + } + } + + public static func == (lhs: RatingState, rhs: RatingState) -> Bool { + switch (lhs, rhs) { + case (.great, .great): return true + case (.good, .good): return true + case (.average, .average): return true + case (.bad, .bad): return true + case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue + default: return false + } + } + + public static var allCases: [RatingState] { + return [ + .great, + .good, + .average, + .bad, + ] + } +} + public final class GetFollowingActivitiesQuery: GraphQLQuery { /// The raw GraphQL definition of this operation. public let operationDefinition: String = @@ -155,9 +205,9 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { public let operationName: String = "GetFollowingActivities" - public let operationIdentifier: String? = "6fef9ab9cc2cae178f518a3f679943e0891b83d51cd593356373e86c5a4c7206" + public let operationIdentifier: String? = "989768f90f2c3ac24489b612b1e69ea9af266eb97c4d41b966885e9c418b2ce3" - public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition) } + public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition).appending(EpisodeFragment.fragmentDefinition) } public var first: Int? public var after: String? @@ -356,8 +406,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public static func makeRecord(id: GraphQLID, annictId: Int, user: AsRecord.User, work: AsRecord.Work) -> Node { - return Node(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "user": user.resultMap, "work": work.resultMap]) + public static func makeRecord(id: GraphQLID, annictId: Int, comment: String? = nil, ratingState: RatingState? = nil, createdAt: String, user: AsRecord.User, work: AsRecord.Work, episode: AsRecord.Episode) -> Node { + return Node(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "comment": comment, "ratingState": ratingState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap, "episode": episode.resultMap]) } public static func makeReview(id: GraphQLID) -> Node { @@ -401,8 +451,12 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("comment", type: .scalar(String.self)), + GraphQLField("ratingState", type: .scalar(RatingState.self)), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), GraphQLField("user", type: .nonNull(.object(User.selections))), GraphQLField("work", type: .nonNull(.object(Work.selections))), + GraphQLField("episode", type: .nonNull(.object(Episode.selections))), ] } @@ -412,8 +466,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, user: User, work: Work) { - self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "user": user.resultMap, "work": work.resultMap]) + public init(id: GraphQLID, annictId: Int, comment: String? = nil, ratingState: RatingState? = nil, createdAt: String, user: User, work: Work, episode: Episode) { + self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "comment": comment, "ratingState": ratingState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap, "episode": episode.resultMap]) } public var __typename: String { @@ -443,6 +497,33 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + public var comment: String? { + get { + return resultMap["comment"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "comment") + } + } + + public var ratingState: RatingState? { + get { + return resultMap["ratingState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingState") + } + } + + public var createdAt: String { + get { + return resultMap["createdAt"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "createdAt") + } + } + public var user: User { get { return User(unsafeResultMap: resultMap["user"]! as! ResultMap) @@ -461,6 +542,15 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + public var episode: Episode { + get { + return Episode(unsafeResultMap: resultMap["episode"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "episode") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -728,6 +818,102 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } } + + public struct Episode: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("title", type: .scalar(String.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var episodeFragment: EpisodeFragment { + get { + return EpisodeFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } } public var asReview: AsReview? { @@ -1470,6 +1656,9 @@ public struct RecordFragment: GraphQLFragment { __typename id annictId + comment + ratingState + createdAt user { __typename ...UserFragment @@ -1478,6 +1667,10 @@ public struct RecordFragment: GraphQLFragment { __typename ...WorkFragment } + episode { + __typename + ...EpisodeFragment + } } """ @@ -1488,8 +1681,12 @@ public struct RecordFragment: GraphQLFragment { GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("comment", type: .scalar(String.self)), + GraphQLField("ratingState", type: .scalar(RatingState.self)), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), GraphQLField("user", type: .nonNull(.object(User.selections))), GraphQLField("work", type: .nonNull(.object(Work.selections))), + GraphQLField("episode", type: .nonNull(.object(Episode.selections))), ] } @@ -1499,8 +1696,8 @@ public struct RecordFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, user: User, work: Work) { - self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "user": user.resultMap, "work": work.resultMap]) + public init(id: GraphQLID, annictId: Int, comment: String? = nil, ratingState: RatingState? = nil, createdAt: String, user: User, work: Work, episode: Episode) { + self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "comment": comment, "ratingState": ratingState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap, "episode": episode.resultMap]) } public var __typename: String { @@ -1530,6 +1727,33 @@ public struct RecordFragment: GraphQLFragment { } } + public var comment: String? { + get { + return resultMap["comment"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "comment") + } + } + + public var ratingState: RatingState? { + get { + return resultMap["ratingState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingState") + } + } + + public var createdAt: String { + get { + return resultMap["createdAt"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "createdAt") + } + } + public var user: User { get { return User(unsafeResultMap: resultMap["user"]! as! ResultMap) @@ -1548,6 +1772,15 @@ public struct RecordFragment: GraphQLFragment { } } + public var episode: Episode { + get { + return Episode(unsafeResultMap: resultMap["episode"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "episode") + } + } + public struct User: GraphQLSelectionSet { public static let possibleTypes: [String] = ["User"] @@ -1789,6 +2022,102 @@ public struct RecordFragment: GraphQLFragment { } } } + + public struct Episode: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("title", type: .scalar(String.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var episodeFragment: EpisodeFragment { + get { + return EpisodeFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } } public struct UserFragment: GraphQLFragment { @@ -1871,3 +2200,84 @@ public struct UserFragment: GraphQLFragment { } } } + +public struct EpisodeFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment EpisodeFragment on Episode { + __typename + id + annictId + numberText + title + } + """ + + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("title", type: .scalar(String.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } +} diff --git a/Sources/Common/API/Query/Fragments.graphql b/Sources/Common/API/Query/Fragments.graphql index 9ddd4a51..5177131e 100644 --- a/Sources/Common/API/Query/Fragments.graphql +++ b/Sources/Common/API/Query/Fragments.graphql @@ -13,12 +13,18 @@ fragment WorkFragment on Work { fragment RecordFragment on Record { id annictId + comment + ratingState + createdAt user { ...UserFragment } work { ...WorkFragment } + episode { + ...EpisodeFragment + } } fragment UserFragment on User { @@ -27,3 +33,10 @@ fragment UserFragment on User { username avatarUrl } + +fragment EpisodeFragment on Episode { + id + annictId + numberText + title +} diff --git a/Sources/Common/Extension/Model+Extension.swift b/Sources/Common/Extension/Model+Extension.swift new file mode 100644 index 00000000..1da95182 --- /dev/null +++ b/Sources/Common/Extension/Model+Extension.swift @@ -0,0 +1,73 @@ +// +// Model+Extension.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import Foundation +import SwiftUI +import SwiftDate + +extension GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node { + enum ActivityItem { + case none + case record(AsRecord) + case review(AsReview) + case status(AsStatus) + case multipleRecord(AsMultipleRecord) + } + + var activityItem: ActivityItem { + if let record = asRecord { + return .record(record) + } + + if let review = asReview { + return .review(review) + } + + if let status = asStatus { + return .status(status) + } + + if let multi = asMultipleRecord { + return .multipleRecord(multi) + } + + return .none + } +} + + +extension RatingState { + var color: Color { + switch self { + case .great: + return .blue + case .good: + return .green + case .average: + return .orange + case .bad: + return .gray + default: + return .black + } + } + + var title: String { + switch self { + case .great: + return "とても良い" + case .good: + return "良い" + case .average: + return "普通" + case .bad: + return "良くない" + default: + return "" + } + } +} diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index a7b3b0e1..08fc19ae 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -22,21 +22,27 @@ struct ActivityRecordView: View { .foregroundColor(.gray) .frame(width: 40, height: 40, alignment: .leading) VStack(alignment: .leading, spacing: 12) { - HStack { + HStack(alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) { Text(record.user.name) .font(.system(size: 14, weight: .bold, design: .default)) Text("@\(record.user.username)") - .font(.system(size: 14, weight: .regular, design: .default)) + .font(.system(size: 12, weight: .regular, design: .default)) .foregroundColor(.gray) - Text("・10分前") - .font(.system(size: 14, weight: .regular, design: .default)) + Spacer() + Text(record.createdAt.toDate()?.toRelative()) + .font(.system(size: 12, weight: .regular, design: .default)) .foregroundColor(.gray) } - Text("記録しました") + if let ratingState = record.ratingState { + RatingStateView(ratingState: ratingState) + } + if let comemnt = record.comment, !comemnt.isEmpty { + Text(comemnt) + } Button(action: { isPresented = true }) { - QuoteWorkView(work: .constant(record.work.fragments.workFragment)) + QuoteWorkView(work: record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) .frame(height: 80) .cornerRadius(8) // .overlay(RoundedRectangle(cornerRadius: 8) @@ -52,15 +58,18 @@ struct ActivityRecordView: View { struct ActivityRecordView_Previews: PreviewProvider { static var previews: some View { - let recordWork = RecordFragment.Work(id: "record", annictId: 586, title: "Test", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + let recordWork = RecordFragment.Work(id: "record", annictId: 6801, title: "GREAT PRETENDER", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + let recordEpisode = RecordFragment.Episode(id: "", annictId: 124160, numberText: "Case_1_1", title: "Los Angeles Connection") let user = RecordFragment.User(id: "user", name: "touyu", username: "touyu") - return ActivityRecordView(record: RecordFragment(id: "", annictId: 0, user: user, work: recordWork)) + return ActivityRecordView(record: RecordFragment(id: "", annictId: 0, comment: "いい話だった", ratingState: .good, createdAt: "2021-01-06T17:20:54Z", user: user, work: recordWork, episode: recordEpisode)) .preferredColorScheme(.dark) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: 200)) } } -struct ActivityRecordEmptyView: View { +struct ActivityEmptyView: View { + let rondomValue = Int.random(in: 0...2) + var body: some View { HStack(alignment: .top, spacing: 12) { Circle() @@ -73,18 +82,23 @@ struct ActivityRecordEmptyView: View { .skeleton(with: true) .frame(height: 14) } - Text("記録しました") + Text("") .skeleton(with: true) .frame(height: 18) + if rondomValue != 0 { + RoundedRectangle(cornerRadius: 8) + .skeleton(with: true) + .shape(type: .rounded(.radius(8, style: .circular))) + .frame(height: 80) + } } - Spacer(minLength: 0) } } } -struct ActivityRecordEmptyView_Previews: PreviewProvider { +struct ActivityEmptyView_Previews: PreviewProvider { static var previews: some View { - ActivityRecordEmptyView() + ActivityEmptyView() .previewLayout(.fixed(width: 375, height: 200)) } } diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index c2b2e02a..c06e9afe 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -20,9 +20,8 @@ struct HomeView: View { if viewModel.state.activities.isEmpty { VStack { ForEach(0..<10) { i in - ActivityRecordEmptyView() - .frame(height: 80) - .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + ActivityEmptyView() + .padding(EdgeInsets(top: 8, leading: 16, bottom: 8, trailing: 16)) } } } @@ -74,33 +73,3 @@ struct HomeView_Previews: PreviewProvider { } } } - -extension GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node { - enum ActivityItem { - case none - case record(AsRecord) - case review(AsReview) - case status(AsStatus) - case multipleRecord(AsMultipleRecord) - } - - var activityItem: ActivityItem { - if let record = asRecord { - return .record(record) - } - - if let review = asReview { - return .review(review) - } - - if let status = asStatus { - return .status(status) - } - - if let multi = asMultipleRecord { - return .multipleRecord(multi) - } - - return .none - } -} diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 6e956e27..49667218 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -9,7 +9,13 @@ import SwiftUI import KingfisherSwiftUI struct QuoteWorkView: View { - @Binding var work: WorkFragment + let work: WorkFragment + let episode: EpisodeFragment? + + init(work: WorkFragment, episode: EpisodeFragment? = nil) { + self.work = work + self.episode = episode + } var body: some View { HStack(alignment: .center, spacing: 8) { @@ -17,9 +23,16 @@ struct QuoteWorkView: View { .resizable() .aspectRatio(3/4, contentMode: .fit) .background(Color.gray) - Text(work.title) - .font(.subheadline) - .foregroundColor(Color.primary) + VStack(alignment: .leading, spacing: 4) { + Text(work.title) + .font(.system(size: 14)) + .foregroundColor(Color.primary) + if let epi = episode { + Text("\(epi.numberText ?? "") \(epi.title ?? "")") + .font(.system(size: 11)) + .foregroundColor(Color.primary) + } + } Spacer(minLength: 0) } .background(Color(UIColor.secondarySystemBackground)) @@ -28,7 +41,9 @@ struct QuoteWorkView: View { struct QuoteWorkView_Previews: PreviewProvider { static var previews: some View { - QuoteWorkView(work: .constant(WorkFragment.dummy)) + QuoteWorkView(work: WorkFragment.dummy) + .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) + QuoteWorkView(work: WorkFragment.dummy, episode: EpisodeFragment(id: "", annictId: 0, numberText: "第1話", title: "冒険の始まり")) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) } } diff --git a/Sources/Home/RatingStateView.swift b/Sources/Home/RatingStateView.swift new file mode 100644 index 00000000..7bbf491c --- /dev/null +++ b/Sources/Home/RatingStateView.swift @@ -0,0 +1,34 @@ +// +// RatingStateView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import SwiftUI + +struct RatingStateView: View { + let ratingState: RatingState + + var body: some View { + Text(ratingState.title) + .foregroundColor(.white) + .font(.system(size: 11)) + .padding(EdgeInsets(top: 4, leading: 8, bottom: 4, trailing: 8)) + .background(ratingState.color) + .cornerRadius(4) + } +} + +struct RatingStateView_Previews: PreviewProvider { + static var previews: some View { + RatingStateView(ratingState: .great) + .previewLayout(.fixed(width: 100, height: 40)) + RatingStateView(ratingState: .good) + .previewLayout(.fixed(width: 100, height: 40)) + RatingStateView(ratingState: .average) + .previewLayout(.fixed(width: 100, height: 40)) + RatingStateView(ratingState: .bad) + .previewLayout(.fixed(width: 100, height: 40)) + } +} diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index f8b94342..2863fcb8 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -1,5 +1,5 @@ { - "6fef9ab9cc2cae178f518a3f679943e0891b83d51cd593356373e86c5a4c7206": { + "989768f90f2c3ac24489b612b1e69ea9af266eb97c4d41b966885e9c418b2ce3": { "name": "GetFollowingActivities", "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n cursor\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n id\n }\n ... on Status {\n id\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n}" }, From 143de0bf488a86bbf0d1c8ac40f4b7fb05e0a960 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 7 Jan 2021 15:27:17 +0900 Subject: [PATCH 025/101] Impl --- Portannict.xcodeproj/project.pbxproj | 18 +- Sources/API.swift | 198 +++++++++++++++++++++ Sources/Common/API/Query/GetViewer.graphql | 15 ++ Sources/Profile/LibraryWorksView.swift | 66 +++++++ Sources/Profile/ProfileView.swift | 112 ++++++++++++ Sources/ProfileView.swift | 48 ----- Sources/operationIDs.json | 4 + 7 files changed, 412 insertions(+), 49 deletions(-) create mode 100644 Sources/Common/API/Query/GetViewer.graphql create mode 100644 Sources/Profile/LibraryWorksView.swift create mode 100644 Sources/Profile/ProfileView.swift delete mode 100644 Sources/ProfileView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 74a1225a..d9e5efc4 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -34,10 +34,12 @@ CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3425A630E7005401AF /* RatingStateView.swift */; }; CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3625A63915005401AF /* Model+Extension.swift */; }; CFD82D3A25A63F8E005401AF /* SwiftDate in Frameworks */ = {isa = PBXBuildFile; productRef = CFD82D3925A63F8E005401AF /* SwiftDate */; }; + CFD82D3C25A64157005401AF /* GetViewer.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFD82D3B25A64157005401AF /* GetViewer.graphql */; }; CFE38313258E603300CEE318 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE38312258E603300CEE318 /* RootView.swift */; }; CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE38314258E610F00CEE318 /* RootViewModel.swift */; }; CFE3831E258E628C00CEE318 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831D258E628C00CEE318 /* Constants.swift */; }; CFE38320258E64F600CEE318 /* Env.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831F258E64F600CEE318 /* Env.swift */; }; + CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5C425A6D65A009EB3DC /* LibraryWorksView.swift */; }; CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */; }; CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */; }; CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */; }; @@ -84,10 +86,12 @@ CFC03F0625959BDD001516D3 /* LoginSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginSession.swift; sourceTree = ""; }; CFD82D3425A630E7005401AF /* RatingStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingStateView.swift; sourceTree = ""; }; CFD82D3625A63915005401AF /* Model+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Model+Extension.swift"; sourceTree = ""; }; + CFD82D3B25A64157005401AF /* GetViewer.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewer.graphql; sourceTree = ""; }; CFE38312258E603300CEE318 /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; }; CFE38314258E610F00CEE318 /* RootViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewModel.swift; sourceTree = ""; }; CFE3831D258E628C00CEE318 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; CFE3831F258E64F600CEE318 /* Env.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Env.swift; sourceTree = ""; }; + CFE7E5C425A6D65A009EB3DC /* LibraryWorksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryWorksView.swift; sourceTree = ""; }; CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkView.swift; sourceTree = ""; }; CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderView.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; @@ -136,7 +140,7 @@ CF841D3E24CA67F600F3723B /* Login */, CFFE4FFA24C9BF1A003AECE5 /* Home */, CFFDC8A6259C6EE9001C8E29 /* Work */, - CF08FC1524B9AFC500CD29DD /* ProfileView.swift */, + CFE7E5C325A6D64E009EB3DC /* Profile */, CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, CF1E5E5C259CE88500035D50 /* Envfile */, @@ -160,6 +164,7 @@ CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */, CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */, CFB9BA77259DCD0D00C51708 /* Fragments.graphql */, + CFD82D3B25A64157005401AF /* GetViewer.graphql */, ); path = Query; sourceTree = ""; @@ -231,6 +236,15 @@ path = REST; sourceTree = ""; }; + CFE7E5C325A6D64E009EB3DC /* Profile */ = { + isa = PBXGroup; + children = ( + CF08FC1524B9AFC500CD29DD /* ProfileView.swift */, + CFE7E5C425A6D65A009EB3DC /* LibraryWorksView.swift */, + ); + path = Profile; + sourceTree = ""; + }; CFFDC8A6259C6EE9001C8E29 /* Work */ = { isa = PBXGroup; children = ( @@ -326,6 +340,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + CFD82D3C25A64157005401AF /* GetViewer.graphql in Resources */, CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */, CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */, CF1E5E5D259CE88500035D50 /* Envfile in Resources */, @@ -376,6 +391,7 @@ CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, + CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */, CFADCD0525A5A35900939DA7 /* ActivityIndicator.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, diff --git a/Sources/API.swift b/Sources/API.swift index 284df84a..c3f85e18 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -1123,6 +1123,204 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } +public final class GetViewerQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query GetViewer { + viewer { + __typename + id + annictId + name + username + avatarUrl + description + wannaWatchCount + watchingCount + watchedCount + onHoldCount + stopWatchingCount + } + } + """ + + public let operationName: String = "GetViewer" + + public let operationIdentifier: String? = "439135c366daff60762a9040bc7e788dbb8b6c95ef2b9d249a14c1e2181fda89" + + public init() { + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("viewer", type: .object(Viewer.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(viewer: Viewer? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "viewer": viewer.flatMap { (value: Viewer) -> ResultMap in value.resultMap }]) + } + + public var viewer: Viewer? { + get { + return (resultMap["viewer"] as? ResultMap).flatMap { Viewer(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "viewer") + } + } + + public struct Viewer: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), + GraphQLField("wannaWatchCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchingCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchedCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("onHoldCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("stopWatchingCount", type: .nonNull(.scalar(Int.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, name: String, username: String, avatarUrl: String? = nil, description: String, wannaWatchCount: Int, watchingCount: Int, watchedCount: Int, onHoldCount: Int, stopWatchingCount: Int) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "annictId": annictId, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description, "wannaWatchCount": wannaWatchCount, "watchingCount": watchingCount, "watchedCount": watchedCount, "onHoldCount": onHoldCount, "stopWatchingCount": stopWatchingCount]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } + + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + + public var wannaWatchCount: Int { + get { + return resultMap["wannaWatchCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "wannaWatchCount") + } + } + + public var watchingCount: Int { + get { + return resultMap["watchingCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchingCount") + } + } + + public var watchedCount: Int { + get { + return resultMap["watchedCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchedCount") + } + } + + public var onHoldCount: Int { + get { + return resultMap["onHoldCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "onHoldCount") + } + } + + public var stopWatchingCount: Int { + get { + return resultMap["stopWatchingCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "stopWatchingCount") + } + } + } + } +} + public final class SearchWorksByIdQuery: GraphQLQuery { /// The raw GraphQL definition of this operation. public let operationDefinition: String = diff --git a/Sources/Common/API/Query/GetViewer.graphql b/Sources/Common/API/Query/GetViewer.graphql new file mode 100644 index 00000000..d6283182 --- /dev/null +++ b/Sources/Common/API/Query/GetViewer.graphql @@ -0,0 +1,15 @@ +query GetViewer { + viewer { + id + annictId + name + username + avatarUrl + description + wannaWatchCount + watchingCount + watchedCount + onHoldCount + stopWatchingCount + } +} diff --git a/Sources/Profile/LibraryWorksView.swift b/Sources/Profile/LibraryWorksView.swift new file mode 100644 index 00000000..656a4103 --- /dev/null +++ b/Sources/Profile/LibraryWorksView.swift @@ -0,0 +1,66 @@ +// +// LibraryWorksView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import SwiftUI +import KingfisherSwiftUI + +struct LibraryWorksView: View { + let title: String + + var body: some View { + VStack(alignment: .leading, spacing: 8) { + HStack { + Text(title) + .font(.system(size: 16)) + .fontWeight(.bold) + .padding(.leading, 16) + Spacer() + Text("もっと見る") + .font(.system(size: 12)) + .padding(.trailing, 16) + } + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 12) { + LibraryWorkView(work: .dummy) + LibraryWorkView(work: .dummy) + LibraryWorkView(work: .dummy) + LibraryWorkView(work: .dummy) + LibraryWorkView(work: .dummy) + } + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + } + } + } +} + +struct LibraryWorkView: View { + let work: WorkFragment + + @State var isPresent: Bool = false + + var body: some View { + Button(action: { + isPresent = true + }, label: { + VStack(alignment: .leading, spacing: 0) { + KFImage(work.annictId) + .resizable() + .aspectRatio(contentMode: .fill) + Text(work.title) + .font(.system(size: 12)) + .foregroundColor(.primary) + .padding(8) + } + .frame(width: 120) + .background(Color(.secondarySystemBackground)) + .cornerRadius(4) + }) + .sheet(isPresented: $isPresent) { + WorkView(workID: work.annictId) + } + } +} diff --git a/Sources/Profile/ProfileView.swift b/Sources/Profile/ProfileView.swift new file mode 100644 index 00000000..374534a4 --- /dev/null +++ b/Sources/Profile/ProfileView.swift @@ -0,0 +1,112 @@ +// +// ProfileView.swift +// Portannict +// +// Created by Yuto Akiba on 2020/07/11. +// + +import SwiftUI +import KingfisherSwiftUI + +struct ProfileView: View { + typealias Viewer = GetViewerQuery.Data.Viewer + + @State var viewer: Viewer? + @State private var selectorIndex = 0 + + var body: some View { + ScrollView(.vertical, showsIndicators: false) { + VStack(alignment: .leading) { + if let viewer = viewer { + header() + VStack(alignment: .leading, spacing: 24) { + Picker("", selection: $selectorIndex) { + Text("ライブラリ") + .tag(0) + Text("アクティビティ") + .tag(1) + } + .pickerStyle(SegmentedPickerStyle()) + .padding(.init(top: 0, leading: 16, bottom: 0, trailing: 16)) + switch selectorIndex { + case 0: + libraryView(viewer: viewer) + default: + Text("アクティビティ") + } + } + .padding(.init(top: 20, leading: 0, bottom: 20, trailing: 0)) + } else { + Text("Loading") + } + } + } + .onAppear { + fetch() + } + } + + func header() -> some View { + Group { + HStack(spacing: 16) { + KFImage(viewer?.avatarUrl) + .resizable() + .clipShape(Circle()) + .foregroundColor(.gray) + .frame(width: 80, height: 80) + VStack(alignment: .leading) { + Text(viewer?.name) + .font(.title) + .bold() + Text("@\(viewer?.name ?? "")") + .fontWeight(.medium) + .foregroundColor(.gray) + } + Spacer() + } + .padding(.init(top: 20, leading: 0, bottom: 20, trailing: 0)) + Text(viewer?.description) + .font(.body) + } + .padding(.init(top: 0, leading: 16, bottom: 0, trailing: 16)) + } + + func libraryView(viewer: Viewer) -> some View { + Group { + LibraryWorksView(title: "見てる \(viewer.watchingCount)") + LibraryWorksView(title: "見たい \(viewer.wannaWatchCount)") + LibraryWorksView(title: "見た \(viewer.watchedCount)") + LibraryWorksView(title: "一時中断 \(viewer.onHoldCount)") + LibraryWorksView(title: "視聴中止 \(viewer.stopWatchingCount)") + } + } + + func fetch() { + Network.shared.apollo.fetch(query: GetViewerQuery()) { result in + switch result { + case .success(let data): + viewer = data.data?.viewer + case .failure(let error): + print(error) + } + } + } +} + +struct ProfileView_Previews: PreviewProvider { + static var previews: some View { + ProfileView(viewer: .init(id: "", + annictId: 0, + name: "touyu", + username: "touyu", + avatarUrl: "https://api-assets.annict.com/shrine/profile/5482/image/master-70884f30052922f4f758e6eb69dc6985.jpg", + description: "「Portannict」というAnnictのクライアントアプリ作ってます。", + wannaWatchCount: 20, + watchingCount: 120, + watchedCount: 420, + onHoldCount: 10, + stopWatchingCount: 4)) + .preferredColorScheme(.dark) + } +} + diff --git a/Sources/ProfileView.swift b/Sources/ProfileView.swift deleted file mode 100644 index 506cad4a..00000000 --- a/Sources/ProfileView.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// ProfileView.swift -// Portannict -// -// Created by Yuto Akiba on 2020/07/11. -// - -import SwiftUI - -struct ProfileView: View { - var body: some View { - ScrollView { - VStack(alignment: .leading) { - HStack(spacing: 16) { - Circle() - .fill(Color.gray) - .frame(width: 100, height: /*@START_MENU_TOKEN@*/100/*@END_MENU_TOKEN@*/) - VStack(alignment: .leading) { - Text("Name") - .font(.title) - .bold() - Text("@username") - .fontWeight(.medium) - .foregroundColor(.gray) - } - Spacer() - } - .padding(.init(top: 20, leading: 20, bottom: 20, trailing: 20)) - Text("「Portannict」というAnnictのクライアントアプリを作っています。") - .padding(.init(top: 0, leading: 20, bottom: 0, trailing: 20)) - - LazyVStack(alignment: .leading) { - ForEach(0..<100) { i in - Text("\(i)") - } - .padding(.init(top: 0, leading: 20, bottom: 0, trailing: 20)) - } - } - } - } -} - -struct ProfileView_Previews: PreviewProvider { - static var previews: some View { - ProfileView() - } -} - diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 2863fcb8..d7e8201d 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -3,6 +3,10 @@ "name": "GetFollowingActivities", "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n cursor\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n id\n }\n ... on Status {\n id\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n}" }, + "439135c366daff60762a9040bc7e788dbb8b6c95ef2b9d249a14c1e2181fda89": { + "name": "GetViewer", + "source": "query GetViewer {\n viewer {\n __typename\n id\n annictId\n name\n username\n avatarUrl\n description\n wannaWatchCount\n watchingCount\n watchedCount\n onHoldCount\n stopWatchingCount\n }\n}" + }, "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172": { "name": "SearchWorksByID", "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId], after: $after) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n nodes {\n __typename\n id\n annictId\n title\n numberText\n viewerRecordsCount\n }\n }\n }\n }\n}" From a37a79a3987bf3465e68da8c0f81eb7247ee9b7f Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 7 Jan 2021 17:09:54 +0900 Subject: [PATCH 026/101] Impl home --- Portannict.xcodeproj/project.pbxproj | 30 +- Sources/API.swift | 3452 ++++++++++++----- Sources/Common/API/Query/Fragments.graphql | 28 + .../API/Query/GetFollowingActivities.graphql | 4 +- Sources/Common/API/Query/GetUser.graphql | 5 + .../Common/Extension/Model+Extension.swift | 23 + Sources/Home/ActivityRecordView.swift | 20 +- Sources/Home/ActivityReviewView.swift | 67 + Sources/Home/ActivityStatusView.swift | 71 +- Sources/Home/HomeView.swift | 13 +- Sources/Profile/ProfileView.swift | 28 +- Sources/User/UserHeaderView.swift | 43 + Sources/User/UserRepresentable.swift | 26 + Sources/User/UserView.swift | 46 + Sources/operationIDs.json | 8 +- 15 files changed, 2862 insertions(+), 1002 deletions(-) create mode 100644 Sources/Common/API/Query/GetUser.graphql create mode 100644 Sources/Home/ActivityReviewView.swift create mode 100644 Sources/User/UserHeaderView.swift create mode 100644 Sources/User/UserRepresentable.swift create mode 100644 Sources/User/UserView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index d9e5efc4..62d2c07a 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -40,6 +40,11 @@ CFE3831E258E628C00CEE318 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831D258E628C00CEE318 /* Constants.swift */; }; CFE38320258E64F600CEE318 /* Env.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE3831F258E64F600CEE318 /* Env.swift */; }; CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5C425A6D65A009EB3DC /* LibraryWorksView.swift */; }; + CFE7E5C825A6E6D7009EB3DC /* UserView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5C725A6E6D7009EB3DC /* UserView.swift */; }; + CFE7E5CA25A6E71C009EB3DC /* UserHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5C925A6E71C009EB3DC /* UserHeaderView.swift */; }; + CFE7E5CC25A6E8D8009EB3DC /* UserRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5CB25A6E8D8009EB3DC /* UserRepresentable.swift */; }; + CFE7E5CE25A6EC6B009EB3DC /* GetUser.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */; }; + CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5CF25A6F6BA009EB3DC /* ActivityReviewView.swift */; }; CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */; }; CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */; }; CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */; }; @@ -92,6 +97,11 @@ CFE3831D258E628C00CEE318 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; CFE3831F258E64F600CEE318 /* Env.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Env.swift; sourceTree = ""; }; CFE7E5C425A6D65A009EB3DC /* LibraryWorksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryWorksView.swift; sourceTree = ""; }; + CFE7E5C725A6E6D7009EB3DC /* UserView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserView.swift; sourceTree = ""; }; + CFE7E5C925A6E71C009EB3DC /* UserHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserHeaderView.swift; sourceTree = ""; }; + CFE7E5CB25A6E8D8009EB3DC /* UserRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserRepresentable.swift; sourceTree = ""; }; + CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetUser.graphql; sourceTree = ""; }; + CFE7E5CF25A6F6BA009EB3DC /* ActivityReviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityReviewView.swift; sourceTree = ""; }; CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkView.swift; sourceTree = ""; }; CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderView.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; @@ -141,6 +151,7 @@ CFFE4FFA24C9BF1A003AECE5 /* Home */, CFFDC8A6259C6EE9001C8E29 /* Work */, CFE7E5C325A6D64E009EB3DC /* Profile */, + CFE7E5C625A6E6C3009EB3DC /* User */, CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, CF1E5E5C259CE88500035D50 /* Envfile */, @@ -163,8 +174,9 @@ children = ( CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */, CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */, - CFB9BA77259DCD0D00C51708 /* Fragments.graphql */, CFD82D3B25A64157005401AF /* GetViewer.graphql */, + CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */, + CFB9BA77259DCD0D00C51708 /* Fragments.graphql */, ); path = Query; sourceTree = ""; @@ -245,6 +257,16 @@ path = Profile; sourceTree = ""; }; + CFE7E5C625A6E6C3009EB3DC /* User */ = { + isa = PBXGroup; + children = ( + CFE7E5C725A6E6D7009EB3DC /* UserView.swift */, + CFE7E5C925A6E71C009EB3DC /* UserHeaderView.swift */, + CFE7E5CB25A6E8D8009EB3DC /* UserRepresentable.swift */, + ); + path = User; + sourceTree = ""; + }; CFFDC8A6259C6EE9001C8E29 /* Work */ = { isa = PBXGroup; children = ( @@ -261,6 +283,7 @@ CF841D3C24CA626400F3723B /* HomeViewModel.swift */, CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */, CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */, + CFE7E5CF25A6F6BA009EB3DC /* ActivityReviewView.swift */, CFD82D3425A630E7005401AF /* RatingStateView.swift */, CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */, ); @@ -343,6 +366,7 @@ CFD82D3C25A64157005401AF /* GetViewer.graphql in Resources */, CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */, CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */, + CFE7E5CE25A6EC6B009EB3DC /* GetUser.graphql in Resources */, CF1E5E5D259CE88500035D50 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, @@ -391,18 +415,22 @@ CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, + CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */, CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */, + CFE7E5CA25A6E71C009EB3DC /* UserHeaderView.swift in Sources */, CFADCD0525A5A35900939DA7 /* ActivityIndicator.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */, CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */, + CFE7E5CC25A6E8D8009EB3DC /* UserRepresentable.swift in Sources */, CFFE4FFE24C9C266003AECE5 /* QuoteWorkView.swift in Sources */, CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */, CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */, CF1E5E89259CF69E00035D50 /* API.swift in Sources */, CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */, + CFE7E5C825A6E6D7009EB3DC /* UserView.swift in Sources */, CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Sources/API.swift b/Sources/API.swift index c3f85e18..a304802a 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -183,10 +183,10 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { ...RecordFragment } ... on Review { - id + ...ReviewFragment } ... on Status { - id + ...StatusFragment } ... on MultipleRecord { id @@ -205,9 +205,9 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { public let operationName: String = "GetFollowingActivities" - public let operationIdentifier: String? = "989768f90f2c3ac24489b612b1e69ea9af266eb97c4d41b966885e9c418b2ce3" + public let operationIdentifier: String? = "85e752c5006409898daa5cdbce370f805faef08b468e746651a51f1d78d9e06c" - public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition).appending(EpisodeFragment.fragmentDefinition) } + public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition).appending(EpisodeFragment.fragmentDefinition).appending(ReviewFragment.fragmentDefinition).appending(StatusFragment.fragmentDefinition) } public var first: Int? public var after: String? @@ -410,12 +410,12 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { return Node(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "comment": comment, "ratingState": ratingState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap, "episode": episode.resultMap]) } - public static func makeReview(id: GraphQLID) -> Node { - return Node(unsafeResultMap: ["__typename": "Review", "id": id]) + public static func makeReview(id: GraphQLID, annictId: Int, createdAt: String, body: String, ratingAnimationState: RatingState? = nil, user: AsReview.User, work: AsReview.Work) -> Node { + return Node(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "createdAt": createdAt, "body": body, "ratingAnimationState": ratingAnimationState, "user": user.resultMap, "work": work.resultMap]) } - public static func makeStatus(id: GraphQLID) -> Node { - return Node(unsafeResultMap: ["__typename": "Status", "id": id]) + public static func makeStatus(id: GraphQLID, annictId: Int, createdAt: String, state: StatusState, user: AsStatus.User, work: AsStatus.Work) -> Node { + return Node(unsafeResultMap: ["__typename": "Status", "id": id, "annictId": annictId, "createdAt": createdAt, "state": state, "user": user.resultMap, "work": work.resultMap]) } public static func makeMultipleRecord(id: GraphQLID) -> Node { @@ -588,6 +588,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("username", type: .nonNull(.scalar(String.self))), GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), ] } @@ -597,8 +598,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl]) + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) } public var __typename: String { @@ -646,6 +647,15 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -932,8 +942,15 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), + GraphQLField("body", type: .nonNull(.scalar(String.self))), + GraphQLField("ratingAnimationState", type: .scalar(RatingState.self)), + GraphQLField("user", type: .nonNull(.object(User.selections))), + GraphQLField("work", type: .nonNull(.object(Work.selections))), ] } @@ -943,8 +960,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID) { - self.init(unsafeResultMap: ["__typename": "Review", "id": id]) + public init(id: GraphQLID, annictId: Int, createdAt: String, body: String, ratingAnimationState: RatingState? = nil, user: User, work: Work) { + self.init(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "createdAt": createdAt, "body": body, "ratingAnimationState": ratingAnimationState, "user": user.resultMap, "work": work.resultMap]) } public var __typename: String { @@ -964,784 +981,2580 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { resultMap.updateValue(newValue, forKey: "id") } } - } - - public var asStatus: AsStatus? { - get { - if !AsStatus.possibleTypes.contains(__typename) { return nil } - return AsStatus(unsafeResultMap: resultMap) - } - set { - guard let newValue = newValue else { return } - resultMap = newValue.resultMap - } - } - - public struct AsStatus: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["Status"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID) { - self.init(unsafeResultMap: ["__typename": "Status", "id": id]) - } - public var __typename: String { + public var annictId: Int { get { - return resultMap["__typename"]! as! String + return resultMap["annictId"]! as! Int } set { - resultMap.updateValue(newValue, forKey: "__typename") + resultMap.updateValue(newValue, forKey: "annictId") } } - public var id: GraphQLID { + public var createdAt: String { get { - return resultMap["id"]! as! GraphQLID + return resultMap["createdAt"]! as! String } set { - resultMap.updateValue(newValue, forKey: "id") + resultMap.updateValue(newValue, forKey: "createdAt") } } - } - - public var asMultipleRecord: AsMultipleRecord? { - get { - if !AsMultipleRecord.possibleTypes.contains(__typename) { return nil } - return AsMultipleRecord(unsafeResultMap: resultMap) - } - set { - guard let newValue = newValue else { return } - resultMap = newValue.resultMap - } - } - - public struct AsMultipleRecord: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["MultipleRecord"] - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - ] + public var body: String { + get { + return resultMap["body"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "body") + } } - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap + public var ratingAnimationState: RatingState? { + get { + return resultMap["ratingAnimationState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingAnimationState") + } } - public init(id: GraphQLID) { - self.init(unsafeResultMap: ["__typename": "MultipleRecord", "id": id]) + public var user: User { + get { + return User(unsafeResultMap: resultMap["user"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "user") + } } - public var __typename: String { + public var work: Work { get { - return resultMap["__typename"]! as! String + return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) } set { - resultMap.updateValue(newValue, forKey: "__typename") + resultMap.updateValue(newValue.resultMap, forKey: "work") } } - public var id: GraphQLID { + public var fragments: Fragments { get { - return resultMap["id"]! as! GraphQLID + return Fragments(unsafeResultMap: resultMap) } set { - resultMap.updateValue(newValue, forKey: "id") + resultMap += newValue.resultMap } } - } - } - } - public struct PageInfo: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["PageInfo"] + public struct Fragments { + public private(set) var resultMap: ResultMap - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("endCursor", type: .scalar(String.self)), - GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), - ] - } + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } - public private(set) var resultMap: ResultMap + public var reviewFragment: ReviewFragment { + get { + return ReviewFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } + public struct User: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] - public init(endCursor: String? = nil, hasNextPage: Bool) { - self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) - } + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), + ] + } - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } + public private(set) var resultMap: ResultMap - /// When paginating forwards, the cursor to continue. - public var endCursor: String? { - get { - return resultMap["endCursor"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "endCursor") - } - } + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } - /// When paginating forwards, are there more items? - public var hasNextPage: Bool { - get { - return resultMap["hasNextPage"]! as! Bool - } - set { - resultMap.updateValue(newValue, forKey: "hasNextPage") - } - } - } - } - } - } -} + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) + } -public final class GetViewerQuery: GraphQLQuery { - /// The raw GraphQL definition of this operation. - public let operationDefinition: String = - """ - query GetViewer { - viewer { - __typename - id - annictId - name - username - avatarUrl - description - wannaWatchCount - watchingCount - watchedCount - onHoldCount - stopWatchingCount - } - } - """ + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } - public let operationName: String = "GetViewer" + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } - public let operationIdentifier: String? = "439135c366daff60762a9040bc7e788dbb8b6c95ef2b9d249a14c1e2181fda89" + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } - public init() { - } + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } - public struct Data: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["Query"] + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var userFragment: UserFragment { + get { + return UserFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + + public var asStatus: AsStatus? { + get { + if !AsStatus.possibleTypes.contains(__typename) { return nil } + return AsStatus(unsafeResultMap: resultMap) + } + set { + guard let newValue = newValue else { return } + resultMap = newValue.resultMap + } + } + + public struct AsStatus: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Status"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), + GraphQLField("state", type: .nonNull(.scalar(StatusState.self))), + GraphQLField("user", type: .nonNull(.object(User.selections))), + GraphQLField("work", type: .nonNull(.object(Work.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, createdAt: String, state: StatusState, user: User, work: Work) { + self.init(unsafeResultMap: ["__typename": "Status", "id": id, "annictId": annictId, "createdAt": createdAt, "state": state, "user": user.resultMap, "work": work.resultMap]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var createdAt: String { + get { + return resultMap["createdAt"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "createdAt") + } + } + + public var state: StatusState { + get { + return resultMap["state"]! as! StatusState + } + set { + resultMap.updateValue(newValue, forKey: "state") + } + } + + public var user: User { + get { + return User(unsafeResultMap: resultMap["user"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "user") + } + } + + public var work: Work { + get { + return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "work") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var statusFragment: StatusFragment { + get { + return StatusFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + + public struct User: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } + + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var userFragment: UserFragment { + get { + return UserFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + + public var asMultipleRecord: AsMultipleRecord? { + get { + if !AsMultipleRecord.possibleTypes.contains(__typename) { return nil } + return AsMultipleRecord(unsafeResultMap: resultMap) + } + set { + guard let newValue = newValue else { return } + resultMap = newValue.resultMap + } + } + + public struct AsMultipleRecord: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["MultipleRecord"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID) { + self.init(unsafeResultMap: ["__typename": "MultipleRecord", "id": id]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + } + } + } + + public struct PageInfo: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["PageInfo"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("endCursor", type: .scalar(String.self)), + GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(endCursor: String? = nil, hasNextPage: Bool) { + self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// When paginating forwards, the cursor to continue. + public var endCursor: String? { + get { + return resultMap["endCursor"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "endCursor") + } + } + + /// When paginating forwards, are there more items? + public var hasNextPage: Bool { + get { + return resultMap["hasNextPage"]! as! Bool + } + set { + resultMap.updateValue(newValue, forKey: "hasNextPage") + } + } + } + } + } + } +} + +public final class GetUserQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query GetUser($username: String!) { + user(username: $username) { + __typename + ...UserFragment + } + } + """ + + public let operationName: String = "GetUser" + + public let operationIdentifier: String? = "82718d3fac6860babf60481e49f8bd842e44727cf17acaeffcc20de77669d214" + + public var queryDocument: String { return operationDefinition.appending(UserFragment.fragmentDefinition) } + + public var username: String + + public init(username: String) { + self.username = username + } + + public var variables: GraphQLMap? { + return ["username": username] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("user", arguments: ["username": GraphQLVariable("username")], type: .object(User.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(user: User? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "user": user.flatMap { (value: User) -> ResultMap in value.resultMap }]) + } + + public var user: User? { + get { + return (resultMap["user"] as? ResultMap).flatMap { User(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "user") + } + } + + public struct User: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } + + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var userFragment: UserFragment { + get { + return UserFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } +} + +public final class GetViewerQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query GetViewer { + viewer { + __typename + id + annictId + name + username + avatarUrl + description + wannaWatchCount + watchingCount + watchedCount + onHoldCount + stopWatchingCount + } + } + """ + + public let operationName: String = "GetViewer" + + public let operationIdentifier: String? = "439135c366daff60762a9040bc7e788dbb8b6c95ef2b9d249a14c1e2181fda89" + + public init() { + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("viewer", type: .object(Viewer.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(viewer: Viewer? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "viewer": viewer.flatMap { (value: Viewer) -> ResultMap in value.resultMap }]) + } + + public var viewer: Viewer? { + get { + return (resultMap["viewer"] as? ResultMap).flatMap { Viewer(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "viewer") + } + } + + public struct Viewer: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), + GraphQLField("wannaWatchCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchingCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchedCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("onHoldCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("stopWatchingCount", type: .nonNull(.scalar(Int.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, name: String, username: String, avatarUrl: String? = nil, description: String, wannaWatchCount: Int, watchingCount: Int, watchedCount: Int, onHoldCount: Int, stopWatchingCount: Int) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "annictId": annictId, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description, "wannaWatchCount": wannaWatchCount, "watchingCount": watchingCount, "watchedCount": watchedCount, "onHoldCount": onHoldCount, "stopWatchingCount": stopWatchingCount]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } + + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + + public var wannaWatchCount: Int { + get { + return resultMap["wannaWatchCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "wannaWatchCount") + } + } + + public var watchingCount: Int { + get { + return resultMap["watchingCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchingCount") + } + } + + public var watchedCount: Int { + get { + return resultMap["watchedCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchedCount") + } + } + + public var onHoldCount: Int { + get { + return resultMap["onHoldCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "onHoldCount") + } + } + + public var stopWatchingCount: Int { + get { + return resultMap["stopWatchingCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "stopWatchingCount") + } + } + } + } +} + +public final class SearchWorksByIdQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query SearchWorksByID($annictId: Int!, $after: String) { + searchWorks(annictIds: [$annictId], after: $after) { + __typename + nodes { + __typename + ...WorkFragment + episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) { + __typename + nodes { + __typename + id + annictId + title + numberText + viewerRecordsCount + } + } + } + } + } + """ + + public let operationName: String = "SearchWorksByID" + + public let operationIdentifier: String? = "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172" + + public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } + + public var annictId: Int + public var after: String? + + public init(annictId: Int, after: String? = nil) { + self.annictId = annictId + self.after = after + } + + public var variables: GraphQLMap? { + return ["annictId": annictId, "after": after] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("searchWorks", arguments: ["annictIds": [GraphQLVariable("annictId")], "after": GraphQLVariable("after")], type: .object(SearchWork.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(searchWorks: SearchWork? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) + } + + public var searchWorks: SearchWork? { + get { + return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") + } + } + + public struct SearchWork: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("nodes", type: .list(.object(Node.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(nodes: [Node?]? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of nodes. + public var nodes: [Node?]? { + get { + return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("episodes", arguments: ["first": 5, "orderBy": ["direction": "ASC", "field": "SORT_NUMBER"]], type: .object(Episode.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, episodes: Episode? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "episodes": episodes.flatMap { (value: Episode) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var episodes: Episode? { + get { + return (resultMap["episodes"] as? ResultMap).flatMap { Episode(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "episodes") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + + public struct Episode: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["EpisodeConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("nodes", type: .list(.object(Node.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(nodes: [Node?]? = nil) { + self.init(unsafeResultMap: ["__typename": "EpisodeConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of nodes. + public var nodes: [Node?]? { + get { + return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .scalar(String.self)), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, viewerRecordsCount: Int) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "viewerRecordsCount": viewerRecordsCount]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var viewerRecordsCount: Int { + get { + return resultMap["viewerRecordsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "viewerRecordsCount") + } + } + } + } + } + } + } +} + +public struct WorkFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment WorkFragment on Work { + __typename + id + annictId + title + episodesCount + watchersCount + reviewsCount + seasonName + seasonYear + viewerStatusState + } + """ + + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } +} + +public struct RecordFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment RecordFragment on Record { + __typename + id + annictId + comment + ratingState + createdAt + user { + __typename + ...UserFragment + } + work { + __typename + ...WorkFragment + } + episode { + __typename + ...EpisodeFragment + } + } + """ + + public static let possibleTypes: [String] = ["Record"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("comment", type: .scalar(String.self)), + GraphQLField("ratingState", type: .scalar(RatingState.self)), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), + GraphQLField("user", type: .nonNull(.object(User.selections))), + GraphQLField("work", type: .nonNull(.object(Work.selections))), + GraphQLField("episode", type: .nonNull(.object(Episode.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, comment: String? = nil, ratingState: RatingState? = nil, createdAt: String, user: User, work: Work, episode: Episode) { + self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "comment": comment, "ratingState": ratingState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap, "episode": episode.resultMap]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var comment: String? { + get { + return resultMap["comment"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "comment") + } + } + + public var ratingState: RatingState? { + get { + return resultMap["ratingState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingState") + } + } + + public var createdAt: String { + get { + return resultMap["createdAt"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "createdAt") + } + } + + public var user: User { + get { + return User(unsafeResultMap: resultMap["user"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "user") + } + } + + public var work: Work { + get { + return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "work") + } + } + + public var episode: Episode { + get { + return Episode(unsafeResultMap: resultMap["episode"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "episode") + } + } + + public struct User: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] public static var selections: [GraphQLSelection] { return [ - GraphQLField("viewer", type: .object(Viewer.selections)), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } + + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var userFragment: UserFragment { + get { + return UserFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), ] } - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } } - public init(viewer: Viewer? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "viewer": viewer.flatMap { (value: Viewer) -> ResultMap in value.resultMap }]) + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } } - public var viewer: Viewer? { + public var title: String { get { - return (resultMap["viewer"] as? ResultMap).flatMap { Viewer(unsafeResultMap: $0) } + return resultMap["title"]! as! String } set { - resultMap.updateValue(newValue?.resultMap, forKey: "viewer") + resultMap.updateValue(newValue, forKey: "title") } } - public struct Viewer: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["User"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("name", type: .nonNull(.scalar(String.self))), - GraphQLField("username", type: .nonNull(.scalar(String.self))), - GraphQLField("avatarUrl", type: .scalar(String.self)), - GraphQLField("description", type: .nonNull(.scalar(String.self))), - GraphQLField("wannaWatchCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("watchingCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("watchedCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("onHoldCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("stopWatchingCount", type: .nonNull(.scalar(Int.self))), - ] + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap + set { + resultMap.updateValue(newValue, forKey: "episodesCount") } + } - public init(id: GraphQLID, annictId: Int, name: String, username: String, avatarUrl: String? = nil, description: String, wannaWatchCount: Int, watchingCount: Int, watchedCount: Int, onHoldCount: Int, stopWatchingCount: Int) { - self.init(unsafeResultMap: ["__typename": "User", "id": id, "annictId": annictId, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description, "wannaWatchCount": wannaWatchCount, "watchingCount": watchingCount, "watchedCount": watchedCount, "onHoldCount": onHoldCount, "stopWatchingCount": stopWatchingCount]) + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") } + } - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") } + } - public var name: String { - get { - return resultMap["name"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "name") - } + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName } - - public var username: String { - get { - return resultMap["username"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "username") - } + set { + resultMap.updateValue(newValue, forKey: "seasonName") } + } - public var avatarUrl: String? { - get { - return resultMap["avatarUrl"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "avatarUrl") - } + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int } - - public var description: String { - get { - return resultMap["description"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "description") - } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") } + } - public var wannaWatchCount: Int { - get { - return resultMap["wannaWatchCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "wannaWatchCount") - } + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState } - - public var watchingCount: Int { - get { - return resultMap["watchingCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "watchingCount") - } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") } + } - public var watchedCount: Int { - get { - return resultMap["watchedCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "watchedCount") - } + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap } + } - public var onHoldCount: Int { - get { - return resultMap["onHoldCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "onHoldCount") - } + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap } - public var stopWatchingCount: Int { + public var workFragment: WorkFragment { get { - return resultMap["stopWatchingCount"]! as! Int + return WorkFragment(unsafeResultMap: resultMap) } set { - resultMap.updateValue(newValue, forKey: "stopWatchingCount") + resultMap += newValue.resultMap } } } } -} - -public final class SearchWorksByIdQuery: GraphQLQuery { - /// The raw GraphQL definition of this operation. - public let operationDefinition: String = - """ - query SearchWorksByID($annictId: Int!, $after: String) { - searchWorks(annictIds: [$annictId], after: $after) { - __typename - nodes { - __typename - ...WorkFragment - episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) { - __typename - nodes { - __typename - id - annictId - title - numberText - viewerRecordsCount - } - } - } - } - } - """ - - public let operationName: String = "SearchWorksByID" - public let operationIdentifier: String? = "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172" - - public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } + public struct Episode: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Episode"] - public var annictId: Int - public var after: String? + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("title", type: .scalar(String.self)), + ] + } - public init(annictId: Int, after: String? = nil) { - self.annictId = annictId - self.after = after - } + public private(set) var resultMap: ResultMap - public var variables: GraphQLMap? { - return ["annictId": annictId, "after": after] - } + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } - public struct Data: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["Query"] + public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + } - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("searchWorks", arguments: ["annictIds": [GraphQLVariable("annictId")], "after": GraphQLVariable("after")], type: .object(SearchWork.selections)), - ] + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } } - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } } - public init(searchWorks: SearchWork? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } } - public var searchWorks: SearchWork? { + public var numberText: String? { get { - return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } + return resultMap["numberText"] as? String } set { - resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") + resultMap.updateValue(newValue, forKey: "numberText") } } - public struct SearchWork: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["WorkConnection"] + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - ] + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) } + set { + resultMap += newValue.resultMap + } + } + public struct Fragments { public private(set) var resultMap: ResultMap public init(unsafeResultMap: ResultMap) { self.resultMap = unsafeResultMap } - public init(nodes: [Node?]? = nil) { - self.init(unsafeResultMap: ["__typename": "WorkConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) - } - - public var __typename: String { + public var episodeFragment: EpisodeFragment { get { - return resultMap["__typename"]! as! String + return EpisodeFragment(unsafeResultMap: resultMap) } set { - resultMap.updateValue(newValue, forKey: "__typename") + resultMap += newValue.resultMap } } + } + } +} - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } +public struct StatusFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment StatusFragment on Status { + __typename + id + annictId + createdAt + state + user { + __typename + ...UserFragment + } + work { + __typename + ...WorkFragment } + } + """ - public struct Node: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["Work"] + public static let possibleTypes: [String] = ["Status"] - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("title", type: .nonNull(.scalar(String.self))), - GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("seasonName", type: .scalar(SeasonName.self)), - GraphQLField("seasonYear", type: .scalar(Int.self)), - GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), - GraphQLField("episodes", arguments: ["first": 5, "orderBy": ["direction": "ASC", "field": "SORT_NUMBER"]], type: .object(Episode.selections)), - ] - } + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), + GraphQLField("state", type: .nonNull(.scalar(StatusState.self))), + GraphQLField("user", type: .nonNull(.object(User.selections))), + GraphQLField("work", type: .nonNull(.object(Work.selections))), + ] + } - public private(set) var resultMap: ResultMap + public private(set) var resultMap: ResultMap - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, episodes: Episode? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "episodes": episodes.flatMap { (value: Episode) -> ResultMap in value.resultMap }]) - } + public init(id: GraphQLID, annictId: Int, createdAt: String, state: StatusState, user: User, work: Work) { + self.init(unsafeResultMap: ["__typename": "Status", "id": id, "annictId": annictId, "createdAt": createdAt, "state": state, "user": user.resultMap, "work": work.resultMap]) + } - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } - public var title: String { - get { - return resultMap["title"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "title") - } - } + public var createdAt: String { + get { + return resultMap["createdAt"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "createdAt") + } + } - public var episodesCount: Int { - get { - return resultMap["episodesCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "episodesCount") - } - } + public var state: StatusState { + get { + return resultMap["state"]! as! StatusState + } + set { + resultMap.updateValue(newValue, forKey: "state") + } + } - public var watchersCount: Int { - get { - return resultMap["watchersCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "watchersCount") - } - } + public var user: User { + get { + return User(unsafeResultMap: resultMap["user"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "user") + } + } + + public var work: Work { + get { + return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "work") + } + } + + public struct User: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } - public var reviewsCount: Int { - get { - return resultMap["reviewsCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "reviewsCount") - } - } + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } - public var seasonName: SeasonName? { - get { - return resultMap["seasonName"] as? SeasonName - } - set { - resultMap.updateValue(newValue, forKey: "seasonName") - } - } + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } - public var seasonYear: Int? { - get { - return resultMap["seasonYear"] as? Int - } - set { - resultMap.updateValue(newValue, forKey: "seasonYear") - } - } + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } - public var viewerStatusState: StatusState? { - get { - return resultMap["viewerStatusState"] as? StatusState - } - set { - resultMap.updateValue(newValue, forKey: "viewerStatusState") - } - } + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } - public var episodes: Episode? { - get { - return (resultMap["episodes"] as? ResultMap).flatMap { Episode(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "episodes") - } - } + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } - public struct Fragments { - public private(set) var resultMap: ResultMap + public struct Fragments { + public private(set) var resultMap: ResultMap - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } - public var workFragment: WorkFragment { - get { - return WorkFragment(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } + public var userFragment: UserFragment { + get { + return UserFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap } + } + } + } - public struct Episode: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["EpisodeConnection"] + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("nodes", type: .list(.object(Node.selections))), - ] - } + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + ] + } - public private(set) var resultMap: ResultMap + public private(set) var resultMap: ResultMap - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } - public init(nodes: [Node?]? = nil) { - self.init(unsafeResultMap: ["__typename": "EpisodeConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) - } + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } - /// A list of nodes. - public var nodes: [Node?]? { - get { - return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } - } - set { - resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") - } - } + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } - public struct Node: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["Episode"] + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("title", type: .scalar(String.self)), - GraphQLField("numberText", type: .scalar(String.self)), - GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), - ] - } + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } - public private(set) var resultMap: ResultMap + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } - public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, viewerRecordsCount: Int) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "viewerRecordsCount": viewerRecordsCount]) - } + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } - public var title: String? { - get { - return resultMap["title"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "title") - } - } + public struct Fragments { + public private(set) var resultMap: ResultMap - public var numberText: String? { - get { - return resultMap["numberText"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "numberText") - } - } + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } - public var viewerRecordsCount: Int { - get { - return resultMap["viewerRecordsCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "viewerRecordsCount") - } - } - } + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap } } } } } -public struct WorkFragment: GraphQLFragment { +public struct UserFragment: GraphQLFragment { /// The raw GraphQL definition of this fragment. public static let fragmentDefinition: String = """ - fragment WorkFragment on Work { + fragment UserFragment on User { __typename id - annictId - title - episodesCount - watchersCount - reviewsCount - seasonName - seasonYear - viewerStatusState + name + username + avatarUrl + description } """ - public static let possibleTypes: [String] = ["Work"] + public static let possibleTypes: [String] = ["User"] public static var selections: [GraphQLSelection] { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("title", type: .nonNull(.scalar(String.self))), - GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), - GraphQLField("seasonName", type: .scalar(SeasonName.self)), - GraphQLField("seasonYear", type: .scalar(Int.self)), - GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), ] } @@ -1751,8 +3564,8 @@ public struct WorkFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) } public var __typename: String { @@ -1773,90 +3586,135 @@ public struct WorkFragment: GraphQLFragment { } } - public var annictId: Int { + public var name: String { get { - return resultMap["annictId"]! as! Int + return resultMap["name"]! as! String } set { - resultMap.updateValue(newValue, forKey: "annictId") + resultMap.updateValue(newValue, forKey: "name") } } - public var title: String { + public var username: String { get { - return resultMap["title"]! as! String + return resultMap["username"]! as! String } set { - resultMap.updateValue(newValue, forKey: "title") + resultMap.updateValue(newValue, forKey: "username") } } - public var episodesCount: Int { + public var avatarUrl: String? { get { - return resultMap["episodesCount"]! as! Int + return resultMap["avatarUrl"] as? String } set { - resultMap.updateValue(newValue, forKey: "episodesCount") + resultMap.updateValue(newValue, forKey: "avatarUrl") } } - public var watchersCount: Int { + public var description: String { get { - return resultMap["watchersCount"]! as! Int + return resultMap["description"]! as! String } set { - resultMap.updateValue(newValue, forKey: "watchersCount") + resultMap.updateValue(newValue, forKey: "description") } } +} - public var reviewsCount: Int { +public struct EpisodeFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment EpisodeFragment on Episode { + __typename + id + annictId + numberText + title + } + """ + + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("title", type: .scalar(String.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + } + + public var __typename: String { get { - return resultMap["reviewsCount"]! as! Int + return resultMap["__typename"]! as! String } set { - resultMap.updateValue(newValue, forKey: "reviewsCount") + resultMap.updateValue(newValue, forKey: "__typename") } } - public var seasonName: SeasonName? { + public var id: GraphQLID { get { - return resultMap["seasonName"] as? SeasonName + return resultMap["id"]! as! GraphQLID } set { - resultMap.updateValue(newValue, forKey: "seasonName") + resultMap.updateValue(newValue, forKey: "id") } } - public var seasonYear: Int? { + public var annictId: Int { get { - return resultMap["seasonYear"] as? Int + return resultMap["annictId"]! as! Int } set { - resultMap.updateValue(newValue, forKey: "seasonYear") + resultMap.updateValue(newValue, forKey: "annictId") } } - public var viewerStatusState: StatusState? { + public var numberText: String? { get { - return resultMap["viewerStatusState"] as? StatusState + return resultMap["numberText"] as? String } set { - resultMap.updateValue(newValue, forKey: "viewerStatusState") + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") } } } -public struct RecordFragment: GraphQLFragment { +public struct ReviewFragment: GraphQLFragment { /// The raw GraphQL definition of this fragment. public static let fragmentDefinition: String = """ - fragment RecordFragment on Record { + fragment ReviewFragment on Review { __typename id annictId - comment - ratingState createdAt + body + ratingAnimationState user { __typename ...UserFragment @@ -1865,26 +3723,21 @@ public struct RecordFragment: GraphQLFragment { __typename ...WorkFragment } - episode { - __typename - ...EpisodeFragment - } } """ - public static let possibleTypes: [String] = ["Record"] + public static let possibleTypes: [String] = ["Review"] public static var selections: [GraphQLSelection] { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("comment", type: .scalar(String.self)), - GraphQLField("ratingState", type: .scalar(RatingState.self)), GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), + GraphQLField("body", type: .nonNull(.scalar(String.self))), + GraphQLField("ratingAnimationState", type: .scalar(RatingState.self)), GraphQLField("user", type: .nonNull(.object(User.selections))), GraphQLField("work", type: .nonNull(.object(Work.selections))), - GraphQLField("episode", type: .nonNull(.object(Episode.selections))), ] } @@ -1894,8 +3747,8 @@ public struct RecordFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, comment: String? = nil, ratingState: RatingState? = nil, createdAt: String, user: User, work: Work, episode: Episode) { - self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "comment": comment, "ratingState": ratingState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap, "episode": episode.resultMap]) + public init(id: GraphQLID, annictId: Int, createdAt: String, body: String, ratingAnimationState: RatingState? = nil, user: User, work: Work) { + self.init(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "createdAt": createdAt, "body": body, "ratingAnimationState": ratingAnimationState, "user": user.resultMap, "work": work.resultMap]) } public var __typename: String { @@ -1925,30 +3778,30 @@ public struct RecordFragment: GraphQLFragment { } } - public var comment: String? { + public var createdAt: String { get { - return resultMap["comment"] as? String + return resultMap["createdAt"]! as! String } set { - resultMap.updateValue(newValue, forKey: "comment") + resultMap.updateValue(newValue, forKey: "createdAt") } } - public var ratingState: RatingState? { + public var body: String { get { - return resultMap["ratingState"] as? RatingState + return resultMap["body"]! as! String } set { - resultMap.updateValue(newValue, forKey: "ratingState") + resultMap.updateValue(newValue, forKey: "body") } } - public var createdAt: String { + public var ratingAnimationState: RatingState? { get { - return resultMap["createdAt"]! as! String + return resultMap["ratingAnimationState"] as? RatingState } set { - resultMap.updateValue(newValue, forKey: "createdAt") + resultMap.updateValue(newValue, forKey: "ratingAnimationState") } } @@ -1970,15 +3823,6 @@ public struct RecordFragment: GraphQLFragment { } } - public var episode: Episode { - get { - return Episode(unsafeResultMap: resultMap["episode"]! as! ResultMap) - } - set { - resultMap.updateValue(newValue.resultMap, forKey: "episode") - } - } - public struct User: GraphQLSelectionSet { public static let possibleTypes: [String] = ["User"] @@ -1990,6 +3834,7 @@ public struct RecordFragment: GraphQLFragment { GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("username", type: .nonNull(.scalar(String.self))), GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), ] } @@ -1999,8 +3844,8 @@ public struct RecordFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl]) + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) } public var __typename: String { @@ -2048,6 +3893,15 @@ public struct RecordFragment: GraphQLFragment { } } + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -2220,262 +4074,4 @@ public struct RecordFragment: GraphQLFragment { } } } - - public struct Episode: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["Episode"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("numberText", type: .scalar(String.self)), - GraphQLField("title", type: .scalar(String.self)), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var numberText: String? { - get { - return resultMap["numberText"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "numberText") - } - } - - public var title: String? { - get { - return resultMap["title"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "title") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var episodeFragment: EpisodeFragment { - get { - return EpisodeFragment(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } -} - -public struct UserFragment: GraphQLFragment { - /// The raw GraphQL definition of this fragment. - public static let fragmentDefinition: String = - """ - fragment UserFragment on User { - __typename - id - name - username - avatarUrl - } - """ - - public static let possibleTypes: [String] = ["User"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("name", type: .nonNull(.scalar(String.self))), - GraphQLField("username", type: .nonNull(.scalar(String.self))), - GraphQLField("avatarUrl", type: .scalar(String.self)), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var name: String { - get { - return resultMap["name"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "name") - } - } - - public var username: String { - get { - return resultMap["username"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "username") - } - } - - public var avatarUrl: String? { - get { - return resultMap["avatarUrl"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "avatarUrl") - } - } -} - -public struct EpisodeFragment: GraphQLFragment { - /// The raw GraphQL definition of this fragment. - public static let fragmentDefinition: String = - """ - fragment EpisodeFragment on Episode { - __typename - id - annictId - numberText - title - } - """ - - public static let possibleTypes: [String] = ["Episode"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("numberText", type: .scalar(String.self)), - GraphQLField("title", type: .scalar(String.self)), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var numberText: String? { - get { - return resultMap["numberText"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "numberText") - } - } - - public var title: String? { - get { - return resultMap["title"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "title") - } - } } diff --git a/Sources/Common/API/Query/Fragments.graphql b/Sources/Common/API/Query/Fragments.graphql index 5177131e..4d77a787 100644 --- a/Sources/Common/API/Query/Fragments.graphql +++ b/Sources/Common/API/Query/Fragments.graphql @@ -27,11 +27,25 @@ fragment RecordFragment on Record { } } +fragment StatusFragment on Status { + id + annictId + createdAt + state + user { + ...UserFragment + } + work { + ...WorkFragment + } +} + fragment UserFragment on User { id name username avatarUrl + description } fragment EpisodeFragment on Episode { @@ -40,3 +54,17 @@ fragment EpisodeFragment on Episode { numberText title } + +fragment ReviewFragment on Review { + id + annictId + createdAt + body + ratingAnimationState + user { + ...UserFragment + } + work { + ...WorkFragment + } +} diff --git a/Sources/Common/API/Query/GetFollowingActivities.graphql b/Sources/Common/API/Query/GetFollowingActivities.graphql index 26f8ba6d..f59c3422 100644 --- a/Sources/Common/API/Query/GetFollowingActivities.graphql +++ b/Sources/Common/API/Query/GetFollowingActivities.graphql @@ -8,10 +8,10 @@ query GetFollowingActivities($first: Int, $after: String) { ...RecordFragment } ... on Review { - id + ...ReviewFragment } ... on Status { - id + ...StatusFragment } ... on MultipleRecord { id diff --git a/Sources/Common/API/Query/GetUser.graphql b/Sources/Common/API/Query/GetUser.graphql new file mode 100644 index 00000000..fdebf11a --- /dev/null +++ b/Sources/Common/API/Query/GetUser.graphql @@ -0,0 +1,5 @@ +query GetUser($username: String!) { + user(username: $username) { + ...UserFragment + } +} diff --git a/Sources/Common/Extension/Model+Extension.swift b/Sources/Common/Extension/Model+Extension.swift index 1da95182..773319cc 100644 --- a/Sources/Common/Extension/Model+Extension.swift +++ b/Sources/Common/Extension/Model+Extension.swift @@ -71,3 +71,26 @@ extension RatingState { } } } + +extension StatusState { + var title: String { + switch self { + case .watching: + return "見てる" + case .wannaWatch: + return "見たい" + case .watched: + return "見た" + case .onHold: + return "一時中断" + case .stopWatching: + return "視聴中止" + default: + return "" + } + } +} + +extension UserFragment { + static var dummy = UserFragment(id: "user", name: "touyu", username: "touyu", description: "") +} diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index 08fc19ae..dff418e2 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -12,7 +12,8 @@ import SkeletonUI struct ActivityRecordView: View { let record: RecordFragment - @State var isPresented: Bool = false + @State var isPresentedWorkView: Bool = false + @State var isPresentedUserView: Bool = false var body: some View { HStack(alignment: .top, spacing: 12) { @@ -21,6 +22,13 @@ struct ActivityRecordView: View { .clipShape(Circle()) .foregroundColor(.gray) .frame(width: 40, height: 40, alignment: .leading) + .onTapGesture { + isPresentedUserView = true + } + .sheet(isPresented: $isPresentedUserView) { + UserView(username: record.user.fragments.userFragment.username) + } + VStack(alignment: .leading, spacing: 12) { HStack(alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) { Text(record.user.name) @@ -38,17 +46,16 @@ struct ActivityRecordView: View { } if let comemnt = record.comment, !comemnt.isEmpty { Text(comemnt) + .font(.body) } Button(action: { - isPresented = true + isPresentedWorkView = true }) { QuoteWorkView(work: record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) .frame(height: 80) .cornerRadius(8) -// .overlay(RoundedRectangle(cornerRadius: 8) -// .stroke(Color.gray, lineWidth: 0.5)) } - .sheet(isPresented: $isPresented) { + .sheet(isPresented: $isPresentedWorkView) { WorkView(workID: record.work.fragments.workFragment.annictId) } } @@ -60,7 +67,7 @@ struct ActivityRecordView_Previews: PreviewProvider { static var previews: some View { let recordWork = RecordFragment.Work(id: "record", annictId: 6801, title: "GREAT PRETENDER", episodesCount: 0, watchersCount: 0, reviewsCount: 0) let recordEpisode = RecordFragment.Episode(id: "", annictId: 124160, numberText: "Case_1_1", title: "Los Angeles Connection") - let user = RecordFragment.User(id: "user", name: "touyu", username: "touyu") + let user = RecordFragment.User(id: "user", name: "touyu", username: "touyu", description: "") return ActivityRecordView(record: RecordFragment(id: "", annictId: 0, comment: "いい話だった", ratingState: .good, createdAt: "2021-01-06T17:20:54Z", user: user, work: recordWork, episode: recordEpisode)) .preferredColorScheme(.dark) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: 200)) @@ -99,6 +106,7 @@ struct ActivityEmptyView: View { struct ActivityEmptyView_Previews: PreviewProvider { static var previews: some View { ActivityEmptyView() + .preferredColorScheme(.dark) .previewLayout(.fixed(width: 375, height: 200)) } } diff --git a/Sources/Home/ActivityReviewView.swift b/Sources/Home/ActivityReviewView.swift new file mode 100644 index 00000000..c41e96b2 --- /dev/null +++ b/Sources/Home/ActivityReviewView.swift @@ -0,0 +1,67 @@ +// +// ActivityReviewView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import SwiftUI +import KingfisherSwiftUI + +struct ActivityReviewView: View { + let review: ReviewFragment + + @State var isPresented: Bool = false + + var body: some View { + HStack(alignment: .top, spacing: 12) { + KFImage(review.user.avatarUrl) + .resizable() + .clipShape(Circle()) + .foregroundColor(.gray) + .frame(width: 40, height: 40, alignment: .leading) + VStack(alignment: .leading, spacing: 12) { + HStack(alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) { + Text(review.user.name) + .font(.system(size: 14, weight: .bold, design: .default)) + Text("@\(review.user.username)") + .font(.system(size: 12, weight: .regular, design: .default)) + .foregroundColor(.gray) + Spacer() + Text(review.createdAt.toDate()?.toRelative()) + .font(.system(size: 12, weight: .regular, design: .default)) + .foregroundColor(.gray) + } + if let state = review.ratingAnimationState { + RatingStateView(ratingState: state) + } + Text(review.body) + .font(.body) + Button(action: { + isPresented = true + }) { + QuoteWorkView(work: review.work.fragments.workFragment) + .frame(height: 80) + .cornerRadius(8) + } + .sheet(isPresented: $isPresented) { + WorkView(workID: review.work.fragments.workFragment.annictId) + } + } + } + } +} + +struct ActivityReviewView_Previews: PreviewProvider { + static var previews: some View { + let review = ReviewFragment(id: "", + annictId: 0, + createdAt: "", + body: "面白い作品だった", + ratingAnimationState: RatingState.good, + user: .init(unsafeResultMap: UserFragment.dummy.resultMap), + work: .init(unsafeResultMap: WorkFragment.dummy.resultMap)) + ActivityReviewView(review: review) + .previewLayout(.fixed(width: 375, height: 200)) + } +} diff --git a/Sources/Home/ActivityStatusView.swift b/Sources/Home/ActivityStatusView.swift index 96281c62..12568cd6 100644 --- a/Sources/Home/ActivityStatusView.swift +++ b/Sources/Home/ActivityStatusView.swift @@ -6,44 +6,55 @@ // import SwiftUI +import KingfisherSwiftUI struct ActivityStatusView: View { -// @Binding var activityStatus: ActivityStatus + let status: StatusFragment + + @State var isPresented: Bool = false var body: some View { - Text("AAAAA") -// HStack(alignment: .top, spacing: 12) { -// Circle() -// .frame(width: 40, height: 40, alignment: .leading) -// .foregroundColor(.gray) -// VStack(alignment: .leading, spacing: 12) { -// HStack { -// Text("touyu") -// .font(.system(size: 14, weight: .bold, design: .default)) -// Text("@touyu") -// .font(.system(size: 14, weight: .regular, design: .default)) -// .foregroundColor(.gray) -// Text("・10分前") -// .font(.system(size: 14, weight: .regular, design: .default)) -// .foregroundColor(.gray) -// } -// Text("ステータスを見たに変更しました。") -// QuoteWorkView(work: $activityStatus.work) -// .frame(height: 80) -// .cornerRadius(8) -// .overlay(RoundedRectangle(cornerRadius: 8) -// .stroke(Color.gray, lineWidth: 0.5)) -// } -// Spacer(minLength: 0) -// } + HStack(alignment: .top, spacing: 12) { + KFImage(status.user.avatarUrl) + .resizable() + .clipShape(Circle()) + .foregroundColor(.gray) + .frame(width: 40, height: 40, alignment: .leading) + VStack(alignment: .leading, spacing: 12) { + HStack(alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) { + Text(status.user.name) + .font(.system(size: 14, weight: .bold, design: .default)) + Text("@\(status.user.username)") + .font(.system(size: 12, weight: .regular, design: .default)) + .foregroundColor(.gray) + Spacer() + Text(status.createdAt.toDate()?.toRelative()) + .font(.system(size: 12, weight: .regular, design: .default)) + .foregroundColor(.gray) + } + Text("ステータスを「\(status.state.title)」に変更しました") + .font(.body) + Button(action: { + isPresented = true + }) { + QuoteWorkView(work: status.work.fragments.workFragment) + .frame(height: 80) + .cornerRadius(8) + } + .sheet(isPresented: $isPresented) { + WorkView(workID: status.work.fragments.workFragment.annictId) + } + } + } } } struct ActivityStatusView_Previews: PreviewProvider { static var previews: some View { - return ActivityStatusView() -// let item = PreviewModel.activityStatus -// ActivityStatusView(activityStatus: .constant(item)) -// .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/400.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/200.0/*@END_MENU_TOKEN@*/)) + return ActivityStatusView(status: .init(id: "", annictId: 0, createdAt: "2021-01-06T17:20:54Z", + state: .wannaWatch, + user: .init(unsafeResultMap: UserFragment.dummy.resultMap), + work: .init(unsafeResultMap: WorkFragment.dummy.resultMap))) + .previewLayout(.fixed(width: 375, height: 200)) } } diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index c06e9afe..b737bbf8 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -26,11 +26,10 @@ struct HomeView: View { } } - LazyVStack { + LazyVStack(spacing: 20) { ForEach(viewModel.state.activities.indices, id: \.self) { index in let activity = viewModel.state.activities[index] activityItemView(activity: activity) - .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) } ActivityIndicator(isAnimating: .constant(true), style: .medium) .frame(height: 40) @@ -38,7 +37,7 @@ struct HomeView: View { viewModel.action.send(.fetchMore) } } - .padding(.top, 24) + .padding(EdgeInsets(top: 24, leading: 16, bottom: 0, trailing: 16)) } .navigationBarTitle("Home") .onAppear { @@ -54,12 +53,12 @@ struct HomeView: View { ActivityRecordView(record: record.fragments.recordFragment) case .review: Text("Review") - case .status: - Text("Status") + case .status(let status): + ActivityStatusView(status: status.fragments.statusFragment) case .multipleRecord: - Text("MultipleRecord") + EmptyView() case .none: - Text("None") + EmptyView() } } } diff --git a/Sources/Profile/ProfileView.swift b/Sources/Profile/ProfileView.swift index 374534a4..0eaad248 100644 --- a/Sources/Profile/ProfileView.swift +++ b/Sources/Profile/ProfileView.swift @@ -18,7 +18,8 @@ struct ProfileView: View { ScrollView(.vertical, showsIndicators: false) { VStack(alignment: .leading) { if let viewer = viewer { - header() + UserHeaderView(user: viewer) + .padding(.init(top: 0, leading: 16, bottom: 0, trailing: 16)) VStack(alignment: .leading, spacing: 24) { Picker("", selection: $selectorIndex) { Text("ライブラリ") @@ -46,31 +47,6 @@ struct ProfileView: View { } } - func header() -> some View { - Group { - HStack(spacing: 16) { - KFImage(viewer?.avatarUrl) - .resizable() - .clipShape(Circle()) - .foregroundColor(.gray) - .frame(width: 80, height: 80) - VStack(alignment: .leading) { - Text(viewer?.name) - .font(.title) - .bold() - Text("@\(viewer?.name ?? "")") - .fontWeight(.medium) - .foregroundColor(.gray) - } - Spacer() - } - .padding(.init(top: 20, leading: 0, bottom: 20, trailing: 0)) - Text(viewer?.description) - .font(.body) - } - .padding(.init(top: 0, leading: 16, bottom: 0, trailing: 16)) - } - func libraryView(viewer: Viewer) -> some View { Group { LibraryWorksView(title: "見てる \(viewer.watchingCount)") diff --git a/Sources/User/UserHeaderView.swift b/Sources/User/UserHeaderView.swift new file mode 100644 index 00000000..1003f0f0 --- /dev/null +++ b/Sources/User/UserHeaderView.swift @@ -0,0 +1,43 @@ +// +// UserHeaderView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import SwiftUI +import KingfisherSwiftUI + +struct UserHeaderView: View { + let user: UserRepresentable + + var body: some View { + VStack { + HStack(spacing: 16) { + KFImage(user.avatarUrl) + .resizable() + .clipShape(Circle()) + .foregroundColor(.gray) + .frame(width: 80, height: 80) + VStack(alignment: .leading) { + Text(user.name) + .font(.title) + .bold() + Text("@\(user.name)") + .fontWeight(.medium) + .foregroundColor(.gray) + } + Spacer() + } + .padding(.init(top: 20, leading: 0, bottom: 20, trailing: 0)) + Text(user.description) + .font(.body) + } + } +} + +struct UserHeaderView_Previews: PreviewProvider { + static var previews: some View { + UserHeaderView(user: UserDummy()) + } +} diff --git a/Sources/User/UserRepresentable.swift b/Sources/User/UserRepresentable.swift new file mode 100644 index 00000000..3bbfad5d --- /dev/null +++ b/Sources/User/UserRepresentable.swift @@ -0,0 +1,26 @@ +// +// UserRepresentable.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import Foundation + +protocol UserRepresentable { + var name: String { get } + var username: String { get } + var description: String { get } + var avatarUrl: String? { get } +} + +struct UserDummy: UserRepresentable { + var name = "touyu" + var username = "touyu" + var description = "「Portannict」というAnnictのクライアントアプリ作ってます。" + var avatarUrl: String? = "https://api-assets.annict.com/shrine/profile/5482/image/master-70884f30052922f4f758e6eb69dc6985.jpg" +} + +extension GetViewerQuery.Data.Viewer: UserRepresentable { } + +extension UserFragment: UserRepresentable { } diff --git a/Sources/User/UserView.swift b/Sources/User/UserView.swift new file mode 100644 index 00000000..35ade3c4 --- /dev/null +++ b/Sources/User/UserView.swift @@ -0,0 +1,46 @@ +// +// UserView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import SwiftUI + +struct UserView: View { + let username: String + @State private var user: UserFragment? + + init(username: String) { + self.username = username + } + + var body: some View { + VStack { + if let user = user { + UserHeaderView(user: user) + .padding(.init(top: 0, leading: 16, bottom: 0, trailing: 16)) + } + } + .onAppear { + fetch() + } + } + + private func fetch() { + Network.shared.apollo.fetch(query: GetUserQuery(username: username)) { result in + switch result { + case .success(let data): + user = data.data?.user?.fragments.userFragment + case .failure(let error): + print(error) + } + } + } +} + +struct UserView_Previews: PreviewProvider { + static var previews: some View { + UserView(username: "touyu") + } +} diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index d7e8201d..c860951b 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -1,7 +1,11 @@ { - "989768f90f2c3ac24489b612b1e69ea9af266eb97c4d41b966885e9c418b2ce3": { + "85e752c5006409898daa5cdbce370f805faef08b468e746651a51f1d78d9e06c": { "name": "GetFollowingActivities", - "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n cursor\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n id\n }\n ... on Status {\n id\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n}" + "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n cursor\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n ...ReviewFragment\n }\n ... on Status {\n ...StatusFragment\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n}" + }, + "82718d3fac6860babf60481e49f8bd842e44727cf17acaeffcc20de77669d214": { + "name": "GetUser", + "source": "query GetUser($username: String!) {\n user(username: $username) {\n __typename\n ...UserFragment\n }\n}" }, "439135c366daff60762a9040bc7e788dbb8b6c95ef2b9d249a14c1e2181fda89": { "name": "GetViewer", From 64db8714a6398a75da8f03c85a69bbe6b3912a16 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 7 Jan 2021 18:08:05 +0900 Subject: [PATCH 027/101] Impl --- Portannict.xcodeproj/project.pbxproj | 4 + Sources/API.swift | 438 ++++++++++++++++-- .../Common/API/Query/GetViewerWorks.graphql | 11 + Sources/Profile/LibraryWorksView.swift | 43 +- Sources/Profile/ProfileView.swift | 10 +- Sources/operationIDs.json | 4 + 6 files changed, 444 insertions(+), 66 deletions(-) create mode 100644 Sources/Common/API/Query/GetViewerWorks.graphql diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 62d2c07a..074ef8b3 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -45,6 +45,7 @@ CFE7E5CC25A6E8D8009EB3DC /* UserRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5CB25A6E8D8009EB3DC /* UserRepresentable.swift */; }; CFE7E5CE25A6EC6B009EB3DC /* GetUser.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */; }; CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5CF25A6F6BA009EB3DC /* ActivityReviewView.swift */; }; + CFE7E5D425A700E8009EB3DC /* GetViewerWorks.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */; }; CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */; }; CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */; }; CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */; }; @@ -102,6 +103,7 @@ CFE7E5CB25A6E8D8009EB3DC /* UserRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserRepresentable.swift; sourceTree = ""; }; CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetUser.graphql; sourceTree = ""; }; CFE7E5CF25A6F6BA009EB3DC /* ActivityReviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityReviewView.swift; sourceTree = ""; }; + CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewerWorks.graphql; sourceTree = ""; }; CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkView.swift; sourceTree = ""; }; CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderView.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; @@ -176,6 +178,7 @@ CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */, CFD82D3B25A64157005401AF /* GetViewer.graphql */, CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */, + CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */, CFB9BA77259DCD0D00C51708 /* Fragments.graphql */, ); path = Query; @@ -370,6 +373,7 @@ CF1E5E5D259CE88500035D50 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, + CFE7E5D425A700E8009EB3DC /* GetViewerWorks.graphql in Resources */, CF1E5E87259CF4CE00035D50 /* SearchWorksByID.graphql in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Sources/API.swift b/Sources/API.swift index a304802a..c33fa3af 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -4,57 +4,6 @@ import Apollo import Foundation -/// Season name -public enum SeasonName: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { - public typealias RawValue = String - case winter - case spring - case summer - case autumn - /// Auto generated constant for unknown enum values - case __unknown(RawValue) - - public init?(rawValue: RawValue) { - switch rawValue { - case "WINTER": self = .winter - case "SPRING": self = .spring - case "SUMMER": self = .summer - case "AUTUMN": self = .autumn - default: self = .__unknown(rawValue) - } - } - - public var rawValue: RawValue { - switch self { - case .winter: return "WINTER" - case .spring: return "SPRING" - case .summer: return "SUMMER" - case .autumn: return "AUTUMN" - case .__unknown(let value): return value - } - } - - public static func == (lhs: SeasonName, rhs: SeasonName) -> Bool { - switch (lhs, rhs) { - case (.winter, .winter): return true - case (.spring, .spring): return true - case (.summer, .summer): return true - case (.autumn, .autumn): return true - case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue - default: return false - } - } - - public static var allCases: [SeasonName] { - return [ - .winter, - .spring, - .summer, - .autumn, - ] - } -} - public enum StatusState: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { public typealias RawValue = String case wannaWatch @@ -115,6 +64,57 @@ public enum StatusState: RawRepresentable, Equatable, Hashable, CaseIterable, Ap } } +/// Season name +public enum SeasonName: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { + public typealias RawValue = String + case winter + case spring + case summer + case autumn + /// Auto generated constant for unknown enum values + case __unknown(RawValue) + + public init?(rawValue: RawValue) { + switch rawValue { + case "WINTER": self = .winter + case "SPRING": self = .spring + case "SUMMER": self = .summer + case "AUTUMN": self = .autumn + default: self = .__unknown(rawValue) + } + } + + public var rawValue: RawValue { + switch self { + case .winter: return "WINTER" + case .spring: return "SPRING" + case .summer: return "SUMMER" + case .autumn: return "AUTUMN" + case .__unknown(let value): return value + } + } + + public static func == (lhs: SeasonName, rhs: SeasonName) -> Bool { + switch (lhs, rhs) { + case (.winter, .winter): return true + case (.spring, .spring): return true + case (.summer, .summer): return true + case (.autumn, .autumn): return true + case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue + default: return false + } + } + + public static var allCases: [SeasonName] { + return [ + .winter, + .spring, + .summer, + .autumn, + ] + } +} + public enum RatingState: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { public typealias RawValue = String case great @@ -2163,6 +2163,342 @@ public final class GetViewerQuery: GraphQLQuery { } } +public final class GetViewerWorksQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query GetViewerWorks($first: Int, $after: String, $state: StatusState!) { + viewer { + __typename + works(first: $first, after: $after, state: $state) { + __typename + edges { + __typename + node { + __typename + ...WorkFragment + } + } + } + } + } + """ + + public let operationName: String = "GetViewerWorks" + + public let operationIdentifier: String? = "d1a522475f872cdc8485a59600f54d67cac7f6bc9971257e732229da9d44ae32" + + public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } + + public var first: Int? + public var after: String? + public var state: StatusState + + public init(first: Int? = nil, after: String? = nil, state: StatusState) { + self.first = first + self.after = after + self.state = state + } + + public var variables: GraphQLMap? { + return ["first": first, "after": after, "state": state] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("viewer", type: .object(Viewer.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(viewer: Viewer? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "viewer": viewer.flatMap { (value: Viewer) -> ResultMap in value.resultMap }]) + } + + public var viewer: Viewer? { + get { + return (resultMap["viewer"] as? ResultMap).flatMap { Viewer(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "viewer") + } + } + + public struct Viewer: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("works", arguments: ["first": GraphQLVariable("first"), "after": GraphQLVariable("after"), "state": GraphQLVariable("state")], type: .object(Work.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(works: Work? = nil) { + self.init(unsafeResultMap: ["__typename": "User", "works": works.flatMap { (value: Work) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var works: Work? { + get { + return (resultMap["works"] as? ResultMap).flatMap { Work(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "works") + } + } + + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("edges", type: .list(.object(Edge.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(edges: [Edge?]? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of edges. + public var edges: [Edge?]? { + get { + return (resultMap["edges"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Edge?] in value.map { (value: ResultMap?) -> Edge? in value.flatMap { (value: ResultMap) -> Edge in Edge(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, forKey: "edges") + } + } + + public struct Edge: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkEdge"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("node", type: .object(Node.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(node: Node? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkEdge", "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// The item at the end of the edge. + public var node: Node? { + get { + return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "node") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + } + } + } +} + public final class SearchWorksByIdQuery: GraphQLQuery { /// The raw GraphQL definition of this operation. public let operationDefinition: String = diff --git a/Sources/Common/API/Query/GetViewerWorks.graphql b/Sources/Common/API/Query/GetViewerWorks.graphql new file mode 100644 index 00000000..351a7c25 --- /dev/null +++ b/Sources/Common/API/Query/GetViewerWorks.graphql @@ -0,0 +1,11 @@ +query GetViewerWorks($first: Int, $after: String, $state: StatusState!) { + viewer { + works(first: $first, after: $after, state: $state) { + edges { + node { + ...WorkFragment + } + } + } + } +} diff --git a/Sources/Profile/LibraryWorksView.swift b/Sources/Profile/LibraryWorksView.swift index 656a4103..b99e69ba 100644 --- a/Sources/Profile/LibraryWorksView.swift +++ b/Sources/Profile/LibraryWorksView.swift @@ -9,12 +9,20 @@ import SwiftUI import KingfisherSwiftUI struct LibraryWorksView: View { - let title: String + let status: StatusState + let count: Int + + @State private var works: [WorkFragment] = [] + + init(status: StatusState, count: Int) { + self.status = status + self.count = count + } var body: some View { VStack(alignment: .leading, spacing: 8) { HStack { - Text(title) + Text("\(status.title) \(count)") .font(.system(size: 16)) .fontWeight(.bold) .padding(.leading, 16) @@ -25,22 +33,35 @@ struct LibraryWorksView: View { } ScrollView(.horizontal, showsIndicators: false) { HStack(spacing: 12) { - LibraryWorkView(work: .dummy) - LibraryWorkView(work: .dummy) - LibraryWorkView(work: .dummy) - LibraryWorkView(work: .dummy) - LibraryWorkView(work: .dummy) + ForEach(works.indices, id: \.self) { index in + LibraryWorkView(work: works[index]) + } } .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) } } + .onAppear { + fetch() + } + } + + private func fetch() { + Network.shared.apollo.fetch(query: GetViewerWorksQuery(first: 10, state: status)) { result in + switch result { + case .success(let data): + works = data.data?.viewer?.works?.edges?.compactMap { $0?.node?.fragments.workFragment } ?? [] + case .failure(let error): + print(error) + } + } } } struct LibraryWorkView: View { let work: WorkFragment - @State var isPresent: Bool = false + @State private var isPresent: Bool = false + private let maxWidth: CGFloat = 140 var body: some View { Button(action: { @@ -49,13 +70,15 @@ struct LibraryWorkView: View { VStack(alignment: .leading, spacing: 0) { KFImage(work.annictId) .resizable() - .aspectRatio(contentMode: .fill) + .background(Color(.lightGray)) + .aspectRatio(3/4, contentMode: .fill) + .frame(width: maxWidth) Text(work.title) .font(.system(size: 12)) .foregroundColor(.primary) .padding(8) } - .frame(width: 120) + .frame(width: maxWidth) .background(Color(.secondarySystemBackground)) .cornerRadius(4) }) diff --git a/Sources/Profile/ProfileView.swift b/Sources/Profile/ProfileView.swift index 0eaad248..37782434 100644 --- a/Sources/Profile/ProfileView.swift +++ b/Sources/Profile/ProfileView.swift @@ -49,11 +49,11 @@ struct ProfileView: View { func libraryView(viewer: Viewer) -> some View { Group { - LibraryWorksView(title: "見てる \(viewer.watchingCount)") - LibraryWorksView(title: "見たい \(viewer.wannaWatchCount)") - LibraryWorksView(title: "見た \(viewer.watchedCount)") - LibraryWorksView(title: "一時中断 \(viewer.onHoldCount)") - LibraryWorksView(title: "視聴中止 \(viewer.stopWatchingCount)") + LibraryWorksView(status: .watching, count: viewer.watchingCount) + LibraryWorksView(status: .wannaWatch, count: viewer.wannaWatchCount) + LibraryWorksView(status: .watched, count: viewer.watchedCount) + LibraryWorksView(status: .onHold, count: viewer.onHoldCount) + LibraryWorksView(status: .stopWatching, count: viewer.stopWatchingCount) } } diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index c860951b..cfbd209b 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -11,6 +11,10 @@ "name": "GetViewer", "source": "query GetViewer {\n viewer {\n __typename\n id\n annictId\n name\n username\n avatarUrl\n description\n wannaWatchCount\n watchingCount\n watchedCount\n onHoldCount\n stopWatchingCount\n }\n}" }, + "d1a522475f872cdc8485a59600f54d67cac7f6bc9971257e732229da9d44ae32": { + "name": "GetViewerWorks", + "source": "query GetViewerWorks($first: Int, $after: String, $state: StatusState!) {\n viewer {\n __typename\n works(first: $first, after: $after, state: $state) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n }\n}" + }, "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172": { "name": "SearchWorksByID", "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId], after: $after) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n nodes {\n __typename\n id\n annictId\n title\n numberText\n viewerRecordsCount\n }\n }\n }\n }\n}" From a8166c8404f85cf4d9ead28c9aeb4cb88bdcc13f Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 7 Jan 2021 18:14:22 +0900 Subject: [PATCH 028/101] Impl --- Portannict.xcodeproj/project.pbxproj | 24 ++++++++++++++++++++++++ Sources/Record/RecordView.swift | 23 +++++++++++++++++++++++ Sources/RootTabView.swift | 4 ++-- Sources/Search/SearchView.swift | 23 +++++++++++++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 Sources/Record/RecordView.swift create mode 100644 Sources/Search/SearchView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 074ef8b3..db7bb193 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -46,6 +46,8 @@ CFE7E5CE25A6EC6B009EB3DC /* GetUser.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */; }; CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5CF25A6F6BA009EB3DC /* ActivityReviewView.swift */; }; CFE7E5D425A700E8009EB3DC /* GetViewerWorks.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */; }; + CFE7E5D725A7077D009EB3DC /* RecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5D625A7077D009EB3DC /* RecordView.swift */; }; + CFE7E5DA25A70826009EB3DC /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5D925A70826009EB3DC /* SearchView.swift */; }; CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */; }; CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */; }; CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */; }; @@ -104,6 +106,8 @@ CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetUser.graphql; sourceTree = ""; }; CFE7E5CF25A6F6BA009EB3DC /* ActivityReviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityReviewView.swift; sourceTree = ""; }; CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewerWorks.graphql; sourceTree = ""; }; + CFE7E5D625A7077D009EB3DC /* RecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordView.swift; sourceTree = ""; }; + CFE7E5D925A70826009EB3DC /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; }; CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkView.swift; sourceTree = ""; }; CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderView.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; @@ -154,6 +158,8 @@ CFFDC8A6259C6EE9001C8E29 /* Work */, CFE7E5C325A6D64E009EB3DC /* Profile */, CFE7E5C625A6E6C3009EB3DC /* User */, + CFE7E5D525A70764009EB3DC /* Record */, + CFE7E5D825A7081A009EB3DC /* Search */, CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, CF1E5E5C259CE88500035D50 /* Envfile */, @@ -270,6 +276,22 @@ path = User; sourceTree = ""; }; + CFE7E5D525A70764009EB3DC /* Record */ = { + isa = PBXGroup; + children = ( + CFE7E5D625A7077D009EB3DC /* RecordView.swift */, + ); + path = Record; + sourceTree = ""; + }; + CFE7E5D825A7081A009EB3DC /* Search */ = { + isa = PBXGroup; + children = ( + CFE7E5D925A70826009EB3DC /* SearchView.swift */, + ); + path = Search; + sourceTree = ""; + }; CFFDC8A6259C6EE9001C8E29 /* Work */ = { isa = PBXGroup; children = ( @@ -414,6 +436,7 @@ CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, CFBB73B425A5718900601DCB /* Network.swift in Sources */, CFC03F0725959BDD001516D3 /* LoginSession.swift in Sources */, + CFE7E5D725A7077D009EB3DC /* RecordView.swift in Sources */, CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, CFBB73B725A575D700601DCB /* KFImage.swift in Sources */, CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, @@ -433,6 +456,7 @@ CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */, CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */, CF1E5E89259CF69E00035D50 /* API.swift in Sources */, + CFE7E5DA25A70826009EB3DC /* SearchView.swift in Sources */, CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */, CFE7E5C825A6E6D7009EB3DC /* UserView.swift in Sources */, CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */, diff --git a/Sources/Record/RecordView.swift b/Sources/Record/RecordView.swift new file mode 100644 index 00000000..87ea74c7 --- /dev/null +++ b/Sources/Record/RecordView.swift @@ -0,0 +1,23 @@ +// +// RecordView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import SwiftUI + +struct RecordView: View { + var body: some View { + NavigationView { + Text("Hello, World!") + .navigationBarTitle("Record") + } + } +} + +struct RecordView_Previews: PreviewProvider { + static var previews: some View { + RecordView() + } +} diff --git a/Sources/RootTabView.swift b/Sources/RootTabView.swift index 504e1e5d..feef31df 100644 --- a/Sources/RootTabView.swift +++ b/Sources/RootTabView.swift @@ -15,12 +15,12 @@ struct RootTabView: View { Image(systemName: "house.fill") .font(.system(size: 21)) } - Image(systemName: "pencil.circle.fill") + RecordView() .tabItem { Image(systemName: "pencil.circle.fill") .font(.system(size: 21)) } - Image(systemName: "pencil.circle.fill") + SearchView() .tabItem { Image(systemName: "magnifyingglass.circle.fill") .font(.system(size: 21)) diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift new file mode 100644 index 00000000..f9e99cda --- /dev/null +++ b/Sources/Search/SearchView.swift @@ -0,0 +1,23 @@ +// +// SearchView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import SwiftUI + +struct SearchView: View { + var body: some View { + NavigationView { + Text("Hello, World!") + .navigationBarTitle("Search") + } + } +} + +struct SearchView_Previews: PreviewProvider { + static var previews: some View { + SearchView() + } +} From ca95dbbad0a81f02b1fd1ac95c3d135c3299c690 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 7 Jan 2021 18:58:12 +0900 Subject: [PATCH 029/101] Fix tab --- Sources/Home/QuoteWorkView.swift | 2 +- Sources/Profile/LibraryWorksView.swift | 2 +- Sources/RootTabView.swift | 43 ++++++++++++++++++++------ 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 49667218..33d74e31 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -35,7 +35,7 @@ struct QuoteWorkView: View { } Spacer(minLength: 0) } - .background(Color(UIColor.secondarySystemBackground)) + .background(Color(.quaternarySystemFill)) } } diff --git a/Sources/Profile/LibraryWorksView.swift b/Sources/Profile/LibraryWorksView.swift index b99e69ba..fa5a364f 100644 --- a/Sources/Profile/LibraryWorksView.swift +++ b/Sources/Profile/LibraryWorksView.swift @@ -79,7 +79,7 @@ struct LibraryWorkView: View { .padding(8) } .frame(width: maxWidth) - .background(Color(.secondarySystemBackground)) + .background(Color(.quaternarySystemFill)) .cornerRadius(4) }) .sheet(isPresented: $isPresent) { diff --git a/Sources/RootTabView.swift b/Sources/RootTabView.swift index feef31df..ae15ae0a 100644 --- a/Sources/RootTabView.swift +++ b/Sources/RootTabView.swift @@ -8,28 +8,47 @@ import SwiftUI struct RootTabView: View { + @State private var selection = 0 + var body: some View { - TabView { + TabView(selection: $selection) { HomeView(viewModel: HomeViewModel()) .tabItem { - Image(systemName: "house.fill") - .font(.system(size: 21)) + RootTabItem(normalIcon: "house", selectedIcon: "house.fill", selection: selection == 0) } + .tag(0) RecordView() .tabItem { - Image(systemName: "pencil.circle.fill") - .font(.system(size: 21)) + RootTabItem(normalIcon: "pencil.circle", selectedIcon: "pencil.circle.fill", selection: selection == 1) } + .tag(1) SearchView() .tabItem { - Image(systemName: "magnifyingglass.circle.fill") - .font(.system(size: 21)) + RootTabItem(normalIcon: "magnifyingglass.circle", selectedIcon: "magnifyingglass.circle.fill", selection: selection == 2) } + .tag(2) ProfileView() .tabItem { - Image(systemName: "person.fill") - .font(.system(size: 21)) + RootTabItem(normalIcon: "person", selectedIcon: "person.fill", selection: selection == 3) } + .tag(3) + } + .accentColor(.annictPink) + } +} + +struct RootTabItem: View { + let normalIcon: String + let selectedIcon: String + let selection: Bool + + var body: some View { + if selection { + Image(systemName: selectedIcon) + .font(.system(size: 21)) + } else { + Image(systemName: normalIcon) + .font(.system(size: 21)) } } } @@ -41,3 +60,9 @@ struct RootTabView_Previews: PreviewProvider { } } + +extension Color { + static var annictPink: Color { + return Color(hex: 0xF85B73) + } +} From f7fc5610fc277887a25b4884db8b740358b70a53 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 7 Jan 2021 20:59:42 +0900 Subject: [PATCH 030/101] Impl --- Portannict.xcodeproj/project.pbxproj | 4 ++ Sources/Common/SearchBar.swift | 57 ++++++++++++++++++++++++++++ Sources/Home/HomeView.swift | 1 + Sources/Search/SearchView.swift | 27 ++++++++++++- 4 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 Sources/Common/SearchBar.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index db7bb193..93f7d74a 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -48,6 +48,7 @@ CFE7E5D425A700E8009EB3DC /* GetViewerWorks.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */; }; CFE7E5D725A7077D009EB3DC /* RecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5D625A7077D009EB3DC /* RecordView.swift */; }; CFE7E5DA25A70826009EB3DC /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5D925A70826009EB3DC /* SearchView.swift */; }; + CFE7E5DC25A71324009EB3DC /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5DB25A71324009EB3DC /* SearchBar.swift */; }; CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */; }; CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */; }; CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */; }; @@ -108,6 +109,7 @@ CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewerWorks.graphql; sourceTree = ""; }; CFE7E5D625A7077D009EB3DC /* RecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordView.swift; sourceTree = ""; }; CFE7E5D925A70826009EB3DC /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; }; + CFE7E5DB25A71324009EB3DC /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = ""; }; CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkView.swift; sourceTree = ""; }; CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderView.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; @@ -234,6 +236,7 @@ CFE3831D258E628C00CEE318 /* Constants.swift */, CFE3831F258E64F600CEE318 /* Env.swift */, CFC03F0625959BDD001516D3 /* LoginSession.swift */, + CFE7E5DB25A71324009EB3DC /* SearchBar.swift */, ); path = Common; sourceTree = ""; @@ -448,6 +451,7 @@ CFADCD0525A5A35900939DA7 /* ActivityIndicator.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, + CFE7E5DC25A71324009EB3DC /* SearchBar.swift in Sources */, CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */, CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */, diff --git a/Sources/Common/SearchBar.swift b/Sources/Common/SearchBar.swift new file mode 100644 index 00000000..42bc068e --- /dev/null +++ b/Sources/Common/SearchBar.swift @@ -0,0 +1,57 @@ +// +// SearchBar.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import SwiftUI + +struct SearchBar: UIViewRepresentable { + let searchBarStyle: UISearchBar.Style + @Binding var text: String + + var onCommit: ((String) -> Void)? + + class Coordinator: NSObject, UISearchBarDelegate { + + @Binding var text: String + + var onCommit: ((String) -> Void)? + + init(text: Binding, onCommit: ((String) -> Void)?) { + _text = text + self.onCommit = onCommit + } + + func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { + text = searchText + } + + func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { + searchBar.resignFirstResponder() + onCommit?(text) + } + } + + func makeCoordinator() -> SearchBar.Coordinator { + return Coordinator(text: $text, onCommit: onCommit) + } + + func makeUIView(context: UIViewRepresentableContext) -> UISearchBar { + let searchBar = UISearchBar(frame: .zero) + searchBar.delegate = context.coordinator + searchBar.searchBarStyle = searchBarStyle + return searchBar + } + + func updateUIView(_ uiView: UISearchBar, context: UIViewRepresentableContext) { + uiView.text = text + } +} + +struct SearchBar_Previews: PreviewProvider { + static var previews: some View { + SearchBar(searchBarStyle: .minimal, text: .constant(""), onCommit: nil) + } +} diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index b737bbf8..a1f672d1 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -42,6 +42,7 @@ struct HomeView: View { .navigationBarTitle("Home") .onAppear { viewModel.action.send(.fetch) + UIScrollView.appearance().keyboardDismissMode = .interactive } } } diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index f9e99cda..394ca140 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -6,12 +6,35 @@ // import SwiftUI +import KingfisherSwiftUI struct SearchView: View { + @State private var searchText : String = "" + + private var works: [WorkFragment] = [.dummy, .dummy, .dummy, .dummy, .dummy] + var body: some View { NavigationView { - Text("Hello, World!") - .navigationBarTitle("Search") + ScrollView(.vertical) { + VStack(alignment: .leading) { + SearchBar(searchBarStyle: .minimal, text: $searchText) { text in + print(text) + } + ForEach(works.indices, id: \.self) { index in + let work = works[index] + HStack { + KFImage(work.annictId) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 60) + .cornerRadius(8) + Text(work.title) + } + } + } + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + } + .navigationBarTitle("Search") } } } From 9578450d1f64d221711e7e371777f9e929d76693 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 7 Jan 2021 21:16:00 +0900 Subject: [PATCH 031/101] Add SwiftUIX --- Portannict.xcodeproj/project.pbxproj | 21 +++++-- .../xcshareddata/swiftpm/Package.resolved | 9 +++ Sources/Common/SearchBar.swift | 57 ------------------- Sources/Home/HomeView.swift | 1 - Sources/Search/SearchView.swift | 30 +++++----- 5 files changed, 43 insertions(+), 75 deletions(-) delete mode 100644 Sources/Common/SearchBar.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 93f7d74a..b887caae 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -48,7 +48,7 @@ CFE7E5D425A700E8009EB3DC /* GetViewerWorks.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */; }; CFE7E5D725A7077D009EB3DC /* RecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5D625A7077D009EB3DC /* RecordView.swift */; }; CFE7E5DA25A70826009EB3DC /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5D925A70826009EB3DC /* SearchView.swift */; }; - CFE7E5DC25A71324009EB3DC /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5DB25A71324009EB3DC /* SearchBar.swift */; }; + CFE7E5DF25A72F63009EB3DC /* SwiftUIX in Frameworks */ = {isa = PBXBuildFile; productRef = CFE7E5DE25A72F63009EB3DC /* SwiftUIX */; }; CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */; }; CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */; }; CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */; }; @@ -109,7 +109,6 @@ CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewerWorks.graphql; sourceTree = ""; }; CFE7E5D625A7077D009EB3DC /* RecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordView.swift; sourceTree = ""; }; CFE7E5D925A70826009EB3DC /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; }; - CFE7E5DB25A71324009EB3DC /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = ""; }; CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkView.swift; sourceTree = ""; }; CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderView.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; @@ -124,6 +123,7 @@ CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */, CFADCD0825A5A78000939DA7 /* SkeletonUI in Frameworks */, CFD82D3A25A63F8E005401AF /* SwiftDate in Frameworks */, + CFE7E5DF25A72F63009EB3DC /* SwiftUIX in Frameworks */, CF1E5E60259CEA5300035D50 /* Apollo in Frameworks */, CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */, ); @@ -236,7 +236,6 @@ CFE3831D258E628C00CEE318 /* Constants.swift */, CFE3831F258E64F600CEE318 /* Env.swift */, CFC03F0625959BDD001516D3 /* LoginSession.swift */, - CFE7E5DB25A71324009EB3DC /* SearchBar.swift */, ); path = Common; sourceTree = ""; @@ -342,6 +341,7 @@ CF1E5E5F259CEA5300035D50 /* Apollo */, CFADCD0725A5A78000939DA7 /* SkeletonUI */, CFD82D3925A63F8E005401AF /* SwiftDate */, + CFE7E5DE25A72F63009EB3DC /* SwiftUIX */, ); productName = Portannict; productReference = CF08FC0324B9AD1A00CD29DD /* Portannict.app */; @@ -376,6 +376,7 @@ CF1E5E5E259CEA5300035D50 /* XCRemoteSwiftPackageReference "apollo-ios" */, CFADCD0625A5A78000939DA7 /* XCRemoteSwiftPackageReference "SkeletonUI" */, CFD82D3825A63F8E005401AF /* XCRemoteSwiftPackageReference "SwiftDate" */, + CFE7E5DD25A72F63009EB3DC /* XCRemoteSwiftPackageReference "SwiftUIX" */, ); productRefGroup = CF08FC0424B9AD1A00CD29DD /* Products */; projectDirPath = ""; @@ -451,7 +452,6 @@ CFADCD0525A5A35900939DA7 /* ActivityIndicator.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, - CFE7E5DC25A71324009EB3DC /* SearchBar.swift in Sources */, CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */, CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */, @@ -686,6 +686,14 @@ minimumVersion = 6.3.1; }; }; + CFE7E5DD25A72F63009EB3DC /* XCRemoteSwiftPackageReference "SwiftUIX" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SwiftUIX/SwiftUIX"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.0.5; + }; + }; CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/onevcat/Kingfisher"; @@ -717,6 +725,11 @@ package = CFD82D3825A63F8E005401AF /* XCRemoteSwiftPackageReference "SwiftDate" */; productName = SwiftDate; }; + CFE7E5DE25A72F63009EB3DC /* SwiftUIX */ = { + isa = XCSwiftPackageProductDependency; + package = CFE7E5DD25A72F63009EB3DC /* XCRemoteSwiftPackageReference "SwiftUIX" */; + productName = SwiftUIX; + }; CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */ = { isa = XCSwiftPackageProductDependency; package = CFFDC8B1259C7E63001C8E29 /* XCRemoteSwiftPackageReference "Kingfisher" */; diff --git a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 610abbdd..b0070498 100644 --- a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -117,6 +117,15 @@ "revision": "6190d0cefff3013e77ed567e6b074f324e5c5bf5", "version": "6.3.1" } + }, + { + "package": "SwiftUIX", + "repositoryURL": "https://github.com/SwiftUIX/SwiftUIX", + "state": { + "branch": null, + "revision": "c2890b24e56e540b2c2fe00394b3826e4659c97b", + "version": "0.0.5" + } } ] }, diff --git a/Sources/Common/SearchBar.swift b/Sources/Common/SearchBar.swift deleted file mode 100644 index 42bc068e..00000000 --- a/Sources/Common/SearchBar.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// SearchBar.swift -// Portannict -// -// Created by Yuto Akiba on 2021/01/07. -// - -import SwiftUI - -struct SearchBar: UIViewRepresentable { - let searchBarStyle: UISearchBar.Style - @Binding var text: String - - var onCommit: ((String) -> Void)? - - class Coordinator: NSObject, UISearchBarDelegate { - - @Binding var text: String - - var onCommit: ((String) -> Void)? - - init(text: Binding, onCommit: ((String) -> Void)?) { - _text = text - self.onCommit = onCommit - } - - func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { - text = searchText - } - - func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { - searchBar.resignFirstResponder() - onCommit?(text) - } - } - - func makeCoordinator() -> SearchBar.Coordinator { - return Coordinator(text: $text, onCommit: onCommit) - } - - func makeUIView(context: UIViewRepresentableContext) -> UISearchBar { - let searchBar = UISearchBar(frame: .zero) - searchBar.delegate = context.coordinator - searchBar.searchBarStyle = searchBarStyle - return searchBar - } - - func updateUIView(_ uiView: UISearchBar, context: UIViewRepresentableContext) { - uiView.text = text - } -} - -struct SearchBar_Previews: PreviewProvider { - static var previews: some View { - SearchBar(searchBarStyle: .minimal, text: .constant(""), onCommit: nil) - } -} diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index a1f672d1..b737bbf8 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -42,7 +42,6 @@ struct HomeView: View { .navigationBarTitle("Home") .onAppear { viewModel.action.send(.fetch) - UIScrollView.appearance().keyboardDismissMode = .interactive } } } diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index 394ca140..6dc4e111 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import SwiftUIX import KingfisherSwiftUI struct SearchView: View { @@ -17,22 +18,25 @@ struct SearchView: View { NavigationView { ScrollView(.vertical) { VStack(alignment: .leading) { - SearchBar(searchBarStyle: .minimal, text: $searchText) { text in - print(text) - } - ForEach(works.indices, id: \.self) { index in - let work = works[index] - HStack { - KFImage(work.annictId) - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 60) - .cornerRadius(8) - Text(work.title) + SearchBar("タイトルを入力", text: $searchText) + if searchText.isEmpty { + + } else { + Text("検索結果") + ForEach(works.indices, id: \.self) { index in + let work = works[index] + HStack(spacing: 8) { + KFImage(work.annictId) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 60) + .cornerRadius(8) + Text(work.title) + } } + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) } } - .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) } .navigationBarTitle("Search") } From f21f1ecb1beda3199280d01c9008d91a681fc153 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Fri, 8 Jan 2021 01:16:42 +0900 Subject: [PATCH 032/101] Impl Search --- Portannict.xcodeproj/project.pbxproj | 8 +-- Sources/Common/Views/ActivityIndicator.swift | 24 ------- Sources/Home/HomeView.swift | 7 +- Sources/Profile/LibraryWorkView.swift | 65 ++++++++++++++++++ Sources/Profile/LibraryWorksView.swift | 36 ++-------- Sources/Search/SearchView.swift | 71 +++++++++++++++----- Sources/Work/WorkHeaderView.swift | 10 ++- 7 files changed, 144 insertions(+), 77 deletions(-) delete mode 100644 Sources/Common/Views/ActivityIndicator.swift create mode 100644 Sources/Profile/LibraryWorkView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index b887caae..1b3752ca 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -20,7 +20,6 @@ CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; - CFADCD0525A5A35900939DA7 /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFADCD0425A5A35900939DA7 /* ActivityIndicator.swift */; }; CFADCD0825A5A78000939DA7 /* SkeletonUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFADCD0725A5A78000939DA7 /* SkeletonUI */; }; CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */; }; CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFB9BA77259DCD0D00C51708 /* Fragments.graphql */; }; @@ -49,6 +48,7 @@ CFE7E5D725A7077D009EB3DC /* RecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5D625A7077D009EB3DC /* RecordView.swift */; }; CFE7E5DA25A70826009EB3DC /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5D925A70826009EB3DC /* SearchView.swift */; }; CFE7E5DF25A72F63009EB3DC /* SwiftUIX in Frameworks */ = {isa = PBXBuildFile; productRef = CFE7E5DE25A72F63009EB3DC /* SwiftUIX */; }; + CFE7E5E125A737A5009EB3DC /* LibraryWorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7E5E025A737A5009EB3DC /* LibraryWorkView.swift */; }; CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */; }; CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFFDC8B2259C7E63001C8E29 /* KingfisherSwiftUI */; }; CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */; }; @@ -84,7 +84,6 @@ CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; - CFADCD0425A5A35900939DA7 /* ActivityIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityIndicator.swift; sourceTree = ""; }; CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityRecordView.swift; sourceTree = ""; }; CFB9BA77259DCD0D00C51708 /* Fragments.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fragments.graphql; sourceTree = ""; }; CFBB73B325A5718900601DCB /* Network.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = ""; }; @@ -109,6 +108,7 @@ CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewerWorks.graphql; sourceTree = ""; }; CFE7E5D625A7077D009EB3DC /* RecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordView.swift; sourceTree = ""; }; CFE7E5D925A70826009EB3DC /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; }; + CFE7E5E025A737A5009EB3DC /* LibraryWorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryWorkView.swift; sourceTree = ""; }; CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkView.swift; sourceTree = ""; }; CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkHeaderView.swift; sourceTree = ""; }; CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityStatusView.swift; sourceTree = ""; }; @@ -204,7 +204,6 @@ CFADCD0325A5A34F00939DA7 /* Views */ = { isa = PBXGroup; children = ( - CFADCD0425A5A35900939DA7 /* ActivityIndicator.swift */, ); path = Views; sourceTree = ""; @@ -264,6 +263,7 @@ children = ( CF08FC1524B9AFC500CD29DD /* ProfileView.swift */, CFE7E5C425A6D65A009EB3DC /* LibraryWorksView.swift */, + CFE7E5E025A737A5009EB3DC /* LibraryWorkView.swift */, ); path = Profile; sourceTree = ""; @@ -435,6 +435,7 @@ CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */, CFE38320258E64F600CEE318 /* Env.swift in Sources */, + CFE7E5E125A737A5009EB3DC /* LibraryWorkView.swift in Sources */, CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, CFE38313258E603300CEE318 /* RootView.swift in Sources */, CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, @@ -449,7 +450,6 @@ CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */, CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */, CFE7E5CA25A6E71C009EB3DC /* UserHeaderView.swift in Sources */, - CFADCD0525A5A35900939DA7 /* ActivityIndicator.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, diff --git a/Sources/Common/Views/ActivityIndicator.swift b/Sources/Common/Views/ActivityIndicator.swift deleted file mode 100644 index 81d09ae3..00000000 --- a/Sources/Common/Views/ActivityIndicator.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// ActivityIndicator.swift -// Portannict -// -// Created by Yuto Akiba on 2021/01/06. -// - -import UIKit -import SwiftUI - -struct ActivityIndicator: UIViewRepresentable { - typealias UIViewType = UIActivityIndicatorView - - @Binding var isAnimating: Bool - let style: UIActivityIndicatorView.Style - - func makeUIView(context: UIViewRepresentableContext) -> ActivityIndicator.UIViewType { - UIActivityIndicatorView(style: style) - } - - func updateUIView(_ uiView: UIActivityIndicatorView, context: UIViewRepresentableContext) { - isAnimating ? uiView.startAnimating() : uiView.stopAnimating() - } -} diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index b737bbf8..2c7c7087 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import SwiftUIX import SkeletonUI struct HomeView: View { @@ -31,8 +32,10 @@ struct HomeView: View { let activity = viewModel.state.activities[index] activityItemView(activity: activity) } - ActivityIndicator(isAnimating: .constant(true), style: .medium) - .frame(height: 40) + ActivityIndicator() + .animated(true) + .style(.medium) + .frame(height: 80) .onAppear { viewModel.action.send(.fetchMore) } diff --git a/Sources/Profile/LibraryWorkView.swift b/Sources/Profile/LibraryWorkView.swift new file mode 100644 index 00000000..50965df1 --- /dev/null +++ b/Sources/Profile/LibraryWorkView.swift @@ -0,0 +1,65 @@ +// +// LibraryWorkView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/07. +// + +import SwiftUI +import KingfisherSwiftUI + +struct LibraryWorkView: View { + let work: WorkFragment + + @State private var isPresent: Bool = false + private let maxWidth: CGFloat = 140 + + var body: some View { + Button(action: { + isPresent = true + }, label: { + GeometryReader { geometry in + VStack(alignment: .leading, spacing: 0) { + KFImage(work.annictId) + .resizable() + .placeholder { + Text("No Image") + .foregroundColor(.systemGray) + .font(.system(size: 16)) + .fontWeight(.bold) + } + .frame(width: geometry.size.width) + .background(Color(.systemGray6)) + + Text(work.title) + .lineLimit(2) + .font(.system(size: 12)) + .foregroundColor(.primary) + .padding(8) + } + } + }) + .background(Color(.quaternarySystemFill)) + .cornerRadius(4) + .sheet(isPresented: $isPresent) { + WorkView(workID: work.annictId) + } + } +} + +struct LibraryWorkView_Previews: PreviewProvider { + static var previews: some View { + LibraryWorkView(work: .dummy) + .preferredColorScheme(.dark) + .frame(width: 140, height: 140 * 1.7) + .previewLayout(.fixed(width: 200, height: 300)) + LibraryWorkView(work: .dummy3) + .preferredColorScheme(.dark) + .frame(width: 140, height: 140 * 1.7) + .previewLayout(.fixed(width: 200, height: 300)) + LibraryWorkView(work: .dummy2) + .preferredColorScheme(.dark) + .frame(width: 140, height: 140 * 1.7) + .previewLayout(.fixed(width: 200, height: 300)) + } +} diff --git a/Sources/Profile/LibraryWorksView.swift b/Sources/Profile/LibraryWorksView.swift index fa5a364f..6936c849 100644 --- a/Sources/Profile/LibraryWorksView.swift +++ b/Sources/Profile/LibraryWorksView.swift @@ -32,9 +32,10 @@ struct LibraryWorksView: View { .padding(.trailing, 16) } ScrollView(.horizontal, showsIndicators: false) { - HStack(spacing: 12) { + HStack(alignment: .top, spacing: 12) { ForEach(works.indices, id: \.self) { index in LibraryWorkView(work: works[index]) + .frame(width: 140, height: 140 * 1.7) } } .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) @@ -57,33 +58,10 @@ struct LibraryWorksView: View { } } -struct LibraryWorkView: View { - let work: WorkFragment - - @State private var isPresent: Bool = false - private let maxWidth: CGFloat = 140 - - var body: some View { - Button(action: { - isPresent = true - }, label: { - VStack(alignment: .leading, spacing: 0) { - KFImage(work.annictId) - .resizable() - .background(Color(.lightGray)) - .aspectRatio(3/4, contentMode: .fill) - .frame(width: maxWidth) - Text(work.title) - .font(.system(size: 12)) - .foregroundColor(.primary) - .padding(8) - } - .frame(width: maxWidth) - .background(Color(.quaternarySystemFill)) - .cornerRadius(4) - }) - .sheet(isPresented: $isPresent) { - WorkView(workID: work.annictId) - } +struct LibraryWorksView_Previews: PreviewProvider { + static var previews: some View { + LibraryWorksView(status: .watching, count: 100) + .previewLayout(.fixed(width: 375, height: 400)) } } + diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index 6dc4e111..e9bb1018 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -12,37 +12,74 @@ import KingfisherSwiftUI struct SearchView: View { @State private var searchText : String = "" - private var works: [WorkFragment] = [.dummy, .dummy, .dummy, .dummy, .dummy] + private var works: [WorkFragment] = Array(repeating: .dummy, count: 5) + Array(repeating: .dummy2, count: 5) + Array(repeating: .dummy, count: 5) + Array(repeating: .dummy2, count: 5) + private var results: [WorkFragment] = [.dummy, .dummy, .dummy, .dummy, .dummy] var body: some View { NavigationView { - ScrollView(.vertical) { - VStack(alignment: .leading) { + ScrollView(.vertical, showsIndicators: false) { + VStack(alignment: .leading, spacing: 16) { SearchBar("タイトルを入力", text: $searchText) if searchText.isEmpty { - + SearchRecomendedWorksView(title: "今期", works: works) } else { - Text("検索結果") - ForEach(works.indices, id: \.self) { index in - let work = works[index] - HStack(spacing: 8) { - KFImage(work.annictId) - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 60) - .cornerRadius(8) - Text(work.title) - } - } - .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + SearchResultView(works: results) + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) } } + .padding(.bottom, 40) } .navigationBarTitle("Search") } } } +struct SearchRecomendedWorksView: View { + let title: String + let works: [WorkFragment] + + var body: some View { + VStack(alignment: .leading) { + HStack(alignment: .bottom) { + Text(title) + .font(.system(size: 18)) + .fontWeight(.bold) + Spacer() + Text("期間を変更する") + } + LazyVGrid(columns: Array(repeating: GridItem(spacing: 10), count: 3), spacing: 10) { + ForEach(works.indices, id: \.self) { index in + let work = works[index] + LibraryWorkView(work: work) + .aspectRatio(3/5, contentMode: .fit) + } + } + } + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + } +} + +struct SearchResultView: View { + let works: [WorkFragment] + + var body: some View { + VStack(alignment: .leading) { + Text("検索結果") + ForEach(works.indices, id: \.self) { index in + let work = works[index] + HStack(spacing: 8) { + KFImage(work.annictId) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 60) + .cornerRadius(8) + Text(work.title) + } + } + } + } +} + struct SearchView_Previews: PreviewProvider { static var previews: some View { SearchView() diff --git a/Sources/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift index 80ea9392..836ce86a 100644 --- a/Sources/Work/WorkHeaderView.swift +++ b/Sources/Work/WorkHeaderView.swift @@ -57,6 +57,14 @@ struct WorkHeaderView_Previews: PreviewProvider { extension WorkFragment { static var dummy: WorkFragment { - WorkFragment(id: "", annictId: 7193, title: "PSYCHO-PASS", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + WorkFragment(id: "", annictId: 6524, title: "PSYCHO-PASS", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + } + + static var dummy2: WorkFragment { + WorkFragment(id: "", annictId: 0, title: "No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + } + + static var dummy3: WorkFragment { + WorkFragment(id: "", annictId: 6524, title: "No Title No Title No Title No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0) } } From 173a366c4f1e1e52bbfeabd5cb9e3a78683e44e0 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Fri, 8 Jan 2021 13:03:50 +0900 Subject: [PATCH 033/101] Fix --- Sources/Profile/LibraryWorkView.swift | 9 +++++---- Sources/Profile/LibraryWorksView.swift | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Sources/Profile/LibraryWorkView.swift b/Sources/Profile/LibraryWorkView.swift index 50965df1..d38786ef 100644 --- a/Sources/Profile/LibraryWorkView.swift +++ b/Sources/Profile/LibraryWorkView.swift @@ -14,6 +14,7 @@ struct LibraryWorkView: View { @State private var isPresent: Bool = false private let maxWidth: CGFloat = 140 + var body: some View { Button(action: { isPresent = true @@ -30,13 +31,13 @@ struct LibraryWorkView: View { } .frame(width: geometry.size.width) .background(Color(.systemGray6)) - Text(work.title) .lineLimit(2) .font(.system(size: 12)) .foregroundColor(.primary) .padding(8) } + .frame(width: geometry.size.width, height: geometry.size.height) } }) .background(Color(.quaternarySystemFill)) @@ -51,15 +52,15 @@ struct LibraryWorkView_Previews: PreviewProvider { static var previews: some View { LibraryWorkView(work: .dummy) .preferredColorScheme(.dark) - .frame(width: 140, height: 140 * 1.7) + .frame(width: 140, height: 140 * 5/3) .previewLayout(.fixed(width: 200, height: 300)) LibraryWorkView(work: .dummy3) .preferredColorScheme(.dark) - .frame(width: 140, height: 140 * 1.7) + .frame(width: 140, height: 140 * 5/3) .previewLayout(.fixed(width: 200, height: 300)) LibraryWorkView(work: .dummy2) .preferredColorScheme(.dark) - .frame(width: 140, height: 140 * 1.7) + .frame(width: 140, height: 140 * 5/3) .previewLayout(.fixed(width: 200, height: 300)) } } diff --git a/Sources/Profile/LibraryWorksView.swift b/Sources/Profile/LibraryWorksView.swift index 6936c849..16ac2dd5 100644 --- a/Sources/Profile/LibraryWorksView.swift +++ b/Sources/Profile/LibraryWorksView.swift @@ -35,7 +35,7 @@ struct LibraryWorksView: View { HStack(alignment: .top, spacing: 12) { ForEach(works.indices, id: \.self) { index in LibraryWorkView(work: works[index]) - .frame(width: 140, height: 140 * 1.7) + .frame(width: 140, height: 140 * 5/3) } } .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) From c4fc29ce7c79cee9879cc68bdd7c020301b97034 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sat, 9 Jan 2021 22:59:49 +0900 Subject: [PATCH 034/101] Update LibraryWorkView.swift --- Sources/Profile/LibraryWorkView.swift | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/Sources/Profile/LibraryWorkView.swift b/Sources/Profile/LibraryWorkView.swift index d38786ef..46ab0913 100644 --- a/Sources/Profile/LibraryWorkView.swift +++ b/Sources/Profile/LibraryWorkView.swift @@ -16,10 +16,10 @@ struct LibraryWorkView: View { var body: some View { - Button(action: { - isPresent = true - }, label: { - GeometryReader { geometry in + GeometryReader { geometry in + Button(action: { + isPresent = true + }, label: { VStack(alignment: .leading, spacing: 0) { KFImage(work.annictId) .resizable() @@ -29,6 +29,7 @@ struct LibraryWorkView: View { .font(.system(size: 16)) .fontWeight(.bold) } + .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width) .background(Color(.systemGray6)) Text(work.title) @@ -37,13 +38,13 @@ struct LibraryWorkView: View { .foregroundColor(.primary) .padding(8) } - .frame(width: geometry.size.width, height: geometry.size.height) + }) + .background(Color(.quaternarySystemFill)) + .frame(height: geometry.size.width * 5/3) + .cornerRadius(4) + .sheet(isPresented: $isPresent) { + WorkView(workID: work.annictId) } - }) - .background(Color(.quaternarySystemFill)) - .cornerRadius(4) - .sheet(isPresented: $isPresent) { - WorkView(workID: work.annictId) } } } @@ -52,15 +53,15 @@ struct LibraryWorkView_Previews: PreviewProvider { static var previews: some View { LibraryWorkView(work: .dummy) .preferredColorScheme(.dark) - .frame(width: 140, height: 140 * 5/3) + .frame(width: 140) .previewLayout(.fixed(width: 200, height: 300)) LibraryWorkView(work: .dummy3) .preferredColorScheme(.dark) - .frame(width: 140, height: 140 * 5/3) + .frame(width: 140) .previewLayout(.fixed(width: 200, height: 300)) LibraryWorkView(work: .dummy2) .preferredColorScheme(.dark) - .frame(width: 140, height: 140 * 5/3) + .frame(width: 140) .previewLayout(.fixed(width: 200, height: 300)) } } From 7661e1570e57cc0bcaa3d239286e2c9cf83be73b Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 10 Jan 2021 01:13:58 +0900 Subject: [PATCH 035/101] Impl --- Sources/Home/ActivityRecordView.swift | 11 +-- Sources/Home/ActivityReviewView.swift | 13 +-- Sources/Home/ActivityStatusView.swift | 13 +-- Sources/Home/QuoteWorkView.swift | 132 +++++++++++++++++++++++--- 4 files changed, 120 insertions(+), 49 deletions(-) diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index dff418e2..3adbf04f 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -48,16 +48,7 @@ struct ActivityRecordView: View { Text(comemnt) .font(.body) } - Button(action: { - isPresentedWorkView = true - }) { - QuoteWorkView(work: record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) - .frame(height: 80) - .cornerRadius(8) - } - .sheet(isPresented: $isPresentedWorkView) { - WorkView(workID: record.work.fragments.workFragment.annictId) - } + QuoteWorkView(work: record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) } } } diff --git a/Sources/Home/ActivityReviewView.swift b/Sources/Home/ActivityReviewView.swift index c41e96b2..7c20df53 100644 --- a/Sources/Home/ActivityReviewView.swift +++ b/Sources/Home/ActivityReviewView.swift @@ -11,8 +11,6 @@ import KingfisherSwiftUI struct ActivityReviewView: View { let review: ReviewFragment - @State var isPresented: Bool = false - var body: some View { HStack(alignment: .top, spacing: 12) { KFImage(review.user.avatarUrl) @@ -37,16 +35,7 @@ struct ActivityReviewView: View { } Text(review.body) .font(.body) - Button(action: { - isPresented = true - }) { - QuoteWorkView(work: review.work.fragments.workFragment) - .frame(height: 80) - .cornerRadius(8) - } - .sheet(isPresented: $isPresented) { - WorkView(workID: review.work.fragments.workFragment.annictId) - } + QuoteWorkView(work: review.work.fragments.workFragment) } } } diff --git a/Sources/Home/ActivityStatusView.swift b/Sources/Home/ActivityStatusView.swift index 12568cd6..9d5fe15a 100644 --- a/Sources/Home/ActivityStatusView.swift +++ b/Sources/Home/ActivityStatusView.swift @@ -11,8 +11,6 @@ import KingfisherSwiftUI struct ActivityStatusView: View { let status: StatusFragment - @State var isPresented: Bool = false - var body: some View { HStack(alignment: .top, spacing: 12) { KFImage(status.user.avatarUrl) @@ -34,16 +32,7 @@ struct ActivityStatusView: View { } Text("ステータスを「\(status.state.title)」に変更しました") .font(.body) - Button(action: { - isPresented = true - }) { - QuoteWorkView(work: status.work.fragments.workFragment) - .frame(height: 80) - .cornerRadius(8) - } - .sheet(isPresented: $isPresented) { - WorkView(workID: status.work.fragments.workFragment.annictId) - } + QuoteWorkView(work: status.work.fragments.workFragment) } } } diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 33d74e31..bc161bbb 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -12,34 +12,110 @@ struct QuoteWorkView: View { let work: WorkFragment let episode: EpisodeFragment? + @State private var isExpanded: Bool = false + @Namespace private var namespace + init(work: WorkFragment, episode: EpisodeFragment? = nil) { self.work = work self.episode = episode } var body: some View { - HStack(alignment: .center, spacing: 8) { - KFImage(work.annictId) - .resizable() - .aspectRatio(3/4, contentMode: .fit) - .background(Color.gray) - VStack(alignment: .leading, spacing: 4) { - Text(work.title) - .font(.system(size: 14)) - .foregroundColor(Color.primary) - if let epi = episode { - Text("\(epi.numberText ?? "") \(epi.title ?? "")") - .font(.system(size: 11)) - .foregroundColor(Color.primary) + Group { + if isExpanded { + VStack(alignment: .leading) { + HStack(alignment: .top, spacing: 8) { + WorkImage(workID: work.annictId) + .matchedGeometryEffect(id: "WorkImage", in: namespace) + .aspectRatio(3/4, contentMode: .fit) + .cornerRadius(8) + .frame(height: 80) + VStack(alignment: .leading, spacing: 8) { + Text(work.title) + .matchedGeometryEffect(id: "Title", in: namespace) + .font(.system(size: 14)) + .foregroundColor(Color.primary) + + if let epi = episode { + Text("\(epi.numberText ?? "") \(epi.title ?? "")") + .matchedGeometryEffect(id: "Episode", in: namespace) + .font(.system(size: 11)) + .foregroundColor(Color.primary) + } + Spacer() + } + Spacer() + } + .padding(8) + + HStack(spacing: 8) { + Button(action: { + + }, label: { + Text("ステータスを変更") + .font(.system(size: 14)) + .foregroundColor(.primary) + .frame(height: 40) + .frame(maxWidth: .infinity) + .background(Color(.tertiarySystemBackground)) + .cornerRadius(20) + }) + + Button(action: { + + }, label: { + Text("詳細を見る") + .font(.system(size: 14)) + .foregroundColor(.primary) + .frame(height: 40) + .frame(maxWidth: .infinity) + .background(Color(.tertiarySystemBackground)) + .cornerRadius(20) + }) + } + .padding(EdgeInsets(top: 0, leading: 8, bottom: 0, trailing: 8)) + + Spacer() + .layoutPriority(1) } + .background(Color(.quaternarySystemFill)) + .cornerRadius(8) + } else { + HStack(alignment: .center, spacing: 8) { + WorkImage(workID: work.annictId) + .matchedGeometryEffect(id: "WorkImage", in: namespace) + .aspectRatio(3/4, contentMode: .fit) + .frame(height: 80) + VStack(alignment: .leading, spacing: 4) { + Text(work.title) + .matchedGeometryEffect(id: "Title", in: namespace) + .font(.system(size: 14)) + .foregroundColor(Color.primary) + if let epi = episode { + Text("\(epi.numberText ?? "") \(epi.title ?? "")") + .matchedGeometryEffect(id: "Episode", in: namespace) + .font(.system(size: 11)) + .foregroundColor(Color.primary) + } + } + Spacer() + } + .background(Color(.quaternarySystemFill)) + .cornerRadius(8) + } + + } + .onTapGesture { + withAnimation(.easeOut(duration: 0.25)) { + isExpanded.toggle() } - Spacer(minLength: 0) } - .background(Color(.quaternarySystemFill)) } } struct QuoteWorkView_Previews: PreviewProvider { + @Namespace private static var namespace + static var previews: some View { QuoteWorkView(work: WorkFragment.dummy) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) @@ -47,3 +123,29 @@ struct QuoteWorkView_Previews: PreviewProvider { .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) } } + +struct WorkImage: View { + let workID: Int + + var body: some View { + KFImage(workID) + .resizable() + .placeholder { + let placeholder = Text("No Image") + .foregroundColor(.systemGray) + .font(.system(size: 16)) + .fontWeight(.bold) + Color(.lightGray) + .overlay(placeholder) + } + } +} + +struct WorkImage_Previews: PreviewProvider { + static var previews: some View { + WorkImage(workID: WorkFragment.dummy.annictId) + .previewLayout(.fixed(width: 100, height: 100)) + WorkImage(workID: 0) + .previewLayout(.fixed(width: 100, height: 100)) + } +} From d44658aba900316d00ff5ba93034a7fb5527150c Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 10 Jan 2021 18:33:52 +0900 Subject: [PATCH 036/101] Impl current season works --- Portannict.xcodeproj/project.pbxproj | 8 + Sources/API.swift | 294 ++++++++++++++++++ .../API/Query/SearchWorksBySeason.graphql | 9 + Sources/Common/Constants.swift | 4 +- .../Common/Extension/Model+Extension.swift | 8 + Sources/Home/ActivityRecordView.swift | 3 + Sources/Home/HomeView.swift | 4 +- Sources/Home/QuoteWorkView.swift | 82 +++-- Sources/Info.plist | 2 +- Sources/Profile/ProfileView.swift | 1 + Sources/Search/SearchView.swift | 142 ++++++++- Sources/Search/SearchViewModel.swift | 68 ++++ Sources/Work/WorkView.swift | 98 ++++-- Sources/operationIDs.json | 4 + 14 files changed, 663 insertions(+), 64 deletions(-) create mode 100644 Sources/Common/API/Query/SearchWorksBySeason.graphql create mode 100644 Sources/Search/SearchViewModel.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 1b3752ca..8de8e2c2 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -13,6 +13,8 @@ CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CF08FC0D24B9AD1A00CD29DD /* Preview Assets.xcassets */; }; CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC1524B9AFC500CD29DD /* ProfileView.swift */; }; CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC1724B9B04900CD29DD /* HomeView.swift */; }; + CF13E35025AAF38D005D11F8 /* SearchWorksBySeason.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF13E34F25AAF38D005D11F8 /* SearchWorksBySeason.graphql */; }; + CF13E35225AAF78A005D11F8 /* SearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF13E35125AAF78A005D11F8 /* SearchViewModel.swift */; }; CF1E5E5D259CE88500035D50 /* Envfile in Resources */ = {isa = PBXBuildFile; fileRef = CF1E5E5C259CE88500035D50 /* Envfile */; }; CF1E5E60259CEA5300035D50 /* Apollo in Frameworks */ = {isa = PBXBuildFile; productRef = CF1E5E5F259CEA5300035D50 /* Apollo */; }; CF1E5E87259CF4CE00035D50 /* SearchWorksByID.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */; }; @@ -78,6 +80,8 @@ CF08FC0F24B9AD1A00CD29DD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; CF08FC1524B9AFC500CD29DD /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; CF08FC1724B9B04900CD29DD /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; + CF13E34F25AAF38D005D11F8 /* SearchWorksBySeason.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorksBySeason.graphql; sourceTree = ""; }; + CF13E35125AAF78A005D11F8 /* SearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewModel.swift; sourceTree = ""; }; CF1E5E5C259CE88500035D50 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = ""; }; CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorksByID.graphql; sourceTree = ""; }; CF1E5E88259CF69E00035D50 /* API.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; }; @@ -183,6 +187,7 @@ isa = PBXGroup; children = ( CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */, + CF13E34F25AAF38D005D11F8 /* SearchWorksBySeason.graphql */, CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */, CFD82D3B25A64157005401AF /* GetViewer.graphql */, CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */, @@ -290,6 +295,7 @@ isa = PBXGroup; children = ( CFE7E5D925A70826009EB3DC /* SearchView.swift */, + CF13E35125AAF78A005D11F8 /* SearchViewModel.swift */, ); path = Search; sourceTree = ""; @@ -399,6 +405,7 @@ CF1E5E5D259CE88500035D50 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, + CF13E35025AAF38D005D11F8 /* SearchWorksBySeason.graphql in Resources */, CFE7E5D425A700E8009EB3DC /* GetViewerWorks.graphql in Resources */, CF1E5E87259CF4CE00035D50 /* SearchWorksByID.graphql in Resources */, ); @@ -432,6 +439,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + CF13E35225AAF78A005D11F8 /* SearchViewModel.swift in Sources */, CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */, CFE38320258E64F600CEE318 /* Env.swift in Sources */, diff --git a/Sources/API.swift b/Sources/API.swift index c33fa3af..5b6ea3a7 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -2888,6 +2888,300 @@ public final class SearchWorksByIdQuery: GraphQLQuery { } } +public final class SearchWorksBySeasonQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query SearchWorksBySeason($first: Int, $after: String, $seasons: [String!]) { + searchWorks(first: $first, after: $after, seasons: $seasons, orderBy: {direction: DESC, field: WATCHERS_COUNT}) { + __typename + edges { + __typename + node { + __typename + ...WorkFragment + } + } + } + } + """ + + public let operationName: String = "SearchWorksBySeason" + + public let operationIdentifier: String? = "f93d24477dc8c443991f3f85b8f44aca4a67ef9ad9fe63d46385f2b4078352a9" + + public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } + + public var first: Int? + public var after: String? + public var seasons: [String]? + + public init(first: Int? = nil, after: String? = nil, seasons: [String]?) { + self.first = first + self.after = after + self.seasons = seasons + } + + public var variables: GraphQLMap? { + return ["first": first, "after": after, "seasons": seasons] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("searchWorks", arguments: ["first": GraphQLVariable("first"), "after": GraphQLVariable("after"), "seasons": GraphQLVariable("seasons"), "orderBy": ["direction": "DESC", "field": "WATCHERS_COUNT"]], type: .object(SearchWork.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(searchWorks: SearchWork? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) + } + + public var searchWorks: SearchWork? { + get { + return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") + } + } + + public struct SearchWork: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("edges", type: .list(.object(Edge.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(edges: [Edge?]? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of edges. + public var edges: [Edge?]? { + get { + return (resultMap["edges"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Edge?] in value.map { (value: ResultMap?) -> Edge? in value.flatMap { (value: ResultMap) -> Edge in Edge(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, forKey: "edges") + } + } + + public struct Edge: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkEdge"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("node", type: .object(Node.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(node: Node? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkEdge", "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// The item at the end of the edge. + public var node: Node? { + get { + return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "node") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + } + } +} + public struct WorkFragment: GraphQLFragment { /// The raw GraphQL definition of this fragment. public static let fragmentDefinition: String = diff --git a/Sources/Common/API/Query/SearchWorksBySeason.graphql b/Sources/Common/API/Query/SearchWorksBySeason.graphql new file mode 100644 index 00000000..c0dffb23 --- /dev/null +++ b/Sources/Common/API/Query/SearchWorksBySeason.graphql @@ -0,0 +1,9 @@ +query SearchWorksBySeason($first: Int, $after: String, $seasons: [String!]) { + searchWorks(first: $first, after: $after, seasons: $seasons, orderBy:{direction:DESC, field:WATCHERS_COUNT}) { + edges { + node{ + ...WorkFragment + } + } + } +} diff --git a/Sources/Common/Constants.swift b/Sources/Common/Constants.swift index 3c3ec716..520ab4fa 100644 --- a/Sources/Common/Constants.swift +++ b/Sources/Common/Constants.swift @@ -11,8 +11,8 @@ struct Constants { @Environment(\.envValues) static var envValues static let rootURI = "https://api.annict.com" - static let callbackURLScheme = "annict://" - static let redirectURI = "annict://oauth" + static let callbackURLScheme = "porannict://" + static let redirectURI = "porannict://oauth" static var clientID = envValues["AnnictClientID"] as! String static var clientSecret = envValues["AnnictClientSecret"] as! String static let baseImageURL = envValues["BaseImageURL"] as! String diff --git a/Sources/Common/Extension/Model+Extension.swift b/Sources/Common/Extension/Model+Extension.swift index 773319cc..360a9186 100644 --- a/Sources/Common/Extension/Model+Extension.swift +++ b/Sources/Common/Extension/Model+Extension.swift @@ -94,3 +94,11 @@ extension StatusState { extension UserFragment { static var dummy = UserFragment(id: "user", name: "touyu", username: "touyu", description: "") } + +// GraphQL + +extension SearchWorksBySeasonQuery.Data.SearchWork { + var edgesOrEmpty: [Edge?] { + return edges ?? [] + } +} diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index 3adbf04f..118b3d9f 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -49,6 +49,9 @@ struct ActivityRecordView: View { .font(.body) } QuoteWorkView(work: record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) + .onSelectState { state in + print(state.title) + } } } } diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index 2c7c7087..abcaacca 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -54,8 +54,8 @@ struct HomeView: View { switch activity.activityItem { case .record(let record): ActivityRecordView(record: record.fragments.recordFragment) - case .review: - Text("Review") + case .review(let review): + ActivityReviewView(review: review.fragments.reviewFragment) case .status(let status): ActivityStatusView(status: status.fragments.statusFragment) case .multipleRecord: diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index bc161bbb..3ba1a96e 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -13,8 +13,13 @@ struct QuoteWorkView: View { let episode: EpisodeFragment? @State private var isExpanded: Bool = false + @State private var isPresentedWorkView: Bool = false + @State private var showingActionSheet = false @Namespace private var namespace +// var onSelectState: ((StatusState) -> QuoteWorkView)? + var selectStateAction: ((StatusState) -> Void)? + init(work: WorkFragment, episode: EpisodeFragment? = nil) { self.work = work self.episode = episode @@ -26,13 +31,13 @@ struct QuoteWorkView: View { VStack(alignment: .leading) { HStack(alignment: .top, spacing: 8) { WorkImage(workID: work.annictId) - .matchedGeometryEffect(id: "WorkImage", in: namespace) + .matchedGeometryEffect(id: "WorkImage", in: namespace, anchor: .topLeading) .aspectRatio(3/4, contentMode: .fit) .cornerRadius(8) .frame(height: 80) VStack(alignment: .leading, spacing: 8) { Text(work.title) - .matchedGeometryEffect(id: "Title", in: namespace) + .matchedGeometryEffect(id: "Title", in: namespace, anchor: .leading) .font(.system(size: 14)) .foregroundColor(Color.primary) @@ -49,32 +54,42 @@ struct QuoteWorkView: View { .padding(8) HStack(spacing: 8) { - Button(action: { - - }, label: { - Text("ステータスを変更") - .font(.system(size: 14)) - .foregroundColor(.primary) - .frame(height: 40) - .frame(maxWidth: .infinity) - .background(Color(.tertiarySystemBackground)) - .cornerRadius(20) - }) - - Button(action: { + let title = viewerStatusStateTitle(state: work.viewerStatusState) + Button(title) { + showingActionSheet = true + } + .font(.system(size: 14)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + .frame(height: 40) + .frame(maxWidth: .infinity) + .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) + .cornerRadius(20) + .actionSheet(isPresented: $showingActionSheet) { + var buttons = StatusState.allCases[0...4] + .map { state in + return ActionSheet.Button.default(Text(state.title)) { + selectStateAction?(state) + } + } + buttons.append(.cancel()) + return ActionSheet(title: Text("ステータスを変更"), buttons: buttons) + } - }, label: { - Text("詳細を見る") - .font(.system(size: 14)) - .foregroundColor(.primary) - .frame(height: 40) - .frame(maxWidth: .infinity) - .background(Color(.tertiarySystemBackground)) - .cornerRadius(20) - }) + Button("詳細を見る") { + isPresentedWorkView = true + } + .font(.system(size: 14)) + .foregroundColor(.primary) + .frame(height: 40) + .frame(maxWidth: .infinity) + .background(Color(.tertiarySystemBackground)) + .cornerRadius(20) + .sheet(isPresented: $isPresentedWorkView) { + WorkView(workID: work.annictId) + } } .padding(EdgeInsets(top: 0, leading: 8, bottom: 0, trailing: 8)) - + Spacer() .layoutPriority(1) } @@ -83,12 +98,12 @@ struct QuoteWorkView: View { } else { HStack(alignment: .center, spacing: 8) { WorkImage(workID: work.annictId) - .matchedGeometryEffect(id: "WorkImage", in: namespace) + .matchedGeometryEffect(id: "WorkImage", in: namespace, anchor: .topLeading) .aspectRatio(3/4, contentMode: .fit) .frame(height: 80) VStack(alignment: .leading, spacing: 4) { Text(work.title) - .matchedGeometryEffect(id: "Title", in: namespace) + .matchedGeometryEffect(id: "Title", in: namespace, anchor: .leading) .font(.system(size: 14)) .foregroundColor(Color.primary) if let epi = episode { @@ -111,6 +126,19 @@ struct QuoteWorkView: View { } } } + + func onSelectState(_ action: @escaping (StatusState) -> Void) -> QuoteWorkView { + var result = self + result.selectStateAction = action + return result + } + + private func viewerStatusStateTitle(state: StatusState?) -> String { + if let title = state?.title, !title.isEmpty { + return title + } + return "ステータスを変更" + } } struct QuoteWorkView_Previews: PreviewProvider { diff --git a/Sources/Info.plist b/Sources/Info.plist index fefcd1f7..6a4e2416 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -23,7 +23,7 @@ Editor CFBundleURLSchemes - annict + porannict diff --git a/Sources/Profile/ProfileView.swift b/Sources/Profile/ProfileView.swift index 37782434..86599b52 100644 --- a/Sources/Profile/ProfileView.swift +++ b/Sources/Profile/ProfileView.swift @@ -13,6 +13,7 @@ struct ProfileView: View { @State var viewer: Viewer? @State private var selectorIndex = 0 + @EnvironmentObject var session: LoginSession var body: some View { ScrollView(.vertical, showsIndicators: false) { diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index e9bb1018..bfec7809 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -10,9 +10,10 @@ import SwiftUIX import KingfisherSwiftUI struct SearchView: View { - @State private var searchText : String = "" + @StateObject var viewModel: SearchViewModel = .init() - private var works: [WorkFragment] = Array(repeating: .dummy, count: 5) + Array(repeating: .dummy2, count: 5) + Array(repeating: .dummy, count: 5) + Array(repeating: .dummy2, count: 5) + @State private var searchText : String = "" + private var results: [WorkFragment] = [.dummy, .dummy, .dummy, .dummy, .dummy] var body: some View { @@ -21,7 +22,11 @@ struct SearchView: View { VStack(alignment: .leading, spacing: 16) { SearchBar("タイトルを入力", text: $searchText) if searchText.isEmpty { - SearchRecomendedWorksView(title: "今期", works: works) + SearchRecomendedWorksView(title: viewModel.state.annictSeason.title, + works: viewModel.state.recomendedWorks) + .onTapChangeSeasonButton { + viewModel.action.send(.fetch(viewModel.state.annictSeason.previous)) + } } else { SearchResultView(works: results) .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) @@ -30,14 +35,26 @@ struct SearchView: View { .padding(.bottom, 40) } .navigationBarTitle("Search") + .onAppear { + viewModel.action.send(.fetch(.current)) + } } } } +struct SearchView_Previews: PreviewProvider { + static var previews: some View { + SearchView() + } +} + + struct SearchRecomendedWorksView: View { let title: String let works: [WorkFragment] + var changeSeasonAction: (() -> Void)? + var body: some View { VStack(alignment: .leading) { HStack(alignment: .bottom) { @@ -45,9 +62,12 @@ struct SearchRecomendedWorksView: View { .font(.system(size: 18)) .fontWeight(.bold) Spacer() - Text("期間を変更する") + Button("期間を変更する") { + changeSeasonAction?() + } + .foregroundColor(.primary) } - LazyVGrid(columns: Array(repeating: GridItem(spacing: 10), count: 3), spacing: 10) { + LazyVGrid(columns: Array(repeating: GridItem(spacing: 10), count: 2), spacing: 10) { ForEach(works.indices, id: \.self) { index in let work = works[index] LibraryWorkView(work: work) @@ -57,6 +77,12 @@ struct SearchRecomendedWorksView: View { } .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) } + + func onTapChangeSeasonButton(_ action: @escaping (() -> Void)) -> SearchRecomendedWorksView { + var result = self + result.changeSeasonAction = action + return result + } } struct SearchResultView: View { @@ -80,8 +106,108 @@ struct SearchResultView: View { } } -struct SearchView_Previews: PreviewProvider { - static var previews: some View { - SearchView() +struct AnnictSeason: Equatable { + let year: Int + let season: Season + + static var current: AnnictSeason { + return .init(year: Date().year, season: .current) + } + + var next: AnnictSeason { + var newYear = self.year + if season == .autumn { + newYear += 1 + } + return .init(year: newYear, season: season.next) + } + + var previous: AnnictSeason { + var newYear = self.year + if season == .winter { + newYear -= 1 + } + return .init(year: newYear, season: season.previous) + } + + var id: String { + return "\(year)-\(season.rawValue)" + } + + var title: String { + if self == AnnictSeason.current { + return "今期" + } + switch self { + case .current: + return "今期" + case AnnictSeason.current.next: + return "来期" + case AnnictSeason.current.previous: + return "前期" + default: + return "\(year)年 \(season.localizedText)" + } + } + + enum Season: String, Equatable { + case winter + case spring + case summer + case autumn + + static var current: Season { + switch Date().month { + case 1...3: + return .winter + case 4...6: + return .spring + case 7...9: + return .summer + case 10...12: + return .autumn + default: + fatalError("Not found season") + } + } + + var localizedText: String { + switch self { + case .winter: + return "冬" + case .spring: + return "春" + case .summer: + return "夏" + case .autumn: + return "秋" + } + } + + var next: Season { + switch self { + case .winter: + return .spring + case .spring: + return .summer + case .summer: + return .autumn + case .autumn: + return .winter + } + } + + var previous: Season { + switch self { + case .winter: + return .autumn + case .spring: + return .winter + case .summer: + return .spring + case .autumn: + return .summer + } + } } } diff --git a/Sources/Search/SearchViewModel.swift b/Sources/Search/SearchViewModel.swift new file mode 100644 index 00000000..531f5d0a --- /dev/null +++ b/Sources/Search/SearchViewModel.swift @@ -0,0 +1,68 @@ +// +// SearchViewModel.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/10. +// + +import SwiftUI +import Combine +import Fluxer + +final class SearchViewModel: ViewModel { + enum Action { + case fetch(AnnictSeason) + } + + enum Mutation { + case setRecomendedWorks([WorkFragment]) + case setAnnictSeason(AnnictSeason) + case setError(Error) + } + + class State: ObservableObject { + @Published var recomendedWorks: [WorkFragment] = [] + @Published var error: Error? + @Published var annictSeason: AnnictSeason = .current + } + + @Published var state = State() + + init() { + initilize() + } + + func mutate(action: Action) -> AnyPublisher { + switch action { + case .fetch(let season): + let fetchStream = fetch(season: season) + .map { $0.searchWorks?.edges?.compactMap { $0?.node?.fragments.workFragment } ?? [] } + .map { Mutation.setRecomendedWorks($0) } + .catch { Just(.setError($0)) } + .assertNoFailure() + + let setSeasonStream = Just(Mutation.setAnnictSeason(season)) + + return fetchStream + .merge(with: setSeasonStream) + .eraseToAnyPublisher() + } + } + + func reduce(mutation: Mutation) { + switch mutation { + case .setRecomendedWorks(let works): + state.recomendedWorks = works + case .setAnnictSeason(let season): + state.annictSeason = season + case .setError(let error): + state.error = error + } + } + + private func fetch(season: AnnictSeason) -> AnyPublisher { + let query = SearchWorksBySeasonQuery(first: 100, after: nil, seasons: [season.id]) + return Network.shared.apollo.fetch(query: query) + } +} + diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index d7ea7b33..aec140e7 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -24,34 +24,18 @@ struct WorkView: View { GeometryReader { geometry in ScrollView(.vertical) { if let work = work { - WorkHeaderView(work: work.fragments.workFragment) - .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) LazyVStack(alignment: .leading, spacing: 24) { - Text("Episodes") - .font(.title2) - .fontWeight(.bold) - ForEach((work.episodes?.nodes ?? []).indices) { index in - if let episode = work.episodes?.nodes?[index] { - WorkEpisodeCell(episode: episode) + WorkHeaderView(work: work.fragments.workFragment) + .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) + Group { + if work.episodesCount > 0 { + episodeSection(work: work) } + reviewsSection(work: work) + charactorsSection(work: work) } - Button(action: { - - }, label: { - Spacer() - Text("もっと見る") - .font(.system(size: 14)) - Spacer() - - }) - // Text("Charactors") - // .font(.title2) - // .fontWeight(.bold) - // ForEach(10..<15, id: \.self) { i in - // WorkEpisodeCell(number: i+1, title: "魔神が生まれた日") - // } + .padding(.init(top: 0, leading: 16, bottom: 48, trailing: 16)) } - .padding(.init(top: 0, leading: 16, bottom: 48, trailing: 16)) } } } @@ -62,6 +46,72 @@ struct WorkView: View { } } + private func episodeSection(work: SearchWorksByIdQuery.Data.SearchWork.Node) -> some View { + LazyVStack(alignment: .leading, spacing: 16) { + Text("Episodes \(work.episodesCount)") + .font(.title2) + .fontWeight(.bold) + ForEach((work.episodes?.nodes ?? []).indices) { index in + if let episode = work.episodes?.nodes?[index] { + WorkEpisodeCell(episode: episode) + } + } + Button(action: { + + }, label: { + Spacer() + Text("もっと見る") + .font(.system(size: 14)) + Spacer() + + }) + } + } + + private func reviewsSection(work: SearchWorksByIdQuery.Data.SearchWork.Node) -> some View { + LazyVStack(alignment: .leading, spacing: 16) { + Text("Reviews \(work.episodesCount)") + .font(.title2) + .fontWeight(.bold) + ForEach((work.episodes?.nodes ?? []).indices) { index in + if let episode = work.episodes?.nodes?[index] { + WorkEpisodeCell(episode: episode) + } + } + Button(action: { + + }, label: { + Spacer() + Text("もっと見る") + .font(.system(size: 14)) + Spacer() + + }) + } + } + + private func charactorsSection(work: SearchWorksByIdQuery.Data.SearchWork.Node) -> some View { + LazyVStack(alignment: .leading, spacing: 16) { + Text("Charactors \(work.episodesCount)") + .font(.title2) + .fontWeight(.bold) + ForEach((work.episodes?.nodes ?? []).indices) { index in + if let episode = work.episodes?.nodes?[index] { + WorkEpisodeCell(episode: episode) + } + } + Button(action: { + + }, label: { + Spacer() + Text("もっと見る") + .font(.system(size: 14)) + Spacer() + + }) + } + } + private func fetch() { Network.shared.apollo.fetch(query: SearchWorksByIdQuery(annictId: workID)) { result in switch result { diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index cfbd209b..96230f46 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -18,5 +18,9 @@ "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172": { "name": "SearchWorksByID", "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId], after: $after) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n nodes {\n __typename\n id\n annictId\n title\n numberText\n viewerRecordsCount\n }\n }\n }\n }\n}" + }, + "f93d24477dc8c443991f3f85b8f44aca4a67ef9ad9fe63d46385f2b4078352a9": { + "name": "SearchWorksBySeason", + "source": "query SearchWorksBySeason($first: Int, $after: String, $seasons: [String!]) {\n searchWorks(first: $first, after: $after, seasons: $seasons, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n}" } } \ No newline at end of file From 7321df0364b55d3db000ea3cd1cf2fccb691cec8 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 10 Jan 2021 22:43:16 +0900 Subject: [PATCH 037/101] Impl search --- Portannict.xcodeproj/project.pbxproj | 4 + Sources/API.swift | 6 +- .../Common/API/Query/GetViewerWorks.graphql | 2 +- .../Search/SearchRecomendedWorksView.swift | 129 ++++++++++++++++++ Sources/Search/SearchView.swift | 76 +++++++++-- Sources/operationIDs.json | 4 +- 6 files changed, 201 insertions(+), 20 deletions(-) create mode 100644 Sources/Search/SearchRecomendedWorksView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 8de8e2c2..2dd70cc9 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -22,6 +22,7 @@ CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; + CF9A375B25AB3502003077D5 /* SearchRecomendedWorksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375A25AB3502003077D5 /* SearchRecomendedWorksView.swift */; }; CFADCD0825A5A78000939DA7 /* SkeletonUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFADCD0725A5A78000939DA7 /* SkeletonUI */; }; CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */; }; CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFB9BA77259DCD0D00C51708 /* Fragments.graphql */; }; @@ -88,6 +89,7 @@ CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; + CF9A375A25AB3502003077D5 /* SearchRecomendedWorksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecomendedWorksView.swift; sourceTree = ""; }; CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityRecordView.swift; sourceTree = ""; }; CFB9BA77259DCD0D00C51708 /* Fragments.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fragments.graphql; sourceTree = ""; }; CFBB73B325A5718900601DCB /* Network.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = ""; }; @@ -296,6 +298,7 @@ children = ( CFE7E5D925A70826009EB3DC /* SearchView.swift */, CF13E35125AAF78A005D11F8 /* SearchViewModel.swift */, + CF9A375A25AB3502003077D5 /* SearchRecomendedWorksView.swift */, ); path = Search; sourceTree = ""; @@ -468,6 +471,7 @@ CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */, CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */, CF1E5E89259CF69E00035D50 /* API.swift in Sources */, + CF9A375B25AB3502003077D5 /* SearchRecomendedWorksView.swift in Sources */, CFE7E5DA25A70826009EB3DC /* SearchView.swift in Sources */, CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */, CFE7E5C825A6E6D7009EB3DC /* UserView.swift in Sources */, diff --git a/Sources/API.swift b/Sources/API.swift index 5b6ea3a7..5001af54 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -2170,7 +2170,7 @@ public final class GetViewerWorksQuery: GraphQLQuery { query GetViewerWorks($first: Int, $after: String, $state: StatusState!) { viewer { __typename - works(first: $first, after: $after, state: $state) { + works(first: $first, after: $after, state: $state, orderBy: {direction: DESC, field: WATCHERS_COUNT}) { __typename edges { __typename @@ -2186,7 +2186,7 @@ public final class GetViewerWorksQuery: GraphQLQuery { public let operationName: String = "GetViewerWorks" - public let operationIdentifier: String? = "d1a522475f872cdc8485a59600f54d67cac7f6bc9971257e732229da9d44ae32" + public let operationIdentifier: String? = "e564d43cd48f4853fb9d76ec93e35740abdcd1e88f8e9e70be5ed7cb98c8f0bb" public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } @@ -2238,7 +2238,7 @@ public final class GetViewerWorksQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("works", arguments: ["first": GraphQLVariable("first"), "after": GraphQLVariable("after"), "state": GraphQLVariable("state")], type: .object(Work.selections)), + GraphQLField("works", arguments: ["first": GraphQLVariable("first"), "after": GraphQLVariable("after"), "state": GraphQLVariable("state"), "orderBy": ["direction": "DESC", "field": "WATCHERS_COUNT"]], type: .object(Work.selections)), ] } diff --git a/Sources/Common/API/Query/GetViewerWorks.graphql b/Sources/Common/API/Query/GetViewerWorks.graphql index 351a7c25..5cccb045 100644 --- a/Sources/Common/API/Query/GetViewerWorks.graphql +++ b/Sources/Common/API/Query/GetViewerWorks.graphql @@ -1,6 +1,6 @@ query GetViewerWorks($first: Int, $after: String, $state: StatusState!) { viewer { - works(first: $first, after: $after, state: $state) { + works(first: $first, after: $after, state: $state, orderBy:{direction:DESC, field:WATCHERS_COUNT}) { edges { node { ...WorkFragment diff --git a/Sources/Search/SearchRecomendedWorksView.swift b/Sources/Search/SearchRecomendedWorksView.swift new file mode 100644 index 00000000..b69e181f --- /dev/null +++ b/Sources/Search/SearchRecomendedWorksView.swift @@ -0,0 +1,129 @@ +// +// SearchRecomendedWorksView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/10. +// + +import SwiftUI +import KingfisherSwiftUI + +struct SearchRecomendedWorksView: View { + let title: String + let works: [WorkFragment] + + var changeSeasonAction: (() -> Void)? + + var body: some View { + VStack(alignment: .leading) { + HStack(alignment: .bottom) { + Text(title) + .font(.system(size: 18)) + .fontWeight(.bold) + Spacer() + Button("期間を変更する") { + changeSeasonAction?() + } + .foregroundColor(.primary) + } + LazyVGrid(columns: Array(repeating: GridItem(spacing: 10), count: 2), spacing: 10) { + ForEach(works.indices, id: \.self) { index in + let work = works[index] + SearchRecomendedWorkView(work: work) + } + } + } + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + } + + func onTapChangeSeasonButton(_ action: @escaping (() -> Void)) -> SearchRecomendedWorksView { + var result = self + result.changeSeasonAction = action + return result + } +} + +struct SearchRecomendedWorksView_Previews: PreviewProvider { + static var previews: some View { + SearchRecomendedWorksView(title: "今期", works: Array(repeating: .dummy, count: 4)) + .previewLayout(.fixed(width: 375, height: 600)) + } +} + +struct SearchRecomendedWorkView: View { + let work: WorkFragment + + private let maxWidth: CGFloat = 140 + private let black = Color(hex: 0x222222) + private var gradient: Gradient { + Gradient(stops: [Gradient.Stop(color: .clear, location: 0), + Gradient.Stop(color: black.opacity(0.8), location: 0.8), + Gradient.Stop(color: black, location: 1)]) + } + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + ZStack(alignment: .bottom) { + KFImage(work.annictId) + .resizable() + .placeholder { + Text("No Image") + .foregroundColor(.systemGray) + .font(.system(size: 16)) + .fontWeight(.bold) + } + .aspectRatio(3/4, contentMode: .fit) + .background(Color(.systemGray6)) + Text(work.title) + .lineLimit(2) + .font(.system(size: 12), weight: .semibold) + .foregroundColor(.white) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(8) + .background(LinearGradient(gradient: gradient, + startPoint: .top, + endPoint: .bottom)) + } + + Button(action: { + + }, label: { + HStack(alignment: .center, spacing: 8) { + Text(viewerStatusStateTitle(state: work.viewerStatusState)) + .font(.system(size: 12)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + Image(systemName: .arrowtriangleDownFill) + .font(.system(size: 8)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + } + }) + .frame(height: 32) + .frame(maxWidth: .infinity) + .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) + .cornerRadius(16) + .padding(EdgeInsets(top: 8, leading: 8, bottom: 8, trailing: 8)) + + } + .background(Color(.quaternarySystemFill)) + .cornerRadius(4) + } + + private func viewerStatusStateTitle(state: StatusState?) -> String { + if let title = state?.title, !title.isEmpty { + return title + } + return "ステータスを変更" + } +} + +struct SearchRecomendedWorkView_Previews: PreviewProvider { + static var previews: some View { + SearchRecomendedWorkView(work: .dummy) + .frame(width: 140) + .previewLayout(.fixed(width: 300, height: 300)) + SearchRecomendedWorkView(work: .dummy2) + .frame(width: 140) + .previewLayout(.fixed(width: 300, height: 300)) + } +} + diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index bfec7809..a75776f7 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -22,7 +22,7 @@ struct SearchView: View { VStack(alignment: .leading, spacing: 16) { SearchBar("タイトルを入力", text: $searchText) if searchText.isEmpty { - SearchRecomendedWorksView(title: viewModel.state.annictSeason.title, + SearchRecomendedWorksView2(title: viewModel.state.annictSeason.title, works: viewModel.state.recomendedWorks) .onTapChangeSeasonButton { viewModel.action.send(.fetch(viewModel.state.annictSeason.previous)) @@ -42,19 +42,12 @@ struct SearchView: View { } } -struct SearchView_Previews: PreviewProvider { - static var previews: some View { - SearchView() - } -} - - -struct SearchRecomendedWorksView: View { +struct SearchRecomendedWorksView2: View { let title: String let works: [WorkFragment] var changeSeasonAction: (() -> Void)? - + var body: some View { VStack(alignment: .leading) { HStack(alignment: .bottom) { @@ -67,24 +60,79 @@ struct SearchRecomendedWorksView: View { } .foregroundColor(.primary) } - LazyVGrid(columns: Array(repeating: GridItem(spacing: 10), count: 2), spacing: 10) { + LazyVStack(alignment: .leading, spacing: 16) { ForEach(works.indices, id: \.self) { index in let work = works[index] - LibraryWorkView(work: work) - .aspectRatio(3/5, contentMode: .fit) + HStack(spacing: 16) { + KFImage(work.annictId) + .resizable() + .placeholder { + let placeholder = Text("No Image") + .foregroundColor(.systemGray) + .font(.system(size: 16)) + .fontWeight(.bold) + Color(.lightGray) + .overlay(placeholder) + } + .aspectRatio(3/4, contentMode: .fit) + .frame(width: 60) + .cornerRadius(8) + + VStack(alignment: .leading, spacing: 8) { + Text(work.title) + + Button(action: { + + }, label: { + HStack(alignment: .center, spacing: 8) { + Text(viewerStatusStateTitle(state: work.viewerStatusState)) + .font(.system(size: 12)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + Image(systemName: .arrowtriangleDownFill) + .font(.system(size: 8)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + } + }) + .frame(width: 120, height: 32) + .padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12)) + .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) + .cornerRadius(16) + } + } } } } .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) } - func onTapChangeSeasonButton(_ action: @escaping (() -> Void)) -> SearchRecomendedWorksView { + func onTapChangeSeasonButton(_ action: @escaping (() -> Void)) -> SearchRecomendedWorksView2 { var result = self result.changeSeasonAction = action return result } + + private func viewerStatusStateTitle(state: StatusState?) -> String { + if let title = state?.title, !title.isEmpty { + return title + } + return "ステータスを変更" + } +} + +struct SearchRecomendedWorksView2_Previews: PreviewProvider { + static var previews: some View { + SearchRecomendedWorksView2(title: "今期", works: Array(repeating: .dummy, count: 4)) + .previewLayout(.fixed(width: 370, height: 600)) + } } +struct SearchView_Previews: PreviewProvider { + static var previews: some View { + SearchView() + } +} + + struct SearchResultView: View { let works: [WorkFragment] diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 96230f46..489e6175 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -11,9 +11,9 @@ "name": "GetViewer", "source": "query GetViewer {\n viewer {\n __typename\n id\n annictId\n name\n username\n avatarUrl\n description\n wannaWatchCount\n watchingCount\n watchedCount\n onHoldCount\n stopWatchingCount\n }\n}" }, - "d1a522475f872cdc8485a59600f54d67cac7f6bc9971257e732229da9d44ae32": { + "e564d43cd48f4853fb9d76ec93e35740abdcd1e88f8e9e70be5ed7cb98c8f0bb": { "name": "GetViewerWorks", - "source": "query GetViewerWorks($first: Int, $after: String, $state: StatusState!) {\n viewer {\n __typename\n works(first: $first, after: $after, state: $state) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n }\n}" + "source": "query GetViewerWorks($first: Int, $after: String, $state: StatusState!) {\n viewer {\n __typename\n works(first: $first, after: $after, state: $state, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n }\n}" }, "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172": { "name": "SearchWorksByID", From 7a470680fd276ae7dde0207c27e5bf3213acdfeb Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 10 Jan 2021 23:41:50 +0900 Subject: [PATCH 038/101] Impl search view --- Portannict.xcodeproj/project.pbxproj | 4 + Sources/API.swift | 205 +++++++++++-- Sources/Common/API/Query/Fragments.graphql | 1 + Sources/Common/AnnictSeason.swift | 115 +++++++ .../Common/Extension/Model+Extension.swift | 17 ++ Sources/Home/ActivityRecordView.swift | 2 +- Sources/Search/SearchView.swift | 282 ++++++------------ Sources/Work/WorkHeaderView.swift | 6 +- Sources/operationIDs.json | 8 +- 9 files changed, 424 insertions(+), 216 deletions(-) create mode 100644 Sources/Common/AnnictSeason.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 2dd70cc9..87d6aed4 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF9A375B25AB3502003077D5 /* SearchRecomendedWorksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375A25AB3502003077D5 /* SearchRecomendedWorksView.swift */; }; + CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */; }; CFADCD0825A5A78000939DA7 /* SkeletonUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFADCD0725A5A78000939DA7 /* SkeletonUI */; }; CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */; }; CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFB9BA77259DCD0D00C51708 /* Fragments.graphql */; }; @@ -90,6 +91,7 @@ CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF9A375A25AB3502003077D5 /* SearchRecomendedWorksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecomendedWorksView.swift; sourceTree = ""; }; + CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictSeason.swift; sourceTree = ""; }; CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityRecordView.swift; sourceTree = ""; }; CFB9BA77259DCD0D00C51708 /* Fragments.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fragments.graphql; sourceTree = ""; }; CFBB73B325A5718900601DCB /* Network.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = ""; }; @@ -236,6 +238,7 @@ CFE38316258E621400CEE318 /* Common */ = { isa = PBXGroup; children = ( + CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */, CFADCD0325A5A34F00939DA7 /* Views */, CFBB73B525A575CD00601DCB /* Extension */, CFE38317258E621A00CEE318 /* API */, @@ -457,6 +460,7 @@ CFBB73B725A575D700601DCB /* KFImage.swift in Sources */, CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, + CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */, CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */, CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */, diff --git a/Sources/API.swift b/Sources/API.swift index 5001af54..7e130c10 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -115,6 +115,62 @@ public enum SeasonName: RawRepresentable, Equatable, Hashable, CaseIterable, Apo } } +/// Media of anime +public enum Media: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { + public typealias RawValue = String + case tv + case ova + case movie + case web + case other + /// Auto generated constant for unknown enum values + case __unknown(RawValue) + + public init?(rawValue: RawValue) { + switch rawValue { + case "TV": self = .tv + case "OVA": self = .ova + case "MOVIE": self = .movie + case "WEB": self = .web + case "OTHER": self = .other + default: self = .__unknown(rawValue) + } + } + + public var rawValue: RawValue { + switch self { + case .tv: return "TV" + case .ova: return "OVA" + case .movie: return "MOVIE" + case .web: return "WEB" + case .other: return "OTHER" + case .__unknown(let value): return value + } + } + + public static func == (lhs: Media, rhs: Media) -> Bool { + switch (lhs, rhs) { + case (.tv, .tv): return true + case (.ova, .ova): return true + case (.movie, .movie): return true + case (.web, .web): return true + case (.other, .other): return true + case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue + default: return false + } + } + + public static var allCases: [Media] { + return [ + .tv, + .ova, + .movie, + .web, + .other, + ] + } +} + public enum RatingState: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable { public typealias RawValue = String case great @@ -205,7 +261,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { public let operationName: String = "GetFollowingActivities" - public let operationIdentifier: String? = "85e752c5006409898daa5cdbce370f805faef08b468e746651a51f1d78d9e06c" + public let operationIdentifier: String? = "a84b63d64f36512aea6ae54594f2c88d8cf24105187cde1195cfae980e5dcc1a" public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition).appending(EpisodeFragment.fragmentDefinition).appending(ReviewFragment.fragmentDefinition).appending(StatusFragment.fragmentDefinition) } @@ -699,6 +755,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), ] } @@ -708,8 +765,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) } public var __typename: String { @@ -802,6 +859,15 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -1184,6 +1250,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), ] } @@ -1193,8 +1260,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) } public var __typename: String { @@ -1287,6 +1354,15 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -1563,6 +1639,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), ] } @@ -1572,8 +1649,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) } public var __typename: String { @@ -1666,6 +1743,15 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -2186,7 +2272,7 @@ public final class GetViewerWorksQuery: GraphQLQuery { public let operationName: String = "GetViewerWorks" - public let operationIdentifier: String? = "e564d43cd48f4853fb9d76ec93e35740abdcd1e88f8e9e70be5ed7cb98c8f0bb" + public let operationIdentifier: String? = "da28f4048d2537a3ee229489ef3b24356ca568d5e5f5354efd9e258195cf29b7" public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } @@ -2364,6 +2450,7 @@ public final class GetViewerWorksQuery: GraphQLQuery { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), ] } @@ -2373,8 +2460,8 @@ public final class GetViewerWorksQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) } public var __typename: String { @@ -2467,6 +2554,15 @@ public final class GetViewerWorksQuery: GraphQLQuery { } } + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -2527,7 +2623,7 @@ public final class SearchWorksByIdQuery: GraphQLQuery { public let operationName: String = "SearchWorksByID" - public let operationIdentifier: String? = "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172" + public let operationIdentifier: String? = "5e9902975ee56d522b235f58534e946edcdcda99e767b6c9a23b7edbe894263e" public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } @@ -2626,6 +2722,7 @@ public final class SearchWorksByIdQuery: GraphQLQuery { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), GraphQLField("episodes", arguments: ["first": 5, "orderBy": ["direction": "ASC", "field": "SORT_NUMBER"]], type: .object(Episode.selections)), ] } @@ -2636,8 +2733,8 @@ public final class SearchWorksByIdQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, episodes: Episode? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "episodes": episodes.flatMap { (value: Episode) -> ResultMap in value.resultMap }]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media, episodes: Episode? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media, "episodes": episodes.flatMap { (value: Episode) -> ResultMap in value.resultMap }]) } public var __typename: String { @@ -2730,6 +2827,15 @@ public final class SearchWorksByIdQuery: GraphQLQuery { } } + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + public var episodes: Episode? { get { return (resultMap["episodes"] as? ResultMap).flatMap { Episode(unsafeResultMap: $0) } @@ -2908,7 +3014,7 @@ public final class SearchWorksBySeasonQuery: GraphQLQuery { public let operationName: String = "SearchWorksBySeason" - public let operationIdentifier: String? = "f93d24477dc8c443991f3f85b8f44aca4a67ef9ad9fe63d46385f2b4078352a9" + public let operationIdentifier: String? = "fff6f2046042c3480b6ca07916908d909201b786fa6455087e14763668c215e5" public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } @@ -3048,6 +3154,7 @@ public final class SearchWorksBySeasonQuery: GraphQLQuery { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), ] } @@ -3057,8 +3164,8 @@ public final class SearchWorksBySeasonQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) } public var __typename: String { @@ -3151,6 +3258,15 @@ public final class SearchWorksBySeasonQuery: GraphQLQuery { } } + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -3197,6 +3313,7 @@ public struct WorkFragment: GraphQLFragment { seasonName seasonYear viewerStatusState + media } """ @@ -3214,6 +3331,7 @@ public struct WorkFragment: GraphQLFragment { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), ] } @@ -3223,8 +3341,8 @@ public struct WorkFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) } public var __typename: String { @@ -3316,6 +3434,15 @@ public struct WorkFragment: GraphQLFragment { resultMap.updateValue(newValue, forKey: "viewerStatusState") } } + + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } } public struct RecordFragment: GraphQLFragment { @@ -3573,6 +3700,7 @@ public struct RecordFragment: GraphQLFragment { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), ] } @@ -3582,8 +3710,8 @@ public struct RecordFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) } public var __typename: String { @@ -3676,6 +3804,15 @@ public struct RecordFragment: GraphQLFragment { } } + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -4030,6 +4167,7 @@ public struct StatusFragment: GraphQLFragment { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), ] } @@ -4039,8 +4177,8 @@ public struct StatusFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) } public var __typename: String { @@ -4133,6 +4271,15 @@ public struct StatusFragment: GraphQLFragment { } } + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) @@ -4575,6 +4722,7 @@ public struct ReviewFragment: GraphQLFragment { GraphQLField("seasonName", type: .scalar(SeasonName.self)), GraphQLField("seasonYear", type: .scalar(Int.self)), GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), ] } @@ -4584,8 +4732,8 @@ public struct ReviewFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil) { - self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState]) + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) } public var __typename: String { @@ -4678,6 +4826,15 @@ public struct ReviewFragment: GraphQLFragment { } } + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + public var fragments: Fragments { get { return Fragments(unsafeResultMap: resultMap) diff --git a/Sources/Common/API/Query/Fragments.graphql b/Sources/Common/API/Query/Fragments.graphql index 4d77a787..6f3582b0 100644 --- a/Sources/Common/API/Query/Fragments.graphql +++ b/Sources/Common/API/Query/Fragments.graphql @@ -8,6 +8,7 @@ fragment WorkFragment on Work { seasonName seasonYear viewerStatusState + media } fragment RecordFragment on Record { diff --git a/Sources/Common/AnnictSeason.swift b/Sources/Common/AnnictSeason.swift new file mode 100644 index 00000000..2492597e --- /dev/null +++ b/Sources/Common/AnnictSeason.swift @@ -0,0 +1,115 @@ +// +// AnnictSeason.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/10. +// + +import Foundation + +struct AnnictSeason: Equatable { + let year: Int + let season: Season + + static var current: AnnictSeason { + return .init(year: Date().year, season: .current) + } + + var next: AnnictSeason { + var newYear = self.year + if season == .autumn { + newYear += 1 + } + return .init(year: newYear, season: season.next) + } + + var previous: AnnictSeason { + var newYear = self.year + if season == .winter { + newYear -= 1 + } + return .init(year: newYear, season: season.previous) + } + + var id: String { + return "\(year)-\(season.rawValue)" + } + + var title: String { + if self == AnnictSeason.current { + return "今期" + } + switch self { + case .current: + return "今期" + case AnnictSeason.current.next: + return "来期" + case AnnictSeason.current.previous: + return "前期" + default: + return "\(year)年 \(season.localizedText)" + } + } + + enum Season: String, Equatable { + case winter + case spring + case summer + case autumn + + static var current: Season { + switch Date().month { + case 1...3: + return .winter + case 4...6: + return .spring + case 7...9: + return .summer + case 10...12: + return .autumn + default: + fatalError("Not found season") + } + } + + var localizedText: String { + switch self { + case .winter: + return "冬" + case .spring: + return "春" + case .summer: + return "夏" + case .autumn: + return "秋" + } + } + + var next: Season { + switch self { + case .winter: + return .spring + case .spring: + return .summer + case .summer: + return .autumn + case .autumn: + return .winter + } + } + + var previous: Season { + switch self { + case .winter: + return .autumn + case .spring: + return .winter + case .summer: + return .spring + case .autumn: + return .summer + } + } + } +} + diff --git a/Sources/Common/Extension/Model+Extension.swift b/Sources/Common/Extension/Model+Extension.swift index 360a9186..af80a8c4 100644 --- a/Sources/Common/Extension/Model+Extension.swift +++ b/Sources/Common/Extension/Model+Extension.swift @@ -91,6 +91,23 @@ extension StatusState { } } +extension Media { + var localizedText: String { + switch self { + case .movie: + return "映画" + case .tv: + return "TV" + case .ova: + return "OVA" + case .web: + return "Web" + default: + return "その他" + } + } +} + extension UserFragment { static var dummy = UserFragment(id: "user", name: "touyu", username: "touyu", description: "") } diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index 118b3d9f..f2fb7b61 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -59,7 +59,7 @@ struct ActivityRecordView: View { struct ActivityRecordView_Previews: PreviewProvider { static var previews: some View { - let recordWork = RecordFragment.Work(id: "record", annictId: 6801, title: "GREAT PRETENDER", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + let recordWork = RecordFragment.Work(unsafeResultMap: WorkFragment.dummy.resultMap) let recordEpisode = RecordFragment.Episode(id: "", annictId: 124160, numberText: "Case_1_1", title: "Los Angeles Connection") let user = RecordFragment.User(id: "user", name: "touyu", username: "touyu", description: "") return ActivityRecordView(record: RecordFragment(id: "", annictId: 0, comment: "いい話だった", ratingState: .good, createdAt: "2021-01-06T17:20:54Z", user: user, work: recordWork, episode: recordEpisode)) diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index a75776f7..a31be888 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -13,6 +13,7 @@ struct SearchView: View { @StateObject var viewModel: SearchViewModel = .init() @State private var searchText : String = "" + @State private var isEditing : Bool = false private var results: [WorkFragment] = [.dummy, .dummy, .dummy, .dummy, .dummy] @@ -20,16 +21,22 @@ struct SearchView: View { NavigationView { ScrollView(.vertical, showsIndicators: false) { VStack(alignment: .leading, spacing: 16) { - SearchBar("タイトルを入力", text: $searchText) + SearchBar("タイトルを入力", text: $searchText, isEditing: $isEditing) + .showsCancelButton(isEditing) + .onCancel { + Keyboard.dismiss() + } if searchText.isEmpty { - SearchRecomendedWorksView2(title: viewModel.state.annictSeason.title, - works: viewModel.state.recomendedWorks) + SearchResultView(title: viewModel.state.annictSeason.title, + works: viewModel.state.recomendedWorks, + mode: .recommend) .onTapChangeSeasonButton { viewModel.action.send(.fetch(viewModel.state.annictSeason.previous)) } } else { - SearchResultView(works: results) - .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + SearchResultView(title: "検索結果", + works: results, + mode: .searchResult) } } .padding(.bottom, 40) @@ -38,15 +45,38 @@ struct SearchView: View { .onAppear { viewModel.action.send(.fetch(.current)) } + .gesture( + DragGesture().onChanged { value in + Keyboard.dismiss() + } + ) } } } -struct SearchRecomendedWorksView2: View { +struct SearchView_Previews: PreviewProvider { + static var previews: some View { + SearchView() + } +} + +struct SearchResultView: View { let title: String let works: [WorkFragment] + let mode: Mode - var changeSeasonAction: (() -> Void)? + init(title: String, works: [WorkFragment], mode: Mode) { + self.title = title + self.works = works + self.mode = mode + } + + private var changeSeasonAction: (() -> Void)? + + enum Mode { + case recommend + case searchResult + } var body: some View { VStack(alignment: .leading) { @@ -54,58 +84,75 @@ struct SearchRecomendedWorksView2: View { Text(title) .font(.system(size: 18)) .fontWeight(.bold) - Spacer() - Button("期間を変更する") { - changeSeasonAction?() + if mode == .recommend { + Spacer() + Button("期間を変更する") { + changeSeasonAction?() + } + .foregroundColor(.primary) } - .foregroundColor(.primary) } LazyVStack(alignment: .leading, spacing: 16) { ForEach(works.indices, id: \.self) { index in let work = works[index] - HStack(spacing: 16) { - KFImage(work.annictId) - .resizable() - .placeholder { - let placeholder = Text("No Image") - .foregroundColor(.systemGray) - .font(.system(size: 16)) - .fontWeight(.bold) - Color(.lightGray) - .overlay(placeholder) - } - .aspectRatio(3/4, contentMode: .fit) - .frame(width: 60) - .cornerRadius(8) - - VStack(alignment: .leading, spacing: 8) { - Text(work.title) - - Button(action: { + row(work: work) + } + } + } + .padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12)) + } - }, label: { - HStack(alignment: .center, spacing: 8) { - Text(viewerStatusStateTitle(state: work.viewerStatusState)) - .font(.system(size: 12)) - .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) - Image(systemName: .arrowtriangleDownFill) - .font(.system(size: 8)) - .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) - } - }) - .frame(width: 120, height: 32) - .padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12)) - .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) - .cornerRadius(16) - } - } + func row(work: WorkFragment) -> some View { + HStack(alignment: .top, spacing: 16) { + KFImage(work.annictId) + .resizable() + .placeholder { + let placeholder = Text("No Image") + .foregroundColor(.systemGray) + .font(.system(size: 16)) + .fontWeight(.bold) + Color(.lightGray) + .overlay(placeholder) } + .aspectRatio(3/4, contentMode: .fit) + .frame(width: 60) + .cornerRadius(8) + + VStack(alignment: .leading, spacing: 8) { + Text(work.title) + .fontWeight(.semibold) + + Text(work.media.localizedText) + .font(.system(size: 12)) + .padding(EdgeInsets(top: 2, leading: 8, bottom: 2, trailing: 8)) + .background(Color(.tertiarySystemBackground)) + .cornerRadius(4) + + Button(action: { + + }, label: { + HStack(alignment: .center, spacing: 8) { + Text(viewerStatusStateTitle(state: work.viewerStatusState)) + .font(.system(size: 13)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + Image(systemName: .arrowtriangleDownFill) + .font(.system(size: 8)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + } + }) + .frame(height: 32) + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) + .cornerRadius(16) } } - .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(EdgeInsets(top: 8, leading: 8, bottom: 8, trailing: 8)) + .background(Color(.secondarySystemBackground)) + .cornerRadius(8) } - func onTapChangeSeasonButton(_ action: @escaping (() -> Void)) -> SearchRecomendedWorksView2 { + func onTapChangeSeasonButton(_ action: @escaping (() -> Void)) -> SearchResultView { var result = self result.changeSeasonAction = action return result @@ -119,143 +166,10 @@ struct SearchRecomendedWorksView2: View { } } -struct SearchRecomendedWorksView2_Previews: PreviewProvider { +struct SearchResultViiew_Previews: PreviewProvider { static var previews: some View { - SearchRecomendedWorksView2(title: "今期", works: Array(repeating: .dummy, count: 4)) + SearchResultView(title: "今期", works: Array(repeating: .dummy, count: 4), mode: .recommend) + .preferredColorScheme(.dark) .previewLayout(.fixed(width: 370, height: 600)) } } - -struct SearchView_Previews: PreviewProvider { - static var previews: some View { - SearchView() - } -} - - -struct SearchResultView: View { - let works: [WorkFragment] - - var body: some View { - VStack(alignment: .leading) { - Text("検索結果") - ForEach(works.indices, id: \.self) { index in - let work = works[index] - HStack(spacing: 8) { - KFImage(work.annictId) - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 60) - .cornerRadius(8) - Text(work.title) - } - } - } - } -} - -struct AnnictSeason: Equatable { - let year: Int - let season: Season - - static var current: AnnictSeason { - return .init(year: Date().year, season: .current) - } - - var next: AnnictSeason { - var newYear = self.year - if season == .autumn { - newYear += 1 - } - return .init(year: newYear, season: season.next) - } - - var previous: AnnictSeason { - var newYear = self.year - if season == .winter { - newYear -= 1 - } - return .init(year: newYear, season: season.previous) - } - - var id: String { - return "\(year)-\(season.rawValue)" - } - - var title: String { - if self == AnnictSeason.current { - return "今期" - } - switch self { - case .current: - return "今期" - case AnnictSeason.current.next: - return "来期" - case AnnictSeason.current.previous: - return "前期" - default: - return "\(year)年 \(season.localizedText)" - } - } - - enum Season: String, Equatable { - case winter - case spring - case summer - case autumn - - static var current: Season { - switch Date().month { - case 1...3: - return .winter - case 4...6: - return .spring - case 7...9: - return .summer - case 10...12: - return .autumn - default: - fatalError("Not found season") - } - } - - var localizedText: String { - switch self { - case .winter: - return "冬" - case .spring: - return "春" - case .summer: - return "夏" - case .autumn: - return "秋" - } - } - - var next: Season { - switch self { - case .winter: - return .spring - case .spring: - return .summer - case .summer: - return .autumn - case .autumn: - return .winter - } - } - - var previous: Season { - switch self { - case .winter: - return .autumn - case .spring: - return .winter - case .summer: - return .spring - case .autumn: - return .summer - } - } - } -} diff --git a/Sources/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift index 836ce86a..aea78b95 100644 --- a/Sources/Work/WorkHeaderView.swift +++ b/Sources/Work/WorkHeaderView.swift @@ -57,14 +57,14 @@ struct WorkHeaderView_Previews: PreviewProvider { extension WorkFragment { static var dummy: WorkFragment { - WorkFragment(id: "", annictId: 6524, title: "PSYCHO-PASS", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + WorkFragment(id: "", annictId: 6524, title: "PSYCHO-PASS", episodesCount: 0, watchersCount: 0, reviewsCount: 0, media: .tv) } static var dummy2: WorkFragment { - WorkFragment(id: "", annictId: 0, title: "No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + WorkFragment(id: "", annictId: 0, title: "No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0, media: .tv) } static var dummy3: WorkFragment { - WorkFragment(id: "", annictId: 6524, title: "No Title No Title No Title No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0) + WorkFragment(id: "", annictId: 6524, title: "No Title No Title No Title No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0, media: .tv) } } diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 489e6175..e34dbd75 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -1,5 +1,5 @@ { - "85e752c5006409898daa5cdbce370f805faef08b468e746651a51f1d78d9e06c": { + "a84b63d64f36512aea6ae54594f2c88d8cf24105187cde1195cfae980e5dcc1a": { "name": "GetFollowingActivities", "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n cursor\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n ...ReviewFragment\n }\n ... on Status {\n ...StatusFragment\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n}" }, @@ -11,15 +11,15 @@ "name": "GetViewer", "source": "query GetViewer {\n viewer {\n __typename\n id\n annictId\n name\n username\n avatarUrl\n description\n wannaWatchCount\n watchingCount\n watchedCount\n onHoldCount\n stopWatchingCount\n }\n}" }, - "e564d43cd48f4853fb9d76ec93e35740abdcd1e88f8e9e70be5ed7cb98c8f0bb": { + "da28f4048d2537a3ee229489ef3b24356ca568d5e5f5354efd9e258195cf29b7": { "name": "GetViewerWorks", "source": "query GetViewerWorks($first: Int, $after: String, $state: StatusState!) {\n viewer {\n __typename\n works(first: $first, after: $after, state: $state, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n }\n}" }, - "999459cc336c9f020f1ff9e3492ae12d5bc379d1b7e4fad6a468f862565f1172": { + "5e9902975ee56d522b235f58534e946edcdcda99e767b6c9a23b7edbe894263e": { "name": "SearchWorksByID", "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId], after: $after) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n nodes {\n __typename\n id\n annictId\n title\n numberText\n viewerRecordsCount\n }\n }\n }\n }\n}" }, - "f93d24477dc8c443991f3f85b8f44aca4a67ef9ad9fe63d46385f2b4078352a9": { + "fff6f2046042c3480b6ca07916908d909201b786fa6455087e14763668c215e5": { "name": "SearchWorksBySeason", "source": "query SearchWorksBySeason($first: Int, $after: String, $seasons: [String!]) {\n searchWorks(first: $first, after: $after, seasons: $seasons, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n}" } From 660444acfe7b1bec4f47bcde6ff09aa8d10fe3b6 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 11 Jan 2021 00:28:42 +0900 Subject: [PATCH 039/101] Impl search result --- Portannict.xcodeproj/project.pbxproj | 4 + Sources/API.swift | 304 ++++++++++++++++++ .../API/Query/SearchWorksByTitle.graphql | 10 + Sources/Search/SearchView.swift | 26 +- Sources/Search/SearchViewModel.swift | 25 ++ Sources/operationIDs.json | 4 + 6 files changed, 367 insertions(+), 6 deletions(-) create mode 100644 Sources/Common/API/Query/SearchWorksByTitle.graphql diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 87d6aed4..ce6516ea 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -29,6 +29,7 @@ CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFB9BA77259DCD0D00C51708 /* Fragments.graphql */; }; CFBB73B425A5718900601DCB /* Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBB73B325A5718900601DCB /* Network.swift */; }; CFBB73B725A575D700601DCB /* KFImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBB73B625A575D700601DCB /* KFImage.swift */; }; + CFBCA06325AB49FB00C5386C /* SearchWorksByTitle.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFBCA06225AB49FB00C5386C /* SearchWorksByTitle.graphql */; }; CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03EFE259483D9001516D3 /* HTTPClient.swift */; }; CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F002594895F001516D3 /* LoginViewModel.swift */; }; CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */; }; @@ -96,6 +97,7 @@ CFB9BA77259DCD0D00C51708 /* Fragments.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fragments.graphql; sourceTree = ""; }; CFBB73B325A5718900601DCB /* Network.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = ""; }; CFBB73B625A575D700601DCB /* KFImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KFImage.swift; sourceTree = ""; }; + CFBCA06225AB49FB00C5386C /* SearchWorksByTitle.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorksByTitle.graphql; sourceTree = ""; }; CFC03EFE259483D9001516D3 /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OauthTokenRequest.swift; sourceTree = ""; }; @@ -197,6 +199,7 @@ CFE7E5CD25A6EC6B009EB3DC /* GetUser.graphql */, CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */, CFB9BA77259DCD0D00C51708 /* Fragments.graphql */, + CFBCA06225AB49FB00C5386C /* SearchWorksByTitle.graphql */, ); path = Query; sourceTree = ""; @@ -404,6 +407,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + CFBCA06325AB49FB00C5386C /* SearchWorksByTitle.graphql in Resources */, CFD82D3C25A64157005401AF /* GetViewer.graphql in Resources */, CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */, CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */, diff --git a/Sources/API.swift b/Sources/API.swift index 7e130c10..f1c85de3 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -3298,6 +3298,310 @@ public final class SearchWorksBySeasonQuery: GraphQLQuery { } } +public final class SearchWorksByTitlesQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query SearchWorksByTitles($first: Int, $after: String, $titles: [String!]) { + searchWorks(first: $first, after: $after, titles: $titles, orderBy: {direction: DESC, field: WATCHERS_COUNT}) { + __typename + edges { + __typename + node { + __typename + ...WorkFragment + } + } + } + } + """ + + public let operationName: String = "SearchWorksByTitles" + + public let operationIdentifier: String? = "9b9adbe8fd1d8928932d3a15ad2c0b84532046c617d12a05ac13ca68d6f9fe6f" + + public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } + + public var first: Int? + public var after: String? + public var titles: [String]? + + public init(first: Int? = nil, after: String? = nil, titles: [String]?) { + self.first = first + self.after = after + self.titles = titles + } + + public var variables: GraphQLMap? { + return ["first": first, "after": after, "titles": titles] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("searchWorks", arguments: ["first": GraphQLVariable("first"), "after": GraphQLVariable("after"), "titles": GraphQLVariable("titles"), "orderBy": ["direction": "DESC", "field": "WATCHERS_COUNT"]], type: .object(SearchWork.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(searchWorks: SearchWork? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) + } + + public var searchWorks: SearchWork? { + get { + return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") + } + } + + public struct SearchWork: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("edges", type: .list(.object(Edge.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(edges: [Edge?]? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of edges. + public var edges: [Edge?]? { + get { + return (resultMap["edges"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Edge?] in value.map { (value: ResultMap?) -> Edge? in value.flatMap { (value: ResultMap) -> Edge in Edge(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, forKey: "edges") + } + } + + public struct Edge: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkEdge"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("node", type: .object(Node.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(node: Node? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkEdge", "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// The item at the end of the edge. + public var node: Node? { + get { + return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "node") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + } + } +} + public struct WorkFragment: GraphQLFragment { /// The raw GraphQL definition of this fragment. public static let fragmentDefinition: String = diff --git a/Sources/Common/API/Query/SearchWorksByTitle.graphql b/Sources/Common/API/Query/SearchWorksByTitle.graphql new file mode 100644 index 00000000..aacc0a47 --- /dev/null +++ b/Sources/Common/API/Query/SearchWorksByTitle.graphql @@ -0,0 +1,10 @@ +query SearchWorksByTitles($first: Int, $after: String, $titles: [String!]) { + searchWorks(first: $first, after: $after, titles: $titles, orderBy:{direction:DESC, field:WATCHERS_COUNT}) { + edges { + node{ + ...WorkFragment + } + } + } +} + diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index a31be888..302e9d81 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -7,26 +7,24 @@ import SwiftUI import SwiftUIX +import Combine import KingfisherSwiftUI struct SearchView: View { @StateObject var viewModel: SearchViewModel = .init() - @State private var searchText : String = "" @State private var isEditing : Bool = false - - private var results: [WorkFragment] = [.dummy, .dummy, .dummy, .dummy, .dummy] var body: some View { NavigationView { ScrollView(.vertical, showsIndicators: false) { VStack(alignment: .leading, spacing: 16) { - SearchBar("タイトルを入力", text: $searchText, isEditing: $isEditing) + SearchBar("タイトルを入力", text: $viewModel.searchText, isEditing: $isEditing) .showsCancelButton(isEditing) .onCancel { Keyboard.dismiss() } - if searchText.isEmpty { + if viewModel.searchText.isEmpty { SearchResultView(title: viewModel.state.annictSeason.title, works: viewModel.state.recomendedWorks, mode: .recommend) @@ -35,7 +33,7 @@ struct SearchView: View { } } else { SearchResultView(title: "検索結果", - works: results, + works: viewModel.state.searchResultWorks, mode: .searchResult) } } @@ -50,6 +48,22 @@ struct SearchView: View { Keyboard.dismiss() } ) + .onReceive( + viewModel.$searchText + .debounce(for: 0.4, scheduler: DispatchQueue.main), + perform: { text in + viewModel.action.send(.search(text)) + } + ) + .onReceive( + viewModel.$searchText + .receive(on: DispatchQueue.main), + perform: { text in + if text.isEmpty { + viewModel.action.send(.clearSearchResults) + } + } + ) } } } diff --git a/Sources/Search/SearchViewModel.swift b/Sources/Search/SearchViewModel.swift index 531f5d0a..26ed78cd 100644 --- a/Sources/Search/SearchViewModel.swift +++ b/Sources/Search/SearchViewModel.swift @@ -12,21 +12,26 @@ import Fluxer final class SearchViewModel: ViewModel { enum Action { case fetch(AnnictSeason) + case search(String) + case clearSearchResults } enum Mutation { case setRecomendedWorks([WorkFragment]) + case setSearchResultsWorks([WorkFragment]) case setAnnictSeason(AnnictSeason) case setError(Error) } class State: ObservableObject { @Published var recomendedWorks: [WorkFragment] = [] + @Published var searchResultWorks: [WorkFragment] = [] @Published var error: Error? @Published var annictSeason: AnnictSeason = .current } @Published var state = State() + @Published var searchText : String = "" init() { initilize() @@ -46,6 +51,19 @@ final class SearchViewModel: ViewModel { return fetchStream .merge(with: setSeasonStream) .eraseToAnyPublisher() + case .search(let title): + guard !title.isEmpty else { return Empty().eraseToAnyPublisher() } + let searchStream = search(title: title) + .map { $0.searchWorks?.edges?.compactMap { $0?.node?.fragments.workFragment } ?? [] } + .map { Mutation.setSearchResultsWorks($0) } + .catch { Just(.setError($0)) } + .assertNoFailure() + + return searchStream + .eraseToAnyPublisher() + case .clearSearchResults: + return Just(.setSearchResultsWorks([])) + .eraseToAnyPublisher() } } @@ -53,6 +71,8 @@ final class SearchViewModel: ViewModel { switch mutation { case .setRecomendedWorks(let works): state.recomendedWorks = works + case .setSearchResultsWorks(let works): + state.searchResultWorks = works case .setAnnictSeason(let season): state.annictSeason = season case .setError(let error): @@ -64,5 +84,10 @@ final class SearchViewModel: ViewModel { let query = SearchWorksBySeasonQuery(first: 100, after: nil, seasons: [season.id]) return Network.shared.apollo.fetch(query: query) } + + private func search(title: String) -> AnyPublisher { + let query = SearchWorksByTitlesQuery(first: 100, after: nil, titles: [title]) + return Network.shared.apollo.fetch(query: query) + } } diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index e34dbd75..279d626c 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -22,5 +22,9 @@ "fff6f2046042c3480b6ca07916908d909201b786fa6455087e14763668c215e5": { "name": "SearchWorksBySeason", "source": "query SearchWorksBySeason($first: Int, $after: String, $seasons: [String!]) {\n searchWorks(first: $first, after: $after, seasons: $seasons, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n}" + }, + "9b9adbe8fd1d8928932d3a15ad2c0b84532046c617d12a05ac13ca68d6f9fe6f": { + "name": "SearchWorksByTitles", + "source": "query SearchWorksByTitles($first: Int, $after: String, $titles: [String!]) {\n searchWorks(first: $first, after: $after, titles: $titles, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n}" } } \ No newline at end of file From 424109b34d750e6f0e041825d68ce369c32cdd63 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 11 Jan 2021 01:51:38 +0900 Subject: [PATCH 040/101] Update SearchView.swift --- Sources/Search/SearchView.swift | 39 +++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index 302e9d81..e45ac43b 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -28,8 +28,8 @@ struct SearchView: View { SearchResultView(title: viewModel.state.annictSeason.title, works: viewModel.state.recomendedWorks, mode: .recommend) - .onTapChangeSeasonButton { - viewModel.action.send(.fetch(viewModel.state.annictSeason.previous)) + .onTapChangeSeasonButton { season in + viewModel.action.send(.fetch(season)) } } else { SearchResultView(title: "検索結果", @@ -79,14 +79,18 @@ struct SearchResultView: View { let works: [WorkFragment] let mode: Mode + @State private var seasonSelection = 1 + @State private var showPicker = false + + private let seasons = allSeasons() + private var changeSeasonAction: ((AnnictSeason) -> Void)? + init(title: String, works: [WorkFragment], mode: Mode) { self.title = title self.works = works self.mode = mode } - private var changeSeasonAction: (() -> Void)? - enum Mode { case recommend case searchResult @@ -100,12 +104,23 @@ struct SearchResultView: View { .fontWeight(.bold) if mode == .recommend { Spacer() - Button("期間を変更する") { - changeSeasonAction?() + Button(showPicker ? "決定" : "期間を変更する") { + withAnimation { + showPicker.toggle() + } + changeSeasonAction?(seasons[seasonSelection]) } .foregroundColor(.primary) } } + if showPicker { + Picker(selection: $seasonSelection, label: EmptyView()) { + ForEach(seasons.indices) { index in + let season = seasons[index] + Text(season.title) + } + } + } LazyVStack(alignment: .leading, spacing: 16) { ForEach(works.indices, id: \.self) { index in let work = works[index] @@ -166,12 +181,22 @@ struct SearchResultView: View { .cornerRadius(8) } - func onTapChangeSeasonButton(_ action: @escaping (() -> Void)) -> SearchResultView { + func onTapChangeSeasonButton(_ action: @escaping ((AnnictSeason) -> Void)) -> SearchResultView { var result = self result.changeSeasonAction = action return result } + private static func allSeasons() -> [AnnictSeason] { + var item = AnnictSeason.current.next + var results = [AnnictSeason]() + for _ in 0..<200 { + results.append(item) + item = item.previous + } + return results + } + private func viewerStatusStateTitle(state: StatusState?) -> String { if let title = state?.title, !title.isEmpty { return title From 05cfa4ab30f5fc679078f22a9f7f7030e81df34d Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 11 Jan 2021 02:51:42 +0900 Subject: [PATCH 041/101] Impl --- Portannict.xcodeproj/project.pbxproj | 20 +- Sources/API.swift | 258 ++++++++++++++++++ Sources/Common/API/Query/UpdateStatus.graphql | 7 + Sources/Login/LoginViewModel.swift | 1 + Sources/Profile/ProfileView.swift | 3 + .../Search/SearchRecomendedWorksView.swift | 129 --------- .../Search/SearchRecommendedWorksView.swift | 63 +++++ .../SearchRecommendedWorksViewModel.swift | 71 +++++ Sources/Search/SearchResultsView.swift | 116 ++++++++ Sources/Search/SearchView.swift | 162 +---------- Sources/Search/SearchViewModel.swift | 1 - Sources/operationIDs.json | 4 + 12 files changed, 550 insertions(+), 285 deletions(-) create mode 100644 Sources/Common/API/Query/UpdateStatus.graphql delete mode 100644 Sources/Search/SearchRecomendedWorksView.swift create mode 100644 Sources/Search/SearchRecommendedWorksView.swift create mode 100644 Sources/Search/SearchRecommendedWorksViewModel.swift create mode 100644 Sources/Search/SearchResultsView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index ce6516ea..abcffb1f 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -22,7 +22,6 @@ CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; - CF9A375B25AB3502003077D5 /* SearchRecomendedWorksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375A25AB3502003077D5 /* SearchRecomendedWorksView.swift */; }; CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */; }; CFADCD0825A5A78000939DA7 /* SkeletonUI in Frameworks */ = {isa = PBXBuildFile; productRef = CFADCD0725A5A78000939DA7 /* SkeletonUI */; }; CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */; }; @@ -30,6 +29,10 @@ CFBB73B425A5718900601DCB /* Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBB73B325A5718900601DCB /* Network.swift */; }; CFBB73B725A575D700601DCB /* KFImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBB73B625A575D700601DCB /* KFImage.swift */; }; CFBCA06325AB49FB00C5386C /* SearchWorksByTitle.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFBCA06225AB49FB00C5386C /* SearchWorksByTitle.graphql */; }; + CFBCA06525AB6B0E00C5386C /* UpdateStatus.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CFBCA06425AB6B0E00C5386C /* UpdateStatus.graphql */; }; + CFBCA06725AB709D00C5386C /* SearchRecommendedWorksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBCA06625AB709D00C5386C /* SearchRecommendedWorksView.swift */; }; + CFBCA06925AB70C600C5386C /* SearchResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBCA06825AB70C600C5386C /* SearchResultsView.swift */; }; + CFBCA06B25AB719B00C5386C /* SearchRecommendedWorksViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFBCA06A25AB719B00C5386C /* SearchRecommendedWorksViewModel.swift */; }; CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03EFE259483D9001516D3 /* HTTPClient.swift */; }; CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F002594895F001516D3 /* LoginViewModel.swift */; }; CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */; }; @@ -91,13 +94,16 @@ CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; - CF9A375A25AB3502003077D5 /* SearchRecomendedWorksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecomendedWorksView.swift; sourceTree = ""; }; CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictSeason.swift; sourceTree = ""; }; CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityRecordView.swift; sourceTree = ""; }; CFB9BA77259DCD0D00C51708 /* Fragments.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fragments.graphql; sourceTree = ""; }; CFBB73B325A5718900601DCB /* Network.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Network.swift; sourceTree = ""; }; CFBB73B625A575D700601DCB /* KFImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KFImage.swift; sourceTree = ""; }; CFBCA06225AB49FB00C5386C /* SearchWorksByTitle.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorksByTitle.graphql; sourceTree = ""; }; + CFBCA06425AB6B0E00C5386C /* UpdateStatus.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = UpdateStatus.graphql; sourceTree = ""; }; + CFBCA06625AB709D00C5386C /* SearchRecommendedWorksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecommendedWorksView.swift; sourceTree = ""; }; + CFBCA06825AB70C600C5386C /* SearchResultsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultsView.swift; sourceTree = ""; }; + CFBCA06A25AB719B00C5386C /* SearchRecommendedWorksViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecommendedWorksViewModel.swift; sourceTree = ""; }; CFC03EFE259483D9001516D3 /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OauthTokenRequest.swift; sourceTree = ""; }; @@ -200,6 +206,7 @@ CFE7E5D325A700E8009EB3DC /* GetViewerWorks.graphql */, CFB9BA77259DCD0D00C51708 /* Fragments.graphql */, CFBCA06225AB49FB00C5386C /* SearchWorksByTitle.graphql */, + CFBCA06425AB6B0E00C5386C /* UpdateStatus.graphql */, ); path = Query; sourceTree = ""; @@ -304,7 +311,9 @@ children = ( CFE7E5D925A70826009EB3DC /* SearchView.swift */, CF13E35125AAF78A005D11F8 /* SearchViewModel.swift */, - CF9A375A25AB3502003077D5 /* SearchRecomendedWorksView.swift */, + CFBCA06825AB70C600C5386C /* SearchResultsView.swift */, + CFBCA06625AB709D00C5386C /* SearchRecommendedWorksView.swift */, + CFBCA06A25AB719B00C5386C /* SearchRecommendedWorksViewModel.swift */, ); path = Search; sourceTree = ""; @@ -411,6 +420,7 @@ CFD82D3C25A64157005401AF /* GetViewer.graphql in Resources */, CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */, CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */, + CFBCA06525AB6B0E00C5386C /* UpdateStatus.graphql in Resources */, CFE7E5CE25A6EC6B009EB3DC /* GetUser.graphql in Resources */, CF1E5E5D259CE88500035D50 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, @@ -449,7 +459,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + CFBCA06B25AB719B00C5386C /* SearchRecommendedWorksViewModel.swift in Sources */, CF13E35225AAF78A005D11F8 /* SearchViewModel.swift in Sources */, + CFBCA06925AB70C600C5386C /* SearchResultsView.swift in Sources */, CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */, CFE38320258E64F600CEE318 /* Env.swift in Sources */, @@ -479,7 +491,7 @@ CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */, CFC03F012594895F001516D3 /* LoginViewModel.swift in Sources */, CF1E5E89259CF69E00035D50 /* API.swift in Sources */, - CF9A375B25AB3502003077D5 /* SearchRecomendedWorksView.swift in Sources */, + CFBCA06725AB709D00C5386C /* SearchRecommendedWorksView.swift in Sources */, CFE7E5DA25A70826009EB3DC /* SearchView.swift in Sources */, CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */, CFE7E5C825A6E6D7009EB3DC /* UserView.swift in Sources */, diff --git a/Sources/API.swift b/Sources/API.swift index f1c85de3..9a97daf1 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -3602,6 +3602,264 @@ public final class SearchWorksByTitlesQuery: GraphQLQuery { } } +public final class UpdateStatusMutation: GraphQLMutation { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + mutation updateStatus($workId: ID!, $state: StatusState!) { + updateStatus(input: {workId: $workId, state: $state}) { + __typename + work { + __typename + ...WorkFragment + } + } + } + """ + + public let operationName: String = "updateStatus" + + public let operationIdentifier: String? = "5c9ffdf0f3800cd1291a6377b7e44f9b166390ba9b3912a596692cc79aecddd7" + + public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition) } + + public var workId: GraphQLID + public var state: StatusState + + public init(workId: GraphQLID, state: StatusState) { + self.workId = workId + self.state = state + } + + public var variables: GraphQLMap? { + return ["workId": workId, "state": state] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Mutation"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("updateStatus", arguments: ["input": ["workId": GraphQLVariable("workId"), "state": GraphQLVariable("state")]], type: .object(UpdateStatus.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(updateStatus: UpdateStatus? = nil) { + self.init(unsafeResultMap: ["__typename": "Mutation", "updateStatus": updateStatus.flatMap { (value: UpdateStatus) -> ResultMap in value.resultMap }]) + } + + public var updateStatus: UpdateStatus? { + get { + return (resultMap["updateStatus"] as? ResultMap).flatMap { UpdateStatus(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "updateStatus") + } + } + + public struct UpdateStatus: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["UpdateStatusPayload"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("work", type: .object(Work.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(work: Work? = nil) { + self.init(unsafeResultMap: ["__typename": "UpdateStatusPayload", "work": work.flatMap { (value: Work) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var work: Work? { + get { + return (resultMap["work"] as? ResultMap).flatMap { Work(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "work") + } + } + + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + } +} + public struct WorkFragment: GraphQLFragment { /// The raw GraphQL definition of this fragment. public static let fragmentDefinition: String = diff --git a/Sources/Common/API/Query/UpdateStatus.graphql b/Sources/Common/API/Query/UpdateStatus.graphql new file mode 100644 index 00000000..fec80b58 --- /dev/null +++ b/Sources/Common/API/Query/UpdateStatus.graphql @@ -0,0 +1,7 @@ +mutation updateStatus($workId: ID!, $state: StatusState!) { + updateStatus(input:{workId: $workId, state: $state}) { + work { + ...WorkFragment + } + } +} diff --git a/Sources/Login/LoginViewModel.swift b/Sources/Login/LoginViewModel.swift index 82ef5211..fba93430 100644 --- a/Sources/Login/LoginViewModel.swift +++ b/Sources/Login/LoginViewModel.swift @@ -82,6 +82,7 @@ final class LoginViewModel: ViewModel { return resolve(.success(code)) } session.presentationContextProvider = self?.presentationContextProvider + session.prefersEphemeralWebBrowserSession = true session.start() } } diff --git a/Sources/Profile/ProfileView.swift b/Sources/Profile/ProfileView.swift index 86599b52..49f6ce85 100644 --- a/Sources/Profile/ProfileView.swift +++ b/Sources/Profile/ProfileView.swift @@ -21,6 +21,9 @@ struct ProfileView: View { if let viewer = viewer { UserHeaderView(user: viewer) .padding(.init(top: 0, leading: 16, bottom: 0, trailing: 16)) + Button("Logout") { + session.accessToken = nil + } VStack(alignment: .leading, spacing: 24) { Picker("", selection: $selectorIndex) { Text("ライブラリ") diff --git a/Sources/Search/SearchRecomendedWorksView.swift b/Sources/Search/SearchRecomendedWorksView.swift deleted file mode 100644 index b69e181f..00000000 --- a/Sources/Search/SearchRecomendedWorksView.swift +++ /dev/null @@ -1,129 +0,0 @@ -// -// SearchRecomendedWorksView.swift -// Portannict -// -// Created by Yuto Akiba on 2021/01/10. -// - -import SwiftUI -import KingfisherSwiftUI - -struct SearchRecomendedWorksView: View { - let title: String - let works: [WorkFragment] - - var changeSeasonAction: (() -> Void)? - - var body: some View { - VStack(alignment: .leading) { - HStack(alignment: .bottom) { - Text(title) - .font(.system(size: 18)) - .fontWeight(.bold) - Spacer() - Button("期間を変更する") { - changeSeasonAction?() - } - .foregroundColor(.primary) - } - LazyVGrid(columns: Array(repeating: GridItem(spacing: 10), count: 2), spacing: 10) { - ForEach(works.indices, id: \.self) { index in - let work = works[index] - SearchRecomendedWorkView(work: work) - } - } - } - .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) - } - - func onTapChangeSeasonButton(_ action: @escaping (() -> Void)) -> SearchRecomendedWorksView { - var result = self - result.changeSeasonAction = action - return result - } -} - -struct SearchRecomendedWorksView_Previews: PreviewProvider { - static var previews: some View { - SearchRecomendedWorksView(title: "今期", works: Array(repeating: .dummy, count: 4)) - .previewLayout(.fixed(width: 375, height: 600)) - } -} - -struct SearchRecomendedWorkView: View { - let work: WorkFragment - - private let maxWidth: CGFloat = 140 - private let black = Color(hex: 0x222222) - private var gradient: Gradient { - Gradient(stops: [Gradient.Stop(color: .clear, location: 0), - Gradient.Stop(color: black.opacity(0.8), location: 0.8), - Gradient.Stop(color: black, location: 1)]) - } - - var body: some View { - VStack(alignment: .leading, spacing: 0) { - ZStack(alignment: .bottom) { - KFImage(work.annictId) - .resizable() - .placeholder { - Text("No Image") - .foregroundColor(.systemGray) - .font(.system(size: 16)) - .fontWeight(.bold) - } - .aspectRatio(3/4, contentMode: .fit) - .background(Color(.systemGray6)) - Text(work.title) - .lineLimit(2) - .font(.system(size: 12), weight: .semibold) - .foregroundColor(.white) - .frame(maxWidth: .infinity, alignment: .leading) - .padding(8) - .background(LinearGradient(gradient: gradient, - startPoint: .top, - endPoint: .bottom)) - } - - Button(action: { - - }, label: { - HStack(alignment: .center, spacing: 8) { - Text(viewerStatusStateTitle(state: work.viewerStatusState)) - .font(.system(size: 12)) - .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) - Image(systemName: .arrowtriangleDownFill) - .font(.system(size: 8)) - .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) - } - }) - .frame(height: 32) - .frame(maxWidth: .infinity) - .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) - .cornerRadius(16) - .padding(EdgeInsets(top: 8, leading: 8, bottom: 8, trailing: 8)) - - } - .background(Color(.quaternarySystemFill)) - .cornerRadius(4) - } - - private func viewerStatusStateTitle(state: StatusState?) -> String { - if let title = state?.title, !title.isEmpty { - return title - } - return "ステータスを変更" - } -} - -struct SearchRecomendedWorkView_Previews: PreviewProvider { - static var previews: some View { - SearchRecomendedWorkView(work: .dummy) - .frame(width: 140) - .previewLayout(.fixed(width: 300, height: 300)) - SearchRecomendedWorkView(work: .dummy2) - .frame(width: 140) - .previewLayout(.fixed(width: 300, height: 300)) - } -} - diff --git a/Sources/Search/SearchRecommendedWorksView.swift b/Sources/Search/SearchRecommendedWorksView.swift new file mode 100644 index 00000000..c2308410 --- /dev/null +++ b/Sources/Search/SearchRecommendedWorksView.swift @@ -0,0 +1,63 @@ +// +// SearchRecommendedWorksView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/11. +// + +import SwiftUI + +struct SearchRecommendedWorksView: View { + @StateObject var viewModel: SearchRecommendedWorksViewModel + @State private var seasonSelection = 1 + @State private var showPicker = false + + private let seasons = allSeasons() + + var body: some View { + VStack(alignment: .leading) { + HStack(alignment: .bottom) { + Text(viewModel.state.annictSeason.title) + .font(.system(size: 18)) + .fontWeight(.bold) + Spacer() + Button(showPicker ? "決定" : "期間を変更する") { + withAnimation { + showPicker.toggle() + } + viewModel.action.send(.fetch(seasons[seasonSelection])) + } + .foregroundColor(.primary) + } + if showPicker { + Picker(selection: $seasonSelection, label: EmptyView()) { + ForEach(seasons.indices) { index in + let season = seasons[index] + Text(season.title) + } + } + } + LazyVStack(alignment: .leading, spacing: 16) { + ForEach(viewModel.state.recomendedWorks.indices, id: \.self) { index in + let work = viewModel.state.recomendedWorks[index] + SearchResultView(work: work) + } + } + } + .padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12)) + .onAppear { + print("AAAAAA") + viewModel.action.send(.fetch(viewModel.state.annictSeason)) + } + } + + private static func allSeasons() -> [AnnictSeason] { + var item = AnnictSeason.current.next + var results = [AnnictSeason]() + for _ in 0..<200 { + results.append(item) + item = item.previous + } + return results + } +} diff --git a/Sources/Search/SearchRecommendedWorksViewModel.swift b/Sources/Search/SearchRecommendedWorksViewModel.swift new file mode 100644 index 00000000..f2914702 --- /dev/null +++ b/Sources/Search/SearchRecommendedWorksViewModel.swift @@ -0,0 +1,71 @@ +// +// SearchRecommendedWorksViewModel.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/11. +// + +import SwiftUI +import Combine +import Fluxer + +final class SearchRecommendedWorksViewModel: ViewModel { + enum Action { + case fetch(AnnictSeason) + } + + enum Mutation { + case setRecomendedWorks([WorkFragment]) + case setAnnictSeason(AnnictSeason) + case setError(Error) + } + + class State: ObservableObject { + @Published var recomendedWorks: [WorkFragment] = [] + @Published var annictSeason: AnnictSeason = .current + @Published var error: Error? + } + + @Published var state = State() + + init() { + initilize() + } + + func mutate(action: Action) -> AnyPublisher { + switch action { + case .fetch(let season): + print(season) + let fetchStream = fetch(season: season) + .map { $0.searchWorks?.edges?.compactMap { $0?.node?.fragments.workFragment } ?? [] } + .handleEvents(receiveOutput: { output in + print(output) + }) + .map { Mutation.setRecomendedWorks($0) } + .catch { Just(.setError($0)) } + .assertNoFailure() + + let setSeasonStream = Just(Mutation.setAnnictSeason(season)) + + return fetchStream + .merge(with: setSeasonStream) + .eraseToAnyPublisher() + } + } + + func reduce(mutation: Mutation) { + switch mutation { + case .setRecomendedWorks(let works): + state.recomendedWorks = works + case .setAnnictSeason(let season): + state.annictSeason = season + case .setError(let error): + state.error = error + } + } + + private func fetch(season: AnnictSeason) -> AnyPublisher { + let query = SearchWorksBySeasonQuery(first: 100, after: nil, seasons: [season.id]) + return Network.shared.apollo.fetch(query: query) + } +} diff --git a/Sources/Search/SearchResultsView.swift b/Sources/Search/SearchResultsView.swift new file mode 100644 index 00000000..505516a4 --- /dev/null +++ b/Sources/Search/SearchResultsView.swift @@ -0,0 +1,116 @@ +// +// SearchResultsView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/11. +// + +import SwiftUI +import KingfisherSwiftUI + +struct SearchResultsView: View { + let title: String + let works: [WorkFragment] + + init(title: String, works: [WorkFragment]) { + self.title = title + self.works = works + } + var body: some View { + VStack(alignment: .leading) { + HStack(alignment: .bottom) { + Text(title) + .font(.system(size: 18)) + .fontWeight(.bold) + } + LazyVStack(alignment: .leading, spacing: 16) { + ForEach(works.indices, id: \.self) { index in + let work = works[index] + SearchResultView(work: work) + } + } + } + .padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12)) + } +} + +struct SearchResultsView_Previews: PreviewProvider { + static var previews: some View { + SearchResultsView(title: "検索結果", works: Array(repeating: .dummy, count: 4)) + .preferredColorScheme(.dark) + .previewLayout(.fixed(width: 370, height: 600)) + } +} + +struct SearchResultView: View { + let work: WorkFragment + + @State private var showingActionSheet = false + + var body: some View { + HStack(alignment: .top, spacing: 16) { + KFImage(work.annictId) + .resizable() + .placeholder { + let placeholder = Text("No Image") + .foregroundColor(.systemGray) + .font(.system(size: 16)) + .fontWeight(.bold) + Color(.lightGray) + .overlay(placeholder) + } + .aspectRatio(3/4, contentMode: .fit) + .frame(width: 60) + .cornerRadius(8) + + VStack(alignment: .leading, spacing: 8) { + Text(work.title) + .fontWeight(.semibold) + + Text(work.media.localizedText) + .font(.system(size: 12)) + .padding(EdgeInsets(top: 2, leading: 8, bottom: 2, trailing: 8)) + .background(Color(.tertiarySystemBackground)) + .cornerRadius(4) + + Button(action: { + showingActionSheet = true + }, label: { + HStack(alignment: .center, spacing: 8) { + Text(viewerStatusStateTitle(state: work.viewerStatusState)) + .font(.system(size: 13)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + Image(systemName: .arrowtriangleDownFill) + .font(.system(size: 8)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + } + }) + .frame(height: 32) + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) + .cornerRadius(16) + .actionSheet(isPresented: $showingActionSheet) { + var buttons = StatusState.allCases[0...4] + .map { state in + return ActionSheet.Button.default(Text(state.title)) { +// selectStateAction?(state) + } + } + buttons.append(.cancel()) + return ActionSheet(title: Text("ステータスを変更"), buttons: buttons) + } + } + } + .frame(maxWidth: .infinity, alignment: .leading) + .padding(EdgeInsets(top: 8, leading: 8, bottom: 8, trailing: 8)) + .background(Color(.secondarySystemBackground)) + .cornerRadius(8) + } + + private func viewerStatusStateTitle(state: StatusState?) -> String { + if let title = state?.title, !title.isEmpty { + return title + } + return "ステータスを変更" + } +} diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index e45ac43b..0bcd8271 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -25,24 +25,23 @@ struct SearchView: View { Keyboard.dismiss() } if viewModel.searchText.isEmpty { - SearchResultView(title: viewModel.state.annictSeason.title, - works: viewModel.state.recomendedWorks, - mode: .recommend) - .onTapChangeSeasonButton { season in - viewModel.action.send(.fetch(season)) - } +// SearchRecommendedWorksView(season: viewModel.state.annictSeason, +// works: viewModel.state.recomendedWorks) +// .onTapChangeSeasonButton { season in +// viewModel.action.send(.fetch(season)) +// } + SearchRecommendedWorksView(viewModel: .init()) } else { - SearchResultView(title: "検索結果", - works: viewModel.state.searchResultWorks, - mode: .searchResult) + SearchResultsView(title: "検索結果", + works: viewModel.state.searchResultWorks) } } .padding(.bottom, 40) } .navigationBarTitle("Search") - .onAppear { - viewModel.action.send(.fetch(.current)) - } +// .onAppear { +// viewModel.action.send(.fetch(.current)) +// } .gesture( DragGesture().onChanged { value in Keyboard.dismiss() @@ -73,142 +72,3 @@ struct SearchView_Previews: PreviewProvider { SearchView() } } - -struct SearchResultView: View { - let title: String - let works: [WorkFragment] - let mode: Mode - - @State private var seasonSelection = 1 - @State private var showPicker = false - - private let seasons = allSeasons() - private var changeSeasonAction: ((AnnictSeason) -> Void)? - - init(title: String, works: [WorkFragment], mode: Mode) { - self.title = title - self.works = works - self.mode = mode - } - - enum Mode { - case recommend - case searchResult - } - - var body: some View { - VStack(alignment: .leading) { - HStack(alignment: .bottom) { - Text(title) - .font(.system(size: 18)) - .fontWeight(.bold) - if mode == .recommend { - Spacer() - Button(showPicker ? "決定" : "期間を変更する") { - withAnimation { - showPicker.toggle() - } - changeSeasonAction?(seasons[seasonSelection]) - } - .foregroundColor(.primary) - } - } - if showPicker { - Picker(selection: $seasonSelection, label: EmptyView()) { - ForEach(seasons.indices) { index in - let season = seasons[index] - Text(season.title) - } - } - } - LazyVStack(alignment: .leading, spacing: 16) { - ForEach(works.indices, id: \.self) { index in - let work = works[index] - row(work: work) - } - } - } - .padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12)) - } - - func row(work: WorkFragment) -> some View { - HStack(alignment: .top, spacing: 16) { - KFImage(work.annictId) - .resizable() - .placeholder { - let placeholder = Text("No Image") - .foregroundColor(.systemGray) - .font(.system(size: 16)) - .fontWeight(.bold) - Color(.lightGray) - .overlay(placeholder) - } - .aspectRatio(3/4, contentMode: .fit) - .frame(width: 60) - .cornerRadius(8) - - VStack(alignment: .leading, spacing: 8) { - Text(work.title) - .fontWeight(.semibold) - - Text(work.media.localizedText) - .font(.system(size: 12)) - .padding(EdgeInsets(top: 2, leading: 8, bottom: 2, trailing: 8)) - .background(Color(.tertiarySystemBackground)) - .cornerRadius(4) - - Button(action: { - - }, label: { - HStack(alignment: .center, spacing: 8) { - Text(viewerStatusStateTitle(state: work.viewerStatusState)) - .font(.system(size: 13)) - .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) - Image(systemName: .arrowtriangleDownFill) - .font(.system(size: 8)) - .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) - } - }) - .frame(height: 32) - .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) - .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) - .cornerRadius(16) - } - } - .frame(maxWidth: .infinity, alignment: .leading) - .padding(EdgeInsets(top: 8, leading: 8, bottom: 8, trailing: 8)) - .background(Color(.secondarySystemBackground)) - .cornerRadius(8) - } - - func onTapChangeSeasonButton(_ action: @escaping ((AnnictSeason) -> Void)) -> SearchResultView { - var result = self - result.changeSeasonAction = action - return result - } - - private static func allSeasons() -> [AnnictSeason] { - var item = AnnictSeason.current.next - var results = [AnnictSeason]() - for _ in 0..<200 { - results.append(item) - item = item.previous - } - return results - } - - private func viewerStatusStateTitle(state: StatusState?) -> String { - if let title = state?.title, !title.isEmpty { - return title - } - return "ステータスを変更" - } -} - -struct SearchResultViiew_Previews: PreviewProvider { - static var previews: some View { - SearchResultView(title: "今期", works: Array(repeating: .dummy, count: 4), mode: .recommend) - .preferredColorScheme(.dark) - .previewLayout(.fixed(width: 370, height: 600)) - } -} diff --git a/Sources/Search/SearchViewModel.swift b/Sources/Search/SearchViewModel.swift index 26ed78cd..4c0b7d53 100644 --- a/Sources/Search/SearchViewModel.swift +++ b/Sources/Search/SearchViewModel.swift @@ -90,4 +90,3 @@ final class SearchViewModel: ViewModel { return Network.shared.apollo.fetch(query: query) } } - diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 279d626c..8da5cb51 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -26,5 +26,9 @@ "9b9adbe8fd1d8928932d3a15ad2c0b84532046c617d12a05ac13ca68d6f9fe6f": { "name": "SearchWorksByTitles", "source": "query SearchWorksByTitles($first: Int, $after: String, $titles: [String!]) {\n searchWorks(first: $first, after: $after, titles: $titles, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n}" + }, + "5c9ffdf0f3800cd1291a6377b7e44f9b166390ba9b3912a596692cc79aecddd7": { + "name": "updateStatus", + "source": "mutation updateStatus($workId: ID!, $state: StatusState!) {\n updateStatus(input: {workId: $workId, state: $state}) {\n __typename\n work {\n __typename\n ...WorkFragment\n }\n }\n}" } } \ No newline at end of file From a12888f96b12268445832d564884368307671d36 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 11 Jan 2021 02:52:08 +0900 Subject: [PATCH 042/101] Update SearchRecommendedWorksView.swift --- Sources/Search/SearchRecommendedWorksView.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Sources/Search/SearchRecommendedWorksView.swift b/Sources/Search/SearchRecommendedWorksView.swift index c2308410..6a62eae7 100644 --- a/Sources/Search/SearchRecommendedWorksView.swift +++ b/Sources/Search/SearchRecommendedWorksView.swift @@ -13,7 +13,7 @@ struct SearchRecommendedWorksView: View { @State private var showPicker = false private let seasons = allSeasons() - + var body: some View { VStack(alignment: .leading) { HStack(alignment: .bottom) { @@ -46,7 +46,6 @@ struct SearchRecommendedWorksView: View { } .padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12)) .onAppear { - print("AAAAAA") viewModel.action.send(.fetch(viewModel.state.annictSeason)) } } From 8603dfb0ff86ece00e5515c27277aaf0ab42d04f Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 11 Jan 2021 03:57:11 +0900 Subject: [PATCH 043/101] Fix --- .../SearchRecommendedWorksViewModel.swift | 4 -- Sources/Search/SearchResultsView.swift | 10 ++--- Sources/Search/SearchView.swift | 29 +-------------- Sources/Search/SearchViewModel.swift | 37 +++++-------------- 4 files changed, 16 insertions(+), 64 deletions(-) diff --git a/Sources/Search/SearchRecommendedWorksViewModel.swift b/Sources/Search/SearchRecommendedWorksViewModel.swift index f2914702..68cf3ec0 100644 --- a/Sources/Search/SearchRecommendedWorksViewModel.swift +++ b/Sources/Search/SearchRecommendedWorksViewModel.swift @@ -35,12 +35,8 @@ final class SearchRecommendedWorksViewModel: ViewModel { func mutate(action: Action) -> AnyPublisher { switch action { case .fetch(let season): - print(season) let fetchStream = fetch(season: season) .map { $0.searchWorks?.edges?.compactMap { $0?.node?.fragments.workFragment } ?? [] } - .handleEvents(receiveOutput: { output in - print(output) - }) .map { Mutation.setRecomendedWorks($0) } .catch { Just(.setError($0)) } .assertNoFailure() diff --git a/Sources/Search/SearchResultsView.swift b/Sources/Search/SearchResultsView.swift index 505516a4..7fd27c44 100644 --- a/Sources/Search/SearchResultsView.swift +++ b/Sources/Search/SearchResultsView.swift @@ -9,17 +9,15 @@ import SwiftUI import KingfisherSwiftUI struct SearchResultsView: View { - let title: String let works: [WorkFragment] - init(title: String, works: [WorkFragment]) { - self.title = title + init(works: [WorkFragment]) { self.works = works } var body: some View { VStack(alignment: .leading) { HStack(alignment: .bottom) { - Text(title) + Text("検索結果") .font(.system(size: 18)) .fontWeight(.bold) } @@ -36,7 +34,7 @@ struct SearchResultsView: View { struct SearchResultsView_Previews: PreviewProvider { static var previews: some View { - SearchResultsView(title: "検索結果", works: Array(repeating: .dummy, count: 4)) + SearchResultsView(works: Array(repeating: .dummy, count: 4)) .preferredColorScheme(.dark) .previewLayout(.fixed(width: 370, height: 600)) } @@ -93,7 +91,7 @@ struct SearchResultView: View { var buttons = StatusState.allCases[0...4] .map { state in return ActionSheet.Button.default(Text(state.title)) { -// selectStateAction?(state) + // selectStateAction?(state) } } buttons.append(.cancel()) diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index 0bcd8271..5c1cc1c4 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -13,7 +13,7 @@ import KingfisherSwiftUI struct SearchView: View { @StateObject var viewModel: SearchViewModel = .init() - @State private var isEditing : Bool = false + @State private var isEditing: Bool = false var body: some View { NavigationView { @@ -25,44 +25,19 @@ struct SearchView: View { Keyboard.dismiss() } if viewModel.searchText.isEmpty { -// SearchRecommendedWorksView(season: viewModel.state.annictSeason, -// works: viewModel.state.recomendedWorks) -// .onTapChangeSeasonButton { season in -// viewModel.action.send(.fetch(season)) -// } SearchRecommendedWorksView(viewModel: .init()) } else { - SearchResultsView(title: "検索結果", - works: viewModel.state.searchResultWorks) + SearchResultsView(works: viewModel.state.searchResultWorks) } } .padding(.bottom, 40) } .navigationBarTitle("Search") -// .onAppear { -// viewModel.action.send(.fetch(.current)) -// } .gesture( DragGesture().onChanged { value in Keyboard.dismiss() } ) - .onReceive( - viewModel.$searchText - .debounce(for: 0.4, scheduler: DispatchQueue.main), - perform: { text in - viewModel.action.send(.search(text)) - } - ) - .onReceive( - viewModel.$searchText - .receive(on: DispatchQueue.main), - perform: { text in - if text.isEmpty { - viewModel.action.send(.clearSearchResults) - } - } - ) } } } diff --git a/Sources/Search/SearchViewModel.swift b/Sources/Search/SearchViewModel.swift index 4c0b7d53..fe528e36 100644 --- a/Sources/Search/SearchViewModel.swift +++ b/Sources/Search/SearchViewModel.swift @@ -11,23 +11,18 @@ import Fluxer final class SearchViewModel: ViewModel { enum Action { - case fetch(AnnictSeason) case search(String) case clearSearchResults } enum Mutation { - case setRecomendedWorks([WorkFragment]) case setSearchResultsWorks([WorkFragment]) - case setAnnictSeason(AnnictSeason) case setError(Error) } class State: ObservableObject { - @Published var recomendedWorks: [WorkFragment] = [] @Published var searchResultWorks: [WorkFragment] = [] @Published var error: Error? - @Published var annictSeason: AnnictSeason = .current } @Published var state = State() @@ -37,22 +32,19 @@ final class SearchViewModel: ViewModel { initilize() } - func mutate(action: Action) -> AnyPublisher { - switch action { - case .fetch(let season): - let fetchStream = fetch(season: season) - .map { $0.searchWorks?.edges?.compactMap { $0?.node?.fragments.workFragment } ?? [] } - .map { Mutation.setRecomendedWorks($0) } - .catch { Just(.setError($0)) } - .assertNoFailure() + func transform(action: AnyPublisher) -> AnyPublisher { + let searchTextStream = $searchText + .map { Action.search($0) } - let setSeasonStream = Just(Mutation.setAnnictSeason(season)) + return action + .merge(with: searchTextStream) + .eraseToAnyPublisher() + } - return fetchStream - .merge(with: setSeasonStream) - .eraseToAnyPublisher() + func mutate(action: Action) -> AnyPublisher { + switch action { case .search(let title): - guard !title.isEmpty else { return Empty().eraseToAnyPublisher() } + guard !title.isEmpty else { return Just(.setSearchResultsWorks([])).eraseToAnyPublisher() } let searchStream = search(title: title) .map { $0.searchWorks?.edges?.compactMap { $0?.node?.fragments.workFragment } ?? [] } .map { Mutation.setSearchResultsWorks($0) } @@ -69,22 +61,13 @@ final class SearchViewModel: ViewModel { func reduce(mutation: Mutation) { switch mutation { - case .setRecomendedWorks(let works): - state.recomendedWorks = works case .setSearchResultsWorks(let works): state.searchResultWorks = works - case .setAnnictSeason(let season): - state.annictSeason = season case .setError(let error): state.error = error } } - private func fetch(season: AnnictSeason) -> AnyPublisher { - let query = SearchWorksBySeasonQuery(first: 100, after: nil, seasons: [season.id]) - return Network.shared.apollo.fetch(query: query) - } - private func search(title: String) -> AnyPublisher { let query = SearchWorksByTitlesQuery(first: 100, after: nil, titles: [title]) return Network.shared.apollo.fetch(query: query) From 30598b321ae947af118b692588123721b7ffd714 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 14 Jan 2021 15:07:09 +0900 Subject: [PATCH 044/101] Impl --- Portannict.entitlements | 10 +++++++++ Portannict.xcodeproj/project.pbxproj | 6 +++++ .../Search/SearchRecommendedWorksView.swift | 22 +++++++++++++------ .../SearchRecommendedWorksViewModel.swift | 4 +++- 4 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 Portannict.entitlements diff --git a/Portannict.entitlements b/Portannict.entitlements new file mode 100644 index 00000000..ee95ab7e --- /dev/null +++ b/Portannict.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + + diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index abcffb1f..bacd1926 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -91,6 +91,7 @@ CF1E5E5C259CE88500035D50 /* Envfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Envfile; sourceTree = ""; }; CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorksByID.graphql; sourceTree = ""; }; CF1E5E88259CF69E00035D50 /* API.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; }; + CF2A8E8525B00418001D2AF1 /* Portannict.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Portannict.entitlements; sourceTree = ""; }; CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; @@ -151,6 +152,7 @@ CF08FBFA24B9AD1A00CD29DD = { isa = PBXGroup; children = ( + CF2A8E8525B00418001D2AF1 /* Portannict.entitlements */, CF08FC0524B9AD1A00CD29DD /* Sources */, CF08FC0424B9AD1A00CD29DD /* Products */, ); @@ -623,6 +625,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = Portannict.entitlements; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_ASSET_PATHS = "\"Sources/Preview Content\""; DEVELOPMENT_TEAM = V8AZ23YEL4; @@ -635,6 +638,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "com.YutoAkiba.Annict-for-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTS_MACCATALYST = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -645,6 +649,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = Portannict.entitlements; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_ASSET_PATHS = "\"Sources/Preview Content\""; DEVELOPMENT_TEAM = V8AZ23YEL4; @@ -657,6 +662,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "com.YutoAkiba.Annict-for-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTS_MACCATALYST = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/Sources/Search/SearchRecommendedWorksView.swift b/Sources/Search/SearchRecommendedWorksView.swift index 6a62eae7..4c2a66d4 100644 --- a/Sources/Search/SearchRecommendedWorksView.swift +++ b/Sources/Search/SearchRecommendedWorksView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import SwiftUIX struct SearchRecommendedWorksView: View { @StateObject var viewModel: SearchRecommendedWorksViewModel @@ -17,7 +18,7 @@ struct SearchRecommendedWorksView: View { var body: some View { VStack(alignment: .leading) { HStack(alignment: .bottom) { - Text(viewModel.state.annictSeason.title) + Text(viewModel.state.annictSeason?.title) .font(.system(size: 18)) .fontWeight(.bold) Spacer() @@ -36,17 +37,24 @@ struct SearchRecommendedWorksView: View { Text(season.title) } } - } - LazyVStack(alignment: .leading, spacing: 16) { - ForEach(viewModel.state.recomendedWorks.indices, id: \.self) { index in - let work = viewModel.state.recomendedWorks[index] - SearchResultView(work: work) + } else { + if viewModel.state.recomendedWorks.isEmpty { + ActivityIndicator() + .frame(height: 40) + .frame(maxWidth: .infinity) + } else { + LazyVStack(alignment: .leading, spacing: 16) { + ForEach(viewModel.state.recomendedWorks.indices, id: \.self) { index in + let work = viewModel.state.recomendedWorks[index] + SearchResultView(work: work) + } + } } } } .padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12)) .onAppear { - viewModel.action.send(.fetch(viewModel.state.annictSeason)) + viewModel.action.send(.fetch(.current)) } } diff --git a/Sources/Search/SearchRecommendedWorksViewModel.swift b/Sources/Search/SearchRecommendedWorksViewModel.swift index 68cf3ec0..fd107e7d 100644 --- a/Sources/Search/SearchRecommendedWorksViewModel.swift +++ b/Sources/Search/SearchRecommendedWorksViewModel.swift @@ -22,7 +22,7 @@ final class SearchRecommendedWorksViewModel: ViewModel { class State: ObservableObject { @Published var recomendedWorks: [WorkFragment] = [] - @Published var annictSeason: AnnictSeason = .current + @Published var annictSeason: AnnictSeason? @Published var error: Error? } @@ -35,6 +35,7 @@ final class SearchRecommendedWorksViewModel: ViewModel { func mutate(action: Action) -> AnyPublisher { switch action { case .fetch(let season): + guard state.annictSeason != season else { return Empty().eraseToAnyPublisher() } let fetchStream = fetch(season: season) .map { $0.searchWorks?.edges?.compactMap { $0?.node?.fragments.workFragment } ?? [] } .map { Mutation.setRecomendedWorks($0) } @@ -55,6 +56,7 @@ final class SearchRecommendedWorksViewModel: ViewModel { state.recomendedWorks = works case .setAnnictSeason(let season): state.annictSeason = season + state.recomendedWorks = [] case .setError(let error): state.error = error } From b5c35e841c05a92a3d456ec06664c487745ea5a2 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 14 Jan 2021 21:00:58 +0900 Subject: [PATCH 045/101] Update --- Sources/Common/API/Network.swift | 18 +++++ .../Common/Extension/Model+Extension.swift | 34 ++++++++++ Sources/Home/ActivityRecordView.swift | 10 ++- Sources/Home/HomeView.swift | 4 ++ Sources/Home/HomeViewModel.swift | 66 +++++++++++++++++++ Sources/Home/QuoteWorkView.swift | 1 - 6 files changed, 131 insertions(+), 2 deletions(-) diff --git a/Sources/Common/API/Network.swift b/Sources/Common/API/Network.swift index 39337ccb..4e60d96e 100644 --- a/Sources/Common/API/Network.swift +++ b/Sources/Common/API/Network.swift @@ -60,4 +60,22 @@ extension ApolloClient { } .eraseToAnyPublisher() } + + func perform(mutation: Mutation) -> AnyPublisher { + return Future { [weak self] promise in + self?.perform(mutation: mutation) { result in + switch result { + case .success(let data): + guard let data = data.data else { + promise(.failure(NetworkError.notFoundData)) + return + } + promise(.success(data)) + case .failure(let error): + promise(.failure(error)) + } + } + } + .eraseToAnyPublisher() + } } diff --git a/Sources/Common/Extension/Model+Extension.swift b/Sources/Common/Extension/Model+Extension.swift index af80a8c4..78ecffb2 100644 --- a/Sources/Common/Extension/Model+Extension.swift +++ b/Sources/Common/Extension/Model+Extension.swift @@ -37,6 +37,40 @@ extension GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node { return .none } + + var work: WorkFragment? { + get { + switch activityItem { + case .record(let record): + return record.work.fragments.workFragment + case .review(let review): + return review.work.fragments.workFragment + case .status(let status): + return status.work.fragments.workFragment + default: + return nil + } + } + set { + guard let value = newValue else { return } + switch activityItem { + case .record(let record): + var record = record + record.work.fragments.workFragment = value + asRecord = record + case .review(let review): + var review = review + review.work.fragments.workFragment = value + asReview = review + case .status(let status): + var status = status + status.work.fragments.workFragment = value + asStatus = status + default: + break + } + } + } } diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index f2fb7b61..9e007f45 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -12,6 +12,8 @@ import SkeletonUI struct ActivityRecordView: View { let record: RecordFragment + var selectStateAction: ((StatusState) -> Void)? + @State var isPresentedWorkView: Bool = false @State var isPresentedUserView: Bool = false @@ -50,11 +52,17 @@ struct ActivityRecordView: View { } QuoteWorkView(work: record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) .onSelectState { state in - print(state.title) + selectStateAction?(state) } } } } + + func onSelectState(_ action: @escaping (StatusState) -> Void) -> ActivityRecordView { + var result = self + result.selectStateAction = action + return result + } } struct ActivityRecordView_Previews: PreviewProvider { diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index abcaacca..457ed208 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -54,6 +54,10 @@ struct HomeView: View { switch activity.activityItem { case .record(let record): ActivityRecordView(record: record.fragments.recordFragment) + .onSelectState { state in + print(state.title) + viewModel.action.send(.updateWork(record.work.fragments.workFragment.id, state)) + } case .review(let review): ActivityReviewView(review: review.fragments.reviewFragment) case .status(let status): diff --git a/Sources/Home/HomeViewModel.swift b/Sources/Home/HomeViewModel.swift index 94d4544e..a5de4d13 100644 --- a/Sources/Home/HomeViewModel.swift +++ b/Sources/Home/HomeViewModel.swift @@ -8,6 +8,7 @@ import Foundation import Combine import Fluxer +import Apollo final class HomeViewModel: ViewModel { typealias Activity = GetFollowingActivitiesQuery.Data.Viewer.FollowingActivity.Edge.Node @@ -16,12 +17,15 @@ final class HomeViewModel: ViewModel { enum Action { case fetch case fetchMore + case updateWork(GraphQLID, StatusState) } enum Mutation { case setActivities([Activity]) case appendActivities([Activity]) + case insertActivities([Activity]) case setPageInfo(PageInfo?) + case updateWork(WorkFragment) case setError(Error) } @@ -68,6 +72,21 @@ final class HomeViewModel: ViewModel { .catch { Just(Mutation.setError($0)) } .assertNoFailure() .eraseToAnyPublisher() + case .updateWork(let id, let state): + let updateStream = updateStatus(id: id, state: state) + .map { Mutation.updateWork($0) } + +// let fetchStream = fetch() +// .map { $0.viewer?.followingActivities?.edges?.compactMap { $0?.node } ?? [] } +// .map { Mutation.insertActivities($0) } +// +// let totalStream = updateStream +// .append(fetchStream) + + return updateStream + .catch { Just(Mutation.setError($0)) } + .assertNoFailure() + .eraseToAnyPublisher() } } @@ -77,8 +96,18 @@ final class HomeViewModel: ViewModel { state.activities = activities case .appendActivities(let activities): state.activities.append(contentsOf: activities) + case .insertActivities(let newActivities): + print(newActivities) + var activities = state.activities + activities.insert(contentsOf: newActivities, at: 0) + activities.uniquified() + state.activities = activities case .setPageInfo(let pageInfo): state.pageInfo = pageInfo + case .updateWork(let work): + guard let index = state.activities.firstIndex(where: { $0.work?.id == work.id } ) else { return } + state.activities[index].work = work + print(work) case .setError(let error): state.error = error } @@ -95,4 +124,41 @@ final class HomeViewModel: ViewModel { let query = GetFollowingActivitiesQuery(first: 30, after: pageInfo.endCursor) return Network.shared.apollo.fetch(query: query) } + + private func updateStatus(id: GraphQLID, state: StatusState) -> AnyPublisher { + let mutation = UpdateStatusMutation(workId: id, state: state) + return Network.shared.apollo.perform(mutation: mutation) + .map { $0.updateStatus?.work?.fragments.workFragment } + .tryFilter { $0 != nil } + .map { $0! } + .eraseToAnyPublisher() + } +} + +extension Array where Element: Equatable { + func uniquify() -> [Element] { + return reduce([]) { $0.contains($1) ? $0 : $0 + [$1] } + } + + mutating func uniquified() { + self = self.uniquify() + } +} + +extension GraphQLSelectionSet { + public static func == (lhs: Self, rhs: Self) -> Bool { + return (lhs.resultMap as NSDictionary).isEqual(to: (rhs.resultMap as [AnyHashable : Any])) + } +} + +extension Array where Element: GraphQLSelectionSet { + func uniquify() -> [Element] { + return reduce([]) { n1, n2 in + n1.contains(where: { $0 == n2 }) ? n1 : n1 + [n2] + } + } + + mutating func uniquified() { + self = self.uniquify() + } } diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 3ba1a96e..fe92ce35 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -17,7 +17,6 @@ struct QuoteWorkView: View { @State private var showingActionSheet = false @Namespace private var namespace -// var onSelectState: ((StatusState) -> QuoteWorkView)? var selectStateAction: ((StatusState) -> Void)? init(work: WorkFragment, episode: EpisodeFragment? = nil) { From 31af8c21e36929e3d3351b0f9cefec504138a76d Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Thu, 14 Jan 2021 22:46:04 +0900 Subject: [PATCH 046/101] impl to update status --- Sources/Home/ActivityRecordView.swift | 7 ++++--- Sources/Home/ActivityReviewView.swift | 6 +++--- Sources/Home/ActivityStatusView.swift | 13 +++++++------ Sources/Home/HomeView.swift | 24 ++++++++++-------------- Sources/Home/QuoteWorkView.swift | 11 ++++++----- 5 files changed, 30 insertions(+), 31 deletions(-) diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index 9e007f45..b5e2211f 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -10,7 +10,7 @@ import KingfisherSwiftUI import SkeletonUI struct ActivityRecordView: View { - let record: RecordFragment + @Binding var record: RecordFragment var selectStateAction: ((StatusState) -> Void)? @@ -50,7 +50,7 @@ struct ActivityRecordView: View { Text(comemnt) .font(.body) } - QuoteWorkView(work: record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) + QuoteWorkView(work: $record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) .onSelectState { state in selectStateAction?(state) } @@ -70,7 +70,8 @@ struct ActivityRecordView_Previews: PreviewProvider { let recordWork = RecordFragment.Work(unsafeResultMap: WorkFragment.dummy.resultMap) let recordEpisode = RecordFragment.Episode(id: "", annictId: 124160, numberText: "Case_1_1", title: "Los Angeles Connection") let user = RecordFragment.User(id: "user", name: "touyu", username: "touyu", description: "") - return ActivityRecordView(record: RecordFragment(id: "", annictId: 0, comment: "いい話だった", ratingState: .good, createdAt: "2021-01-06T17:20:54Z", user: user, work: recordWork, episode: recordEpisode)) + let record = RecordFragment(id: "", annictId: 0, comment: "いい話だった", ratingState: .good, createdAt: "2021-01-06T17:20:54Z", user: user, work: recordWork, episode: recordEpisode) + return ActivityRecordView(record: .constant(record)) .preferredColorScheme(.dark) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: 200)) } diff --git a/Sources/Home/ActivityReviewView.swift b/Sources/Home/ActivityReviewView.swift index 7c20df53..90f352fd 100644 --- a/Sources/Home/ActivityReviewView.swift +++ b/Sources/Home/ActivityReviewView.swift @@ -9,7 +9,7 @@ import SwiftUI import KingfisherSwiftUI struct ActivityReviewView: View { - let review: ReviewFragment + @Binding var review: ReviewFragment var body: some View { HStack(alignment: .top, spacing: 12) { @@ -35,7 +35,7 @@ struct ActivityReviewView: View { } Text(review.body) .font(.body) - QuoteWorkView(work: review.work.fragments.workFragment) + QuoteWorkView(work: $review.work.fragments.workFragment) } } } @@ -50,7 +50,7 @@ struct ActivityReviewView_Previews: PreviewProvider { ratingAnimationState: RatingState.good, user: .init(unsafeResultMap: UserFragment.dummy.resultMap), work: .init(unsafeResultMap: WorkFragment.dummy.resultMap)) - ActivityReviewView(review: review) + ActivityReviewView(review: .constant(review)) .previewLayout(.fixed(width: 375, height: 200)) } } diff --git a/Sources/Home/ActivityStatusView.swift b/Sources/Home/ActivityStatusView.swift index 9d5fe15a..09c5f764 100644 --- a/Sources/Home/ActivityStatusView.swift +++ b/Sources/Home/ActivityStatusView.swift @@ -9,7 +9,7 @@ import SwiftUI import KingfisherSwiftUI struct ActivityStatusView: View { - let status: StatusFragment + @Binding var status: StatusFragment var body: some View { HStack(alignment: .top, spacing: 12) { @@ -32,7 +32,7 @@ struct ActivityStatusView: View { } Text("ステータスを「\(status.state.title)」に変更しました") .font(.body) - QuoteWorkView(work: status.work.fragments.workFragment) + QuoteWorkView(work: $status.work.fragments.workFragment) } } } @@ -40,10 +40,11 @@ struct ActivityStatusView: View { struct ActivityStatusView_Previews: PreviewProvider { static var previews: some View { - return ActivityStatusView(status: .init(id: "", annictId: 0, createdAt: "2021-01-06T17:20:54Z", - state: .wannaWatch, - user: .init(unsafeResultMap: UserFragment.dummy.resultMap), - work: .init(unsafeResultMap: WorkFragment.dummy.resultMap))) + let status = StatusFragment(id: "", annictId: 0, createdAt: "2021-01-06T17:20:54Z", + state: .wannaWatch, + user: .init(unsafeResultMap: UserFragment.dummy.resultMap), + work: .init(unsafeResultMap: WorkFragment.dummy.resultMap)) + return ActivityStatusView(status: .constant(status)) .previewLayout(.fixed(width: 375, height: 200)) } } diff --git a/Sources/Home/HomeView.swift b/Sources/Home/HomeView.swift index 457ed208..c49de930 100644 --- a/Sources/Home/HomeView.swift +++ b/Sources/Home/HomeView.swift @@ -29,8 +29,7 @@ struct HomeView: View { LazyVStack(spacing: 20) { ForEach(viewModel.state.activities.indices, id: \.self) { index in - let activity = viewModel.state.activities[index] - activityItemView(activity: activity) + activityItemView(index: index) } ActivityIndicator() .animated(true) @@ -49,22 +48,19 @@ struct HomeView: View { } } - func activityItemView(activity: Activity) -> some View { + func activityItemView(index: Int) -> some View { Group { - switch activity.activityItem { - case .record(let record): - ActivityRecordView(record: record.fragments.recordFragment) + let activity = $viewModel.state.activities[index] + if let record = activity.wrappedValue.asRecord { + ActivityRecordView(record: activity.map(\.asRecord!.fragments.recordFragment)) .onSelectState { state in - print(state.title) viewModel.action.send(.updateWork(record.work.fragments.workFragment.id, state)) } - case .review(let review): - ActivityReviewView(review: review.fragments.reviewFragment) - case .status(let status): - ActivityStatusView(status: status.fragments.statusFragment) - case .multipleRecord: - EmptyView() - case .none: + } else if let _ = activity.wrappedValue.asReview { + ActivityReviewView(review: activity.map(\.asReview!.fragments.reviewFragment)) + } else if let _ = activity.wrappedValue.asStatus { + ActivityStatusView(status: activity.map(\.asStatus!.fragments.statusFragment)) + } else { EmptyView() } } diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index fe92ce35..8b3899d1 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -9,7 +9,7 @@ import SwiftUI import KingfisherSwiftUI struct QuoteWorkView: View { - let work: WorkFragment + @Binding var work: WorkFragment let episode: EpisodeFragment? @State private var isExpanded: Bool = false @@ -19,8 +19,8 @@ struct QuoteWorkView: View { var selectStateAction: ((StatusState) -> Void)? - init(work: WorkFragment, episode: EpisodeFragment? = nil) { - self.work = work + init(work: Binding, episode: EpisodeFragment? = nil) { + self._work = work self.episode = episode } @@ -68,6 +68,7 @@ struct QuoteWorkView: View { .map { state in return ActionSheet.Button.default(Text(state.title)) { selectStateAction?(state) + work.viewerStatusState = state } } buttons.append(.cancel()) @@ -144,9 +145,9 @@ struct QuoteWorkView_Previews: PreviewProvider { @Namespace private static var namespace static var previews: some View { - QuoteWorkView(work: WorkFragment.dummy) + QuoteWorkView(work: .constant(WorkFragment.dummy)) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) - QuoteWorkView(work: WorkFragment.dummy, episode: EpisodeFragment(id: "", annictId: 0, numberText: "第1話", title: "冒険の始まり")) + QuoteWorkView(work: .constant(WorkFragment.dummy), episode: EpisodeFragment(id: "", annictId: 0, numberText: "第1話", title: "冒険の始まり")) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) } } From a2ca76be4a527a314b441dd2884c405d49cf4021 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Fri, 15 Jan 2021 00:36:16 +0900 Subject: [PATCH 047/101] Impl skelton view for porfile --- Sources/Home/HomeViewModel.swift | 1 - Sources/Profile/LibraryWorksView.swift | 17 +++++++++++++---- Sources/User/UserHeaderView.swift | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Sources/Home/HomeViewModel.swift b/Sources/Home/HomeViewModel.swift index a5de4d13..288cbc87 100644 --- a/Sources/Home/HomeViewModel.swift +++ b/Sources/Home/HomeViewModel.swift @@ -107,7 +107,6 @@ final class HomeViewModel: ViewModel { case .updateWork(let work): guard let index = state.activities.firstIndex(where: { $0.work?.id == work.id } ) else { return } state.activities[index].work = work - print(work) case .setError(let error): state.error = error } diff --git a/Sources/Profile/LibraryWorksView.swift b/Sources/Profile/LibraryWorksView.swift index 16ac2dd5..89308aa9 100644 --- a/Sources/Profile/LibraryWorksView.swift +++ b/Sources/Profile/LibraryWorksView.swift @@ -33,9 +33,18 @@ struct LibraryWorksView: View { } ScrollView(.horizontal, showsIndicators: false) { HStack(alignment: .top, spacing: 12) { - ForEach(works.indices, id: \.self) { index in - LibraryWorkView(work: works[index]) - .frame(width: 140, height: 140 * 5/3) + if works.isEmpty { + ForEach(0..<3) { index in + Rectangle() + .skeleton(with: true) + .shape(type: .rounded(.radius(8, style: .circular))) + .frame(width: 140, height: 140 * 5/3) + } + } else { + ForEach(works.indices, id: \.self) { index in + LibraryWorkView(work: works[index]) + .frame(width: 140, height: 140 * 5/3) + } } } .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) @@ -61,7 +70,7 @@ struct LibraryWorksView: View { struct LibraryWorksView_Previews: PreviewProvider { static var previews: some View { LibraryWorksView(status: .watching, count: 100) - .previewLayout(.fixed(width: 375, height: 400)) + .previewLayout(.fixed(width: 375, height: 300)) } } diff --git a/Sources/User/UserHeaderView.swift b/Sources/User/UserHeaderView.swift index 1003f0f0..b0435291 100644 --- a/Sources/User/UserHeaderView.swift +++ b/Sources/User/UserHeaderView.swift @@ -12,7 +12,7 @@ struct UserHeaderView: View { let user: UserRepresentable var body: some View { - VStack { + VStack(alignment: .leading) { HStack(spacing: 16) { KFImage(user.avatarUrl) .resizable() From 42d79935b1f5678cd98c6616bc6956a4a28d060c Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 17 Jan 2021 02:35:41 +0900 Subject: [PATCH 048/101] Fix work image --- Sources/Home/QuoteWorkView.swift | 27 +++++++++++++++++++++------ Sources/Work/WorkHeaderView.swift | 12 +++++++----- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 8b3899d1..1f99ffe2 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -155,25 +155,40 @@ struct QuoteWorkView_Previews: PreviewProvider { struct WorkImage: View { let workID: Int + private var placeholderFont: Font? + + init(workID: Int) { + self.workID = workID + } + var body: some View { KFImage(workID) .resizable() .placeholder { - let placeholder = Text("No Image") + Text("No Image") .foregroundColor(.systemGray) - .font(.system(size: 16)) + .font(placeholderFont ?? .system(size: 16)) .fontWeight(.bold) - Color(.lightGray) - .overlay(placeholder) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center) + .background(Color(.lightGray)) } } + + func plceholderFont(_ font: Font) -> WorkImage { + var result = self + result.placeholderFont = font + return result + } } struct WorkImage_Previews: PreviewProvider { static var previews: some View { WorkImage(workID: WorkFragment.dummy.annictId) - .previewLayout(.fixed(width: 100, height: 100)) + .previewLayout(.fixed(width: 200, height: 200)) + WorkImage(workID: 0) + .previewLayout(.fixed(width: 200, height: 200)) WorkImage(workID: 0) - .previewLayout(.fixed(width: 100, height: 100)) + .plceholderFont(.system(size: 32)) + .previewLayout(.fixed(width: 200, height: 200)) } } diff --git a/Sources/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift index aea78b95..6c531197 100644 --- a/Sources/Work/WorkHeaderView.swift +++ b/Sources/Work/WorkHeaderView.swift @@ -26,8 +26,11 @@ struct WorkHeaderView: View { var body: some View { GeometryReader { geometry in ZStack(alignment: .bottomLeading) { - KFImage("\(Constants.baseImageURL)/images/\(work.annictId)") - .resizable() +// KFImage("\(Constants.baseImageURL)/images/\(work.annictId)") +// .resizable() + + WorkImage(workID: work.annictId) + .plceholderFont(.system(size: 64)) .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: .top) .background(Color.gray) @@ -49,9 +52,8 @@ struct WorkHeaderView: View { struct WorkHeaderView_Previews: PreviewProvider { static var previews: some View { - Group { - WorkHeaderView(work: .dummy) - } + WorkHeaderView(work: .dummy) + WorkHeaderView(work: .dummy2) } } From 44459a7ef8eb06b293dbadc3df750044dcdc396a Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 17 Jan 2021 17:25:59 +0900 Subject: [PATCH 049/101] Impl --- Portannict.xcodeproj/project.pbxproj | 4 + Sources/Profile/LibraryWorkView.swift | 25 ++--- .../Search/SearchRecommendedWorksView.swift | 2 +- Sources/Search/SearchResultView.swift | 98 +++++++++++++++++++ Sources/Search/SearchResultsView.swift | 83 +--------------- Sources/Search/SearchView.swift | 2 +- 6 files changed, 116 insertions(+), 98 deletions(-) create mode 100644 Sources/Search/SearchResultView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index bacd1926..b1db1473 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -20,6 +20,7 @@ CF1E5E87259CF4CE00035D50 /* SearchWorksByID.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF1E5E86259CF4CE00035D50 /* SearchWorksByID.graphql */; }; CF1E5E89259CF69E00035D50 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1E5E88259CF69E00035D50 /* API.swift */; }; CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */; }; + CF3B2FCF25B411600017A7C0 /* SearchResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FCE25B411600017A7C0 /* SearchResultView.swift */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */; }; @@ -93,6 +94,7 @@ CF1E5E88259CF69E00035D50 /* API.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; }; CF2A8E8525B00418001D2AF1 /* Portannict.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Portannict.entitlements; sourceTree = ""; }; CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; + CF3B2FCE25B411600017A7C0 /* SearchResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultView.swift; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictSeason.swift; sourceTree = ""; }; @@ -314,6 +316,7 @@ CFE7E5D925A70826009EB3DC /* SearchView.swift */, CF13E35125AAF78A005D11F8 /* SearchViewModel.swift */, CFBCA06825AB70C600C5386C /* SearchResultsView.swift */, + CF3B2FCE25B411600017A7C0 /* SearchResultView.swift */, CFBCA06625AB709D00C5386C /* SearchRecommendedWorksView.swift */, CFBCA06A25AB719B00C5386C /* SearchRecommendedWorksViewModel.swift */, ); @@ -464,6 +467,7 @@ CFBCA06B25AB719B00C5386C /* SearchRecommendedWorksViewModel.swift in Sources */, CF13E35225AAF78A005D11F8 /* SearchViewModel.swift in Sources */, CFBCA06925AB70C600C5386C /* SearchResultsView.swift in Sources */, + CF3B2FCF25B411600017A7C0 /* SearchResultView.swift in Sources */, CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */, CFE38320258E64F600CEE318 /* Env.swift in Sources */, diff --git a/Sources/Profile/LibraryWorkView.swift b/Sources/Profile/LibraryWorkView.swift index 46ab0913..d8e6d30a 100644 --- a/Sources/Profile/LibraryWorkView.swift +++ b/Sources/Profile/LibraryWorkView.swift @@ -20,28 +20,21 @@ struct LibraryWorkView: View { Button(action: { isPresent = true }, label: { - VStack(alignment: .leading, spacing: 0) { - KFImage(work.annictId) - .resizable() - .placeholder { - Text("No Image") - .foregroundColor(.systemGray) - .font(.system(size: 16)) - .fontWeight(.bold) - } + ZStack(alignment: .bottom) { + WorkImage(workID: work.annictId) .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width) - .background(Color(.systemGray6)) Text(work.title) .lineLimit(2) .font(.system(size: 12)) .foregroundColor(.primary) + .frame(maxWidth: .infinity, alignment: .leading) .padding(8) + .background(Color(.secondarySystemBackground)) } + .cornerRadius(4) }) - .background(Color(.quaternarySystemFill)) - .frame(height: geometry.size.width * 5/3) - .cornerRadius(4) +// .frame(height: geometry.size.width * 5/3) .sheet(isPresented: $isPresent) { WorkView(workID: work.annictId) } @@ -53,15 +46,15 @@ struct LibraryWorkView_Previews: PreviewProvider { static var previews: some View { LibraryWorkView(work: .dummy) .preferredColorScheme(.dark) - .frame(width: 140) + .frame(width: 140, height: 140 * 5/3) .previewLayout(.fixed(width: 200, height: 300)) LibraryWorkView(work: .dummy3) .preferredColorScheme(.dark) - .frame(width: 140) + .frame(width: 140, height: 140 * 5/3) .previewLayout(.fixed(width: 200, height: 300)) LibraryWorkView(work: .dummy2) .preferredColorScheme(.dark) - .frame(width: 140) + .frame(width: 140, height: 140 * 5/3) .previewLayout(.fixed(width: 200, height: 300)) } } diff --git a/Sources/Search/SearchRecommendedWorksView.swift b/Sources/Search/SearchRecommendedWorksView.swift index 4c2a66d4..4221bc27 100644 --- a/Sources/Search/SearchRecommendedWorksView.swift +++ b/Sources/Search/SearchRecommendedWorksView.swift @@ -45,7 +45,7 @@ struct SearchRecommendedWorksView: View { } else { LazyVStack(alignment: .leading, spacing: 16) { ForEach(viewModel.state.recomendedWorks.indices, id: \.self) { index in - let work = viewModel.state.recomendedWorks[index] + let work = $viewModel.state.recomendedWorks[index] SearchResultView(work: work) } } diff --git a/Sources/Search/SearchResultView.swift b/Sources/Search/SearchResultView.swift new file mode 100644 index 00000000..edb7cc8a --- /dev/null +++ b/Sources/Search/SearchResultView.swift @@ -0,0 +1,98 @@ +// +// SearchResultView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/17. +// + +import SwiftUI +import KingfisherSwiftUI +import Apollo + +struct SearchResultView: View { + @Binding var work: WorkFragment + + @State private var showingActionSheet = false + + var body: some View { + HStack(alignment: .top, spacing: 16) { + KFImage(work.annictId) + .resizable() + .placeholder { + let placeholder = Text("No Image") + .foregroundColor(.systemGray) + .font(.system(size: 16)) + .fontWeight(.bold) + Color(.lightGray) + .overlay(placeholder) + } + .aspectRatio(3/4, contentMode: .fit) + .frame(width: 60) + .cornerRadius(8) + + VStack(alignment: .leading, spacing: 8) { + Text(work.title) + .fontWeight(.semibold) + + Text(work.media.localizedText) + .font(.system(size: 12)) + .padding(EdgeInsets(top: 2, leading: 8, bottom: 2, trailing: 8)) + .background(Color(.tertiarySystemBackground)) + .cornerRadius(4) + + Button(action: { + showingActionSheet = true + }, label: { + HStack(alignment: .center, spacing: 8) { + Text(viewerStatusStateTitle(state: work.viewerStatusState)) + .font(.system(size: 13)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + Image(systemName: .arrowtriangleDownFill) + .font(.system(size: 8)) + .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) + } + }) + .frame(height: 32) + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) + .cornerRadius(16) + .actionSheet(isPresented: $showingActionSheet) { + var buttons = StatusState.allCases[0...4] + .map { state in + return ActionSheet.Button.default(Text(state.title)) { + work.viewerStatusState = state + updateStatus(id: work.id, state: state) + } + } + buttons.append(.cancel()) + return ActionSheet(title: Text("ステータスを変更"), buttons: buttons) + } + } + } + .frame(maxWidth: .infinity, alignment: .leading) + .padding(EdgeInsets(top: 8, leading: 8, bottom: 8, trailing: 8)) + .background(Color(.secondarySystemBackground)) + .cornerRadius(8) + } + + private func viewerStatusStateTitle(state: StatusState?) -> String { + if let title = state?.title, !title.isEmpty { + return title + } + return "ステータスを変更" + } + + func updateStatus(id: GraphQLID, state: StatusState) { + let mutation = UpdateStatusMutation(workId: id, state: state) + Network.shared.apollo.perform(mutation: mutation) { result in + switch result { + case .success(let data): + guard let work = data.data?.updateStatus?.work?.fragments.workFragment else { return } + self.work = work + case .failure(let error): + print(error) + } + } + } +} + diff --git a/Sources/Search/SearchResultsView.swift b/Sources/Search/SearchResultsView.swift index 7fd27c44..9ffeb66c 100644 --- a/Sources/Search/SearchResultsView.swift +++ b/Sources/Search/SearchResultsView.swift @@ -9,11 +9,8 @@ import SwiftUI import KingfisherSwiftUI struct SearchResultsView: View { - let works: [WorkFragment] + @Binding var works: [WorkFragment] - init(works: [WorkFragment]) { - self.works = works - } var body: some View { VStack(alignment: .leading) { HStack(alignment: .bottom) { @@ -23,8 +20,7 @@ struct SearchResultsView: View { } LazyVStack(alignment: .leading, spacing: 16) { ForEach(works.indices, id: \.self) { index in - let work = works[index] - SearchResultView(work: work) + SearchResultView(work: $works[index]) } } } @@ -34,81 +30,8 @@ struct SearchResultsView: View { struct SearchResultsView_Previews: PreviewProvider { static var previews: some View { - SearchResultsView(works: Array(repeating: .dummy, count: 4)) + SearchResultsView(works: .constant(Array(repeating: .dummy, count: 4))) .preferredColorScheme(.dark) .previewLayout(.fixed(width: 370, height: 600)) } } - -struct SearchResultView: View { - let work: WorkFragment - - @State private var showingActionSheet = false - - var body: some View { - HStack(alignment: .top, spacing: 16) { - KFImage(work.annictId) - .resizable() - .placeholder { - let placeholder = Text("No Image") - .foregroundColor(.systemGray) - .font(.system(size: 16)) - .fontWeight(.bold) - Color(.lightGray) - .overlay(placeholder) - } - .aspectRatio(3/4, contentMode: .fit) - .frame(width: 60) - .cornerRadius(8) - - VStack(alignment: .leading, spacing: 8) { - Text(work.title) - .fontWeight(.semibold) - - Text(work.media.localizedText) - .font(.system(size: 12)) - .padding(EdgeInsets(top: 2, leading: 8, bottom: 2, trailing: 8)) - .background(Color(.tertiarySystemBackground)) - .cornerRadius(4) - - Button(action: { - showingActionSheet = true - }, label: { - HStack(alignment: .center, spacing: 8) { - Text(viewerStatusStateTitle(state: work.viewerStatusState)) - .font(.system(size: 13)) - .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) - Image(systemName: .arrowtriangleDownFill) - .font(.system(size: 8)) - .foregroundColor(work.viewerStatusState != .noState ? .white : .primary) - } - }) - .frame(height: 32) - .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) - .background(work.viewerStatusState != .noState ? .blue : Color(.tertiarySystemBackground)) - .cornerRadius(16) - .actionSheet(isPresented: $showingActionSheet) { - var buttons = StatusState.allCases[0...4] - .map { state in - return ActionSheet.Button.default(Text(state.title)) { - // selectStateAction?(state) - } - } - buttons.append(.cancel()) - return ActionSheet(title: Text("ステータスを変更"), buttons: buttons) - } - } - } - .frame(maxWidth: .infinity, alignment: .leading) - .padding(EdgeInsets(top: 8, leading: 8, bottom: 8, trailing: 8)) - .background(Color(.secondarySystemBackground)) - .cornerRadius(8) - } - - private func viewerStatusStateTitle(state: StatusState?) -> String { - if let title = state?.title, !title.isEmpty { - return title - } - return "ステータスを変更" - } -} diff --git a/Sources/Search/SearchView.swift b/Sources/Search/SearchView.swift index 5c1cc1c4..c38fa9be 100644 --- a/Sources/Search/SearchView.swift +++ b/Sources/Search/SearchView.swift @@ -27,7 +27,7 @@ struct SearchView: View { if viewModel.searchText.isEmpty { SearchRecommendedWorksView(viewModel: .init()) } else { - SearchResultsView(works: viewModel.state.searchResultWorks) + SearchResultsView(works: $viewModel.state.searchResultWorks) } } .padding(.bottom, 40) From 023399d1e9013cec2d933eba51f3c5ec15c29412 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 17 Jan 2021 19:13:36 +0900 Subject: [PATCH 050/101] IMpl --- Portannict.xcodeproj/project.pbxproj | 4 + Sources/API.swift | 686 +++++++++++++++--- Sources/Common/API/Query/Fragments.graphql | 8 + .../API/Query/SearchWorkEpisodes.graphql | 18 + Sources/Home/QuoteWorkView.swift | 2 +- Sources/Search/SearchResultView.swift | 20 +- Sources/Work/WorkView.swift | 106 ++- Sources/operationIDs.json | 4 + 8 files changed, 734 insertions(+), 114 deletions(-) create mode 100644 Sources/Common/API/Query/SearchWorkEpisodes.graphql diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index b1db1473..5db13b4b 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -21,6 +21,7 @@ CF1E5E89259CF69E00035D50 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1E5E88259CF69E00035D50 /* API.swift */; }; CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */; }; CF3B2FCF25B411600017A7C0 /* SearchResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FCE25B411600017A7C0 /* SearchResultView.swift */; }; + CF3B2FD125B42D1E0017A7C0 /* SearchWorkEpisodes.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF3B2FD025B42D1E0017A7C0 /* SearchWorkEpisodes.graphql */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */; }; @@ -95,6 +96,7 @@ CF2A8E8525B00418001D2AF1 /* Portannict.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Portannict.entitlements; sourceTree = ""; }; CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; CF3B2FCE25B411600017A7C0 /* SearchResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultView.swift; sourceTree = ""; }; + CF3B2FD025B42D1E0017A7C0 /* SearchWorkEpisodes.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorkEpisodes.graphql; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictSeason.swift; sourceTree = ""; }; @@ -211,6 +213,7 @@ CFB9BA77259DCD0D00C51708 /* Fragments.graphql */, CFBCA06225AB49FB00C5386C /* SearchWorksByTitle.graphql */, CFBCA06425AB6B0E00C5386C /* UpdateStatus.graphql */, + CF3B2FD025B42D1E0017A7C0 /* SearchWorkEpisodes.graphql */, ); path = Query; sourceTree = ""; @@ -423,6 +426,7 @@ files = ( CFBCA06325AB49FB00C5386C /* SearchWorksByTitle.graphql in Resources */, CFD82D3C25A64157005401AF /* GetViewer.graphql in Resources */, + CF3B2FD125B42D1E0017A7C0 /* SearchWorkEpisodes.graphql in Resources */, CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */, CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */, CFBCA06525AB6B0E00C5386C /* UpdateStatus.graphql in Resources */, diff --git a/Sources/API.swift b/Sources/API.swift index 9a97daf1..4bb01e19 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -2595,6 +2595,530 @@ public final class GetViewerWorksQuery: GraphQLQuery { } } +public final class SearchWorkEpisodesQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query SearchWorkEpisodes($workAnnictId: Int!, $first: Int, $after: String) { + searchWorks(annictIds: [$workAnnictId]) { + __typename + nodes { + __typename + ...WorkFragment + episodes(first: $first, after: $after, orderBy: {direction: ASC, field: SORT_NUMBER}) { + __typename + edges { + __typename + node { + __typename + ...EpisodeFragment + } + } + pageInfo { + __typename + endCursor + hasNextPage + } + } + } + } + } + """ + + public let operationName: String = "SearchWorkEpisodes" + + public let operationIdentifier: String? = "cfca8215e8436403c0bee3022caf49dc6f401da7b34e4f43572fca5c7a0a9140" + + public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition).appending(EpisodeFragment.fragmentDefinition) } + + public var workAnnictId: Int + public var first: Int? + public var after: String? + + public init(workAnnictId: Int, first: Int? = nil, after: String? = nil) { + self.workAnnictId = workAnnictId + self.first = first + self.after = after + } + + public var variables: GraphQLMap? { + return ["workAnnictId": workAnnictId, "first": first, "after": after] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("searchWorks", arguments: ["annictIds": [GraphQLVariable("workAnnictId")]], type: .object(SearchWork.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(searchWorks: SearchWork? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) + } + + public var searchWorks: SearchWork? { + get { + return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") + } + } + + public struct SearchWork: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("nodes", type: .list(.object(Node.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(nodes: [Node?]? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of nodes. + public var nodes: [Node?]? { + get { + return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), + GraphQLField("episodes", arguments: ["first": GraphQLVariable("first"), "after": GraphQLVariable("after"), "orderBy": ["direction": "ASC", "field": "SORT_NUMBER"]], type: .object(Episode.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media, episodes: Episode? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media, "episodes": episodes.flatMap { (value: Episode) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + + public var episodes: Episode? { + get { + return (resultMap["episodes"] as? ResultMap).flatMap { Episode(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "episodes") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + + public struct Episode: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["EpisodeConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("edges", type: .list(.object(Edge.selections))), + GraphQLField("pageInfo", type: .nonNull(.object(PageInfo.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(edges: [Edge?]? = nil, pageInfo: PageInfo) { + self.init(unsafeResultMap: ["__typename": "EpisodeConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, "pageInfo": pageInfo.resultMap]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of edges. + public var edges: [Edge?]? { + get { + return (resultMap["edges"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Edge?] in value.map { (value: ResultMap?) -> Edge? in value.flatMap { (value: ResultMap) -> Edge in Edge(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, forKey: "edges") + } + } + + /// Information to aid in pagination. + public var pageInfo: PageInfo { + get { + return PageInfo(unsafeResultMap: resultMap["pageInfo"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "pageInfo") + } + } + + public struct Edge: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["EpisodeEdge"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("node", type: .object(Node.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(node: Node? = nil) { + self.init(unsafeResultMap: ["__typename": "EpisodeEdge", "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// The item at the end of the edge. + public var node: Node? { + get { + return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "node") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("title", type: .scalar(String.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var episodeFragment: EpisodeFragment { + get { + return EpisodeFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + + public struct PageInfo: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["PageInfo"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("endCursor", type: .scalar(String.self)), + GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(endCursor: String? = nil, hasNextPage: Bool) { + self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// When paginating forwards, the cursor to continue. + public var endCursor: String? { + get { + return resultMap["endCursor"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "endCursor") + } + } + + /// When paginating forwards, are there more items? + public var hasNextPage: Bool { + get { + return resultMap["hasNextPage"]! as! Bool + } + set { + resultMap.updateValue(newValue, forKey: "hasNextPage") + } + } + } + } + } + } + } +} + public final class SearchWorksByIdQuery: GraphQLQuery { /// The raw GraphQL definition of this operation. public let operationDefinition: String = @@ -4007,6 +4531,87 @@ public struct WorkFragment: GraphQLFragment { } } +public struct EpisodeFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment EpisodeFragment on Episode { + __typename + id + annictId + numberText + title + } + """ + + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("title", type: .scalar(String.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } +} + public struct RecordFragment: GraphQLFragment { /// The raw GraphQL definition of this fragment. public static let fragmentDefinition: String = @@ -4962,87 +5567,6 @@ public struct UserFragment: GraphQLFragment { } } -public struct EpisodeFragment: GraphQLFragment { - /// The raw GraphQL definition of this fragment. - public static let fragmentDefinition: String = - """ - fragment EpisodeFragment on Episode { - __typename - id - annictId - numberText - title - } - """ - - public static let possibleTypes: [String] = ["Episode"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), - GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("numberText", type: .scalar(String.self)), - GraphQLField("title", type: .scalar(String.self)), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var id: GraphQLID { - get { - return resultMap["id"]! as! GraphQLID - } - set { - resultMap.updateValue(newValue, forKey: "id") - } - } - - public var annictId: Int { - get { - return resultMap["annictId"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "annictId") - } - } - - public var numberText: String? { - get { - return resultMap["numberText"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "numberText") - } - } - - public var title: String? { - get { - return resultMap["title"] as? String - } - set { - resultMap.updateValue(newValue, forKey: "title") - } - } -} - public struct ReviewFragment: GraphQLFragment { /// The raw GraphQL definition of this fragment. public static let fragmentDefinition: String = diff --git a/Sources/Common/API/Query/Fragments.graphql b/Sources/Common/API/Query/Fragments.graphql index 6f3582b0..039ebc23 100644 --- a/Sources/Common/API/Query/Fragments.graphql +++ b/Sources/Common/API/Query/Fragments.graphql @@ -11,6 +11,14 @@ fragment WorkFragment on Work { media } +fragment EpisodeFragment on Episode { + id + annictId + title + numberText + viewerRecordsCount +} + fragment RecordFragment on Record { id annictId diff --git a/Sources/Common/API/Query/SearchWorkEpisodes.graphql b/Sources/Common/API/Query/SearchWorkEpisodes.graphql new file mode 100644 index 00000000..71deecc5 --- /dev/null +++ b/Sources/Common/API/Query/SearchWorkEpisodes.graphql @@ -0,0 +1,18 @@ +query SearchWorkEpisodes($workAnnictId: Int!, $first: Int, $after: String) { + searchWorks(annictIds: [$workAnnictId]) { + nodes { + ...WorkFragment + episodes(first: $first, after: $after, orderBy:{direction: ASC, field:SORT_NUMBER}) { + edges { + node { + ...EpisodeFragment + } + } + pageInfo { + endCursor + hasNextPage + } + } + } + } +} diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 1f99ffe2..0049f7a4 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -170,7 +170,7 @@ struct WorkImage: View { .font(placeholderFont ?? .system(size: 16)) .fontWeight(.bold) .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center) - .background(Color(.lightGray)) + .background(Color(hex: 0xE2E2E2)) } } diff --git a/Sources/Search/SearchResultView.swift b/Sources/Search/SearchResultView.swift index edb7cc8a..9e211054 100644 --- a/Sources/Search/SearchResultView.swift +++ b/Sources/Search/SearchResultView.swift @@ -16,16 +16,7 @@ struct SearchResultView: View { var body: some View { HStack(alignment: .top, spacing: 16) { - KFImage(work.annictId) - .resizable() - .placeholder { - let placeholder = Text("No Image") - .foregroundColor(.systemGray) - .font(.system(size: 16)) - .fontWeight(.bold) - Color(.lightGray) - .overlay(placeholder) - } + WorkImage(workID: work.annictId) .aspectRatio(3/4, contentMode: .fit) .frame(width: 60) .cornerRadius(8) @@ -96,3 +87,12 @@ struct SearchResultView: View { } } +struct SearchResultView_Previews: PreviewProvider { + static var previews: some View { + SearchResultView(work: .constant(.dummy)) + .previewLayout(.fixed(width: 375, height: 300)) + SearchResultView(work: .constant(.dummy)) + .preferredColorScheme(.dark) + .previewLayout(.fixed(width: 375, height: 300)) + } +} diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index aec140e7..dad0bb6d 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -15,6 +15,8 @@ struct WorkView: View { let workID: Int @State var work: SearchWorksByIdQuery.Data.SearchWork.Node? + @State var episodes: [EpisodeFragment] = [] + @State var episodesPageInfo: SearchWorkEpisodesQuery.Data.SearchWork.Node.Episode.PageInfo? init(workID: Int) { self.workID = workID @@ -25,24 +27,25 @@ struct WorkView: View { ScrollView(.vertical) { if let work = work { LazyVStack(alignment: .leading, spacing: 24) { - WorkHeaderView(work: work.fragments.workFragment) - .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) +// WorkHeaderView(work: work.fragments.workFragment) +// .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) Group { - if work.episodesCount > 0 { + if episodes.count > 0 { episodeSection(work: work) } - reviewsSection(work: work) - charactorsSection(work: work) + // reviewsSection(work: work) + // charactorsSection(work: work) } .padding(.init(top: 0, leading: 16, bottom: 48, trailing: 16)) } } } } - .background(black) + .background(.systemBackground) .edgesIgnoringSafeArea(.all) .onAppear { fetch() + fetchEpisodes() } } @@ -51,20 +54,20 @@ struct WorkView: View { Text("Episodes \(work.episodesCount)") .font(.title2) .fontWeight(.bold) - ForEach((work.episodes?.nodes ?? []).indices) { index in - if let episode = work.episodes?.nodes?[index] { + ForEach(episodes.indices, id: \.self) { index in + if let episode = episodes[index] { WorkEpisodeCell(episode: episode) } } - Button(action: { - - }, label: { - Spacer() - Text("もっと見る") - .font(.system(size: 14)) - Spacer() - - }) + if let episodesPageInfo = episodesPageInfo, episodesPageInfo.hasNextPage == true { + HStack { + Spacer() + WorkMoreButton { + fetchMoreEpisodes() + } + Spacer() + } + } } } @@ -73,8 +76,8 @@ struct WorkView: View { Text("Reviews \(work.episodesCount)") .font(.title2) .fontWeight(.bold) - ForEach((work.episodes?.nodes ?? []).indices) { index in - if let episode = work.episodes?.nodes?[index] { + ForEach(episodes.indices) { index in + if let episode = episodes[index] { WorkEpisodeCell(episode: episode) } } @@ -95,8 +98,8 @@ struct WorkView: View { Text("Charactors \(work.episodesCount)") .font(.title2) .fontWeight(.bold) - ForEach((work.episodes?.nodes ?? []).indices) { index in - if let episode = work.episodes?.nodes?[index] { + ForEach(episodes.indices) { index in + if let episode = episodes[index] { WorkEpisodeCell(episode: episode) } } @@ -122,6 +125,33 @@ struct WorkView: View { } } } + + private func fetchEpisodes() { + Network.shared.apollo.fetch(query: SearchWorkEpisodesQuery(workAnnictId: workID, first: 5)) { result in + switch result { + case .success(let data): + self.episodes = data.data?.searchWorks?.nodes?.first??.episodes?.edges?.compactMap { $0?.node?.fragments.episodeFragment } ?? [] + self.episodesPageInfo = data.data?.searchWorks?.nodes?.first??.episodes?.pageInfo + case .failure(let error): + print(error) + } + } + } + + private func fetchMoreEpisodes() { + guard let pageInfo = episodesPageInfo else { return } + guard pageInfo.hasNextPage else { return } + Network.shared.apollo.fetch(query: SearchWorkEpisodesQuery(workAnnictId: workID, first: 30, after: pageInfo.endCursor)) { result in + switch result { + case .success(let data): + let nodes = data.data?.searchWorks?.nodes?.first??.episodes?.edges?.compactMap { $0?.node?.fragments.episodeFragment } ?? [] + self.episodes.append(contentsOf: nodes) + self.episodesPageInfo = data.data?.searchWorks?.nodes?.first??.episodes?.pageInfo + case .failure(let error): + print(error) + } + } + } } struct WorkView_Previews: PreviewProvider { @@ -131,7 +161,7 @@ struct WorkView_Previews: PreviewProvider { } struct WorkEpisodeCell: View { - let episode: SearchWorksByIdQuery.Data.SearchWork.Node.Episode.Node + let episode: EpisodeFragment var body: some View { VStack(alignment: .leading) { @@ -143,6 +173,38 @@ struct WorkEpisodeCell: View { } } +struct WorkMoreButton: View { + let action: () -> Void + + init(action: @escaping () -> Void) { + self.action = action + } + + var body: some View { + Button(action: { + action() + }, label: { + Text("もっと見る") + .font(.system(size: 14)) + .foregroundColor(.primary) + + }) + .frame(height: 24) + .padding(EdgeInsets(top: 8, leading: 16, bottom: 8, trailing: 16)) + .background(Color.secondarySystemBackground) + .cornerRadius(28) + } +} + +struct WorkMoreButton_Previews: PreviewProvider { + static var previews: some View { + WorkMoreButton { + + } + .previewLayout(.fixed(width: 200, height: 200)) + } +} + extension Color { init(hex: Int, alpha: Double = 1) { let components = ( diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 8da5cb51..9ecba7f9 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -15,6 +15,10 @@ "name": "GetViewerWorks", "source": "query GetViewerWorks($first: Int, $after: String, $state: StatusState!) {\n viewer {\n __typename\n works(first: $first, after: $after, state: $state, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n }\n}" }, + "cfca8215e8436403c0bee3022caf49dc6f401da7b34e4f43572fca5c7a0a9140": { + "name": "SearchWorkEpisodes", + "source": "query SearchWorkEpisodes($workAnnictId: Int!, $first: Int, $after: String) {\n searchWorks(annictIds: [$workAnnictId]) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: $first, after: $after, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...EpisodeFragment\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n }\n}" + }, "5e9902975ee56d522b235f58534e946edcdcda99e767b6c9a23b7edbe894263e": { "name": "SearchWorksByID", "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId], after: $after) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n nodes {\n __typename\n id\n annictId\n title\n numberText\n viewerRecordsCount\n }\n }\n }\n }\n}" From 7c68c4042c0677bb86875844ecfbbc84627278b6 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 17 Jan 2021 19:34:55 +0900 Subject: [PATCH 051/101] Impl work view --- Sources/Work/WorkHeaderView.swift | 35 +++++++++++++------------------ Sources/Work/WorkView.swift | 20 ++++++++++++++---- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/Sources/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift index 6c531197..c3f643e0 100644 --- a/Sources/Work/WorkHeaderView.swift +++ b/Sources/Work/WorkHeaderView.swift @@ -15,35 +15,30 @@ struct WorkHeaderView: View { self.work = work } - private let black = Color(hex: 0x222222) private var gradient: Gradient { - Gradient(stops: [Gradient.Stop(color: black, location: 0), - Gradient.Stop(color: .clear, location: 0.5), - Gradient.Stop(color: black.opacity(0.9), location: 0.8), - Gradient.Stop(color: black, location: 1)]) + Gradient(stops: [Gradient.Stop(color: .clear, location: 0), + Gradient.Stop(color: Color.systemBackground.opacity(0.9), location: 0.8), + Gradient.Stop(color: Color.systemBackground, location: 1)]) } var body: some View { GeometryReader { geometry in - ZStack(alignment: .bottomLeading) { -// KFImage("\(Constants.baseImageURL)/images/\(work.annictId)") -// .resizable() - + ZStack(alignment: .top) { WorkImage(workID: work.annictId) .plceholderFont(.system(size: 64)) .aspectRatio(contentMode: .fill) - .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: .top) - .background(Color.gray) - LinearGradient(gradient: gradient, - startPoint: .top, - endPoint: .bottom) .frame(width: geometry.size.width, height: geometry.size.width * 1.5) - Text(work.title) - .font(.title) - .fontWeight(.bold) - .foregroundColor(.white) - .offset(x: 16, y: -32) - .frame(maxWidth: geometry.size.width - 32, alignment: .leading) + ZStack(alignment: .bottomLeading) { + LinearGradient(gradient: gradient, + startPoint: .top, + endPoint: .bottom) + .frame(width: geometry.size.width, height: geometry.size.width * 1.51) // チラつきを防ぐために画像より大きめに + Text(work.title) + .font(.title) + .fontWeight(.bold) + .foregroundColor(.primary) + .padding(EdgeInsets(top: 0, leading: 16, bottom: 16, trailing: 16)) + } } } } diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index dad0bb6d..421764a4 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -8,6 +8,7 @@ import SwiftUI import KingfisherSwiftUI import Apollo +import SwiftUIX struct WorkView: View { private let black = Color(hex: 0x222222) @@ -17,6 +18,7 @@ struct WorkView: View { @State var work: SearchWorksByIdQuery.Data.SearchWork.Node? @State var episodes: [EpisodeFragment] = [] @State var episodesPageInfo: SearchWorkEpisodesQuery.Data.SearchWork.Node.Episode.PageInfo? + @State var isEpisodesLoading = false init(workID: Int) { self.workID = workID @@ -27,8 +29,8 @@ struct WorkView: View { ScrollView(.vertical) { if let work = work { LazyVStack(alignment: .leading, spacing: 24) { -// WorkHeaderView(work: work.fragments.workFragment) -// .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) + WorkHeaderView(work: work.fragments.workFragment) + .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) Group { if episodes.count > 0 { episodeSection(work: work) @@ -62,8 +64,16 @@ struct WorkView: View { if let episodesPageInfo = episodesPageInfo, episodesPageInfo.hasNextPage == true { HStack { Spacer() - WorkMoreButton { - fetchMoreEpisodes() + if isEpisodesLoading { + ActivityIndicator() + .animated(true) + .style(.medium) + .frame(height: 40) + + } else { + WorkMoreButton { + fetchMoreEpisodes() + } } Spacer() } @@ -139,6 +149,7 @@ struct WorkView: View { } private func fetchMoreEpisodes() { + isEpisodesLoading = true guard let pageInfo = episodesPageInfo else { return } guard pageInfo.hasNextPage else { return } Network.shared.apollo.fetch(query: SearchWorkEpisodesQuery(workAnnictId: workID, first: 30, after: pageInfo.endCursor)) { result in @@ -147,6 +158,7 @@ struct WorkView: View { let nodes = data.data?.searchWorks?.nodes?.first??.episodes?.edges?.compactMap { $0?.node?.fragments.episodeFragment } ?? [] self.episodes.append(contentsOf: nodes) self.episodesPageInfo = data.data?.searchWorks?.nodes?.first??.episodes?.pageInfo + isEpisodesLoading = false case .failure(let error): print(error) } From f48c59d522e3a7bd753e0ebce7586f4df2980090 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 17 Jan 2021 21:53:37 +0900 Subject: [PATCH 052/101] Impl --- Portannict.xcodeproj/project.pbxproj | 4 + Sources/API.swift | 95 ++++++++++++++++------ Sources/Common/API/Network.swift | 4 +- Sources/Common/API/Query/Fragments.graphql | 7 -- Sources/Common/Views/StatusButton.swift | 69 ++++++++++++++++ Sources/Home/ActivityRecordView.swift | 2 +- Sources/Home/QuoteWorkView.swift | 2 +- Sources/Work/WorkView.swift | 63 +++++++++++--- Sources/operationIDs.json | 4 +- 9 files changed, 199 insertions(+), 51 deletions(-) create mode 100644 Sources/Common/Views/StatusButton.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 5db13b4b..db40985e 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -22,6 +22,7 @@ CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */; }; CF3B2FCF25B411600017A7C0 /* SearchResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FCE25B411600017A7C0 /* SearchResultView.swift */; }; CF3B2FD125B42D1E0017A7C0 /* SearchWorkEpisodes.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF3B2FD025B42D1E0017A7C0 /* SearchWorkEpisodes.graphql */; }; + CF3B2FD325B44F680017A7C0 /* StatusButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FD225B44F680017A7C0 /* StatusButton.swift */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */; }; @@ -97,6 +98,7 @@ CF2E1D92259DC19100824A3C /* GetFollowingActivities.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetFollowingActivities.graphql; sourceTree = ""; }; CF3B2FCE25B411600017A7C0 /* SearchResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultView.swift; sourceTree = ""; }; CF3B2FD025B42D1E0017A7C0 /* SearchWorkEpisodes.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorkEpisodes.graphql; sourceTree = ""; }; + CF3B2FD225B44F680017A7C0 /* StatusButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusButton.swift; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictSeason.swift; sourceTree = ""; }; @@ -230,6 +232,7 @@ CFADCD0325A5A34F00939DA7 /* Views */ = { isa = PBXGroup; children = ( + CF3B2FD225B44F680017A7C0 /* StatusButton.swift */, ); path = Views; sourceTree = ""; @@ -493,6 +496,7 @@ CFE7E5CA25A6E71C009EB3DC /* UserHeaderView.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, + CF3B2FD325B44F680017A7C0 /* StatusButton.swift in Sources */, CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */, CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */, diff --git a/Sources/API.swift b/Sources/API.swift index 4bb01e19..8010b048 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -261,7 +261,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { public let operationName: String = "GetFollowingActivities" - public let operationIdentifier: String? = "a84b63d64f36512aea6ae54594f2c88d8cf24105187cde1195cfae980e5dcc1a" + public let operationIdentifier: String? = "6c004fdf49fe0eb0fff3f8488ac0e096fad0793a4b8a563ed0e0b989b294b4d7" public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition).appending(EpisodeFragment.fragmentDefinition).appending(ReviewFragment.fragmentDefinition).appending(StatusFragment.fragmentDefinition) } @@ -904,8 +904,9 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("numberText", type: .scalar(String.self)), GraphQLField("title", type: .scalar(String.self)), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), ] } @@ -915,8 +916,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, viewerRecordsCount: Int) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "viewerRecordsCount": viewerRecordsCount]) } public var __typename: String { @@ -946,6 +947,15 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + public var numberText: String? { get { return resultMap["numberText"] as? String @@ -955,12 +965,12 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } - public var title: String? { + public var viewerRecordsCount: Int { get { - return resultMap["title"] as? String + return resultMap["viewerRecordsCount"]! as! Int } set { - resultMap.updateValue(newValue, forKey: "title") + resultMap.updateValue(newValue, forKey: "viewerRecordsCount") } } @@ -2627,7 +2637,7 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { public let operationName: String = "SearchWorkEpisodes" - public let operationIdentifier: String? = "cfca8215e8436403c0bee3022caf49dc6f401da7b34e4f43572fca5c7a0a9140" + public let operationIdentifier: String? = "bc7fdd907a96b06744895095e150fc76b0f84cf9bb99393a4a531d13618a376d" public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition).appending(EpisodeFragment.fragmentDefinition) } @@ -2975,8 +2985,9 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("numberText", type: .scalar(String.self)), GraphQLField("title", type: .scalar(String.self)), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), ] } @@ -2986,8 +2997,8 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, viewerRecordsCount: Int) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "viewerRecordsCount": viewerRecordsCount]) } public var __typename: String { @@ -3017,6 +3028,15 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { } } + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + public var numberText: String? { get { return resultMap["numberText"] as? String @@ -3026,12 +3046,12 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { } } - public var title: String? { + public var viewerRecordsCount: Int { get { - return resultMap["title"] as? String + return resultMap["viewerRecordsCount"]! as! Int } set { - resultMap.updateValue(newValue, forKey: "title") + resultMap.updateValue(newValue, forKey: "viewerRecordsCount") } } @@ -4539,8 +4559,9 @@ public struct EpisodeFragment: GraphQLFragment { __typename id annictId - numberText title + numberText + viewerRecordsCount } """ @@ -4551,8 +4572,9 @@ public struct EpisodeFragment: GraphQLFragment { GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("numberText", type: .scalar(String.self)), GraphQLField("title", type: .scalar(String.self)), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), ] } @@ -4562,8 +4584,8 @@ public struct EpisodeFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, viewerRecordsCount: Int) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "viewerRecordsCount": viewerRecordsCount]) } public var __typename: String { @@ -4593,6 +4615,15 @@ public struct EpisodeFragment: GraphQLFragment { } } + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + public var numberText: String? { get { return resultMap["numberText"] as? String @@ -4602,12 +4633,12 @@ public struct EpisodeFragment: GraphQLFragment { } } - public var title: String? { + public var viewerRecordsCount: Int { get { - return resultMap["title"] as? String + return resultMap["viewerRecordsCount"]! as! Int } set { - resultMap.updateValue(newValue, forKey: "title") + resultMap.updateValue(newValue, forKey: "viewerRecordsCount") } } } @@ -5016,8 +5047,9 @@ public struct RecordFragment: GraphQLFragment { GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("numberText", type: .scalar(String.self)), GraphQLField("title", type: .scalar(String.self)), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), ] } @@ -5027,8 +5059,8 @@ public struct RecordFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, numberText: String? = nil, title: String? = nil) { - self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "numberText": numberText, "title": title]) + public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, viewerRecordsCount: Int) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "viewerRecordsCount": viewerRecordsCount]) } public var __typename: String { @@ -5058,6 +5090,15 @@ public struct RecordFragment: GraphQLFragment { } } + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + public var numberText: String? { get { return resultMap["numberText"] as? String @@ -5067,12 +5108,12 @@ public struct RecordFragment: GraphQLFragment { } } - public var title: String? { + public var viewerRecordsCount: Int { get { - return resultMap["title"] as? String + return resultMap["viewerRecordsCount"]! as! Int } set { - resultMap.updateValue(newValue, forKey: "title") + resultMap.updateValue(newValue, forKey: "viewerRecordsCount") } } diff --git a/Sources/Common/API/Network.swift b/Sources/Common/API/Network.swift index 4e60d96e..961c3f8c 100644 --- a/Sources/Common/API/Network.swift +++ b/Sources/Common/API/Network.swift @@ -37,8 +37,10 @@ final class Network { // Remember to give the store you already created to the client so it // doesn't create one on its own - return ApolloClient(networkTransport: requestChainTransport, + let apolloClient = ApolloClient(networkTransport: requestChainTransport, store: store) + apolloClient.cacheKeyForObject = { $0["id"] } + return apolloClient }() } diff --git a/Sources/Common/API/Query/Fragments.graphql b/Sources/Common/API/Query/Fragments.graphql index 039ebc23..fb3a880f 100644 --- a/Sources/Common/API/Query/Fragments.graphql +++ b/Sources/Common/API/Query/Fragments.graphql @@ -57,13 +57,6 @@ fragment UserFragment on User { description } -fragment EpisodeFragment on Episode { - id - annictId - numberText - title -} - fragment ReviewFragment on Review { id annictId diff --git a/Sources/Common/Views/StatusButton.swift b/Sources/Common/Views/StatusButton.swift new file mode 100644 index 00000000..2b3d139f --- /dev/null +++ b/Sources/Common/Views/StatusButton.swift @@ -0,0 +1,69 @@ +// +// StatusButton.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/17. +// + +import SwiftUI + +struct StatusButton: View { + let state: StatusState + let action: (() -> Void)? + + private var fontSize: CGFloat = 16 + + init(state: StatusState, action: (() -> Void)? = nil) { + self.state = state + self.action = action + } + + var body: some View { + GeometryReader { geo in + Button(action: { + action?() + }, label: { + HStack(alignment: .center, spacing: 8) { + Text(viewerStatusStateTitle(state: state)) + .font(.system(size: fontSize)) + .foregroundColor(state != .noState ? .white : .primary) + Image(systemName: .arrowtriangleDownFill) + .font(.system(size: fontSize/2)) + .foregroundColor(state != .noState ? .white : .primary) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + }) + .padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16)) + .frame(maxWidth:.infinity, maxHeight: .infinity) + .background(state != .noState ? .blue : Color(.secondarySystemBackground)) + .cornerRadius(geo.size.height / 2) + } + } + + private func viewerStatusStateTitle(state: StatusState?) -> String { + if let title = state?.title, !title.isEmpty { + return title + } + return "ステータスを変更" + } + + func fontSize(_ size: CGFloat) -> StatusButton { + var result = self + result.fontSize = size + return result + } +} + +struct StatusButton_Previews: PreviewProvider { + static var previews: some View { + StatusButton(state: .watching) + .fontSize(32) + .previewLayout(.fixed(width: 300, height: 100)) + StatusButton(state: .noState) + .frame(height: 32) + .previewLayout(.fixed(width: 300, height: 100)) + StatusButton(state: .watching) + .frame(height: 32) + .previewLayout(.fixed(width: 300, height: 100)) + } +} diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index b5e2211f..c22845fa 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -68,7 +68,7 @@ struct ActivityRecordView: View { struct ActivityRecordView_Previews: PreviewProvider { static var previews: some View { let recordWork = RecordFragment.Work(unsafeResultMap: WorkFragment.dummy.resultMap) - let recordEpisode = RecordFragment.Episode(id: "", annictId: 124160, numberText: "Case_1_1", title: "Los Angeles Connection") + let recordEpisode = RecordFragment.Episode(id: "", annictId: 124160, title: "Los Angeles Connection", numberText: "Case_1_1", viewerRecordsCount: 0) let user = RecordFragment.User(id: "user", name: "touyu", username: "touyu", description: "") let record = RecordFragment(id: "", annictId: 0, comment: "いい話だった", ratingState: .good, createdAt: "2021-01-06T17:20:54Z", user: user, work: recordWork, episode: recordEpisode) return ActivityRecordView(record: .constant(record)) diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 0049f7a4..0a5094a0 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -147,7 +147,7 @@ struct QuoteWorkView_Previews: PreviewProvider { static var previews: some View { QuoteWorkView(work: .constant(WorkFragment.dummy)) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) - QuoteWorkView(work: .constant(WorkFragment.dummy), episode: EpisodeFragment(id: "", annictId: 0, numberText: "第1話", title: "冒険の始まり")) + QuoteWorkView(work: .constant(WorkFragment.dummy), episode: EpisodeFragment(id: "", annictId: 0, title: "冒険の始まり", numberText: "第1話", viewerRecordsCount: 0)) .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) } } diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index 421764a4..e6a987a8 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -15,11 +15,13 @@ struct WorkView: View { let workID: Int - @State var work: SearchWorksByIdQuery.Data.SearchWork.Node? + @State var work: WorkFragment? @State var episodes: [EpisodeFragment] = [] @State var episodesPageInfo: SearchWorkEpisodesQuery.Data.SearchWork.Node.Episode.PageInfo? @State var isEpisodesLoading = false + @State private var showingActionSheet = false + init(workID: Int) { self.workID = workID } @@ -29,8 +31,24 @@ struct WorkView: View { ScrollView(.vertical) { if let work = work { LazyVStack(alignment: .leading, spacing: 24) { - WorkHeaderView(work: work.fragments.workFragment) - .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) + WorkHeaderView(work: work) + .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: .center) + StatusButton(state: work.viewerStatusState ?? .noState) { + showingActionSheet = true + } + .frame(height: 44) + .padding(.init(top: 0, leading: 16, bottom: 16, trailing: 16)) + .actionSheet(isPresented: $showingActionSheet) { + var buttons = StatusState.allCases[0...4] + .map { state in + return ActionSheet.Button.default(Text(state.title)) { + self.work?.viewerStatusState = state + updateStatus(id: work.id, state: state) + } + } + buttons.append(.cancel()) + return ActionSheet(title: Text("ステータスを変更"), buttons: buttons) + } Group { if episodes.count > 0 { episodeSection(work: work) @@ -51,8 +69,8 @@ struct WorkView: View { } } - private func episodeSection(work: SearchWorksByIdQuery.Data.SearchWork.Node) -> some View { - LazyVStack(alignment: .leading, spacing: 16) { + private func episodeSection(work: WorkFragment) -> some View { + LazyVStack(alignment: .leading, spacing: 20) { Text("Episodes \(work.episodesCount)") .font(.title2) .fontWeight(.bold) @@ -129,7 +147,7 @@ struct WorkView: View { Network.shared.apollo.fetch(query: SearchWorksByIdQuery(annictId: workID)) { result in switch result { case .success(let data): - self.work = data.data?.searchWorks?.nodes?.first ?? nil + self.work = data.data?.searchWorks?.nodes?.first??.fragments.workFragment ?? nil case .failure(let error): print(error) } @@ -137,7 +155,7 @@ struct WorkView: View { } private func fetchEpisodes() { - Network.shared.apollo.fetch(query: SearchWorkEpisodesQuery(workAnnictId: workID, first: 5)) { result in + Network.shared.apollo.fetch(query: SearchWorkEpisodesQuery(workAnnictId: workID, first: 30)) { result in switch result { case .success(let data): self.episodes = data.data?.searchWorks?.nodes?.first??.episodes?.edges?.compactMap { $0?.node?.fragments.episodeFragment } ?? [] @@ -164,6 +182,19 @@ struct WorkView: View { } } } + + private func updateStatus(id: GraphQLID, state: StatusState) { + let mutation = UpdateStatusMutation(workId: id, state: state) + Network.shared.apollo.perform(mutation: mutation) { result in + switch result { + case .success(let data): + guard let work = data.data?.updateStatus?.work?.fragments.workFragment else { return } + self.work?.viewerStatusState = work.viewerStatusState + case .failure(let error): + print(error) + } + } + } } struct WorkView_Previews: PreviewProvider { @@ -176,11 +207,19 @@ struct WorkEpisodeCell: View { let episode: EpisodeFragment var body: some View { - VStack(alignment: .leading) { - Text(episode.numberText ?? "Unknown") - .font(.system(size: 14)) - Text(episode.title ?? "Unknown") - .font(.system(size: 16)) + HStack { + VStack(alignment: .leading) { + Text(episode.numberText ?? "Unknown") + .font(.system(size: 14)) + Text(episode.title ?? "Unknown") + .font(.system(size: 16)) + } + Spacer() + Text("\(episode.viewerRecordsCount)") + .frame(height: 20) + .padding(EdgeInsets(top: 4, leading: 16, bottom: 4, trailing: 16)) + .background(Color.secondarySystemBackground) + .cornerRadius(18) } } } diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 9ecba7f9..8f68982f 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -1,5 +1,5 @@ { - "a84b63d64f36512aea6ae54594f2c88d8cf24105187cde1195cfae980e5dcc1a": { + "6c004fdf49fe0eb0fff3f8488ac0e096fad0793a4b8a563ed0e0b989b294b4d7": { "name": "GetFollowingActivities", "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n cursor\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n ...ReviewFragment\n }\n ... on Status {\n ...StatusFragment\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n}" }, @@ -15,7 +15,7 @@ "name": "GetViewerWorks", "source": "query GetViewerWorks($first: Int, $after: String, $state: StatusState!) {\n viewer {\n __typename\n works(first: $first, after: $after, state: $state, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n }\n}" }, - "cfca8215e8436403c0bee3022caf49dc6f401da7b34e4f43572fca5c7a0a9140": { + "bc7fdd907a96b06744895095e150fc76b0f84cf9bb99393a4a531d13618a376d": { "name": "SearchWorkEpisodes", "source": "query SearchWorkEpisodes($workAnnictId: Int!, $first: Int, $after: String) {\n searchWorks(annictIds: [$workAnnictId]) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: $first, after: $after, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...EpisodeFragment\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n }\n}" }, From 29c1e54aba1a3cdbbe48350342ffed0c7584a80e Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 18 Jan 2021 00:19:34 +0900 Subject: [PATCH 053/101] Impl reviews --- Portannict.xcodeproj/project.pbxproj | 24 + Sources/API.swift | 1200 ++++++++++++++++- Sources/Common/API/Query/Fragments.graphql | 34 +- .../API/Query/SearchWorkReviews.graphql | 17 + Sources/Common/Extension/Color.swift | 26 + Sources/Common/Extension/Dummy.swift | 34 + .../Common/Extension/Model+Extension.swift | 4 - Sources/Home/ActivityReviewView.swift | 8 +- Sources/Work/WorkEpisodeCell.swift | 35 + Sources/Work/WorkHeaderView.swift | 18 +- Sources/Work/WorkMoreButton.swift | 40 + Sources/Work/WorkReviewCell.swift | 53 + Sources/Work/WorkView.swift | 139 +- Sources/operationIDs.json | 6 +- 14 files changed, 1469 insertions(+), 169 deletions(-) create mode 100644 Sources/Common/API/Query/SearchWorkReviews.graphql create mode 100644 Sources/Common/Extension/Color.swift create mode 100644 Sources/Common/Extension/Dummy.swift create mode 100644 Sources/Work/WorkEpisodeCell.swift create mode 100644 Sources/Work/WorkMoreButton.swift create mode 100644 Sources/Work/WorkReviewCell.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index db40985e..80240e34 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -23,6 +23,12 @@ CF3B2FCF25B411600017A7C0 /* SearchResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FCE25B411600017A7C0 /* SearchResultView.swift */; }; CF3B2FD125B42D1E0017A7C0 /* SearchWorkEpisodes.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF3B2FD025B42D1E0017A7C0 /* SearchWorkEpisodes.graphql */; }; CF3B2FD325B44F680017A7C0 /* StatusButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FD225B44F680017A7C0 /* StatusButton.swift */; }; + CF3B2FD725B46F710017A7C0 /* SearchWorkReviews.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF3B2FD625B46F710017A7C0 /* SearchWorkReviews.graphql */; }; + CF3B2FD925B484AD0017A7C0 /* WorkEpisodeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FD825B484AD0017A7C0 /* WorkEpisodeCell.swift */; }; + CF3B2FDB25B484DC0017A7C0 /* WorkMoreButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FDA25B484DC0017A7C0 /* WorkMoreButton.swift */; }; + CF3B2FDD25B484F20017A7C0 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FDC25B484F20017A7C0 /* Color.swift */; }; + CF3B2FDF25B485230017A7C0 /* WorkReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FDE25B485230017A7C0 /* WorkReviewCell.swift */; }; + CF3B2FE125B485DC0017A7C0 /* Dummy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FE025B485DC0017A7C0 /* Dummy.swift */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */; }; @@ -99,6 +105,12 @@ CF3B2FCE25B411600017A7C0 /* SearchResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultView.swift; sourceTree = ""; }; CF3B2FD025B42D1E0017A7C0 /* SearchWorkEpisodes.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorkEpisodes.graphql; sourceTree = ""; }; CF3B2FD225B44F680017A7C0 /* StatusButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusButton.swift; sourceTree = ""; }; + CF3B2FD625B46F710017A7C0 /* SearchWorkReviews.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchWorkReviews.graphql; sourceTree = ""; }; + CF3B2FD825B484AD0017A7C0 /* WorkEpisodeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkEpisodeCell.swift; sourceTree = ""; }; + CF3B2FDA25B484DC0017A7C0 /* WorkMoreButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkMoreButton.swift; sourceTree = ""; }; + CF3B2FDC25B484F20017A7C0 /* Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = ""; }; + CF3B2FDE25B485230017A7C0 /* WorkReviewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkReviewCell.swift; sourceTree = ""; }; + CF3B2FE025B485DC0017A7C0 /* Dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dummy.swift; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictSeason.swift; sourceTree = ""; }; @@ -216,6 +228,7 @@ CFBCA06225AB49FB00C5386C /* SearchWorksByTitle.graphql */, CFBCA06425AB6B0E00C5386C /* UpdateStatus.graphql */, CF3B2FD025B42D1E0017A7C0 /* SearchWorkEpisodes.graphql */, + CF3B2FD625B46F710017A7C0 /* SearchWorkReviews.graphql */, ); path = Query; sourceTree = ""; @@ -251,6 +264,8 @@ children = ( CFBB73B625A575D700601DCB /* KFImage.swift */, CFD82D3625A63915005401AF /* Model+Extension.swift */, + CF3B2FDC25B484F20017A7C0 /* Color.swift */, + CF3B2FE025B485DC0017A7C0 /* Dummy.swift */, ); path = Extension; sourceTree = ""; @@ -333,7 +348,10 @@ isa = PBXGroup; children = ( CFFDC8A7259C6EF6001C8E29 /* WorkView.swift */, + CF3B2FDA25B484DC0017A7C0 /* WorkMoreButton.swift */, CFFDC8B4259CCAFE001C8E29 /* WorkHeaderView.swift */, + CF3B2FD825B484AD0017A7C0 /* WorkEpisodeCell.swift */, + CF3B2FDE25B485230017A7C0 /* WorkReviewCell.swift */, ); path = Work; sourceTree = ""; @@ -431,6 +449,7 @@ CFD82D3C25A64157005401AF /* GetViewer.graphql in Resources */, CF3B2FD125B42D1E0017A7C0 /* SearchWorkEpisodes.graphql in Resources */, CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */, + CF3B2FD725B46F710017A7C0 /* SearchWorkReviews.graphql in Resources */, CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */, CFBCA06525AB6B0E00C5386C /* UpdateStatus.graphql in Resources */, CFE7E5CE25A6EC6B009EB3DC /* GetUser.graphql in Resources */, @@ -473,6 +492,7 @@ files = ( CFBCA06B25AB719B00C5386C /* SearchRecommendedWorksViewModel.swift in Sources */, CF13E35225AAF78A005D11F8 /* SearchViewModel.swift in Sources */, + CF3B2FE125B485DC0017A7C0 /* Dummy.swift in Sources */, CFBCA06925AB70C600C5386C /* SearchResultsView.swift in Sources */, CF3B2FCF25B411600017A7C0 /* SearchResultView.swift in Sources */, CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */, @@ -486,14 +506,18 @@ CFC03F0725959BDD001516D3 /* LoginSession.swift in Sources */, CFE7E5D725A7077D009EB3DC /* RecordView.swift in Sources */, CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, + CF3B2FDB25B484DC0017A7C0 /* WorkMoreButton.swift in Sources */, CFBB73B725A575D700601DCB /* KFImage.swift in Sources */, CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */, CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, + CF3B2FD925B484AD0017A7C0 /* WorkEpisodeCell.swift in Sources */, CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */, + CF3B2FDD25B484F20017A7C0 /* Color.swift in Sources */, CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */, CFE7E5CA25A6E71C009EB3DC /* UserHeaderView.swift in Sources */, + CF3B2FDF25B485230017A7C0 /* WorkReviewCell.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, CF3B2FD325B44F680017A7C0 /* StatusButton.swift in Sources */, diff --git a/Sources/API.swift b/Sources/API.swift index 8010b048..a55ad133 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -261,7 +261,7 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { public let operationName: String = "GetFollowingActivities" - public let operationIdentifier: String? = "6c004fdf49fe0eb0fff3f8488ac0e096fad0793a4b8a563ed0e0b989b294b4d7" + public let operationIdentifier: String? = "328f1961c2207bf997267917c6b221c7f44418e0cda032daec3bafb7a6d5ac52" public var queryDocument: String { return operationDefinition.appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition).appending(EpisodeFragment.fragmentDefinition).appending(ReviewFragment.fragmentDefinition).appending(StatusFragment.fragmentDefinition) } @@ -466,8 +466,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { return Node(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "comment": comment, "ratingState": ratingState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap, "episode": episode.resultMap]) } - public static func makeReview(id: GraphQLID, annictId: Int, createdAt: String, body: String, ratingAnimationState: RatingState? = nil, user: AsReview.User, work: AsReview.Work) -> Node { - return Node(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "createdAt": createdAt, "body": body, "ratingAnimationState": ratingAnimationState, "user": user.resultMap, "work": work.resultMap]) + public static func makeReview(id: GraphQLID, annictId: Int, title: String? = nil, body: String, ratingAnimationState: RatingState? = nil, ratingOverallState: RatingState? = nil, ratingMusicState: RatingState? = nil, ratingStoryState: RatingState? = nil, ratingCharacterState: RatingState? = nil, createdAt: String, user: AsReview.User, work: AsReview.Work) -> Node { + return Node(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "title": title, "body": body, "ratingAnimationState": ratingAnimationState, "ratingOverallState": ratingOverallState, "ratingMusicState": ratingMusicState, "ratingStoryState": ratingStoryState, "ratingCharacterState": ratingCharacterState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap]) } public static func makeStatus(id: GraphQLID, annictId: Int, createdAt: String, state: StatusState, user: AsStatus.User, work: AsStatus.Work) -> Node { @@ -1022,9 +1022,14 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), + GraphQLField("title", type: .scalar(String.self)), GraphQLField("body", type: .nonNull(.scalar(String.self))), GraphQLField("ratingAnimationState", type: .scalar(RatingState.self)), + GraphQLField("ratingOverallState", type: .scalar(RatingState.self)), + GraphQLField("ratingMusicState", type: .scalar(RatingState.self)), + GraphQLField("ratingStoryState", type: .scalar(RatingState.self)), + GraphQLField("ratingCharacterState", type: .scalar(RatingState.self)), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), GraphQLField("user", type: .nonNull(.object(User.selections))), GraphQLField("work", type: .nonNull(.object(Work.selections))), ] @@ -1036,8 +1041,8 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, createdAt: String, body: String, ratingAnimationState: RatingState? = nil, user: User, work: Work) { - self.init(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "createdAt": createdAt, "body": body, "ratingAnimationState": ratingAnimationState, "user": user.resultMap, "work": work.resultMap]) + public init(id: GraphQLID, annictId: Int, title: String? = nil, body: String, ratingAnimationState: RatingState? = nil, ratingOverallState: RatingState? = nil, ratingMusicState: RatingState? = nil, ratingStoryState: RatingState? = nil, ratingCharacterState: RatingState? = nil, createdAt: String, user: User, work: Work) { + self.init(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "title": title, "body": body, "ratingAnimationState": ratingAnimationState, "ratingOverallState": ratingOverallState, "ratingMusicState": ratingMusicState, "ratingStoryState": ratingStoryState, "ratingCharacterState": ratingCharacterState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap]) } public var __typename: String { @@ -1067,12 +1072,12 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } - public var createdAt: String { + public var title: String? { get { - return resultMap["createdAt"]! as! String + return resultMap["title"] as? String } set { - resultMap.updateValue(newValue, forKey: "createdAt") + resultMap.updateValue(newValue, forKey: "title") } } @@ -1094,6 +1099,51 @@ public final class GetFollowingActivitiesQuery: GraphQLQuery { } } + public var ratingOverallState: RatingState? { + get { + return resultMap["ratingOverallState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingOverallState") + } + } + + public var ratingMusicState: RatingState? { + get { + return resultMap["ratingMusicState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingMusicState") + } + } + + public var ratingStoryState: RatingState? { + get { + return resultMap["ratingStoryState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingStoryState") + } + } + + public var ratingCharacterState: RatingState? { + get { + return resultMap["ratingCharacterState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingCharacterState") + } + } + + public var createdAt: String { + get { + return resultMap["createdAt"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "createdAt") + } + } + public var user: User { get { return User(unsafeResultMap: resultMap["user"]! as! ResultMap) @@ -3035,50 +3085,915 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { set { resultMap.updateValue(newValue, forKey: "title") } - } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var viewerRecordsCount: Int { + get { + return resultMap["viewerRecordsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "viewerRecordsCount") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var episodeFragment: EpisodeFragment { + get { + return EpisodeFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + + public struct PageInfo: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["PageInfo"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("endCursor", type: .scalar(String.self)), + GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(endCursor: String? = nil, hasNextPage: Bool) { + self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// When paginating forwards, the cursor to continue. + public var endCursor: String? { + get { + return resultMap["endCursor"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "endCursor") + } + } + + /// When paginating forwards, are there more items? + public var hasNextPage: Bool { + get { + return resultMap["hasNextPage"]! as! Bool + } + set { + resultMap.updateValue(newValue, forKey: "hasNextPage") + } + } + } + } + } + } + } +} + +public final class SearchWorkReviewsQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query SearchWorkReviews($workAnnictId: Int!, $first: Int, $after: String) { + searchWorks(annictIds: [$workAnnictId]) { + __typename + nodes { + __typename + ...WorkFragment + reviews(first: $first, after: $after, orderBy: {direction: DESC, field: CREATED_AT}, hasBody: true) { + __typename + edges { + __typename + node { + __typename + ...ReviewFragment + } + } + pageInfo { + __typename + ...PageInfoFragment + } + } + } + } + } + """ + + public let operationName: String = "SearchWorkReviews" + + public let operationIdentifier: String? = "e67b4908d042fb41b1fdc01d085ca5651cb89d9187b3dcd1483ad1ad1dd953b2" + + public var queryDocument: String { return operationDefinition.appending(WorkFragment.fragmentDefinition).appending(ReviewFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(PageInfoFragment.fragmentDefinition) } + + public var workAnnictId: Int + public var first: Int? + public var after: String? + + public init(workAnnictId: Int, first: Int? = nil, after: String? = nil) { + self.workAnnictId = workAnnictId + self.first = first + self.after = after + } + + public var variables: GraphQLMap? { + return ["workAnnictId": workAnnictId, "first": first, "after": after] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("searchWorks", arguments: ["annictIds": [GraphQLVariable("workAnnictId")]], type: .object(SearchWork.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(searchWorks: SearchWork? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "searchWorks": searchWorks.flatMap { (value: SearchWork) -> ResultMap in value.resultMap }]) + } + + public var searchWorks: SearchWork? { + get { + return (resultMap["searchWorks"] as? ResultMap).flatMap { SearchWork(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "searchWorks") + } + } + + public struct SearchWork: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["WorkConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("nodes", type: .list(.object(Node.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(nodes: [Node?]? = nil) { + self.init(unsafeResultMap: ["__typename": "WorkConnection", "nodes": nodes.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of nodes. + public var nodes: [Node?]? { + get { + return (resultMap["nodes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Node?] in value.map { (value: ResultMap?) -> Node? in value.flatMap { (value: ResultMap) -> Node in Node(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Node?]) -> [ResultMap?] in value.map { (value: Node?) -> ResultMap? in value.flatMap { (value: Node) -> ResultMap in value.resultMap } } }, forKey: "nodes") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), + GraphQLField("reviews", arguments: ["first": GraphQLVariable("first"), "after": GraphQLVariable("after"), "orderBy": ["direction": "DESC", "field": "CREATED_AT"], "hasBody": true], type: .object(Review.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media, reviews: Review? = nil) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media, "reviews": reviews.flatMap { (value: Review) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + + public var reviews: Review? { + get { + return (resultMap["reviews"] as? ResultMap).flatMap { Review(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "reviews") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + + public struct Review: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["ReviewConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("edges", type: .list(.object(Edge.selections))), + GraphQLField("pageInfo", type: .nonNull(.object(PageInfo.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(edges: [Edge?]? = nil, pageInfo: PageInfo) { + self.init(unsafeResultMap: ["__typename": "ReviewConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, "pageInfo": pageInfo.resultMap]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of edges. + public var edges: [Edge?]? { + get { + return (resultMap["edges"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Edge?] in value.map { (value: ResultMap?) -> Edge? in value.flatMap { (value: ResultMap) -> Edge in Edge(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, forKey: "edges") + } + } + + /// Information to aid in pagination. + public var pageInfo: PageInfo { + get { + return PageInfo(unsafeResultMap: resultMap["pageInfo"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "pageInfo") + } + } + + public struct Edge: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["ReviewEdge"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("node", type: .object(Node.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(node: Node? = nil) { + self.init(unsafeResultMap: ["__typename": "ReviewEdge", "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// The item at the end of the edge. + public var node: Node? { + get { + return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "node") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Review"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .scalar(String.self)), + GraphQLField("body", type: .nonNull(.scalar(String.self))), + GraphQLField("ratingAnimationState", type: .scalar(RatingState.self)), + GraphQLField("ratingOverallState", type: .scalar(RatingState.self)), + GraphQLField("ratingMusicState", type: .scalar(RatingState.self)), + GraphQLField("ratingStoryState", type: .scalar(RatingState.self)), + GraphQLField("ratingCharacterState", type: .scalar(RatingState.self)), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), + GraphQLField("user", type: .nonNull(.object(User.selections))), + GraphQLField("work", type: .nonNull(.object(Work.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String? = nil, body: String, ratingAnimationState: RatingState? = nil, ratingOverallState: RatingState? = nil, ratingMusicState: RatingState? = nil, ratingStoryState: RatingState? = nil, ratingCharacterState: RatingState? = nil, createdAt: String, user: User, work: Work) { + self.init(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "title": title, "body": body, "ratingAnimationState": ratingAnimationState, "ratingOverallState": ratingOverallState, "ratingMusicState": ratingMusicState, "ratingStoryState": ratingStoryState, "ratingCharacterState": ratingCharacterState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var body: String { + get { + return resultMap["body"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "body") + } + } + + public var ratingAnimationState: RatingState? { + get { + return resultMap["ratingAnimationState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingAnimationState") + } + } + + public var ratingOverallState: RatingState? { + get { + return resultMap["ratingOverallState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingOverallState") + } + } + + public var ratingMusicState: RatingState? { + get { + return resultMap["ratingMusicState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingMusicState") + } + } + + public var ratingStoryState: RatingState? { + get { + return resultMap["ratingStoryState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingStoryState") + } + } + + public var ratingCharacterState: RatingState? { + get { + return resultMap["ratingCharacterState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingCharacterState") + } + } + + public var createdAt: String { + get { + return resultMap["createdAt"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "createdAt") + } + } + + public var user: User { + get { + return User(unsafeResultMap: resultMap["user"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "user") + } + } + + public var work: Work { + get { + return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "work") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var reviewFragment: ReviewFragment { + get { + return ReviewFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + + public struct User: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } + + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var userFragment: UserFragment { + get { + return UserFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } - public var numberText: String? { - get { - return resultMap["numberText"] as? String + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } } - set { - resultMap.updateValue(newValue, forKey: "numberText") + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } } - } - public var viewerRecordsCount: Int { - get { - return resultMap["viewerRecordsCount"]! as! Int + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } } - set { - resultMap.updateValue(newValue, forKey: "viewerRecordsCount") + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } } - } - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } } - set { - resultMap += newValue.resultMap + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } } - } - public struct Fragments { - public private(set) var resultMap: ResultMap + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } } - public var episodeFragment: EpisodeFragment { + public var fragments: Fragments { get { - return EpisodeFragment(unsafeResultMap: resultMap) + return Fragments(unsafeResultMap: resultMap) } set { resultMap += newValue.resultMap } } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } } } } @@ -3089,8 +4004,11 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("endCursor", type: .scalar(String.self)), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), + GraphQLField("hasPreviousPage", type: .nonNull(.scalar(Bool.self))), + GraphQLField("endCursor", type: .scalar(String.self)), + GraphQLField("startCursor", type: .scalar(String.self)), ] } @@ -3100,8 +4018,8 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { self.resultMap = unsafeResultMap } - public init(endCursor: String? = nil, hasNextPage: Bool) { - self.init(unsafeResultMap: ["__typename": "PageInfo", "endCursor": endCursor, "hasNextPage": hasNextPage]) + public init(hasNextPage: Bool, hasPreviousPage: Bool, endCursor: String? = nil, startCursor: String? = nil) { + self.init(unsafeResultMap: ["__typename": "PageInfo", "hasNextPage": hasNextPage, "hasPreviousPage": hasPreviousPage, "endCursor": endCursor, "startCursor": startCursor]) } public var __typename: String { @@ -3113,6 +4031,26 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { } } + /// When paginating forwards, are there more items? + public var hasNextPage: Bool { + get { + return resultMap["hasNextPage"]! as! Bool + } + set { + resultMap.updateValue(newValue, forKey: "hasNextPage") + } + } + + /// When paginating backwards, are there more items? + public var hasPreviousPage: Bool { + get { + return resultMap["hasPreviousPage"]! as! Bool + } + set { + resultMap.updateValue(newValue, forKey: "hasPreviousPage") + } + } + /// When paginating forwards, the cursor to continue. public var endCursor: String? { get { @@ -3123,13 +4061,39 @@ public final class SearchWorkEpisodesQuery: GraphQLQuery { } } - /// When paginating forwards, are there more items? - public var hasNextPage: Bool { + /// When paginating backwards, the cursor to continue. + public var startCursor: String? { get { - return resultMap["hasNextPage"]! as! Bool + return resultMap["startCursor"] as? String } set { - resultMap.updateValue(newValue, forKey: "hasNextPage") + resultMap.updateValue(newValue, forKey: "startCursor") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var pageInfoFragment: PageInfoFragment { + get { + return PageInfoFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } } } } @@ -5616,9 +6580,14 @@ public struct ReviewFragment: GraphQLFragment { __typename id annictId - createdAt + title body ratingAnimationState + ratingOverallState + ratingMusicState + ratingStoryState + ratingCharacterState + createdAt user { __typename ...UserFragment @@ -5637,9 +6606,14 @@ public struct ReviewFragment: GraphQLFragment { GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), - GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), + GraphQLField("title", type: .scalar(String.self)), GraphQLField("body", type: .nonNull(.scalar(String.self))), GraphQLField("ratingAnimationState", type: .scalar(RatingState.self)), + GraphQLField("ratingOverallState", type: .scalar(RatingState.self)), + GraphQLField("ratingMusicState", type: .scalar(RatingState.self)), + GraphQLField("ratingStoryState", type: .scalar(RatingState.self)), + GraphQLField("ratingCharacterState", type: .scalar(RatingState.self)), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), GraphQLField("user", type: .nonNull(.object(User.selections))), GraphQLField("work", type: .nonNull(.object(Work.selections))), ] @@ -5651,8 +6625,8 @@ public struct ReviewFragment: GraphQLFragment { self.resultMap = unsafeResultMap } - public init(id: GraphQLID, annictId: Int, createdAt: String, body: String, ratingAnimationState: RatingState? = nil, user: User, work: Work) { - self.init(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "createdAt": createdAt, "body": body, "ratingAnimationState": ratingAnimationState, "user": user.resultMap, "work": work.resultMap]) + public init(id: GraphQLID, annictId: Int, title: String? = nil, body: String, ratingAnimationState: RatingState? = nil, ratingOverallState: RatingState? = nil, ratingMusicState: RatingState? = nil, ratingStoryState: RatingState? = nil, ratingCharacterState: RatingState? = nil, createdAt: String, user: User, work: Work) { + self.init(unsafeResultMap: ["__typename": "Review", "id": id, "annictId": annictId, "title": title, "body": body, "ratingAnimationState": ratingAnimationState, "ratingOverallState": ratingOverallState, "ratingMusicState": ratingMusicState, "ratingStoryState": ratingStoryState, "ratingCharacterState": ratingCharacterState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap]) } public var __typename: String { @@ -5682,12 +6656,12 @@ public struct ReviewFragment: GraphQLFragment { } } - public var createdAt: String { + public var title: String? { get { - return resultMap["createdAt"]! as! String + return resultMap["title"] as? String } set { - resultMap.updateValue(newValue, forKey: "createdAt") + resultMap.updateValue(newValue, forKey: "title") } } @@ -5709,6 +6683,51 @@ public struct ReviewFragment: GraphQLFragment { } } + public var ratingOverallState: RatingState? { + get { + return resultMap["ratingOverallState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingOverallState") + } + } + + public var ratingMusicState: RatingState? { + get { + return resultMap["ratingMusicState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingMusicState") + } + } + + public var ratingStoryState: RatingState? { + get { + return resultMap["ratingStoryState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingStoryState") + } + } + + public var ratingCharacterState: RatingState? { + get { + return resultMap["ratingCharacterState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingCharacterState") + } + } + + public var createdAt: String { + get { + return resultMap["createdAt"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "createdAt") + } + } + public var user: User { get { return User(unsafeResultMap: resultMap["user"]! as! ResultMap) @@ -5989,3 +7008,88 @@ public struct ReviewFragment: GraphQLFragment { } } } + +public struct PageInfoFragment: GraphQLFragment { + /// The raw GraphQL definition of this fragment. + public static let fragmentDefinition: String = + """ + fragment PageInfoFragment on PageInfo { + __typename + hasNextPage + hasPreviousPage + endCursor + startCursor + } + """ + + public static let possibleTypes: [String] = ["PageInfo"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("hasNextPage", type: .nonNull(.scalar(Bool.self))), + GraphQLField("hasPreviousPage", type: .nonNull(.scalar(Bool.self))), + GraphQLField("endCursor", type: .scalar(String.self)), + GraphQLField("startCursor", type: .scalar(String.self)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(hasNextPage: Bool, hasPreviousPage: Bool, endCursor: String? = nil, startCursor: String? = nil) { + self.init(unsafeResultMap: ["__typename": "PageInfo", "hasNextPage": hasNextPage, "hasPreviousPage": hasPreviousPage, "endCursor": endCursor, "startCursor": startCursor]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// When paginating forwards, are there more items? + public var hasNextPage: Bool { + get { + return resultMap["hasNextPage"]! as! Bool + } + set { + resultMap.updateValue(newValue, forKey: "hasNextPage") + } + } + + /// When paginating backwards, are there more items? + public var hasPreviousPage: Bool { + get { + return resultMap["hasPreviousPage"]! as! Bool + } + set { + resultMap.updateValue(newValue, forKey: "hasPreviousPage") + } + } + + /// When paginating forwards, the cursor to continue. + public var endCursor: String? { + get { + return resultMap["endCursor"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "endCursor") + } + } + + /// When paginating backwards, the cursor to continue. + public var startCursor: String? { + get { + return resultMap["startCursor"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "startCursor") + } + } +} diff --git a/Sources/Common/API/Query/Fragments.graphql b/Sources/Common/API/Query/Fragments.graphql index fb3a880f..262406ee 100644 --- a/Sources/Common/API/Query/Fragments.graphql +++ b/Sources/Common/API/Query/Fragments.graphql @@ -58,15 +58,27 @@ fragment UserFragment on User { } fragment ReviewFragment on Review { - id - annictId - createdAt - body - ratingAnimationState - user { - ...UserFragment - } - work { - ...WorkFragment - } + id + annictId + title + body + ratingAnimationState + ratingOverallState + ratingMusicState + ratingStoryState + ratingCharacterState + createdAt + user { + ...UserFragment + } + work { + ...WorkFragment + } +} + +fragment PageInfoFragment on PageInfo { + hasNextPage + hasPreviousPage + endCursor + startCursor } diff --git a/Sources/Common/API/Query/SearchWorkReviews.graphql b/Sources/Common/API/Query/SearchWorkReviews.graphql new file mode 100644 index 00000000..73863b90 --- /dev/null +++ b/Sources/Common/API/Query/SearchWorkReviews.graphql @@ -0,0 +1,17 @@ +query SearchWorkReviews($workAnnictId: Int!, $first: Int, $after: String) { + searchWorks(annictIds: [$workAnnictId]) { + nodes { + ...WorkFragment + reviews(first: $first, after: $after, orderBy: {direction: DESC, field: CREATED_AT}, hasBody: true) { + edges { + node { + ...ReviewFragment + } + } + pageInfo { + ...PageInfoFragment + } + } + } + } +} diff --git a/Sources/Common/Extension/Color.swift b/Sources/Common/Extension/Color.swift new file mode 100644 index 00000000..c6b6eaa7 --- /dev/null +++ b/Sources/Common/Extension/Color.swift @@ -0,0 +1,26 @@ +// +// Color.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/17. +// + +import SwiftUI + +extension Color { + init(hex: Int, alpha: Double = 1) { + let components = ( + R: Double((hex >> 16) & 0xff) / 255, + G: Double((hex >> 08) & 0xff) / 255, + B: Double((hex >> 00) & 0xff) / 255 + ) + self.init( + .sRGB, + red: components.R, + green: components.G, + blue: components.B, + opacity: alpha + ) + } +} + diff --git a/Sources/Common/Extension/Dummy.swift b/Sources/Common/Extension/Dummy.swift new file mode 100644 index 00000000..d382d0e6 --- /dev/null +++ b/Sources/Common/Extension/Dummy.swift @@ -0,0 +1,34 @@ +// +// Dummy.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/17. +// + +import Foundation + +extension ReviewFragment { + static var dummy: ReviewFragment { + ReviewFragment(id: "", annictId: 0, body: "良い作品だった", ratingAnimationState: .good, createdAt: "2021-01-06T17:20:54Z", user: .init(unsafeResultMap: UserFragment.dummy.resultMap), work: .init(unsafeResultMap: WorkFragment.dummy.resultMap)) + } +} + +extension UserFragment { + static var dummy: UserFragment { + UserFragment(id: "user", name: "touyu", username: "touyu", avatarUrl: "https://api-assets.annict.com/shrine/profile/5482/image/master-70884f30052922f4f758e6eb69dc6985.jpg", description: "") + } +} + +extension WorkFragment { + static var dummy: WorkFragment { + WorkFragment(id: "", annictId: 6524, title: "PSYCHO-PASS", episodesCount: 0, watchersCount: 0, reviewsCount: 0, media: .tv) + } + + static var dummy2: WorkFragment { + WorkFragment(id: "", annictId: 0, title: "No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0, media: .tv) + } + + static var dummy3: WorkFragment { + WorkFragment(id: "", annictId: 6524, title: "No Title No Title No Title No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0, media: .tv) + } +} diff --git a/Sources/Common/Extension/Model+Extension.swift b/Sources/Common/Extension/Model+Extension.swift index 78ecffb2..8b9edce2 100644 --- a/Sources/Common/Extension/Model+Extension.swift +++ b/Sources/Common/Extension/Model+Extension.swift @@ -142,10 +142,6 @@ extension Media { } } -extension UserFragment { - static var dummy = UserFragment(id: "user", name: "touyu", username: "touyu", description: "") -} - // GraphQL extension SearchWorksBySeasonQuery.Data.SearchWork { diff --git a/Sources/Home/ActivityReviewView.swift b/Sources/Home/ActivityReviewView.swift index 90f352fd..00b398d2 100644 --- a/Sources/Home/ActivityReviewView.swift +++ b/Sources/Home/ActivityReviewView.swift @@ -43,13 +43,7 @@ struct ActivityReviewView: View { struct ActivityReviewView_Previews: PreviewProvider { static var previews: some View { - let review = ReviewFragment(id: "", - annictId: 0, - createdAt: "", - body: "面白い作品だった", - ratingAnimationState: RatingState.good, - user: .init(unsafeResultMap: UserFragment.dummy.resultMap), - work: .init(unsafeResultMap: WorkFragment.dummy.resultMap)) + let review = ReviewFragment(id: "", annictId: 0, body: "", createdAt: "", user: .init(unsafeResultMap: UserFragment.dummy.resultMap), work: .init(unsafeResultMap: WorkFragment.dummy.resultMap)) ActivityReviewView(review: .constant(review)) .previewLayout(.fixed(width: 375, height: 200)) } diff --git a/Sources/Work/WorkEpisodeCell.swift b/Sources/Work/WorkEpisodeCell.swift new file mode 100644 index 00000000..81d1e95b --- /dev/null +++ b/Sources/Work/WorkEpisodeCell.swift @@ -0,0 +1,35 @@ +// +// WorkEpisodeCell.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/17. +// + +import SwiftUI + +struct WorkEpisodeCell: View { + let episode: EpisodeFragment + + var body: some View { + HStack { + VStack(alignment: .leading) { + Text(episode.numberText ?? "Unknown") + .font(.system(size: 14)) + Text(episode.title ?? "Unknown") + .font(.system(size: 16)) + } + Spacer() + Text("\(episode.viewerRecordsCount)") + .frame(height: 20) + .padding(EdgeInsets(top: 4, leading: 16, bottom: 4, trailing: 16)) + .background(Color.secondarySystemBackground) + .cornerRadius(18) + } + } +} + +struct WorkEpisodeCell_Previews: PreviewProvider { + static var previews: some View { + WorkEpisodeCell(episode: .init(id: "", annictId: 0, viewerRecordsCount: 0)) + } +} diff --git a/Sources/Work/WorkHeaderView.swift b/Sources/Work/WorkHeaderView.swift index c3f643e0..7f7d7282 100644 --- a/Sources/Work/WorkHeaderView.swift +++ b/Sources/Work/WorkHeaderView.swift @@ -27,12 +27,12 @@ struct WorkHeaderView: View { WorkImage(workID: work.annictId) .plceholderFont(.system(size: 64)) .aspectRatio(contentMode: .fill) - .frame(width: geometry.size.width, height: geometry.size.width * 1.5) + .frame(width: geometry.size.width, height: geometry.size.width * 1.4) ZStack(alignment: .bottomLeading) { LinearGradient(gradient: gradient, startPoint: .top, endPoint: .bottom) - .frame(width: geometry.size.width, height: geometry.size.width * 1.51) // チラつきを防ぐために画像より大きめに + .frame(width: geometry.size.width, height: geometry.size.width * 1.41) // チラつきを防ぐために画像より大きめに Text(work.title) .font(.title) .fontWeight(.bold) @@ -51,17 +51,3 @@ struct WorkHeaderView_Previews: PreviewProvider { WorkHeaderView(work: .dummy2) } } - -extension WorkFragment { - static var dummy: WorkFragment { - WorkFragment(id: "", annictId: 6524, title: "PSYCHO-PASS", episodesCount: 0, watchersCount: 0, reviewsCount: 0, media: .tv) - } - - static var dummy2: WorkFragment { - WorkFragment(id: "", annictId: 0, title: "No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0, media: .tv) - } - - static var dummy3: WorkFragment { - WorkFragment(id: "", annictId: 6524, title: "No Title No Title No Title No Title No Title No Title", episodesCount: 0, watchersCount: 0, reviewsCount: 0, media: .tv) - } -} diff --git a/Sources/Work/WorkMoreButton.swift b/Sources/Work/WorkMoreButton.swift new file mode 100644 index 00000000..fa2bdaf7 --- /dev/null +++ b/Sources/Work/WorkMoreButton.swift @@ -0,0 +1,40 @@ +// +// WorkMoreButton.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/17. +// + +import SwiftUI + +struct WorkMoreButton: View { + let action: () -> Void + + init(action: @escaping () -> Void) { + self.action = action + } + + var body: some View { + Button(action: { + action() + }, label: { + Text("もっと見る") + .font(.system(size: 14)) + .foregroundColor(.primary) + + }) + .frame(height: 24) + .padding(EdgeInsets(top: 8, leading: 16, bottom: 8, trailing: 16)) + .background(Color.secondarySystemBackground) + .cornerRadius(28) + } +} + +struct WorkMoreButton_Previews: PreviewProvider { + static var previews: some View { + WorkMoreButton { + + } + .previewLayout(.fixed(width: 200, height: 200)) + } +} diff --git a/Sources/Work/WorkReviewCell.swift b/Sources/Work/WorkReviewCell.swift new file mode 100644 index 00000000..118b1b83 --- /dev/null +++ b/Sources/Work/WorkReviewCell.swift @@ -0,0 +1,53 @@ +// +// WorkReviewCell.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/17. +// + +import SwiftUI +import KingfisherSwiftUI + +struct WorkReviewCell: View { + let review: ReviewFragment + + var body: some View { + HStack(alignment: .top, spacing: 8) { + KFImage(review.user.fragments.userFragment.avatarUrl) + .resizable() + .placeholder { + Color(hex: 0xE2E2E2) + .frame(maxWidth: .infinity, maxHeight: .infinity) + } + .frame(width: 40, height: 40) + .cornerRadius(20) + VStack(alignment: .leading, spacing: 12) { + HStack(alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) { + Text(review.user.fragments.userFragment.name) + .font(.system(size: 14, weight: .bold, design: .default)) + Text("@\(review.user.fragments.userFragment.username)") + .font(.system(size: 12, weight: .regular, design: .default)) + .foregroundColor(.gray) + Spacer() + Text(review.createdAt.toDate()?.toRelative()) + .font(.system(size: 12, weight: .regular, design: .default)) + .foregroundColor(.gray) + } + if let state = review.ratingAnimationState { + RatingStateView(ratingState: state) + } + if !review.body.isEmpty { + Text(review.body) + .font(.body) + } + } + } + } +} + +struct WorkReviewCell_Previews: PreviewProvider { + static var previews: some View { + WorkReviewCell(review: .dummy) + .previewLayout(.fixed(width: 375, height: 300)) + } +} diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index e6a987a8..d5e2dc0e 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -20,6 +20,10 @@ struct WorkView: View { @State var episodesPageInfo: SearchWorkEpisodesQuery.Data.SearchWork.Node.Episode.PageInfo? @State var isEpisodesLoading = false + @State var reviews: [ReviewFragment] = [] + @State var reviewsPageInfo: PageInfoFragment? + @State var isReviewsLoading = false + @State private var showingActionSheet = false init(workID: Int) { @@ -32,7 +36,7 @@ struct WorkView: View { if let work = work { LazyVStack(alignment: .leading, spacing: 24) { WorkHeaderView(work: work) - .frame(width: geometry.size.width, height: geometry.size.width * 1.5, alignment: .center) + .frame(width: geometry.size.width, height: geometry.size.width * 1.4, alignment: .center) StatusButton(state: work.viewerStatusState ?? .noState) { showingActionSheet = true } @@ -53,6 +57,9 @@ struct WorkView: View { if episodes.count > 0 { episodeSection(work: work) } + if reviews.count > 0 { + reviewsSection(work: work) + } // reviewsSection(work: work) // charactorsSection(work: work) } @@ -66,6 +73,7 @@ struct WorkView: View { .onAppear { fetch() fetchEpisodes() + fetchReviews() } } @@ -99,25 +107,33 @@ struct WorkView: View { } } - private func reviewsSection(work: SearchWorksByIdQuery.Data.SearchWork.Node) -> some View { - LazyVStack(alignment: .leading, spacing: 16) { - Text("Reviews \(work.episodesCount)") + private func reviewsSection(work: WorkFragment) -> some View { + LazyVStack(alignment: .leading, spacing: 20) { + Text("Reviews \(work.reviewsCount)") .font(.title2) .fontWeight(.bold) - ForEach(episodes.indices) { index in - if let episode = episodes[index] { - WorkEpisodeCell(episode: episode) + ForEach(reviews.indices, id: \.self) { index in + if let review = reviews[index] { + WorkReviewCell(review: review) } } - Button(action: { - - }, label: { - Spacer() - Text("もっと見る") - .font(.system(size: 14)) - Spacer() + if let reviewsPageInfo = reviewsPageInfo, reviewsPageInfo.hasNextPage == true { + HStack { + Spacer() + if isReviewsLoading { + ActivityIndicator() + .animated(true) + .style(.medium) + .frame(height: 40) - }) + } else { + WorkMoreButton { + fetchMoreReviews() + } + } + Spacer() + } + } } } @@ -155,7 +171,7 @@ struct WorkView: View { } private func fetchEpisodes() { - Network.shared.apollo.fetch(query: SearchWorkEpisodesQuery(workAnnictId: workID, first: 30)) { result in + Network.shared.apollo.fetch(query: SearchWorkEpisodesQuery(workAnnictId: workID, first: 5)) { result in switch result { case .success(let data): self.episodes = data.data?.searchWorks?.nodes?.first??.episodes?.edges?.compactMap { $0?.node?.fragments.episodeFragment } ?? [] @@ -195,80 +211,39 @@ struct WorkView: View { } } } -} - -struct WorkView_Previews: PreviewProvider { - static var previews: some View { - WorkView(workID: 865) - } -} -struct WorkEpisodeCell: View { - let episode: EpisodeFragment - - var body: some View { - HStack { - VStack(alignment: .leading) { - Text(episode.numberText ?? "Unknown") - .font(.system(size: 14)) - Text(episode.title ?? "Unknown") - .font(.system(size: 16)) + private func fetchReviews() { + Network.shared.apollo.fetch(query: SearchWorkReviewsQuery(workAnnictId: workID, first: 5, after: nil)) { result in + switch result { + case .success(let data): + self.reviews = data.data?.searchWorks?.nodes?.first??.reviews?.edges?.compactMap { $0?.node?.fragments.reviewFragment } ?? [] + self.reviewsPageInfo = data.data?.searchWorks?.nodes?.first??.reviews?.pageInfo.fragments.pageInfoFragment + case .failure(let error): + print(error) } - Spacer() - Text("\(episode.viewerRecordsCount)") - .frame(height: 20) - .padding(EdgeInsets(top: 4, leading: 16, bottom: 4, trailing: 16)) - .background(Color.secondarySystemBackground) - .cornerRadius(18) } } -} - -struct WorkMoreButton: View { - let action: () -> Void - - init(action: @escaping () -> Void) { - self.action = action - } - - var body: some View { - Button(action: { - action() - }, label: { - Text("もっと見る") - .font(.system(size: 14)) - .foregroundColor(.primary) - - }) - .frame(height: 24) - .padding(EdgeInsets(top: 8, leading: 16, bottom: 8, trailing: 16)) - .background(Color.secondarySystemBackground) - .cornerRadius(28) - } -} - -struct WorkMoreButton_Previews: PreviewProvider { - static var previews: some View { - WorkMoreButton { + private func fetchMoreReviews() { + isReviewsLoading = true + guard let pageInfo = reviewsPageInfo else { return } + guard pageInfo.hasNextPage else { return } + Network.shared.apollo.fetch(query: SearchWorkReviewsQuery(workAnnictId: workID, first: 30, after: pageInfo.endCursor)) { result in + switch result { + case .success(let data): + let nodes = data.data?.searchWorks?.nodes?.first??.reviews?.edges?.compactMap { $0?.node?.fragments.reviewFragment } ?? [] + self.reviews.append(contentsOf: nodes) + self.reviewsPageInfo = data.data?.searchWorks?.nodes?.first??.reviews?.pageInfo.fragments.pageInfoFragment + isReviewsLoading = false + case .failure(let error): + print(error) + } } - .previewLayout(.fixed(width: 200, height: 200)) } } -extension Color { - init(hex: Int, alpha: Double = 1) { - let components = ( - R: Double((hex >> 16) & 0xff) / 255, - G: Double((hex >> 08) & 0xff) / 255, - B: Double((hex >> 00) & 0xff) / 255 - ) - self.init( - .sRGB, - red: components.R, - green: components.G, - blue: components.B, - opacity: alpha - ) +struct WorkView_Previews: PreviewProvider { + static var previews: some View { + WorkView(workID: 865) } } diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 8f68982f..34c41658 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -1,5 +1,5 @@ { - "6c004fdf49fe0eb0fff3f8488ac0e096fad0793a4b8a563ed0e0b989b294b4d7": { + "328f1961c2207bf997267917c6b221c7f44418e0cda032daec3bafb7a6d5ac52": { "name": "GetFollowingActivities", "source": "query GetFollowingActivities($first: Int, $after: String) {\n viewer {\n __typename\n followingActivities(first: $first, after: $after, orderBy: {field: CREATED_AT, direction: DESC}) {\n __typename\n edges {\n __typename\n cursor\n node {\n __typename\n ... on Record {\n ...RecordFragment\n }\n ... on Review {\n ...ReviewFragment\n }\n ... on Status {\n ...StatusFragment\n }\n ... on MultipleRecord {\n id\n }\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n}" }, @@ -19,6 +19,10 @@ "name": "SearchWorkEpisodes", "source": "query SearchWorkEpisodes($workAnnictId: Int!, $first: Int, $after: String) {\n searchWorks(annictIds: [$workAnnictId]) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: $first, after: $after, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...EpisodeFragment\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n }\n}" }, + "e67b4908d042fb41b1fdc01d085ca5651cb89d9187b3dcd1483ad1ad1dd953b2": { + "name": "SearchWorkReviews", + "source": "query SearchWorkReviews($workAnnictId: Int!, $first: Int, $after: String) {\n searchWorks(annictIds: [$workAnnictId]) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n reviews(first: $first, after: $after, orderBy: {direction: DESC, field: CREATED_AT}, hasBody: true) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...ReviewFragment\n }\n }\n pageInfo {\n __typename\n ...PageInfoFragment\n }\n }\n }\n }\n}" + }, "5e9902975ee56d522b235f58534e946edcdcda99e767b6c9a23b7edbe894263e": { "name": "SearchWorksByID", "source": "query SearchWorksByID($annictId: Int!, $after: String) {\n searchWorks(annictIds: [$annictId], after: $after) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: 5, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n nodes {\n __typename\n id\n annictId\n title\n numberText\n viewerRecordsCount\n }\n }\n }\n }\n}" From d13dd5ffd96273635d9b6761648bd00b227d54f2 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 18 Jan 2021 00:47:15 +0900 Subject: [PATCH 054/101] Impl reviews --- Sources/Common/Extension/Dummy.swift | 16 ++++- Sources/Home/ActivityReviewView.swift | 2 +- Sources/Work/WorkReviewCell.swift | 84 ++++++++++++++++++++++++++- Sources/Work/WorkView.swift | 2 +- 4 files changed, 99 insertions(+), 5 deletions(-) diff --git a/Sources/Common/Extension/Dummy.swift b/Sources/Common/Extension/Dummy.swift index d382d0e6..96226daf 100644 --- a/Sources/Common/Extension/Dummy.swift +++ b/Sources/Common/Extension/Dummy.swift @@ -9,7 +9,21 @@ import Foundation extension ReviewFragment { static var dummy: ReviewFragment { - ReviewFragment(id: "", annictId: 0, body: "良い作品だった", ratingAnimationState: .good, createdAt: "2021-01-06T17:20:54Z", user: .init(unsafeResultMap: UserFragment.dummy.resultMap), work: .init(unsafeResultMap: WorkFragment.dummy.resultMap)) + ReviewFragment(id: "", annictId: 0, body: "良い作品だった", ratingOverallState: .good, createdAt: "2021-01-06T17:20:54Z", user: .init(unsafeResultMap: UserFragment.dummy.resultMap), work: .init(unsafeResultMap: WorkFragment.dummy.resultMap)) + } + + static var dummy2: ReviewFragment { + ReviewFragment(id: "", + annictId: 0, + body: "良い作品だった", + ratingAnimationState: .good, + ratingOverallState: .great, + ratingMusicState: .average, + ratingStoryState: .bad, + ratingCharacterState: .great, + createdAt: "2021-01-06T17:20:54Z", + user: .init(unsafeResultMap: UserFragment.dummy.resultMap), + work: .init(unsafeResultMap: WorkFragment.dummy.resultMap)) } } diff --git a/Sources/Home/ActivityReviewView.swift b/Sources/Home/ActivityReviewView.swift index 00b398d2..62c35482 100644 --- a/Sources/Home/ActivityReviewView.swift +++ b/Sources/Home/ActivityReviewView.swift @@ -30,7 +30,7 @@ struct ActivityReviewView: View { .font(.system(size: 12, weight: .regular, design: .default)) .foregroundColor(.gray) } - if let state = review.ratingAnimationState { + if let state = review.ratingOverallState { RatingStateView(ratingState: state) } Text(review.body) diff --git a/Sources/Work/WorkReviewCell.swift b/Sources/Work/WorkReviewCell.swift index 118b1b83..009e4d81 100644 --- a/Sources/Work/WorkReviewCell.swift +++ b/Sources/Work/WorkReviewCell.swift @@ -33,8 +33,12 @@ struct WorkReviewCell: View { .font(.system(size: 12, weight: .regular, design: .default)) .foregroundColor(.gray) } - if let state = review.ratingAnimationState { - RatingStateView(ratingState: state) + if let _ = review.ratingOverallState { + AllRatingsStateView(review: review) + .padding(16) + .background(Color.secondarySystemBackground) + .cornerRadius(8) + .previewLayout(.fixed(width: 300, height: 300)) } if !review.body.isEmpty { Text(review.body) @@ -49,5 +53,81 @@ struct WorkReviewCell_Previews: PreviewProvider { static var previews: some View { WorkReviewCell(review: .dummy) .previewLayout(.fixed(width: 375, height: 300)) + WorkReviewCell(review: .dummy2) + .previewLayout(.fixed(width: 375, height: 300)) + } +} + +struct AllRatingsStateView: View { + let review: ReviewFragment + + var body: some View { + VStack(alignment: .center, spacing: 4) { + Text("評価") + .font(.system(size: 14), weight: .bold) + HStack(alignment: .center) { + if let ratingAnimationState = review.ratingAnimationState { + Text("映像") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingAnimationState) + .frame(width: 74, alignment: .leading) + } + } + HStack(alignment: .center) { + if let ratingMusicState = review.ratingMusicState { + Text("音楽") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingMusicState) + .frame(width: 74, alignment: .leading) + } + } + HStack(alignment: .center) { + if let ratingStoryState = review.ratingStoryState { + Text("ストーリー") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingStoryState) + .frame(width: 74, alignment: .leading) + } + } + HStack(alignment: .center) { + if let ratingCharacterState = review.ratingCharacterState { + Text("キャラクター") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingCharacterState) + .frame(width: 74, alignment: .leading) + } + } + HStack(alignment: .center) { + if let ratingOverallState = review.ratingOverallState { + Text("全体") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingOverallState) + .frame(width: 74, alignment: .leading) + } + } + } + } +} + +struct AllRatingsStateView_Previews: PreviewProvider { + static var previews: some View { + AllRatingsStateView(review: .dummy) + .frame(width: 200) + .padding(16) + .background(Color.secondarySystemBackground) + .cornerRadius(8) + .previewLayout(.fixed(width: 300, height: 300)) + + AllRatingsStateView(review: .dummy2) + .frame(width: 200) + .padding(16) + .background(Color.secondarySystemBackground) + .cornerRadius(8) + .previewLayout(.fixed(width: 300, height: 300)) } } diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index d5e2dc0e..98fe1d61 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -108,7 +108,7 @@ struct WorkView: View { } private func reviewsSection(work: WorkFragment) -> some View { - LazyVStack(alignment: .leading, spacing: 20) { + LazyVStack(alignment: .leading, spacing: 24) { Text("Reviews \(work.reviewsCount)") .font(.title2) .fontWeight(.bold) From eb93f7fa4b062d6e3b22da0700bbe97d8f8910f2 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 18 Jan 2021 01:43:07 +0900 Subject: [PATCH 055/101] Impl episode view --- Portannict.xcodeproj/project.pbxproj | 24 +++++- Sources/Common/Extension/Identifiable.swift | 13 +++ .../Common/Views/AllRatingsStateView.swift | 83 +++++++++++++++++++ .../Views}/RatingStateView.swift | 0 Sources/Episode/EpisodeView.swift | 32 +++++++ Sources/Work/WorkReviewCell.swift | 74 ----------------- Sources/Work/WorkView.swift | 44 +++++++--- 7 files changed, 183 insertions(+), 87 deletions(-) create mode 100644 Sources/Common/Extension/Identifiable.swift create mode 100644 Sources/Common/Views/AllRatingsStateView.swift rename Sources/{Home => Common/Views}/RatingStateView.swift (100%) create mode 100644 Sources/Episode/EpisodeView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 80240e34..50391b9d 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -29,6 +29,9 @@ CF3B2FDD25B484F20017A7C0 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FDC25B484F20017A7C0 /* Color.swift */; }; CF3B2FDF25B485230017A7C0 /* WorkReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FDE25B485230017A7C0 /* WorkReviewCell.swift */; }; CF3B2FE125B485DC0017A7C0 /* Dummy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FE025B485DC0017A7C0 /* Dummy.swift */; }; + CF3B2FE325B493960017A7C0 /* AllRatingsStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FE225B493960017A7C0 /* AllRatingsStateView.swift */; }; + CF3BC74D25B495E90046631F /* EpisodeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3BC74C25B495E90046631F /* EpisodeView.swift */; }; + CF3BC74F25B4A0590046631F /* Identifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3BC74E25B4A0590046631F /* Identifiable.swift */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */; }; @@ -111,6 +114,9 @@ CF3B2FDC25B484F20017A7C0 /* Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = ""; }; CF3B2FDE25B485230017A7C0 /* WorkReviewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkReviewCell.swift; sourceTree = ""; }; CF3B2FE025B485DC0017A7C0 /* Dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dummy.swift; sourceTree = ""; }; + CF3B2FE225B493960017A7C0 /* AllRatingsStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllRatingsStateView.swift; sourceTree = ""; }; + CF3BC74C25B495E90046631F /* EpisodeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeView.swift; sourceTree = ""; }; + CF3BC74E25B4A0590046631F /* Identifiable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Identifiable.swift; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictSeason.swift; sourceTree = ""; }; @@ -188,12 +194,13 @@ isa = PBXGroup; children = ( CF1E5E88259CF69E00035D50 /* API.swift */, + CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */, CFE38316258E621400CEE318 /* Common */, CFB8D8B9255D18740092764B /* Root */, - CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */, CF841D3E24CA67F600F3723B /* Login */, CFFE4FFA24C9BF1A003AECE5 /* Home */, CFFDC8A6259C6EE9001C8E29 /* Work */, + CF3BC74B25B495D70046631F /* Episode */, CFE7E5C325A6D64E009EB3DC /* Profile */, CFE7E5C625A6E6C3009EB3DC /* User */, CFE7E5D525A70764009EB3DC /* Record */, @@ -233,6 +240,14 @@ path = Query; sourceTree = ""; }; + CF3BC74B25B495D70046631F /* Episode */ = { + isa = PBXGroup; + children = ( + CF3BC74C25B495E90046631F /* EpisodeView.swift */, + ); + path = Episode; + sourceTree = ""; + }; CF841D3E24CA67F600F3723B /* Login */ = { isa = PBXGroup; children = ( @@ -246,6 +261,8 @@ isa = PBXGroup; children = ( CF3B2FD225B44F680017A7C0 /* StatusButton.swift */, + CFD82D3425A630E7005401AF /* RatingStateView.swift */, + CF3B2FE225B493960017A7C0 /* AllRatingsStateView.swift */, ); path = Views; sourceTree = ""; @@ -266,6 +283,7 @@ CFD82D3625A63915005401AF /* Model+Extension.swift */, CF3B2FDC25B484F20017A7C0 /* Color.swift */, CF3B2FE025B485DC0017A7C0 /* Dummy.swift */, + CF3BC74E25B4A0590046631F /* Identifiable.swift */, ); path = Extension; sourceTree = ""; @@ -364,7 +382,6 @@ CFB9BA75259DCA7500C51708 /* ActivityRecordView.swift */, CFFE4FFB24C9C00D003AECE5 /* ActivityStatusView.swift */, CFE7E5CF25A6F6BA009EB3DC /* ActivityReviewView.swift */, - CFD82D3425A630E7005401AF /* RatingStateView.swift */, CFFE4FFD24C9C266003AECE5 /* QuoteWorkView.swift */, ); path = Home; @@ -508,6 +525,7 @@ CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, CF3B2FDB25B484DC0017A7C0 /* WorkMoreButton.swift in Sources */, CFBB73B725A575D700601DCB /* KFImage.swift in Sources */, + CF3BC74D25B495E90046631F /* EpisodeView.swift in Sources */, CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */, @@ -516,6 +534,7 @@ CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */, CF3B2FDD25B484F20017A7C0 /* Color.swift in Sources */, CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */, + CF3B2FE325B493960017A7C0 /* AllRatingsStateView.swift in Sources */, CFE7E5CA25A6E71C009EB3DC /* UserHeaderView.swift in Sources */, CF3B2FDF25B485230017A7C0 /* WorkReviewCell.swift in Sources */, CF841D4524CA69A600F3723B /* LoginView.swift in Sources */, @@ -534,6 +553,7 @@ CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */, CFE7E5C825A6E6D7009EB3DC /* UserView.swift in Sources */, CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */, + CF3BC74F25B4A0590046631F /* Identifiable.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Sources/Common/Extension/Identifiable.swift b/Sources/Common/Extension/Identifiable.swift new file mode 100644 index 00000000..2dff2247 --- /dev/null +++ b/Sources/Common/Extension/Identifiable.swift @@ -0,0 +1,13 @@ +// +// Identifiable.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/18. +// + +import Foundation + +extension Identifiable where Self: Hashable { + public typealias ID = Self + public var id: Self { self } +} diff --git a/Sources/Common/Views/AllRatingsStateView.swift b/Sources/Common/Views/AllRatingsStateView.swift new file mode 100644 index 00000000..007d408e --- /dev/null +++ b/Sources/Common/Views/AllRatingsStateView.swift @@ -0,0 +1,83 @@ +// +// AllRatingsStateView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/18. +// + +import SwiftUI + +struct AllRatingsStateView: View { + let review: ReviewFragment + + var body: some View { + VStack(alignment: .center, spacing: 4) { + Text("評価") + .font(.system(size: 14), weight: .bold) + HStack(alignment: .center) { + if let ratingAnimationState = review.ratingAnimationState { + Text("映像") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingAnimationState) + .frame(width: 74, alignment: .leading) + } + } + HStack(alignment: .center) { + if let ratingMusicState = review.ratingMusicState { + Text("音楽") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingMusicState) + .frame(width: 74, alignment: .leading) + } + } + HStack(alignment: .center) { + if let ratingStoryState = review.ratingStoryState { + Text("ストーリー") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingStoryState) + .frame(width: 74, alignment: .leading) + } + } + HStack(alignment: .center) { + if let ratingCharacterState = review.ratingCharacterState { + Text("キャラクター") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingCharacterState) + .frame(width: 74, alignment: .leading) + } + } + HStack(alignment: .center) { + if let ratingOverallState = review.ratingOverallState { + Text("全体") + .font(.system(size: 14)) + Spacer() + RatingStateView(ratingState: ratingOverallState) + .frame(width: 74, alignment: .leading) + } + } + } + } +} + +struct AllRatingsStateView_Previews: PreviewProvider { + static var previews: some View { + AllRatingsStateView(review: .dummy) + .frame(width: 200) + .padding(16) + .background(Color.secondarySystemBackground) + .cornerRadius(8) + .previewLayout(.fixed(width: 300, height: 300)) + + AllRatingsStateView(review: .dummy2) + .frame(width: 200) + .padding(16) + .background(Color.secondarySystemBackground) + .cornerRadius(8) + .previewLayout(.fixed(width: 300, height: 300)) + } +} + diff --git a/Sources/Home/RatingStateView.swift b/Sources/Common/Views/RatingStateView.swift similarity index 100% rename from Sources/Home/RatingStateView.swift rename to Sources/Common/Views/RatingStateView.swift diff --git a/Sources/Episode/EpisodeView.swift b/Sources/Episode/EpisodeView.swift new file mode 100644 index 00000000..31440d88 --- /dev/null +++ b/Sources/Episode/EpisodeView.swift @@ -0,0 +1,32 @@ +// +// EpisodeView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/18. +// + +import SwiftUI + +struct EpisodeView: View { + let episode: EpisodeFragment + + var body: some View { + ScrollView(.vertical) { + LazyVStack(alignment: .leading, spacing: 8) { + VStack(alignment: .leading, spacing: 4) { + Text(episode.numberText) + .font(.headline, weight: .bold) + Text(episode.title) + .font(.title, weight: .bold) + } + .padding(EdgeInsets(top: 16, leading: 16, bottom: 16, trailing: 16)) + } + } + } +} + +struct EpisodeView_Previews: PreviewProvider { + static var previews: some View { + EpisodeView(episode: .init(id: "", annictId: 0, title: "魔神が生まれた日", numberText: "第1話", viewerRecordsCount: 0)) + } +} diff --git a/Sources/Work/WorkReviewCell.swift b/Sources/Work/WorkReviewCell.swift index 009e4d81..3c60c60a 100644 --- a/Sources/Work/WorkReviewCell.swift +++ b/Sources/Work/WorkReviewCell.swift @@ -57,77 +57,3 @@ struct WorkReviewCell_Previews: PreviewProvider { .previewLayout(.fixed(width: 375, height: 300)) } } - -struct AllRatingsStateView: View { - let review: ReviewFragment - - var body: some View { - VStack(alignment: .center, spacing: 4) { - Text("評価") - .font(.system(size: 14), weight: .bold) - HStack(alignment: .center) { - if let ratingAnimationState = review.ratingAnimationState { - Text("映像") - .font(.system(size: 14)) - Spacer() - RatingStateView(ratingState: ratingAnimationState) - .frame(width: 74, alignment: .leading) - } - } - HStack(alignment: .center) { - if let ratingMusicState = review.ratingMusicState { - Text("音楽") - .font(.system(size: 14)) - Spacer() - RatingStateView(ratingState: ratingMusicState) - .frame(width: 74, alignment: .leading) - } - } - HStack(alignment: .center) { - if let ratingStoryState = review.ratingStoryState { - Text("ストーリー") - .font(.system(size: 14)) - Spacer() - RatingStateView(ratingState: ratingStoryState) - .frame(width: 74, alignment: .leading) - } - } - HStack(alignment: .center) { - if let ratingCharacterState = review.ratingCharacterState { - Text("キャラクター") - .font(.system(size: 14)) - Spacer() - RatingStateView(ratingState: ratingCharacterState) - .frame(width: 74, alignment: .leading) - } - } - HStack(alignment: .center) { - if let ratingOverallState = review.ratingOverallState { - Text("全体") - .font(.system(size: 14)) - Spacer() - RatingStateView(ratingState: ratingOverallState) - .frame(width: 74, alignment: .leading) - } - } - } - } -} - -struct AllRatingsStateView_Previews: PreviewProvider { - static var previews: some View { - AllRatingsStateView(review: .dummy) - .frame(width: 200) - .padding(16) - .background(Color.secondarySystemBackground) - .cornerRadius(8) - .previewLayout(.fixed(width: 300, height: 300)) - - AllRatingsStateView(review: .dummy2) - .frame(width: 200) - .padding(16) - .background(Color.secondarySystemBackground) - .cornerRadius(8) - .previewLayout(.fixed(width: 300, height: 300)) - } -} diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index 98fe1d61..1ec82825 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -15,16 +15,29 @@ struct WorkView: View { let workID: Int - @State var work: WorkFragment? - @State var episodes: [EpisodeFragment] = [] - @State var episodesPageInfo: SearchWorkEpisodesQuery.Data.SearchWork.Node.Episode.PageInfo? - @State var isEpisodesLoading = false + @State private var work: WorkFragment? + @State private var episodes: [EpisodeFragment] = [] + @State private var episodesPageInfo: SearchWorkEpisodesQuery.Data.SearchWork.Node.Episode.PageInfo? + @State private var isEpisodesLoading = false - @State var reviews: [ReviewFragment] = [] - @State var reviewsPageInfo: PageInfoFragment? - @State var isReviewsLoading = false + @State private var reviews: [ReviewFragment] = [] + @State private var reviewsPageInfo: PageInfoFragment? + @State private var isReviewsLoading = false + @State private var selectedEpisode: EpisodeFragment? @State private var showingActionSheet = false + @State var presentation: Presentation? + + enum Presentation: View, Identifiable, Hashable { + case episode(EpisodeFragment) + + var body: some View { + switch self { + case .episode(let episode): + EpisodeView(episode: episode) + } + } + } init(workID: Int) { self.workID = workID @@ -60,8 +73,6 @@ struct WorkView: View { if reviews.count > 0 { reviewsSection(work: work) } - // reviewsSection(work: work) - // charactorsSection(work: work) } .padding(.init(top: 0, leading: 16, bottom: 48, trailing: 16)) } @@ -83,9 +94,14 @@ struct WorkView: View { .font(.title2) .fontWeight(.bold) ForEach(episodes.indices, id: \.self) { index in - if let episode = episodes[index] { + let episode = episodes[index] + Button(action: { + presentation = .episode(episode) + }, label: { WorkEpisodeCell(episode: episode) - } + .foregroundColor(.primary) + }) + .sheet(item: $presentation) { $0 } } if let episodesPageInfo = episodesPageInfo, episodesPageInfo.hasNextPage == true { HStack { @@ -247,3 +263,9 @@ struct WorkView_Previews: PreviewProvider { WorkView(workID: 865) } } + +extension EpisodeFragment: Identifiable, Hashable { + public func hash(into hasher: inout Hasher) { + id.hash(into: &hasher) + } +} From 4870f94eaccab4acbe252d5ae866cbee0fe17661 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 18 Jan 2021 02:16:05 +0900 Subject: [PATCH 056/101] Impl review --- Portannict.xcodeproj/project.pbxproj | 4 + Sources/API.swift | 858 ++++++++++++++++++ Sources/Common/API/Query/Fragments.graphql | 8 +- .../Common/API/Query/SearchEpisodes.graphql | 16 + Sources/Episode/EpisodeView.swift | 26 +- Sources/Home/ActivityRecordView.swift | 27 +- Sources/operationIDs.json | 4 + 7 files changed, 930 insertions(+), 13 deletions(-) create mode 100644 Sources/Common/API/Query/SearchEpisodes.graphql diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 50391b9d..97ef0eda 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -32,6 +32,7 @@ CF3B2FE325B493960017A7C0 /* AllRatingsStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3B2FE225B493960017A7C0 /* AllRatingsStateView.swift */; }; CF3BC74D25B495E90046631F /* EpisodeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3BC74C25B495E90046631F /* EpisodeView.swift */; }; CF3BC74F25B4A0590046631F /* Identifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3BC74E25B4A0590046631F /* Identifiable.swift */; }; + CF3BC75125B4A1A70046631F /* SearchEpisodes.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF3BC75025B4A1A70046631F /* SearchEpisodes.graphql */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */; }; @@ -117,6 +118,7 @@ CF3B2FE225B493960017A7C0 /* AllRatingsStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllRatingsStateView.swift; sourceTree = ""; }; CF3BC74C25B495E90046631F /* EpisodeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeView.swift; sourceTree = ""; }; CF3BC74E25B4A0590046631F /* Identifiable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Identifiable.swift; sourceTree = ""; }; + CF3BC75025B4A1A70046631F /* SearchEpisodes.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchEpisodes.graphql; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictSeason.swift; sourceTree = ""; }; @@ -236,6 +238,7 @@ CFBCA06425AB6B0E00C5386C /* UpdateStatus.graphql */, CF3B2FD025B42D1E0017A7C0 /* SearchWorkEpisodes.graphql */, CF3B2FD625B46F710017A7C0 /* SearchWorkReviews.graphql */, + CF3BC75025B4A1A70046631F /* SearchEpisodes.graphql */, ); path = Query; sourceTree = ""; @@ -475,6 +478,7 @@ CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, CF13E35025AAF38D005D11F8 /* SearchWorksBySeason.graphql in Resources */, CFE7E5D425A700E8009EB3DC /* GetViewerWorks.graphql in Resources */, + CF3BC75125B4A1A70046631F /* SearchEpisodes.graphql in Resources */, CF1E5E87259CF4CE00035D50 /* SearchWorksByID.graphql in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Sources/API.swift b/Sources/API.swift index a55ad133..9d5d4957 100644 --- a/Sources/API.swift +++ b/Sources/API.swift @@ -2655,6 +2655,864 @@ public final class GetViewerWorksQuery: GraphQLQuery { } } +public final class SearchEpisodeRecordsQuery: GraphQLQuery { + /// The raw GraphQL definition of this operation. + public let operationDefinition: String = + """ + query SearchEpisodeRecords($annictId: Int!, $first: Int, $after: String) { + searchEpisodes(first: 1, annictIds: [$annictId]) { + __typename + edges { + __typename + node { + __typename + ...EpisodeFragment + records(first: $first, after: $after, orderBy: {direction: DESC, field: CREATED_AT}, hasComment: true) { + __typename + edges { + __typename + node { + __typename + ...RecordFragment + } + } + } + } + } + } + } + """ + + public let operationName: String = "SearchEpisodeRecords" + + public let operationIdentifier: String? = "163a13c98eb8c34ab6b6ee97db879d653683ea4bbd1b4c735119412762ab203e" + + public var queryDocument: String { return operationDefinition.appending(EpisodeFragment.fragmentDefinition).appending(RecordFragment.fragmentDefinition).appending(UserFragment.fragmentDefinition).appending(WorkFragment.fragmentDefinition) } + + public var annictId: Int + public var first: Int? + public var after: String? + + public init(annictId: Int, first: Int? = nil, after: String? = nil) { + self.annictId = annictId + self.first = first + self.after = after + } + + public var variables: GraphQLMap? { + return ["annictId": annictId, "first": first, "after": after] + } + + public struct Data: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Query"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("searchEpisodes", arguments: ["first": 1, "annictIds": [GraphQLVariable("annictId")]], type: .object(SearchEpisode.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(searchEpisodes: SearchEpisode? = nil) { + self.init(unsafeResultMap: ["__typename": "Query", "searchEpisodes": searchEpisodes.flatMap { (value: SearchEpisode) -> ResultMap in value.resultMap }]) + } + + public var searchEpisodes: SearchEpisode? { + get { + return (resultMap["searchEpisodes"] as? ResultMap).flatMap { SearchEpisode(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "searchEpisodes") + } + } + + public struct SearchEpisode: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["EpisodeConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("edges", type: .list(.object(Edge.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(edges: [Edge?]? = nil) { + self.init(unsafeResultMap: ["__typename": "EpisodeConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of edges. + public var edges: [Edge?]? { + get { + return (resultMap["edges"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Edge?] in value.map { (value: ResultMap?) -> Edge? in value.flatMap { (value: ResultMap) -> Edge in Edge(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, forKey: "edges") + } + } + + public struct Edge: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["EpisodeEdge"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("node", type: .object(Node.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(node: Node? = nil) { + self.init(unsafeResultMap: ["__typename": "EpisodeEdge", "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// The item at the end of the edge. + public var node: Node? { + get { + return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "node") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .scalar(String.self)), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("records", arguments: ["first": GraphQLVariable("first"), "after": GraphQLVariable("after"), "orderBy": ["direction": "DESC", "field": "CREATED_AT"], "hasComment": true], type: .object(Record.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, viewerRecordsCount: Int, records: Record? = nil) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "viewerRecordsCount": viewerRecordsCount, "records": records.flatMap { (value: Record) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var viewerRecordsCount: Int { + get { + return resultMap["viewerRecordsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "viewerRecordsCount") + } + } + + public var records: Record? { + get { + return (resultMap["records"] as? ResultMap).flatMap { Record(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "records") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var episodeFragment: EpisodeFragment { + get { + return EpisodeFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + + public struct Record: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["RecordConnection"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("edges", type: .list(.object(Edge.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(edges: [Edge?]? = nil) { + self.init(unsafeResultMap: ["__typename": "RecordConnection", "edges": edges.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// A list of edges. + public var edges: [Edge?]? { + get { + return (resultMap["edges"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Edge?] in value.map { (value: ResultMap?) -> Edge? in value.flatMap { (value: ResultMap) -> Edge in Edge(unsafeResultMap: value) } } } + } + set { + resultMap.updateValue(newValue.flatMap { (value: [Edge?]) -> [ResultMap?] in value.map { (value: Edge?) -> ResultMap? in value.flatMap { (value: Edge) -> ResultMap in value.resultMap } } }, forKey: "edges") + } + } + + public struct Edge: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["RecordEdge"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("node", type: .object(Node.selections)), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(node: Node? = nil) { + self.init(unsafeResultMap: ["__typename": "RecordEdge", "node": node.flatMap { (value: Node) -> ResultMap in value.resultMap }]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + /// The item at the end of the edge. + public var node: Node? { + get { + return (resultMap["node"] as? ResultMap).flatMap { Node(unsafeResultMap: $0) } + } + set { + resultMap.updateValue(newValue?.resultMap, forKey: "node") + } + } + + public struct Node: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Record"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("comment", type: .scalar(String.self)), + GraphQLField("ratingState", type: .scalar(RatingState.self)), + GraphQLField("createdAt", type: .nonNull(.scalar(String.self))), + GraphQLField("user", type: .nonNull(.object(User.selections))), + GraphQLField("work", type: .nonNull(.object(Work.selections))), + GraphQLField("episode", type: .nonNull(.object(Episode.selections))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, comment: String? = nil, ratingState: RatingState? = nil, createdAt: String, user: User, work: Work, episode: Episode) { + self.init(unsafeResultMap: ["__typename": "Record", "id": id, "annictId": annictId, "comment": comment, "ratingState": ratingState, "createdAt": createdAt, "user": user.resultMap, "work": work.resultMap, "episode": episode.resultMap]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var comment: String? { + get { + return resultMap["comment"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "comment") + } + } + + public var ratingState: RatingState? { + get { + return resultMap["ratingState"] as? RatingState + } + set { + resultMap.updateValue(newValue, forKey: "ratingState") + } + } + + public var createdAt: String { + get { + return resultMap["createdAt"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "createdAt") + } + } + + public var user: User { + get { + return User(unsafeResultMap: resultMap["user"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "user") + } + } + + public var work: Work { + get { + return Work(unsafeResultMap: resultMap["work"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "work") + } + } + + public var episode: Episode { + get { + return Episode(unsafeResultMap: resultMap["episode"]! as! ResultMap) + } + set { + resultMap.updateValue(newValue.resultMap, forKey: "episode") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var recordFragment: RecordFragment { + get { + return RecordFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + + public struct User: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["User"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("username", type: .nonNull(.scalar(String.self))), + GraphQLField("avatarUrl", type: .scalar(String.self)), + GraphQLField("description", type: .nonNull(.scalar(String.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, name: String, username: String, avatarUrl: String? = nil, description: String) { + self.init(unsafeResultMap: ["__typename": "User", "id": id, "name": name, "username": username, "avatarUrl": avatarUrl, "description": description]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var name: String { + get { + return resultMap["name"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "name") + } + } + + public var username: String { + get { + return resultMap["username"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "username") + } + } + + public var avatarUrl: String? { + get { + return resultMap["avatarUrl"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "avatarUrl") + } + } + + public var description: String { + get { + return resultMap["description"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "description") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var userFragment: UserFragment { + get { + return UserFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + + public struct Work: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Work"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .nonNull(.scalar(String.self))), + GraphQLField("episodesCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("watchersCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("reviewsCount", type: .nonNull(.scalar(Int.self))), + GraphQLField("seasonName", type: .scalar(SeasonName.self)), + GraphQLField("seasonYear", type: .scalar(Int.self)), + GraphQLField("viewerStatusState", type: .scalar(StatusState.self)), + GraphQLField("media", type: .nonNull(.scalar(Media.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String, episodesCount: Int, watchersCount: Int, reviewsCount: Int, seasonName: SeasonName? = nil, seasonYear: Int? = nil, viewerStatusState: StatusState? = nil, media: Media) { + self.init(unsafeResultMap: ["__typename": "Work", "id": id, "annictId": annictId, "title": title, "episodesCount": episodesCount, "watchersCount": watchersCount, "reviewsCount": reviewsCount, "seasonName": seasonName, "seasonYear": seasonYear, "viewerStatusState": viewerStatusState, "media": media]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String { + get { + return resultMap["title"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var episodesCount: Int { + get { + return resultMap["episodesCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "episodesCount") + } + } + + public var watchersCount: Int { + get { + return resultMap["watchersCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "watchersCount") + } + } + + public var reviewsCount: Int { + get { + return resultMap["reviewsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "reviewsCount") + } + } + + public var seasonName: SeasonName? { + get { + return resultMap["seasonName"] as? SeasonName + } + set { + resultMap.updateValue(newValue, forKey: "seasonName") + } + } + + public var seasonYear: Int? { + get { + return resultMap["seasonYear"] as? Int + } + set { + resultMap.updateValue(newValue, forKey: "seasonYear") + } + } + + public var viewerStatusState: StatusState? { + get { + return resultMap["viewerStatusState"] as? StatusState + } + set { + resultMap.updateValue(newValue, forKey: "viewerStatusState") + } + } + + public var media: Media { + get { + return resultMap["media"]! as! Media + } + set { + resultMap.updateValue(newValue, forKey: "media") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var workFragment: WorkFragment { + get { + return WorkFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + + public struct Episode: GraphQLSelectionSet { + public static let possibleTypes: [String] = ["Episode"] + + public static var selections: [GraphQLSelection] { + return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), + GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), + GraphQLField("annictId", type: .nonNull(.scalar(Int.self))), + GraphQLField("title", type: .scalar(String.self)), + GraphQLField("numberText", type: .scalar(String.self)), + GraphQLField("viewerRecordsCount", type: .nonNull(.scalar(Int.self))), + ] + } + + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public init(id: GraphQLID, annictId: Int, title: String? = nil, numberText: String? = nil, viewerRecordsCount: Int) { + self.init(unsafeResultMap: ["__typename": "Episode", "id": id, "annictId": annictId, "title": title, "numberText": numberText, "viewerRecordsCount": viewerRecordsCount]) + } + + public var __typename: String { + get { + return resultMap["__typename"]! as! String + } + set { + resultMap.updateValue(newValue, forKey: "__typename") + } + } + + public var id: GraphQLID { + get { + return resultMap["id"]! as! GraphQLID + } + set { + resultMap.updateValue(newValue, forKey: "id") + } + } + + public var annictId: Int { + get { + return resultMap["annictId"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "annictId") + } + } + + public var title: String? { + get { + return resultMap["title"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "title") + } + } + + public var numberText: String? { + get { + return resultMap["numberText"] as? String + } + set { + resultMap.updateValue(newValue, forKey: "numberText") + } + } + + public var viewerRecordsCount: Int { + get { + return resultMap["viewerRecordsCount"]! as! Int + } + set { + resultMap.updateValue(newValue, forKey: "viewerRecordsCount") + } + } + + public var fragments: Fragments { + get { + return Fragments(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + + public struct Fragments { + public private(set) var resultMap: ResultMap + + public init(unsafeResultMap: ResultMap) { + self.resultMap = unsafeResultMap + } + + public var episodeFragment: EpisodeFragment { + get { + return EpisodeFragment(unsafeResultMap: resultMap) + } + set { + resultMap += newValue.resultMap + } + } + } + } + } + } + } + } + } + } + } +} + public final class SearchWorkEpisodesQuery: GraphQLQuery { /// The raw GraphQL definition of this operation. public let operationDefinition: String = diff --git a/Sources/Common/API/Query/Fragments.graphql b/Sources/Common/API/Query/Fragments.graphql index 262406ee..48a6e2b9 100644 --- a/Sources/Common/API/Query/Fragments.graphql +++ b/Sources/Common/API/Query/Fragments.graphql @@ -77,8 +77,8 @@ fragment ReviewFragment on Review { } fragment PageInfoFragment on PageInfo { - hasNextPage - hasPreviousPage - endCursor - startCursor + hasNextPage + hasPreviousPage + endCursor + startCursor } diff --git a/Sources/Common/API/Query/SearchEpisodes.graphql b/Sources/Common/API/Query/SearchEpisodes.graphql new file mode 100644 index 00000000..83c530f1 --- /dev/null +++ b/Sources/Common/API/Query/SearchEpisodes.graphql @@ -0,0 +1,16 @@ +query SearchEpisodeRecords($annictId: Int!, $first: Int, $after: String) { + searchEpisodes(first: 1, annictIds: [$annictId]) { + edges { + node { + ...EpisodeFragment + records(first: $first, after: $after, orderBy: {direction: DESC, field:CREATED_AT}, hasComment: true) { + edges { + node { + ...RecordFragment + } + } + } + } + } + } +} diff --git a/Sources/Episode/EpisodeView.swift b/Sources/Episode/EpisodeView.swift index 31440d88..3677206d 100644 --- a/Sources/Episode/EpisodeView.swift +++ b/Sources/Episode/EpisodeView.swift @@ -10,16 +10,38 @@ import SwiftUI struct EpisodeView: View { let episode: EpisodeFragment + @State private var records: [RecordFragment] = [] + var body: some View { ScrollView(.vertical) { - LazyVStack(alignment: .leading, spacing: 8) { + LazyVStack(alignment: .leading, spacing: 24) { VStack(alignment: .leading, spacing: 4) { Text(episode.numberText) .font(.headline, weight: .bold) Text(episode.title) .font(.title, weight: .bold) } - .padding(EdgeInsets(top: 16, leading: 16, bottom: 16, trailing: 16)) +// .padding(EdgeInsets(top: 0, leading: 0, bottom: 40, trailing: 0)) + ForEach(records.indices, id: \.self) { index in + ActivityRecordView(record: $records[index]) + .hideQuote() + } + } + .padding(EdgeInsets(top: 16, leading: 16, bottom: 16, trailing: 16)) + } + .onAppear { + fetch() + } + } + + private func fetch() { + let query = SearchEpisodeRecordsQuery(annictId: episode.annictId, first: 30, after: nil) + Network.shared.apollo.fetch(query: query) { result in + switch result { + case .success(let data): + self.records = data.data?.searchEpisodes?.edges?.first??.node?.records?.edges?.compactMap { $0?.node?.fragments.recordFragment } ?? [] + case .failure(let error): + print(error) } } } diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index c22845fa..10b04319 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -12,10 +12,15 @@ import SkeletonUI struct ActivityRecordView: View { @Binding var record: RecordFragment - var selectStateAction: ((StatusState) -> Void)? + init(record: Binding) { + self._record = record + } + + @State private var isPresentedWorkView: Bool = false + @State private var isPresentedUserView: Bool = false - @State var isPresentedWorkView: Bool = false - @State var isPresentedUserView: Bool = false + private var selectStateAction: ((StatusState) -> Void)? + private var isHiddenQuote = false var body: some View { HStack(alignment: .top, spacing: 12) { @@ -50,10 +55,12 @@ struct ActivityRecordView: View { Text(comemnt) .font(.body) } - QuoteWorkView(work: $record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) - .onSelectState { state in - selectStateAction?(state) - } + if !isHiddenQuote { + QuoteWorkView(work: $record.work.fragments.workFragment, episode: record.episode.fragments.episodeFragment) + .onSelectState { state in + selectStateAction?(state) + } + } } } } @@ -63,6 +70,12 @@ struct ActivityRecordView: View { result.selectStateAction = action return result } + + func hideQuote() -> ActivityRecordView { + var result = self + result.isHiddenQuote = true + return result + } } struct ActivityRecordView_Previews: PreviewProvider { diff --git a/Sources/operationIDs.json b/Sources/operationIDs.json index 34c41658..073314d9 100644 --- a/Sources/operationIDs.json +++ b/Sources/operationIDs.json @@ -15,6 +15,10 @@ "name": "GetViewerWorks", "source": "query GetViewerWorks($first: Int, $after: String, $state: StatusState!) {\n viewer {\n __typename\n works(first: $first, after: $after, state: $state, orderBy: {direction: DESC, field: WATCHERS_COUNT}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...WorkFragment\n }\n }\n }\n }\n}" }, + "163a13c98eb8c34ab6b6ee97db879d653683ea4bbd1b4c735119412762ab203e": { + "name": "SearchEpisodeRecords", + "source": "query SearchEpisodeRecords($annictId: Int!, $first: Int, $after: String) {\n searchEpisodes(first: 1, annictIds: [$annictId]) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...EpisodeFragment\n records(first: $first, after: $after, orderBy: {direction: DESC, field: CREATED_AT}, hasComment: true) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...RecordFragment\n }\n }\n }\n }\n }\n }\n}" + }, "bc7fdd907a96b06744895095e150fc76b0f84cf9bb99393a4a531d13618a376d": { "name": "SearchWorkEpisodes", "source": "query SearchWorkEpisodes($workAnnictId: Int!, $first: Int, $after: String) {\n searchWorks(annictIds: [$workAnnictId]) {\n __typename\n nodes {\n __typename\n ...WorkFragment\n episodes(first: $first, after: $after, orderBy: {direction: ASC, field: SORT_NUMBER}) {\n __typename\n edges {\n __typename\n node {\n __typename\n ...EpisodeFragment\n }\n }\n pageInfo {\n __typename\n endCursor\n hasNextPage\n }\n }\n }\n }\n}" From a478c05a88361197636ee20d4f9fc0f893c651b6 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 18 Jan 2021 02:42:42 +0900 Subject: [PATCH 057/101] Fix --- .../Search/SearchRecommendedWorksView.swift | 26 ++++++++++++++++++- Sources/Search/SearchResultsView.swift | 21 ++++++++++++++- Sources/Work/WorkView.swift | 2 +- 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/Sources/Search/SearchRecommendedWorksView.swift b/Sources/Search/SearchRecommendedWorksView.swift index 4221bc27..4bad0492 100644 --- a/Sources/Search/SearchRecommendedWorksView.swift +++ b/Sources/Search/SearchRecommendedWorksView.swift @@ -12,6 +12,18 @@ struct SearchRecommendedWorksView: View { @StateObject var viewModel: SearchRecommendedWorksViewModel @State private var seasonSelection = 1 @State private var showPicker = false + @State private var presentation: Presentation? + + enum Presentation: View, Identifiable, Hashable { + case work(WorkFragment) + + var body: some View { + switch self { + case .work(let work): + WorkView(workID: work.annictId) + } + } + } private let seasons = allSeasons() @@ -46,7 +58,13 @@ struct SearchRecommendedWorksView: View { LazyVStack(alignment: .leading, spacing: 16) { ForEach(viewModel.state.recomendedWorks.indices, id: \.self) { index in let work = $viewModel.state.recomendedWorks[index] - SearchResultView(work: work) + Button(action: { + presentation = .work(work.wrappedValue) + }, label: { + SearchResultView(work: work) + }) + .accentColor(.primary) + .sheet(item: $presentation) { $0 } } } } @@ -68,3 +86,9 @@ struct SearchRecommendedWorksView: View { return results } } + +extension WorkFragment: Identifiable, Hashable { + public func hash(into hasher: inout Hasher) { + id.hash(into: &hasher) + } +} diff --git a/Sources/Search/SearchResultsView.swift b/Sources/Search/SearchResultsView.swift index 9ffeb66c..1b97e2e0 100644 --- a/Sources/Search/SearchResultsView.swift +++ b/Sources/Search/SearchResultsView.swift @@ -6,10 +6,23 @@ // import SwiftUI +import SwiftUIX import KingfisherSwiftUI struct SearchResultsView: View { @Binding var works: [WorkFragment] + @State private var presentation: Presentation? + + enum Presentation: View, Identifiable, Hashable { + case work(WorkFragment) + + var body: some View { + switch self { + case .work(let work): + WorkView(workID: work.annictId) + } + } + } var body: some View { VStack(alignment: .leading) { @@ -20,7 +33,13 @@ struct SearchResultsView: View { } LazyVStack(alignment: .leading, spacing: 16) { ForEach(works.indices, id: \.self) { index in - SearchResultView(work: $works[index]) + Button(action: { + presentation = .work(works[index]) + }, label: { + SearchResultView(work: $works[index]) + }) + .accentColor(.primary) + .sheet(item: $presentation) { $0 } } } } diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index 1ec82825..52a5ba7c 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -45,7 +45,7 @@ struct WorkView: View { var body: some View { GeometryReader { geometry in - ScrollView(.vertical) { + ScrollView(.vertical, showsIndicators: false) { if let work = work { LazyVStack(alignment: .leading, spacing: 24) { WorkHeaderView(work: work) From e934bbf09fcd8b4eb6966686fbe21c55fdfda6a6 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Mon, 18 Jan 2021 22:46:17 +0900 Subject: [PATCH 058/101] Impl setting --- Portannict.xcodeproj/project.pbxproj | 38 + Resource/Licenses.html | 672 ++++++++++++++++++ Settings.bundle/Root.plist | 19 + ....portannict.LicensePlist.latest_result.txt | 31 + .../com.portannict.LicensePlist.plist | 127 ++++ .../com.portannict.LicensePlist/Fluxer.plist | 36 + .../InflectorKit.plist | 34 + .../Kingfisher.plist | 37 + .../com.portannict.LicensePlist/PathKit.plist | 38 + .../SQLite.swift.plist | 36 + .../SkeletonUI.plist | 36 + .../com.portannict.LicensePlist/Spectre.plist | 39 + .../Starscream.plist | 190 +++++ .../com.portannict.LicensePlist/Stencil.plist | 38 + .../SwiftDate.plist | 37 + .../SwiftUIX.plist | 22 + .../apollo-ios.plist | 36 + .../swift-nio-zlib-support.plist | 217 ++++++ .../swift-snapshot-testing.plist | 36 + Settings.bundle/en.lproj/Root.strings | Bin 0 -> 546 bytes Sources/Common/Constants.swift | 1 + Sources/Common/Views/WebView.swift | 35 + Sources/Info.plist | 2 +- Sources/Profile/ProfileView.swift | 4 - Sources/Search/SearchViewModel.swift | 2 +- Sources/Setting/LicensesView.swift | 29 + Sources/Setting/SettingView.swift | 48 ++ Sources/User/UserHeaderView.swift | 32 + Sources/User/UserView.swift | 1 + 29 files changed, 1867 insertions(+), 6 deletions(-) create mode 100644 Resource/Licenses.html create mode 100644 Settings.bundle/Root.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist.latest_result.txt create mode 100644 Settings.bundle/com.portannict.LicensePlist.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/Fluxer.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/InflectorKit.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/Kingfisher.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/PathKit.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/SQLite.swift.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/SkeletonUI.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/Spectre.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/Starscream.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/Stencil.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/SwiftDate.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/SwiftUIX.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/apollo-ios.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/swift-nio-zlib-support.plist create mode 100644 Settings.bundle/com.portannict.LicensePlist/swift-snapshot-testing.plist create mode 100644 Settings.bundle/en.lproj/Root.strings create mode 100644 Sources/Common/Views/WebView.swift create mode 100644 Sources/Setting/LicensesView.swift create mode 100644 Sources/Setting/SettingView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 97ef0eda..7fc485fd 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -51,6 +51,11 @@ CFC03F0525948EF2001516D3 /* OauthTokenRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */; }; CFC03F0725959BDD001516D3 /* LoginSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC03F0625959BDD001516D3 /* LoginSession.swift */; }; CFCA3FEB255DAB4900AA2469 /* Fluxer in Frameworks */ = {isa = PBXBuildFile; productRef = CFCA3FEA255DAB4900AA2469 /* Fluxer */; }; + CFCE3E2C25B5AF14000CFF34 /* SettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E2B25B5AF14000CFF34 /* SettingView.swift */; }; + CFCE3E2E25B5B77F000CFF34 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = CFCE3E2D25B5B77F000CFF34 /* Settings.bundle */; }; + CFCE3E3325B5BC09000CFF34 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3225B5BC09000CFF34 /* WebView.swift */; }; + CFCE3E3525B5BDDE000CFF34 /* LicensesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3425B5BDDE000CFF34 /* LicensesView.swift */; }; + CFCE3E3725B5C425000CFF34 /* Licenses.html in Resources */ = {isa = PBXBuildFile; fileRef = CFCE3E3625B5C425000CFF34 /* Licenses.html */; }; CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3425A630E7005401AF /* RatingStateView.swift */; }; CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3625A63915005401AF /* Model+Extension.swift */; }; CFD82D3A25A63F8E005401AF /* SwiftDate in Frameworks */ = {isa = PBXBuildFile; productRef = CFD82D3925A63F8E005401AF /* SwiftDate */; }; @@ -135,6 +140,11 @@ CFC03F002594895F001516D3 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; CFC03F0425948EF2001516D3 /* OauthTokenRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OauthTokenRequest.swift; sourceTree = ""; }; CFC03F0625959BDD001516D3 /* LoginSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginSession.swift; sourceTree = ""; }; + CFCE3E2B25B5AF14000CFF34 /* SettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingView.swift; sourceTree = ""; }; + CFCE3E2D25B5B77F000CFF34 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; + CFCE3E3225B5BC09000CFF34 /* WebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebView.swift; sourceTree = ""; }; + CFCE3E3425B5BDDE000CFF34 /* LicensesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LicensesView.swift; sourceTree = ""; }; + CFCE3E3625B5C425000CFF34 /* Licenses.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Licenses.html; sourceTree = ""; }; CFD82D3425A630E7005401AF /* RatingStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingStateView.swift; sourceTree = ""; }; CFD82D3625A63915005401AF /* Model+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Model+Extension.swift"; sourceTree = ""; }; CFD82D3B25A64157005401AF /* GetViewer.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewer.graphql; sourceTree = ""; }; @@ -178,7 +188,9 @@ CF08FBFA24B9AD1A00CD29DD = { isa = PBXGroup; children = ( + CFCE3E2D25B5B77F000CFF34 /* Settings.bundle */, CF2A8E8525B00418001D2AF1 /* Portannict.entitlements */, + CFCE3E2F25B5BB88000CFF34 /* Resource */, CF08FC0524B9AD1A00CD29DD /* Sources */, CF08FC0424B9AD1A00CD29DD /* Products */, ); @@ -207,6 +219,7 @@ CFE7E5C625A6E6C3009EB3DC /* User */, CFE7E5D525A70764009EB3DC /* Record */, CFE7E5D825A7081A009EB3DC /* Search */, + CFCE3E2A25B5AEFD000CFF34 /* Setting */, CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, CF1E5E5C259CE88500035D50 /* Envfile */, @@ -263,6 +276,7 @@ CFADCD0325A5A34F00939DA7 /* Views */ = { isa = PBXGroup; children = ( + CFCE3E3225B5BC09000CFF34 /* WebView.swift */, CF3B2FD225B44F680017A7C0 /* StatusButton.swift */, CFD82D3425A630E7005401AF /* RatingStateView.swift */, CF3B2FE225B493960017A7C0 /* AllRatingsStateView.swift */, @@ -291,6 +305,23 @@ path = Extension; sourceTree = ""; }; + CFCE3E2A25B5AEFD000CFF34 /* Setting */ = { + isa = PBXGroup; + children = ( + CFCE3E2B25B5AF14000CFF34 /* SettingView.swift */, + CFCE3E3425B5BDDE000CFF34 /* LicensesView.swift */, + ); + path = Setting; + sourceTree = ""; + }; + CFCE3E2F25B5BB88000CFF34 /* Resource */ = { + isa = PBXGroup; + children = ( + CFCE3E3625B5C425000CFF34 /* Licenses.html */, + ); + path = Resource; + sourceTree = ""; + }; CFE38316258E621400CEE318 /* Common */ = { isa = PBXGroup; children = ( @@ -468,11 +499,13 @@ CFBCA06325AB49FB00C5386C /* SearchWorksByTitle.graphql in Resources */, CFD82D3C25A64157005401AF /* GetViewer.graphql in Resources */, CF3B2FD125B42D1E0017A7C0 /* SearchWorkEpisodes.graphql in Resources */, + CFCE3E3725B5C425000CFF34 /* Licenses.html in Resources */, CF2E1D93259DC19100824A3C /* GetFollowingActivities.graphql in Resources */, CF3B2FD725B46F710017A7C0 /* SearchWorkReviews.graphql in Resources */, CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */, CFBCA06525AB6B0E00C5386C /* UpdateStatus.graphql in Resources */, CFE7E5CE25A6EC6B009EB3DC /* GetUser.graphql in Resources */, + CFCE3E2E25B5B77F000CFF34 /* Settings.bundle in Resources */, CF1E5E5D259CE88500035D50 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */, @@ -532,11 +565,13 @@ CF3BC74D25B495E90046631F /* EpisodeView.swift in Sources */, CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, + CFCE3E2C25B5AF14000CFF34 /* SettingView.swift in Sources */, CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */, CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, CF3B2FD925B484AD0017A7C0 /* WorkEpisodeCell.swift in Sources */, CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */, CF3B2FDD25B484F20017A7C0 /* Color.swift in Sources */, + CFCE3E3325B5BC09000CFF34 /* WebView.swift in Sources */, CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */, CF3B2FE325B493960017A7C0 /* AllRatingsStateView.swift in Sources */, CFE7E5CA25A6E71C009EB3DC /* UserHeaderView.swift in Sources */, @@ -545,6 +580,7 @@ CFE38315258E610F00CEE318 /* RootViewModel.swift in Sources */, CF3B2FD325B44F680017A7C0 /* StatusButton.swift in Sources */, CFFDC8B5259CCAFE001C8E29 /* WorkHeaderView.swift in Sources */, + CFCE3E3525B5BDDE000CFF34 /* LicensesView.swift in Sources */, CFC03EFF259483DA001516D3 /* HTTPClient.swift in Sources */, CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */, CFE7E5CC25A6E8D8009EB3DC /* UserRepresentable.swift in Sources */, @@ -696,6 +732,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 3.0.0; PRODUCT_BUNDLE_IDENTIFIER = "com.YutoAkiba.Annict-for-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = NO; @@ -720,6 +757,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 3.0.0; PRODUCT_BUNDLE_IDENTIFIER = "com.YutoAkiba.Annict-for-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = NO; diff --git a/Resource/Licenses.html b/Resource/Licenses.html new file mode 100644 index 00000000..be4252be --- /dev/null +++ b/Resource/Licenses.html @@ -0,0 +1,672 @@ + + + + + + Acknowledgements + + + + +

Acknowledgements

+

+ This project makes use of the following third party libraries: +

+

Apollo

+
The MIT License (MIT)
+
+            Copyright (c) 2016-2017 Meteor Development Group, Inc.
+
+            Permission is hereby granted, free of charge, to any person obtaining a copy
+            of this software and associated documentation files (the "Software"), to deal
+            in the Software without restriction, including without limitation the rights
+            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+            copies of the Software, and to permit persons to whom the Software is
+            furnished to do so, subject to the following conditions:
+
+            The above copyright notice and this permission notice shall be included in all
+            copies or substantial portions of the Software.
+
+            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+            SOFTWARE.
+        
+

Fluxer

+
MIT License
+
+            Copyright (c) 2020 Yuto Akiba
+
+            Permission is hereby granted, free of charge, to any person obtaining a copy
+            of this software and associated documentation files (the "Software"), to deal
+            in the Software without restriction, including without limitation the rights
+            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+            copies of the Software, and to permit persons to whom the Software is
+            furnished to do so, subject to the following conditions:
+
+            The above copyright notice and this permission notice shall be included in all
+            copies or substantial portions of the Software.
+
+            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+            SOFTWARE.
+        
+

InflectorKit

+
Copyright (c) 2013 Mattt Thompson (http://mattt.me/)
+
+            Permission is hereby granted, free of charge, to any person obtaining a copy
+            of this software and associated documentation files (the "Software"), to deal
+            in the Software without restriction, including without limitation the rights
+            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+            copies of the Software, and to permit persons to whom the Software is
+            furnished to do so, subject to the following conditions:
+
+            The above copyright notice and this permission notice shall be included in
+            all copies or substantial portions of the Software.
+
+            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+            THE SOFTWARE.
+        
+

Kingfisher

+
The MIT License (MIT)
+
+            Copyright (c) 2019 Wei Wang
+
+            Permission is hereby granted, free of charge, to any person obtaining a copy
+            of this software and associated documentation files (the "Software"), to deal
+            in the Software without restriction, including without limitation the rights
+            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+            copies of the Software, and to permit persons to whom the Software is
+            furnished to do so, subject to the following conditions:
+
+            The above copyright notice and this permission notice shall be included in all
+            copies or substantial portions of the Software.
+
+            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+            SOFTWARE.
+
+        
+

PathKit

+
Copyright (c) 2014, Kyle Fuller
+            All rights reserved.
+
+            Redistribution and use in source and binary forms, with or without
+            modification, are permitted provided that the following conditions are met:
+
+            1. Redistributions of source code must retain the above copyright notice, this
+            list of conditions and the following disclaimer.
+            2. Redistributions in binary form must reproduce the above copyright notice,
+            this list of conditions and the following disclaimer in the documentation
+            and/or other materials provided with the distribution.
+
+            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+            ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+            DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+            ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+            (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+            LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+            ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+            SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+        
+

SkeletonUI

+
MIT License
+
+            Copyright (c) 2019 CSolanaM
+
+            Permission is hereby granted, free of charge, to any person obtaining a copy
+            of this software and associated documentation files (the "Software"), to deal
+            in the Software without restriction, including without limitation the rights
+            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+            copies of the Software, and to permit persons to whom the Software is
+            furnished to do so, subject to the following conditions:
+
+            The above copyright notice and this permission notice shall be included in all
+            copies or substantial portions of the Software.
+
+            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+            SOFTWARE.
+        
+

Spectre

+
Copyright (c) 2015, Kyle Fuller
+            All rights reserved.
+
+            Redistribution and use in source and binary forms, with or without
+            modification, are permitted provided that the following conditions are met:
+
+            * Redistributions of source code must retain the above copyright notice, this
+            list of conditions and the following disclaimer.
+
+            * Redistributions in binary form must reproduce the above copyright notice,
+            this list of conditions and the following disclaimer in the documentation
+            and/or other materials provided with the distribution.
+
+            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+            AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+            DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+            FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+            DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+            SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+            CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+            OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+        
+

SQLite.swift

+
(The MIT License)
+
+            Copyright (c) 2014-2015 Stephen Celis (<stephen@stephencelis.com>)
+
+            Permission is hereby granted, free of charge, to any person obtaining a copy
+            of this software and associated documentation files (the "Software"), to deal
+            in the Software without restriction, including without limitation the rights
+            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+            copies of the Software, and to permit persons to whom the Software is
+            furnished to do so, subject to the following conditions:
+
+            The above copyright notice and this permission notice shall be included in all
+            copies or substantial portions of the Software.
+
+            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+            SOFTWARE.
+        
+

Starscream

+
                              Apache License
+            Version 2.0, January 2004
+            http://www.apache.org/licenses/
+
+            Copyright (c) 2014-2016 Dalton Cherry.
+
+            TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+            1. Definitions.
+
+            "License" shall mean the terms and conditions for use, reproduction,
+            and distribution as defined by Sections 1 through 9 of this document.
+
+            "Licensor" shall mean the copyright owner or entity authorized by
+            the copyright owner that is granting the License.
+
+            "Legal Entity" shall mean the union of the acting entity and all
+            other entities that control, are controlled by, or are under common
+            control with that entity. For the purposes of this definition,
+            "control" means (i) the power, direct or indirect, to cause the
+            direction or management of such entity, whether by contract or
+            otherwise, or (ii) ownership of fifty percent (50%) or more of the
+            outstanding shares, or (iii) beneficial ownership of such entity.
+
+            "You" (or "Your") shall mean an individual or Legal Entity
+            exercising permissions granted by this License.
+
+            "Source" form shall mean the preferred form for making modifications,
+            including but not limited to software source code, documentation
+            source, and configuration files.
+
+            "Object" form shall mean any form resulting from mechanical
+            transformation or translation of a Source form, including but
+            not limited to compiled object code, generated documentation,
+            and conversions to other media types.
+
+            "Work" shall mean the work of authorship, whether in Source or
+            Object form, made available under the License, as indicated by a
+            copyright notice that is included in or attached to the work
+            (an example is provided in the Appendix below).
+
+            "Derivative Works" shall mean any work, whether in Source or Object
+            form, that is based on (or derived from) the Work and for which the
+            editorial revisions, annotations, elaborations, or other modifications
+            represent, as a whole, an original work of authorship. For the purposes
+            of this License, Derivative Works shall not include works that remain
+            separable from, or merely link (or bind by name) to the interfaces of,
+            the Work and Derivative Works thereof.
+
+            "Contribution" shall mean any work of authorship, including
+            the original version of the Work and any modifications or additions
+            to that Work or Derivative Works thereof, that is intentionally
+            submitted to Licensor for inclusion in the Work by the copyright owner
+            or by an individual or Legal Entity authorized to submit on behalf of
+            the copyright owner. For the purposes of this definition, "submitted"
+            means any form of electronic, verbal, or written communication sent
+            to the Licensor or its representatives, including but not limited to
+            communication on electronic mailing lists, source code control systems,
+            and issue tracking systems that are managed by, or on behalf of, the
+            Licensor for the purpose of discussing and improving the Work, but
+            excluding communication that is conspicuously marked or otherwise
+            designated in writing by the copyright owner as "Not a Contribution."
+
+            "Contributor" shall mean Licensor and any individual or Legal Entity
+            on behalf of whom a Contribution has been received by Licensor and
+            subsequently incorporated within the Work.
+
+            2. Grant of Copyright License. Subject to the terms and conditions of
+            this License, each Contributor hereby grants to You a perpetual,
+            worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+            copyright license to reproduce, prepare Derivative Works of,
+            publicly display, publicly perform, sublicense, and distribute the
+            Work and such Derivative Works in Source or Object form.
+
+            3. Grant of Patent License. Subject to the terms and conditions of
+            this License, each Contributor hereby grants to You a perpetual,
+            worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+            (except as stated in this section) patent license to make, have made,
+            use, offer to sell, sell, import, and otherwise transfer the Work,
+            where such license applies only to those patent claims licensable
+            by such Contributor that are necessarily infringed by their
+            Contribution(s) alone or by combination of their Contribution(s)
+            with the Work to which such Contribution(s) was submitted. If You
+            institute patent litigation against any entity (including a
+            cross-claim or counterclaim in a lawsuit) alleging that the Work
+            or a Contribution incorporated within the Work constitutes direct
+            or contributory patent infringement, then any patent licenses
+            granted to You under this License for that Work shall terminate
+            as of the date such litigation is filed.
+
+            4. Redistribution. You may reproduce and distribute copies of the
+            Work or Derivative Works thereof in any medium, with or without
+            modifications, and in Source or Object form, provided that You
+            meet the following conditions:
+
+            (a) You must give any other recipients of the Work or
+            Derivative Works a copy of this License; and
+
+            (b) You must cause any modified files to carry prominent notices
+            stating that You changed the files; and
+
+            (c) You must retain, in the Source form of any Derivative Works
+            that You distribute, all copyright, patent, trademark, and
+            attribution notices from the Source form of the Work,
+            excluding those notices that do not pertain to any part of
+            the Derivative Works; and
+
+            (d) If the Work includes a "NOTICE" text file as part of its
+            distribution, then any Derivative Works that You distribute must
+            include a readable copy of the attribution notices contained
+            within such NOTICE file, excluding those notices that do not
+            pertain to any part of the Derivative Works, in at least one
+            of the following places: within a NOTICE text file distributed
+            as part of the Derivative Works; within the Source form or
+            documentation, if provided along with the Derivative Works; or,
+            within a display generated by the Derivative Works, if and
+            wherever such third-party notices normally appear. The contents
+            of the NOTICE file are for informational purposes only and
+            do not modify the License. You may add Your own attribution
+            notices within Derivative Works that You distribute, alongside
+            or as an addendum to the NOTICE text from the Work, provided
+            that such additional attribution notices cannot be construed
+            as modifying the License.
+
+            You may add Your own copyright statement to Your modifications and
+            may provide additional or different license terms and conditions
+            for use, reproduction, or distribution of Your modifications, or
+            for any such Derivative Works as a whole, provided Your use,
+            reproduction, and distribution of the Work otherwise complies with
+            the conditions stated in this License.
+
+            5. Submission of Contributions. Unless You explicitly state otherwise,
+            any Contribution intentionally submitted for inclusion in the Work
+            by You to the Licensor shall be under the terms and conditions of
+            this License, without any additional terms or conditions.
+            Notwithstanding the above, nothing herein shall supersede or modify
+            the terms of any separate license agreement you may have executed
+            with Licensor regarding such Contributions.
+
+            6. Trademarks. This License does not grant permission to use the trade
+            names, trademarks, service marks, or product names of the Licensor,
+            except as required for reasonable and customary use in describing the
+            origin of the Work and reproducing the content of the NOTICE file.
+
+            7. Disclaimer of Warranty. Unless required by applicable law or
+            agreed to in writing, Licensor provides the Work (and each
+            Contributor provides its Contributions) on an "AS IS" BASIS,
+            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+            implied, including, without limitation, any warranties or conditions
+            of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+            PARTICULAR PURPOSE. You are solely responsible for determining the
+            appropriateness of using or redistributing the Work and assume any
+            risks associated with Your exercise of permissions under this License.
+
+            8. Limitation of Liability. In no event and under no legal theory,
+            whether in tort (including negligence), contract, or otherwise,
+            unless required by applicable law (such as deliberate and grossly
+            negligent acts) or agreed to in writing, shall any Contributor be
+            liable to You for damages, including any direct, indirect, special,
+            incidental, or consequential damages of any character arising as a
+            result of this License or out of the use or inability to use the
+            Work (including but not limited to damages for loss of goodwill,
+            work stoppage, computer failure or malfunction, or any and all
+            other commercial damages or losses), even if such Contributor
+            has been advised of the possibility of such damages.
+
+            9. Accepting Warranty or Additional Liability. While redistributing
+            the Work or Derivative Works thereof, You may choose to offer,
+            and charge a fee for, acceptance of support, warranty, indemnity,
+            or other liability obligations and/or rights consistent with this
+            License. However, in accepting such obligations, You may act only
+            on Your own behalf and on Your sole responsibility, not on behalf
+            of any other Contributor, and only if You agree to indemnify,
+            defend, and hold each Contributor harmless for any liability
+            incurred by, or claims asserted against, such Contributor by reason
+            of your accepting any such warranty or additional liability.
+

Stencil

+
Copyright (c) 2018, Kyle Fuller
+            All rights reserved.
+
+            Redistribution and use in source and binary forms, with or without
+            modification, are permitted provided that the following conditions are met:
+
+            * Redistributions of source code must retain the above copyright notice, this
+            list of conditions and the following disclaimer.
+
+            * Redistributions in binary form must reproduce the above copyright notice,
+            this list of conditions and the following disclaimer in the documentation
+            and/or other materials provided with the distribution.
+
+            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+            AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+            IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+            DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+            FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+            DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+            SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+            CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+            OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+        
+

swift-nio-zlib-support

+
+            Apache License
+            Version 2.0, January 2004
+            http://www.apache.org/licenses/
+
+            TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+            1. Definitions.
+
+            "License" shall mean the terms and conditions for use, reproduction,
+            and distribution as defined by Sections 1 through 9 of this document.
+
+            "Licensor" shall mean the copyright owner or entity authorized by
+            the copyright owner that is granting the License.
+
+            "Legal Entity" shall mean the union of the acting entity and all
+            other entities that control, are controlled by, or are under common
+            control with that entity. For the purposes of this definition,
+            "control" means (i) the power, direct or indirect, to cause the
+            direction or management of such entity, whether by contract or
+            otherwise, or (ii) ownership of fifty percent (50%) or more of the
+            outstanding shares, or (iii) beneficial ownership of such entity.
+
+            "You" (or "Your") shall mean an individual or Legal Entity
+            exercising permissions granted by this License.
+
+            "Source" form shall mean the preferred form for making modifications,
+            including but not limited to software source code, documentation
+            source, and configuration files.
+
+            "Object" form shall mean any form resulting from mechanical
+            transformation or translation of a Source form, including but
+            not limited to compiled object code, generated documentation,
+            and conversions to other media types.
+
+            "Work" shall mean the work of authorship, whether in Source or
+            Object form, made available under the License, as indicated by a
+            copyright notice that is included in or attached to the work
+            (an example is provided in the Appendix below).
+
+            "Derivative Works" shall mean any work, whether in Source or Object
+            form, that is based on (or derived from) the Work and for which the
+            editorial revisions, annotations, elaborations, or other modifications
+            represent, as a whole, an original work of authorship. For the purposes
+            of this License, Derivative Works shall not include works that remain
+            separable from, or merely link (or bind by name) to the interfaces of,
+            the Work and Derivative Works thereof.
+
+            "Contribution" shall mean any work of authorship, including
+            the original version of the Work and any modifications or additions
+            to that Work or Derivative Works thereof, that is intentionally
+            submitted to Licensor for inclusion in the Work by the copyright owner
+            or by an individual or Legal Entity authorized to submit on behalf of
+            the copyright owner. For the purposes of this definition, "submitted"
+            means any form of electronic, verbal, or written communication sent
+            to the Licensor or its representatives, including but not limited to
+            communication on electronic mailing lists, source code control systems,
+            and issue tracking systems that are managed by, or on behalf of, the
+            Licensor for the purpose of discussing and improving the Work, but
+            excluding communication that is conspicuously marked or otherwise
+            designated in writing by the copyright owner as "Not a Contribution."
+
+            "Contributor" shall mean Licensor and any individual or Legal Entity
+            on behalf of whom a Contribution has been received by Licensor and
+            subsequently incorporated within the Work.
+
+            2. Grant of Copyright License. Subject to the terms and conditions of
+            this License, each Contributor hereby grants to You a perpetual,
+            worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+            copyright license to reproduce, prepare Derivative Works of,
+            publicly display, publicly perform, sublicense, and distribute the
+            Work and such Derivative Works in Source or Object form.
+
+            3. Grant of Patent License. Subject to the terms and conditions of
+            this License, each Contributor hereby grants to You a perpetual,
+            worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+            (except as stated in this section) patent license to make, have made,
+            use, offer to sell, sell, import, and otherwise transfer the Work,
+            where such license applies only to those patent claims licensable
+            by such Contributor that are necessarily infringed by their
+            Contribution(s) alone or by combination of their Contribution(s)
+            with the Work to which such Contribution(s) was submitted. If You
+            institute patent litigation against any entity (including a
+            cross-claim or counterclaim in a lawsuit) alleging that the Work
+            or a Contribution incorporated within the Work constitutes direct
+            or contributory patent infringement, then any patent licenses
+            granted to You under this License for that Work shall terminate
+            as of the date such litigation is filed.
+
+            4. Redistribution. You may reproduce and distribute copies of the
+            Work or Derivative Works thereof in any medium, with or without
+            modifications, and in Source or Object form, provided that You
+            meet the following conditions:
+
+            (a) You must give any other recipients of the Work or
+            Derivative Works a copy of this License; and
+
+            (b) You must cause any modified files to carry prominent notices
+            stating that You changed the files; and
+
+            (c) You must retain, in the Source form of any Derivative Works
+            that You distribute, all copyright, patent, trademark, and
+            attribution notices from the Source form of the Work,
+            excluding those notices that do not pertain to any part of
+            the Derivative Works; and
+
+            (d) If the Work includes a "NOTICE" text file as part of its
+            distribution, then any Derivative Works that You distribute must
+            include a readable copy of the attribution notices contained
+            within such NOTICE file, excluding those notices that do not
+            pertain to any part of the Derivative Works, in at least one
+            of the following places: within a NOTICE text file distributed
+            as part of the Derivative Works; within the Source form or
+            documentation, if provided along with the Derivative Works; or,
+            within a display generated by the Derivative Works, if and
+            wherever such third-party notices normally appear. The contents
+            of the NOTICE file are for informational purposes only and
+            do not modify the License. You may add Your own attribution
+            notices within Derivative Works that You distribute, alongside
+            or as an addendum to the NOTICE text from the Work, provided
+            that such additional attribution notices cannot be construed
+            as modifying the License.
+
+            You may add Your own copyright statement to Your modifications and
+            may provide additional or different license terms and conditions
+            for use, reproduction, or distribution of Your modifications, or
+            for any such Derivative Works as a whole, provided Your use,
+            reproduction, and distribution of the Work otherwise complies with
+            the conditions stated in this License.
+
+            5. Submission of Contributions. Unless You explicitly state otherwise,
+            any Contribution intentionally submitted for inclusion in the Work
+            by You to the Licensor shall be under the terms and conditions of
+            this License, without any additional terms or conditions.
+            Notwithstanding the above, nothing herein shall supersede or modify
+            the terms of any separate license agreement you may have executed
+            with Licensor regarding such Contributions.
+
+            6. Trademarks. This License does not grant permission to use the trade
+            names, trademarks, service marks, or product names of the Licensor,
+            except as required for reasonable and customary use in describing the
+            origin of the Work and reproducing the content of the NOTICE file.
+
+            7. Disclaimer of Warranty. Unless required by applicable law or
+            agreed to in writing, Licensor provides the Work (and each
+            Contributor provides its Contributions) on an "AS IS" BASIS,
+            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+            implied, including, without limitation, any warranties or conditions
+            of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+            PARTICULAR PURPOSE. You are solely responsible for determining the
+            appropriateness of using or redistributing the Work and assume any
+            risks associated with Your exercise of permissions under this License.
+
+            8. Limitation of Liability. In no event and under no legal theory,
+            whether in tort (including negligence), contract, or otherwise,
+            unless required by applicable law (such as deliberate and grossly
+            negligent acts) or agreed to in writing, shall any Contributor be
+            liable to You for damages, including any direct, indirect, special,
+            incidental, or consequential damages of any character arising as a
+            result of this License or out of the use or inability to use the
+            Work (including but not limited to damages for loss of goodwill,
+            work stoppage, computer failure or malfunction, or any and all
+            other commercial damages or losses), even if such Contributor
+            has been advised of the possibility of such damages.
+
+            9. Accepting Warranty or Additional Liability. While redistributing
+            the Work or Derivative Works thereof, You may choose to offer,
+            and charge a fee for, acceptance of support, warranty, indemnity,
+            or other liability obligations and/or rights consistent with this
+            License. However, in accepting such obligations, You may act only
+            on Your own behalf and on Your sole responsibility, not on behalf
+            of any other Contributor, and only if You agree to indemnify,
+            defend, and hold each Contributor harmless for any liability
+            incurred by, or claims asserted against, such Contributor by reason
+            of your accepting any such warranty or additional liability.
+
+            END OF TERMS AND CONDITIONS
+
+            APPENDIX: How to apply the Apache License to your work.
+
+            To apply the Apache License to your work, attach the following
+            boilerplate notice, with the fields enclosed by brackets "[]"
+            replaced with your own identifying information. (Don't include
+            the brackets!)  The text should be enclosed in the appropriate
+            comment syntax for the file format. We also recommend that a
+            file or class name and description of purpose be included on the
+            same "printed page" as the copyright notice for easier
+            identification within third-party archives.
+
+            Copyright [yyyy] [name of copyright owner]
+
+            Licensed under the Apache License, Version 2.0 (the "License");
+            you may not use this file except in compliance with the License.
+            You may obtain a copy of the License at
+
+            http://www.apache.org/licenses/LICENSE-2.0
+
+            Unless required by applicable law or agreed to in writing, software
+            distributed under the License is distributed on an "AS IS" BASIS,
+            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+            See the License for the specific language governing permissions and
+            limitations under the License.
+        
+

SnapshotTesting

+
MIT License
+
+            Copyright (c) 2019 Point-Free, Inc.
+
+            Permission is hereby granted, free of charge, to any person obtaining a copy
+            of this software and associated documentation files (the "Software"), to deal
+            in the Software without restriction, including without limitation the rights
+            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+            copies of the Software, and to permit persons to whom the Software is
+            furnished to do so, subject to the following conditions:
+
+            The above copyright notice and this permission notice shall be included in all
+            copies or substantial portions of the Software.
+
+            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+            SOFTWARE.
+        
+

SwiftDate

+
The MIT License (MIT)
+
+            Copyright (c) 2018 Daniele Margutti
+
+            Permission is hereby granted, free of charge, to any person obtaining a copy
+            of this software and associated documentation files (the "Software"), to deal
+            in the Software without restriction, including without limitation the rights
+            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+            copies of the Software, and to permit persons to whom the Software is
+            furnished to do so, subject to the following conditions:
+
+            The above copyright notice and this permission notice shall be included in all
+            copies or substantial portions of the Software.
+
+            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+            SOFTWARE.
+
+        
+

SwiftUIX

+
Copyright © 2020 Vatsal Manot
+
+            Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+            The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+            THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+        
+ + + \ No newline at end of file diff --git a/Settings.bundle/Root.plist b/Settings.bundle/Root.plist new file mode 100644 index 00000000..776145fc --- /dev/null +++ b/Settings.bundle/Root.plist @@ -0,0 +1,19 @@ + + + + + StringsTable + Root + PreferenceSpecifiers + + + Type + PSChildPaneSpecifier + Title + Licenses + File + com.portannict.LicensePlist + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist.latest_result.txt b/Settings.bundle/com.portannict.LicensePlist.latest_result.txt new file mode 100644 index 00000000..dd74109c --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist.latest_result.txt @@ -0,0 +1,31 @@ +name: apollo-ios, nameSpecified: Apollo, owner: apollographql, version: 0.39.0 + +name: Fluxer, nameSpecified: Fluxer, owner: touyu, version: + +name: InflectorKit, nameSpecified: InflectorKit, owner: apollographql, version: 0.0.2 + +name: Kingfisher, nameSpecified: Kingfisher, owner: onevcat, version: 5.15.8 + +name: PathKit, nameSpecified: PathKit, owner: kylef, version: 1.0.0 + +name: SkeletonUI, nameSpecified: SkeletonUI, owner: CSolanaM, version: 1.0.5 + +name: Spectre, nameSpecified: Spectre, owner: kylef, version: 0.9.2 + +name: SQLite.swift, nameSpecified: SQLite.swift, owner: stephencelis, version: 0.12.2 + +name: Starscream, nameSpecified: Starscream, owner: daltoniam, version: 3.1.1 + +name: Stencil, nameSpecified: Stencil, owner: stencilproject, version: 0.14.0 + +name: swift-nio-zlib-support, nameSpecified: swift-nio-zlib-support, owner: apple, version: 1.0.0 + +name: swift-snapshot-testing, nameSpecified: SnapshotTesting, owner: pointfreeco, version: 1.8.2 + +name: SwiftDate, nameSpecified: SwiftDate, owner: malcommac, version: 6.3.1 + +name: SwiftUIX, nameSpecified: SwiftUIX, owner: SwiftUIX, version: 0.0.5 + +add-version-numbers: false + +LicensePlist Version: 3.0.5 \ No newline at end of file diff --git a/Settings.bundle/com.portannict.LicensePlist.plist b/Settings.bundle/com.portannict.LicensePlist.plist new file mode 100644 index 00000000..b8498775 --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist.plist @@ -0,0 +1,127 @@ + + + + + PreferenceSpecifiers + + + Title + Licenses + Type + PSGroupSpecifier + + + File + com.portannict.LicensePlist/apollo-ios + Title + Apollo + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/Fluxer + Title + Fluxer + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/InflectorKit + Title + InflectorKit + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/Kingfisher + Title + Kingfisher + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/PathKit + Title + PathKit + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/SkeletonUI + Title + SkeletonUI + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/Spectre + Title + Spectre + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/SQLite.swift + Title + SQLite.swift + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/Starscream + Title + Starscream + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/Stencil + Title + Stencil + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/swift-nio-zlib-support + Title + swift-nio-zlib-support + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/swift-snapshot-testing + Title + SnapshotTesting + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/SwiftDate + Title + SwiftDate + Type + PSChildPaneSpecifier + + + File + com.portannict.LicensePlist/SwiftUIX + Title + SwiftUIX + Type + PSChildPaneSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/Fluxer.plist b/Settings.bundle/com.portannict.LicensePlist/Fluxer.plist new file mode 100644 index 00000000..c378b32c --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/Fluxer.plist @@ -0,0 +1,36 @@ + + + + + PreferenceSpecifiers + + + FooterText + MIT License + +Copyright (c) 2020 Yuto Akiba + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/InflectorKit.plist b/Settings.bundle/com.portannict.LicensePlist/InflectorKit.plist new file mode 100644 index 00000000..1194276a --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/InflectorKit.plist @@ -0,0 +1,34 @@ + + + + + PreferenceSpecifiers + + + FooterText + Copyright (c) 2013 Mattt Thompson (http://mattt.me/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/Kingfisher.plist b/Settings.bundle/com.portannict.LicensePlist/Kingfisher.plist new file mode 100644 index 00000000..65d7044a --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/Kingfisher.plist @@ -0,0 +1,37 @@ + + + + + PreferenceSpecifiers + + + FooterText + The MIT License (MIT) + +Copyright (c) 2019 Wei Wang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/PathKit.plist b/Settings.bundle/com.portannict.LicensePlist/PathKit.plist new file mode 100644 index 00000000..eac41f1e --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/PathKit.plist @@ -0,0 +1,38 @@ + + + + + PreferenceSpecifiers + + + FooterText + Copyright (c) 2014, Kyle Fuller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/SQLite.swift.plist b/Settings.bundle/com.portannict.LicensePlist/SQLite.swift.plist new file mode 100644 index 00000000..b5fb95e5 --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/SQLite.swift.plist @@ -0,0 +1,36 @@ + + + + + PreferenceSpecifiers + + + FooterText + (The MIT License) + +Copyright (c) 2014-2015 Stephen Celis (<stephen@stephencelis.com>) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/SkeletonUI.plist b/Settings.bundle/com.portannict.LicensePlist/SkeletonUI.plist new file mode 100644 index 00000000..ac5d7893 --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/SkeletonUI.plist @@ -0,0 +1,36 @@ + + + + + PreferenceSpecifiers + + + FooterText + MIT License + +Copyright (c) 2019 CSolanaM + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/Spectre.plist b/Settings.bundle/com.portannict.LicensePlist/Spectre.plist new file mode 100644 index 00000000..fcede74b --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/Spectre.plist @@ -0,0 +1,39 @@ + + + + + PreferenceSpecifiers + + + FooterText + Copyright (c) 2015, Kyle Fuller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/Starscream.plist b/Settings.bundle/com.portannict.LicensePlist/Starscream.plist new file mode 100644 index 00000000..251b98d1 --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/Starscream.plist @@ -0,0 +1,190 @@ + + + + + PreferenceSpecifiers + + + FooterText + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + Copyright (c) 2014-2016 Dalton Cherry. + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/Stencil.plist b/Settings.bundle/com.portannict.LicensePlist/Stencil.plist new file mode 100644 index 00000000..bc1e9939 --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/Stencil.plist @@ -0,0 +1,38 @@ + + + + + PreferenceSpecifiers + + + FooterText + Copyright (c) 2018, Kyle Fuller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/SwiftDate.plist b/Settings.bundle/com.portannict.LicensePlist/SwiftDate.plist new file mode 100644 index 00000000..7b435ab3 --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/SwiftDate.plist @@ -0,0 +1,37 @@ + + + + + PreferenceSpecifiers + + + FooterText + The MIT License (MIT) + +Copyright (c) 2018 Daniele Margutti + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/SwiftUIX.plist b/Settings.bundle/com.portannict.LicensePlist/SwiftUIX.plist new file mode 100644 index 00000000..c1c048ba --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/SwiftUIX.plist @@ -0,0 +1,22 @@ + + + + + PreferenceSpecifiers + + + FooterText + Copyright © 2020 Vatsal Manot + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/apollo-ios.plist b/Settings.bundle/com.portannict.LicensePlist/apollo-ios.plist new file mode 100644 index 00000000..f6b71a4a --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/apollo-ios.plist @@ -0,0 +1,36 @@ + + + + + PreferenceSpecifiers + + + FooterText + The MIT License (MIT) + +Copyright (c) 2016-2017 Meteor Development Group, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/swift-nio-zlib-support.plist b/Settings.bundle/com.portannict.LicensePlist/swift-nio-zlib-support.plist new file mode 100644 index 00000000..e5b1d702 --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/swift-nio-zlib-support.plist @@ -0,0 +1,217 @@ + + + + + PreferenceSpecifiers + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/com.portannict.LicensePlist/swift-snapshot-testing.plist b/Settings.bundle/com.portannict.LicensePlist/swift-snapshot-testing.plist new file mode 100644 index 00000000..1dfa1eae --- /dev/null +++ b/Settings.bundle/com.portannict.LicensePlist/swift-snapshot-testing.plist @@ -0,0 +1,36 @@ + + + + + PreferenceSpecifiers + + + FooterText + MIT License + +Copyright (c) 2019 Point-Free, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + Type + PSGroupSpecifier + + + + diff --git a/Settings.bundle/en.lproj/Root.strings b/Settings.bundle/en.lproj/Root.strings new file mode 100644 index 0000000000000000000000000000000000000000..8cd87b9d6b20c1fbf87bd4db3db267fca5ad4df9 GIT binary patch literal 546 zcmaixOHRW;5JYRuDMndFh#Ua1V1d}N;sVAV2TO?uC3a9aJn*VxFrY}tnon0(S66#J z-d9>G>6W!ur(SDqlp`9nn~*(m%iWnv?yq`Qfp6XbK1?+om~~#r)ZnhkYQU_VbfjuT zHNn`CX<0sd*m1A}>&5sU$akD=GTXJ1e literal 0 HcmV?d00001 diff --git a/Sources/Common/Constants.swift b/Sources/Common/Constants.swift index 520ab4fa..57118653 100644 --- a/Sources/Common/Constants.swift +++ b/Sources/Common/Constants.swift @@ -16,6 +16,7 @@ struct Constants { static var clientID = envValues["AnnictClientID"] as! String static var clientSecret = envValues["AnnictClientSecret"] as! String static let baseImageURL = envValues["BaseImageURL"] as! String + static let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String static var oauthURL: URL! { var oauthURL = "\(rootURI)/oauth/authorize" diff --git a/Sources/Common/Views/WebView.swift b/Sources/Common/Views/WebView.swift new file mode 100644 index 00000000..9503fb57 --- /dev/null +++ b/Sources/Common/Views/WebView.swift @@ -0,0 +1,35 @@ +// +// WebView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/18. +// + +import SwiftUI +import WebKit + +struct WebView: UIViewRepresentable { + var loadURL: URL? + var loadFileURL: URL? + + init(loadURL: URL?) { + self.loadURL = loadURL + } + + init(loadFileURL: URL?) { + self.loadFileURL = loadFileURL + } + + func makeUIView(context: Context) -> WKWebView { + return WKWebView() + } + + func updateUIView(_ uiView: WKWebView, context: Context) { + if let loadURL = loadURL { + uiView.load(URLRequest(url: loadURL)) + } + if let loadFileURL = loadFileURL { + uiView.loadFileURL(loadFileURL, allowingReadAccessTo: loadFileURL) + } + } +} diff --git a/Sources/Info.plist b/Sources/Info.plist index 6a4e2416..aa2e25cf 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleURLTypes diff --git a/Sources/Profile/ProfileView.swift b/Sources/Profile/ProfileView.swift index 49f6ce85..37782434 100644 --- a/Sources/Profile/ProfileView.swift +++ b/Sources/Profile/ProfileView.swift @@ -13,7 +13,6 @@ struct ProfileView: View { @State var viewer: Viewer? @State private var selectorIndex = 0 - @EnvironmentObject var session: LoginSession var body: some View { ScrollView(.vertical, showsIndicators: false) { @@ -21,9 +20,6 @@ struct ProfileView: View { if let viewer = viewer { UserHeaderView(user: viewer) .padding(.init(top: 0, leading: 16, bottom: 0, trailing: 16)) - Button("Logout") { - session.accessToken = nil - } VStack(alignment: .leading, spacing: 24) { Picker("", selection: $selectorIndex) { Text("ライブラリ") diff --git a/Sources/Search/SearchViewModel.swift b/Sources/Search/SearchViewModel.swift index fe528e36..0b1e751b 100644 --- a/Sources/Search/SearchViewModel.swift +++ b/Sources/Search/SearchViewModel.swift @@ -69,7 +69,7 @@ final class SearchViewModel: ViewModel { } private func search(title: String) -> AnyPublisher { - let query = SearchWorksByTitlesQuery(first: 100, after: nil, titles: [title]) + let query = SearchWorksByTitlesQuery(first: 30, after: nil, titles: [title]) return Network.shared.apollo.fetch(query: query) } } diff --git a/Sources/Setting/LicensesView.swift b/Sources/Setting/LicensesView.swift new file mode 100644 index 00000000..72e621b5 --- /dev/null +++ b/Sources/Setting/LicensesView.swift @@ -0,0 +1,29 @@ +// +// LicensesView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/18. +// + +import SwiftUI + +struct LicensesView: View { + private var url: URL? { + guard let path: String = Bundle.main.path(forResource: "Licenses", ofType: "html") else { return nil } + return URL(fileURLWithPath: path, isDirectory: false) + } + + var body: some View { + WebView(loadFileURL: url) + .frame(width: 375) + .edgesIgnoringSafeArea(.bottom) + .navigationBarTitleDisplayMode(.inline) + .navigationTitle("ライセンス") + } +} + +struct LicensesView_Previews: PreviewProvider { + static var previews: some View { + LicensesView() + } +} diff --git a/Sources/Setting/SettingView.swift b/Sources/Setting/SettingView.swift new file mode 100644 index 00000000..0d6ba166 --- /dev/null +++ b/Sources/Setting/SettingView.swift @@ -0,0 +1,48 @@ +// +// SettingView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/18. +// + +import SwiftUI + +struct SettingView: View { + @EnvironmentObject private var session: LoginSession + @Environment(\.presentationMode) private var presentationMode + + var body: some View { + NavigationView { + Form { + Section { + HStack { + Text("バージョン") + Spacer() + Text(Constants.appVersion) + .foregroundColor(.gray) + } + NavigationLink(destination: LicensesView()) { + Text("ライセンス表記") + } + + + } + + Button(action: { + session.accessToken = nil + presentationMode.wrappedValue.dismiss() + }, label: { + Text("ログアウト") + .foregroundColor(.red) + }) + } + .navigationTitle("設定") + } + } +} + +struct SettingView_Previews: PreviewProvider { + static var previews: some View { + SettingView() + } +} diff --git a/Sources/User/UserHeaderView.swift b/Sources/User/UserHeaderView.swift index b0435291..60d617d2 100644 --- a/Sources/User/UserHeaderView.swift +++ b/Sources/User/UserHeaderView.swift @@ -11,6 +11,13 @@ import KingfisherSwiftUI struct UserHeaderView: View { let user: UserRepresentable + init(user: UserRepresentable) { + self.user = user + } + + private var isSettiingHidden = false + @State private var showingSetting = false + var body: some View { VStack(alignment: .leading) { HStack(spacing: 16) { @@ -23,21 +30,46 @@ struct UserHeaderView: View { Text(user.name) .font(.title) .bold() + .lineLimit(1) Text("@\(user.name)") .fontWeight(.medium) .foregroundColor(.gray) + .lineLimit(1) } Spacer() + if !isSettiingHidden { + Button(action: { + showingSetting = true + }, label: { + Image(systemName: "gearshape") + .font(.system(size: 20)) + .foregroundColor(.primary) + }) + } } .padding(.init(top: 20, leading: 0, bottom: 20, trailing: 0)) Text(user.description) .font(.body) } + .sheet(isPresented: $showingSetting) { + SettingView() + } + } + + func hideSettingButton() -> UserHeaderView { + var result = self + result.isSettiingHidden = true + return result } } struct UserHeaderView_Previews: PreviewProvider { static var previews: some View { UserHeaderView(user: UserDummy()) + .preferredColorScheme(.dark) + .previewLayout(.fixed(width: 375, height: 200)) + UserHeaderView(user: UserDummy()) + .hideSettingButton() + .previewLayout(.fixed(width: 375, height: 200)) } } diff --git a/Sources/User/UserView.swift b/Sources/User/UserView.swift index 35ade3c4..c0aed4bb 100644 --- a/Sources/User/UserView.swift +++ b/Sources/User/UserView.swift @@ -19,6 +19,7 @@ struct UserView: View { VStack { if let user = user { UserHeaderView(user: user) + .hideSettingButton() .padding(.init(top: 0, leading: 16, bottom: 0, trailing: 16)) } } From 0fc90c1ffea016107c83c516d25be3144fd3b766 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Tue, 19 Jan 2021 03:42:26 +0900 Subject: [PATCH 059/101] Impl --- Portannict.xcodeproj/project.pbxproj | 8 +++ Sources/Common/Views/AvatarIImageView.swift | 39 +++++++++++++++ Sources/Common/Views/WorkImageView.swift | 50 +++++++++++++++++++ Sources/Home/ActivityRecordView.swift | 5 +- Sources/Home/ActivityReviewView.swift | 5 +- Sources/Home/ActivityStatusView.swift | 5 +- Sources/Home/QuoteWorkView.swift | 41 --------------- .../Search/SearchRecommendedWorksView.swift | 5 +- .../SearchRecommendedWorksViewModel.swift | 2 +- 9 files changed, 104 insertions(+), 56 deletions(-) create mode 100644 Sources/Common/Views/AvatarIImageView.swift create mode 100644 Sources/Common/Views/WorkImageView.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 7fc485fd..accb1377 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -56,6 +56,8 @@ CFCE3E3325B5BC09000CFF34 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3225B5BC09000CFF34 /* WebView.swift */; }; CFCE3E3525B5BDDE000CFF34 /* LicensesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3425B5BDDE000CFF34 /* LicensesView.swift */; }; CFCE3E3725B5C425000CFF34 /* Licenses.html in Resources */ = {isa = PBXBuildFile; fileRef = CFCE3E3625B5C425000CFF34 /* Licenses.html */; }; + CFCE3E3925B60B3A000CFF34 /* WorkImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3825B60B3A000CFF34 /* WorkImageView.swift */; }; + CFCE3E3B25B60C85000CFF34 /* AvatarIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3A25B60C85000CFF34 /* AvatarIImageView.swift */; }; CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3425A630E7005401AF /* RatingStateView.swift */; }; CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3625A63915005401AF /* Model+Extension.swift */; }; CFD82D3A25A63F8E005401AF /* SwiftDate in Frameworks */ = {isa = PBXBuildFile; productRef = CFD82D3925A63F8E005401AF /* SwiftDate */; }; @@ -145,6 +147,8 @@ CFCE3E3225B5BC09000CFF34 /* WebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebView.swift; sourceTree = ""; }; CFCE3E3425B5BDDE000CFF34 /* LicensesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LicensesView.swift; sourceTree = ""; }; CFCE3E3625B5C425000CFF34 /* Licenses.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Licenses.html; sourceTree = ""; }; + CFCE3E3825B60B3A000CFF34 /* WorkImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkImageView.swift; sourceTree = ""; }; + CFCE3E3A25B60C85000CFF34 /* AvatarIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarIImageView.swift; sourceTree = ""; }; CFD82D3425A630E7005401AF /* RatingStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingStateView.swift; sourceTree = ""; }; CFD82D3625A63915005401AF /* Model+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Model+Extension.swift"; sourceTree = ""; }; CFD82D3B25A64157005401AF /* GetViewer.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewer.graphql; sourceTree = ""; }; @@ -280,6 +284,8 @@ CF3B2FD225B44F680017A7C0 /* StatusButton.swift */, CFD82D3425A630E7005401AF /* RatingStateView.swift */, CF3B2FE225B493960017A7C0 /* AllRatingsStateView.swift */, + CFCE3E3825B60B3A000CFF34 /* WorkImageView.swift */, + CFCE3E3A25B60C85000CFF34 /* AvatarIImageView.swift */, ); path = Views; sourceTree = ""; @@ -561,6 +567,7 @@ CFE7E5D725A7077D009EB3DC /* RecordView.swift in Sources */, CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, CF3B2FDB25B484DC0017A7C0 /* WorkMoreButton.swift in Sources */, + CFCE3E3925B60B3A000CFF34 /* WorkImageView.swift in Sources */, CFBB73B725A575D700601DCB /* KFImage.swift in Sources */, CF3BC74D25B495E90046631F /* EpisodeView.swift in Sources */, CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, @@ -590,6 +597,7 @@ CF1E5E89259CF69E00035D50 /* API.swift in Sources */, CFBCA06725AB709D00C5386C /* SearchRecommendedWorksView.swift in Sources */, CFE7E5DA25A70826009EB3DC /* SearchView.swift in Sources */, + CFCE3E3B25B60C85000CFF34 /* AvatarIImageView.swift in Sources */, CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */, CFE7E5C825A6E6D7009EB3DC /* UserView.swift in Sources */, CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */, diff --git a/Sources/Common/Views/AvatarIImageView.swift b/Sources/Common/Views/AvatarIImageView.swift new file mode 100644 index 00000000..ff486b5f --- /dev/null +++ b/Sources/Common/Views/AvatarIImageView.swift @@ -0,0 +1,39 @@ +// +// AvatarIImageView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/19. +// + +import SwiftUI +import KingfisherSwiftUI + +struct AvatarImageView: View { + let url: String? + + init(_ url: String?) { + self.url = url + } + + var body: some View { + KFImage(url) + .resizable() + .placeholder { + Color(hex: 0xE2E2E2) + } + .aspectRatio(contentMode: .fill) + .clipShape(Circle()) + .foregroundColor(.gray) + } +} + +struct AvatarImageView_Previews: PreviewProvider { + static var previews: some View { + AvatarImageView(UserDummy().avatarUrl) + .frame(width: 40, height: 40) + .previewLayout(.fixed(width: 60, height: 60)) + AvatarImageView(nil) + .frame(width: 40, height: 40) + .previewLayout(.fixed(width: 60, height: 60)) + } +} diff --git a/Sources/Common/Views/WorkImageView.swift b/Sources/Common/Views/WorkImageView.swift new file mode 100644 index 00000000..25eafbb9 --- /dev/null +++ b/Sources/Common/Views/WorkImageView.swift @@ -0,0 +1,50 @@ +// +// WorkImageView.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/19. +// + +import SwiftUI +import KingfisherSwiftUI + +struct WorkImage: View { + let workID: Int + + private var placeholderFont: Font? + + init(workID: Int) { + self.workID = workID + } + + var body: some View { + KFImage(workID) + .resizable() + .placeholder { + Text("No Image") + .foregroundColor(.systemGray) + .font(placeholderFont ?? .system(size: 16)) + .fontWeight(.bold) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center) + .background(Color(hex: 0xE2E2E2)) + } + } + + func plceholderFont(_ font: Font) -> WorkImage { + var result = self + result.placeholderFont = font + return result + } +} + +struct WorkImage_Previews: PreviewProvider { + static var previews: some View { + WorkImage(workID: WorkFragment.dummy.annictId) + .previewLayout(.fixed(width: 200, height: 200)) + WorkImage(workID: 0) + .previewLayout(.fixed(width: 200, height: 200)) + WorkImage(workID: 0) + .plceholderFont(.system(size: 32)) + .previewLayout(.fixed(width: 200, height: 200)) + } +} diff --git a/Sources/Home/ActivityRecordView.swift b/Sources/Home/ActivityRecordView.swift index 10b04319..71e95f8d 100644 --- a/Sources/Home/ActivityRecordView.swift +++ b/Sources/Home/ActivityRecordView.swift @@ -24,10 +24,7 @@ struct ActivityRecordView: View { var body: some View { HStack(alignment: .top, spacing: 12) { - KFImage(record.user.avatarUrl) - .resizable() - .clipShape(Circle()) - .foregroundColor(.gray) + AvatarImageView(record.user.avatarUrl) .frame(width: 40, height: 40, alignment: .leading) .onTapGesture { isPresentedUserView = true diff --git a/Sources/Home/ActivityReviewView.swift b/Sources/Home/ActivityReviewView.swift index 62c35482..535a5580 100644 --- a/Sources/Home/ActivityReviewView.swift +++ b/Sources/Home/ActivityReviewView.swift @@ -13,10 +13,7 @@ struct ActivityReviewView: View { var body: some View { HStack(alignment: .top, spacing: 12) { - KFImage(review.user.avatarUrl) - .resizable() - .clipShape(Circle()) - .foregroundColor(.gray) + AvatarImageView(review.user.avatarUrl) .frame(width: 40, height: 40, alignment: .leading) VStack(alignment: .leading, spacing: 12) { HStack(alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) { diff --git a/Sources/Home/ActivityStatusView.swift b/Sources/Home/ActivityStatusView.swift index 09c5f764..257a02ac 100644 --- a/Sources/Home/ActivityStatusView.swift +++ b/Sources/Home/ActivityStatusView.swift @@ -13,10 +13,7 @@ struct ActivityStatusView: View { var body: some View { HStack(alignment: .top, spacing: 12) { - KFImage(status.user.avatarUrl) - .resizable() - .clipShape(Circle()) - .foregroundColor(.gray) + AvatarImageView(status.user.avatarUrl) .frame(width: 40, height: 40, alignment: .leading) VStack(alignment: .leading, spacing: 12) { HStack(alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) { diff --git a/Sources/Home/QuoteWorkView.swift b/Sources/Home/QuoteWorkView.swift index 0a5094a0..f24c3b17 100644 --- a/Sources/Home/QuoteWorkView.swift +++ b/Sources/Home/QuoteWorkView.swift @@ -151,44 +151,3 @@ struct QuoteWorkView_Previews: PreviewProvider { .previewLayout(.fixed(width: /*@START_MENU_TOKEN@*/375.0/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100.0/*@END_MENU_TOKEN@*/)) } } - -struct WorkImage: View { - let workID: Int - - private var placeholderFont: Font? - - init(workID: Int) { - self.workID = workID - } - - var body: some View { - KFImage(workID) - .resizable() - .placeholder { - Text("No Image") - .foregroundColor(.systemGray) - .font(placeholderFont ?? .system(size: 16)) - .fontWeight(.bold) - .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center) - .background(Color(hex: 0xE2E2E2)) - } - } - - func plceholderFont(_ font: Font) -> WorkImage { - var result = self - result.placeholderFont = font - return result - } -} - -struct WorkImage_Previews: PreviewProvider { - static var previews: some View { - WorkImage(workID: WorkFragment.dummy.annictId) - .previewLayout(.fixed(width: 200, height: 200)) - WorkImage(workID: 0) - .previewLayout(.fixed(width: 200, height: 200)) - WorkImage(workID: 0) - .plceholderFont(.system(size: 32)) - .previewLayout(.fixed(width: 200, height: 200)) - } -} diff --git a/Sources/Search/SearchRecommendedWorksView.swift b/Sources/Search/SearchRecommendedWorksView.swift index 4bad0492..0ae8611d 100644 --- a/Sources/Search/SearchRecommendedWorksView.swift +++ b/Sources/Search/SearchRecommendedWorksView.swift @@ -61,16 +61,17 @@ struct SearchRecommendedWorksView: View { Button(action: { presentation = .work(work.wrappedValue) }, label: { - SearchResultView(work: work) +// SearchResultView(work: work) + Text(work.wrappedValue.title) }) .accentColor(.primary) - .sheet(item: $presentation) { $0 } } } } } } .padding(EdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12)) + .sheet(item: $presentation) { $0 } .onAppear { viewModel.action.send(.fetch(.current)) } diff --git a/Sources/Search/SearchRecommendedWorksViewModel.swift b/Sources/Search/SearchRecommendedWorksViewModel.swift index fd107e7d..558b935a 100644 --- a/Sources/Search/SearchRecommendedWorksViewModel.swift +++ b/Sources/Search/SearchRecommendedWorksViewModel.swift @@ -63,7 +63,7 @@ final class SearchRecommendedWorksViewModel: ViewModel { } private func fetch(season: AnnictSeason) -> AnyPublisher { - let query = SearchWorksBySeasonQuery(first: 100, after: nil, seasons: [season.id]) + let query = SearchWorksBySeasonQuery(first: 30, after: nil, seasons: [season.id]) return Network.shared.apollo.fetch(query: query) } } From 5418d9398d2653045ebb0e5207240bac7c816086 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Tue, 19 Jan 2021 03:56:11 +0900 Subject: [PATCH 060/101] Fix crash bugs --- Portannict.xcodeproj/project.pbxproj | 6 +++- Sources/Common/Views/Safe.swift | 28 +++++++++++++++++++ .../Search/SearchRecommendedWorksView.swift | 17 +++++------ 3 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 Sources/Common/Views/Safe.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index accb1377..1934c2f1 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -58,6 +58,7 @@ CFCE3E3725B5C425000CFF34 /* Licenses.html in Resources */ = {isa = PBXBuildFile; fileRef = CFCE3E3625B5C425000CFF34 /* Licenses.html */; }; CFCE3E3925B60B3A000CFF34 /* WorkImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3825B60B3A000CFF34 /* WorkImageView.swift */; }; CFCE3E3B25B60C85000CFF34 /* AvatarIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3A25B60C85000CFF34 /* AvatarIImageView.swift */; }; + CFCE3E3D25B610C8000CFF34 /* Safe.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3C25B610C8000CFF34 /* Safe.swift */; }; CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3425A630E7005401AF /* RatingStateView.swift */; }; CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3625A63915005401AF /* Model+Extension.swift */; }; CFD82D3A25A63F8E005401AF /* SwiftDate in Frameworks */ = {isa = PBXBuildFile; productRef = CFD82D3925A63F8E005401AF /* SwiftDate */; }; @@ -149,6 +150,7 @@ CFCE3E3625B5C425000CFF34 /* Licenses.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Licenses.html; sourceTree = ""; }; CFCE3E3825B60B3A000CFF34 /* WorkImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkImageView.swift; sourceTree = ""; }; CFCE3E3A25B60C85000CFF34 /* AvatarIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarIImageView.swift; sourceTree = ""; }; + CFCE3E3C25B610C8000CFF34 /* Safe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Safe.swift; sourceTree = ""; }; CFD82D3425A630E7005401AF /* RatingStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingStateView.swift; sourceTree = ""; }; CFD82D3625A63915005401AF /* Model+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Model+Extension.swift"; sourceTree = ""; }; CFD82D3B25A64157005401AF /* GetViewer.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewer.graphql; sourceTree = ""; }; @@ -280,6 +282,7 @@ CFADCD0325A5A34F00939DA7 /* Views */ = { isa = PBXGroup; children = ( + CFCE3E3C25B610C8000CFF34 /* Safe.swift */, CFCE3E3225B5BC09000CFF34 /* WebView.swift */, CF3B2FD225B44F680017A7C0 /* StatusButton.swift */, CFD82D3425A630E7005401AF /* RatingStateView.swift */, @@ -331,13 +334,13 @@ CFE38316258E621400CEE318 /* Common */ = { isa = PBXGroup; children = ( - CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */, CFADCD0325A5A34F00939DA7 /* Views */, CFBB73B525A575CD00601DCB /* Extension */, CFE38317258E621A00CEE318 /* API */, CFE3831D258E628C00CEE318 /* Constants.swift */, CFE3831F258E64F600CEE318 /* Env.swift */, CFC03F0625959BDD001516D3 /* LoginSession.swift */, + CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */, ); path = Common; sourceTree = ""; @@ -580,6 +583,7 @@ CF3B2FDD25B484F20017A7C0 /* Color.swift in Sources */, CFCE3E3325B5BC09000CFF34 /* WebView.swift in Sources */, CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */, + CFCE3E3D25B610C8000CFF34 /* Safe.swift in Sources */, CF3B2FE325B493960017A7C0 /* AllRatingsStateView.swift in Sources */, CFE7E5CA25A6E71C009EB3DC /* UserHeaderView.swift in Sources */, CF3B2FDF25B485230017A7C0 /* WorkReviewCell.swift in Sources */, diff --git a/Sources/Common/Views/Safe.swift b/Sources/Common/Views/Safe.swift new file mode 100644 index 00000000..afe8af13 --- /dev/null +++ b/Sources/Common/Views/Safe.swift @@ -0,0 +1,28 @@ +// +// Safe.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/19. +// + +import SwiftUI + +// Maybe Swift Bug +// https://stackoverflow.com/questions/63079221/deleting-list-elements-from-swiftuis-list + +struct Safe: View { + typealias BoundElement = Binding + private let binding: BoundElement + private let content: (BoundElement) -> C + + init(_ binding: Binding, index: T.Index, @ViewBuilder content: @escaping (BoundElement) -> C) { + self.content = content + self.binding = .init(get: { binding.wrappedValue[index] }, + set: { binding.wrappedValue[index] = $0 }) + } + + var body: some View { + content(binding) + } +} + diff --git a/Sources/Search/SearchRecommendedWorksView.swift b/Sources/Search/SearchRecommendedWorksView.swift index 0ae8611d..6d399825 100644 --- a/Sources/Search/SearchRecommendedWorksView.swift +++ b/Sources/Search/SearchRecommendedWorksView.swift @@ -57,14 +57,15 @@ struct SearchRecommendedWorksView: View { } else { LazyVStack(alignment: .leading, spacing: 16) { ForEach(viewModel.state.recomendedWorks.indices, id: \.self) { index in - let work = $viewModel.state.recomendedWorks[index] - Button(action: { - presentation = .work(work.wrappedValue) - }, label: { -// SearchResultView(work: work) - Text(work.wrappedValue.title) - }) - .accentColor(.primary) + let work = $viewModel.state.recomendedWorks + Safe(work, index: index) { work in + Button(action: { + presentation = .work(work.wrappedValue) + }, label: { + SearchResultView(work: work) + }) + .accentColor(.primary) + } } } } From 3937eb450605be496d4fbc4ab4deddae11c08b68 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Tue, 19 Jan 2021 17:32:49 +0900 Subject: [PATCH 061/101] Update WorkView.swift --- Sources/Work/WorkView.swift | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/Sources/Work/WorkView.swift b/Sources/Work/WorkView.swift index 52a5ba7c..d8f81699 100644 --- a/Sources/Work/WorkView.swift +++ b/Sources/Work/WorkView.swift @@ -153,28 +153,6 @@ struct WorkView: View { } } - private func charactorsSection(work: SearchWorksByIdQuery.Data.SearchWork.Node) -> some View { - LazyVStack(alignment: .leading, spacing: 16) { - Text("Charactors \(work.episodesCount)") - .font(.title2) - .fontWeight(.bold) - ForEach(episodes.indices) { index in - if let episode = episodes[index] { - WorkEpisodeCell(episode: episode) - } - } - Button(action: { - - }, label: { - Spacer() - Text("もっと見る") - .font(.system(size: 14)) - Spacer() - - }) - } - } - private func fetch() { Network.shared.apollo.fetch(query: SearchWorksByIdQuery(annictId: workID)) { result in switch result { From d75fdb661e0fbc4e5b533756feb0e9e651c29e06 Mon Sep 17 00:00:00 2001 From: Yuto Akiba Date: Sun, 31 Jan 2021 00:55:21 +0900 Subject: [PATCH 062/101] Fix appdelegate --- Portannict.xcodeproj/project.pbxproj | 43 ++++++++-- .../xcshareddata/swiftpm/Package.resolved | 27 +++++++ Sources/AppDelegate.swift | 30 +++++++ .../killlakill.imageset/Contents.json | 21 +++++ ...03\203\343\203\210 2021-01-29 0.05.08.png" | Bin 0 -> 6765583 bytes .../killlakill_binary.imageset/Contents.json | 21 +++++ .../killlakill_binary.png | Bin 0 -> 3217513 bytes Sources/Common/Constants.swift | 4 +- Sources/Common/Views/MonochromeImage.swift | 56 +++++++++++++ Sources/Episode/EpisodeView.swift | 30 ++++++- .../Episode/SelectStatusSegmentedView.swift | 74 ++++++++++++++++++ Sources/Info.plist | 20 ++++- Sources/LaunchScreen.storyboard | 25 ++++++ Sources/Login/LoginView.swift | 31 ++++++-- Sources/Login/LoginViewModel.swift | 11 +++ Sources/PortannictApp.swift | 27 ------- Sources/{ => Root}/RootTabView.swift | 0 Sources/SceneDelegate.swift | 67 ++++++++++++++++ 18 files changed, 443 insertions(+), 44 deletions(-) create mode 100644 Sources/AppDelegate.swift create mode 100644 Sources/Assets.xcassets/killlakill.imageset/Contents.json create mode 100644 "Sources/Assets.xcassets/killlakill.imageset/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210 2021-01-29 0.05.08.png" create mode 100644 Sources/Assets.xcassets/killlakill_binary.imageset/Contents.json create mode 100644 Sources/Assets.xcassets/killlakill_binary.imageset/killlakill_binary.png create mode 100644 Sources/Common/Views/MonochromeImage.swift create mode 100644 Sources/Episode/SelectStatusSegmentedView.swift create mode 100644 Sources/LaunchScreen.storyboard delete mode 100644 Sources/PortannictApp.swift rename Sources/{ => Root}/RootTabView.swift (100%) create mode 100644 Sources/SceneDelegate.swift diff --git a/Portannict.xcodeproj/project.pbxproj b/Portannict.xcodeproj/project.pbxproj index 1934c2f1..0aabcc40 100644 --- a/Portannict.xcodeproj/project.pbxproj +++ b/Portannict.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */; }; CF08FC0924B9AD1A00CD29DD /* RootTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */; }; CF08FC0B24B9AD1A00CD29DD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */; }; CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CF08FC0D24B9AD1A00CD29DD /* Preview Assets.xcassets */; }; @@ -33,6 +32,11 @@ CF3BC74D25B495E90046631F /* EpisodeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3BC74C25B495E90046631F /* EpisodeView.swift */; }; CF3BC74F25B4A0590046631F /* Identifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3BC74E25B4A0590046631F /* Identifiable.swift */; }; CF3BC75125B4A1A70046631F /* SearchEpisodes.graphql in Resources */ = {isa = PBXBuildFile; fileRef = CF3BC75025B4A1A70046631F /* SearchEpisodes.graphql */; }; + CF644C6925C32C10005A2779 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CF644C6825C32C10005A2779 /* LaunchScreen.storyboard */; }; + CF7A9D9225C5B8AE00B29C68 /* ComposableArchitecture in Frameworks */ = {isa = PBXBuildFile; productRef = CF7A9D9125C5B8AE00B29C68 /* ComposableArchitecture */; }; + CF809AAB25C31A9100A4794C /* MonochromeImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF809AAA25C31A9100A4794C /* MonochromeImage.swift */; }; + CF809AAD25C3230C00A4794C /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF809AAC25C3230C00A4794C /* SceneDelegate.swift */; }; + CF809AAF25C3245800A4794C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF809AAE25C3245800A4794C /* AppDelegate.swift */; }; CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D3C24CA626400F3723B /* HomeViewModel.swift */; }; CF841D4524CA69A600F3723B /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF841D4424CA69A600F3723B /* LoginView.swift */; }; CF9A375D25AB3EF8003077D5 /* AnnictSeason.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */; }; @@ -59,6 +63,7 @@ CFCE3E3925B60B3A000CFF34 /* WorkImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3825B60B3A000CFF34 /* WorkImageView.swift */; }; CFCE3E3B25B60C85000CFF34 /* AvatarIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3A25B60C85000CFF34 /* AvatarIImageView.swift */; }; CFCE3E3D25B610C8000CFF34 /* Safe.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E3C25B610C8000CFF34 /* Safe.swift */; }; + CFCE3E6325B6DC0D000CFF34 /* SelectStatusSegmentedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFCE3E6225B6DC0D000CFF34 /* SelectStatusSegmentedView.swift */; }; CFD82D3525A630E7005401AF /* RatingStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3425A630E7005401AF /* RatingStateView.swift */; }; CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFD82D3625A63915005401AF /* Model+Extension.swift */; }; CFD82D3A25A63F8E005401AF /* SwiftDate in Frameworks */ = {isa = PBXBuildFile; productRef = CFD82D3925A63F8E005401AF /* SwiftDate */; }; @@ -100,7 +105,6 @@ /* Begin PBXFileReference section */ CF08FC0324B9AD1A00CD29DD /* Portannict.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Portannict.app; sourceTree = BUILT_PRODUCTS_DIR; }; - CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortannictApp.swift; sourceTree = ""; }; CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootTabView.swift; sourceTree = ""; }; CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; CF08FC0D24B9AD1A00CD29DD /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; @@ -127,6 +131,10 @@ CF3BC74C25B495E90046631F /* EpisodeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeView.swift; sourceTree = ""; }; CF3BC74E25B4A0590046631F /* Identifiable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Identifiable.swift; sourceTree = ""; }; CF3BC75025B4A1A70046631F /* SearchEpisodes.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = SearchEpisodes.graphql; sourceTree = ""; }; + CF644C6825C32C10005A2779 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; + CF809AAA25C31A9100A4794C /* MonochromeImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonochromeImage.swift; sourceTree = ""; }; + CF809AAC25C3230C00A4794C /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + CF809AAE25C3245800A4794C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; CF841D3C24CA626400F3723B /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; CF841D4424CA69A600F3723B /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; CF9A375C25AB3EF8003077D5 /* AnnictSeason.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnictSeason.swift; sourceTree = ""; }; @@ -151,6 +159,7 @@ CFCE3E3825B60B3A000CFF34 /* WorkImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkImageView.swift; sourceTree = ""; }; CFCE3E3A25B60C85000CFF34 /* AvatarIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarIImageView.swift; sourceTree = ""; }; CFCE3E3C25B610C8000CFF34 /* Safe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Safe.swift; sourceTree = ""; }; + CFCE3E6225B6DC0D000CFF34 /* SelectStatusSegmentedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectStatusSegmentedView.swift; sourceTree = ""; }; CFD82D3425A630E7005401AF /* RatingStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingStateView.swift; sourceTree = ""; }; CFD82D3625A63915005401AF /* Model+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Model+Extension.swift"; sourceTree = ""; }; CFD82D3B25A64157005401AF /* GetViewer.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = GetViewer.graphql; sourceTree = ""; }; @@ -181,6 +190,7 @@ files = ( CFFDC8B3259C7E63001C8E29 /* KingfisherSwiftUI in Frameworks */, CFADCD0825A5A78000939DA7 /* SkeletonUI in Frameworks */, + CF7A9D9225C5B8AE00B29C68 /* ComposableArchitecture in Frameworks */, CFD82D3A25A63F8E005401AF /* SwiftDate in Frameworks */, CFE7E5DF25A72F63009EB3DC /* SwiftUIX in Frameworks */, CF1E5E60259CEA5300035D50 /* Apollo in Frameworks */, @@ -213,8 +223,10 @@ CF08FC0524B9AD1A00CD29DD /* Sources */ = { isa = PBXGroup; children = ( + CF809AAE25C3245800A4794C /* AppDelegate.swift */, + CF809AAC25C3230C00A4794C /* SceneDelegate.swift */, + CF644C6825C32C10005A2779 /* LaunchScreen.storyboard */, CF1E5E88259CF69E00035D50 /* API.swift */, - CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */, CFE38316258E621400CEE318 /* Common */, CFB8D8B9255D18740092764B /* Root */, CF841D3E24CA67F600F3723B /* Login */, @@ -226,7 +238,6 @@ CFE7E5D525A70764009EB3DC /* Record */, CFE7E5D825A7081A009EB3DC /* Search */, CFCE3E2A25B5AEFD000CFF34 /* Setting */, - CF08FC0624B9AD1A00CD29DD /* PortannictApp.swift */, CF08FC0A24B9AD1A00CD29DD /* Assets.xcassets */, CF1E5E5C259CE88500035D50 /* Envfile */, CF08FC0F24B9AD1A00CD29DD /* Info.plist */, @@ -266,6 +277,7 @@ isa = PBXGroup; children = ( CF3BC74C25B495E90046631F /* EpisodeView.swift */, + CFCE3E6225B6DC0D000CFF34 /* SelectStatusSegmentedView.swift */, ); path = Episode; sourceTree = ""; @@ -289,6 +301,7 @@ CF3B2FE225B493960017A7C0 /* AllRatingsStateView.swift */, CFCE3E3825B60B3A000CFF34 /* WorkImageView.swift */, CFCE3E3A25B60C85000CFF34 /* AvatarIImageView.swift */, + CF809AAA25C31A9100A4794C /* MonochromeImage.swift */, ); path = Views; sourceTree = ""; @@ -298,6 +311,7 @@ children = ( CFE38312258E603300CEE318 /* RootView.swift */, CFE38314258E610F00CEE318 /* RootViewModel.swift */, + CF08FC0824B9AD1A00CD29DD /* RootTabView.swift */, ); path = Root; sourceTree = ""; @@ -455,6 +469,7 @@ CFADCD0725A5A78000939DA7 /* SkeletonUI */, CFD82D3925A63F8E005401AF /* SwiftDate */, CFE7E5DE25A72F63009EB3DC /* SwiftUIX */, + CF7A9D9125C5B8AE00B29C68 /* ComposableArchitecture */, ); productName = Portannict; productReference = CF08FC0324B9AD1A00CD29DD /* Portannict.app */; @@ -490,6 +505,7 @@ CFADCD0625A5A78000939DA7 /* XCRemoteSwiftPackageReference "SkeletonUI" */, CFD82D3825A63F8E005401AF /* XCRemoteSwiftPackageReference "SwiftDate" */, CFE7E5DD25A72F63009EB3DC /* XCRemoteSwiftPackageReference "SwiftUIX" */, + CF7A9D9025C5B8AE00B29C68 /* XCRemoteSwiftPackageReference "swift-composable-architecture" */, ); productRefGroup = CF08FC0424B9AD1A00CD29DD /* Products */; projectDirPath = ""; @@ -514,6 +530,7 @@ CFB9BA78259DCD0D00C51708 /* Fragments.graphql in Resources */, CFBCA06525AB6B0E00C5386C /* UpdateStatus.graphql in Resources */, CFE7E5CE25A6EC6B009EB3DC /* GetUser.graphql in Resources */, + CF644C6925C32C10005A2779 /* LaunchScreen.storyboard in Resources */, CFCE3E2E25B5B77F000CFF34 /* Settings.bundle in Resources */, CF1E5E5D259CE88500035D50 /* Envfile in Resources */, CF08FC0E24B9AD1A00CD29DD /* Preview Assets.xcassets in Resources */, @@ -562,16 +579,19 @@ CFD82D3725A63915005401AF /* Model+Extension.swift in Sources */, CFE38320258E64F600CEE318 /* Env.swift in Sources */, CFE7E5E125A737A5009EB3DC /* LibraryWorkView.swift in Sources */, + CFCE3E6325B6DC0D000CFF34 /* SelectStatusSegmentedView.swift in Sources */, CF08FC1824B9B04900CD29DD /* HomeView.swift in Sources */, CFE38313258E603300CEE318 /* RootView.swift in Sources */, CF841D3D24CA626400F3723B /* HomeViewModel.swift in Sources */, CFBB73B425A5718900601DCB /* Network.swift in Sources */, CFC03F0725959BDD001516D3 /* LoginSession.swift in Sources */, + CF809AAD25C3230C00A4794C /* SceneDelegate.swift in Sources */, CFE7E5D725A7077D009EB3DC /* RecordView.swift in Sources */, CF08FC1624B9AFC500CD29DD /* ProfileView.swift in Sources */, CF3B2FDB25B484DC0017A7C0 /* WorkMoreButton.swift in Sources */, CFCE3E3925B60B3A000CFF34 /* WorkImageView.swift in Sources */, CFBB73B725A575D700601DCB /* KFImage.swift in Sources */, + CF809AAF25C3245800A4794C /* AppDelegate.swift in Sources */, CF3BC74D25B495E90046631F /* EpisodeView.swift in Sources */, CFE3831E258E628C00CEE318 /* Constants.swift in Sources */, CFFE4FFC24C9C00D003AECE5 /* ActivityStatusView.swift in Sources */, @@ -580,6 +600,7 @@ CFFDC8A8259C6EF6001C8E29 /* WorkView.swift in Sources */, CF3B2FD925B484AD0017A7C0 /* WorkEpisodeCell.swift in Sources */, CFE7E5D025A6F6BA009EB3DC /* ActivityReviewView.swift in Sources */, + CF809AAB25C31A9100A4794C /* MonochromeImage.swift in Sources */, CF3B2FDD25B484F20017A7C0 /* Color.swift in Sources */, CFCE3E3325B5BC09000CFF34 /* WebView.swift in Sources */, CFE7E5C525A6D65A009EB3DC /* LibraryWorksView.swift in Sources */, @@ -604,7 +625,6 @@ CFCE3E3B25B60C85000CFF34 /* AvatarIImageView.swift in Sources */, CFB9BA76259DCA7500C51708 /* ActivityRecordView.swift in Sources */, CFE7E5C825A6E6D7009EB3DC /* UserView.swift in Sources */, - CF08FC0724B9AD1A00CD29DD /* PortannictApp.swift in Sources */, CF3BC74F25B4A0590046631F /* Identifiable.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -810,6 +830,14 @@ minimumVersion = 0.39.0; }; }; + CF7A9D9025C5B8AE00B29C68 /* XCRemoteSwiftPackageReference "swift-composable-architecture" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/pointfreeco/swift-composable-architecture"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.11.0; + }; + }; CFADCD0625A5A78000939DA7 /* XCRemoteSwiftPackageReference "SkeletonUI" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/CSolanaM/SkeletonUI"; @@ -858,6 +886,11 @@ package = CF1E5E5E259CEA5300035D50 /* XCRemoteSwiftPackageReference "apollo-ios" */; productName = Apollo; }; + CF7A9D9125C5B8AE00B29C68 /* ComposableArchitecture */ = { + isa = XCSwiftPackageProductDependency; + package = CF7A9D9025C5B8AE00B29C68 /* XCRemoteSwiftPackageReference "swift-composable-architecture" */; + productName = ComposableArchitecture; + }; CFADCD0725A5A78000939DA7 /* SkeletonUI */ = { isa = XCSwiftPackageProductDependency; package = CFADCD0625A5A78000939DA7 /* XCRemoteSwiftPackageReference "SkeletonUI" */; diff --git a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index b0070498..7b9dcf94 100644 --- a/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Portannict.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -10,6 +10,15 @@ "version": "0.39.0" } }, + { + "package": "combine-schedulers", + "repositoryURL": "https://github.com/pointfreeco/combine-schedulers", + "state": { + "branch": null, + "revision": "ff42ec9061d864de7982162011321d3df5080c10", + "version": "0.1.2" + } + }, { "package": "Fluxer", "repositoryURL": "git@github.com:touyu/Fluxer.git", @@ -91,6 +100,24 @@ "version": "0.14.0" } }, + { + "package": "swift-case-paths", + "repositoryURL": "https://github.com/pointfreeco/swift-case-paths", + "state": { + "branch": null, + "revision": "1aa1bf7c4069d9ba2f7edd36dbfc96ff1c58cbff", + "version": "0.1.3" + } + }, + { + "package": "swift-composable-architecture", + "repositoryURL": "https://github.com/pointfreeco/swift-composable-architecture", + "state": { + "branch": null, + "revision": "37c6312ba43ec697063abe5956908db6b71aa68a", + "version": "0.11.0" + } + }, { "package": "swift-nio-zlib-support", "repositoryURL": "https://github.com/apple/swift-nio-zlib-support.git", diff --git a/Sources/AppDelegate.swift b/Sources/AppDelegate.swift new file mode 100644 index 00000000..51796299 --- /dev/null +++ b/Sources/AppDelegate.swift @@ -0,0 +1,30 @@ +// +// AppDelegate.swift +// Portannict +// +// Created by Yuto Akiba on 2021/01/29. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + +// func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { +// // Called when a new scene session is being created. +// // Use this method to select a configuration to create the new scene with. +// return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) +// } +// +// func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { +// // Called when the user discards a scene session. +// // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. +// // Use this method to release any resources that were specific to the discarded scenes, as they will not return. +// } +} diff --git a/Sources/Assets.xcassets/killlakill.imageset/Contents.json b/Sources/Assets.xcassets/killlakill.imageset/Contents.json new file mode 100644 index 00000000..efaec482 --- /dev/null +++ b/Sources/Assets.xcassets/killlakill.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "スクリーンショット 2021-01-29 0.05.08.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/Sources/Assets.xcassets/killlakill.imageset/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210 2021-01-29 0.05.08.png" "b/Sources/Assets.xcassets/killlakill.imageset/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210 2021-01-29 0.05.08.png" new file mode 100644 index 0000000000000000000000000000000000000000..3d18b8b84124cbb3a9958bd51ee6b28ecb7bad3e GIT binary patch literal 6765583 zcmZU)1y~%Ft{CuCAT#nRjd6s*O}rk;OnIK?MK+81iybp8x=4IRF3+85!}dWy={o2>?Ld zw3C!nlb4jFQgZ=W+c{VP0CJJZsYsd{LnMKFYgY;HsHpMY=ktpT!4!p3h=~h*Rgi;4 zq3^}RJ09FZtwN=tDf_Td{x!IQh00$1gYLV&a6fSZgq>#Hn*0kkD01uLAD^?f*R1Bt z?AMpeR6*{&Cpds$5-ovE7c;;z%JTbHF-jRjUsyPP0978`ei!P3bJHhI7GYsLDlU;% zt+jROpV-Y-BAZ9+udh1l+vmlGfIO+tM6XXy3=qdb&pv!bOF&*6m3N^P*E#&UOd5kY zj+7@jSfliA1fEfqOW$gWff+(*W&wcGVak3-1q=~Pa{p@n@s;wE0HlE?M=cbpA1cxe zi-~1M$Cj3zp3d9dgPciwV-6VP2~8ggxJZ8>d>ul4B~vL6EgXWcZllUP4Nm`X#=P;9FOgPTutGQ$U z(}bN0HewCFzvXe6-LB#@ZK>XO{QR%UH0M^z+_GG_Iyn@T6KHo1VXubbn#VjgXcoJw zzj;KsEc^R)@>2(C@$N6BgMi%5aCr4L3a^^g36;7mxKar3KktqH9Ve`{_Ep%%Yd*j8 zf8pkvMD?j1mBm)f!mg^>vw>&6nmU&2(Ix#5V#B?FF8;laZqenlh}L!=7~ z0l$O7iS?VXWis{iD`wGRm!Mjr6S!>Op*MWB=gu?(*@KX}dY`j}a6q&SXY^8{B84MM z(PTTfgW2zMCh1dQCkz3ByCKBc=M(^@djL

(2M%_vGGNAuv*6Fg$q(SAp0ZNON5j z0&pH17*FCH$Z+aZ6dw=`sQ~G6yCYo+HJEsTG&T4RNcefEGr@2h90I5r-SS`pLwKET z3^0-~e7h;24W4#GgeZgx8R;7}a}mOUBtrteB^D>O>L4X*7)_oh6N*BZR05ekN@YY; z9!?o-dH7*oZa(gW-agk1#%jbv9`!!P6|qb=T^iyMqy$QqhVpykodBvad?`e6(@=nN z4L!Ao7fRiP0z@+jJL_tPDth7}s3|ZB4FjxV%?o_h&C1|4Q5AyqW0|Fr^FOO$lxb@s z9TJoi^2R)b_80uHMO-2|iNlnTEo|N|-k;r9-bcNHal?HOejsSU5($0@r?zn8&?e$X zC&i7B@B7e$XFAOB$T7f4$l<{Omv*cBAtjEtr^Pg+=6r$Y81 zu%;EMRRfo*SFB61OX7v{jt(AdUnr#DL&@Jy!%PEA^Y43@;qf)_P4MG}KPM|B<1&jd z7nW;keVpZ(Rhm^UN77=iz%1XKQJQ_4_56JQx&HIs%)<|+a_rgE;o_>&(_-U1%!wKv zZj#It8I}U_68A}&nb{fgS&Ny}3Z3%YPiMu2`z3CCA|V}N{z?9+FM5(XA;sPE3uTje z&KlbxyC0N6${p7E)`h#|W8?bhtO1p7mFAV!l>yX zp4jdTdaP`Fjz=EyjN651v`*{T5ZXk#hFm5@*D8J=VN0c8h$a5B(%beo%K6&aXxn@0 zIx+Ki=IBY;GUe&q>A@+|D$-uY*v|Os$Hw)ZiI8pelgXnYsM5vL4fQYYk9KG00;vzT9( zT%N{8R96F)lA4^Fvl^B`>X_Aht!%JSuns~l7Im0ZxMrv@Mm>6RXv3e7J%sUPzOzZ+ z#QTE#F*B+d@&?vp=O(?oDX0mdDPbsknIZH8gw5PaN|uh-MgDL1;H^4P-JpO%CR28# zaM^;1Gm_JtlhXXzT+!TTd$+eTs+FXgoIM64-$ma`cdSTcwBHGSgak>I_6GO1MvoG( znz(t@-fYG6m8PhrfK$j6A#{BVv!3vjurBiRAG?ud(hXjZuU)4 z)pNP`^2AEla;qsqbWofml<=?)2dWn_j$T}I-}I*0=LQg z5A8p9^j6JToP(M?ek@O&D9X}NfA{+&*CMw>Q%D{AsdUBgCA*D%nY)$iar;-A)j&!G z8zJl2Xzl1?+NCf*)om&MKK=^+2@8gHmBC_TRDHQOZ=H~r`y)vq@4Y?Z9AcG7Oanv|HfZYu><+BF_&DM%hSqvvC!zm({iNCUpV)O&uP~h` zhv?y`4u>tLmWz;8tR2x9kjmmpeV^AzPUS*nL8V7@dlXhuS<2s(D^O-*<&PwFeccDA z$L}YpBV;4xU*35PdR(PMq%+k_Ztbd@|`}^WHvtTQk;okXtiib zYvl&uy?9m&)wKNRuPgaUV329_=l~jBi_1+DojsXe)2TZ<@}GQJgTqGpGv7QjOFkpm zR7_EoI*&!JAndkXv%Z;vcocpp<83jC4VLo%+cz#Rx-LTEQuj=BsoTTO(0MGRB4WG% z&%47D%Y&BTW3Xk=q6(jD3vvgEyi|-;KdO>s{S+?t|2$&1b?`L3ZR0W?(-65FK3pWS_Q9dYoO;-CV70uadUqI=^0r z93xp^%>yCA%)UP_nvNs?BxbCC@V7s9KNXqXo1eeuxj5+YcX}OJFYXK=9t@E2*S;}) z^;*q)-WbXc%qL|h=pgcZ?=Q$_2*sKWIQF)BIZPF8d)+6CBqjD_^%8lpo;Ij#d|Vgo zu&2bJ^t%9FJ}*Q-;`J%9e9iq2@5mnS?-zctH?i-Suy!=~qut-w3cLCmj(!6(7{K6h zZ6x6V){bQ#wmku5Z_XWC)?qaxLWVc463(5f@N9@`6gQw=1Rzxjpt>Rfd}K*TAvjkR zUqjf$lRCpRMMCPkOO?|gJ1+J8)|N2$_x$e8z!d=Q1NgF1P*PTqQ@-j)(>=ZmY{>f2 z;V*HOz~3(c+l5Kq;#Y_DWK`n)B076_ORQwMf&2n|#ht_@S8L3D4|?-?qpWo0t(BDl z%x^L>03L<}fbb^4ycHk}>Ho?yFiZfrf3?E`010&C?P5&pZHOPoX!_(aOz?%G1%o$yLZx zgyvr(gx=(Tn%QZn{x!tSUW7(hS&d2(db>dOe|p$C**Mt$ckVY; z;eT3%)a*R19CW4Z9N*UL%?6N*lZ!+6Ukd-fuKzRnZ&fW&@o~DjrKP2!rKQAXfAx0FD~+O-l!WAv6kbxK;nWPF&dKbg*uR{@`;NnTy}{8y z-_TI$_wV0!*47NG&8`DaUDK!~5yKIeO$xLhN~UuuuoujDXZb=!mnO|P4RT^$93zaD zxOm!FMP~fmXV04*Jq0R%{wxZ6L_3(;89CTi6_sBPc$IAN^I=%+49JbUbde5pE8fnZ zoUf>;_*^mFAI;vD@Ny~o%H4kcaCET$t;f#6foHYVV|@SbTqWtj>1wMs;UFWYnx)$_kl*O>^Cb~?wpt}Zu%rHPG;(?3yE zRQy7z{ThU;NSg&CT7&phL>uRJ)tAhoGu61BC4biWD*mt;5pC!1Pc7nEla!LGlVmN` zw3z>Bt8e6GYjwQV{!tm(WV>*i??y)pxU*RnaUaM+b|ogP)9bo-IFoGGPEsiPnTVO8 zTSbw1?E?AL`&e}8S~_B^sm3XRCOVfvW^IOObCAo{!o&yhdUR1_&qMlvM7M?W#7k6uxjU* z(S+Fq%`MUV957STS4o;=NnS7J8xj^p(n+b21&J%}$1f!!tzSyvkT8o*mKzQ9w_tT9 z{Z9kQo`j%8=aYZF+zwJ6cyF#J!H{(&G^W<6_#Y|Ern(501L*pE}UFA~|Z_Dp>W^ehhP`gcu z|44~UAdQE@d?dt7gC)3(zKxBGS!zS1BqAoShkDE*>byxPLR zz&I60{_(iLXaf;RrBFoJb%!nDJ=hY=qTajXaUs*{=BEB+hTvcRIXt{K^}XUf_+$qIhal3c zK%zNt7M1m3XqyB)WdmiuyINcInNry#)0Z-ain5eHMgF3tx*c$xA$^g{TsPCA~$3OCgGPjxR!FEc-Lj{#sp`E`HEc)U&|JnSOKpG2!NPz4}OuWL|&K4Nq|@H&PZelArIc;d-<-n&;n+@9_@ zr+?)AzPzq!oO~GEn2q0*V}<=vp~I`O&?SO{K7nzC;)c%Z-Kk&pFt8(W#XUH4#gCb- zzyI7+I3CGUgxgGHL}R~{rX~1|vSlM3yr1*&r4nqQrP}D|Ww?1*N3P2CRB~%D+g8&5 zONWRDExW2F0h?(;cwVw? z`Xyin5eFUO--2kdq|2&>ILX>3GCOYBM?Z1U_IOKZMdZ93L%TpHu7{sZ0`3d^+8S{i zyj_`21^2RF43+&z^W@wTGTZRX@=(Hx?CNbgn5=A?c+@|ZdC(Tx7cY8G_k1-yjZGkYj7%MraW1 z023k(Gi@5R2PEAv@OV>_Q=iX8jw zs;p%DTM;$?WLX_~NG>#1r@Kpr@IIIm$v5dqj(iNqP+%kaW7D4bC5J7Zuvwsl5XAQ5 zNsG(Q=ZA|C_Guk`bl=PC#)G*^14tujg0LqQ9L{C}if=0)nyl5kZfhz}l4*1EG@(lN zHsJ8?uNRssuwVy`@(Qi;YPOpek`ZqCQdFz(+RkiI&V+=BV|rJVk--<@&b5$V>e>26 z1}EN&{H$@}HE{;G23_QOd2j@lSA=fx$`d*(L-u|}FZ}dO&+o4Le&5f};Pe?hwCD~~ zXfL|GLwjGS6T6C&A9d^9E>QjpA(bLCcH6fbK_Ml9@!riEI-|;y@q;*5T5It| zdiwfT;K|r-WOioTuinlptW{JWGP!LVzx^(aOotJ0E@I4S;JQ7@Sh9kA2*)9kGnE^t z_qnaAv%l3`s*iqjitYhBBsF6fN+$2nPx-U$f%-xC#9%?C8KuulRBgdX4+v}eL91Q! z@jXY5R3^W38!Dub0wH74r02TN3Ny%WkB9TN;I0q437g5wkS9DM4$%Z>Nt;7|%mto% zT{8bqzaZ>i7sqba&pXMfn~0H+z{HNOKm_1e+HyVu;$_G<)mW@UT?9@6MZlkDaoX9d zZ@++967T2DqVHXn`AnF^kMbrTRI%>7`uD*q7H||J0=2%M*P%7>Shl+}2O0+_jjuWn zvm@-qv|LQt3C>%?sEDzja)MZ%iC-|}N`tyO5$f-L*vm#286jN1!TdY->$=j$&+=n0 zEiRcFmD?fynew3QUefqO;y)SXKCF%0a44B-=)t<|hywQgx&5#|(jSFGracB>I8zJV zjPL@|BgO~6W{#~|z1P{qEQki{dQ{UOJ`v=?+|3P^)j)}O}Ytqm!*S8SS>`q?G0o&-XJtYfEy<;{z}OQi?}&30CKN+EDkkAgU%Y1}Hupr`$QJFfrL;~*f%ccdH56R_ z5dC?o;O_jy?qH}CRQyq&ea%Eyjf{h8T;Y|Dya)5ZZ1UsrY&1jSlzNOJNTkU9m*XE4 z+pFy&55JI$Nx5f(idn&MED{?t0#wi4{f}(&fBMKpQAFSj5DWKt;L*HyAE&m*3-0IdIR{x$=LQ_U#k4M#NOW z=80Y-edZ^8jM@M0ahk>9=LvB%QfQKWKbq+lbGAP@a5+ z%KD8z{-*s22|V6nDCuX&k5qkc)agv?cReaZ^k!OdGH`xpezthTx~)b7T_f2o8J4m zAcxBdm|hUjUuQrxdgB4M1nmXfU5Essytu!lNRVy&e<~9p&|UC(%hxUemcK3BnQvRQ zrrnfzP0koo7Z}jLSmQ~9sm#^STtL^oU>lk;2 z&w(IR(U5Q6yB1Zf$xr`{dZDeebNz5MUvj0ePp>&#D^>FwLkQpIa8SF?sb;Y1mmXtf zZs9Pc-0F(4eixCm*>p^_CYztMsDw#_pg1sWQMbmsJ!z>Vu>>5;h+s*)uhUPA8OD-H zk)-OqeD`x^Jk9z%GFk8zslbbkPg;p+GTR0o4Xsevky-nIZGU=we@;TXrUjuaa2j6W zVWA10uU{R?{S<_xl8`o)wour(n5zkg0>*YMFbZNp`>>P|F=_KR@*Z2%53$3%Lmbmo zgFMUGY(=co)kX5J#f%x}$Kpmxj)pB%7X9JUwtdM%EP)`FLt1~kA^!dXf72R8o?vIh zO&N{khQ%xi4>bSBX>vk=ufm9p8)hBbu-0sA1f0h7{>_r43%amp^OH3?CW49M-|boLbTg1513j*qIYK2PoZXY~d<;DzE`i)w&VXevxNr5RgQRnj0b2ag9#5K|aUWgcpMx-+C-{tVBK{D^ zr!9q2VfUAGm4U#N|MuPyi55uE>$U@)!wZa_|Lwc)aHFw@$;HQeOLXuoRu3vn$x)nd zgzfA06iD`qK~v_e2;Dwi4CMNyu)TP`9~%bT2Hnvf30)07ObRKNVqCiPQe-oGZ6wUy zCh7|7vO2_2N6?gRNyr8Y4=<4$N5`0LHoQc{w!FX-37UzcIu$2Ux2tS-I6sG@V>*>S zes}dkLEc6pvr1dj7ed-d`(9;c_(UQ?AmqGkr~&6FIW|`qY~*jc5vS=OfW1W`fbu~P z-#DITaxloG;V=3)s$`W|Baq>FAYsEOnZo+ZjY=nVho#u5rt%I`&7f1!ry*%dK~(bt!|_0 zls0*P-;~V-yxMwGlj_fBeeH(FO+1Tlae~#iHo|8oI!pTF6LAIEfBuT*9o{bqQoa{I zQ??5=4IicDPCz#Oc(NZ`5+ZoLCBgBPt0kg zkge!o*~6g_tvjw^`jjJ1Y(E$t83c)j4cfUow>TK%U*~~~Tz@`wcZ^a#{Fv#mkymBaV|nICD?4#c=PUH z#6>bwAU3FJ@Uve+@;A}BP2N2nb)e@$-rTua zT$S4w*zag(bN_?oFxuv@&{#U@#8TWQB_Bc9()vU9a#JEB8*qe!o;qUt<#iRE&X$(# zbOW8RDf&Dvmxt3NFN~Hh-gT<}V6>Qd125+d6 z*d+%G46Y>~{{W9Ne&%rcdq}mlXMtuoN~j5!Kwv<%y$jFtCf0qR^gEwm3-iMd?8!WX z;a^{v%x186ScV~8w_kxjcnYLHAmZrwca-CXuZV3uo^`V0al}+#TL;OU#Fol<2W&NN z2Eq|SKN@1P-vt9Xgv7&%Qbk=N$Vg8jae63kk*izhiw#II1Kb2wO<}AO9>&n=3?su# z95hoKQ7qWNf-G<-D&yvc38}w&?krwk+O3Js=L`Zki?K@`V`EGgn&!k{Tf%e_MRRq2 zG#<`DOq6Rm1KyBULgT-Y_DpKR`4EHg_|1*Z@L~1vgG1S0vlA_^u2Q}58Z>>s%aDsC zf#^<*MJsoQN_d3(SQj1>lYj>HGHCmN@Yxhfco{`M>VF8K9qJOJ;W+nPTaJDGa%o<# z^$)NH)VKLR__+xZUVCr!|M^z9rh-nFkbFmXC=yGrf*wjpU1~~(EgKp_NIEnK^5*EI zX!rpaj3k>K@(6%~Lr3S}=n{M7{Fl=l{2!;8cwTQBefT(ZpZ?2=g!^Sld3gw5d$vzR5FNd&ZPi^;k+FIk;2ap zqBUa{rtX3sau0_;-1edB-L*RXF&`Z(0hb zJLid;!ePe>1hAxT4_a z0kOewweLsKq^Ljg+@~+)JuKKU@P#<~rS~f>L3>-I*zhjES8;;V@da(bAMe1|^ zZ$ZOpW6s;?PTjPpvyR)i_^&FQ9YJo*=2mcvKEsgSwde{|s?~<#)Q8IL{fS^?0qw_! z>!X`+GI%&MfGSIxxv3`^z2nUF*DlP8$_DDE$vDjD1D{_`@Cf0Q7dUW2d=tdSlkt1* z1zn7}{u%z?waSzM3Lr>|K6XDgx{1|$BM!EQ9OS?0JrP)?I>uh~&!--sqQ;je8^`by zg;X{pu3{wz7s1LV1lFe5SSo0A?oi))PSS?X1nG4_4hkH~6ik2vSlSrU3{FxMAOu~w zkUg-)DNOehkm?{O@eFLtXW!^H*Oh|RjgxRU0Y_6}M_*ODCL=3S;C$N!MwDj}9Irpkg{u0#5diog6wj24p?Oy@x1AwD zQuypanYOe7bjtqN1Z)?wz=wF7JA_Q#Hdd_DJ44*({w@Ap#Eb7aUi9d6989JiKT=4q zHTdpHFQf|t!!Y*Wv$FLa}besB!OxqF&XzK-xVA0HS zF7H#C6Tg@VI72tYw|VRMm(bTyM$D(CUJSebEQ|Zm`vxbg3Wr`ozs9!?@C|s8c8h?g zR4CV_eef_rb&8j-Pfrpp-q)WW9*(L{it^F8625}M2tw*3kr0F{&o+Lg0isHMU*Z}T zh4Vb0q#M)3Q9OBQQHW>3!Dwu1?~12#R(4*V1XVTsoRX`s=eh*VMu`VG1$?H<)MPeo ztYQ6acRP03VrYqQ4Si{-JbZ4B6;yLQ^>gPu1)n$LK_!Wds$X9=z)otRoCvZ5`hHNI zzC24whKee<3l}e^F5}p@H@0e*3bol;Tt5@#^&g#8D=L?0wSs~kS(VG7B0YKdhL*njq*q)>9R6v)dpLpxBWb^;Dmx#S7I4}~`3!qWqLKBRgbuVbEeuzQ$0A^% z)6Mn#DU7%0e_0-jo+W^Pjf6T~%63#XaRYT<`535tDR8a_5Q85@I%1|b%tyOYom>mP z&4niQJzyeGFv_JF{&b5G-R@~v+;T~YpWWpuJnr`UA7&!2lgM`9^}(RE2|>x0d>-x9 z?M2%ps80uw0B<{S2ZHN>?&bYDjnSY^K)cWCZ+(5xdAJ!}bW>*c{v!|CTo1I#{z-`F z_KTzcUDh0UV`7u1IFYo$o;-@c#rPMK@ONHrVcx&U!#lz8IN_L)ZbULQU$%RZ-3-qK zQPE%Z6jjz+(w$b@zLmHK_dY#|Xyp?yiMnvg5OsAAVavvm&olDf5cw8~2iW9xPw8Vn zIgoyTQQ0hM)DdgT2Z7&H+^2|=bq1;M$JlP<`1igsL?`llzq$>Ks;~VJI>LmBjvHSH%m*W~*TaP0BNXzPln} z_w3UZ8@G2&M}@(1{x(2<$*1a%Ww?{H-~ks&GZBNQn^46 zQyYcgaEWh{auXD{fe{T}O)TEXHo;50^{r1|gx5hm>TK?bKn9_l9<7lWXk`Z+ZjHIs zNC}xg-?yM_489GXpoJ3WSS{t1E5d&4`D&Bjs`hP~hEozQkj-TBY4T`O|M_(DqG zY1Mx0rLLYs$JQ9yyMCd89*q>ibYB`%gIA`}L-?wKS6EOHmf`N*rNm*tyds*Q6E{pJ zFrarP85b(uQgsTup`J@M>GV={5z*$S=2o}ihlF69@cj4td0h_wEb zI_3d*Bf{TY5^aT=6eN{pJSO+7h^25mT0AgD%Sudk> zlxomdtPi%_7vaE0d_dA<6?Mr_kO;fpPDR`Rcgk&z>Z=#vfq^aowI2P4wkClYq`{U zY;IjqaD@ADWN2iw|K`P#yph56K~g|co*d%BzCn=KTS%M?Hp1kBS&ln-q$-9rv+-Gz zMkQ8v!e)b@DAXwBThV(HE!)v&e+hL?!q08c{;V;tq-uTA>$?@4OJ%sc-O`{SDQ+MI zzscyMJ9y{9+9*S~O#y3lcYNgVmYWvsH2tH1GsUl*x4pGxKN6q2`}r!s8CBT&O^tz+Fa+)`IP!_nG#E*$3FqD9zvyraA$Uv{XgFID{p#ig;+Ga%!< zj<6+jHgU|>EbOLE~O=+<%T z^LJAvp4c9@3l$pV@reMyL0Yh6qb#)IR-<|9Gx) zn3KXY^QucM2XL50kSO2Geqiw}n|82jLF~E6)8l#-j9+nOrq zA~h0YkNhb6^FiMRSSe7zX2bsc^EdKmhcS4)KKnbLlh?S6CY6G=SE23#G@-HgW-92W zapik>L1$KY=c2Edq6f0s7hn^Rpi7d7b3?jbmqhEL!+Na+1d&^TfUmbp(KS~z2^*s6 ztsran{4n3C@OnPqnXyHw-^@;L(^iQgDV;z@Jga`#@)(X6j=R>`@V@sh5j+$gI!mof zF+~+-K^It2h&UYG5zMz(xAiF6T2IX@_(NIHPc{dG5ch*4*TwhpXT##7uZ_cvcSyR6 zX=Vk|$oYOmjGPU}td`275;0+!UFsVfZ*jeY<3(2?uIG`fA1cVrB^E105fT;c#OOE& zNPI;MUmm_emG1pYtR|l9(L~bhX7+Nzsf1`$5Ae}t?JZP z?9^1;8ea2OA1>6OYvLT(s&U(Z?l7|(G@ z=a8SJmd|CEFZRepXY0BLdZ<|X{c42R1TZkz$moB_Rr1g z9X*>@IL~;luErkqB6sf#PlNw#S`h6{tPAfEo?sABN#HT6o7A&KPhf#LJBYZUdZ+h& zE3vikj7p|r-F>bfnA3gadk|EZLZTl8GH~xl28lhd#F{P#5y^ehz$d++gK|IOV4=;M z{+O|oLcaMP?vCf1elf$$eTHeZzopeof-sQPvrxxTcV0s0J#U zwHQNALkMHX>cAdvUaap+V+p>NhRo^G{bk*~>ydBl91fO~&UH8%W?1HC2yjClOv~@Q zHMZJ%TZiq=xH^0OgJ@SwF=rhgR@U;}c|U1&>H5n}^3_|^Hxlzk5BNaXRz_n){kSjK zV*sp%m7UdER*zjT>onQX-uzL)m>N*wC3HTYyex052$#*9s6U|BD!;&;#hZMs?*zoCrP{9fBFh)@>iQY}$lMYmhTg>?kd)5^++Cf`xbx$KH)#kXVe=28>sPhL zS2|x&IGj7DXb>AxamQRvG7UAjC+;yAc_p#)8s0IQt0GGK&9R@u)@T@MPO3(cj9>-$jSpWAp5TFF5{y>JHulgjyM7;8j|aH;C_iRI`j z5gf#l9GM*kE-bzt@?5O;ZDt3xf}C6Z_4al$xp~GLcxc3A=(Sav6iY~;wF*`8v-ee; zj&0{T@NMb8>LqwOP7I0v%2n|_3tZG&T1pe4x9r`y@O&R}JB=4C!F{Jh+xl1C;PpQmc`TV{7g%FSye*tOMIZiQWBfcv4h zALItPq9)F!I?Ftj;0@uY9$MOd18qgmym1Ww0y{Xn=vE3Or)Un-I))4@rLdQ#eTTg*Y|I|iU4GvB5qM#K&n6Qy%ktWHp*M#DHH7Xlb8pYb7a^}L zsoI0Tq-w~q97<__)A)9SP}*<^GLie`@Z+HPi6Qj^Qk+;rkHJ@yvg(*}bXjBXGwUqF zS`7vgoh2k3desqi{>F0A#yklWnyktb+Oe9W1-u(vRI}Cyk0cyefa5#TAeN)5K~u2T zAoB`1-|D+sw8<^zw)s;OE&7(L$Q5NKIl9)tvUK`9(!c8T+tcE5it$GMi15(N)n17- zvk1c%i48U$5%1lE$D&9M?F!BOygFBT>s-ZY;2PcUo%1e)x ziYL={61zrXxia#}fTHRfqq}VteNuJ>dqz2q#zru3-4ou+S3wV*<)s)me2Dr4-=ag=rH06n-Vcq? zWN3WmK;FQRfmh(Z;-U}h!9E}dPF4@+#jmdKs}7GCQBa=zSbLv|wh(-?Acic7ayVSA zMkqEgNpK{Zu|OgnBw54oc@&>T24N zui)1u?Z1mlX4aI)xCUUP5EaJE0!Kt#-e9-_&N*N8te@Ydw0?OJc6>3+9p9v*NK5Aj zGp(Rs5-@be45hU~MIGyt2z{eQklwa>-e5Hi! zu`l8;^c+!Zz^1lNPHXT!3`U}c|3ugHbyVxuEAE%>kA@vnt7DL=pT!;Z5U@mg7B%&I zrtO>WJ*_EjSXfNNkMc`Nkc9J+YP+*q=mY_U$eu{PAIA;8MW?rtJ5^cAx6lz9y0JvSEmO=Oa}S{-unuRMu=XotVPueMY*%?z@irea9YX_$gJgMsUdLFU46UBlPMM*UYWmDTqdQB#bXwcg*4 zJO=yOFFS#c|6}2}{Yuh#x1qi|k-g>j?hw7iLRZnEaqY9U-|UWrofIh)rjfB$iB_cc z;-(BNm~bfT_UD9}l*0uOQ!N@QFr!`z%6gJouO+!rohBpAn({P%RZ04R!58n|C`)8u zn**YuK&tbG6eRN!pIRVzBKZ>0 z)Qr6_{36{WMEabi)Cc_gu04@mzpq8*GnY0wu>2q6gYrCVaTOp71GXmqH@YPy3?~Sh zZeCZ7r7RDsg3tl0ZFM(!;(S7yxQnJT7PcpYgR)y^w}0Sv>rg&?{i>sHWwb48n(0cB z=;3JM#AQIWY0QLbXn(27kPRoTo- znV{N%2GN)))fcNCMj`k2`Sr^0@sh@M|B+J;)hVFoMy3^CKGS$w$EA!hRDsAXm|FnB z+pDPbB7^tmsSKKL`4-kTa)eQ)@)9`M8A(J)xrIuhJrqthbU+4k zm>zQBE!UZh8J3LJHx`TteXy?LBd70mok9XzAUkhD5VFb6wI22htbnxJQKZ2JATXh8!$1E!GwDvqZUTFBo06H9-tW_y>v$wkDp>w-ZHOUw9N`U ziQks@g&k-|$}tK&>}ocs4=0Uc|3!KU3U=d5C1NYf&I~QJi+t27<`|^b3Mm zMtH_1*o0!+;%025hkXo(4NW&0S7)e4_@E^~BRn+$Wb;(_Z-E~l9U_uBo-QrNJY+>X zwU(mZ2I8TI(+(MIL#8o}k~oF8o_m&w)(H6JA{*ct0`YZWDRP(nfHjR~mIAk8Z*dk( zbh#w9Za0d3TY=qj3}ymJGLY$$BUeaVCTW+J5jmo(`p@`FBsMoE7f49nSo? zx(#@eeHa57%MZkn|L*wfNE1V4Cz{(3yshi)S@RN@Sh3n>;uznv@(B7Tvi6q4!2b60 zTE^0-A5dx1bQbnHpJEXC#!4u7ZJyMx_zKf1-{BXd@uGen?T-cLAUB?Wf+C@f;QX%Y z6)^9(lft$5DwyKc^B3p6Dlr;o3Z6qTmkIn?{>x#OY-ZtVFK;V4K%qj0pV8^#Df1B0 znsWb}m#dmgu{2hZxsp{C6~a>ijBlD8>lJEEMU-_w`T$^{RZnL|9c81oCJT zDMBgdGO}KzQDQ{r{74LEsn@kg5hMRM4Vf=IX!qXF!s_aKh0(Lt%Z#!Slz2|yNRUMo zcah|2+*NDSwPW|F*ed&>t2E5Z?D!c=RB5l6w7rmbDR{0`KmEYPN$@AHKq(K{rMGrl zH8USRD@lWtgQz#bJT%cg8Sb8EZsukSHXH@@*1fWG6tK=CDA|^%L7&un$MVMa70Y(U zb_Z>E=1miT8Mc|pg$a!YDJoy%$wW%Vl~3n}aJwaw@#0ovZoB> zRJ&0sqDP_+S}8kK8?Bu(KXB5B^o8xxdlAWh*; z;iydIje8xu{ZZp|@$e@^5PFLXccto||8c7i%QhAlc#n5zJjvYB<}1o!>2PG?M)Hmd zuk0nMyyrBO%411r9Cv}poNVX*y#Cs4)x!Zx&Hk6G$ix6Ym0a7@qc z50$K;_v5e@LKU*QjQfn;ABaT;t>l3?OvCC@1i@i~C38Q%yi@AO00NZ*yC6gFf?8Qb zP2?#9o}3?^qS=p|u9l~#mtsgYu!+irIfOaVEs9{jD-)%Hqw_;2gP09#`Ax8m(|-Pc zOq~To6yUb5$)UT3P66p0y1PLoq(cOxrMtTY>8?R3k(AB>>F#uBq=&9M?tRX^_fLFl ztv8MOv|4KipHVGYRiTJ)M%8skR6=Gl zh%Jyq+Kkhzw_rsk`5BMb7|1F;92{09<#hFo(S4eHOpPcw_a_QA@!JY$h1A&mNeJX(Ri)qh;q-FQYD?N$U)*^LM|~WC>Kaz z&7$1qy8;otOA@!^=v@v_pIpm!B5j~d$LwB)GhdXM0oPHnCY5WMOh%7v#e_sD3+~?K zdpDXt64lKi4eeuEMj|>GG|808lem9E0Tq;F0z~dJ!3$gU^6+q1UeuJ+?henFZrg-C ziR_%?_h83h+HjX%mNNIvgoJZfsbQR4l6}^bhJx0TKxdoH*w&D~_zkA+OCQerquli$ zTPQL0HWOt_ZEo|<!fku?D*ggNm}+Z-DxEeYttQ9#x8;qGlvX`f>m!b*#c84cSP14f|$|vA)rN2+1;nT0U>kqb^BV)7-CNxdt6Hjc-m_{ZN zIlM2rM~A~&1-A`Tx=l_*3yobXpAE}4Y?qk(ND^#T`3hW$<%H$1EHG{3kD^~02Mq=F z+dEzHWu~qPCtMANdZYLwl`zbIjpyHV93`W`(rad8`wsGvf#NO+v_=X53J)2A8nQO| z7?Z4VFR`(isBn^wofVxpEgXcn_4rZq6uq187&r7*=}lS?$Gyezm?yk}4YZ8iD+(=K z1QL9)m!83uNs>~@;4;&^X`J7Y zM}INSftjj`)ihpl1^O*nFKQ!*K$0~n{*_5-%TeSG+k>?Zh$m#-Io?Yd0rYzdxE&sl3zUcVbMFf zSq$hXl9w`S8o1hd_d+_s8Oh168snt2EHr~Q*qi62{87f$QOR+yl7-Ga)XHhMF<>-t ze7l)bcK8dmkEN+xCz-DO(ZiHM6-3!z0i1VS2lGiMQfas+V&(;LxkfEHox(RBt-eQ* z)n?6hV`9t_12ZgIigQY<0DISx^({K2b@!NlegbRH*TfqTz zyXx+~3Q|E+u<)=;hRXyqYcYT#d($C#8?t-0d=(`sQNH1e^AOWv){#&2R6pO|Aa!R8 zY;zALyt1o;Rs~BwH+%}BtvqVk{};)iJQMDr{jn{O)m%b>mz90egP|u`0A8}+xm@|1 z;~I+DYGlgS6ab(05R3=95A}D3Zn-!NBemv`5U$(-Ry^x;m)GMrk00V;>s`+WuQ`1# zwTOE=Mptt`m~1FsR2gjo7*;TVj&bhTO&WR`g*DIJj`?{0I~l%Hogxv0SWxu!7)#$&c1sRBiQ2i_^#5WZIXUYFsfEUSXl&HM&8Wm$pa8K$lQMC$wY& z6rADu8(3WEy$%~iNeG?#;WKUoc6eNCah0Q_+nYiAS*oD@p#)8d;vOE(7#^r22y0|f z3UGWYPH75+{D_g2Ok~Q#Non#qO*ULF7n@2 zB7k^p@i34t7_By`{92QelD#w_E^IHStmq4;qOKdS7iklb#16X1;a0*&fTj(m3Z2kw zd2=yHd@D;bxJee`0&1|61uU{9{_s5axMRruRDIYUK(I6*0dC{^`TpS!VAjwjFNb!f z&2nthBV*PN#4tb-TE!UQHWz@5BlqKF<0F;5!^ z<=e%2h*#v*)3p*9*>v+Q?CsUj5NK&Z8%-&7O$tv)evI)~9LZL{V%_S)`EJX<1rHyi z&M!U!%+O_0fyzT)3Yzc9xkFg~xFQm5fovv)6axB*))Ok(s8p%k-zuZoAv=9(3Qf6f zQ6@Ux`E^)a)r}*J0?ri` zos%&ewVuJsV0q$oKj55W187UF>C>R~-f+{89|kaZZTAtRFMKoPr1C|~w9v24_D?|z z%2Gl=33`PcM!u{eR)~B{bhl4Rto;}f_ZhlwCw%bT=etiIt(SBDL=ro@8nO9c-W%Ki z2lpb+%Q0P0Npga-nx^Tb(YdT@%+0Y_Q)SmR*zD=B40hA?A|Y|JTK^GSzEUq%=u>xC zKwmlzTVtNq_sl7KM0F2SbRg7pp(%P}zvI8kIC$Z%wr2IyQ)3`w=<=dQ9Q;zir9UXA znO)>p89*BUnDWSP2rGIvVngT88biosptc4!2GqATfp(I0we3s=A*#~`4_9i>}opTQ-hZG!G*YVrT z;E5{ynTH)W7yy-{zhyhQXJ(jxNDJB@(#eCLtSl-n@~xV0i~X}UYbrt@jB!6juCOb@ zXr*ScLaSD)OnXGR@&G^T$^o4O)koe3c+|K5`ix*&?%}h|#B&dRfL`tw`wk(?qm6)v z_Y0?UzX#jOXqRfVbbsijKi4FC+p!q@jJGKOFa%VV<+$WJQJ{JqhJ`xX1V^%)M+&V?*0O6 z$ua{hHl4~+8?E{KUv&>?npNh7JuePmZ9*HfduoX)Xxd14$@8RV$n65CE{HLWf*K%- zA5H9^HxGH~`bjb!Rf(YeXIPdy=yDt84LWpG_pflq?a)MtI&3+%ynL^p7`ByR0{i*5 z;v7~uh99*U_5%$9HYNuU$ph5)-h@5;qQpk|y>kVffS%pVD6BnISzQhTGII2n8M##w z4)onZBR}6WW8Y7h2zHKw__hMpH%RFiM7BHRKYOM#wRAs|cB)Vy)yB%jcTMPY!9QMS^D=$Y*+T$zY%RYxo{ni4H$doJnfm z@|Yw=lx-OtD45{c|1S$b&ssH>FFyf2OzYg&0jR8O>nevfNKX03p>Se!wDh#|L6ef! zW=7vEDAj4T-2!=GgDNE?{7c^=Yw8#YkQRW8?GLyQO?!a_QRUE3#>gYlCI(8emBcQX z`3ZL1{=quvk0AnunA3%nRlPPyzz|#0);Hc35@#ePnMrBxo~dZ0!Ii}vWc;D;6)QWyO zhxfcNPgCYgN!d9T#Ae+(#@*@|)3CB!F!hTwe0i4x5^;|Mz~Pne+J#0)_Ri4R?GmX!$d?loWOnDrB zjYDSm2?@_-3mwff?e{NUG}jUed$GolF10uWY^KF-yxf6E9dyG;ITzF)-?{O?RhlM= zWEbLxcVN-Pl}1Lbq$-4sZfzw0u#Ewyvu~^B?XMME`*S;Vt>Rum^`wlRx3VN#9 zZQ|px-rgDq2-|e$TRt7Z4rC3pq_o%!njf`i0WUReb%Iv6UQs>Ag~qY*XorKRYk`l! zWM?P|m+uMVqsgq90CRN)q0Hs8QeYVAm~-Gmtfb68Q|Kam2b@sR*=v#8QuVW&ghjJ( zA4@-vj6wXwek&<+{p8<)p=%=1F&^Zxqjyw$HFJRdRkAIA>o0z%(;>YhJoZibu&I!U zGYfo({H`6$hC5EJsz1#~BP{r*bC+VC&|#f{ak0F13~#{qjl$q#1;(N(LlC=u8J@G* z9<|=sX&&|6fYdy*Eh>brN(*Qk^{lx!@FkzkWqzkt&FuHOel4Z)Z3^T}zJd>%N%q;o zpPuO!NX(rgiy$%rN#Ewiex)4e(AcM$Hw{RhzZLdQdtH5e^7%_grul^~P`Rau?Z7n& z*_7%_&*^`C)U(rsf7SMlYG?f*>X*MLTu>=U#Nk`U36kRSS3f<9@;B|y7|fI)t@Bs8 z;U$cF3f(u)SAn8l&usz;&xR}y=b`kVpfs`K3=B_Ivr!gK_$}}~l^m@8D7S%4oAxc@ zWSK6#%lJhtG6MRuCi3PY#x9=8fs^GWbKWuSIFfQd*&ET~w`S7j48=mNsUR{6v?=th zY#n)@Rc4(UfFcTydOjdyKIk4h9i}xR`-4(xcBp3_vHR#ze6X~e^@{8xHvN!K*0j8P zrP0r}iHOcSHcPBMABpt%j-FVBAuj%}Fj(5;07L zGHaEWF$AS#wpR^I)>%@8kCUvuf?^B;hgM{Hf8jD6Zqc~F^Sqju))Q$Slq_^O*i4xH z3+u6o-xHjPbXYd!Ss;0u!`z}&5qd!7GiF!^x%8k;&Bbp)YC#>T2rPq4T5f9ogy z&QR#rnlwWlMi>Xb=1E!-1y2a^Y+7wvnM*IR^6ETV(IMmTc$?4>Gjf~()X}ayk4CsV zY~ew9sh4)gc@8eFOnfzQ2&P_^%&t_3&CQbg2fKF1@caHSS`0SZgp1&iI38wB%_IcR zcqVQ15aeaOz4k;8LhYUVDGvo_)fW9~Pl}T>87!wPl^i=ty&S2R$NB(6XeDPl1l*pLR+O1u#`iSH=vxOX+kSQ$ao zTTaBsJ9!kKB>RJ5V?0R;5?-22LKQkV26C?ROxE?oyUS@UvFijUNJ+CB36+1qooj1p zt>+C>iJEFdGiV8gRZ&5~R^Dh^9J3|PI13R)C~;ijS~ZKSXi<|C4dEq;Ezu*cR9E^l zdRs~Eb7$W-64SVCL8mH*rMO(n$ZIZ1aW3Y#eL3Qe+rKULM3#xY08T);P^`qwZG&ds zj_ME#L@@Rbd~3}pXE)Uzc&P8#uaLu>H$9j(bR_cuO1?Z8GW{w*Gh9+M=-L0i>*c0v zdciCx&*`wA6@pB8)lI~rj8cOP0gkVes+Q_YqzTN*Q8~_seI0O%uO~RCHFJOPdfX3! zl!7z1dX8r2ul31#AJ{ zB3B2M*6%L;Y?K0f>OeA$(IH()|9!X>z~IKsbDuQQojNpsjfpZYy-Izr^MBuKc(VlxdPSM5X9 zYa(c|xVCk9cPu-;+eFm;ycT4?N!u;EX$gF4osVvwX`he6>o3q>k|W?o%Oud8&Ru;? zJ@f4T_nXzUnbyG!#WXwmyzaIQwqQKv;BfXl>A0x$*C9kN;Z&oLB-W%RR+^CCn{U@D z`G7?@`vmEw%{e)9;92V-*UNj79?>HfCDy>G`C{mIb9I;F4c;tGTH$m}Dt|U=G4Dkf zq1PN_1n%6{a_4JFjjgJCc|`UXM@PM7O3WALLXHudaqR$_N504=|0ZFx2l^wCd)Z4P zRy_*f81MDWNB2xnVE20)5T&4o$17=P?m0EWU#&L)VC@vbw)Drul_oqnC zM{mb?FidFF6fRJum)|OF`>bx-MMbjUtSims>v<0!P`7-RI>>T<)VC@rbc7NA4fzo% zt3=LSydw(tnodBBmEyEw&v&+mjQJNWgSXJc6QD_Phl8M({sa~>G6sHAO;{g^xYe4w zV2THlrn}|pWn!#Nnpyi)dI22)C6$gz=}zJZDzH}`S)w%`Yro<-Sc))8>Wpa1$VVx< zM;d7q35|?J5vY#Zsbeco)dDa=k980|J3s}A3Y%=E!c{;iRqbtoX!t3@&~}f7I6%U~ zs&jp^X5*~>pp)xw=P(2k*J=6jdq5E(42Wi&Ms#*O6*+qFmgSg;(g8pE4ndXQ z_mw!hi!XcxqwhcK*#+L9!oJ9%n8N`p$W+pJ)vWV(F? zVOm{x=r9U~{PRz|hWp8oVPZ4$zOWethdwzgD#q^$j@Xte`IL(9EJn^%j8BBR*`y|E z@iPRpW6+j8$Cveb#~GG{K4h{GxZvw$uK3q{hGO*cCIe>xCuzH1pF|atMVMXiku>9p z%zs>;P15NM@>@{1vPmAUtXYIeFqd@XiE4e@fCoq+yG&>Fx19Sc>7z!j42XOH@34i0 z7#j`JOW}>-^&%}I7b<~)5a*l{nDKmxP03qT?ZAh(rBfBRNL;71Sd&^=8?+2918aBq z5|j`b8MP3y!wVdD{Vxb5W`v=FiYG?`h}ihH-2Ta)w>uExTnYp{#rK3(1n7tw3S^f* zp@Ulfp97WOr|UQTeVmZ$alJjGpE^W5KbI&A2`9(FtVO>9YDy0dq2+Q}7c9P!=!W&- zNtFgYUv|Oowt#9zP#ImyR6h@ZaDXACiJ}t`TYoaLPc`#KCdOhQEU1s*_^sqU`J*;% z;{BEq&>MlQJ;zmrVmN__327r;MQW>doiSg`m4J5Z_%Wr%^#)XX$Vq>OP-91XHgo!^ zaO+@qj1m%e*N*R6Zu?gJa=ScbW@*|!%pmd7dv_7HaSiCY&B zQ`Spjyg5%@sLw8jQp%D+8CWwCwnqz4>;;I@*krxUrek*X#ZS5Jd^E zLW9YoKAegDH}?4GXZ6ns@H&F$ZZ5z$2$qjydN0-def9=WhWZN(oNeh90~-ma&qWtK zC25Hx-g)zl&CVMtW


EcE#*Hskqf3s*jNQX;Yk{R&Z~m)kQ_sfKPeqWABXIrD_> zoiyn{>lK!q5DiDKN^(SF~bE!Vi;lX*{36Ld1bv&X__Q)&+Nt@XRm zv`F3a-KZ}?uF&s(&6?q>L1*TozPHh!Ezk0Y=@gD4GVLeNFA=UUoAc=!QlTXZXp_Tl zoKW?iaX!eUZ_c+Ges1mIluM@XNp!E{3DSxr5c)t@lwo1x4BmOTv|H)h5va*#Zc-WK zlDN>^5fg0`l6aXtaQA;nY0&qjxESA09S17=dmOaEX8w+qCb@!9w?6uKvr_xqd;1>a zb!ll8h|*Kz33J`+T*Q(qqff|HaaSp%=?#&K3vX6ut6YSz^GuGljzi)uM0|_3Al6p6 zt@<0`Tyd@>+`8Nor zXk3WBF)5rwktsNKGjdIT*B6TrUh~1-KPfnHZM zy%nl(mH*h&c3pt_2^(^Uu&6$l`%Z3?2<*h~v`XyF1pp*ilK{@aDACZ7P-rINStiv) z<4bj%tkw_O1aW8M;#!8LSRDfag!6U|PQ>vNE>s6$2CR6N-7;Yvzy3{%ds{Uo+#q%; zh3vqM15f?vVC4S%LR4UODCQ2mup)*E8%PHj?{HS<6KGm6FRlEzyW%`EMky2^O%}Gi z%p5tOh(SpN1pb}s-b?I`=0zG*z61%YlA&}^5`xIPB?&4N*%k&iGufVhqvsE32z{5li`O=LKt;1cVjlg6^7O00jAD}H-mh{gI;$v%H+$>%qebC{ z9Cm3+(bhztn9ucU!ejNLj|i!Ao?=F19@{^oqYVbRrVfPRs?7Upm4&7>9>0sDDxQI&Wcl~*YE6ON!ANy|H zmycgJ4##X+%qGYm9q-|b)Oe@4w#$7Xu85^29k4c`sw3^?12zo7_alxScQ zM@KV9rjSX`Y!l1)=s`gsfP(7^Bl2e@wH(z2{;dOs6)ZiLHi!spdl;5X@F0XH^+$^5 zIG@QmN9ewJOtTj5_IY>b@Kk}M+G-ImPd(r!@RbxH&V+&m(pF*2wI3luzJqRsvizG{ z(iQP#_tIci$?!HWD2Z#?_JjS74i_f*kKwgl`>CT$kkldyc?KbpebD0&;wIsGbP8U< z_#e}Yk=K%re0IIhf*l^0J!rIL&YgFP1$M0;6y@Y1EYjGT0%5IjP17IoHuVz)5=~rW zR(`pheabg+iZ0nV)?EG8OvtlZ*cBq=0_cK4?9* zUfW6(^(Z6!q(E!Y-@U@G@8Ql?@TyL$@HGu8@i~nD^JKv@3=KXmwj#*>KIB~=)D>fs z*n0D-Pt}e#&Q=F!nti|Q^>xvQ`kwFI?w93y`W*ewyr34h7Ka@%83V4MMK;1>DBo9n z9k6fdxFNN~mYee9JI=3t6e{EARtpDr?NiyG>M1V0PM2B{;m$3(kE?%i(jQA2i*fcr z>geXyL$Si~;04UnO|VE%BTdgVJEA8-ADxQCe+R{s-6uy0kGrGkTF#;*`s9-Rg1R2> z-Z*g@zUtoy@r(+XNl3@An!kdJaN|-mX|qoI`cMzIoNiGzY&GgZzR4pInye%3HSt7Kg`OI5RO2Ubj-22*k}{Va2na% zY&8{bVb4Q*MNu2!OvZOsD%s<0VBe2C&3nAwX!IlgaEI{#y}yfAb#D_u_!lKw0?Q=r zRMTV7%2mnqs!O?;I6XRD7$TF?Q_TcaLO^3NG>6-{Ejd#vWbD&NIMw2lU_mB1)(zaA zIxh!5(VuQwqIIX*zSl!D2a_iqc5S9~vY@P)IBu!+_Aiocw~qHZEXwH6k96nK=CuCz z2ENB*8(=6{%ht@I&E0-_YUoF{Z!^Z=O1P2e&@w=>gmV>3i`!j~_{KSaf7y9T))q&9 z*v%L8l;)yEbr%hd<=fZttJ8$38M^cBOD<96=dN1&DTJr63J=_VL?&>&TW9J5{WbnPG~3uIT3x3)`~94XkIch0TGAxTCvc}bW>I< z#ucSi^&0)JwNwJp;qZuSN8JTq0g0PIKQdOLz_tzEfEkVP4;%N$ax~Jv$jCAKUt8P8 z#641u`&KZ8@3zbS?Dx0uByS4O`dR*Upqq+ur|BoL%cc*e3y_WURz}`>_uY1UdVX)G zQDfc;$$ZS@_JP;s(s$nP8hT~IYk8o`%v5ld3drVtEtE`$lcV1LBtvV`0mq(Q50D*H zb#eyYU0D0YWh6MGu+nxDlJ4v+Isqh{Pc662S+Fxh`avtKI|jaK*+AtV1l@Lok+erf z8q%v*LJ+3n7-&Y|dAx~#vRcyG_IyHi(Wl&@AnkR@@^h+dY;yWc!Q zl6-Dgl5%f!Z}hZ<*?0smF)WcWQOrZpn}mj)_2F9_m^RbTiYhrV?&8uTh3f5R&I=*p72w@Pcr$OUKAy7@ZGHB1f5{VHjCFE!0_ zAC{jI*PXGYpnUdOxj9=iU;MSt{xNKry|$F-9+y490zgS>#A{lkPZrod>#f_{BJ`%0fMj=d7jxfTE{6qg5Xg zmULH+;wYZqRTGA)Rg1D%{wxE#{~sAYH}R6<=whL4;_~|Gy%oYU))ONck0yjkiPwoj z)k)|BbK-d<;&doB)5(FOwsG!oxbc9UG3!I-q=Sh{&v2B~a@(h8OL2BZ0!bR5apTg7 zP(afEd+MYAJ@rJDpWeS~yFa?M8R=yU`9Z5<@O3hhjK=DsaC(tNWZ-+~Y4_=-(FY}# z*brp#&zhf^Sq?iN*1KSzH&HL8Cb7^d$nUnWkwUTzOa5MLz6xH`5mH!mC z1f>}V3;}ZwHHJ5@VyK)f$A&O4As|+P9lI8${>966pC`SPu`S?1FMIy=c(e1m`prNN zq6n2gRm;u(CC#8_E}YRRN&EF25COp;b@dJZq!0Ry+|bNQccPO|j~tJL6~d(bezT>& zq?g0MqB~xo`!!jd=-To4@qzo*9{WMQY1L|Z<3Y5h#%yJzUDULC#d9A~+q4^6A~^K{ z4_x90`x2qq3e>aSXC{3I88~1+C^_v?B|A0Nx?~G7-Pu_1*gODFI|sce`rgBSH@L}i z%j^r_OCA>u)R8M;hp7F2UWx5Qku+|gKcNx5b&Noy#T(<549pgCQjuwysU1uaf_0^! zJpsJI+>>3uI-@6QFLxh3Q@)PG?~A$I7TMGUzZ(8yDw@MXaq*G-Ihr=x+`s>a`y+=J5LTHZylqz6rlYU-fT8 zsO^a6=hp6V ztdOjvL!7~=VPj|9A3p%_I=6!Hhj@3;V}T9+FHd*}jCmYqeFJfUAL2kFbM_!e;cuB1lN*J6u11B%51gm@-k&8nf_9eFVHk=?mNHW47TAY6ug&xQu9yDh zFO+=Yq=I*yMik2*!luo3-nmk=H2of4G9o+bNa@&^$3sQ(lKEDq)?pbD@#MY-*8^K+Gz(^ z%RX1aCXje)#hsWUz`;kJaTCq{<5}oAR!*Y-2+isijb$0fBYn+?3XEnVg65k&Y}WSTDOHMY!ZHKFIT*KNE}bc zaq5dr6J($!$H4Qz;)!3X#@_>nz2ObL?slEd@uS3Z0yp(|mCC4wQ6iBZgvfg-FOl}+ z&E~(ulg6^96ccIF%Tu@z?DVH@Y*sN(%N|LGvoN(~H8CC-9nNv7V++Bq5{4|?x!IMt z#Pa#Ap zYq>CmENw;$AO_&1`;{RHhK3ekz{rgD1f_jZ=I(m@c~;fz1XJWb24f2@elHFrc5c_f zBRu9;K;??A9LEy*E8ZO01qado2e9=j~^_`-`zbP=V zHk+Ds4$Sz1OVI#0{`6d=zMIOr0s**Xd~nfB3%xXbMl+Qm{5Vp%u~ zFYbv{wi*&@bT_A)3Qr6Y(}H8j587MO^+moP!r%LiHz@YTytu&;u6_8MuTXALES%K0 zy&i!)8#4#S@j|Ay!BGtLKWn01_;=w9v9|7#S7Q4#lu8XFz2pwFBMRanj=8VsH@b1) z$gTghUmYj_qFF&g)jvs58!NjKgPK@BY2Z_ZHNLUWh)Rw1ps)IkDsuw)oQ5rNU15sU z!v6lUSaa%WcZDDRuYsh7lwCco9I`5(B-s6|>zHq7P}uT@rUPg6HTr(X0Hw;HUE=B; zN)%?3=;YpyB6axLgnc-_j2A$5!L0`Ju9S5QI1zoI&)aqvGHLUi!^R_RK!ofKS4(FX zs+UZUeD;NQKA}z5Sq**==dtj86@Q2tJns*bRRwrzs<`SyI+ZszIu8Mam<9T`&rq$hjmKv}a^+k; z9~7z@)eQPV3IHMdp;_5p1oM&YSJhv})>b|=E$P5$*A%7J`2G7d@%6LVlOmV?0TQ2< zw!|T`8hGUkioQ?s{)_jAp-IFjr)cr5b`JM<1jTI{K(4NjMM;kY1_ewvr9CUS%}=&? z*0Lon#!?{#Efq7i1=0z~xd*3$H$LO^Mp8R0N+?hIBR@v(i`pyj^6{?_uzV#XJK{~r zsD&W}tLIU!@>ym?8*otD4?{2TO#8;+n<~n6^TO&>g*^q1yf8*8SPwY=!)wThMO81`jq?Z~d!g6Pwmwfh7aHknA87(|;he7e=v$-P+l zUKM^(kkh=f)bp*CXbBDsZpSjXjsgR$z<%g?s-Hs9kOM3S!#h-3gStBV%5h$U%qw_a z^j-&^^-z9+6RtV>%s)bPdH@A6{A?K*TQE2#TI%__8P+b@SZBXb>gZIo8Im#G1Ean=vv>|9WClt#|t?OeQ|4WRi}_OcTT(m_<-nkQd=G)d@_fVTrPY$yH`%lnrg?A!|%{u zFY-H**Rih$+>)t<|IX=CNc5zo>nPZe^^^;n$$%+29kdI_7z<&!c1r8|b5Ko?v`bv_~eLmWsisCs!?u>-8H+&1Mg^%g;K;!SWw4246^48It-9nx6mbcbw zd%&1>IM9V==QDV<0#EsMflG}hm5-6=W+OV(1s>;#b-FMRz2%I>kVY`&5}S(NLoy{K zocM^wv$ycmn^(zE*4{Y2ZL?%D!z}I8N_<(B-1E;Dx+Kpj@om&Yu>MxxDm>d}iz`QL z>u2ix znZsI8qW&9-`lZjL@#Ji9aTE? z6R5PmF?{_i)OFV_Js}_mT+x>QTzMfQbj*L!bkhB1t%I=8!uqUU2fIP;rF9Lg8b%Wu zSm`qRFOM^}q2C3FEuh0EC}X?SH=I#fqFuxF#u zs^V^I`9}*>4p1!2XJNVx<_Y|XHw3S@xbg?w%`M!^Z%?e64@Wf^m}Jit^*H)DN@vfY~cLHZP#W zHU8C1pfecBkU}|`f#={!XQ[Dhj5??ZB-J7X_Vnd=2*!NTSx>5a!Bgfl?YPtkty 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
Ar7ZVUMrt%IoCpZ^_hO)uXanBPY)TI8p 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
  • +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%0Awc7;-;VO)sgap&mNd#b38LNWg+F}y2NVm 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,u!}X#ArwU_*2QopuaqO~}w-NO_>==NS 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 z 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 z zfI(3Uo^~=2{cCKYrtL{Ce5fsK&wrp!Uf+225CNr+Z3y$w{EQY-9(_!X5}$v3ct*QP z+HOdpz6&!x8=Cn!$|810l4M&chWPB-llQMRvZgoOVcF7E>7bSd69pvp|~%B&0L= zWg*4{njg~nOCQTU0Up|;$x@eeP9yAwv^|K3j8-Mp!>639=08Yq?waWS=7d|hTyu)E zFsd2u4U-A)!VF6i=Gg~Jvdm5Xt&qPIaK9ZSTwm2y&8>$%vagrEKj`59n5wrj+ z0HPUa@PK zkHm3)Yiwy8s~4)SfmDyg>dW8Xup96 zUBp2Go^am4zGS|r3UD2uN9?fot`^2G=tTh**5MDk(GP2cKlM);Qa8|zT(X7uEshH$s2n$JfkylkhrXco@;tbjRz8zlUSup$PGT2i(@OZBL?k_2MIWYfE$`Rl?;>v zI^hW$IC9k+6qXtDUOu&PMh+Lq(CLzmHCAWt;W2oiK^?sP_S<%lpe|Ae&`DhZ7k*sP zEB=I6^3Ds3;#*j7Z~*J_G`Qf8cyuWbY&io*DE@(IG49@V%G*+azfV|K(K%&-ul7I> zxX(Fh!I$>g;^jK&{h2iA`OLNde7i3{y}cUVR%ND#PkEC+_dQ(FZ}oG^x7+2IM+cdv zJ+=J?I>~s+kv6wT{@|U5d$-G@7Ge?`A0V&OA<%w7!_Q{f};c5^7Am_qIMmo?__r-9+Xpmj73j8@pEa!yjM%OUp%VxxXHe4xBK zs5|PPfKv=(0>Pi_mIE^thAvRoSM*{fb~yKjmF+@PB7fR3y5fVJ(Q%(qlCoQ{k$AcD zuy;$Ux0+*v$7TZG1Q)!HA#~6mo*A$k3APEJE#sjzA>(CmWSr#wko1rp$=-VB-QnMU z_`~5Bzx?&^j$X*b-hrNB1eZYB;EB1Kfu3yx1vDaVu&2V1x13P-jHrEVg`21s!4gd9j`=%Wvp3^6WPHAqz z&N(-(^Gt6ZMMaJsL#;2>y{{wRNs+lI*>g^qUp~?5>Lu_yb>40KJ)e6`?_kld_E;J; zUvD>akU)0WU+4<`6Z*qEwsz>Lc>1pD+ZmJVIVf{U#&SNfp>Gt;^xeoObpqbXTXD6c z)O7w7*zkdB(k#j6gE2+-lnj_UDnEIRAJ|EHfh{FzoEv|y-eVc~-6vSP4sRGKl% zZ(}I}-P{_kHONx6s2CkQ_l^@Cj9nBOZ9oT*g;Czb!a;&T7Xyc~QA`{U{IF8j zE(br#g|SUY1#)Y7=zs29bqd;}!93}Zy<000ep6Yx7S$MX8SxQIT`TVft!4$qh>_!01kNI z%t0FPEkER;qrhn0&k*^n%0mxN`EJz!=ZpH^Te)28)JI?bc6?t4Phh+GWTMwT|5nI< zZ2uX3Bc!%P_4U)H8D4!$#ZB#w;NjfoPn!EB(^nsq$Q90gz4ZOT3Mf7UIY1KV>vOMJ zYw2fvY{yo{+#K+R4ap)mHZ>D%Y-+}Fu6gjv7#~}JF*xIJ#$RwiGd6-&&1deXc746Y z&Q|}7|JVXNSmx~kY>e>T!h^eQ4_uQDZQv;fHZt*);e_Tdr(_GC)B}FXK^Z6)@Zm2q z;S62)iCw~VcDG3R!WX;{*V2Z5@FGXj4njy7TV5y!N9vC>;8IS`$jdu%=;1pH$JBkw zi<}9RlYHQb{E5F^-L-i2>;l&I7wWPF7puTGCMiyQWUpU9?*8d^(joX3*|e+5<$Z+I5^;! z2O-gQ93{|q@Ix>4>hg+C%5TCe`~*I{_E{Fiw{YO#05dF5Q@-8iaUPx0->NV4G%&O|+8OPQgM0LpgAh2*x!!I5XYp5? zpa1Z9J^cf3>DDIsJgG~%XpfVEY5Di251N&MIfr{kQ-2lnvHHrZb|7Tur8r0MX{n>f zj%a)NGsClbNcfH4`^LbhHty7eX3F99X6jetZDvG9E%d5ojWrrqsBeD~s>W-yA#Z#x znkSj5UHYNq^Ji_V6Ws26eRWD(gIwC3dMxDmfW}Mx)u+D3H8a`f>>y#s8R1&|R_*gnkuCfDygB>Jp)5F5I-g#&E-uHjt9VFg={{z`&wNn}S384cX#$D`7 zY%%zyPos=gns8S6R{xcJItAL&4iX{{ukeJENE{@PM}%fMjR!`3SoG67!WF#}M;oLU3-kaeWM}ya2IqMxjr#BE>*xyz>AUE^n4i;! zF&C_U>`ueCdPg2`qJJFugle2Fn6D7h--n0TcBGNdeXq_mE?~SXk$B^eeO1L}aVIiH>PNbPSeTZf@Z-WheCI>F*C}5fAvxQWUiD z^rd6RN#fGQ551Gbhv&4DgcMQsQ7Nrp+1?7ng)L|wd$c~e@$A!2d-nwvQ>YT~u}#Z^ z4?U;`cb6-O%EB-)EjJ1buHq>T3ZvMSXYEA{RR%?S+oJR5&uL+--Wv1w?MhnJ;FKpj zNPv$6G~jas6=QgZBGWWjw(w;u85W1=6preftaKJ$XcC+iY!ey7*X{;Ob0mSRnmU|I zcwTySNO)FV(IVjYzyJN=FaF{$h9Camhw5l*a!NTVH`{C7qc`VxlYb{2BzjiUaQpbJ z-Y>#;t8@g5$_@VPX|L#D7S?H# zEd1h-mGT511EhD7(1Q^cY0v4nq<$+4oas-J54`j{7!=S0jy`|`9@1a5{Ls{<{pY+A z?tUEntP^^8%6h8?IB$l#O^b0Wmvgg%_2uv8%bR7Ln@0ZiG-?*jr&Z3gr5x{&6@65b zNPTS9qBf+Z{R$6heSP-#A%&b>SMZR?P0owzrSA_mLGfAAE=XWez3c+19Y+c86FV8Z zUAi27%Ge1^%9!+=Stw+}je`Ua$g!_&V~-EYVHmq0G`LS*u63h@N0#4l;S)Q+Ho&-}6mJs{PXN|)j+NF(2dv>xd@7XA*^gpSSdLV*xBI6SeTKVKL^+r`4)>*?tFchiZ(%8`W@YyM9*B%9yw^sH6E1>;Fm6CJKVf^qx3<}oa`V$-Lh_m>@>no za1|cfbm_Fyv6Uuxp~F~KHW@a?Q8|I$DQ8*UZjP-89zyySxUU#TPk!iA*o6zH0Cbe2 zwMS;lRWfiKeUEr}`{dAD%IYc)4b3K&< zF6|b_TjT@(t_SKse=It%i}dL;+C4%$NZft;zTr-N_J*fA>d~e$FU6S<0}r7+m%hx` zt<>EF!Q2bs+-C;~^wA}g{m*l!I7r;Q76*w>hNqu=V)(;9{MPW5FMmn>-NVCOvYl^g zr;?kpoq4>qQ354r%S&=ZvR>@r+V{#cQD`no_M8(U=U$Heec*TMyxaJDKKGj5!J?D|EQ8qd3D!uIxJO zo*EzeJbhkrR^LNA(bagEl92e>ukFC1Wt&mYFtH`dG2*h%tl3~g20wU1d*)188aiCV ztVg5?9fM4GX>o%0RtqVAUylC%pqA^<%U}KGCx?&JceQv+guxa?MqzAPNL#F5R>m4 z8bkAVwU!-ac!Q080a}?10S7%V9I_pt@X)tr!W6pTY-I&sVsO&mfoDI$qWW0G zOAnv&ErLJD@$T(b>?UsIa&A@!-Ei-*Z8P{~X^f34igYfjPph2g7FLm-u#UsuD*8Br zPSB-2BDZ<@`}$2r;9XbBv`T#~s+Z6Y-p|f^D}hDzvbS7pjT*dr98~sHip zjSmmT1wI`F_#=&AyFg<9NpOP)$Bpm5>mww*0{dalmm7|Ipd%5Wb)bFYVbk`f2$CCUsA}kUzHE#KAPbcct~DoW)Ud$PWdSp4;j#( zcRzU7dc!zDKI722^2)B2zOZWswleLDwuXFM4_ZvRaig3es0V0-ui$DQfE&+!XDpZd zv_Q@$JeW@-6V9$1oxuY>%Ecl(GV-TMnw>mIhmX(!cAXG-mv>IaMe%b$H;n?1Wfi%r zJd`tKwIZ%G0&hxY<;0Ym3?)1C0Qo=$zjxY41W~1x9*~DRK?idndk)fCoWa|kgR_O> z8tk+={`Mt^EbVEXuuL!7GJ-ev%kr(m!$E>g`F5M9MRbUduJ$sf-O<-ER&r#_BM-V; zeIo5(x4B=8f9te2w%Ns0NJ$~r>nAtIx!qL8o9X%=Z;Kv2%=&5V1d2W5Pi?5rRQEIX zHN$X9j-*dK@%ZrEv(FAMzWAbcmAKFSDdXc2jkS#7j2jaN3Dvd7Up>2Eo9uaYyO!(`KWzbhQ1f)#tTwMY(=O9~V1+Zn)hn*+j6Jf1 zoTuUFz9es}am%sY;aQ?#!Dw}M}E~Kww+|4`(UB-SuUSOVL?=mmF70;alE#E<6 zBT{(efG6)zrh4+uWH-w}f*g77LgPH9XE^uXcmHro4ia~rymvUP-M>}qY75nu1K-Qg za#MVJPCWqMhdzIwUiYepeRPnZEVt8mgOJ5uwxSvmxOJ1_Q{Z>6~W<%jnjEapzgzsrvqJ=I_*M+z%*>g^aoO?O; z_krK3^KRqs`P^%I2aEnxPkO%k`?+$G{?d=p50TDMHdXbz;6RUX?BaO~2hUpQzvz>l z&pKEA2k@aoKBMPH8eaWf(Eu*}b>N93Y`ABHh0x?|F!L21Pd?9!)dypDOvjs#WH*+h zC2+;pw4Z8m7&9IpE*LZwT#k+F5FRTSGYaaK{Z08d$lWqO_{BQ(%nM)n96QMLjnkfUEZsP8CA}##Q7phv%P2gGfxztKfI$m-rTNScK`DkM(rIeCIO>~jhqs-P;yw#1!smQAAfv!Ql4~AKl$YF@WT)5 z?VNF|d^t&A?6TMcUf^+Fpu!kH*anL-(kNLFtwE)Xa#+7z4V*yZ;BA%nwe{&mEsFUe zsN&!r)?+yF#tXsa27yv3JG7y5y9|7S`4=DFPD+cmI7l2naooJJC{P{5{w`3O(W;%g zbaP$SWczevPyyNEB=O@P|9JT8zy9mt-@gBET41a#(SX3n%MKDOXxc#nC6qiCg}&kS zaLdxufct#8UzESk*WWM8pY(%#rtFK#AHElryG>sP6IjlRV0%9L`xZy8X_E|;v^@qj z^3cxFGty{dOky}gHwS54^KIpa9(u?RRmkTFlLqtT2OnE0(-&a))5ow_n}aw4_{eXk zDfKaEGc?o2p_KuhYw#vboVW!V(LVgZ&pM%pU!|Vb!M~TV)YFFHZV3aoa(U+!tuKE! zU!Ip`)3}WHn*ue7>&ml-@Aa`keQR8*FR&HCFer}u`sfP*OdC>u537p!s}&7wKegg2RD^r?DGa!54Zg*0b1}H0CDQ7(6hKvjp>nJa{2r4siGQNCOx1 z46d;;Jo1Yd%78-#iwEpFfRhAepgfeFe9!?W*T7?|z*BgMqXZLsU=zrn1GqkO&!iI^pxI0hleuI#sNGB_u+v$XUD{IvLpG-##?ffI4}Hu zK|u9`9#g-RjRX4dX`7U}D)FKN4}{chWIzy=$A4&@ci~H~Db00i}x~^|& z6QB7!4kHK&2Oio`7P!z&e%A*fIVw|3Riw^iG zYsworfE~Nr^4D%2eDV%^oOEae>8SR#HAmituY=lSLYfy($U`<->3cMZkJ&` z{`LB;7Ke&4(`MVWjn`>qv-I{?FRNe7gJtUM@L^susd1Nn{?cXHSnT?s&p?G&UWhw= z`qc2$Q%??G``xb%pa1;lJm#_^k>{@}Dr2NF%!q-pm-Sv^>5HrHL5MS8dv*gK+wJ{a z-aX@ZeL|_Tc{$U5NwXYMU#bswkD&grL(qeIF^O-$^Le}4t;_5Ax{m%(k*$LSc+)R% zCY_xkupO{P(3d;4gT!HMaW$qKHdv2?xdHtw>oDz$EA(k)izz2NIciKMjsTs| za)0UQX@5#u`b5svug_8r4q6A?RiJ;bzPN=Ze{4j?89t}Mu2p3(W{y@g7x6g3SHh?{ z#aNyyLyaxKg}3nS;*GEqJh#wAE0dP()L|QU5U&q?{;B8XAffNRXkp?A5C1SCRUvGB zsefq<3q)wns7f1F)Tu%>fTVY&tO2zKKp$ro1{Htsr4+W?!kFfB8h%@dZ^K@^BqOLMQ?#!rIdl-3C)FxP zDM#xdA$&5xLI;{BwCKs=5^vy850)e4$3WMaNkQQ;_I>z43LFF!f@8DLr&nIeLg2fK zKmF-Xhrj*Xza9SdU%xMh6VCIW_D93*fUIU!Hd?JiJ+t_l4A?7fMzT{m*(d7ik7 z6e)=!DT#}ym0GGwTgh&_ryZUSceq{l{G;7&M~uS}UE_!uJ7T)+aj8^Qa(O9tsY(k) z?G$&3yXO04;=2bI@1FPW@>Yp>?_8V%Boc{40!RRPa3=h$#@nIvZMyc^Sq-Ik{8ske z4ocN6BQ-=${Z7Cgkc9lQG^ES>rZb%?~r;b`9!tGw(wp^B1hnIPkA7}P+LNp--E&N$u#I#1;R|tXeYVemGXN9QP<^$0oGamYaR>EVcPRHR*=J8?aIOng-HNN{@WNm-@PMXEJP? z&(L$5kIOX#KORor$#2u|^e%&a(os)bQ7`hn07_V!-ucw&TUwQ9nZDw58{$hi7hQj7 z=`{Zw?&oD?H^4UcUB2}$#-w}*$Wdb z_C@m$5uYI_ec3$e=cRp~yq2fQzRw%n6oXF^k-S$=OZ^T* z1?$U3LCRqPrb<*WbR5?|pKeADSeM6P^i2AYouXe59y*dLH2MWSqbq@%i#Sd(M)ytw z37xDhJjj##5^y9f+<`BJ1K%>~J|zsVL=)j{dcur{IP@6g4+l>;S?j}dA9erm=1+Bk z#0RN=NiPJ}^a9H><192IyXc)fhyEu#vAMW_0H=Y3D@lB777TcfzhFc10=jDFvZFuR zKq3rB^o)TmZgfJM>JV*zY>0hVhO!tBhDtYrX4|3@E+AN^OEKaie& zQ&>tIcuQXnFfj$c=Nz5~6Ib`0(eFcd?!=Rtbqvlm|Uy zxoe>&Q5Ya-0R2YFD~1x+Whim^GN0TyFCo1aiVg56Fen5VN*q4?Q1|qcPw7~-7rNJ9 zf2}(ugNXxLxIy{g7%tur!{8wV){Ov#Spg9)KgtllL1Z)>7Ag6@EQ_7zwed+~!38V} z2)c1Yi2I0)z#{mzNLEDI40Q)_Km!_!o?M*Z0sj!5>-|7D9ul}n0`Oki?H-A3W;_X#o*2G42vs>1W2Ol^X3&0piM8{R5YwlNT zXsg8=og1>B?USCXji2V(X^m^U`P50i;We4^x@JcZ(Qo8aNDj|c*a&XIP2vN-N?*jO zt;hCx0=ftSE+@=tTe?R#Hr_qUjf@f6{t9X8iQTk#NRtF7Ba`I8RzB1L1Xg$B~Bd z8-1G%U5p=XB*9p3XPoFiv_Up@p@lJ@@MXu(07c?DfApW_@4yy+*-yd&O*3FvYdn7}*p+42#%g(EidNw4`GGJvDr z<8u#shL(^eyDm0l z=hO(^(8WLk0~=(RIW)N87YWR3j3j7B$R*!Eru@vQ1ra=p`q2|}aU2Uz;IbngT=1Vc z@iCpSarj{wC##KOkR0htJva?|^G@*+-5vTclHeo>{>~KSl15foKP% zFRA0|{Efr3+84t@-aQ|59vkK(-;K<*d5>sqBL<%9as%S$S@8^@UlzP5UemV>@st6J zrk^sK5g%)K^5%jEb^k#avPd{>jlP1u4d3HHpEmn}8t<(4^VR`0(0|VBT!zFmFP0qp z=1sj=y6k^!AOWr{i|S45!mOFlzff8HX#;>?*d@u>~C z$y#&hH*82t20}m5DHMb;hB3Bc^hh}4urgh&7;~nE^EoQdi9pE~ov+WI^H9ohd0Me; zi0{+|ZUo13=wyAnMUS;{1lw_H_0hg*I%(in=LtUJ4Ak+AEcx^ZbTh7B+}c}?|JyuxHV^TEHGB=r{ZRNgoXWF_pV+X0 z1TPC;7tbzU__F)#laIQq>g&GIe%4O$Zol^IUV8C`?$2Z(@zM(~=vgP@Np9h%%h*?0 z@-PJ>L$m&L&yCs@`VO_&uM=gRW+?aR%xCA}@b=l^Yvr#u{+7;-&TnhwU*w`CYQnSm z6m7J`(?|L96U@_?uOWNP3z_d?%*7f8K67*Wz?>JRY=VXts*$x`-dG3VqOEHz2XBct z4Wu)?+d=fN;NwqyYZ}h69V^`G`$zl2(f6id1bPMI3dVQ5RPwb9@7do0XN(J?*ZnqS zrYB&X-s^&_URoH|DtRW>g>*t?+s?Tj)4y72xVJRyAwg%t(@88!wDof!r zXP)iec;koNb2>?ag%(c7h>Fr604=@3oh2}}K_G+`#~tZz-_*da#=$qB&dWf9Mnc2H zQ3h9bmNq#w3PTAmaIv@~cowtZHE*M{0E9w-auc5qQGU^oN}5Q#sXxJmLIM10c(#nT zN%6^38aqnpZ+`RJ?#Dm=ard*ge%75m`(Yd>3%}^3IMVEa0}rHug!mJNGgY0m*_qF6 zxSv;xH=G-?pYciS^lkh!&vp75?{>LI4pCYs)#y+eCh?^W8%j%f3!4gD)BU?xw(7@TmxdBDR5hK&?126Rr6AdE=~IGB)d84rssEN-)C z%hA@{lP}@1$V}f>@+Up*!mceBa9o?^X3e{WZ_Be;<(N0$dj=BYoTEK1;@qC6#WAh? z48gVXIBmXL1#Z@sKU6*Nhq!*?yK)K5&$hlCzH;h5cDwVxFUj`2o3*~$QZAZ)(fVg> zga(htrjKzG++365>xpF@&pl~F|1NL6+gO4(-x=45$2lE7_yQ+mbw!Wk82_D)Nj?*6 z#(lMc%_s1253X2L)nuNsqn{8*IJ%6DJJ3gL-~kQ5aFGTF%{ao) zJ)ngPx|sB{2w>fZG{BKRxJb+MR&b^R+I*R=S~eW#x?nNG7v(YUZ1C#E8PeHtPkKtu zMhw2=%_Hamh7%506k&dd@d+FB@YV|{L5E=L`U^Qy9>^V^aKoqo-4fXgIOT}3I5;ql z;6ySu|EVv^f^)t4+2zJJuL7|7aXIW04Sb!(xR|fryshtOD__b)8F|qlPBkG-a7MJ0 z4JST{_)sz0p)H{we{;8QpCL(NGk%>P_vUL|N1WdFsE%4j-zFYc*Q=k2V^abeKhlXC z@C#buB{Z1dfndrX^QWe>PC69c!T`r*o)T}|H7xhQQ5IjcO};zsMaC9>n&%-phiDkb z88sC_Exhr%Ug|Qstni)s@>M?@#`%%HzDlMrOP8TG*jMrI8AvR~{8nz(s|JViak%A_ z{4IOP8~rE!1Y;vUR}bsC_k276|DrDGpD%xxb6y%~dYkLqC!}5iEy+{$lNy`YTt$!L zWjapmVvU79llp^pP8L2QL&&F}eyV%rl~=k`GDhU3D~$QdAe5UWf~Vf;r_c}J8{`$%q+gMAr@ zV0~RK#+&R5Sa(L>eIS{_gwVd#U@gAN@!tNjxuOV(GhT1N4d6wo+cGk8BO) zxm0AcoYR5_ zob=gg7;!UnLi%wobPM|STe?giX-9ObFC*ObMO?%ybN);-bm2^|{YXc8#TiEp$NhG6 zW96#~P?xa^-g37~Cr&&`orHDIE_JRfY;asACra$laZ@_sQEEpDel7f?h4#47z+U=Y za785}l(BHaqMhE*R)@|)5(c?D!dg=coE98~=TV_$AyVnW`UW`ZAG{@VLjx)nJXd*} zManRzN$@S0C0hdt$1WLqpcFs)=&|lOeV6G)S=PP$gCBIqkDpMv^sQkbaNCP6}LbO#d8if}-IYHuvtU0~#lDL9}A@pJ1F={B;un`g9gC-WaCz~`oB0PD$2Quu;U;v0gGoL!(Zh%*t_NU&!Qh`aQs6h6^5}UO zGkjV;^}w4mz~Z2#=CkV$*^48cnDwF^ndZhPpR?N~@e>yyAYN9X-#Yxi30jU;8qT_ou71k1_dGr7|3_SHRfL z`WmN6qYJ<(B3a{Sp8}Y~jjZGb8SR_8Vf8?SE`(j^@xwl_Vpbw4q zFL|Y3Mz-9q@`*v5`-zndB*-W6lsz1!v+)_}L$0Aya_)IC`H&wMVeY$`cX82=d#)K} zjPywpbP?7%|M3kQ}rz3PbI?9T3`CNwf+2LEwUpjU2 zNzs~u>5~o8NJ5sjQZAQv=q(TlQLb}jVWXoABLbca19WFm317i18tx#y@Mnje!yJnm zd`k`i@^PT~?J$I=x4cQ=7B&g)ojZEdNs17Qi`Qf%@ue1_I7uSD2ZMs7JW!ay`@jPS z;^c^DpM6H3+IT&TB_5N}!~vZofxxBE@n%pN4CJS!l5nUIN715WYB>7CAmY-+eCz6> zzW;<`jkPHX4&R5Oe8>U9kj-~7$rbU*#+Tiw6?>VL)J zaTrJ-FH%+y=o@4hNIakgL%yfw@01zmhydM83ajI}p9aQh+@SqT+B$t3-#(MB4y)4| z=XUX-9kZd3!KPf(lmR}}yjU$w3mcL*Ao|nr6@0WM+B^LZ4jCjo%BFC9o*mu}NW>Aw z#D{w(AzoPLh-4OnnOK<~eDY*K=Iuj1$HS!Eh7x|$fq~q4n;z(^!~Bd7jD29ZaE5nW z1eS2$FXB7jX>qjhrgPf#TMh1>fy8)?EV|&56S8rfD?P0yKdZ&J^0-o7TQM$M{dANK zbd{0Vd}89e5}b1~d|O`*H{5FecIW?U<=cq(S$SU5v`E?-&t~15{+QsFF_18ipWGv3 zjJaHvH^R9Xy9x6I+qwYbIgW9k`3_?`mrrD{kpyXt2OsDB;(?zMu82|o8Jzhu(T-1B z$f)~@j1#VDBb|vjIte(Tn>hi#^CFJ6&q)HzgKB)haFK>Z1`IrW3IUt$l-2sqB)(8~ z^bj_Y*-U0*nMD9_S`XsBcJK{n{+chQ#c_`3nYj9yuvwjP7>|ADi{Cnj)oCdg&$*bM z^$y>T>V!cXyYhkn#twGChwiHhA%+erz2phKtv9TX&a}_~&oScvLUYp(w5ZLAhtTT_ zyvQvMde9r$z#;$R$B&2X@l3wd(QUz!7X1+ei7--7y-|i5C;006soMeJ;KS8vxS!+< ziw~Y1yLhP}KVfmH$jo&uZif@vFd)$bM(nXjFZvHkC#FpMv=If*oG)|iTWlK0QT|rm z36FLzpO*=EdEjY%G80^c=MmUxxCDRTCAcF_^L}(~3{yV)?6Z(-7Ps84z>PC+D4)w( z^TK=t4p+lPzzjd6H9nG=55BKanHKxRadHIxgg>*<;;YjS-PibrVCwSMFo=l71U$yo z`c6~h@jbBIQ%BUfudL7IhAYk|d?EHiz419O)8OYe-r)=RqMi0Vsim~}Pn%Cmr=RD= zw^F_>PUl6MA-Nn%>9#euY z%SG)b%djkFN{rd(Obt8%(CxpDT8*zY>|*!SPp@}SSC-om4Vs`Nje3zyh7o)YiawLg zSIguhj~wovfBsDOqK=^d{!1^#r<>xF4C-HTJLBZqT*G0^U`^WN6XXB%HMm%5+tkR- zqIoYmUvFtz>^V!bT$=k9(%)rH0Xrsy+DniQ!OM}HLV#|KaSWX_WA^CNXwuUp02v!^BmD$DLbL^* z0-Gf(^eP@)jwcS?=hm$|-TP;&7o&O}i z#vAdJJ1U{zXe!9-13m5vm?Xh_g-M5|Z_U$mHUCjx8*BbW&&v56;7i>B>E(}xfyCi% z_g;NwTQ60z4o8idKKn^krpxTc^Kan{KNRlx^o46q1Br1weu8-o107|*YOwHv6SV2q zFp#*U&ozGW`KR4iny={?HyL{E>5d*b+`XcgfPeHS|G9hinP;^Bq#PtC!B6Hg!eN)W zm*aQ@sC!X<|^z4^9FVaes!?CxEOWlk)E&b>Cx({*e zxv(ee{tu&!9;Xn{2pCmCAO}|N`Fs)W%!U!X6u`c3^i!qZO}c>3G^Fztao`L3<0f#& z%iR^6V!{RQbeE-qq6hX4q5uFu07*naRB~VVOgdrDc1(ufCI>&ZNqLr@eBvp|b}F7s zMp=;KgaZ_Xy;|Vdufb}k-st;-#5Qu13 z67KK=rv;WFu!IXPEPbSO&^9<7f(C&=vJiqb-9^5qE5n5w`aTmaDR7G}VA;q#dh|&5 z%rj5NH=163^_A|#iR1A-)3iFy#^j@j5XeHVau$tosR1gG{65$BW%_b5UrQ8)%8 zU^9JCAK?*4Ji<_fo_hu^I);a|=#y4d2gF}}M^6JDJPXBKjT%00x)@Q{`U_h0Lw#k3 zll9=vfwHHb5kq}vxmc{?6B_5veboKk-~C{C7RO|9%0EhmYWU-GGa?#VCYPxp=|d>%JXdgo1kZTdQH9(vY0O-nE1ljU%| zXJ4vzZcxJX#PY%&^8|{G?^V z#6mZ37_vFRri85%!B1K)(_$K(C;g4%fu|pFn*i2vP6rH^X)sO1uccdSd}~SDTHu;? zLwPOonuNo3I4N!;!n{E3ysG(|gJ$w`LbkkLoC(P`0v@WrHE%bx_bK^OdW8}EO6go* zQ=){7Wjt##s%*%Hev1?hWlu}Wljq& z%0?-2jw_mkD<~^Gq1@nyht%!44?hf_XX>h@pJy)ki>#g0@!!w^4TQTc`0OG)rj9s; z1Oou-4H#%bW^k?t!d7ymo7xF9z~v+N825ZC;{#5Tu>M)&V(kEW4yX(dN)F@GFMIaI zriB;4;1M*K4$Fz_4=!7-Fp!5YM~)l`eVa`Tr5wdOExc#(jk<+L82w;S0-xY7c>#+L z9KPx2o(sMK0}f~bjxfX3<(%c-xvl3RrX8Hl2fxn8;cdPSuVH~% z{+#X4@HL(`tW687Vc;bfbw!=ncm339NyEhk3hhlq1zm=5ym1o_ZpS-c;_EPn<4^12 z1c_w9v`NO`+Wf~Nr+9D~rvRM@V!1c}p@%T{fjkpOJ>ZCQp2YdyK4HF`A#tR`Ic^d@ z!*7%iEjat!o6b6%F#22C7#Gj*1Q+}B3)Fw$2u!R01hr#bgdR#6R!_b55JOql{9G;9 zA=sht8XxPwj5`dxJ}C%Ut1s|CCu_IJG;1mt@KK*Un-b!%~`QL z9rYV`{cqr)E)<6@%?pYcM_i}Ps;=YZO2q@`jWl49n^>2Za3~6929EIch`xe;#aO>* zk3KD~`yKc7FHnJFNwk?($f9rH8Tr87l8oKaML0Sb8*Cn{gNE4WNZNoWEW&jU9`}=s z@rid=;QC76y?^)p5A=zRH@mYRp3}x(_OW$Z@Zq2ZUDk65kEvN+0VFE}eBFBNy_bpT&oNR2T*>yfpgQ@e|#_ z2OsM0+oez5@RF^NsV0niRo~@vdD;X+;p1@1ZxsWHU;vbj_zAO<;eD8~_Hhnb<~I$N zQr}je^wqVi@rjKuIGK(UB<|ks4r!zL0|u8BRNBkJs#3dp^1yW zAq~=)PjT`V@cjvw6o@a`kO5zWxZiw&G?!-+)b54?X5EYGVOdi-mM${>12fe&lq(V8qtA@vd z6-Ey`!y1TBUgRkfY&KqyRo%5KS2c*R5QRdVjf(8~+{V#kN4w{qeWrWkjUUEI5`2E+ zz=8Wi07Kcr`c!#Y;USD?6mpa+-Ri`OYu%^X#OIBmu?ZA{EgIcWCsiiRvX*~6hB6Zy ztJ-8mv5DiS)F5f~d;^UJOe2SA#qui2q$mqnZ!0p#?jspY;4)pO&Qt~xS`=eabH8Mei3}a1JLdo{KcvAq&yZc@ zHv}xh3+P;)@z0fbLL$>OA!Tp0)gIT|V-MhxK?#9v)8}M?7OUhSiMgjOko#(lV|y zKk&HhH25xGgwdvihjv9c@GKz2hP&c;8-X_*F_2&*7af2FRmN)YlRs&|6^r}wnS=NQ ziNL3L9BH80X-zZp3hN?XFa=*dZ%MlJW)erYYSTOBQQFk6jW*4%&}T}1O<(x-Gx8P!fhdAbg)CGDY_|Ba>7xe{QyYGwb3T5KK>f7O4j=MkgFuV?$N{qYnT!uG^0}@B{E*R-koYkG)-7Wj?>pTkJMIWF573y;*VFX*&0KZj^sE!=#s@%dhy*6m_tcmAf6x|(#s z>zWqQu?E7%5P!tij`$jPo1VJ0Yw8sLw4 zL^$mW-*MClj&?!#Bz`+5r|~oJ<~MO%#^*L_*p2p~1!v!F$8_RDqYWhRc@AD_-kuvx z8%MS2bdGU?p&vHEFYH^Eb4%wkfD$kSHxypuL9V{hdLlGLeUv_c@bP-g`sM9W-U6i# zW20L4z>*gyK%LO%HQsnV*MT29_Nd0D16t=rKFB9=-qB}`aL6y~+d;#EePAG*<0pIH z#roex=j(HjJ(k4s6MR%%*ik3MmHjIRC%>t8!$$pN{n9S!pBM)*gu$o2bIm?sGQZ3x z^3XnpavI?eejrcEm=mcO=W|_pci99~Kd9v7g@Znq!AOur_m9wHnvgp#8>^}mA$xwI zl=S8UKJ?uu`p6J@<{ABj@&1a8JAeD``(YsQq1MN9Z>8^NLp}u$9_9|{t(3*{lqfs> z7py33Cu}xH1(C+-M6;0ZNd5$#;?)3Ll46ek&SC2zO~r(vyzH4siC!kC^p_Vw#u#V5KVKakGa??ih_YNq+En|li{R4Ng_ z+t;}sr!7GX@A{uM{aV8cmF8rJ6e!kYz{v$PuG=@Y z=yLgrPLTL47GFHE%!VfnN`rF)=YCYl6hIe^7Ti=e9mjqx%CV41hrzL~z<`(d-Fwt| zNCArmN_iEwnGOR9jAuL{!9b$!#9UU>8CKs^d~w_ohulzh3?x4P{0p5N@pc$U{LlaS z_uW~2asvk}DN*(~K>`Db{km^YkRVUzm+AVBmS^G|Z~6$I$1R$^&C_(X;alaoE-!V_ zZjf#?oeUs#3)o2h!3(!TWZoA%AP$*kuxB9{gC2i!13BkAn4}FOs{&6NF50>cC46i$ z&+Y@9kLB2Om=^Lk40&;n1CDmegbkl(XmmUD); z-JUnQT+`6H7BEBQTON>1GYgKh}Uk3RY+ zKD7Z(>caY8U02Z9J`;v>`SWSzUsxCHD+)L?T~*m^;EUY2JW(di&6%sY4RMSr^IX0= zYkkypf?uZ%N>ok-hH)``r)l;n;*wHjibk(;cw4l!_4Cw zFFtj}<@&&P7(OsuteeD=hhFjbMEt9JDUR~^1l_YFDAvTf;Y0Tzi**^yo*r0y4@I*Lry^+-N!y5?t?smI(v zw>UgI%;E@fCCCDrGE2`w|4S+%CzN0L-p7wFrq404i;n*Yt3Afw(baP8O?3MV$#+Tjs&pz$GzLo|OhaY~ZJEIfQ zU)SmAfAAmvx9)^KOL9{N5+SRUy<9F+J{KOA46^>H2VM6JB+RNU<4-52>q9R6SMKMf z&O|PCA3=9=C;F7}z5|-+AL*x9OQCOKA8()La@_CKJ~DU=2VP*^W_c!#%Ww`e41OIK z{c$Dnjwgt96!(kZWXwR%i_bLaivaXTJkyWgx!ZqYO-YrU_EOpmM6BYnJ*@&%MVDq+ zh4im?2%ym7^>L7SHW%7 zC`r{oSd$G|3W8K$cm4_hf0hFO~XNvlXHV4&XpWxRKt&nzS7Z1 zCHIPUIe1Sg?9(+*8wQ_<)8m~krDE`_x z&q!DCo##IP9^UC@@m-g*q*)2JrgX`PtQeSp>PPN!=b7!!%#&w*9Z9&`pzr+w*3ZYZ_YD z0%oY3Yu#>!@);_F;a8Gx^szqq_(2&l`)znOYYF2-GbxxF7!to1`xt+%qcUcIi?NxDdqIb;e^X;T zlX5niF_2_Km+{|o5AtW8fUdzDhs8tE`>J{6Jn<kDHa3?%pr3UfpFRr4>>fls*M z2lD&D2Oq?zHsBL7Pa4-fS(;|2B@E|hPqB^UhRgke-(@CSur5@m{V!LV?O zT$X={n&dfI#Ff0p!X_nJIczyUSB7t6T~BTJtk1>+JzVuOxR4j*3Hid&uh;Fx@Wi=H z_6cj9TkVvCA#E2J!Hqx1I&hxu$AVJ5+1`REo zdU9uiOj)krmoLA_bxWrL-@28bOks@Vr8(r8m*pPR+v!g|`DFLQAHLR|I(1Sn!sVwn zsAcr5+d4r)C}Yi$8?W=YJ~q-vN>$Q@vfSMHTTlB)u7lB8e=ZyRc0Bb;8_iQ8)IN8n zp(=fo$3NOC7skH8g)ATkBVJiPgg8hbgR)U3-GmJ~^Z_pJ>F2yp0U&?4kSmE@yh*M6 zamW!4TF4i-*{agae`A{jbNe_BNSfG83n{miKkAq zzX4ClpA#f5X`aK}BI$`J-6xOPSK6UEIiyp|A3M$o5)Y<<#L{=uKtk-(Cj$7~o?ZmT zfL*7hU-(=G*I#Kqp*lGF$iv->&!5pJHeTue{qOx=_qdF!kwH#ibN$t|mG>#zUf9X{ zQw%rv3?#$~TP*$XTjOuq$B(l{qj?{#y}dR{3q=Te;ZiGA^Au zei8{92|ff+De=h-j2mRVhmizAzE7V!K*-tXX3{Fzi_7VSBa~MQ1nutY8;m2Z*@5W$ZcTEc;EZ*GE+ckGElmK2x zIZ0ygzP)*p#IsN9B#9TgS6_X#JE8A4?cS4bYN7BzA&WcEL8FVKjfCr}PLQ~$MNGf7 z1GUjn02v(wZ8wzwH*8>_)y5?5FgP`W1s@hLp$T5a!jt$#c`=Xx7x}ls0?v(eC{~h; zp~<5(@;a9h=1t^7QlWn7ct-}Xh2?nYoV1Bp?>fHAtHM3j;a0g;Sn@~7WJQU6F=YU(W2i(H6xoR&XF5G|o3%_9y1 zC{ZUnUu*@~6VIMJ4`1+FMIFx>^{-EKAIS?muNDfqAEk+@E?>8s%q|E2Im{9|)0|Jpyd8-EuZ848g#s)KbEUXf>K^U-2iRLBD7Mq9$%P&E z!F=os*ZMCQEi+urYEVs3FZnwmA5NVETF6q^%)ZKb3U30MSNb394A=KpwxEsNP^Qn> zk&C@Wb=JwxmFW^nV?tj``mXY1JGAdPKB6vw)$BFWj!%oq#x-UsFEgGWW^fki9=!Xz z+PYA0v5an><5XLb{vw*mW4a%R2%rp5h+GHO{E4_w)UJ4gz@+8HA)kB|@ zCe@0)PQ3Vx@AikON~8L*>wT%K9=3MKcf8Ee2`Ic?dVc1;tKw-I-X-2K2mWP5IjhDX zjml&2qV94jx%gLp(ps{m0t#D zXtA4dqsG{_@V=?sG+<2ihxQ)>GQA)44+SJ79Okq$)2mRBh7ftuzI{rQgC(TScAg~% zd%dY&6YNs=&fHDaYw*kIyq{v~^|`Ug=Db_QO?!csGPLa$y_tBx#m|78vimk}J!a_J z3+7%rR>d1MnP1~MOl_MdXNw)5FT@5YlD^?Z%$UG*R%Geb2r2do38(^2~8I zEDm5Fbbfc~0AY=j+5&rOzbmdnHC7qBL{pe`qk+%*R2yN{l!0)AbEiG*7EeE%O|9}% zEaHGhrmR#>d%1^drnoI~UrUou_wtCC1o?-d+7aTrkYINn7pB8I@^=|eSv>!y0ivh& zi!}_ISMB3(SylqRZ&ER?g+NM0p}7p8{i=#pa$G0Q=%4b7pMdSmzF|>(18ZXXo`%;B zkPWeY18_L#qeC!xBc)E8YEvz9A5dJZs!>p8&NJ!hr!`?v?eXk=r~Lj3y&6-e+y+$p z_r3E|HN%JYeCvk}$b&Myn#rdiMJb67fvKhC>oTn;2JEI=Uh1a*Z zK=nM&5Ju&&TU|e)=tuK!j67<59f)-ILUGqN?0INXf9Upkl;c}j zKQrdbzC?2372K&`BPB-ak2)AC?YKvd7Tl#pL!Htr{<}O_&6gwpdnwdpjJXsNHOFKl zmh>+S_#XVGNlqH`LP+fUElnyk=FYJWPessX(79Hb9o?w zU_JDoVcE;EVM@%u%+{K2AdiAd%JI!q0yHa zyo1rzowmrBD}#`k{a?Iy;P>T(z~63UESuDdQ&{DP{eC%ax*+f_795RUk7DUB1^li9 zIx)LE%^_8!g;sa*($3PI|JX}VgqzCJSG#_~@d~eg4C7x-{cN|_wcE54)Jh?0>jeu* zlN9rmYjIG}X)C+k9JHCTpu0K@X*B|Y1JKDrNrNN=PH<6|21wcawpLuo?Y7ABj)boj zWJ4$EB?!p^9$~o*$BJDU-DgJP-_MlbOPu8Y5=$bD(t&`ZzdH~FYhC3RTn~%L@`xT$ ztX>cwd1dmDrS}-4OpnFe1D$6CuKxyfDVj|>wfFd6)7(N^)9r>=OEwv@E2|z&lI^>B z!6}50q5?~DsIE0-j4{`Ai!8xdd-UxL?nx4G5$uGg8ZDE{L;xH?rk$W!s_~eAr#d-2vsiq?NaQ=gdqo`6TVJ#_ff*}!YXipSNf?oJU zwy)qy=Z>f4oS*9ja15rRFFul7TV}>{gHZxDYETkEDFvSio|e+x>!$m1Jv-=f`jLR= z(q9Z9zbacs)o?qB+?3tg=*!UJm=pYfBHt7usi#m@WBIb0jHJ1pS`@Yl^w_`vArG}E0 z-in`6F?y>1Z7`W9>fG%>m$$HPM)OJW-j)1o_Wo;lkl}qo zBc_4)d}&4W2%mJQ*1tL6o!@-Xrkk#d_;h9Q9K)ENW}u6f=+rXMIispsLGPCG>p61= zZZYFhPSM3x<;XERjRtBjvlL3BMD9YcZ@m11#`9}s)lFBOsF;pR8yh?_lZE;{S~}T$ ziDO=`#L@gEmbDcStBn4$a@lmO-!fQvQHA)Sa?#l zP_9=#xp|7hC{P0YY0r^_-&d)EwrUpt$Fs#27ae+a$l1BxHR*D!)cYf^98NbA+o1-^ zf-WMu7lb7HAE{~L1PyK2_|?ddcxdFqksGSMM9lT%I3S!6xdt88_?pR{$7HdeTWP{W za0q3#W2Er=_!+%ze#XdpDjQnn=ZW|hnPju-rhguf*?nD;m*t*Xv&XH?&i0bDky+Y1 zqM-Nj+}l_8_ZuB|%9o&r>#C5qOi-KR&q$ zh=D4%u@v~Cn3rUURxQBQ%lB)2`*NkK^Y=}Y6&6kHTESbz_Q_YVacp74b;vsEAORqXd0dy*FgVK@_(`=P54ccr;fpAoGK*7Mlm zjBFr%mCm=rAL_ViSZ0yi)h~TUD!$wV%$7LcI3k)-@!N}V-U|mXs#yrF$3A&)kDE(k zH{)W4A|}n=CF-PXpL71=t=lsTaR+<4of5ZIO6&mkT-;(@W~E8*3wGDB4^hvWwv zhh17nS*A9H;9aHKripB1oT;J!V!|YWI8lKA-|8}HR2X!nQ=Y;?9$<9!w{~Kqj_lZX za}q^j+R51A5EFM!<$>b;9`=4SKF2WnRc4nml!HNcWpuOsQ)`mlZ3LpJnxZR)59wj^ zT1h%i(sn$n?VNi5Gwq7Iju{x`-qx88%!RQZJdtu8w z8R@Pn*jIA2j=V#1{O%R%vD6ygwxVDoEOLAi%kInAfK={HKAH_Jj!~z_2ap2r+@>{* zbUnCzW7^^u_PN=l5{RTUJL^O<%}-kxGnva)T?D>eF*>bMx)Ey}WMLX4Xur~I1Z^a7 zEmGbQwbq4%A9i`YI%^wWZ5#|6xmZU&_5SH^BfA~+)03BOGBoyH-nJhzNX5JD4OWnG zaOHsfs>jZSCRqlu5AG~td;+!I4P0LBo9hBOo7H!i)q}4OZ(EaIgSlDo4I9V8k=9=v z+8}h}((3^^_Qc6|cdx87tmy5on4URyc6_JX)<(eDwI7sJehaO0#^{=bIC{W&@NA8H zF%h+ipLPr{KI)g)iL@2^nH~5_XATt4e)HH^(39)PmvLX-u(9_PkaT?t`Z4QbW*eA5 zBUx|0D0G*mlc>fKF3cz2bXj?S(Ewz+=j>ojhaHo0{dbA6ssn&aDT|?L zD}dT7XSh)D=yLOaCng*_5`VpAw*9iLUdSHqx)cDCna?fP_xL0~MSbX7zP>N_fgZ*O z=^lUJ4y>C5pQxRkFulFF``J~^8Cf?et)vioNYTHU>b_+53Sz_0-HRDB+r zJgV%PEYsRZQ}zkxwu~;nYKrBKcYlANlc+6@@mwaGyASx>c@KKtl2Q8|?-|m9Q*oH? zx&|Oj87t#FBd15uc?B;p(#jN*qh+`)<#6|AS@xa@7bzvH zU_v1w<}024bSU1mMflSsqdFynw*2798{T4z^a5ShBHqzJyjWOBl~~jZD|YTOb#{xw z&&J}<&JsO&dpV2cC+Ro*+rCWxXpEBYDUPMvI`lVqD&+hTd7P)}zRLE)Q1%>RndWZlGtH_bsH0Xx0yrESs5ZLne7%3_A)xRALTL?1_ObriH}s zloT038+BI07aIt=)OePAL-}CVs2OM;6_E<}vlUHC>(D1w-Hl03)R7d3h(xzWMXHecC3LVLOWK%V}=R_y1SD-c|njpAYXF zb7MIh>_!eu)PCv~=d$?KNznbC|8y3Nd)G*q#`pO@L3XE&5OdsF|-ZX zfCW`xcmxp&FP+Y3O1806*{{PkM9`|am0nZoJP`Sojy=v!@VG0){7eSlq>#l`XY>6R zwN1}(J$)uiv)?5q!UiehxK-e(^}K^DcYL8WlXo=Y!*7#%dj~FF&^I%+S{L3gHF>zX z_{H^1Oe(C*(nT@=b#hh9AMu>`@ z$Yb@UA}nbke1k>>?2A}okl62NiLJ^>jdr74$PmsZ(-tZA#)@2bBh~YBt0X1u66tRI z`6mf8r8)!Zl!IcBkbz#K@kXBo2aS`C2l(FfML%w1Al6AM(zg-=1;jwaT&{+tJQvnP zQN}kVR2j|0f^RiyEf>-MnzSSiYtPu0$(^J05EsfhHQF1`@m%Ry90C$g{JR4gR@@*B z&c%(i-nn+^PPuhOMnu=0ApvVki5Y?c8}=-9T>Wgh4lTzc$UBpUS~){_T%zi9!_}`J zwacm?vA3TdYc-9@&S<6fy-Bue|(?S9kR3m|J1H>j>8k` zFJM_<%sJD}?_~mIPA%QUA^q&cDeG4Fi2w-W^&WgQu_z%&SD1+W&4^gj4;u1lRpUbK zU#cl~gm}aV?Di_dFy#-&^H{>HXcNC*F7O+(%d>`u>YJ^ZiE!YE(dGC4uyOk4H^T0? zrTh3^A0&Qc>Cq7I^rBpB16Jq>VdB%lWn+ESHNd25zH9dkm94Vf%fptQzNr(kq&-c z5^E`u5555;jF(duMCP9baEHwUz3Oi?5wR`k;<)4s)QM9Ye%yNR*OURwNw~cFYo7w- z18PGm{1pg{55YkhqCeN`!Sab!>fcD=Le$gXp1SGVSD2hr&6kDL;QcMnK(!Q}-g~kd zr662^bH3v+rUV^&p>qF8I$@t3>XAh<8y2ShEPqVi!IQ_)~gIQ1a933;E!qx6bMHj&HE@{{p}Yd8Ry}kSM6=E z=;RKu;(*|2JcY`)6_81D#<7hpT~?9|bCZ8nm3tLCBC}5EDl>zRS(@CqQhA?;I*K?q z2J9CQGmSgupBm$Lz**H*OJ2y&Sp>XRp_q`l{BSv~0rISBz5dw#;Me-+dxKeqW>=!4 zG1INdfT!6UH&;r@9!_|k!53x4Psz+7dsy60S>j)SoevoR)r~#uTtwgC90UM7bD?|k zDqhe>oP8duQ(ZFM>G%h>6Yw{6ThG#rSemAn_!Yz|- zH=u`$i5BzwP0;2achC1*12#+n{7Njp+-h&UP`GH#4+?EW*J&3|UHFta z>%gE8BNeoU!J38pv1WJJ{9q{x3vb_E&)J~bp#T~^MoG-|yWGN!sc|q7qG7I_#m=Nk ze}tEPti!G#8(#5$Sq1Nb`h_D9>hh66MpIHK50mqRmu&6wp##_T|5qLs-$k%=dw?L4 zLcKckXD@HbABa!R6YD1F~OOw8O3x!|CTxG$nWPY11!P8`PKH*THB8tVY@sH}=Gp*Kqo|QOat8WF8vM5*P zPV+d^HeE92UM$BI^vZS~TsudKCX$jLu1Iyhj>%Q;h0&`A6kPElf;d@_6fBXKp+3y? zpnHB?%FsDjj>o&Wr{OPwfCCcs^$_ko%t@DSixXOnGjTPx7?;?`RnH!`toZO*u+^pN z+`KqqB`T02VWVXLyA`&rQb>`qEJq|rJ zsbo3uyga_WC9@=rqMdgAwf!7^6Pcyda+Xbf=|m`sFyTJ?At-w}NO}||9PQt;u18h} z6g(!V6$P9vT{SU3OQBoQAGz)RohXxdM2 zuHyXwI<4=FldyCnK0NzmjHY-pQw*?3^M%lSdW`c;&R|ih>uG#JyOl@FaBOp-nRV)G za26okl3qS=g=fH__LyBRJ~;(wZI_Sa+i41;hpgWdb)@CR@nNY5o3=}f6p3P`-m z57IRRvs`aHj^-CXD-6aKpnIQLb~04#r(Yvvkw^WF$dh}(&L0Pme*KzLz`;sKUP=Ol zcd8zlHLdL8&=cFR83N3$531iOyA-n51+2fm{EMg5QLhK$q6x#l2E}o}_Cedp?W~iw zQg>;z850FuF9ZVyiLThK2dNNe?+RHM&Ys}-Zty3D$nC2~ajgD)a05d^`VZ$_JP`-I z|5-5d>rWTuLhIJbK%Po-4A!Kf_Xa5Z=Ht#AO)4Dfr@@(9ns)uR(5@$!($#n zidv~%2!!I-Y#@1pRT%1>J#oT2<~@dGuSCy2JeFDDN3YPudu+TG>1q)B4qjWJb|F8W zvq}3Y>bz5NT?WTz*hQ3tQweKxqTbN}Loss8W<9Mx|1I6%tc2dz1GYRMPl7u9wfqh2 z>Jl&VcKGI>OIRduPGc?+Rcz}nUr{n@Y8ALiY$+zu84b_8cB7}s)2M1eW);UmKouEm1QX^|KHF-z|r z7!C#PG)Z{_U8Jlxj&Kr)Kj`|UW1?+!TY?ePEOu z4%$$eq{ePmDA{|5>p${1r7n(g-76K<1QhXSlKo&*HAw@~-IO8B?@@^6hkv_4Q*D@j z!!E~_pVlc0tI$ooCj$vg@!IKi;1PSs-oQG<9O#?o^Oo z{k(Hde@sv)W8<%$iK~M&BZ)jQJ2iDh?iOtv?2WxzQL~|l1xrsiwaF8~@}q7jRvv5q zHg2x(Z%C_i@-fL;zUO~<&O)b)?%e!maw+=!-sR8TOUe1>W#Vno-U*}iDC8264k_{J z%msv6wpX@C`i^|54Y?0qtDf5|(#z~X{-Lvs+dh34A|+3Ybs_uopRtN17Uw$imn zD_6K8cXIQ7Qt2+Q0CQo%mhJKkV;J&Pu1oR?1Sc1H_ia@*kvS#5dmXI&7^8#7?p?9i zws9EVyN;7Vp34gJV-Csy+Ax3EZ~y@`rJppwgkMBPuqTe=T3pKg3IBO;y1y$2M>gQJ zdZ(05&;&n+yt&YXMtk$8Y)VKtQrMt`(B}p4$%EEdg&Y5{A|GPDQ|@t7a0!^;B>@j( zf=<)lDL;97HMM`FgTI-dsuQ)FSm<0C$b~B_JmAyWs_t^>obMHWDePgP-RPvy788;6 zVaAS)gBM7gthMMY21lg`9$IV=jvIuu8z?6Jn7*mX>hF}oPgsMHWc zNxTaJSe)~G6nrG@5@6m>5C=j}0L7E&1RLl!)a@A9D`w~u&yXI6RkW+!E(5!14agZ0 zl9TrXq9RJtiV1($_*zR>zaDm-{xbza=Dif*y<@vCIy!@;qrQ*0NNH*?tJ2d!^8TJ< zoikr?JMWwC3H>-r?2v+UD7yqUp(Gn@39g!*ifUc7fOQgG9~`KQm#!T5#J}T6S$O|eY*;{ z5e{x<7Zki;tm|`}Ki{eHY@lED{H6*wE2PhOX05;QRVUG3d%`fp5(ja$STPY++TKS$ z%}B1q@)C!8n(ZxqVzx>;QknRnn80>nl51)+i6VQOjEUaj5!q2TsTMs}=Nc?QTBfCy zlNRc9?~5auS8dj4FCvftT$yCN0z z5_f0-@C&$O0~>E@U9`l9?Pbm-OH_hJV8j3GXtlv6DB529HL{Fp4VX3kln{u`{Pu1k z@LN==HsatONp>%XO9}FsfLy#D)&0Plyj^%-6qQAX?1AuKMAK0+Ow5+%CXd06M^;It zXHH$Rv(6wD|8qT+D>CmO{uw$%a?@Bh*&I}{uUN3Bx9@MLW1$^6aT|L-WKL5yvJS_B zgx7ZbO`&AoJ?%Ps(;f08p*`N0%ZfSDbr=uUk9AF}9j6eq>G9Ou@iwocM0Q*+|3&k( zjtYpabxkyW>+_Z9Lt*$?i@k~mH_#mRVCuSar_Xmdol=TWI#3~b^q3-v$=<`lioAvE zdp5o2ubgXYf;f)fx4YrtH!mTEO1geh>wD1=QCRvESDGejHaqfWJ)~1=r*cLiA)MRc zSgGdry^`5>3XSDLr@kcG$&HjQO(t`v&&+GB3Ss5ZC*ka^E~_iYgB(#U!2e`7klkle zm3zOAi&kDOd@uA=e;86_ag;~C5@XFzux=Ub83tGmRlU|RzYnhIF$-n+Z_u3~f z`+x_r-8>C3;sZu>Mm^kW1is&-TlQsUiFh0l68>3)m=hr5$1k8S9P`S+TA%3 z!O@x!+sOcrvy0@k&U3mpa>%5C^Pfoq-utcR{W)YRo8u%HHjaMTCC(>{`Kaf3x{z=B zG16E*`EyNY6>(ZGD@EupadGpDd2Bl;Kils#E4A6`z<301QRG{z%-;y5R)mn;jh zwF+qXA*&ya?ck{5d0bV+#=Bs>YWGr?Xt`6q_u8b2 z!VHiy*69IyfrVSaM%~p(YVV3aV=tjvKMMzp)-j!G%bHuA1-DF?n4!B!GTOzB_4d23 z;n{*)xUkur^}B%gIsr}JtJAOg0RlCIx^X@H|Ej^mhGXxWp*my-uVuOt zvK?N&+@sVoTU+nW$NND)T9n%`D`+~)c>SfLxAdpjew2Q{uP5HLp-<<)FTY1W!u13P zk`t7PiKX+hNMMI-omgaMp0ok3dHz4#BByXY(I2%qyRx{~#`Ja>7+gBZ#Og?m*J#GC zGxo#uvuA!?DANc0762f9tJkavWWTAs&sSbh^(51*ElqNZk?S#J)P?^q|M|RbhOqae*gNQxf!oEwL zu!OiIXh;pM*nY>PquupRCY?B9FzL@D!I|ijCuM=Tsosl1XA9sQAXIEadK8=!X$M^x z5@k%A#Y_K_KC|EhDB>7}l=Z}9&1rQ@J1tf`HaP1NNzeg{gqfdZ30?bc4PGch97g>w zjl#7yDz5a;f+&|fA*kP4WWoqhnIdnaQ-Z2Z9x}0(su*Q2@tJy7*`JSuSs3(64}6so z98Xo7TFBnRsy7~wL2elb5D@p3k=Uu37Dz&p@A#TN#TFa;3|H&s z4eulJ6`Uqqo}^Bf^cuIS?blTSCbuh;O~R?LOV~vm-ZjQk3OF4jvyU8iG~T`0+tk6N z$<6Q2ItJx7i15ihyEn7Uj(J&dDff)RH}g_z{x*UxrZ5qjoT?sU7Qg8(qT{^-@1}xo6PF#Y zd;6($vWYhZSJHM#uK!BdtM=t(6_mMJ5E~p&fV{tMWL|TMvx(yR8joM@qv<3C&TIcC z-4;Pu)tjZoGA653Ky5SY@@=)CN*-j>J}iZAFrFxRA#{^Jm0>d7V!EOC^ID{eepN;s z)_&kAo)q2wcHdWc#Vu}LV#DL<)hB{d7nC{)vFTCTaY~%((}*$)1q#_XwxxF_8(a5` z!g+!nr<#Z9@5BYr^d?C^UmjcU{k+FU{pc$*@k5k52A&7KCc${}77A?;=$4(`ps`cCb-t^~DFYb2F;y&V*w!6NYPk)6d~CW9zRXWCWR zJ9WLDpZj*jcKT?k6W?P;zd~;RwDBcCp%L~gzk7Bw zhXRfUC6GgQ({Il5+N)+p{X6E+JH?xSGMsDwnE%_l{pU;(LB?NHs^RcQ1<})R=v#Cs3;G7;_;aa`d>*|sbt zu)eonS0$D-+3@`NyyZ#{MFP|1NH3$wXbAm)Fc@5>WdY5{TigQVu2cx*hn z;?Dx&OZ)&2q^ORX3YsuEg$`^KShUg;0?a2j`z!-;O$Cw7qeXpkDOxb`EF+UAfB|;J zRP!^+L((<*0sO-Ff}kIgiT7P4qGIyW$Wc2rmphImXUsU!b{DMO%p<~U-TX_XZ$5f~ zrrr#>yKcdNw;7J-X*MJHll+tjix+74Qz*R3fD2*b1U&h%PFIZuQV%65(^X0jMD% zR!ezOXjahDO(-p_w^R*!t>&^814Ra7)5B~HhZVpM$boZr8JC1Gsv(k@qw5G~ruD(c zo;}!$po!EFBD8t}*aSlY(|IB7MBk_hbkNj0oJVJO1mcAE=^uoR9C8H)lsM{fxq8=;AUb*u zpZof!^L)Rb&C%FIKdLD%H9{!YK{d_`-Kx3Wz*t-RbfE30PU<{;?a7FFloqlrPl}DO zy?SS^g#rb&Uoa&}2^lTw@5j4Z`^_IOz;P+f{~ z^HHhV(ljsSED(r=J=*+ly@zbTPTXu3^9xw_jcD1*MrAy&c4~;=>-$W28?Wn9(j5B_wb?70(pu9TzP;o>48D@gPVj zDcHc0mCZCc-6>}xBSa}v14F|o6d_)r!=*%$-lxQR91Jlui^9{JBL0(?)`Mp`v9jHp zO{wp(Af)-QV~CcWhH|_ExOQ{?ea$_%N6X&nULK5qMg}#2&T3WdY}kbT|JFXkxQ9Oa z8`7h!0cn1{)<6N;oh>_8g?E}IEV~-RFByLVCT4!k+)855+*iCKsafhQN0Qe9Llk!; zb(2-$&K36=blaKpQW`oc3Y_5BZF6?r+K>6tQ&psyu7FoJza6jh#PGx`hj0w(+77aP z7SuwARPc>;Cu8$Cd}$k-^ZD(Rr@KHTV&O`hlRM;|&4El}GhkSxnfV~Kiy6nQ=ZP3K zwAM{sh0+{;>dVv?s%*cecRSA9x?d|A$ElqIVNk6MJn5rriK=I%bx|L(N@S`{4iTmy zN0l<^J2Po-a%GQ)y1cKpzy2YvbTTiK`AU#Q`Gv8`H)|!k1@@P+ki;nPJM7!CNRz)x z!b;*b*rR=1Jg!DsKAvF03A@iU`MiPxJ?;hCO{@MVZO0E+9S=YK|6_Jnj`3N9q{_{NyA}?l2^bT6aFsR4dB5U&#Abtwfi1c8u6B7qVDv0 zTQO$aVdM`N{t+EKC)d55kp`OSW^g%Dz2Z94uni$?>U}yDo3vIUv)0oz zkEGc3?tU9H_&m0?-EfPfSmDQM{H~vZ*){ewBiYqJxZ;aPS=8`CDr*8zKuDF7=wuDP ztlBE(Drne=#=JiN0e7Un{YZ zw7OMUxaQ#rCCIw&e2~2@_H<=mm>Jfx2|sC}&kx>-9Z@j~ z=hmVNg^vzmEAc4a7SJ9lQo{2pRQwoQAOv`ncK2EU!MSdf2j52;@Y-wW?HldD5^fH%_NUq9nMwu+uP;D zG|&95n)rZZioGNU1`LuVh}&g`xJPA`?zIg*bGdVW#sRSk>%0x)w%~2Jut5hNFEy>v z>~|3m2mEwdX*Ru0fML1=A%aaLjrCB{H8V~c|tlWP0^vhTxt#@{=xVNLM9`_m6iqQ&zstS@9(Gyav z!f*(v^m#7+b*J!{p_D!y@XN3})(yjn{no#fBH8X3u;%o^ z#zxd6)k{9}`)>(53jI%+MXpS4=8^|(Z`ksMUmuOM;s_p+P~-y~{AX3^*#~zUJ+%|% z22jvPBEk5HWt8w^w*`q)$-G-ma<2}@(v^2RudVw1?%7#vVycy4AG@t336(xZ$IDN# ztPcm*EPd3ex8KwX#NOX$X&lH8L%N$EOUo5yqY6GiY~e8zwj@03>zVKv;e^AF=Z*hq za#*<m?=s=5D#Noj%dzK0{@>4d#fLCRw=7-T3JfOuj~PFQ%9Zqp)J!1c9b&d1V*=C3-a-e0(s*_H9m13>WvK#$yp zoR7u^Dn}w|l6P-+98L~YTlzfuwb-+z&dzJ6$*x)UYE$;u>_2t9uP2j*HgvEFc3>Nz zemC2P@k6!3#b?ae0Q9T%Qs`G2cw@9>(D3u}KO6kAa5GR)+nJHeZ7j-Gbia_Smo@k2 zi-*WsXEl0UiqR-xzunyWggrj$folRGHfK@WYH!M(R9AC50!O8 zSn!4_qVdmCMS}01jg=!0J4=f7N^|kQ)Dm->!@WjO_>aT$SYH#r&zG~{%vb4p``Z8F zh(|l6Q;l7=fej|LCs*!???WA|k`jg*-VVvU=3w@Hk>@5JDpw}I*Om1#x{-a9r#_Ct zZR_*XD-zy*1F^|~$_7}aSyOogXIpiT)u)YcrLPwiuRn)Le8=S3H9+l?IpE5Z?Dw53 zwW=@DP(5;w`+7;JS)|I#!ApeC2}j^w06ZhHU&0lTo-qE*=rDWJWKu4Z#+ON*nN$rn zEEZYouUpqZs~Z}{NM{~|{#G8q?rj>!W{7GGC+YTuB5%mU=EEJ!a+b?| z-OV;Ah`~kiSE**_jrEsC*U)fZV$$8Wo7_PInY2;s6Ne^0>$S-$W*QyVOS+zuXqv7h z{Ze?hXEeiV$dN&BsMNXhRLw><9hcJggLs%oSS?*f(#T)NH?E7JD{7q-E5i;*eIXu3 zVT#F(%8s#7&K&R0PSMb`7~2zkva5c=nsc{0^&rM=>>{EsRwNGWFBfb}B zsc0Yn>arp2{FBxZ_uV@#{s??T@@hg9S<9iXSSUZN3l!erBMcDtTf6DW26U-Y7P^^A z{T1x@Dh{JnxyT6chtLTk`)FbbV`N39Aw+?pT6~Q1BI7qOb9=AFV303*rG1|(XnKvR zpIa6IMefK-5i}D(zM4)}xZ?u)^0BKaNVT#pg302M-M7Sd#anuti)H@y|DG(5N|e=> zfleQ>*!huYfRXvJ`?<>LIWHQ_i6*1O68+U;8<2d^bRKK`6}ft7nT@4T5-|Qel5mG5 zz^V{n9V+yWoJD5!`?fX?&JjPv62DWOGIRB~`dV?K5P)gWp`t|3*MpT9IyHQUTD)s9 zLRn>REDrj~m_5`C-CIDf!a%?KiktSbqdB+q%d!fczSPdxWDonI{MfePXhZpa?@Zp* zHW`E7)p|br#+dG2X>PFmc$o$)Gz5pPxpt-nx*h^Lx6)4POzKtXoq`tzEc}CUyGV~H zj>rzUr0QHee?xDi_Vwy40MXI&_!m8?Mv1TLqCO{XI2Az$I`*2&-%+U26lC zMp1QEF!$36WbS5&CLf*57bmZ)xA2l3em(Mt59mA+|=4>DB+L-O}8@iR`?j-cQUqo3-h)) ztj|aJo z^$+Z`NEE4B|8>{GrHqrQd%Glp@z+L@$#^zOcN0*G6t!_-$2(z&b0!h?T|{R+mb$a3 znE^Z)bFqIB*Gz2CH?{b=W!tvj{{QYSF{6VqUb!ZIa@X41djjEG`Jdj1-T&c@`(Uy` zR=K{WxAA&p&!MIK_=Y@+E@Y!z^RE(N$#!2GC{65Hc`xd+Uv0T^Ecxx$uAu3*r`}Dg zBDU$8_Op_Jhbg0789kW4F;V+y_UDbS%dq({!KHWVP7qN#9J`5!nH~++( zJ^~V2^R1<&=c`66a<}2kE1KA;+F}c%rs=D>93M<7^u7U#dk5U5^Fbk_+}l*;@7v z$;riIZ$`IXr*NWMRXXwB6d!^f>sTAVLE_XDO+B(yap+c!uGY4)jP%EKLFG-cYE0#% zhms@G6v>fVnC{W8of=}U%HBVM0nUo5m6n`rQNm9?(hT=gFxPrt$LP6jEeZz$tal$K zR&s*=cr#vx$a1pms&jIEq~v-<`CKDy3-&2R+eiBJh1BuAVy#rp{g9bD9BI5?zrpsj z99+F=SgoX$R&GSStA21z{qK?~J8+_@hw-W`%Kx%!MK1p(4|VY4myCbXM3jEMX6I6zKt3McPoe#j~A>U9v0}t&C%VM$2BVbJ;kB_ zFPh}OeDpqyC1|(h8i#;c4A3(+1iWfm9YXGnhP!oF^*)){-T?F68J*|Q1T}dwYe>xe zVLtC}|1ew9(=j)pWlrHbD#w0~=tIbm~~f7_xOK~8-pnDL&@ zzXNGA{xJN|wd^*Zxs~J*JKnY0xLyJ8V!>-b=b{a6idcIMyF-6iXKU@PeR0S=p%bYb zY*|ECMrSk_Z8Y62mlcfNb+J7i|HGmtec5ZbE|WSxM(x9-znv6eBrvsq$CX`ZyD^gqDs9FdO>Y$ZTUzGZmVW{hU3SdW;=NBQTmPeaY1 z8u}jSeE+VuhYj%>v^d zz_b`GU7(W1lYNBVZhPfF_rTh&oyrl1^H>fu!=Jpn%SL|Rp19(!LZiqL-*cNk1lX>3 zesetPFAmak>9&J3C1!hX=)o1{pK`+H)+Kt*5)ywU009I*zHDSK0f)pQQN z=)*7hMKhrB9nx^^z}eqlg6N zHzc<|r>ux~aO{S44A5FVh4rV;?&&a4dM^zy8o)f5++}y@Z>y1avzr9`cX;*63LZED z{r$5GNy|C;jueY-7VHfcty}ME?>|rLntj!AqW>NMI83MEW>G2EX}vi$KDo0Abl%*o zzd~1!aTJra8Euy35Bz6?HJpOY0*!&aDRy5hk!Lu%+ zb__G{eSM38IOvx$$b?bt{{gr_N59-=Os{zpL*z#ueXMleCpPyi1`@RefuO$5E6?)g zQq~jQDkwf^< znF%dEG|3$>@=P3m#O@#x7ry5CTKU&HpKFc(O8Iil=!@V*AXd+UheQ%bdf>9YQSCJS zjr}>7xpDV9Rao-IrS12_^rJkkb$=-RRz^Es|5|-mM6c1-Pqj09z4k|(6k)#mQhk!h z9PiaKkbqa-JulD)z(I<;eMXnq^}V5I#25OaW2Rkkik!=KVe91}kgc)fW_EZvyNk;6 zMd9bXuEzas?|--R)%{p`lo)YT>U^JB5I?sKFo3-pHq* zNK?<6!4PthVu8c3>AddK;aotl2^^@;?&*rl= z`1tI`!?mb$e=W*nxcd0p19I%DW*xC1-nM@t$m z&!?q57B>c$!W3i&0MFvjS@8!@ZiABTm~1Z#O4WvY(q6JGoO}~NGV5Ep45{R)uX1&K zVbu0HJWe<~Hd9Or9xX#E3%w>fWPK!;>6m^wydUn7gbV#qmhi!a0Qq2v4nZh_gtZUJ^T$!{AnfVYoswlcE4nW9f*KE?eC z+zv(cyi7R6z$;`@XMH^XD1hlB_MR)*F^W#e#TAnIR!x4eoXwPDoY^nQ;QT542Yx(y zAKCPDkgh5I*6qbOaJl?EE8UfhUl%LE+Y>tDoYLX7v6t@>*W>Ck7S8eDwa{^mu~HbA z`fF#$z?uMs9K+hF5qnm zpE1ZM6^!*ZwBVUHsyti7<#r3x3+)w#2NoE50ivGGIndaKnx%(4P&&vx_c*S1oE8Be z8t`k-GU)WSADzR7IGX4k?kysR?|cpp?$GlbwuVbwC$68w=lLvOdTEr|{kp#CM~PFm zlv9|C?j$|k?(SNA?*-i2IAOGaXHHL4!fdDqzcgLq^5GPYFVB@;#z5ll|NgthtLK;e z7Ty+pa7n9v%(0wC;487L~;pf&>T$~dFLx1!;sf%9!>8gqc7Bg6`m*&RCwu)&i)LIMevd{pPckk z0_O#RA&*1G@JogxeB=R9e}b;?$&u<%|lhi@}&@)b6mn?YNu43EjPw{ERzM79TxZ7puo?{JNvfd|e7WLNVE zxUe7k=Y-+sA>M+|CC#8E{q}fnd8>L-S1vDI2pely;mJGSxx#D$M*{-+*Ail!FS4Stn|8X)pbch=V3fIo_zEpAK85FGoRhO=RNPK{>4jK zg|lR&^VJUOugihHPC3Yq40&q4jo{1v9TF2MxI8qOk6&KuT`J|l+ff%dS=1^2RL|j$ zaD9PiJO)Bfq8Cf2PoX<%cl0W-E^Tz2G%(%>ZUdHugs~1%4~4V&Qa)!5jSgW$m|+AR zn{k9b2~PB?yEoNeT^yOAUyz%$x9;C2m`>Q`qno^58~ZP{uB~5iDFfGfO3@-rdFjlZ zZ_%aPz1LCUeF8R?3G6uIlkg!+WE9PJRypWTUw`%+{fUjQ{@vH=)6+leH1d;%gGWB{ zC)*ELBd@XxZ@fN@QE% zTzc5c3?yD31`?o^zd2B4xvTa_9(qTeXjdmlJoe7V>+|II)d>>Sh5=SQI`YC?D4KP~ zroCWcOgSsjplV65*B;XZ2j|RekGQb%I10O4N~po4ZTbe&E6TH$DUZfBwP$vH4^fblISm#E%Z2g0g(%o1-4%_fj?Z=fv@2MLUF2u4zqv@lf|c#%O27rPx@O?b_wJY# z=HjJMKR43d_VoKdSQ4e{FG3HR(Zp&@W8g!27EIi0KsNU*g51lph>=7M z;4oR}FlBP8L=Sd_13C*qTq_oomQoaiQ*2A4DV(S%YN~MzVMlBIl@R;mwoF{;6NW~O z%<*UjX`A}mi{po0sqfJ-l6c|g&$a*ZOE1>M(6{MA3uWbw`d;e&^=-O$Zk~GIlba8J z_?gXno_J3iN?3fN5cT)Q(6!{ZZR{FYl_d+L3?znO#W0Y-t6mHZ4@xm(Ac0Sr>?^Y? z1J>~6bTMZD#-Bbar;-i@Zgc>0$OLiQAr-uGxGXIFq~26hRvjZn?4GLAOLdCGmiJ9( zm8Z!XbybOr*HzEzvG^l@F^zZWycpA1%=_YONl zj=0kiKm5?cwHWq}QhYDw1){w8z+HniNgyE$y{;VJbE^^9Ps^3s7gCGmyChBb{QEfy!=&R&iw(#VV zhkgbgH0m>7E2TlZH6gKC;Z0LMgdBNwt(_zx& zhTQ01mcY6hx0u`i6Lj55zmH-+{*0$&a|YPa=qt$jD9#H-R0CVMe~x5T+BD29^tI!_ zj9FbDbjQLE0-p>#g7qZewF)^xKbhw)LSJA{R8b>JY@^-%bnub5K%EgCu*>o1I=-Cr zSDNNZiJA_J+*_$b^PyXtw4>v%93n3lGuog+V7*320#Ib0LLi+g7A5dHRNsaTvXnAa2$55hANT>zNo_7^wcnCL_XEe&o ziB$|FqHoYaoP*6)YzB<@NbobnId!6)3s&G8*xVZ-00 zy`$zP>X3m19(l`@?$+PQRwnow+xU^*#z5wbFBYGETt_ByZ zf8iB0$F(kKPMw9JlELkULcx#logRz0B16PhKgEL=Yc9=j$Gp*I)R+ej!v<-{xwnoO zH{jzv6P;v&d_s$M@IA*ytjx+s^Vs-$vp;9^L>-0x_~Y;HlQ!RZkwr=z@Mg8^*hQ8*Xg9Fms?xK2OlINjmaaD!&;d(@M1TkF7+A=}^r zKX^IPjPzJM%DdEU!v=o9Td#sUH=&VHQx^9D(x)S(u6nST)~s@j7$2LT*0x<1F!L1|EIsnrX+Z> z$4`AEA2<%(9|{9I=yW&SsQc|x;Trd&zUF!sKFaG39&W(zWO{@rUBU-%7>npjy_~g6 zKjdp_Mvd3=NIhgP>uvhYQMUa&LU&T_WOPTvE^K6R@)zt34|g6oZ9M5S%MaXNWAtbbi9x^1iP*5L*{WWYK*fTq9k zwlvDU)1VKI?Ptgq0||WlX>El6kNUL6-+k@tn{U)f5yn}Nl&)3(1`di8VNZWtCnUZ8>`u^U`*s@;yf1nx5>h9ED%kPbXOF zro4F!Y#d8i_WMdWyFc^qrk3VSL!Hy6-7*NBn&=gAW^>$6(jU?cD7x-j;>-KOG;@XDX_JOCKS!#f{ zUl~y(TENS4C&Uf~U^J{Ah+4pF5?%sNQL&MJZ*BJVTmLm^8{FuMtSQGp$3~7kFN$Q{ zkB$2pE*1lcHdZJFg;B%pJ=iX^b&uUre1tQ*IP~fWgcv+qNtSOldIR=Ly_i#PJ(aP9 zBU&`TEC^Db?z;1i&3*UW)kYEwB%Xfy={i;7y=5fvPeaD5`ljzZ3;sPKHb8MY-Zq ze{5Cq>bQEhS9dwsP0J#osEodR;DM=sfG!{W@Q8CL%glZyWvH-~HX@ zi)A43$AA3Co3DNCYXx74DlIsZ?g#E0$FX{gN*W!bJmCQ2ULJfx)svQm7UdJ(aUKr1 zLF?elf#_9>I0UgDc3NKhkmq|+#w&5s&p1L~{NT=W{DdcM6r~K<^RpVu@OUC#U5a0d zaUx#g1MwsDt@j&#oQJaT9#7NGq!XU@CoViE-`bhQW1A`3TQ5A7WxUM~>BxFd+`7-v zZ<>sazF6O-FVc5{v$$i!!sdn3BwQ8+(86_FskGcohv(o-+X{{1;!-}(?zyEpw`JPH zTOe&wKfxzme8Ms$2C~A|7tELE7O}g$#FZ-LxoiYil(2G7gE=pr6XPQeTrL-s{&Wt& z+z{k=%4wTQ{at~(veZ|QagrXPKk|AJ`oN|i4Ep$o+82iAjfucrZ~t;7=W5Y;5&j;^ zGxc;RPS`=dPrzrzPoTGM--a9@KWPIki%0r{Lvl)XjGq=0=&#yr}d6hryZ56yinILXs|%)L#2vhdCNRxy1KOxO9sKeU5)#R&_4!R8V+>#N{Xo>{Ko z65jGz^W~O<+I*7#kAL#x(m!8TsV$4*Xb9l%EyEjSQWl@ez#FdfCAVmWSJ;T?IPvm? z3xDX#j7EGf{=GFXXK(=~m-IGP=)>R{NId)Ov(0xfXvsV>dhX00S+AXR*VA1zzZsrf zjW?z1B#)`yLqFKS^8>@r{m>nEGLy8|%MX3>3rz|0tj(xHG8CB)+?vKi;lTy=&^@*t zVBHq=oMsz%6>pB=KU9`=w$i4(b~|0_Rd_CG;Bp0C`_iY79~T_!{J?VfkN5f^zI?<< z$4|asXB@eYKgZ8ua3rr8#yuC<8D_+c-^9;h=e^fwXg~b1E+xM)*N#jqY^dfKUzoFe`53LPk*Y6?;h)oNibPk zksFH0_q+-1UVg{Mlj>y$q08@h-VfUWRQsWqCEx(Z`Ewx(UZe6_6 zdZwci`k}YNH+Zbw<1@ofp`N+)4Q(7zb&>jzp3~pZA)^m9533z@J{1q=+6iM|F+Th3 zg);MD`X!Npg9T!)P!cPhnulX1iwy~b#-0Hsd#R@}*@ymMOk4vxr>w0mJfy8&}q_LluJ~c25I^lrR zsToeDHlLtJN#AleRH)7qJtsNWQ3rnHlAPAjUD~6u16qkHb5O+?oNWV%s#}JdHaB0c z7r1<4qsvgx)&qZ8jn#F3or3YMI<@8DN8h=*ukP=txyS1@_WYvjX~+o!8$35Js=`*g ze7$%#_6qF1DF0~FqyMeOiD_Fse%+r9gNGf5hS9|CIdvCq1bz=sv!?P;^16>dI8jeU z!`OfZKvrtMf`LT&3?!OQ?HA7~-m}@7{ix@kf38lB_({pck9v=aVG%v|eeZj6^SRG{ zX7l_1{GV-}e(L?p7_}HA%BHSCmOii^+SPqUY#%FZuN({1>?zM7x8}woD?fB4O>nnCT^Y;K!MgvbahnmH{^Ye9 zTkLnh(#CF!WTQoXoN_0h4!FsFX1?BJq+bqAPgWaycO0B69rAeP+SZY2HasJ zVDRPq4)}gN@iU+V!+l3J{%$Zeu%NT39|KT%GX;lZdjKmDVC4C5!^+xjVawlCDS3%ZTcE)aAb10FmC}mPJ$xdSCwXmpA|6 zKm3Qy|NNhS*Yuf;O5a8%^&K*&M_3$`w~i96aDYLFXBQSx$b`GNZCpQ{{E4&#ehqO^ zt~VWPBvXn6u3In8s*sXgMIOWU*1 zq@B6iSmKd)jN^lA@)wy0JLB8pB&-!jriFpgFPU^|Yq_-RvFO79ZP#9cCw0jWeW4eO zi{cUGW1Fsk4Jq!bk77G`!v*zGx$CWaB68dkVVH?GSpQ+=(NYARdTX)ItL;v$1t81e=J?XPtQG2*U&E+KI9^|hhq<= z*q8q`#6dn4@>>QHYffG4IrX$ob&%g{pn5(p+<~OGg5CxkSj*2vU)(70_}x4^(a zBAde&8jSgzaW-SEJbQetIf%iqd+-Y5f^#0%ZM56`wJ~kcKwA2Pe8Hii%TXvSIP0_K zu^Y}_$gVuh-MlH{)HVhk@2t1Eoa7c9=#3tN9^vMGkitQ?pl6^bpWFaLcjqiL%P$M& z?p<8U?S2mTd?OsHwhM&K|Dv_#Cd#io@2E}wcfb3I;!_#D6u;?GeZ=ij=XhKNX$UPve9{T$Qdga>%E>1O-Z&xy zKYQ+HZ7}1z)5_99yx?X8l2g*?xaNY%$L0aoGF5(I?q_A>f9ecBv=j49e3G6c&&sA;p`jz{M_y~UhFQm7?dOZ;H^bw*O+aN&`4XS9BA9p;6tDgV~R)@?D2qaK;BS-zN#dqw`7` zcd4%A4*ukE4A01WKrR$|sNgYRtEhGEVzar zr(V7KTAjvPveJE_ada`H*`}4pQf}#Bu~|3Due^gNa#Z3jc9j{ep7UZPcs#P^{i8B2 z{j0zJ>w01E>zlv-?)OSZe4%0CkZ;PO{N@n%)~6^km-vNGYcxHeabWz7CjoLj=9%WDKkpoEv_lgUhpOg^dggKJ_!=A=C`d>RJA~(17#VDe5^}>9oa#q}H zwE_I%3r^+x>E`D(UwGk#`kZ3%k6ui7e){S6Z$9_A&u)JI_sT$`?q92Ug)*Bm%6QDl zio->Vat&9MH~o25-rap*=8#{W1nB7WaWm|d++S^c=cVOF<$H|2H9bezzfDfocCIRO zO2FX2J}amFxSXIQkF*cf-{WM*mF!k~8z=NF>GVl;dISTB`)e=m{+j1z4-h^sG^Z_e z;AuY^a=AI3wChVh@k-4ljS2c+Ckwq&{RhJ#GQb80(Iv=&tA7ZwI)d zp@zGu{3-3(zA~_|!bb`v7vNJ#>F#`Ck+rk-y08Md)je zhP|u89^_LcxKjCFWpm-jBjjEf&*dh#2!9Xdk$PIk9pv{KsGiRYcOdDlptk`B*79=^ zc>tSn8Xn`f4P8bO<_8wKENmLjEh3s1fCp>-(|H#TzRR3}J`b;Fu;w*3-09IixnX=4 z&lm%aEaZ>$dh~MDsO2e)gC}~m`3D^XUGFIR-u2FR^;;vt`f{3;1|9hBcCUpc%o$pel*dP z@XFkFD+h~lin`By4NPch+A4kOzayp}u(=W}P0LV~n{&Uu$fvpet2GyPnh04$lR8iN z(W#7h*9O34WTIU(u9~m692Net!N}l!EW(jb4jpKV97&5eHng-Uc+Ks%=}T7Cf@iYm z6C{jx&=*>omj$CvU9&^i?AGyf+_kvBXnr%i^5GNSxp(0mnABZp7B;8d#Vh|l50d73 z`iE!>jj5x^H5qcx&wXeOo|HGwiJyH{zpDOi^l9m~Kv&`BSUxH9X<4LAtOKK$ViZT|7+Kfn3F2R~3oqIdULI@XPM1`^e2cJCND$O*(- zTF8Zm#SQ2@p-Aiuk$dH;tMIqKOLB#G!4J)RKcgLaiZ%bF$KV+{^ankL1iZrWyxWF8 zcj;$5XRIlJ4wt0YhYHV@Uj?VF&>LOGt8P1$CQcd~%1P6ogezT(Zo}BpiaAfMA)8%QY2 z4@-~#Z-4dQHedVt*Go_Qe(5SNl7x1H*NQhzkT`50G2$ga-Jo!!pEppKkjZNbr{|Nm zYk8dwB*+JOF;ig{fCFU5+~$>6#)&O2R~={Xry)zf>)nl7x4OSh=4K$_6C3x`hHM*1 z6iK7(u$9~t|M8u!tZ({7ogm>^{o~D>RX5~Cpmd?{#Ijh$Nxx?xv3i!?PR;CQ1B1a= zxtB|Rbu-pDi`EVsvd%z48)BfPPqOz^!m;_KaiZ>(&WpedCSEs(sy!+DQP2PUXPcL6 zKJ{Ad#b|qlt@Pc8Hy`}q2R6U{xzBBW?|=W_>I8|Ww(~r&RqQJO06+jqL_t)gCZCaE zvba!KIqa8rJa_Q)GehIwe)$7Pe4omwB;IQZn);`}*Tt3>stn5j;u1m-mXU&h#ew34d=QlCLVMH@f_1 z8c0~A;RtaCeb4ED-4o0f&hj~pPQ1@%Slsb;%>y;~-Bpb%pWA4~K-y}!y5OM%Nms*W z;b}z{-o-!y-otLmQv+WCv|)e+mTK^C)If?R(8|#RZ1p}Gnuci6ss|(uvNjJ5QopFr zXBg=3C^L;nyt+1|yX+dxwtn-kUi8O`SBI;lMyzj|OS%p?d>92Serr0{&ok^r?vLRKA1{LIW`I3Ux$wl5dYIEhZuzqd44+{Y#pJ<<9_+U{ zZKyDm&~}15X_H5{%tdIyBp>mfwQmMc+PF7PpI;0nqJ)GV@ZC@Lg2Gr_lUML0fBx*m z7f`32^9KX6p^rAYO1f>m?(5n|56y+#v8>LE?E&f$aItF9@{K|Xc$UnGYK;Z?dlOQNn) zHb>E1@6sQvhojWpig>$oAniQmyoh{&bs1CX-NsXTG~)#u>Na+b>B9QR*cvx8{?7UJ zJf`MJ9NidBxH3LlES0l!UiNoRnbm zIdA*J6&>Bei@c(fSm4fLH$w><kWB zzk#VPN=C?xQw*K#5yOXGG%Z+Z$pO4%fx!%&u4Sv@(9AU*i|pVtH}lwi=Uwm#5B+>$ z^K&DpA7R`tYY`Yt@>chZ5!@>u_j=94$(Kzi#tiruomLsfCpO2XiNV#P9v@B)3>xr1 zJcbAV8S^|^2F3T(8&ArMqQ<$@J zNWS=kZ!Y}e;|m9YVLgQ()q-(0IcN4|&hmfxU^hEObQp4oVH zLX?;HdYxL*0`=T{t3IY*1}q-nW%`Sm2lMtv zj3Qnr;|TsM3?u3!i8m{}gtF42=ogzuO2>WXnP<9h`d|O)|FU_i<^4>p*zw|e+@;+nuaotYnBlM6-&~>kv5b4#2bnX!8uGBT z4gFoWtCE(MFL+0vp^tR}zSAS@!+AFEB&%?P=WA;jQ>9LLiQmX`62Nu3=!tyk$Z^Jl zS85&O#oDJBd#ghyRh}Mmmwe>cZQacQcUs&5@V8vhu1?-^q+J(+ZglxiHIUG72qZ^< zGYBC%4UYi2dNNeLxG^x4u|PE>M@IDt619kNcQvw0Wg!_Oi5`F|jV(gy>R+2Gd`n|? zUm?fdq67g=!GrT!;V1p-PwHkRGf~#TzXaZVcGXpXF$`@rjLU z*sT8Go8!Q8@)r&t8M3JN*L9rOAO7JVmZ8Ldt;N*mT9E?F zQuyw>?&(Eji;x!5q|F6aI^5vR2@=B3z2Wb9=8Iz;|&MHgO$wl$sW=fGXm zKZYlKyePi6I{bOcg(u-l+JkZlTgxqcf#+)*JsGTtIwJ`S$?K!J(-uQZORV;{FfaLt z*WS{9Q$V!4e#@^GvH9A)1!HlU+)9UT7ngk8ht?DAtkQr>UMZ(ETqYjl>GWTHx3Z)> zr$Zl(y^^#r-q=>HGS8r(2fmAx@**5H{*3(9_vN_DO_#hbFW02L3jUFDr!8EBKCp-M z6jUDMQzba2`&@;RoeRZ9BuI{$3FELGXk1a1ioV;I9G)(#})X%aIRbpfQy* zmRi(hY`{3en9g9r0_QwN%csZAWdXwCCkKx>bP2OyAd6;yF#g@J^VB*+ZD+q^5zwd}}K-Q%@SN#HkG z1D86%Q+b`nU-dAD^r0DDgQlH4B0c4F z-|cAWkI0HEvYxcyxTH&YN9a=L^^j_hpEQBH9{!rP^^DW6`pk>{@nJGFMrNEG$cN>@B^DTe!>%$=QW(+ZeifLgse@MZuk#;y3dIL1kjuEtKmvc1lbibrVe}1kk#Xiky+E`$X|*l< zw|Sm+rd~!mdeDHEw=nvszQveN_f09uh!hN*Z* z)Nf0$pzxgZqpn7TEc&i~#JeBmDE({UpA)l%lP6)`+Wx^0f3W#4_0r(izW!_(nEtp8 zXdBNqpHVhr+xWc3Fp|Lkx0Zp#sIxa;XJ|GIBz&&qgn>lsym!=Q>@bjc=#fYJGv&9H zvB=n^P~PHlF?4GnQTn4@2<=h$;BWQ2r89Fjf-A7127h<`z_#|f9@}7GiR^mpd@7yn z;P1aixvlr~i6u4tCt}pk4!0EcgxbKlf-f~IGc9dIRbzqi*oy={&11eC zndZYI&s_3J8QpU&@&$9VyLGv4_VQem{u^EX3mHfdNG=T^f;tPjMkb!33Eq)W{e7@f zYJAJaX#{tc(S##KsT!|SFg2bQc#A}(c-1|nQ-hbIY^Qc#Ar(_$hX$pN%+Jy&(J>aE zG}KC0xHWJO89*wg6*U%1z6<+&EnvO;;tSO{>$^`~mZ3B&t8er^R*PXzKmF9^)1UfO zfB)3Nq2p(qnDM{^_xIaAlsNfhqZ1u()}+fR8NWb(7of^oH+ZI5J9R@x)@AN;6wtcx zDc@Os;Z;Y&aA9;R6iQ)~QF(R;R%KEyozhQyYNU8TX;l_)E!}s2EnY1P4e87x3-RGn zE|oG2Ty_hb5%Q*`@{YVnE8SPW`qeg&_{vxQOD*pGpck&dS}bHy>zjZKB(f+N8o=Oh z@WbawRx$%`!Vj@2bb~$BsfYvaG~5TkZ&*;uxhCLh(|-)#vHaKc-0aVX%84f~abz|y z2@lWKab!0NhO;WgjD*`{;ChD{!~8Nb@Ibo_j!if1n>=$)4Et_ zQcM_4STuI&3-ke@HR)$sgD-Ulw)^t(ljjUCv^b)RIMszO@N3P7Ti~fEwvkto7Lv1Q z-DY%6ZYuY)`u^6CFH%ad=Y_BQyDpD&A$4_4ieE^N=X|YlT;W}0c@?^COBbOJ?EZvi zhxH&IE5R)Ti5-uw#oa-^UyF=x;k+q1aA=IXXhDL5thstzt1;XBAfFjvd|*r$X6(** zZo!MAe@mBec#N&|dEv%%<2NITAJ-AR-rV;Lo{OGeiFyQ{@kl@G_i*0QnI)wQIBMBG70Acduz@#jmL+`9N2)`jtc`WFckH%bRanGTX zUS@vst} z81l*|J$C_)5L;4DYkgKHHzTh#m+(xYQ5dvx}SgEe!34!i7m2_~30k6@JHJ zx=F73&M|H)fk$%8*XyANFa z#Pj3C%`VTuH^*J+z4H3xtMcPR$_nqCue?Ju-*aFSzNRJV*Wquq=L?GeH6VY#zLP=t zw-SeKy?|2>c|ooF_d+%L_tE#kK|a-0Z^+bU%*)=`u6nm2Y0c%48kau&%rl$MfBtti zP7d~xoKv8>UiFWakMvF`c0cQ5kqflMm89gh{qejXwgad(((UA8eb6rbdG6%B&R>2* zrrSV*##kG(YktC>wvoOe>rsQx0|z*1Wn(Qo&)SqRnQp*O8*706skX$gF$f*%5P#{O zuJkWJ8o!%zT{nwhtlJ^DTmyOsFB}anUJGXlV62`8Q$A73b@W1#kUuhlgCqJouh|=k>uld*I8hwnlach8#Bruq) z3_~7dAo1QOHxIqz(f%~MFdFnWPfREsS81}JGuB52&ApF8P76SN0gN8Kqf_dgi@`wp zInSN2eqk+a?MpFI?$_uF+YYK|T|}_L3P<%3c)#7-sf6~PZm&n zk{Bo2OG#dafzB{o*T3q+@2wMDoE~|9?Y()iy>+^3kJ=R)rAyxmk8rZaCEk7Oe@j^U zOmKnckMVOcNL%(EUaI|vaf*NCBQMv&n>oGv;N^3un8%q8yh(pjrkj-fD<=C!m;Y1) z3B=8x*qDW}JK~CuF!m=amPV2{Uv$I_AtJ1oN~!TSv~SwnRVM=okAXxzv~u8c6~w$P zd26tfr*^m3?kj$D45L9Fs|D>v8Q>TL%xFxEFIY@fWDin~@w`;DC=&(QNfIyo{JG7G zj-P*F3|K=!tWKtIQjqVt`>uMcs!o#l$VWCG_`nA?PrmoPeX@jwtB2}H{C*>*%5FfD zzfDey4TEn*agjc_H#)F^eq*T25`_y7Li zZ@&EHFV~w--|j`!E!^#w`siA3O<7Dsm$c$tkwf??(fMYrJjEY#Xy?Z7F(?3sAx^`6 z3bq>(m9oy6Uv2u2;X9P~Ovl^h{#ZG~7wuwrGQ+Q%#-~XO61Ku zZInX8wWL-XgwGLv42+V`oOkZUx%7o5sTK)xnuNt|moUnAU^}0M=I#@!TupyPXln=a#$ni8or81K(caD&4+@ycc`;0Y}cu zmCB!toK|C}^s$HYzgXyv<$uw7q=TI}hoXBQJ1d49xgQZ#6c?NP^)(#&ls@_=1yXkFm?Rixzk|b0~|2^k@r@j2mrA z=OhWbyu7*``YbEFH&i$~`{O%hVkM3G+ao+A!~9n4XaqEL~=NzjZ83 z{q!e4?UNoDG~f}QnE&COIdt9BT(IVhmDYSsKITCTBz#iB9JA*?#Td9b&-m;F2|oJ5 zYj|C8XcEVz?&o@&!&7cP81S6*xyWLl0#Whc$ey}ph!7)*#$Tf*I?3F9wH82@l*>tz z&9_Rsbv>sX&&ikXir(s8n<1C)dG`}-#FP2=Os_oYv`)47#y7sv{E-h?Lkk}Ei5&}1 z;8h3bapBK-V6O(udGiC8`cZ!JkSleMp1HjxjquxSUYwH$;IFnz-e@{cnZdi1$CZ2X z>N$Sk&^zN^=kazkkVyTUEa(10Gueo|%mxzDhmUv|*@91a#*z3I)>9A3n;)LXPh9FH z{vkR8%Lm7;;X3dNf1I+a?621w(Ao@sgx)z{VWBr!rfmf-;qi}!C;qMCpE~`#E<_&g ze`o$JBGA;#;oEiS0vK}0kaX0e`XQHDJBg0+{EN?bof``-)f$TN+7b4@_1nL>`N)T# z*}St(D!TXHds+@qHr7~%oOtehDs5zCrU!vLjlff$50_DFWzN)K*u%1I7xEVHm9h!V%W%4OQhW zD}nm27a<>h$L5JLka+OnN6OH)_9?17v{NsM)kE{W7~6PjWN&?~s-^Bkk+9M$>CNSG zf&_kd+?M3+&4B9y6qQYPrCXjwDpl2R`vX{BBmIn}@0av}7-b**11v4um5IG3#etP< zzELMiIJNxy-~Wfr^UwWs^ZF}g)LsT94OF^sDWpoiGmxnM>+#3mwfVJQ`^@HZpZo0Q zH-7!sdmpODr)7+SJ#sSZFX)`hr%WfsVJ=x=Itd_I^R#cS(ofpsRYG@eG&d^WV+5}0 zIl}&J@)PTcoq*)-oHoF~Kxj9&lEE>5t5#a!=3HLfHrMnS4Rf*w$}qwlY8Xe{HTEPc zF}Xrx`qj`o`ni$kh?m=#^X@1i*42WROE^6G+>F23bMS1eRvi5-xXKuU?u+%eE^emB zbMW)WzOB%k(}lk`C-qlO^^Gq7nFbOqm{m@TAL%+ZUCpVw@wNIB- z-^Vu}{_uzUxKB87LC2#!Sx{=lS-#a7>8;QAG*K4E4QuJiWA@bEIbL9M+_uP8sHVzh%8Wiq+tUuf!jpF3IZDNxUjZ%s&v;WtzmN&5#chl1HeK`)6d8W%8a@Va z+Isi@OP=X()ZrZNSwEffc#aFsJoB}@E{pMDj<~@6p}a1T{04&-^=l1zZ=kyzu1Is< zbYyY#uNP)S`pJ@so7$xut3sp=T|~aX?p5D}^N{>&C^yLuw9t&-=)SY&BYJT8$QxZ~^qE2Qq8(i0FI_wi zK2A6X#vH@^f(;?kO_znK5x*jSmbq<%gM(R^2oe0h5Ro*sbAn|A& z5!?&br59BJx(umzX~8o(VKngVZ+(07gZd-}BLcYaSiHQ;t1?+$h#0yj9P&nk z`d0s3Z(NmJpatK2qEeZ(0qX?>F8t~@?~H?mdwq#BUk7X6hd1QX=QhYF*}_v!`v8ZY zoUp-=s9%&Q+};fCwTi+Cu3d#+)NRvVG~pG(AIewQ9G-ejy`;_JtGeKG((KypjWv)s z#Fn{SYncdq%ANSgclyuBdf@rNo3s@|q|fDcY0d?H#Xza6vk;*xJOGHTG3V%j>v5`A?koF?4 zIp6s?;nH$>UXyYxd<}P_pV!mR>rKxh7Tavsd`tUWhf7eB++$N!!ZNOsmC?76YiY6` zs&2g;_guXg=X1;A;5G&`itr-b$3OnD%_r;4ZR3m08*^hXWU2oiXUgw!q!P~cKX)M| zIoq;~8_y#wdd3c*LYe_5V|Fmt?hX%Z=+?|cA9Fi$uL7K?Y@a|qtPN~(H1wdNr-66tYNgC{2t2ZO?d55W-`_%4gV+6dF1@+w9^-E(F4(^>-R+BC z`r_uvX~8bnfwqjeA?yp##N0A~0h^JS8mu)CR3AqdZfJz1tzb zOZ|fG+g&>7Y0OnK!>?!c`_juVR9)jK1EuO4@u~Pwnp>Y9aYxlD!-yx|`~EhRxUKZj zUl#AW7cIXUq9i6KmC$8vaJ;N)jS$c2m2D7F;a#ug zvwY)CKcl_q$rW5352gaNvu^)OKA{in&E{@q+HW>qAENh61Bp~n2HY8mxWo(J3T6pt z;3))cc%b7h!S;C#Z;ISgMiLem~aUs4;9i{1sd` zl!c}VS^}xM;dMA#J?lieJe9A8R@X}})WS}E5A21q@O!XVKv?j~2Y(bnM=NQ>cml^Zyp$YD;ZQ^eejVK9 zI$hf+*TA8p;^q!V$HX|o@wXQ0D4^a@dbk$+?y8eAl4eflep}zcSCw5w>^d9+^iW`v z*Gz}B6kdyBz6bj!fAXiBFMjb0o3DK3FZ)>~vLKs<Y4*s`%N-_j`41D>;X*u0`c0q~Sm3avPg2JY|@3){Ay1Bls^+Keb1GuPP&tRqr+&K^& z02!P;5OE@C)T4g*;#`aj&-H&IgPS4XNPnMlU4%1WZy88j-%5`ho;TMueCqkU>2JZk zy*RM0|FwLaR$8!uhbNab!i}*m;dE}gFg=&iBj5PW7#pm`1b#O7jN#H+#1(G*bqO~% z8@uW9HiP+De0Z%F_Q$v!Js@R(XTI7Hyp7mvgT5AwIXb(O+{}5<=-xao>CnW%&3Se& zojH!pax{JKd*ADg{O}jeT%O~@d&67}mGgosT2fyrU+6}og(aWZaFT>g6!q70$%U`d zf|r&7g*y7)-~avQ`~UF$HXKn$^KPR5C_|s26-Fe_WI2-@yBOmZE zNMMZOL_mvAaJt9{hnBfKk)6)F;*#Ik7#OmaH1ZS97nX80y*{x~;lV9V{^()2K?d-^ z{J!zj0vtXm(*q?-_tZ-VXlWQU)|`^Yf-VkTuAl4PH{io#JcY*z8w@2F-_PZcAG{1B zoUrlZl0$Nh#*{PoJCo(-A`*Bg{fz5c-5<(VSi)^(PX*Y$KW-KXUny1*w5KjG`N3Fng) z?UkIkJSV=}UnR~nJn+upc&vX)+nVE(uk^Ws16-~df8vvNeqO`PFqeC8^T1{v9%wK8 z$QAn5bcdcp;cFVCzZu+m`gy%+UN@^X-@?XqI6Ae+u8X=8@1->|$*@6PiX)pz>%;)M z(yMjEeb+M#1#^FWVmPM-|JHB*Rv9PO`tDs`MkyJnw{ML>+6LEaFBL952lrglV>Iii zhVZ{^*0d%z!yw-3#NSg==0< z+P15T&&D0N7)RW>GLBG(!3EA0{2ejPpH>3OD8eeKazdVxy>$Ts=FC5($ zE@O-u4z5wm-MHHu`?aUhvQmW5>o8@|d(uFHzVq$U3IFpKzOea5=_o$0!Kff)@A4UQ zhVglgae{=t_suu<`EjESB(TrE$xAQAKw_*dj%BQBKlK8nP1rl`yt_ZG@t!B&zj>fO zwb8~C#mqLdX!$AG!nta@)wqUUSOIt1N2z%Ap$`2Ob9?`UkKcpmLkebnUPufg^m7A$ z|2D9iLT9&R!IMkBID$v39w|u!T$S1$R?$Rr^+IfsQ#8`QUaM0<#tW%GsQslEYoBSn zh(ssuTsxg|_6ZUdbce*{$n%r+LhkR@Cw~}7eBu)yYn@kHWb8XWO+VVH{!ah26`n>g zsB2{PlXB#FaAEg!>ja4%FRsVk++SU3e)=wdqmp;>1Mi#r)|=RQ%u$*7bsWloJsCo?M8NHt8E#{lq}R;@MZe@|DdOzVOA(pZ@8e z*7sq*JwV{98q{&m8^O|X!5O@$%n1_dFdOicpHVV2=WZXEOkTvHWp>B#&M>FlukoD* zdy%+fbgjeBoBuJmHNK0`_*Q^jm+NxN1CL93*J%U1a(6ytl2|VA(woF-qvV^yL6NaZ zp?y49$6`HD&)SQH^!YOz(n=E-8s@$MOmNRW#l@mKWrneYi$X)e@fJbwZgEy0-}En; z!5gPv-aQ>}ciRaIekJi`_;X&Dk^BZHDeBiVm@%`w0=inD&Xr!h^|-iKWBWWX3e^5Aw0A{~|e@#QUora*(gZlw;v*ex;t*;kTZD zH8`-Y|MSXCxC7q!m@(40Z`{rzuW>eGtudPcFk?qX60P&r*e*Pa$USc`zp4xFPQQ%n zXidC(W42Qy7(ZM1f4=m5N8K8;vse*2LL+~RXIa=aV$9{RsbG$PKAX|#rE|zzda&-f z;LAn?dg%{2MZ#t^JtFbSDSe*Z-!RuhW&O}W>OxB{<>KaY+8nvRjwi*F4}9PQn|Bm{ zn);;-%0`!xhTi7>hxNVb@0WqN6CdbT%H4b%6REz3BYc%VzCZQUQ`=KK)FB>%aW9|D z>Av-?Z}q$mPM7#~Sv(6D&%tA!%B3EJNG~UopcsC z%RKO*Di;F>n@@OS<7rgEj{op-(u%_-i_qjsJ0XjVci!t$C)JjOb91@1h3|alJ8d9= zPv}W}<1O5AqXc<6|G1G9;X$6SwLj;Vx(T28_(wikcdv5e54gG9p2N2rZ6I-owv-Dm z(XH-Me~CkXWH99?v$>LnEQ{x)oiAacmS~S#2ku6?(0mpRp)>IDlP>Xjo_#zdD=uv$ zJe^^34{t6w!Q$;~Ac5!Mcjy4SrXhHOd-jtqVR>HTNc@%fa59qc`CI)_cpzN9{5jvy zJ%@+BH66#o*Kjxbc|HBS-t-iU54!Mg-8K`xO;iAm5GTXdRmVpDFe24IxTGPQV2r`^ zrq^C~#J90y=pxo~pML87o8SD6-`srcV;|kTr^c6i%J}EyWjvD~gVOl~iI$TsA>*bb zXBFak7q(yAdTIvjhprG@qsJlR`NRf8A-taX)H+A;=u(ZlKAr6iSdnmfSPyTSE92t^62s_2p5OZRcQ$|i zpZ~lJB)(O&)ae?{A5@R>44e!k>XYTY-ZxH=uvXtERu_pW+l?}i*xXj~Qhai$?-v&X ziPx(yeY5)1$i^^`s86QU(f$wD$!kuKxW7&mqvg^5+EAkW<{@89;q>XhVr?5pc;5ES zRX?qtmJZo3pMvebW?$nQcjNag1BqW$9@{lb^}jSla!`+b!Q`I1z4FUFx=J~1I>`s) z1x7bsxc$)&>(sc?iC-yWEc-&%*;>vR7#Hqelo5r`+LXX_p0j}j%{VBTIV%BkzpsDbJ~mkPX0|tht|(({V?T8^sXc$bQ*Zn3rapA61IV$Ml4w9u#44CRi=fwA{)1wetFk&E~ zqtaPgWby`%&JvH*LtHwsJa0R~!dd@K_%QNF2Q}nEo-TQE?k#9h@Z|rufBUy}g2b2l zQyX9V+SePVvo3B>kh2MFanNFHTyO?&PLN249=KzEN=9xExzxj9CeeZ>+W~f ze(GwTmyb5QN`2A4#FiH)>ErXakYB_Ys53Zhf)+Zg`{qA?y3kUZO0}16R zDW7Teh9$h5B8c~_KH$VxGU+WlGMRFx9MWkM->=V_;12^LIxM*GAZg^1yrkpS&m;8s z??vH{V>(~VoS%F3lCtrIsgHTXx9e^}FFxt?IN97eU+z~Q3N5J**h63Zlr8le+LdvZ z*VHXp0~s?zbfNbw8fH3^CjK0E2oL_@qqe1g;fJSzhXcM`!i7mE zO#c{OF=bu_ujGDu71cendZo-F!fA7GG3|g-t;LZ zNc;HX@7jFo6QA6C@{^z3eEL(LD*f!?dSR|kMJhP)Wc#jq`Om%0(A`)y3Ne27_=9?5_x+`>TGMZsqS+sZ7uDcf z*TipWvX<0iQ1>arh_QN+)@$X-fYK%%T_Brv-EZhS3UBWTG;c;8=~Gg#>8IxKrfs3A z>8g8SZ9r3Wp~qU54Shz$W7E3wLr?cvm6x*Brd#m$4&oLkTIylX&10zjjEOH*l6+!= z?4X4K!8gmO_0RtN&)R?e^JT_8=A`3*LuO>)CP^VL$a2z>hqfW zDPTQ!d3Wic2gN|53e^01y$nv;K%&~!>-EV9^fj8I*Jm_tzf_-3x#!+Cka*8~-@m!9 zUi88jGY|2DsVyD7j{+|owAD+OYHhP*Q+pk4xpdZQ%XgPSlf9LehpALsy?QCaVFQT~ zsZ?77iKSjg`NR)S3~3z2=`dyP$DdI@!&>Qee?J3?xe5 zmaOX0{u4QCK2~U8Kls59ZvOc{|7V+DuM;Gmdb&>BsJ2ITwaYf@spMmvtu%!fU0c@` zHZTc0DGs|h@wW^laN+tna&VlW|_!eOGxEe(@a_K+n<| zVCsI}2!v2L+6_RBp?-!HsK(bxdH@#pMh$E))Z!J3zn|5DN-M=RAa&={xmVhv^}z=p z=Qw~;^{+gEpFUKvs z>xIxo0i#67ONU8WwNPo{%2E2l8ArG*E?IbMq=;KkW*p%(9mW!E4O(G6;iaS(Y;dD9I2*B_CcF61 z_oEEE;PIT$_~I|e9d4DEgXu=5Nhz+B8|yN_cO0iW97=KWAF{T_a@uob`81ffble&J z`i?VamjZ0mlQlG6pKuj)%Ru4;S1uGVWcUDYk6@YWf$ZM&@_VG5w}Q{dfpz`Q@^Kyv z(o3@*-?Lx=hxpcC>mI!EQoQlo_hx9)Q{8g?yUJ((!&cbSLj8nIRZLu*3-@18}rRAqC@bN54^>6c!Z(J z=k;t3k9eUgd;`4yF9xthWX6Kp23om%=YUPG0Wu70-Rb!$}nk3hsa4{z|eh zXYi=&7)YQ^Sjqu^a0b6;4xCGVfy;AnME^{9(^=_rg2bGkIG6hN$q$QTaWg$mEPSF) zE;QF`URKe2p|1SkXbL?SeO${%;RX*Ey3AdjfS9>rXzjcz4cWpQd`FKtF#O`Ro0J*n zg&%Uq!q>3pg z5-)C+NpLfax^)OGwB2RxO_a`i+1B>!E=jk!BX>tQ-(K7m-LJ5-*)h{H=V(i<>~ ztRziv2k)FN?GbNX;dlJBF=>O(eOz$mIsQ64&xdeGb1XdgPWMN@?*s{(x_FRwBHy|E z!6Q6z2|MJ6?n7~JrLdD5XxEpz!Q)+?;amLCMo-Fhr|7P;Hlh2??O_OU_ua!_Cv`-& z<&iN${iauRmkE@E&Wx->o7%=F>FFFVwg>Uqcv4&qp zCjQXebQgh3d*Dm29mPN*MhFeBECs_bLVw{C)n1IdyEe{yZ(xbXsV>2SUp?lMUcTYI zB>EX{n@8QxvJ=^$4=dAauUWrZ48g!IdQ#F<&2ICM7cx?NgN`o7LZh4qeds`UpPnET ztrf>s0Nvv4b=WNQX^lVmGbbs3t7xh66pVa0>A$ zNRYSIT$*nqProrpz!c9u0mGn$Zb`0?=dY@T`Mna#ia7yqI@vGLi`m!GIP#xN+>S4A&w8L7N|vSZNH zgkeD4>_X=94v1Zx=UWC6gDcnTckZVyCr{NI5pLOE^#5V-Fm#qc81wGA=kA`PdI8zK znzqw@QME64s<-LB2dXYjdzJ-8($puk-8LcMHsDM+;zu)pIu#7F3mr z($&gNCoZ~+jvh=F%|k=9Aqh>l$qIL@(WN@(>ldZiy;1|5QzV{$?&obR@zRUWcLVQl zpe_TO4N4u1Z`A$9Kl=5}r#}6u%}448B#VcRXcIq-GA7Hw$}psB%q}ER+**%VHc9u( ze9ot4+~8O`in;U9Nm-PmTv#-s+)xj&W}% z1Bvh{JiHoycotlFj-T-OXgH5M26qhad2qfJV6IlVW;}QjzQmv7x8*Ll0<3;uEK&tV zo9l^q`LpsN-95Dd@xc8LY};|HLTyZBaSB{7^psK#r+!i21aI1T^2!9!bJ~6;$odR@ z2m^^+!nEgXkc|F3J)E3}OS$8(!?(}5xlI3j(tDZ6-xkT#&B^*vGWVsmEe|v#2!a3^f2W2A~iH*e$GTar>^JlTlc>j99Y-=!FGBIE0TUK ziwTbpMPQ7x?&-NU!kr{R_hsxzU(OgUjqz3YP3M*-X$M}iJH~orvW;M$w200xYdXec`3fD3{uMZNWdi_jUatjtbz(6bAMgZ!@d$j+ zm8&2D&U50-pUoNN zfFB8$51Q34gBWy;#oWO|c;I9h@ve72-er@B_g|A`H3%5>}=aetc7r_TM@bPCn%B)@H+RE?(H1bye zLk5!et>mX%@zIw1HSfd;bCKWmm3jxab1eni$Kc)u+@PC7Wm}Vi)|uX)gg>Jh|s5|2gbXc;IFl<}}B`XP9I6aNBfbAYops zZ%!K#w=R3=OWZNMfjce!trB-~1MT`zR-&~hTQlEM?>!h)#O`@V-)Ol*J|hQ)j~-X1 z@k@%i?HebJRWH}+!LPkhZ)Ud<#4qa;5_h$c#52!)s0<{2ck|)esC=kiiZhmvWAd#( z*0@zN!^v~BmoYYV;EBF;zkl5yZJGfvjiguQ_x!j@#CwCv8UUVSw?ZigLjlzXO+_hF!tU^dyaS zwKr??+9ou5l+mT{3JjY1l4s+ux?FI>Ik%4qbfH8aF=!=UD7X2?ANWriNHEa&#y7sP z`A_w!>2KDjrlkkJWZCK9a$S1^2|AP92Mz5jE7{Z>9g-01`@BAzDM`HP2IzoeTYg!kHZjKBd%9oex-Hj zSE{|zLG33!{7C7qa(NdukWkvbx}3{>hsj}^3&g$G#R%xtqRVI6 zpMUOWo9CRMR&9V&l1oLe&vMj`FyZL+o=a6mZ2-1c76S=%C-0AZ`|quJ*L^jIuTLaZUw+5ZhxfQuqBQnQ#~ci@(6{X$D=hb&^&+QB z#@(0dQ?-44e;Xbyy3{ZVLfF6oPiP$TF(sPtSA09=7 zNBG->;By#A5XGGUc86L5x)b2)fENMP@FJ*E6<7~)xyQ2}?3Or<&*aHwyknIttlf22 zy+Ks?69Hcn002M$NklHJJ;*3;4cL@m%9PV2eq0NBz9nVw*O?UR9-Q&ufd}v3JW)mwpZLVbH~-|H z{Nv3>KJrYz)qQW3lM<V<*;;8Y+71~=%$>}dt~1$MJUGqG zxDUat^E(7{EG&FF7Jnt-p=<50ah_Gaz#oGP{=nUA{;_hU9H*5}+#EmGXYeLIe(*MI zJ#_CdiQtSQ_=Rbe{FwE_Q437 zooDIwB_@~_6}00VpCyc9lsu#j{$u_O(|N7(?63>`>{EP!gugPNgliJ8soX6C_4drV z-Y1X~w=-;g&9WppmXY$3UYu_}zPhYaIDI7VUyJ<*h>W z+=SlXjs9HbBTYx;b*#S(eb>@&8WvuJ-@@Fl`Gps~xLVY4REJy;)Un(EG}@uBX81e(~^_^hVo*7yWm8N`J4QG+JX$KxMH;*YZB}uFE}#qdEN; zTEwA0m$1lacmPH{lg-%|o{I#Ge0O!crUUNN+(qHnxX^OQ9Sfgf<((_=@dFq7_~H^j z-;;}MAkKV-L%Q&GPBX`;2YlAHvYDFxCvbc&^n{KPy8B&+=Q-(ikmK%H_!{oeGu%$T zoedV zB6of2pnF~K`+e-Lrvcpz82(6n6@K?~I1M4*8ZUh=#Mo`jq*LIPF_z9}JxSXZmeYon zf3AZUj7}oGZY>A6c{e}lSlBUEFE8Xa8_Kdq$>m+ zr=DMbV>;2I=o7}F1Kb|BI{#WnZ-|Os`~VeryZ9ak$vb_?rz3=+1#T~m%11wgfB5qC zXTQ1mPk&M;NPPR-jc>s9ZKp$<>yUxO8}&&J(UA zA}_tQ(vV4p5uH!Pk;xy{NnkJ4ORV^E-vjq;9xI*ro;q2fWupizuy$8sAfcqAd_`Ab z%rnG_Gjgf2`71yt&^%Yhz|Yq{(aU8Z;U(MGYfbbQ)t?~f_PTuFkhXb8wGa1~im`Cv zZ|x9mUSq^laG_hdKl;&+ZvNm8{$TT&&-~ivkw+h?ws?2zucO`z$>NYS>My0QfUY<( z!<`g|T^xv81`-RSu9K$@FV{(#b_s_*z!=Brdo#w-!}Q(O6`XqS1QPQzu*S>rLZ*3u ze#D-xzH}!SXv_t-e6+jna|DzVuP@ct8%x{Zu*Q$*ktt{Q(hI(ka{R(4e>8J&&#qr^ zU&6O}7fg>s#-h69k+?bS&2%3=-ApvUooGFWfy5|o1k{4PO6vs&4X7K@)IcUd?gm>w zqtR8GLN)MIs%puexgO|i5n~(|bze8sH)>#LtGQ~l3@Q3Vi2>ff12=wXouI81Ycuz8>qKgW>zUKGXiHd+8zBNdt~t|4Ej3-55bkK6aWH2k`4 z_>`mTWGSSuz6wTA7MOGvIzl)sm|2)}%&18ph14ROH*P4uTvJxGG+j#vD4&^zbU^%0 zvlvM9!-1czWmniWXKBQK$;mMdCXz+{h>VP__OZka-0Qwk@(OR{~~D*!5-to)xv)$&+8F( ztX#?awDO6|6+EfWJi~JcN5fTI+TgZ*t=eDkHx4qtd`Db*3QrUv8y4D+OBf}oaV~A- z5FPT?KKNUDE5Jel+@Xmgqz|MF&5DrwEX;$^PUFijF6B>IgeR;r4%mhL&>RfGIp?#5 z!Mnk2xnGt1FHG>k1c!R4l;~iB3kDv-KTzO}#ia1)yoduo^ZC4K-*RwAeirr>Re3W|Y5(kFg?PM9Rj*xNh;&w|N;zGm1$ zpB0AQ*`1Z&44Zpt@Q!<6}N4#NtPyL{MP(QejHd`Zg z9u9LF=SetW$P^i)qqr<@;*5hd-1l)9mwn==b$$M(O$S`k&51_0LzmJ7uX96BaO# zU`#<;`f2)D){S|NPXVYe2`Anf{K6NfMk|i?!*~<9-sHRU0-lpWrFAZ8xTgFs!UEL)Hb4FZ{dY(RookX0d`*lcdrYm{fK#ZW&4t1o-R z2@ruN61g5apo{Ay(G}b6x2u1?CSgJpX+4H-GatVIZ+XW92x(Ms){Xv+hw6(9)J)Jn$1c z=)|Wh`K?1775+m5iH1?9`qqx))smH*H?#1VXKjxv# z9k=PzjOg!0oqErjKIqX;jM<`{>K@1b8@f4kn1T|9`bIun=p#%W)TSdna|#>P=_DrU zv@1I01w$$N2~OPyR~kCelF3u_J3mfUfgU;bNbMqjJpgA|^VyF>m*N~B4-eW8d_HJ2 zf5+(E^yK45$CQC;f88jv0t&RQ#7zaQAzVRM$VUx<2F0f~B8{HoPYn*-3XV#=S*HZd zV@arQjxDMI#{iRKNCkg~#u-=A1HsvdnHW=v^atL!vLTxu$R)mY?LF9t%?`bWpuzJe zu*gja;+_ZH!$S<7)!}iH#M!fFbbQi9og|@wcXZ-uoy@?Gqigoc!tc4~o~?fNCw~$r zN*p?Lu-YpAuHVptj1%3_ekoK5CcaPJ#EEUkrMgG#Hn(SS?oskgkc-qvcEta*JV7E8-SUCT-xI z4n@X2e0=!fht>c1AOABxwegu23@@C&P-D#jFG`(n0OA8rI%t76D?}_zp|q4yopqD9 zpY6AtIVAmHgEH?1&-7$ICnXw!vz+Zu!f`*v5Akz9(Ra6K>C0hUSq{bJc(z+Z`*2Mj zs;K3LD&bsAGHBCGI$3z;V#9^Dz9@YF4DE+DV?E&kkq1oV$yMU?J!#NC#$o!HbfRBa zm}ij0+C1P|E|Lr>Bgc?2$_hh<}W%eG4z`0_=1;LLaX283W@z^8aR zD8bwtm*rRHouriXl=mg%Z1=+~W|_~1DP>9;m(i^0*Aw1#v5#|F+Pbx?k43!JLF4l2 z)J5uZ-KUb&bq^S5GF{;dIqli$fp@&~b6v*Axm`Kl@DX_*|CruBiGBJub%oo7L7{EG$ z%`P^onFC-b!2+Y<7*_*l`b?93aGF+!nO4$zjKPT)& zlmYO}by+w%rIY+H4&jpz@Qr~zi&;4GfM+|N!9jiC6C0eA;7=)8ygCLIhZ9T#D~Twi!5Klr2m`PgN6L2lG>QZW5+ZH-xHtnWI+yRx-ithK!TGy7^8xV@i2?f z@up{uGZL-S4|&hx;AzN>!ZR-1aV`(=5=Qw`F6aP!*9qeM23bi1;l7NEx@20x=Q`#1 zGW}}q$**+I%i*R67{@tpKbJ60M;tnc3;pGbXB^)TXQKz##}|S6F)sTK$9LXk*!_NQ zn$0im0$t+z;WlS}OTV8MUWw--4!P3K(LeasqtqAUFte=oB>sj`jv}cFmb5TZI z<^6T(Lq4;?hCcVivk}B85oCpdy{HO{<|HfcaF*M^4BD;jRy&UItxAs6a8q_IJjo7*xH z(YWl=!L1(dm{g`Pn_5$u&RuozTcY*xRI{Af-{urB|;kyWmp~@UW?7&=MezMgqZP z8k0sE!DnvBAdMs9^W<6wyilKDW@6Z{(MU9KVGyxv?|yw2L!YDDv8!6pxG%;XQ3g2| zK{n*UsbbM~C|6aE+uDd_9QXO>pM{YNr-kj%ykpP4y(3PLFa`MHv1SY(j%_dzPzXeZ z3hX^m7b8E_6E>~pRc6o;B2aw_V-V4Y0I1_<&Yuxo8slnz=<2mAaS}ImG1h0bAEO3P z&B>?rEGQX95;_;KTGDwETjuo15yrmC2_#CKGC)zJcvr#qWt2S2)UktLxj{Kn=*XKV12Y&kS)216h zbx(sHRJ!k}&^9phi3So`@m!Uu!F4UJiOP;;G=fuxQBpaz<{qpykfLdD2V ze@lErYDt~uoGhEv`qW9Ov8y4fM~XDSGT1~p+^)ZA<$-W^tm+)1fzj|wipibJE(bh* z!goW1FDQ)d_Q)>>bTN?RSr)}8fp{B69rPs~qjX&zV@{@pSNTIOWIXoRk?JRJyb<4w zdf|oVw4k*wzNLy13zY+n^`I>*kd;Q6uoy3K9W_ zVnPsg8tCTa2o}uP#ALF{B3`_;!@?ZO4tVG{o=82#PtgH`!xt%`(-$-nN5{@R%KDQ} zKCS-wpZ~df^Ub%a-~ayiTG;zmB;+6IS!~5X0y@3GXWl}Q3tyC%VB=XnxXE*r8y%B1 zCFC$F@f6|X@-CB)f}1w~Y2nH|r@1%YQS^<%F)REiJbx_VmUExq#)7#YG2*$@$KZ53 z0Gx>@i|Vu=7LW0_sZG(ATwbPwc7wzEpD>4`Mcigc<8;9K*8kw_b~$~%{DKl!NeKHUBKJc|CZ&WxkImHaSN)JH{)%Ezgq9fGXxkI0`iu6u@a ze?=VNv}f+)S!w8-aSr1iT%;ome1;|NL2=ML9-z;v} z0D=CT@L0U7;n4-mrEv7I;2;d$!Ns?quUx(oo75OcaB>6vGW|8}t!#7Uz1tpP)>GUQ z?zE18ay<~egJ=sI`)oZhI*Z&kyO^CEpL&?sNR$_t#n z;Gej=>B{jJvSw_B@xl{NJP~6q)_%USUcZaZuT8N&Ie0O{|X@Evky=34lU<3 zXQtj!N6CjzDb8!&OWlF5t@bu5=DB!=}CO<8r!D;f`M~pZ@ILx~?o&(lUWS%A!FLJyf8WMt*GK z=P44}@ZkkGJ+r3ETkLGqKB+$aKmGJ4@tF{V(eQ`I`p9^HNf! zAsl@aPV2&iuEw=_B!25;aM8Ya5l=CCYVo_B0>fJLjd+J4?HrXKViM+T3k9kqV8L)bHRx|z(*(K7$)brtna7XnnHxMF|OqWAj>@H3KZy~ zmL{)5K_mMUfB+kx!q!vlS=8m3rIRowpxZvWvZUg%AAyVVjXPv+r`#}x(YR+p;||6} z-+X%}3?zQ@&Tp#EzxcAK7j2q&nN)IG&&b|CdYXI)d0dA@T4IZ2?jael3cH941eK5p0sVGS*rypM0{R-@4-i_9Ws#E zvUQtY4(0R}jrZ$*nR-O|2w3$)CyvkvnMW{Yk&z28sbT<({I=^vg`Jvrgn@))L-}bW zQu8eoCbwqT1_2(o=W`7t-Zp9PDPESM9O1_X655x7j#!tBy&H|4h?har#VZ%9ufP3T zFL<7-uIW^Zn=){){E*Ei)#=TmeNO&@=nKOL;orV_q1rjGxBIs&Yp-K_byZn@DO{(n zUaZbs(KuPSG2ngq<(I3!|NFnMUXjmul_H4xtNc4o;lwpXL}Un{=C1>s50*!OhTKf~ z0Ps2nxt*>f%0RVIc-Naw;~Szk!)UXVrRrRLk%qcm>L|y#|44nVI;Z-DeqEMv1iE{h z+8ifG;J}}7Eq;fizrpEo8ttTnCm$|gfTf@CT0e7n?$P&lZfAbpXn#na8=dD`@IPqu zu7%eJA?=15NVu_5=yA-Je7eyLm-d&QrqTPt5@~*310@ZX7B$#h&;k(0FFnG-MkwnP zX~5SyK9AqZ4iHry!D_5FrpQc`M??U@Wd}9ob1Dd8X~>&v#lYg@4IQ6G+64_vpr6i} zPKhJfIO%{-Zt%H{TN)t8AeqiegtFPTtO4b|eS50spMNe+l6c{T=c|JUbOaQOV|4t& zJI@Ib>S%eJC@cXnAW=T>id@2ALeD506cG-k#b7e%5sfH0WbKQ@l6Js4jI=CD@s<_} zj5G|gSi~zA*hm!R#9&1EPVI^gILcl5;ag#6*|!s5_<;`=`@YbC@PF&uYj3^vR`u?? z@9KNCr&JCt{S3^Rh_LVlJn76Ae(+ltXFQvSG4zk)3{=K5HUB+8_?^a$f}1w~Y2l`! zrGzowQS_Ct<^8PiW!gW+d&{}c`&tYnz*XXM1Pho*tmh+cxV1v3cC4+hFTLDU3@E1 zO^RQc;{FO5MSof5<0x(=KMdu%GAbWZHE}`~hMsl(r9QgO(@vntbVVA~S=T?pfuWso zPdZ<&*UpRf=y8GZ4^w~tgf=qjkz{!|codxDANmg^@LiGs^`AOVJLaCY&DfVQFc(G$ z^yBpBw0U61=@oD|o_?22Vhj@4umJf$2ES%wo-pzvAL}H`6Wnfp;PFMgbr50D!59NW z4o*0LM(6`4;{srfn|nLb0s{?f>VKm-%Gb=Rw8#Ryd9x3^@o`QynXqZ_A>uT_c0n7=rF zOA>stq$zvxQ_2l`px+l+g98T~MiGY&9coV405|f$0mnELqZAAzcwyk0>Ro)ogSrL~ z2q{B(?&k?!i$e~xIG0O5%_uzmaGo7z-(_o`aOCCsf{eKMv_PiGLNzVMW15V|&%{$E zxPF{rX7&4dPD*e1QTaO_Jit)LxTqKH2_L>H0Erd_R0WpUH!b1zyH7-}d|buV=o~;JO?9LkIoY zy>%J znP;A^_Uzsz^wOC{pG0=fKI>C=+~oR=uYdM^n>Gcl@s_#~bQz!ODfvr%%)R?k>M^2O zSghBxMYCz4y~kROHnuq(8U6{Qy)yP>9hQqRgx5>pne^rn;*g!!eZb+9IKTxQZ66%I zx;jDqxR3*jT&8y|aNO02;TwK=sggB%_~U{uWa0K~`tfnG`PgL6e4MLw-S$C_ZT^&e z;>j^QsaVf5KR|Lq4JU;$uZNbeHAXvr{6zJee}AX?LSqwP<05f5Ux=-dx<1{I zZn&!aFYC03i~6+2nR9t^1UcW)UeImD-;q4DkyT;3z9<3C!;dbRk5@Y%S*-SN*;XCi zwYS=%Q#6*u#~Gb6{{O!EwEFm*K9P4#2JE7py(A1H{`PPGHcpaQkiiH=KpoDPbCa)V z%XRTIMMP8-Tu%s@Bz`TA0EPBOas|)^+y=c55Z(4$r~zKZtsiv5 z7R|qzgQK@GY(saTZ&NRJ>x1*ck2c^6R5v1^Q(t7h=xFL6`inUg7xT<=P2Uu{o%wmA z{S`9X=nU70|3Ra7jqKj{$=Ag|!d$k^EL&1Gu6AK72OHU_qk+-zXv9Lmz>vuZ-yMsA z5*Cs)>NuiRZ`}wcumYbgR3UMbilA2H0n;drjEBDL(BqDu+A-LP6b@(_J`I_{0fS*S z1?ix{mKKc3lLvs8b^O>_-oj#mQ5|G_ZbQl<3>}0c-bhyBBU&W;(T{%^Mv*Njbi>c0vr=QDSsy&1vhQ} z)51BwX?^1zMc*hqv%-(U^T!fyIrsTpPXh^XlMiJRgC?~n+S1N?qXj)c8zT<5_){YQ zJ|-(lj}Etf0Va$X1RqD=VbnzvEc6d;l=clQ;pm)lAjQT211dH}2xm~mU@N}eskR(y zQ29oEs&!)4Ehe84p`Vp5VU(`WJLDgH!J94|@z59gN%-96ffbPWV735b8|%Yk zFxh0YGXJ2siJ$dmB|b2uY~oJ0?bEE-*9PB8ef4;T`K#;G6lf>WVA+hyrwnHtKz$<( z;bl8<9duiXep4{+zaf>lvcD&Nxwr!ic!6Qjgt`Nsk_KRAb>?x_bTh$=?tVTYd+|_~ z!CHBliKd6Z4<&FfB|zOr|Eq0;fqC73W#7FRZ-KCpyjuncJ9p{GOdZRLjzBNa&(c=B z2okMJ4J`V#nkU0CAMj@_ykQLpd4n(epwun>_UAa@iE}*Rj3@m02XEe!Cvnzez!Qc~ zUM$?8vw|kgsZO0frIQ9O#JB*Stj|mr{y1lP#=)#-9P`G;!JDonElBO%%P9|g!@zs1 zHvU_=vH6xq*z>*OlQLvr!8bM>gb3XSEPTQX{QE+NEP7D~FhpT)gv=>(%L!UAxZn*t z=2xEgHT6O`ah4-_aFJ(AV}MNj0aH8AZo!R{JQxqsXT=;;1`=oV#^hzaWd{r!1(ZKL zVf3?ImyIOMv-yH|#$}{K#)Ru3UM4_h)G2T=ucZzmALfkYjf4N#kdR>n1`=OsGlI8e z1Fz_eMRDP`D~r`(tMQ?C7B{L4M&T*Lx%bu2ld^Cb8wMGAJdyWV*VrH~=_v2}czHHH z?wtqsYjNP5#TkB7{*DKyVepZQFX{s8J@KZs^0%IH+A^K*!RL5L2PEm)BUJHRgW}{U!7?_sOgC$~KqdL+HctA|js+ zaa)d;^mLNa74^xi%Urs6IqE*^JHRe$>=GMnyyZ_i5p4YM#f2jbJ;A2+HN9NetnF~Z zh8%64u>gHErzf!Pj}EZzeME)>6kPLJl1MepPx1^TG;l!^xREEHEb$r?GT;*%jK7ix z>+4qFU@I_+BEf*XcHQ>Tg^r4cOh_d!Q*f}haOCW;;UN!I(_PN_2G#V)jRM0 zyNox#Qo1sKGKH6fM|L)lKyKud@&c~rpY?DutX)k)Q%(+VeSq_V(pdWvnQ0)w%{T)I zWRsbNfrRAB=TtC|V2^~))Cgf>7g!odJfgSSbz<0~hvNi^#U(z;r#IWR?#6x)e8v6? z<2D&1(C%mxd`g@8bwzcQ6C^Nnr99*F0U8hQ;{{ZG0)~0hEsU0eLFG*m6wU?#lp|4n z1BpCIgz|!5wSD-yZzBl8&gD1X&6KC3}K z^CDtN^l#CHzjJP}Iajiht6kf7R&%2Li^~_PH&4D_efaHH)tT#8syi|c z;nO}Zzw&bRU;p~AD_*qaG#kp4zDOBCQMjo4dL}N)yom@d{j|cjJcv;1iN6&<8xWA~ zZ~YN(6yEixG%@z+jlM!rQJ%FvGfb4N+5!b!>RrQvk#IhVv_mJWY^~S#`Q#exo4}N>S(s_z4W4v zX?t9YT3Z9pO{@$3Jyfwzg zB;m0TB^k3(%BBjA@W3NKn2*pYf1)gtVd&y&@CgO<^UQ!1AG)|FZ{A}2?Qee{1`_}B zFaJ`V{OF`$RNfK+Mk9+Fl>5!Ol3pkaddZJ(9Qir!#{VRx!!SsGtqLpX8b&`h)aj

    fclv|%nBdJ?>)Zi;Y)nFi9K2e{Ci45k=Zp_9;`=qDD?nN&*w z1`VVQoNO}FN1&VJ`a}2z4&6dNnnd9f?lh53VG4*zK79>~1U#D;CSMX>=+DwXqQnsd zO!%>^CxDHJHqEV;8pemFvMcW$HiI6EPCaqt1Qr?J8wc0@F~+Qv49lzTFQ!1&N`4sF zvKh*UFo(PDsuD+->si?!y4?^*{UdJ{rYHcO!By5j<90YcX@Ow@s)QY;esUwDuHMK{Gh+-3boj0Js>@TF=H4vYC&-Cp1rYn zwncL#^ay$dNBwsjuznys^pWCloLa}c;EXor*`%lcrSC1;=%x3;{z7Aai!s<;R!ci#z)w_axCm32R2!m zXK~U48!Bwt&tt$Q!fvQMZ)xEaetpsd#wxkM#F5^)AdJl5sWcLSFZjjy*Tk z7vtnb@k)Gbm@Gs+!9Zf~E*-n9F!p7 z9EKf*zl6OP_vX)euZB+Z?Ycp`VLZyS@mmh$WB4*p>KYEXG7b6(eT80dn7spoku- zgJMXI0i`t5SvI4ipU}o9{U+-blnF*tTU2N1qmCUtTK(upKdhd8`sr%l-aXOZ)8|r8 z*vL&hx!y_UW&I{E$ZK^m>lW(MRM&7>f8w_OA;mb?#ycNyWZNRA97jSMj&SrF`KNIN zYcZF#{&Fe!y?XUpj6oR3u};m}5PfvQrx8TTBl#@DksBMwVIUEP2<_=%Z0_dNf>Q?ih!l{}>Z}A)|;7j~}nzeebnb zNHCUOX&{lb!*lRZf1-qETzIe*+XkvyO}%PTkxJ|PRE5OJ$#uEqtwWk3^C-;{AJ-agcNKWE)rZ>$uV%IE=d9eSx_ zx+pTjJ2`+7MxL^1s}R!eE{=JaB^x~ z>ZW!dEoy{*sL9qFU^zx+KQhYWcw_}YlTd~>tB!ALAs%(_RbWzYn$;1mfPJ%F2yxWjsz<@MKItzLcg`_-$mJbv`iLlF)ww;2e?2S0q> zyRNQ4WH_UNm`LF*trlWFvm4J24RzZwe?d71=xd^P-pe$o&B1zjcI;HDir z?=mj#MHjjieFP5k)GQ#VuetvXBpR-C1Gg((Q|2q9iV)IL&KVR>(&xh%i)0&k>xt`X zvlzv<>+mGJwJ1h{SvEuY5a#gcj~FDVz7a-UcDsQV>R(w0X%FPhk>5%X{Wocb=q8K{ zyx_#Se~pJ#{zUmt62K~P_mf#p{qR}KzmI1~Ui~~CK0lPe{VIVRPG|crbq4p0*VzE3 zzh)fI=Je7nEOL~79UyMVEoNuBOCSfzkD;gY(GwCS%H%aN1QM6 zh<;Z-_@NQn7_)OR&R{GbbCVib*=~&|<}6xZXH39b{`k-dZg>aIe3_2Wv$ZZXU3C_B z-Lo8^iE$LXKla#TVJN{ohVb%D8)W{;C!fTpFqorJE^M$+mdFc7zhE72`GX6?ivv3H z8zT%h9)LkUq+?!+Ap$b|Tt^XOd}=uX!##Q6TyF88AD4xn$N5A31v2o}=L0(U>_-^n zXh9h`=*4&ef4jbudvM?WYOCsxWeNY>gDZFtK|Fg=jxalD2ac09jvhT4ZG<@Ui($$Y z$r+;&K0!jg4|(vGBK1qST)*7U8~0j$Xr9JFPw7Ub8ww}P7dQ;#GA(_>xlZBxWD~z( zJCxqEIeiI3T%Uf!&*~fRwCN1*{O$MC8?GPDGj)eI!tpID!uz=VY#*5W#r64{l}6GV z2R{0NHfTLWJ;8z3xSa;y;n7y>x@l|XuC->&RAI|fv4qQWSqxp88-3?%e-c7%&|5oNaET0CBI@h28whKQb$AD5A z>LQ!h7~iorf#E=mKU4=myIJ!&>g_xoP<$uW}r~I>#Mt+LrZ`d-A2f1(uCou6#iy z-vXZ38~v;iGtS_GXY)W?z|oG)195~i?zqCHnfi7NK{5J(AJVgSYXb?M%_sCwVEp07 zBN@a%n4p$Ff>*k3eB#Tp#K8EbHqmeB(*+oQKp)Sn z7j;LJ`2>lOr}AM<4qoCpv(Ni3=K9IHKIaO-tMY{3Fpwbs&IuBV2%3y6<%0}J3y;@y zdISa%7|PI&fQSEE`bh(c&DFM@yQ)J+9jm-AwxvJm7k!~m-LFAY7!gSmv?-1C?)mWaAh`#P-UmsxtD$w%6OTO^HHZqm(nS~9 z4UQ2(Tj|OHLNq3Nv$!%@bb<;3f5r%^%q#BOys6Jzy!D%(me4oK7)+_NXbu61S z=p>$onvGeFkx49_sd^*~tgs3tzqGJZ-fb2&Kg4o%okZ3?CSb z01qsAGuXOvS)Z`bLgQIk5?;QjH?d?S5uIzxz24Z?(Vto{2Ioc-g&3`$AA3C>UY2Uy$nX`jZqC4 zP~@>7ECUG^0=X}7M7d~C2EpJXZj!<&M7n~Zs39urjc}%Wy>L(BbG7*x@2vFB3cp(V zzANc0=RQAcF_54PXb0eCK!YB@5$5)RvL&7i-9ei|A26t5<0TA{bVRh@s3SeFt?o^A z9^VYC2SZFa(VM{GTo>@sCLS{Jj84VpfO@fmqcw=$<4XEPCF-J)2RIrh`k}Q5X`(uC3hh4|ki0AhhfVLNT!g(zG9FiG ztOk~w@$dujo&KHj;<|SZa$4?Zr(+cVqsptF!=$_|o1uINb2#lyl|Ei?_#S;e2Znq_F(i2CR@r{B5c3Ky;X_5e@MK%G>a_WOkTmB={m+iTa{NeLM z3EamLi1vr}MQ_xX+ql~~dV_^#7OulkLh}j?hKNDH@o@_}&`<-<4yUWvz0fKOq- zE5;x!0Hgnzdm?vW;M?#XFR|GG&Vzbuj*EF6ar8A9*il9pUtkD;0S35n;G;}^5oY|{ zmPmeQ5Xl2mbpB~&jmLX*OzsfmtmaWT77WO;tX#({M^Su zyq)PcEOGNXBAfaMudbKeJDt-Q2fp*<-nh8G7j9JkrhgnwC2zpyYEhc;dk0IQjwFCBF3>FtfO6_?ZPCuv9r$yOMu+r>`91-*BeC2IX zK)ls`?AWpDr59hQe)#(9)d8JYbnSW?a$?{JPL~&LDC$2twyxvEQBPtGMesPcTl*0h zw2!C1Ii!Pt#YE0|aEp`F`6f-w+janKQ0Z0cvBrQCGy1^kH>a#%jetMryWhd|rq zR0}?hz^1w~ZOX{y#Qp-}UVj6Lc0GxA;pc{O*ixVSM>wNqDzeEdQ6{@K&j+1vUY`tnlDAHJ`b zYX9Od{-Qd1?5Id<4W1}hyJ$y9SYc&&3ZejXg2pf7Tpyaq4ZF#DxBloi3h(+;nixCu zQWW$D@*UpyOFG<+@wwvD8k+ks@AP^AIvO14ZhW4djyA@nV1*|R_m4eFtWhaV9?TP>`ljNG=w)z5cupM!tyba$XZYXfvwAWGfJCx46GPr(S>865Ca*d zXCNB`H043x+89VgzQQY9&N3!W!^3ohI?aAG{vlutPC{lM7j30h#&a z!Xx)qfRUdRRw}hrcI5;U*^9bRXjlZZNX7;2$PvZqH@e^pyl$XYnhaxBN-9Vi{)v%D zNUw8Fj3hjn1!4pUQ!@ zV}YQSKQz0Y^xGfdIMR{c&)jpZ)~y^jtrpYxbfajTw){t?AJb09Q}i(Qp#<)&1XBO% zx30sb&T_j(5757{=*)O{w-!Wp>5VKlg?&;3T+m+{Hgt_}g5O6ugM)bB=wsQW=QN4< z_O=#4&@1H6_<##|Xkgr6okKj~rn96G7>qC3$me4G4t>CoFBj>ow|GYFJ)*qGgT9}+ z3n$>=^URorG``@|d2){{<1%EnU(&DDnLqf)I0W920sPyM4|4zFi!Z{E0X|uHnv-6S zw@_=j!XFNJWJ-Ba_KefO$w?AyX5f$|T4k` zmo2n_hdhiApYn6Lp4HoT@Jkxz)6mWFqiUbIl6Fyf_d@mZOVY6FSDBic6C-{}QM)F}{dpmVwQvp`Oz>%;Y*OIY6<#y;W3 z>+&dJfrD?3+eJRi%iYdhH!Nr4AjU!%9syZt$JNj3fissI2$07*naR71a=4B?*?M&6cTAGXY^ zAGe;*#dL5z(awOYtN&Ie%sRF*ybeKsHYk7{506|MDBaT+`IDY(0_7=IS5z)+n4)9u zRLe_SqhEjix#y~%{q(0Y#(P|KIyZ=-{OWc9MJ`kOgpp^KCw}&kE_eIDrE92jK+kXa za~_BwjW6IHn$tjngsomrqXzn8PRf8++Tqr%+hUx;ScNrX^dHW3pL!1M?w@%kj=r2z z12{o~J{1_+IqBWj`|TadLoa9@H$JJ}&sIl&uh9+Z$M#|E1WD}HAwQ;c@5-%o^T~gVckl<&6gPfM%miLl=>2$%d{s6o` zv7uCfz;Y?+g7>!dXw6YNk`ub93w-_pqX+ULO&Un3uFEiB$1V&co~U-p-zZcdQ6u6(C9kWe;Z zAYrD0S2EAMDX=&tS0drl1e-+9Eq$Ve7h=Ep`m{dRcBZ;~=|XjjF}e7pR5VMf=5^^D z-fCIpv~yvpI-pOAJg#vq1`_+X?WnfT=>=f%hjGMay$}k$7pq%gAn|`b{V)t9&gcY* zh3(5af$m84{qKLj`tv{kbA2}M36*)h{}VKdPKpO|^+%CMu@h!Dus`Fd^gF;}xe-Pe zY@MGrDxZzQyUy%4=sNUL6m@%vLJg?4e1P>u6m1I~>p430f9H;!(GF-Y9)khv@d@`h zirKib-lTq@wGs|II*WdR%Z3rrwxv(e@xVa?Yx>b|3U60GMpk$A2bvxv_n^`HAjx($ zv^EA3PD}+a9bKNPd5%xeym7SNI_DhF zv>W@-hpaYfAdItu5GAoe$hXa~#{K3SePdOf_jL_AZ>h6Rm$6;8-%&Nf|qtpK41z%xImbLFye5|E57fHP9@(m&-xxbrj5x6I`h^Ij2`l> zC64`OP{x9PSg^|Hh&#e#5(YgrF7gfjq0JY4kotts-HTcON7LKKJgWRh!LLXk^|v4T@cE$x9smi1>dpBK`oMLbHjN&@Ih?Qsjg7a- zkeoN~F_7?uZm@wwoP@{NSn0!%F&1jO8(hp6Sgd6u{cCL=W02ta1o?u`a|ZMcm*+>s zTj${WKJ=NMNy}zF8~J<|goSrtpb!2$&*7f=pWiwo9sNF^WZ)zOF8Y7+<3b1GOh=h_ zM6B}1^sh2`B!d@Z1P{zvIJJ)rd*r}a3fh5TbKO>UygD2`NIAQ_4#^rpV)%iFKxg+B+AkpVK_?#teBo>yLFA4{8 zIeGGA7~en-^==bwMEFd<`}rV#1Am;~v|04w%V+3!`4L{m8NcK08xEfhm)1zan@X(# zCTU!6z~{8w8z1-U;f81*hZlHgFda^BpR{E>_r&!twTOVD?v)qyw@ly1Yud_iht1-z zHT|@CSxzN9dDA|KbGza>)}^Gc@k@P6TFVhQ(i^YS6K1^5i#TM<+Kw0Uk*{5e$6=Fv z=Q{~*T)apPTE$gU&)wJ2AEGOGHhtu2{t3gG?{WEziUWu7^kLS6zdp{P=a?Q2MclQp zqC*+XbG&Ab<;Wr(1`X4=Gz`zN7f1dtEaXW{=gywf8mdnDjgtrR$bWyL^r%iL`V$#Q zU?{P7-`-f?Ws^8y>r7oo`sL^L5+^PTwjbZ6x#Xd|2deihexn}IjnN(%v}@MccW8r+F&g7Crv)GN9tWM^qrK8^l9tmMz;%t!Sj1@?`m})B zHaNJr2N!9|_5tOw9;1GTzK3?_6F71M!gZnGaYcESanQ$@218Pen*3RfJhcm%r@V?Z zgw$=9{JZNP(r1#dsSs#y0}wo2T;Rw{zYwGG9Qfk}BKhSfHqL6F;Qc?mA16p0KXI}; zqq;_tF2>X`$S(C|yB5c(t?@~2$QDwzA(gqSy4j=)K zeoAQs>L`zt19ktB<`IlF;g_-{Ptx4dNf*fC5$c#et#Mcg-}WY~N`dn~u~yh*x2r6R)!)q9N}7Pa2FylJl5qfcr)DjpB--d8=Q zvFIKdAIZF>npZV^M4x+`lhRq#=Qm_JQ=Qj|5g(lWy86W@d4j~Zx2{)zF80tMFn2IbCa$;@@Qm@lEXd9j?fV!Uqi=v}G`;rP@Q@Me65 zM@v-%{TJgM+A;fw%)7bw_$T#fO;uFC8mBOp`n~0{y<4Ha+o-tf_uswfiI3)cBH(=j z@SxFqpNMV4$QWxNk*c=t1fu~FlA%daJ~t}0j%uG3pw>sDi-w{`iNZ-3>!RL};Uoz`hEhtYGE}&u&HjBl zp6x|h2EJ1L;Puz4#~*(z_#_XXAi;o=yi=hiC*?h`Trp4;ow1-9gV;@RL_KdLu>e;t z7-4AO6FJ;4%~#+SZDVCth_AVg@@&h{c%h4Xy`N6pKND+qmaKk;cTrDws)bsAheEb&Ex z8Gf=h(Q-H5ncjX*qso62{EGBZfBT^ipC3x#0gyo57c#$~&C|AN&$M%oZwYf8##CFR z2e!(PoIW}>g*8rQvBYV4^9h{-9>ToA1y1*ggwwxrdIU$ zu^8ozfdmE^HYgwsaO97n3!m5^4~!C+iy0q2c!0(6jPr9mO!$fZq7XZ2xxhICpa7Sz?13g=i|JAA#dcdZ|}b9=#x*z=PjFf z(RWUD3b|0P7)J(;$b-IGbVQ!(g$tJy4JOm-#my<8U6}S&Lh1`f2lq z{=Oq`+7AxCEk|^0xsf_VquXXFml8i|oDLY|hz>(P;&TyJ!j$PJ-4F3IDNR3~qRaf- z`6_&&AIyKhJvd*}?fTKjJi(j}ER01ioKqjAbzNS7yQ6j>%_4HLoDOMB^SU-KS<8Lq>8I7t?})eP**JD*<7gK?HG&N^+6efF2N(S}m)my9ANPS*`Nl~Ik_B$F z)`Q7scw<*ED=KKgKL`}>4L-)NTpoi&bX2dlow=NdQ{vwGhx!!OxiT^#I@$411^`(= zQ>LNQ>K7RV$}^wHpj^(JIa~c!F9&|06C^(V^s^YRrHrzcIa}mOolJe%&ikoDykN+F zMWhq{*f@8k0)fauoR&SlFCVM#HZreMw3bwE%o)-^Lg~G}A4uS~%Oh!%T79xlvc7m; z1`;wFh!efxSLuL=Zbf@5o3*DC1`nG}|XO5DzrU4@Z7M17*ai<>E;%Y{B}X z3?%M|#w%AYRp+$F^QAtGcS(CZo74v8MB^4=VYI4|eYJh_e6@d3pNreRyE?LGU-jrN zogATY?XphK5JHX#mr=znojS3(+M;@JL-^0!yjHz`=5*x~B)+|Mt=h6{NA>ivW7TV~ zzE=I|pZ;l#_0dDtFPxO(`Ws~$YfU1eVF-SBCt6By)G`?uu7)S^>8#aTt zc2Ee8Y;2j5$`WuH5f)Ml^L%$ph7#)hI9_Uw(Egff(1$E z>r~u{>PQbAzThRSvJ}I2))-`>2)KavH)ByUEOPN}s;_kv)J1)EgYTX(AdaJ}l#Wkt zY*}2;LgB9J*s-JP{9diTr;{X}d+u2+bnUJ!DU(|A_k=9vDGF;IiR0eS43=)mSb*=! zUAlNF-i|@BF{na$vM`Ac%{VJr@Y)g9mz(28`b7sE>4gKDz{@jq;hTQ@;DeS0DfCZ1 z`Lz1ifBo0$%{Sky{_lJLR||%xBRlW_!y7>UjxhsnaJX!AL&a_IkEFAXa9Iz*A$4fI z8_wmn+PpT3PUD@GKEpfxYWXsr)uw+?(v6Z6&1u>iNL?<~88~Tg$dGm)`l)W;ZZGH} zTq$SLp+^IT+-Y}8hmjgOgT-p}2Mhf?yA7(b#F5=tvV#Mh4BBuE&^$;3jy7Aieexm= z7ml>#Ifs=wgF=O8U%{llrcG(!kBKi#}_4ViiHs3Kspr2;W6q`@=ct7+}-RFX% z?2CCOFZ$05+DOMJfdzCnu-VKeE%|#)0X@KTmHjx+rWIJyksim}Eo|r?IB+0*FQ5a5 z1C~Y7TQ!cDZ|R;f1dBA##BtYL=tlEHex?UJ+^@y0HNEpjE_RHW;G3)b)ChbaXHJp$ zj0IQmIj@Ca#vky9JYDXVw{h~!xD3M!a3WjkK)|VgmsG+iqW=jG%H3se**Of{E>Gt( z&X4}0CvNfwA9Qo?`76(^L)0@2_$gD2a(L4dS{608-zHh@&u4a z)(6Pea&=n6+aDF~c>B}B8NT$zYTZt{<8^p8|K&yjY0Lb$FP}@?)81P?efYKF?c*Eu zT&^dKg4x*cwp|YAGhUyrT)&K7szEg*$AE}z)sIO3VW3H0N?Tz3!i#S7QLL@r(Hd)R zOx_NI2;T61;rZvQAH4Q@_2{8PN-zCUkF#8sv?KRF5CUGGh{OpJt~dBj(-7Rb>GG0M ztvpa^j31$oI*a2iW7bu`O};nu$qB|8`RS1S#1*u`FJrXr>U&v}#X$>c@JSCJv{UZU z0kny7{RLQHz(wE9T$Ow9+W~_E2aYH3#|Z@NLrg90v_R^302#$mN@FzOCMS?>(I$ zaiaSCi!XJe)}^c`QHGJMraMoMAkDn?Ly$4}>8Dxqm-qsXup2r#!|QR0fylh`FTCbO zI_INLKB#P$^>Wml3?-U&6gQGW!09Ivvs8#{LE6NCE1 z#=Zmll7h|R)%OQ)@<@#`E38BdFT+Q@au z?(6GUWgu}%1`@}s56+#g&fLCUZ540NJ^O6+x^&CWe)hBK$dSV#9IaQ*22=t)Qdk;l* zSF)CY#1jJ=#2sJ`35qU5M3vw3)NO}L zI2Vg$(1EpOYzk=Mgimh7H@MWXKna7Zu)>8P4JycvG*H}cXbl$y!GLGZb^Zb>qCr;E zsSaDpgh4HfDJ)>pImhv}wXz~U2BuOlmu2b5NfH+>oRg)azMU(@lgdP!ChBCNkZ;zp z>Ho~rPgSqH{Brfi8$Z_DE>DCZ2)J4sj32si%|NNf zB)D1Qjdxc14Da-_=4*K4@$+}pACeR8udlZz@sGZ8odzctGNg@gS)S+u+9G-gN4Vp7 zCU5i_#$V_;-s(f2&P)HYz|R6a8!z}gGg-^G9Wycc(zcmo;bLJ`Iw~fHbsX_r5a6|C)^z8c=<|x`;tK&1{1NMQBRDSDBpmFn&-$bs7t++ z_!S^N!Hafl$3Ue+lC%^oN}F3clNS_>6yv*G1cBY|Na3&1H-wmi1gNXw(0fxXQLd zdUO`^8%~el?Rqxv%Y}4c&@<(@0y@C!aXvVK<08xp)I76j4sFnAgJ;GOI2Kpwr~L^- z_(x@v7Yn}h?a*>sr!Ck>f;T)d5W$fb(u%n!30LV#nXD2;lgx5KPcv@f6ud*)M4@bu z2eN?|PLTLmCmQhf9gC(=AN)uLz~Okt@r=wVE941IuF~+rWk4U|6DlymV9|^8j>q?X znGg76xXaS`N#o05_DyFOZ`KFaR2aW=A$Q9jSkn12F8nT@GG=x6v*I&tuHQVD zm#G+{-ErcgzHK)KjhA{s{Xw5{@m$tD=hfm`-5q%DrgJ?YPx3C?s^bWAeTaFT=aM~I z4R2hd_%M&iuav9Duq7Vj7z%S-=}!w+rtv-OByHXCI=U9VJr3vDJdj^`8P{rkkbUcpdp14tU zAbIKX)8UUkOc(3W#&6u@kAVkc0zMhy6Qzi!Pi8*J_;E>_xwJ#m=(J9XdLl@UrwqyGe)i#fwFp$`*_Oz@MB{r*^HVHQ; zUW-{l3$6Bm_?-Mz5phN*M!c_2Z2X^3K9qrkPVu{QquRcAclF{6FY1)>*Q=lEQ$Bny z4%yO`o#%D z7)PK#8S{|F- zcapk0Im!c{&CUYr_%GFVjSxCaN^H=xMVmbwHTF9lHTLG4 zZ&m;D&;P4BapI$90~H*xz^LQ6*r0_E2HnAj1}D@HAy4{+9C+tj=H>e?r4CJ>ni6v8 z2H%yZaWoGRuu*gx@2vC~-sy*Eo+iwArh$EsVTR-s^>17S9bmW|;3GTQJU;lHhkYmS zXFQCtJVzCz*gU%q19}Ol&-m*efXCGU`~Z|M!?LmphjMg5{cLYywwZvWDUr%%5g6BJES^Q;RtP7h7K zkO{gPr@Q*fk*JgSWW3lobjNaCcio_aIwa)ZQF8n_|d~*K!SliGDmJ0icqgHkO;#O zZSqiOHsS;c(+JPgxISF}**J#6kpq{VVeozLc>9KJ{nh}-#u50)tt^94d9`@fc4vC0 z#R5DuQOEGjv+>vm-zeS@oyF%mi;n{@?YO+WCR5@o^NEBr{;YTUlD26`fnU;;yb(qn zh_R@~qh);nC-A;_h6nRuzfT9@&WF6XkS*;US&wpkJbk!H@qPI6StN<>3^5JR3IFEZ z^GL#obA7Wv1Wj=*mcdvw2p8^hMa6r3Uu@4d<*=D`k2>Wdrfb9KT{o1KTN;ldeg59L5(XJ zJ)YW5e(E6We7x}2#0Lq*&q{u}{HfgqzuC6Po43tzY{p`Ee_m_RtdY=$Su3F4(l74N zW;LJI$o@9_0P1*I&w=HlFJSCNAI|y;ZG*gMzsyH-BR@CVtw%y0f&m{c%Ar=a5mzr; zgn=u<9avWmURPAmwtV50mu9l8&{L_az~9O_vJZL*=Q2GhT`B?>PU+&xCw{xxcgrL5 zV85VVw--Fd49dLDN98R&M;NmDN`|q&{`GIF<0np3-)P-F3^gNfa*bq4n*9!Cl*T7p zB7MqC^3+%ddaZwK0ARjcADZWyUnQz(G7so7y|k!$LVfgpkjo+4mE;m-)|C&qkkvIA z%AD7{fw@8&NYwC=Mto?Ua6$Eh6C@6)&1~JaqteIKx&{)gHwxQk(U5gPm{n(}uNQ>- z%g?`vJZ`Ez^0LTo&2x6ikN`u81C*$(G@jP}ipGxTWMF$!CtA!){#zu|WntMZLx_X(%hl1H`>PiZKUp2# zu9wMlR>Xo(JR-cBnW)_B{Up(ULwi6sMbK3-d`Z>h!}H%%zc~3p7)YGEbFGI}=7K2N8F>U&;j*50e_{Ume%b!|aXhD<8H$-M z%zRG=eeaaHpQeK($8oMDm5c?6M&e&S zgASAu_Y4T>^yA2^IuY>;vMfYP#Kwda6P-GpI|>6U$8%@Zq1M+mS!JP=V)HRJJji2H zbwFD+ zWW>j%0OxN%+r2Oe1}j!{9eRp(=u;D_`${%+!s1?5<1|stSmRA=xcoH zlsAlI-s7P+F1D=CtI1`Q{F^eIfE4b>xs+4ee)_P^C)ys7Ax`@2Oqm8O)Md&#>v8nw zGO(nca*QP3|MNmD^)uUX_HSSz4>khn2iX9nEz&R2Hq-dDPgVDM6p!GJI@ATm?hb$~U2T0Qzn;iM-oZ(#F=y-$*$|8yQKq#GY;xuA)B zpvAE0DC3O2R=A;ulN31lfcXh9vB)mub6V&@hw)Y-4xL6k`LXcI#+s0{=%JeH6wLq%n9&C5-PKZ{PUvGc4;WGDKEfv@yz$dt`6e5{L0e)<^181v|Mg))Pa~k)%C%!mQ9JDIA0DQ zqQ$Z!4tb)_@JG2J93||e_!4&L-o=-A+!k5`5s%A}1^k(Q%ggO!2=`jT*2>qkdAlE+ z7JmKVdL7D&492&wZhsAI7k-o+Nhb{=c=fN0ztpb7sf<|%VY3|riEEd2`4!!>8`WCT&A=UluF*DfuJE zoL^?WBo3ni^fuvFb=u~+`VD{AT{hO}Z!wVIG~Z;*tmn8ASm^Ub-Di9lYbufnb)Nc9 zU(MK#Htcp`{u+5eql5?VOr{Z%@r*T)*B4)YS-thv+hHJawmEsB zQrl(nh_CHM&6D$XgUdIYBRyHnx&q-=|N1Za8>Neq%ofQA9Z?G{mAG z3s6xw;GLe0RSa^kUe$@&E>pqBo{ZYl94~cj)mnwds|OD~S}kE9A;c{C1s28@G9;ko zVSE&y*--l1s=t)!c^O4xAdR5}MoNtDcJG&ggg#BagM9%EB$RKgfgtjrH7SHvTv>jw zgh5HLMx{(>&~shL)^}UcJV+@!RUW=0uk?54oj%iv_LQEQx__!g64KsXDr} zr+RAl!Ron3k5mWrsf~pjx2rk9aC!uL6`Xp3EU&7rUb`)$!%aFJPYhqI4J7{UuWVZ)TKIy8_<;#Km!_YG{76(s&<@M= zL-6Ypwo&UUfQewfF!OSZbx}DccRYwg(zMgSd@_v`=AN0rSs7B@fh_Z zi<36kUf@M9UYC(htdC2V^T`_K*Rto?F6&sXE6`HvUa_es#_Rr)zM$kODeg3mxALsM!pNJhJge zhooo2KtZH|5;bUYqk$VAihw~JieX8M9T-f+fJAUNdE;5IEOIEZLX<9k^Cvs_BEYwR zqC7}j|B)$qI$zTVEp)&@W(O6wg2U)Rox9>Vf`)}nHb59yVRH|SXD*e`1Xgn>4S z5I8J0QF0uSbL`mB>L)*WL&g#>RF7#PZMQmp2Az<2P1e6G1cp-pmRv1esqil8#0nM< zuV@et?YvFK(W`8rFzJMH25una=zPRf8d?PZWJbiaE(DwKmYL<|K{BX3Q03n73=&cJ z45+^P3TxV5SO56m|DpQrZ+}-0aI?EW26PHLHHc?1kO4UOQr?VS+E0#nqDnqPZX9RG z$FvQlohGcGo-&%nO$*=8XO=w1!bbfTgy=3QM>aTz`8h)Y&zQB+Wjx0FUG<0L6!p&n zo|5s@TP-m1D`i;b6LBqQQ`doM%2RqP=%~XWr^E>?&(U@@VZ%Uz#eOc@DD9c!>8zgu zx6(8NC*6lD>Px^#f09>Nsk)XGvM6~<1o~BcPJ)^c(GLEU0eIOsVZg_R3j;tF39i%z z6Y;D~9~(}DepQ;p5Lg=CLk5x!I@^62ZymCrPh6-$C1fEa_^D}k|LFc_{IhV?f5wMy z!%dT(d^JMu=AWe*zu>V*6Dx>o{1KVFwNM1!UDvPAv*sQ$7)Uf&e}>=&!pb1aZB#xb zEW!>0PU@7dYye%l2$tOCE;zTmYYREcS3h0Q7OP0{4s?uE)Z%bY#5% z82usiFfI|k>oRVd*RXe1D6+X)9Og#YmlDL>W&DHTe!% zz&rFX@8X`Z2Ac;MNMIboyo}Q_;O85iWN`fW@#+ zFpPNe$tRn+k&O^Y$HFpY2Yw7)kUwdRv-An~HJM9lW>-GO<+Ltm!Wm=X6Xpv;g|AQR zG!WG>He9H?qD)4ATdRF~GY|t@=6=Y+beneS6*9mP7V^@47|JLgg{qF}jaK!I`&7rC zJo;peQTb*!hKLt*8p&zp{n@Abw22nFS-7Uo#o~IT2lMO>TE;nKFwXVk`_E20D%|n- zLolYV?|0MXlZ_;hH5cXMc|7TTjmoRUIqUrp?c;C&4?V6YPLE&SkEb=uh9WF^E7Lff ze5iB2sMExi`HiD@RGeuY6+bDwpB|cKailMKG*9kZ&?l}BZhy$aawjj#p!5khUf-8K z_sEhpEA-bWH;JD~@uToMJmr^l8y&(kd{Xzh%s==;LKl-QWn6ez* zU%6lEKhK(9AKv)-;dk$OQhlAEKRd~R9ft4AIm$YEA0<&a#)(38+sXA^)^e}wlgSuJ z=-6>>U{cn!3yjox$?b*bpR4}UPkt(6#mDOOV6AmR-H#(j@($xyXbt^De=a(8Pu}6e z(@&?MOJ2(ROcHffZ>7Vt+at7dqJmG>O12Eu^Lv1*xU8#l z${2J7E+I3`$YB!l$UfxWW<`4_gNEBjq!e4Nfdn!N0|{P4R5PC2d=zpf00e*RQr0C z28%GN9Z&orfu3X%BX z^e;xZVIV=jqWt1y5R7|dAn}!qN-pT6HBNS6tz)lFRoJP0lI>dmnAbi^G$W-q{czTy zKLdbB&T7WslJyi`JV7isWxOELs!bY0-g!j(3%B_^jrMW0K66noyk3!k?QN~oEU28f zDpQ@^Rvlj4Rz0`#VD)#ky;1a&>yM%!Lf~o~p zaQg~i{bWAmRoB0!P8M}karKjv^?bC*c!*wt6^~8+D`M`?fCr7<`%{YRM^zX|tf(}G%I^PwN*Dm>o|8Xb;sGq?SW`C*npuC$f>cU&%hxs0%+`X%ARoMf?gT` z0LSMwFp$_PMX~6~lsdLJnE}cfj3_<013!6*0dJ&%BlE4}YgS_*q`27FgN_)`=He7- zHtV}|xSOG|aw5+29Sum~1inEPibL?YZ0-!)uIkOu3t=E}PK#7mc=IVvkdRd&icCB+ z2-q*n<5ymJxq9iv7pmtq*na$p$Kp*I3@A7r?S>Z9fJ-^FZ*VbL^P&%nU<}UqRvCj| zI#ni}Ap_Bvp9#S*BTv3SsRr$$8M496HI)lNwy;89FSJI4@G#&=MSZK@xI_3En~P-( ztXZ^TfcUPy$M)a;+kda#`;Y&Kb(>i?3zUWVx6_V4fxpJtVo!_W%$CrLTt>eHk4ey43 zko{5RSF6*hS@SrgOkf$>FXL9+*Y&-jM{VDOHPWNcj0YG7S6tkqL-GxF25tEnAKpe_ z!`2Jie1=E}QlExSRp~1&Vb)1rXn+@RVmVG7i8|H(CS3 z(QiwhIB~fKJHbgr$J_?|^mA|={SWbdzywd35I^u7bdrDkB|u7Y7#@gjyfTHiCYL&s zyXZwfyvF<}htj$JmSLmrQ|x7W7ep&V(qgQRgVPYE_I*N}? zKh;eZoLJmBr^!DP7Pm35QKzFm1244TpiYAq-dI3k^KE%~n@*nEo<P8psoYsc}BUA4Gd#ubPX`*1U|LFW-}Y|e5;gCIG~rJZ<8b< zKlwa^JMany{RBSr5{sT}vY*ugr5B(Z8tU;u=!{x-fTK(g9&{8J;W+wQo-ufawu1)` zYEHK`4Yn1(Sqp$D&*)Eu7g3NW<9&?9&z?Ig!wr1`M07zD-wFm62VC~gQYG}?k-pXo zy3hE0CO+?!hCF(eDaJy9b&8)zTkADQ7D5)n;UB|Hjs(Ua~wXUxZ#vz`3t zWPI|0@4vE0g`AM1%gKD13c?-7f*FPv$dP--UgV8qUd(3~j~|x-h73xWE4r*hE;T~m zlc&?xQDeQ1eCqPg1oT;155Ud%i}LZ<4F2Mikm8;Ch4GDzD7I)JaJN3GNMFYI5`IV* zbzOXc2br1=$~x8ylriDt7j;l+coATazEOSj*s(AqVP;4hxg_HZ>h#AtxsX$vIH8ih zG4Lw=YTYE+S8Gf8kx!aXEe2?#Y!o;)ZeH$M!Wne~4@oV~$QejsbU&(uZ+q>mG^=R7{ zd%cpex%p2VQ)FL&WZrE+u*+l3m;0w?yik+w=Qic)?wb5omwX*kO`@PJtD($R%3&D3 zTTNWnD*rlrQbj2Jq3%@+;^YYWXABHj&x|Yj>dnzlJ^j>E)qnnzpHn`T#Kn5Na^{cv3N)~A|JYloFOhV^$fy}g_wSFwTRu{knvLUZc8UxXG1Lr2KOJN+Li?Gi=`>guq zFMm~?(AW>dmFx9-cS9rNnn(26A&pIzq!-yBotKQ`rBLbKFhWQb9C#t7T+a{UU@_QC zUa3zZ|3=VIX1OCH5GqVyK{Ev<1mK9k@VSqt{1GnXnlDAU(0wyhJE*CQh*ef+emnkYHa#PhqI7in(bX;}%}D5)FFM_1mvcg@MF% zjTtwo%xoaBLunpg-dVl8|B349T?ebf+jdsF=G2#o!AEq8gepYLMc84!tSc2lJyC z>p-~q5nC$Be2fN`G5}&)=ejp7{Qqa~PPpwlj{DGWk^lh`AUKNiOi?05d5A5?i4#9( zoiG|F3%2Is2Y_?u1K#l8nB0pWeH> zy1J^mdam93O5v_nK35Cx(fO>BNU|!Rx&90+qv~~?8@f35CxuDZ`YH98+h|wqd)}5g zyuRg3UWTIYoPNmM$#{$oYahmVB)V2@@W5ND5!6nOxRgD}i_s;<;UDJ(W%?~|^-UW+ z#&d&Sc*n^UYLmELkJPpWM*R;AzD7Gi1xGDx{)GUAdq_mG&2(yhV&y;Y;Vs9QgPMV( z?>Ec4pR1oK(n3`7X^B?eO=QQ%Z+LjeJ;))qO`KplteGYg{C9ZILq`8pDg3PRX}HeU zv-E?sme3ks!xfVJbo$OmxUi+XcBFxSPP~*s;}Nw3eull)UemLKmL=_rvfGcgQF?1R z?FGBaXU^k>#~yh!r%;ZG&QR(xSgHm1bmrB0cW1Q{sm`Ob7zJ74R-pc(%$*Sio5@bG z@|VnYX;pOz@|hzF1=pzH=|Ga$B9;k?Jke*t#6;?pL0PO4Pnb|;F(i?tWIEg$(8aHY zC-@9h;B~2lXl%GZ;UZ0uis??K<0oKAGn7Y=G~D19MFQqP;UeSsE}z@5pu_6e(b=^a zl)>tS3-4!v=%aMdNgJNwVF+>ixwF$_k3N!bPknoO?%U5z&&F87_gDvxd}A$Xz*Rh2{-d~J#ZM(B z$NbH@)Dy>w9t0$>ETCl)L4OSF{`&iWGyU%W{kzkj{n?+@(W~C5MYBPrx8LyNm?;DL z(SR${m8TO3+lhjp8<%5CV?VKFGWHLp@_;yf&- z6_(JyDYG%q9GDtzE0-IzY|DFzYcn41p*5Q^yPr4tZip-8ztex!{#Lo}LsXZ?J|IVn zDumj|P_m^w$+xdDq3}J$TxpBcQG>X%W#u{yCTx1#oH(x1%?4Q-o8mS2^h5e2S)a@V zMcLNI1_(fjpcfpv3XcIRx^(bovyN>HcPAec~W( zv<+%)s*M*pkj+v~aW8Bo{mxA_?T;qH7}Cc9(4+>jwJI@WlH z-i@c0W{0hS3LcI6PtL*=T@yBRmhO#y9*m6}&-Bcs*XH8~(Y=prBf@D|!9AllCXuG} z9KQ5->Psz+naBz|pi|zwyLT za$Uo2YUMiSn%zYN-QRVdRVQaX7e?1hQt`{paj38PUD_3Wl7-dvNfLKuelgxW5eN2* zv{T03`XFxEZ+ez*zZupiNiayL#qq?~<~3Y_gM*JYZIb)m^fm{v$O9gn1yAvwogndG zzTJIi7EW!5o6FUSfM_ytA&=yNHU^i{`+Sy#(s$m@NfI{MGyg$ny@3`uCjx|!T1?bl z*5n31No(BVQy$#sX%|CC;g%1Y){S3*Y(9>_ZNEvYP1atU*KqYs*yIWCIPK?j3|8*R zi3X2Xxqx9D@cQeo*GUrZ=iUZPwe{hn$~pMDZG#8@Eq`)l2*c2XF^tbi=m+QkryP{m zE3dpVy_IiXng1$4`7lQk<0+>|F!rFk_`wH4Q!y*csS3- zFB}}^@WZt>bowBPgLl9UU0&v^4436N@Erel&C5<)dxfKkUUKLeaQJDOD=Ojq5e}Xq zkj;JVn>CyoUqv=!aT*>nYB`a|S|(%&Zt$-i8hMSJuKh1Mkyrja$v}UXk+ScLPAp}) zEK`&ZIjwzRh1bn2gSxGs(FPl{8q1O;nU3->-X+H&%P|(VLDV`nMS~o|3cOHlD;Qu3+(&f%5&{@KCPv;$f1Be%L?Vk zbB%c?md&!=8T&KzR26MW&vt&65G_?a8XM5FT2D;b>vxo`OW(p^)Y!u(I@kIiy-Tz4 zP{uId$x-+|wc(Rj)+s;zG<|LAw|SRwh!cf<2C9q)=Z!41jP`YIb3%vpYP1w>(d&A_ zY;JR`sp{WG-B7>iXwNq#Q7`mmW4)Nsz<9I&qte+PGkBQ=jb5hf{`ImQ>$v9GJ^Vxe zV<7bLI8Dg6>p8f3Jsywp=BizY=v(?Ly`0svt3}WIMonnUOkSCz*y$?9I)v!<`ws>F?Pwi5`@pME0ko4yh` zKYIC<=@0+=A5Jg*=;iQXF0L<_=l+p{e&oc7o69ibmieWldQmeOwS3XjdW+B+>#k^W zv*xCPcL=-z!OVSsbidNTm0h$5-97!l;5#A9lx+kRQ;2xMeK|Nk z&*>32oH{vO%uBXE{`iBOAo1q(-Pc~2UcB&bPLTLwx<4n;{G)<lvh!uS`#WdBUY;3!pRzB)^AlI)6;FP}>^idaMexcM(CX=G-R#cyYUMQW9yhe21gVX0o` zzb=MRN0o*!FzQUhRw<=^aoRs?)9SJMW;}E{hHPGbYQqSIQs$BhAD+g=mx2Dli-z4l z2-kP1m*zd{sXl?xzP_yHOhaiZO{Xi}n(1v?(OC2*vf72gQR!TV1JM2rmpWLuM?EUK zl2*{@Q^sjVBhOJ^wKXTx?s3|4>AN2mCf}xU-3N;qvK8O`nfT&AJ}12BE*e$ILFWj= z(`e`5mv0+{OS_qGrycYCvDRu_$Qi$ejOw2X4#Pz^DJ5U+L7uA|Be3Qp6ePIElJ+%s z(p_oiGDna8cPWdOm++PWVUIaD?Hhd5O@4NiYw*GORXMaYJBd3zyH$SkxM%?Rg|N~}BOmZBpE8h8h&{-cc>}UaD}iTlHXMQV9e)UT%}5nz!q*Dh z431Rm-@U@6-R)+=lld2Ep;We^=z~^t8kC*N;$OY3tii~08A${mmH#Y9O%>A^h{A~* zoqQBud>SC}EtuMbNZJ-Ysx~RB0@*=qLN;5}jt_29>;h2rDenjA+%II2>bzr`(nx)l z&VN{Ep*qGP;q|V&?wFqb`cu<$u^MDO_;`*_y(0@n2B56Ju!MiORkRO3Vt6s$?z(iT z-&DFcnF zCq(nNGj#h?%V0CM^iKgC(rwba7v6)=RgPpuh+A9_6k6RqZ-v~4cJPg7OBPj5-J)!Z zUxsb+-EmjSf2aSu?zdbw%l9yHRY%p!+NjMYt$OP6ti7_iQTm;dZasjvFFH6*WQd-m zeO~4%-GEcy$DmMI3Ga4<0`&y3@}Y~6)=&Ble=~e;3ZHhv08yW4uz1M;G6oVKI%OjF z-WXvh(F-EInbd>Wng~cVR_;OXqwu)drbOzDt>~j8VXhd@k$Cv2g37)8|D`oFGwSmw*nPj*&wa z=PepAB)l!3qhdrV4&3D&^GLTWKHr!(S!7hY92&q>e;U6Q;-ZV~)^g~O;qMi`6YBcY zbqO3*0^94?HY`<}fPZOj)Xy&s-B*C9>U-J-a}9l)K3V_E2;r_=cV}VJyucz$&6o7E z`oLV;rm-lmiP27tg$8r4K1t&3d=8?FxtxNRMN#;B9FE;u42Ulbj$SbEY@Dy15w35A zm+O-*dXpc$-Jfaew6_+0&{lnE%3Pb~(|qPqKDF`I+w&(t!Z%kZ0%-dzM8J`It+3}_ z(15e!@yZ>iU6a;@MtpLsH+vE`Xy5rs4C5lQee=yXYr|eYAPv~Q(AMy{5qckxPqUi6>hRXuWK3J_jtgo{*UpE zH=1mCh(C4G35aKFzDGaM$u-~o47Yrw;fwDwK!Y)-w+nsN#N5&6NXW$7rarOp!{?u$ z-i>i0*v2pY)pmR3u~+z&(sML?Lw}q5Q6tv%f^60KzLv5lzb*r`y63Fl41bi7a97J4 zeXS$zJH8TK!Ozk7-I>9Xt|d*Nn%+*)`E(lb^h(>MPBvc+C*3A*;u=nV+}QZ2+iU)# z$P6#Jrn|~73bCY9o9?0ytpg*~y4?G@%fFxZ^IMkWSM$aA>bdZ)*XZy(+AX@Yrmf?| zAI|9)THBW?;2jI6$*y>pKc4lgy>{BX%Wrip(YP=DKP){GtYO_XdEFl#^jrdg=8D}m zdF(FND@K2{6Ds?)2#=Io=~c?zoSyL>zcy~8gY->#>#sge-!Y6NVk8q7;jX*$Ci^$D zk?EzjU;6g9>t!wmHRiNsJdm-L7cLm3I?2oDmA(8GC7J7!IUQN2@6Q^y@lG_W#w~SX zVD7l0bFLS7t-2Zgghw1FOx{jPVt}uYrMKdZ{jAFvGjw|;%`ns&d33!?f{c;Yy8m$u zBp7|dugz0WT{WJ}vvAkiZ7+;XeO|-QX_HJ!PlbWv=f>ErW4b?5CzT6+SBAA~gj?=l zo%7iey9{!|z)ZpH7d10p;DJmTqA-m3Z~yHNr@|8j%5yBs59y3w0y%GI?~_5-dG^iMY+{k-y(o3YgBhw#y5 ziI>_x5m-)H3|*rG^uviF#+er{j#EnTs57bko6za`bl!Tu^PaEeB!s)mXw_*LPHMo3 zHlIOA0A*Zr5}I#MLY=8Slb^mbz4O+a^`dEjv({lh;GX&vxlah5j9!-x2TRE_xQ3C$ zpt^pG|1K|3u6FVs1`>*0DP(3;ed5W~w@Vi^8`h4)2_d2dQPa5{DQY|!17 z-JU1z_}cUvPkeKFG=>tle40<3e{th<>y0rA53(E5K9Hw+>24VV%(XlZiFMLv$|#3M<3Y=w^|s-$}h{ zTr+~tYmjLChPa+F>R$6{&aB_~ij7Dy>52Jqpi$8dc z$@n8ZVGq|lh;xw>*KjL&<9+2udU5jO(AQ~ek95x0o`E%pAg{Ku;nBl+#;+YI zWH8z#v^R~L;VZhxAs4rVm#+C-){hQ@uXV0vvSq1I78R=E9QHX<)QQ3wC`7DgkNdaz7<1q{*a+Fav z2Pn&l94-AtDk;UPw}xkh8wL_-G!jRswZV`I=w3Ca{03j0I|>FBgG@O$*CWJlLN;2| zRUyn3ukr9Hbv0CJpf0Afb!5|ru|)iYRbVN0EQ@2Ys0^I^@bE(qmXQQQiRYeuHpkH3 zTMdkXL~pQY@Zfs?{r75+h(<@Z-j`!sy+x{#A&av34UbOT&;YSm9dA%~g*FLDB`j&| zVhgiJa;;MmE%ic~_9a{cLEl))z542_(|`T1|9$$SKmOzCum0+E!*@zxDc5Cr9Y(Iwx^y}&6K9Lt z26x^BbUc_7CJd6Qt|aSfeUrvQfwH$*Gddfs^19|0eA*7}imU1Ayp{tE94-0qjF-}{ z1&tjp&syjRkUmd)`H@ACOw1Ta^yfFU-6m@cCO(P*h4}jPk%@WI$fW294i0VAwuN8e zXz2bH{b(eMT7(I#upTfLg2m4!KZ~eeh}-H$$v-mK<_^pMUU021+iTrdAua8wD<`qKOZ6VlRM}*m3?$ykBB4cheIi(WJ^1dMg)OhfHQJd` zzT(@7H%{=Wjl1v30%{Dr>d4&ms|{DsbDEmBg(mYji>JQl%uvFcF&6N(hxG&e&2of=knu(;nRs3K8az&9t;BpCp?g=exc{!E&om{ zeUE|QRJP{A%GccJ(MKPxu@<=M6Vmou7;{jPXJ z-g$__yE$xqzQuev3wMl2@pLwCP2tG`A$f4dPh8Ut$EIr;3741jPS)^w6EZh<)c-OT zc|Habj59dt`l^7d_#>ZfZm;lduty0y9NzHnuV@Q>)wmkZ4BaJba#Ln5_l;M1gX`y! zrgeVE7QMpzYWm^ra@>q-n8W&=|6$=b;Rf9!v~jiHunn{6(^0zBy1EJ9&-})@>5q+% zCFHfcSIpLx=z#Jl+7>$Cd8q@+zw09^TOLb_H`im9ahvzjcbi0pF7lm8eF9QdxI#%mvZc(M9dV+!HjMln9LHe=kTj?v>$zehc;{<~!nJuhA}t}?bNIuj?I zei}|b9hu1}TDJcTes;$#IP1j#KoBO$sAIz)!Rq8NSV9|KmBlEx1+HBgiQ6ZB*&d`q z?J|(aruPoFqP1~q4+0UeL9=z8Y_vu8B5Hpk41M~^<>{rDVj%H{|6_XP&wFU0=JmPLMcje4o#y*GVmr^G(sAVf+C$_|=8@*^-z(i6QiR znRA?vfyBER$9k!REN{*D@Scq6?#QVW;}aV(kO;j=TKNtPuy`Ic=hjow&wS=yj>FMk z>vZS_<}MCka!2@=t}TOzNsfxkVcMKF-~&J+1G`nkKNQ)M6# z8e`CMk{*R9vdnwCF}cXR0Pgt&2?i2xq@Mc3#vi}&()8lR%wrP&;A4+Yzw#G#C(^b`3jocy<>(YCxgk5P}*7v+@Sq|x7KQ=NEc{-V9^HbC19PJ6x_e+jR4 zJ9s+I={nY^wf}w93x8R&mKI#QZm&i?@6e{cpO=2uuyq)gu`t?^@L@cefSxO)CRE>c z@}%}en`fLk_#XZ2{6cpO$QX7=ho0_Vn%?fS8gKJ19L#cELKr8!I_4Hj-b zEnoOMjc0qLp*CTmJMhXFeCGj|3oIF^tIBgp|Hx;|dE7UDWgu3v81iUbd=6Y)= zB0mjV`0`x)-9^KoM|jgUXd5^Os`Y%m^J=`;+F#Pxc`s=~JJJq8 zQg0eA0vZMqja0t@F=)?o*8hzbW0|e;mdpZ zFD)dS&XMmZXz<_|b1;aw`R3EPa)Lw*B+6jo)Gal@^hU1E2yHrRl~09aJfQ=Hd)1i+ zia?1p^?BxK_%J}TRwp6t61vf%qKzw>lSc_X&lOH?$y}plA?Q*%*^4GVJU z%;^xp8QMS3H-TCBJvKD%7%NwGskDVsr=rl)^`oxC8p>M(6 zcH6luEZtScBbO;dDzkw|kk_DuEG#V6v0keq)y7~)Q-XyJwy<<4hflnB*-2F8Rq|iQ zi5E`CdVu|A3?lyIPyVbNGSutyd-Al-$sj zHL3U*C9)3N?{47P4`T1Qk@t2@*-X`RZ-#gN?Qh0kt>=}DBI`YreQVac1`w2I9|wLf z2}!9v*&o9|zL$LVlIuPsU5{EyV59uHd=Den*8ldksp@PSNt6|A2749})m`;oM_z3} zeD1SMz|(kC+n|iQoEvAg+lg-{zS{0Z`*IMijkkTc=p+*@e>Sh_wf?qvNIjGP=xfJ9Ai7t05VdesD-KgJ z7HNK-ZmYkE?0%jNB*=T{R26-RUzw(u4MA3MtcpL%sZTblF1&xCKCSVQH*=yJRo?=C zV^-FrGhV1BnL0&2tMSRK3u=NiU_~0^7!#ezTjD;oapu;uwFst;R1yg)5%L0GGS96{ z8czX=7o6}dZm;kypx1-0OW+6+pnMAj+$SZ??EYyVuzjO;YIo}Do}-g}(fmwAs*}rc zwL0JRl-~x6j3k^WVH|DIML*0{Tch7v)cNjP`TDLllCa@!W4YfgUT;IYBp#sxOo_08Zo;|y@{bb3Bl{qju55^qHw z<40cdjbafP~aU)*n0o_G!ms6Li zJmBFvkH*`ud1r}=5v#Wds*%eJhOkGk6RezaxcHs#vz+x?`kiO25P;>Tzp0}MFv=`ufa z^_pqt*Zl8lIeS3AJBzI$He`3<*b2E0TxpAhbNyP!9`$a8ZAZdwWxE65XXOF^M-|{q zyJWVh_{z1`hdo!lSTDfah##j+j?*OQBAs3`=h+RX&M6+o?&ur3r@RJ@xmoF|ahiVrgAcQ| z9Aggp3ZF5S{!kz2-Z%q)qy2?}8{?OfL3l%(_TGk-lbJbna#=rH{|^>E>24O#-~nF6 zho4Ah=Fjt}-y;uCqrbotKGEj#tjzpvck6t%$0u~z9;k~u>TifE1Bs?T_zJ%9&VHin z1&1(Wtvw{=WD8@9v1j4-qmMqBUVQOK(;xni|Ctv9U#mFs-f19_lXS{JVwBk^tFcZ7 zR!h;kLN?sciMrkXv*d39G19Gds?d>TbPeV)7L@>x!*!X{j}IA0WG&2|#wS_Bt6CH! z_FE#2x^DG}>=;1b9)kw=*4k_|ayLfrYmua2iIq+>khmdxBN@MDu5mu&wfAD2VBL+P z`0T*f?!B)*v0<&lX&a-?hDvz{*SI{d=`J3&7)TUs3?$H7#h%pu$l^rkxOCyY`2>l# zbArUB=|uX0TSBMPBks&6HJ-fl-s#t#czSyHw!5aAb7JS|&u*A*3I9t230*1!iOUho z=h?%lPi$nb=Zz093(Z%!M*II#LaeP#BU%OF60L7|;d z|DAZR4u6`p_HG;Srmx}9&Mlwihxfk71@Bys#|KSg>?&M(@Lb2qPg>#9$=6;jdfdB; zSigbOwks>?jS0D?tNQaQ%dytca3zPNmBzhGem&n;UlX+|TX7A`M}x3os4@C&G;>Ac zxLMI^3@@FlVff4E#@XQ==lQF0#Y=eIq(!)}lJCryFmmU&EXb%~@i6+Ykrqs+2N#56 z+z?sa@c5&Tm83c`z#jCwmsp&mn8)`3vrtpVeFb?kGMEF?gy^70fvr34O{NgIEll`M zH#&S_@GsM#shx0tLqTn{g~pt^pb@$CjL$FJT>ZkZUW@|IY0>{h1~}!r&qcL@Zq>E0 zAO-ol=MKBGg!Bl;JH%1Z`m{@Dwe)}DDg2Z@}A)9>(!$~M9 zB`C`$v=u!z?#6MDm(w7j^Q5v)n$3=4lmBhccyuYB)+KPQA04M`#dn;>L4)+}yXU9x z|IH6Xopn^xf7t$26a)q+h;%3j2HoWlQ7IWBNW(x{x@$0LkyK*RATg1WZbm5G6Oh{I zF={YI4Fed#{4+-QIMEjKcYcX29^CvS*V)lCWw0Mrgm3f2rV&qq4AFL z+ycWs--H?8KpTE6TCLI)Z}~7hYc@OCbmPz>P{!LYnbpw(_`~3csu^tE@nLSGwh4Q& zhd1ObQb~Ex-qF|05mt9Eq5kjHydr_QS@(bs%5|p3{9|B+_sEaPD=AA6NAoqq>^sdt zw2vk)sB-CN=eQyrJ5}4pm62}=g7lXyoZrkt5tdi2&M*tlp2v)pZmQ~8s$u|(dLhXxAV>*_xjoBEiKHz~c zd)8nkdpo8ATI7_g21WGUXK8lO51uHdT#GDmXCP-zi=p$PP?(P+TL|f*`Feuj)j%ch zQ(mR=Gpf!V7KYy05++5}DG%i{Kl1U~Vyn0LlDXJz!rl>9OCgixqNLbn>Byh|^hD_w zQNH4=w+CaK1sqwIprB?^6(xn#Jqo?rD~t@F45yd-sSL<&a~~rZ-+A9b2FMbO`(%MX zm~yH=UQJ*UC?9=MTuo{aw)o) zt5d-%uB~eO98|4l$Z5H=fS8)~F5?a)&tuitfGqhkkNd{b%EHmbE&JZ>HtRV#9a`%) z8ZrQW?!b+FqJ^}%{p*7+TG14}pSGTy zjAhS1Bkr#LciDW_5=>KTbKY^7@wD!SAwMSHR4^m>$*F9%7F5H2`sqFwN-58y1lncl zm$t*mS@A%~SQ^-viN43=$-ci_QK#CiP1aM)?|Q656wg-J2DB1v;S>%0gy>a4!0n_S(hlMW~M0dHQCeCNSY5%}W@s#SA zUgt6Q9+wn-Zl=kzkh`K!rGS#!&Zpw}7D7@)Scuj?%}V~xssXuMaPrVu{eT66f9u&# z(LcdAAL0=frSm2RqepGdNRo?_)SWz3^s{xQRKLpYF+dzWL=a4dt!}S6KL= zC02IueQvLA#4zaAtg~}xk*mm7_FoEg-k$?kL03ucZdLjTCn%9Ab%K@y{|B=XK2}7( z*|0z7GF}YSLiqCK9v-B%tabS%aZNsZ?@WkXuPu1#1-kVn$CfvrD}El>a{jVs2v*EO zR?U}}qskc;gRvirZeMk7@6TJ`4>(0qGg^o12bA}|%dg1kx9`i|UG(6QJ!s$pT_SDs z<2-fjy;?@BxzJXGL2@NCTSM?S9mo?FVK2M;DKD3m7QP*Rnkx?C@y`SBgVY$@2HJ zuJzh*g`GX6<9{{GDJ5HJtVd1DBbMYpDJb)v_jU%W`h13&D`M%l_oz0!SdjcB$K24s zz>Rvv;!Ncc+U%L-#s`qxj{=@Tv!0g$?!k8rlt)cg=wx%hiP#`8hgvuWiWu4G(BDOi z!K*QX#n7YCOGmPyrmp~)?I%!ui2Y55ZQ9CxZuR+C=JoESy1<$mrB~C`{kJh!b$2|` z`1B>k^~MmSznN0BHgx{n1dt7mDd3@B^1Iliq)v4DTbeKzWycKj2BtdY4%+S(>^j-Y z?@0ZN!YTA&%4A_4FJ}Kt#zIO&>$uxkD_Pt_6wH<3hqyTklJu$xG%56zR3mO*%%-b6 z*J-YY_z)m@H|%GS_0Tx(CKmY0^l_VS4$_Yr$xthFluRp!l~?jZyt{g8+#7$v5GNMQ z6HQ+MY)f?y8ugbHeVKfCD?skSTx^=n=%-H1>z$R)TeKD|fonAfn(}IQmm>#R<~>_u z+yWQ^v*e_vAlssOu};RdqJVZ6kX)A8jbB~oU6TvH-prSk@G|05GdOZr|u@aDS zk8{o+j5l8c>{h99ldg5${WSFAu}$P+Skkrr7b=ZuY%-yX?1sI3t?7?7F}W^QgC`!! zDGwZ2XcW6v!|(Y&hSH?H=zhkRJZ8ktrham9G%Ww}dxA3!L&6iJuBP=t$IGup>ifz% zv^NF+@Lp7JGb`WxskA=Fg>sO)=T*M&m`lK}^;{%Q;q6nhM{`JY&3`90z^NGYwK0Xy z>A((akG+nJygQNf7R}WxNvot2Oe(?3LJx2{qag?B*ifon283+yujTi2^&;3`-Ib9# z6qal7?{_OD5tP%p#i93UmzLR*-G%D=I{NQS&pr#=b=U*2gM$wbu{sxo(PH#j8#*&& zFPvvcf|E`_m8&&-keco8h&LzaOfxxQquX#;(7h#L9Bt9o(v3acJy$e8sG=rc5(Va~ zas%Wt!!s}1iZsBDUvQ>fwk?{V&IZTStu|)ZbLOY3sj48Z z5T}!T+3qfw>!wqUQc^6p>6LvF;sAp#r^{ym_BC87;M1+m7!32MWLVe4_489Cj07Y+ z(u|#rbLnh3j@PpO&cv2-_P3|W3n0+z@e?&bQWAU>EN-gV?WK3uePV@A-?v}!qA!md z26@+UP97PI>qHXyNNs+te2ofTSfys(@$a{S6N$66;xf}+S!Z;%!{W*tot8>ZQ8Q>M z+V)c(kFT4V3#V(O#pTptiw7Owsd$WxTUGk-tmFYWPx`4SHGxf!WZ8^#24_8et@QU4@5G1f;i zjUMbitav(`MGo^92niZwi! zVpt|zt+*;X`*o*w7oF>dpAG1E0G9Zh;D{LKea(*N&Wy3H;>xOBmho_fYi*1jyX-$v z=z_kv3u_wa`GuvI5vJ|E{*X(Hh#*wJYi-NSCTcsn=19LwCkOe~_4G8&EdHE0dI z_d2`wD375|VEYFBx4-vRexlqD;&Ode6V)uP|DdPV8#TcVzs%l?Ga$hU__dDrE*efN zDC~;$UNwF1qj|okfpc%J0J6*xoiQ9fV_J_3xbS95+vK9kT%UH+-899*5>E1GvbrS3 zmyaotdmDhNdnutWY}Qi32j$Hd+ge#q$&V)T1y&6z(RM`SXcRj2In$wB-;$L~Fk(}e z+X-(~JIzCR{Saac0RGy^Je{M5ndyBpr@#4JC)Ma$WU{g$5qJh_FJpSwT5_@EFaCp| zKTw9XttqOgF>XLyc1FMF^{@xVged4*Bfp@o^L~3m!SL>K;Msjo!XtbG>cj)|#a|FE zw;EAZR+C?_fBHL0=QsiOv>?_!(&(gzdBe6zASLv-LVfl16oopOB!`e}n=jw6;gB8( z(gwF3B?2B;~*VW1{42oX2@xkAe?G+UOfB!1n=zyu)?bxU?XS@G5FR%n68AgB}6_mN)r(_g`Ch6_n|E!h^@g%Zb;&XKn_)-L8H;U@L zrKgj(J?n#I9{8jh%c%`KE-Ga4!CRpm&H4v65Ut)iWwf7vkts|ylzYX#C5MY*>8eIz zCO9^~=8*@X`yQz{G-7fEAN{p*bC~g6cd4Gm7!q{c+KPEPD+8-%g*4PGT+kp5pb8Dq zJofDvPqR%GYt2m=3$iy$7MONI)x-uZu zC1PBZ`zY{hF|zwXHhBa?eR2h}R$3yC{Zm`}iuQ%q9>im8O$D6qOm0M%%ihvIPIZ5W z&i0<55d=q(@M4B9B^Aok=Y3594R)+n<{@2X*~g3bP8~$~;vVqqg?uP`dT}iQ@`A@)&Y~%FkO08y8=L}>@t!}yO6tg zN1MjXIiO#dL(FW}&P-%p8);a?MJ}IVpc%3uKtP$4P=&+^NMyiL=*Ls}r`C(49SlBg zvh7`dU#IDF!MFF?ZriEcR%%L#`)U#LK+r0{BD%CtVImzigWi7lb@dG>z=zEzT^2Fe zsOxLpnRbyko%s)!1BDV%#}^Rd0-Cgd6}`lZdi{Kr5FPvOR;i0SWh{Gsh}H+=FG&`w zq7VP{qKcZXv<@@~$FA7btR6Qu))%AiEE?nmUpp>QJS$WX+x&SD%zFbWdnJKf!4mgZ zx4A+T+n(25N3lC6+gIi8a_a}^%sZ(;81$eu`{fm;16R@7cQWB>L3e-rJSgbih7`V3 zot9s!@aVml4>^pbd`($AsP#?zvrNX7IYO6? ztJz9<^dB8e%T3~+mdXD=ep!xKOmyIC@_>JDBi>2enhQ+n5rs~V?e~ONRsFMBcE?Uo z+45T5-dZ69cyC0-Daz$i#y0D+5hu?qEj%@aOe zQ)0UL@6pP=WV@B@4RDH!E!jktlgCI*Hu zgx&^~9iI9rZ}%-C0{Sy|_@Ara8+h;=HQB8adza+>`hc*=Z!#%z-RfQ6Z7m6Cx>7gx zotbYs4vJ>PhL9~Z_PR{E?18ElauWFML2y^gB@)`)pl%~#os|e2b*QL!>7mxaL<6N7 zzC`F4G~ys*S1ZM%rCgLcjb2>fZ)~A_iYgpGn63YDU=oR&S4i0JT}f27u;!_4xJsdV z)mw8=!*s`IcWJZw*7V8A0J5J0RJ?Jji+PkIKBy(yrhh7hun7YPxc4r#-EuzfptVQF zal_oLvXzO1Xa{{)9$Ra*X36wX4vq<=%qQ3lPBUZ+VaZn-htF4ZC+CzNF6pJTrw{Y~ z!E(htAPj5U-$Q&>-kAH}#Yon#ozo4{xb!M4Bk4@s&h2!dX6@(DhOoIOdX0wiTwSt9 zx~pE^oA4kc+m(YbNvEo|#r)K0vr8a;xeJJg48Pr9ibJ+f~%R+QGO*P|;_a$cL6xL#eJ847;-V z&1N_49Nx(|Hs5$lK}p(^K@-ePtNxyfbem^QU9mOXu(&=MwQZGOTI_nIVCA8!*SYun z>9j7s{qe7&--e&k>FqCWL@K;)_kKN-T*@-wI?!`nELT_ymNVVsOi-lbQ2zGa){ZFlDwp+x1~ z*tPR9Eo(87!>}+iIwa!|;56Gq**5iE#3z`|=f|7%=-sj{9+HK{W|$tGnK?^;(H7-I zGq+UF!bP98{mBq*6FImUSP0O>n;oE1diw@hKe*%-0h$?pdfs0xoY|d{nB&eJvkgib z@OVJU_}eJAPfAp0&e1?uRK(_BFzY;7M?^~zhkGVo=gXk7cd&wUEP z(TBT0l`f4Ln=#wpq5*?@N%Xr@nF|`Pz(TQKbaD#dsn*w`jf!w5ONx&sV;=YXI8w{2*vLoM=LmFi}V z2NeZYVFKR4-0eX7PoGe=f;bFvvyvS3cVks=J;W0RijIpDDGrP*K9LMB@!;2pEFEX1 zy^i3LZn)MoOi&%5`u*{jlthL1W{lrUtww`S`(rIXy8)*!Apa>_+EuL+w$l*mPxLX% z|DA*tS{T)oIXf#acqJ_A(eDiPE(%JrH-u(*4n9+7X^dAi@t^bv>;E?Kntve z1uDxPaBO8Eu`6w7eaA3yykmf)y*QGax4@yK`4;htMQA}Fk-c#>refDVuM|>!q<+wm zU{7*#6k7gzoW#JHSxaNeE(DOTz>0E*ndYqWK}q+(P%;W?X7&cy2<%Wx^{90<*}k@G z&I-Wv8_Uu^W5!(BwO9`t_d1@{0zHKpC{G4m*{G?%3d(XC0}>4-HqJXf>mAX-mH*1R zZ``VUJr}@z@+yEuRHNI+zuVU+TGR?AHoe@Ab!9){O3TdW@iH2`X1>@L)fn%esNx;nsLhi0S1s$trnY$34tEjSCCu9fH|?|Xr*9g}&5zd9NZJaD zWphk&ks7_Yi%t^$d7=~-u3hGvQ?-oHttTL9(;}Z1ZhaYGqYM|s0oz%kqRXL4SboW1 z+37K?Ixc}}iZRSV?14<%)Xuz&E{?+SBXAUC#Y5+w_?e&mUN6my0{Aol#)A#P0_qu*{^Iygd> z5zf)BEGDUf2*IIHOpCL*&pxK7i@w4 ziTO#P3Reif`?&y;eTCR(une_yK9Y-`R-pUjgv+20nXa08@>d9#*$k@rE9p-7aoB>B^$^)_;%VI2x*O^j zWjJ$O?@StA`yMWR>^N(iI5O-Br|p6%(Y>|jn$6?bmYMc+2&f0txy=4{6^$xeG-{a1 z_T@nBSZN@d_^K(yTBnU{YK6;j-fd@hyk*dMo+Mg+>1Q*{%~$>f1bt)TPy0H@c^MJW z*o|p;LISQ;Cr{*#3tp2`I^%fl5bIo-(2OGf#UI`OBbVwI=fwKzTX%pS3}iHzItBTh z13X+!Mk=2PA|!*iX6%bwc899Y#=*H%zbXck?x*j(L6}5qw|vn|ad4V*w08N{iz9{! zRFK9EK8@zMOvS}>v8ruoZOQHZwX^2T{Q&f`%i`a#5inZZmK~dvq~{JWeFDe5tHk;* z4{@-mEtb#Kez7Cem@^!SepEqtD=sAAEg5ilDQ=!tnP8cS{dX%0)-6qF718D4^nSON zi|1 z$$JaRb1;%aIiz$oK?VvDrVhWkGAWb9dq!>=t$Y@34~_PUhl)B71aXW@9h#_(e57ib zYKRkQ5R1fKDt}t)QVWC%-r$->)nwKIZT+ie3^hqB4GXt%)i zP_^P9H+jYElMSRqk{okg>!Vt`D!Vb}_L{4*9O|pUGd7(0g@54T@~K492{M(am*k`?gij7JFS*8`(hO!Ki3kd*ZoCCTS8j`=lmN?4*Nv1Xm z&eM`h_whfrogki5bwe824H^l#R4mQ$Vv- z@5>{r%(h}6nn#XI^6q9Zy{EL9hg6B2&301{*d?-&pQ##B7HBH_*jU)j%(|z$r7u)C z6vpPfZ`Pp9x8`Yyk0G7*``^fq-;gglRB~$~tpPiGx)%it5jA9Tjb+U58g)?P=c2B| zLPNPf?vMP{J3S+0nVU`=&tvn<8^ViSSJk{%ToFw1=i_3AQnwZUI(ugW;sG~6 zxg#1hO|rk<9F}zC@%>~Cjf~N(6k!MrDDZrE$6Kqx^3{PI4JdlOJ0uFaM0;4>po zvcGR2KBjjond31R-xr0SKxWmMU*2i5H*{UwLwnf%im^Xx9xJ(jO1tebpCmfI>Cb@`kQ5xcZ~J0uz^8^-&2Ugn}WML5@CWZBlM&qQ`@4z5T$!B+a{#;h8&f zKEKV|-HeY%j%H+dn|-<%!G<%QBUKH1Q2Z0JU=?ZtTXc=hlblu@5eHZdSRJhUFj08- z*E#M+gK>yywbAuQ$A8G8qAo`$oCAs(g;%2Z`}Zp1cn>j@e<`PUR_{=wlUF+wRGy~= zUyJy2XQ~{vafB^15mKKbN)m0}5*!5vK|K zR|Nw666g2H2xp#{C^Ii+)|>b_Ncpw(%(gDsr3z&*tYiFtG;Vi(ds*+=94|e6xb@Ck zmY;VkR6}xh|Dr9fi~%=v6o%xCgKV;#L+nFmYHk>7H=>WQ#*W6yQS>yf1o>3Oj2elBnve;gIr9`i>+ z?hAePPT@+Lm3yN?f>2+yc&91@T{rDsu(;*E1~uhXBCmvFfH$!B&@@EbaIm)5mP~vG zZctRdjt?h%!P$w=zE5r1o^js(h8qu`$`#QebRj)Md%eKfJm%JxDv4xx*{kKgWpbHX zR+ilJi%d`D3Z)}WQQZIfp69yuhPjwWKaMuSdl<{@JDDYhOZ)502Te07x}~{efa9c* z7MAT6p;8 z2cz1C#JC1?L3|8r~^?&&6R@qYS+~yMxlfkh`jp zqA7lxLrsv7oiDxIPg-phfpDPQ%{2G#-0{ucze0bPjlOf&*!uE#&GU1QJ?y}^bLQFd zTY$9d31J1R-^HdrAGA3{IN3RVtwR>D9LGSp1+T|~`@yT%V@8WJ3wmT{?E7EVf(v&c z`5`U%nE26d%&89fWZksq%BFrkqgbh33HA19=Io9UM4S=`ZWlX#7WdqQZm4~F4{*vwbvDWjIgk4s-gs+6g)AHYv z_9n}6*RFcA&ThF#B zp-YZ#Dwbi%$twlwvHLJMLunX8&Y0qMgIt~mo-4)^pU08Vqws(s$0jewGuL6QhqAru zx3w+zqbfe|+&{K4J{_3*BTceYY+cFF86Bv&>C5wvdH1?(7T^QIkDPoKzhK=Gd`YV` z{V$(Kn6t^-_?=uEP1{MnXq_l`W0ae*{_>whcgH>kAmr#oWj03-5Uib(_!RFjQFem? z7BQ&x{PRrsElpAG@yDKgsp3?qNwIV71{MlMa+d1w`dfv@@iDnYo*TL6UOJI9BXkOU zfV2#D_I5q~hIxKqWA^53GNTs&)2(^#SqUX9j?V5rH zv4;Q9gS)1a!Gnib#5wFzBKWukJ$wZZRlDmJPow&(bID(y)~sEpRJRMJLG+=B(Pc2{ zFAHnseMc*l*d zJ~SexO~LhjC0cjdydc=TfhW6C4g{?5)z+!=)2%Kpz%z`AK<-6}h+w@&>*#$mXw1%y z+<*N-*M8ni2mo~Tz-0invow=eGqrwT%sL7hG`F3SsB z0dD>#&AZbI!QGX39kgMrW%|vH2JKrZho`TrPf-et^u-fn4SR0fE>{OMjD+HJCSULo zE%;LZ!d^cV`Xydr$-A$SFeP~lb}5!{6F_s==Dz-2kNCRhw%@!A!&rQbgo=28cz`Ie zfiO30crbHevBU*kK!}7sNq%<6SBo?o6`La}xG`r*PeUHTab%(PKMMG70IazLG2V+k zCNpP19_x(DLpvSRvYpdt)R+FVr+yfldS`wu_`=>y7tov@=-9LiUmSCbuirWUaL~3c z)L(jLd6ID#tC+(;HLHMX^A4W*=X*a)9I<~Tqlm)ItRp|P=EuDXtcOWhGXJdl_XFbz zQ7(45{az34Ah*S1)+^=lrWXFH6f=@ZdyW7{i}$y+_E7=_ zAILEmVzxGTlgZ4)BEU7)nz5@(6GwIFU`&t^B4E2ZoMAXy2U#B1QEw536K7OFhuD+) z@6u}C&13x%N0;NVthVw|joS=~9_{KFXQ;O0RGA`B14x#f`z8tQ#e5qoTa&)p7&~B4 zq+8d{;XGdXan4n@?L3hYT78plecFQ$wiLy-+OKl@>*tt=TOlRMzMuP=kiyvHkbtF< zmE&ccNkoBTKLs(9ir}NfdYt87aq7V^^#HWMUvtF4&Dk)5E8T+rB-HeAiP(kg-?4qj z#p+ce!V>~(YhE*%Qd6RnB_5>dMenY4&q+AvmYMi&+E42)fm#>Yp~wc7i|i$hmMXpp zf66Sp7Wai+^M>rxUQwRW32*XiD3LvHn`S|yXSqc7;a!zd(=2W&l%s+{jEpP&Yvtcf zUpDOvEOzgIFnu-q|RQL5tsTD)%!KI!}^bt>E$m zzchaSyeb4T6x2WSujq_JO8=tTqQmezmofz|A#XVPzkRc(6q%U)Rn0vvFzsx<@7-3w z^6!)DCqxD3DV*zizm717T$mgu{UT^;ju6iq;P9pxlXT2 z#wu*a8EO!p!T5%&dbO~5DvQynhbHYWVl(fp>y9k5s+)P&LI(;#iG6|3|2ChDynhu8 z>ZWG!D+DUtp@^xOfe2C1JjeHVTOyMUc;xV(t?KFij=^2Y#9?7dM!*BsLouTy6%O_J zFCG;-zJ<$V9{sgc>>p2<*r?(OsIP*F|8wcH1pMQt&n-j*W#q=so&)$$keyWQ+bMTf z&8I+S6Ia^vV0rQ7enng|$-8gr7l2x&@w@eieFutROkmb96V3a(n|Oewq`)cXbm zTe$BF-bcV78+b zlti)oA@HV3bFp7Pg!ZRGS0UR}bis`5N84NZdKT=O1bgY#e9y_K=j^mxv_Mb20Os40 zRfCk4mO9G`v52_ovFoPN%ENAAGX9Z?sKAKSvOd|1q0UKwEkLSR9 zKm{L$*J{tQYAkFN$rb^{Ohbj?8W2f0`lnfZ8l(C*-sYP-b%*MHQR0gN(Dm&*)kK=L zmd_3}+&@o}H8c&G&$jP z`TXgVvtdez-QIu7S8ZL*BdD9fW#M-nMGk6p0*+46_*HFKQ5LfmzfRbRWB)ECP5tI7 z!Kv96eczVV>UO6`P{S(9PtGtnAR)BI!SYMT_l#r>p*Il5?g8=io3>u4NS3$Wgg3oj}@{xNPZg0-stgiQDh|0c0+M zsKpXD12iy`-tqO4Yq_-*Pdu{g9Wj2u6HjT^+Ge#x`Jr$Ipbe3nP+9zw$)Tc3n^3 z`&l|F^^Xr^iK=2sO-cqG4^4Kp)#B;vyvDq86CY{_eJuc*%0pO=dDof4=KgQ2zNVa; zx7rKqcd#si9X{9iSxMH>-8!g2Po`<77rQMYbP7=;qKB{j*QB?OtsLfhkdrj33^{Yc zr_59PnPTNoEmVhJVBj3=m#r}!n*&qf$p^Fj)L|B>IDFmBbl->8>aFzb(}%-eu(o=O zCeeVd$o*|yGkA21C^oX7Kg<)H!`I_!es__*_tOkc)@7>)^z5LIr|~NlU(6zN6xxDi zEy&eKerLJ<1kKzmsC!m!$Ys~+bqhzu+#4ll;LRQ3cjM$8`VFc(Hi)He%AlaGRAT2e zNuu6vo9WXO?2v2SZ`}oy^n-=7dPcGu6s*zMG-uA%phP;X)VbW_IkyXDpLvunSnZn$ z*bI|pF2i&D&V!bBo8xFiuBc*qjh<)u8ZJm)jOT(00qaA;o%!Re6_qLntl;sv3dz~~ zKA#r@lV6$dwkmRiSWJE&M!Je^pxTn|ABiQ*$Jq2KzpL0ZgA2_}heYTUmn&yZDW!yP z8y!*jt;}zVK6&~Cl=D3c+^GlGc?}+<_0_#wY{w_;QL{KN6SD^M8}` zMl$K+s;9eTl0RwEa8r-tL4QO+1KHx9t&_x?xv|*CVv@2RAd{r7Uc;VS+Y6*Asmz9- zZq9XtmRI*uj!t$`<4q5d93t?oWAw#T|k-(;vJ6@ z$+qGEVE1jBhacOh+49AGHoOF5O*k}7_jUz&K+1u*Y^<9#?>+)W+9#~Tc|f_C+E10x zt#nrP^Eqr2CTF;Dy605e3o1!;sAjh=&nEfozww+L0laFqC_ih-#v4VB?m4A%;wla| z{f+2ziH)Z&28oQlOEqX}HZDRnr$&L3xkW)j339!JIL}h{_3_)f!j>3!fANtC*s_}o0E=!M;3Cxwer?AjT~W~(Sk%)CyCVu&SS4G zdrT_b9T$D1hqI?YQu(-KpPS>=c+irkO^wA(j(0|-IcH+|Sbn9Z4SB|ReYvM*K+p;p zGu@Mgkow_oqkZXJdGGYcB*VpyZ?Px+-Pe#AXNvN_@guAygYCvQ8&h-1YH3gU>)m1R zw9BuVy?#w;uFCo(5Hmzj-gv*qyZ>)BHi_>eF~l(C!khB5Y_H{VPef=*L5a_5lOSi; zha6a~2**d2VkxJFxXOx$QjRuDtp8%O2Wplvg@Z~8=Cdp-F>-6k1!g~=w=)g)ALDoM zoJ^UX?ydSU=-q-e7Id=kf5@!Q8@qQd8Wc`F{%d~SkKFb^&e7F2J&yokh7DW9kWzh7avIDn2= z;v+lN9Ax+N&fB$|tj6#2K7bRtpWS~8zLQklDB=3~Z|PBu(50;aS4ffVuiri|kJTQY zxp*$z^}VBT_ho}yb>(Z|+1tYdo&X^VY8R|Shr!N>OpHF8;hEf~T^$ucWe!J*5x*bXsy>zMvC5?V5a}DFw8-MIe)YHL(3b{viV|FxFTK`sjl!SC^UtO= zPmOXJ$n8mhBmGC(ZlwHg_ZW1MoN`BCC>Q8zQGHue~(bih~EvaY?#Iy zqNDW{qzF+@t(863_6rE;w4!#)E7+6eImmvU9h z+#B*~JcsRoUvlH&NEy-xw01yL2X ze}jTrP{3&89)-WDUG{V;ahOLT?fm$h9n3{lzxMnhON_*)Fn+w$%VWS(f_TrnRJ}gd zs2J~^-5|ElMI~$gBVgtHZRda9ErpkYedm8zz-8xUPK2z+TV_Q(p8x*GQPm>s{3zV^ z+-lE2@eRkSR}-sk#Os3(68w56*w3CT%}V`-97`XJtZ!o#wa>Cav&E&P=S1d&`l_drha4l}#qoilgT8 z)Bl;Na#meTD^1?|kNLx~|DJ?XAVnojdF5~7t`SPx-W^4=9MhXT;P_eN3X3b?tzG}H zGOZLJdYwx@T2E4wfiMGdWpzrjKA7w`wU7%sA6J8;iRI{w_S1Mcyak81`v7XvG-r$2 z^-`8jLrcyhbbcGq(=yJf}Xz=Qe{&WrHy+ zm{o(Q^K`$7AB8uU!O^3SLc0PWU!`z(#=jKb0}CuK+2!2e*d>netOx>0?%y^ z0valzU3+E|^=ppS>rX$!WSi z3D6QDcc0PHQpBL5JDD6rf1J7pbobV=$Pe$JeHnu#cN> z9wz+fOO|}{pD!75`XuvltOt_@Ms%r1Vzw+FZS6H>HoV@nwO%{3{FlP|@m`jUA;*wU zrkkscYw1p<@To8kK6e$kbN&!Ty2qwMz4B5Qi0#rEji z3EUjxohmf#+k)VVkb%~%Y*w{aQgVaS@Zw5%F0qScNTY}a<1wS=M-G6@4ft8 zPNE`F_4ErZg1CCJs^&T+dZI-UlLl{3z6X@=D%Y|1woUBJGKQA4W*K;RRK3F4O8b|q ziq-oevM!Cb{_qrtZ`H#m(3!E45ymdRlaC?&6v4T_pS>S@YGGGH)?;$rlNx$Uv~jSN zl+3CK7@2Oq_wvFT-QM#!=7&TA;C|Yk{QAs>7_el2SV%b-iu}74*EZu|ay!XcI4unGbXZ?H6uf~ag?WT;I+ZdzMQ9AM` zIOrRM++(=kr*v&-XMXV&+3RZiCh}X?)gLNHT&XfCtZL!H?8{xP7ueRRdo8$|p-a~q z9(S0mI<=Zk=&ywH)4f=x7%lCxBg1IeIA^^rg_hFy{+wxrG494=$=Tl0y)P`Eijcg{ zQNk-N)NJ4BY+R+Dx|7$q>=MTPH?r&(0{hWDFHuU`wly1lo-tn{5)Axv1yuUgY}rZTEahqt<~FwHf$O+0<~f)DhRmSOjY zU1J(nUN+&pZGU;-^<|QQWiMNmFHy(E=u2n_lz4%LAW|TcH;cz@I^CG*EGiGE`EAC!!W1Cl$2+6l|0-jloO8&j&+YTXW`1#}B)Q?q?Pm%a?| z*ti+#))E-{y2V~>#S^g`8&zexq<#?}6jK^&U^LE;t1Txrh1qaY%GCK4evL{7Wwa~B zA`|50^OS3<2CUZ?yrSisFe{MbA>QG+xJtxDpzzP>Zt!{HpnA*8$o8zB2Vb&N7Vq-<0-YKH&O6{DkBTpm}ST+;j7| z*EukJY2pvVhhHwsRsi?=fpnKAL$4@5rdxhGh@X;a|1tjiy;1=xE2ip)TXRhkFd3QQ zIx@$lF5{8k+jH$5*xqXAL3CRe#%8*0i?MN&@l8R{yn9i)OEG#p*Zk3hb)ll~g(H)Y zYew#*jYRE_X@Mw+ONxT)z5FxYWIOAv7n9#VzT{vEq`gw-o-EHq#XZul5Zvp?v?vbt zcpiE&)aFa=497H>qWoBuHr8YrcI&_nsxS}4uxD_H=;y^sNK*sE@$dGkr z&InkcA~!RwfS7H8(q`Zk#%V+F(!L(mS1s5yObF!YjnwdsL-R%C6d9em;dA^Wv1{@1V7Fnv(0B(rqX?bd1; z|Lk_x$|z-n)Ic86AnT+_NiiqxY=YiMOM(ZZpgm2-iXN_|Zz=U4$DwNnwvF1&85ccm zgdLqD{PPMP7~?fF-Uf3A z_3IMTtj;!6U^1#_yAOC{GrLSf2G3NwLl9pMUq#Om0O)xS7v8H(r23mq9@&Y0)y8Wa z*{G!tAFB|6w7ov#=UVNd9@Ony?Q3JVGgmU{(Szt)y)@2DxW~)(I|9wWR6nZa=}Z8! z2YgOfGS7p^2#yD3M9GdADa?CL6+yEEHb2c5{X)mbXunH>6BK7yGk&^FI26n+^D)j8 z0idu<{FC%U0gmL0>j{nheQcJ(bkFS`c?+A`5LfMgbA1i#)lI*}+7mZqaQdUNTV6|P zZmfk}gZ{N8ehZ*4@h9yWQ_{h6ShvQVi!uDyps#|1sap!s%GMM;=kIXO)iC-yy8Uj8 z#t+DeE?30Ki~ltB=r|pJ7>{n#WBB>ExwFEEr;KN}Frx_N;L9_pDLG}crpJ-fVs?m_ zFj1W7$sP&pn0?lTygtuC+T!QKP$lxVX#p3sUKL?l@u02)ByY+lEs3!ycIpd-v+6atE&Ph;{VmoNQ&|S zOb(rjgL>}o)(nadojyDh+xTR)uO>fpW&@yh(;#{wwUMg!Zn-&amtU}C2egv+`n>lU z-6?=1n5!))in$(Rvvoa&828BLORSDF8TcvWc|i_c#fg%sm*lpoe!`J`Ko z{+0F6x)n!gB+u$Bts_4tZqY6;U0upMt8bAS9|?-HOniO9EfoJ z?VRPtXMe0Ags1@zPI+lTxAM*W?UtbB|03n9B(PoZva?yc$vjJ^7Wq&n*7NHHlY_0| z{uF3?pX!&m{gChFVtHi;IsVIbeamFa{$Sr37`EWgP!Q)&?+EfTwVW)E-iq| zH0n3+)rjr%lFIwb6k$u|1m-k7<`fxIzemUE(|x*~dnqNp7driG7gXq#s==?e*>=T9 zw;)XOJUBuzgYWHUd4ip}7#`KY9iblCIcogExp|o%#;s4u^^)bkQ^z6tdp6+?#>X?d z9Cj~$>kZVtAiVn4p%jCGR{0$tI~&^ej5s@}t)IWeO$hCOj?r*zcZhI5)L7h=4thre zBJ>Mtqv>Vo5ibcb2oW*VITe%R8IbfNv!^%y^q?z6iRFEf+jQA@u^5U!fN5rRmM^PLX}D)_3JpLQ6R)9WvE-rOf>3i_HSIY`Bn3o(%nk z!t+C=)!;38P9)8$_QV+tC zKk0oTOxo2w-LcuH`lf4X@Z8QE{;CU*k375)0E6}-BVAJBMy(Qlu}$*Yo?-79;iKfO zf*V|Tiyk|a3vQ+=d%gQ2SCu>K{txpySw3m6HPd74pk2VldsfgMPT}K#lsYspYCs{c z!#x*vn{blea{o)71va5kzKdt6?Vhh9NFb-;UquvaCW>M-oOjQd+|=m%2Tcu~46|KY z{pHyO)P3e`f!)JP$?{X?`_R<5n;8BW)lVpC~ru8ftF^_J1%&**FjN znax>?zsUCHgwF*fhWWe+q|EibTVhoWVZL~H1cu`Y=l25b4%Q>v&u3{us$Pf!ygzf< z5E~zt`KP}0TH3ZwX$V?+{le=$3PRL#E<7IN3&xJGb6lRsl5?H3{hm zr1#uPrg5{2k@N*-&#!0oy^#xl~yf#_U{*cn;kbf>6gjw!`GQ~Ca zEd{E*-l)VA;Y!5IhN%l(AK=YET%co>^V1`J^>oJ_L2{dm>H|^?A9=a+i z##?3k$y8kc9H)-JIm#wG(asE)8n39NV!@sPbSoJi;t<_L)DYG6U zt7hMbTCcAIV1HW4>`}digCdrQYpYx8sjVwZM0eENzDX8oJP9V&p3W)qb{KPocpjpZ ztnZVT_oSc@Yyc^t-YoR}L%BixprJ`gC`J_hR6>~m7?xeXcqI~7J>R9c1`jybE4@C% z8!q%QsJ!*u-DpQDx}uDZ-BOLVrTg3&!GOg*5(%XkKy8!RH09n?3kNR1GvN?DmGKIH zy*@~#doEI|<@6PHsFKK8uqxt6q9BiSSiiwwO<@V2|7#(SOOgM1dqvzY`y{&^Bz^{T;|`4X zGAHOP;Jmya%0VgV@I;X#J;%X+3jYcyd;@@jOV9okM4lUG=uKbbWx#+i@(1`t{BH%0 z?Q+gq&eb$&0}&j9P>^MjC<$#{V9@XJcp1!`Thl>YOUWy@g)=!&i)5*HLvUEL=u7I* zA1S7F#q&7wDhVZ_uWqMp|D#psxLg;vvddViv01Pu)+I$&C;Ie#W2Y&MW=(p{z5d;S zgf^6vk=m5xzEWDK6WCKO>LxrcUSaroRlz#1H{n-He$;au9Q@YidvJGG!?Lj4WxIuN z!qo!!7F9FV1aR%7A&Sb52yg@M^!DddazP)&3KFJI+A~9nYem#0^aRk>83Bw{h4A(D z*^b_y$(EDz7rmCcy-~njf1?fL^!>a=ja`*UU=aIF3Jz?2SE*S-uCM)JAm8t=5}!T( zVoC6_;!@PFj~R~89*c|iibwa2RP~JSs4?T6AAoL_KPSBu*!9qAte=;ullx=jRvmwl z5C79+G`7Cf#a-cHVpJ6?8MyBI#MGy*-)%!~Pw{v^ft2OrbZQq?CDX&8u6$8L8jLf( zz82oC14e@moCy0VVD2CQyMwOo{!;~&!5<)Q*d11eri?N|O;uZXf!Cuie_x0sW4~Ft z1zwyJZh@TC5tvcWUAOPM+y*zc|oQl#_p^fHdPOS=X5sA)=s* zkdQj6JjIZPYvwbh2rMx3QLj`dZUS25`j(n?TFFYASA`gM`p-5{B}Q(vsru_(Ru;1s zSOnb*!xY^ktK*YSFUhkP23Ox5)KrN1{wCY@(=?!%;9sw{Y92QJ_lXkz#)i~Z7S#VR`M z#j|ZV=qh(MIi1rue-&vPPc8cCG`9!;ItqIHjn9un7b>u^=t?jRI5IJ%2@>w2805G@ znWnQxY2^4ek~L+8@p!})kg}g`AdNe4WWcO8z02;&f^18F{l zN;slp_&ib=Isc-zzj(+>`z_&`7Ymz*qF$w8mk-$e7FZ#*R`(fU3tjKN#x|gA*jORJ zNyP$EDr^xn%-}D+8IYE}ZFWcNLEh)=Hfdx@<8Pk^_SIfmn={Mpev@0LKm}IYNh)rF+ zpnD#A5HqyvQ1W7yQMK?FS|XZtM++p-nmyoolf0lmTx@*A5?f9WJ8B-?@QzhsO}v3h*VKK%1(N1Wm4g7)(ztBZxks=URbk# zQqe1638f#IY+Pz-_mwE9_gW3(sYTy=XO+q3jErBGags7*)lggSQv+$Rtw4?^)kqzs z9q+-&$m8fp(_#ktIH(AhifjRmPprE`bsZ_VaszKLeDvnAM7bqXc*yGUxL+q6bFx{- zEEMG=pE7ps{S=wga5nI-_5PQf;G5MUzp6g)h~ChzJV>h^07b5#IcYFZ8iW;vObUdb~R|&cGl{VQ1PfTbi0My^mS~Dzq!Dx%OxO& zQaTAy;z+rJ59pdxjzoA=Rjl81dI-bL;oJE%udh2Ammx#B|W!;J+8;ve*e`Tx^SH$zE|*iL|yE zKUJf+6z{P|`6HMp&7gVxKYaIe5!as|5kKGXb+6$Q6%pYOag84|R1n(aIqXJRHFs5< z9Nxj$5Pw=(kG{S$k`zZj7eQdr0HFBEF!#GcNvQ=LOO6x1K>x4VHy>iK-!?8~A_j}9 zTr-b2^YFvy(!kRZR43*vqotVgeS}2s$nrFcCH+m<;gzaLs+@FW znCdmP(1s1>DDXCtzyj2Up}(F2W=8Y-QJgk9aX`;~Ixe3j+$unI=dyNN$x;8$kY?w% z9gzgDb6sBJUPTT+<$FE+-!B=+-ja@OqQ5U5wc0nIRkoDwafF_HQ9<|lC?S2{__*EHIN5gX5eao&MvrzG*o_@4vw26uKD0qhwJ*%u6fF9w5aM+~g3k zs0luH?6meOU<(6a0v@HuMXr})90+A@y)`M*+50n?DelaQ6;Hq~sx0j+SbC^Uk?+dF z%UQIKHYi>l`g0mXFI9m6aGKf3m>vM2eAs*^q=`Mo?3E zH{gLE0m-B)j!WsFm=hlPeu^sWk`)`Tx*@M}YxYotl(p0J*QWC@^S90p14UbT1~qj7 zuWu%eMB7A_O&#|0W78B`2m6?g$PJ8~A4>QgulNY^J`SVDHwWl5fp^D{;+K~CPlsj7 zF%`AQje)w=`ylCc7RTe*8uOEQ53kMFB$gDp2$4j#26eqL6+1=lYf5~K#{&lq(8Pbz z38ay?tk(&0Dy+LnBBZ1xeaclO>M7LnCsl{R?qg9k^0#kh%U0q}hIiq1BSlFr0vW!4)h9Pm`BgiHN;`|nW|n8w5X zV6}LX!*NprJfdC!&;%zkMy{Mlaz6h;sD^8@TCmH@R9eZbD(mnJo>!!RaUY_3{*e%P zcpz1);jd~NPJef_0q!q!t%{ft{Nx0M?n(3%J?zRRhEVcg^+=ur>o5Kw{--IUgn{I-5?Q7>|$U=l(x9=T#HEO$|pr*V4# z!(XCW0xvzYIL%+NfI??g`r}Ak##bTywYMErx`DVbyp*@ibBXZ{102ncFGym=s!7tUkVGaD#MT5p+068ZGgkp8z~- z0`Fp{C*<|gviuq}VF=F|`QcMXAjI|Xum25g{g4COzD(;P^J-4Ln8gjFVf75k9lPsD ztB?0ZcPkzis~=NlQ+CE=*@e)&eP?|o<^l{s{Z@bIIQomq)BkiuMx>f#&){R!=`;;k zXj{XOg!br4R;BkVFtqWk4JFyQr+}oBgY} zod)^rxiu9CzohnAweuS~?rh9h)pDBE)>;EGy2q-kHBT+0gTGK|30h z9y>Fz4P5~>zb^cP_5#dY=PCeS0%|HB${K)gY)QAMs=e)-#1wFqExXwgAdHjAxgB60 zjCH^@hN>9%c?NueUs7(PALPxCQ#BfrLTqIm)>)d)h2*ogsQ{SOs0#xB5KG-Cy$W75 z)-Vd$zWWNz(fwp;t8~K?ccF8O7*CR@=f;m{ZweE|f8$j8wHJ7m6QD#ue%;A?`QV8+ z+e6rv3+bpkmij?fKwD! zq&J-u433}%xD25IZ<`pW&+jl$Iww3|A&C#wJTs0nCS0ujcc=tHVt^HY(ty8*FpUiC9 zXK-ZintvR7Jl>Hjm%9!?G5@r97D@EUBG{)!$|rgIsnbn)^m8^|mDU@dl}Qb0Z)x#= zS^mWKk1q@l`v+(m=8a`NeJOYxpW#c^A=RuMb)&HaQ1ul5Ir7V_u&K{UID_iOAaC!1 zcg%TQfyH@L>~$ZnL}g6yolZ>)c400F_{@R|Q|rY0>c;<|EB$2oRjtQMXk(z4|8<>S z3G)Vsgm#;d6!`R^H?P?;1-l6rOnX-u>&{Al-d-9Cu1-_`FBY?7ms*t+T-mIjN(n&k zEeyd{Ikg=qho6cb11bcF_p<*1oSd{ac|EM#l z-ubPqsQa#1*Pps=_uuF5^E;ObuT;HuIlg}o<>J^Xchr03{5dBajAW$g+xk5$hm_EFcXox!P1mUH@D3Oq_uO% z&GzVKl~7*BnpYm(A|ubs^F$?UMr~PgX(n5a7KUQXKlOqelz~9Zb&&$LXv8+qi-*qd zL;OXW(Ix#_WVu6{6R7%;>2;~F*~_u1QX9RI#0r-k$rh(eGD`woAiVA##=xSHu&lKg zc-x%hJvbbFew?YDrGhp7?r#=?UwON>gIr1i$ZZz1SxpxXX z<&2{uf`u8Cl17$d%Y8Vkbg^uK8K8+L%@ffu)+4VHIxj8-SE{t6igT7zZfn%Q4~l7p zXgbr-P7aGOcfb7OgFv3oJs0D(eVSa%DH`0YSK3h_Y&POr z!V%6%VVr*)zl%SzAp4y8qFyY-?3rOi@%stJL90gTA<7ZOG)m&KtugGn1OCP{e?jZ9(AsDYrd zL`M)%~i)jtxBx_kv`0ii_8ljy)z$Lq7@ygIZ}q>2g{B%u%&xyF;k`kf7E7py7hwA8m*Yd+UAhCdtO$fsZ{MSRkr*|vH+2l_VczoUJ}mtKLvC8 zmDKHe9zR*GIf8a=8j#qYLX?f{C)%)0G_$P@2-G6|N~QNyS^{ODx4ZuJ8pR_lpSMJH zIBeL02A9}UAws5maKv%^()0s8m)+)EIFi^ra^fGkhE>+-hFZ(S2tg#mXKN=3aaix8 z^S{F`ppTF5n6Js01C%occ^6fK(?=V3ys-`zJcu81p1u+sM;IN(4-9H9N2PfI{I;Os zHyuW(JxZS9y>m$6^VqUaro=>xs|jDUVb*6Ut60Z+Oe8;^4Y!Ns9MawFeh9`p;* z*4-|KdweS@Z)?)I^R16elnN=MA(y>cYSpYffv)OO2)Nni5B^=Mdlx7ay4gsSc7C;m zPS?z(<=@?6H256@KPQN{uJ^9E>vpTj%RST=&9ayEH0nh!W|cdp{Ih*+YssD{AYU3Z zJTNO-3<-U2FZ3m-!b3Det>x!?V~|Fcmz1>2mSFFV#K>Zh(h3s&%giU#n8C2NCq{zd zoBp`sEBG1X<&d8Yv!J)t!T_mW^$J(%J@e2Zb-dzuCdTrW1UC%1hPJ*%A`y!gFoTH5xvlhPA zGay-UOhj-Px?*ubo!&IuT^{n@u2Ny7&jlB3f%~0&>L7<|&6Ic3<(^&D3T8Wd?3OWf zoy86PkcA08dKnqTdnD$YzL^j`*aLN_m^{)CQ&(SEN24jz=^et-{q9l?6{!;J;& zBFBpx!lnp$npZ48yz^T=1^mHlq1iylP1Le_#C&7bQ?=F{C3e$4W$cm7YMw1F(ccWr zFFOyk1WU(qT5kLks_%r*1x+s}GpVM$K(@1*szjx&w(DkWiyC@wp{z?`n5-jp1^oOv zBfxrHl!OGWE{!xXM8!BcHV;IM&NAo-yJY!1X4;%T=-}}S(p~a<)tUjb%5Yfw^X*jZ z+U73R1>R5Vo}0dMNuF&_9Yln!eQfD_nMu|Z=bHuJ4*X4>p5|EF`2sp#^VSu65>1$p zqZiJm_8jE9Xh|YHk!K*ZV^X}>yWhI_OX1a1g{5}UiN_f!vYerlDi0OI+`QHg zWqOYqD+4DfO=h$0^t7F5zkVy!kN}AX{742 z`6z%On^4FMz|L7@c*5#eVY|lF$w$R%^!9;gv->6iTdR?!Dy-f=O^n@o%~ZY8(m?#4-`Yv)ZeR+4 zsa$l)x$FGCb+(b-;K1|yTfYWNhrC*A3o0y}8y$)|@;fpgAQ-eVZ~o)iuu-PQneHey z1bhr^KfZS$m)FOe>rc{et93ldB6S>2b*0i$L11R>Z)o)Wj9eV(l<)ZVZQSSI#Af>g zH?pFZ(_YQUx?#B@xTt()ue(n*57Fj&ZpRrVWG8CM3KN4=IX%x-69an+Wn1@{6xy-;DTN9m3D6S{vN`(KSp_)|l@TWp>1uryst^ zZ!$yf7kmot%eT5AQR~!M5i|}nyEFA4aong%F4FMo^ziC;P?Xc%6UgBY9mPr)2OcxB z8k#%tyPqG|mfubGys{taUGSqevC3eylDzuZgtaM_k>)(crpD@IMqJRmY~jw%7jL74 z2gK({jQQ6bQ{FK;sr--|!xd3jd{5=6E;9)&-$i#q0$>@u;18Ud%m!|K?V{Cs~4V7IYRV^*A@68E@xx5^adr6X+WWqR!5e)bX-Ox ze8Nv&oB=7JdtEW*{43x2h#xk3`Aqqu7y)sl3|#W_SWUjDMcFgox3vr|89C!C@@B3h zlT!@T*&y(KQpJ~Eq4(+ z9EDj$KDo3fzyZ~~JGAkiafo*f8&+(1fj=fEjd3N+9K zvnO|#e{8>p-a8rjm5?hkVMFcF5Lo)wd(Co4X3l*=e}PyFV4m&JI>J8B(6$OW2&pf) z7Cs2UJY4@SuhIEazfq>mIDH3~x#Pab$*kTWeyT|C<7YSaC1{}fX0eei;N|k?f=^lB zXo7>o-qF>P9kr%;H#*59la8vFkHl<3LibvCSCwv1)i!y?g2s&>dpWJ9lTJG$??ZU= z{HmXTS}}!AzcG_`j-E`XoBmIDF81)uk>GpUN@a(wHfUQ%laFzv-FA8rOFgwa{jneaz_ zOMVdi7h`%Rx)n_XrP!X@!gTinOpS-stOuXbjxwQJrgFTAW;|zL$Khj|AnYW4X^X|r zOGjiy={E0KTZ%HuH)#ZGYX71mA6F4OE^Uzp_j8=!rPMkU^ijP$kAH%VjYh|>d=+PV zcUvjJpioRS5V%BPI(pH#jz?Ghwoc?NdUPo-+@46v;vw#& zs~njY=wgVvym_$*n_iw`Qk~{yIc5%}YvMD^n>*Gjp~v6!-CpHQjS*UOyL+Z$2g&sJ zl>AQ~S$BQ#mN{u&taC9`X|N6^H}#`GO0~;cSr=*5X)^m*+c)A3VaQ6GWU;3=YEr9^ zjoC!4_tav*e`k*@bpRK4KYW(7E_Zj54|lOQz2ovjQYrC7%T8kM_p)6kYJ^ZaV7O)) zvkV>Qm00mQ-^6b85{x%7%dB2V9N4}W|9$AY0`4@~Ay+hMcw|SC>bhIGOyEsq0F}QT z5!v2zdZDd;>^SnjXh==2+jI9tGFnN}+XGCtGNWpCU?VW0@nF!t)M$l`kT`6+9qB3a z=>0t269p9flCMa7LlBhs!Z&z@YUCkwTmk4myd`X~M?_KZye!j}i$PSq=8C8scBV@G zc2xoQZY3Y~2s#NICZP@c{lZw+p|e4r@2T#}R&QuimFtS@6%_PZfcGJyhrqPA;k=72#IF7rMvf(%BmoOFCM$nnP_@P)%_9 zY@J{GaeoH?3|F!Ex&a~T18&1|qb0X7xnlax z-z>3$t+Y}RObdEoeYd8w(Uv!!5~p2mEsl`@$$2DYt9NCsK>XytjbKvL{%V)_PFtnv z8}{vDPI|*=Q}0+2KY53r{0;D$X3d`vGdgi`uz<7XR{3iKwy< zOp681osY)oXH%zwGTWIiIarA*pFEKo6sa`VpRfgJZVyG~jVHY))4dzKzEBm}KJZE* zwWM?MeXt96?TfT}R9JD>bkO@`-@fkzPTagYuVoe;@sctvmJVIZz0q$Wrk)f3cctGR z)Eu{cJePHv z;_0}=455$F|4X8bk6I}p^{&}kCog*whQyf_b3H4y!JheA~uG z2Dz1~e4O2?ap(YU`OPv^gCT-DpC;DR)2SCutWw^qbvZTN)}wJV-d+wUO>}(kS&I4V zf7&g?7CYF#{aE0zQBt8ZFJPeXF((bqi0i44%VbVZj(A(^0IeK$+*JMd{bIDOq-9O} zo5uuj+SgfajNnkgIhm%3#KxqIiuDWj33|d_MN>}K)nH9Zor;Y(ujM%JvC~;IdBfkX zKU<8-|f9k71*3w{C+-Mba`Mrnbo&u|&e}lsPUQlwSC~%UJ&{m0>_2Z(!dqR7&E0(R25!o?Z z(34n&>_bAi@8oN#$oHH67SOX`d(?*J7{kLdi{2MQ8swXfMD4~}3P&rM^*-jDKcMXs zdS@L+FU#Yx&|!?_W%rmkFyNK9JCwzvT@P$YW8luxWdXW^E4W;_3z%$5Z^I}MD@9gn zV-kKY4c~6HJT>ju@4{dO5*GgIaTn~Ze*HTgfEg>oKzZzpBQ#mKoRVVl7$L&EDNO(d zxT=Rys#ID@*DEQfAJ?f1CVLK8lfzDJ?(dGJvgswN+R(WehISy`v_+9bJ;#pQtwBv83nlKNVa<#+#Z_RIERGo zEswh^tvQkvH<$<$I{dDyQ-oe%C2Hw0TwM|dX=o@aq2Q|QkIDunu!}hKv`iTE(j09N zf;D4Nxy!GFj!r-|1y?{e9Ty>q2smmZq`#-BD50A!m=IBvIdef?!7Y|itYObb+@^}7 zJb;&xWhd}u7C#DdK6&))Z}^P z#njVmRuHPUiRiF_LXM$%3J|{pP*i z=1_^r%+O@9;?!Q|6!S3faWZ46lcZ3C{OUW&yjy+foqLX=TNJWBBb&utuUZ}Mhzyz! z2M>&;KV~*WzBH9EeYUKQ(Amuq`O}uOp+tr3e>8He7K%7bZl*x?@-koK_IMiP7Y(W3 zIQ-=hSgGI_rjkr!%bTCuZD>8Q&Uv$P1vm~R*;FSPY@{^WKj4?Ne}kL|k$<_do7CV= z+*p2p39LOz>>3jG#-`YLjFJb#N%aP}wYFeBCrbY69^8yB|6%N%%j|F;@?+vI4ps~2 zX2XxiQs)K7LxoI14@A6cvlj0rzRT`N?y#JiPKFfnf9&cMA#kHDgx)jzRDQgS6Q@4Vn+o|G4zL@) zTeNPNHnKBj*B>6!&!bQ<(9o>^2zG(}Bb?-nQT|k(rcD*KL}hu;S1@)I&lnR(s1Ia7 z2~Uo|ynvkoRPwKW$t|hmwBjO{{#u)1#kkF%6sZa-(80+bcZ2xgsr0hKmZ9PxAl8B- zQ}P=n*XEgW`L_PYfAZHtx0|r;dj~40x6A<6%s0;%oI12zql19=QR}i3(U9u)xZyqT z5~rPmxhum6PEXK$PD+)(7mzP0xxMJ*C%E#&iN`OcV)@jg7)CjH!w__#{dnqPmBCXb zUx6f|>vbF-#Q*da-|}kHjbnF`|A4|~EC_<__$6vN1$FMF0XCw%0*a#%&5dZu6X!oU z6?(^8yI1VLu1C(cP{&!Ld(LG;7RB~@XHfxj>rMsMLDF~TyBeu)*OdL48-{d3FW0Iq zX~x49Ebz-`o#50Cbxi$#q=72J!~wH0Ly8b9u)#)L&{Rk1EmOFZMfceFbti;l8c!A4 zGco4b^6_NwB_1Z6a2G(1qzCy3<4?1!#Av>mzdV1>>Jr1rV6&2RcfkY&d%TKO zqjwTJ!nErR0}j}bZkBFH`U>Nj+YA`doj$JwxC{(9i@7}OyXm9-{xJSLPxSkj-RPg*djc(KK)p%UfYPqL}I3v?oYsQAry`Am<=7OpIs;u|@p<6IK_+71R z4LexERN5XKZx!bOM&0_v5o!#sPiy`O!b{&v)p?W)*Q@^|Y$2*n^liTFK!%)BqE^tcc$PGu zp+C>NJqs-)hFkGvn)~M-K5%?SELEOe`AGK96AJ4gJC-2)ZNg>vs3VN;E?c;nF= zy&;ECp_A*sde~`e--la&D!KDINudrb5uVySBilSR=Oblwd*ei7YMYuJxx=NW zj9%)B<&4C6y*4=qjD75zFlC?c3BE|vmPcn3Hu7N?CC z>{W}LXm)yhYkXV0*NX0P&L<6Q+nPduKZ0h;9ut3N^2w)o>e;E_-_GWR;j@r!hOc;> zg-W7BtYbo0o&7uFOFyv+r7ktgHos^eY}s5O;d5SZq10Jg-wO&RzFVhd{&Ph?n{)+e z@NvGLgmh0?cfq9&X`~p&w9`pRN<=oyc}JVLmva64C$EUKM`?HOb=U04(q<%>QTj`? zwN&eH>(GcEx2v5zvf?ia|Gg)g7)Ac>`CkK4*DCgwzf~hy&(BBd$A4*iPLH$;8!`ac zPVKyfpOv+`rtr@P(^`KtRHo3lRW;QN{UhLXPm*$?a6N?7!FW~h9Sci+RMOFaadAzo zE5i#|BB#CS2#t<==GzpM7T-Lw{w-66uQs~b&QCt)HD;U5+Y-AAfyv5UA&G=@8|wzU zX$)jQu4&ec>RucT29jd3DU=SD1r*O%^#&i$RVF<4T4S@ifB8%eC!BP(N*ySL-vr%k zqAvq)FY7**Os1485rzJzQd#|1BwYuZ?M3ZA?U*}ZY~FPABfiQi!*R07K>Dw>OU|W% zGjr;bSnFap3-*7*>i;&5q~e&^s86Nlz{oqDm_g; zjkSz$M>oG&yU_2S0Dj{`ss{`uYeu3;D<_nxG$wpHO~lpPmRIBWZ%3U-e-OQ<>^t(k zvk<_=<<&qG$j+nbra16(Qj(g}kxXGOYm@$O2V^_ZdcfRii01Dwi} zVx!w*nsynkRkt^OXNd?O^K_ed_MA%L=N^;%dZJqfbT*XYCyG)ZMvS)4y2PRdbmGWO z18u#sto;|n;l+m~f-p?U{W?jzB(qN4Q_81xcOEgl*g5xHKo>P^iCo>+6YGjkpRX9Q zuBcjrzs$LK20J5a==~QU{}A4H0=uQnPlX7XWyc)3V@JGjmNxQ_cIxo=4TRzjB#1LqarlI|4QTOtBx_-sfrpYe%97Q*S-#;_3tr^c0qUF z>o!gB9dtHPB}dxxJ7K5EqZdakt^S5pl;7!nzb8Z0mTGomd*zQ4GN*01AvsaE~HmErOW-E4 zOjOv*o!SDt$LPe}$heJ~o$kg{T$8 zZ~y!R1?#o_u3H(td#;TJ$`1xZ0oOb973ON8qlNC;tY8w)^O{x1r5Gt=on~zU&Sgbb z1%7I1)#&|#={hRLRhX}XGuLESZ!ZfwcwTdzcx0@weW_VbDDuff)%P2Ud7Xg56M%4pvMB7Wu|W40Y?pYvanqFcc)T)V>S z#PZ79HkS^j+AcTg0P~M($@&yKnT8S~NlF*5H*|a-6|uI`ENO0cH$m(VIE4bg7STAE zerc0g$1k1^#9dG4wd#KvAr5zb@_(NJ1Vz%c*LsLWG*9*z-+p377p>^Xz5glZv=HQX zfkLG+*tOoAMo(R@N=7chc_kckB7(c&f_^-Ca|8q}LDlkVo}GaBS+L53j|af=hIl20 z-&SW5xIG_}B!}||Qqce$T6;V;%BBzybI1Js{F06m$x?v;I>e9eB5}l zOURGYU7ztyQ)7Ya%x3DNp_j6w*m{E+i^tP9 zAXJYT$8Q>lNRgS#L5m*M?stzR*8C=Vi#otmy*jyV~G+@H|8%%fo>Af=_vwO6Zc$P|Jd&(l-QZQY}%gcX=*?OLY_5% z@lu$_Ovj8cUQrW*XUBa?)m$Sa(M@icFzeYjP6JT@NiSPDJQGyKNYZlY(o)YN{a9!i zmxu7@$f;jJ>BQ~w6O~fgX`e#`fy_2>$=fXbog z)XEpY;E$uo@!(q#AJrUx0bX2|y&AuQ*AeXY=0j;YI^&`Zb*C#hH`)}i{!4QSA4Tct zReVIg>}(f!qOpy=PlF|4jYZbYAUB@I5QTbFC$kE`H|SKs#!Mn8I!2^&14iVkSSj+H z*tR`^$g4UC!l`s(%7lKSP(*6(xzR(ZTx2mkT9&*YaaV-lEWmv&6Bz=@?s%1P-w{W> zo(y^Tf4Dl!u%_R*?TZK~DWK9JAl;oC3KAk9BGM%-!sv$4h{QljX{4o;&XLkRLUJ@r zdThW3gJ=KyKJGWq>%I8B*>POo>-v7q&)JE5NeGRPJ>j+FQOlHwA~B0fcYkzL_{vFgJIR+8>+feX zVe)s|YRE!8cC*7A0kq|I*|VD$~U8l zVC7Sr3`^?f_(}WVTlQv@Q|&e}&_--rqL^o*!X}vaSc}0bxdX;&Q7nk={|G&;pqa5! z;ji_p5&U}u-5+OOKuw|=nBgdlIzT1|2nHlfv#k5S?g>PqboiwigjiZz3HH?T1w!3U z`7JY6#1Bu8G++3S*_E7dLh^8^QWzLlbL)+5>%3}1&|#vJL9H-4j5|N2R%KRQ3oJmO z-RoJv{V(HT>RDtfK|zwNPU#o9OF6lvVb*M`{kP9CWAO45>I*@bH+FNnCW587w*O?x z5AX#Nyp4}pLWq4G3SS89z+U`&yp};YdD)o~}S!k$nzcI8EoyEnr|KXGIUdxPk&-Or} zBrrbq+;_9hI?VtCSx z`rp@`TOQtP+|9`;*$z$Y--e#H$sCssWGk-iq>Dawi_e1J z?H~LMQ?!WVqB0yYHKva=@_Sp8s&_T)K&L(3>hniRv+X(>K5$zt+14|MU^-?zFIwM6 z;o3*3bdXI}i*e0C-admK@lqtqyqt)uaJ>A-pBYXyPRNoEbws@y=q`Aj2C|esjG7{l z^jYzOdm-iitBrHc4ZPuF&7}sO`2ALI7j=mU2u@vID;rxL_EBI}i?}9Hip?guuO+|I zW|Eg>371(diQ+rDhvw-b*@9!b{PV91a<=n<8>pxr;uRI$NMDm$cSyFy=Dz%2QG>-V z&W~cZ0(07ZTE@YK*}n=mE{YX={QLydlzhUUvFFYO=_R=YO777~FMnmTD^eUZU~?WX zwrokApyw1Yd9u){u<|_$qmKN#NC!QMLQJW%=8Yc-s!QivEnJg!|%zhFNRziB+-X-T;W4U6o%{9a?;oQ@P&D8=dJ zjT)OPxu*E6u^H`&E@z#Xh%`NiwplWi`=lLzUbq%s>U@`uXZUy>T=vfIJwT7|G>1%H zUgRKlfwwR5l_-kQG<2Q;kxCDoNiShHXK4iq@|%W%w1qcJrc}9YO6=kMb;Ev3KuO?; zIHkb@R>U8XO~#ORc1aY|@F@q(ku7R5gZ?)O1=m0Ql_~uz8MCR!tkuK64*@Iz$H5o# znl#=Vr2h9XjxntrO~1c+oeOeA@S*$E@O9w$XZO*?fwppWYMny^GurRjBa1`9-GQF? zyLpU+KP|+$(uU{Y5it$&e(U;+5vGMT{Lw#3g@3AeZ=ss-Ha$$${t2wACCFrRpDI|I zn8sIkx8&1SRFty~ySoAYncs^j1=+V&y!RZSEY-nsBmBqcqZ9k7t_VN^r;qv|^Q zD2VY`3ojaIx;>h}*OCLjNvr0-LF`i=r4-%cmC`iVt%`CkV$4It@) zKu?P{*Vj{?hda*}xGk^V{esjYf|l6C=D3@PU-z81^mim$N`v>C%_ls);i~@JB9}uy zF;Y*M^BxYxQX&RW34VVjzQt_ob2;t1Liu>ui^uMV|5MMvF=GsrUj0m`ZQ1-DzfEHC zZA3}7-cdxMBan_>e7-c3N@1moF3G|9+ItmM^ ze*|`_$j&Fwk@sI`=@6C-Ww9&B87?PJCcIg^3^fByAXuA9avGp_bImecy+TQRnFuo$ zL1G__)O@aG%&k;w||jhHJ)~|czH04e3W34 zFW35Bkgb3vk8=+KiU{K5Q971NVjryvQ`J>&&7da*orp0ae#b_$t2(Ma97L8!g$)5L zMoaF>(h(&mijH`28PcWw0aGxUw;ow!TV6DErKHP z#DzIY`+C_up=jkH$e-c*o&{^mD<3yINh>#(laqi)>rp|RBbqeFMIO*Bq!q6iv3X$% zRJzoE*=MN*0W}f>AJygM+??!N<^j&WPZV*4)TVBKIFVI~_|U>D%b@qlE>ySP@%7}- z*MCGtZ0vD;7MU|^Y~nqI9xZ?fRX7oLt_dm?e6<9x*5?vD7)sgie_mMl0nbpD(Lbh> z-}huLXjxaFSZ$uhJAKzp<`eHIh%;JtYWhBr*Q$ZAAM;|%PpNrBQV#OyFEaCjk*2*l zvW4)dd!&gWJ3Te6RfJQRR>J{rj}d}I-A}0K-|~%ufwf-VOK;|WIn|i-uU&mCti74h zZK#MD{AB3w6*6K=fhVh~5ssG3&E~&&9uO|cW|f2-UE?urmemv7b=yu2M)Avy)a})p z?w1R$li8zU9udo1iGAhv=E(7YgV<=M2`?}Q8@38a?W0{8LZJah?^|x)dw_Ezj}r&H zvORh7(^zIzgzQYg=sx~pA(l+eO)Ml~cJi;2K_kA2S3H!g+SMkRPCLs<)yXm0kfYts zTJUSqzutt2ps)Lf%!q{)VubPdhPvEx()CDqAmHVT+Yu?S-yzn78q^h|+VzaTHCimEsTkVwe>1J_9oqt;5 zzbB9^vUfKx_01H`C_ZO;>N3H$?5tJf=@hs41K!^h>#93hoHo$PvUl3r{4CyU&ve>u z1B7&@U3oydCn;jSnG}O^6dO>E89g_sFePB2Ig99!-SGgzr&n z&`O#VV-OlOXNSnRt+*$(hYe5h{@lj(ELUhnFJ$!BQ1(duDYMK9V>Rq}p?P zqF|l;i~fc9WRihu1Not(ECBPTb6ta#XOX7C+!Aycp;NEi1kQ!NhH;2I;l&Q=@m%2? zqG&_jGN1}~sm-7WJDd{+gznc-2-y)rrCK zbizMJT+Eaix>!=*UwF?NapXd*1z66APkCXy*A&n5DV1DEpKetvFPpA)ng@L3nU{5g z?!1|YMJ$k4$(*H(6aUs)7$gGNU8!M}2ELjG7J!DEMrIik639RX(}B)>NO)-z%lPi3 zc?Pm335HAE!wD|Si%baBozvzc(>`Utuwn~4m?`(}WStupI_)XU<%I4Jgh&24tVWuv zwwX7A%ddFElIX8{#Y`UGT;h>euI~<=DdN8$ocRH&PG!JnIS4vk#WYd*u$zNeE<`PE zJ{|plrpgd+ElH*G=(xwLa=JBX$Dg>ro6xxjSNNoy2r@{FrBdL| zUwqC`R=bLiejWqk%pM(6-blGvr6Y_r)uP0d)BR4W){L2G+O1NtoqM?Sc@M1f+D}O2 z1-9>8Kw1PI;@OUhjo!QT##rE5;t7t&)aJ*UnC;oc{P;pnQWdwq=H%nw>UXKtz8+0_ zzO+zIo8}p?nCM@W=)~ILm+D!<_Pu9cPR1(Fcj8^}`P}t$yq7OKLmPiiYXNGyl{Yf! zp=KxHI3DoX`wY4zA z;|aUq8wVI6)hZjlTlLNH0Cc{amMgk_sAHIFyG7<4`&XIcgKSvby^7^$dcdDbn*I&? z6Ihy>9B-$>D2Tj*j*;yzpB41NaXj=~Ru$ve*|7O9QQMShe%jK4ts$0kmn-fJW_?H{ zFCeWvx7oyef8|hk!nsQ*t8;~qDmpz=C|r@V<3&e6npWjY;V&%H!(Wm{qQ9VoHM5N&MH0Qp6+&_O}r1if)U-6a7)nk^DBI1 zpA(x)89|2BJ;_adIR?u$lI5DZaSD;uEfDiv9eJelg0boICV+}r-ej1FWWh`LuIE#c zKl%5-{de33*%bYIwb}aGPPUC#9qWbfu<8Od&p!;4lN)WnsCH2ev&R(v_F_jJUiU>u z(hK)SW=4EcFe4g270c(G(Fjz#XTQQU^DEV*m{Zc)?oBd(#8idE{Woq^TT;C7FFDu> z9x389r^0fRkA3u@I^XYCnFcV~Yk`;yL&GMzR9mfEWCcKOo%nQtC?jn>rexL|F$!wu zQ~&(yFS%0U)x#LzW$T7vmXzV3>N8hK(umckHLkLh(z1m#bT%)|Lr9H7?i%qu6*Q#Y z)LHfRUyhzvqgef_TH93kMnwIo#aPz{dj5k@O84JlUvXK;8xj-0)vRi56))JBj5gIO z7_9U4@*nDt2q3c?>rhc^nZucLH1EXxpsdKi6-n;; z>iXJqLKl9udLdqRorS1@q7Bh=`iK|o+vVZq%=}7ue}ovxSy}vTZG1HK&)DNvPn)of zSw2pH`%Oig5nWCF?(gN>B1|{Yid-r16^@@=Bhdg8Xl61|HCO=h`sgHz65|9%84cvLsaxYW1r zt&&)?6ZmErUe#Kz2CnXAHa@#XTC}3is((@3#+t20Y%{7~^~i%RI^&LtP$K@oczDW& z(gVd{h+6up;cX%7%&hi`kxX4zmxtV#Ch0;O2J39 zzw?uqP~QbdkFi@y-tUSEFRK%`yzdRsrwaABy&EeB-S(_(zlH7wrJTR$3XixJMB&Kz_6)wVsL7apD zVu4$7Bl0Mb72^}()1aW+E6%W=0wl9reWPgE4q6}F(JmE?4edX(PbC4jvoN2S`BS}g z6m>CsvU88SlDm|GG)BV?oPw&~c&man+f$&~G&cXz)07YS4oxsi2b`MPw+3MbX z>zia?=IiK=b!(l;lYO7pG;s#;MD2Eyv}YwM?Li746zUl{M2P3t3ZV7YrMV>5Z1M*M zPYfBI@C*mxLa10s@0krm={=dm7`!!JcbHJI)LXj^C1evKQoE-sR2y38;8hJrArexb z;nqxmYsT{KJ$prxs26gr@a-cM36&7I`6P0fp;I6jugs- zZgY}@ndMtUT=v-KyW-Ka3r1XL51m?`g-m=|js696=W(ZiH$z?pnl%@mm_30sb+6j# zsgtbvk6rL~MqIl{7@bW`T>lQc{^-J$2JiIKo6iJ|sRbgFEN6eay<_HjeW}b8oOncu z(+%pWNDLJ`pBI-k@t~l7m(fy{o4}lvYunDpFY4Gxt@tk`LnuZJ2p~?_V`li|o_O#x zMQ9X$7%*szb@&ifTg`yHWkTZ zq>^3f)@-ouxTM}uJvf~%m4d|63hykPt(GN*MdIRpZEUwZ3zuib_(Lxm@p1a0_~YQr zRPvnJJ3MdkJuAt(yiuif1%_@BrMZ=~T*Aea7HRSU zD$}A#vc7+2VJg1MO2If7q)(Xx1d8d~hY#hdfA8# zj-Lb+aDsTZ$8r$P>sW;jf4iSW=-wXamR_+n*KAqq%h3qns}|q9H@BF%gVUr9*Imaev<)GdN9cC_)NUjUskC>4^op0iO)e3|X7MY=Og6qn80nzsLnB_8WLc35``8)4(<29>gZ@Z!< zB}r>}2O)TO!klNsA}LV`6Om}|-qSb(4Ck+H4tYC+r?x-cc;N~Q`8>QQZX8gGXTu+O zS*R`jymOsqQndLJuO;{F?mz6-sJTl9dI@5k9K=gauEKS9$wX9Qm&>{v3iR?O@3R_n z{g8i|ZZU5T%4g78-nUs#={XoKdjUcg$!S9F@YN@O^}*}u(Dr;2JLO{}FpJ9?DFa7}mTO*2dA@W=xi{>Ugr z9*yh&*~jYwF{OHqb*Oi)Y1+k|LUTW5mho+<8BG)={8`4iLWTf<3FwvjuBc+Ad8uhk z-nqXaYw4ec*B8$xjSW7;dO_hD#jgFZ+KA=kE!F3ux%Cki4!?G8Bfg%IL^)_5t0Nd7 zhDGCJvmarrYJ|eb2l{Vy^WpmSLPj{5IoaW zq{v1G+6|=fYkePJ9MbS2iZ}tI>rKBczgRkT(PN2obK)mg0k=Oxe*6~+n(4@$uxRLx zIt>qad9l9~#9+GoRi6{!KcR$n(XpW@1#q=GYW9Sq-!JaaGBFH_C5dj(lYLJUsNWXE zdowj9dj>Yj+|%5Xe?KQ~#Q!)cjSziL!y|$or{5@f{m&KZ^vUm^K6*b}jD=Z++vW#v z(BOJ=gTWV^Ypin>+x{-j2#|=`-w|}{rYWq&S@|~&vjj?Esu*>{L zba>i(KF4 zBcvzPm+KGKCT;~M^n3@6{CNei^LE6IBW>HA`0}UkGC{kYY)CJ$1aMA(Y!##bo`4b06!io|)7cA*%Z9xP;+NK~Uhu|OzYCt9 zKvT>JNzNQ!OQzw3b!|1?(0v5oLoM=VN@;%jdE@NJ^Iho(b1yPZ&+QX?0L4kkgs#F%4)Ml0bDpd1 z+|!-T%YL@GQt5HvrSgus%xgORkkwqnRh>=)NKna?k>&#bW|+f`;0N;k9OiW+4<>iy z_MWfHivmD1_U8wk-~%+Mwid9eUT26QSlp+CEE(SP;9hi9TH z-mYv^7Lo9(jFm`+8?s*IH1}>iHSMb)Bl!pNkgpC?-PyR$B;rs)@e0$PgSjAMu(>%X zg=~9H!LxF)+ciC$Uw()f#-B=AFi0}M&5onSM!Rd=w-kp}GMzU)EDu$JyfX#l*zPPU zL$aQME6M`m$y>hKOdZSVN{mY<~Un*v-7rNlbJ!Q|2p<*FSfQ} zS#gHfcqk7|jnDdzlvE81tD!6cGqo#%gs<`a!xRSx4()Wk-?7(fR#j=s4?AKmXctbx zed*OdjYr)d^CCD59`j9}{k(ur{c9j2LXhu(HTLY(aK?!W|3ZwRuA(0Pv@WHzU|DH@ zYJ}(HpKNBt99{RJV)FcL1J;&vU}#XMj5%0Lq+kceXn57GW|5?q;S9FNgZzm@s1jN( zj-MAb9UlYI!}@CQHFnbyu!&Var+|xerjjcl4k4a&nF7SwCvM)p^HRSRC+A9ysaRrQ zHUM)sV}v@=y3=o88IHP+=znqX8~y=ZADc-qp^^!E z21##)2t8;Ab_4Q$FSR9Bpkgf(&$d8SkIk{PP#-mD_Al0^Zs+#B?T>Cf>oe1>+2#M| z0-$WW5DyF1@SbE| z>A7SnK4kaHS>+V1OMagJnD8Pi&WGv7*Dko1N9bgwHo|mi`J|unj>(+!iKGheUlbwuJ#{iPg8MA9sKzYmStgaXspEJ5< zCys3H@y|oxjPj3qQMdrhg(9Ue!r07+plX;nk!1D^gO5p>CsosL$;GmMbs8Ltv;Ne-Zfi&GkvmR^PB$qgxpN( zn_%k)`s7z0!HG}Z<5QaWr?_jz(%L@(_B6H$)Tb02mh0oyy(kv>HxKn+LjIQU){m~W z`8k`Au*hGE-EroOZLFTX1Y8_QcxU!ymA|92`7V*@%E?5Yau{g$J4iqN!O)o$5{;wUFa9%}OBJk&Wo6%JaEeeB6|!RxAHF zF_u>ZcZXsq5$!&|k8A-)+65Re6)#kr6%zb31K?lagJm4M4slZY*1IN8I|?f&Vh?h!lgN) zdKNmWQ4BF6OH?kO9h}zoH0vMK4AqFbBq%b9mD?0^-xg*y_?hhg|_J0Lj3SH;_X-FkxP)xFE??7)@d{3$) ziX1qLrHH2KU@!V~;$||Bl+(tRnBVNJ$;X4LW9^|1+lYjRo6~dZPDRJH;x+r?2hH9L z-mD{j7j4XcdzbZ2V~QX9&Y{%Tk1tm+@$R8wWBusxK5na9?UBbvRW}sDZ&|Yge!Si@ zts)cphkbkD18V{vN2~XOdZccoj)K>nn}a7v5QmLTxPpg-27DUj%3xz6{50U z8BdmCtWTJ8$QoacZy3I;0&Y!_ZMjK~XU4^>>g}Yh?2wGQoBe;s{JQ%Xk8NQk0i}Es z!@&0lfkQ{cS%HXsO^=Fzzt#KBfG#2;dwF*xk)Tf03}u$UPR{V2->;9pzSQ4(tVzS$QTZnihscxHhq9zfH7ZofBTC`>C%Z zm!k3_0uFuYaewtwu3hzd;Dz*kkQF;M!y>i&crF_UR%nGK+D>nA)>6EdjrU$c%#U zYErK>VO8dnOZ^9}6jky(iiY!INZ<0pou_kSqYB+0J#(0Q9rO3UBp7-3eL6rAZ`Bj$bDJmxZ1ZYm@(h0x5pkU?S~Np-V13b^w!C*hF+RW_p?X1LN2jSf+39r zf~z&-AvMw^8(Pbz{v$Lw!D;r~+8Hq?VKSH<3t3FJKy_YsQm3ew6!~{15qIocJKh9u zvvqSd@~(ETqXmTSIq)EYcbD<(nNoHFgn*!zB>0wMK^@@hO8;;Y5|+1atMmS|u+fDm zz)>Y)b?^9;A#=*rrH@D^gfZ7TJdm=o!o4#cO`aFHGkNggO{go%L&>MX;rioTRSqll zqXr$Ts!+gw+)1pC8l9uEg2iC>tec~0Psim403_9&e8GgRmNJ5pQtuif*uFE4ic4Cd=JWbLmjxn@it^_ z!;>*nPcLR$d}M?UR?cMQx0GdPFR2mE#Xw9m&lDLoz+^-2anln4leziR`3-tmtX>+! z+WO|b+~s>Y-rxO)t*O3-)r3JQn$>l3Ds)IDaiNe8^)C>J3968j2>jq_3BR&L=P**l zXtQ8GK9YJw&h;+cBzsn49&YB^9lzr<-Lh5++t_pWHK7==EHRC)Ic7Slua$LaEh#)Z z-c7;g+%$WYS(wHqwgzV_`g-@R_``lcft1zHUc)-c@z#ip8au{|QthVxGrf>GN{d%a z35IB8C12f=#XIO1F@=TYiHa^;Qcg@A3Dqf6VF>2nf9k=(JWtLx!tO+Pp^XTK3Qmx!l8VKq2K1mPHP{G71m_)#@yc(FprY% z+&|d_9QU?~;5647ELC=YI3sjrQ!*c^dl_`flT)B{^p+XT(sH+qeRWG`>3AgDzjbrQ zt!2P=<;x46kcZ#9@o>7V)&>XGMMaPw9i3CO&2R=-DtYb$EiH&o%MC>w*e`sZ4C6=a zQQYF?a=&uIj+R_*S|y80Z1vpkPs8`3Upt}W>?SM*HQipoSUA%Mbck?-KCTS#7$l?% zxHgAuFT3wwJ)b=VuREDJ2O9&~*!BmKI&1K4dOiu9Iz7koIHv&?o*_@R%3R?No0|}Y z>aFkcgXJJ$7nL^3v&vkbr48d{dT^=vNaW1cqHH&JqkE)JKl4!Wp=jb-0CIx2+je$q ziT*Bgwi4@cV*vtj?yz7HYS}Y1e?6wUq$b}w=?KLG{#x?Zj@E)}FCbzGjbA15LTg~& zP$f0~{A({iAoy>{Nd8E44a>z2G2w%L4%-*dtwTrMI61#(WXR~vCd5`v&=5@yvz$Pl z#biF`<(q1+c;^MJCA(RiDZv)WQNKv#HkZr5Da0dZp3(JxFW|83RZ>dj(0J%^I^ z-oVoEXqOVg+AR_zf*42MQ@$9~Y&-f#w5tO|!RUcFQ+&og{UZNa#MNHsFKDJ3RMc;; zu2IvJQxHfNuEWu(cY6Z!N+%De2+rR1=`rgWWTF6V+m#)`qPd9}q1Ry@{La-nOl9cb z_=IaF-7G-FC;Dc5-J|oeP0^3GRs@P!xO3DZC%l}ybf%7-f3~%R-^CZuw z=4Ty8S2O|%weDW^e**GK&tK#te{mm~u3c=w2q6G029b5U11TXnx_!5r3VEIf5CMIY z_yv|@dV=qUR7(>wkFaFQzy8!Ln)K@z9M$m8-__(&1^lCq&r-65Uwh8H(l~G^G4Y!x z>m>a9#QNdai6{A(Vr4hiVoBSl`Cm$}sh8^45^hW!-serWd#$aZc}n~VIpG_BRP5I5 zGZgUM0Kf5x`3v0->`#M}S(rCP(9#3|Df}8cA$7OLgQG_mjIBd}Z*f#5mO$L69b6he zVg{6L9KlLV(=W67s_9nrve5F(Br^VM`f`yzL~cUmJ=za5@wKzhb&FVBcF0@9slH+_ zL$B9d3h3+aLeBM%$Vir$ZLOw`6&xu23*VuPtfY4q;_xFrCItMWF)kj{X`TqbQoW25 z0RWW-lsRnl(N9%VKhxh^`HG3s_5I7<22kTVE~y-rEs zhB($e@i!o+J2_Gm!Q@S}HS;%Sk zm%kn4{IAsq1-iL}lmr63b$3)jMdpSgY6xChJE`FgiossBo-ezMP0u2bQSMtZ8N$Y{ z_(_0Z2bI;lB2z`xW&;i^a42w|OPxl$vh6?HOEsStS@(j!oLjU;&oK8X#(^rsC`IXD zI||Rs<_8);D?kWcMgPrv2umx_^+8YFjwUqNT#jy&u>@9wTin_m@~*P^e@OcB*|qcOy-^U!kuOCZl^2$PmR$*b^k8`(@Z?FWb}70{g+1xoF@ z+Az57?96HP$pk0N|6MOH&E+>aDTd1&H&j0rDx?V9xs;}ioR4EgCiAr8J_z_-p1uMu z$#y?r=w~?J295K?rK9L+MQNUrd8Lq;tH)G$v+0~6qbtO8t!Al2#*Jt_bmykS?ASl( zSYC}xkzI}GEO#-rZ$&%EG5`kI^3LE8)EJ78l8EW_}mNWbNlpk4`ps z)3+G#wIw_J#h>|{ui~QJ=fo)=1xAo_mT}B$q*rOK^PL`O8B&R zMl;5bbW&ZQA*@eZ#;$8uqr9)z((p6aBSUKD8iA2Aae}OFvVNQ5d7__hJh98_RkTf2 zZmpU*93$Pngab7ohhmtw*8+tYvod6}#?*SGQ@~mUv+ptKW{IfUYaUdxBD|p2d^?#@MN{ z>7Lt^yz3&s@6#smRTGR>cW1DIK6I^xCC&i;rjzeUG5=Gt!dD6zhC|X_Rh-igdI^=x z&*uFwBa$O0=-^&&i~Y;OT-~hdQ=c2W-?9_N7Lz!=Sam5-u~}mJXo-LZ!7*T2z)G!t zEseYCN>qVY*W*V5vUzo>PxTSTe_!Xgab@eMcjyCK56>&>%C(bbqy`k6Jo`FR#*Gzz zx7W*&Kl`~dfAr{V>8rP4t#EzU#04XvAmj_8(B*@$m%y;o@8OeIU7{UOT^@)l# zjh4whS2(1pUdQBI2w&PQLXbGXV%7v~8cKBx2;vE2!>S$cL53OtEA;mD&mCp%On{#} zL=5bC!USyJ0JzI-+`h@E=4yenLWY=Bp7fy{mZNjmYK|T3KY*{yeM=@fDpv2brpntN zgnhvZa3Hgr9(2~ZTl$EF~}MTy=veb&z@;Q^NI z=2>Dnprw`otMXM}2ILj=o9XqZOS4Fpi}#BB9;cqY^O!OGQOO()3BB3nkIKL#WLS+p}iR*LF5S zwW(8?Y$Z^tYhYnk@IOATpsPr5M2tz!qCjbMv#DCl6C&UQ$KVJb64B3nUYH zqAn=-ZGN-PACojxbC5|Qxz^qOnx4f2qH_koeh^+%59N>9$${I=Vi(-S5q=lLW`G_n zO-O2r{r}1M@iReB3%LUGEq$PB;11VRaRkK{&8*#p5YRvAYB0`h;BK9t4zsy_?$)vY zA!Vs2Mer|{X2tV^r_KR$6QyGXcD34;Rc=E%tT_4WEu&3GaNK^8@6gqMKAgAq zh0BRO+~ADHmkaoI^ZgfRwf!(eqzu)xm+9i^*#28#uQU_yRvkh*KbJ^p?W^BrZT!vt z?MsOD(6%$@RRi?6C#_8H589flkrCay`PMUen?qD0H<_$5ds`s2wy10LPbZT@Z`i15MNkL787NQvQU?~GA}O7?#XIg{552eC{6Tf$5~ z_-Hr31eA+z+okXRNe*E`d*)popmxFMJTM2=5XV;GES4SXj1S7|uwoJDpz;UiatbDv zk`b)e<~Jq~luwOr;h-E_>mtIxJ1ITa8Y2=fY)S>6p%pD?@w%hDK{|-DbLGn#;fUMC z|Bcp95cByH@|i{r|?f^*)59dB7IbH>z)}|y>vu`A)EFs56XRbZ?d)5iFPANoLa~D2xIqr z8|F1XLrROuSH4VJwkDjBMUL$lh*!`ynErf10qciX;^Pv6` zP&+H(0}r8v{>%LSv!?k6G=MsH^LUM*pSJWG_nzCzx!HJ`4TvX|F-KFHGrV}k+&?5o zfue%|-{VzwMHUuWQvcof7gp10xyIo>^Qbhkyj<31sXV%%i!X@&3uLXm*Y4uvJ7StG zn&(iuNIav5;#_KgDNyhHC+q>+Vb}HXJ&AN62i?tc)6y8|2_DG1ECip`h}+-Vb{M-r z>>o`fMIqlGeR-2rVV&T<_Z*eiJx0X%|w!dhoha2c31(_2@&d1IiWz>Np zxJ4n%M|pK)B5{O5h~eV1YW|y7FQ|lli-kQ;TtB;H3Z+#UYA}=&gI}6F>-t*urKVx_ zUE;mD(kKoa@CE}9Dx@k>=t}$t@3+J2wzHl(vQHCNsAt*d`q`((BY$%_3Sa2R%ItJ3 zVS+(FmQv>%DK;~#AKqcRMrPpYTDIeDQoGk|uCL&V=a39bBYK{vM!Wg6j?qhM&>J)8 zVr4f8VPc#Ven52M(QY@#K^w?D{fX11=Hfmfegx%M9Bi>%o;v6CYby9|efX3?!+ULA zaAHj8Cw92xY23tp<=M3QexGZOY){%Dm^izoNz1||e?6DnjPurgm`GN93X&Y1nBy_BhNxM%Y0V>;F#SsF$bKC4K**LOXa^@c>`K02x| z&vD#;n)+ueee$8ZH=|z<153-8Bn4Wd_jtnP4ewn}Rm4yHs;qd~;Q8A@G1cbN{w&TJ za#D^#J-Igu+{9?LXCLA$(zN~z63T?f+4HS!$EDeBJ#dTc?FiEh3Z@lM@+H6dDbXfR zw2ucJ9-;g=Q`jH7l^)9Ey8P?5{2RyZKYFB0BIR*hCiG5^A%Mmb81{|R!AC%Ih<{uB zS}z(YCClwFuIFUqDM8DlZt(JfWnwKf>C06>VpTv5;~sfWyxPXAl3|-w`WC5yZbj6j z3QPuiN&?G(qW&P(W7w)m^^q#0JyTTMv8<27I>}s)M`&^WE0=)Z)OPu7+r5 zKlcImtF^%$*`sE+E4RZDFx$1=df?@!*7Ub-od<8$KQ{NbCBh>w#txdiTIJ6aJ`n}% zZR%auAQT=ga3JduPj~^?CND`tZ^9`;mlv}sEt5m}3bN>xAqklQ`q<=1ZE9=&npWE% zSN8I3b8t{mFH%wG_fU_aRjN?XzdS{vJz6{$AXL9O2#x^h%(PC1Y;K73GB*9P^Xv6( z--TLUQ7naQ8eg%%Zy0rZeXox*J4-q-3Ic4-?dt0a4}uzOii1^d`3k8?&378A(}6L) zmLE-N%L)dFO?8212dG!X!~gCS#=I*ifVpWV-C+93|7J7eZ%1Z2Uq$DvUc2*k{ZnRF zU!5)mfd$Z|fZxgTUIr&KC}4Aaa=Fq=wg5Ao9)25Gyx|~zr~tGjHm{FbcU=sceF4Q7Hap7M}eK^odW~KWr=RNHZ+V{aeN3(|R!WSE6 zi)6GqDW03*xd%ObE|$|>`{BKJBgO*aXt*bKz9%%D334D|6B|rw*@1W|zJ&{&33J0| zVVgA9i7u@e;={)FsqQyFq@`bw1dUmq3Fe6UnVF6JU{(@H^q*N{g=~0tX?2N~Z|Dga!WxElm_hdn#7j^(E#P2w$u!yyT zZw0ajx_7w^0nlYuq2-i%W?kA(q=1e`UcnQV`zpPXH~p}E@K|Siqx%x(C$zMt|7ACB z?2GV{$I|5q07AmZbLTYs*G`r9LjT2E2$ky_gIbjk`+#sL1`(9uj|YPby8{lE;uDeS zza6S&$r3gJxVp|R7}H^SBh-$gQ$9iJS~x58Rr_YClacx%8K`-uFmL`w@6`EnBsXo0 zH+SSmBAcjfqv}i$1y(-d>mETp!%OB#Ad|wsI}u*}0>`#Fjq`&;%ds@O6M1)yXCkiE^J!GQ5q$c2%!q3dd{j7S|6@ei~N!PZt;?lEUj7oRtw3w8_l z$Ps#BTNM$KbGHUtv4=UJo3HQ?mUT)nOqjiX3_{XN z;-<+{TPY=rOcd;A)q1;QJpCdgaJ!_^Vr0jlYQI?U*-+C9+`Br5-peE10g2k!Qu1C#P>zW+g8S z`$*Yft<%5qzPZ~XnanYjP)M+Ga0R`%!UTlC<1)||9Y2q%)#zf&hBFwbSy_)*S(_ZV zF4q-^X|l6_jLEwAn9r2<_)pb|i?~T+efCkG&Ba@-1Sfc=T>J=AAVU8yAn9OTP-*xn$%o_tE&-Bx;#iZIw%IUp83}J?w=nW zScGVa{DfY(UX+5d11kl+B*g^xo8#<Kml|?Bu*j z8CtVIzEDePeS<1ttCW@tFm}?IYNFG56)eyKADGs(cAigHjP_OiD2 zHE!%YDQoYYIibn6$$0C#mol1$VNaPEtlEPPTLDBuy@dVTk)YXmCQ4>S+lX+VPxk@m z7A>5Xs2p0p=1m@<+HjpY>Ldm`l@+Uy#DllegVERDJ2@q$WkKC9c5^#|eniuK6vbBQ zx)MZm6N#%6x8H#*i#}ZUdS-ib*aVNCbKV0PgBR;c=kos25wm$Ei(J1Dk<@b_gS#@x zR>@&DoGQ3fwfTuj`IAR9LLm_ADR(EUt`U$tf ziOoN=f0+Dg-79}=J)-*nAE42e_hF29koxzr&goi%6jw7k-ZNdvfb!d3{+HDsUB7V< zKFP63B1%1z>wBZ?N|rr%sO#ZE{+);2)CTW_^SBB^uNYI$gfhwA=2yH;TzX3bXds9i ze@XGyV2z)QJNxS5c;6!MP>Kb29-Y8dTNdpB+4>@wRs%PBtVE9bZZ)ecJ$?UFtD`p~ zk@>BMjNdC_Hlskj?(!huEoP$a0uJuH8q&R49q4^>yzw0TE?tOGQ7kn4Jzj$FMHoPs zM5Mb^+Sf(lpL$)InsjOYh44bsp+!56K2qqhYtsJ%m_TR0Y~-Dl{|I2-!yNis z?s)F2(+KO3{$YFoTRenC;_1M14}5zMY#Wy6dHfIQOS*aY$4xg6@ADK7k83oT;3Nm? zAJ;?Ii)#NzgAx&qoar35s;;?XQ%A_1P7wnwcf#u6ZmTn*L!xuVV1hxyeRcMv&y{w> z6Eo3(GAz&!!sj^XPkjz(s}Jon@$>w^IM+V!_Stb$Xo{W$cYDt>X>ozgy+T*_?<^jl zl&c}$dH9wC?{>^R2qmn3wJq1aJ?vxp$!_`ygR2~i8Wupl{89s2S*IGO($*Uj=(;d7 zpx5ASyG~v?q&Io@=)|UNGL~SRai?F{>_rs2Nl!=|IC0cr$B9M;|BPMmGqC1UI4r&~Hmh-!7F(2tu>q5B`do|+83=RHho*i} zXNNL=Qav`E2uf~bggrUa1V` z;I%we|J;74o#382nfgvx>SE$R8(7+#OrjYNuz<-u3rNJlAni@te$cKkr^F}$0|_n` z5tuIm*XGM}+YTjv?$C*&oeNE*C!98ng$pM4(8L@eizjI(!OKKCG(ZpjHXi&#-rZgd!30@Tj_IGEoiuSgbAi)(rwDN1z)2kP!I2iY$1T6)o4b)d#?OW z_II#;F$+K8#kY-pW3B7R#@V3q1KgO&7dFoU_7*aP#~vz2M9O zX|X|DTNv8>NQ3@TPtjX+n`gpXxOsUmj31UiebMytTbOoSccFoL76S?D7*|`q(3%Te zJh%6f#iTwZK0I<~y()O{Ps;<@a3QC(Z^(}^u5u9CN@oK4pWvL_U}_;s-{Es~iO1;i z2y!{~$JD@2zb?gtc)~?K6LL{B<%4YLJ2|1?p6EdaIP<3D#iN7pcr${RhLA@t*2pX; z%`U1WfFD2gsYkbz!6=}Am=zwl@Dcy;J}-Ukps-m+K~NTJyQ4=AckjLXZujQvuXU&NnPWb8d`%l`^mDxB$Yur( z-DQ1+i~gK-QSgIjtQQ6y)d{r}3JAS5KQydDM?8^4as!Iye+*4T>)@++YeUD+lE6S; z6X$RtcJcHXR2v~fD(xrOxW`6S)epc|s|&$P{@}nRp14u`qUAr2evmf&sqRkB2b8f5 zB%FQy7(RHRLv;^6wFVD;{H>*~sjPUr_uNMx>k}Ivb-(%TIUNIj$vBvo*M1A_H!nD7 zywcZC>Lenij>BUaNAv~~3irCT@@wI(6R<-5{Y6H8MqQ?aE717KqfXBha^an3Ai=r> zWk;LC8}gK0wY%g(1{zx_Eo&Qx^a&Y0v$0hh$ehg01}Lr58tpHk`-WFm>|fB9Z;;Wz z-8;AZ7WCx{-*%U@Z*g0vaf)#WH#oX)0|~ucvQrynoJ?_F^9fcj)@Wn(@eL$MFFBBp z_g}QeA-Xt0;`~QCK|=R+GH}|YGTJH_t=#woi4!~ac5fVeK?V{!_Px{Tn=+c%s(p-2 z5`qmRnClp$j3dMb1`@unm%+q_wcS_OuXMjWUj`DN-Mijx*tfeorI%CB{P5lGPyXbO zyMu=gXbqLm{gr_PazaliXWDP{gTB^#cgPj`-R~$f-<5e>udk!}G7&D(QRu!BG5x+E z{dBNr9{QwoSv)E&WJ;-lkFw*AygiOkJIqND%pYlsxpN_R>M3nKr~h2z(k3(~Ns!+A za@tP>j`{;E7yfM6r|%}O)MJEL^-FDE5#}^5=VeN`_$z*$qO-2XE#N1uSjC;$Tq@J4swlkowkR53SZ-2z$o z#Z`TNYp2$lfrl)tU)s|>c##D(u$F_~ zXU`wra=HWt2*{L|Fo10}t?gE^NmRzF5!+hCL(IAJG?s2Jp0> z3PE1*$~cKN4AwJn7(5(0bgR2ja>)viKm-@Qx*a z8bEb8g6C*zBm+GZ44>QBEJdR;_U1#6GZor-C>v-fS9y+}`;LmxHm2f9Be|RIibWaC zGf@ghHoohbEQ;6U)w5_cYRCoZQzUp0@Lj%v$6Gh5oEPDH8mRDzjlcbW{#KvdIO_&1GNIZG5Wv%dPPvv8< zseIFv4)KuQjOR{$qur);;1e5ka$I~az>7Jm-}D7M(|NIQP@gwa8nsC&hm;$BKSQIQ z6W_|5GRoD4=egAlp5xCQIHym7++j4XtsiZ8AD{e#b9fIL?tyK?0^f$MrspC3@c1;` z5br#kj{}cRxmQGw7(XNv>q_;PgmHO1#Dm5qEGW=lb8^I&U&(@3I*zq2jtKx`1lmcg zqSvWEV^V*ZH<`6j$GC#LSlrCwffSPzjAs3b4Nj2oCpI*&jDf^x{39^Pz>x|McN;3= zmt*WuVhy3!5uRH&O`qHNdC!zt z%5A7OL;pNn-^Z^;382i@;w2FewehrvL-qHt(b(3_Q<^gBJKk zraUu8hv!#bdBtTy9CLWS)yd)l-z;T(*7El}@B*FDFL;4Q7CM*1Y1hFa9Ya5~K8b7T9m@~>tT9{3u;j;jOXNs8 z>MDARZgUX^j>o5QSpK4+dZi_?NdDo6a-}?DBte@B?JfQAmNd|uXYS!4_Yg4YM^{T< zlZJRM{Bh*Ng}jhc?u^lu(`ft-ZAn-6N&XWT8p02E`1PW)_)MSR{FhjN31tPsfWFv`M4=d^E z*MyA_EqI755;62AJok|dD}x04PEhIFMDX%Fl=~Fi%R{mdI($Vh0ug@j14H@XkZr9i zmM)_cckXH(R*U$|x2Vg^%V;O}YkYL-<&)hTuf5v6^Y)us*x%M&(nbek5H?d-TLm9$ znv7rQ@A!NHX?jvLQRDNMs4Y}jEHi51W@o((1~pCmAVaC_zXUkmEL+uCA7H^QzfDI&cdc>uR-*y;D@KPuExS)5l_8{1J z<4E)!-UKTH3H6$O!E3sKL|>k|kx#u?k~@LbXVluG<|pu@H4yeiuF6RI{Kp@4*D#P! z*k+~QAp?k=DziOnHt5qDd%D+-oam12&}Q4ibuy4x*KJd{&Oz@_kSLk5qjX>N+c-k( z+|$d&7)X3^{c`uqPe1NHy!3VV`MsOn#{IjySI)dG1Bv&#KmLH#@@ax~kts?zx(w3%^!2d`$s_VzinD$!1@IZeJP}>AQ<5RhbwYPGxLKE`4iZKi z%;sY%b~mG;l#1eE{n<(2LA4=7=E!u&E!MG{onpF?zVB)3JbMECX(?&D!&) zk76zS`gJ~|Sto4>%tjv6IphFN$^yPGUcBVB06v+49QW&!PDNw(d$qPM`9m9@>fnVy z9C9b`tO1b+WjQjCfH*2-TPaCc4Frr=XGB7r7uj{kPv?j=Y$miAMpQ#ll|gc|;7Lb5 zrC2p#Dr=Wol&2EeV8KM@N50 z15i$o;3Nr*B`})c`0g5nfd`@(x*(V85U?sbapJfZ)lT~)iIW<{V8aW55kZmatCAIIlyIjg(n+S=w1V`;t#7*%7F5@tBEFXR6sUrkasMPe)02Pbbs?V z|F@1Q`?bUTM!It6m@??%NEP&v6C^OOp}}&arLwgg;a0d^whT;>Ez~QFaIR@C;iQ}8 zl)6OO0tkF|ib=piy)@`HWu8N0{L8-2;5|GKCDW_5vni^l(5|3~bW=b=XFAaMXWfCD zhGrW7L%5-ToCo!I>}#LGe;c+E&l7T*lfev9=cHOB8iZ0nXmGtn#`04?(k{`yJkp>h zgFeR#hWKsj|CH$VIT)L((i6C3cVKVMVo$rN5mqfq)K!dwm8h~EYVD+x*4z-hPiFXex+AQauc08c)xDGh= zr{=?b95{QO7ZCM}d>OdjynWM?nlhMV;=(CY+Bn+45oFuEsmL8;DDc6v$BKRC$eVCq zBZ@@8GTp3lGY`we^*#71lz=MPxCNO{e_vhZ1I~bG`+N5$3h;df{Nn`Ad`fj0~!KKtx5^V`Zd zID&IAR+a<17@lEVWLsraFK3_+EZ#sre6iSpjxk5~JhU%waFHIEEJ6_;lG z7-M|a*EUKfUMJJta_M*TV`O{Pt9bikYbc-MtlW>#|RDH>xBln1fxU93ECNFm4UuC*;R+^l*W42A!-LL-b z-)tbkr#3EMxmK{O4R~Bzn}BJj{9>puJW#tyyHfH=p2Y=vY29qv8AIp?%3YqlE?Osh z0}1B&rK9v2y42XX%=&#F^GfH{y+yE3GjI;H2?h(BR zvTOHV?VIQ=X32q*9?(JZr1A9~9#kKY7B6t$(dQ(-`Q|GbNL=Wy>AUl+Pl(taUYli% z_q5K)CpK7f)i|X5Ww3|?gFj(m7>B=^c`Y=hHNhKLFQWTsr5%42d^>m=bwD6 zHJD2_kl^zgJ1~w|rwzGvo4OZv@9W;w2@*%P?d&$+(*~i`Sg(F_duCo zAaPfLcR4{~)4J|=*DiM-d~&Wkd-3b;iwC#5%?I~(ul?X18%X^4$3N8O<$ix+!zV}x z2b@wrC@)S9fmaNr&;#0Q!g(rgf#ru z?J`np4J4R@pnI%sGk0X(L0v`ny_T)Iz?_kGJL`FrlO1K!<45kPd)x{4exva8mBTMC zyIzV2tB>N$n>^4(8IzWKF5+`lrVD@3MN=f$)-}zCf<>$IorG!Oc{UwIoufh%K@T3* z$$T-8$oQ2w(pku&A^Ql7Lvmt2x!%1~hNkcXpU58k;jhLqMPKDhT>9U<;6FBquPkf* z0C>tQxDuCqVjzK}7!whWu?9S(kE*aTkYL;gK4?TIxZ@{125Izf^{K2niITAvrzOyz z)2|~VXaSxZ@E8%GQ_#X#mCr@6r-}5?(YyERQ&hlXpund%&^h*OF&f*mr(ROcm|HBH zb_@~GQ4BCy!{xLE)@7JKZ{D=UbTj54Z`KC*1SgL55{wgSy@V6OYrG4e7$0DuLH_WM zu>2`3uk*fU~H z1_KH3!XNn_I&|3hGFO65@LZQX{nEYU#XkN{jiaEI7wVBAYxaC;Va3ki zV&H;O0xGr@&m9>mt-#))EHu^#vX1?!<3g&iskj_zM@LhNSZS;BLNFaG43ZWaY}E{h z&Q*$~q--$wBndIINrJ?>dA&L%J|O`q-l&uElqH}V3C|`}Nt7oHL%%x-;Efynq*Eg( z0B;n?Up!(+Kx0!C3{D9rz=jXH({WhoQtib=oKwWr?z*PtZ#v!ZS(@ zI*w0+9{4O7OYf`$7--b@&S_9Ef>A;>m<j7l#^Tli$zC3q^=zy0Pn-T(aC|JD8S z|NEsYCX)^Zk%(}ebR?6B%`&i|ami;<7;u8C2BTF6JU|ow&Qg}1z!5U!EBps^m}(v!@Lv?@mxn&zQTBv2awa}` zP_L-RTQz~FL))bzn|7=7rSqeX<6N&*kLjE_S%UV11%vj^x2JAvkU$udBPP-eq^MtN zrIn>}*#q zLRzPMiSA+K}s z_XvmS=H;_ke3dgLLD_Kc+j0?8^eE6}g?^~ak%J=WGcgWj;KduQm;1{Dv3`;cof$)H z)aPh;tAYiCeVX8J)!@{hv{Am+hsxZ#vQ8&+J=DPajs|YG)W2O9?t7{yjCase3?EHf zuR~C3`e78}Od}A6QXH|pk2pQk=lOV3>Y(yrfXl$rgG&~A1jAU4fiB0dF#t_nrXGWn z`hvrcqb^iUve)$1Q+|t{_!i!a&V}LMhdhrGX#11Y$=s*W+rm$aU&_RMTDqqbhUS(& zKOKC+B6UvPn}xHj5mepP;My{#OxugLpxP3~(|V&p6HzAMTpT^=MNReB;26$7;hnaS z^cY8+KY!knYQ_TKqAjAYBrR}EsBsxz5Eg&N27&e1L$uL`g`V-Ge{ul^94r#B5f2?0 zO0W|cg@qyX1f75<$~AfiJh+DRwKNeIeF;4Ai_!nM zac#a&^1N97)9?=AhyH14o+K>zCv{>{rd1WHJ^(*n%wof=3?54wpU|mtxLL41VQ_YjFc@w%t6S9%}Hc?TlIz`k-g!dINnG% z&c0l|*{Wyw^jeoW14OX8VkFMaaby4hKmbWZK~zCo>bKXeQ|J}*cK9e7jNdpVW6{@+ z|1JBHP%)@Hs&x7?Dv>#kkl|Vnn#UXa2J4gbh)idm7rUpvEC#b!+>oZlU>C-T_7RWO zFEW23%w?r=@+S#2uCRf*Da>=u$Wj1fagLuWY(%i-K8jW3IA)Za0>_vVTKC>(g2wa&-njVD zg$^jAi_6Ydw z^SAom`v>|&^lv{r*L|Te*Y)dqgI9m(fZv|($6Odw@TusGY0(|lx4i}?`KG^gofIqF zYcroXsBoZlW8{ZU*wGI&^y)Kc>-0=pMOz~}y;iPufA=ARFT;geZ(z+q|IUjwJI2R+ zK7e+IwJeH{H<*>UTc^DN3>c0aJ*F2yb_=&oI8t43dn&kswb)D-(po3s%4VRuaqWt} zd4FEx?hD?tVDn!jL%b6(e>k8QOm=C*ZnM@JdGW+}6<;r^7F@ySxz9^^6OwYQ*gmyn z0gnJw{bP+%$H!l~(EaYyPqhXk0|^-?=pAkuNUZDjt>4rg-MFngweL{(gO^_J4sYGr zt+{c#Tc^$4jXF7WgJhxYPo=3`j99YPDob}$8_0Jskl4DR`%EWD{OsIsx({U_@y)|K z-PR)qySIM)UibEU?{@FXP=fszzmTkY0$q}xF40U`$`}O!QqBs3aQ>ZDF_OF$CfBxa zfZ=inauV9nQ-7S_)R>hGT*-XFO+7-M)IH?ueMYfF9Q%G4N90X<#t-!Q%tNyAOaDr{ z4ZN>`I0(ZDwPei?67OLh#Sit`eAvKAN=lp8^3w8H@*4A6qN~6mQ8|$5FuVvE z|0bRysxeZ{=LrXIuHeGomNjs+o0+FVC;Gsgh7EXNiDQo><8;zg`>&Qo_}CL+oP6(o z?VDylbJONJ5rGQK*nxc!+5}ESpdF?kMIZNQZP`W)8~PVXB!6hQtyl3Msrmo?%2(^^&R00gXiQ@a z;X^*q2Trti$wk)OdipF6?g>4XOG zZ=ZR)d;N{qyHlriRI4nVksSjp?$Au-hU`qTFouw@9Y!9|WBQPTo4KmXw8{>;V&9m9p9Gj?FW04^pJRRLL0t>Y)5vC5i8 zs!jo^30~Yk@qY&iZe)+$}HHq;U2-v&TDS^=M(_8BF*AXzf;&W`%B;< z16=e3H1B-0B; zP5$nC1j`*`FC2NK{lRbk)$Y=d5jPr;t4$OWfINGre220c5)oMq!{Z;u&*Nm6pJg9p zi`<9l76DyS)R<2C9hFaC3#}^1MS6#G8M^HC?D5HZ4-|Rh83T#y8sK3#%0%54h(RL# z*sOsb-{WLr&*A}N2z7eWlhOzD1?^*8z}V-ZPI2J$2n-}xG`OdF;r>$SVjxiqr4gt@%@04~$qOQiha`0Hz71Xbg(}svI=YQXVx>dQ4CYyw+phY&Qx}GjDd*f% z9yR_^Vw|#s-bqJXA3qr(U(vWA`1^q8Rst!12t)^>2eSxn;fF9T{aLCp1YQAuwf*(` zw9wC!$1oqhFT0u@n>M1e~&f5ge0k z@Q|O|SQ=8fqzmm1Y<^~iHy|tWh&&=I#$d;fA9oqRH}oS{3?x4K=p*w7orH%!(k49w zhL7BdOB&*nAJ32Dz?BQ!loxj#G|?APE|dlO!D0zvoNP!L20r>g+N2L&?g4jh#nymF~3d1aaWU zwLH=;!6#uAue6@dl@2Ez_s|x4m7(VgwcaSi5&?U4KFL>t;Rt#*#|W$SJWjjOVm1rq zyiDMQb#0=S5H&XuZ(4h#9c1%0eH(8lQqO{q{E;?>7_8a(#9qmVxee({mr9o5)#LhJ z2Idp`+|NKZ*tl@wd&+pmr52C^9Q~Gogs@B&>!>_NfHNLaZZo3i1}}B}X%bNpOWrmA zp}ZM~)I5%G4DquP;b<6KU( zWzrwNl&Y~5#thVZRD*VcmHqX+3<8WmF<4;3iFG<&2Dv94W!-_I$3S9@(r=J~$F4nl z^_lLYdMRX=@UsuX7@f96I81BNLraQrM6PQxMEF#nobX%Dv{j>eB0weCrm_2>W5Nm%QleMq}XlR zXE?ZVOZVc|UEQnu4|iuyoa_#6(F-p(bb9FRd)>Nw`W&BxvR?d3()u(iBvx7TZvBmi zdP^GviR~M^^VctR|McOnyWh${;=-eQ-Hv0z_s2i(&b;@7?#x?nd5%I|8LiE@j)`W| zI_|3wtm~2T8nt7i2Y5n8+{+N@v4PeS-HMo|~6`?l`WfaW*iApymTgfi)gV+_PcaYy>d8vO&hz>Bugy!`1 z^!Ev`F_r3KUtbfBAGjKeY9y$}cD+ui@fc8TuXRiEA)XT?IF0*;^baFS)D9y&3?521 zYivOpaAHhw?fNyn9Dhx1^+WB?)MsLL?c8lz8507>#TbQk59nbZhYQ`$7?S*fN8iEA zGjWWmv(LjARmn{&GN6ud$9X+j^(bpO=1buiZt!Ul;21wKc7>-c8uL)+7~|Z&C8G=( zGF;YaJ{XB$z>DFiPpsI2>00IcQ2W>z57WnH%nOa2Kv8?cI(10xv*jY%SWjRq;u9pu z80OQVLNr8jrO>$J&qM%!;CMzTF_6Fy(!4u(L!Sp0}12+j!gWhFzBjz6_L;>M80Z*LqN%| z(v}`USFVDnU*whvK^wlTXLk^$WLe2p18`}4FJ}vDOm+H2^xbfS_&^RNlYY3$PEeGe zT;N8{i9@S+4AH~&!PPI5hL-+M^6`dpWd_Kzb>b^BjNXm(5MGzyhH{_BO7aWpdASVXlkVxV+UCyPakGYC-Z5} zlunEIKI}P_KwIC@vFPwDa$EQzj7xu(Y7Bu_z)x$Rzo&(Mo;-&6EOkR`nC^M-!>i{D zY6oZ^sy)bjs@@vFNP>$K9GG~I+Yu)8wQ&Y7;GutKe!}Su7)mf{$AQ=LH8*7CpC@PH zLmz3GuaZAw5-!Flj8$lN!4GWaxJ>SC0H;MTo}mkvz=a-Yn?(mO&(ei9x;|~lZSmc9#+~e@t;(_KkaN;MPa-+{dFVF`J zJkTNdVG#vb96aD!dPpC=3C`rx=Iw+teu6*ILw~|o>b~6khVVoGO3^vQyOew>S2hv( z)E>`V5A`M{X;VJA2mgG$)Vr$BNwe5}KEB0LKaIF~?L_JKw4A83taqdhV_k!02btk= z=Q(`lp19nBS&B>gz>+=}aaE>eIKZ5aHkI(y!{kSp{(Bnd$soCT#1PMdd*K|nU*v^s zXfK$9u9rc;dKpNhtstJwtT9c661rMPd|=YHhEEoac{Wa^BW+!iIt;$hXWYWcoI$TD zdAzPi&!t&I0|9dZ2KOw>)%>6q%5U}a;X9TsFAs=c5^G+;+9YFj-bSb0BtLJ^i$-ru ztFHNlFoiR(iENM$&#cq2NoyKJBx8G@03x0ugW|K=X9zC?fs`M#D6nzNC)<$G{IU;R zeFhQ`Uc^Txu#2p5IY9zHx}Ucw8AJHg1cgg_q|oVFI;#Km*SeQp(kV~s&$jzGX}v|M zGT5T^OvWc$v`bCWb!sW zLYwhy{OG6Upm}nw;qa1Vy#xoEq;F6@SC0dA9<>8Sq#5qTtGTemiGc)$2dqV7i2Bo? zzVA%~~^OEJK}*Yvsao{K%DO_mu;kAl!OFx%!{-g}iFN zNb8G61w6jg0%EYy8;-RG5;R4CvLWa1xzmnFk86#KvO|N^j%crD@J4_<&bUuU);=o&WR`o!oFqy3)Tut9^{AIvHR(Vzv@1`fPuvQZs+kM-4FiskGeDO{-As7%{RT~!X_X6CwnyPO;p*z89f#} zFJRnErhTE6tH(PGs4ZVxex-bqJz2_?ZK#y?LS@a@f zLdKow53uN0bfyibeiMgdJcUk$e?2OW_P*aEkzp+R2%MS#4*Cr8HZ8`ZPx)9^%P^Cd z_sF0A1;c`z9zmbXz6u6E-0_2tbrJL*8gSqRA8_ynE(|y~DPP8oT;2m};JxRpz5;k0 zc&SH>FKf@d@DhLX`VFr?b11?F?fJqF{U_*<6?wx0>(#Z#Trb4)$uZ}xz6;sanzn2d zdgDusO2HL=*`ucZUcGwFYdWkakcSNaPunx;Id&{1K{eAA(kU7 z$PAoSKx{}ez^-)U11kKaWzt3%g+O|Q;)_W!rxz%h2i4BM=)y>XPi$Zyv5C%CRy8O@ zZQ@tK6^&9l<%MYi$>D&B0-P6reIW}d3P)jb5wHL1Y?PQmD=_McdOY9~0DP#xe3FC& z&LpHxlF*SNq6rM-jfEtR?$&&RUwpOxb>N3}B-~~X+*L893m805!N9Ra@_}#4nsCUqfrJK(l*V1r!3HPpQ9n>ytHBvM z1XpY}361>YhJ_<<&&moH1Bw6jKmX2)do&t2>@|U9pL{OdAhmIv{ne^xr;TWZnE z)+KIM`WBYwrNRx?s<0Jh^{%o!Eq8G?HA6H?FAZq(c9pOF&us` z2GAb%`Fk)y-$8rR^PBdy3ST)ur!#Vv&-SO68<|G$U>$P8-#mhbaPwG+9D}zPZ@dfc zL-+*%PZXfs-R_L3z{}XD#xb>!SPRd+?x@dVu=uqMBFnJ5l0GgD&N*dZr^EnS|feIDooDTGORE$Q_=kw|jL025(<8z@@CI zn>YrajB{8(9hDK;RK|v>pPr^BWc&zyT;IFZB7wHPQ|_a(pTR&2KLl~Jcju^@%V9w@EQ8ym3E9WW-dq{M_BrC{InrVx(^&U;4y)XB(zbLxlr_jG-(sD z?#Dm^LkZei+NYXhHvOpb#U(xYwin@vi%4j*F#3uCCyQWN0BiGS0Sw~-j!|Xq0S)O7 zzzJW$O`g+S;-|%}L>T!&3o^_FZ^#`32@EAz_<*+dfF8J|-GjhS-mLdLGj&!XX`rEjb zcwTOPL-?V8C1{+6b1C`SU|1W$lr`fDHb*%1lDU1#t}R<|1~1{$U5z&aHyvgix>UGv zil_ZFi;v_psecLOjt@?GuF0+#|o-TfB=sCw*X&K6mOEWtp`;%9b>V z&pqjDU^-6*f%b?Y9^ZqHe90&D5uOXVAR`t{x%}x|%~QSh=7Djw596vnrYHE5Y4YF> zpR}iGt4MDgzK`3^;0SFlQPIb}U2g==>!zN6s6EvBsJ;l&&kuCksusyTA7(98>ty#e z_GTHZ@ag3w#_Rj`>sas|UJs*w-MXpchSh(u!FgL_eZL%~zSeqzj4T`0$7(&-3*UN% z7U;!b8lLcTjn)Y*Z^G3V_A-Q$)<6QfCO7QH{>(R5mw|*iiYoYyOmN65GUAS(F+=J? zHX$BrL$ub`A9)k*#PMT3LE_ZQFZ-nuHq7~EIj8t?vcM*-zoHY2muw6}VQ}@1u(4mX z4Av8EJTodEMf+JLW)%3wxPlX?xVAhiY#fI_I&C>9dyi+)72@>Ax_IgdGPtKVVX3R> ze@P!4h5z~bjh=?8ly~{XW#-%ppeQuGcAek_!!N%0virw>{HN~hxsUudFQ>jJ((&M- z&at1cJ<;KT#%PV|WTdKq|Z*0_47)(Q?D)HmVP{@DD0wxQpT8I`ky#2UdGwQXE$ zbzPT%#Aly<>d%0efduVHPq-fVOlb@xHeetjxxoW4$b3>GNtncXqC9$3+*-YdW6OmI zwUr!mPdj;8$GLy=#xU~na_>Xw$n7;c{YM58xAlpQPpeS*Xr zufMKi^LO`~mYh0M>ph{S=ci76^NXwJpi(t%Oajd?$ND9KvpDb zCG$mgj0>nsv`yqi9gHEp=c*bf(0*Z@&6SPfFguig!k@SMO3HC1cwG(jLL<5pJ;I-L z1Z0x&Iq_a|Wqzaf6_@o4;&9+0J$~-FT0d#I2+O$NiTfXLpsQTyb7&(k=KidI@JxE} zFh{|H`LLqImX*pETR$Uvga2mzJL z;3UkAJJA?OkQt7J@H#S#BeH4}8$od-283WaOLOeEDJ3k@F|Z>XpKDp)L6z?(rj;8<)jNCb5QW)#Ju$U7|MJy%oRm6)Ukf`HaR-LgpYEgOxH_?aOe-NZ9u4;ywUY9|MEfiKmPmw=zjI9 zUt0%x+eC%rfhGnL90iV%1bPWh@^^)#D6NlWAiG;(!%-BUJI ze$|LUU&)?_g{4FMlHFiJv*dKE3@~zpY$WEvt)HjMZv?Ms^m(cyPC6PlgrjIC!p5MY zp^rp?xmL)H_!!`al)9$XZ%CR>(~zgO!yyaOO;0%>Al^Yf%SlV#bcQ(E4UQ`%Jv2~% z==Ad04HmR{CJb2W6KT04ftG6Uy1s#5?GPK#v|scebn0$9)Ca}Sojxi4EY1Z#xLOz4 zlBXw0r~+~*;(b$qlZ;^HPniJ_xzp~$D{T%Pw-ABLLw09vHoiNnW_spKj zUsqhuamgWp^X|Qz=7A-?&5y9kGqDTrL->UdPZC0zR{2yp6)wgi=o2+G3yG8)lA?V1 ztj5>hd}B*g`YRTJtQ*LJvepECod#$-b^O^O9R<#Pz4|7?$xmIO@gREIFZv+YiCG2` z%6FYsD=aJeX(#OUabzG-dDnPDAOHi$Rn$3sbyw6lZ8~WTcH`!C*D3t2bG*R`fl5!G zx=Y7pvXMyLrB6n$aST9_*#qF6M`hEt#|Eri>v6$vXj>5ReZVu4z^Lr{{3z4qxMBKX z+Qsm>^p}_25d9PRsZsfRB1BUX&y!1%tY!lVcz{pJnD#4WO~0G@ChaB*P4xe{ys@o` zu;(U9503Pez%!Y}IDw6PPLE^!KWjps{uCTs8IKU2IB?gTwLaZPd$xc7e$&J07T~5` zBRvyzHffniL&FzeeBn*`EI4Ft0Z!ncI)+V|v_F%PuC7senMNSruv!p0$t zjhIWFJ9o|oC~41W+mRRP+6%nF4b9;>VS#-de!!7DLkIH3K_|Ggpo6?w;Gj%+#?S>l zqK^V5bP$IN-QdR&o-6r=2LlX#z&Fj!3ZDl1G{Tmf-w=N2e;PC`1;a3G81l{@Q^ zS^G(UVhIT?>5I3bDY%1=d&@iVv{~(j2~CEZji$(wcZrLy!GKAZ$`37rY)GZdE+4SS{x^;@|Rngs_ zh~%_2$Ds}7`_F93(+0agS3Cw1eI})Ejl7*RC+3pBo#<)S!=TOckUo}M`~h3-1`-Wx zeoT3DPhCJy7}Fs4`!Wb)tx?f6zuL8X(92AHC zd2YttidJoaBmE;d3pnM0m*=s6GM?FJqpZf^QX8R6d5r=Zc&BXWNLJj5EB^JSs`Ry9 zaN$kWh5dSX8Rzl*JVj4KQOdXcV$@|*@-@%B{8{ons%_tD26>qP{eG^ufA zyEnn+IeQz_xpreJd2vsEkrC}0ZronkJNGAe4A_^C_cpWwh8EEF&|c8)z|96u+JSk6 zagyux>sM_cao3xCF8N-!^hU4N^tNi9V3!Oe_U}I=Ubd+PL$hd~h1iNAr05Dsg;Q^X z_*$bo1`@yf{4*VUepziC<22e4DCGwOiCx{{EY}?(P+Iy%wx_x)I zcjMM>JBBVISX+yw-O;fUw>IeInl07U?6e7+jHVr z_v63#bDtpb+N-as{odvJ!k(E=`GybSpq=FpU7-ANZ9j*<KYcT`zT~{bvl7`77gKu6CZAx@$a2gLB)Vd&1Ig$Ilp$bj*8+02x8%zQa!(VHtO4 z>`i>_i`Lg3fJwhW8sMRaXYXGKo_OGDonwt??)Ps^UC{+zV7POU-h02$FF($5=>3Et z3tZ@RI<@olxsamMveFoxw9plqk&g7a@RKJvjHl+s6H=*JKQTpZ3&FIU(wLOg?q zdX6#hn&U@bd<3&0jKpzdqOAI>m`jEgSD68iAEIe2xWfbtWs!nR14A5m$O{-8VbBmI zVR4?L71@aA`yq7BHTWwfap$G<3?O*xA0Bu+nTDwhFW>_OQHLtps=FYk>X2PbePI=w z;#2?Nts;cq;#p0k1C znyB)UTqzgPJaWRt+ejEkoH_G$_s%=-bSGXo;f)g}n=tS4)nJ$*3t`BBBfYWK;bK7) z*%9u^0^yQ5@@7IH0;C^Q*vSe39SpF4`O9B+|Lw2-d-sc9{K6d;ieG~e4N#O{3?xRA zU-DPl=yH8(16|T&PzD*+Ck7$b)E=LsPO`RuC+JD*`c7LgJgcBAc2{uPqtY_d!r%l_}x;oKi zyr@N7WE0~v@X~)w^do9-7!agip^d|zFv3ZfD|Og%li*8#^icn!(uiDJc|uS12UTLh zMZZ9s0}s%ewpD7Bm*QQZgw#;Qa1 zqhDmkr5q_LFK6n3K9}*=&0E*~RvH6Ucwr1yNi-HvKe=^FeY=hmVW_v@i#~H7p;rzN z^u2)uf>=FnSijo#ZYf+0(+|@uhR^ytuK^e$e2RX?82NjOXpL%~T$0~vH;|xws~w;; ztFME1+D|UpQu;;=tY||pOvuR%%;|8z0|y?)45VY8$q5qY&!6}AA`RHX0w4LN-3}ho z;t0OC7vY>7aqir??i(5TMK16S|M1jaL;i@v0gDT)J7Vk$wHkYl=N}Qm;L|)3EHa42RMKOS^eSIH-3U` zQL1@EKaR%--QI9jTc$NRj(5k)#dw`HIU7i5-Rlk~NVqLi+erJU%^eJ}j~&xSqWW3Z zOj*z3JI|aRdsCZz7)Y@8$0q_QqpW#(tyQ|Sfz4XAzZ`dL*=R1I3BiaT^9_4qGVLfw z=u2WfW0HTf;9^lEDiFOtV83q$638a{0n7N&lQIy{_pyC~LK#S)qZ>8HI)40E_ro9l zuse0?@I0shlJIr!H$A zuMqe;fBv)XCqMaz?&D8Bu|X5-LN*xa;aQL71<);esgJP?GHG4Pwv}_**~l$0ZMr;9 z(wfk5DO)$F7RnMs3G`ZjS=VFFgHLSS#Xv&Edu`L& z?&B-pcJH74Rd@En*WD%UeeKge%Afp)f8V|H-n-rDQ>VI}nk!LX*b8y{3rE6HoC&vN zOWneypR-3lCAawCtWptTd70mF{2#J`MC6EUnNQI7dE-=f>LT&XkC=2d7i(*EP1E#aX9e`w~O3wZLQ z-Qwgpv<^NTBH=S0HhzWh0wX-}!V5GKPCaKm z3Le)SK6vaA!o;=2g0OEg7sQcy2moOSB7+*})%TGofNXfBL7{L=Y%c_0NRI<2aeiY! zjX#^@6sS)Uz(}HBoKKTZ=fbBV*004df&siX9@y9xV_Xb2a)N{?)}K;FO3sm=ao&DX zJa><4boU7jJzd7Ypfmz@VNr-GSWOhjkB$5dG^W}B;ZqwJOc3T{pENjv2M-{G6Bqs? z(~^5B7P5_;4cz?D(G`aJZK6hx!ASu5(AmQqN}bJq!y_DhAcvvFx|L* z#mDYFlKiE1<{f;=HD$-Z2|e1WO-{a<_pZK|^~M`-cu>D@-~Li?<-tIMyvEA-$ZgYr%K#f5?+tw1c}?hy?F`Tcf78Nw}6 z>zlRFz;0qfBC(W4&z8+_01RZQ*TOO(Jot%4^wa19$4a^6=lqpPwOb2w3*0bf8ow&-7E=bK&R8z+n_mxZYahjZxZ6Ca^IK3w~(H<^qV6C3F*ge zeU<`iaz3$fDFH}eUs8`pHgQ~!w#u+}Fw)IWQ{Qt1e!rajUa0^IiY^-=vjq!6x(Qu-?h`gcxw z@t8n^(FaxAe(WsUx3LyxT?OgT+61fv?~IXRgRG#3#Rm2QKl;xr2i| z!9m&LuX%m{iAM24JY~)unEI^MZD+&c4`s)KNBAC=3u$qLM=tn-GyD*S8~Q7Bc6j1f z>OPB}S@{j&hyGdVo_6?>@>ScfB3HTeFV6S`3C8N9b-W5&q1Nz{mWJ z`y*o)5u!->sq91#FJS>e81xlAk|7((8tXGRAY5QRNiio#@QIBw%%-e);YV$u`m@7F zj%x9Dr}JkWj=Al9)>*Yk%nMPRB*Ag{T(qaa2)*DnZ&4rM&pN2juxw~|i+tk)4i|aC zgUA2I;281KCjgEsiHMeqKVYlfKmu8$tl865-eVsoEV8 zpgAsj*PrOAb$;}Wiw$4%BdCm{s@{!trYHNkxkXPy&{*DtNZ#H^DA_ws8|BnXj{N@k zlTU3R@yVy3y6!SZ$DjxY-+W?YE1T;&jheNwj8%w>11Emuj6)A_@$(#-X5E1a&fG`q z1=?G&+Gu?MoUGrYQXADy`ehO8E(Q`9R_SPR@x~g4fs~N;Yx7opwoYTq-Fx=iNMe(C z0?tMff`P8l1u^iVwTB04m+s%a*lANZ zuF}RGst#WeKjEq@5;R;dt@0$5F7lCV>tyS7-jBL+RiDo2=o*RSb?5*Zo` zhEHr9-n6xQeb1rp;5xk+d+k=YW6k>R@J^i~A^vyB$YmS*59|ktKFd;R$O8ijPLQ}M zQD0s6u=@xDiF3d1KDzWxcSUvOz{wZ8KmSkvv3o~*Dkooj(R*ra>QRRzD6!oG0ez|)Rf6Xr<$fZJ=dg3CNP`GF5w zi02|4T+IJN17VEEflEHgBQVeiTwsz9<3z&igrACsUgB}&nKZ3Dc#fZV+BCQ&KV-!E zw-P$ch}eH0q#<2sN?hnAZsgRo;o|}>>7b4J3=YDPiThi|{(E;Hc*Fui2D~6kLYT%W zjRj_peuz)TtsoIz3?#S{$D$Vt6|JBkB*Xy2g@ZU8aU3;-F2?Kncia)26ca@{!fZS2%t358UiV5Aak$P>_pM4Ca)p`E@u2)aM7iBFP=S2c!aE zgMFQ7;FAz+$orEUk}uDp#|9M)Y~|?8!#6aLpZV%LHp@B0IYrM4#Mm`VB&fe*h(QIT z0Fg~it`y1OMDm1b8%KyI=tj1@HJZs1*5sEierxM;zKtgUB_3t$N7B34ge!W(+u*Of za#{oW*K8#5!V52S`}Xfs$F2<&(Luf(gU_a;%U=lKg7S5z-_r|To*Bh zSvY0G*4jPm;S(Boru?`0X@zxqrlC)*GOOjj6Qln{{CA}&R{r2V3 zrsbL78t{%|0_u7-4jw%Pel(DzY)7$=_YnG*ga@VX-D3PtlNZULe~clR#`neIoW98) ze`pVedFcbkJ@o=v(>HLZrLXXQBG-o#N83$*f%RTalVGF5hGw*1nv~IA;%F;q8(fZk z-2-pxAmOcy@Vo!$?@kX6+8oiqmBGWvuQrM|Y#wN_iHW;mdN`h29BymDC7P0t3GL+x zE%Xr>`|(MT(C2o!Z|g^V3C{5fV36?S8fZ!$??>`lj%#I3y5*%7{Ji|;#W#5_M^~ru zNLG|9HOl>z2WLfNl`#vH#Fdc``hy|C74@6nYSZq9o|%z?p;|Ffr2Yk?$u0U0=N@fL z9X)!i+p5XeJ(W4*0{z?7!j;k~oSH(P#POEX4J0&)hc>|t4J1UF^PgCZFdxE70_$4U zB__ix2Ec25>#YXNx3y@8u?KxN?Th6S9Tj{wqNumjUuZ=ZxEkM7U5AkACrB7{#!oMh z8L_|b!E@`wcO-yeJ)cF!Jo*>IL&=Z&;aM51V0g8>&!+vIC8yPHAVK-U8~r7B{9Lp# z_|u0{jEu?C_j7^+hLS8y(MP7g1up5C)UqLtfdrqrz+i#42M6xp$De%j+}@!f^pVEx zpYX(B1H%F4G>k>SleFZIkp}sH`Q?|UC3p;^pTNhT`>gQ9KaG22Kwj{K%h-fC!nxq@ z^y$++NrJTiWQu{rS6_W)nbMY12Eh@$;A{D4!&_M39>;|~@FG`S$~XD|3}NYW&;g7( zC>zF;lp8#Oqb+CBrJTVVe8AzrM|}Ja)X&gAFFf%pb)QAgto(-XL;tLFPdj```7&J6 zfCE^{hs|6*v5|3lbU9_o9S3|a!V+FQ08?#J`4|6P5}k{qc*5A?X*QC@$48+*a_~uG zjPLq76FpCS@@dm0Y$^Ao3oQQN=8ix0kaCQHMCuL!uT!qUe87u3PH;&{Bb%1ZBg;3R8Bb7$I8M4HU4}O)w-tj6X1~xchA33r03Kvu9uR#=GrPr^Fm!< z58$3oV#ILj+_{gsfB1)=cAuXA%;l`o5?pT(C7w43cAHLHz(9gIHf=R!ipw1t@!aZF z;sb*pxZHV;-+}rGEceo4{Ze;D1J3P{*1&4b9)o7>TL|)j%J7y9t2ja8w)Sdha?o(o zC2hn&Vv9~u*sFGDw@yFVxwAflQ7;>bZu3)PIMTRvB~1Gh_w|YIJNm@uRh`)IjSLbn z+9JxA#VYz_z_DZZuI}jZW8F@jAWDx}Pcy@c7RHpOh)BEoGScpLzr%3rOXAH zM^FcmE%i5ho%q}KoU))kt~6~=Q@X2(R`_0R^r92Ew9`D-i*>dCOL(q|t8r%Z2!7o@ zs$ax~fAlVnHif+f9P{<)A%65W{@}#l!V!)xw=gVP%@#-*J!&GbxyCBN{aRLZyLPTDrU4dVq>u#?a53g6HI zZpJI%UbB7cu19pfEdEqr6(R{h&IFZ2WEvOb_z4e#z%%fn;h+J*fjbwlz~myHv`OFQ z!-f=_^)`^uTbcgchB}0Y{;r+`O*#-rW)vF#4B$DfAqEm`h-1vapaW-6{V)WOjP#JZ zqx}O`p|&fl7|B8K2`_wOd8qtqP{4znUx}Hpv?LNbdndFK^^g zohZZ>Q9jWEz=1Pw!!XI3eBg)UurY!_5-vZE%Z6qpjNE}MWyGrdo==hZ=IgI)9ePj4 zOEG{QIpMCfRr&ZV1&;D(0KnoV-?lw@@}-XNX1)FP+y3MR*3ZzvF@BUW8!^SFXw?D; z17?gaHgBnc#Ap*#xGA$Llj4?gwLyyVQfr|XZArC4rdRaUbEIe_{3KKzK>(ech0}#?ie#5#z&gGiY8IGs} zGVAUUO|Ou%V15t6k>NCFT~$N|cCGkEDf}?+o&1-lg6$QLGbrz=NZ`Y|D_a_~8j$+|%czUjrs^q?yJ)X_x@AFze@j5I|cI zJTZtE;fE*TjvrXs;93mOw??%9#ex9oflHeadPo;~EEBa`;nfk(`bRV_#Z8kR>6Vsy zoI_hC4yByN(es}gcxyV%Rq63|9e2BT|AFqH-VS2%a_$ghl1lnOpH1CZu7QN87JXv_39pxm zV9IKZ7ON~D-syj)LN%n|@`^ywIW+|fAfLH`YKfsOQ>vBfs=kj+g7&B#aS zgsb{@;3>$31`>{WZhsc&<8w>tcT3pJ`i~MU;%22I2`SU>FM?vlqCDnTCE)K_xuL$T zW&;U$2|sRg)b7L|c@j<-{UPlRi&4x)nLl78!RZDuOb8rzV7b#a||u3Ygrp70j$ zuupAuuG*=wjuJ;0^e}cHZ#LPFA3tuRO}CBYjdt>{yfBi$K!Z~xpoM+_K0+ffL)X$U zjC)#s@`V@jf)?(Cg`UJC=ToOndA`O%AVvn~&YiP?1TuvmZ*T|)uEhb)7H@F3;ZMR3 zc-lPMyn>f7_mAQgeZWA1G9iqzWBnn#ro2gmOn|`=o(n(W$s2!M_?zWV__MkX>6w@B z5Ps;Nm;PzRFD+lyn`Xj?0qK2>KRlLJIWx8no|ISgqb=vjazvjNwnMY{3jSH~D<3|u z?^)Qkv@{Lrr#fZ4O8bV~xY9mER!J9si*vE(qzepwa0Czc)HBMDvTWy5frp+dr(jyj z9a$`t2RMgxwKRd*@yJFO3#rHi`LO=OorT?c8Hj#o++GB4@a0Z8eMnyL@+a!l#&|$O z+oO3Mj`b}g>}5oH9P>&zX*W!X%1LoKiM7^efnyO`pV-hQUwpv^55g&ZB|`7q)%(Sy7yrB($2lz z;cYv+E!u0mbLmRA?*7AWmp(JHo%Kt#o17pKS;O%o3G~6nb=}Q%kGczw?sn%ceck=b zN5AO}Bp!4}PQBdy$N%zwbZ36>PIu(+VSUzgi^sXF*`Qu2+iC+;I1&=|pFC35;cr-9 zOFktdm%Dgr-5;`n1Z7XVMgPx*qnj%0*o0t7*JAo-f}07t98Lc*qY57x7k2~#cdh`92wRCYoUQeo7lkmNhYLY z@I&LlA`3XcN$1W&QyQ5FKIwA@PZ$>!PS1kJJq@H-oCmk*5@VxHqrSyAvl1Q~p@K^36Mz;4iBfX)7G z+qV0&8+?BpcVBqbryAZBq)!JQ^vI)1(<4_gIuB@Zk8LdVGs?RO<1vcEGlmF0L4tgQ z(-R^lP=IPI$m?d6IF>6H958&X!3^J01|$pt;J-gt^R$Zb^m783Q?` zVPTB7xjy*dgYK{Y`meiR{p#0VP@$4hF6r<#+eo5LHDLn>5u;Z*odQ_{i=hXX4JG=H z5(|DD@I_PU2Jq-^9Pv2l8av8vR%wl)CZ4R{EslxU-y6@QoW^Wf#_>uFv&1(meUi?) zgTHl=bV45&Z*VTaKcNqSntq3d;ea-fv*;QQ_ya%d9)4%xiyY>qpB7L1lMa)%KXn9| zxc(?U&Dpr!ANM~SbrKMt?AflqiT;C&HiZRm+Ia9mcW4JMdFBqzDzE{@y$!zSl94He`xy|vz6{(+{fFu zm$|e6!W$LUZ&%+1_&5kl>B3jZAobBratygdpt~P??z1tC0WLKti9s z(vg;TwaCN-mPzuo6C^~HP_bB`(@T0iMIMYTMg|hXO@HoBSqWxMb(I>s2nNJ*=;J8&O>L#0Q)YGa<)i0YT5J{BZ8%Q9C-#<62o(=2ckn>sTfTQNk z>i>p#R>Du+&EHDkpN4ZNuhniKLEC}z1XXR1`%SeO@JZQcPDq;)-qV)k6BiguFdv{z z%7nS*N7eo?*W@!77)Y~FOJ5qjN`9du;{oEyFX8yp{}aZ%lX&Q3gW{Op++wpGqs{OF zJn<~{V;u4I*I)Z230@9>2jamIzS{B*eQns&ekR|HC&F8s2XV+9{$76h~33tM$$qP8rwr=QebPG zkyHG$?n{N6m412SPjfUv)#_g8APk2;^^Y+0gEq|u5`Gztx=?M{HqEE@>jYjtvGM1B z_GjHoI%Xf8B;7r2RQQzO;8Yoqj`Av<8S9iY9x${({*Jd&30!)mi+f$hF!3`$Hvu;` zkf_ta&~G-x(J#hGUelK`h&Rc5xkNr>5}8e8_?&qb*GtLKbLf(%KXs$E=i4$QV7&O@ z*|Xh0|LlYAcVB#2yhXzN)Hn2{tyjp03)sl5Z9{Y5BvJ!Xbg))!RP{ydOA@wrt-5r>W(vw;Mk z+h7lbGLMl2>IHAm?zI#NRWk*xHQem3>I7>HB>1ca>-$0uxk@4!*8XL1!pRXBNYK7< zq6GO9Us_x6PUIgGIPy|{Eku=P={@@;tp5}LKricZg2hGAaYZLuT-Rqm9%xT$(|Wb9 zg1|uH$mZ?c>-&#%r}rP~UfO%0+xl=#clE1px<|L}`V$*lWSF*5eJ$&HE*Is^{(~~n zo5UM*g2bcl+XuJ1vlqXTfy8gSPjrIBRh=kt^z^CjFaPU*>E4!s1gFVt(Rh|V#Rd|z zxhf|dZF8PmJ#l3JGpw(08VOilJ+7qrLpG40&u8wCdPkd@F$?$9E$Y*_-qH6hKJSWb zpQn53|MNuCVzjIZdTEz?CdT?Po@)}->JHEF)z)2f57&kPgDz5YZMaLjNqehs^b&{e z;%Xc)o--5fcD9Ef#)nRDP_kixNt2$;VJ!*`KP~< z90JD+v`$NU+9qABO9P8*X-po(MIM%u{9cb?{YYr|OgeNi=JkOFJ-qX8_!jbR&HA;Q zY#_lRNfr_y9K({mT=m9y$rHm&_ zq_wgM7n39$e#(J2zR@iVB~GiO|B)=9UwP#fALokU2v)=>Y~=59G=}^@V_#klD*P2I zxzvGQ&wnABZ+PGapOhgD1UiAPV@Z#n#n#f@%Ewp*3r!3V zIPPUUQAR%@X-pGvW4*07>JQF1NMHvMx|ZWy?n%F#gavCoUw*Ptij>PJV1*uLlPd(-{7M%KkKkYvF$v-sYPB;$O z_96`4{C3Q!{u0_a0l175l(gi}Gwm4ZJyFy%JYguoCVC7evM9m^4{tm&xBw1EUrGA< zyoaZ&4u9r9qJ5eh%5NGBVbfF3f-X6>vB+{UH!psvbWY2|<>-aP(i<;MQYa%w8S6rq z)n8!z!p00INL*E4c}IOEt(KvzLrSdsRvAm~lVQZ3efzte+Q8wH8+WCz)%O()aOO?@ zY-=EKTe`xxFJ~D@Xthk#NoGn<-#F7iq8Vh;muCS40}0Z55Zd?U;KDKfx^|TX)7zp| zfX=35gAAynY-;9vjf}hCVN`^`k32^C-2cqeua#!tyUu^P^=Ak_kNzQiD^F_vtp2Zs zTd8MiQ2rh_k0F2a(c}aSwgm2}^k3x#OUP{P`5cfddEJz6BOM z&`clBqWAgp=lymdX`wY&=*hk1BVkYb4qv&TH+kj`jmQo;^BF`8B;b)T%4g?4vn(+< zN46Pbkv2G?7k?W@T*CeEgg?QbJTg8CKgqAnll2GsVfe$~gYpZW&>ny8z!JwDHx0id z20v~7L=FAmUr9I2Z(d$Q_@RGZ`ll7YlzgSVk|*`37S?EsDIRnHoup3l46c+{4F;~L5f|1fM`UbEs` zT+oyDo;HXJf8-t5N6Q)jO!k*!o~xajMpyDF9<6cKInp8@=3%+`+{WY!HDxRhUSt;? z#2@~`8*LIBg6JN30S^p%$`v{sE-2Q-;D${=9OHA`=md%Wleg8ph;FF~CrI4x4J2}c zge;+JzH#u7HxM^&)ba0L^QwBlAfB~4*812GWb+OG4b3sGX&%F;Hg2%_skx0me=8bT zON34q%O{N_6pp?K2A<$=G3U}U1JiZf6bfkCl3A74V%RHgsc^F}Eld4eVq>1+KQag% ztsfb3;b_O`cW=uWg*8$1#$_%X$a&kgE#0Y8FL!_O@BUr)%IVX7X=H=a-sAJ1syC%W zlnrfL*6-0_>hyTceK??=X&_;tYaZw_9P>1k(?a=-VNHiVl>qPFSkWCFqAtWhf=_8% zCW?y|L`LKlxefDuUi?GdoTOJAc@ABiVIZ+lpIf-8zKe0{haaBRr=WkSle)f!QD0sw z5Oc_Y7d*Gipn%UZWbb5HuaaNdkhTpXj4KY}@`U721`^c=P;Fcnlm>A* zTLs?M=QS?rQx=yol8{lt9kp$a6hXAqYp6eZ0TsM_Vq=HK=w9!TzQYTeSo$3am}@v6 z1q|0qt32UTbw_Y~UIUucQrkd+6Sc3ZO}r&z2|fX`R{Fg`a^MpiFX;0jKRo_&_sYJ* z-O=qkZ6I;)>WyxVPQBV9o;L^=Is24u)mhv+8FZ}Oq_>;5Zt8BXebjw*_eS^Og)h4g zWFYbBl?&Z9(Q*9M)7@YGpZ~Rc>zy;*KFx(#^Q>_XbEt8>F}}X8n}1|LnKf=$U(vV7 zW177FkPRfzNn}ku$yhVvO+-pv_x`fu$nHE7-a7&WNf7i+-)y##dekyIdv!d1Z$*zf0i^ZPPh)_Ya2fPyIrQI#(GXnVV92mmU(cs1({fs~H@Jl}%|Md5XLs<1QhA~0x?d5;|Ff3Ox~ zqfPat-ESgqQW#7i9>f1p_d7I7Q-== z0B>2kz+W*>L*>XIkXPH(;6~U+D{Whjf(kB#)2Zr?oc!mOO$zT8+==$kzD@lkw78rKf=xukub&-iLjB}U0pW&m zTAY`5)#q+q)TEO;Lh9g30EXG70T_*_ca0DV~jW0uW8g>!m3Uar7QEzVa>#qGOfEow$_{b_ zZr}j^$m4}wpYIF9j{w`UISN|nb&B?dV%#0j%yf`Hmr%|OUm&Sj@n%b3zB2-5#a|%V z3CLRVUkktMh6%QM=u1IcFdTrt)oTPl>ow^%nmG$>mPn@H){0L$$e=9~AgFp?bu{&b zVW{dguvf!L>nGjg z7ns~#-xEdgs3Et@>ToFUg(J8?0~8uM#MiUk334SvWxLd_@z) zFD(0-0#-YycfyyIcO0$3E)rMu^#i*?phM^gJuP2qE7)f8sea4Jz1n_qn{@Z4^wmZ+ z9^gt}oCX9m1`_HAVIZ-jPACQvH#KQV+eXP@Jz=0qNzZU&t_*S0QMD*|>Im&MS?v{ixe{0EOIvq=3+G`WN z!7CRspzn;EwC#GPZKTd19RDmP@s2;^McR4l5_WH(UZL%$ZEV~3^ew2HPMtdC#c|qJ z{7Hj*`%ZhFzC!TemupNX{?L!120KY$v;lq4K^XXQ)Bc0Abz{9~ z!#3(U@((`JgkBua(1*;C@re^BY#_myj6TZgQ>VQf2D@UwOLz_4(c|_#=_St-mh|uD z4vt*lMb5b7U+BOOIQU}$hBg@f&=)2-fe-J%wlortcP{c0*QRNYIX`XsfQ;Y4b3ffU zy|vOB!;jzBioa3ei=>-=2{KGMV!@m~F?pQ&B6$XFYs4)Gb)LkC=ZltWSjDhA7PPW`#c-_wC`H-YVoDsBp<1tDX;i}BXn$}fkb#J zS(M!HOIq}InRD{Ou4uu(=6pD|w?4FDk&`|_XpQa#2X`E4ggRyi7>q8{-}#e2(M}R?=s2w7-fI6AI}cKBbfF2JqgJ};4}wM4rqUiUG}}Nz ziFzVQdbw);DTzL-O{jl{+_Y{u5@OWg+_erN-UU;p}FyH7v+yq8>G7W(pofy6=05A4yJ z0p$$b8f_dhV06-cg&~Exwe2#1_rT>`+F2wz=$MUX_sOVxyXxAT zTK^J@J4J^!h!D@31617{V>5JOn|8|Gx_5VXb?fc!%(crlkoegLzw17_bV0{%Z0VkV z{nhS&|Lgywd+V!jcN|g9TxYc_?<$sXY z;6HvEr!x+}U+?!bUFznc-s*R+@5cuTAm_An4=9Klq&)-<6!+GIA>9Am)PCS_%D{un=Yxam!g2CUoxI-5MCJD@RDINaE zNG@&$mY+MOCE-4-&url*?hZAA7^3Xbgv}1!ckHaAKkg`u9Dxkb;ZTJtK;Z2=xMt2d zXb1!H6tCW+c9^Iaf)v{?k+a|6!@R(CInqvNA#6YzeH@OxV0)=AG+1IQTLw!E&ZLzk zXGLbMjSYFuzT^v7rSqM^PAmUZ@=ZOT@N2Vq$5XA^6LB{ zb9Vs1Pka#s4rqoCT+t677)Xd5{h(L7)tNk{$-RI0hkxjP^ur%^zxc&3)Tucq+|X0< z^v)t0@RA=)bka$Qo8T9$Wv0##c@A#t4?3hmjzL7WmZ^%b_;>D!mI)rwywVj9_OBk< zN|5+W<$F9AzlV;+V@yLL=Lg|trqjrAOv6lg0X33!lrbFQ9K%d-PX*Kqd4DewSWEt6 z`X;nA4^w2x-}KDLmqqAYB)ul-bw9Q=kQU_@8Kgboj(@^ZZ(2?&@4h$rUUhrLhZw8? z86Yt6y;l?aESk`EG0E@A@P6Tf@(M26pQMT4lAF}A{%_JU{>T;B02LbU1OczNp{`E*e=380a&*yeJNMtpoC>X|=x0Gmua! z9Q|Z1@x+)Ap)*|C;u89W&2lx}eVF0RHRTRI1c|)425n7?~1PwT-aEnLyR9ml_)@06(g z-EBJag!6ZQIs252; zZ8_~YJc48FX8Da_HsU>c#=Yf_clbhX^qVk@c+Gv9f2pW_>u*kLWeT`Z}Vat587J%YtfqcW4N(@OaB;l zBi_g9t%Y+8KYm{;{zio_k}f?Kesa@;UVi^hFP5(^?&yMban! zqHwd*+6dp3b;mST+KBls^mDK0s_!Br(Sw)7mA46`n5Qzf5?V<8*Pm(feBpjw|BzA z8xzOu@DRShi$jkGeydHy|EBu!aKi^Z3`D))EuUJjgD)1qkrNabH2G__A z0|_l0Vvv16_pL12VIZM#DD9@lu1br1U@VTI19!%-H?;uBP7+r&K4s^)WwmcN)usX~ z5S2;EMts;fLhVBtNl2GG&JlJIX8DWG!L|8W&uyruyLw>a`x+uoo{-}rZc(^-xLSJV z!3_RzGH^52zX7hET3z9pJmxrQ=FLlAs*h8$-qJnu%+uXB-u-&_=9_QSys5^KEIyDQ z)+5!6o=<@aWZvlcB<&GHD-0wifIRf$!70D#m-=9D+HZI(d6b4$ACKKJu8TkVX6&Sy zup!Rybgy|gV7h-#=x6JuX{L}+|1njr#VN+ed-ipgG=}CQzTf@+JsC;7r+J?X9-lM* zcYUV}r%u|fb(w?OeSsr3sDrE{%InlQhVIJ&e&qR3mlajf!IrM}xuAw$>y2Jflgd5j zKk5&ttzx+5Bc!jIkKkhobajcNH>JN$UjTg8!EqN`RWBSobfkM40|}16kPJL$Pu-&` z_O_19GG6h^Ji2Rqr9r9~NPKqow0DreNQ*YY6^}ysXD5p7nr}EP<7wto4#;>w)YV!F zx-Y~l^;;2%+`Do8Qu(Qv&>-2m{uM@eg@$wL7hl$q<2SU^%N?yp?NB|;4iXqi98tac zoQ~Oe>EKZvv++##^nUH8xlJE+sh-?Ho+^XOIHJlcim_EP+QwRtc96KD<1|h$UFv>! z{%rR@PrcWjzABzIzIj3A{V!!8@rKq*_G_M#dNw*x>n^?Fu*gRKZ5@#O48Nn|FBuK; z7~~ab#841}&+MmhIW1Ef7I@qh0e%rGtdi- zEuH8@E^1c=Ph9i`4|I+;owx&h=@fd0KQM$v4|&Ef{mJ;#&jg-+D0kiy#@LFT6!4E< z3lA-{J2>iI(um;$@1#e(vBR(J-vXyZympgz3_sH43XeROp=Zyl)^^<&#UFSQQgs!+ zxjT-+rsDPKD_C+I(xDBekHtMSGB*%f!G-*sR-c|eB$R=Kj0l({VdAM4j7z9QAfrqd zsmb97VL?i`1)#7HP9jVeF+oJe&>64AtJ)5oxLm+<5kCsyjIzJdAuW0hgo`o0TJ-sP z!g*Z{77emMs*7zoguK|_$B91xK1A{N=sN&I}*QC>VO#rg>9(j9<4vPk5 z6cLODh>JxtyGIxgI0_pNP-ni5J$bDAs;nX3dFP$(-LHSWJNev6bsW_Rlzb2)i!IgR zr(iKil;u&cFVU0Gk9>^WG{{0%9j4DeKd-IJ{-+Eie$@ScGL+yvT`yz-DR|Cyqo9|8 zM2^{j;;Nkdzz=y)y;ggrP@zwmz~veL!I5uOM(}H8KEUKju+<}r$IAPhd|wGT+h_Ik zXUA!Mr}VlF*x=`x>5O!?O>!o@0FZv`#&C#p4Aa8r8C@l7Ci7#K|Cqi-(Ld;T z3)9sALSyK3qtoPP8#akzdH1E6dQg9^gVn~c*qpLYd83`8y~=SLEMEAzX~)`f$unuT ze&h{*{-><>F0?tk_m3aK95sxZ@QZDe@0{rA=bn8)8@`DzJlBuft*7yNUcW19|W+;sO^sf}1`EJ6UjX6a|K0 z>Hh;uTI^hap(6$c*=}-Hnn`0;*hc!14su71xQx5w$2g0A6g(l@XHP!siF}Ma&YnH% z9Wjt8d?qer^&$=l>3{<#1RLGr!~co#p!Z}k8aq?0sxAL|Q#@Z|BS?l|bC9ZFu| z7kPw6?vY7&18$z12Q&6>X`P4bUi`=Dt%Yk0KYm{;{zio_mM*=Jp$=qWh1wX^BmXFu z%rE6?^ECC!%5H!+9w}|1=L(4*(zCM^>p%Q$|wO12Yf* z*nc{$>H1-uCa{!M@{hWcJ9&!#kZ$GIIGx$=gRT$`p3pPk8|p4#@Ne&Yk(GF%16eTN zQ}c(_pG`b;Zk$G|d+?sX(x$IoV+k1{3l55B8%PX0NHAXZ zBBcx>*f|0NiTyT^z|d`&vof!gF{@EO=b;2VF|GO5TUyX&Cy7fMqhcIwBMIfzL^jeL z=H}3wGDPDeH0F0}hP8I-ZFLmtxmG&oUK8Z`7kM^blSq;O#AD9GqHuGfue1MY4yI69 zzP&yZ5PD|m41Tw6X}1v>5YXmQCQ#2@$JFO|{q@&mAn|7R_SF9CQ)wPpKju62Q<_O1`Ufs!W z%7PhRBYomMOgEmsP5u^5B>-3;Z~Otl-hG23+H+9UM8fKdrQ@@CX*9YHP}bYlApem zJ$yL1tlg!Tmt@eRI*vMraxWq@ZztMBvv+vVe8OMVls=IjpbCm}j@2&K#6AI;jD|L>JEa8ZaXP*;(c92lIV2m!U)Nc}T zLL}DD@%nM{ZjQw(GGgunLNSoIeCeY4^=G@w`cU+y=07BWZl~znsqkHr{{f|aR3D_A z*mIzJ`H82ylZTFW$F!@&LG5y}Q~a?)a!35ys7YlOysSrTkrBk!Jv+P0IyULl(#7ug z=RfIwapn)**=6ype(Otbz0v*W-avvKbg5tA4=yk&sfEsd0kqd0%SkZ6wQf}WE$PU^ zc`lw?=QX(2W6tw9ojG6|?tMSgrR~B|be*bt2mcAY;Fx1Bc-C2~za3cOjq&6i zn6ZIG(uH20Gk$~lRq$zAp`FuK*AAtkc0@3<3I)+7cj)dF9s4E zivce1GQc1nR|H8IIEjPfozA%z=Y{i*{9Q@Q4+d{wB%zMuk~)!`dBxWRZYtbrOK5_# zK*6Ux03Qv?4)MoM89s8uTg)kqrlEA=`hgZV6#BJ5so>-fZ_veJy?1qR1f`|c*l`pO zH`Sq(7v3y(V9epKpVjHvt;xQ<`(+6zd9z?5>YZh3&#_>cw7Dm>|$MK9jHgYve+ zS}}@CXvF2tGiez{cfac=9c%)WtI8Lwn5F#m6V$lVX}_$&(z&ym0MumQ9SkIdoBYIC z!NsrEYx;ZyxAIr~BT3T77~%nFp@!%9C*qdm3PFzK_A?z0Xg3UW{q~ z$Yt7h|;#!TBW|)P*URNgrI4JMPpyTxq`;L{PqIb68lx zKW$Fhos`+o2>zrInn}wvixy}b)1SCg_Yl~}4UM_qQ9DICw0BJ6v!KF)PIex^4}5O8 zUFk{+dVgqcl=fH#W4hKusq?p07$IwAj{;1!r%hs0aE<@?aV>hs@Kf*TEbX)M-swpe zdeT+>0R}%`%0Pm=B%Dbt7UozOt0OaL@r0vqm-ym=FDMQ_akP8>#TUKxq>nNapKhI$ z-}Di9HcsgY>D`NggzY830xx~%()^fFCG7k~(B-?;6=1#NXV>2Wg-?#!pnpf-j>);S zt)AFX`$}ID;|LZIStVBi@7X zQi+-T-EDfS@dwV;^Vbr%+oT_fcw_!rc@V~hAMIl<2v2*=op9Pi>J$tUVx&O3p7AMh zz(u`D{fmJDi~O{$zyO;uO4?uIfIBo1pD`3}!mo&%z8~GmIA{TJe55hmZA}{J^cKl%niRYhx-m=EX0|SYVKKjVxDdeBH;2}OP zeDEHe+>>^~4ZO}D;*uu#(#G;Y49vO1*EDZQcUFYZHiRjzlPVm< z9w9t+26&KJWJy@sgffs|cO=HFC2Qc(S>i_~smEp+NT}ADGLR_RM5FNV%NO~}%fm6m zY&XAE^zPS}+sB{k4J0)8N&2mnT6*c*GpWp%$&5R+lfI8P{zAJlUD5&}MiT4*;Dt?O zqqO}2lk|o!n`ujGCy5%HGiN9v!fNk`F*`raM<0}V7w)s%%DkHerIf_Oy|{KhXl*>^ zU)v?d_3m5W`lfc2c*f%? z7F^ji#2==iTfGjF?qoO15HVtChq_ zzY5o1%251Le|sLhk>NOvhy6a*&*X2>CEZiLK|b|d3?wdmak2Z=uYP3%iH|=%ZG(v% zfk}x<{lE?q`}gkm5gVl+g(vj|X(c`UaMU01N0yOm(KG)ycz_^3thFvX;z9qslT&z! zCEv-%Wf@N`bIgX?U)DKXe+fvZXUKp-A0lf0?a<*Tx~HBwp*0Wf@F0J+(4OaDaL4+M z&{bRG#H+rbuERj$TyG$;ysRUB<`_t{J4j%dfh1hExQ7RD+mRYqxzsc5ySeQHEEm9~ z!x%`MKJ{^TNqys6ny1?$W2WumX19V5sIEPzv=52DC${eBj_=&xJ#*klck<{{-BIzq zNA1T>+EkTKgkZxle|#zA^6z%<=q_t6>D1LPY#{NgGaq)JT+=*~3@2WE`%Uj4@%meD zYW+$_`w1TYaM*8<$CNK{x-M4+p+mU9`Gxm^b$gZc%M*+xuRu#uN@o;h2yC9l=`=z2 z_3?hD3+`NP`B>|Dpo#eRmHiDvKG3{jDDNwx%|b7_0<9UF@Xl5Bw5x)Njv=sCw@{v_ zPvUW(h0g}9icdQ;;4fJ45(j_khdBJQ^8)@{Nhj?_?unCdV2Mw9+!G(Zc!yscAI|G_ z!hhR75e~lGNvp+&KlC94$8)_#D^&cDPF(21k1KS?KfJkZ=%t!4a0H$^E@3i|*nWpE zTB&rIMA|D0M>@H5$Z9LYvP>fZMRVdru6G19EG!WRM)0E(?ep+-hmEqnW{|;RR^1Cn zF&o0dh$qrn)Rv$Tp&JD~FmSl8hWV;GS{O>yLWC$&+TyA%!DCqAoKfsa2VMi5UAovo z06JM*ud}!jdR1l?Fcb?He${c|RXpoz4J4%Ml?0hWV@HM&Rq2}+=#U>BhZ^u`z(GSP zIq%-9qc(PH;f{$X4J>N$qy|qy(JwlXg8a&C0i^yX84}`Fzr4$t|2}Cw)5ep2IbQmw z{$AjwwvS4B`oqf&uLiH`1c1o-MgdaL)yr49v)X#~q6SSjw8a+NMj;;(D21*?9pvSL z+b<-sT!dp0Xq!e}Omx2V(o5azZ@kgH^YwST7hZaydqQ7{aTJH3BvZEelNGhz&>!wM z)JfuOKI9Fa?HceoFO{E;BYv;ztVAYBIbP#$|NGzg&O34GpwLl8*U@tfBpCQoka27| zgDzS&!15rnDY)e?o|JA4n9<{5D`50LWn(BGRe>1!%pYXZXGp?f)Q+?#FY#RXKIHwv zQC0v}zOL}zaF3bkC@(D;-B(D#`Zi6*NQw?L-Ub$ov*3cM6*pxB=h^~M{sz9JujxWBjI@V=s6Z}NgDkx%GK{G>a%TNmn0kHmBx5d6fajc}P( z*=8WIM}spKX)&0foDxR4PuZp3h=Y#M8=43MZ!SHQ9>Rm^(M@%Q;{x3K@rax71iT!y za!w=d7TXfCpw2`HbrW|MSJJ_OM(U826HG?+;C@Qjlk~#V#G`pgUNv4bA6vM#yaC+G zo`O1WL468tW-8^m8ojGTOJotChOpNG@>dz|FzR~fV+RR#wqo#3K4R!{RmKB02!v6^ zXRzucnUtp-uXXr|W8FzDMD0ItP~96X=%6=BgUcN_lCj)X@9FM-hepD;mBzBtSh}KP zE_B^g-^$@i#%+%X%F$LRDk#PV5+ca|kY)hx#8X9wmSP~m-4kCt^sYDcuuftG$r-Zf zD_;ZAzbR14N=^1r)`p`t_PC8U3`FTlnMu4#M*e!hukwxll_~A1c<{G>@9B>veoy6T zj7;yV;Unjr`=ul^V&7jcN<#kbHl@}01Lx}cHIcyGCjZdmxt#Z97+F-mxcH_$F))JqsgV5D&F+&Q?`r`Xv}(l3&D8Npv2f z2fUNVS%fC9fkW|iSnfVK+qdfr>ljGv(|BW>cmN^cB5#uK(977S7TWZ&oA}tSw0G)* zrP^LzV^l2=a?I|Mz8dH2@fbx1 zYv}`VUB6B_sG~zr1Lknif64*!;29n`It~5t2at1gV49ML^VU}vlf>b9a4={Inm6X1 zcd9&orUmw&|NQ4RkT`qxTzC1(Rpm3KSWfU6L-R4`ejUldebA4=u%y5%J>+J2OLn0F zzsPi;Y2{Pk+YqZsPm8r$bpt8Y9JhTuH_y%v*Hq`Qvp01LYe|%E<}|j8?mhbt_=Auq zk3Ze**|%TxNcWvk^+RFWWnF18rDA6w89HD3qWk3ZN8QCQ&UZI7*TFms(7tqI?PQna zgMq};Cr)(xWVq}dB!rXt5Gs*p#qmq?%)3IIem&=%dUg^(e1OD1J7=Fg&5jo5yD!;6 zLhDf5w7d2mEtVXSQN&Rhqa9~{M}3sNH}7-@x9{qXX;%vjB#!Jo(Ct&+Q(jqvsCrQ; zLZsHAZtvXQUAle4J4n2D{#^I#vmbWnu4^7?-|p_^ci!s$^1uF{-D@(8Vvdt?5r@oZ z3n)|M_hfylhrzFPqvEgR2l)W`*g&F{mgLdPFJ&a}fr@|b_yaSB3;d&ce@ySj=Zvck z%DU=~?9@Oi=nDPoIO_{_o*eC=@1yeT5-&gE0-yGhcbDM49VM*ApFTzl2Y#p7=&8ed z{5%IH{ZsrBhv&3M9+wMGcEzUcCe4i3fdiiR(8havIkBE5(!;s$s5@)RIFIMtwuyH9 zl?M25;38e__z~99?LHCmCS0tAkHk%!R#xtVK)Why)rrb5CBOvKJ~d+8>F^RUXOwu$ zG{MC|TP2i^wv&Sf6G*%aT-TUvq@2|;V&WlwFXD~;6baJl@R&ZFuA~Oso%G$GJg0AAA zJ68%31Hvr4rkucbefd%qA8~_&XB>F+tGnO$kyASL@8?Rk(spqFQ*j5M@%s=mo$hLI zZJfJ(9`ks&coHw1yKKd?xu?SyzAVawOL(RyNaQ~i&U+I^H0O5w1k3{DytILT)Lrr; z_eJRiUYeEkF4K!5A!aGJ^C4ngEqY*_BKZdn{eT8~21>}A9@8idXs4c`4xo%< zEJ69Ka=zC)OAPJM^p}y56LkBzr$H~SZ@_CB^$t;x04(iQ)x~<|y}zK4`h@G6>P;5U zugK~ig9sK?o&EDAMq6X2+%F`ULL0g0FP>z^fWxLxWM~`*K z^#$@C8KW|(;4&t?Vp8;mI+BXuNk(@P)!tDO>AP^G)m7=uvWz46a^p*->-tIIz>rt& zpY)kVUft2zUEue?*Zvh)np+YhE``bQl|kH@_$nB^Q3hzw)xUryc8%ampqlimFE_zN zkuVHpL@(^%f)ONNT&GV-zGJ+~WCyxJ8(JwUP5t?c62&cpMbWNLQN}t|RM+onVJ+O_ z=gldBNqsSg{Biv<2W(;QF}^J>50r?9;aq|rM#3AKX3FSTw(%!1*8?i|z~G-S?iuhB zMqiubd)V!OBR9M=q1t!Cz(JeOV4N>@*#+VBX`NxLaf%mygp2sVfivkOZjB#mLA`|| zoPj>!EOZf{I*s(9gWVVCPms3TdDZ_I6<{QRkpXQ3Vc;*^2#eVmVjoAONMb%(UJ*|;112;$MMe9@|862<{msrXZ#+Vt$$$Q z(e1T>pf5BAwv9XX3y$0ayV`vWJH|=eG0bZC2%Cii|9N=E{=ARy`s>B9Uii86 z&=2thqxwa3Q`Dd0!xqXXw2{a3pXrNG#>W$J!CUlD)`s$yFzy>hZ;Nz8o@diLpr(zO z?^g0PzfD1&$#3q|J=6=7`L_N5XRf52@|E~)x?@;if{(D|A^AxDQD&=tivF)9gHSP_ zw?M3ZN5Q7$8QQtim$#9G<}Ru4BNuQ&b70{O+2P;^y<`EKInnSH{tcub;>Jn3s5;E| z`N23G!yk3EGDyY-QPwzxlb{3$IU4h9nb zuuKC3_r9GUq@^?!(X^;sQKNf4OZVIAuV2Lg{4lRW#w#zs-2KI0{CW4Oy=@OSY)=s9It0O8vnOlAnBXuKVYo{wiBnNxQ z2;G$;%K%Hq)m>2k{UaIZUOaD|srmGtN=0BkWv}Wq3?z;nf6@jRIbs9+sJiFtltvuk ztt0}ul}#U?!NN+YhDwRaC;V@QDRg*l724hWXKf1S@}L}L`GLRV3YbEz!o@ep!U{b#OR36iO_p;mAnDk{f7UO!cxqONS>jcE$Avaa$%0FZ} zw1)w1tV_hhZ-qawMCjcV{&?yh{NwlmnTprb1#Hp{T>3KfVQ_@EapNDj(A>hb&qfkC z=q_Yt$bDSD7XH*k+9QHbC@2o0p4B$z}9XJAm4(`DJupq2@(EKU&z{H-ua7Xq^r0mnCZi)k88 z!Lwk&F&o!zUYCJ{@T-wBjWmc>5sS>i<;ipjV;aJAH0i*z=+B)F8J#pQi1ZnbpO_X# zh9l*SuYZ~Q>>N}a0Ynx=p`nJpS`cAKqrry^Mlg`z$PLcz-XVInC|##XBq322LVd}e zL`_f8>U002M$Nklg{ zMCWCj8($etNcLB?P;=q4&wbpMADFsLl`hMgF^UDOmHYJfhQ0-lDS^T+k_E5Xw8s&E(|w|LObPkAC>W z?k6&mIHO%JL|N&C;-YKB2Nt~tA02r*8|W$%F(MM_m;9Ub(;*=(V9{xCS$~BGSNSqj zAolEkl4s*PG~mYfKHB7#c=4F^4vyfN2N(a1x{uSlSG*++$;0_Djjb;t_6+}35_&iy zBhOx@)3NI<6>h?&=qF9|c?xMDH^)8v8BZ zs!J(~`s?dDpvUwOmUby{@WG&gGD^Fa_9tx+WtK3?Ef?iE^(b*`fK}y)_qH8`2GU8o zq@DD+Q%6uw<>JebD=egIqKVxG7+9u#O}dtQ&j*61&ZQ1~SZAJU5$LNK;#c-4SC&D&;#YKxqyN?m% z5$zsv_~^0jiDSpq_U{!OZMl$WqUe?$*j)s8`X=a_j~J5=28V8Q^<^)+M_kvIlV8#X zN>|)N>F;hUMdzf<=z&QAzgxJ57RJg+a>qWZ&X$( zVSd4dkmShUUD_e*h$cu_OvDg!=T0q7DvSxT^!wWKlyU?Px1*xy%f|*1mgm36pSHf3 z$A9!~UifxG|9lXOY_l2*?+vzu`_|1tc7d$0b~ z{Pb2YZ{efjuic)s@RaGy1*VROJb=rEAK~0{kzQ~Gj(frb4;=YL9<~?t7JXyj>7g#> z*5+?@Jf&|fOiMd-_$zQ3NFbMt8-WK7KH{RA;VrsZUlLZ`4{w2M(~)EWs0-Zu*+4>z zg6@Y`yWv&)u3ff^VzIykVwr9h6Pg)E_oL=4W zpLV4~hS871SHMiiSnaL!XElg5!kiClz)XUt^)Gn}4VFb;UmMLywriBD|La=*eUrOICP{tq~p4es1Hth(jLQo zDV@UcAu4i@Td#q{Rv9i(u5R4W+@0#Z&$TPvRgEQXk!M<=iN6uUz?r&dHJ%Czbhnu z1~;z1=C!+tk=m?Ksh(7Q#$VdD#HWtOr7uPw)@#D5q#Xr78e$fUnSdHPC__gM1Y}ry z;YZwDyyJkOW5kyzWi?uzqAXA`z9Uv<5$j1}(}0K!yTXdE zocs*Y-wQ&1&OycLfh{Wn^&SHZ?x5T%UNMT`$c>%ITnh*oO)vCm-mLkp>-wiF`#w{)mT52e00mUj@*wptH&Vj71<=!h*SsB-D}Dfb5zK3fM{F zGj$x6v^eCQKa{Yt*0dmdxb?9ZlCJYZ9b@tt>r9-Fc+op&>^*(r>F(uMUg^I2)vtE1 zy!=Y{jJ~wpuP<%Avj?3j34+Ey9e@lx&?SUSII=^BFPy*7{qmQ;=zjQvA9jEL_kZv0 zVhIBdT_KOr19Xx}L2xj!Nf`RiL`>vm8Iy0i2O-Edsnc$1kWU-$CLNu zAMZSmUDA#J_&xr)k8!L8pLlnBAE$S>coHuXKu`0WFr+#u3%wi%Nh?qh(&3v&SKe9yl$+>p?lbiw zx}bZt2}6UJvdKN=))P9agQ+vPc&98AZg|0(7U=1(&d!@G7MeElK2Ce8e9cHG`I4ZPAL~<(a10mtsk? zFetg`YZ>9aAp<|&NsqQyilqFHfrP%;cnAg(R={5G-S&%4beH}e1`_D`Fu^5u`4db! znFsWh6P-^Ia3y>Z8%CxL315(9=m^=5~y;qI&W?LvO45qp<{fH z4I~zm+r2`KGKe`+QT8Q@O#*<O$Li+4=RtoQZ8&%)97B$N*|-lnN%v4f9! z(C6rM$|L;|E_642>uLHadsY5sr#JY9{=^?b9`w^%^se6j2_HqZThvt~U2T==;tlBH#z|4aS4EaT!+Fp;6fdq8I+g2Iq)DgjhQ9Ux5rzh|YZ>@nu_%gmx zy=+;j{SZQas}Ab>)ACxeg9LsxPSMfB9&Zi?65BD5&|)1sNHFf$r+zr|U(9JvKAh4s z8dkKxA8*Pp#yz^bjP-Rrh7jx$yQD9pKl}8YjU-&&G!KhGMHaT%WrH2yYPViKIOy9M z*y{gUeNciU`9VYPDD+%+>E`9j!sw7kL(b~)oMRIZ=cQ{3kMN6Cxmyn>uD05XNNd3>gCkQF<|3MeCqSmBc9(8HejJw5}3#Y#Q52} zC;w5qh25EYX5B&etF0mjG5GjceZn99=ttcjw8Qb0t4qpf8RZ&Q^@!`)nw!G#W#2Vw}aDQ>(^X|;YAKEZsFp%gqKsv|#$zUL%`4oL{A}rRIiGhUX@GVh& z6UV!6zw&1H;*q1>Ugfh2Z?|+=#$+3{d;Q&ayZ`*x|D}8JE3f#Y7}vv+SFc{KA1Ob$?eHr{ zo0Iyb)y+}ycRob|WMAgXjf6BFa^b5w!PIPupUp;Zgt}Sj4*m1)o1L%CPXD}oS;*fN z5QDM4%pq|!`vJ{Y@6|_rTU4QHO}jcJ42D=N z#&`ihA`BguN;C+^BqYHQ%$*J%lTu8gQ(@CdWC05N+<9;D6Nfap$AUQq5>8i%svD(k zGSmR*ehVu`4Tv$4;Oj~zrI=7x5E5|1#{v@#6BGNioa~4|L%d@f=jCCTfPsV-G3dnW z5&@G&!dc^=p$YYq{i-qLeF)V{atkg&T(hZRfaHIdjkm;kHAAd>_5;SxuMSg zTe{wU^R4b_O@d;`fNtQ>ndlApD-Fa^mb%D|jvQZUpZ@ricaQk)cfZ^H_P4)vCyuid z+2R{X0EaGOAc6j)v*1QIF_5SMN2LkvNw?%gnk8%C!37TPT+j=z<%;*@RpPhzXM2z{O4QgG=+X}cAsC|Bj z{6izVI*=#m2dreG0KMUz0VH`mF_4hKAo*=M31I7%nvg^v_Nc@4BwMm;7YPRTJEU*4 zeP&U5Mc3ulE!s)7`VIcAs(ieIgeD?rV>x2un$7{ftpPge)5?Q{yN_h)MGhYN4!-2a zJEg_`legYSX%KC^gTw?LBE=8=sOT!P@Rv@#!H>(D;Hs?FSJt$x`()rq`??R~TN#A% zrCHihWE@?{-Bco6Xf0y#n(5j&GXWlZZdwUA>w8_E$3%2-UifCMB_`fmjNNx#KAre)Uqdf{i`pvS_W@9qdxpCDrpXbXMl zFSe{8AP>nH%E6DvuF8 z-_*|)2~G@qu8%vUqnET-H*ZKcrJv>tLIi8$0s6VTBg=Ynn0xfSAG9Ea?V2-FDy>SY> zccjmwf8uF*ScZeox}Qk*o*eNPMnNt*Cnrfp=TjaCusoZ(X*#Ut2Pgv=yl`A2WrDmy zOOWBQV_GzQ?X~XBH{R&pe(Np2GZ)JoEAsUMGdndX4VT?k1{r|&6izLOu3*#|WnarN za_IAq^lG$uyq|7f5b!0 zZ&9aUpv9U5^Ay_MM7nuZ#!~EZ!ci#9UsORxQ@3>cH0FQm#7XV&!0rzFq>DRL_f@f$ zBD<(Kzk5&8+b$V!oX@puOWHv~N7SA9*hgE;Gmto_4^8;k|JF*Gc+Lk zqRC`KV1Ly+`G=3)MD3~`R#Edj3@c9FB~(X#oY8v1RrQOvNRPLv&fBInsJ)7J2m^^D zPkIN5myhcBKN+X(l##@ZD||qDzWe0U)2b(L=(r8-=%ZbIFlxd`VyE(Ui`tP}qVvLy z@4f?Z5n0_rl9B)%uF+2Anye(xrZu40)$6 zp$ekxAzR9StDB?ZZy7}bus>BFQ0M4+n6B!Bhe^Tu(%x+JhP%y5cj%vY-|T#CcKYY# z%R>IHkf!UOasAcSZL@G9zqDgikVYxM$TfH3+BiaO2p{t?Url?mMV;6?RHk&S={G=hYy2Q60N}UuA41rv|tEcJrCRk94V+};k!bEh@MdMqR zzh$AwHf}pbD~%_H4cD~m!euSoaO8$9N|&`rq>eEiVqugxi#O6r2bnwwwU7th(2ETC z()4gYS@$2l{q63J*Wc()oH*exw4x{Gjfis4hpsVr-KA}}&>_;nk50+2fAy>Gzy0_B z*8Sq=zmPsId2-Wd#4Ax?(Rm64cgqlg%0WAN;(VLPzw&P)UqjXpxF|zh=sEYAT&O{2 z;jVmYqE$YTp7?M1YGLL*M;`OS$N1KQpND5r|8aVY#+wH>XzM(P@(*8?a}6vq?O#*5 zM%Nms$zx#Rv9f$8# zMO{Pv3k-dF_v=;fPzO_|u;T%{IIzIaQ9g_>fhR783>Zdm)CP4l3p$K<-M$JRIFn9W z7vT>~;KCUGsrR_^4hfU?0os^2zND|sKGp7eIcfuVE*$B4?5+3k2TokIFO?Q> zck7bYEZzviKVv28=$Br4$+AR-v}eEn{qJqu0Sxfag-oES#fd*IvP`;nOZP^^3oYEo z^epn8_!~h>aDa0?ZcOLA__O>sg8rmG3;$|-tQUSZF3P{k1AQ8o89hjRh%n_O<&!&p zlqdQmTs+5xp7DZP_zPU_fu9#1xch&vx?+AhtLszvsQADx4iE3Ge0jz|in=QG6?jR5 z`XOlnw`lzp`4X4>Oa0Eh@)-Wtk^xlU*5V;|90_j~s5(}ExEq888?kHQ*%LIR%2C4l#lKFD2v91pUAA@6py7VEtb;l@|o~noSS#TslzaM;UhrrpeuPW z4rFol#EECRH(q?I~CxqyCk%ArFZ= z70PPm5&Xfi%Q^) zE8R;nkT|O2M6|rt-CkB-MC&1xgJta&a#a^{+^^j=_;6&e)_Qj6Bi$|faO8rH@p$k2 zC*AMPpVf7$TiU**d*a!X-J9Ai=0E=Bf9g)Y_(FF>b1fWegaePnWtaMd)`W6jM>&;& z1a)uRxcFBM3zL!o7kL*aVLvvIh%gqrM~@bResrKVE8S~JaI^EZ+38;^e^w25g_H`v zAX9(2mTK#&8HkV_*JM1RdeFvxYHK`Rq0NyWeI(X?nWtv%hKo5JHZ9nq^N{W^7{LKZ z2ROhyCy`XZz)>;h;vEMZemL$B#Q>EFsbw{!PD8u~e;EMOw$;QTJ}x-i(S|v2s=|jM z78zWDt5w*lg>-~#A5#zooz)U<}Xd%DJ>Z!ZY5NB2U4JnWLM@>!4JQN$*W1LxT03_)uk~1Lbn{e zZxii4i%fpEG~mOUvErFMeBFJIeU(t?t=QpYeb1M@p&_&^RG&;rznlh5gEhojmKQrmZ_|3UwSIRh)0 zGE&Jm-y+^{j#{kf|Lc zs?2CoLqcF;m%O0ukN)z`L)Kzgwx9#7PF8=N>2uJFE;)JHu zThIb+q@SZUFxa4u1D3jx-6Q_+hd(&&!~+-4;lmTp^5Y%HJ2ZfU>uwzJg9E(513%#j z8sGssk=qL|yx?6qcxLR5fdsMx23PIgKo{}j&pq^#?!$JWh5MMEMcxyCBl!U5dfb@K zdGTlYZv_2Ge-{4L_*gIeY+UHR^h>IQzPdjw@v%6UauQume*%BT{^&FJ$RPAQHjr3d z|01X4NAjOLGN!KM8joMb^-JoB)DOWI{JDcSY2ZhmaaCWEx@A4}2)wP%U+9>9S6l|P zz2nLAb-ITi_oqc?=tmC7gZiF3a5(r5@5lyzxaddou~Xt(uSa#|luUa5f%iB-xQ8Bm z3?%yF?u37NSvwBsi*yztcWC}_?}39hkYLw3cCcgK5x)3pUB#$x2grlI|8H@NKLQ&* zdA7l`_{A~b$F}k3&YtmnA4U`Yh|TR6wCZCx!S3GO99OBiH2f*Yk&V#WnP>A#+d|Tk z5e6U%U5^G7w&6FrHTbOaiM&~u0GR0+>XRYgX3>!RZ>g~wI4#Lv0qj7@5e(F2U+PPB zbdlga(zU}nj`-DAU+w+cFfac8pa1365viDcV6|j~3dq zYr}(Nc`{!>9#^ia?3RH9J1}$PgbgIL_)q@!)rIsyx&y!B;n3kHx|1)wWCI4~I?&$g zF4o!${9p{>xMg-QdclFS?5|!20~NPr7Bzuf#xtI3meqa<@LV!0_v^j@LUN z<7kd5=VMaRG1a0Mc^a6AcGK_VA3hU3cJWp0K4W7jF)@%(KmM`|t+z-9+hrWFU3BkN z8VB_u<#YRwbZ z7@M^Hb;@qsxcCzz@`3fKxmNI5*opn%@5z@3pYq+MxY_6pmz$OD&_D0K+4Ppt1F%G7Fq~>F%aORI#SH>oRi+B3-?(^)~ zwfhbgHW`5j9ee^~z(7)jwHXCmu7sz<%R7#6h+x5hGpgw1frE4Df}cq&;9$0m?q|sq=hm1~IZ_GgB$5~UH?M^!ET5#*S8eDZmh^y{+w^POuyJQK%Mfx=CSXe$K!*8r+X^?Ey zq6QZ*G7R}}4$3ZdjyOjU%gd5RpBKVtT;z+N3p2P(tL|}QMOyJ5K;0cX8Ys+kcCieF zRyyCr#rTBO8R)nnmh5@QVB(fKN(`DVab5gE9fD`q7O+f&MjyF@D+5!`ctcmX=yW5?vuDnB|MXA))cxqk zKkk0^)1P%`we2nR>3b0z$Zvuvz}QGJ(M>J-#xgoyw;*`t)%8rQzebkra#e4y1qsT$@g3Ywe$d=ayp6D z!@GX(%Wias0U-4PlM4DV-ulu8DvFlii5%K{`wSfKT;Qkv;LdyMhrkm?{Slf{pFvM1 zs*>)bevd3e=gMqWRTl>c5KjsloIF240U&;m+Lf;aLG}m z7-;Zl@l`8a8V!Y}Qa{zhXph*a{t*TeN}EX#Jyylfx<7yVeUO?OI zXU~2n1;}SU?l(3Vz<1{)?lh&(CEMlE#00`~js;aw+(<72(nHR$A|R=6f`u8vF1JN@ z@s(E7v={x9{=V_SkUDCIH}EX0HjjQttmH=`iOXszpsNb$JIjeZ=;K4H8l={THW>!}u9NeT;a1FBp}=HV|ocNNQSN zpGN-BpBB+cyTtpDBsR(`-577kwRF3^M*3Zw)3hTOZ6YcoVDNGpBRT|fEvyv>;yR5! zFl)Ax5V*!PfelPKKVp(iVSYq%{4`#Ear(&8aT>*oCQiV$Fa8*osq~{V^rzTb{Nj{% zE>06OqbOprr~-F~_5SlvYDtFD^@|aYLz%qu0l*{6*hO1i+)N2OZ zvv7=m4f`thg?JuS);YKVV|Fd z`(-$cLW>KoV5)?Ihk!*Dns8VD#3faUTD%^4dgY9@Lo%Fb#;vI6hTNBrOeqj|DWH+*WL zdC20Vgg|^t*ZlLrzvJ`!oE(Tmi&Is5r?sx^aCbF&8c7Qa(-hXs+aKKHF@+#|u$J&k_>( zh(wssE-HIHg)|(~YG%M_NxvP0jPKMD@+S(@jRa3G5X+w=j*dvrNreR^g%^4RhLInY z$zFX;7x_sQrWuo3F}Z-u5JP#Qun|hCZ_8UA7c{`(KI~auyHPob?y$j6uHZ$A$^X51 z9it36Z#QBl47T3r7)No>Q=E&et(0FdK%Muen}{@yc*%Q);K5k(-!?ZcVVr+8;7V7A zy@yWML)xspG^>tlZ?(8UsthG%gZFw74Zp1&g+Us3u}Rjp2pe>JUa~#&0%4tUA3%>E z`o6+oeN=|lPVrB;8!iS8D2Z0Cp$D(t{EA)eQP{yUou8G~VH$3cW=%&i^)BKIMM30+ zkqh_ReaEFrIP0_L@rWF~NF$p!yz50l*M%Qs@K|#q z{pX(b(1~7m1D?9;ww^=g8Ye$GG@&$T{;H5*VH>y!&9xlkX4{jj$*U)cE$eq&|BnnM zI5=VBm!uPyS!}E|l12#f^+%#0MZGGYM<6zj9PBj7N#zv{y+REgAd!sx3uw$pUa6laDb=R;T^d^SAnB*UyI zJfqOsQl?dfqPRK-<48I){FJ;X5*z0hWolYV=vIF8!wY5!wYJo>__gO)L!OIKc1G?< zL95SaP$6lsgyvz=>&ADjiw4mKfG?y+IFpnsetLR$Fwv}VEA6n_?u=XXuPzUQr^ zzK2=IRev%{-AJ&*h4w`ATShd^8dQ&hGyLGv5Imx#`N@rMJAbumW10CcXz4iTl;D)+ zw8-Lu$s|_q9R%HWikTWBs@utP=OnrDgNvvKxPoJu!S-BvMm%iKB{*9rQ6=9ELDtHX z3;!`#p)Z5aH-Dp+k}j4>ma<+9u~S?iy1&*HJfEGv?MJL7YHow$+9JC6WBoEM9zx}4MmWB^rhdm!FkX1jlpDfr7*=C!@EUmY8#jqodB}t<~-*8c94ea zkr){M3`p)80{Y5=;LzhpXY_Eu0J8NgG860)e3i`|B7T0&zv<5Asb42-$Sr0!ZqpEs zVaVPQmUW*AU5c{qysV!q0f%w$!;5|dA4%uSNiW`GH!}SmiKn>g z-`z5F>X^c^+dhB2`3^Bm>0Gc$n*=nMmItXHE02`TO5x3iL07_sQ+akM#(v)G`!nK9 z&dZ81U9{Y&nIu@xi(AnK;Z-ZS5Vr^f;9j1|kYEwwl1;) zv~g5{G0vz_8yyTGBp+%LC=2jrtE-{7-+?3*7=$b?#nUjM$;d3X>Qj_j!@dcjfD(^< zt3N)m%Vr6Qp7cB$H3{KdHD1aFLnA(MOW`9!>KLG01;!F!95NrXdER-(!9Bu&@wy^B z^$cPw@Rt-l<@Q+lyAEQyp6U1iM&lYn2c{l!_Ob)sJ&F8ad0|4r6{n2l0?8tLc!>d^_1^ zsYl#nM(m>_(S1uS66ysYu@Q{eB)H10JT@MG_bckn&$jV^iG0G5yrJ>+IsAQ@$s1CR z(Ie>dd4wd~+4BTS?ka0E^kNc0&^=EV9hcs|@%O=cbgbWLj~kd<7xigh(~o(i3Lk2l z+TeqFi}%2abTwK8mqw=+{cowpZlWGei^{+b9hDC=%o%pPV$_o;v!p?@_~=F=ZuTRj zz=tcb#pMB;+=QKB#02%|(}JSULU+J5j928_t^)YRW1;)M^8CfJ&l&#NL?(mHsSBK5 z*rnHV$TfvxgzGyOLx@XV{*mzGw)}eCBEQEk|8X6z_~pt+31rDu3-$YdH01Kb8ehBn za^iyqc-3hx?(B?_O*&)qJ32q4XLVnOjSg4-h}&y$t(FK~Xq!7+s`BU-c{ab_u(ocW zOXYMkyuW~$cp><`5XX)+zsISrIq@P3_bR(HE`j*8;c&kAm~&eT@cs{@CuND@!Wx`? zAb!}1cN(6FK+>8$RIcg&Kj}el3tk(lcj0z4**(PB*6`V7+Q8qnI1X&Cp8ugI;7cH0Bw4UYKU`_W;xwFtRy!s;qt8Y5;^KoRl4 z5I?bWS|n~+w(474H2wZnRS01`f12T5DMEwz`K(VX@d?Cg+^fW(PE4M}MpH8WSL22> z^42Lqaf>-^2>&He8=TjtN6`C5+mKvI0Ovbb;&NU`Pu+ahds(^y@;%0W@|EdyH!w=H zTyc(sF=)a`miTSj5MijTfZrAhsRyImB0N&;L6vQEfwy<|I`$~vVqCY8s@ZvaZpxmj zKE_xiG|GvRVp`h6`fo*kr8+T-JjsVm7pWjbspm%L(=`HFP~E-ZcUyh|vnvUyquMWh zi#~s3hJ{iQNL+q$%9FW0R-5yDX1(s&{rKwE{c>CFt0QJQ*hfOm8?BXQwq9MoeVpr^ zuVrr7=uV>bF)KO3*!{?7MkpFjQRMxMDVCwA%|U0?N6E0LU?C&edw6*YlOd$O35?*;CR4*d_u7hM^Qs8M|FZS>b;{2 zk>8`Af`<6Gd?C0ZpIoy1a;aXAI(a4A(GV5nA-*(6)ICoL!mpeL;D4o+j)PKv9I3z6 zXeaUgKubfidoT#HJIDm?;ok}o>nvHpBBgVunwKo;Ots^Uv(GeMW~y#f9wD3`Eoq%K z3~S1_lO@bCG|`DVP~;y~eLY&Wz6yBR;4)T~sv6HCJ;SfR`1v{aC&kYa@eSUhexqs` zMLWJ0htO&glTT}#W-jd6-14SP=Wl975%P2EpcCn5O5OkMIr60A6e*;t?NuWpqn{O^ zS5D=GqwJ9C!cCJtA-tPxi2#biX@}~gx7TEjs9?7FegX89o@qC9$ zSp81LfoJzs%vIc`Zh?c2-d_Fx%_*b^JY(YrzSVP^){U3w;@nqsD2{}om`pwZ?Nj3_QC)ap5OZ+xS*>(fp>wHH&2hhZDo?;_E1Kh0b~BIxSKOInYFNVmD;eS zkG)5xP}8F0YS(DTH5A+ql@+`0)9MHGZ6#wD(Ac?}Oa`!ZaK@Ix9 zil=_9UR8vND71X))DA)S9WT#kI_n7xLLK7teI8DW=L_`HX}9uwjC(EhIh_z}KXiB7 z_4kXM4CYnpkL?nYP>ZU%lJG?WuPF(##sA{i#`MdMkbgVOFnQrULoJ{*Rj-W&9x)SB zg3sO5MaG7w{C+2Sb(rl&ZYL5Xa7pO>+j~`Yq^JZxoy&TlY8r}CZD+ib!X!7$ncR*;^PtBwRw5$}=`$d*dvA zZrA$FzPELfI3tr|Mc7}MAah2~S0y=`B8{SWb|1>}lYd*5wSF=i$(D%nZoPd`np2+( z^7E9*p43}M181Pg(WQ1x;}HS<=GkrWzLh^c3|O_FKUzU=_s;#+=X~xEL!iVmq`Pu` z&ML4|_eCAC%&hTfx-m#yY;QW1(HhU}C>Lp0s#$9tJ&8qmY;#pkZO`d?HKbJV^@k`m z9}ef8FEnqSbbUmLbbO9*j9M!BfKD_ccyhMbON>+U)L@Rs)3ddv+)HCdF)GQ4wQ$R| zE+#?qLAAW76S3sv{QpRw?6dsBS|O)M?8Wy=$R8-ue9~}ymty7nlxJiJtLyZc$Y=+^ z1COj&ZsV_MGnKIKG{S23%e>)Hr{FVNyU1(aiqZcb`H7qihJoY0 z;Z@=~QTQ$fU3U%9eiin9g6==(+jW*SIWoV^$VhjQb27PqUqyKw_`!>+hVw`lvv2OR zA?%*e=kdx&emTk8UO&-K6KCvYqdG7Fpfa7mHlK9>; z_2jI!iSvJe2RYJkx2C@qZzO%50}WSftui|`E#4LEn{4FIE5^eHJcM#~rkasGtA z|H0uKm}h=K^C|!tz^&@pn&O?5r?_oc*(H3DR-3Fwv&DJ(zO{=t`@QC#!Cv+`R{{+r zBQbkW`^;e2WIfZgRG1}d=o_u0kr%W9By+4jhd@)Ptp<`-nfHr9))D~g1JsBOK zOEO}yO!;dzMqnKMR2U(EoT^<^+1)tkjZ$QeO?4@Cy9YF!{lNgg9+QQX2f zXBa=bOHBxx?VQf^Hz`La@>c&XY`~8ypUTZu*mjEO@m{ch)o=_q33T@!0BMRC*DIAq zAHend*BfX0B$(mPVS$P z<%j%WTEE$KE8tRN8f75XEC7vBg<^qE{?fr zwo9H)_h&vq?65Bm9u?)?Qb|nA>D(H^NxCh@geT%VQ*4M=UfvcxXlJ$XMeK2cB z5CyLWr1iy(B)hLjcaEkbR2JQW0n=;?(|=h!*vISp1AbO(!6Edh9B~W_BD#Gdw^&@Y zRUJ;JoD=)T-crk4*=FSDe!$BeFXRF(#bvy+W%WGZ&!f)%Uj8Uynvn3cRdqQ1)Z2Zi z|JW)FKWL<6a~&A<#8nEkUh^cuueUpMZ*(V9QvfkGuR6qmOuBx86@ps@V0`SIG|49M zFH*9Mxr}?c-=2TaPuaf0o*JV%~{+q8EJ z5(npazCOX1x{3=THlf^<@_hKC93ed#G|uB8+KW4jCsQKbxD|ZkYE#+_A(+oUhi(|Z zs3RaEAk~a4>!WJk;H}r^Og?<#GNT^Ip?!)?Hus zN0Yq&~2^8@t@GB{wreZBlM8sbRHN?Jo7jWNC{wNWc%#{yajw z;Zzu*ZnV#2o-BW0oF+ft@~K_VX<$g7I!X(j$aGccYl#_NVCi4Zd2-(Qm)Q9YI)hGS z-WMQpvh zx^ubmHPjkGSDbrhB6=5EK0{_|3*_x-6JkZBP|s&qoK@1!R_dps#>uA%$kTq)ZnzT0 zq5$v$oaTD_N7EJQDo`z`dc~8Bf`Gf=966lrX}6hmSFqAWLw)GXa$VBu1~?NblZ zhnS~dEeEP7-14zW%;R;~6NI|qZtj0t1U4_Dg9cD@K}aO43ar19I{NUL;w6kw=vy7? zxWddUIF6U+R<_&Rt`Y%So|Z?n2WX1E(BUmw%?1-4Jk6Fj$9#0SO>HGNKM7HEB<+zO zM_H>?aNcJxdAO1ZawPyNr;nw}cX|NVu*-h@_JAjFK=SQ*T)XMZb?OVxC=qd7&uqea zW4VWbH0R9Rng~O-n&}lwU#@Bc-V;MXqIOu{h8Z*v$P=1sXHshLFiZcyth52& zywx8#wXdf0XJYgzF&`~c*DG1sEbs`Z_h^ZPT(gCD4t#a>7AsG9pB4E7q0nygx^ysu zzyXCquISc+v_)|U59;&QlA}vxodvL{*OffvV*{zL!ykR;cxm`YG0G@7?Tpo`v1MOA zYF%!1Y9#LLZh5iziS~Ian@zuM_4;I)AL9?>vmQ-!)qFX{w_!^5#Zfd9IKF4Cf8U#l zzkk$qE{eE8Uc>@|GlNNy?NpiLb{)@rQs!d@A8fw;L7@ z{z@;hm$O~ijJa3#^^Y;*^2j!#f?hx`x9g4R>=dup)vow0rLD$m7|nSHN`JnT%}x|* z>@wnV>5Szzouk**#<$Y>h5>U(UQzIV-g?(_)}-3*7_V|VD&*iU*yH3YjtGLyKqj-p z`>jvvO)DMiQ_nm2C+&^iNNg1t=060^O2h5PeyF%~#P%%(T{XR}hcpJ^VwHe`Ut;l9hbU9cyL6JO+W{iV-& z0_v@)xF1dVJg5M(w+FlHjG&kCeN@p0T%n0uZW8nC3u3=_0s5kh(oDb)X*z>eOuEqw zPhUEQWM-HS7STItBYQ7vY^3j6*|OZ9D>z@RbAO)=4g~*@$hur^n|`-}$-qL{b@{$C zR9T|-=dT1*2xmKxlxDOrmPQA-d%I+Ei$`?Paiex$xUnJ&sVHNCTc6 z^D7VP+M>GMiLg?`URQjGB}H9!CwUchY86Nv>;8BO{*@?NoSB8|jYU+DUyN5(tUOpi zZoM2JHfIag4%L;5l}(1f+ZF(S>;*2qCb-A{+q@?w=e(*j=}N8UAZh*lrE47ZO^_5V z5^A6VlE~$h$k;Nzv5g{-cuYX>Ve3isN5kL>4U%XNz6)>8Bf`Q6!mfdPet~Zj?R3~950vu zfYsUJz7--R1<@uFE_EUecEtv*?Hc0ognaEM7%IL(`5>U*+x%Ljr?mBwU8ztDP0{R4 zqOPg)e`Oq-t(tyL%IN>@FLbcs@z6q#XjnK7L)YDHwXUh(V>yj>1$R8zWteX~vCUEr zXr-a@@=fZE{uRme2yz0im}JFuzz^Dl%o9&X%SzyrT9CKFarQuWiMXk{=yTGjwU*ai zHRjTf?tdP0J+V%gc%7jd0wi0X(cz2FBC|hRtvwQkAFQGHX4?4M4d{*{PA7v&aWZ+B zyJ$!@Mw(E~Z-+&C1!ueJ!TM&Ph^lMhcWCDi<5CD&XI9^M!`9SlCQZSBb1v+hWNZ0v z0OGly%pjmawOg&jyx(kCDH?Sl5F7tVk*R8a0BAy(w z&-kIcTuzHH3>6EcQEUUh0f16Vj{>$+Ql3J&h71^D7MZVHHY&GKWyew! z8wJG*Gcw+z!n;|S8A7!Wf?K>#mNnrj*}|@J@(#YOU!8igD$Vnvupea8Q6##(J3Sx< zw^2E-9o~oXl4UR3z}McS0Q~n1dnlPy3+An)afgjRWmXWw2mL3GQKpkO7kewe3U-*P zmC3T5w*bw@WjT5E+qzoi)kZ%18zvHwIom;tsxxA}|zV0)! zA%9?N!^S&wX8YK>nG!at1YE)t6<2!g^;l@;=-rnK~fJ__wLywk?=#|1WhD^~JQ{ ze-dG02q`tCdtqv%e2SFr(xYhd3*fm0;9lam*9Y3 zN~QjRTE3(|cTTB!5JHq&YItrsve|d)0_o&->YcSzkF*c3^wdWJrpLmjEo)6oxGpM_2vwLZ{L-bJU zEe7Kq#BrIEl*3k4LfWo)f|t~dmpd*975#AF0k#|GK#N?tS38i(=XywwBbIIgU$KaI zwd`uj7@tro!B$`EewJ`}sf#Wd&FCu2vl# zNpj)NU_!YSr#$SsX{GdAL{Ko*%Lkmg@n>>5w`9^0p~Xra)6vQ%JrR3=4!X>afrYbQ zK>?z#TgX}9!b{bg0N+v+s!M$SlA$ywIj@;VeGQ|T2$S(@p60f)cfDlQ;XwnK4p;sP z*q)F4bRF_Q!(Lq+X0q#iQ$Ti)YM*y7YHMK7O>}p9glqOY!hV29aM6#+;Z4)ury%JY zpB#Ue);4wv=YwaO?^nc`<8j=nzs{%fIq#F-p^2LA#UR>Hequ$TSP^Cy%S&pv*JT#R zs-R*Vuk(wdWR1jwrB-NFx-WILc2YQtl+{PcW`G%y%`30p$f;+7PnAh0bxnP5CQdy4 z4?WB3Gw`i?g(Z7JJXMv{yz?atDHJ{%J!9d!6mL>Q?ny(_n?Eufe7ChI=n4-)o!X1x z2C`8dQ3RuLI(QL~UKKo1z66SnPEIGB<2}iKb}rb9Mk6^$#xFh3L)lmqgT*zv4sZrM zR4@2+!|zYvF@Fvin7@*upQK9^$5*AH6SWfri{Q?#sL6xCVq%cwRY8vZ$hHYz0AjTs zQy`Wgu$ui0z|-N(6mdZGy#VlioF1~}3=jC#NITw22wxTQwi5Cc9 zqjo!CRdh82N$x{D<#!}>BKa~`Qj@x%fr>>31(`c@+SFRqUF0I`6?SqVHuYqnga<#_ z^7_zsahvYwaNS0WA$D@iP1qAJ^?Rs(qno32yZnEvSyU*I>kHhK6PaHq9}{EWKJ<;u zEzGR=EigcEYMo9!+#&Vl0w%jQxE@S7hy4Vm5#!~5nlE&gEPb8z+pUcBTfP_@x9P6W zUS05D|5eKo)qQ@sc>ZzgPOjj4Jm&ZXYgXrMpczI&m(Zj zkOzTLMq#A?v|mA(5=Y08t%-L`aszKMB^{vO7PEEQl3uDF=d!CyvRLWBCfx$VYh)t%ZG?tC&qcjGLS3b~fbI`j6SVE{$FsN8Y7W77vl%%*2*?dbCLG$>wMeMmV;`Z*ygNmQs z4V{pM^DV#Uzny;;Mg4e0tQ*pwqTYFfrM{{ufrC095&z2!;CS;3lc(c@bR$f`x;XDC zp@~3zHhYmwfva~gmiUY|=t}myfq)u|I+9~Q16zda-=!-=UI>(1P{*SfQ8a0X=$A5F z;9e%Ic;R_X?q#5p&iYr>*9Q;FVmz>989_q9CiO^^N)Hz-v@QY6$qH{Lyx>Lip(Apl z=7Dr*B3DSV!aEvi@wfZ}tHli_?p9xf3LoUt5GX@~<6OM%eQGyU_5S)7= zymVlfMsCE7Wg(o7gX1FI+UJC6bM4;4Ye@a|&Ij(eD1N-c<~!{EoAy0d{JPGYxr6dT z-m7K}dMPgNn0pV9rGH6YZdR&*sgi$UTq1r4{wiUgFK)?3IFnkcGQ7PH{D6Nne5ZOF z)FCV>o8>{R`)PV#GF!DZXkn-{8*5`boaGuPTk3lU<}QzJTj3z63M$--(->j~n8Ij9 zl6WwdK=}jF87eT|Qi4HKBaW?l$zH5FoIAV|%^g6aPYt#wP^KgcBV9irv6Xhnu<7p{ z!lmmz-nQ|+K59q7k=ARKgH<}pMqe|to|W#1#{E4_2(7bLl)CRkQS4fXCk`XCEe>M~ zFL^Wu7oB2idz8dmcB$wdsT~et;*57?M-Q=tNRX z!09he&e~$)PIOa8-mM|1VEe%Vy-GK%a7=wTViIXt_D)_O<&h9!c8=~Ah`%iS>9_de zHnLzad?=w#35XZo^T?F>@joRb_hih(@It&asa97XnP0SbyZ}}8tHh*;7mP$U=2(-@fBu1MKb8jj$K_||{MBD4x*Ykks$g^Q`w89aYU}{g zY}@Vj%V^&CVWGklQvV_&`rTnhcL^NEAx@1FDyDNLKhBI0Jgtnoe3aZvk2r&lYQM9O z&50!rCWo2m5X!0f=j)FkgCTZp0D9`Nt2H?6QKTxU?(}f+fb;4u))Ysm=RmkL$hXLT zkm|o3wG4#E$A6l18n`V_GwmQxO__L=%l*&~n}W9=po?pkU%k1p9ZzMELI>>B>V*Tt zSE(+*Grer3;3u1X<5RWoQI9ewKFg}X1uyoOoMd}g9YsN?wh_`2!f}5&o!(0fF^)%m z?HT_>y-VZ~`ez~Ym}BA*afQ4VoYys@?Y(MKHc+^w%5~cNw~-k=csw>2$ms5KVvC~{ zj}j9R4@g0~8gVpgQ$5~-gl8TfMVYf_9UPNUgj+@MXd1MM0W0O@tQN_|x{T-*vI`kD z?8=Xl;7YGCOQzLb4-<|$q^ABWU{7hBW^va`M7IZFhO1LBD}2>nBVKJye_ zEdljYlHDfHlCLoJg(?4+sFM(UiHaY#x>lp$qR32b;Fs>Z1t0-}pYvSXEak>%cJfoWAb*qCxTOHKtNT^Igh_9lHE==$-{)O+Q4+y;OJi$DbJ&|3@e zW@w6y(xt|<7!V5Rh?#Uz*pqPP`n@0MQux!R)!kT*h{yihOW55H9rBeDzBt>|Th~>V z-JKEbh0~I$FHF#?Fv1HyXYH#W8;j?}o{run*C29tsztrMWo)Jf(eeJ1f;fr4RUf;X zEy|QK?`@vRC8lbsOr?SjYRl5gP!u#L*#sC($x8%OdG!B_Q@R48?vw=lHprj zE*+heRTKTk;-Jq0Ed##B8zbv9|q(-Vgq%l>U#&9=rSG4KL?`|H4)RfDE=`$$>Dp!k7A3(YczSuR*u6jG7(YOicnaTtdNvxvmtc5Me8FlC z-yHTQ+(>mKw=#f73g*t?{G8|I1gVSUPU`34EhZBo3K$2!mNUp2(`{(@Z>dw`(Kq+g z{^uias*Tv3xe`>>6y_y&`c6X8zO{tzQ_DYo>HF3KV2uASbuIVer;X?dX;b6=`{N(P ztH-7!a&n{B(~qTFsB5vJg=V2b%m8ZM>oUeT$t~>}# z%yMLs)+}G(VkokyU?>7FR5hQfy{F8xxGPbPEa}IA;tU7RN(E=7am5ca2%vtDNXVF` zAOEx!Y5cHevr=KoM|Aj*pmI8(Jq4hj?s(=SM4 zu)vmwFErsqJqWuDL_m(HClPUDPe6a!>Yb4&0zxlU;DuopRG~np!arc2Jx$7Vfp7qo zaZoKP9 z&Jr6D#ZVS{`g_s9-jHM@X8lJ_=o0h})m?%pLLixUm8IGLhr^3fhR?QB1W+va{%FPo z^|QsID6G$nZnaxrQU%|C@9BfD)IkfJOhHe8{|fM~y}`JBO>5g?k_(5iVJ*%n{~jOl z!>NhUzZQeswXhw!50@sl%(?qSzt-l1?R~3VD^uBEH_^y{W5G?sPCB6Qns7bV!7S#K z&9%4qv{BbZqx*LhNwZzrhFgpHkHq4#=*eI8T~;Tc=NLdE+BDQI&h0^e@LrAR#Ci+A zBQH3@UP!w0IBq=sP?#hzBd?FxkO5~VOvM}52 zQ}YI+=N=}*Pv(MQ{JOwy&$wyb7hkGC8ksEFNd{AH4%ArBBha{4lSlDbBu4&$d^rDo zV)2kCSnMy^1ou9JaB4#>fef{!GrIWYXv$RC>&x@2=JQ^OWVyu4o_4kLveYNSXX$9K z(aaZrh=LT=38pAnyB5=|Lzf|mvA-t%h=na}&|AYU{+ys5t`cXbn)-gseR?`ZfW)I?et!h(YPbO#q16}K9p@sz0~=~_eEct{T!0d!sc;lsT6<|yWIgq zbQ%-s`lByDdM*%F5_fnVDcoLR#xAI*A#+DNN2a7G;@gBrX(vaCQ$|Ccj_tOtx~;)IEdKV2AnDF*$3+s zE-@?A#{4x&BIkZ$dU{{|?jGn(K_`Mi&*ZHdm*j+)x1>Vh z38>*1IGH4t!jC<_tTSk%OQ^7ksvr7>98c1iAUql^&$|0%`gi!|+gx5Jz9+ zOsBA=WpLFs1?gY5`$8s{nPhP{*p#PvhypS>$LY8A-=WrpX`tE;Bwcy5pf$P$ReT}0 zl6AjQWC~BCp_t|a&%`rnJ4|f}LA_8@Cl%3Ts*7OuUGcxxUa9*@d=1AA-AqQ05o zMzF%H@bXpY`ML*&xt1hPvc+1oJPUFP;;e|!P>49->o^gfRDS%d4D%tkiv@rpyZtxJ zApuUb=p26VO=MXZZhO}?Kh^2O+FTFvm@SqOpm%s%s5#Gxa2jWNsDw8*{5B#TxCT+isp5TRd7s{NI;arblz7E?IdeC2Xdm10K0DEL4`ua6 zjSRXo3>=~&Q;-tnt6P&hi+?Nn203*f`9-B*Pd?mQWB^3OVQW{iUR?gX5x!Y*A5%Q{ zF2LZm3-SJO-@fSk-=Z{|0|j$ytu6w1d@v|_o9Mas#||WXKJ2S#v18!quV}|=WULC# zjrA5o&&A02my;|;_w||~p<#2aqnLU(Uwon|y#+HBrYv@>TP!UE*%SBE=%+Szsx$o4 z&6729Mf}NY{;L0RIiEVfX*a(U#StXC>?E;`B6{5uVQ*nUnk00Z=G*K%{UZO`Uz!vq zF@bHhna}0btGmP&%WHzzA;sdD{C4KAZAoi3bG}1Es3E^-l*^WW%0J#oTE_uST*gZk zzleX{FPhIeKcTWzl%l7|e=v#~%KtE`{gHr*Qj&-utltKI@c% z9WS%|lMA%%Y4hr=&psP*3b z{sn0&3gmKl94sjUP%!t1$X?ie?sU`3eN*|mr|>=uTlZk9Kmm^#Pi8aoDYYN~}I~LTEH%qUO>T)1L?nHJV8F3GIGPKTmZ01#2 zAfzT_>m}Y3Omw2l{PurM@tpjp#x!Li!_;*>29prcvyS38js0Pi8}bHJg<(3#nbY=; z?3Cx(27CWEa+&Gh%#`1;wH)Ifehfr)>}T{Q9{l&iPU2;h3HSwDDFpg2KS7{I36QsQ z`xEB9{S{%+6~#NQu9FGtd){V-wuqyF4M=Z;RTBMCLh$)!ifyrmfNmT%Og}{p+FRI- z)8e!}MskCw85?+XCRhUijXEAW?Ft?K=S3$K2OvCKx*ydiA3A(!`|}L%g_L&X-1X&u z{L^`g;9Vt`bN?Qc6)-@IGxK{eI!xSvRXg+DOia)~z|&oh&TCTave!O#wO7|(_Uin* zZRG-t6LX0qz$rf$g-HT_*p2R@-Sr>5Y&1(JiVfV%OL4(?GN*zi85a3Y`ZI#ul9Y4B zGoRI)+lD#GzrMw|o~QpcY4Qi#Z`S4PWvQYHVVe2B1VU9E26Bbn4+O>3WyE@0@R9yz zj8BVV40lQ8kxu5!4PiT@qT_O6L1p-t?ZZ%cD7og7*Xk;iU|(mqL9-;}JAj8(lclx>0?t z98yI5jZStSwff6-IQg_yvIdcDLUz$7q|0dR!}jBTNxu+*(M;IoyV>P$_yp+szjo>k zdZfY8GWz))>t+nSU~Ed_@aurJ=2)|fE~?nA<9_2E3JQU8ZTk> z2F*pB3Lq?s9$uIHOF5MTBp(??%Be#-X=l4w0uveT#&0h?J6mGmuvZ;MJ+ zR2|uI+^9qA(DHCY3JdGRDXf`_|D|>Wkt~-5%w@@O-bK*Z=oItfz3AgraeicNLblK) zK<8ub_gOBB_d--tKj{r5Vx(a>F?)(HT=d^#*lqFn!zuNlb5d06FAl}7*-cep-SxU{&309)}@1`=w z5+WM^oENc+SjKv50LWAK%3I~TlWfzz%-8RX;<*N9A(S}{Do@k$FQ=5#NwgTT$3!(~ z5%GuP0E!*`0M=sYWDSEpaD4h<6pbQ#ky*)`#0$~mZ2J+PX`M?j^57%t4zejPtzmyD zrh+$WNe2`uj6OALzu&=oUHuq4TNc;Naie1&VQ<;_Ex|*@l1n<^E@kcFLc*2A2*3wc z9*F4+?~b5$F{8wC(jM)k?}g%%k?>qjV1D9qzB>%=D*MSGKmrg|NdB9L9Ec>0!s+%0 z57}8=o`U}~AqIal~GAi=nUHQmC)B+3F~ioFnV9;{jdH> z{iEOVu{2j|L@JED`pQP?-=%Un-1xm#JPISn;4{UQxUWxsepF5?ebyW)4%e+lNU8zn zMUpJvgs(E4W$rG?_uo>ya@_H}FdreE-~YW}O~=M__piXJigkEa#I;Jad@ z>0R+5(U>6Ank_Uua!<lH1`~a=2rU?(|!~PSFnrcuT3J6;!vJL zFquDv2{FE3iooxt_^89QIhi=sb-Gb5=K=A01&W{?mm<}^pD|&&mx4k#3vY4FL&Sm# z@RauM(yt?8O(XM@07E?fG7N6vI08=?D5&Iblye3NkZ5S_#trF0{;feQN4a0dHHD2@ z^kFjL;*tj*8PvKDUX=(WNe&nmvVJHg`H_alu~+AwGh2cc1(Q9ae2SR9gxYt$+-$nv zo!4>1=0tR|{{QgxmR)f*P?s%GxK)tg7M$Sj9^56kOK^89+}%lVhhTx=?(XjH1S{OT zp0~R{+%fLGzoEvdea_x%%?b197~@IsDH^vR7o=RdJcjP!yvx~D6A$q|6Jo7O^k4)EA0~k~(jN*r z-+&*cpTGEP>t27%kiO@;PrsSCUHro*^#P0U*ZdJ@ejTq&bWUTQiUsr*_t|adW%5;F z>ra-n3`%8q#48g_huR0k?Ng9TP#qx1A1)~EBjN9asWsm)c4r^}FDs9re^6pv75V3D z`VVIwbx8mZf=TZ_gGBgm2L8RXFaxOE<9KLI!+9B}Um;5Q^7mcl_gQ}F_4d%fK-ce& z75)-#?b@fIt1-*pRa{`W5?Bz8SjP1tGF8#1I6VN+Il%RBgQ$R3fjTX*FpBjXqe*73 z=;*r6J`6sBtz;JSW8dkt2vRAtgn=2{@OUCk9(XjcCLWs|0Ey~b=CM0tWRkoONSvQ? zeGwfq*Z;oULr%mXh~(A;{OKIyj6(6~AbK_XCZpYaodHT{zx&)ITWr$K>D(foQ&`e^ zD`o7~mP$gXs7vEbQYzfnUAOJb5+TamPx^FSMYBKmdsXruA6Wih%oXd*`mO43r5^`V z5G+95BI`2aVdo$+FHRuod}f(Axq5x`M_$(L?}QSA#Bxq_ZF`s?7xNPoDK>M3_4DgI zAwfZ=)!WkW&9K?h=qa>~j3w zyA9;U;XO#B7(>`0&;Z@?1;c{?6p2k(qz+8yFk|Trd<Q!S(;&4TsQ-5X145$r zR9>7n!O`&Zs1NS9kZY=FtB_kjZgw*sDUI>oA%I-5UFrl96A@4>rfuPry*zRbjzZmb zMVaFsl?yz4uD>FmPnaG`1)>uu15;oSp33<>ZBBzI8I4*hZls`CQo5ysh^g*RSA$uj zdh^XC0Jx8vl=8cIxN(pxI=4pQflO~-ZX^{4k*^!b(+!W-`uS$#Clyb~l+}_~Kk`p# z;z1y4&V>w8Yhjh$rOZeadxII8;I`DZe+ z-a+iH5z?DFU(l>zx0o7*xyeHds6Jz8_W!tpyt#fHOD$}@y=`fd`d)Q@j+R0-8elg| zV(fkx5eeGkg1CGGgJ$b`#I67r#=|`u$ZWE8;4;mfgszJ#G+cm?@GlRL>Z3iK#6(fh zS1y3z^_Z`^`lYl5wl>o?rTaD&MpT~u4+YO&snzqX*2mS&0iO~z&+~wx;Y)NfSj_&9 z=kRd1Hj%w8yu77@_D#%)V+Gq^m@;EJ&yt>0pRQo%3}c|>u6EkUW8@w1e&3*t=JUF+ zq<~@xyLLEWi9h=7$>U{o@|&By=isX=Tg14 zcYf@%guC&c0=Juq&>k+xgo1%{7*^Svhd29SQ_c_oBmA*TgxE_AsYM;raYaDIlF;8k zSgcD{o={ro--d{LU;T_7uN>VVZE3XQ_%WW{fEa>@CpnDAx=K&fyliwoBo!O%Gy?1{ zohMxx0Fpu)<4CiMV}BTrd<$!aLa+*Hw6Xl+S9!UV;M%heP;{nh%sUYg21VUWy9BS~ zzh`cHWt-;_fb0H%3Dtjs3Zsx{MW~p@~ zJgz%eQ=REYs8gYdF&5iL!fH-X1_dZRR-Q!OntlQX9m=Tw*A}y37OpIwxxQ22?d<5f zJ3~efH`ZTFJ`0YmEetb-VKho>+GQA_>S%C5{QHz)4xRiXtt2qy4#Ye zm3PCWKDL_Upqrc{COKHx&rc~F%@R5iNR#o|Rf`$dTvxHSRw+ z@*vLuiE0;VHAl5{S=#i8h{(yz8jskF12HY^GBNPjiBnTY;X77u5@$*2_zx`|5BX0{ zfbCuqTGNTzN-=TEZ68&pCt>L8?vec9nGi{p&@3_2#&j7&h+o7eH^8Y$>HT=wZd@oyhrSWgfs3HDLBx~H<5Q~hFzYX)24K}mj;v3(Z~>GKR};f%w| z1Bx+ab$&Y1!}s2@M}(n)Jw-m1VDG+0cyc4INkAFQEtH$s}eiS zw}OZH7Um2+;rYTJPyY!JaTl0DPt{ALEGc!yfowzV>}+FrJg(|OINw{Q*F|Cchuue; zE?Kz>VjX$UE*$%MS-1BlYYd)9ohMD-_P$D*xMf3g4H(I9n*EoJh^HuCab5B22Y{CvIEnCtKk9rIs^^?|UWTv( zh-LHDcx#;!h=<@5ETXCK`7FootZRB7AKjZ)TfI^*QLIgYV9{bQ7v!c_LGfVk5W-9RX6dgJBxQU8P9Y7T(kM8g7@sAufHg5?}{mHS#K*-@B~3mV|B*{iZQp zDR)&U@#X0Mo0dC%@b_2EcClSJdcIFA9n?tU_VqozE`vh_Xweq=E zy?Q$)4m>blZhCkpp2Bt-*m@n!i@Dh5~ zHYdyPS0;LlLXZgL2!bMbd|Vxp@}ecil2`nqoUO1Q6=x8mtmJw1b{ z2iI*jokZcvXqhP#mT?bU%6KTV}fO{fnXSMwF@V+(SVzN|Y5&kgtV6qbhp31Ur zK)`hpTR>ueB`U=qo{dss=H(m|et#k3mIZb@{co*Z<9k3~SNX1bH%RF4cvj{2g5Hc;BWEmX{06C#YIeL_wAHx- zqYW}p&}YSF4qkt8Oa{=SPLE(&iJp;YS34^aUT z=lx`6?qvxV1wNHBFx(~u(k2(^Z8LHN=uKYT-Q-mgv%S;o#fL>nnz$|}-w`W4+|M;? z-v%I5?*+X);eh=7t+@VCQZ)Cop=IZZAp0r74laIJ{JNDic4O!HDgvVNBPLVx0WNC{ zWtA`~WG|z~{8@QAk7hn-s4!f&)woNPYw9LgpWF1w)Ivfy=WzK3T)15S{^53TntB>X zjk5mUrVt0370HobWdsCdl=X|4NcxS&+#*pc;Nh)_1j!igxaU@b!hd9em}yc0rvJ#C zl#=66mrumQ(J1FVzP>?{`)Hy`Zn&o9tt26tkquq=jAf!7)uz*>^Hmc4gonPkTar(G z>^KX)^I_Bp+bYK)(*v50>=(M)EJRw*i+=4dDi{e^-gHt$;)cIYcBWF_gy%6Y-ZiH1 zg|ecL9Q=5o;%i$6dkjZI_}`DU)@NLRMKlWebJD1~gNBe%5m+Du~?dIZi z7V)2<^5BV25B|qcF#OCWly3(?Q)E-Jq~)QrE>1e3Hz&Q{3(i4%7!+^<}Pnctgj zq_v=Co{ruX4Gy?#o>f-`ZINbPlIqwKBZErkC4|)2)4rlqLVD8%@=it}^ia(pJ9@h3Jb=bkfGLicMQoJ}bwz z@IR^Xtly2fU*%eRXdFJ%N})o zzdbB$o_oi6P|omSjL))w(efVKo&;n9^*!m=3*h6ziGru&*L{pv`DIviv(H!Ui3`C& zN8DSp0!Nx%&kLu`on=4(67fj>OP+Es+Cb{6$ZapMk)Ybfa4rRg~3# z1ny$E2Oj5tZ5HBPi*5|x4JVwX+JXb$|h0#08ZP{ha&!~ zdFba3`9eR05?6DJxmiO*0|^#)p-x+q^WS`m?zRSAF+dYA*Zn}?bFFi}-=i-m*Hq-*Z z1dOYB8x99ThCQ{Pnar7-lrksluYOKyY z&M4146^p?Mc>Z*hF(=NHdyaU-f6Zt$*ng{E(Px=kvlD zUBN+5TF!;{lVocU)m83zRRL8 z0HhRz7%tmmQG+Dzbp(Ew(Qb4Z9?Q*VX-3MZbYvJ0vnWP8$lk(C zJd%6UbIwqbcmc<#+3@3;n=Rq7>o@89SeJU&`$UZ!$u+S0YqJQ;ZBsoOU$>8k32wLGO3@*}($y18+qEeCe5y+3 z_)|5_S)kN^b1v8CWXNYN78qaWFtmbnxp%S<)>D%Esc=-`S&;D34WL>`2RYy2`{) zYe+?RppdDd**f>71g^eMH{d_6d5%3Wbj@CBgEs%Y+H-YI?D~!k*clkF&5%u36kfUQgugVze%oVSNWjEG+WhWq57E18MqXACIO4 zd5rK;pQK584T(JViQmSPml_OtzaV6dsh9_d7sOOC$vGBvrg@5AB)%m`x!S(B>dl(J zMnQ_0De#E2w$XB9*Aj)jb&2u2flwBI@w37>f}w%>lX&*S2lsmkcJbexN9_fqhs}WeQ8|C zW%6skBib+f8>&CYdwcL;)~FnnJ5RkelsKVkW<63pDtU0}E#cidF4LYpbw|-gDk$B5 zwpRP$uH^5gXYz3ljzh0S%hefh)KM_py#mpdNq+M4BOD3f`QUH8Bf3#AFZoDGs zQ}n%fs!lzBZxC883CbrPYr$F#x23?8IV2`I{A|pc-djM_DuE|$G_86`-b189k8Y>X z$`-@HmTlDUIu5mz>=gSRjNYvUC29sjMbI9m@(N~V$nilyx@CpCSVWM)lg^rH-b+|@ znWExhPRu2UR?n1dtGh6ye+?-${S0$c|_~Q2?uYx(r z2;Yl7?l*#mMvGq@pLg5X;w&V+*=jlXOH*c`Y6 zWHNFR#bvcAM(y?XAp8uk|I^2Z*gSERiiZHmsuMUhcs^j~`0*m=YdK!wJ9TtVyo^6( zY}r}J6=7T&^YY9C*&4(whI~>zU!L$bu!9IN|7HDAB2Bk`tlr*6@o+cND7+Lf|9!ScrBoad+0FADkK=tu)^>zpy$q0O zmE-oDa%Z|GsH;YC3sZ+FcuZWR#`%4=N_UIyYW%PGDMs)&7MtnJ_wUR^{5l=pC#r7J zl7!K0$ZdstYAjz%6#wYbs{b*4N?H`uQ1|eS%>9SC6YWdq;|mp|_it7QiZrG3X^@aB z;c-;gusV)5-nUFHr+Kth@*OPrqGeR#G}rqukbRJLHCFNq@*rQgR)3olZH+uLsy?BF?+C>36q{1J1uFu;ap;{>uucU*leFPyJp6tk{z9 zHyaug=R36Q;zBVp2#){sFxuFCwsXt-T<8)}qB2ERS`|*Rb*D2If3deI619*J2)h_q zehW1*gUB&XnFEjd=@&i?bP`hgjOQM1HVMjWKJ7rBIzNAzOXN93T~?NCd}ZSHGn>~b z8)Z-cHB4Ihr>9&YTcBwBSPR%G<)pn^Z+Gh(&!sDODtQ;PHIhm7@F}_B})Z(={L$?%T9iNO4`|&BF(6Oa%d#snM zJ4KkJS(B*9%5Ih#wmsUr%XD`HQ-j1A;2) zqKJLOCq>^7eTgVjnzs?ySX0u$71YN0Z&-0YoRQbuJvnV>;z%aV{61qMCn(PpioDzR z`K8`S;Ged|!67*DCo_9%Vz5cO{hWe(9=f6bf>8TkDfz!15wTR0gPl5$1f#&{8)MD0 z5k1LPONRKLT8^Y+-wtX|*Pqhs&kt)?16ZFisYyt!d!aao+~RVT)7QiL_?1)xRg8&h zSs}T!IDK3?-Ms=JVhs3DyXQXGM{xvHe~uC5PuzF6!FuW$!dV^dQ22U+vH}TS3F0gr ztH~Wj(p)1Qq(y$g+1L7JW-{bg-pO%|UpY$nEON{+y~Q)jSc8hR+0)fL`|;Evj4;lB z7CQ{sC4y&!&}ou}puYlcQ&r(dj~IeezFuhm&@Q18c#I6rod2LC`ty|K;n;WrW1lj{ zbNOpRAj5*`1DEyoC)Rmf%e zz|*_C+F-K)QR@{U?fQ@alDU#k`%6J7)r_Uxhj4mfN7*bn$#EIW4ycr#G_jTyrac+% zTKsaY3MD!0T&6*!&w~pzv$EbYSXnYsKM`^Q&-b2t?|Q!Xy3Ty>z4~u<+5NxHu1i|a z*D_$saJnBpI7&QBJg)Epv3<_2zFlgDTY7xrBcmT7z?7uS;_de;9_1NIPS&! zrk)rVF(;FM%4y%JNTj1KvHx6`4YvJvOQ*z~U7_Z_YMl2lB#-sYH0OJriT^#Y)OZ_p6DzgJc9BRO$@ZrE*rzS-8k6p_qbI86N~1Zn~)GwP;P2hOjqplFR~`+ zx;y7AA-LgD63--}#8_!BiCp-^gKkY~8VLz9@9sXanflC|x)ZyuZY`Uwnbb z%*h1)49hLobRxaW0s|))u$_j?1?ev9XPyj%_J)Q~*(+I(@l82n#4l{nVE~aY50GV+ z2izdlGq2F?pBT5eV?OG=P~P*r?!%1z374aB#gNYdC)8)Lf!~VbsT%gi50q@lpx+l# z8v{cqRRp#Qd7pVFu#CvAcgxuqe8)t@cKNnZ>U8-wC!D|gidpVCs?4!*yn3!xZKz$? zfR3IUDjEX&&#k`;Z11gWf2Wn#RxGPDOcN5Gs&-rzg$ZVHFEf}Q>aMKq4r;I0IkGs6 zo=;wR4gO;pUJ#?bm64fQ)p>iE33>azIURH8_)a_<-kM^b=CMdWN^LG?S=m%Xdg-UX zdxo-wi>@QfZO1p)n{H)yaHCjk)8PeL1Sk7?YTTqgjlC$2(C|s}3C|jxeQn>!)k>#b zg+C_U7gc~ir*_$C@xk*Z=P}X4Ip=>P_hTc(XR#3VACnM91sQqRpnV1)&rKHugGSPg zHe{&;gIwbCUaBE2hy{4e^4p?7*im5YH3?k_B(m9$E(@Jq#V;Q!5k`&ynt-LCF_oRi z)peFQq=@DDNUT8~;mBq|6PAU3lo`|L@5cZPXE5(r$1Nki$`hX(w^19(7}g7=82A0| zJp9IL*imDbUEKX|CeOO7+0XTdp__LuHZH!b5&o0N=vFKO3R{9!<%N(=HI6xDpxwpS zh)|S4((MSe8BTgQM6M)+$E2q*m@$FfctY&Pt;L%{n8T@P@F@Rif+a;RS6tq7ss_5r z)nD^s2Am_;^R+47qdJEa;d;+#{*5Y1`b!*=4YfB1J_9U=^)v$WaE?BSO>nGFl|5>^ zEMm^v1$li5cCgt@oSq;UN_LP=Rpbwcp;j}!jRIql^gXSMXJjBc(-hM_ioqzrt3MAa zT4VG%Fs1Q3-6>^;^HJL_xvp>iXwg=B*LWhK!*>VSr|#w5Ceqi&=N;fy`TM=Y$6}kb zncn4gKv21}#RD=mH>=jwBw;U7my!GxvnOh)O5PQ;+tE#(s_Jc1dB0DT zTfH9?3F;t!@)m{1BH&;iV~MBW(puM||q*Fr*vb7e1C5yR1FbZszy?{Q%6kY0<<1HshWi}9&=~?Z%%)WH} zgO9S8jfi>H&0o$-z~k&FV2s%lacf3yI(XZGK&4OkD_9(Crht)Y%KlIxq%t(Dv6HnZcj zcwQG=PEUrMhLeJhO}W?<7b&)#>{{weL3uvd=SWI;Q`>#4iBtT0T6)^T*LwwwLjLdV zYbHi4yN~17UeYg zH|sC`ZnkjkS8vy@&SXmWP1CSI^GG-wEg6?z&xr0|m$kC2)n?jhItNR))M|XE@1iEr zcn|V57`Q`z2qx~JX^vZjG}GE*3^wKfm6j} z&e~%Z2}?*R7<@TcN>W!iUTxb7#XMzQ+v1SLZhxW@PT8dm`Z$C!$y{6u>k`P7z~eKC z62Z_d(b$9Y+|_~IO*+|{2E8Ll(ptfC^}7QQ_GcB2dUsI^4u$Jw?mb#4ZpM5k83gO) z{*xAZ5dL3#xO{)O^h>2-)T?*S_vBq<1jB#B1UISbk#%}%gGnXxoPpZ9AW{8ZXAc86 znr|474eVyuIqz#89+C=pPg-fOH>rYcp~^HF+#!~pLviX3olo9(6Atg9ce76@hkv2; zn63myHMW_CY3Ig^<*G;Ar8CJ{Xr8qAsV)}TZxW}Wl&qM?+=AvAyVGCc?KwW0;(Z7e zkXn?P;4MADo>DLb-YM>G{huU!OJYrr5aZH#D&bt*VfIYM9Neiv5aRo9kIg5QJK^{D zk7}XE^Kcw?NJPOm)PYw?K_E-33>kgu%^Fl<>#>o1xt<7ouqv2RH2=3+U0;WG(JBsf z+0MDq0I?3%LP}3>5cRtF(sy@UQQ-wjZX4zopyd(j$c{=3CC5>ZQ$eg~rY3uP3A9{3 zY2x3&kXbPi-l!um4e6SQ$w^Pa;p<91Ob6!~Yx}3mP>gh$^13EzTDbn!<+PDo(?_Xfiz2VW)tB5~Bl@JmU|RES<`VO1VbhFeL1Ojgr{r$LAkt6YLEOFycHCvF@{sD7m zan)|aeVCI3t2@pwQNJ-h>6QZtp7!Ja^P(jpcT%EYq4UUARpq-`?pnn?HKhYe0!~?X zviW;$MLrcBu1yDamRUAkS!jma66X2QW^s*^_9XK+BtPGM?}Hwb;2)uee<}W8afnHT z^`mh~32d|X!Tt#nxDIG=V(m(*FZy6|r5{)xK*#(f4QSK2RzaX;p;qBp3XVJ@+Wr<6 zBQ88cduALv7D9p6Nt<#V#1}8&jxuc)Q-xhjmP~h5Nco5Me0^S?%5*#Md!LkTSulid zDV;HSF@wr4ZA6xjF1sYI@552HN<$F;4`T3K-#NY7d|O!0S+SNt-aaq(SzyGMUN=}+ z`pK3tJ+iqF#V5??>u$o6$1a~|Q-f2H--8_f7`m4&*4qQr`)TM?`GSyRU7PjUoenNo z#=KaYK-x%VycZSwi>vKPJ@7z&EoT3o9J|0cPxqtOXdsM#6b+Q3WB^F|oQ2%qU2_)z zqudIPwU}iwxDNN2#M?hcZcI=ONFke~OAm}np@3H=YPl9!>+^bH3jON>m_!cP9O17E z62J_@9M=4eC$mq9;6=qaYn~X&CThQOe>PjptX|V`|0{;FQ@!?Yf6m6=g_p~&nnJGs zeaI>?mT-}c8!u&)A0ZEF+W zoB2u3z3f|_7SN34D`?~TB3WF-e@(-*OwMULrbEC!llhHu>FpRB^>^X1ZPWpqQR(lN z#(_)4m3_*R-+q{Tji=PvWxK@m^AXpAC^AtwLR|9yUtIr@Ge2 z`>*Y)$84j(X*xf8*X)50KNHJ|X77WSVpiDqUakaMir+#bO}9V6UcVkyfTi-=)LGXlpEu;Blx}YqOHI{ zI{xpgyIRMlGs5M!qr)zQb)IkYGbO*`AT_f;`wd5`84t$j#W}h%n>{G2xvr0L#Vi|- zhv=9Lk|wALt;AQw2E+VJ*WmWFskz&(zUJ;GL8j-oJnT0qJKEJ|^V-Geeu{61os7{m zi#5eQRlQQI@f&8mCc%uyM+-w7)+o!(Vhn@lWP$6R>&nAQ*OnTv)PhlX;V0ofMdYgA zXh;PitT$qO7?a~()&U_QrFu61Azw1Xsh2*ci3StY9bzO7nnS1bvRIJCvPe)Jns%fY zYmQo)s^k^@!IyIOYYI@9FbWT?hvf$!t>6m1hKw|}554Qz_>~Akz9)G9`Tb2Y7gq#_4OrHJNmX#Mi zwrgmYf8K+@XIh)bRP%&`8#6DuN)eD}|(5kDfgB^HNsyRFRHA)=hGXbGX{dAWC zkmNguB4h7M#2Cw~OK454GsPQt)E&Fa_fTl8ojv;duXITZy_6joQmX1<&z_rqK{J#s zz2;;E?uQci3`S(E{#SoI#`^Ql^UXdbWyp;@xt!7@4Lye?sXtOQ0n>%w%Ua!T!s3@a zDOc3am`w_E`VbB^emq$7yPXp_K_KBYW(m$B@Ev&4$5NlRkqvrKOj0J@^6tqfm$+dt zEm<5B8S&r8L`+nq%0bVys2Q9~e~YpiNh(N60{iV(nazzPeMQjK={8DQVnTx7qgzu` zM1=3Z`YQJkB;z8x(O472u#!59oN*h@Ok#Z8wS5$O%aOWFTB8L$ryijCX@iR3gyn>L z9YgM%{C1wVzZxgS-DYxSTkWuCS9M;hw=QO0S}+Qagj;YL{_JYM?DtiD=m0U2Tjg4| zt@G^FytA#rTN=()&(t(;s1yBS8-TVCkTMvTFd-W9l_ijxzI2}Pn7IvJBCSH%Jny)e zSp@&+2k;SnYb$qMcW~^2ygoihSbCm7{mj}Kg{Hu1r<6X5#TGV1Qz!Wun5RW5I2L0s}9C z`2}C@0W-OgUJn*L?mNn1rlPoV;OC&Er-++jmITNBVP<%Y&5i=Dga8oJsNk58IlAx3 zEb}E@yq8k5%tJsEwmgg<`Oe&-MMdPl|0WXsTeWBRLshVT^UGtrT<+sRKmo9GBJ8I$ z>1ThGjUw<`Z&4HW9pq@qHP;H}m8tIDd)EZ$@FCuQ+WoiqZRTrO3IVMtSHvV{Qc1xAAod0+f|#K(fp;Ef%y?b z)){B>cXDrx;iZA8pZzs-Nn`dnuo> z5Ulp{0KO|iN$8Vq`gdtgSf+l1QjpnmVf>IAFZ4VNkJ*0&<6vM%Aopu<<|5=Qmre1c zYv!o)#DdRnrzvW)DA*^n=KK%XuOf%$+En%N$6Q0sZBqO?T~mtjrpshB+>a@I?7My! zW~^UZoz5(b8%SFhppruxKZ~u4AJ+TH6e+KPm-XEB9*dVne=!sd)N-LHKn4j^^8N?t zm}6tcWQphae-0K(XrGoJmF7OUY8yY0Hl)rupV)CJBX*OSpAfbRHU=FjJrcCwBzCVO_Tp5R-D>4&6s26mJf_S`~J?ho_+ z>*e;F&2+&?=gp;Xp!o6-hJBbl-HE2(mn-y7Mw9WZv1pVjrL?AlCW)8_qoMwbN82(n zK-C=bO%}Jrn;pGZg^U0d)t2-l5qOsh?itGyt(g+#+Czwx+D+X+F;!8)SY@>l* zv-_NwqAli60@@_@l_?A#qoiJ+ z(j5rym|yt0HqN<|0L+Mo%HSB2pWx@pv^r?H#Zi5S;FUv!NC0c2qvP>9OX|zxXqKC{ zvwqEdX|B~DW4KCUHr&<}A%wcn%M-r0l~I#cxc+lYvki3Rxc@OcV>(L+jL>9{>SMyu z8;>fBvk`(-0VfuVeL}IU|DcBuwZH4XKboFX`>9DqTQO!OZ7TznL3}RE7!I1zxx)GNd1`=D4L35#g!GW+kh2Es$F}Z7AJY$Ef z+lWdW-4pU$8D3gnBEF2mIG?o^i&TAeDwlUv+5cCBi0bkU858GyzqD?pVuK=%gjdh+ zoZhhd{XzJ{{_gOs1_d^cmY-!0{;rC4?skk1f%JdJds10sq@ET2zf%t;Lgg>VaMsJ~ zM`m4WjVc1-K3+2hI$LFH5(MXX(E~hzJhxSNgHDv6`MHhNGhDhA)7`&cBoeIkPqe+b zkn9&&sq6HH6Rvx?=gltE0=N>O0#NhDOA=wFh^KoB0xp&k(O$m6qFlIUxV`dWB$NhW zBS{5v#Es^s0fTWQb;6QQB1_Qa-$aF0}PH#`(w?FzMa1$+bU}qo6Q(d zZrfxbh-5C3-T0poc%zW}zqNO=rOr+iBzq)JH~O{ii$!2YDdunDIA;m z)RP0z>A$x=I<{)!NQHMsMjp04@}5VOK&pP;2WrI_ zI6t)#FC@@8wz~;3nrW-tN0Y0PT|Msit~8wWajwq(@86750vBPxxb$!{8}BI9H#qjMM_)I0s_ z0Pcsj=oXX%_4mD5gv8(Kbk%A*o2c87x8;g<#hL0L-JkawyC995g+pykA)1lz+xZ=f zxu;N`pEx^9w7l?ivu7c!y%}Y$1jjStt9d*^VHT$Xp*<}-GN-F)l{>?`5NN-!u*Lc# z2DV_r+;uu@vc(H6h(ySNEdSL_y~!T*RdfGyw!Al~A%#m*E?7?B<3y2kEo)=+TluYs zk}&KCKuI3+Dhr+HHu3~B?!mql^ZBVG8gRVHJAunx`V3H5$K+TTk;n~Dj z3hBgg?uJc7US}E$^GTz52ub%0>51=kqVj#Z=*AGXd&D3E)PxXwJ_b(KB>ue$N{f?a zA!^yP`}J6~A=?Ew`@1XHO4P{Yp_^^6NI1Lm^Etp2lgRW>Is{!Mxi&1|H-bRwYh)T( zM1LlMi-2jb=ebB{WJ%*S#drEHRi7vXig~aKSIXkqY0S9(9R0-)m9jhYcHa;44RU8Z zdik;OQj&Xe7rOP;I~o0AdR9Uy-5=kdJ%^^4oz9otlGdq`MsU|mU^JHg4$drxFH*5L z+ruamOuS{l?MRhslgs|r@TJfXvvcDuCX8gSqTRl%jUc#H>C@{M=AWd8ED%Y?_!H{Y z^tV8n{b zjU&E>?;pbw+J}=L)uEHa=f0RWnB78-MMW1_W8*|zPD20_+hMRlp3Am#q3MfIuW@+o zFEOCkRLxFhi23Hj>h6%RMl<{_^o;>!{&>rJ&Y5KBKrS%@t_P)5^$+D{Vv^S4-FVw* z0I$lbw2;6p28^2z5`A7EefCiy-3N{^`>Rz;>AyBc(M8MTZvyAQo0Axor>i(1Kk#I) zt#I~4iy12CJ{HKp>iyOO1S!8MOWD5ereA90j(y_tG8c-R3tPzIAiZL(j=ERa%k330 z(a8}NZ%o!^2IrhJdc1;jb`<5_c?hj!I(tRLq_pLv>O~@PO@d-5IH>2n#qlDtW@dy| zy=>hTMRk}lka5a2I4^s&Hc5X)IpBSpX8MPL>H?r=i|A(ARdfH^#t7MBEBBZ#a^_LY zdNVxoUf(9fus|$_1@XiW#6}266Zyx$q`luSNp-bQ(Y{^-DorGE2u1|0J`ZRnGZDh zf9T!yj$kdU8NOKGZCv`6dY`9iwqv30T{D#0-ZWc0AvNfSU5javF5y-Kt1;pK|Ib6? zG;UjGZRAOAs;kT#qC|GZYhkt|`wDnx4Po6~opo@9boqkC6K3JWs2ITCU1p3;SwjK1 zD_yNm0FMoH9X}2+Pyw^UDy`-3aCZ909sA{W9J8M#aB0PudE9;-0 zQ-w}Ntw3kWB;5Mx6F3D?X?*z2HV;mf>Z)Hb5zsay*^nT1@xU(2NnJ3UYa(lF`}aFX zqmXN#+fVSAte%dC3)(K7b4e*p2&%oL>$)jOE|7K4?s(v7GsOIInTZ>xzW~tQh2(4f zWTJ^7I>c&J$_x5fDdd~P&#D23^H1zn{bF|kGl{%ME4K@m3OynR)I8Upz(plfo?B2pzmj zhJbfLG=FcP{)?A5G|<=Y{po11&xk;Zk8sJw4teaJh;(o?Uw0zzcEG0_Bu3@9q>-)^Bvcj0;n2MVO&*5TmUXjZAxGFH zbkAKC+&pgPS1`=HCwtOGWZRX_&2rpd_`G|qzXPtg+gvXX#r|!>rv>44$9s|kG(XU% zpSLsMf2eyG?xq8xRCaXFxg#fKc61fC6o^*UfCIg_Q0xsQsJV z%XAiv-Y+)RxDNMTJv)Err9OPZhxph9E)$*B*598_A0u)91I}uYx@onMTVX^6{<*@J zeAC90_9T#fb3W#en(Tt#b=xYyrT&b2n>yfk7eDrk(x)h}b(j_Pd2#U{8T98^m-}B! zJ#)06-oN{V&v0*GVpP(*2I{ANW1?sPI&ml*@3T1*D&|ZJEgUuavCS9~%xu^J44Tj=NBJ~%X*!bNdk0%E-HFz{`>2a^Jzsk5I6Gv3 z5BoMJ=~I3u3XgZ2ZL=p}LkB*;y(;bvHUqlCM>X7xn_aPYuXs=}sNh6Sa)w8SWYkq^ zK&gwV+5I8;s^ju^yauI@)Uuw)qxj}FO`Ll$7lM9#G%wob9H*~xTRAn>Mh0&R18EH9 zDBEb=_&x0$fV7#w_fdZC0Y>S`p{NE(1o;+v>%0j^&ueG-O$MBln9xL}OoMPKi#ixq zK4)|tZdOP%LjL@!m@BzW$i9TgCZrHb5#~Bv|8dU|YhP+#rkLoewHzLDAPV+5|4Y9q z_K|b=puzdEcJ+{WV3hkzV)WBSoU1$MfG49SgmTAr7oJgj(aRwm0UHmYKV0*AEp86P zEYft4$QHgd4}ciPS20ZS2D92}{MI4qA1%o6@vnHE#oelmv)S=fyt6Tvk@}J+^^FyM zeuZ{w8*a+{X@LKvEL$w!k|~euPB?rE4!Wtq`zgX`h3%#J?T{>X4~C^dwc|g zwWop8>_iki9v%^1Kfw)OeC+7cf3y5q)ny#nf^iS>!~X94c)QfR92VJKdPclFtXd0- z!MLL1^}XVAEX73Z^<$xz5v={tGVZjtdKk;-YueNs6O z&qt5PeXJksu|Y-gyVQsEB0+R9`j^~MS*$*u`*4P+NDkOyGx&Nv3zeoBGVCEC@qBDa zVWKLh?}L;mzjSvjai^?U{_g&(5OfO9Yw^VYMzkOm8y-)R&Ked+IYS_IKZmWbuX}w9 z^Rsx&JAkx!*_=$2qmH`}F}mPrZftc$3?6fA_2fB!uqNJoIv}v0;Q*1uv*;z}@YKn` zaE7>*Rswa&Brd`guH5sl_1R&=57DjAKjNg!jcp*;7;JCmyduJ(Jzd2 zkkdb>oxtF!jfmj!Rl9p1miOceb*7PT25LlpmKh#%n--1IeT)x-075IQMWZCq96L3t zk{%V=O@#mcGM`Pn%Bh>Z-qFSP1rS-N)4c7=$oB$A{P+3^VE57Zdyfl((TUXO6FNvF z#)mu-Wb`W7_pbXW2pc~&H-(?dSDbL8lAuje*elzmau8^i0$9QX6;2h-+U$K3TVHPkG+z5* zW+(SHCC(H7RM&l9z2r|iR-pV%-}Sa1h9mgCzC8C)R@nRJrm+(Oof`nT_j>0&lvT`x zRV*Is`(-|_0dDwaW#BO_rVJBIJfs1}jHq%$Cf)LxN`&@0A?ctVz*%bzp!|$1uN6`m zc&LB*UjPt6@4l7|Bp9TNCSnpt9oyy~v5^!gA-S&pU=%;$J^CGaME_vY2Lp-wI>(eg znf%c&I^Tlh8Qt%oCUjYxo7Y4Lx)&t?9!CGDmG-c*j^Mg#%yKnS7@$<(W1Y z2Mp;$8)I)K>M@SMP=dPJ$3Ox+ljsAcbZz)DY%`wQ{OQ8k7jCQRE$J)Et@P))FTL$} z)4q45)8#)c{%PU2B34WW;F5d0miAd4^P#^GuXBWey7&PqG+Hy15=; zo!#@V1(updI8oO1t>H|6tQ)2!3c>9Qd|8pfPs~NLvoJ?IYq1`~0O@fY_srN{Rn_q5 zRv1bA<~Q$GfAcqgQ~l`2KdC;s{AqPpA2wDiRbKDu$n{&dZd9LtcGVw7B6Aq#>+(CRitaS+RfdwK><%>X@0&UvfrKz%0|U*=V`2ZnZ#xLsYrKtk=- zis}LFm>Moa>%>*VVZ1;r)-y=dyF$x{9d9T_e-I;ouQ^C2*b$rZK79C)+Q(fwc4*PO zW#?-QBraSySAFB{x2ym3XMa{*eEB6AX6U1mS|<@&;fXeo=X8;8^4x@FStd-^y)Rr> z{4W1e#(Ucv09sRD!@tzs@z0C) znO$~hPjQ|bmJwopKu4cRLk(Oya1kGUk$^N-%|n<4A+8sz`%@laKOH z7@Z@3Qa#+!kf|AUyiDz|gG6Z{p&m*`6jc~V2tOU~BMqwd>WGa)Ix*^awYNGxt6e1a zAFTE%Jrwjs9kX%${@v=v>SA?E`%m1{woWVRNgs>ZSgqJVf}I#d(q4Z%b*GCq3#{PWIkRA5#fx1JSlE}*i544XrPOhbnrRjzQ4lax z0G9X&8}Z#4>zU4bNVsACkmJ4W*8mWA5Z^RY*6PHS5agP6!;mjk4sSuOuQ;R(EUN5o ze9le~ccnz>iz*MMB4S$LidZ6=0<4MHMIwzQ7({bMJllG+6ABdvbtaE=fl4g!QFNIM zgw8u!@WRp^B{=vj%XaZ#Ry?y3D+39vhLLCRApco5%BdAT@DevGI`4+3jD$-uT+hg_ z(@?t3kHVoL<8tT1kN8~Fk$g^^WdlQ68ISuUHz=D9z*JB>f}fc8B)Yeour7MCEV{zS z(y9897S3bg#ssb_UEy;)iBEpPJ|>AR4Vpy%r0^{z?kPZ?^4FKtcAN3E^S7O!utmao0fjSZOf(fddO!8^qyr4d6i7yI_Sg>_JOuDl=p6j5_$~=DJ#p=|VbLyMs zt?#hiWZer|ISj;fBkD8g6ZoUuCt2zscl~f=*gbZvkb%UKCddXmNC;jLTvyXTqK<9C zp^bJVX#`_D0~JrC-lXRk4vF@MkZ@i7!6<&FqDudS4uWop;UWeSOtvxENgsw|vJc0E z5)%h3%<*N;0qI@%(U+I~De2_}uL#SsCcVUqU-~Yl6@ zcG20>0oN|4jLXE@vL=_%`MHpR@?t!|J7JVJI^e3t3LdD`7m z+xLKRO$1{T#WTsnIGVsdPsHsTKk8v0tj`KemcwS{XTA6`-Z)vBL?dxCK60C~OZ`aW z2fl{D(CDt53AmFyofg@spmsXWEHB-}BxDhd*(k0avz@_)*7m9L|^s z+Nh5ofBdoODf5xIGEMGfx@G=Lm^NHHY%|}x_|xUzPP@!cJ8aZ@8@_Kkqi~Jm-$w9` zN~_Cn91UG@@K5^M{1_LfPgvsZ1KR~t;()%)BeI|U5_jsuRvSo^w2Yz`{cl5#{;qF# zv!R66MozxMW7-W|`tgh(^L)&!pdZri;FyzRH&L?ALK5^-Hhi#B8c5)WOZ?okJSn@i zyoC|dF#~*0#zo)Xq#wF^et=UNNIbwmLLUO5Uja2Ep6;91*XUZfJ)s3l7I9N;2`o*X zx{lb$aX}bIh?Y8v@$eE4gZYVOo}$660`PnuB|oEiS+=ET9*^B4Ze0J|Uy3h@ZZA0I zlB#54ujF8#c7kOGId*JCPNMu(rp&h~ef*L)lr!bcg~LC?r2QrZOQgu!{;?7G?Uw*KD0}0lnIYIzE zoSiGsO}H4VMLCE*=7;r{e9rrJ^QtSo4bf8Q zVg4Mw3K)re^{Zd~s`{(H`YRpZ{L|{%^_#A%E?4T293L&x{xOb1AEX^*jfA-I1#GmP zz>dpL(g|F;(yx3bJaKU!bpcO3qFyl`!@&LCA_fvN5UAzuv5XjIwYI>q8b^fZ7&QYKq7i} zY4>IfBu>g81p|o#nj>JI1zO#P0Ze?E>IR~e)uzwPoQEX#3JSjHW7C*D@L zHXYNZGcEj9#r4KjgBk6mI!-xLBfm3J(ZDR66DJP58-W>sons(E436~JsaL)!3 z4e0<2yjLmi`x(eF-Z`(+~L%I_(KOBM})B`{m@^~plmHm zxwpb4I1~f$bD=Q6052jd3;c-{)oP6o0||yxGg{!@g`(_Ce03Sp(NnezL{LaXKgU6^ zm6MOz(AISrNq9>Vc%}05f)3Aqk8~(gEMal$F^~`mcB0;84;^+8C!%?)ed1pG2av)9 zkAlJ?&@CA_+|_^zYjYGS8#*X|do8~@>6Uis;p-d4l4 z^ONcI&6m$?Rh#N=SU<#La_ahx&ut)aPllc>`qI=A#+G1u^7~%(6-P9PKPCf-7fzk> z#KDSmk=TBbM!&Au-1Q$lPW@ZA-8rBKgdHSC8b|=Ei#}7mi2KE+m&I3?5JYc4n)w`Y zf+uwh@?l8#e)R+>al!@3fhqln5&n%2PpRnAH_!O;=0P;fzN-&a=?<(;xXd_^q-UZf(Ijs7bVw} zRq8kJn=ADm$_eK(!e3>M{1eWkTP{d>ETG9nWFw6vxG!n^0UWiX7T~y%P9RQi-dYY? zhP{HEpvk}TXy2O{M9!=B4aK|xnfi&;BK^rxTWL>@@YF-3ylhrR){8IWZKVCkxJbJBEEr-K!BHDbnBt%%>B+kT^wULO7aab?p}oXWZ%aSwC4P*- zp^KejptZ|jqf8$>nJ)f$Iic21!nM3N{k5d8MBe3J!tgvToo)EO>9o`3eH{Nbf_GF} zqx{CDKMKC|OZwXUC}Gy~oOq{=3ms*Cc*d`!k2;b45q%GJfjO>m?R6P{6it)pofMA# zw;`uI_U>*rl+fD9$!~a6wtet9cpJOMq8rlQ(Dnfv<*+P-T4?knCwcfJHHE{3j4k^&)Av-(_aSx&QaFZoOCaUM)a1fULSN zZ)To6dGh3TGV|Qb*~i}+rJo1?YTS4FlwU7{@Md0;U-OA;X*r&r4f94pLi{|SMPyEp z;CjFPdan&YFd55;DQhc8s1J7q#3qV(Yg?~+@$A9$;SAmY0Iz(oE=ya}J98*bW969o z>&%~|2zW;ugSZ7~c%(6(*s8ifo#3l{6r?HZT5ASxPkY(bxF2 z10^jV>OP@;8QWd;nUJR%Zyuu{as6s{;j`bmuc}z0n^;Ed4H@%DG2|yXU*(4)gc@h@ zK!EmBzszYD^lOwe?enNkyyl9LYf=oke(kFFI}RP(uM@4`(+LtEcK`B!{ukYwufN{i z*E$nzKV_P7O+M2Ohy5V=oW%ssEU@#ygwDj7H=TLmlg@VAJC&}D=KDpm<`5$_rb<|JMH}Xi1NMGR({59raSWjoYk+C*UbOYEkW&CO39jC`fzpgIXX2_qU z<*~h|=ke&{{8D&B&f4|WuYOerB@}TW;Xwf6L3v^6o&;|R;Y!m3IU2nX$USkyLog$= zJP?GR31fii@!>|nq9&WA4IV)c1q>#ozygEvg#}}2zoK;v0~mPtlgOa+9coD9dW=Qo zZh@nllraG!t#!MsAklRXP>_(u<85g?KGGE%z#h~o5=S5J?oRH}0`I;f-C-$8?9~X( z2FLX!omQYLHm-KMCtIm3=@bc;WjSIPni$NO$W{K#bJNV*IG-y8#)8_|F9k>WN}?zm zG|Hmb;YkNd5(IcaW>EG-zS!UjBc8w#ge^asXfkM{Aih2!hoklK7 zOBx%P|AsjLc9NM`FD3!*P`^#*O9L@~5;r_Xzz-B8E?@b=8(185T3>EexW^;G zFg)+ue^84CXQUu;T1P^j@#L5<;`zEl9k>TUmr>6YhIVB;ToB~%c`^U7?F11$&P zHD$&|MmA5+>dSYoL!rDVQh`*KU#QX9p(i*ymOKl*QBulfZwv@_#E|{ zyU3|O;PoU+>5r~#>uKTm))jSwdI1Ts<*I5jwhN$d2d00V2d|a}V4RgX-blUW>RM6F zv9$nRxUj8mv$Nux2G`c#d6}KMO+4DhFb(P@^_=-MCpGxW8l9X&8~gn8&-F#!4J!)) zm$Nm!+9*iicR_bU(-z4G;W5Dn{ya&OG}`dQ zd6st4Pntt_{HNLB+qCfbPlKB`z2L(p?zH&R{M-1OeP1j6A?|7POykQi{;ck4>C77+ zJgKjtk@`y8<0%D+T0>b2cj8WinMUt4{~;dau}v8Uw^@gqO(nECGI1;f&{Vv<3DRYtlwaWhYWxrjeLNzx_p3{jUk5WaT@V6 z`{~DhlgdxIdCPhnHhGVN#NA#&g1oWDcR<(8q9DQbe*3i<$9m!z3z*8RuOLxtU|x?D z?wSvPi&+AAu;n(NOkof^6bEaSPgG_LTAMqdv5pNvz8Jr$jmK+OE^AHhjuymJ-ppb2 z#~j8=5`yKpe%38hmm+_S%2j2pz;U?JBP0`#D_LZ{ zu-XlCr#s@=Lv7x|Wbtau%N573 z#Dt9U)Sm%W_9_=-Xg0?qd((Eq-|%NtK4OdgC=|g>_nFAUV8l z&ehd?)q1p7Y(1<~4Cto_2bMK?+>9f)Zr<*G@rz$rLE@Lc`g>i+sSiS}{9r~Ie-tE` zLvgYIACo#g6-=$`!^!Dptvn_yewZ=`IAi)(A50wTVJ#yj< z$q*5`=wncj;98B>&b{svB=(74dpH%l-~Xuf{BgY-D@cHc^sCq6eMKK;@~HbI+qzd1 z4NrAS%Wcth;e4GSK_BH0RQvwQnF6ortiBM%h+W!O;X~8~eT2KHer%uCFgRHQ@`?1q z002M$Nkl@Bzyl#ctkxMs8I1BU&8`>8}%c-;s9@=Ab_g}#nC0m@{2Jc6A) z_>l~vyt*+C6B;1j|rG(|z8=oFms?zZv; z^^-QhMvikL6s~{5V+~nyEgVt45ReUN#E`0~C9eK#6poTaTgS+!H@^sLo}yKXBo@LD z#MB}5brW2buR=S^Z%bPX|4Kok<;L{)N&KS>rj^4a_(|Bk@G!16lR(z=n>C$@aH^KC z6eQMU?~V>!tNslM-)ub{;@c_iP36m-bU!voQLz-*I*%h?T$X}_zINc0D#j8(X+y1o z#Qp<^bmZh&DM_5x7ZxYIaDajYBVDevvh2hdgd|Ek7mgYioVdJ|Zh6n3AR!rzF@j0H z>>i=;38(SOtFZMWjzjR2=|^spQEB^kgr}e;_7e&!|B6?T^*f3GjA_Vzr6f`OWAQJr z$cmgAaafC^r^P!2D=r(tlD7H;0D*VI|&mncYZ zDhpvKNBGEH&3UNj#K{v{z(1rf`G}qHp*#Mh)rN&$<`aCe5e12h7ccr+%*-=}X%E{o zcmji+G(!8cvXjrGH+08;nmsGs)8OV!ucd>y)8bF_Z{u(FeXaC|xTn!GjW5Iav%06H zGfVtQaiK3XQfHCncxac5V~=$Y{G@nEFLC1@+SB4r^B=|^E>I4`*L5p@7Wvi%+#Z1B zbI7OGpS~mO81zRx@*0&((XVo#e6(hR49%LP*Kp*AN&mw;xG6jAwtNYT{9Etq{|@P1 zKgL!-jK}?&|Cbxd!HS?_4s@}8HBCX{;E_Y!5h>fDoXy4@V#^o{n99tjAR!z|S6t0( zp?@!bQKt}a>v6>;MTM!1P>SHACln;u_~gTVj_SF|yD_x4SF#HP)D!I3X7c`80K zCJGY17MOYr_TDbU!rv>%*xmf3+)~fRK|OtAj}>o;7tf(P{?EcTrOvN-D4uz-Up7}A z_-aSlY8CY-R-8NgTKD0H-?f6o`|rJ{jn-rO0$%d5>d9z&Sw*5aW5fGMtkp}o>GveZ z>*GNb+PU7*n+L3$Qcj8kZ^EA;pY0FrYJ<9H2kH`-IMY%$uD`F7M3z=?Yt*0ZsJ1+<<8pqlIj3;;fd;nm_c*&b5OGD87b#*g2WLi zFYMW~S9Mh5r@Cg=)4ea_x}ZEL@6<)s_-W_h-~-4@7tZ^73D)|#hNrHwpg$0d=x|=> z_eKg5Z}MV(ghOcW$OlY)fy9!!h&B)s1s-lzi-jmnG4+^2E-UF-4ev8Z0ui4i(= zT32)LmjVoR$BKZ;IQ`+GKDxZ86XPy^eqIU^mwo-vDa`{u{_sO9Nc{8P`ABnu(^in+ zs+&pjI_WchVkobwJJs$8<5|y4t1IipTQ7W=_PpuL3%?#cTNS=j>Dp-iUbOs#4=-xI zlE2v7l~0RtNkq2ggvPzz>$v}+4_^sgl8bQ4J8-RS`A=)V!;>SxV)nvGsWX$8n0$;HKvX~YTUu@msNGR?x6A~sN4B~m{lp)B% zfo$TocQ%HA6$JN0kse1)-O;H42z-vKL6hUu*nmDP0iS`yI7$T62@*=nX-Gjr1Mh-L zixVVJkg%Yv_`9T3Azg^>p$74L8fb4l&|PiH{DMICX|j7zS8^Qh_I9r=9_@}xLE?}E z9tOKxx)=NUaw$mMkZQ!8r<#PpT@7Tdg2agNeLj*$Y)p6=w>>xTLq&82QVr!j6$gQ- zrXl^Hml~_&OH-z|nK%f9D?*sm;Kbg;l^Z(!gTa~soPnId9qRo!Ev0}kf?rc!ld{2N z$q6NX;|AlZ1!kc80oyT^KQ}`2uPSV%qs<=CzF((ZP(JtiQzUNQ(7o?^N23|V7jW3< z1^S&P`BYs%Lz7JwzIJ2*pLB2E<}`}iR+OlET@8x5tlDF3BI>jGx^%6F8sk2M zS=CRpec8lu-USMuh~Fwm7zJ4LGOQ2KQYolW_u;ssAdz|$#SaD9I32|$eijyJC(utE z{4m4x>^Z|v$|j(%6ePllwe2C_fSy$D!7>RxVXa*YB(2YU@3W>e5l$8Im4d{4{N72> zYt_Hdxn4gpv0fzdm%yHuznSvo4!ZiSQZI+P#~t9GapETDHq%pSA`Ehp2#bK&Ek$_FnI!# zIR>~rana-@^(PY=+&swop#hvp2RrUrYy+z$u99CX0~NfXU$^ENW4b4p5%$FZOF3;- zZf3mN+aV~v(M$nXS-Lpr)01qr_D<|}K&7K<*u{DMW@nx-J(K+i;216BDLm^Xd=CjRlj z$9f01sgqCdkEL>R*{N)SWNxykaRmhl6ejN7y{!`@zUXdA8SuVNM0hO47oRjNSjv?T z4z>OT19H@k1V|9*Fpv0FSvL8ULgDptW#qhfgP ztA$_6O&M@%8`m0Zj;pnFlyU0R7E&#~g99GH?-<BCx2Mov4f_LaFQ^9~drlyRRNKtFa@AAg?z?0ol=pZv7@5C8E$b-(%KH%>O3Dtz>L zQo7LGsZQsvyVa|HgRWNliP+{P??Zc-uWB>Yq;dSj32a+d?R(f#PROj8*k_Y37u9U1&Q7IP_g<2HqOTF0s3b@K_Y!w z@e0?9D>iihBwGiqNEv8BBKzkGLc#rle_NdJ1r|55waH^vA9{eHdqE785Olu#& zl4nlTp(k6E-+iqoUA*vlcm3)WD@dHy2M53V@kdsW`1qsmb!SeU)Jg95#1|=<2|i^+ z9Vs5wx(fb`d-1RQ&(;=)b%MBCVM1$g&701=@JVO8?VU>3M)Uom-O>;4^u`Ls+F% zvIzYkf&SpVhlSLZ2HqK?d|HHLXvVjD>Sy@?pS48#+g%#ypE8(35D$qsVMS(OT)L|;`p zIJ4(acVbaTckJD7YVYb;Cr*&~;<4_-dMXXwUO|Eagg*xl97PE%B&+zZ+4CH>|6>dyc3LYFG_(2#S1G)a9xSq*-Cm_(1uT#;h8 z@h8Ez;dy_hATexD;mrE>tUO*H)ANOxRDWirXuY`Wg@4(3I4yrO<*V=hfh|o{1iB|y z(EH*GE$nFwddP+>!Wf3JS^cp_Subeu_0yTNZ*<4m|o#?DG0ad1bzUEkNiJjJ!(1d!6eF12AlG5@5Dx6L`j9$=oriSu z?r_&h+Er7BN;*W965aCM=QaswaEX;~;8eCg`8=)%k zsmr|6Zm?aig^+fFA$=ACII)2*6FE_W`uy2vS~%7z62##Now4H|97d)e(!(UYg^xde zz_nq(WALZXWfK4zuj-Cu=n37yi{0W0uH-BDjC6*d#1H7a@e?ohF#gaTxM}u~o*~>? z;q#^i?qQsvJLymJPxw~Yq%mtc)8N+P&qipRmd-R>Nq?A^_+tkrb+&yNKk6!n@ft{A z+w_8~_2YdK>?FToyw+XoBCXGy@5-NtoH?Uy6?pgyU&%Xe`j+%N_=V?$v5vvIAM1>D z#cuUStO4=I1{fzuWc;U$g10RPaIQ9%W>$Nz;nU(=18j?f#$*0i+z{`S3bK88$jJcI zPu5TGA@gW#p|IJMJ0xYhqw2el>8ozm_#W}qx59RFg{*LdKddIQp6EG)l10uc`5Q3k z5FgEZY*V1Q1Y=o0uTWf|nERMQ2 zL*6p9LpC1k#NvILHz8}*+G~9&?Q%D*sZ-2@DmLlnSzUg>6r7V9`~-)+d$83w29dVO zS(NsCCQs(H*5x@F`A)AO(fd<0C@FvN!8f{ZeUs;d?v!K+PLO!2dJ^uGR8U3ia-+Bv z*Y%8i^yT`5E2gzk{XicMvi6EX3p`JI6N4+)t`jR6V7AHM_R63+U7N>Hc?|EWUYat~ zEq~Ra;wz-}G?OfRk%eLkhB|=kv!Hr-RCCgEIxzu-R_Y`WJ{gieN9}-(aISg2sWs-` z{Q5WDkEI~-U;fYktNZky{)r?&R=g1`YrWKMWGxgVeD$^bsJ{TyI$Klz<&*c=fr}fO z>1Si`Z^K&uyr-_Wu&i;Qqx8ciQL84$l`~Up>f0v@vb=NceX#bP|wI5E@8o%}~bY;a6DMp-o z<4vV|!ly^@u?cj$PjVg=!KUKJg^j{H>6QUIkNB3Z%jbmiS$ z@qpskr4Eesc}}^eAEUfEm7A-}p@kEBjvPDg>oi=R+9MDHgdMDvmnTxZL{V%(=`QiX zjZVNe+=QinCoE-ZfGI!0 zHzoL)dhaA!re*xgK;typC;7i<`AHsM)O;m>v9~Lq)hkwyN#8}EY@2>IiOZhW$Jn3f z0tP;G8l!&f*Zb4Ap-ATIhmc{V18`jZDDv!M^_QgR{cm-;8P}{hs`!zMNslxlrvMk_ zIe{rmvZcl)*6fjQQ2Jypfzl~!iL4!BKh)t3!0ytb%u@zv7B`ucu%S%n%3=r+8PE{I zapO-o3KA^l@Lq|EbP>e>(`sx0&jZnP;9(-L_=ErcQW5r0i{$vh0O&b*=zum9N{igb zF=;@0B0>F;22SEjO+k+aS_wE-kPw}wU_pZ&uwvqaC%OYn3KI7b@E$zs76o%i$4f}8 z(KQ~qGvMH{-KoeQ6 zf~d(D1%VLN<}=C@X4KRl2C;D<`Jn2Ql0@aJ<{c$i@e8=;FT5$x?*KV6p;RaN+Y7ho z#lgeC-V1vpMG55%MG3;GbpFy6-pWmWY&U~ERG}Q=2S$)WF9`V*1ieFADUdkWZbSsA zi5Y5mnyCZ|C&CQkT~D$qHVYOybwmQi4GArG^o7*}ZLm<$M+RUX;wvraroM6Si0Eiwy&37cQ-XsldOmI@?EWC>@>L%~iF;v+Bn>eu(zqJ#F%~Lc0 zv9^JZjhfBG-DsL?#d}`#g!e0GO99Nm-XZ-%yu`&C?D{ zyRk8jlx##Aj7f}57{*)1@(2CVt+*r95>9%It0*HL5g*w&WD%(~@R2x}jDf_%pD~!{ zmDxB4;H9rRs{%D&;cfWqaMfqzDi#d++MIa=G6=i}4j2sOz))pk-BlyI#Xa6&# zGw^B!h6ujcZQSvD<(F3Y$`l8N{2ID<5}%+g^rb&)+eN~uEBG^?&Q%+Hp@`q-TA00l z{krRJ`a0rKZ!yH3WZLj)FvJUe!4X*eneU>kfkC01wnR8j@eY4^X zJ+s1ZHC)n9K4Q1&1O~f(Z(+9kJ?Re9ndU!)Tg%<%c^bZH{%hf#C2W?ogC{g#^RNbT zUmpiCw!|b1H}Bw28nN+Dc;4-?fuBv!zeHa@Tx}rrt&7s~q2(DV5XKXKulK2cThw|K zeUQguF#=ig2?`P_7sheQg{SR{GM=X_2wQ2!kH1%?j&&Mc8 zXd(B$9!}w1mK;RYV@>a9Ap1fYoA&(()yJqHjVOIavzbF}<| z)@k`#{H~PD*&w~C^}KsJ#{aSASKb^2u?%JJ_37pVHS*zdSN>hEgqL+Y8xgivU8@h6 zdf19F{WoC2Ey&cX*u%(4JN7iVVZ3Q>+CQ8a*9M)wr?O@a%DQ&tzuL|zeQEyw`|tUR zjSs*3U7fyn%5z3GW8sgVzB33;mmk>syq4mN>VewYvg*u|u0mOsLWVzDQ!Q|MJx$OY z7OkRxYQQSUH9SDFIYh*UX1)}~P@iZ!Joaba*@vkox4)BA9P@~^b$F-B>uZ~(9Kl*L zileM6!@pVwPhDhgqdk%X`@3t`u6Muq`7gR3|M(}}|NCG6tCd}8HyGCowIkNd*#P2{ z<9#~Wnf#{CK#x*3{8~RQlLjE};2{XVJov*0?D!=Pe8Hq&<(7&o3?oG|5|CfL9KUqQIo8Nd}b?sR9Q2vw&=*)8j(O4gZ|D2GX$C&|*-qLviaRuJH2zMD_oC%zZT`|1t_|@*gwp?QA|v#K zj8D}g79#2iPkq$aBX{>Z?vsEg-GbAb`m6fjoBp}_a%4hajJxm8tXrV|6x{+&CGtmc zI$a4G+P;r9$vTav@F8=uHUe%C(rFbBk_y%HGqXv2WG*eDFtBtV0#IN>WclnE3h5CSo5E@(9F zo=O0JpktbDNyr2DBc-utSqc)$&ylAK-LYMJyAulsy3_j)b^Dbb*K*ukzTbVebiKR! z=w2svkWONuPNI;}Aj~mX41(~7e2)Yy6$}g|kJIw$f&nO+r5`y@;6{Q){BWziX58Hge*ZgZ2;(N;AnR%!5NVL3rUcpZUp%Un^G3GPz z`UgLF&Eqzrc9M;UxT`$^IgVeh`Xz2_z>SGb@BpL*AH5Ipi~`nq*=W3V&~7;RdC?Po zuOOVFnY94=h(r2^c!%LD(wpEI^)nN~z6@UT=69H<&Bh<%o5xMr4a;wy_^)7R=fFfh z_xz_0(4R8Cut>nyJ6EpgzDO+|u~=X&R>ooadM5tr%vl^bEM>gc-}-8O#Un zgfWptO@vJ38WsW`Wg$^%A;Z*Bvl?+cfGUDubArS@jd>_YNa*niON@^kfvSOLq#yw; z<8fNi1yen{JC**u#^d4=?e5mTTU20DRS7#!I@fv1~wkgdtCsl7uvNHE!Z& z?8F#ed0;^m+4RhrGqx#*&;o2W4Ohw?H5N}SQ)7SiGYbc*3`)Le%Z0d^kWfdM$e_T& zgOUXE2;%0U9Ek7JQUs5G%8_?W)s?EDxGB%X!%q1IXKMow{?sSx5>J#Ruzhr%Y&LnL zBmrJbn>Ok2Kp(Zg?!z6+bF?evU{nV~f9xU7xD&3Nt%?f`tw|jG>MPDR^yPXFFT%gr z;lj`z|D9k%8+8dod!dddKll;OgCF6*Mk(R-*I&0Rk8;Ef9YM~?dDLlO5+^ufgD3dY zzJ_T6JF8)1iiLa9qy5l!f-iP(wRyoW?u2jD22X2}zt(T9_j%#h!nKjGq@R4mZgBzA zK7CMljRx6bk##BOfih5EstVIII|}FQrkw=I;q7P$==;yLGCsh@l)jHBlG=o?qyd(^&EG zhG?E^ zKW#D3s4bGPX!k=z8QNyrr``Sfr~_yC$vSFqOtafI58Ai`KSNTJL7X4qqu|9q@bb0e zZCy_?RFF7%@J{m>X6Q~>=))#%_z?f3i$8ww#WJhj>0|jomika9NQg$^;M9Zz`gq}l6m!mM zQ=bn)Ajf?)eF=SpI|=0Ae%>xOic*X0=g|Ju-mhP~(tZBff7g2c4duA<<9UzZTw8?{ zJbb9Ss6ODh6n{{VI4otATGt>}@u~Py{H?sH+##wrD-|Th@mApxMwGQ4>IzU_@2$NC zKIQ;dDM)aNy7o;Da`J~hEaqcgc&8SI0-5(w#3OP*pUesAkU{@P-@54jR&|H3`rqFuw6Yaohe1|MX+PG3FrSF%BL&bWn#Q9P(JZSK}!CCkA-p1;6n*q|#~e0Yf;( za-?khh|ei&C`F*pz?w!K1i_wd<;js8Pr1^+*5Y?-Y>?2}PevI0A=ZNc57mFK>0cRRL4T;nvD|+`@7To zR2US5@^$;sgYNUCo82{?Bq4PWDM)C;8)7xM??FLA`Hg}^1c~C)b|^@Y9sU>)l`%hM zRh1FRa-tAXLPV;wJmrJHK)JX)WVk|iE#nR%yfA)eug`ZtoeGV$HkQCsyfGrvRkR7P zH-rPnL%qy9ZJGx+hIok^yGOB_|1OW>L15Ohhvl~xY#X-GcrA{te1Bf_49mlLqE7Vf zVyozy7Y_?`eGT18Ha|05^XB)N5jJB&6YIr{abJPW&Vh-1?)yvX5DE)y@IH{jC0A=) zkz(DwRzZSRqKPpJgR~ecNN588=2yO^Maok?nsblt&t#I1Fvfx=y({t!U(~Yz$t0SE z2~eR(L7K=p>a=|<7{{IRwLz}fkf#(Rgj0AJ`&e+OD>fK2M2F~BRN=0Eg!GJDIO{zl zIR3mVQ~?!=oKU{l^R}acFAR!4GWZ7G>R6*>)c=gfps_L+C!|?Dj@Ue&RiMQ2u(i`HP=0Aj+<{r{N z4c|2XX?SP#pEdnS_}KWOopB6nJDxx*c=Jq(iyv^C%@^|6rVMTH`8C50l3r2*eIb2N ztpOqzFea-{Q@Jp1SJ{jeBvKx+NqjZ`Va85pNaa7j*e=GtC`SqsTF>O;GLEy)Re!9* zSwTXZ z;9uTyf&{kLT?It_KtbZYcULM%Jd~WfQb9r(C+@^tAw=H>+iS|6dN8aHgyB!WjtOl13Ddv)Yn>N4i1{bi)-bn89i$DFl0<#M zDvr9(0_NhyOWj}p_5Upei63{r{N=B@%U3R&#}pRxTRw#FH8QH#?7Ps{g-+_XMi{Z3 z{I539iGj}64BZK<{E(+AbJ}LwP|^eze+=!)^CHy;`r0MW&mStUns>7&K^qp`C@G+@ za7HJd9T1PyRVWWA1W?CBA77p-AC(`y%2QF@rfK6S;GiIJ@$=7gqVp}Wrt&jcK|-5o zQt;y1px57gt2?9*P*y26m@hRpSDrVfAOR0{p%kVQGam7gt=3++p4;mZ>d!a<$NN(3 zp{TF)hb}6!C(18%z;yMrkRy0P8=_2eiVo{Hk2DA63Xcm?khpc@norev`>S8+{_tP@ zffXd)dHZXscZYovjMsSj@=kqCdB-05laJN}uJzl__j%JB!l#~ZCyg7yJ*0CZICfH; z7cD>Q@%ClO@22wUF01|k6nPDQqi(#w57fHUhL?U(>zL7u)we~SU0aUL0&{oSkq=3^+0OzU%1|072LP28hzC~vq29d&8K|+JM2Ac(W`luplF8fLb3V;m@2-louQ$AQ+Ox^Ij$I3|Y=e9guk9XEGZ$DLF8ednI)9Kt6& zbiI_D%_9_V4jz!8D`Awc9ch#tFNgrheQ`|CZfh~pcm(gdD;x-PHOWJ8#J}ic;_gWs zM{F?>6u;9BTpyI3zWR^&F=9r;Py3P4o&!usEriO4y5wdnIP{EeXJ9Uw| zicR>W_`#F#)+S1Yr&N>LYCG{(hpg?h(RgcP-FWEpq9^6BigF5}sT&TjqFe>Ko<~Is zzV)Ch+4MK-L+?z8=T)9t#f_=;VyhB(g~uG2%;ys7s6$qeki2qV3r4pz-dyF2CuyJ( zuNIqVS5c7A0;0xudS~KnfC!vGo;2g)M6wp<`d%TN|z#(Y!FlR|?>y-$v<< zuMOm3Ipe+-4{uA6k9#VYMF*=9dl|o#gU5Vz#ki-g+LL$`H9Q^(OyRYVKvwAmGU_(t zZ$G{gzd|E*lxyC06nMHXC>Sje$b&G(C&pJ6VY~pNO>2(*MV=!6UO?)pMU$8XCl;tU zp#a_hhXD`pStuQ+>x4(+o`GNe%*6rtN}a;S!0T+hwsJ4^7#KEmDIboX<)O@wJw`Gy zaQfp5wZylKCETeK*eOGB5{?@jnFI~Pp)EA>j=`O$t!J&0L=+{m*#b>GNmnoWmx6}y zk$2i}eQmi?#t%H{@E#L7<1V|}AMb<*Ch>w}oNv;ty1Ww4%i#)N!l&5D{m>o%oo15{ zXr&%uaK|t2ac3S*f5*c-=d;hWfUJI>HUJ!T7CQ^|!AUU{7+f13yVhkh;YS>HE3|Dp{(zh*dVHV1I@A=O_p z?z7IqDH3dyv!)frm3G{Q*YG^g0Ab^V89SXJmH*K%Mc9)Z>d7a3CBx92R>S$SH*}i? zPMzTNh=aOngR5<+575D;VPrOy{%F3GaSuMVCMWE+ervtgIxPGzJkxCQiy7L1Un`BZ z!qWaJhdu?B_4tYn%Esj;@=8JCojO6{L!BUT`gC2fA)d1~NeE3C?~+5)GpFt1_V_>lHT zkk6`Ii#BlAe5T4Ma?@v@o$vnhfBq{gNPP0if9tO4G%#k|;koA$Y9m~G!@djgz=bgk zw0jZTUMqeo{VK~gpy+OW>K*?)#HEd6#}7OH#Gnn+o{{-buJQ-0dS~6;xm2Cmr_&RT z9Y5*5=A;yQ_lr-AnfkYags;1B1M256FkbniOcvFiIi2tJ?VH{8t5>?qmo7*N_l{@~ zkREeZKeTCR1MeQ~)9hFKM?vE3>u(MeB%m7JmV712RCal`q3i~{qsitQIg;U&}E&V!SzBH zKl^QWTYcaY?LoaKrHDWJ{vUR~^U;UhSKg8$h`y@k1PK&0;01>KC6BnL`4iTfz_otc z`95!YLwNGI6U~s$ok-(6G`(o~SugJ|OMW+%PxUoE!MI^2?Qt~k(K}-SX=Hp&zhoHo zi}a@@KSoYbzeRt^pKR9DxT@%=l-(EuIXwbpGs|@9M6-w8j#q?5#-w*3jCB!g_sycG z#$(c~`5WtgS^L9gTmuJmn|9fi5Awr%_0!6aL`G#4xyMj=;**6CsKOc!H1N0Czu(^lTn?cn}7mT(hyHfr5A7xxX$npiN>8a?u8+WQt)2 zkq>=Gsd(rFiP{|Sz$3<^xcE>Rz57^$y9VNix=Zq@^06Se{ZDsy+8XbU@7dR#S=7S& zg7TugKG5KQ^}*fl#L$t&*QI@VkBuV$Y{ed%zOJ9D*ZM7&yTQftxJuzQ!}0@(mcqF}P~16eJjbbu^fiRBv9tD*KKXu2|h%u&`OxU zP|29dv7peQANSsyR*-O~LmtLs&stT7c9(|{ua%QnEX^2+e-tG6BFZwL1>@@X=!1|! z;Rl2_`-GQBD|++~X){@KA2}^H9Fn;K4uPNgv!UQ`h%`0geY43~}2B|27;q^#q#P zbf(_riC-pC*#7cPUr|yAp(j_O(Wam!^d?Oc(f{CwAiXCnY-SOWkcId~ZzEE#4xbuY8xYHhJKU}pz9X@~lysj0z<#*iFM-1%{cntp3 zZ+H^_w*DJvjvsI^-^I{gf;%Xn7yOu%L)>W_z&s1{tkRh`FQF^^nHC?oJiyEvZyLUN z{gd9j@#ck}md-T)dGT)+ekC2%PqS&5@xtdh0teIzXAW;4;^3~u+}5lEX%l!OpM}yZAG`TW^S(?dx5L`dF8lTj;88=D~z;H^} zJDv3 zd-J-eqQ*`g8rmzdleJ1ScHoC_v${+A6rUZTe#Z(D`XEgCCN21M;>7Xpy?5W~KKN!` zvGJPbN{>_)Ui)Nj3Kq2;_^;A7Ml0=0re=N!58>9 z1RKMvd?hwqEE&Gq0tl%yZ5hGKJn)A7jm&3QE2eEB!~EzLoxkhxbR?yyrthlcRYNCq|q+eWp8pLf4K+A)fspp?4LlY6kC_ z)79gMijTBP-@=ulH?*FCg2eT!m$mkBPfHf`PNaYhyP%QrRpWqo#g!g>aPr!@*Smv< zSDzq3T_KMC`@9VmB&s$U?>Lo-3KG=&UD^Xu=?Yn$e8ZXyWy5KoJRbK2!D-yphQvG3 znl&M=+Nk`)3uOd8lYjChem+#5Z|Y+k6eRAb@7t|(-v9c$-4B28N8QICe%PHmtCKlY z=d2*1GD-PX9^s8kV`LBgmDCCo_!XYp=$JRXAw2oniDpRWPNZ=jnqIX0te5wfCBK`> zr@P@A55rH|qsJ!NrT*#X=mXsk(zo^Dfsu6L-kkW*VwYfi&5&fwgHozP0gRI)P^Lx3 zqx1GSsPuCHL&n!OKcrD>-L-BQ8Uw?6g~u?hspmS4eCPqaB1l=Fe<2T*PuBZQFxe9w zyVUtU1xYf5Cxax5npT3)padco3^PfD046J?#IWC)z%Psn4(t$H3`!Olz{U%qqz~cP zY)BKvK(tSS{r-b>VnY^|eEorhda@-j4>X({fr5m_*3!&VD1z-n33p4<(nCQ4+7Y<- z2yU+e^=(^sZ1>*o^n$b?7Z2#D>U|a(Z$4a-f`kUGM><79aZ!+Xtb$M`b&9`D64erY<|Z1gc3~b zauqhkl{c_701{?{2tz%HHo7%^RIxen;im2{yDJ3=lpMI%j1xl;=B#+oH7I-0Cp=d%{6F#SHOH z0bAw0(Riy6ZIQ?Gq9^4z%*Hf&ruh%!58WG$H^lR0aevwKJFQ-PS@{2Dp>qr#|BQG%oZ-S?|UN3cXe z0&Q9P_1ZXQajL!yMiCI<&|m&29s(jKNHCe^SjwjwlO*(bu>tvq3A~Xb_zAxkzC;7> zh=H3^kYK#a;6rZLH?%t*#vFJX0hfhd{1}@EM?PZH!DB58F_P6R94iUZM5Z$?@#>Hk zTTzh6cnuy5ID#J=_-we7_N20P#8*G-a=^S76ueGZ5ec~hgFKEu#<1c&i-TWV~^pn&>!oipNp19OyOzLLR zPdfA1;7B`X{tRtxdM)nIj~@ni{N_n>qp(SLqw%*ZUg&}s(@e|9z{g%I-ZXq0@lSdi zi91i6Y3WS!p9l9=z_xT$9j?tV#sSWj0VVuHxJ>LZ=IR6D4sRyG1!g^)lrrxUw_RSyqs)#H?XhLqou*1=I`Aw6c0#CblZ zxUkW*Qx5di80v)UD|Jxr^x^pB0nT+v>$udnqxz5zg>UAa>;YhCZ@?_*R0Hf5FQrCZ z|Hps)$L`Pn{4ctn{`7CV>pDGRNgrvtKA7*d&$6g?Mj9ynvo1}42OUMPD4fE2;}IRe zwr1!ah9w;OFu3Da`Kf&k=%60>!&uo|x#H_JSZ5GfTw#4k$_i)Bo|VGFNhvFE0tQ!v zR28d{P;<5k3KFbW&^O#)x+}T%i|z*3>)gDi^p>KZU z{qA4?@CV&T-}_#7N+(_K(_EYSmbw8N_)@&7@}~^rM|jGV_ts4FZ(+9bectqj@Z@PH znjxJ#k;ZvwdeQQ;Ufy4p{BAa%mKoHyR4+5`cW9N!rpT16kJ;|~AjU2p;#h%GZ=-Qm z@AQYP_pt}d8VBPl?~H#KXl6X6?Xw0BBKq5mvA}?jF^qA;^>Gjtv@DTnT(kj+oHw^HFv>Aw*?S!@5&64Y)C5%9LN1cQ0g&K@GS1 zr(!xv6G-eBH%>V~#e=Xz<+nnDG>z~>h%aHKHm`0<5alj2CRMH1(^U1ih(m*&316Ki!Nf3=KY@-6 zW#RG=uBsmj5))kh*lc-0wD>@{664i%9p7O+F$~ba_9pLX$FwE$K(;%T-VLtcOPt^+ z8=PajE5la0f@h`g`mT+}TOaerAf6XJlli~8yob4(m)?2dhv~g+?&r;~Y4ze|D~IjQ z?<78}2Ufp|pcVy*x@rssiR(HJk*}qQ=Ux&Z_ubsxtNwP+Vs}Cc5^ul#uI>Rou8rgp zBHg(QHp4dci?NxnGX$YAm_C`@G7{)PfKvjDIUGG(CrI3tTVHb^YoP=v3Xp@WC?PnI zGnPXS_&s*pF1+BbUcE+je4Xq*L;wIl07*naRO#nQwiXbaBg1gw1tFt$kU`mTrvCt+ z2dJ9dvrw^8K?43Uej``%c;VX$i6zfjzUz}=e9oy)2-V1hg|~9U_#EMv#dOBJHoQmk z%9@b_lpk^ucH~^_k?G4AcgtsF4CG@Lu~}F|zTzF3axeD_3a4eMzPzXdq(OOMV^*YN zpYhMIt+sI!A85DD9yc^4ENLe^u*`2(OsF)m;y!G?-l@7-_tCSVkThGGgD>;}lV=XoU8fQ}O)H!I)ycl=F@TVSOXh*60w3*j*w=?aA zevvCSu3fw4_u4G14JYt`gLuTpq+W)9_MGzv9JFI_kUnBGTCf}YJkz(9C-Ws-vNybDy@!)z>vYcApv-z?t^HJ=*WxE#${^1; z%u?>yxg*~i`8#4kDng$x(eC;c_@66`vl9zKgy{$Z`|mv>5Fnsk&vW_FzEDa-H&UI#~aF=e!<+x ztEkWuu0eNvFqdRGc7j2R?JkgUW?8 zc{oAh-FLn=R*;bF@PzeF@j``f!ISH#ZJH;$767@`O@~w(gYZOwR;>wY;=icy1HG9Py zHnRZ9nt|6t$OUT{C<;)A3V@Xoof>ny`{L3?og#5Xr$65ke^4M%-UU}Ypzf7iOrM3K z*O6no!ckXjaB{`|gNME6;20~`DM*tX2~VG%7dGTWRd$VnA5IDUdWY3^JGA0z&7XA^ zK19Knx$r{v9rVE_{D9r&o7Nj@UMm@1w9*$>KU?|V-Je9r+>sN{_ec?h>uVnPqn9h) zB`HX7GUz^?DEciaIQ{V-|FHYscfRfQ4)zqNPp-Rt`BFwH)8Z8r!mqMZu5mk1KlndO zGjDoB_#yqzlJ>RI8q&EI?3W?zMa$26Jb&5pyB)H)8CIz9ErmR~e( zA%k)nv-JurBbO2}^9k_KXZxXNH{OyV$tV7i7k2%@AN;}7Pd@piG#s@cNGFUTK{j|% zkYJHSPEQQEkBUucXeONdxzHR0o`g%wur?GBXfg737~u>?z(RxvCJAgD>lFowVo+^1 zvj}uh$8WGO4udgH8ybZJn%Gcq0`j9U_h_UeRnr1)4d@S4NDT4}GHfa=D7p^)?G8&p z;?(Ya-SNE|c%|q8Q@Cd1j~5w$QSvG zX~W_-$!_C}!_7E3;oC}6DUkOjtp=n9{9=u1P#BOk>95Lx2j$HKsDvNNP4_*jT*>2J z@(S-&zT7=nf)0X3s+wYgc3p7p|8T)fW+*gM}BSLm7P?HAZDtJp~)p#%5RYom!uij_j z0DNTffq{=0WQOp0Rmaf2uIFgRN`ew#7Ghc0MLKMVco1Cj^QNc!=^9ly=cuwLBoZ#}r36h5T6b+_-& zlICZX?zD8K`9CWjOiG{nTM80SJuc7&7$0b3X{VvDjZeIo)<1sp*fWY-(@{dpn4IZw z+Z3{~{P*&w`km@GIkBp)we=Te$`I=Dde2z*CQq2jMBR1IS|5flN=h6(rbD)yGN5@oY}!Gzw%t zj#cH%*_gz|LGpb0mt9^5-ajHk8>ogb(~t{=ECd zJpkqQAL+o(-mIk{K~CT;;LWnCW5(_DNRu=gllm7sK|{Fs&tf}gq$Ob0a7ST14n>ky zK?1&!?up~ax_3~J_@GXZI41>(r&5Ta9B41_gw0v!Qy=`9p>olVSnmWc>-&6p>5UEf zv%LOgR*;~LV5ncivPfCNyT~`dQb)6ab6lseFn3{}gUuK=ec(6OE)k!-kH|>ylRtRK z`oPbB{`2lH{^I}We)ac%FP`Q^JTufX6l>DpML~k}kgK2r{HD#=Tw0K|!Xz)l`ZjbY z67Ym2oU|~c6@wr1W(;&7Z}O2KAA)$yV=Y?skn2YGs6Rfc4?oVm{)Utmj@A0Q6-DS9 zpqX`X+Bx-y`56ilGNk7*<8%F`ZAXOv3dV$D|;E zlEgk;x8rLqgqd{;rDVR9O=8Ng))1T?4O<4wknn?e(1`S<@QACqJ{se^ziq zI-ga#+m+6XmY?94TKCl3mUK}RPX}FcbN|~*rOnU0BEgPh3}Q-^da3BenQu59ADHa5>k-ZtH}a_ z=v@t5SMS~IZZ7M{T_y5B={zDWZD3e&Kn2PKB7zZV@nFnU7z=$eZJ0f#`~-d&T*qe@ z?qQf2(0kSZzY>DHQ26{|M3o0|2KxHK6kqsM^pk}VjD#HoICzhe1e&r7;tzRN=0+Nl zOu8`ObET6FmP!@84j%s$TSo4c&XvH>Vp;{=@|Om*tdl-akk~J+QW^;r9KoIiZM4`C zP`PsBfs`AVMDIdC798n;%YvbjV?sq)GJ!)Q_L!c7nqX4SY+T(@Lt{gXBhr|ZFbT9W z1mz34s$=G{?9ydmi&Piog{HG?ZZ&H5iLCy-d9-fya{CV?h zTD^E#`2Vc(If>66!_=?S)zfDpKQI>Xu#m{zoQ!Wg^xFV3;bxrV%a9YN&U9b-%G*+U zINIIUq6ylsyQP%J0)qygl24GQ{58TOZ5|)&&Ye3e0kXarzNfM4){R>lb2QdzfOyD) z#m(#f>fnhM4Y@Lm1w>LsKC&`_(qOn?Ocy~SiG>P5m^Qdce?kn5L;P0n3Q<6Xl6&%o z3p`W$p-9j@mRNz0J?3wvOe&z{A&l`D*)j?eC?v9A>jh6CMV4c%LJmEmqdmE51KAKW z#%-r*ZPOiw7u2iYSvUY6y}+vS;T`^CQ(k^lcJP-c@&)fG8DNmDC?^&fk*|&(lYFJg zQRHV}+VTN+`vmtWJQqJ-o-nWda`PhWxE zyL-;9kNRJAoqA1MqaEbQq8qqU z-(y4fY-y~W!ztp`+L78&+GU2d*8ds3Z;S^u?h)6#l?2M#3hPU3+N)GdJz5x# zTY_*|^zWnWvQYLs88RYdtrz861#d3&JD`sU=9rX@!FT2I70We@Q}CLTC*Ug|QDOLMkF@>a zlH801g0PHO3KH5-?G+?EW+;@o2^+zjB(YBqo64lkyn?cWX3`U4yIH@xdgZd_IyW@e zxg&*Cozy2;Of575W_Eqr;+|>jO#CI9=Sjl_; z1SfXtUTaT+YvZi|A^UiXD zc+HiC;M}dXY>>f!lq1;G=hO)55;$v3STa9p_Gz1tXZ}O}iwE;2?Rq;wL1I`gX%FB> z=E{07U$>snhCK5Z+5(0-yxUP8@?NG>QyGvS2 z_f;+^NGQMlSWn6FAqOW$9992vPA5okjZdx>t+LXXnRN$u8~qo#MD&G}cm(*snh1giek?If9cU_G-^&s32jkDVfS2bzcmp@9G;m7Mvrz zYIe>0YX7ACfS~_{#d~C{)I=K}qR{_Q-edzM$>Jx9W+=~qlPfmphh0wyS1kPZ^e0GA z0Z3&*cu|nxs47@`^l4 z;k8}6EBr;408C4r*u8GC>F$;b$0E7zyWU+5QN8`#(f)OZ6K|+cJ-aM}p9tcn6 z3q$*S+n)t@{3BQpMjRF!5%^db4|DRxV1!``fz4^-7Y+-t8hFSk10f0$i}Kv9@z8}R zw}us;AaTzM5=mf-Vt_* z=Q>4#($XDNy>bLJAxw}?`;fOhAUx2ELqb>5 zirq(31mg6M9F!5q^X-)qLJ4u&>}P?T0b7!QHTbDmGAJNWK0I={fl%cu)FAaE{tOMx zYLXErdj*LqV_=}UgnI6WmbSd=9&}bE*8&EcEE4QcX1JqGtUFSa@JSM$VAX_UMKc(lQCDa$Rqw|QzBFGeU&R9o&i_5$9)AU{`dw9q4TQ@d`efXJDc_`@r)V0V zCIPP0*Rm;>$z@}t&CgnNG+?V3CV)v+{Mj_%p3u zY*%_OE8fX`W^7mgsVCoUb(@sB5^Ao12) zU-MU7C`d4IW(;s&EV+e6M}#_Ll3jA2IC;E#=bg7DL>{(0bp6`(?&9Ycx;wY-82z%o zV83&VMZ)ru7qU@g z6Y%H3uQilsTc&}-jv?K^@XixBVA^-wgvTU|bn_Uq+92 zBso)*&E{*SM79AabjMB-LwEe2mHn*JpO(%v|Lw~E?CFjBZ0a`cfObdwOP>!e>U$n& zo*n<%IYb`YlwlBA*=24D-Mo=E#s@OpXWV0S#&X8+c0;oIH`1V7l2%&|tNI}?ls!j= z%)~(Dw=a0e<)IkiiSsDdkgr-d)z|*&^HGrSBCq@pY8@*I5}YQnOJf1Y{v)S>h!4<^ zXZQf>_|fCtNqr^HUH6=f_4#L?TlqU5J3W;=L`ksLNBUM&F)3`Gvn0w|mR=ZpG(Wnl zFV6XTk5jjxkGTnB6Pv-Tg>n4{Yl(|GwU>y?%aohOyMA0`ZSkSjYH!}S?&mgNm*2l9 z{Nr_HXk&ci3TSYmD3Nl8KRm7jrc=ntKyM}~NSL(&kPW!22{y!G$Rz)=lU8hk12?o= zc;MzSN@=VhLB8|{8GIbZ>9)RNL*@Fo|HA#aHuS9^p(FY~{`jNL3KE)ga%wUgyj~+0 z0kxrvf=VyLYaV%z^>@n@sz=OuUApFkGFN3k5A9nAs|=f#`7u%!kx!7P+OkO50Yl%x zgCBDh=9ef(96fqW_HnNbgU6fRVu`uZ*NfnRIyT9T})e*7* zIsC}q{Ui=}EgJ=iN7`Syd;3OrLkbdCE?w|RIj2q>)72W^>3;ZwA9UaNXaCIo9B5K6 zcwdn}c-5C*{Bh?AABcy+|5=)O(;LDM>3^2Aua(x2&b45_3}G)?e%9mp%a-5u_%Sh@ ze#GNdtw*FS!n<}n7%NC1D=IAE#MeU~&bk4&K`^eOB*B^n*`OB#NF{F6WVlc(p; zpYMJnEys%&FZ#=Sgl9|vvDmW5f+(jxkRcv2z@T?PT6|gP1Rj5w*BbmWqRGZuk@Cyn z2R<^D#c_mvh-R?ngaGjGm*7%&eX#%|TnuPvtT2FSu%RIL=s`hZkL9^y04E$gkY?gt z4ag592y$neVtAolhgx+)#%&Fb_w;BP zxO+N5L4v%Q(aJNnc_zPco@X170$&^w?-k8MwKE&vu}%IlVD}SuY=6t9iOn}TlB-p`AkVc8BdvQfH*@rLeUIDb zew?w1z7hH4x=wIFL4vUWnPsd%Ai++6bk&@;bU>#ZoI3SduOK0X2f?-q5)wc>#)1O@ z^T5IVy3g~q?)`7PZz0mhsbBh{`^W$9AG&K-t{U&M7P0P1LF0k0*m$I|r&W+ZM&p_d z6g)MEX#CTHj%?by#}wO?Y>lc4l5vRN>RqA40f8R>O3(mmYQI5*2`2F2YsMDbJS8L6 zI1Vh~_(cvx*kvs5iRh`R{2Y)Rf}o8iGK*P^VP1?C9>!S=c)*u*Cy@BcYaI@_rciHG zUY^MG{Dj{uB;tpn5R2!y+s)I!ryfuaUO?0ld&pJDS(F_UrOY3|o4SCVrzJCf*fFV7 zvGFGyHzqdkZTx~UL|-3yZ(-E#Nv5x}J~mbDij9P}o>EuGNBZ#0x7%ud-2Lsvhw4*|aYV^_|TlWI^n#cTrw> zfFoYT9gkD^&ugZLSF@uLT^9LfkFlkY^YD9|Fl`>Gv&KVkJQ;0}*BDBF6Mk2Cjg#Sd z!p1oJH!qxRu1r?p+;R`qoxb3iQxqeLC+270C34I^_0T6sXuZpuk*cc)4|9UVYdS&V zm`-faDQl{`%Y=)MY~($X48z#LxN`Q)+3q!cm3>AE$IB0vyHEeyry5&sSl)h$tRi@p zQ%4FCBFCeb-=Z8?zhiCCU(9Qf{GgP_IoX11dpSLr z(=C`s8AkFuYkYi&bnE7|?&=p8bZXZv%}WHsf;gXO%g`RZnXUYhkF-z5S@TFRu0K7m z90|Wc`PY0Wp=F!XeH95VWyA={4`yfwZfH-fhn3Wtzv7735CNj>_~Q$E`klL)1Flk# z-~@@U=>&-t3KGRPPUB-jNZGkOw3ZF6^k1xP-qU6{CsUwEqX6x1)4ueoveA!X4HyYg z&&0s*;`v6BOLM3h3 zHa*?WNZ*c)S-5D!eAmmV8Mk$M1}8{dyLw4ndZPaLbobGBztjETfBU2E>+gMCs6>-^ z-_|qmS9;`GywZa^58uo2;?)y)kBg?8Cy}1Wjw%)6nFIw zJmU|B{*JyMg+pPtoY?k(z~X+OKGY{IODU0c5sy_$dn^x@0))pl@auu(>K_^R_2|!e zBVmO*fAp#RegFI4f68?P*REaDT~IfyJxn4*zyQoC5+#I|fHFlj(at1v{H zsg7$5`so=cyG*%(N5BRjLOz-xe5J+4GXgo8fM zQP^H7JS=#O6^v*{utY)Pju?3#0T69l{h@5ZH5&&da39^Z*qz*`W9Ig0;a2G|@vwq~ z;@s336uP8Ar${Ij6eLvObq5~z>5*r66o$iSa+v&8n2GLlKG_0(WrzoI;jIB(FO9)v zAJXpMk^5Ue!0qmTm4baz_;{11C;ut~DvlxKPkB&r$(Lp^zQYi~k7L6rYfe_6?5IKr z1Q8kwVO4OaGfo6@Y(Uu>uwYW(LbZI#U$(?8Po4-Xfr|-}(h-5&-3}xTg8ZN@4IJ_b zlgC>(q|l(ogOUVV?PwfTwyG`}pEFvEf7CO7?Wo3lNCGm)hjE-3acCDPN8A=Jjt4`4 zbVEbwMm(e5<8CJu@RhnohkyW0hmosF@VBNu#5%h)PO?Sa1&{I}H$f>kY)trtou~EZ z9az)X$H5&~+7>+HfwsKkADF`7#>DHIhBzBB8;!S-v}TF(yy!`}PNQ+7bPeMT-P6*0 z<^PHUFB1nQw?8BW`pgm#S&+JR{hAdd*bwE*Ehgpk(2S#&Nz^@~AaO`vpP(S|#v5;G zL-??iGwTa4_xA{a`p*dx+{A*cCzXO1SVcGE4u*U)&LZqC%jU!|k73RQIU9fF!zMe5 z5{#)9sD*!%iIE9TLJR9LOeZ;La(>}1Ly;t1X z>V@vUuTH-3CoK$qd2lCxyl=#SYa=G{HkKM#NEQS@56X)*mk_HN6%KJIW3)O{#%u9@XV7Au-SB`-cu&{(eKyBbSc8o#$wuX z12*o2&udQ+uVzOhn)_jL_BdMzIS;?b$~y}5nAPBMuC1hNeqiKlhq5DF4|wPq(FMjw5lAW>t5 z6(ls5;duYAXnt}|UxA;|vGvF-pZxlh?#k7xUIS(0k<%wgj`dj5X4%aj?eJleLM$JN zK2Gn=2@+P2KrYl+<}xy5jUD?qNlfV;(v=&>PD_$X3Z|`({iS0iK+QaT+nW2jy#6p1Q5Fy)0}4m_w6WkYG}J$ zh}Wkb8@Rw4&m2FBSqu7#;}6bES$~3r6eKv&u;zJHHph-1Ed_}WzR~^8M<1zN&(?aV z%F17YDr1b&;1yBgeH~4Wg2a;6x|z?qFQYscyy|M%zg^FqgZwQ5U0GfmMLMYrD5Lb< zgfkC0qSG6XsBWSlfpP@(3XVlVLKRy7W2FV^Ta6LOY;{uJU;9TW5UZ1PQLoVLwKgyoLbn`wt$FlEMk`i07pD1!%|gFHQ%Vdj$z!m#$jJnz#2D zw65)|LbZN=L#M=CzxIVTxNiIO1b^(fhJpm^@n_$7vpc41PdFK8kNOY#M-(y4GdShE z)*3cE0jC4qpNbdID1YZ&Z)+(?m^a${K|ungE#`rg8|y5ETjP@Uih%2}Iw{`a6XljK zuuYe1fcCYNN1+lQ?&K)qwjsM`=jswVfW5E@2JmX>>Dfb zRQ@WTDLd@eAKGfHEPvcFMQdE!Z_k_F5T1PPL^GswC(<|%O)px0*30|Lmf!XGF)>{I z%8LH0X^ZgBk4J`aY;C{y{b9+Pb#knf4%K(_K@?+0jj6~q>f3s`5)A3Xf(-?U#XYQp zpdi6V@3j_8-^RnZ#Q21QM4jkdS8C8>SdNtK5B=3WXAO@&nNFHDP5tVX@lYwyU-$VV z&)~=GI(zo)QwDzs;9-GWy! zW%Db)L~tlH;X%bvI2A+>K2*Xi1XtzhD=w80IP#%NiV(-fkIPy@g74g7(}Vo`AyqIU zbo6Q23-{Oz^EnR5TcAq_Fii@AwZw&15L)v`p1Z{$@J{iVbMD z-_z9_)blik!r!MQ+J{A`2Cngy8&bTGAOoS$ zmXj`U!(-DWyx>My^cTNsKYPU6(eZ-t&Uxz_sNShv=BDvhUc;$$D6!+;+VCb1{w{ar zlQ^`=EUvaT{%QYa_KFg0v5()w&#}*JZySv_8}|93o)tYZKiq0pN&}z^_uXuTx*e6bwhYd4jL2ZbA?;M+PI1qu2Go+wHHQ%}iu<{fk>4W7zNz4wXP@}0b`$4mC!@`$zotq2&6rtfp9Z(t^fyC0ag%=N3vXI? zn?~Sc2d;(Lj`wNlgpQ4-ImA132k$ihgm2WI7jFyiVL;;mJV<+j4(d4a1#$`xZG(6# zH(TFQ4<`~^9OHSAuH!m)VGLNjUZ(K{P_e2Db_v-jp-k|f7{ zXY_sF$Mj71%wT3PH!uK5>hX!9q$PDw$LgQu(<8J?KE0*(2XWtO1%L!WiXcJEefE8y zv)|9x;v4B1m06itT~*yZ7_W--2zPUHbMwpG+`>cByq|d+n(bclF!)SyiXqz9P!L063b)=extjhH>+>x2!1vb?@0#b zMY>^5)EtMwAo^J3#ms@wnXA?_17kPcKw^Tq?#LGxf0;H~DcAnOw`#wdXZtew1PST0 zIYA83ty38O^T z7uQ;CErr_=V#+t35#xkXxAg%so^#ROB3~WV3vn2uVth}VqB_~bD7i*Fq&*8h;|lBS z8mlnwp*i*hu2%KmUdM6K#{0K|e*`i!lbLZy(SambnG|xT+yj+&^=_ z)+PUxD-i8-%9l2nXJ8|*weW-k3yoR3+|eEgFCjv^@rZWDms4j?+d$&5`Z4z9tWiF*|ll+FG^$T6<9k7*#!g z{(?`C*el*;Y-$Z8l(Ffge7M0tqMj5BJyjO&G%E4rP(Q2uILfP9SMz5dgt1R!odzYZ zOX(W|@J5;qB*ahFlEy=7-Km`bGrWLFJJevrm{|rAItfmvb6ouLa~nzA(8;6+_wVVx z^Wu3KH~padSAY12-ODe(Y@;Q{c?>0t*?6jqsZadWF+MKxdY&DqpK*OBe5?Fb^BcpD z>E9|kSH(M~bJg@u8~it|Jd61In^xXM{FoP?^+(IE^hsno&y5-zZE)a$RkEALN5)^~ zI8Ke=Bqns+$ZC<%q90@~)!^mq$%A0Au2z4@Vp@;H4-G=qSTcC?c@2@T7#CQn62h%0XFkV!h{SNO?o_ zBk|7$5~@WCg<%8+5}Y6r0|^Sr2@=;OV8=k>ArqA*u-%H>qsiwm1`@jtbf}nK~jz~kl;IdF_5SUDP@N_RUs6V(ys5qYBN=!JiB2k zEfvgtU_j@q4@mndUwm*v_>(-7n8u-dCl(xd1p+^zl}!q<(+P<~nT>4BbdJEYLxK@T z5eSkP3vkR9-&*IGJmNz~Q7X*BX>_3UUH?N=`@H5p(9o;D9uFOnTPv#t!h)HG2;Jo1 zMU(C@Jn-9r^ewej3>s_=D`g_5KU~vy&-jjXrH6Et&B6_6dcMF9m3O}sl1F7FdqhGr zmcG2{%YqM_SjpegbyJ&GcccivD~o(An)qY~LYX%Mf=~3Kh^MX7@pp5HmvvR&L6Psl zLa^q)XoqpsPr0JaZA{^D@F!Qo#=g@iFn;3G|2!ClHqiy0b%8t3>-(vv^`X|rZZzFm zOq&z(r05yf&7#sQOXnDF{JbciZ{xq^z;6NvX7@jhx%y)aWIVKigx;>=6C2#$*E}#~ zAfd4uJe;(2L~m9cKY3b5P@a`B2FbMKhGdbw8&X$%Q<%o#jQ=HVWAzSqki<8da>5nzko!YsNhdx*a{;w=kG{zD;( zJV@D!8fYt8n1}bvNcFf3Q81K17>|qz4g_W#^_ILH@a@mi9H1Q`8&FrswDamAz(5zFoSs)QCZ!OJQB=Gh-A{=DK8rWnEDA;z zakY@U;|;YsC9jTU4}XlcFMD`G7*4^y>ghN0w{0KA6Go|tgJ(~(gZ|WO{ETtXO`A;_ zGVT#hKOm0uz~iG}IC0{H`@wasWoToqAz1K`eluL?CGU)<&_tgjEEjpD9MBqi2@ekL zH{!@+88;7Zvw5-%EiFv)53fS!*iV|k#}8cMx5}TFPw3cazGJ-O=ir?ep7@RWtKx0p zX?mr1=oNNq_c+=&{eg>l5x*VJTO5zezh0c$Xz}|=WaG&nH)YF<)o?Lx*7%`;M*q^O zNTB74gSWX7Hul%>--@xPd(MzF;q?J!Ddntg+z@)XLoA?e((Y_XEWN1>B$RHaHYRzY z=gf0wWu$#fr@!t)Y1Xel;HS3dlo)u7i(h~ByFNkUh)$j01)_iWhhKGHYTa>5F9AIe zuXk!afqsuocpSzMeD0#w9+L0WC0KXRGamE?5;;Ml)+8n0ldn=rpD3A1IMJu=)4GU_ z&K>&BGzJo`THPa)?U7;X!~1+v@Ul*j;JRwV3(CueA@$0fQz!cFwfxTubcEqN2Z`o! z|Cx1ygcFQ@qCa)}rMdKSM%q*SQ8Leogr(gBHxG84cKlq~>X&hdKERDGJ{5dZZ%*FT z3xA9|F&2@*1pc$*U>e)J<9*MG+AL|)vo{4Cy63vAkAFvHm8_9OqkbmXaH(*dAd zZ7@{66|&vG=EA0Bn!13WbRz1BH3M(D=0rmLZ06L929)2`pkFbjZwn4nRO;BD5R}~Z z;YS~JfBxrx-u>h!Kb67JKlqb17zcrcy7I}}%8wH&&@t0y>C2F0gCh48u*(rR!=)T) zX8~!SxzF<$KI^8$Cp|uT4PN}aEuHqgds=_1jX?$a>781Wp$|WM?wn3?IN>tzk{@lS zhUUJ$JkF@UGluAo7fb8&pAS9Ge5Di6u3ow57Y#9f;v`J{h?k5IeVN^N#BX&*@En$b z#0xLJ=o2LN$hc~!`n&gm&`~H!rJ}#pT9L9$8%U@Of`Y>QK;0x%vC0!XbBM04rnHM^}DW@^?mR_>_^7Bu+D>^;mmd3Xu zdb|3yS6=RZ`$s?M{_qd}pnFketrOMR`~wSkCUaiu7rzY$F7imi3B%2*?~2))-&OM) z!>8SD4RssGI;L~un4XT5-?Z{9;_A~`-s~}b6@vth zWwU`qUl62n3>F^h*a%VP$;t*2nk**<5=HCX2QqRP8%PK*Cr<3q1b67`UEPVD`@2*7 z4|it|AGcNXRVkn@-@Vmce29UB=+Z>_Q2FhaFyK#Y=$qj*1j?j(kbuAucDhmiW|`?! z{(3G~Y%T$vkb0(y3=yzA_aHHlC>-@m%Am#1v$&w};O%qhT8>0k5;M1`}Z^#1%muEkWehQ|iS#dpC zx}g(P`y>gd>YBi+1@{SP8+2d^eX?xl`*0{1@8}z7gkj*}e2lYT!AZTcxI}Vg=(13?}aCo`s#-d$SLiE^IBofP=$6MJ+_810%9 zS`e~a5WyGUghu=~p3o;B7rvR-Jue;6|Bz=~c%A3?38$=F^hK`8bA=b&1Ygp(esHy6 z%iM1?-7>g00`sKkY3pklx|gMM3^#sWCa-T{zU9C-oddJ`pXLMoF}yM+vLSVGY#`y0 zojDIf&ys&IkT`mx3?xqV1`^DV$Ojxn=|4{h;;Q_!=gxNTz4!g@h4U}SxB~e?Ck#oL zy!6$j?iYFkYxS(Mc9mIX>mf%2NUqB9Wy6UE_Lo3Zxcd5TNuFWCg zmIIr5Av|>seCjMRNL74a`|^;7yiSRnVq7w1K&BEMCBxJS5-iB*4_SK~>}Vgj^yB#9$@n?pPm2%z(3tkYGxbjUz|jVY!_jtV7q}QmkTzo> zVVod=F&MCHZg8|DxY7oLi#7-h={L$F(t#J6OMzboPlOYei|3S&Jh_O&5yv%lhBlsY9zXr9P5-#Oqs)&z{L}Z=cE63XbLDg`KUPkR^l9=LYp9FK zm;?WD@OakT*~U-RLkS?Old`QTRL;KQEw94^J^Rm$sCJ2N)v|=fe+(Xo!swHu=s7{+ zuuhQJCHY5z){$CA=k{B?#2EX{*Wc`(6D*&pxPI+=_v>H%s{7)LFTDZJ=Ky$1o43JP zyRbIUbRb{6=WTCM%v$gy6 z>A}PL6d`&xWhG@hdQ{;OjeGV;52Y8=9^RMCq|L+27rzvJ^_^+@T3henJ|Oy;7pqt(JIOt=*`%k^73E`>^OAijOy97CXPfQ?Ifp2zT^xrODPG{}=TwQk{)qW60v93ilQ#4h!E%K80C?HddJVdp5i&Axx#@X5wbv)Zz`uvqm4EU1r~1UkCF$WMzsd;11`^t1seOv7 zE9VIwjT?+zhmRcV&f7rZWVc8Cos+E@A15bBICCXqjaV`@hIQcy^$$_@haYZ=-ij%@ znI^b2^eH_ut;QTdauPJYKmDn}iZO-|_J!av?V>KF)iZK&+MFIWUe;KNG02T;SM>SR zk8B`uTPN=v)7#c>e)qNRw}0!0-5>mK|FXMq{({$w{*)^WkOOC~)GvO*@Npjhns5i| zC%nk>R{N{wH-=AnwwlgW@sH_THT}~D|4l2;BK~fBc_YX(sNiNkS066`1Jxij3E0*< z`X2l5@QOW6<~EJj`h!@u|GGva!K%!*78RM65d93X57H;^{ z^GHd!W30U^ImS9P?c4H#`)%##`-ODn4Ska_mieOAXN=8d;8`?No_5}2sH~hy77(+Q zw#G=e4*~4hyJw%JAf^Qp@0JBG1zmf%!7T~+ zSMJ^JzLJ1`P1dzGkPxn&io-zQfP^TYAi+eea1{6E4FZ+nY9jM2D?U&@`h@udfVmP6 zSmFrvk0Q#sAHl2E^&k$;eSG8X69kof9G-Hr-{(}}(B-?!55sq7rjoV^3X7rN_f5(4=-uoSi)Obs(h;)ro!}dN0A3w z^$cq!bqPe{ianD60R!*fx|zf|7#`K&Q3Ag(iw=ar64;?BNa1sjtH)B$^#Gl%YvTx? z9Uq)PwD(nJLbuDo`zPhx4wuY)SvtpXu~Vmfg2V}(B7y9ZMLtJS@)im50`tqh1N&?k@!k*K z>zZn;9wWgvmCSp8?T1B!q$kZ{6;5bD1QUGUq_6XS8Fox55Lnr2jH#{8lraLk=3 zjW9a&rXl32yom<~$_Es?92I;@{6;YMoa@Q5$t8tcz7);}456#R_8W5xuaUvw0kR2x zNS1aKLjB4m@p$=e&(UI$-&vi^oT$srFj^kT~#>o@*m+NZZp) z>m(1tDM#7}&xGR$8^&Ng(@&|pv0GP9)B+3NGA^{Vumk;lU<=dUCk^ne3(PpYg<0i3 z`0#T-FMaY{1UE1Js^RnU2_38A13oz82gmq1;hXJmB%g5_1m|z$P8f%R1-0T=SoevL}5&F>2pQG?Z|-NsRmNm&&yuEAU7<;%Fe^NfzO=Vhj7Q8B8Q=bWa`h1nIFT2SV*;O?YeyWHb|1C$vKtfQS zBec=W2@;32*}GGEB{7HBh3X=q;E;z-pFZ8a@%kIx+0$n%_wbU>M<0AB1BoxXD_5`C zm|>T6Q>=ZQ%qdw72pjrLJzF+X{jh#`s5QtP$?Lp*en%Vl7;U4Z24;`&kTben3?X*O z@Zx|BBsigUuMEmHQ7D|_{j0BFAhBDzU7dX)oHt}F{-sZUwLu`8{=K8hk=M`-@7HE6 zZ~ikkdJa|p1jzFe)_I9mN`v=aR->=CysR(NWAm*TRuVJ?3vU0G)dLLo?ez<4fQ}q zD!kZ*p7O5NShXIdcB)L=fsa3??_z;N4YPeeJ@c2&a4kILz~RHojLYpf&6}>g0C!aV z=8z2Tc|jqi#`mA)81*5a%&7VRud*wB>BOJ`ynpx0Uv@wK@sGQo{ncM}UtPSUHS8Vd z4IZfBWw-;%vp!G0-@0Jx5Xb&P475db<tp zS&Q6LKgN*T?Mq{ePZkk~*GuYO7)G3X;f3yqjCDCZg0&XIu}@T>fLyd&ZuJAt>(if% zS@&fya<%*HvroEfdg0@qUnsT#XDX1}R@M{%~Go&r>gO zDwXmHo19i-7S8-h1b7`9-#IxHS`%uzc~qT)hJH}%J?U)HAL(<<^~#v~vaGJrYGNQE z9xFZj2bACKPbhcmjTUyVIN1UNiBCWI(4W}gb3!L&;PkHg?(h88kGkLg{om`JKli*h z1Cj4jzf!V(U-i6boSJK^}a7QRBZ_IK6%#_*Ks>2vV?>7(j#C>rzqad15gX}7k# zGa5%P&mn(0ws|(c{5(#lwx99uF`1fvlyb*+@0!!c80-Afwi-J|nI2Pg@4Z3k*8EbS zp20;NCnzze@mURw4bfHX(|iGZj2X&!t;S0RV~lV~D-=u_#+k7V-6Mt>oFrU2GwIDV zFWr;;$2<}pT)5`4h)*diNIgdPVT3al;|GS?@E-&Kk5@G$^7MD~$nmd9#0E3gBD*v} zlNbTLCd^XwwaPq{`xJ&rK?WAK5b>uC^h_8EegtqFh46x=Cx9>$Di|EcebrlmCe!mI zMiMA~cymzHc$1dRc&v_LILCNkz1v?L|Q_iCOyyhCs2?B3ss|#>a@OTUREDbBtc_T)kL0aEnj)-XwCa3G1-1qQyIj*$eN0c%nWB;dnt36(p=Q-6C) zb%9t`Whvx{1(dr;F)|^PFF^7q-0{G0!8^G$RzLVTKZI1QA$#1Fn<#Y_{ODeBETU+O zEDUH{*Y&9lAJZZMjdo^Q1j`0eXdwsEqBM8MSBFQ4uHyj@*oun$P)4%Qz^dtnEMmdW zbzg0cw|nix6Cs0x`us}?R?tYjLmO{8`nbT}Py)f5!Gy&md2sQAZ~F9G93tGYK=fgg zxQa=9pF&;+Na{2RNkw@H!lN&9WV?kwhY??61wg!^>5&8JBMsUhs|KR>|XWV4qaJ zk3;k0q@BnA$HDncOuH3)iu^;H!(w(~AfXe8^mYYuMUB%^8EQylSceY2D|+(GS$`|@ z*s&A-pmG7o|Y2prI%mo-qNwCr%s>Jc+ZBklqg#KU%h;_`_(Uh zWu@ik`mX7vi(lD5;*J!Mk8~=QgeNbyS#UF5YNV}xDS@D5u6kySFByT^XXF^C39=9% zNYUtL1p!+I6$*)v0qlCtc-8{6^^-nKIdS+2<2kTwJor>5c-?RKC9cwyY=|Jv(enu9 zyhR2s(w36I$XzDFQD*enf})41{6hojDs3ru67B@QVL#zFizO<`&o!A>#r6CMj{-k_ z4%^nWKeaNW(@(`sAk=zYmo&YErg^0~u6b5Qq;rSRy=$8a7wypG%@nl(;*o1?q$>Fi z`8CHi$Ebog%MQrs#;39XBY2dA<3(1=Mz-V)55fn0+7j&-MHd_0F_frJv}r?OFqS}8 zRR4p{UcrarRF9@L`37g&DEZeK4q2<`nVCB2OKp85{Xlo0K4}SW>2Kk-`<{9q>U!18 z;YC%7Q@R4X5yw%RUUJKiHpc`u9_87 z@-*LH7H%enHN=qR+Ds>7d=fOYCCC{}J~5yVvw1oe9=I9Cc>+>2%v_9IePi@q3`FsjQ_>`awRneD9c9P!qx;9m>UA^p+^f16c@m;ha z${{b+i*#&ubK)@NA;TCCM0R2_Vr}Gp$)XMV1v}`y9Y=f_9qg3;n6i%DR39BjHqXn# zHA#kB_)B`q`9MYyxHA6WWB`M{6CFGH zXo`Vx1?}dpjC9di@^*UZ^Q(}dcQR&B-*LsSJZ+!9Y`#!Bp%(hWzm$h|z&-U(9Q-`0 ze)639%Tb+Xf^0=Nh61!7@bS!rBdtT#-Uuu1lunek#wQVe{)=C9fBeUP-2K&G|Fu6= zbDvXFgvT4{7;Rf`E`6`o7Z?t)rl7r|D|H_JRes87YWy@C9B3MdZA&YP{OmB(tJF@z zd_+4^{Y$^l&PnXsz!T`Rew;OmE)2Tw%jX4G!wZ6!HV*1^nqxY7=JeU;qz6B&WJNc$ z8^3q}kBk!hl$phfh>Hjp>JGl}Td-e3}?$9M}F* z_8RI%OvXRg4HKZ!y1wK?QyhFTZxR5%fR}6G{LBwg3?mHU24HYf827q7w&N#1MHUT; z2DiegTO56mP#f@*P~*!DjcFK2T)p&_PX#@rPp$se58u-X5Io!tW@a@uPs7&J;$Pt;Gcm#XJKb6@jI0Jj7`vEv3{rHs9q3l0 zm*))hV~pF3LC6kiCxbkNhD|s)xon^I=wlpFx>$@Om{&@E@!q&_leYF0k;Tx#PUN(V zrNCeqaqWusY4zgyo#@E!i3Y)!TsEQEa-PcNvMMd}IgBcWaSvteEa5)v?!2N#U3iBK>I9`sHH+7d>BDDB@0R`*&x zIDzQZGXgB-u<-5(J-Uke4pOKHoN{f41)Z2Zq~>vG2~Fv=@&5yP=~1Z|Ga{H|5`v5aJ_b=wQ8564O-+yb`4OoXimk(}yJ_ z9%M5{8(cO75-{!Yo;I!gxeYB2uW=lp7IF{OhTTa)DCZ+zl#dN3)X}L2geKZAZIa6; zvS4{C{$e2u-w_neiH28&PdJTPKcZo(^2x8ycL3>uGtd+9n~D2r#5IrqPa~~QlBTWT6G}MC7aB8>Z%`V1`IX*e;uB30-jFLI=%MsO z&||pa8^EWZd#*cv>U4MH@KGNJsY%hoATrB68A$MbPYmrYym+B|S>KI)?Ypl^0dP!W zOKp-e_FlVkwR`_p?{^=)|6%vpCm(kg_1(_vK0$)dILW9_$3E_a2IxZuVXW712@N8} zz7-eDG8y+LvxTdx=3W6iUbBG`_n@9i9@ju(TrcUr6JL4D<=GGYGm5-BGCH&(kT=gz z5*E1ULdz2>Gs<30c;a|ej&`F?CYu$Mrk|_i^EMlQIB1Ii%{+yJ4#G>WRIT-Mog=^f zd29}h+rxSYsSCFY>ZGrD+AB?9kcCuN<7aTv-W63pW0*>9+%^hVdqJkhFd`>;v6d+V zi32ve$)+@6#BtHi(mp~fe!`%mb+k3sJ8Y(vk;KjZvYs&-*+RrSMz^&ro&oXXVxOuoj zS34fj7HE&OKOAw4cWFC>CGN5F2U+8mD|IDUul_P0)%;Wal~j37mh@qwRr z1{L>oB9E@|SA;}<<|G~FV+p>n|e2;Tf3(<4r?fA zxBg9F=#QaQ82ob8A+3-0$v~ox%-6{eP$C(|`eZF^b}Q{8edd@GDR}ezl0I>G)4E~3 z=%#tE+G?#?klzkSFUzTN$Z@QP=#TKQ!cJI9NR`rZmW!sWyrPLQDdpMA^;5*NGs(sP`9?o9W)|KxYN-4Ci@` z?*x-kpyGM1F|;HVJqB?Q=6MRCMi<^l_oy`YK2QcOc#!cwVT}Jc!iz`1Du5s6 z7^l&^##pK_WDcJ+rF1q<6{zJV&t0`Qk8vvcSA66!#_js_ThT#&S$|L_P$LK8pbMHj zUuvx6p8Zo!8M>vH%^3$dHNwUbN*H|@IGA6f`$$=tPr1)L?o8JCDITl^*zw}?FZVPT zQwBiuMS__agOLQpF=2B25=V5|nuLkM!X*|VWgJn8#9n#Grhi}YsTlC*A`F3ziLJt5 zy1r9)_r4|%ERgTnhyg1W@cIM^3?#HEkC5#XBoG|+XCn&HvXglT0|_Qs-C}71v;F2) z3?w8V>=V7ap+)I;3wEy>>LDE$b$o9bNMJ2_N9F$f##I?eNNCUr5~>~v@S6OkpyF6K z8w6+pvSYXMje&%4QSUrc7U-~$A;AGwKqtbg8=}fUg#%}WmcgqrxvfGUrH~KS^rf}c zSPg7eIBB70wj-Cd4tQv_&wUR9G~J5JDcO`!y%saNJ7$!AS*R>?L;bs zL#Zpp?bI`QRebSIi6GlQ;)YS!Ct{$+4@F1a_P?RFAi-0p`f$-fXJYYo+m`P7EQUHD zZ}VZ0L+7V%hIGoo>Gg}@!hwT_Y&nai)P4;Fe1pwpR=r9@vqko8379!af=_O6%pGm8 zj3U5adGtkN{c2w9(G7+Y7#Y$2u-^B=QK!1l-oe2|o5DetjY)i`2l&{-n4b!Y5?{A= zX+wzz3)l){57c|$M$j$m<{D&!FMjpgp10r;ofF)mZy10pE;+O?37h4+9wz8#flP(D z&ov>-=F=ou>UNyZQi;|9nul*$`scv~Z~S#gSSf0=@hzMAlgf8l`ZgPGUcGL1KF>P7 zt>6 zvgzfQUzUNyOWlh)MdIkOBNpfwjlp~E%C+u;U;Ww!5}$rNF_1u6__Ylr^yY=;lAW4B zcYB;w29v49c{1CQ_b~2fuIMYgMt>e^7RbCmgfIY;CJ2aF&w-$E<9bQ|o%qx62?qtj z?LD2|h3r<}LoETB`8f`Fl(-1ySS{o8j4QCoUtwIm(pQ)nbESEa2y2>aG;J_p9_ zVpa}qeT?Ht?;7gc!uZ+ns=7$OYhX#=rv;Y0kX6PP{V*HSoKBL9HkPZ_JoPCL?t$k5 zKT2r)$V=cyhO-Q+IFylWMC8;lj*#Y=@KTBwT`hfSlPq|6zST8+s@BkP1_+#F*;lQuQ zzu*K8m$dlpeZ{W*ot3^#mwQrD$7A@l7$-E$ihG=}#uox13e;kM+`qzyq>O@c zz~4uVp9Aj~I_QHV8pe17KlYb}8>h?jxI77;M{nYv7JtmQ<>;C)eBhrDQD)ksYJr`O$oX#FKG`aCBi?(fJro0A7{ zcXWL5rAso9`0VrUV+xV_Uu$Fafz|=g!`tWA_4$umda()pFixad z55^`epQ}YiJ0K$o=x+P1`6hUGDfdm%GC%0*`3ha=WWUy%_E2g48X%?^zudCzZ&|qD zo%Sblc-jH_ICSr2P^;5Jw2s68f?}M~hU#~}``zyCx8LgC`@#3M>3>RVr{1t!i2b6T zUgAO~<;r*k?$jsw^IZ9f8?a`YsBL_5ZLF9d)J`Z4-(V1-U~~hJ$41VXvuC?w>Myi& zWGXh?fu!9S6MAa55fZYzHU_sF?%W>~&z=BA&!6j4m_Pg3Uv@wKFaJmP_y6z@<}2;3 zWHXvs)hT_IzPwW}q-KqQkE6{vPPDME68)?DH)))<$J5g@)R|rk&3%0EB@H@i)vog) zEE`S0(jIQ947V}7(fWgZ9(W1;q}ZoTFJAgMcH)$-lQvqY@r^j ziXVF0uvz!Z!p%y%8DUR4|Hm!EvrhlA<^QIZGxP7NadVkTj1A9yZx?Xf)dBL3Vk59MR z-hjlW4|{{jx)_>6Kjnjd=8v{qZMkRN13Sy@_|An_k%or27SI`MLgj=9j+}zX2v!JY zQOKAeF$)2eO=O?uph?ZAC@>+I(_}$q3|aLI$LwGtpn(ga?)ug1+Qh!64FDz;P2^%C z1`_*a`HX?YBjJH5&_Eg+9ti(V)~3FC0}18rqocG*eMg24oFYNGy<*@V(kaa@m4BDY zw_n1_u|4{RicXL~7`Us+`%4M>K0!hPvqVvg7g$T~QNzGMf;Z3jort16t-W5G`Id%g7IIQpwf;45)p z_eQ;Z?m4<|hsthiSk(yz62%i1IVz{iS^@$*SK*vcwPc~sM~;arl+25gz5@W4cIfc~ zz77M(G#{X2+KE?v04(zYN6)U8M8I3sEp7R>3?mTQu5;ppHl7~p^b*<&xp2AZnrK;9Hb#)%bBftEL~r&%?JY z{qx|0H~u)^jXrNSzGdlnQu!`R-)6(jtJlrW=UK-E;az=W!_!_|7h4xlaNTlTj$-6bVj@c=gp+yBA-2v3vf4j>MJG z9r6qgyw`Pt#0Ne>;)CuJDJ;Lz@wYxfLJEwpC5sIwNC@8JBndOkdZ=Y);0*@k2O>2d zdRD7@ekY@U%>YcZ8Kns+xkDjAFiAT5ZkVSldR#B*zvcINCPO7jJgJ$(9`MGKWKEP$ z%-1LjkQL&9N6CX=j=~Eg2~L#A2BJ_5j%+M@^~p0&hDLB@K1-s+<@sBGb2zXpU#XL} zO(gfEpXUR&URu(%SMVk;{NScd#ONW4)EGy^kKqJ|83ue7`+TsE(G!xDR?Kr|`#RG#2o}`bTcmr+IPmMd%nPvDH4KLF`GoGNo zEkirLwcssG8$Rzo{FxV@@MYlwKlY&u9Kpjgb3^2C;Hg*I8CMIJv}2sBJU2tLlTAk6 z`B++*)LWp(&k3L9yRL+6Oarhf=d5(I!diIv!WBmxJd7i*?KcTu&u{VPKK?jen>TTR z!*B0H=NNvBuf;Jd?s3ABcj#IcSK#9>n{EuZDF1o*6Q1;Ayvse)PHOz5eWZ9psZ=Ro4f6TY#=w#3RSVj;M zI$Y;$i^f2Lmv2~mJSQWHmt~mE8}u4@{Knp88%TU11Bs6;gJ5tl*FeG}v*=V>F4iQx z?TmrMEuFl}OGvc=iV-)o*E*yJ7hTdR$)E$n2u_heueQgh_wx2%>E2kM?9kc@g9Y9q zydl|$W0$XpP8*5~8F*2c(n3${3>Z9nUd4ca|Y6^jG^<`u^UhxIkeQw;FJ-AExebRfm)LiW4N%8yp9| z-RxheAEH~PUD!ZEYwf{6+gj;*xr3JjPn|ud6C_UA2#bD;*hCMcT;P4E6ClVF1Bo({ zpv>^^Yn`y6Pvu;{suLu>>b}w`HMjIR>gsf&hc&(atM-IXdj~wR@5Cp~`J4v^5@+=( z6i(>0;Q@2A3Qzt+shBYOFpv=kp13+OqMjYo=NW$0u&a_JiTsTkNRW4({7fCGOuFig zZ1qL)8pDWBK9YgNl}l3P-0xnxaK8H&|NNhIKl;IY-RrNt(j7l`RB+NWNuC(H&^rzv zKQ9Y6PPbXlPdfj{EyuG?|FY%(rk0a_hg-FLf$znzfsGzdj8X%~dd>-3n7a3v;B*;y z`hjK*JU|RStUr2~!8d}1KXqbM&1;PHp3j7;e8!~AbsSVs>l@0=yn=p#xzBsljG_n_ ziW}B8nlCwli9JwG)aL|WP9o$0xqzl~`XAUs%7#< zAVYCiM=pH6H-W|TPjiEys zKc3C=)^+#~ZujLKlKve+?}f+94o$ zkuR`Q4xouMUHv2U)7eR63nY~xVYF4+0gE^+)3I3Mvl|#QAiR{pLMYt9)ryrq0vm4wW5DCVL3nxNl~2Vylz>C0zorgPKKCVj+E_+(xzC6PNSU0Z;x;03 zd0W}abS+M8h{M}rYNzB)Td|{k=&H8fbEPl5+mPaL=~sT}e~6)V#rb)fjTJ=%ZC4Ij zDH~UC=DGFL_TxKo|I>!$9$MpaAD?h#H|3IUD)0$DY!*H9@U*;GrI<-K5AVG2W%GF4 z^vmWmhI>-^j_KI0=hWkN<@c=Svt@kh$64^-lrfzRBzSuX3s{9Q7BWHk_%SnYXLnfN zGJXES1sh20lPs~z1`;S45IF1Ps|OO?INJ7&H(u9gHeQtC;iTr1{hlX5!}x!FI6>lr z?&A+X8Vn@vVIU!S1m)vSjn9}MGR=8ZXSila^}NZKz%T+UW(0LE-o8Q3!crOhq~JFxq0MqwU&n^&=ef`W z%(x8D_O06-4lLqr>Lj_1;oIl-KJf8VpR@4IOGkJcH^xD`OWR{%Nc-c8kpzB>bu7;z zBP&htKpXeu!J?59%rFGvig9gwqC}M1q@%qDC-N6K#%;O9U;Ti^V&50&4^L@ZXGHMY zf&%m|&kKf|fDb-poZ`2Tr~eN?Gj7^6M7Ql=2Kd~dji#H2Fy*1nL*uya=cV0_@OJ&R zOn#}?S+LZ#uNjfc^0nm=Y4QyJaD=t|BMg}EcUC^L!h$zA@o|e_3u^K^h95sqAgAw^ zg_};b_$lRD6@TF4FV1N;#G?G?;ZJzd&&Iwel(D1QNygTsNc-WLywEYB;L8}zeVYb4 z##d;JA6&^pDV7?m0`K(e3~sZ=)iHmjp56aQC8si4uB@k}f7`Mxou~nvH$F_!*}y+- zx2w)qMZX#ETlhx}44>F=i>OMTWgvku_F=sdf0h#@88mGfB5gziom!8u(bpPC*pOR! zLosQ5dafQY6xYA#(h5a+?9=A!ei=!y35)*F_$~iyjU%5=U7+jb^Bq@ZAo0Z)pX-#0 z>(-w_L*BBdo$i(18TlXi3tbv{m;9p)_3vKQ>)&|7S>H<0xcV?2vOXC%{$<4Y1MBb1is zY;@4R%xl#R&h3r5>@R}*D93N_&rl&NWJ@_FWue|FA8nX2QFdf!HgxzT$(b`}Eu%AD zhbN@Z{7-vwn=vCMtpJ=v(T>s0vUb08`AYZKzxYM>KY#Mm?!W){|3{yx`DkDsd9&$H zo7|`U3!gl!XWAlopc5L{Tglu}<)H3M*7FO6l3SpS^4M299-h&si!QEeH`8q6g$_=5 z$exYUX?)1$7oWeuFoFv@;D>)K7H;L*27)>8?LkMe^b;}gcT6MEs~v`+kBjIb_6@j~wW zd11C3qXl6_7xBf%id}3VK}nU?_=HD(`-zRBv0%VhoGIM(TZ9-wKa6icxxPdTr{b`e z!09@CTI17?-q%YnS7-p;D>_N^U;n|s?0%@zUtW6gygtu**al~{Nmnd#31?h$lVc4?gpU<2BD%->Nwe z;|O%FT$Z=`d3Kmfg@ZDX4#zwJUgnq1Y zI0w86PkD&1aN>Dd?1Fa;x#Q&*zGD>0DE<(X_|z!j8~jS6 zA+2KcC+7va%35d%nR09DYbq8t%}F?d8$XsHp!9tNv_O%|&zb{@_^KL}hdc%N~7*WILdR7)O2`k+mmpu+k<--gWq`qge4SNL8&JEoi@Vd}(juY7Da8ry5~R383&q{t-MzTGTX2UW#jO-~DG(e2 zfj{4O&bj?(a>Yz;!pwg6UhlKkI>(hJJQ0K-b?6ISqdrT~JUbdWh=>!!aVq>h)QnlHp!978q0w&d_2fnkz)H4|#X)rU^< z;6N}0gS&W3osHLkBV;NTww|Urwb7)$*$;+fN6v}H|%wRI4#*KcJpy(FRs#y#@ zA+?Uk@dw`7r9%4e-KN%FW5xWcK^9O1GXl%i8#D61jfClLlfFlGCSZ{MGsL75M($qf z{2S6_49-+8E=!pufUTrm+Tu76iFPd6rT{3EmJil9!fRXg_Y!?}+ALd7{WQB-#|3W% zu%?_eHW^M&Tw(3)gg~n%qXUN#<$d915u(oMX+LI;dJz;M?ByR&JJ* z?3g`W|GrDaDJ9=`yKL+`^{6u$q3352*v+s=oSgrd?Uifb!9+3icM2As($?|L0&}qE z$7?k^>p@l9Hf(yfi3hl;pT@7)bxP?pccvz6vjUV$REkUMv?vntN&x7&6ek17%7%&c zjtC6fzxfoqZ}mvZ+Vtp211od2M7tf+C6hf;ax@H)(2B~KGXK!#eP?_`E1Ww%ZdsRi zisPa@zx!2l#IBc*KFx6sSwPdp5uO9P!pt8N`yEt(vp;hKXu&zj9iPer&1cV|KGS>{t+xfWUH`Q-6DPn^foSzBk@rso9en{3R! zj1X0n5rU0?<%g8VS_obV)ktHd#o{Tw6?LQ@Deiwap`X#&3O^!+u?xLtzE%|6YVL1Z z{Q=J(D2HM~7yp^z$0JdP`%$NRO?nJ{PN_K7dG!}%pYXlhPhWq15_yrie}zrw9et({ zIRz#c5MY08ouX*>f9*#Ke*a~f#UT=4^dnz+Uh|j^uh~72hWtk-X8?p;^etXZ&jN@) zFax6LhjGS}Fyp82?fnRr@}rxMB(n2T{Zy$@`@b6rN0nuQ9Ps4;N)BJJp#-4&pGprL zsezJqQQxcvEel5Qq^uOQJshRCHK#ktL6e!GL#TP_qIk+13-PgUzA7qXYnc!8K5l&z z;wzn}i#wgCE?XG!4%1(ZX1I}Tn0cT^FO|AnoJ>dAv&TY6**sWoIY0|tF5@V z9AVIOb)1eOY-(aNWhdK*@Q?LWBsE z_qFl~uI0`j#!p#c3+96=8toBUoz8p*maerzjqsMGcXC}`C<@w@uB+!a)4q2<*<0~{ zzN^vg>09<7n3`>?^8c*4kP5!~EK(gAO-b-Zm?Z2L(({g-y$Bki%!IoBPR zn|$dHPy%gCd&Lf>%vs(CyoFy^$J@jGMh9Ct(YO#5@W7Gq zCXbALF5|}0TqvYtF%dL7*)?{IkWH(K>4r^D{o}8(jC;UvNC-pg_{F%__wb(SHV|Au z_)hB>a-lD`1!fH0bIlQOOtv>+&HSkL=sR2%#> z;ZUW?!cagX};KzS5eefVkJfpYIx_@LYX51zT}KA2M`r9`&?nS@&WRM z$nB{tH4w{B#X}PE;`yC>Dw!9VvCu;XvsRxwSm{vTMYAx~N0fDAjsKzbX-Afyply^H zps-E406Kl8NE^y#3vveTU_8#OH=8>nw^Tq5? zZE9W$|BFk6U|S4YJA}5awXvN6cE329y%69Ba$3rf2wcuv&=nuH$71<7OkN!hW>kKW zI~c4(SWgQWEwNacxWLJB*)bUb3wXBS`~tS<`jZx5o;8Hc7aI(;fhSI#c*(`1$zD>$OtbYpdOn z?MRBY_`Pt-5TA%HX~9W=aW&XpIg^$eTpiyxDn&8<0lz(k4z2y!R$3T9E#SaPHG|KO zO(R3*yiX=_6F0GZg$zD(p(d!*!}}wxOtnNWF$v|hZ5PeFv3-D&rbVw?`NbYn9kwy~ zwW|qHFI0Q!g>b^BUtGu47dj{X7cyFjzshTTO1XL>K0{>}#YU)%u$V*rCI}j}kiMtg zJblbf-~@~%8@`Qh1Dg-qb7OZnRPEsTJlBl-Q@@0Szr^n6wOeqJqS!-P9?0qviHb-j z9&l_U&f(Extl@ztge?>zcpUNFnDhT!IFrWq8=g_~ zhQ&C9%R_PVZjB!lpHbKUlt*$Bbrdd`$Xw64Y5$`tsy&?8pxz4%(sD zU;DDdM{Uc748NMFWQxA;rAi?~!nu%m{7E;^0_mgus3qh<_l-S7BL1&W>2N(R=<7^ z4K!ixGri6xU5EB=Dna^^+b7;9JuUbO!Gx$ggb|Jv$(@pRz^08zFD zrvEkCWDIr}_MdZK4qoj6m&N94D7^d!*Y$+sx;K1mjMch5exygE(GH0O`L4E`bx(h; ztgv|HKu6rqq;}bx^k-b|Dg66WlnEBkKj*h%YyE^!*tY`@GaHr!wAN)tqx@1mQ%L5} z2LnG}AJW5C3Ai2-%s8U9c9I)~K3|AN-!2b~c}#-anRm+ul5+W(_cMMTdSwh9I~FJi zk|9lTC%oZ|Gh%#yj*6^Ei7CNkhS(NbiTeCg1u#IK1+z)I7!?&CsKv^^4*j}RfcOgu zYh{mQ5HrL8nLmcyZu8&UouHP$kZLpnw(>U#nLvjVGLs^JfhxKLYJ(^`8?t2eJ2P5G zl^d$va;EK`DtWKs@!92z4y497A+NoRnmYT)I0|`Z328!iPGkaha0Z`e)oVa?9YMml zs5p*7P>725R{jUu(2q3X5W;A4WP_a*?Z7teUn;1WTao@uvZ?dvKl32f7(YD)7yeGJ z3hL}q+oBB0f$H#!R#Kb|@j{GDj`FJ>-w+}Qk@A*um{*AI^~vk$?OL{G;9DUqHI^Mq ztoh;UK*j+M+bA*g>=#D*;Lugf??sDGJ@&8Wq_z=PQOe`|v48jOVUm>8Qdg9I9X!zR zlj|T*CkwYm-NASNJw5h>@KS7jVes*o@9DICnT8Q7%l-BCXu{v?XYft+Pd|M;3f6u2 zV9Wde4K~sV?I^fX2mL}O>r>L!`VCIA1=j>3n_b|3B<73(Ly|U{6T}1UBdpX?k_dG| zJ!P-M-VJ)+Uz|;KL&Wd9FML5S&Pl2Cyt0Jqz3*HS4Qj*l zv68fgOQ6`)w1S>%n$)1WKuL2_U5)kWv*n+5nKX&)6~Ucqq>g#J8(f|5nK?G8XWU~N zY@`DYfBT*c-F|pUM!SlUxMHCpF%dkA@WisnjXMyM@p)>hphVvsl{K*Nr6PbQ8EJx_ z*qsvR0KgY7Z~#pwC)LnrHti|3rwE$oKpEV|e_<@ucM%21B=`DEm+b)!ggEWWB)EBQ zvfiV7Si9&k^xBFCO6)tPEQwvoxFX*p@f5uiK|gFwm_R!|O|c>|=uLZS^Yge=3NtBO zD9vZD7=N)vx;C-(n;e?=wZHloZ(4bo&+=7mnD@7s?0VVl>TAI~*2A28Z64=ZlYz$r zgCT9tN~Ay-yQADZv=13@?-EYshJIHHT>)9;yx~9{!iS z!RuLkw)_*=+)qLCJQmEEe3^j-d%Np2qB@5P|89S99`hr%QxwBHagxqk=)4!~Gq=*d z=w=aBvO}N(|GR)1O5r-8&&LL2PfGypFn8+;j$JDK>gmsOcCh{nA5)}FRKlc3_@Raz zIsY;grkpVIFs$eYvX65Pf(NTnMo*3rkjg+9VF<@nKdO$3_)@ngrhESZpCJ5n9x zB{GtCqmCE5&`<>7bDWxC?RbMuFWU!}+NYlo1hi-1m_8bVS%Kd0ta%uY8hXE2Mn#eg z4LysWFhS!8>wi{%ddXrm#y@|bk~6RTXv6UOcTLaBuQ>#CIeN z-^9mHVYQYk5%nOyH4>`+n&rx>ia6B^F2f?O7MajW4=xrQsNBxc{=Rk+ibR z!#7^nd3!|Erw{&`f`%#P%)5C!UYe|@|J?z?O4FLCw9@xc9AF&zFXx86l5^xlLgb2J z0gMJCk&;VIqZz1H>h>DwBQ#Eupx^qz)uIL#y*$pL6{_GDVcLPVm=bu;WWRpUR1`^n zyh5vST{6sfAn_yV6IriVKtG9@y`I$-a$L(S)p32IlHDUMvND=^_g81!n@sZq4uiqx z67Tt1p|F;>$VdQkq0w88KC<}SbVo~o*$NfA@T=3fambqhzBtRU(U3=Pjq!!0uBdz! zA1k^g8gz&6v$}ABjAWk%1%DolZ<^S{){N;Pi&7>hS?6Oq1ay6209pM;_6l7E?k;Co$4fkJpF@XTM4rUnEoRojZJcghj5LRPIOLQ=YxRhVvd#>C4Xz zQSo~2adiF%2!bCiQ=bL78o2}G17vejX9vv#GFA1!ph6rmZkl@%F7lpx$|`2z?T3UT zsSJ9y@dr3HBTP8#<`i z`UIcESy*fG3$lczdsifO>=zZKYwWPM(_Ykq%VVI2kLO}BfmK~WWdnPV`PL}IMNjsK zvPrl(^)S=L_U9eH2ZptQ_YNH0=)v1?eAoqs*J@nafAJZA3%%-6_3u1dXY!S6`;;Sh zUk%OD=$*EDOfT_fevs5NLzpIw;c!>NY>y_D{qPmAzvOh6SA0EjdDYI*(6TC^wI#L0*`qI>K5364^Dwq-88$(xn?5AJMoV6z0El~ z4nyyW{&;9d|0Y%3qGNA-!vMVEa-w?7ub;HwHFb=K554UhjFFEJ=S1A)@%WJ4J{dmS z+^3l{Sr~q-l6#+{mjGJgCnfOBHKzqiJvg63#%CzIJ# zW+S95S2v@0T^_2t)^t)6Yjgm-#jb{PrZP(XKbZb?wGf~JFI>PK{3kZodCW3_bC@U*Yv+?CdKbw-OXZu6n3B%WY=OXCJ|X) zXk@lHFzj7V$;SsoicQSPOyPXBHdx7U`qQ4pGp0Urp36h?$xS~`S2tdc?TY!vbP@0V z>SR|d;&SD+#%y1{*6v@(sl{&u9ElNBLcc`mj@BhnaiUI@l!P4paf(sEs1xq-V)N(N4#hvpUkl1wd3V3irT0j*^o8I@idv1)1m@VeF4h4ryq1iAzFOpiKlciYAV<#cjYhVwwS5$?B zOlqrmv!1&rZ+$xsgU?s@75vCjFM~j~Mf0U~TtlxvO6^Xj-Rf zb0C_2n0@~fIVUo+f#M~RuzcdQ-(;~t%&3_u`sZq_>VOT-1-RKjo-w~~4)If{_4G`? z9wf9+<(Y}$8Gz%Bm#yflz%J($G&DRda_bS9xY}voy9g_LeYjZk-#o`X@oc+ON&AwJ z?<*90ZdqcjV<>!j^IDqj%oSg=Br=zSiWDh*&IOv^E+g&YiGNQI&lIyLp)oFXxa1Hq z$2p35v&v>hKbVJO;5z7&@fbu8lru6*KI9ZmM+o&9>7h<*h_2%?UUQfAvhKyMB}(S_ zYKB|EuWXjJ)&9#~9{81$c((x-cegcbv_2yTJzC(rimAo$N&JG_Y|ib4qc>&bTZjnW<|k~Ufd^#f&Lc1d{{DKZ9WV%t+;u{T6CN+86z1i@}) z@-3YK8CP7NE-uRZNt|;Qde5p&Y0?inxz+LyxYSDwLl;Ztg9yGaa8TF3Qv6|kqf$B} zYVl3EKBJ=fkHj=z<5Ii%y$^R zwtF?`-|X9wLOkfM`x0n;P z3$C>mEWN6XZw$G%{AY-l)}%(P5Gzx!sJgXDX+ZJIw85S)Q_6 zHF%pvx_#1-Rp11ZKT65`z!2Fp#T5N&XuH}$MK~ZHYWvo7OJb@YVY=n***MvA*z>n8 z!_@dd5Hz-)8OCebPu6uAnUyYsMU(MRZ0!h9^nMQ{F=?)7uIfXQ5tQQD5obFPcho(* z+mehtaV4^@NwV(?MVyaTRQ@m@Cas*3!NgM)pJ=rD`B4g&PKaBKj;$GhbGZgk60@DI zlZi~^2pjU%R0yZVCR6erQaFCg$|-+YEG_WogIq(6RFqQJ(Q_KX3a?jIg>;Uw?EjV zDG2O{+d~dKKjYA6$Nz-v!F27=$io56X{2@PY{&ZP`>b^DHwL;Zg>|4#ppj@^a{Bfj}~Yvj)$I1 za3z3CZ_zqBte#pNW9$gS3&cbyp?}CZYK%A%Jo4w=?2lJG;M9^r{0JjknSl0%wEr7r z0WFsjpCFab`tC-Uj`xJVaSnBR?n^SRQIf=vUv$N4M#P`4!Zs$nu%1>^nSqI^u`)*` zq4WML9>TQUW;eq^G8<)}j`&z8uO~imC^_+E^nbjGr2e_gz65;-Qn9RXS)D*W2etnp zhzELl9!ipX@gI--MBd7OC}kFfjjiPVjfkVo8Jm%!wAL8jJq3@QAq-MNr`A7!O)1a8 zEV8$f<2}?B&PySq3ro|vzEeK$-+9{`Oj}_WoajI+cbpd!nR+jYUExI z>|a`+rv0w~>(l-(%SjW~o2KGFmFpAw@$5HSQ3=g!AoCmG4EFrrVM2Rlcb25;THika zzefim-*o=Annr-J-`7x_sPCe8IEsdwGa4 zd|x&T)37`HmCU?<7Ot~m*A^2P;;8Z!0*?Kv>z7FLgLg5voY!!mt0>*b1sbb72Y%is z5pX#)be9bKoK4w}L1^E5TRQq}Bll%V)O271;F#`qNq@C5B?MO`6*rAqe8^r$6IWw=U0&DV^Z#V8Vx?8)ql&EEd@<(5N{l*-4hg|g9M zV2Goq`jYkY=!Cqj3DM~zQsl`eUg&HU+DYfrA!hJf#WVV$j&7^Jc)Q(wl!)#=&w+YJWZeEm8;-RAbYV$~q(=-=n*5)Mto1T1Tn9pw`NA>8v(M#;5gF@-V z(1@bJ%woR=#NcvM~gn7RY9i zmEqVnqbxB9&DZL-hd%M`{Ec=?Ic&|DE&WiG`0hD|)zX<%uKvw%-(7i1P_y2anNVWr z#~X2yD0}}}r7JUR22+;)o#d{-P)$g24beOD0y>U030}v7$mSvYvMR?ir^)){XDuqf zk><8tJ%^q6?NzYOJ;YMbK*4BL^9L=P)(?68+_pjcQ`@4)k{<|>KfmMqgM>z_A>@4m}qTXLdZ~X{*hQiM^F6%J!o(~?c zA*`5quxkh#rqPHfBIO~avr``0&&u31-yP>`B{y9Bnpbb0Ip$1!2cdx-DN(6r zgKYBkOg|^Pj*@jd#s(ti-I+bD184!&m;(UDWb> zxQ@+@#s^XWJakn;L~zDx#6u;#Mg71%ENc3Lc|*3Y1s#>J?RIY3ASYqmlF;U=;QE{6 z0G7*9Q^?n=2yDp`v+uEzWZEt44*h6Q%jep!Om&s@O3s>hMOY~}O6nq8B!pb1PW&cXd%tf> z-cXX@TG%8iexkk_!yY#pRa@@39C*B5zj!$pX$V9fxvvha9V@5dpLN*5FiS?Q_~JR6 z3!X$u<#*|nHt(wwt7kx%X-``^uHFK9a8pTmmRmgZ0Z2f(LKUYed&j;!T#SBcLb&g~ z*{x1XE-NrqeIM~GpNro)7R>H)kUE3Ft5e#Q6CT*%@t0?>R|+{@C<;%GM00qLPC>}_ zJB`vMc$qD}1a$TZ^UAjWl8we_LISMR*w-XPd@(m2D)laC%9FJ^BJB-jEmYVUm6uTd z=_CmI?ChcDaSYIk8A1mSZz71el(&c|vOn}=u#<8=q@W!I0IrTZ?bx9$J?or>a;GSl4R*u&RuhMg-&pvQnIE>_^DVODSqgcdKa%)x0i@Nl z`y$^4^enBOSJ3Ebq4rEB1u|WNl=lWz#%LYK% zd`sN`q{vsu#Y?&Ob?k*#%(ZN(fTJ*$`>A-G5%K|f1H9u&6f3M%bod` zTFZamb4`21*+YS;FvWwBcO(xU2Z&nPho8r6j|xqR;Th5qld65eMZ>|48ID|S@Rk(t z9#LL>AF>4&*4hVNJh)sj_QoGm14N&RLx%Mxusy|Alqmc|BJTwQcuW*=_zRKUoM_&r z*YdY6^}Lyg0egJ$kY3`%pJ4Cre88xGe+gG@HJBJLX0Rt`=iB*mf+Dr&LI9=V9o=X( zR~7n+IyaGN;ZViVK~mWWO~w+K75C^J&B+}`e7r5uy8HQNsVreB=g`Up3R)NmFN4o! z(w4srD)Bu5H*u@_@xAQB&Xc~6X}@?YIXWx?Bm3&`GsT)ZhKada<1~FHf_n|%3(~YM{j>ySscW#W@zPM78%f_l`sd7o3N@8 z%zQNRov7*gqV!r2YwYQxjwKgoFVpU;6-^dL=%3GXhrWv*Vv}BQh}ItI7h=u4Mm97A z!u~wI+&v(qf-xntr%FJlC6;2E#_ZSeauW>71vlg^So+uGb$ssrB*HD`Tr1S(VCJ() zE*nC3`n3H-`f0nO&GEVL(DV2plzreHdmmySC zLayw2(W8b04{6n_%>qxmcxA8vo7AKynF!@91#^qB3?n{u?Cw3cd;X1J(X^Gr zFWbW|*W{4sSF`Rgos`6w{pFJUXNcCt6LMs{$aDGANpxi3&@yz1J=zwVUd53X)l-?7 zHT3v%EGRTkQgC7cHg~(<4ra;cKPN7s9U)+XH9i_|MECL?5VH{*`Ox8&kotWrE_M)W zC~E&HFw9AUfQQSrL-^7h^M&#8jzIwq)5e zBc{nc0skTrhrV=Y5}RSfER6vkB_tGh@4-XPctTp^0c-!nB7fPsEJ-o-K8$(EbxZac zv~G*>7UwP24n)6m>-P3&&aqS6evvN;1-SWxf$~b2j)zCq}=!)0LkIXuz&u>v{fEbr;@W6tQgDUqS zQDpB6rhkmg{c}&(_HN^mW~fn!J9UrL_O4$8Q(nvELC~ty<503iZDq?(nNO^?`Kw~F z7hN17iizB*J#&eLmPn%Qjes-Fh8HBKGzI_6w=&v#ekx^BguKmFdvf_}Gxy-U({;OoPZPTKd}j^P@7 z2alJ%4N8VR(Es{k3pQLD^Yfw3=ZTo;OD?F2yGTzm%9<~}q=<}qqcvhBzvoEfo2w8s z9{ao?b9DFle?0MII@n?}+qqQ~8=|8tfkl=4oWWkfnrqSQ21hS{E@1QLtlfbxYtGYh z%4=UpW#5?b{Z@DJ@d(ZuG1#tMrp|}9W0WKReNouBzRHUka~@OU$F0E00s87n69S%( z-`(LP#BR$RcthV@aa$`;a`BoRU96u^;_0?$`w{C>$Xcn}Kz*RcW$V*^cW@B%vCMx7 zc6IS;2$rXQL+!`q5BK4nksI)F!@*zj~HjOJTaWgEdbZ9T>-+)Ysa11xHQ+q(v39&R2C&n|z}Q*@<> zIUMmGF^|+JSKjN_Bya75E(J*rU>==f#N*g!OEfCOHwwc zemebOEI?q?$6&PFv67v)m7PNAc+C=7U7xC*$~%ZcJbnWQhNF$#;C2&7h0~VqRU$#} zgRl3&7yj_tPXFt=&SfL-lKRNfg^yre61YFU?D9pYz?u32?pruawWfSgVm;)jy@Pq{ zpLDd1-rQ$P3z#h#;&&2vvwu{U z0camZXJ`265his&9~$-Uj;A}k!uu#>qt(}ZYAT~H1pa2Iyh5RVoMe&>o5aen)`+jXwK{CpI~*PdtEs4^JYzjH1GacVwfpSGegKm;{#h6r4^v{o5%e^a z;_7`4{znSI7&2XIQ7sycH&Q>=Pu<6Z)B_g%6e1c-;#Z>_$F+)4@Uh~V25x02rHMP~ zo69vSScO!|dKgNszp#!J`}9;M)6+}Nmm=o}maVeiQWkz>-<&FlbuRwNT6c3s&0=qP z&B9|z(QMx%XKxh5JR;R*$Ca@L8HguhK^DE>t${l7Z?{b3^F)LEngKENHk_bM{CJGI ztIrQ96X5E?2_?tI@ILi^7ld7@mgfcg(?g)GLs}k(v5rH=(g=ujTfbk&ucaVuYKV8J z*1Pl5GpWuIP57ZF!Hd-8#16(30pDl5f7iw# z6LR)!GW8a0QcIH5bkma}Di-_!?V4E^I)pSxH#8`dsNh)7#GX}5~;?4?qLDQzJ>h-*x54Nk&+FhZK z{#BQpaCf<1&khVPMLDsc8%UVv(xbrZL-;$ZpNO5 z&(CfB{>+g&FTG&f(RgIn-ywD)6;k%w$hGGaRD;NOU;(2=gSEh~0*^vg)@X=gIc`~d zpNKw=COL4Zoht!foIZNaPD3M)&#}>aAI?i<^V9L0=DEtGMTQ>sD6j4}y@iK$_V`G3 zd|Y)N<4lTrYBe}pKQjb-NA0Bt4oT!Rd;evBlGQ3DiJ_LGvFT>pEnQ-biRQa8?rb(k zlsN7u)w`w7A!pBZ6u3Y*Hd0+EA}XDFL|V2ZljHDnt~_NO6Ue4_RHvxR{t(DAw4!J^ zd#bz1;zPY$;{GkWEtq=3VEFs#f(kh^jrdl>i?0y|WAA@onT#1_7r$sQ$Lkt`)%jL_ zfB`^nD!Nitl1b{BM!OE!w!Tqw{ucUeUP_ z7sb)%s@-Eqh@e-;sL0A0sa_I8mhQ*MryyTu;=4z`o%FnbQ>jUJ>#=WktOo~ zHo3V-*m~+X)7!ZD(*LY5?m$v|@Vfk`v+cOxyta|T=w5XF}|?U(D^rNl#HY z?eSzj9*j4LZ-||U`>|jtfN&I+`r8HfKTb@`K%vcypRXTZbhcf|+gJC>@_cMiFj9Wu zMxgb&9Js(?yskx9r~mcfdC)4S&z$Sv18ItX(BZ=VvENhUwqWr=I@PO*-$+m1qE9J} z9=AV6ue{hm4fUsYc%(%ZYZzZ531$A?>1;P1gzxvG>@sbe%5>Kpwd9tOT&7}hKQO?8 zDAA{XGM=th`_d3xNbw_*#oX#ar(?pEg3YmUeyjNX29ti5I4C?)PaN~0ju?Hq!MvA9 zHG3$GEGB^l+L(`ak0{}8(ae=9{zb!^tG%h}%}p_)alocPaW4r%Mz#_com6uu z&v9c-5YLy@4;3}1udi&95(}Do7bKK2haeTGiQY#Lr+@@z{Lq!~7j%WNi7eWvuD!Lc zB_np|EAuln{zByB?kG-xnEp=9n6Q@hpS*D?op-*x3rY6dx(w4vu%kojBOfO07oH)!nqR#~p@pJKqL#drLHIX2 z2(2G(cVzHrn3TH*NPoN%Ndodhs_H{Uzfg9a(do;#iyCoIp$1f1FqEeSAtQ0%9ZjZi zBa}AoPWArn$h!=CS9AW$+*taLW)^;|mo#TVAQZFv@I|fX+oW`Dpj)w z%U8Y=>@&mV&;7k)vmRbaI=CS~-I?Jp7{MoM$M8qn0q=ufri+eY@} z+Y_9HLTsjy!t5fD->1#wX$^KZ8L6<^E+XJ0PN#35;MseVPw@d~1n277?CbA8M2FFg z7{x1}_8U!$9RH?Z+g@%8cK>Jc;5ko$#d`o$w5aOsEq7@XpvfcYYPfpsnuC8l)gF=A ze0jw;l$82XgN7O($tKgGvhgVCL3I~@Iybd!viaSYFbQ3>nPeiiJvriokVkEDQxQ=B z@QHm=)nR|1|BaCt9?s_J1rpbe(ZB{sDrgZjG_NiioPM6w3Ne9Pi|zcWvc7%%Ho+vD5>s((#KkJ%86s03 z;qw4dHPR8KnN;mei0Dc27?SIi(C^8ljOv_d4Uc|3v{e+we<93D8PuDK zZX+JkPt%dCoSSJm)^K}BMS2#1&#P$Te6Uq$D4av+mqJMY zNc>Hcv4U@0V@Rr92~#2+9)?0!c5P5AP@ZtPr8DXN*rWP{cl$a(Aq&uRR@(Krng`sp z^%JRckG@wjeK(eMacejxV;#{uS8|)vgSXpqlNsi9W#3PCe4SIKMD;2JhX2i^?F61N z1Tx!y>s6gjax^m+3MnvJYj8AU3%Zm1D^3u3H}cTK!~9h~GTH5?TdY!ElKrab6TQzW zkDDS2 zDAxUiF7o%w`0z(&9P4kS**8eUW=JvAY(3(Q2Nc#_&FWZXlj#lG-PY4CP8<1e&{$eN z9)x#$%5^sIE1Bw;efj2-fFi?FoQkb+J(5hMDVO})&bJep?RsH~!YQjqK}?bz>9aj7 zi+AnK^IozWudVlOToCfIP$6xiUkHvGiJ^DPla|PH)48?L(@$uFZ&cZ^cC1b!Y+MB@ z#Fb)n5!J$#Q!#3OnI{f?-c*qk<=?62`Q$K+3gc(={4hNeZ@*`Q-9&Ee2&YXdV zt4A%LFY)g*V-U+ecs9hk4bXXr-g$_1O=MwzZ<=z_+D)j^$NPj5$zY)KTUw*sSA_!A z2%mkmEVg{IfxV)xs}$;m#()DU!X84xt^B8~AQn^=?Dhi|-tL6)edxsBm4iU4>X)EBM1<7xtfppTP zyA;nd*E)OiiMs3I&}bz^c0A>tLyz|t+pl|oUEB=`lD=;?1A;K(ar|EfXf1cK@P8qB zLoPK?nh!grd_!tYlVe*87^*0QlS${Sa>Ja8+Ne3EhdT3|Q3i4idS9E**mIA@fj`|noTNI3l>~(nrWX@mQq1ssEizdPe39(za zsVCgxurKESUH0%B=XB(wb=*UE_+4@?l z+q0%A4n^|BC>XcJhBgii5^t7hcM_Y6XjtXM5CaYDIu{+!mLrLuRFV=PL0rFL|IUF^ zw<1a5h1xQ>a@LMdY_6*VVxvFTJJ|adJS&yGvgZE0-}c3G-^ZYtYZ4EHyzfQVMmHc( zE25oM?h?m~N_p1pl-`^fOdVjI99FE?FjsS{@)>`>|7Az`M6q#eud@ppb`VNoTJ9k9 z=CYG~TT*Nwv(_h~$2f=R9hfVK@ogv}c}^<5q~L%eGJ)C|MQ|4F+kRIkc_hJoXVJVM z^;|>=y{16r(o~zR%+@QjttGT$TM75V_+p$VS$V9=NH)9>z7%>pPW<`HV6q5=^il(V zN!AEuc*i0s&0J0tn(HQ=mVN&I1+>CAm882|K+N8aEEzY(TyEgQeJd-o5{(j{rSm*= z)?&(&&UZB!Eu=D<@*~&+R42I?FwTrIUae*S>FeU9$`A2Dvdie)fqVd;+rTJW#_iuQ zGz;nzpMMLlYF{%)u%9a?R_)=_Ph9W+reAC*MMqsYXv<`}(EB;uVHemuIuP5Aw`+fU zPm+4BdANHW)F$iu*yZ3wcq|m@Qwrk<#J62xULKDBlHfi%=R#Sp!AJzZgC-`Rec>Mr zK@9ff!`xNy5bpfdU4Mpk=VB0=hv@=k<8Jo0) zd3YXR$oPJ5>}Av|@u>3p9aQ@^U{AT50q2AhAggb3n6|f=&6s#64i+lT^1@>SC&y)k zyN`Zmdn{CBmj@-qKMOc&Z-ti9TP4>3%*|6T%n22`G1nH}j+cLdunjbCL#Ev+{vT6c z!4y~2EsMLmyE_Ta0KwfgxCVEJ!G-~XLvVKsK?A|vEm)A??lM?#xbt0k_5Q)B+I4pC z)!nPxr+PyI`%T7wnyt?Nn$Qr}$DpT(`t5;{!ujMY)3&FX@aC&WKiC>Pgj2^9RL+by zTLDQTQtyC-if#fX5zTkgJ>Z$@=b4ONAV$-Z(usHG7_Y1U8d+Xs2e9X-(Z} z*L|;YYs2ksPrlgRJ8IA8*07t>^Y}Y`o~{$m8>2bDJF^!l+tiv2uf_`w#OQh3Y_& z=zYd>1bJRQs75`@WT4m2QkXd^)<~YKf6X~O#WqFdeKVRXsF=@)(^K&&S zM}`ol+FqJvtJ*oDYwc2Nxi$mW37J$vechwtHa)P5R^2L0EZfoA%H$wkQCO6!0a1-v z?JM#};xhSyo!#4NS;791Nu&1zOybrWRZ{HL6dt{-`iDYQ!!8hly<6V!DY5Bk@WTML z4>6Z91SH{k38wFyQ0ZlbU-4FnHJfvo_XhO6e;~8o(XLQ4l7!33YM(#I05toTPgaqG ztAca;_=;j$ZX8xdlYQ0BWGx=&_9xa8Ltd=d6<$I@-b*g%OB1N4YR%{GnA=e22n)V}B%Esy zx4rguS)%xfi=yOC*a4RgZ4I;x#`!63+&1y3p%k-TaKWYS$RVGxrrGcA)9rfXx7bt` zwT}gKvc&8>tg0>QWoBq9-{)tH2p|bo+OnjnIqKU6n!6D?R+WDNy4YL9vePHN2--Y6 z-{pvdQ`+kAXp;tQ#^R^os zsk^_Wmf6i~)2f*OFzWWDaaUq;dinlm_H`exQQ-X7)jFYI~Kf~e3-qNVAC5PBD z)ke(aWcTC`ty*1@Zp_9#VCpKyXWM$J0S`X zkggfHugPWq}?=J#%~ z-LwkoqeLwgyx2IoU{m)RM!~gPJe!fabwQO7^-<>jHW%g7Xq>dyws|)yxH7?E9+eOE zgU|c;iCY_oogYun7KlGoh9v&3eCJ5)|0FbqkBDm9Y!>>rHZED(4beTJa655WOMGAc zGd>q64v{U$^BaOMh6grz3|z-Q5B_Kb+S#ErYVaem^DEqkLYn)%=G+Iy2tYtuGzi=m zn$n5B(9MflNAhB~)qAim7iK>Sz{nPYMbw#TLdIqSxcvO6ZaA=f@7;(3!nmb*=h1Oe zf$WJSuRM;({7N85@ws10}e%H+W#>aTT7Y9HkFpNnaMsTM%As_jx z21P%4a0{vZt5(9mElP@81AKTrDb7xMJ*r?6KDW=D)9$Zech~a=E9TcN9KTVeIO<}C zFgP4+E0Q&mJ*|*|7Lp$aVTrRYp=0yq1ET(L;@FW_)K*2ATfM$Vya&YhQ_Fwe7ir8~ z|G=RA1;TigY<(FH7q3yIv|lIkSAXf9YVj``M+-MIN^fN}-r4@8`SXK3dlANjZP{h6 z89i!gu4T*2!5A^$7OfLexpWJ(h)}IVm|Qi~ujRf70CGrKZE+4U8rq~n^erHmO47m(w zP7v*{?Pou@x7^?sksbEv3UWg?K2%3L3T1^O-xp1{?1ZOs}GH?H@#Z?vs_=S@+#s z=)csxVmrv;i>WUbgq18lvEPPQ9H!H5UbH4onTE(UCe^TD(XH&MLN-Aq}p;mv7fk1Iit3&E@Pfg zzTKv%1LQ2#YE!9{h7X%8`VY_yhhd$%C8K*|XvZ1c+P;Mg3m+^g^e}BJ!fsY&wY*J{ zyP)|$9egONw}CrsI8u0TU>HgX`1&CGO#YJK=jih>%#<2X`h?kM2?Q+QiXvK8r}PUkE5Fx z(d#>$B~yGNvBQ|IjnuYJ<~pA_W{<1mTYNbgp$?gYrU1O=5ikU=y`B}kwLRbdj0F|- zmJ6VXl>Je8-H(Y+L&Kx0*U!_&STSstwZ6&!hlmksfgW5}(9eb?9h~xF8Qw<7K%wAm z)F^h1ybH^&aO=+$q{}vK3$2_Sz9Kd~`rY*sbL3~R-Im{IP014nLU59tFn4(MSm-!h z$codT?BpCOQ{N2fF=`KJUM=_OF!3r|pvveUs0K}x&&FzfX#3ul=JVZnasVxu6?zv&-)H^-Hh!9rd@? zz~ftc*Y46+!@d&MkPOVqV8zJ{%*{0G2;y2Vf4!dWwS7KQHhYoS^j$EOolrD)FJmZS zu;E$p6R4C*B7|KsDy)rf*aa9nlBy4vI<2!I=$lunPm@hDMnYAZb_)}q^U}3(=$}jW zZumC^OAdCcv|2NRs9c4}>*hu~q&J=&&3N|HyWNy9Htn9fiy zK(3BiHG&;v#s;I5T-b|D$wVCC@>Ma9(r3EY5$L;E)4|xFCJDMPpngOROs7+9iX?8S1`u1RFEK9iv>L)?U^~l^DR$FT_6V!F;%! zIW4j2o6TckQ9Aq6l3sC|jfu&IRedw$HvK?pQUUpdD9gCgVI>?%w7W2X--r4K^wDYk5fCN}_@8 zYh`_em^qVf?eNTsYu&70+;+>sS&Z!P?uICCaV;+({Rlfl@f*Yi`XaQ(9pb@ z4Nh2cM!ed!%CRHMIFw9}TX$;~ZF5A9FM!OY9~Aw&Y3`~kigCr3fSLa z!V_2&XQhPXExkKpNbieH7S~jw+jz`AFAX;vk*ck&nCBL`MeoI%j(y}ije5(n^Co;R zJm=f@#gJ~ao@Ro~mRgJfXHKH(BF=2ne%JC~+zjNtM3d!Fq$O9=78QEz=VYukuvvjY zp(3~h>f)?uMu)*PMlcOPq*6n+Y*~Van{~K$KSru22^Ecvi)rC?Rw&Ax(jnI=oh>ovDSK-Q%7<+yLw@k*`6Y9bs8kF`5x@d z@RlK-fKs0i8Z`9JmA$uUn?jrK_jt@8<@BWZ`R(wk#|J zWANg5D@WouJ=SRTU3w>qx79mfiH?z}F8fB%MuNy0D4;olD4T3}+xhM)=vH5!={C2G zqP4I6yUTqbdF_+I>~8|AmlJy;liW5p3>dc|cu6LQ0pO8wFZOHrJcZcyF;Q*t_m z?Sl`RB3o!%L0Wj?{?|ItsD5&x@ADq5r}-i~PYg7Py83nYH;IG{Tqd~cQf=}cjRXt; z>_KCV&0%e1QpN|1i)hL{kUb;nRP6d}DyOyb4Yw@eII=_3@c?3toX z_82+a=&es^hI5u5vkvP2IcVdGl4BbLFGUK)mmtVo6)NiDs3o_09TyL)uIQ8se>^xQ z81=V$i*;l{>CyMVWp2BeTf@tFAn{Em-g*EF4~=6zj(>#Q9C^dylX2qM$j+o6nljI%k=k@G{oARU!*qs zqi!a!l`1~sIT};|4jlG0UYa~mRMXpaz*GZEJ@PW`Z?7H8i#cdUzOYfApvuruCYBNM zHqj(F{1{mr?J}*h<-G&_JR~*eN@*7 zsyaaY^D9){@6FQfqf)%li=pT~Sqm$eb>o4wdoDDQq?C;I73UghS}Q~yxRs=@HUI$L z8u*@ptxJg2vVA|L$ZI(i2jL(gqLO*BT8v@;E3{>fH}<{^+uBIFhDXEmErn^2zw-TN zHf5AM2N)wadoS<5INEqzzigi-a8bNDzt=INc8s@;I%?Lp@zW5ZSg;q&r5nh`Aca`w zZ58(N@hXwDO9?(iO<-CFkV)mFivxc=T)du_Q`i5Hx1nv{Hr=D20%mX`&kyV}id*-F zBj*ZjBLXjC&3?8)Z5Rn_i=*V+5-)z_`(kmbB@94GvUW6`zJ z)%6??>H~H5FMKqOvO)mI$E*yFX~*uR;zac}OEt~&UjhuVJ$?X|ZW=*rk_U{)HbZpO&!uz(gx@ z-|Pyl8-g1O5*=C^3lEz!m*%f{`WOP1Dq3P%u%&(PwY-eo)ZdKl*Pj{z5m=GcihdDC z9YV3L*IJVy`T<~|ypEzZ+tR(**E7A#2a?>s?R}U}w(C;NT$X+Z513BWVG4HC9v1yy z7QkuHsz1BJh3wDn&}zvY4hQ1p}v)uE+yUI?iO!4bMs zb3F*IWo;>WPwl@$W!*Z39zkfRN;(|ZpEjx{Q7llD_sF;5LSA@UoAGgbkBp*TiC+~F z4TbV?ke{<@hM**-(jNPD#I~rNgdtY2u~J^J{5Qs0{7k=fnWOLEajM9 zGt$7!o|`h)CCwLWl|a<*x>P>juTy&_np-BKAUqdr>>K`gToyzP1Jooia2d#J{@3f} z@Mon_l+u|+S^K~AGKoz45#`QWnVrsBTmJE=owg+3*F?79QXE8o9Q1q;!;Y)#2MD8K zoSqpxVho50$Dv&pA2Ys?yxnXm8$V#66H{ykn24sjoS=+$2siS*r~-3tGeBdE5AN1Xt+$GgQ9Q?i)7?k`)qU(*R0T6di@)bg*bGnj~n`0|)4RCtr#&g+7q z9Hhvvo0GDMS5&-qD}4{blw{G=T3wo>k%#*PjyuYoWQa2X-*@WEf2hCwgM?3Tg$lXKGVOx!XG4S z;$nbNcpOT2EU0+D5Z>&2Wb>2ed5nr^U~{*AKNpu*N(%!jj=e&iy}`a=x~uN zqV9kg8=22AYyAa^)ZzpwS8xJvqtYt9jrHVE(*>hOs(HP#2@}UTSds$`5ArkT8!PEr z`R^2DbJc4p?UJssK};bI2^xIZG| zWC+r&8Ll}#b=8u3BS4E=F;*nDDELNgGnrTLd{6dV15hR_OTb{K%t6NUn5K#mjg7JO z>rVVm%x8{KWyRSI2J86Rx-Ykz9i6agUm3fnf`z}E2))ySC&Nd!eIsAX%j6|3qnP5V)FCKpi?U&~ zv1y`wErUQjG(2bm&DlSNs?g|jt#326&R5OSWCgj4So`{>feY95hd=mit;Nd*h5o`K zM&EA)sgEPIt7$OnK<@`kMAZAcS2R2I;qSiuTFb+0DTiWZUVWW4P+;XOyAIS!^((zX zD=9SD>6vu?ED5^()Av!W0R)yx^#J$wTIu{t^?ti&21~EiDBcvGhh>JJv2xXW_Oz1XQ z#6j{(xFL6DZ_3bwp%<(BBDECrgmmGB@7zv0^J82=uj?h49;8Mfyj^d|aFh4Y{+E0A zHHwiEFZqH;E1@vXT!5}i(rV`{RvUa)I6gy?prt}U0Rf&`F5n!KI;ym?H*FUOK64{p z#k^T`7-eG(*_a^xb|!&JQ~j?_aXe*)_)C39#no`|6!V#$9|4O7!o#BAhQ`9$V%O`0 znGdzu(+{IXGIV-~{G`5P{>xSaen7&b4n^%sn0jaqVI|;jeFDXWo?ik(Y<=YV!&JRx znaqpfCOi@+nyxRjZr*pQfCV#xK5!wpmuAxjezG=3kk^Ao{APKw>zR#4ErKYd>w%Sd zT|rVR$9=lfukpDc81j0N_y!4Fzvtujl6o{*R3ytCH1+-wCJg)L)ma)WM!D=n6>G~W zaig{8KXt!yYcW~&78zN?gc2erNjM-v9;7MY(Bh~wgJ&9}`pjs0M+boygWzou%JX(! zFL95tChf-P2ZYy~Z*62-6rgYs%DX*_$3P$yGxGmvHT#>8gl^@%+ci!8w!ep_KKwCj zcr3U(Wcd*ww(3XBIck+kpQ$ay%0G^KK|geVduja3UTsr03RYZOVxw?Xr_Z@;6KJ;Q z`tgeeV)S=T*}?@>=@)xgjiWV1S=+QeT4p7;eHkK;F_?bmR0bRd7M=p8LQrt&xQygl ziY3Al=~_zf@8TJeB50tZNJLuXbsNgOT?A87DV907J(#!Ct|pWG~()G~9y z9~w5!;6DrqFd{l^KLHMXR#Qq%?F5Dy7U6cUivcZepAZqT^EXmM&2`TE1!?%az--{>~ClHr*0a7CY@V`w4aXH+~VNmd;V0vgR@VC=N z>1$-9N$?0wgR8A0q|;C_=FsrI`+6gnoNxy7Xgi60iBuxjhQ~?Y(ECtn5#-PlHcK|Z zCth>1qhe6zQ_lEHIfQL496U+1?j8H82ScDux+d# z$LTRf6#&*qlmqN-akBN&*~U=&9IDn!7%!=T5OB=lAq_*z0!6TnG!jv7`vW)FzV&2G zx20TddMW3FIK?MUr3t8#i3+F&L|Hs+IEnl;-$}nUdT8~BOM-2u!nos4sgL9Ivz?g$ z!Ff|hpbnGw7S%vkiDOX!EUGh+p?}A9|8%Y>e&)xKnCnY&8TJOk=kQWsKfosP4BERh zpV2YxMh%jFJ$26)jjsYqL_aM|pg<8&uW>UuDOObdgx?u>b>ul@cgnu&I#1yaF|##^d`DrGy94`5~jc>CD5S9tmgc>M8di3pC}^$&@cp^JoANF+7ukqsko z5`!juZ#+Oqmf&BD7ysS(2>Kwq+z(}OV%@}bs)j{@=w6y z@M^=QV%o>yHUdSOFB%CNFZs~$hKOURV^&ogd&zHpR1-2>JOmiju5QVoHiPA$e6sJt zm1%8ZjUCD$PGo}?s{)IdU+h7jkE16xvxFPnn#jf`k1xG8x#EiQOpq5!??VzCk?=Q6qJIAk?sp>@}`J`YY zD*1xbDOC;=?A88?8v?mlC+sAh*$e0>@uTxrd7=7(BrDb zRor0%pXk`XH~^BaeiCM&RR8n&2DGUft6Lo5+`wbm=2eMw(4a3g zPUuR`SH)Ax*Nb11Re=xfG-5~lE+^nghqf8jI=}g4QaR?3f3xHk*DO@G_~FyXf9)lH zG5%)LMqAuGG7oBbUTQ|18w1U@5G{6t?8EVaBK>P}S?)Kux(|SdYAVdlqZS|cyUZ=o zb#awpC#2<R0@PrXQ)2a-(}H^eeD#B(9ymbB_5$mKaU@uG?3A) zepHQl>PpRyN~@KEU4NaP&;%lDt(Md}UqC~PTed6EvHl&1TuLWW7f8K_zB1U(OpJqnG}yvBKDN zt15TP#Tfn8j>&IXYb?2qKn?r&Opy#Awl$tjTZRz~k8-# z@QdV48bKv4De4JLf9tH4Ygk~d=3sDYCrh)l;&(2!3@M)FvoRv=;8n6smS`a97th-# zq}2EdChlUm8^7@+f|GS!c-&Vo(C{d@M;k=GSc6Qm-PuY^+e%0*SrwWV>T1+~W~!fJ zcL_Su^+rnSXJuFpLMVYNQBCt%O&4MOgP3cp%x`11XRUQM%uZXF1H&Ol-Lsd_xlj|Z z7%LcgnE4z4>Av1HM8jCU{13?eKPoqIyGJBqfom{ApC`Ik$`X2T74v}@#KBxtj%w^1 zeTv%1*wp6<`F=$gFpDtnVb+9$6!$?Vm?(kQw^bK4uF8@-`<~fgp;G)xALt!8DvcMn zaNo?VU?3@#5^UT&$WW-Bq!E$?t;%yI$sk0-%f_vu#JSyl2zP$hDiD+V9cJ>Kda1<} zg*{s4f_+zLTE^XlqUNzd{zmMy8FRk74g)>@I0RMF|9YlCt_XWWO(NP!mh>uLv6}6^ zpZqf@__B~`QX^@(E;vIH#-edKHFaK4=fy+SL@BfROyI|rFXd3{~bXj*U2Ch*V)Tb?3dCoa&HOj&4(;kgw_mrpqmS!E55q+zRnE9N+$$fImwgE(q#%{Z$Q^0S|rH;gkR*$%7}A z-~+TZWU_K%==@nH?^Bg3Hk}L9tYE!GFQ4F30bP`O)HglGa?pGYJJ6+eH2rxH z^5@TxXsubtMi)0?w6b2(jG{>UVk;5#Gp2G--kES~EHW#li#;ZCyfT$z(M|U-tFjhb z4?AMCeD<>qL6h=L-soj*&g%}(hwjI+gJA;Q8)ua(DR@Z+j$hq>0Yij{qn8`|ETkjM zzt9?26CVFaPj8!Ej3_~VN0AYi25F{cBCl5Chuk}0gvK=upyO;!MmID|evQ{?5*t>x zslV9}ow6uXoyPT=qUjAYbDP^TIiKvA;GY>M_DtE^e`qLKU+VTLdhWvxE=);MYo9i! zExG2Lfg-0NfY`D4pS4)pC6U=Rem9cXkr{8?l|zv{GvZS~`~cOB?wb(`XS+v1s_UtE zP(?xt)m>sh3^3LLD^&cUc9G!i5!z7le#8A%9Qb@Fv9uz|+KXF0w zAiF8R_xF-hz2YBdxO2u=_@#4c0q47JHA6W`P%}y0p@Nga;>&HCy7;+^Nq1>VN1g9# znGp2Gjq<`9a!=(hjeFXOwFS~0a&JDW-e0A~t~>XACaTR9{3*YbmhX2}c2Qruv&?N8 z0U`#XyhyQ+@)f1Iu_8u0u>W&p(YXc5XlEzKFAAw#%PA~iyVKoRJtzB)AftD&Cx^nY zbvihFSC49GG=+Tf{-PLzy;NsmWELv%Q!e^N z%C8k3&_tjfMw>NerP$d|J}zK}`_6Oj%&vmLlIi*fh|Uq^b}QX`m>h0Fr_M-uFASok z-pzd^U3}@Z&-H?2KxdfgSS8qaf4T$3uzmahg;+jog>YX#yxnQ7nAUUcTg~)(4!Yb? z%ez2`cvp@b67NmLq7{3*J6^#a?r#Z0-sD@9sm`Iaz_9azuQ#0)k6g45vqXhq==_w0ZR5H5$P$xWp;O; z_zC0+BN8vZy_Xgn(a;VKWAF%Ce$Pc-Fv<#}H9yh!!4?PID}|7u;;SyusB%LCpj^s} z*R9g@?enA#-?9nQ*losV?L>e5JXM8fE>kqs0M~08lX;-#tX=-DV%W#V@+u~F4Q{l!y7{(ZXpK1$>-_5}@(Jfmel z&BKA167Dhu|8L&#tTh3AzTFzxcD%`QI95n+$T#G^0S3&C-NbnN*R%Q=YP`5*?%Bc>@S3BoC$rR77bUf1rLl)XJBXN7sK~K=lQtRFK19#B{e>X z79I5cAG*~^3^CH%`-gGl_AjcGG#p}8?(GqX8EVi!Vt4-}l z?`w)H%}?$@r)2^1NQXhzQI+*W8?hsTTL*r5<;|w%^F8`Bd809VXk=CI{aXo6`w{f2 z6m(|1q3(~je)Ea`JTzIS^#pi7tEou9$VjgU?kMu_$xlD25^COm2t~+~JG|ZJ&#^@v zF3Hs9X29hX-T&Z=v=KoHnG7PDlwE@(7R46Yj|SocQ1Ks`uW@!UhROc~G9@+$Yr=)B zV0kbw@40TKQ^+P8?t~9b{>YxoWz;WtM9Y>4M_#e1|aSs4o=tNqlenzs}x_I;<_Ee z!@pXg;Tbo$o8=fLEiQ>jf~HJz-F$VF%%OjJ0Hp^EGe@PRQu&2Hcq2~t;v^tGRaB^mFt}8JiP&yd~LZb9xyP#RBj%Ji8UEiWU!Ue zJh+>=X=NJ!Pm#pcOFO^I^A86t&R$#S=hXMOFr)-Qh0ns4fBk`#k6uT9TfO3G$BKD0 zR{{4?hSp;4JAN&tygSnSW#cLu&re`kweC11veM4&yg$n0&|+c2Z5e`8iYoF{cB?ks z7uSeSZ32ueJ|~m}p2BQ?X%#0`#znjpKVEj#Lsnk*-(U6D>w<5{>pZPBs~`(x;Y9x& zucC$DS3Vs-DSfU?m<_fB)y*fr*NbLHstAL|zT$R;N*j5E)Q)mIBs1@!Cgw0|L$D~T zCA3xv#oB6-hrk)X^ID3*t6g?2syC#6XrDrc5l#8YB1BP)N8{1|ILRnlKin&<=*X*uPwzZobz(@2%`#{M&tAr@TUiE-Rjh z6l&X=T_ofR6`g`~^83fy2&uR-#7}1`S3*vrUbeZDhAd*mWkrpjzj7^IPt=Xtz^?<| zXDe*p*b5va5W@?htO1*NPp`sbe+F=;DOIi(>Nwu9E%0iQr50#6_S@gT*nC|LS^sY( zv#Z=!twk~!^khOV7AvSuD0~C=4We@cAHi=PF({!PiwvQVd)t5@i6l=y36a{)-e1iu zkycQ-3=^Ru_Y7}gQH=^B585Un3x6g?6z|6g2Ki#=xTbb!fX$(rbWR^>V!*oLBjE38l7#4-WfPjaZR3?xW&HX+ zC;dVtCOTz|EAevIUYVI#do5Q3DB*qoypFXU^Fe-l)$uDE=BRW8Z4Z%5Qzn*)QjSgx z%=cvy!B2e^-=vZCeQd&p%gIi8$R8DL%=lc!Nzr~0@)2?kCG>`}_7!2;F9mPuN|Di_ z_vr&*PHvRp%T#Je=q*qXK_;Tg+k@`6(!prVWsHWp1Nv>%06=CDM0OKp&hfD4ME)9X zIKre0c7za9zmHo-S0KQhVq6wm{;!+!q!{KTa6PitzOBr}A7hfK-vfJ&%x(~#?@q2F z<&3aI#Ls|P(eB&tC1;jR7C!^8i+LKVW5ZbedOKyFAFE0gO>O1|-akw!PYoZ^&5ba~ zjaem5h~X`ndNh)@zKT1}#pYwt?{O?2=X5YjE_yN7^_TEFlaGjP<1yVaZpJPn#@@07 z#VqJt-Xy^Wrt#m=P79zm0>*cZ(YpWFz#F@^m7B67M&cz<@)ycrv=Pz48 zQ}?I`tR4w&K(~@DYgQ@9u5m*chLtc1BC1Kl z)vDQR`E%&HaRGF7Vjo>EDHNNS8!PCrXqRu2@9mHC%hattH9`W11QSkX6W#$&rrUG!M>>OF#Wla4Vv`WV$#7$O#*<-g-`dEt5q$phe6VV}Ys~1PFnmw?Xz|TLd z<03#qv_9pr)8X7`h)v2bj?86hOmdHd92Qn-ZeK(h-_gmo>W}&vHs`*?03b=zf>_-Rj=#eKq7V z_`YMagAjpfyH~go(eo`=AzsuCWilFBQ;p8_g!c-fPM+2KXJY&sege0|OGDfeYvq`g zE(a%TLg0Poh1YZRkAJ^LPv*n{*^vnuxf|X=R)*P?E_wF{iv6$1&Gysi9y{=@H*O$= z(tU(z=hcNTWi;N(N=gNt_ogijff?hDi3gJZP@lC|WIQC@5|7)d>wAiQo>s9pPQ^Qd zb)hDJZj-dzZu84S1oQ||I@x%WVoHFNViwa(eVh|4Yg~x%6EOVF zn;j;rq4y6jvy=O*lUK0w!q=rKQNVZuMZAqhf72VW9P#h-LGq~Np)G|l!(_%|Sl=S} z-okvrBjDgBPZBSFbnD!wa!h=2fj%~uD?GYnJ#wT>Y;O{nU(fI`vB+t2Uz$bx=LN4I z39x1lK~H#Vp|}*s9Z7j4yHxY6;w(x!?|KzPcwCSp_Es*0tZ-r4gXj+jrPxgPKL!>R z$!AKQ$esx5|CUXKM2H$V^>WOZO@pYiC$DoxoafQ-2uR9t6fNr1L=bN^`ah1tkkVLo z@aW?7!eJqlef;5wa#D&Y62LZLvL1bCwXK7CRGPK-69n$prZbJhAuDHx+*UfYTS7a1 zphF-7fs?*uadzP`L_|_b6y3M_Bea4`!?#n>O@lE|W$1tbo`3=2^tTvl1s;IZ&8-+* zu@iBLr6!>x;}p3KP@H#;+~qVb!pSp%(~Ufhh}<-$uPv z%O|jnI~`ZB%oocKwC3Yr)`yZ;Sc?ebc)^P2sVW`YpS_FJ#yI%&-i|H-`-Cd_E=yj}pI z*%jXmLdZ)NO$QTgN(Zs#%$5xLK&?W;fH%z`Cy+fTQ_Q!-{RL~~)^1_d>;mPSXd@7| z24Q9)<*L-G@%EQQcEN+78hYoq&Fmv`x$iHiMsB*FM+7cILvGbkuf^_I!b!^`A_O;i zkF6suzEkKe)eXk0wt_KL&K_D^a{M{JQ656KWZ>o86DthZ{6VgU_)(*5y z$@~AuZ{t{@*FCr|Nz=K;uCSI2Vo=H-N}4d^TyxHy4^5yD-HwjHZ#VO7VPd#c{KATe z%7pE}EEt39+I?4ZF_iJ!012m>aI#(9rRlv*H&JfQRRpsgRi!$LCrt`(Vm~r% z>Ay3dEvss<*2~q&6#wHHj=FTG=kO-`oBcGk98T#BIBU1sArg*;<%Tz}U8^q!Z)6NU zZ@CWAiX*iq$A-p^g;My=#TIL>)WAD$G4DpmG%x2T4r7UtRbh+(_et2 zOpB~`aK2<-3Sev#@y5zKp9o5dp*qlTRgXWI#hS2pCA}05homEVO4yfW*Nqf653O*ttik zUpQEax94IOXxg#AKtr80o)${czu+$|Km~1$;otU??dN_u#d7yYEem-)&M{8Kn%oZy zt|`C+Bf<#Fv5)t*#8zkq1!D(T^gr#2Wlz|=Iew?vRzQC*72~FG$C0$F#&9fx8vSSu zlQOJMs!fB=3862pfP3T+i1)pPvew=q7&XHv+AdOoSN9DW6%bL7%9waMQu;RgK3nH$ zsl`c=)~~|)Iu{~;mBG>cn*P&H@{2gy%td8*GfZhSY?*vVc=?|$M=gec=R;TDcSs4f zZ^(^c$ZA)G0Dg(xa87#+Fg_PE{}1c6jM(r-75;a3`b1#3>oxk1+(x`s^KQIAM!qkV ze7y^13qkR&zA1_FDY9I9NOhh#O2;47&$JD}mzq~G^S0C8f!?|-vDS%g4)RKPq6^|a zyv%hH4`^rxKTdmpY9whm7?ym#aB=vJ0DVss&r=n(CCa=1rU)qt+;#k3A)*M!m@-{! zda?1kH*itx7x8=e?4qhmLMKqd?bhJ_8vz5BBW|Lw$5X#UqAqg`vFb6>o6}JV&~mR7 zsM>w|;jx~+$wjrAhSn~|=*>W*k$^5VtZq%=C$jkxaEp04m;mH6f;3LPV(s}lz7GvK zQ4d0lZZ)}&uM4Sp-hAIJfNCwG?LK=3E%J_vKj`b321Q67bIa$L|D_ttynOyJZ5VvO znFG}ue;${J)F3(jtMV3jC|kNRC`hAM+8w3uoM)y?Mmw`wd!jBS#1ygnuZXBuQzAedc!4FzCM-422(l`PMmPMgI@(^^OC=Y5MbJ z$ukfR4Ua+CCYyD}qpZ3-)Dg7Zjm7{!L}4K%^kLs5Rpr2bJDu`^Ba@!PEe4#%)?`I} zZji8e?QR!P!E#h@BF@#+owTX7RcGs6WG_l8DmmZUTOv;R0v1IkC)H;rYR^fKD`6wp@kCO)v1HFIn6-Sc7enstfyk_) zacK_JOXy|lv7U4rM7cw|V3DiuNI!LEA@+s&e!~@Ix|`)?qUK_DhgC@ei6ae6e18!j zxk;^RoYMb`|D=KST@*O-#SQL8{Sdbk4;jVZ_4S+7b?zm2%=c`Ie?lS{l{`>y`N4T` z!@-Zd&mvjqKS;<8_gr014n@N5|3<=L?Og7I|8<_08NOI3Hp2L>Y|Qj;Q(gq8VQ9dA zd5k^mEm26MG?Z6^mZH@VcWR>tCx8awuY#f%(=A%nj>~@9b_n*ome;QM&4L83r~!LQ z+)SiTZ!#WZ&For95Bqf;*uoe8=3}3_cksh6zN=TU3-Eoe^dc3%xBI$8+_RR=F3|hq zxI(1~ME&$zeuNd<_3_czT^5@Ger~r)yc!87l~Wyw=QBqm%%*ywDwAem@{@oXswm56 zY$zPpBrWg^A_fx$FHUR*yp64PZsT<~7iEti*X(-!O8^R_aSVU#`RgN&@l53`$%T@ zHmk6bf1KciTsaPi^n)Y@o_Y*TxkEX{7L_bFo|=f_Y}Z|h{udXsp}1J_A6#s03M*Y$ zOzvz6{u4s9VTT^qQ-5y{AhIbCP&2A?cU>h8_U{$FiWCU$-6#ESK@P?{ieGWblkJ_i}61n8r`2(>v<9?h8v}$SN&hP zj^IEW8Ic3i5OLUjw`eZ06he>LO-iOa{-FGNSq1W66`A`tc_z>vEB>k$>A^&}u4QDN z-|5yyt6C||vM}Z-g`a51PFN<6Do>!G9@i4C(Mo^_F@zeY-h5#O%utl=Iwkr*uZN#n zp-G$Q#9jNO@8ci(AB1J8e4PMaE?YauH;iY&TQy_Pg%H35bkzTLT*J?9bKhI#WA;MA z9OagsPN-ZV8qmvoY7bz|ai3v@euf!BWeb3#4AomHdL@Wi`OIaTe6)L~A&kw=?0-1H z97?D{*8FYYtj6Tn*!zO-!2mJIT?Goa>a)S_uv!&UCs+yBu?xw7B*N)FtA)!Vyn--7 zn^G^TfU^*j#eD0uCLVaE6`!H$u7dA32AiCV#N%xGC3APdYR=p)$!!>f+5rC@mS6ex zm{H==j}9Kx{qaKSO6mU!IwM@5S02mp(pvU+s0ckRzm?7|pwL8Px+vvz^-HHsvEI=5 zV2WO(ub0yo4w?&&>Dzb$NCmZ;C56YKk6=CkaK=&%GZT3gvT|Avv28srYT#Zb`Vvu$eCD?Dd?4pJ6Ru_J-Lw6oW;;o$||Pz z^U9thgGL|0v_CcmD2E1fdW9^0vC=8Ci5x z^O;X~^5GBSZ&z_c-Z~e~kMkA#b*lj1UU??=Bqs>*8ECfBt_1Uf3+7mVXjgmMBsq88 zTIvbuK2P1z(@B0u2bx@yr$v;T?AV6|bc^a#R-1c5lwYt&aQq{=%VSD|a&htF_$jzwB?iSM2NzQg zbl7$ZvE%GDTv`cWmI`xOhb}$JG_+`$7&QSPE$7?O-9F z3xkdqIK|fW7BuR7c_vxpoNF%*WImBl%l0m6%kWY|^%^+%)r`~L;Xs$a5P=;O+Xp94 z=;Va>1*a(esYG zk-6pdN2DAywp*oit^jo;$^s2<>Bx>=P@{xTC*EEb*cg+SlrSWw{0e^8AEjPP=19P_ zqMA2Q(>>Y-ahK50oAw>hS`rKkjJ@~jt~{#t)@BAIvvzbmwbI^8ZmgsfxAZ^0LwZcOeR~-Q$W^FTBt$hL5>CYLb~5?*T38pHU`?BE|gu z*7QhYk9ZXX(v6Y-wSrHF%PVh1Dx-AZS7E}CA)&inDy8i>@oqYBUJV0LZ&58wO*1J&@f{>&bQVIE>&I z_K*va4(U4e{i@dVe1G(dUR@ow!*+dQ3!kz2ExIewAoKBXdd{^e*R|#a@G5^%ApKa- zU4JUco?*~)5h)uzrTxmZ;vZ1BekQE+S~<<(F`&4;mq~Ry^=Utpam#NO)8R~&(pNlz-))mTrq=6Q*t?_2g5Ayp zselK)Po(bpQhoT%GKxqn<#i7=@1e-SfDe}Wj%Q8IQ17ybq~;_xQcp$E5G3C4fD{Wi zQgGp_-Iv=OY<=y?*yeg-8@2hv#CJf!cShiURevuboC(0yI@K7G@v)nMs``#=@czs!xE~4T8q8q=jG%Yz!8=X5=Sxau zShG$59gBC&l<%Eae|%5z7PH?YHU4$pM<)Sf=I3Z-e|U0)bPX|WPQ5PkayIC8Wm)l5 z-V^dMcgyb4`&?KdUI>c;^--QD=$lY*N{i6$s_Z*=aOtLU4o;JNb(|jX$%0V?jkc9h zZ2n$nFLqc~5gD8y#sWphi7?>d9gw?=B#PFF`VXXHiv6qG;20{Rld}C!Gq*g^)yw@C zh)shqGliK^4=*GZci*=@`XyW>=I}`+Uj9zEMgHK#DD_y-yk;O<4k&Es%VH6%!-6Nf zjtGJi)EBRVfkJhpm&X;icqSk`Z)9b3%DkiYS}f7b#w&Fb6k^#pgO_Xe9VdKoTb&=qkDHd1?vz_I;Sl&5COfq6;t(`}t`$1B>|kW@iM;9wt^oDp{#7eUhF6r+Kp@?T1h0=2Pgirq(cu zeLn(*_+rklPkf1ZUV2Xf=qLuduAK-dIHH(*@^$hyvi6N+Uw^rMFe{ zv5u&RB}cOdjfLsqZmd?gi1ZSA{8VxM&nrrufh;p9INmPb*Qz@=#CxT%wypk(R1CO> ze858Oa8N7U1}4!^xQz#e7QpG+Zin?4f1QNjN9SNY;USG}m=W;yU<_Dzav;4Pk_VC+ zlD0Tl+KhXK0UlM1AIML-Rn^m~M;f`k7DjXBrb|FkGW%$U3#}H&fP(W~JK@)!BrKk$ z)z7ZBqD#^&GFzE!9AltRWc0!(mBROUw@q#Z0STezxeuMb!$7B+wB1J^hPm4WK zp-e>75Z8^eRE6EA71kjJ#J4k}AX?aTL+{>wyi&!y-;zW&6R1sp*oK1ZVVM)QHY#ut zi~dgC1d;{IY{(}j2`=E9j|VY7Fu}_44)%n;&->3@3Q`o}7 z1sw6y_^8nph~-~I;ixhLxIC)rvjzy+ln%N#FY+k+=nU8SzXj{|R=5Pj-`5T+&0$aw z6lq(`*gYwonqmG9&3*Eq?_6malsJhF?f11>6_n|Y_JNGf=xr`mm1DlJt%A!xb5CQo zXH0RoCD(P{M=$25I5-avdK#BblH?$}(ZSve}ULv4=sT%91+1tC;;+zaL! z*PxAnP6`7K=Rq^UA@422GlX(~2|N>|!kMVA3Yd5D_)6)?Q($PmF030wlF1ogo^B`bl{MoCW0 z5-aO@iYQ{#9FMMmH>3bg*;3)+7pp+ac&38(cZInLX-CsIe(S~)tm=o{&@C^!x7U5T zm6ZTbK&nDW@3@{X37mJegyl`PnNWx%@BsTGpZvK-*FOA)|5iC0@DbNWB#tTiS_a`! z1>;^W*sntEajHB3v!(vjuypcR;FX`4X3r8AXkNj(uv!9((Lh zQQd%beX~GBjC{I8jD;MHb|Tw<-6R42h0vbyb1W1 zU!{W3rG+0x?oXHYYRy^>qt}VoSkD@-B*<0Lx-etg;Q=ZVuF-U(nTo#E_V?ado&I#j zKCm-@_FX-$htyA8J#J=~<<39t6KBq47bMZ{R@3b#g-TWY)OV@MNfJ2)5kDiAu4#>r z_(P1@hSu|zkpbio{pguy3}LTTDVdsx`i~P16|kkP4+b8tViwPY)1mZq#r>VK01__x z7igA4(f{~D=`-^`bXmrar};~PZqMQ6Ic|yQ{7Y;LNFir+=Jptd@hY-s0b4JR6Yp!5 zSGvg2s0;-x*&FdRnfQYi(IH$KqlEx3kC-j2J`_FTYK{Q?k9Tl@%C4Z}sg^sy=X-N? zuc>pH04dW7hPla~z738>-CG>5r!h-zOa=TP@AmeJd0IOF@^;e@dTcTV3XXgO_QOC9 ztWKQA9cI_g>)UN}_sQnlec@$d@!7`1%Q)mGEHx$URV2a&ADyUCvf_VT`$U}yw7J3f zDrG?NM4kRy9M701*$B$KO(Xti1j$=?Rg>?Inyb9%kSm~RwHv6ZS9GS=ke?yK>1R2t zEs?kY7wIvc(Y!O3YtyE&pOVxxfYmNT;_NG53VLTWs_Rw2Y1fu30{C^rV2SQO%Qp6F z6Wfqkj8R8_q+UGek56~p`y1bN68NUY%1-5-a8Hk~=9*K<7Wmey=RWY)Z1i=5H4BF^ zTXW_;`+z%-_eM;ODeQwFV|^IEC^Sn7hRhpiOawcsTKYdo9?v1af$4}}F7qkP495&D zD26Kj-uJz5-#FtjL8{Ppx<2vXaCw$u1dxtlH@lF$Wz$FF3xU4a9o|V|@E89-7C;dv zNzyktTTup#mIR5-KzNnyAjh2N4m=6Ns90(QTwr0z6Ic$&dI53e1V5Ik=U8UYkxBVk zP>B%eS3na4?trndcVMeBw1|Epoz|l4jZtT+_|`zOepD9uX&y{EYSc#DWn`xV^nKoe zPz8|p8x~P09IsaaRiHzwGJLpTu*Sg7#!I_QJ0Eqy8Glj$Bfg#Dh~XSFb_UME3HH|j zf+*X*(7|_e>nF!WIf%F+n8yc{0wgkb!SrTl;$VsIgAnR|!`l#4R;f{Ul($r8l_Up0 z+e&ZM!5sJ3SmJLiqc)~UEbOIE!`VyUUD_W|$|cHm_hFJS$8IYqOG)*~UHZ_LJsnFT zr&&cU?`v5n%G_Bs$*2NCspN(2W(JBUu2J^CBX1M_jmL7YodoQrs z4e4v0E)XJc7wt-L*F!bA>7}>}X^d78VgA}G|48goO^nO@CG$=j%)p34gw>F+%MQ zxz8y)-`HH3r4^BTR4I2<@fx7pS3007!`P!u%WlA4v3lDubJ=^M|DUACV&x+9gj@bc zEBiad>-H#La5HXH+k@DIzk!$h4hdhr+&If42)!+b?MWkyn>X_+(1QS>6Xe zk6~`;WXp8)zWBIFv2>O#h%O&yqowU$H@8}l9aYoLuu}&G=Thdf{EvZ*6wG_yT}y8L z`CsJ+jrop$oxjN{RG9*`uDp7SuNF(NpPOgglZR2lgKGP%12MU-;gWY-wx}hD0z>Ue zx;;F8u0!~^Jw=xrnYV5voyO5J6uo2N z(>1bh9(D&l>FOQ@up__m#w0tuNBPOe`=)g#zWAAnzFS+V|}C&b3N>6ERR=m25VanA>xY z+n}mfTHL@D?ov(y{C8IB33(^&xoSIVq64L6+d=P3uc?sF_`V!ee$+{E9DyoZF*q2Z z+`ZeN9;fzGxs#-N2buWrZ`wG}j%ZKTVn-j9knQP`$G#fg$;fQx&bel!N}tcg4BLYqdGv^?VonU-AK`H5I z(|4~=IYK^6zDldOck^8d>0qna`1ENec;qGhm35HDF{-e+MR#@0-x47-WhW#?{Z-_) zMEPhpMpE3snh7;|{i{63t!24bgJ$~(cc0ab1#4t?d&8?H8+9yr(4Gc?koSHFKAo|| zN5!(=J6N~-*zY43QXGNJtsn79y&g;*B%b7(pnC9RW;35e z$NoIOSdPXAS*Xj;^_GGt!IZ~`sg9!V#c+>H-Pb6W^-a>urAx=)C$v)Do+u=s-`u#+ z3FGci8ZRbL=UH~BV%ty4d5#Hioh9O~QVO#ElzS*~lDS>JA6{9cp0fw{8lFJCa*Q4` zqR8~KH~2T*&cmOtGPD=l7+D=MYum#jSuj(rNR*kkx>Rg-tM`Pl>`DSvR8mdL+iSBk z!B#}VntkDAR{XT*2l=~HK3Y!|ST0>iz9L#rYY$M&C^$$eR!~>*rtO+R3wwx*))z%E z@g*ox4K4j>Eo7wMsuYSL|6&y{yc?-}J(jyJYgOU}D^$qXf3UpSA{R6-?3_)6UsBg< zGrJ*Snk};{nszU<0zUuxMxCpG7sCmCgcl?GbEl_|FLHlnKlY2_L6I~go9EtN7Th*_ zvdvnD@GaO8j%}wsKKWU$JgMu!+o#7MoO z9`e?K_7M=O9j_L)D-FOrC>Ei4?zamP2k&=X%F&pW9!svlZDfQ%TKAz(NK#%!IiJ$* zByp&+*b3T|v-iZg-L~pp+!d6Lb7D4bKp41Eg5_=2O!ZybTRt=(l?1`OL^=!#q2KT= z!tZHP73nDswbEg?ASi}Yl;j+#lWd@mS`4H~N2=h8Pjf>?h-pX3$}eCMH%!!FnCt=9 z96e-K^n{LQXI@_YzU1dv2(A9qa>D2d(>3^mlIl>?6{~+sP7c2jk z|8|QG8n6^rfmi~Q*!sQA(p+)W9yFN%S)#rrA}kQmkNCK<#TXVIS`?C9 zv;QI$r0`{*ykDjwV7eT$ceUj5Y>XaKN3yF6fu8wNnIkg;jya5SskkBG3|rOR`2n2V zTV$NUy9vQuXn5o?hrZMe?PMBQu&t+%uV0ewC$4fYwO11*{SPv}ig#u6{S$lch7@#pJpbhhwD6Jeic-X`Ye1_y80XwP#V9({`i6omlstIg}KtoB8WX`i^Y zk^}A|4|_<>yzJ6?2pdtWnCDma?$p?Mr98g#NsN|dsJ97^+5IpVN-BfGIV!|~aEuVKhJ79i^OHY}>6-rK17 z2x5V{Xlc%d)1=|M*QibDBy6uV*&D2c(PIff++JD3;0x4*RtAD`XHawc6r`TrszJia zQ^m0pbd)H0icDADx;%xK8b7IMcIy66VP}NOh1hQ7QTj4rGTgk@ZDU$DoJ`>Q5^b7u zs}6`yaQO*k&Y?=C55eS&hj23&yx1WThRB@!E8OlpWmx*2IRMv{1WJU8=VDjFjtqj;fCu%MvHVs1q$L8{Lm1 z<+LqrC@PZZ1`t<1hXsY?m|uL}Z;1GsM;M!L`^ZO{meY@m#R?c<*lI|2PSXYkN?&r9t&_#&G3kJJOppr@R$|l@-}shSiCg4 zKjr@LNv3dL4Q`lE5Zk#Z^a!5)Df3d09f13!8MQ$C49?8Jl`FAirx}yeshuOcGm8eb zhFR9A==%gXg{&U&Ptqm@g{(%VMO$oC>OdLG_Irh=fO)4KmrDsvp6_w96C8@Y%l2%a*O|lodZVPgRJyBiqcznhGs6^t&mFXKhhaId4Kp8-1KB*n`zi*5b1I=exv zK*6^eOs0z@Y~NqYZ`-N^hg&|z9r~|Wn}F`Vm4+oH#du2aFLW;^xjZ_@_gC;`qppcF zy@BguhXEytDmg@S21Ah1MkIXjZT6pAwJ@nE@Tk&E(7A z^xI`um>7>zN}?O%WzXcG&zz~MG#W~xz@dlI8#0xm`-ZHLGU@6sy&~D4NTR4&@Uf`F z!$V(Rjs;Kg>UT`vc$91)>>b-N}EGb{;pn>gU374d1Sm;Cq)z~^rF2d%# z4!(~$ERYj8#zkBlJLHY?f?0l7`f0w}KeYWuZMev)?gg4SKH!fgK8Tesh5q~cA{;d% z;OQA@unw}~Btu$xBB<#$q$=j>nf$`xovgJIOjvku*_CSbptMLz1d@Ftl}HxldeP5h zv@fmUDN_VoC05$k^GLx3Y$K^3;BxnCC&4krE2j%`G2UL~Tr|q_)xQ2n#xtI+?5x zS(enoE=ucEZlzHBv5hEPbNDpoMD=e4={_)sHbL>@)BFdKz*TnzP}m?J!S)Zt z#M3q_>ZA!EzpU);H7z2&aF}r}l^3!^*vBcJMf*(m zhDI)=Jtw2lu!b9gOEE#cgv6yp^4mrDh)>!@7X2aV4qa6AYX`TEEdPh(OHzA3&34)t z@4CM0nO|yO7cr3tAAq_=csFNE0D%7P;a5nDiT`os$;WzNU#dsf0_5H;3yw#oECv3= zXYcQ>W4>b(a3~4eR23j z?*8)>7sxX7k7&p*%3JO0k%}%u&dPeNYN@niTX7BDLQC!>NdxIB>{|_C`LQBY0cA7% zd5LXmrXS-whOK^&1D-2S@1ZQ`kQZN5xuYUGR|z`Qv?q)y{aTR`@cZ^`N-E!Q?*PRe zxhT`MK`WOt-k401_*V!XhcSDGbVZaXb}`d2iTvmlIrxkFZRY* zi4GjoU1&X!R+*?&{2-nnIi)-vg5kqV_}?rBlhVv=jnlN=z4^TJ;z5=+d#V4zyvG1j zxVRsn{`q&BHf5f-hCN}}?&w(q^9^~WH*(Fm7D%-JWz`69p$FMD>o3PM@FdE;%PXc@{lSNb7nwZ(PS33?%%Hnx`N*|Fh8v`Yeg5OrMZ8jp1JB{ zM8O%)qRN+rpM#*WZ2p|NjPe*CqZ#%CyaOK{8$UAx&Izs_5SX=52x|0QOewI4b8vao zjQhJ+aWYeyGN-xS_FD5p(PQEcSFEP}A>_$D8*_M4A*E-j!* znU~<>Wct1QW!fK{y20rWuJr2+a?^YGTOYI^U?d!$@mPU)TR4dnww7UPv5CDB@|VN^ zC&iqJKiOB`*WVqpL!zAPrLfe3(1}g^@S@er$1h|KyZ1=dxFQ9f5Pyf8jd-xLK|@f1 zA+qjd_?24o6f;g1WniTZqW;_~tTXNSV@jikN283?x0B~ayUZ?kkOVoFiIDgG=f^`< z!Zv4(7{Ri-M{V%OJ)yn(mGN^?`@7yA%7fc@#Z@~-rQvi36Fdm_$8@+>sVmO}KeH_8 zgv&CgYtnh%unszA4Dr44=;dPL<99XM#Vb#shRT1SjU5%3Y=(A(AFZ>#*Y7Wo`=DYH~hX&i~1LM2g$l z|M)Rs=^%|iHojbJh&+815~`TW0hT(seRi#?WVdEl^}!!R{8}*_y(^#P1OM?agRTkO znm69`3VcVt%esBN_S>%Y)B7?XgsOqD8gc;+%;&pfb2ymjzsBIq&+UaA(NMh~FD{Jd zMl~TppQ_6)JH){ld5v1Sx9o_%gi^_}X&Sd)CU8w0&hufrNAFdc;{ICx zO9zCG^9oCAcOhVx_C+=yzkKt<|KH~QWc3>0PINt;^f4QcIU#{fF@@eU{iM1)BjY6f zGUp`cGzV-@dgj@-`jDS<>UG+$^|#)r>8C=<@93fyP6eJsC62rIP06fC@7v9Zb~?i1 z&XSXaf-c*npNV|5JMm}mERc< zte`J77$buQ#F+tPIrCGhy+J=NyN-BT zlDIPZ2vU*T&hg^Hufjn}B}vKmZFXdzX3Hr!y`@eHcNX+AtCkd?qVx+(i(Bnqh(ZH; zhO8(MSw_vULaO`3{Wz~CZ|ABZnK+5=NhdI)mkW7d3@$X3ol>WW=NNIn* zPe_kEMtU|$ zZ8z=LxKmt@_qq4V&mftuPwbly0@mNte3s1|Dk)#<-xl`hPCMZzgNEzc|KRMCGd=3y zgtrp6GhRk;a@dHDilPHOwzY;-TYO8Ypz*tm7+yL_&eXxG`pY(j79w_#iua}IYVYQ% z%nx_iXsc;YY-@9|X#uL!rZ}qdexl9$69T95*h#-%PZR!XC3hI)55(ufhtI=mX>mO5 z{5Dju4w*P;M1t2)wolJx^Ci)>amjXak`hJ97YY9WTPdiLJqm`R{>*P$eIwi`ZfIt( z;UkonJ$pN!kqLZntyZ*>w!P2~KLX0!xfZW+IP8k_C0YVA@1o3=5{)yh6_O1!pxUJx}g5}5M$K~Ey0w00Fom^y z!vW|};aWs?L53n-{sw`=Jm+D_A+GyJ7cAl7=Xte(sLB*d>!3z$a9Z+fDr>KxE&g9B z-oBYlz3&0W=NXoP!Sh-|($63d762EcX;y!^6BA&ck90TfAL6h=^tgTBNJ->=_&xeH z^8S*}<;*vIgD*GO+z~Mp3D4)B)n*u5k{=Q5bfLtat+*mPnd|m9q&Eq*=;3<3&Op#D?c4rf zBw;3|AGq?c`+agcL&E2oS-Xj7(I~WVEApl{YP@WdPbr6K?Y!CZg*wOm;NP>-spIXf zQvOG_xj}oF!7he)gX{MtCN2jORL{IE>z&9Z5k5P8Ng*lVTktNnNF%kq{>53ml@&a5 zXEUTw*7nEOzS=V7IKtv8OWDXDkFFXM7i$8)A%N{OzNT^8W~_AF4?*W+tGjp7E&CY7 zn?SFp$wt=68u53dyG7SgouV*D6YWQ8m&B--?a{=^K0hPaBHYeq`z`ZL+WQwgIws6J zditCLiid9Ys0^m(FdC`MdjQyJnj#$;9{E(uKWhKzN3yZV7w-YgmA7(veNA`usps3s z=_;z5&#&j(@12v6#{N~{o0lto|C=NK!+APE{oT6NX3s1r`rK%pHB2E#zxb=hv%|=N zpY;s_27YqIeYron5NC%CrIpZ)`&z!MpScop7+ZC9IpnwIg-<#)$NA?eQGpS4E#N4l z#e z;cvo@I2nG^_;6UX9FOH*tS*W)yD@V4mao|u2nGBZbyd?WL zF1e%H^dH$BqToD{s?}GhA9)<{WiI+0Rn6jUd+KwHnEO?eku*y%gscD}J4u=t;+S1- z=HSh`S4wp9uXVxU&_)!k@-pLDJS}-_NmjExIAS(*^3M#V+Y^r7Rtz>~QJCi0vTP=e z)Pjb8dS(2|$}M81?3rbfh0@eNMwe-kvr~8lJ6WT7-L|=jWw8!E@7t4reg$%ZkTF+d zZvQBLHF2IhmG$;gk*EBV2g}aIB{r|L)j-dH6Y-;%Z2qe)3_Q6?()McfTHAEaz51MK zK^hoZKF2Qz8S#i2VYLX9B4&NfV4rS3M<)!0qqA~Aod`Sjo6)Epw(1$$RBfQe3^lJ( z+JgM7%e&>ipPDQ?-BYbg(Rh^bg5Nres~xn|0vQgLZ5x6oTduhaU9;B=gN39uCCV4e zgUvS6wf*b!AMKAr8hHlB{l{DA&2^BSmfy~c*pKMFQd95ZTQzOdpyX4%+vhy0z}hh% zf_K;}tXR{};~tP$SRrIj?Fq=M){ax7tYxE6HSzx}@<|P1Pk6ECCv!fVhfr|h;AlLU zg1_hAY6XF8m;kSrv?g_qib0*S=wp93@FQHw1_dDwLthXD(I*FVv92fO<^39ZUgN_S zY;ozob+2^3HqDD$CEGua91Q_&+m}|S!#uWQO@0oRQG+u6kjg=~KAynd*xEJhTNDQK zUtAHg?2z+_4rksa8+SJ7UYv0N%=1G95@7aM1FUl|I5uBw0oA4`9Lq2Fcq*e z&TJF?@u=S2{{QFdKKeu!F5UD_Ho}L`T(p4TGNv7IjQi>v_jYMCD~99`Hi~^1E>!HO zm$KONLuu3Qkh!Xm#|FZ&$htiIVLU={3y)$whN@iHnRDkcp9dj~+BiRdbYiSy)ph2V z&J47(n_S_aZ(>oK3m~Zy1O8wc^oZ8gs;c2)vG1g1M+L-TE3V}A?dy6;z|B+?G?xfF z>0(=+=|`Vm;PmH&zv=p%OBYM(i(Nr7k#6luUgL*@|6A4GPfNEtZdV>p+diXv4f zNn0SxL&SCN^wei^aq5=pHyD$y!bc@dro3i&0@p-vk_{4c<@a=4RH=J2}f(~pwIul0V}DLz}+hV)%5sXNJSrcl~QMsiR8uK+`2;%xhZNPS5u zeIOf~RzbrcHyD$*=>QHn2~Mrdw2OPb^P7wrCD`*^_F&%9c#-V0NDIA05GS?wH{9s6 zl0)umM#v=QG?~RG)%A(ksOMj9K*34b)a2A|rpA_#p5YPQXIu~v0hLjuMU!Dj~L+rDksRw`$P)ezOM_#X!(#)n2DgK;M< zmm(zvOdNNDCdp;lXPATYdcTSS13AG{nsjc-i2>X8OcjV4D7=B?Ynv^z(cRypuS3)d z=K7kfh*8USvHN0qL|;xTCr#cDOgsp!?AB4lqq)d}O4N;I5pPA(sSo$-hE+AK%f;0h z)tsnnbYf-{n6k(M$&%2Wl5l~l$4Ps@c@@{jg`t~71_X3f%nNjJW%8XQ92FYy(_U<* z$?Ir^j8ELy=q$x=s<4tLnpDQ}t4d-$CYK?}o@ENAc(b3F>Nx*X1$ju++YL zp6suC56^K8hsh5=a5)~Gow4mD>pSd$r)=rMMT+76b-Cu`Yu8(WP((>q3Y$<*iRp9yINPh4nrpqD=3XcE3nvd|qmH7V2dJjAvFa8duZ<&4#t4ib}oZ-aA z5+)e0LxbP`99S;Aev}`2WBIOMF8(`KTv>OMby|rP2e*LF|4e6acE4&YyKeAw=NAtn z`-dz(4ZOt?%Uo0UB0=oTLSH$z=okC+#>Owmjj=J!h(5|N-E*VcCCp_@`qF+e(RX-s zK(qebz^o@g!3>swiSXWFXz>R+l-Y8kcTm_Nszi|cPQ zOCV|5cgGzFyT=y_rSOJXp&DX5ISlhd(n(9Q$)fEB;$qgsp&yTUs+zTkEQ@KVwQl zxtQb!tdZ7nHCfWVg@Jl#;Zr?80slf{!~H5HBM}F zlVeZ1!a8qxI&EIux29uYHf~Q-G)vaeQ!nQ`+PTge+WpRo6L)Ng&IV7O`+?i#5a?(~ zE;-;r8X?g7Y&X2ay4SGM@%{;9vE@gOUVeiFqqr-vkY=I3hpqx8Tn(I@vKpSYvF}(q z-)LSQE`G+N;S+NxzT)B<+{4(8Eu!j0#%Z=+=bi52+(Bam)ZQs(M?NdN@mN{Gn9#7i zWpDCx!DmxZk6bnvF!l^nlhgei_!XYD9jTC7`|yErWb?KI^JUo1}WD=#+gY@Vu+(i2C$}m=Jqo^n{%U%E=DY4#6y`(2Ma zJdi%3rEYa_hxB8O3C(A&+Msm-jx|Z$K8+S?ayXJ-5 z_%RdfYD=W}3(L;hEsKwz8uR=42ZZoQ{~WDTcMy}&Ty5e`!pO;fs7>tHxso$#H9>dT zh&reyI!ddlh~$}I^EV(q6LG85OQP*^AAPQEF!=H^F{-vL&tXQ7%&+9pMMsa)NbQzi z;PU-1A{Jh*8^g98=XO9eugo=NCL7u2U0cs5M|(&3X6V?Pvw`szdY)<3xQUc+q&D9WyUYbTI# zs8gk51X&q7t?^J=7y>L~*Qc{QwM$pX|BYH-Qzel(|5WPy-1J8a!f1BW z*ZpbO$wE9^e<02V7=jDE9cv;L)aRf%pTLyVfBJKCm=6w9;q3H>T-Z_^sn!0dQ-r4e zVFIf+EROu{K0vG)G_NE;E1zd&ty5>lqoXqkJ?dG*+X62K@iIPe>riv{j3N%!kP1}W zFgEiedQueIhy-x*vdssFvr?eod>UEg)#b{qJko-9cFJa8o^28$B;ozVwULo=v*c@| zf@mDu2pwsYF5{`Z9Bid4uA6=iX|P51IGW0~fs~)UYddQ=E5X2i@6&mhXMx$t?h zCq-{TPXCpXFY#ZmXsQtBp35rqoq?5HgIeF#?wR$9_QYbYw`<#h+fMhykYwo2K0&S> zn@FZ=sM$W>4K~d9s+yM~#G-4zX?1x_0vgsxNmDo2Vig*RPY*rpz@yuoN5(--2sWI@ z_x11a$p@#_h}&`;4}j>4drz=cx6QtMlvPKk>k{{0{mzo|XZrrP?AWcu1)`rek}5@g zs>gt@>FKP})T3#BAIn`t!Fgg5*H$x`Np{bm>a^mJXNoP|XuJ5`f_N1#8(;_GFnPVv z9CfN5e{T`ukZpY2dNaG*qwHLMy&slH=o<*MfE)!H&D?&HV!q9NJJZQ*=|H>M_vD1- znBR-Lu<`^YrFE>?6$iOgkI8)8__%b zuqNKgh9Rgx{fqe>T!16Bm*6Y}>ME(~9TRGBq|jH)n9B10LqvxqvjKcLiU^zwVmZxn zvpd(3pTLmH)`@oMMV(s8Qa4A1N7hDT=ir+8uAT;uzzQg9H(9Cw^S9f%Nr<<(G+q0k zw7;|Ti<9k%inF(DI|~W=Pp#2b-B-|dKG}`hje1-ji$=a!ubQ2D98@kj$@PpR*V4Lr z4rLMu9hVGKv|(i8o5Zs0K!G>49M)(F-gYR4LoQoD7Ayi7@;TC71ZTMWi z7U`~*pm$HR9&uWH#-5HCXO`UDBix11mX%d!z*yp7vfjZk@M*QGLFTccH$-SGI=q+j z#vM-mF3F(^Xiq zzlp8Oki%^5?cp(tjMKIoq*(zj`!%2H8$6k>NNmopc=0+wWw>I%BBy!lm|*aC%@V@$ z=xIdtJxlF#zi{a5;fUOsFPrlfkG%4DI;IToMWQ9#^Fz4|7n5Y}+L;cf?? zM(R&rGmkr&vOyIs*Hs4)((!OqPu`A?h%PS!tK8>O4mWqBz4`1BB zJYu#~3Gu)i(g(y|MhJsyYe~4M4HxAWz^~7r`W(KvHS*_Mk8NBEIr)SQem_bMP(#uz zNHg?y5+y(M{f9kWNRo(T9(dOf>m}RM^>GIC;qdtB44p19ouEc(8q@+GjSgJl=UUXA zWDwo6U|JL%5pnjl@C*Y`A%*3`?#*T4PHN{a*I_O6l3||y8*msWd0*3_<_L1oGPQAtr~7VM1p6e9%OiCD0E_pZc~ zrc|`q$f9hhB>n!9Xs~zA#^i&RoJ>-{$l`iXMJ(%D)p};6$G?@xh_26iiHe>*O@xvPB>FB=ZCDMgj8Wovt*qZ|*M;*t?xbos9NXMOIlNOhTvxWvI4 zY}Q-MJ6#&We)OZNuJ?l59ag5N2hQ9bdG!Jk>;yF8)fdV=h&|@Oe)_Q5MzS$7teG_ zVQoreTTQMF&Y^Qc(J8gdReX|H9Q5;s~nu_tZ^WSXFb37i^$$};gx9HNgTWRl?l+DE}$ovZhe4)HNr zOT?lO32YmP_e!LKmLW;9%hQ2Bin!gjwr36F*z{61b3~p$o{2D#^+Y}Y^7~0;O2&}5 zb-v!t4j$Gsre*-D^{iPo^sO)9*RW^YDps!oc^E;G*S7Rjp@X_v4x3&z=w0t*4wp^D zOL5UL&RdQalW@>`0=zG}%}hhjI}9K%>a8oA9m!XE zbGQC*vMSTjn<=DZ4+!#&k)AyGrz=~6`2>5b>_tLfBZmWu)s!T3o&BL3dB zH|leQ6WxU*gaq{Q-&Lta>pC<@q`!h=(Zz*x3>kGeJzw`8zO`BIT{L%Zy>G+XDdMyN zjC=aRxQMJQN*gGXc}z=BkQzkr3*4z=nnLw^1t6cZ-1xZuRyfH(EY-TQ?4R{_0sz!i08AB~>~$Of2N2!ez_>#FPc{f5m{O!b`ICz(lod7k z5E9v5Eos{lB^Rkj#T&T{Pj1ivau@#ZDj4>L{b&Wr_Vy6jxbNUbwESfS0iOLLTW4s4 zOdjs8bafC?yxlK`Xx)RqLTXJdh0s&m(YiL~&UJ#Y7mjztAz?En8@8xw9n# zfsXt|-B>p$y5|d^vHY20%S26QbSM^1ihN$!bb*z z*Qi$rPxAzdll8`6aYPr{m1IOYCwZPZ%S9q#VVbJ^G!du@6V-X7_M2=h!1(slWkt<* zzTCT3HeDtgT(0l3OHqMYgj??<)$X0cw=MckWqA_7TVn-ws+i~q2&_Rr`sw+w!znHS zdM}WTiiXqu?4|))^ZG93*q1VQtL>mD!0wQ{ZGjNC53Afamc(`pT}ZJA;JiTw+!!}t z)ncoK#Hi(Db-F(25HNh8d~2?5p|E;q)qU?Qt+YNw)$F}6sn$~~m4)pT z%5SgPTlhIo7h{Nf2uVNfN?gyB*e1>vdTajJw`XNqWP zMd-l#j_O5rV&yld-1_#ipH1A~huL*Ao>Eh188$RgcwtuXTkm&hp>CyW=`P0fdJ(&O z!0_CW0|CB^3R|C;L$sH_*?ywZ0LN=zIT_XscS3usZm6oyI*8Unuoi6GNsVn>DcOeA zOx@l4sle7`bzBr_?HvA6)^LV-qo;-1zq+`%Z3Woezx z2uwMFjZd12W0U|Czr^)qIr<1%Dp$?+vM+Q};6PL|B~C+sj#-#HA_DXXut`Cs2^8N| zW4;rAw%>85_TfIszpcyEL7^y3^MH(iv2`4QOfLtbOJaDO`~8OTF1UP9v4A5=&iNP# z&f^G^h?jK2QDKqZ+^+yn#<`1HmY>oRm^C9$b$1xxyd%I$&fYQOMvOjtl=jvD&hDjiR&HQ$e4euSmF@ zoMxqw1A;^J)e(5Y|NGoty%)fNji|fV%)kPaY1kK5lJK#@{Nb3jwKbX64^JmbK;?w=;my>ja#*@_1 zFvAgX{T;ANGAskLrlWwTWqZy+$L$w{#$T6KBUE0m=k}&Bt9OQOTlka3`sNF=vsTHJ z+mY>#WHSeZfc%`lG2bupRg!-oiK74fUY%7`ILGb$cW98c8*M8-Ft}y$M1wZ->qP&H z@ju0Q$H&K2`-fwrkOCb)%=wrVNIH~Zu{z}>?L0BSW7Rc8B}wRAKTCPH&~(K!Y~|PU zMxyY0MC-V3FcKKn{Z{+(emCXw_sS>xIfjC^_N03`4k^~CvgfrBkmUar(cL$P-@T1e zK_+Aj;m)uQ+l6X7fx5%ILfVEJl$tJmlUU-N30Tn}QK(?c-Im3s{TIg9U~s2}F1ZKs zN_uD$HT8IAQnxgjn;bZx4Fve!79Pf7G5_HH!;KE#B-^3T* zaVw0`_Qe+&??$xy_68CUNMV7IDK>?Xcj{5Fbg`eL;6w62iZgPmrZLRRGAMDC-aVtm z)uT!Dg>JA|Cwjt6bZSY~Aaq}tu!T+%k;`4DU=-a6h1VoG z7Dmi_1g0QO+&;7A_T|GPC-&JC2-3=@jV6s^8~5fFIYKgj7fnd%F$sibP9Q0%*tU8u z6O|qvsh$!Jou7qC>oJE61?+=mMQ+^GMV51@F8U`5z)Rjv62a%7acHYaxG*)$P)tqw zZx8qjCsTdX=T6U@gX&YDATUX=15A`DM&@Ou$g%!K=iok{L%I(etr6E<%gI`^}Gt6n{Kx&Y5@T%^IRK1 zk{a!)A)wuVW&XP4zcOE~Ap1@Wg`W({>s_tufF~(_i~+e2B!r?7ahwsrAwoN6dp2mg zWbxdyK)JtcV&c2&txmub&Qh1kbWnWAgqMF-I|QVrfKN0nR!u3HgSbSeAc)uW2_jMy zb*yN_8N91KC%@?0GwKYK8_-CnEn9)=`U&E%%@Vui>bE+B$rirgc+YU(|5bN}gD}k_8PVGeZ!IM_IZ(hMLC{`;iYS<0; zN0MR7UaD)KiVX^M(Ir}-H?im|gg;D!{Fq~s zCl7sf;lTLo+@P_rU~Tx?P#D}NtKBOK#0fF$`Hoq;FP88jyma5bM<$fjL~12lK6}ss zP6p?KrekeS!jk>;WDocp>=4qXR*M>BoV0s7Ue) z1E`ht{$upj+5U8%!U1o9w#gAcYqpzmvbe<#L?nnXV(u0bvxrClP+)N)E#2on>hAF| zGwlY|oM??PZsY+Dp?%?X^YvM>3~BX3<#jNAun_D_C0=W(jcaYNWF- zr;}UH0)e{}%1pjDOM;RQ`o_i_oH-Fe-l3$L{jyz4J^KfvS|f@~qX5Iq!yj}W8v2z) z`PVp+2pt|!m%&H4Ih3urv0aPs!d<6w9gU?_0lOh8cXL9Qk5$^hf}C~%Wzci1nKDu5 z4*W((B_1xFL)Ls4yGcdPkZp)od305{C$J?#kW_n4Z_&tG@1FLywz49&}h_XLkgW8GfEX9jKbR0ZSfcXfs|CEl$a z1m&B7lIelFAnl%>(y6Fr5sL2XziE=-kj?wXm#hLp@kOnAy_(;#pk0%e`9B5_6#~V* zx1rt>Skam9R>IEkQh2m;v|wYoyAr~DA6LwPTb~zOJl&rU-CU_f=KV0uMU;lBEZYN! zNo2jmf}!sQ66h5Bh#sqU*Iz9d>!o0f`u9(he>fzC4Nx*@)i0LuGiRGB$bWkLOTu?y zH%Gsb=NLk6>yvm7gznzPXPO_yEJkg7A-1F)VU8gdwUx#iBJS~cRvoT9i&ci&MGGaL z4@Ug(y1!{~SY<@ONbUOk+ggE%(IhXzUJ)WGFOf0#hQcMv=hVgTvu|Fn?{qFb+T!>0 zVg@92wmHFlvgOt!mA^?qiuh6Q^~n9^90;YEJZY}dRnV5}0<}sl8Y8qTHk9qb#G&ie zGQ^61C_h(k_VRG*@w|{95G^Dng^72{4qz4b?s0ITMp$2Ec0GeWorU!O4Kb0$z>|Bk&Df)C^MveSv z^Uss`7t6J$KTt;2;*d0(%=GHMGzWhW_4R9ws5O~-@AhU&j2>EREnjQ1t*e&^NmSO5 zTl4q(9fP=QL!%87;akXg4Wq&mgzOfZ>H$trZP$GoL^Gm}_I^ms!$sKuCvp()5Kkz$ zAuTolwU<=UB9dEF<$1Lt+OrgpYq|OQnfW7*&-MJzA$b;?+CE=s(;}*ch&HF~i|I4d zmwcVJzBt5cEW9uRGez|HGNj%ic-rs)1ocBnJ8)Y(pBmo4D++IyrwkYSb3($Y}vm|a*laFIyirjwO z3(bsTYIEVufe}H&BTHstBa5lEk#%ohT!M1SXWbXX3{tC4Rl)MdMsE#0=R`KDRF-s@~bf?QK|~TnM;CEy>h)Fz zI|#Ki`t*Niuz^t!U@(TF6p;X6%Bd**l#rK@%@9!+rq^oZJE7z#d=007lWo0{&{!Fs z1X|p(SrM@H46C)eiX5ZiGjbE1Wll~+ z4~ys5L&mad))O8R5FjunZ@w`{Qrf^tgxEp6N?6BX0l2HV zSQ?!hSczK14Qm+B!$`@Ua#j3HbM##F)b6xQ*b_=o@B!gTIc&r zyJ1e1@VLe7w~}a4i?&SRoR?*+^z)&sRm}T_173#pPv`lP0l)3+Yt#RBsJgUre^?_A zM$3fDqm6UQ{A5RJzkA!EB4D%`83P#PMu&GjEeVuDBbE&Z$>m^gkDbSLu`uHBp;)o*T(3t0Y| zN`g8SdtPuXc@_L;rww7PO4^_O+cBp(52caAo{zz~H+4%6x9xA${ph@Vm@K)@r2s>{ zQ2U8UhtnXf`Totedc2}RWpGQx0!@;g-+~ru>cRjs@QSmLL*pM~xFoM^Lc??tVz5n` z_pg(w{V6ZmhpsCnCmL1rH8*I(^UbshwURn}MDKh1)HrYjq)J`e&d=;!f!T19xr_Ch zvC8#h!Y4oZZH`OtIs?#pdB;0Lv-g7T!`yC*0)s8^f`B5{7&3hmZCIw5A*9ko4^{IK zB6uGuDj_FNNmVS#-*YO6EI;eU>K*O7O!YZCI6&MlHT}1nJbodsLa9Y5dv2Jyg70RD zLe=VVs$SwH;Y9IPo~b^Ap@&G8!$fZ#c^c<@!bW-#U33Vbc$`R^>o_0SN8bM;Z^4NV zCc_)&@x%9$WsCHSvm;6K$9^g>5W&6)`c_BJ$={ z-+8st8lYIPSs^l)ls#&$5jqaO-h3)wT`V=swa+P3+W3gBVP~1zKAUygZW}Vr+)kCw zFqp6!i5N^&6f$&prT{)#2s~H2^(Db_jAGv55DGtg+MJkVUp!OCF=!PIn3re<$uP zz`G>X!nEyWNVvXiy2-<~3}Br0ht}Uac2*>qkxdCU1hARR7XXPUGcw24GN)f#7mw@~ww3>)pIn%t^dDzP(`g^(jYFGgC=JIdqk&r@C3I@VtlhF(t&*d?w#69RS)>(^9wV=(NpV9)vrhJ zD)UK(cLx5s!K@n46c|h}$3u*q<)g3*F^H}SmaFl*r{3+LXgjdhJgOs0*;S{?;rSX} z->`2vm}7eY4#_y7wC^JTi^kk)+W;E=r7mykJ5Yz%;UQBI_zw%L$*NkoMu=pkse-@$ zOZ9Fsy&edkjl@ptajiVc@p&*O%H`Mcs(kkl)DC>06*y6=Z4UqKg-T@k2x67@}(#emf&>R{;?P zh`v5M1%bdb%}mBrqxwj`A5Nd=6~M2@?oU=w+=o{Ue<3C(&bMX_a0Krt4MV6xu6lx{ z=-0~`k3zC8B70EZOjCUMyIA(H!e)yS<4+yb5{aXPuvH_k?fSG+eXC32QOX7HgU{X& z^W8jNO+PP}2<8`xwDdk1ojZ&uLN$i{PVV*)JvQE*M(ptR>dek0IVmDcl`Yh=O)rUHrpuIcT^E7AeCG1sB=Eeq*sB44AUi4B%?&tpSYKNOp$_^N8 zha6NK>jV|DtTb7_*-I=z4WVs6HdRRpZF0CDf;9EpH%K#>U~|!5#=o+oW9=LDzahau z;qaJ~H+@eq5Kj}w;xGBfhy)oT4pPHo!$JQitAA6ATdoFggn`RKaR4BqN5-c3L=4Po zAftTi{SlnoW+NKg18E{pIc?#}co721C&@<8)IjA69*am~N#U+*ttp&d{;43;(C%gx z*GD!WyD|zKL!Y-!Z;Knnq=7|tk?x5OjUa@;*>us7J%6t}+JgVosha7Lw#Enezkfds zyT!SD4N>~%2n&K{64f2eVR6;LD=W=JZ4b5pSN42A;@f9cU#D%}dJp0<6-!N`{6EXEvV zP{GpU-%PGLCuJ`)oLJYxS=u%XmJRI%v!Vj9kn%*jR2}nYcY=mR;3s&m*v#V&O@KnQ zKSz+b9+aAu^`&R-3qTZ1MQ<{E%FAM1DNkQk!|~rKWa_0#wCe*QfyChm;_PPn`UIhC z)#M<~WP5{ro5EPTX~4P8`H^4LdD*CRQWObi4%S!ScTAF5kEQ>n>*ZmZB3_YCvB0{N z3`0{?dNv9ijkx{Z)FVg{R6Nt_zB>=BFe7t=zrs$$GS z>3D94l(SVdeY;^xexlaBe;qUhXIVGAe%(msz0r23g(wxwnAT5x6m4e}GT^c+Af^9k z@VI6Hf#UQvt+S@lli#ZD;rv3oU-)!xZlK|rr?U5;!ZnNJ$f4oksY$H7CA-m1BsCg! z%`4o?$sE)&#=G<&sX-xt=%5@ja7E+rX!STU%6gmB2^NP>Vn$%ArM{N8^kx0>C(bYRc#0(2I83yyJHl6z zDGez6G-#Gi-adimp8|E~O5gGZqF>TBp~(&St)Wqc;4)i|GU>cAb6&`4eK_6O)BkoaJ&N1lIr=zjr2<4 z?SWgyJm%$9`E0cST9hn-4~2SCX!!l01WmGGhfK`LdD&bt^7JX*RF+|E!qid_74uol zLk=2b%!K1nKxo7N=`mM$%Z*Y_rZxm*y6tBipq`*D=pyS!{^d?e1BOM?kHNqlau&;s zn)$~Mk?$u@22Ay8HM6W?k3=QFLyU7cx9gdVC|%| zRWHEZuduyKxM@%%)R079)+7(E?Pt*wMs{N&v=ELoXaH9KJ1Ckg$hWWtod=@-ecW3a zyuL=E4a98-6di-Ub5ehtIb_A6RMjbEa&j2;iRd%TBRt6A?_=HgU>}OLFc3q7ZviJP z?#cW`^aix^oqGpvy)PXW#)>TNrvHGTno}-@I()ld7%|Wghu|l3!H;N0&6QW53x1*W z0UN{c1X)qW*f&oi3xaR=UBIP_^xQWjNv(%=8B9rP$jvv~I=R>q8Xbd^%Zu=+pivL| z>)3Q<_Gx&X8_S*yiX(x@aBo9+kBPFl6`VR~vU`o6bshjUh`nd7mkncAz?ZA|!M zlP|)+{KDbEQk3+t-fli&>ham|VG(QBl;Y zf(kNmk7*u?2RIN!z?EH0#r)7YTAR08q2w;QxDiL1zmak68K+pbelg-Uu7RhsFL=0UKNT;iz*4XLzXD5_#4`95hubH$fwRDBAtWu@ zBLoW_ezr7tXRF9k(TW;T{B*_aAxUhj*cM?dy@!xX1AZh1ujB)1TnTc~yrQbu#cEJT zQAUYdw0=ZpvR(eE=6(Kg9k37BfiYtU_~k3kvm=w$lk~xCdu`2Fbw<3Dd%{2!9gRY= zzLbS4`g#KJEt;d!n|Uo?ycnp+W$30h33QMFa+n-w_|8WW> zI{ASQNv8eagn(BAVO$~3A7=}TlzdJ>Hu#PYJ)6g7F5 z@2ALfly>W*Dz9|xV3BS8Vp#$8$y5XDGdzc8+)Q}2 zuxEYn&mMl%5Ak~l^0BZOuy>aW4-&3NvpZZp`y1Sa^J^2$d2WR@f&6sQfq5s%U>sQv zjP3_+A2dRJlUcP$5wY5RXRpSj)Uo(AZ#1^Ma}WKS%5JJ@sl7Io*XwY2tdPulG(;5K0u%16ZUJBBBx2YBL$PHl8l`E z;77FhvE6aA+Oap;XREAWdnH*u`0)+qaHEy+Bm&0vvf`G~jD3w>*XsMHq)J>_^>Q32 zg9!vo7THOsm+N5-vP#grefgJ8(g{&t-8qDtPyX>Y+4w=3bSad!VvNMqojb4vbU(M8 z;eelDZuBaM`uh>es{Pa38RGq*wIg}uj}<O^Y!miuRk0E_zYA_J^w__(^1c5>P_<1h!SFX>eS*%@uya7 zn-w`LMly%&5cZzK0$!|sJb7rKRFs(oV>{KIQ9OuMhgH#}c%2P;6&Ewrf{NkAx5K~4 zx$|V3hOOV|jZcjj9sLAq=QhoH+H;a z#5^y=n+;=qsUlrOHOHO!V%2Gxem~Xhw)B0h@3#584g=_t_NKg^G$b?I?>8V;FN56q z*UG;JU?O`c=m>A@$&pM(Ywy$P;K)R4tyAo32j_fpKpCY*-aV<7+DlIs!L6Fn(3V{olBWtXQJ<6hhd`6;`Lj% zp~RsR!@lmTlLQuGcP~I{2bW+tCYpZ|5ZxHwWG3o5O>+ikiZN*l^^d` z?3EFV#3=hRC%JcpZ+JaSS zc@BYE2Vt)vP2{Wj=NZrtH>}hA{|<+5{4B7kM&jBj1sq-a&ika;1Fd-YJOUs}A?~!~ zB}_*QP^iO+S9N=#$hcg%*iwE|C&!@VwlIM?h4f-t7}$M(CyrQSkUO8&ofmYr2_S%! z^399+1Q{XPBu}d^$96N2=Lu93+=~=O@3bD`cS740dW{T(Yfwn=2ok*PffRhngwWxz zmRL{R1|E5nao~{AG2%k)7yLefXTn0{MrdS2bo*GU`(T^*`RpgXX(R>kkS6PRJz#E~ z2>)`r1G>vd|FISX6q1@II|jp$yoc|S41^n|kHP_xl+l=Op4*UTlEfJr3~I~%)MBEx zVX$yDrLZODaY0dhG%VQ(1|r2k5!wFpCR#iw>nNL;F&RefNW*HY9QdO(VaSUTH2EeV z9r!kuQbpCPW<2jwZ0a3SvAOI+6o;`~{TgaC5{2V2-F664`kZ7{iho4Cx?1267Wb+Wf#-gH# zHRrKnuRHfO+EpwZaU9`IH0YvFq-*Y}GPuP3Jj0jZ+d6|LI%S1ps8A9%$F^bV4$o-0 zo^*{6Y~hrj8sykjbvxtTO7mV*_r)CZF92$Q9*m5bC(w1n@GZ zWGK+#KI)E!uyNGYC}(t^qXHq&&&xY+LU`^%wQMea24U=ebm3-(33~mTMe<#z9V&sc zeYsSZzyI8I+=|)?6ed}vh}JqGCEEV1aT1bDyDwbF$X&HbxK-jy9Qe?PG_Dq=uJ|33 zG1RB`1bf2qnR)Anue_UlHBe_YEWE+^|{b303Gr$l< z*5{5X%08hal^5+>y5abwx*|BFx{(c+BybT3_qs^AhatI4(wwEYfazqz?|!oZe2I@}N@awpV1+}jz6 zt4wuU*u)@U5SL!N-CCqON+)LzC1N8*^6Q(FxCG)D2%eDRzmD}2-!Tso7L|(@)Ef#x z@#9}hieS{1N4C`8-HaVDdN%C65MoiKFljU2sg1rkC$yFcCGtV`h4+%zAGST~5r z3>=c;fUoFAkHCAN|0|?TsJ~q)CENK&8%-igR-r@Kw=gvCV&XY5sFS)6!My$p3JKpp zXOs*YcE(>>u)Ua0qKyf|N#N9GgEar3V3B zS|jK;J%5x&Oga@;m+M~3KN!u1-Si-$z(l_DE6RUWANnNV2jMzzG+LS6MN}_5gBToM z!$(3Ej}KciPdeWzAKbiLDocM) z#RmotTM5QfHTUOUp3gMvzDy(EPjOSlPi4+Qbwg-kcc-x+mF!uq0E*wA?UkMb;b=_P z@v^Jfnjw?&;0LuTY|E6bgDUnvd;{e1j^*E0yO5#bvxmx_^TKpe8}dXQPtQ_WdEH!) zJ|dE0n&f_WfQ0kL1uL0hDm-SWq;@LA{JWSKT2IgFnpW?(b6dQ*TOEt*I1^q9d--Et zKgQT-_4x~}cu?e86%`1^0F_sGn6>D7!mGiOv3fxlI|SW5_Fet6ZZ$Vb&2gH&#zHIXq+oAbJ zg$s#b0t_MfYI|WY&smM2a{pQFXycQ)7pbcf&`C&%%E-OaE*_}XnlJ?f4&ZE1iWXv0 zs^p3+yzdW-T2AJQE)fYh_uK*&A;P~3{%;pK=qHIqWqBLT?)xjc{;iEpM`(k%+_6Q% za(Xx!myv*}7H={TatZ2sI$T|QVME&(-xLaDE(-KN+DvUS+V#8Uw1>>~mb?I%G!2x>?8#XFLzS%T*2In=^Rt`tF$UY%VKe`Rl zvl1esytz7@GJB$P->LglF4nm_6BWgZz`$x|}R4UJaH&qdQT%*&)w{1li! z%e~>^Y^5?xTbkK(Gdf6Or1oEVH2vjp2?)f@XU-dBTYvAyIEVjn^cq|%Zg5cIItA

    Cq`Mw+-pF}%IZR!7o2`R>4x8{+S$vuF=XYaYEhkaxCBZx3u2HDvH)^F88hGz` zOD3=UpLM0aGV-+jD4w+I;=Wt04;o;4hL4+9LMc@-q#yFvt#$t20!o>`5avUDY4l!H zw$E0=7KRNkdoKDaH?GfKOS7AT-^u%@C(Xkq%uY(x`2+3N+fYC7X^x1u)7&94X>rp* zAd&vtp>35{n{@+l=+X&7?kV9SqP}RpA1n**A!h`s+mE1kyi$ zgBl5(^xP5C*{W3iTjdre%zgZka(AT)jClJrZ``BP5Wk+j8RM)mw+A!&=>?L(Vyp?Y zuMB-8c#h@PedCMgzitJio_LG!&Ld(y^TtZX-HoGTDv*)9&(!df{C)T@s-Fsql;j}0g4a=ei)62XxL6RL?uF5P{+ex=c&%3~x`F}g@ZPEnX^H9rkyq=T zK!?YiE&1v}hm~z}-%@_U2itZP7%7@@BQ{!uey>jU$cFu^TF=t*Grd``=2hYT-Pn^? z!{IPja)sAeWDwfjK7sLu&(vMdDT%Y~FFJI%1})(A9&Gqw*KKTP`)YNplsl6^mccX1%v`C}<$fX{OY{aUkF$ zjA}T`&HMUk2nyW)QQmLYtjj+g=1E>@I>58!0cP~5To$qI-(l$K2rMX9>HYmbAM#1= z=g(4ko#2Ks{Ul00)uood@t9P{u?uem(DvcOgFAMZI`}FA*G;p5cVN?bnC@DepeLs( z{HBnl<_K8a4h%Eaq*&op=wW*ip0w{J?hE^Y_!~MoGh%7y)YZxwQL+$3*G>rk{y>O* z1FOkJgXneGmOrisq`pd1ONGei>R_aR@UF}qlqth#wHfrzd|%fgEUli+Bnkf}QT#0A z84>UNqDZ%6`O5=tE|>nsVmT(n&;voNR5L%lTQ=XvU)~INjojJr4q6_Gzw_OCD-39G zjU`rg!uQ}=2tQ0gi%wXI4SVpQ96C?RWRTkUn^&@Pi7bGTvB8B7i;B;~IP!U{pqi;| zdyevwS%F%LD{~=mU(l|5<6ZRYMHGbcdMSA!yXkaLw>!nC1viUx^g=I@J;IHDtygsV z&n^^U^Z)EZs&Qp25!#IeM%O@bg`2dWDl<`2F~6%SAeTjUG;+YIIS+GPp+m{L)~VSiS)U!kX7}f-tQr%C=ZU z|1$mJd(T=g7UwJdvxiz-9O%+r%g`uQ;SznF@dBRJbke-stHrW+X~gk)5?D5ukbH?b ziB?^mqV_$3YZ03$rwRx|JbpL%KEjNYbV5GA!e(+9hmlLwd+F*jK%^!?dy$=mFzmmk zn+nSahgszDH-H^LM{iHth$F(Kq*U-SA}Mwr=QLL#$SDBiDOi35#g@yUFQqJ z@7nr~`Il$jc?bI+I>_Ihg)9*=47e~}`DFP5WS(s9(gFT0EUbN);_~}cjH9M*Ueq5T zLyAc!@KvCJ7)va`>zgS?2!8<6$=?wdLn;i5TPm}Kk+Xi{n3q5oY_waj5*;jh zygR#t2^tB$A(-qZomchx^0-8->%eOZ?@Z5xR^qQ+&UEjVz|dBj5_K{TCQQjqM@;yI z94YPMCsoLEA^F`L93=joz}G`>`pPqOrR6aN7yt%!>{u=y_r<6JMuz=#`L+8jjVSC7 z9G#SDSsM&0bKasEZk3udz8)1mI?nL$Z{fr)cFcIX-j?ka`~M;w$pQOo9;NH!i95I1 zCkwT+RlcYNfD6&FCz&2R>g*%p->crBR@39?$)mVgFI!0{G=y-0_*FEL0}qCCeMdN- ztd~X3HD*02a2Z3;ec%{q3`{hFh~yYRfu~sRT+oQiLzVTHo*XPj>VaZO?8btIa0P-$-gqHAxfH$J z-!UeDmy6$Z9i7tQP!jXrc{;IR`>AM#v5MgBj)*ZCj$e$BS{7ll*j`k+8;%4wy1f9h z0cOfm@;h#4gLyhl4;}MntFX577R{v6W1gE2iqG4;^f5v9uah=>&=ZY?9;m1dF@Q-c zIGm60&9i}@Lg+eH*ojO}b!JKEj@lsggj_UueeO_q&W64+%e% z@xF^2@d>})kU}mX!?)SuEXjrZC3#WTme8XLtn)x9hQ$#|Z8Ua}z9n=IhIrNT1YLOL zwm%RXMx3wB>So$+P(hP}v4~ap)WsoE*Hd#kIVP)NCpy_YvN{v!@HoS^X({#Ld|PST#cw@ zWUoo_$B;aRwdcC)=$wXl`n6zETr7ar2$G#9D zv!eStea&)vsz6Y^;@W*kK1n)@;-b_({9ZII>ocQo0?TUv0{5-p{1nk?%IUTC-l6 z=k4DQ5hdOyx+H<^HC>AxAPb1_u59I+PKQI)%U&|bvVtpW$0GmJK;FW^bHKRDOG|ur z{^Ymbvp=lqc1Ifz46;5*2eQw=LhELZr4CxTajLHTCpz5Q>|9IO@iv8quLgz=c;Oyq zxNUiqzI1=h>2q&+eYm6+0=(3~)y^j>{P8(L5}t6c9f^IwPejiCx2Y^%```Ta`Sf`H zL?e!kv?zMqylkQGo8+Vjvx=^n6Q@u4uj*a27?-v7Ushed7oK;??)$WU&kZlHXNW&C z#86H&LgxX~i}BD$ugp$7Lu?*_P{xHhJAx#4Be%q#y^+tMls0t~n!!9q+cctgxY2|w zf2zcj&$Tl!X=Aysx}R+Ch6ro8X#sylr`z&tmdPYpm!tmYld)94FBK5)lm2!JEP`wC zE2l6UI+yA#n{636VdFaXs*I2*-b=&KPtMmMUca&0p72*G4UuyHu9{1g9|58z$ST_` z5$k?4@7r41U}I!*HwSCgbtu+cpRn1OIiGnTxLb1xrvBA`+JaB#wA)YYV(nH$=J0e9 zBm=86%uOf(^2OLAh)Wa!CD;&9>EzB=Ni>n%afPB~@Qnle9W+62UrB$7{dxF?WHWSg zI^Dh%I%I?T5edHIMAT1yw2A)%GeOM0!3zzHa48h2!v?_q-)SpQKeUavam5CIXC zA@pNfFfj^dL|%AeP$5@M-WUMx5MAS~Z8Cl2A!)?3BH zwDth8=C4yM@P%+dclt4~_YPEneJVwol?PIau=YL26W;TK(8P6Kn4{E?I0BLhr2gfj zI;FhN@7W`*d9K@-^8^}=;%#aZr0SD5G}~kV4J`$%g$IsIV7Wt$cJ)NKFnMGW$z4lJ zoNA##cXkXOtgEduV0WHOmnaW-d*mr5;7lAi?$F8-`ldXn$K(T4F!_$Wgx}Ie->ph3}(2)4`Wdso@)gOo#eBmYq>0d*1(l;(eE(W)EEP0 zv`Rrj(mDB~xY(~CasIqckkB!=$E+YRr+%F~Jq5}6go42{#hj%e!4(@H>xvCdkO<|7 zdjn38FebtmK5N0E-oTVif1#+sDOX_%-u8D6}dR@ac!!Aa@6NK|hI4 zCZBZ5ch?Mu95FYmogFkU5#gX{m znb9d=e%v>G{Co01_z?k2o)Uz=`P8Gb1Pula{1wPC@>vX;|UTr6CKKKuV zg%wm~8iiCk*{x z`!4;cl?4lbz~Ax~DVm~e%6N)Cm^m!{G5E6+Hg+n7G6-W4YTclEmw18CB&N>iB=N_I zLt06%q*LNQj7JiO2f9EvluLMHy0|B-8mC%80{RW6VjW`;m1}>>qGxLU&~qK_tFF(3 za9<5Yb&Ptp+GCZ=FnC>>t%~@J9Y(=@7z%1$r5z%pNd<}Rl7DK~wl=7sAi)W=$a^5t zZpnD|A3W45NNm+H$|y*n^f0$DuVa%BH78JzkW2`}96>eI-_VabO4w!1bJ+2CRo81= zxpaB8f&_6X7xRgtAfa#Eys@SDSwTWVBl!6r7~r98ME#}U4s&$vER^a76OlcMY- zCg?*w>B+aca2!T;8~#uI%emKHoo2u_!Lu{->aTX1)=4v9B%RZZyresDcraN$wv70b z^bg!rM82bU#e@g&3WX6A{fjm_ z6@n|7cL`rMZXA`8&8#*A;2(>Fkv3t$hin3qz8X8@2_H1_%l9`l`ogo*kLetPxi836wlg50e1$b7Z!d(^T?{^LQ0+I8W9sUU%!hkk}M zq8}Bv(s&{JJH}F+R>g*9*32&Gl%3!G?xW@pfB3Zd;>#~|!o*$iQBJsu(}v-v53BWC z`j6}%dVGlt1aFG|x@V89)%;I5ieLIqxH_czSq#cs##`e9b-rTrPd%nU;qrUmd)+eX zy&5aAQLpaf9Qg(Oj9Y#gKFfbnl)oJc5>!M6rCO{-&_7T?f`V5`q9BnaN=4;(s61+I zrv@$Cckb|DY*~Z#hnfg*&Bit@5~qU1{5CBrZ^`4 z#bQ-bU$LQzhJpl(%p^@^3#|Pj(+Cr~s-a!b&C2U{^{&F~O9Af(DgVlu-TU1QlUq z`T#WXR8p=FTd0RR?u{!p7`V^POCx*Veh-R0@D&5*%8^H6>Ps3xGoXfEF}YA(6LQ;u zD?Ct;;C?hZ0w$2X9RV8TvLi^i;O~40PEM?_Ljjki^TlK-G|EwsV6e!Mdeqmf+b&bZ zAy(4G*6L@Ndlh8O&u;v#oybBr%83jVGbmj81^puqZiI~qQm@Xq+)G)J-}<4g*7p2P zxWKHxv9D*qfoI%!33t+X8GqXMTJ&BIHn>lV|FrSf!|~hdKWe!Q3)gk;+LJCDQHBYt zes{~Y->&v5-iH7`6(kU#v{>thnig)i zUJOc+Fg&D{^_=>hb(}ak$H1Sk>6h?{J1wq*aQn_}H3iJcSF^#@0oQOT-Gf88FK~ab zMuc^|vL37x?3sIa@mSBE2xYiob-3$Z+liYG@X{~e2^+r*mv7t@L1PQaJ@g*bt{kTN z0d79DN7^QfHuvHauZ9MTKO|GM2UYKyxuS(W_*p0i!EwzF~9Ug!B z;2c*mwpx_JJ?}hKLYXzM*`a*XH}}y)Y1Hs)9EN=pe;m^dKW=(;S~c#_wuY5{ncg73 zq!luqy8MZg;q%=~*Q2=BN*i9=tj93=0o43qZMds_ft2xAlkI{;x1QgR3}I%Y}P^U zxTY+43{&l2AGWhd&xyW1%2{}D%?{VJveAaCADCz0uYZMM@fMkrTfO68#{e7L@bQj( ziN%;R(X@NAB8Mcjrf0$X01SPMt8hUEIHxiFZk@ouH~f(>55?o|NuI_vve&QZ#0-5S z7lS4ej!6c#RSFVXOh!op8FGR$behCIg)Ix?n$tix=S^>9a?mvSe7J{v5coNtfybNP;9GDu z=CMK}zwr$qd0c*l|JC&9(vN;BPL5b;_UaUYxmjJUA(=RG+N5)0k$n~Rgj4&~`Ak}; z|9Wpzg3OB!;OjajndK*+eA4{&U;lOUt6%+EcgtUw!rxLKDEd>b1L2Ad@=%KE9~0Rrm! z&FRW)p4+R_NDfMQYDSv^$UFHaOv*V(GHFaXP@mY~_DCmdFKY4sj*gJO`OW3#vHJ2k zEw=5~M$=MMF^%~rHe^VzRe|+()=F_W}nlEl$X|9V8pdj&7c zgC6Lpv~vM6Lq+Pu)1w&MwmfMT@7!v>`ttMUmJ}o&tt_iv?`}?LgABX1|IdH_@0+t{ z&UpNT@(EHS^FR`Y212pTY9{g=-@SVE920#GNp04AO-j1WN{`G}+rCF7kok}LPc=Sx z9$eLLjR!FBW%^Y3eD+0NcSK>e@N?YRJeNG2t2RFR_!B8f{J#0^haWcAWM_;|u*b*XN%81qXYnZgkp@1Gg&#EWiGO-CZjcs){GK#N zj~;H`{oy-Oka(jxd-jY@Z`v!bx^EGH7i7jQzYL${KPlQ1DM&!~G&$i(`?&9J{LGl) zr~tWQ!$ra=o~S(QyPpYNbpdx9xmy63$*h! zc-W>vG*@iQZjq+7I`?^ zVS0_TryxN?ra{nvv++6bfS+kA&;XDd=0wBR60&KL^#Xj!A8%7YbYnsU9fB?~dCG|q z%mOCF=^!9#=2r&>tk&cypt)Il5Vj_#yi(l-nh%`?&= zA8mTH1E2|i6hx@^b8`#LI%2E|002M$NkltaCzJsz%x{UO{H~p7l#WnsY1#*BL`&2o3{=pK#;nipdg{Q`!|5P!wNg0h|AlLUNP-2{h)&riRa}q{pAJi z2IGi(KG5095eSU*q%tWvtLq<1tSIfFAaVG>VGHdTO96*)z{xTrZl;}nxTQ(Iv_J26 zoiEbv;?uR)_~Eyfe;xL_@4*y!R`i<|Zns_x#=h4s7@uH5$Qo?`9CCb;{)5`aw73q# z?K}5=3Yd!zW`q3!*RaKWCIUo%G9C9HwVthk(uR0-@mSBEiDtNAb-3$Z+lia;6JG6) zTl#0%+U_}`7G}hR9WKKVuL~z()nRa>UD8HVn8zYctt63(5~(af_{R{vau5J3m zuMXP}pym&&!wz<-A!Pi1ya&gl0>ws)@NY5oM{64vd1KtEgH+@JW)uuY2{Qn+om9M~ ze3Ac2{vrni?#K@BNan)ACt@RHOB6c_5(l(f8wH6O?RZDlmhj&5F2eUbB*fl*@>RoC>1D>taC!nWT%MZIf%& z@wyEg(fmlMK~>jMONZ- zim^{15K_qVpa=ax;>5`#ERG=Cj=7A9rwq8#6)plzO>n0>{txs4WN!|ZFrxfa>IxuV z)05-Ix#ocrPB=kgmt^7i0RtRsno%Es+rptC6oY%$KmA5|Lkaj4{Vy_NHYc(+W z@?ZYn<~P6jt(5wf%KWhu9WiAyYC^tcC%gA)2amWon zd`*n_va2A)+cb`#`m~|%Sd{XiPfb+)j#H?CFPzjL@0QGB@811Zkk~6F8#dCJjKEU; zZeLrsA3W47NReWG-vO=F%oJ`wew^#b z5Wl4Z$+{4cs+ZR4^eCXu05%(wm*u31PhOPZtL{XuThW?t)4u7 zsD;OQDMg%ae)Rr(&Hw&y{!R0WXoM`CO@_f$kdZ47dZ_yyj7naf&#Oo0=ab&^N@cU= zYf}1cR(fQ<+V(vnfe24r)?M=yJ&&2RMuxHSr}~B%3q-#PA7?F>wMY64*wD7ETH|8Q zCEj}b_MPTqDcSw@w;wh?|KNk>(l_6ziN_{(`sds{AMoinSZfmym_Wssq9=eWFis$J zeDmc*lmE#Xmd(5?$3u@j9*VJ~<7-^T`XNdZM~)n7e)!JY9$Rp#%|0n9#>sxbf3aqg z@&n^6|4FeQTS3C*HEC)f>;fGQpeBU7BPs`m3ahv%NHDCY0y1f2P{_dXkqVw8isZp) zimKykKrOC?DBF=#D@w^5Qtes|?@-uyPsnN&Mnoh3|bv{H~oChF|amS4{V9NBy|Y zly`ooUzD@zKp^aQeiNpK$v02N;SFulPWbw}8$Rs`mvpk;;Z_^Mj$%d)Hwvst!ql{y zBz{ekN#jovZ?nf4wOqR4y7r{gF!yQ8FX88VSbgqy7e^2ywtzvqBDiAXHVP6NFT?;Q z`vcm(_?Y^WUFzq#|F@?gA!Sba(MKVKVwcjMeS3U@1PT%-q)0J4uPZhXY%xH!34TP& zgy&zodRy@5<0_5af|wc_(t>{t%8Ko1)8wa8+;4u?!dw>7km^d_%z@2KfxIS zm+bcx=%q6K<<;Y(gODUFe3LqsyD||P<-!B*`8d7^z@!4@)`Ke3dF=|y1tee*w&trf zF10(bYQI6az07Xlp3lpS=gW-SMwS0Y!AV+ChsQCQKJ`26IBvA7dQ6gjz{Wr0jg!`Q zVJD-2Ie9Se$p9#pyN43neL>qFOa^k?dNx@q!($Cgzw18CUf19Hdw7bgeQMbGo$neZ z-)ZMfc_JsEC$HNWDP%j$cMY$G({*QVm2v_4G@kk@4!%7<)|iI52PastP?QFEb(#r3 z{o6PErR2x>$iwv$A)>}R^uylZ!XgQe=8^Qt_cWhnv4CU#S?ptO?!|%vIO)@-v(Cp* z{5tW5g&Q}$4%oIlaUYgOy7R8ngU(4O-j;Wj1x?emQ(q#Deg;4rUfcAC?}qK3nA!DT z&+c*OfIxLV2Y44J*O=BjFxBtcD7WFK{wTB?Mnce7pT7NAj2vD8RlKD>sLe>;0?oEd zK>}s#JCgk{A5j&FcBS7Lok(}EQjlP?%LB<4IYE~N(8EWL=mZHAB<5Y0s9#UD!x;l? zcnmU_2PjBr(evu%E6wE#lPgFV{~Tv1Ki=R2-r7vV;_6fJf&ZVqH}S42NzyzW5JG@h z#J)rj5D@#Ck?Wk()iXVPYO<>T-RYj{>8h@oGpDLfRc6MLnUxu962ZQTRUiQZ=KFni z?LB{&w@Cs-0509<_xfUPZtiZrnVX|QLQ6|BQPyxh3ms_92@`zJum15ms)7>Q^k=4| zkJKnZ2NqW=BOsx5UePK9NMfGGL7@%OAb~Im?+ArJXt*pYug_mN@2fTzrD5)Y*0Dq= zrJ(gNZH92g1_EUWTA(4=d{OzM-8v2Os(<4}=7*SU^N+Lx#mhrj;0{j=VQvYJNtm7l z_U+qSKK$@Q3rOtUvs?2NZ73t`0FThAej(&?w5C?``&bLkv^Y$NkPUNB3rHw@;4E4y zeg5ckL{-&q^2GbNrZ?Xim9+CA?_HXO7BUX5p*;fO2!tef_qw@Gu!aCi7l(wC`7tc& zawaBJGt9VH*WpMBzD3>OP#uCum!vV`_kZ|9`S1Vz@57hb16!P#SHfHILRYzH;{ZZ298Ecjfr(g>vbRuI6C)@ao#E1SC#~uUwJaeXS{MFK@kh%mNbs@jv`kIVf$S9ClOoR`1tiJ?mtMS{V^J=92zx^!|dCV-OY z@&b?qBsy1aFxe4}48K8~A&$VSOg+>g5vKzjUNOA;+h5_53ktx(B)*9=w$lMuJ^Ai( z5U@NkL2O~548Y(dv1|Nbn5uV3;%lNgr_DR=bVPL_lOv>jjj`bd9b8Y02$Nr~8qq{V zb#i9sPEDva7*$OZYCHD%HhtyZ4nOWU z@l{BM?03DT-A)de2^ZUGH)Wh*(?7ra*$JPzOxw*mjXUo=!`?Gp(n>zjPAAi7ySKl` z4cCtMxW31s*RZsb7Q?~}^IPrw55sLW{l+bqcDVL;=3$WgO3N?dr#+}Vd)>vS)St63 zg$n2!dag^AB=>m6Y+0PS;Ry&x_%2T^=pb~q|G+^lHpCs8=EiD+EJ7`4V7gUmZjT<- zsUN9SC@e5z3(|b^F%s)+Dh}i;#>P zfCD_>WE{Q|pF#ZgS)kccamajS-j*8wW%$AMa;da=++~n;cU(Lea}cL~z$wQf35WWh z=5gbka9`T}DPXR>LRMYR&zbl8>7U$Ku1l?FV*y=4ph4-k-3NVV9Zq`*NjvBuxanTQ z<-LB`^h01BLp#g1M%)}TWIu#k9hdhEmuUef!z4U}Abi4!jYB>4^&69#BlFD$Yo<+n z3^41*j(vVIe0pX7SjQy~xf#fKi-)=GU2E)8C5*1wAlmQ}?jXC)`=Btm4+^)`^y)N- z3*9hvzWHv$O?sp|HgS?Rj9H)&5AJn1-t*fh&Pbp!wBO-oIK#;GjNvf)`;v6cPwG&K zZ|(NzyCL*Aj~A~e%8EYP^lSrLDt{bZ9;BdrD5W2Pe@!MuZd6@uBM73ok{Q$PZB(AFSv=DgN*Zd*Vg>T;mQ#?5as+_&yru3~DLv>?|4$AG>yWbjTHf-FWHSh_q=L#B)$a8

    2-Exn3ZtS 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%0ANo7s`V8xYLKD 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

    A zgx)C<_khOuSLj@JeEL4dKa8(<$H-WV_vM5`H~ln*jEqm1yV;17KHTLpKeGQz-VtXW z1}UQbl{1hSVn9_PbvPY1f6-ai59{!keJZ`Ym=-UIAUYl1|179BkL5sD8Ul@ zp)PHl76uYmAKcbX651|KcrcK7Bs?;@j6n)7MtBK4FH6ESkYM7QjzI?%P31EYT2#Ia zj;P$)S~*^bG!<^4aivoh;Bmw;kVc4Ng45u#fds;YU;u{$N2X7qNxCfMG$e#ReduK1 z(5BH*0~m}bZ(uT&FpM1CfZZi0cW}3j0Xo_NzG(o?4jO%*zRO|18&4jSI$n4)K*CX0 z^OxsrOf;zG1$~qk;zdx`Sw7Q>V-IJgJU=NVj1}hLkXoZjg&!;;o>NaFdAXU2pwUgmr6VJRW_E;`7)9- zgEU!HnX%j@8IzoKGDuKF@S#035KCny2AX8bXR-_b;!H=C1;vYz#KD6H%JJiGl+$mW z(vcfm!WiQ6mCNPq*{{ntXU>$bKmWX3mXQQo+tDWDYhfw|C*IOtgAo0|5lt7RHZ%bd zJ#(5IY*aa7hYvp*`xA3gLcmMX9om2!lEL_kszqE4cx0R|0$n@s=mD>eAJH zu3=Xq&9Ge@bvnZkM*DNeNqa+olGbv~JuudrIU!12*i=!C`l;X7v_5s@uQ0+cUo9{A z#Bp)&aGr+^B(B5`60nf=8jV*CnAW~dx|+pD7A20q`KFAyI3gp|LVU?bOICxAJZb|8 z@^~O!h`!sXV>USQ2Lp)%2M&Z>B7@QIVSpi-O;WP9Xf-)j4Ku?^#vMz9>#dV zCc%YFkx&l3!$3WDlJFNuQO7xch&mD+xEbpO5(g@r`n3bbF7l}02(RM}_e1*Tsp+y` z(`1;sJPxbjR&(E%A9$V?{?*VlO`1vRoD^=Fyc4#Sz5cYVJod-G4qYt=;Oxk$Qy)?# zptkB78zuivZrG7<9sS~TYvK3Nkm_!@eRUAGLT*Dy8C`o1sysIWSn`2sBA z$P^cSJPzJ4U+^vx7)a2M^O6jBWRH(eFr>vu!V7igDL9-TzRN>6jxhU%b3G|G)|K#E zIyJ&m62p?#JOdNs2i6wcHW;J0ESXQXc<1Z1_5+5W%2`KLL1S-?JAk5iSw^0j$4=)M zQ%#*HvZ%{6U7iW8<|3z`DHsrx4&Z5X4Gu63!U;>)Em=IPynx1~A19-3AL&SlJ_8Bn zBHJXJ2ep;`7Ok7mZ{)gBt_8ANDTdtaAhCvlQ! z&9~*+W$mKJ8jfTM*#m%eFUm9MpW*@8OIbz!!HdBI^OE@{zmP}P41p7>H0n;>#0y`J z0mNwg&TYL2me1~<>!7I-9QziepdCbV8CU7app$T}1hOopPna&1iD$PN`Vr{FD0)-# z;Zhba%Lg3r541LWS8H6{qa)xc>k2q<#2RkXFGagoxG+SygMT~=7xTUkfBHdrUj`B< zPo31UeA`2>z&pO`*H6$-zNQhqp`~L&_y^zMQ_xC&D94IM@wu zx8}MSiZP#IUNeZ-4Rm-trK{%xke?8ktcyX|*qbhFw2&$Va?}mWXv)TpI=s-PZm4Ty z7;a%8fed0W@#$xum7o9o=jC_5`(3%FqfuBZkDUQXp>k6eywXjhKW?CdxEfIi8PPzFEsBbtfR)fEFXtMNldJ7G!{G%gFCFu-*WuW8S?Fsu;| zaf2Ns6wgs3ta0Dct{dziaYM&8Kh*Qw?1u8Aci%04^B@1ZeDLERmF-$%=HrtG+M$#W z3RTi*qw7O&$k0Uk&+k|$a;()0X02RT4%aH59|kY_?T5+vWzDrKFMjTCe=jQ+zJIx- z+T>Ph*RA}T&*4j`yJGGB$Mw*~Pv2}D)@v>W;oUKW`!>TEub+*}zT@rJaE5Uheitso z;+LOvVh{b2#}$lsd@;7dAU!t{$hki_Yr_aWPTs8ds*F?Uznv%e>Wj?WZx5GS{p9n1 z#0DKCg0zw_B~PE$?-Nx_TnwiqK-9yluDRGbK}Hg) zpoi;ZAR+6?D~sA{N&bS;KM=0R8caRH*I>s65)9gSAx zh0-%P^FW+RcVz-gh2vWY>=Q=k?g2Fdh9hq-@PUW)cBIW00yI!?vQUtN0&vlR149}n z34}2)jw23aam^rtbX-wy42a@BSlOX5>(%fKOf9_7#n=A$84rc28puB{Q=L9=<^>_7 zh5ptJs}|GM# z-1Fj1v&T4MgJBeM6SM|Po3g7-#9&ilxx)w8b3h;Ej(FDtaTUcKnuI|(fQTP%iz6$*9SHI_$`-hp(C5(<9IJtG z#AaSDX*UT5{d049><042;5mt*jxm5>KutMPej$yWILL?>evE6OjYR<_89bv<_wCzL zPP}=%96o%o?9*2kOp2M5T-LVspZxB(<#TG@RAK#nN=G?_85dyjyQ``e&nNM_Jf7N29OC( zX}Yo&5kJ5WH2N}Krp?baS%xKydtkEtX4wdHTzwybJwK%PLZv6T@E<+uaN{9)O;hSa z^2>!~;c{L^oh$4%Uv(neQwRP?BH{a9(#SZBeUX)7*NZ*hK>7l<&J(TiD82zw%D$%h) zNB-Iak*!~Ti%*}peRp3XJ(`t zlo2>7kyxlimw*$!vOzO?$_yPWNXFTw`f>|>jc$c<7Ai1=i&99B0$=kf_({4F| zj*{y?X>;t#zJ^Fct~E*-3V!Mjbs3DDVr6)v$C@(11NsO0frnaDVhqIi3b`SUG*Lgn z?Y1uFqNd{VN}w%kkEjp3Z%@ zoGW4N($sy<^dSKQR9%?va~};gOgElqF83oIBYSL2c-M7tbmQy%xTiks`qI|$z?mlB zJ8kVdjr}^V@4lOFH=W}hj_-To%opYkteLR2e11ut#uAL7ILDq{zVMMn(wL9nit(O& z&pp8FeC%7Ei6bA@U>@tMUeiJg=MNv}@B#gV#b3s;F2h2i>pai7tbVAs z{KrTBs27dD_2c%*Snz??RG1I2Fo3?%j+I4A>&t?D(m( zQ61l~ci+B{Vfe!WGqNzNbvB;kr5*Vy4Mqy*&z{q|$CWf#h_CP4@h$QxGUbw9>WOi& z*R&`E$5-H3|FAwGKMWzFUSq8$>4P(jshNZDr95jze3dN$4ql*+qE6Mxkv7(u~g{SC*_LF$V4vIXYVdV|HCtF z+sE)g12`}|2Pe7%7wfx-~Mg+ zL?0gz_E0kGGMOjv032OjQBLc0d@kTJy?CnfnjiQ$^Qy)Lo9Y%%|nc>zB)I)x#s{lv&BlR*w8Qcu;fRZORM7DYXO1T(knUtEP%zjQ9mD z;7;8F&0OKSqL86ue!)DzJ_JV{tmL2}=nyRY=AN}_${p#20w1ziC%Lcn?W>n%9HKR& z+d888iPo7n>;1})-+!ZRh%U?g!HeS26=YaX$m(xmh;Iw^kjx%1v5Y9b)8a@|c=tC~2 zb6ko6aG}PBV2m5z@V>A8_8#Szb0_*g#!?ugGiGJZ&$tRa^trspX517<8OP=WdXK6; z+xg(v4!TXd!@DqO-sjsuLY=?L(R6VXaJY~z*wglvrN$j%p#JE_>7q9%kZq-A?msSb z@;5H6E3%_3n=}ZS*C2$i#n`ZE=6Q!Y<4yzJIhA=V5e>94khp`91Y5-EnE|>7osoWkM<`Tg296lo z%t)3tZqnpTlYb^?o3)MHtlAAi%FvWSWeiazD={fh7(9X>OptSutN|<&7qw65XVD33 zY=1q0mD&CS`^u3chsp`3?{qQ^Xr`fVms>?YyK5Rg5lu`N=&OJV6eS0f*Tqjs*#}v%D1s5|?8;Tf*s& z^rJLfn%qjZ=A^GNka*+7Ni9rl)8I{C1}KgNOTO$-j?y<;ED%mK6>T2J%k@KHIpVs!bM`L?c7TIF(8IUDu(btLRwEgGDzyDYZ@mHe^&@+%@^dRLUAKeokSJ2BC zAQye4l{7(TYg?5?jcA7$^C- zA7ruS8~3Ca_Xhgk@y^>kuYKZbIPPC`=kkpzM_nJIU|z=XQRN;L{`~TQ_SCkiVLF>} zRcM0Ym`R^rJbtt#Oa0eA*LS1ZcC9~a_)+(xIB)pxt3kT_H{JFJ`Haw2^tIp!ecI?= z(sH4H-G4E!We&iFS2ntojUjmO6J&2yIx z-xrxWoO|P}eeTVF!`dee&hYt^IO{yR@rD}}?)bIvp$neSZ}SyC7lsmqv2e$68yHD2 z*JU0DjV>>Iz|}mh^&kTJ;v1`@0nZQZ^@#?}XPG-(=02!ZhE!WT)~_2vIDy^PeBd*C|z&CXLqsfQhtC zdyD=>K;(~u7tjW8W6q>|aL(#W@K{5NekIGmS|!FR{z%N_CND1Vz+Z3$e$mQ3d58$D zlj^H~eNcA#*#zr(7x=u^N}gUr1J-&a3at7AmU>K=KJ>XB z2#1aVJ$feI^+OzdB8->sJ9RX`HobUf4UQKPQD2HP|D#Nq*#Hk|V_mYTqlm87OB?VN zJTZUBxlBWW&4c3F1<5ErSr4)oJ+Zdf)XyEQt)Dx8q5S$czbSwBcYjyD_~Of;7egeM zi!x9jUT=r5T#kod@WOR&Lkb8|ZsLVxUKjD^EotGGc}6%FdEwyMp{$GU)b1V!4;_&q!q(i0fV?q~5FN;>GKk%5$tTwdSSwI$T#vPT z#I17ql6K3zu9y2V{Mo3syF;)ickV6!>crcH-6OUy>79q(eXJLatZyvM&z8ITDD=vs zh4P1M-N4d%*Np--G>b;`&w|DPmo8oi1Btu0 zZz}7@Wt+wdAN=_J*g@jmci$>AQ6BK+%e`!mn*S@DdQSrhN}LxI)grx|!to)KmUBFo z7bo^rEAO+enJ$0*Y~A&&>3N;s+H!#UrEc9vksD#|zubobQ(rZlaSX|baG>|=G~5Hr zc!xfi@eS+bysNWu1am9qG~|o!WUZX}nAcNzrmxNq`i-x@5152=uMH%6xD?$g9en)J zjcb6f-x<9KomrGMu;!Z>NNm)rgH5ug+$bZ7G?2)b*>`0iac$vtxuHP=1`_u*fOw?J zeHW&#FNk@j!^(UQf z92uUCE(f4YQph(4r#XmdEtm{1tU*KK<9B)aGt|EgL4K4^8OAxNO^QcARRjLO-U0Rk zUof#jL7vW+?BOM4be-^W982Hzykt|IKY`a#)`ph@ni}e;AUT)B{5F4UneYN?9TtfP zKgQyK;R0nk!`O#M+*g+}O6oN5lgyyh78(mMwsGU0uWxZlXH&ls5=}wj;!9&B!HdW( z8u;(jHufw4%<1R~2Iyf>qjsZ*c*d}TN7_+LGDH)TBEHm(my@DPk`~GrLkZ-K{5cnH z`;KjKL`>+IRH<=nY%WhJaZ@I&bbGNkOu z_`rvO1hjbPm6+5(OEbvEP=dD1Q9H4iAZF19X-8m-FD?Wd4-IFs@DT9`8r&G zy})Z6m@+ecCZwZn*ij~U)a8N8X`eJs%f!_BgK%Gl1vmIcx!ksMRP5y8FPkIUm_jx!(3L!RM@WrFAWB96&B3tzXiU~pAiC34;`;j~@-2tEg1VIZMJfZcoc z$w1;w>7{KlFsKbAkX^n4RR8Zq6+R!3Lyox~Ne8iI>4_63;;0|=4uieH!jA)Shs|!?kvlq0f0S)^d|_kYy$e z-ZB0OzKLgpdg~yA3-krEGBjl;3C3Na|K&3dqYpqPajrAU%@)MUCi*FO+RYzW+&~Ug z4#K>MXZQem0e@DapZHhNjVkx3@aLCDq*c24jHX^46TeCfCUEM{dc_h zZN`i-4r<;M)jV=pyZQngHjn@(i;jNz$1@H*zG^(a7cqm|`o`(&uCn9 zSDSODlT7C*bYe95LazlkpIl#E-;jpG_dR@Le2uIiLqi4<+U*nz1HOB z)XrJgp>5HYASM^{vmc^;Q%-aOG|~Rt=E+kfCzD9CT?X}U96M6pe*1L!=?5QZ?df2o z$+9q?5-sf9r*x$CT!Vg&`=mkjrF=XOtII$+;FrVjnKQyK9P!Lep@%$uMYzhxGrEql zU|h3JaL1vsI+0MfbPDf zIrV3se_lTN=-1^R{^1|WS6btXG^A^ILS4cG;8{zuYz^_h!EadLC_geYBLfB2_qivY z3kQBXV9n3KuR00+ucGq-ReUHZTKRzC(WCYQ$`B>V;GA}`#NcVy?!9I2{)0NMd2@My ze2UlWl=l=PMg$sDj;xPM0m5*N#_&goddYZfhLeb+dZfmjbk~sEx(sGVP@&ZM^YUO>_Rnz6Kp9gK?Srha+zcuB6>(xG) zQRnni_)-5TEGaW!e3>ZVaPI${#_55lKO&wu`aQ-sjGOLj?6sg>jo2}Q^;M6hfMd;+ zKA9sASubZE#vCj3sdOjrkAbV{Hciv`uMH%6xE0;1n5^oLzv#%QWDQ0(JXk7oGL)Fd zK;nrEB=iblUIS*1*@%u#=@vAIxqkm{x%qIR+zcyq6+^+d@78#6oUm+()5;SkV6yO zfuiEVwQxz5?F|Eoqel*xqeqTtSC9Fi`KrDSI$2BrfkD^!Lf*M2ocsFO`0#62Rz51npc2qOSsH=(JG4DSzmUhZ-wz+`CZON17 z7A<}Z@NoMZ12{5jZTK-VyQdlf*N3JT74}i>doaGQV8`9ARHLr>aX7}sng3mSS9&(i zl?)`%f9PH2wfN{`ocs4ay=mM}(|0*1#p&|fce?I#_C2eu1^O#v#`gp5if8-W(}xWA zBlK6%XElA2?;Vcsazl6bO04Z~T{fq)-$LbG4cm?5d8PQiG^-6GFXRYX>-hw8Hu`K9 z==SJnM%F%X7)D&YcrkXAU|c{t7W43Vwv3vOq;Wq^m}Q!LH|WC@)-?t$6he+e24T%j zS6`41ZG!O$_uyq*HW-_U9%$mSTPA5KD2^WZlkgv`!ak6?LE@=yqEu6*czVE+>E>@@ zoE0xgQ}fAu?)o)c4No}ZdSn8*V@x>MK_Uz!WK^U4mKjKBZA6tCeFyq8jG$Hj9KrF1 z3?%krAfYuB)=$U}xj;Tx8(9}?B%)hkw{G5w^$rXq?%&hPS;>;+#XdU34qWU&K^*i_ z`{0R7aZWR&HzbdWN~as{*?xXWd9hx^SJ@Bs5*I@OBE<^OQoL}OoL$|ns5CG76XhibqR#s@rt4*qd82Yea+byA$)YBM9R_@TPg-AuBWKW!enY46@?o3gC0|0Mp#X3-4(imd4o|uq zL&osF<$o13;udbD%T#_E1x~!nOF4lP4ke~stSht5ht9rs?Rxo0yGQ);SHCL1_{A^c z1B8GDgJ7W@Ip)O+d>|dpdNu1J^{e%Fu2bh4RDAf@d;sZw1K+%MJMc4kMq6}yR5^H8 z5FbinAi>(b>Yd_YIG?mEg{=a$>Zo@}zp^vmwIyhnj9QunR zCnW0_NDL$i;bqOGslO=jR6kUH2*9#bwTv!{tO6{*39oh{dUIVC)QKAk>7(!IL%KAO zxGH0bTV+;Zdv@(8AAa!T^4I_2FU#AfPmxH;au*WrLrUU_2pTc;!$=kH7#(!-f z(Ze;WJjQY1Q^727Yha)rY=gcSpKS~z<^{A#MiTSt#4&O}2uOEdgP2>5fyB)vRrV7N zY=uk4m)Z?LogFVonOw_2Vv`09@wGT~C}RYHE>gLsfrKX8Y^R2!Gi5@KfW%_DaNxRv ziqKhbi3cab$Kt)u9E|*hi-Eia3s};&E;tcoX8=Iw4IW$?NMO*xOM$fbAsoSlHV*`I zUXu-}X-mORH;j1cL_(D~C+|LD!_Q2(WKberQEnzDS-v!m$cbGx!l)BI{QLK8CHgLgImvTjI|e1*0KyRyioCyQ8w2qG0P+E}RAqOBHbH@pxdZ76v3jh>lO7}%!r*`6(gK|7A0rvYPK?JG=NMMqM)Vu# zHsFyN@~g)^pse*IGDBa21CF>C)tT?3=qLVFbfd~WDty&E`d;JVzFh12s_*+?t*=wh z^g*l?_SE^YQie}4o>Gs}f9Rb)M|G{l)jHiuu>HBz7*==RrN93f>RP>9*Cp`iHLii) zrSFx#BhEUS`!4R)Q9M3XP1`ugE-foPC$81jLR-73CgEjt-$Dytvj6fue(fj|^L%*e zi@t?>`@nR|?lRd2r|<1MO*cL9zDQ>{?rUc}b=X?nlNWLYEtDJI{Vn$_)a~21FOJ*b zMH;Zzu3ZZQ369-hOyK?-T$Wpx0UY&Z80te&!wotVLS3)zJ+)Ws3-V!H;tRU+%c|rQ zc~Y0PBX95!7f#Q8&a`*qy5qS4o-W{s=Q=$gS)P6xMxb~~!SJE|n*?ca%zSGS1V6%g3@!(0C^FB%tytI4v*e0!1%|wn2d>s5 zlr7h*Qjc5ILI%+5nupxei{S@+NTYQ|){t;44J8fcS;_~yy^$w0A^WVeu=6dB{0Xyz zjwpi!jC_g9vb6lh2qBL7(0HD4ymHmNPU{RBpEE{}^+@dyKpAOcyvSxg$36I1Gp60s z=5pOtyAOwf1Zz=Cv99z-Kl@Nd67Q9hCr`!>4XlTeZ_uawRFZfGCu>aP!F{&lwmg)} zb>cFn4{wq`=8MY-yz7JeI-YuAUcwie7)S6TVx!jGyn6)v1RmV1Jr4LuNW*{f2k#JF z9sLE&IEMjHQV;ia`C*V~S%6}iFr`)I0Z9mT!iQ6QfJT|V`|i8)kN@@m4Fiea|Ni%R zbfx6N@&Mh`AMJ$ldrk$Oddz`-=Q-+J>CKBcI!3!o^X&c-zk9h3AT)T_@Q*b^w0`%;h=S1rv*h z`a<{d;zAfn+`f6eT+|K{i~4wNlV~_Fx2c@kwzr&?fy7(;50!nJ!~-E+_bB=J2wrWP zD_0)qc#SI;w1dQ@@`oFj%f zT)UzjlJAs_`T*j^De$R#ju4nt9`%p}B-MaU)ebUf3;&T!1 zK975JA$=%gBz8(>t(%K=Xx=X~j^iC4>!V!EvFMWt%Q0BaNx_vQK^J*te;P!t^5?aI z#0bXGAxB3QgYN98HYi}d1_v`5>(2=Q1Bs35+4Ndd)`A-NXuv=XJFZ+67v zQb=;p;W&g7A!LAsbq@Co(!k{fd8fn2kp{QEDL>)l!QdR{ym>~r!HYv^p$z~sLCwD0 zq*>Agt$vvjK>8t$^57dc_{ldfCU*=(wJ@PS2Iek1>0&ab0VJ?4JGgTK*EU+>+IVx; zREW7=w6T!63Z$O}hthhs@qyE<0+@)$wGaEehxhGjI05c#2w!Kb*U zzBuFlz6RQx+uS>?VPAbG%Se2GC7LvHJ)zf^i6!@Xe~d%&XmC9Kji|o3ucM zY^d@>W}pK8kug59!bBqsBsBTN*$@ST2qvK@V&dT|Z4-REWF*0t-N%j|)mDf)yHh($ zV90P+ySkh?^JV$s^Uup?pMF-(oz)`3^=sOa@>YCl!9@0n@(J3LCCLlnWx)}4&<0a> zTTA^=_|!2ptNBsSnr1%4j+9Zwzg$QCG>9?w1w_V z!!7!<$NF-BMGy2bx}5e;pUhW9EWjK+dZhg5$3M~n=Dw(==mSJ2^k7koVb;eo%DQyv zQtCNo)1f7@U64p9!?|2G(u(qi=23K`htbK=*QiV^nm|u1!o@g2+nQE-BG zBQMgoe9YY1wn?1O1}@@~Z_xn+XnU6_m-jyz&M&2l{-zCDvpeYQx|E4r*mXH--|)b} zJCB7}EaQr=yws;qlI#aF4`d*9KYgUeHj*R8VfEmj{s-f@bz*>Z9r-yg>qXO@w8F78 zszJVpb3YRiFW`^)J&JUfe^mU-8a}Grqrz9m2g%d-9uIeOrVT7_Yh9>(ww_73?uQv4 z`gHj*KCh=8J5K-6-uv7*ecB7(7g&Y$=TZTz^0rI==;!QrsYlnPbsc`6-X$EJiR=@7L0YHfW+B#W9Y;L7)3p=54!l93yj4UMSM{vL?bJABGaV-0}-F zk2~x1;3M2JTl12yO;tmHq-!VO@jS#kh1BCE)6KYq{P7=Y{fcn%BCYc@-<{I{uVDKe z@O`eUe+GE^fP2DvyPF=kwGEFUuo~t7W?e3smcv_UI_CtQnemNxcd+64`Ut-dRS;CJ+g?r;uv?5Hy@H* z*BAC*fBj7uNU&zZdWLlY{0Sa4a$tFKy9F2JOXV$rr z4{%$uu6WlUI4C1}4Pydig|e*I3x6E-2`p%-GxHN1T|D3#xQ_lBg!kM;>FczD>FSq} zOaLEgo3&5VgskzA9cBCGo3rI_fBy6GtB*d4V{>omNSRnKRK}DIIiSp40|{_hr@Bt? z&0F(81Ps>iz~u{G(aw-DE}k7{Ucn~vK$ci5sQN_OBc%{z1-g_+K+7B zR^H!pxSZa7pd8z=r|g>3$9gi5c%q|y9!e%3YHaXWJ4k$|JJZUU1X=$NAgHyjD?Uf`ESR*Mlknn2fO*x*`>gAv%U?gc zojhxLUgx*=9H5SUksEbgU&9ojS5s3NhO{weQJ;z<9R2Qa*1&BP!CZ-V$@Hi6!R!Dw zFFnfm14DFIXwZ%hb819bTUCj%lTR;Dj8C7sUGVZe}Y`iYzE~ zWpc@z2F^3$=PX7iQWD|IP=s9uq9poZpczFB^qIHg0v{6uGh~oK@}I}?6OP1JB^$vG z^ECaIiY6rlsuCfC7e!HPs^{2}PzsSFH*U#l8S8oP!VpJdLTi$!-$+_UlU&|oR&xQ!5tn)>%Za`SKEbQb zMVv2i`!Y`FGs-ud>9QXc7_H3^PuDj+qp+HemEgMR4e#{b_*d~6o|rFveUEv<9U!kj5Xo)tj_N>R)de)0o z=qHX)f)=(9!>3&-t>qXw+AI;}hi)FIq{ZEBXw=o85gVyY>ubl+1n*M?KE{vb;XTQ;YvB~%iUh>5V zxNw0}(&J~slK;8u1NF|uxNM_#7h@5YJ`-HvC$Cy|tsfnR4{l@zA9&M8UN4$kiT)S4 zY~QCYMwNS1`0DbK%zp3ja5rZ(KvxTNVf^fNl5NMK)A&!9AJgRg{b4EfDE(LKk2f5466rPJUGT=3a{0Pm~rYZ!;~Y@d6_lMnrq`zW4G54dplxv%p!T#XAD zJIDKZt$fp0m%(AsKse8g)#$hVwKa=*#NCq7JiAC-zkWT8VZD9s z*m$gY0TKosz-8H3t4sNJI5J(!2J*#oJst(Nh0ivW^AYqxu7e>wdShi3c?toeyg2dkiFK9u?h+M+#DPL17J3yP1+ zL<29ZncMN9j144QMi@sNZTjX-&70(N%mR+`2kq2G{68tXWqk0Kw%vb6M{NA)NAH*Y zs+X8MiHFILTr10K4ck8Q_MY-A@e}u;}UGl3$>2O2Rk@ui@KwZ z6^@?5XdeR!@1Br4seQ4Lb)R!j>ybeoFjWp72cP3fKO^*)qiY`wxr0C(+SMHXvIvh`4e2yK+;zW!}*)66-Yg z-zKOxw(Tk(9y$?6Z0wie#a69H@_{Jp2M>kofsB+M&d-!{w{Mh>zWTg;t{o)4d!(aD z^_u^I@Ne3+yBs?9M%lh=kJdZ#IOK;)4_{IY#0|CKSfAA~Hj2ElR8pO}V;oAnW5 z8bn|e;rG?V17}<@CK68idb_02YvT@`&VNA+B-)CYu6R!YS|c*mLo8Cq&K&U{d+d1tDuq_NEGoqU!~!obw?!k?)l9N%;e*9)zAy<&5>Z2^=}n4rfZ&%a@p4-ODRz*6 zb_OLF20){E5DhgNY1@d~a%a6|hW-_gVSMFUcmk<|;rM1GSEX3#)}?835<2oQU+o)9 zYal@x9GYnvJhD|gyJuh^!TE=r>_bX6H1QUz-WS(bm0OeWkjK7 z9TOf4rcCZM!GI^5HCf%ZV}~aHvM$rYl&z&X50iBGOfumKU+Xei2>vKM&wP}eTdw4% z@=i;B+95}IaLmSGS!o~B7L~lnWE*_i4d-NDxpKLDdFIRV4i_&BF=Vd`h&C9b~j!nSEFbN#$_y6@xn(NW_wEi1v*X}CAM(|6-v z#bY+Tc17h{QBj6=p)UP$ehN8@bM4ibCH0WDB)?2per zQ-W;s@@c~86m$tqIP|&}L3pMwrr%^>w|lo1%-%X3hFH6#Us!O5E*44{JYKkPp?v(w zC*_j124&%sz88A3Z_M(bFS4Ap1@w#bEm!oD=pW@OT4F#c+=_}e6b2Hg7xblQdZe#F z!azcXYwYf0y~URj=%c}llh92~`4k84;AMabPDIpvP7Nj$ja%OTI7YPUHu{@3XwB|w z8V8wB9?B~siBIip{z4r*R;YOE^uWVgt}rx-FVJ%Q<{gS69em@TN|GZT`YgsyTI`O6 zId(~sOtHv{oB)H|dJN=r_||{iBWuWvan^Cfzeq0l+wiE5Zu74%?qv=eRqj#YtK&t= z{!rSX2H9=RLy#jLNHb}=ru~H`7=dnu;HS%v6*7Cu(c|xN5Ddxa)k0!#O^m*6!DNZLb-DJO8NS$uVvh$4?ZN{(3@>LKOzARxnV9qIPqED zlqJd#>r|q!`w z9+!L(wDP16x}%rQ4`j%~d??qhl2<&FA%9!7R>iu~=~E}mPe1%=tS#|ne;Pz{R3kiZ z^REpgpp!`ESGagFKtbeO2I!10^OaY?E6(MoUYPU2hlI1y1-mB9#uu9yM#K)Sq6vPm zhD8>@Q*ZdB2Uk*&d?ehCe4TfMjnH3)uYIue8Auo=^KA2Sc z)3F-=*MIuY<@ef^kz;EJH?5R`^*z2^wZS?(sLMt^Ji`l*J&-f&Td#eK{ZZfeIPySV zz}NK&i*_oR;;6=(ntw0oBT3dIa=xGG!9!c!x^;WmDMN(4GK|`!`dX4f#FFqoR>9Li z0-0?4Q0DQhNMN?3)x|K9xUW1e>Basn8Av=>xT7P)AD5l$X3EJOd&?gkJ6Yb`xwq`t zpq(^m4SL@JKOd=WU?8zLv#xx7^J@7YUwl%&xOTbR(2hsiX;>egc~P$j#-XZ1mJ>II}; zxB69_cy?QSym;p$&52fhaE+V7G>gWoAh)T-D)Y zATgtkoMSey$fYY?)S&vd&gQzdh=GJGe-#!65+KvR>MwSVUHA3@V{D2Z_8K!kMOQWNtuJI}?Qdat@)q7;r-i11Jn7 zTA?@1ab$rIK!?kT4{ls;Qx~`TA%D}5VZgRd_njHKFey55wQv*ONhUhk4e08_kfgwY zHW`W_cF$-gWML#Bt6?U*gX1`-M(Xc*(i%M0av^6idC*1t1@%G&t2XVene8_E|l=op-eb`ET85KV& zN5i`;qu^eZaQFaEX!AIp`*;HkUuN-z76uX=ox^b(0?v!hS?v&sKo`dXg?5nGe^9$V z#LhC(!yzsWJg|DkNDG(p*q{onmVGUKG6TXl-Z-X(vSV>pFkgGor?SfghLRU9UMQb@ z{AqKBxD&CpV~(uL`Y|d2k?QiX0e8O5k?Nue-E|&=Dj;IkkA(_ z&<8E%ALU5n3zbuN2=_%fBX4qs&jd8Cz9)!oq#I^f$}s3}9Joe)pDY9uJ3NACmLq(K z&%UEIE_FP8$HRw<(Z9vwrWUz~gCoHg`W)$XTo~|yPGO<<)EBXX#O6&pZ%@9*JJx5U zw>~62y!YZ<#I!K2DODtvWiM<8j1qnzqx>IO<(j;_z) zoXC4z{=?8O+f$T&1gk>#^b~lUKJ5Wtu_m52_q%la*?yPC*lw6Uq`3@dA9%*;^iN#O zC3t?;Zl!it(+h2rKCgs#Tsg_3&c{3?jq&0eriOPI^Jm}JzH!mVxF72Jno&T5s-@)b3B6& zM;h>Pk(PcQpXV5Bh5pUCOePqwKfUB&ev<}Vj6b>t62OobG;lFj#y8K&iRV7&@Va~G zQ&lw`eR%5heepj`nD~I)D|3E*Hwi6udEt@y)J+>aR-k>|q%N*~5diy%L0+hzsSG4U zIcsOk4`#G}#6kn>AiVTGb?Q_Y@vuWFF62*e^IFef-SMW3A}(LLT+W?4UvA&L73E-E zg88_-W~|Q|VH)>DxbX9wh7-v>@>W2=6S7_}aFMx`JI1}tm*5k;;H5q5Aj~b42Rqqm zU1gC=2I9$^Bsw0eF+jt--Ih+(kNdb%!jgn zVLY!(<9OOIFdX%|vAL*AUTXUzGQQSl=f5~|ReXv0k@%m+9QvqEykxs*UY!2XzxtVs zRE4dj)iWhrGxiA6Lto;|Mdq2;)k=v}p7R zL4j~Po%uvsU+@Y%T;xMr!bi?->*$O7T7QT+d5CDsyG<&~-aY%`XpJ4}Z)PQjdL0pl z5liR`=?yNm1URMqQrg#xAL})jpOrtam<6p-p8xu*az`J7=na0^EZDuX8)N5)|49ZC z$F!5gCgEl0Y$Yj6Y7|R)&+$NA*qwDt<;?X<<)6Ozy?pIJq4xAhecpPlWo*&9$linc za70EN>}tXH91r;5QRN7u8sR}bNGMtZ35BtP1eb!b$56dAVgu+@P6X#3Mh~@v_%5wSzjgA>Fp&6n|MuUMqgpq9gbtIO zNFo9!I*Dn)lMQG;SVxIF3;1tiOM-G(&rfdRV(kau8J;y{k%-iKWoBX=eMRD za6OZW`z>ckoG*tNCdUEvfjLLAVT9*G%!lYNfv3M^&eUGHdqlibmyWHCFhVCXPV9_< z+}F|%>SX;{&P&0z%{Y<5)H)ml(wUn~O&85w9q53g0LL<}Ur#WTWV0|^hzz(pJa7BCV*aB|OO8c6GK z<7I%z1ZB3dKnA8B7zSbbA)V>0?@cQVQdYWvlaYmZyeJ-kAAHbAW8#7rK{Fg-n7+)Dbu;>mxnNp{1eI%HqF@S7fiH!-3 z3P#;X+(Qn+2u72E`+5n;u@!f3-_h2JSm3jp1a%55atMNK8crn6=uc`%u95HFd7uTDKRZe`^W)XSYsfow|O=6Gf zMdm^Id-m+s&J`?#&BY=VUkYI)@$tvME8mQD@R!i(N8U+z?v+Qxut$X`(`j zY#;$opojK{0nDa(l|%JSJ?E7ZDc4`!E*u;%)_Fr;-vtc%1HEKj1045J zKUF$lYd-iMc*6pNBh1eC_8s2RicX@APfVt9b_>;0byI z$8#TVfQcO>w6Jwcy6F0iYg(XKAb~FR(LQ2B&vW`(aND*WI%0z_IQEx~o7h$vnX$xV z8l=Yt67fQuHqJ@|nn?|w1+_&@oUxSMFFZ%JV0QYg)1hlPuaf>c7j-U{PuM|13zykH zQxX;vn}H&lWk_6I#wZ0$89uYK970GlMCm?IeZ-9raJ;&(4UpcK>Vxd zMwNS1`098R4Pbmy#<$B_^|&O{zz-?2aY$dvxN-W=y1HBNar(3i%kxUD2O6HH>(cFK z``x_y3?#a+=uUJimklHc!#&;h(50?@UMZh0&67T_gtw)j|E`;l@pXN}b$t&g2=`Uz zL_hD#{gIysV*u%B@~f{Jhw(b^I?i;~Vchq@c43~zGx<;s%ErC>S%)(}!6AEIGa-zx zuYJ*96UP{i<2D!zcpO0az(qXH_;}{U9^G4Bx{1a(T7TC1!hFLAR~TrDMqb)6MkU-A z`9gy)GK{z;ocOK-7PpeV0na!``sdGy7a}b9sbAksLT9(U1D;sPsUt>4@;0w{566yUSrDarf>$-ZCq`HjqdI9^`lsuJ~MoYhMVvOers#k2eMqu!FL39C3@7-`B;le~hQeBXo=MODEVsf?QK;t$tX?cE3H&^uSvbnZxq3iP9YtI z5%V+S?)Z^jVdzo#kDPDT2Z=ZJ)#|68ep-I{(MRPU|M9<;Z_b`gUWli`$H22L*7T?g z3?xX40}n8ipRzA6e;Q*%e}Jx)yd>Y6Ib*}?$fv0@aMk=IFD~ST<25k4!G){}mOCzt zHx3>=6b2IP9>Q!RVHq;WC_zk6HsNS4aeM{+irV`Ij3h+kJzng8^L4qW z<27cUJSsbs_Ryy7<*nWO%ZG^HuG3m91{X{0eyO817E~8Ev^(|}*DjX- ze&*xy%}uS9tW$p|!;N_vVPPP#L&p=(Z{8X-J(BFij?kip9eY{(2m_|5AFYFm&>4jV zjY)DCRX~4Ke-k#jX9-xI0{*Y);5BPL@(pjF)? zy8MxLkoaHz&7YJbhY#h4f8sm385iwTc%q)DH}WDPevk_V0jFpDX`ShvHr>4j2VAeN=W!+MgCUGQlm3uhn&Km9K7`igxjKC);||79%$dAv6Jw9r zxm?EthsPMs2ii!BZ#sc-p3pjS95SvTRorU>iHaHZZH~h<5K>@tS-PRmQZ)tG26dbm zMr^=9LSsViIc8&CFKel+hw3yjkhrcbt1yswB!n7TH7~NG_baoS*lf|_H(ToS0z8Z( zv;%{B-N+@*27DlkWet>>v>+rn22UY8nuv2>3y1~9LS&zG2&oMu5F~_$fqae213o59 zq>agnH~?OrNr$Ti4_GGuyg*^{!WLl&Ig@=0Y$U3FOlM6y(Lt}+lM7=kOw6j>OPV0% zmzd;*quk(!_Li1*6hRm@mgP@=XASy3&@}ORAMsi74iJWvfI+~NH=H3k?a;=&2}}Q?}I}#A}Z7*t>6^3?=sK?7xFrXxOKhq`PGKudgpO_{GTMyGs{i2Z^(? z%>Me!nK*vq+LbHiiP|6&fjH&^di1PWROCsW#55NAbdmpzo@i_6_w z2te0JHA&BK(N9Xo!az&UO~1KL`U;m{_V6M*4H6${LQT8o%bg=fkCgY`d$;V_n?+Cgq{RX!?#-IlAdgrEj^?ecFX&pHlAXvZegUwG3lMO!7MUn@kRQOK1zMgoQxrvL@$>0RmBd5$uWAiZUsd-N(7{S$LU^dinM z#HRbp8&v-wpTkD7=net#7>c!DCwNE2IfaDR8)b(vZHs+y}Zp^ccPlH@x!% zUyajv9gp92UHESN(|(42^7J@~d&=Q*IUJvG%1s}Qu|8`d_@wcfyZFc{aK=r%FL1#B zVg0MHW!%3t+gQiFT1~Bo`W;-oEp7dv~}98qTD70v@-Lz8TYG30WVwMv^DtiJRIzf)7`i)DX`cMV@2|Ici@P z&$8~RNy8IuvG2A}mo>_!aq3hd zONf5*WnBrd>+9@a$}`*S^t-6hmF#oRE+3X*o|W%5aVY5uf$#8anv0iXCO zFBcBFxPZZ>oFEUw`KA669TT{$JzxzlT%C3}&Om}JP?t~u9n=$Zr%U>X=@-BJW%=c= zJ}Mu5^qcaXjDc7?ga?nC_QE}DWDRyaCe5AZtx70e}6Twg(YDCoP zPdw25deJwdcDhb7^;m8Fo<88Zs@*9UwOb^+O6<`*^MsDoczgH3^8UWVW&fPyK<^)( zU?3s-mS$xvxN)}J5spiGzkz|oug-p6&fUJLqc>zwvt?V^BE7O%AC7F$Z*yTYYn{hm{C|tRMs2f)R7>ip43In_X4}FdLtdEvP!AxO8FbqllTWW z!;pjbH6oIuly6}marW!*mvoHAzTG>^kKTJH3?%;bpZw3|(7^*?Ai;V-$}uvO_`^WL z`H_E9=*&66eQ)w6@h2+hB#2%Rm{+a5&$?Q={Pi=s>9u?LI8fKC>)Jl0jXp_rU&9d& z4D%btYmAi`Q?iDA2g3+He3s6nKV}E5+AxAK2=BNOFKV#W;hBefgYoiaSdsC)+-n1g z5$t0eMimSOU<%;1Y}o!OVn!X?2Ekw;u|b294eH1-kl3ioWkAhK*t>eUaDCx+xfcc! z7*}ZUqCrJey3%4GvAHo&z^K3m67l7~@?ap%%i)Kz-dxlq1%X5G7<^igxc7jHqF7KZ z#P$g%JwnQ0oq-wYY-C`39tb+Gc>Pi}fP5*FgK%&fFB5^-UQPoYXtIF>G?@nbNoV{H z8Ujx^3p75~<{NbO8G|GYMEsH=8dozohkj@_516ERLX-FyjtN;feBU=A&d~9l0XRdU zl!Szz_LqTFP73-`4%0$DVyRrKa3Bw!Q(uHrPL9_I0|^a0=d{BBFVACF1j%2NHgJ$_ zOS>lurowV!Id^!=p9Tr^$CVJn1`_1a!_x*C+2=&||7Y(_ob9@iGtWbc`@U18c9p8^ z?x;;FJ3KKnF&&=X?0?yI+fy?=o|p)`7Tc=oD(#{+O5(nWdw;(#@!f-a-o5YLN0AaK z5$~Og10az|BoaUZCl3x>U;&{X!~#SOiZW~i3H1RU5-22nA`n2Th zeeM%Z-rh&D3Z}=jx%(df=5o$M_dJ|WSsV&{%3loi{fMnLtj(HiNF*-&!B5-Y(k93? z_0cO=FAo>>Rs}~~RtHsI%Lx*aPsW*p2M_zChr>sYX`I<3hSqrDBRdtsKtjJ7TQoA$ z$CZzAm|u}Ejt|2zzCZ&H!5L5f^iTgppYzdoMRgJmzd91H<9 zO3jL-il&9KJ$^x?38i!>nRjdFpE2FkOf!th5B08iH9^^Eryd!PfGeKCe{C3f#-+~U zr^fwxJk=1)O|*ACpr{9V$RTa$c5Dqct7?BE6qL^##W!d7>gZB`c0+Q)9Dt+Dek>&} za?bse?5Nv3Pv>j1UfMk5cPq54-pk@2to8_B$?($rj6XBi-_Ihu8`3v|>A>ADHYmRb z|Bl^L^Evi*^N5_%lmCyY+d9F_HX z=BUi2K^k26$%{`oX@QNuEI#Sql)s1$;*dY;nTL)?^stC^8}f-Rcj1EcO08?d8|q6Q zbOaoH%LC`RGCUxRJnri`9WTJyoqTqx%OV%}jmDc9o<&F$x6$;n zB-@I!z&X#;V1B!5tDc3lcM$}jGS!VK*C!KZd>nNHu+-jh==ee zblSuTJ+zDQPRhA*`O0wS!w-jZU!2o^puR05tLVYvH3Qw zt1z%0O8rDmJ&=}&Wo&RdA}9Q;Kc30@Lw)9^PF1MAOFc}57+r-cGKyapeaZKRDf}rn zw3)odU&@aoJ@bcFYo@I}lJ{pgaRxnnd`N(i!##z) zSEWSDg?x1SXLWMmkAC#S;m`l<7dndnIpM4QTJNjMNP>r|?0wDXQh7x)j3`{G7tHaS z?XFPqV{P4uF9#lI#(03!Be;0@&e#>4lv@}1YQ2F>a^c`f)-;4m9_kafW(1MAHhxuL z{a+-mq>eh`RQ9AF&i3aEVD8s7Z&|57^<-b~%ts#$|IdH_@58V4iH*13dPgroTvB{9 zkf71zfVF{yPHA9GPCelT?M^)d101+X!w;X+PTKCD@er8sG5iY8l7^oPIpO6j#-FMN zW5xKA+@V8W5+{e(4jdZ}YY$%E8I|k`w+sUA=~=}+8Ax2x zbB&KKpC8^i_u25~*$;=a*RCpECtL47G#u0(#vU1N?A)_|*djTyfrQGvEgW#TPLODQ zj&-!28_?G{L4sKG02((TFK(2%A4|YoOakEF(3xqX2461iq8o9#3?!ZrKiJR4K;n}4 z_{m4wa8?XOt_=`XPv*Dy(q+{>*E_=S9Z1Ms&zcT1>m1pv3 zH*-tA?@h+0epagIrZ7I9!v`NOiW`amDvKXUurUY#KMR4RE#<4W*v-oT5B8mR+~X1k|G1!w^cXZmNdzWJeZB%rI^csRIC&n| z2eg0>h2C^Y*+b#aBq2&@@Faa`nue24@(R670^r*~rxaxH2FI8l@P+^2$pQ!A;e8Aw ziud8Wj?C`{8byB!UT3nzsp7N zFM<&v=D(C?`%(+7o=XnkY3+D`f?m5wU>LDQFARB6kK*qaDN^ovap;%-%8#A{!v$XW zJKtU>F%EzRPiEzpa?K6O^YRXU85i^d#5|5@{jtZ$zJVT zK^%rwoMp(@25HYiZy6^aUJ#!>b4C{UziI#VU%zah=>8I0Tx;^}FXfrF!yJ5!Lgdw# z-WANYoU{!LB#!7yR$i3hppEv0BfhNXYoRVLG^iii6!F}r-8#`@_(?r2hk7h8%fUQK z_~XXE9@>zvMg3229`pUp4Esua4CK(B6Yv;)Xrh0|rJt^LR0~wZ!~cv2$R=Ovu!F=U zwQJf`@1ewx(p4}9*r}aS4j(-(1BpXzrxr6fCWm|&HR$KeKgMg_(Hog{W}KdtC$9Ka z5Y=jE?>yJEyZRu-C>`mQy^g!l4F(eWgJ!o6)1{^;I4<-AwwPssZDCBddcl48cHRhjx+JqW^iN5f`T#%h^k=z%*`$Ryc2gMR2X>r}Jfhc7x8#w9(!jAWheIB~%LSdePk(}+ zd*F#5yTpel#Er|#Jq8jOxWXeY=nEdxqcnaN>V&JZTu#pS-KnpPypx2+wHOL)mOKGF z#tFX&;|i}+FB>F7<8qAeQ=X*dnftLHzBzD>KjBgE2Y13j7oOo0PMslZ)H6O8GQ))f zN7C>-#+7(r2(S2R|8-w=N*pkJ6$+oogCn*ujNoVu3?;}9IP${52RK8Uv)m<Lc09m56hH|dA& z<#4VPKTQYiW4BWJDf~F?qu!JEa``V8{-}9Q)321zO7ZXqm~p?7zAUl_Oynf|Bn=|T z^)R=Z{2!Kn8khVNz8wDL!jtY<_n#E~<9y(4t}%ar$rYI(o~Gy*vZHj!30L~`JO^*^ zkbayu&ridRX$Xz+iA%enzvMoB>5NwTqxn8*7We$_@p7Q|zheJ-3?vxq@A*@8s!+0z z>|)s3Wf%qXW!vVWIP*cUbA7|q>J^PAAJA&Hjwz^KmH?a z>wi%5tm{4s_NI;(!T6os+sG^HEA(6F;;hN|V>++X)mjVXSgKr)QitGNzk|=r5u+D! z6s`Csgf;(?POE5)^C`=P3tzUM{rt`Lv!DH3*U#Fg+I5Wb;JiMCEQ%kjO;UavNNAS? z9CZMnsGrme;p`xc3tyPV!w=TbB5Q%iFZro1zQ zjukg#AaVV|SK1}whUfn;?K#x`=+x`&wFAezd&F+dtv2e&l1-wMogOF~?!LC6SP);X zE6cCiLVN$x`S$;Q@T+!4J4~{pq!tm|cG0@)kc=!u?`FyB9pPa9ua@H(JH`>-Jpx}i z)jEuuU(fM{M#U5Tis2r{fqSxpgz0irrRNq0uj|GM>)yXSkHe0t1O%S|>TBV~+n&1`_}0-~MeoefkvvR-HZE zKtg3oB`A;LNB8~w{3je3>OTR`{b!N`&+F-#td{3Qt&#(4Fp!|T_VCtGYp~Fr#~1G0 zvCjsUA%Bz-uEB9%%4A`z=OKC+tb~(6&{sjuUF z!-1h}xG4L1kr0KSa&sR%zy=rom~P-g196m_$%lF0c~E$S14NQZEQz5ZMiSHkJmv~6 z=&W?b-%9;(IR$P*Ay6cEP8DJruZh2dMG`Njk2aX~`FUJR{5I zD?AZzyrYEV2ZIT=i`%G4j9-Wg4tVOrTe3N^@GIN~43t1&t}ordQ}UfJr=FLf8&tTI zi0AM({2ZqXoKqNIg%oP??)lg+>_Bkwo{Fy&_&VYG)ob1c`WjzJdtxd}@lK!1Ay~_= z!o;q@5w=OZ+O8K#d-TE)BMBx)OpLRTA*LupE|Td->CGR@4ane6Zy&->dCgn3V_s4n z&`XnJ$BwlZbmYcKj3tjRCvkvei! z@?CvC@jO#Te8vHcBQOxUa`lSG1UERPmt;%V(IvQDGKx5Q{G^W9(3je~_Oy+9@r?|7 zWbADf+;Fa1rw~*Fkyi{Xz7#|_QYm`78W^om-Fq>H3~F!APPZ1ndi@Lr5~6~|z&lzP zyrK4c>D;GngZiian%1A#wyV9q??`*~(6M$}1|Iv=@7!0JZK$9HpX)N3`ts&g9kKC6 z`>#(wYUi}0#5I-Ry0X0?ybokVu|s{-ZW&)4(AOh7^dgqsGvEn}LG*2#c%d!-f#_sO zXN#V-+SBexzqrl0z*?+f!P4j9qSFZ2{k|4?SQ~*m(stYj@vuo9_rOENt;NA(_rFS% zdL}Fvap_-(r%%cvX7!8kex}a=8yFTDNfTVq1uXG|ArI&i=s}z#Oj>k@TKKHo8L^pyjT0<{!)D?ABU#In5GrDXM4{gBXbAg9&T*B}Z76T~*=qKU8 zpo2jdi@od|!SNaxq`>zveWdZT{1`|;1CF>{4(LBgPd@8)!3&OYdjfaihaWRu40Kwu zsC)5K^^f5xXGybzM2^~ke&FFZF8HliOnACp`X82VwR~AET=Jq!W4B!TDcm^CH+4_m z)BLB;-&9`9;aM)f<-(_U;1jTEqx3tu(hf<3JOUfOlBTZt`k3NhiH_i#rd#fL3O~g^ zeO?aFvmXAW$`O8!^Gg^!%02PZi}*5-n2jmGr~jg_Nq>VMT%?N|=bNx6>8DK4Hob_W z4bXRTF_v%Bul)=ytpaOxSvO|0rppfQuKeC6l7F8%VglA){J<8297sh{;@utB&Z>d_!w8x3x|a zBMAhXV=8FdwN6v|y5F`-<_QD8vi4kra;F?=Ps{0p<2J={b+>iA0xoNx_~7OO7Cfvy zX8o12pwsyH3%xjJ?F`3!iMavCK5`Fd_Up*Q(=Wf=zW@F2wLkl_AGecwDT~27W#wox za8pjoOI_ob-+(&?0<6=auS3gHF6CY-?n#9C1GAy~kt{gV^uf$9HE)xS2+uyzT=(Dq z{Xg29Z@$@n{p;UYU-aCz7tLi+S@{Tw^OYrZ&wLBMIF+hu)?@#)>0?Y9@dXm6hVZ998K$AmzO z=-sU&BruTJDVjHGzBA1K{Yir;7B24~A@cFfCzS+42-afpsY})`5(f7uYdJlcpB0+) zJ<@gL`z-7x!Z^Sa$Nl&@;oW!oS-k5XF7)*m%Y~w?2Pm8mJD_We>J6G^1`=o5W$~N# zw|m#l_M&#yz(C?}|HuDmue|cI>qS4k^2wWeow<@f7**k7iy6fZI?vr=4ivu@hd&Q_ zwm9&-o}R7xcuvjQIPg>qBs}D4kf~vl0bo1`6B)g&N;Y7}U2pagRPPhO>1&$e?8 zpW>5-`&^_!dA^~S7g?;PAcXUhbC+J&qEwH|k$A#_moQxLWuYIsC@%&Q;NkM*MrljQ ztXc(+l~Bt?;Q=4v-~<*240MhSB$#xd@WPjr3)tyBVTG$EK(+8*lN9*QiwtnHI{-W- zJ;X;v!}=FxIz|%Ymup-W^1)SlaBwZ{3TAQKR4)pKaT_4jRQ`(EKrhBi$e1GdvDhWO zQWw6Uz=4g?25n(|4n)^!a4ODnUD##7V1@>N>5px z7C|w;71k#sp^tK!gidV2`{RmUkty0I>Fe19xSWpWksD>|_nkZ^40+Ta6LF?%4YL3N`CtUFGMH{CP_?!cS@WB?Z;&-V$Ow?WPeesPx!1N*u3S%*Y{*f@Q^bzAW>;gTepXJ)&TIFoLM)c_c~oCaKS6lM zQVi*1!)$B;q*C++f)4LcvgVJp*c9jwy6Keo9?FXif@e}sz1>^T78;&~{c^YQA;mx9uZ+ zF>+B00$0T+3?vp*_Dxz0*(t+_gW8p5kG>+=t{1YD|CYv0Ci6C?l+W3>8`L*!RlXdv z!7dVa)n~8^4Mt?%0#>+1zS65i7)XeI8_m(L!VMMoQ4J*0uG79E5AYkuGmd!roaj2p z2Wbi8p8gaczBA_Y5}df;2M2M4;Rr|fK@UQ%ygjbs(WkOV3S49`x(oV8E?yoJ&f*w& z`D)2uE(wq8zvn|-Z_@>U$r6_#*daEKHx@w#(b;20MubM#Tl!xi3u8(9?U`TVFo z#i1wJSU_VC<+g6Bae?sx9Q65%@G0MMSxQGEhqbxjn3i`fSV+qSuE+`L;eGf|xZA#b zV38lnJl01Er~ZNqe4!6KgyWJAe!}P>=mT(s1qXSeV{KJ_e0lbw&ZB0*oP2^a`H;r+ z%CGT$R-WJt{`d)}ZxCSwuicTaF6f9pZM-ZXO9pVmoT!&Mv=iqS6)NL>trpXUE=un> zckbMYlu(`A?s}sl1lM zvs`}5g+B}rGU)!S_d98~q>0?YS8&%w%zS+iGIlG`vDSK;!cXx}pU1TPF5N$=a)h7D zCH+kL+_4Nj3w1GHjw)x$n=)toqFvA)auq)+%}Q8n0{8(=x`-OQ($@=O?n#@r>^YSfk@iBn zAg|~ZX;0BNkV9agmo|lg1a*Kzmq$N@&(T|eL*J(^(1mB^WGjhaU#hc1=eNK0t@h`C{^#wLmtSgIIWj`@4eO)ghxsI3-bTylrji8=mOa-|JOJq{ zC=V{aAD-e*3?xjS>B4X&G@|F}aELA+AAIm(`{#fD*Y@^1zi8(^J*T7DuDV>1uPSjl zSx3Vt1bJr-Y|FO#&@J_ya+9AOda7=nzvi*2(4fZ?KG7UBvSWRM8j>?$uxH( z23Z(?RJK7MSM1Sx!m)mIC3NvInX>AabC67G9!F>0c_a187@7!AN z8%3uLB*ZT0hBnI2`UD)rzvrvgFL-tZjSM7U{JfC_Fy)5&se}oZ4(Yp;&1-uZ`>|1 zT*0sf97-_PK$?z@oXEq5kJWpFccn9C%(&&svQLfYBF|hY&yd$pXOlJoLEVw}Qf|=O`c0mv@>XqfhJpCGut@@P z8|N5WgTG>XTT`I%5eXYcj`nM)p3r#VRljKGo`_f;F_7S#J?(6w%XKNG(`ocmxPqMU z&Tj<`*+Pq-XVg1RKLboq#CLsFD%zdvxyOa?XIqfZ5+QD{+vHV@s-vi1tB=pNCIg8h z8@AX$;-wvX+p7l-x7RU{(3c=$gz{CI&046?nWJ~NZfu`v=ZJUCe9+$0Q5)xOXt70n zz})Jtcz93wZc}^SryV4?_Uf3CO&Wi1Y0RWZTeoO|M-*cqfiZ`)l(t#)ZcsnCApUaH z#trEj{t`-yIV?V~CW3(kee^wTMM=L!*8u0rKq4H1OKWq*XQdZH?x`nS+Sgd;U|jN| zA?2h$5#)<}F;VxVLH8gX`X6Hl zxangtT%&&mcAO71fqU#`<*RVU5yJFuSKzb{9{C{-xxz=s>HN|dfUzGup#0WPMPKPh z(m9p1(iQ%cn-}po7G)`O40jm^{8gLcC@bTpecj`V#!jSYniR`0`2lw9rq9Gp`7(xI z&3$kNPw2xR$|~Bqr%tF_%1C)5JLE&X1sBi3mwHSXyhxnu#SBOtA_scOAsFO?JdSF2 zsKZ($KOiFsj55Y~fD>54$OkMjkVqbcPaW`sJSu z`miPy7x5rBb?v>W`urR_rpE--w= z!pB#vhmw|hKu3&z7+B)c_E#wzg+TD*`+Gg{WqLFnYa9|t}T^w3^?`C>a7HCSnQI4nQB>(Pv;W^{9>Pj?= zI`ay-X1>WTDSX)Q?z_Kk|M-vp+RdSt?i4uH`=eh`n>&G z1`_XI{-RyDt&b>$Yn#?Tj%fXm-6JHN{%8a_r(QT#lNp5#Boww$qu`PF}SAVQPSFzV&q+xtO3>hO6Mc(Bv}$7oP)HVgt(gA_gxGbo}43`zP_d>8j2 zIY-e11e#H6;&>5QF9WM&`C<ZEZ`oAO*7Mpq!*FM;Pg{ zwcBC^I|~cRKPfwckrz5fL6uL0y(>uN3GW;#+QnQzwbuce;zkL8oQI})cK+L&LFAEh z@0II-(KkI!1*14hzQ8RoQ>1t+dg2i~8*JW;VT9^lJ4w`5k97nGiYIzCu(faxc5)*> zCI%zd`2gl|IHZi9M=4z2ZexOg&zV|;=c!YaP-7J`=Zz0i^RB1Ty@SXAT$%*&(vOr_ zO`||FA?Mu78(PS}tVs$l0x_DXg(ntcnam3w3WUV z0@R-{A!jnaPuB5!G-2SV9@_qLjfd>d*;))RXkg+Xy|hAbUcm_7y06zF@>*`ugW0k zh8EO#K^<59gZetXsNSP5wNIXUQ41Rf+h#2gsBw8g#BGp96JC*Lzlx8-(rGEaq&KSs z*bdo10>etBlX1j-Ef(F=*`r_Hy4K$N;xija{8kGjUuZXqTcVBS zRK2oq8?|7!bKgE0NE~j5jvs4V)lc2I%c8m#YS<-+Qq#|=|JkHf5We-=0skr!!!Pa4vbH~F9gvRy9E;E(P^n#e8i zxX@HjV;V}frg@ChkT&u0!Jl!ta2Kzj3mpmF&b-h;gFcmPqAAv05%Q$YW_u)D4{> zaPXV(F@8s^^C$GLHThc8LG#!p{WKhyX}!#+9AjDEJ$dI^Er!q=_@(Gh+-m&bi@%yQ zff=WP4xVX`>BI2p({aS-06Q$rZo|mK99)bB7bp>jrj%c!oMitvH?^0 zF}`IJJ%xxVosW}*XL-qVDfvv(KkjGBkn)6v(8+V+ zqt~Q8q|a3HPWxgxecZG^#}5Ze{!~>qkdP{*zKiuQ>CxjyZt3N+7x;;^~g(FcErQ*`?`)_U+#S{~!*bmd;D4aQL$@ICbvJu&(}ZIX+22MoG3^G|eNc9CGsjP(`bZ)it=+qbI> zP_{*S^b67f|Kz{@ar=&Tl6XNog<>>;j($(LyiTP;kk@wMVI77wVxHk8`e4civCt7W z4o}#V^(FuOiAKtvkAFf5@r=PYvG7{OQc7JH=j&^#_k@mU_B))s}g?4QF?zZL5Lfdjz z^Gfk`lgPoygR;?2ENBhk-i~eU(_2^D&p$h31Bs7sUTPQhLBk!ltMbQEL|%NK`n|?2=i;xbtOR)jDgnCVmy; zaNT-+$VvK7#m_<}&xS8dGnm<3^;hDn=p+y73c15J-Cn{#LdTcZ@hD;rI6DdCM?O^^`TE1T4{Q|n4lFW|m`lz;$JIOSxwyHo4mbd)n5_&)`H!n;J+YF6l~qUsIVgk z>9~N2a?64$&+r2LH*e&N(URX<7?-C%#Vrc{Xg1pJAvbHvvbGdIDl*vBtrp#LYN?lXE=}X$aFLIHa;j6Td3R z*x(ra7+&?^&;?C&yJ#zj2_y0`o5*zJg0FtS#WOwnS;_^Dwxz$6 zE`E|Q*_v7D(qD<7TuOES0bf`%IWwsM`@$H4cYB-Fe)%GniMArFKx4&?LBVxRX0PZB zz?+(s^93c!H1dTkDXHN>2XYJ;+*gWTzHG2ui%&cBwKm6Y?9vVpOrU5(8#QTS(q-8) zo+8T>f=}t;Ew@a_SX7};!EMq6@qjG9Upf7E0Pfk% zwcCA@`Kvs}Z9QS|fqQrhpP(N;q%VNBwYmX!Pnh<$Ry^y4pXN8EXC=IAg%L>wPiYjZzL)Mt?H&UObvErji)=a*^Q$vw+k(C%*`ct*+C}2!&3oGG2adMy zz3_57s;x5BF_29Cvka<~_O?FxxO(qS`|{4s_TkqTboS^6?Gr5k+*JPB13{O@X^oW| zWw5pP(7|@>g%{c`y{Nsff@^)n*Cz3Ug}aS}$#4SShF0hqSFg2e+M(m>)yo=Zb)qRW zLxAWP)$J||3GzL*(ibW%A}EM;xyWDokUS#`^g;A9)hCmucE?bk8yNu>n8*#!=mxnU zC@;kE$9W_jVM&Khgb@yLNtZ9lqK}XlX}DO>W+x&R10QA}0sdTLCKa9vh2k?Wr4Z6}_di@=P3Mi~fyIn2ln@4B~&kP~-TKBS-vl1Kk(=p%)+gxcG!cgC#8aC*PEbaM}RAn%^Tk z@Q0o;4@{5i9qn^T_iA)_*4tP7_%XRxU?h6kh};t9&Xm@R+~O- zS`L0D#RFugX#8AtQW3KhOOZ~!Od$$W@Kvhm3$FRtr7+LJC`$~NW}y$io0cCLdK3q~ zDb9!Co5J!84VGofBl)0By6=)arM(3vaD?NkA6l*qp>0|dp^$uYzm!kpJOKH}t+ni= zo0fl!FL<8?e@f@$pou)F@3?Ut=RR@qXLM1wvo(qEF+T9q`{0aEADVtS_@AUtS!U%a zdZBIH2g4s^J$exL=|h#gmvJVOPm=y;DX)x!%S?wJ1F7^Wsy~g`bP3cMs?gnTAi+)$ z?0D)rVtkaoQ3etx1_KGJQ%b{&+N)ZN@bPvsj$l22qXL=lV_3=BS=P@Y8^{f{t{!aC zL#?f-<2JIklr_HjgE}~2SwtSChk?lKsrJb;bh8G5o{B?P!jV58dvL^tkM@({0qZlo ztOU}=m!#!_-)i%2H|P=i^V~#$83$9I_~bEeXM`J<@NrM~Gj3yyJ+v|6=pWD%vnC22 z;)hH1OI=~ez;2@GkjxTU7iMh1;RC*F`Vi@T zeYo?c)};RRfBjqg=%X{DpSl#$l!-sVmVT~}{Ujsl?^xHuVI+b401uo$khA96r(x$Ux$dJ~m)? z-5Xjrq)s?yW21Jagl?4Z^vUFbh;!tFMIF9KW;cpYyu81COS{7`@Bi#vThQ?yyOhz1 zoqO9GhflTF4jgNzb-c!*Ei#hP$A6n-AfbZTKw^u^kMnVgT8q55Yg;>e<8u4Ib=2m& zUw_d)*KQJ5v=(|-GP_Ijj#IClZo6bCaa;IlNz@Je6Bo-MLj1=_0t1QaGpR+%m1wu_ zDxZ;gFpw}$6xiht-omBg)RQ-mfN0u07j0s*J|KZ6j_7%~fyAA*9|MWguXF>6|L)^9 zSo2 zcMJ?{bkZK#7Ga%-tx<3m#&B3;9SfcG_)|1B^v%#tpUGGFSar`pY4oPZVIFclb4l0? z+mpJh!G9IGW#Cs?W?WJ_DHTyniQz@+0#>L}ZZVSJB?2!j#|9E~Is-bP$haDX+h?n> z_$*}x-kFW&BiT_OuvJuuZ79#=heF4q_kt9SJ;LZ*bz=AUqJf3l(lY7EQPZYdl(%^}K z;!t{dne54j?ulaukDE8@i%-(m7m-!&vbY8(X{8J*Ej;7}H#jIKK9^rCtL)~{xY9{H zazrs58=T?;0(<8cIY%>fV{x)s+Cd(DGYb#yxsYTsAezNmJ>yZ$&!|ijp#lazY5gD` zDF}6zaAVOe$|aK-!n{Se>S?RKxVA;SCWaVIU|EfeGV1aQ57yIFm*8`ThN~ZibW$f| z^k`aAwUL@olfKhu-;e$wKME9|JdIO7;PBRH#^sXtx|G7M1YW#Hb}Y-p(|%cCDjCC| z;L4TDZd*)dX$yQwyde3-2%s_*osvzC(Wtg5EQ-VWpGn*H7)Y=S!>*m0=*mdKFXP}3 zQ+je0s-WYEGSIdhUtgV&w`E?8+aWx>SUG&;urG`xjvPDUi8Y2Ru)7Q@^kPR7gN>Su zl{hIA^&4MZ_|ivh{POL$+nfLUKfRO0eU*>6;t~YO%35XGDT5dcBsd?PHp+yOnn+tW ztqQ>v?`L09P%iq3k^_Ux-B-xUzvJ}N{%Ymaj|MT#Z%oS+^HQ)6gP*2<9M9RoU@6?R zkB7P*9k^*LUN-H3cGW4CMMVUB<${+U6NQ#`isJ=)w3EaE?f9})6MiiyNcQQ&T!+HXGM@X9&Lb8xC=IgjKecgzS1j!{ zZCUpY=ZDxzR37jI%avScyfQWg(5z_kYO8bx52QPA2I-d{f6{Kt-=f_b_CMIzUf8&+ zeM<`^fB5oi?ZlpaZKK9}z93lJrAO5y|^!1nRigbi);*-o0 z+ik@?P~W|C|GsuqUo7p>mYXc@a8Bw5t$?V z`4Y+Tf}dFeLQCl+v+VhA#@eMwfagS&jdlnR-%WYSgdc?(g>9Jv?Im9EA#;W7P$6~7n@wn-PD9N@17O_h;+l_?iLc=fEX&1DU1jcOO*dc>0 z+6FK)Y`UxeWWPoqp3Sh4xVWj`x-tITjxwIhXGRn00v)`PhmP2HJ)Zhj=7lFoI#xn6 z4G5MVWp55#IIO!VhVY8(d5#jLoP}@pJEMIB{E*w=2}tTQ&uj6WcX+VMgwy=`WaOPpEHluNtBum#C#hRohShl(fJPO<1WTp23A5{H)pVLa+L~S$N^9 zyqCf?qlGlU&ATb@D!+M{JOvg%Wrz<}=DXWj{@-4xunlFDs_^KZtCYviEF&D;6G)_AH&NUN8oAAH<$xt+#!s$94`3J^H>j~eyKZjWAx;@IL@&?XuBg^ zl=YyFN`3vcSKGJ0{jK)>?|si}I~=z_x#1CW6!h&}(YcFm3?!;t*4IS?C1rk`@RjQ6 zamLpXx8$I@&{)iTow~s2hqc$8lHspq5b)Mp@3f!2`DXj+fBsa)v!9uEQqXt7SJJUl zD)TMshJKC zM=U!u;NO*eU)9G9SHAwLUH$Sx+aP18y@GmS&w=*66EEv%&7L=#3kH!bi~Go*Dkhy`$)URUOeBvy07&F0X`59_h`quQ?IYf$tS1-v$#rn>UIyp9}$~drW-71*6AmjYM~Z zMA`8?4qM`RQJS8Vl+Irnr~qys)d(a5lx$=mp*F=_m37)H+Ogx@Cm-uWv5V?o@90?J zz3sJEUu{47(I2+I{;R)iFTQX}@>0f1$c(QcFCHmh`P@OmATK@60MCC04uoez!1J4D zk^|4{>FHL>l>gPQtW47^UG+_iQ_xAxhYpYGz_=%+@wii)2RGK)k01-*fMbe$KC378 zwBf}QFPlu4rhZ15S3ySs!|kjf1TmPDKLaSV#g=(!!-$E2aLOe>jMRu3J_8*mB0^_t#C7iPrfT8TSc@ndjOsSE2d|QK%s!$(}nWJR%`g?F~7ZFHHh+DxbRVO zP_{9UVDZ^6gW%G*2q~V0n0&FYUhs=sly?+7lyq2&V#wran+zndbVji(`cxm2a@0fs zbgC(32o7-7R^@sLBZUxr`N9q*eT*-7r<}<%c*nTM6AkcyH`drZlYej~Ex6z<;d4&7 zGdUofiHWzw)>ej`G3JSe!dlu}FO0Rz9yf7QWO8kg7M!=qgGby92`BE24ba=N({K1d}qmmtZF~X#3w~Zxs ziFbUxUSF1YB8IH#f>`87$e_@ZG$w<{q3gge^;lFXoQDn{YA?V1l6RCiD#MBGJGbjg zZozBn!%NeWBTd9~t7$>IE#sk!Uw+ko^~+zhfBv8U(BA*`uiNeG+7ePPTg?mST5XC6 zR_=GFG~T^W3-Pr!JB<2bfz*BN$^z(8WxE}db# zO^dDcNm})|byJJ6;8mZ-*iXMt9k4J-|99j1)pkq95_e=I!53aiWZsCKRTg_Hd38YY zXFO2UsvP-^^^$3OBA$8x1|K(up)W$G3agO;>I7I8snN@9>>z;BYi4>9FePJDYmIw^ zaTc<_ERu|Ym~oJo>AXlmHofp=e!&QFrH>ymtUw+}gRvYsR2GTT#@v5O4l!_}Ts&Kb z@O>{n_5zJL>Y_PEe#AF^;a?TH^Q8cauNawjLtb`FVqs6uc0x=!z+cB#RolxmW!ndOPQ$85E}CVJrx~*0l7eN~D`Mxo17 z#tZx^UlGGS&hee`72@Do-0X4LunEZUn7or$d;rFA+*kisN%PFtlb>lz<@4vi@NpZ+ z9(s3p2%P@yT(-J>_-`s>1m(2Ulm3uqaF)+~GSEF~VbZ{;9@lY!2Q01+XdC6hZT0`) z&+`ID002M$Nklggx8-)1tTPF1#wgSeG#P zMjKn6fAg#kj*^3!Y&--3ISkR{#eAmPHNMAR&+(#HM7JPOjES*`RPgM=;4Smb1N5?LfA)L- zUZY4yE^kbKc$7SWBA#dFag6KeXt=a7))yIvpbxz<7wPCH@X_bIQwX}9@sz%aeAvi> z`WKEJ(m4-n9`?o?ueTrn_{aKU{YA@*=M%!i8ryb#sIqN)8DlUXQwdEUa)Ps-B_^ty zQh1+#ipN#X;;sRo=+C$vRK{YdD2E>LNpg$cckbM|_P_q^-?f9p+wJ`iKF|(hI_f}t zvCfQ6B_43GCcB%RQhQwhQ}w})ugq7`=?hjjUPEK9f?);6O_Q$l2+hmHH)ug0uYR2m zdo(YUPQk}}9Is3J#88R)XN?n@J+G%did*BFM06N zciSfeiKE(mcDwHHh!3D)9RyeNILT?B6Zsju5G@+*$P-v!NFp>;okEZA_!&XfJzNm)xhsZ-_dGz}TZj{H=FC%=dYo^k^Dxh!*2e*OTjLacSdDApbNpbYk4xQKV>XXAjTZd&uMo-)wm4#LK3ULM-Wu3yyLj zI?%M^T%11m#;Ha*fOix{N0<~dC@~hgxSS#PJy9pXWDf~v2xs&VHVdEOUhZxRJ0M>! z!J5LSg1K~J369E#5`0rzX4RyXt-4AnGwX(WnRPlW=A*>1Snsd3rF_E&F7l-$5y>pn z!W)E`$rKj@xvgUbi6XsCFNMIDEo^6eEy|5o_{R;A7~r6r7fvkJ1II)RT=g=cwxk9w zX-OCUER|2nOp9>ef_>?UTGkB(WdFCRXEAjZnkJ>>Z1`==%Wobd$Ab(EpMGtta z1%1(kQd0&J-B?3Pv871>vqf)(kT(jXe6(GrC{pL`Qx+RY2)AoY`LTtX+X0b-ESFrS ze2yA^6gO?4L)=m~B^mQE&?Xwx-uNq*`#e{uo21J!Yo0}&Fen`U3=>S1n@NVxR@9_p z*zE+1+^$r^XY)(EVVgPq2vPCN_>^tR9luDdT>VR?a;~RNo1ZJ#arHbd9SIyd#LvE< zS41y1-f}POI*4JJbRrWNJKWI3{F=T7=8NE4e8r#%GA|2x5oGzZEKy!CNY1nnl9#P9 zYTzr8U3>QW?D2j2T4cKxMK*6@#|K%&YXUvUnDWFL9r^MLD)Un{V8VG7%D}~!+O=@J zPZrN7^(FYJlc#*9`Tm3ZWxOH-CQZg3i2ddPGN`{T$_t~NyP8nG_wKvx@Bi-a+OOVu zr(MyclroiK?;=o16vby^dMj`lcCZitj3*uftA0rGq4oo;t>%>vW%1A~98?+gh)aEr zeZnILQ$Oi|c^WSCtd#dsaMLnA499ZiTng{Q@O;y8Yt4TSo;vq6t6#dcl7ymkd_Sf= zc;E~7!?RxQ)4!6g+QI#HU5jNGHOZxYviQi$sp2Pc2v!zZWPHeOD0}zIK;mFKsF#!5 zckUK3`l2QBI^?5;jO5{VqnD@Z!+Q57*{>apJnn&BG;U<9P#$E5>@%Jq_}+;D9>~!S z=xa?g2^s@F``33+8g?k`(C>f;HhpNy zMLB@WML6{33Vdk9A3MvLX%b{U_7Za#=wo1k*;;6P&KA@d!FgheX`Y`Emkpu2Y|0vGQZV3eAJcyn? zFOg);L6&~xPAMq|eJTsqyj-|&;ere#&dX5ZGtV*LAH0PZ&=Pu9TmGfs2;*geaxa{^ zGw$vyxGDx7XJu0iOWukt5XILrgW?z$hQ?6wJlb$n@=qM~NPUvGVJVN&sc>!#&KBGq zFMWR1vUsF$_=St%hMJ?ph23%d0%JJERXGbw;VyjDgled3Xe;{YcM4PJjX%cE zeU-mLr}r~_Gq{Wu(1Zhqu{=6PVIsT}kbvJK-_oQX`(i_JqFVE^Y;b>2vB1|=DZy0r zHq)vRhL(2Biv(P$~E*?#IDCx3CA)z#Zvq(9?aHX z3M%t}T9*=kJ1gUlalwZ&aMpYR-s$V^Tl%X0=FRIil;Gv26kLyu%+D~C01`gqNJH5f zyL&bcU+oWFHy354z2o3#j3lD7B_16nx+Czw-qG4AaN}_*`XOs3TpYKsL-U7MUp?La z>M#GYz4qE`HU!|~Hsl5a3D%DA$pbwK+`$7~$biVK@+*!pkwU{mLZ6Omo>Nh&6Nx7 zU(Wre{rbw6?Gmj(bC13I4(Lb_9n+x?p0;ZJ@vi8$>Z^3nUq;$B-oc=ZGYWAf7N?W} z^(lCGjl)xrT<0qfYSa}^WWklbWWZ&9oN$O++|SI%&-AY$iEb)Ca&-Pm;$|QsIVM9T z)m%)0^s(xTFJT~Y_G9nfp~a7ONb9HH{?;4qk7Xc1dpxO+X>MzNjI2?9C;)FRXf&Om zBvbMujK9twg+3J*wm+53mFaToN6E$0qUw3R>*c_--txS-ovt^B=jp-$csumJy^opa zbMI`FAmOB$UD14in>qJQ>9Z6Zcp!*le2h++x%F(!tZ~v3*GA3+ZpR+Dlcw$u}GOa`vx?GWkKH-;+g=VWJd`mUt@J*(o6J= zq^w%AaF34y5C2e>w#phE>sfH38XY*n&xHeTE*fJRX6Q}&@iSq09_K^a+ib%prBndAP+p}>qYz2KEvsPB zDn*s8&~T&ypN|sJA}*7Wx~~_)q)**dUXnAxOVigSMN+raPc6q*p48YT$us_Piqe$+ zYLH-Btpj#Bc;&4xc&n2FA9u75u5v^Br7Uv8b43rB%|<7kEfm#+kQWNFpclW859-d7 z1mi<_S0c1ig|m%YI$Bc=PgN&e7!Tn{#-zn?dJcbzI>k+jTK$W{of^O2$(sZ1+wT3^s*&?7`8xIZ zspD;rETK1T)5K1b0bXpvE2P~#6W%kLnEvZO{Zsqp+i$hc&Yo*Gv_l4q3}ncc&+s1U z0XOHR@6ng9v{CvM+5*n-^4)&GPkT@~pffNA1h1U=s{8m39Q~xe;{*3JUFcYehNa+A z#?_QzIhdvJu0+e@h+i)q-jT*4Rq~Sd8XA|YUGjq`^aI?}cYC1^nOEDO??L9SYq5;4 z^RH-Umz!EVyTh(QlD&;=sfZl<^9U9w_0_v}N#MNDy*gTBmt+}(i49s{WKw%ai!1a) zRcBBadTG<{;uRKQqeTbFZmlq1AjDa;yh0Ddp#a@)ISzrIQlwII<| zRB)?$5WnFKb-;^s&O^S5K?(*E+C_pdFQ9pY@`g|D_b9u*c2Q~y)-QQ$aA_CulNA1r zuZ$yOzqY2`ZW)SB6g>FAqJN-^5RaoT<)WWM_JARuq~jTQ?@-m#vD?oM$r3tN(jlAm z^^K6Ken^iVctiC;df1VEo38*P=b?lC-tsLzlP3#%$UGOYah9|G5E{W}J;W56AqLmI9UNBW@bxpLxJc6D|!~X823dGvd29?a?ZMF=AKYVVjnjvQB28A$(? zzA7@Aers_KssH#hh$;P5{*k=RKvjlW`oJOYIP%5;gYNL$K*H=Op1>E{Y=V{$1B*-I z@p}M#b{)az0Ri<>52=Uv1B#)8P&&a|TZ;_Z`i#sl}Sl=*6vdyV9XB z+9lCO)>Slj@h+6o6Sqmv^wDNrU-1VCtQU}hUFFpustgn$1s(dUK&;hIK9z2k?+gzd zD#HlLZSw6*ob4zlk_2Z%i4lJ*bcVaeParjxX+FbF0k`$h8EY^;>J+_9JZH9|VcEwO zzzW7t^2V6m>vn~5O~14)3{a2*#u@4_eE^6UcbErcZb5&5{y*rBt`lgeaSR+;Pql0* z932_DN&C`EFSVci#h-hpK|0Wa~gO~`drZBK1e>&4$g|> z8QyU{VMo1p8mYTM{z8vl0h$Z&TQH9X)sU{r7Aju}yM&Q0@MO9sAmA2amSzoOrRF(gzH??`ch+qctQ;lwX83 zEdf~1!q7}`)BXB-(LH=T~@vu^iJV`XvRR|faV{pf5bq7^$Yr< zT4yPFf=(OAyEu{|`WgQzK+e@uKdxfR4TS$ilOz!+Uqe6O{)g1dxp{eA+`r7nikPPtnzH>t4K}jm#NH$ROq1C)&9~$D3dvakv{u{LvrDK;kEBF^~|yhWyM4 zkpUG?&kf!0QzBux>URJ4lxTXM?fN+|t+zZcZl~+d<9W&%2h;`2)p)^Ojq9aP@Qj1^ z9{=Sho^g>Lu+q=>LD69{?g7g+o>MSB;=l)v?6f*g13bGagB_f>#2c3)qMthQDg3Nx zAdwdop^Xl6Je;Hh9Rz(6pLF;zA{`!#aM%dhEZ%pHul%U0S(qdG&!X|8XHfKvkQcUb z(q-gL4vQ$un62 zQ0CBqLWB>_EEX|Aj>3-R?N;Gn0e(FO65xzNPkCuHDC)U*PJtnow3IE?2wqWlvR{ot#m8VF_Z~C(#UXa|U905=Hl=*~PNeRZf z_b)W|%BJsUGKI6nx?U!6)P}DsdP&GJI-WpxdF$nKuP3=P7lq3cJr+4Mp~5&~k9L#T zr?0nJ^r(JX89{jGFSL7WO+CX`p0TW_eR}{>NDX#HcYU3@U+0@2Z7;p@Qaf_uXxp`a zZ`->R&bC=NKl|j9_W%6H|JC04`I|mwVz7^1EGq5nsJx zAhAov66u#jju-CnX|L1;U(CZtPqfCI?mVF$#usVFF0vMXR&QgdCwCt@R?2ZHxQCT< zif_4cE`@iR_DMXimyYNkNuTx_noDx?H1mOnC&)K)kG#8IrAMLfQF~w!4xAxzWi1D*_q$8 z4=-w~&HLKTz{hOJC`9>SKe9{4TE|~_q3zv!K;Nh6PdGQru#$f0E($R9pv4;a4&{EK zE`HzCt_Zhuj0Xl1_wQkhs6Idks;2l98UqO^GXr448r*X22ieF4y4)ilQTFlq(yA6L ztM49Xo%Ti=^qeeo5{@py%WKAeT<}IF@uP3CkVZcVEP0K0{<6G^!Hjv}geHz@s;`so zT1I!vSdN81j4^S1wS)s7@Ek`#f6oNPi=~o#WVjD_&r0RR@S zFN{MikFZEw*peI%UPS=EJeG;Sv{k$QaM zuF6Xp;Rm$AQygPh!nmj2;5lLRIn@u;SVcWj2T5n$#82=99u~j32R6^t2}aREYTS&U zM~@!0fdt2Fkst8nNq*qv9tWMl?SOUuL=T!Kw_H?Kj+#DC;n($S*3g&1M|3~rP<@jZ zqHp?mjk9OZwkz6NIOUF?{HD(dkH0dH$baSrJ)C-TXWab`0-Ykp7b%(kQw%PG$8}^B zuJ7u@nQuWaH1RU07E4K_%f@Jhm#l~zzsMkrUecFvfJe~&N|3OcN1)4#7WFqQOcV~? z8!bO1U@R(nBabWdNa?;IH_dDMyq0W8%LOmOcb?N8>4Ujwo3xj4+l$=P4s5erg-R|p zD!=!E6*h_+*x7G-Lz)>}fJm3a`+ZdaNV+Tf^YpvmKT3T)O8Kh3QZFlGTAI$(XHT!X zc@zT)@<=|BKm6q`w^`b437Lo>y?PMg!Ns56^PIG~$B!G+5!{h=Xu$zPJ9us&5w5{~ zF50I2@_ax3aq~}rU?eg1L>;Q1<--CoS7FpEQPm%%9>(?NgvbmyZtKE>RFcz?;x_}|w@m^b)?3h4=~5AafUi*}bl-$Gxpeqw!rF{j3z%E(lh z&Y8TChc4XEU)AH9Tz^v5Rdj2 zU5z$Kd&?LE%G3=o=;_Q;Ndx`hK>ug1L0ZOeD!Tl zy9Brjuk!A=LVoJF>H%p7nXvg13(U*T&m?;6ey?1Uq92!z_CUtScwHDHT+mUkzxc&} zwSWA_e`xQ$_koRu7F3_5{{mlg{miXce~Ll5%PAhR&P(5yi?uk8%2?2xwCWxjBo~qi zc5y@RuB+B7QTZ?gpdK+?!hp#J7OV*q3B9ZfAc*2CA2}V6VZ=TeNpQTz)~(yEN>ZK3 zn?Py}Qw3H^vK9yQ(So3EJLS&C!o;-__pO zf6N9FuO2?;=N)(Ta{rEGTII8oeBGD4v+Cg^c(k5zUFG=X+U54Ei|5<_{_^AY!Hvu9 zirT`a-8*G?qn+#c*hzGA{N50(8P#9nGfb&)N6$4xc zQJ(yP;b|I3cs)h5xI`+DYEf-UPtwuZL86Y>7#T<$Iv^vZ+CkzcfANzw>>v>X33$+3 z9{hQVPQ`wzZn<$c{nk?@?s?{G=D@Vx@?7K3n$bN^umT6F-$kdP*J7Nib#Uts>RX5> zE;>eFJbtR*rJtieW_*hy4LSvm`U4khfL^aqSmMDsu3zp0pL=kG27Inr9M6n^3>(1zpf{$E4s%RyI?%vR`g9ene?(uyI*2ffgO z45^G;)h?+kw=cbz<>(eB>NoYG@R}yQSM^2Yox8VH=01>V(!=CTNa|8rFmK>Rm*kxD zLotqE!h*3x_0tSU&fWa7tSL2v3=?GV-Ru)`+5vgdS5P)4hdBC=J$v;cMn)3HUpUcD zzVt%dFNJ@bjIOpYVHXWsB;(rz_vIJo+gm^TS$q3uKW%UQ=TF;toeORQ3E^SDRECy& zCZxM`_Tyf?;MupA31OX)3V+O3`OrgM#6W`GbKn>8T&e3kJDn+hwtwc^=jv%4mwi2D zO`7%Qzj{j72f13hqJIQ_++NAKOZy@s0x#hi#i5|l!|G4rH)W`F@!~~)f$T3xG+tFY z`Xt(+#u|0?TlL}^;|RX^IC$uYx2a{f2Uag_#HD8H?QSKn^keWo1`=+~3g(MKj4tlN!(X3d{lrAtsDQu`8a*%Ua9eg)GZ_c>B!z?ftL5 zXkXmA)-EpGYF9UCjD#NXX^Y0(U0N{NtK&!Z%Sd9!cFsZ8ms46w;43$Hy-EFfE#7K; zlc6W)0N>JATq2wrPQl{+UIyl#R5&-_-&zx&%4}JS7j0vr1>f zP2iLVwA7*^eReIb8;5sLQ9{9yU)m3k)=Tum7J=Js@G}MyJOewv zsE4G3|6F62I>QGR2X1sk))59OIon zkK@*PkHqjYpYrjt0d}i+<`Hd_zWdCXGwqVToC|+}#f6Wlhvi5J@0W|WFe*>54r32Q zAd-V$sVgtW1wo4r`aO2fDNsrSl74}Lx=Ong+-8-L`4)K4)jU!O-Gbomuox?2d6!FR zX;N58e?h>LZ2>JWr|+rxs0+WU*4sYU<4khDuaL+0 zJFSoD^ICHz{Zt0h9@EdezmhzSWvJRVZJr$AKpX+1E8}fvRvAJD)?%QCS^7agFRsGu z9zXVzUUgFhB;c9%pBBB;@vL4JvuSm7sa{>5J-zDYn=+69BQ$zk>pu5OT{C%2{aXkJ zSy-+t#e<@Kd=GrmBs~3N$+n!Py=neHiy;=6xqY;xbqvuIt5 zfdr*gdp2*xM=`Z@d)5wRlzmt0FYF$0Pdbzhw9&Pd3&(BLP7A!S*0`X$AosPq)NQqM z*P+H~*YgM&?TvO99UOYSo~gANe2iN%&xnC^%^6r@DSY5$*N7i{|NHF+Klp?8!yo>z z9Y20dxy;5t@Rr^%Uk5W%1S>qG8EAau`krB5{hes&{czDyG`apY7eXIK-@SDCN_+o< z58In>zTN)q-~PRw`S`4|KzAzr#zkT7B>pjf!;qY{D0n$Ibf*45pU82z%;n*4eUL~S z(=}R;@*GO-3mU-18m7~#|0FFqXqV7lb6(bV;XS(lW_@6>rybT#t$X{&O`a<&-bNP8 zmz55E%}2h#3dNBJJ4oEXXhQ^JT<#B*WFWCY`ALAmUbh>zPO>!siQ?zer!#$WvTU$hg)kFR*dM#kYXc&Ryr|ZG~Jk68?@VENj>f?CM{1;f_=zBbl=|1ty1?W22eF~j{ zccF|=)B37Uf|^78T}^fqv$x~pFGKz@zftRoP0-k11YaZX804wk zr~FH2-pgM_vy#r@GhgRLz$jN;oo`A~LdVyJ^)({G7a=7-;7fT)qd|ykQI!S}g9Gjn zYO?2rWeg;;C_AQkz$>B0rCj6%tuc_`8CtCHODV&LK3tWf>Nn{fvBVGYG_cT$kApUF zVjw}|0tUQs!Am%fXRav>Vcv>QlP4At!G&@vNGpRk{Q{trSmdtastlG@lt5RXz6zDn zxD%z^TS!wEygaK#b?Aul$jdhHWHFV+Q6^@%viMd`qp~=n|BUIkB=mMNhFSf+2_J#0 zd~*g8it6pnyvyS#g$f8;>{72_Eq+t>icB0lpzQD&d5C;qoy=8VY3qdoc&P;;Bdrz5 z;H6Wgo_c-4Tj~y1`F4VMhM19aosFNV(@rD7V*?3u$8?MmOm7GNkeD_q#ah|><(23{ zUKwn7|4PTt%fdTSvTx{RA?=$pB{9yqu5F`%t?XQA_m5(hCnJ2pzE4}*pFDBO$8FT2 zw)i84noi1~e_m43?%XC6S(fo7zttZ3>Q#&Iz0E`07WE&y_wH`TP9ATkzx8@MaY`>` z_V3dKQ(w&sc&iriw+rU7w(kGUyYIHQe)`k)AOG^N?cB#77r!Yw?M&roQJ#9GU9!F5 zAtqP4cRN%(^#dHwd=0{vj?hp4gP;229+&6bJMbC)nQxz~CzNz4t9i8gq=rnI_2$3E z?A8pvTDq)%SVT$!7Pr@>vj%@IF|zt`;h}G3!Gjl%*L7UMoFJEn&HFoXRBH$?* zFns6WsrLGTqux#8@V1?8yYk(rHt5A28FMV?&DwpnaTUH@RKN88`On%1S~TIfjn8jh zZC4)1$N?DjyIOtKR=(PaLdH)=jvV(<8+@(yK)k!FcFfWOJ4o2*M0C-%F%G-ajU?`B z%i9G#-`7ia?;;`k={G23=VC9gIimZux$q{b#KoZxmptn}a_PGV_Se5&>nDHND!q>iZ5 zT2!o~HaK>KF@~|P>MR!MmV05eK`CQ{zF69}ZHEm2SoEtSZK}LZ=`svbU&K7IUzMyg zfN~%o@COHPs6#Gz6@%m{X-Vh0QY7%C#f3MKNBl7y&$lIm$OK1f9MQSI$Fc`>)(I5N)wZ4c;bSTEQ|1l+2tsmNt^X|)fZJ>q>W`^J8N6$VwC=8t!Pt>kIy=W~uw%f2 z^yvrUCwLiC`Jjb##b1w*bGfYMLF`kVY5Wzwti@7?T<{i09M6nFxrhVaYnrONt*TSz z1i0}$gLNa;Dr+Z+rsLQ4wbQS>+&^C=KG>;tB)+@-AlF(C7c2(r zo>S==-N^i~{LJbH?4I{Y7jWBh`{G_Y0`oz5Egm6T9ryfgAR%~C zu^Y(nVUr9bc4-G#3=3jJfvk|P>)&*$vTt!>QK!T4P?xC-u zV{6WTL2Hk{JaBA5o%B~psHpCJPaCQc$c2L07ZpmwbRr?i|-VZ3%it;$ZPfp5r-p$7szA20a!*o*@ z{7Is8p-Y#ZuA>yDF5|;>UM-Crs-~aA+8b@sW#gG5YbGF+uI^m-+WQW|0 z*F2iluZXoiuISJi!r%?&%Me^t^cs>s9s6bw~${;;K)lzpn9#^tjY%;i}!UI0lt9PR3W@ z{b85JWqiib;9{JE7IYuw;N3#Ac4*{J_-9!I3Fv?c(+-Lbb3B}+0}WHA@#FH0@xc(> z82>EZcaAT7WJ=h~CBF=C!}AQpcZtDeyd)d@a03jT!U{+I%}bTd&{uu2xAKF z%~RDA@&V?^zKMX2A}5c2?&LbGN;?aABm)U$1}2x4_MxjvOE~A)mGKd~IBeHI!Aqtq zn&@0Of4-eN`?0oD)Yj3+UU1;+i3t^xt^G2Pc=5%TWr@De>bsh&Uohd5PvrvdYaz}? zIL1*l>DJX{Xff0MiDaJ19e)R;=)d-zZ?%_CztT>el##?9eHpI$-2&aJpBozV&S{J5 zw}1Mx_78veckRRX-V;Bo%(XyYnNcs)DU;NrM|5n5Ub>PO&JzIWRi5L&`+o@;H4Gg zjr#}5^(}op#MdY6ut0wv!$W^%-{lKj^g-M8W&0kz_&=nbBiKb^+xDG)*^kn;po=p& zA&q_pIVE4}#tTy*LCz)H$Tt_XI}7#m_9gSQguJM7>rn(aT*o8_Pj};c`j8k%6f&An zwS0Ug<(G9X<~12e+|=%p51bvqKA29%Z=AIU4Sfs>A;*O3O;<~42zRI9nWf(|*t}=0%S>u`yM;`7+ zzNYOZ;T}I!hQuQ;=s$j0phZ*k0A57WccIJ!PulcP(P4OwzT>e+FvRiY68_NNsT}DK zp`3K+NK7EmXP^UFB^?WT992So-~`8zzxrw5ZIB@*kp_75G++XcT#`q2ssIP{0GG)L zbO0Z{k7w&Wj5ET8jtEX@(4Zr81RyBXm`Xn^b?wcZu*??NAaOM zv{OFv;2EE1+RP`PeBz@v__7k76OMy7z=q$UBlzrwujL=@_N4dsrw&bSf8v-3U9!3|8k(=K+BJs2KZy^25UO2-| zT?mRfJN5@?)0wB=1^-d&YrSQxdY{oA#6G7oZ~-q$eGIuEe{423}(~x;S;^OY?_&>YQ1;rtd;G@Zzy#$1h)H7_noQ zj3T5v?vOrZ!wBhDyoB}m$#~J{*M*Zjijkp#c%0|s?&tK-`?!ioKjo)&{5+hY&{2F( zTkgJTU>s5z+-DY9xt|eI^c9FXX%WuOobcE?s!3N}(5`h09EYGaL=3j?DU89-AAw*X zAyn)fP%pb@Ijr`Myr>^}L)#wfBdPDyFLg>A%tb!`AA9fpX4h@xd865xp_@5NB9$yl zR~69n`F=m&I(07Y>D!TcN9aBm z=O7dcg#u6j3ILl`JP#%rGv!SBEaV+;K0~oX`~lpZJ14aPWnX#a<(JDp{nI~{7hZTl zV*)A1XbvgTkWA#xeYIRfT9)ZSmcF0N>$TTk5#r$*P-xiExS5{NQZgPV&z(Piq5Q}H z{hdybc&D5_d$wG?c3ou^G9qE23G;#|3o(9!eiTM128GT16LkYQo;-W}t8zd#f@ah| z=G|!*p*v-RJ7Kdd1Fx*3$#cPnWFNK<3NgR3d_>S_(<6S!&v`U+Fajljv1_k1Oq z$c=&oQXX<8iV+JMb0b&cG$I_vMW7{}4tZUtx6WO;toIwbLSv~+OL9B4_h5PB^b6(G zeqHAwMf9Dj>m!=G-XZ0635EtTBsmhr2w$@y8Iv*p*E)gXuV+3jA4@^v{K|Z}suUMS zc9dPh`{dJ4Yka>~_=u+j!Smq4VFxm*@PXfbGMQ+k?8LZT?)cHR=r@qpZv=qfcnx_I ze~0i-(30P_4QlGXBMtni;LD$M`%S-pPyVVyMS5TcUh&6rt zTsU85L^l*94j(*Fe)P%@tswD>pZ&ZXl`;(DViY9Yx(cx20-JmbM|epu<~!0gy|Cr~ zC{5k;KMFk7DsJfZy?OE|&@H$8UR_V0yu3Y*7!RUv&y98lnUJ=**KgvFOhMgink8i| z{K;ebE0WtS+AgVR?K&jn8}uDxTM7~YNHUNy;p)k6<&;l&34Z0szbOsergU`O^xi2LqFmQv<~bc3 z{r-FJNkjfS0fIU~BfqJ=Gc83c23k))eM)ind9Wfja);tUxzZs#h%`muc7Y=}p(6$! zjR9ZOO~+8+CDr|TEmrOlUQa)Fx}1LYba_@br$3B{FPVHFQ+X`SFZy`7_uqZD{O^DH zm-5MnAIgnI&bYqAlw<}*h=B7R<@LznBOa`hzEA`SKf&kZE%<{v2>w03A#i-xcK4m{ zC&4(sn?RKO4>D`H4+{G@yKP7Z@5>Yd|0@%Sm)!^1Z!D& zSXMn>9*gJenXBcUGoSb*iOUPK<>nnt94Qz_FvdWT_CGKdFlB+(D4d_d`;lVHzcRMEet8PbdtKDk>AD*EM zX%}$1R&IA|V z(4P|?+B}P)ap$_2JP{@GfP4zgVj?jX8<8P_<1DuHB7CHU2l7%(c9PGKjTo>sbW&JI zw7rs#bnopq_=J8EoWUJBW1tmuL6HTylQP9G{o#X*lX)f{;V{I<@QptYZj@!ZQ;zi2 zOh}$Mal*V~c?1@VhA11e zKydNm#d7J=rS=pF@(nIY|Dq1mS0HA(%WZ~TOlX#idH&oRi9 zF!x1U0iivrTX6-G35YuyL#${l!Ewh-w$k>h!x9fj`AOeuiOU@(o+Y!fV=okj8P93# zq(v{}Fe@;rzED?v0)^ZdcYv#!t>8281$W$>54|ORw8eTtNkZvGG(tMB^{E+-Z=VPE z(=DIw_f}GNxlkT5S>JefImxcuYuaAwUZzLAq8*}$n_?!a43xxR>v2C$+mP<|Z2U

    1v_~# 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 QzmF%P5C9*XM>T;goWOa11LgN|Q_U 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≺sgF?n&eqN zm*}P2+NpjIMX!*1IQ5Sd?3A~nsJcqrtT7az3XNi=i(DAdi+sr(Qm%t`~>mun4|hP^$#w!12}EO=4vbE1{GZ<6NfBwHdSw&x87s@ z!<04&)9IWi-6{(GqfveTGmtTKK^*y2F)oSWGebMgLb8;d*5w5z=i|&sPL0hF&|!c- zR=e6Ve;EAd>TNR{{q;8DM@yQok%X=^6(SzP-bxFNmrffcS+1<6%|8aubdM$5Gh}j_ z%1&A+gM88*cIK0RA+&M+X@Jc3#J>*Nc_oI00;ZYIQ^`#S^e=VvU*C|J$3jm${j)CU zlIvS}M@e2}Yrw6b>(plu(!GoZB7rR9bG~7n@BxFk=4+w8sn3>KMjQrcpY$o(&gY6X zlV`YA45j6(R?7L%n8&m4;Jk6NS}=L_d$pbA-1Aa!UX~@q%FL6B8iXy`XV;;6{#F2JI+a&@nkz>QxMvd6Cdn!T$El! zJ&cq%Xet&upjsbrSmcW9S>7k#ilMTpC*tGylIM!|8NS9lRk&bjg^N$vgs0+ijw}N& z*#ARaK|-;NaNB!Uu zYQJ*}y~j_~kG&rYPsDZ{V*Z%3JdE2v%YtOduRW0BZVQ^7P897vm0~|euDQiwl7>|t zbWe3$mI$nz2lJ=4Z(`e-DsuvPU;U9Xc;uH8cO6KZaUcw%z8X-ZyUXQA;em%IAYgAa zM(3IT?hm!N&v}(sush1pdd1bAv_!XHlgsxhmM>3mG?iER1HIBlx}0(uqe_PDYE!U3 zvJ1?L2dD$#g~s|8OSUbpW>-J@&k8dY`3I*oz#bzn-pu{{elUrh~1pXA8cZ%HrD_ZJ!zD7uEES!en!s*zixj(HUsj z{}3qeI*L6OjnF{hns`XUXf*gK)D!C(LBThf#TNID>j{Vi*SOd8@KF~v%^E$?hMOn` z2v+IeYdShJXQi5+9~Ry7LHQV{Yp@%Aq=B3vmP^^u15T16yuy$_pMX*LPEu^uDgxj` zbp%G#zvUE5ET-{$15SLH*0KY6&_{l4og!&@FK1|Qbu8^kH8zFHOY{N3iuG_m4f%sZ+kI@ zLoMt_P?aW&Ynd)^f-5u^jx>H*z*pibakO$GxEFOT`(|~&jL-nOOqU$(mFi# zXUsn=kreVQAQhA5fCiE|IS5ZKH?TG;obMY`8A9*)O{FB=1V=8y=6JM4@N$G3qIIw7ku1pGdVzqQQm zr410$u|}mdj>^WK=$ef15LNkW6KMVf(g=Z1;0bucThtHbG;unA@vaN~8Fg(w;(CqT z>nz8wCl6Kx&2D!%y4EZQRV?z5s)WdH^0l2I;8I{W~-7hNtus?hh#u;B$0YGJO)R6cV0MR9mPce5c{qDiWB8LJzj_W0#lsTvlASO(m z75xxrww0qg@b)qhT^TQ;+a15C5RKF$PFrmc+H3IJzl%{t3tpEc4WuEDBLl8BxeCJB zmDDO_z*@wTBqG5HG5OI4WIq9H0-`)inl2iE*vXVokk&&Ts*v1TNV1Qm@Nd6uR>p

    YE6VIkIeuXy+giQ$RZSPQB5U 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%0AWzFE5L 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%0DfM#50-5%kL=T1Z>2 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 z%0D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 z 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

    SBe_*83Kn7n** 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⪼8Rkjpvu42;tk*A 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

    rwO10p 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
    $e6$-}G56@}jV+Cyb3 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%0Ar`t-JF{&$MLwn=0c<;2`KvypWayDHE>H@W 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 z zQrrp&T!*P&;y8`-%bV@pMaSKs_*dxbIN4R$+kumdHQbEwRI z)@mWDlHoU3@JD`Lz24(D{_b~Rmri^fr-!s}>NaHv?B+L=y+YGY3ih-|{EDY^J^>18 zw>5SyKwMzyeF@nG7viIMq@YxV797Ok-yC-M5wy;GgkZS6AIO50>5(5<&@aMQeFujg zt8wCi``YvDp7|Gl`ls!4FTT)DKl~8Kbc_y0>5b3t^x!`&)@ZMGiw+|K^|hNpOoNZA*HxU>O79+8*3Z!~~^XTUcyo-h8wD z?caT;{rUg#e=*m1*(7s`3;R;%G%83OVl3b|p!k_VD&GqIF~26nRb>=H^T&m*U2N6z z$s)&VTxHy_fr7e9x{g7ugE^ue1JtKckoel^1MR7Ud)u*H8|@%U;M36eKE}khGX<_W zVuP_H(;MF9> zj{DEBAn~{7mfPz$Hc{4<4`JO8DEIEi(iVcsgDkuqKyh!9`4<@_oi*GI(*sW~2<*B^ zdq6=##cZob_^LL<$bfX7`XwFzQ(eh1^&;)@MqV{86D9Ut@*(<4aVw_q+sioHwxobx zYj#&qIPgdo=N684x>X3_{tQRd{HuTYCn!jKxqadDFSg?>AgdsuGNNU6UXY#igiX7b zhDlqR>IxEC98B8<->|ogd&E=0C&+jbzxUfxnJ`!m{lk}NBPuDZFdmh@w7%%^8YCy%IU_@g2XEGt#{ser(L>m z0UEy1=CHW(1lBW-F=o~jw}3lVE#;2ZE`zgIUw^$Vu<$!|;7~hEx+fobgyWm$nfJ2@ zM0yvnVDZie7qBLAj)mcK?JUC1E3{MlSr?M&7O4a0=+>R|Rp*wz=t|{?# zAZK5tk?;|o)4x%M>PPXX4y8RRGI5NpXnhX>RFp`1f!VV2g?j^-Ji=rh%Q7lvD_2qZ z#eP>sS(O;(m}@)?FaN@mkF*yaJJp^&^*}o|&msh2E&nYP7Pe@co^Ssag68jFQRgQt z%D?t5$F1C0%C2OUQ^Y?`=FIb0pLh`2%d?N3Zh!pw&$Xu?I@ylSOvS?4p3PMjD%OFU zIR%Rs+l*@=h|Dbzc2Gw6PAJK7v>4)wTV)*i)t4bm1+-4Gs~Mzb2Q;{{F49`@vro(J zQ(W<>a)fg`FBK$IG?|bWiFA?_$EIxEN70katry#$?ZW!fI%Czh=weJ`A7UJ7fbaI2 zDiiDPqC6SrcFbe_MM1&{e&Z+ouJDn^IxsFF_u6(Ihx}}lJg*_}f0K6bqhGwzUd3|6 zdl#;?%UG9OqR&-URXiMiPtLZ5a8vRp;i^v_p(H?K{zad@A1fbo2j;Qzax_OfZlQGR zB9^d=n@#dx*J3B_-%TkhoOUIk;x)oORQ`bD5GZXTypOL+Y?OoT;d_)~@#8W0pr|EV z!B0zg9&b8>>+=*aXHyFB`;HzU3U?@evmxamN<8z()231Wo+M7~yO(mRf3uI12byQMYU-t_3xC`*8^QkDSkltKQk8{l|OeegR}4&Qd3^LX1&eZ9@g7$)N<>p;hMu4?|n zOL^V#`*GhY=-qPciS&H>`;Hr63Zxy+z+;Y5PyyZZ@44LhJ{H*+1WU@4)4wX;?P2ca z4eTeOo?DMIDi04;g8t=>kkt9@J{|r_xMKIXJMJh=B3BGk*-5F&QxuXflyfIUJsYvg zUghtQ>Kb1+^Q^?JIF7#KPkVLw_U0{**g(k~1qpfXsyu+c`WkbTYbZlp=Dud12zy?n zeQHHw7200ob|c>+b4IO4s1#wp*zfQG;Yf=pw_4^{Y4Zp)@VE)&)moRyMn}hkw7>9A zU=RP32hu*%SBi7_TG|`ocoYwna{Y>FK6Clb9dF<;8b0Eo=AgXWP=_Fuj)4sbY`OV7 z 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

  • ebWFcP6NQQMCQ4 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