From 3fc450ad5c4ffe5bc3245f863c1fbfafaf993469 Mon Sep 17 00:00:00 2001 From: Michael Berg Date: Tue, 5 Oct 2021 13:35:09 +0200 Subject: [PATCH 1/3] Update code to support macOS --- .../NSFWDetector.xcodeproj/project.pbxproj | 15 +- .../xcschemes/NSFWDetector-Example.xcscheme | 24 +- .../NSFWDetector/CameraViewController.swift | 2 +- .../NSFWDetector/ImageViewController.swift | 4 +- Example/Podfile.lock | 6 +- .../Local Podspecs/NSFWDetector.podspec.json | 12 +- Example/Pods/Manifest.lock | 6 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 636 +++++++++--------- .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcschemes/NSFWDetector.xcscheme | 30 +- .../Pods-NSFWDetector_Example.xcscheme | 17 +- .../Pods-NSFWDetector_Tests.xcscheme | 17 +- .../NSFWDetector/NSFWDetector-Info.plist | 26 + .../NSFWDetector/NSFWDetector.debug.xcconfig | 13 + .../NSFWDetector.release.xcconfig | 13 + .../Pods-NSFWDetector_Example-Info.plist | 26 + .../Pods-NSFWDetector_Example-frameworks.sh | 112 +-- .../Pods-NSFWDetector_Example.debug.xcconfig | 7 +- ...Pods-NSFWDetector_Example.release.xcconfig | 7 +- .../Pods-NSFWDetector_Tests-Info.plist | 26 + .../Pods-NSFWDetector_Tests.debug.xcconfig | 7 +- .../Pods-NSFWDetector_Tests.release.xcconfig | 7 +- NSFWDetector.podspec | 7 +- NSFWDetector/Classes/NSFW.mlmodel | Bin 16993 -> 17194 bytes NSFWDetector/Classes/NSFWDetector.swift | 29 +- 26 files changed, 596 insertions(+), 468 deletions(-) create mode 100644 Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Example/Pods/Target Support Files/NSFWDetector/NSFWDetector-Info.plist create mode 100644 Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.debug.xcconfig create mode 100644 Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.release.xcconfig create mode 100644 Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist create mode 100644 Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist diff --git a/Example/NSFWDetector.xcodeproj/project.pbxproj b/Example/NSFWDetector.xcodeproj/project.pbxproj index 1410b8c..acedba0 100644 --- a/Example/NSFWDetector.xcodeproj/project.pbxproj +++ b/Example/NSFWDetector.xcodeproj/project.pbxproj @@ -216,7 +216,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 1010; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = LOVOO; TargetAttributes = { 607FACCF1AFB9204008FA782 = { @@ -235,6 +235,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -313,7 +314,7 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh", "${BUILT_PRODUCTS_DIR}/NSFWDetector/NSFWDetector.framework", ); name = "[CP] Embed Pods Frameworks"; @@ -322,7 +323,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -381,6 +382,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -399,6 +401,7 @@ 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; @@ -424,7 +427,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -437,6 +440,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -455,6 +459,7 @@ 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; @@ -473,7 +478,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; diff --git a/Example/NSFWDetector.xcodeproj/xcshareddata/xcschemes/NSFWDetector-Example.xcscheme b/Example/NSFWDetector.xcodeproj/xcshareddata/xcschemes/NSFWDetector-Example.xcscheme index a06b810..f0204fb 100644 --- a/Example/NSFWDetector.xcodeproj/xcshareddata/xcschemes/NSFWDetector-Example.xcscheme +++ b/Example/NSFWDetector.xcodeproj/xcshareddata/xcschemes/NSFWDetector-Example.xcscheme @@ -1,6 +1,6 @@ + + + + @@ -53,17 +62,6 @@ - - - - - - - - 0.8 { + if confidence > 0.5 { self.subsequentPositiveDetections += 1 guard self.subsequentPositiveDetections > 3 else { diff --git a/Example/NSFWDetector/ImageViewController.swift b/Example/NSFWDetector/ImageViewController.swift index 98f383f..a1c19f1 100644 --- a/Example/NSFWDetector/ImageViewController.swift +++ b/Example/NSFWDetector/ImageViewController.swift @@ -24,14 +24,14 @@ class ImageViewController: UIViewController { self.blurView.layer.cornerRadius = 10.0 self.blurView.clipsToBounds = true - guard let image = self.image else { + guard let image = self.image, let cgImage = image.cgImage else { self.nsfwLabel.text = "No Image selected." return } self.imageView.image = image - NSFWDetector.shared.check(image: image) { result in + NSFWDetector.shared.check(cgImage: cgImage) { result in switch result { case .error: self.nsfwLabel.text = "Detection failed" diff --git a/Example/Podfile.lock b/Example/Podfile.lock index dd4e2f8..725cacf 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - NSFWDetector (1.1.0) + - NSFWDetector (2.0.0) DEPENDENCIES: - NSFWDetector (from `../`) @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - NSFWDetector: 5158164f5e716652aa61cfa92dc7b252a6883415 + NSFWDetector: 6847237b1f515548fce78027274d85ee37fa390a PODFILE CHECKSUM: f9a9c6821210dfbaf2efbedd233ddc769e77db55 -COCOAPODS: 1.5.3 +COCOAPODS: 1.10.2 diff --git a/Example/Pods/Local Podspecs/NSFWDetector.podspec.json b/Example/Pods/Local Podspecs/NSFWDetector.podspec.json index 21be8fe..f0f4278 100644 --- a/Example/Pods/Local Podspecs/NSFWDetector.podspec.json +++ b/Example/Pods/Local Podspecs/NSFWDetector.podspec.json @@ -1,8 +1,8 @@ { "name": "NSFWDetector", - "version": "1.1.0", + "version": "2.0.0", "summary": "NSFW Content Detection aká porn detection with CoreML.", - "swift_version": "4.0", + "swift_versions": "5.0", "description": "Lightweight Library for scanning images for NSFW (Not Safe For Work) content.", "homepage": "https://github.com/lovoo/NSFWDetector", "license": { @@ -14,13 +14,15 @@ }, "source": { "git": "https://github.com/lovoo/NSFWDetector.git", - "tag": "1.1.0" + "tag": "2.0.0" }, "platforms": { - "ios": "8.0" + "ios": "12.0", + "osx": "10.14" }, "pod_target_xcconfig": { "COREML_CODEGEN_LANGUAGE": "Swift" }, - "source_files": "NSFWDetector/Classes/**/*" + "source_files": "NSFWDetector/Classes/**/*", + "swift_version": "5.0" } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index dd4e2f8..725cacf 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,5 +1,5 @@ PODS: - - NSFWDetector (1.1.0) + - NSFWDetector (2.0.0) DEPENDENCIES: - NSFWDetector (from `../`) @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - NSFWDetector: 5158164f5e716652aa61cfa92dc7b252a6883415 + NSFWDetector: 6847237b1f515548fce78027274d85ee37fa390a PODFILE CHECKSUM: f9a9c6821210dfbaf2efbedd233ddc769e77db55 -COCOAPODS: 1.5.3 +COCOAPODS: 1.10.2 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 07d10d0..be0d0c6 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,359 +7,356 @@ objects = { /* Begin PBXBuildFile section */ - 058DA4F164365B0F9E9AEE04DDB5B784 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; }; - 1C9B832CAA1A122C1406698A4108CF2C /* NSFWDetector-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F9EAC2B72D7E6900B6E05AA073BD8546 /* NSFWDetector-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 447F9E6D28B90CEBB3A345BBDD347794 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; }; - 48CBEDC485DC41F18136676740383A9D /* Pods-NSFWDetector_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4476FBE390D23171F8E45109291DACA3 /* Pods-NSFWDetector_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4996BADF92A43AA6744573D6192C21C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; }; - 4B56C07A94AE579E5E37768CA42110A7 /* Pods-NSFWDetector_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AA8C8A2B70F578E9C6A8FFE4213AA7A4 /* Pods-NSFWDetector_Tests-dummy.m */; }; - 5D8D2FF54D91A7A1C8DC8148C94B5E18 /* NSFW.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = 0FDCA508C5276F0D6F37E469361D7954 /* NSFW.mlmodel */; }; - 753BF02173B78BCD20FDB46BF569DA92 /* NSFWDetector-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E6377FE43EBEE064F1155E628FD8EC5 /* NSFWDetector-dummy.m */; }; - A88F3068E4D9A55B8654589F2CFC2763 /* NSFWDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F0145ACD138AF7AF970470504934DCC /* NSFWDetector.swift */; }; - D6F636C9B6DE5CA559693A05F6654E9F /* Pods-NSFWDetector_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F020C598E66719881DD23E7C4B80E85E /* Pods-NSFWDetector_Example-dummy.m */; }; - F754DD38791AA3C60AAE90400FEA392C /* Pods-NSFWDetector_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C1AAB7CE3EB9AAE770F71C92CCEDDD /* Pods-NSFWDetector_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C701FF725A25622F0F1110870547EF9 /* NSFWDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B1BA8B166CD9D109E4642B8850D243F /* NSFWDetector.swift */; }; + 2E7C7ED70BF3063282E7B76CD314A37F /* Pods-NSFWDetector_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B4C7BDD8324334891F4947F134A2FDE2 /* Pods-NSFWDetector_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4C60C89568429EB430F940764E586D11 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; + 9AFB92DBF760B7095F404A7FD7A50E9E /* Pods-NSFWDetector_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 73F3DAD0F5C2675E3D3C53B7BAFD2266 /* Pods-NSFWDetector_Tests-dummy.m */; }; + 9C90840EA99F7B7E7EA53F9C28B04CD5 /* NSFWDetector-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AB63F0F71AD6A4B42E71F42FB80E11 /* NSFWDetector-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ACD74F723E233D815F954DFD4D64AA89 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; + B6C3389218BDC95BD48758DE655A6075 /* NSFWDetector-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8367FFBFB06AEB54033F85C689FC320 /* NSFWDetector-dummy.m */; }; + CF468C03E00CE2C5132F173391093034 /* Pods-NSFWDetector_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 900FCDD4414AF9A4775D36B00138A5B9 /* Pods-NSFWDetector_Example-dummy.m */; }; + D6D6261467FF1CB65817ACEB9221DD14 /* Pods-NSFWDetector_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BE64A8CEE45A32ACE0C7335717BAFDC /* Pods-NSFWDetector_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E081FFE5A3DE0B4A3C83E6394945FA7C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; + EBC1508FA940DE15BCD7C1E3E3F4EC9E /* NSFW.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = 04A123090715C4A7674D964724C2E117 /* NSFW.mlmodel */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 8B5CF2DD7891413F51523A60DBD658F3 /* PBXContainerItemProxy */ = { + 592746A4790EA2917B935A4075EBDE24 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = CCB01C32DA2F6F5A5909511EF5102C35; - remoteInfo = "Pods-NSFWDetector_Example"; + remoteGlobalIDString = E548F4EE14CE8824EEE4D804A2E44F76; + remoteInfo = NSFWDetector; }; - ECBDF2E4306AE5316AE4566289C35DA5 /* PBXContainerItemProxy */ = { + 9737AC41C2E3D3183F38DA60E773B99C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 31483F0FD303E196812D264EB6E24D35; - remoteInfo = NSFWDetector; + remoteGlobalIDString = 4C8A20B0C86D06C23D019236AD933367; + remoteInfo = "Pods-NSFWDetector_Example"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0E6377FE43EBEE064F1155E628FD8EC5 /* NSFWDetector-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSFWDetector-dummy.m"; sourceTree = ""; }; - 0FDCA508C5276F0D6F37E469361D7954 /* NSFW.mlmodel */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.mlmodel; name = NSFW.mlmodel; path = NSFWDetector/Classes/NSFW.mlmodel; sourceTree = ""; }; - 20FA1DBEE5C0884926A3ECE2ED7AE45A /* Pods-NSFWDetector_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Tests-frameworks.sh"; sourceTree = ""; }; - 21C268F6CF5F76DFA73799FA11DBB542 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 2F0145ACD138AF7AF970470504934DCC /* NSFWDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSFWDetector.swift; path = NSFWDetector/Classes/NSFWDetector.swift; sourceTree = ""; }; - 3BD6B71BD5B8F921E8FDAF97D98E2B7C /* Pods-NSFWDetector_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-NSFWDetector_Tests.modulemap"; sourceTree = ""; }; - 4476FBE390D23171F8E45109291DACA3 /* Pods-NSFWDetector_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-NSFWDetector_Example-umbrella.h"; sourceTree = ""; }; - 4B2818E3E6F16E11A70A4D4DDC26059B /* Pods-NSFWDetector_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NSFWDetector_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 5DF00F5E7DBCC533E3523FEA6DF6A99C /* Pods-NSFWDetector_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Example-resources.sh"; sourceTree = ""; }; - 826E9CFC27A4EF86FB8C893D1706E9FF /* NSFWDetector.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NSFWDetector.modulemap; sourceTree = ""; }; - 869A6A380E055C3841ECAF8A28C80836 /* Pods_NSFWDetector_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NSFWDetector_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8BAAF73172BD7D5E9D5D18FBBD4640AC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 91A362C3ED42F5A100854E8A10D75ED6 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 93C1AAB7CE3EB9AAE770F71C92CCEDDD /* Pods-NSFWDetector_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-NSFWDetector_Tests-umbrella.h"; sourceTree = ""; }; - A00602ADBA0723ED3C1DF11E74EBD21D /* Pods-NSFWDetector_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Tests.release.xcconfig"; sourceTree = ""; }; - A12FB21A4788E71F807148DE20A5B73F /* Pods-NSFWDetector_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-NSFWDetector_Example.modulemap"; sourceTree = ""; }; - A4B86905320947DD288F3B825F23E43E /* Pods-NSFWDetector_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Tests-resources.sh"; sourceTree = ""; }; - A65B30A8AC831DC07EFD8EF9E23AEF22 /* NSFWDetector.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; path = NSFWDetector.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - AA8C8A2B70F578E9C6A8FFE4213AA7A4 /* Pods-NSFWDetector_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NSFWDetector_Tests-dummy.m"; sourceTree = ""; }; - AE5ED4392211E6EEA88D73F9F07631B6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B5F592582751720B5A41E8B1F3B4D050 /* Pods-NSFWDetector_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NSFWDetector_Example-acknowledgements.markdown"; sourceTree = ""; }; - B69884811402406E84C0ED2644B6C2EA /* Pods-NSFWDetector_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Tests-acknowledgements.plist"; sourceTree = ""; }; - BDBAFDBA2EF0D83A177D050B45E73260 /* NSFWDetector.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSFWDetector.xcconfig; sourceTree = ""; }; - BDD8805BA71D6D3B2B8F2A9E1B77D491 /* Pods-NSFWDetector_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Tests.debug.xcconfig"; sourceTree = ""; }; - C9DCA20FC4D25826D43F045E791ED7E0 /* NSFWDetector.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NSFWDetector.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D01FF1DD663A1BC147F9995E4C6B7630 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - D1BD50EA8994D4C7E15DC855D3772E61 /* NSFWDetector-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSFWDetector-prefix.pch"; sourceTree = ""; }; - D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - DAF5CCBC36B94DCADC848EAC7BC1B5E8 /* Pods-NSFWDetector_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Example.release.xcconfig"; sourceTree = ""; }; - E6D48D7DD019B5FE8DE66C480742BDF4 /* Pods-NSFWDetector_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Example-acknowledgements.plist"; sourceTree = ""; }; - EEF25B843A87922F30AE1D08D800A60C /* Pods-NSFWDetector_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Example.debug.xcconfig"; sourceTree = ""; }; - F020C598E66719881DD23E7C4B80E85E /* Pods-NSFWDetector_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NSFWDetector_Example-dummy.m"; sourceTree = ""; }; - F24A8389209A90173F4DE430A9432A91 /* Pods_NSFWDetector_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NSFWDetector_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F9EAC2B72D7E6900B6E05AA073BD8546 /* NSFWDetector-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSFWDetector-umbrella.h"; sourceTree = ""; }; - FAA74F891B26FB51AA20A73177812646 /* Pods-NSFWDetector_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Example-frameworks.sh"; sourceTree = ""; }; + 01D2C7795E5315323E0CE4BB182E4A8F /* NSFWDetector.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSFWDetector.release.xcconfig; sourceTree = ""; }; + 04A123090715C4A7674D964724C2E117 /* NSFW.mlmodel */ = {isa = PBXFileReference; includeInIndex = 1; name = NSFW.mlmodel; path = NSFWDetector/Classes/NSFW.mlmodel; sourceTree = ""; }; + 09C0B57ACE3F7CB2B126814F90CE9451 /* Pods-NSFWDetector_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NSFWDetector_Example-acknowledgements.markdown"; sourceTree = ""; }; + 159FFAD0CCFDFC8038694148BA3249BE /* NSFWDetector.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSFWDetector.debug.xcconfig; sourceTree = ""; }; + 1BE64A8CEE45A32ACE0C7335717BAFDC /* Pods-NSFWDetector_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-NSFWDetector_Tests-umbrella.h"; sourceTree = ""; }; + 22A40A5A84AAA975C7024E663311FDBE /* Pods-NSFWDetector_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NSFWDetector_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 44737A8AE31AE8963A977C6507989ED1 /* NSFWDetector-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSFWDetector-prefix.pch"; sourceTree = ""; }; + 4B64CE8111C38C521A760232A4A4C447 /* Pods-NSFWDetector_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Example-Info.plist"; sourceTree = ""; }; + 4F8236CE8ACB7F21E2F1C5148E89DEDE /* Pods-NSFWDetector_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Example-frameworks.sh"; sourceTree = ""; }; + 59AB63F0F71AD6A4B42E71F42FB80E11 /* NSFWDetector-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSFWDetector-umbrella.h"; sourceTree = ""; }; + 6A251108BA542D63E954AAE5AC437E39 /* Pods-NSFWDetector_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Tests.release.xcconfig"; sourceTree = ""; }; + 6B1BA8B166CD9D109E4642B8850D243F /* NSFWDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSFWDetector.swift; path = NSFWDetector/Classes/NSFWDetector.swift; sourceTree = ""; }; + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 73F3DAD0F5C2675E3D3C53B7BAFD2266 /* Pods-NSFWDetector_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NSFWDetector_Tests-dummy.m"; sourceTree = ""; }; + 742E73A9A3A2AE5DAE1C23ACFA3FFDD4 /* Pods-NSFWDetector_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Example-acknowledgements.plist"; sourceTree = ""; }; + 78416EDD74BAF43F5ABA0F8D204878B6 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 88F3AF50B0BCBB734BE899F239D55664 /* Pods-NSFWDetector_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Tests-Info.plist"; sourceTree = ""; }; + 8D33AAD466E1FC6D5110E6F7E215C46F /* Pods-NSFWDetector_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Tests-acknowledgements.plist"; sourceTree = ""; }; + 900FCDD4414AF9A4775D36B00138A5B9 /* Pods-NSFWDetector_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NSFWDetector_Example-dummy.m"; sourceTree = ""; }; + 98CB33317F43BA3BE4F9561718828D13 /* NSFWDetector-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NSFWDetector-Info.plist"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + A3BE7B2FFFBA8185335980541CF17CD8 /* Pods-NSFWDetector_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Example.debug.xcconfig"; sourceTree = ""; }; + A728F6D770ECDC513BE37774BE96BDEC /* Pods-NSFWDetector_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Tests.debug.xcconfig"; sourceTree = ""; }; + AC8A798A13D10710D7B07E24F8D03F2C /* NSFWDetector.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NSFWDetector.modulemap; sourceTree = ""; }; + B4C7BDD8324334891F4947F134A2FDE2 /* Pods-NSFWDetector_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-NSFWDetector_Example-umbrella.h"; sourceTree = ""; }; + B728A55AA7AE77563F85FBFD5AF7AD1E /* NSFWDetector.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NSFWDetector.framework; path = NSFWDetector.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BEE070E1ACADE3B4E66F15B7B24F03E6 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + C3481A79D0A707B02905D56920039064 /* NSFWDetector.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = NSFWDetector.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + C86E7761A7937A252BE3D3C3B757F610 /* Pods-NSFWDetector_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-NSFWDetector_Example.modulemap"; sourceTree = ""; }; + CD405DB6BD029D343FB9E74620C73A6A /* Pods-NSFWDetector_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-NSFWDetector_Tests.modulemap"; sourceTree = ""; }; + D8367FFBFB06AEB54033F85C689FC320 /* NSFWDetector-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSFWDetector-dummy.m"; sourceTree = ""; }; + D8C08DE9574B897C23DDF4749FA721F8 /* Pods-NSFWDetector_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Example.release.xcconfig"; sourceTree = ""; }; + F0CA9AA0CF65A2DDE32ED5C51EB39F32 /* Pods_NSFWDetector_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_NSFWDetector_Tests.framework; path = "Pods-NSFWDetector_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + F557A677B79BF82DFAE8C38F524EE26F /* Pods_NSFWDetector_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_NSFWDetector_Example.framework; path = "Pods-NSFWDetector_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 856FB259F564B47E504DA8ACCB3237C7 /* Frameworks */ = { + 3E3866AD08C757961F66E1A31FFEDCCC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4996BADF92A43AA6744573D6192C21C0 /* Foundation.framework in Frameworks */, + E081FFE5A3DE0B4A3C83E6394945FA7C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A3F08E91F5AE6F6307DD8F10F20B034B /* Frameworks */ = { + 6ECB9006F81DAF5DDBF991634B648EBC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 058DA4F164365B0F9E9AEE04DDB5B784 /* Foundation.framework in Frameworks */, + 4C60C89568429EB430F940764E586D11 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FFCA68AA6DF9D7D5FB1069D2031852E8 /* Frameworks */ = { + FA3CDD4F053C737B12575625C1FCF782 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 447F9E6D28B90CEBB3A345BBDD347794 /* Foundation.framework in Frameworks */, + ACD74F723E233D815F954DFD4D64AA89 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 01DCF8239E9E04F3A3443D44173F1A21 /* Pods-NSFWDetector_Example */ = { + 2AF7EF366850253EFBCB10FDBAC302D6 /* NSFWDetector */ = { isa = PBXGroup; children = ( - 8BAAF73172BD7D5E9D5D18FBBD4640AC /* Info.plist */, - A12FB21A4788E71F807148DE20A5B73F /* Pods-NSFWDetector_Example.modulemap */, - B5F592582751720B5A41E8B1F3B4D050 /* Pods-NSFWDetector_Example-acknowledgements.markdown */, - E6D48D7DD019B5FE8DE66C480742BDF4 /* Pods-NSFWDetector_Example-acknowledgements.plist */, - F020C598E66719881DD23E7C4B80E85E /* Pods-NSFWDetector_Example-dummy.m */, - FAA74F891B26FB51AA20A73177812646 /* Pods-NSFWDetector_Example-frameworks.sh */, - 5DF00F5E7DBCC533E3523FEA6DF6A99C /* Pods-NSFWDetector_Example-resources.sh */, - 4476FBE390D23171F8E45109291DACA3 /* Pods-NSFWDetector_Example-umbrella.h */, - EEF25B843A87922F30AE1D08D800A60C /* Pods-NSFWDetector_Example.debug.xcconfig */, - DAF5CCBC36B94DCADC848EAC7BC1B5E8 /* Pods-NSFWDetector_Example.release.xcconfig */, + 04A123090715C4A7674D964724C2E117 /* NSFW.mlmodel */, + 6B1BA8B166CD9D109E4642B8850D243F /* NSFWDetector.swift */, + F5B97D70A78F4DB73036AD6FD923DE03 /* Pod */, + ADEACDEC8AAD3A0F4A2B1AC49087902F /* Support Files */, ); - name = "Pods-NSFWDetector_Example"; - path = "Target Support Files/Pods-NSFWDetector_Example"; + name = NSFWDetector; + path = ../..; sourceTree = ""; }; - 1CC669A6D22A7B1D6CBA4745E444B354 /* Targets Support Files */ = { + 37E5A4DB5AE7E7648D9181ABFBD655E6 /* Products */ = { isa = PBXGroup; children = ( - 01DCF8239E9E04F3A3443D44173F1A21 /* Pods-NSFWDetector_Example */, - 31BE8575FA4F1D42901711493FBFA871 /* Pods-NSFWDetector_Tests */, + B728A55AA7AE77563F85FBFD5AF7AD1E /* NSFWDetector.framework */, + F557A677B79BF82DFAE8C38F524EE26F /* Pods_NSFWDetector_Example.framework */, + F0CA9AA0CF65A2DDE32ED5C51EB39F32 /* Pods_NSFWDetector_Tests.framework */, ); - name = "Targets Support Files"; + name = Products; sourceTree = ""; }; - 31BE8575FA4F1D42901711493FBFA871 /* Pods-NSFWDetector_Tests */ = { + 55BFF53C73B9FB54ADF351C2AB6F0F39 /* Pods-NSFWDetector_Example */ = { isa = PBXGroup; children = ( - AE5ED4392211E6EEA88D73F9F07631B6 /* Info.plist */, - 3BD6B71BD5B8F921E8FDAF97D98E2B7C /* Pods-NSFWDetector_Tests.modulemap */, - 4B2818E3E6F16E11A70A4D4DDC26059B /* Pods-NSFWDetector_Tests-acknowledgements.markdown */, - B69884811402406E84C0ED2644B6C2EA /* Pods-NSFWDetector_Tests-acknowledgements.plist */, - AA8C8A2B70F578E9C6A8FFE4213AA7A4 /* Pods-NSFWDetector_Tests-dummy.m */, - 20FA1DBEE5C0884926A3ECE2ED7AE45A /* Pods-NSFWDetector_Tests-frameworks.sh */, - A4B86905320947DD288F3B825F23E43E /* Pods-NSFWDetector_Tests-resources.sh */, - 93C1AAB7CE3EB9AAE770F71C92CCEDDD /* Pods-NSFWDetector_Tests-umbrella.h */, - BDD8805BA71D6D3B2B8F2A9E1B77D491 /* Pods-NSFWDetector_Tests.debug.xcconfig */, - A00602ADBA0723ED3C1DF11E74EBD21D /* Pods-NSFWDetector_Tests.release.xcconfig */, + C86E7761A7937A252BE3D3C3B757F610 /* Pods-NSFWDetector_Example.modulemap */, + 09C0B57ACE3F7CB2B126814F90CE9451 /* Pods-NSFWDetector_Example-acknowledgements.markdown */, + 742E73A9A3A2AE5DAE1C23ACFA3FFDD4 /* Pods-NSFWDetector_Example-acknowledgements.plist */, + 900FCDD4414AF9A4775D36B00138A5B9 /* Pods-NSFWDetector_Example-dummy.m */, + 4F8236CE8ACB7F21E2F1C5148E89DEDE /* Pods-NSFWDetector_Example-frameworks.sh */, + 4B64CE8111C38C521A760232A4A4C447 /* Pods-NSFWDetector_Example-Info.plist */, + B4C7BDD8324334891F4947F134A2FDE2 /* Pods-NSFWDetector_Example-umbrella.h */, + A3BE7B2FFFBA8185335980541CF17CD8 /* Pods-NSFWDetector_Example.debug.xcconfig */, + D8C08DE9574B897C23DDF4749FA721F8 /* Pods-NSFWDetector_Example.release.xcconfig */, ); - name = "Pods-NSFWDetector_Tests"; - path = "Target Support Files/Pods-NSFWDetector_Tests"; + name = "Pods-NSFWDetector_Example"; + path = "Target Support Files/Pods-NSFWDetector_Example"; sourceTree = ""; }; - 44D5347904CF754D6785B84253F2574A /* iOS */ = { + 578452D2E740E91742655AC8F1636D1F /* iOS */ = { isa = PBXGroup; children = ( - D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */, + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */, ); name = iOS; sourceTree = ""; }; - 5CEE786571BD8C7295C308C43B534A1A /* Pod */ = { + 6B104EF24181A3F8284B2F4EEB41B683 /* Pods-NSFWDetector_Tests */ = { isa = PBXGroup; children = ( - D01FF1DD663A1BC147F9995E4C6B7630 /* LICENSE */, - A65B30A8AC831DC07EFD8EF9E23AEF22 /* NSFWDetector.podspec */, - 91A362C3ED42F5A100854E8A10D75ED6 /* README.md */, + CD405DB6BD029D343FB9E74620C73A6A /* Pods-NSFWDetector_Tests.modulemap */, + 22A40A5A84AAA975C7024E663311FDBE /* Pods-NSFWDetector_Tests-acknowledgements.markdown */, + 8D33AAD466E1FC6D5110E6F7E215C46F /* Pods-NSFWDetector_Tests-acknowledgements.plist */, + 73F3DAD0F5C2675E3D3C53B7BAFD2266 /* Pods-NSFWDetector_Tests-dummy.m */, + 88F3AF50B0BCBB734BE899F239D55664 /* Pods-NSFWDetector_Tests-Info.plist */, + 1BE64A8CEE45A32ACE0C7335717BAFDC /* Pods-NSFWDetector_Tests-umbrella.h */, + A728F6D770ECDC513BE37774BE96BDEC /* Pods-NSFWDetector_Tests.debug.xcconfig */, + 6A251108BA542D63E954AAE5AC437E39 /* Pods-NSFWDetector_Tests.release.xcconfig */, ); - name = Pod; + name = "Pods-NSFWDetector_Tests"; + path = "Target Support Files/Pods-NSFWDetector_Tests"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + ADEACDEC8AAD3A0F4A2B1AC49087902F /* Support Files */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - C71DDE4E755043D990595D63404E1D31 /* Development Pods */, - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, - A400141913355D29ABED4E13A384A9BC /* Products */, - 1CC669A6D22A7B1D6CBA4745E444B354 /* Targets Support Files */, + AC8A798A13D10710D7B07E24F8D03F2C /* NSFWDetector.modulemap */, + D8367FFBFB06AEB54033F85C689FC320 /* NSFWDetector-dummy.m */, + 98CB33317F43BA3BE4F9561718828D13 /* NSFWDetector-Info.plist */, + 44737A8AE31AE8963A977C6507989ED1 /* NSFWDetector-prefix.pch */, + 59AB63F0F71AD6A4B42E71F42FB80E11 /* NSFWDetector-umbrella.h */, + 159FFAD0CCFDFC8038694148BA3249BE /* NSFWDetector.debug.xcconfig */, + 01D2C7795E5315323E0CE4BB182E4A8F /* NSFWDetector.release.xcconfig */, ); + name = "Support Files"; + path = "Example/Pods/Target Support Files/NSFWDetector"; sourceTree = ""; }; - A400141913355D29ABED4E13A384A9BC /* Products */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - C9DCA20FC4D25826D43F045E791ED7E0 /* NSFWDetector.framework */, - 869A6A380E055C3841ECAF8A28C80836 /* Pods_NSFWDetector_Example.framework */, - F24A8389209A90173F4DE430A9432A91 /* Pods_NSFWDetector_Tests.framework */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + E36AC80A37674A2F7B15507A7764A7C1 /* Development Pods */, + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, + 37E5A4DB5AE7E7648D9181ABFBD655E6 /* Products */, + F34A877F6C4A8821CBDD2527B769FBE8 /* Targets Support Files */, ); - name = Products; sourceTree = ""; }; - A631FC73CE61BF517225576FFB5E2684 /* Support Files */ = { + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { isa = PBXGroup; children = ( - 21C268F6CF5F76DFA73799FA11DBB542 /* Info.plist */, - 826E9CFC27A4EF86FB8C893D1706E9FF /* NSFWDetector.modulemap */, - BDBAFDBA2EF0D83A177D050B45E73260 /* NSFWDetector.xcconfig */, - 0E6377FE43EBEE064F1155E628FD8EC5 /* NSFWDetector-dummy.m */, - D1BD50EA8994D4C7E15DC855D3772E61 /* NSFWDetector-prefix.pch */, - F9EAC2B72D7E6900B6E05AA073BD8546 /* NSFWDetector-umbrella.h */, + 578452D2E740E91742655AC8F1636D1F /* iOS */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/NSFWDetector"; + name = Frameworks; sourceTree = ""; }; - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { + E36AC80A37674A2F7B15507A7764A7C1 /* Development Pods */ = { isa = PBXGroup; children = ( - 44D5347904CF754D6785B84253F2574A /* iOS */, + 2AF7EF366850253EFBCB10FDBAC302D6 /* NSFWDetector */, ); - name = Frameworks; + name = "Development Pods"; sourceTree = ""; }; - BC755FEA600C69E85B3AAD7C88D9B58F /* NSFWDetector */ = { + F34A877F6C4A8821CBDD2527B769FBE8 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 0FDCA508C5276F0D6F37E469361D7954 /* NSFW.mlmodel */, - 2F0145ACD138AF7AF970470504934DCC /* NSFWDetector.swift */, - 5CEE786571BD8C7295C308C43B534A1A /* Pod */, - A631FC73CE61BF517225576FFB5E2684 /* Support Files */, + 55BFF53C73B9FB54ADF351C2AB6F0F39 /* Pods-NSFWDetector_Example */, + 6B104EF24181A3F8284B2F4EEB41B683 /* Pods-NSFWDetector_Tests */, ); - name = NSFWDetector; - path = ../..; + name = "Targets Support Files"; sourceTree = ""; }; - C71DDE4E755043D990595D63404E1D31 /* Development Pods */ = { + F5B97D70A78F4DB73036AD6FD923DE03 /* Pod */ = { isa = PBXGroup; children = ( - BC755FEA600C69E85B3AAD7C88D9B58F /* NSFWDetector */, + 78416EDD74BAF43F5ABA0F8D204878B6 /* LICENSE */, + C3481A79D0A707B02905D56920039064 /* NSFWDetector.podspec */, + BEE070E1ACADE3B4E66F15B7B24F03E6 /* README.md */, ); - name = "Development Pods"; + name = Pod; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 9571647B8A307C081F7D8E8C69C1B86D /* Headers */ = { + C847C4DB051C2E2D6859F60C2D982F5A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 48CBEDC485DC41F18136676740383A9D /* Pods-NSFWDetector_Example-umbrella.h in Headers */, + 9C90840EA99F7B7E7EA53F9C28B04CD5 /* NSFWDetector-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B096D1923AAC5AB660F638E364BEE299 /* Headers */ = { + C87453EBE5F278D573DF7477A596949B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - F754DD38791AA3C60AAE90400FEA392C /* Pods-NSFWDetector_Tests-umbrella.h in Headers */, + D6D6261467FF1CB65817ACEB9221DD14 /* Pods-NSFWDetector_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - BBFC2EF26945CA6FB094E3B131C13852 /* Headers */ = { + FF2EBF8C885D84C9CD8B18F34199193A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1C9B832CAA1A122C1406698A4108CF2C /* NSFWDetector-umbrella.h in Headers */, + 2E7C7ED70BF3063282E7B76CD314A37F /* Pods-NSFWDetector_Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 31483F0FD303E196812D264EB6E24D35 /* NSFWDetector */ = { + 4B6DA2BD2BC39A514468830D2001A456 /* Pods-NSFWDetector_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 33A53F18C01F4767CB35015A1FD26D13 /* Build configuration list for PBXNativeTarget "NSFWDetector" */; + buildConfigurationList = 673C97030A99074313AE71A8BB1C2121 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Tests" */; buildPhases = ( - BBFC2EF26945CA6FB094E3B131C13852 /* Headers */, - 85ABB991A6B412E19CAE851E7175C7D2 /* Sources */, - FFCA68AA6DF9D7D5FB1069D2031852E8 /* Frameworks */, - 16DEC2259C752EF38588AA30A3D59CA0 /* Resources */, + C87453EBE5F278D573DF7477A596949B /* Headers */, + 232D3593045684FEDA7160F9436F6F17 /* Sources */, + 3E3866AD08C757961F66E1A31FFEDCCC /* Frameworks */, + C25D4CDB3ED640737AF8E45A7EFE12E6 /* Resources */, ); buildRules = ( ); dependencies = ( + 19BC0E1F6A249A76B289831B46B3F13F /* PBXTargetDependency */, ); - name = NSFWDetector; - productName = NSFWDetector; - productReference = C9DCA20FC4D25826D43F045E791ED7E0 /* NSFWDetector.framework */; + name = "Pods-NSFWDetector_Tests"; + productName = "Pods-NSFWDetector_Tests"; + productReference = F0CA9AA0CF65A2DDE32ED5C51EB39F32 /* Pods_NSFWDetector_Tests.framework */; productType = "com.apple.product-type.framework"; }; - 68FF7D8D768DA03F68A18B594B4E4800 /* Pods-NSFWDetector_Tests */ = { + 4C8A20B0C86D06C23D019236AD933367 /* Pods-NSFWDetector_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = DB550EF442FE9CB2EE30647921C990E4 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Tests" */; + buildConfigurationList = 3026556A5843A415D727BB17F2056E45 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Example" */; buildPhases = ( - B096D1923AAC5AB660F638E364BEE299 /* Headers */, - ED7BF75FF233987D7A4FDA922BED4A57 /* Sources */, - A3F08E91F5AE6F6307DD8F10F20B034B /* Frameworks */, - 2E6714C817C75F6ED54A86078C5444A4 /* Resources */, + FF2EBF8C885D84C9CD8B18F34199193A /* Headers */, + F10B7B4BAB764C6004BFC4E9A81D1DB1 /* Sources */, + FA3CDD4F053C737B12575625C1FCF782 /* Frameworks */, + 25ADB5BFD225C954B466C046CFFE857F /* Resources */, ); buildRules = ( ); dependencies = ( - EBB6E45D8256920C22C60DFB3209FFD3 /* PBXTargetDependency */, + BE46972E2769DBB47B473F3379A7D664 /* PBXTargetDependency */, ); - name = "Pods-NSFWDetector_Tests"; - productName = "Pods-NSFWDetector_Tests"; - productReference = F24A8389209A90173F4DE430A9432A91 /* Pods_NSFWDetector_Tests.framework */; + name = "Pods-NSFWDetector_Example"; + productName = "Pods-NSFWDetector_Example"; + productReference = F557A677B79BF82DFAE8C38F524EE26F /* Pods_NSFWDetector_Example.framework */; productType = "com.apple.product-type.framework"; }; - CCB01C32DA2F6F5A5909511EF5102C35 /* Pods-NSFWDetector_Example */ = { + E548F4EE14CE8824EEE4D804A2E44F76 /* NSFWDetector */ = { isa = PBXNativeTarget; - buildConfigurationList = CB441AC04107E381509202E7782137EB /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Example" */; + buildConfigurationList = 96B3A03FB6E418FFCD301C1A63FCC89D /* Build configuration list for PBXNativeTarget "NSFWDetector" */; buildPhases = ( - 9571647B8A307C081F7D8E8C69C1B86D /* Headers */, - CA33093B868ED13E4F0B55A3388A4E3E /* Sources */, - 856FB259F564B47E504DA8ACCB3237C7 /* Frameworks */, - 79341239CF632D1AB0081B983256D86F /* Resources */, + C847C4DB051C2E2D6859F60C2D982F5A /* Headers */, + DFA816146B35D385DB1CF5369497D3F0 /* Sources */, + 6ECB9006F81DAF5DDBF991634B648EBC /* Frameworks */, + DA46BC068F8BA4C5B1CCA5806550A3BB /* Resources */, ); buildRules = ( ); dependencies = ( - 7C8E10FCF63AE2C5C29AF1A7F06D3009 /* PBXTargetDependency */, ); - name = "Pods-NSFWDetector_Example"; - productName = "Pods-NSFWDetector_Example"; - productReference = 869A6A380E055C3841ECAF8A28C80836 /* Pods_NSFWDetector_Example.framework */; + name = NSFWDetector; + productName = NSFWDetector; + productReference = B728A55AA7AE77563F85FBFD5AF7AD1E /* NSFWDetector.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0930; - LastUpgradeCheck = 0930; + LastSwiftUpdateCheck = 1240; + LastUpgradeCheck = 1240; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = A400141913355D29ABED4E13A384A9BC /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 37E5A4DB5AE7E7648D9181ABFBD655E6 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 31483F0FD303E196812D264EB6E24D35 /* NSFWDetector */, - CCB01C32DA2F6F5A5909511EF5102C35 /* Pods-NSFWDetector_Example */, - 68FF7D8D768DA03F68A18B594B4E4800 /* Pods-NSFWDetector_Tests */, + E548F4EE14CE8824EEE4D804A2E44F76 /* NSFWDetector */, + 4C8A20B0C86D06C23D019236AD933367 /* Pods-NSFWDetector_Example */, + 4B6DA2BD2BC39A514468830D2001A456 /* Pods-NSFWDetector_Tests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 16DEC2259C752EF38588AA30A3D59CA0 /* Resources */ = { + 25ADB5BFD225C954B466C046CFFE857F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 2E6714C817C75F6ED54A86078C5444A4 /* Resources */ = { + C25D4CDB3ED640737AF8E45A7EFE12E6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 79341239CF632D1AB0081B983256D86F /* Resources */ = { + DA46BC068F8BA4C5B1CCA5806550A3BB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -369,55 +366,56 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 85ABB991A6B412E19CAE851E7175C7D2 /* Sources */ = { + 232D3593045684FEDA7160F9436F6F17 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5D8D2FF54D91A7A1C8DC8148C94B5E18 /* NSFW.mlmodel in Sources */, - 753BF02173B78BCD20FDB46BF569DA92 /* NSFWDetector-dummy.m in Sources */, - A88F3068E4D9A55B8654589F2CFC2763 /* NSFWDetector.swift in Sources */, + 9AFB92DBF760B7095F404A7FD7A50E9E /* Pods-NSFWDetector_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - CA33093B868ED13E4F0B55A3388A4E3E /* Sources */ = { + DFA816146B35D385DB1CF5369497D3F0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D6F636C9B6DE5CA559693A05F6654E9F /* Pods-NSFWDetector_Example-dummy.m in Sources */, + EBC1508FA940DE15BCD7C1E3E3F4EC9E /* NSFW.mlmodel in Sources */, + B6C3389218BDC95BD48758DE655A6075 /* NSFWDetector-dummy.m in Sources */, + 1C701FF725A25622F0F1110870547EF9 /* NSFWDetector.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - ED7BF75FF233987D7A4FDA922BED4A57 /* Sources */ = { + F10B7B4BAB764C6004BFC4E9A81D1DB1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4B56C07A94AE579E5E37768CA42110A7 /* Pods-NSFWDetector_Tests-dummy.m in Sources */, + CF468C03E00CE2C5132F173391093034 /* Pods-NSFWDetector_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 7C8E10FCF63AE2C5C29AF1A7F06D3009 /* PBXTargetDependency */ = { + 19BC0E1F6A249A76B289831B46B3F13F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NSFWDetector; - target = 31483F0FD303E196812D264EB6E24D35 /* NSFWDetector */; - targetProxy = ECBDF2E4306AE5316AE4566289C35DA5 /* PBXContainerItemProxy */; + name = "Pods-NSFWDetector_Example"; + target = 4C8A20B0C86D06C23D019236AD933367 /* Pods-NSFWDetector_Example */; + targetProxy = 9737AC41C2E3D3183F38DA60E773B99C /* PBXContainerItemProxy */; }; - EBB6E45D8256920C22C60DFB3209FFD3 /* PBXTargetDependency */ = { + BE46972E2769DBB47B473F3379A7D664 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-NSFWDetector_Example"; - target = CCB01C32DA2F6F5A5909511EF5102C35 /* Pods-NSFWDetector_Example */; - targetProxy = 8B5CF2DD7891413F51523A60DBD658F3 /* PBXContainerItemProxy */; + name = NSFWDetector; + target = E548F4EE14CE8824EEE4D804A2E44F76 /* NSFWDetector */; + targetProxy = 592746A4790EA2917B935A4075EBDE24 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 124D7E180F2D932C981E24123FC7B0EF /* Debug */ = { + 28FF8E343FB8CA9DBD274208E7146781 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BDBAFDBA2EF0D83A177D050B45E73260 /* NSFWDetector.xcconfig */; + baseConfigurationReference = 01D2C7795E5315323E0CE4BB182E4A8F /* NSFWDetector.release.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = ""; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -427,9 +425,9 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/NSFWDetector/NSFWDetector-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/NSFWDetector/Info.plist"; + INFOPLIST_FILE = "Target Support Files/NSFWDetector/NSFWDetector-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/NSFWDetector/NSFWDetector.modulemap"; PRODUCT_MODULE_NAME = NSFWDetector; @@ -437,41 +435,7 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 1640CBE5E2E7A6BBD7198C689E2463EF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A00602ADBA0723ED3C1DF11E74EBD21D /* Pods-NSFWDetector_Tests.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -479,13 +443,12 @@ }; name = Release; }; - 3954258C436B697C6BCC8024D283D267 /* Debug */ = { + 296DB86BF93A0786AC8789AC496ADBD6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEF25B843A87922F30AE1D08D800A60C /* Pods-NSFWDetector_Example.debug.xcconfig */; + baseConfigurationReference = 159FFAD0CCFDFC8038694148BA3249BE /* NSFWDetector.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -494,29 +457,29 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Example/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/NSFWDetector/NSFWDetector-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/NSFWDetector/NSFWDetector-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/NSFWDetector/NSFWDetector.modulemap"; + PRODUCT_MODULE_NAME = NSFWDetector; + PRODUCT_NAME = NSFWDetector; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 98E98810EEEB96C99CB95CB91F4ADE0A /* Debug */ = { + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -539,14 +502,13 @@ 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; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -574,18 +536,18 @@ STRIP_INSTALLED_PRODUCT = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - A4060EB25D43CABD610B9ACD159C8B0B /* Release */ = { + 43584E24B671AE71187D067B94C494D1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DAF5CCBC36B94DCADC848EAC7BC1B5E8 /* Pods-NSFWDetector_Example.release.xcconfig */; + baseConfigurationReference = D8C08DE9574B897C23DDF4749FA721F8 /* Pods-NSFWDetector_Example.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -594,7 +556,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Example/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -614,44 +576,11 @@ }; name = Release; }; - B6A6E76DBE541A734C39CE77A84B0971 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BDD8805BA71D6D3B2B8F2A9E1B77D491 /* Pods-NSFWDetector_Tests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B97A7F6ACE1216BB5A2307CA83FC93C5 /* Release */ = { + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -674,14 +603,13 @@ 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; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; @@ -703,17 +631,20 @@ MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; - EE7D73C4A3BA68935ED530869DA2D203 /* Release */ = { + 73ED3EB49722624F1228738A87043F7F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BDBAFDBA2EF0D83A177D050B45E73260 /* NSFWDetector.xcconfig */; + baseConfigurationReference = 6A251108BA542D63E954AAE5AC437E39 /* Pods-NSFWDetector_Tests.release.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = ""; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -722,18 +653,19 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/NSFWDetector/NSFWDetector-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/NSFWDetector/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/NSFWDetector/NSFWDetector.modulemap"; - PRODUCT_MODULE_NAME = NSFWDetector; - PRODUCT_NAME = NSFWDetector; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -741,46 +673,114 @@ }; name = Release; }; + 7EFE9FAED682A7D94CEAD1E5ABE95846 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A728F6D770ECDC513BE37774BE96BDEC /* Pods-NSFWDetector_Tests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + C5E05E75EF05D00213409D17935D129F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A3BE7B2FFFBA8185335980541CF17CD8 /* Pods-NSFWDetector_Example.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 3026556A5843A415D727BB17F2056E45 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 98E98810EEEB96C99CB95CB91F4ADE0A /* Debug */, - B97A7F6ACE1216BB5A2307CA83FC93C5 /* Release */, + C5E05E75EF05D00213409D17935D129F /* Debug */, + 43584E24B671AE71187D067B94C494D1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 33A53F18C01F4767CB35015A1FD26D13 /* Build configuration list for PBXNativeTarget "NSFWDetector" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 124D7E180F2D932C981E24123FC7B0EF /* Debug */, - EE7D73C4A3BA68935ED530869DA2D203 /* Release */, + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */, + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CB441AC04107E381509202E7782137EB /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Example" */ = { + 673C97030A99074313AE71A8BB1C2121 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3954258C436B697C6BCC8024D283D267 /* Debug */, - A4060EB25D43CABD610B9ACD159C8B0B /* Release */, + 7EFE9FAED682A7D94CEAD1E5ABE95846 /* Debug */, + 73ED3EB49722624F1228738A87043F7F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DB550EF442FE9CB2EE30647921C990E4 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Tests" */ = { + 96B3A03FB6E418FFCD301C1A63FCC89D /* Build configuration list for PBXNativeTarget "NSFWDetector" */ = { isa = XCConfigurationList; buildConfigurations = ( - B6A6E76DBE541A734C39CE77A84B0971 /* Debug */, - 1640CBE5E2E7A6BBD7198C689E2463EF /* Release */, + 296DB86BF93A0786AC8789AC496ADBD6 /* Debug */, + 28FF8E343FB8CA9DBD274208E7146781 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/NSFWDetector.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/NSFWDetector.xcscheme index 6d84a1d..03514e4 100644 --- a/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/NSFWDetector.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/NSFWDetector.xcscheme @@ -1,36 +1,37 @@ + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + ReferencedContainer = "container:Pods.xcodeproj"> - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + - - + debugDocumentVersioning = "YES"> diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/Pods-NSFWDetector_Example.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/Pods-NSFWDetector_Example.xcscheme index 21a651b..05432a2 100644 --- a/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/Pods-NSFWDetector_Example.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/Pods-NSFWDetector_Example.xcscheme @@ -1,6 +1,6 @@ @@ -29,8 +29,6 @@ shouldUseLaunchSchemeArgsEnv = "YES"> - - - - - - - - @@ -29,8 +29,6 @@ shouldUseLaunchSchemeArgsEnv = "YES"> - - - - - - - - + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.debug.xcconfig b/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.debug.xcconfig new file mode 100644 index 0000000..66bd337 --- /dev/null +++ b/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.debug.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector +COREML_CODEGEN_LANGUAGE = Swift +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.release.xcconfig b/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.release.xcconfig new file mode 100644 index 0000000..66bd337 --- /dev/null +++ b/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.release.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector +COREML_CODEGEN_LANGUAGE = Swift +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh index d45d140..fa14684 100755 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh @@ -3,10 +3,15 @@ set -e set -u set -o pipefail +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" @@ -14,9 +19,8 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +BCSYMBOLMAP_DIR="BCSymbolMaps" -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html @@ -36,19 +40,34 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then + # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied + find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do + echo "Installing $f" + install_bcsymbolmap "$f" "$destination" + rm "$f" + done + rmdir "${source}/${BCSYMBOLMAP_DIR}" fi # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -62,7 +81,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -70,77 +89,90 @@ install_framework() done fi } - # Copies and strips a vendored dSYM install_dsym() { local source="$1" + warn_missing_arch=${2:-true} if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. + # Copy the dSYM into the targets temp dir. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + basename="$(basename -s .dSYM "$source")" + binary_name="$(ls "$source/Contents/Resources/DWARF")" + binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" + # Strip invalid architectures from the dSYM. + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then + strip_invalid_archs "$binary" "$warn_missing_arch" fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + if [[ $STRIP_BINARY_RETVAL == 0 ]]; then # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" else # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" fi fi } -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 # Strip invalid architectures strip_invalid_archs() { binary="$1" + warn_missing_arch=${2:-true} # Get architectures for current target binary binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" # Intersect them with the architectures we are building for intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" # If there are no archs supported by this binary then warn the user if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 + if [[ "$warn_missing_arch" == "true" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + fi + STRIP_BINARY_RETVAL=1 return fi stripped="" for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi - STRIP_BINARY_RETVAL=1 + STRIP_BINARY_RETVAL=0 } +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/NSFWDetector/NSFWDetector.framework" diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.debug.xcconfig index 621c724..d4c5a7b 100644 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.debug.xcconfig @@ -1,11 +1,14 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "NSFWDetector" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.release.xcconfig index 621c724..d4c5a7b 100644 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.release.xcconfig @@ -1,11 +1,14 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "NSFWDetector" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.debug.xcconfig index 78bf404..9c59f90 100644 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.debug.xcconfig @@ -1,8 +1,11 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "NSFWDetector" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.release.xcconfig index 78bf404..9c59f90 100644 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.release.xcconfig @@ -1,8 +1,11 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "NSFWDetector" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/NSFWDetector.podspec b/NSFWDetector.podspec index f53db12..eab57e7 100644 --- a/NSFWDetector.podspec +++ b/NSFWDetector.podspec @@ -1,8 +1,8 @@ Pod::Spec.new do |s| s.name = 'NSFWDetector' - s.version = '1.1.1' + s.version = '2.0.0' s.summary = 'NSFW Content Detection aká porn detection with CoreML.' - s.swift_version = '4.2' + s.swift_version = '5.0' s.description = <<-DESC Lightweight Library for scanning images for NSFW (Not Safe For Work) content. @@ -13,7 +13,8 @@ Lightweight Library for scanning images for NSFW (Not Safe For Work) content. s.author = { 'Michael Berg' => 'michael.berg@lovoo.com' } s.source = { :git => 'https://github.com/lovoo/NSFWDetector.git', :tag => s.version.to_s } - s.ios.deployment_target = '8.0' + s.ios.deployment_target = '12.0' + s.osx.deployment_target = '10.14' s.pod_target_xcconfig = { 'COREML_CODEGEN_LANGUAGE' => 'Swift' } diff --git a/NSFWDetector/Classes/NSFW.mlmodel b/NSFWDetector/Classes/NSFW.mlmodel index 75d1d7a0080b222984d97111f67b75bad69b105e..9e3f9329e93b3990626a806ac19424975bb99975 100644 GIT binary patch literal 17194 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 literal 16993 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 YC0HqH*)G5Ri`cliSU{&Pa4`c30GCV)sQ>@~ diff --git a/NSFWDetector/Classes/NSFWDetector.swift b/NSFWDetector/Classes/NSFWDetector.swift index 2ed79e9..1ab4bfc 100644 --- a/NSFWDetector/Classes/NSFWDetector.swift +++ b/NSFWDetector/Classes/NSFWDetector.swift @@ -9,7 +9,6 @@ import Foundation import CoreML import Vision -@available(iOS 12.0, *) public class NSFWDetector { public static let shared = NSFWDetector() @@ -17,7 +16,7 @@ public class NSFWDetector { private let model: VNCoreMLModel public required init() { - guard let model = try? VNCoreMLModel(for: NSFW().model) else { + guard let model = try? VNCoreMLModel(for: NSFW(configuration: MLModelConfiguration()).model) else { fatalError("NSFW should always be a valid model") } self.model = model @@ -32,38 +31,28 @@ public class NSFWDetector { case success(nsfwConfidence: Float) } - public func check(image: UIImage, completion: @escaping (_ result: DetectionResult) -> Void) { - - // Create a requestHandler for the image - let requestHandler: VNImageRequestHandler? - if let cgImage = image.cgImage { - requestHandler = VNImageRequestHandler(cgImage: cgImage, options: [:]) - } else if let ciImage = image.ciImage { - requestHandler = VNImageRequestHandler(ciImage: ciImage, options: [:]) - } else { - requestHandler = nil - } + public func check(cgImage: CGImage, completion: @escaping (_ result: DetectionResult) -> Void) { + let requestHandler = VNImageRequestHandler(cgImage: cgImage, options: [:]) self.check(requestHandler, completion: completion) } public func check(cvPixelbuffer: CVPixelBuffer, completion: @escaping (_ result: DetectionResult) -> Void) { let requestHandler = VNImageRequestHandler(cvPixelBuffer: cvPixelbuffer, options: [:]) + self.check(requestHandler, completion: completion) + } + public func check(ciImage: CIImage, completion: @escaping (_ result: DetectionResult) -> Void) { + + let requestHandler = VNImageRequestHandler(ciImage: ciImage, options: [:]) self.check(requestHandler, completion: completion) } } -@available(iOS 12.0, *) private extension NSFWDetector { - func check(_ requestHandler: VNImageRequestHandler?, completion: @escaping (_ result: DetectionResult) -> Void) { - - guard let requestHandler = requestHandler else { - completion(.error(NSError(domain: "either cgImage or ciImage must be set inside of UIImage", code: 0, userInfo: nil))) - return - } + func check(_ requestHandler: VNImageRequestHandler, completion: @escaping (_ result: DetectionResult) -> Void) { /// The request that handles the detection completion let request = VNCoreMLRequest(model: self.model, completionHandler: { (request, error) in From c43bd4f82ee38663492d212103afd59b284dfcb5 Mon Sep 17 00:00:00 2001 From: Michael Berg Date: Tue, 23 Nov 2021 02:40:41 +0100 Subject: [PATCH 2/3] Update README --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 75f6647..017d9d5 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ NSFWDetector is a small (**17 kB**) CoreML Model to scan images for nudity. It w ## Usage ```swift -guard #available(iOS 12.0, *), let detector = NSFWDetector.shared else { +guard let detector = NSFWDetector.shared else { return } -detector.check(image: image, completion: { result in +detector.check(cgImage: image, completion: { result in switch result { case let .success(nsfwConfidence: confidence): if confidence > 0.9 { @@ -38,8 +38,6 @@ it, simply add the following line to your Podfile: pod 'NSFWDetector' ``` -⚠️ Because the model was trained with CreateML, you need **Xcode 10** and above to compile the project. - ## App Size The Machine Learning Model is only **17 kB** in size, so App size won't be affected compared to other libraries using the [yahoo model](https://github.com/yahoo/open_nsfw). @@ -48,6 +46,10 @@ The Machine Learning Model is only **17 kB** in size, so App size won't be affec If you don't want to use the Detection Code, you can also just download the MLModel file directly from the latest [Release](https://github.com/lovoo/NSFWDetector/releases). +## Training Data + +V2 uses data out of [NudeNet_v1](https://archive.org/details/NudeNet_classifier_dataset_v1) + ## Feedback If you recognize issues with certain kind of pictures, feel free to reach out via [Mail](mailto:michael.berg@lovoo.com) or [Twitter](https://twitter.com/LOVOOEng). From e6df3a8a9470908893ac7c70977fc3ecb4b1c55e Mon Sep 17 00:00:00 2001 From: Michael Berg Date: Tue, 23 Nov 2021 03:17:43 +0100 Subject: [PATCH 3/3] Adjust fire threshold in demo app --- Example/NSFWDetector/CameraViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Example/NSFWDetector/CameraViewController.swift b/Example/NSFWDetector/CameraViewController.swift index 7000344..e39c8cc 100644 --- a/Example/NSFWDetector/CameraViewController.swift +++ b/Example/NSFWDetector/CameraViewController.swift @@ -58,7 +58,7 @@ class CameraViewController: UIViewController, AVCaptureVideoDataOutputSampleBuff } private func didDetectNSFW(confidence: Float) { - if confidence > 0.5 { + if confidence > 0.9 { self.subsequentPositiveDetections += 1 guard self.subsequentPositiveDetections > 3 else {