diff --git a/HXPhotoPickerExample.xcodeproj/project.pbxproj b/HXPhotoPickerExample.xcodeproj/project.pbxproj index 91271283..d935eee9 100644 --- a/HXPhotoPickerExample.xcodeproj/project.pbxproj +++ b/HXPhotoPickerExample.xcodeproj/project.pbxproj @@ -66,7 +66,7 @@ D345BAFA2AE0E2C500D3A1C5 /* PhotoAlbumCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D345BAF92AE0E2C500D3A1C5 /* PhotoAlbumCollectionCell.swift */; }; D345BAFC2AE0E2D400D3A1C5 /* PhotoAlbumHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D345BAFB2AE0E2D400D3A1C5 /* PhotoAlbumHeaderView.swift */; }; D345BAFE2AE0E2E500D3A1C5 /* PhotoAlbumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D345BAFD2AE0E2E500D3A1C5 /* PhotoAlbumViewController.swift */; }; - D3513E172ADA316300A3930C /* PhotoAssetEquatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3513E162ADA316300A3930C /* PhotoAssetEquatable.swift */; }; + D3513E172ADA316300A3930C /* PhotoAsset+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3513E162ADA316300A3930C /* PhotoAsset+Equatable.swift */; }; D3591D452B8ADC5000F1AEC4 /* PhotoBrowserInteractiveTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3591D442B8ADC5000F1AEC4 /* PhotoBrowserInteractiveTransition.swift */; }; D3591D472B8AE12600F1AEC4 /* PhotoBrowserInteractiveAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3591D462B8AE12600F1AEC4 /* PhotoBrowserInteractiveAnimator.swift */; }; D35962952A3EC175009CCD94 /* SwiftPickerResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = D35962902A3EC175009CCD94 /* SwiftPickerResult.swift */; }; @@ -122,7 +122,6 @@ D360E7002A6B726400740B6B /* PhotoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36878A32A399B8C00E70910 /* PhotoError.swift */; }; D360E7012A6B726400740B6B /* IndicatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36878A42A399B8C00E70910 /* IndicatorType.swift */; }; D360E7022A6B726400740B6B /* AppearanceStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36878A52A399B8C00E70910 /* AppearanceStyle.swift */; }; - D360E7032A6B726500740B6B /* CustomLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36878A62A399B8C00E70910 /* CustomLanguage.swift */; }; D360E7042A6B726500740B6B /* PhotoPanGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36878A72A399B8C00E70910 /* PhotoPanGestureRecognizer.swift */; }; D360E7052A6B726500740B6B /* LanguageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36878A82A399B8C00E70910 /* LanguageType.swift */; }; D360E7062A6B726500740B6B /* LivePhotoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36878A92A399B8C00E70910 /* LivePhotoError.swift */; }; @@ -450,8 +449,14 @@ D36875002A399AC700E70910 /* HXPhotoPicker-Lite.podspec in Resources */ = {isa = PBXBuildFile; fileRef = D36874FF2A399AC700E70910 /* HXPhotoPicker-Lite.podspec */; }; D36879B32A399FDC00E70910 /* OCPickerExampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D36879B22A399FDC00E70910 /* OCPickerExampleViewController.m */; }; D36B1CD62ADF76030024B7E7 /* PhotoAlbumController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36B1CD52ADF76030024B7E7 /* PhotoAlbumController.swift */; }; + D36BA2CE2BB3B2DB0061E8FD /* PhotoAsset+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36BA2CD2BB3B2DB0061E8FD /* PhotoAsset+Video.swift */; }; + D36BA2D02BB3B9A60061E8FD /* EditorDrawTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36BA2CF2BB3B9A60061E8FD /* EditorDrawTool.swift */; }; + D373DADC2BB1101D0028EBD2 /* AssetSaveUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D373DADB2BB1101D0028EBD2 /* AssetSaveUtil.swift */; }; + D373DADE2BB111B00028EBD2 /* AssetPermissionsUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D373DADD2BB111B00028EBD2 /* AssetPermissionsUtil.swift */; }; + D373DAE52BB118C90028EBD2 /* PhotoAsset+Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = D373DAE42BB118C90028EBD2 /* PhotoAsset+Image.swift */; }; D3837B2E2AA4312400F4D64E /* Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3837B2D2AA4312400F4D64E /* Extension.swift */; }; D3899BAB2AE621AB0052BAC7 /* PhotoPickerPageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3899BAA2AE621AB0052BAC7 /* PhotoPickerPageViewController.swift */; }; + D38AF2022BB660560094BBF6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D38AF2012BB660560094BBF6 /* Localizable.strings */; }; D3914ABD2AF9CC0F007978F0 /* EditorChartletListProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3914ABC2AF9CC0F007978F0 /* EditorChartletListProtocol.swift */; }; D39E64202AC577E4003001EF /* PhotoFetchData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D39E641F2AC577E4003001EF /* PhotoFetchData.swift */; }; D39E64222AC577F6003001EF /* PhotoPickerData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D39E64212AC577F6003001EF /* PhotoPickerData.swift */; }; @@ -460,7 +465,6 @@ D3A1BE702AB2FE0E004D1DE6 /* PhotoPermissionPromptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A1BE6F2AB2FE0E004D1DE6 /* PhotoPermissionPromptView.swift */; }; D3ACE5962AC121BD00C84604 /* PhotoFetchAssetCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3ACE5952AC121BD00C84604 /* PhotoFetchAssetCollection.swift */; }; D3ACE59F2AC1769B00C84604 /* PhotoFetchAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3ACE59E2AC1769B00C84604 /* PhotoFetchAsset.swift */; }; - D3ACE5A12AC179B300C84604 /* AssetManager+Authorization.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3ACE5A02AC179B300C84604 /* AssetManager+Authorization.swift */; }; D3B5598E2ADCD19500B35493 /* PhotoToolBarEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3B5598D2ADCD19500B35493 /* PhotoToolBarEmptyView.swift */; }; D3B559A02ADD3B4800B35493 /* PhotoNavigationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3B5599F2ADD3B4800B35493 /* PhotoNavigationItem.swift */; }; D3B861472BA57E7600DADE92 /* EditorMaskListProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3B861462BA57E7600DADE92 /* EditorMaskListProtocol.swift */; }; @@ -479,6 +483,7 @@ D3CF9F272B2D396A00380C00 /* CameraNormalPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3CF9F262B2D396A00380C00 /* CameraNormalPreviewView.swift */; }; D3D4477C2B6F371300AF8C70 /* TextManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3D4477B2B6F371300AF8C70 /* TextManager.swift */; }; D3DFADE22B60C47A00D22290 /* AssetManager+PlayerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3DFADE12B60C47A00D22290 /* AssetManager+PlayerItem.swift */; }; + D3E6DB022BB7B18000ABEF4D /* CustomLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3E6DB012BB7B18000ABEF4D /* CustomLanguage.swift */; }; D3EF65BD2AAD653100084E87 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3CBE6452AAAD5340031802A /* ContentView.swift */; }; D3EF65BE2AAD653100084E87 /* PhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D35D3CAB2AAC0B8B004CBC30 /* PhotoView.swift */; }; D3EF65BF2AAD653100084E87 /* PhotoPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3CBE64A2AAAD5E80031802A /* PhotoPickerView.swift */; }; @@ -574,7 +579,7 @@ D345BAF92AE0E2C500D3A1C5 /* PhotoAlbumCollectionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoAlbumCollectionCell.swift; sourceTree = ""; }; D345BAFB2AE0E2D400D3A1C5 /* PhotoAlbumHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoAlbumHeaderView.swift; sourceTree = ""; }; D345BAFD2AE0E2E500D3A1C5 /* PhotoAlbumViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoAlbumViewController.swift; sourceTree = ""; }; - D3513E162ADA316300A3930C /* PhotoAssetEquatable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoAssetEquatable.swift; sourceTree = ""; }; + D3513E162ADA316300A3930C /* PhotoAsset+Equatable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Equatable.swift"; sourceTree = ""; }; D3591D442B8ADC5000F1AEC4 /* PhotoBrowserInteractiveTransition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoBrowserInteractiveTransition.swift; sourceTree = ""; }; D3591D462B8AE12600F1AEC4 /* PhotoBrowserInteractiveAnimator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoBrowserInteractiveAnimator.swift; sourceTree = ""; }; D35962892A3EBC7E009CCD94 /* SafariServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SafariServices.framework; path = System/Library/Frameworks/SafariServices.framework; sourceTree = SDKROOT; }; @@ -696,7 +701,6 @@ D36878A32A399B8C00E70910 /* PhotoError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoError.swift; sourceTree = ""; }; D36878A42A399B8C00E70910 /* IndicatorType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IndicatorType.swift; sourceTree = ""; }; D36878A52A399B8C00E70910 /* AppearanceStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearanceStyle.swift; sourceTree = ""; }; - D36878A62A399B8C00E70910 /* CustomLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomLanguage.swift; sourceTree = ""; }; D36878A72A399B8C00E70910 /* PhotoPanGestureRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoPanGestureRecognizer.swift; sourceTree = ""; }; D36878A82A399B8C00E70910 /* LanguageType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageType.swift; sourceTree = ""; }; D36878A92A399B8C00E70910 /* LivePhotoError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LivePhotoError.swift; sourceTree = ""; }; @@ -926,8 +930,14 @@ D36879B12A399FDC00E70910 /* OCPickerExampleViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OCPickerExampleViewController.h; sourceTree = ""; }; D36879B22A399FDC00E70910 /* OCPickerExampleViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OCPickerExampleViewController.m; sourceTree = ""; }; D36B1CD52ADF76030024B7E7 /* PhotoAlbumController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoAlbumController.swift; sourceTree = ""; }; + D36BA2CD2BB3B2DB0061E8FD /* PhotoAsset+Video.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Video.swift"; sourceTree = ""; }; + D36BA2CF2BB3B9A60061E8FD /* EditorDrawTool.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditorDrawTool.swift; sourceTree = ""; }; + D373DADB2BB1101D0028EBD2 /* AssetSaveUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetSaveUtil.swift; sourceTree = ""; }; + D373DADD2BB111B00028EBD2 /* AssetPermissionsUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetPermissionsUtil.swift; sourceTree = ""; }; + D373DAE42BB118C90028EBD2 /* PhotoAsset+Image.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Image.swift"; sourceTree = ""; }; D3837B2D2AA4312400F4D64E /* Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extension.swift; sourceTree = ""; }; D3899BAA2AE621AB0052BAC7 /* PhotoPickerPageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoPickerPageViewController.swift; sourceTree = ""; }; + D38AF2012BB660560094BBF6 /* Localizable.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; }; D3914ABC2AF9CC0F007978F0 /* EditorChartletListProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorChartletListProtocol.swift; sourceTree = ""; }; D39E641F2AC577E4003001EF /* PhotoFetchData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoFetchData.swift; sourceTree = ""; }; D39E64212AC577F6003001EF /* PhotoPickerData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoPickerData.swift; sourceTree = ""; }; @@ -936,7 +946,6 @@ D3A1BE6F2AB2FE0E004D1DE6 /* PhotoPermissionPromptView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoPermissionPromptView.swift; sourceTree = ""; }; D3ACE5952AC121BD00C84604 /* PhotoFetchAssetCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoFetchAssetCollection.swift; sourceTree = ""; }; D3ACE59E2AC1769B00C84604 /* PhotoFetchAsset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoFetchAsset.swift; sourceTree = ""; }; - D3ACE5A02AC179B300C84604 /* AssetManager+Authorization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AssetManager+Authorization.swift"; sourceTree = ""; }; D3B5598D2ADCD19500B35493 /* PhotoToolBarEmptyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoToolBarEmptyView.swift; sourceTree = ""; }; D3B5599F2ADD3B4800B35493 /* PhotoNavigationItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoNavigationItem.swift; sourceTree = ""; }; D3B861462BA57E7600DADE92 /* EditorMaskListProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorMaskListProtocol.swift; sourceTree = ""; }; @@ -955,6 +964,7 @@ D3CF9F262B2D396A00380C00 /* CameraNormalPreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraNormalPreviewView.swift; sourceTree = ""; }; D3D4477B2B6F371300AF8C70 /* TextManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextManager.swift; sourceTree = ""; }; D3DFADE12B60C47A00D22290 /* AssetManager+PlayerItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AssetManager+PlayerItem.swift"; sourceTree = ""; }; + D3E6DB012BB7B18000ABEF4D /* CustomLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomLanguage.swift; sourceTree = ""; }; D3F8A4462ACFAF230089735A /* AlbumSectionHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumSectionHeaderView.swift; sourceTree = ""; }; EB5A7C302146238021CB4177 /* Pods-SwiftUIExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftUIExample.debug.xcconfig"; path = "Target Support Files/Pods-SwiftUIExample/Pods-SwiftUIExample.debug.xcconfig"; sourceTree = ""; }; F2D4E82ADF83F2407972EA83 /* Pods_SwiftUIExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftUIExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1041,6 +1051,7 @@ 7B20B3A427A2A94C00375FB6 /* LaunchScreen.storyboard */, 7B20B3A827A2A94C00375FB6 /* Reachability.swift */, 7B20B3A927A2A94C00375FB6 /* AppDelegate.swift */, + D38AF2042BB678890094BBF6 /* Resources */, 7B20B3AA27A2A94C00375FB6 /* Info.plist */, ); path = Swift; @@ -1186,14 +1197,6 @@ path = PhotoList; sourceTree = ""; }; - D3513E152ADA314D00A3930C /* PhotoAsset */ = { - isa = PBXGroup; - children = ( - D3513E162ADA316300A3930C /* PhotoAssetEquatable.swift */, - ); - path = PhotoAsset; - sourceTree = ""; - }; D359628F2A3EC175009CCD94 /* SwiftPhotoPicker */ = { isa = PBXGroup; children = ( @@ -1380,7 +1383,6 @@ isa = PBXGroup; children = ( D36878972A399B8C00E70910 /* AssetManager.swift */, - D3ACE5A02AC179B300C84604 /* AssetManager+Authorization.swift */, D36878992A399B8C00E70910 /* AssetManager+Asset.swift */, D36878922A399B8C00E70910 /* AssetManager+AVAsset.swift */, D3DFADE12B60C47A00D22290 /* AssetManager+PlayerItem.swift */, @@ -1391,6 +1393,8 @@ D368788D2A399B8C00E70910 /* AssetManager+LivePhoto.swift */, D36878912A399B8C00E70910 /* AssetManager+LivePhotoURL.swift */, D368788A2A399B8C00E70910 /* AssetManager+VideoURL.swift */, + D373DADB2BB1101D0028EBD2 /* AssetSaveUtil.swift */, + D373DADD2BB111B00028EBD2 /* AssetPermissionsUtil.swift */, D368789A2A399B8C00E70910 /* PhotoManager.swift */, D36878932A399B8C00E70910 /* PhotoManager+Download.swift */, D368789B2A399B8C00E70910 /* PhotoManager+Language.swift */, @@ -1428,9 +1432,9 @@ D36878A32A399B8C00E70910 /* PhotoError.swift */, D36878A42A399B8C00E70910 /* IndicatorType.swift */, D36878A52A399B8C00E70910 /* AppearanceStyle.swift */, - D36878A62A399B8C00E70910 /* CustomLanguage.swift */, D36878A72A399B8C00E70910 /* PhotoPanGestureRecognizer.swift */, D36878A82A399B8C00E70910 /* LanguageType.swift */, + D3E6DB012BB7B18000ABEF4D /* CustomLanguage.swift */, D36878A92A399B8C00E70910 /* LivePhotoError.swift */, D36878AA2A399B8C00E70910 /* ImageContentType.swift */, D3BCE8052AE381070044CEBE /* HXLog.swift */, @@ -1540,16 +1544,8 @@ D36878EB2A399B8C00E70910 /* Model */ = { isa = PBXGroup; children = ( - D36878F72A399B8C00E70910 /* LocalAsset.swift */, - D36878ED2A399B8C00E70910 /* NetworkAsset.swift */, - D36878F82A399B8C00E70910 /* PhotoAsset.swift */, - D36878F52A399B8C00E70910 /* PhotoAsset+Codable.swift */, - D36878F32A399B8C00E70910 /* PhotoAsset+Editor.swift */, - D36878F12A399B8C00E70910 /* PhotoAsset+FileSize.swift */, - D36878EC2A399B8C00E70910 /* PhotoAsset+Local.swift */, - D36878F02A399B8C00E70910 /* PhotoAsset+Network.swift */, - D36878F92A399B8C00E70910 /* PhotoAsset+Request.swift */, - D36878F42A399B8C00E70910 /* PhotoAsset+URL.swift */, + D373DAE22BB117AE0028EBD2 /* LocalAsset */, + D373DAE12BB117A30028EBD2 /* PhotoAsset */, D36878EE2A399B8C00E70910 /* PhotoAssetCollection.swift */, D36878EF2A399B8C00E70910 /* PickerManager.swift */, D36878F22A399B8C00E70910 /* PickerTypes.swift */, @@ -1703,6 +1699,7 @@ D36879442A399B8C00E70910 /* Util */ = { isa = PBXGroup; children = ( + D36BA2CF2BB3B9A60061E8FD /* EditorDrawTool.swift */, D36879452A399B8C00E70910 /* EditorView+PhotoTools.swift */, D36879462A399B8C00E70910 /* EditorVideoTool.swift */, ); @@ -1872,6 +1869,33 @@ path = View; sourceTree = ""; }; + D373DAE12BB117A30028EBD2 /* PhotoAsset */ = { + isa = PBXGroup; + children = ( + D36878F82A399B8C00E70910 /* PhotoAsset.swift */, + D3513E162ADA316300A3930C /* PhotoAsset+Equatable.swift */, + D36878F52A399B8C00E70910 /* PhotoAsset+Codable.swift */, + D373DAE42BB118C90028EBD2 /* PhotoAsset+Image.swift */, + D36BA2CD2BB3B2DB0061E8FD /* PhotoAsset+Video.swift */, + D36878F32A399B8C00E70910 /* PhotoAsset+Editor.swift */, + D36878F12A399B8C00E70910 /* PhotoAsset+FileSize.swift */, + D36878EC2A399B8C00E70910 /* PhotoAsset+Local.swift */, + D36878F02A399B8C00E70910 /* PhotoAsset+Network.swift */, + D36878F92A399B8C00E70910 /* PhotoAsset+Request.swift */, + D36878F42A399B8C00E70910 /* PhotoAsset+URL.swift */, + ); + path = PhotoAsset; + sourceTree = ""; + }; + D373DAE22BB117AE0028EBD2 /* LocalAsset */ = { + isa = PBXGroup; + children = ( + D36878F72A399B8C00E70910 /* LocalAsset.swift */, + D36878ED2A399B8C00E70910 /* NetworkAsset.swift */, + ); + path = LocalAsset; + sourceTree = ""; + }; D380901D2ABE86B600D806E3 /* Brush */ = { isa = PBXGroup; children = ( @@ -1946,6 +1970,22 @@ path = Chartlet; sourceTree = ""; }; + D38AF2032BB677770094BBF6 /* custom.lproj */ = { + isa = PBXGroup; + children = ( + D38AF2012BB660560094BBF6 /* Localizable.strings */, + ); + path = custom.lproj; + sourceTree = ""; + }; + D38AF2042BB678890094BBF6 /* Resources */ = { + isa = PBXGroup; + children = ( + D38AF2032BB677770094BBF6 /* custom.lproj */, + ); + path = Resources; + sourceTree = ""; + }; D3914ABB2AF9CBCE007978F0 /* Protocol */ = { isa = PBXGroup; children = ( @@ -2079,7 +2119,6 @@ D3050B5A2B89884600F7FD5D /* Transition */, D3ACE5942AC121A400C84604 /* Fetch */, D3ACE5932AC11E2200C84604 /* UI */, - D3513E152ADA314D00A3930C /* PhotoAsset */, ); path = Protocol; sourceTree = ""; @@ -2290,6 +2329,7 @@ D36874C02A39744300E70910 /* 世间美好与你环环相扣 in Resources */, D368746A2A39744300E70910 /* hx_sticker_yuanqishaonv.png in Resources */, D30ED4372A3C55B10074525C /* c81.mp4 in Resources */, + D38AF2022BB660560094BBF6 /* Localizable.strings in Resources */, D36874FD2A39760500E70910 /* RELEASE_NOTE_CN.md in Resources */, D36874782A39744300E70910 /* stars.png in Resources */, D368747E2A39744300E70910 /* hx_sticker_haoxinqing.png in Resources */, @@ -2486,7 +2526,7 @@ D360E7012A6B726400740B6B /* IndicatorType.swift in Sources */, D360E7022A6B726400740B6B /* AppearanceStyle.swift in Sources */, D367E4932AE4B36C00C225D1 /* PhotoControllerEvent.swift in Sources */, - D360E7032A6B726500740B6B /* CustomLanguage.swift in Sources */, + D373DADE2BB111B00028EBD2 /* AssetPermissionsUtil.swift in Sources */, D360E7042A6B726500740B6B /* PhotoPanGestureRecognizer.swift in Sources */, D360E7052A6B726500740B6B /* LanguageType.swift in Sources */, D360E7062A6B726500740B6B /* LivePhotoError.swift in Sources */, @@ -2541,6 +2581,7 @@ D360E72D2A6B726500740B6B /* Core+String.swift in Sources */, D360E72E2A6B726500740B6B /* Core+URL.swift in Sources */, D30516F82AD8EF910005DAF9 /* PhotoPickerListConfig.swift in Sources */, + D373DAE52BB118C90028EBD2 /* PhotoAsset+Image.swift in Sources */, D360E72F2A6B726500740B6B /* Core+PHAssetCollection.swift in Sources */, D32647C12AD63CEE00AD6E79 /* PhotoPickerControllerFectch.swift in Sources */, D3591D452B8ADC5000F1AEC4 /* PhotoBrowserInteractiveTransition.swift in Sources */, @@ -2589,6 +2630,7 @@ D360E7502A6B726500740B6B /* PhotoPickerViewController+Camera.swift in Sources */, D360E7512A6B726500740B6B /* PhotoPickerViewController+PhotoList.swift in Sources */, D360E7532A6B726500740B6B /* PhotoPickerViewController+Editor.swift in Sources */, + D3E6DB022BB7B18000ABEF4D /* CustomLanguage.swift in Sources */, D360E7542A6B726500740B6B /* PhotoPickerViewController+FetchAsset.swift in Sources */, D360E7552A6B726500740B6B /* PhotoPickerViewController+Preview.swift in Sources */, D360E7572A6B726500740B6B /* PhotoPickerFilterViewController.swift in Sources */, @@ -2605,7 +2647,6 @@ D360E7602A6B726500740B6B /* TickView.swift in Sources */, D360E7612A6B726500740B6B /* AlbumTitleView.swift in Sources */, D360E7632A6B726500740B6B /* ArrowView.swift in Sources */, - D3ACE5A12AC179B300C84604 /* AssetManager+Authorization.swift in Sources */, D3418DC22AA6D48D005EB5FF /* PlayButton.swift in Sources */, D39E64242AC57AB2003001EF /* Picker+ConfigExtension.swift in Sources */, D360E7642A6B726500740B6B /* CaptureVideoPreviewView.swift in Sources */, @@ -2621,6 +2662,7 @@ D360E76E2A6B726500740B6B /* PhotoPickerView+CollectionView.swift in Sources */, D360E76F2A6B726500740B6B /* PhotoPickerView+Editor.swift in Sources */, D360E7702A6B726500740B6B /* PhotoPickerView+Function.swift in Sources */, + D36BA2D02BB3B9A60061E8FD /* EditorDrawTool.swift in Sources */, D360E7712A6B726500740B6B /* PhotoPickerView+Preview.swift in Sources */, D360E7722A6B726500740B6B /* PhotoPickerViewProtocol.swift in Sources */, D360E7732A6B726500740B6B /* PhotoPreviewContentViewProtocol.swift in Sources */, @@ -2628,7 +2670,7 @@ D360E7752A6B726500740B6B /* PhotoPreviewVideoView.swift in Sources */, D367E49B2AE4B3CE00C225D1 /* PhotoPickerFilterItemView.swift in Sources */, D360E93F2A6BBC5700740B6B /* EditorViewController+Action.swift in Sources */, - D3513E172ADA316300A3930C /* PhotoAssetEquatable.swift in Sources */, + D3513E172ADA316300A3930C /* PhotoAsset+Equatable.swift in Sources */, D360E7762A6B726500740B6B /* PhotoThumbnailView.swift in Sources */, D360E7772A6B726500740B6B /* AlbumViewCell.swift in Sources */, D360E7782A6B726500740B6B /* PhotoLoadingView.swift in Sources */, @@ -2824,7 +2866,9 @@ D360E80D2A6B726600740B6B /* CameraBottomView.swift in Sources */, D360E80E2A6B726600740B6B /* PassThrough.metal in Sources */, D360E80F2A6B726600740B6B /* CameraFilter.swift in Sources */, + D36BA2CE2BB3B2DB0061E8FD /* PhotoAsset+Video.swift in Sources */, D360E8102A6B726600740B6B /* CameraRenderer.swift in Sources */, + D373DADC2BB1101D0028EBD2 /* AssetSaveUtil.swift in Sources */, D360E8112A6B726600740B6B /* DeviceOrientationHelper.swift in Sources */, D367E4952AE4B37900C225D1 /* PhotoPickerDataStatus.swift in Sources */, D360E8122A6B726600740B6B /* Camera+PhotoTools.swift in Sources */, @@ -3035,7 +3079,7 @@ "-Wl", ); OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xfrontend -debug-time-function-bodies"; - PRODUCT_BUNDLE_IDENTIFIER = com.silence.example25; + PRODUCT_BUNDLE_IDENTIFIER = com.silence.example26; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -3098,7 +3142,7 @@ "-Wl", ); OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xfrontend -debug-time-function-bodies"; - PRODUCT_BUNDLE_IDENTIFIER = com.silence.example25; + PRODUCT_BUNDLE_IDENTIFIER = com.silence.example26; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 5b663c0d..6624a405 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,937 +7,943 @@ objects = { /* Begin PBXBuildFile section */ - 010A29B4D17C7E14662A42F20EB848CB /* ImageContentType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0966BDD375CC4BD78589C54C551E9BD0 /* ImageContentType.swift */; }; - 0122BB913C905E41ECA77277BD847EB1 /* AlbumTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E6873C3D97B7BD15CF63F38DFE22DD /* AlbumTitleView.swift */; }; - 020C5F858436B8EDD0AC49AAF3B98E80 /* EditorBrushColorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A49A7254E2CCD294308D8AF370E26D /* EditorBrushColorView.swift */; }; - 024E45FE6517AE51AAEDC3FB9631B138 /* PhotoPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 290F53E8FC0DC51D8BB840D242460BFF /* PhotoPickerViewController.swift */; }; - 02A5E8E57B02D1BD42AA8FA7D50B0A87 /* PickerDebugLogsConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0241BE4105B52797D209EF32EEFC010E /* PickerDebugLogsConfig.swift */; }; - 033D0F72DD3CCBF5D9EB310673807ECF /* Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF9BC1B5D0E9D6745A8C2D402E0927FE /* Delegate.swift */; }; - 0376FE553B8A49782599E496D186AE74 /* PhotoAsset+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E632D174EB96C3F09F5057E9A6CD90D2 /* PhotoAsset+Editor.swift */; }; - 03A79C940A800552D4301C20A2D4FF14 /* TickView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8F885D82E80DD755674E85615BBE5E3 /* TickView.swift */; }; - 03B6BE0501F432F2D3D3E0C110E87609 /* PhotoFetchData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AD1CB59A73E6328FAABA9B65436AC68 /* PhotoFetchData.swift */; }; - 05DD9E56A412A40818A7C4713ABDE413 /* PhotoPickerView+Asset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4696E2B817237BBA8AE1BA22C0833DFE /* PhotoPickerView+Asset.swift */; }; - 0609D2613AC68FBF5B4831E9B721BA48 /* SessionDataTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0940FE5A90B190B7FC193AB0F78BB0A /* SessionDataTask.swift */; }; - 061E310B2B822963EEECB7CFEE559CB1 /* AlbumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EC0C1FA352EDA1DC563D67293FE792A /* AlbumViewController.swift */; }; - 06E36BA729B8310FCCFEBBD8E83ED7B8 /* EditorViewController+Mosaic.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1E6A2FE0388850ED78E6E61587E8E79 /* EditorViewController+Mosaic.swift */; }; - 07EB462226DDE9FEFC4812EFF46DDCED /* Core+NSObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034C1220E20241B77892C942C3B9F4B1 /* Core+NSObject.swift */; }; - 097932A8D665CD630360775911FAADCE /* PhotoPickerController+PickerData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1516137DFF605D6BF5FF57E936BE016B /* PhotoPickerController+PickerData.swift */; }; - 0B270FB76A8AD5B8F6F89C6E647F31B8 /* PhotoAsset+Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF98AE8287F1E4C8D26C4B6F5CDA94A6 /* PhotoAsset+Codable.swift */; }; - 0C6BF69F60D52F313BB62A385EFA350B /* IndicatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77804D51DDDCF767F86B7CA7D918EC00 /* IndicatorType.swift */; }; + 006196A58BEF8117BF4901F590292AA2 /* VideoEditedResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5B149D5CE84624B82AB1C127826FE69 /* VideoEditedResult.swift */; }; + 009A48C586A867D825766D33CFF1506D /* EditorAdjusterView+ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2FE59275CA1440D6FF3429B73E88B42 /* EditorAdjusterView+ContentView.swift */; }; + 0112F591E9D3555E8EE826C588D3A7BF /* PhotoPreviewContentViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADD600C29998E868F14D555CBE2E520A /* PhotoPreviewContentViewProtocol.swift */; }; + 01C9676E692F929FE44D9175BE661398 /* EditorStickerTextViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70BE86252F6EC092EE5C145B0182E6DE /* EditorStickerTextViewController.swift */; }; + 026A287E594D2518A5D7E43C01F9E7F5 /* EditorMusicViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625FCF863B554E94F9519FDAD91E0269 /* EditorMusicViewCell.swift */; }; + 029915B6755F0878994D16B204D60698 /* UIButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFCF9A6DD6053503818A700B70487F4 /* UIButton+Kingfisher.swift */; }; + 02B6479EFD5D82C317C9406E71AEABE6 /* EditorViewController+Brush.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BD993C5753F648F768C6B193572D4C /* EditorViewController+Brush.swift */; }; + 03840F1F8B72C126B73E3911DDD1E9CA /* AssetManager+Asset.swift in Sources */ = {isa = PBXBuildFile; fileRef = B42EE2028C8E68D39D642B3119FD4A8F /* AssetManager+Asset.swift */; }; + 0518FE496ACAEA96A436C631B710153E /* AssetManager+VideoURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4FB42308E9D44B8EE23862BFEF40CD8 /* AssetManager+VideoURL.swift */; }; + 052BC27BB963B760938A1AC7105E27A1 /* ProgressCricleJoinView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7F6B4F6B3F9C14E0F634911922C65CB /* ProgressCricleJoinView.swift */; }; + 05E15B6FE9915FCA292F5A457FAF60F7 /* CameraResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06777562807A9179FFD1E3A84B06315F /* CameraResultViewController.swift */; }; + 060950BD66228C11162BC744CE993B77 /* EditorView+Public.swift in Sources */ = {isa = PBXBuildFile; fileRef = C807D01E4D5C4797948E98EAA5114D23 /* EditorView+Public.swift */; }; + 070050A21713158C994F6D6A62D8C1C2 /* CameraConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219223F37952F11D9AD77827607DB35 /* CameraConfiguration.swift */; }; + 07E860B9E7CD7D1901470C4B09E1E923 /* Runtime.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE897DB5466680E2D8ABC3A48F000A9B /* Runtime.swift */; }; + 083C98087B42490F5EA794011277D3BC /* PreviewLivePhotoViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 719CB988B28E2394600F644A3D9F2876 /* PreviewLivePhotoViewCell.swift */; }; + 085399DB9D7BC8D4AF2B4CAD51C4ACB4 /* EditorChartletViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98796AFEB9EA10C9EE126D4E2DB2483B /* EditorChartletViewCell.swift */; }; + 08F3EC38FF61A0093B5C6ABFE5253604 /* PickerInteractiveTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE533995C47E5A3D387994F8125D9520 /* PickerInteractiveTransition.swift */; }; + 097838C3FB66AC67E6383E813A9BC9D7 /* PhotoPickerPageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75DC5B55D491F57C01E8696D2980877E /* PhotoPickerPageViewController.swift */; }; + 0A87FEC3252C2D413B232445AA580474 /* PhotoPickerControllerInteractiveTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D953DF14408C770684F02A986FE7447 /* PhotoPickerControllerInteractiveTransition.swift */; }; + 0AD9E05BC0230C48C31D2185A81BB81F /* PhotoAsset+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2159E08188513A416B86875E9B8AD56B /* PhotoAsset+Video.swift */; }; + 0AFBBCB1283659C9051A318541D5FDEB /* PhotoAsset+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3B0A269952077806641AD81AB296780 /* PhotoAsset+Editor.swift */; }; + 0B1944A4EDDEC040846013C590963722 /* HXPhotoPicker-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 58C46ED39CD4FF73D195FD90B48FC96C /* HXPhotoPicker-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0C2A7F863FD258538450C6794305D612 /* PhotoLoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AF4FAB284CB01E5FC8595544A17B37 /* PhotoLoadingView.swift */; }; + 0C50401241450858CF2B86FCEDA0C991 /* PhotoThumbnailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DF85A40A6D504D8573EB167A0DA215D /* PhotoThumbnailView.swift */; }; 0C76CB35AF1ACC409AF0A70F8771CDFF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E5D00FFA46E2AB9AF4F035C31DC21D /* Foundation.framework */; }; - 0D315206E3F9AC9B57C5A5B5E8C48C92 /* EditorAdjusterView+ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2FE59275CA1440D6FF3429B73E88B42 /* EditorAdjusterView+ContentView.swift */; }; - 0E1677C67A53BABCF93872B854DF1516 /* PhotoPickerFinishItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005069C25CEFB0C555CBDC75E0EA7417 /* PhotoPickerFinishItemView.swift */; }; - 0EDA7BB04765D6D8E54292663CEE4EF3 /* PhotoLoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4C6102C31F03764687FFA5EA978BE87 /* PhotoLoadingView.swift */; }; - 0EF23821F3E61C001D50D0F7522BD8DA /* PhotoPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99592B83F4165D3F7304BCABB4CF2434 /* PhotoPickerView.swift */; }; - 0F3DE6D1B9BC6EEE33AF403E7326E372 /* Kingfisher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DCA4DC1F4A7270C57EF6B3CE1D43B5B /* Kingfisher-dummy.m */; }; - 0FA02190BA7B81D2A46789B94B50F9B1 /* PickerBottomViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22DED0E9449185293F3DBAE799DF5894 /* PickerBottomViewConfiguration.swift */; }; - 10015A2E596CDFB0D7AB586A7ECE8C26 /* PhotoPickerListAssets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1854C1C53173E3F65CB5F4415AA89681 /* PhotoPickerListAssets.swift */; }; - 1028C143269CB7DB793D5230227E79D1 /* PhotoPickerControllerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B87484E48357B1A3C42162EC04F2EFA7 /* PhotoPickerControllerProtocol.swift */; }; - 102A8FCF0008F57AB72586A8FFFF9313 /* EditorAdjusterView+Edit.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1C7108DB1A25C7A6E8B80BFA5F808D8 /* EditorAdjusterView+Edit.swift */; }; - 1131CF6D2C9A49E88D1B8B1D3DD9E43E /* EditorViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C13C61A955CFED2FB963DC55C0B83E9 /* EditorViewControllerDelegate.swift */; }; - 11582753C3E9D6C09C80C5B1DAD264C2 /* PreviewLivePhotoViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06114F087100B9550BF5BA2AA0D60AB5 /* PreviewLivePhotoViewCell.swift */; }; - 12370C8A46151DE856FB3BCDF7F91C74 /* MemoryStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8F143F1D83379BDB9363E3B216AEF73 /* MemoryStorage.swift */; }; - 13D1D3F16488E8A4D26BBFFDC755C7EA /* KFImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB36255D6E904725FBD19ED8D84D9C39 /* KFImage.swift */; }; - 13ED88D25CAAAC1715E6FF3EDE8DA76A /* PhotoAlbumControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCFAC7BC850FC8D6191D48735071A581 /* PhotoAlbumControllerConfiguration.swift */; }; - 15037B67E3D417D320C6C363868D9EB9 /* NSButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F8ACDFC1B2CFF07FB9D800D506D54F /* NSButton+Kingfisher.swift */; }; - 151DE6EE58D626B502D2AC0382C0C639 /* EditorViewController+Filters.swift in Sources */ = {isa = PBXBuildFile; fileRef = C513D837C84FDB4628C399E9DF3E40A0 /* EditorViewController+Filters.swift */; }; - 152BA70B3CE01D281837847C84EA7146 /* PhotoAsset+URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE3691329BDD686CBF74A2E4B9CF3122 /* PhotoAsset+URL.swift */; }; - 17B473C651B23D71EA43942FBFEFFE28 /* PhotoPreviewViewController+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ED3A5F732E256A8A3B14EF83CDEB3D8 /* PhotoPreviewViewController+Toolbar.swift */; }; - 17F5046E85D1D9916846BB55B37FFC31 /* PhotoAlbumHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C2E06067675A1E00855F10705105718 /* PhotoAlbumHeaderView.swift */; }; - 191DACADF2F08EA6512DA9E70A105092 /* EditorStickersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF49B4FE9CDCDF7E3A5EF130E081BF8 /* EditorStickersView.swift */; }; - 1A5E4AD22842F71D7A94451666BBAFA8 /* AssetManager+AVAssetExportSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BD7DB8DA37E8B3C0D15FC22FA5809E7 /* AssetManager+AVAssetExportSession.swift */; }; - 1A7CE78AE8E4B4B832000B93400ECB28 /* Kingfisher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A1BBADC0C31E0AF487F1F11B235A95EB /* Kingfisher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A8E1D2F3ECC4DE3F610673AB1D78555 /* ImageFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D3D8B77F20F80031C92EA09692AFD5 /* ImageFormat.swift */; }; - 1BBA98E1D45DCA348F36FAE603BD5B58 /* PhotoPickerFilterItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FA74269CEF587DB6F50406F8953EEB3 /* PhotoPickerFilterItemView.swift */; }; - 1CAC2F9617560E78B31B69375BF0CC90 /* CameraBottomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA8857EEDA392D7E41A2D8A6090CCF3C /* CameraBottomView.swift */; }; - 1CEE752007144EA10EF4AC93F1556E7C /* EditorStickersContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EF03C925642347FB4C179BE7900732E /* EditorStickersContentView.swift */; }; - 1D2E8AF1C67D6A8143E131F433737709 /* EditorViewController+Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4692EE5D2DF60B82DCD2D183BFFD96C4 /* EditorViewController+Text.swift */; }; - 1D3EF47785E7A8CD913180D797F8ED59 /* EditorStickersItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7287C5273626CF6F80DE6E2CEDE3ECC /* EditorStickersItemView.swift */; }; - 1D8862CF3CBF2100B01870BF75F30717 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82C3A2B02B052420C4B08BB62A7AD32C /* Accelerate.framework */; }; - 1D89F8F2B292938BC261325C6671BA34 /* Indicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8B8776F93E0E8965FBD080CDE9DF3A1 /* Indicator.swift */; }; - 1DD8AD00AA28C52FC1491E1CFCC62195 /* CameraPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A2D388B59FB4C57AB700DAE43A642D5 /* CameraPreviewView.swift */; }; - 1F3F6BA7656A96A8F936B060A5AA0776 /* KF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CAB437FB57A98B3A8FF5DA65B3CF226 /* KF.swift */; }; - 202984D42674653BC57B3D4EF3A3D2E0 /* PhotoPickerListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E58ECC38D21329F07A0456B7F3440C3 /* PhotoPickerListViewController.swift */; }; - 214F18993611F9B7396FD3666FB4907F /* PhotoPickerSelectableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8FB43B03F56E19BF3AA36828B2075FA /* PhotoPickerSelectableViewCell.swift */; }; - 216C4B6FC5C53324E884DBF75F2595EC /* PhotoAlbumCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30724C165AEB236F8DAE6E982BADF966 /* PhotoAlbumCollectionCell.swift */; }; - 217EFDE96E5A70DEA00ACDFB9C849528 /* PhotoPickerNavigationTitle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1609F7AA39259586CC8D5EDB4A9D4A39 /* PhotoPickerNavigationTitle.swift */; }; - 225AB57928945746C3F1972F2D3ED5DD /* LanguageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 085B2C27BF5697930115474536DC77C1 /* LanguageType.swift */; }; - 2275682917BB96771613437F57F6C996 /* PhotoBrowserAnimationTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 432662E79488B138F862A0A9F77E988F /* PhotoBrowserAnimationTransitioning.swift */; }; - 24B41FCB0A5B5D548F689FE398FE8009 /* CameraFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451731B59459AFC7CAB02E8CFBACC91B /* CameraFilter.swift */; }; - 24EE9677B61462A816602E8197892544 /* NotAuthorizedConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5780C4803690A4A60C9FA01FC26F3C17 /* NotAuthorizedConfiguration.swift */; }; - 25BFC69C7DD8B3C00BBF4D60AE3E648F /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57DBA903C8B91871A1B4432F452266FD /* SessionDelegate.swift */; }; - 27B43682030EEC7CA7DAA6A55E440F06 /* EditorMusicView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57ED27CF32BDEB6C7E6357BDAE47ABE /* EditorMusicView.swift */; }; - 284821F20E7CF56BA8296879958B9098 /* PhotoPreviewViewController+NavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55DA2CF10ECE623504A9F5F855D5C39 /* PhotoPreviewViewController+NavigationController.swift */; }; - 289213F933EE9D892B0331BE800FEE32 /* CustomLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BB5F0CEB8EDB5D8030956AA02907F2 /* CustomLanguage.swift */; }; - 28ABDDD1A32BC96F3E5C3C7405882463 /* PhotoToolBarEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD7216D7ED266024EA5AD64F3C15895B /* PhotoToolBarEmptyView.swift */; }; - 2908EF13FFFA0252E914098B62C469DC /* ImageBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DA76E48675E34635A770C316E9FEB84 /* ImageBinder.swift */; }; - 2914C4AB28C652F1EAE6516FE2C776BC /* CameraViewController+Preview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F5F9DC98854EECD77CE1AF1785989E4 /* CameraViewController+Preview.swift */; }; - 29238CABFFBA1B87F5D65141D05AC6C0 /* CameraViewController+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76065164082017F9B18A14AFF19F3695 /* CameraViewController+Editor.swift */; }; - 294F2B8C632EFDABABF201D9AA04B04A /* PickerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5658A6FB93F3AC46D187FFF13217C20A /* PickerConfiguration.swift */; }; - 2A288C9672207EE6C2ED48A750149F82 /* ImageProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F66FA3D7214C5808A9F039510AA71F67 /* ImageProcessor.swift */; }; - 2A5EE6AAE262C010A480DC5C8250A558 /* HXBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7421B0C26F61DFDCA5DC91635EC530AD /* HXBaseViewController.swift */; }; - 2AAB8B9C0D356557446BF8C83610F9AF /* EditorMaskListProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02AA6CFB5383939780C8FC103ED3A0B2 /* EditorMaskListProtocol.swift */; }; - 2AEA2B5CADAAA5023714220D39B6869E /* EditorMusicLyricViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC576D61FF2CC406429A76381944F970 /* EditorMusicLyricViewCell.swift */; }; - 2C59834A554AC8F88FB0ABD3E4CC2438 /* Core+String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E0EC071D910E73172E2D65888E6A26B /* Core+String.swift */; }; - 2C74633F78F6AE8E27EE344B904A3241 /* ImageEditedResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = D77668AB99BA197EB843224D64ABE774 /* ImageEditedResult.swift */; }; - 2CA881A7CBCD6F98AC0E22A617EF74FF /* Core+UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F310A341E28B55E87401E0149BCD8BD /* Core+UIFont.swift */; }; - 2CB40C311BE1A578EB62B9A1FFD9DA00 /* EditorAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3F99ADD415612CABF7348002AAEC47 /* EditorAsset.swift */; }; - 2D033E8C20FEA87022ABE9BC32A2367B /* PhotoPreviewSelectedViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A54FBECEE40047D6386ACA090A7596A /* PhotoPreviewSelectedViewCell.swift */; }; - 2D4B6260D2C86C4795FA7F2C9AFCE509 /* PhotoManager+Language.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFAD4A1FAC95C70727B2CB3A48BD265D /* PhotoManager+Language.swift */; }; - 2E6081BBF2FFECFC043F643ADAD03478 /* Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68005D13E0D1CECCFFB74EB0A945344A /* Kingfisher.swift */; }; - 2FB754109EEBA6BD827F6BB2D3781800 /* Picker+PhotoAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EFFC84DF00D03AF4D6FC4C2D5CB2443 /* Picker+PhotoAsset.swift */; }; - 301B8C269F9D7882B628A556461C9D06 /* HXPhotoPicker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3206E34EFB98B2477F97FE05F868669A /* HXPhotoPicker-dummy.m */; }; - 30EDA8248DB3099DDE8199F820BF2C1D /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C48F100FDE22BFB15051865715725B4 /* Box.swift */; }; - 317E4723182650029BE89207F8D49618 /* EditorViewController+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0EAC6FE9D7CD08A104EA00131DC5C6 /* EditorViewController+Action.swift */; }; - 3266E8A277642DFBE8D70B52C58C771E /* GraphicsContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD354DCD1C586F20F448E288A34727AD /* GraphicsContext.swift */; }; - 33104B5253D70F0D4EF29B03D62F9826 /* ImageDownloaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66F00E5F3BA70304E1B24F1099FC1CDD /* ImageDownloaderDelegate.swift */; }; - 334E4BE9AC94F554336B88DA95641CF4 /* DeniedAuthorizationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48E2487B094F3FA9ED0B94FB2A05255C /* DeniedAuthorizationView.swift */; }; + 0C7AA8C548ECC8CA6BAE27C79B10DD4C /* PhotoTools+Camera.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA4E270EC397082B19888F3BE7F7D32B /* PhotoTools+Camera.swift */; }; + 0CB0660B9DACD19C58D73D968A625FE9 /* PhotoAlbumCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0711D9D7B135943A7B31BFF011C98956 /* PhotoAlbumCollectionCell.swift */; }; + 0CCA5997040AD216139D1B55076A3EB3 /* AlbumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D21091D254DD9E1D20D4E39059A27B4B /* AlbumViewController.swift */; }; + 0DFE1E7D77DD0198F7AAF2A39A3313EB /* PhotoPickerList.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A42AF7D5BB09B1ECF39D0C83AF2729 /* PhotoPickerList.swift */; }; + 0E42D1D78C5D1F34D7E8A1039D129F98 /* EditorMaskListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 108536C153913F3E95D736A086F5B28E /* EditorMaskListViewController.swift */; }; + 0E5F5373622DA41BF89041026761FA37 /* Core+UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C8D29DD91FC39B17393D64AA4E5475 /* Core+UIViewController.swift */; }; + 0EB3BB42A4C079AA32BF94723EE287B2 /* ProgressIndefiniteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B772A00FD2C5AE1BA4CBB6219B8D616 /* ProgressIndefiniteView.swift */; }; + 0ECF29ABD26F8FA4F8F641770628DFF7 /* CameraBottomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA8857EEDA392D7E41A2D8A6090CCF3C /* CameraBottomView.swift */; }; + 0F73DA51D2EDCFC40B8A35A036FB5048 /* PhotoAlbumList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30B8DBB1C5ED8CE4941277FB5D6EFE53 /* PhotoAlbumList.swift */; }; + 0F988A141257840541D6651792B33EF0 /* EditorStickersItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7287C5273626CF6F80DE6E2CEDE3ECC /* EditorStickersItemView.swift */; }; + 0FAE47C3580048AF9B0290913AC0A4A4 /* EditorMaskListViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3F319F3A918E44A3477B9F8A5ED425A /* EditorMaskListViewCell.swift */; }; + 1081965E76DA552D412B14EBA7E9F5CA /* EditorChartlet.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEF3E940F42B2190326EF87F0F710AAF /* EditorChartlet.swift */; }; + 11B64A48CA67190E1827168A60C2EE3E /* EmptyViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30BE89D805E0519FF4CCF90F32C9CF6E /* EmptyViewConfiguration.swift */; }; + 11DEDD3EDF89023F10C43B6300C1797C /* ImageDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25339E87A238E9701EB7639CB812F021 /* ImageDownloader.swift */; }; + 1219D4CE1FA1F21798F2C6B58D10131E /* Core+UIDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753CE6562EF1AD97F107E8ED424FEAD8 /* Core+UIDevice.swift */; }; + 12771DB94B80865753375FFDC7CB52C1 /* AssetManager+LivePhotoURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A8DE631BF5A1040335EB2D5C42A3A78 /* AssetManager+LivePhotoURL.swift */; }; + 12B584CFB087DB87A6F0B89741452782 /* PhotoPreviewListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8657E411275937B2E988E7DDD25631B /* PhotoPreviewListView.swift */; }; + 131C4351A507F8554BCFD667E8B1D942 /* EditorViewController+VideoControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91F7862329536E20C9E813E5B26FADFB /* EditorViewController+VideoControl.swift */; }; + 132D0201EBAF44DF9AAC444DB3B589CB /* PhotoPickerControllerAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15DD5F8E79714247FB1F1F5EED8166D5 /* PhotoPickerControllerAnimator.swift */; }; + 1379F930A147D4A4CFDD463CCC0291E8 /* PickerResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF000CAEBDA04F49DB547C49CE7E9357 /* PickerResult.swift */; }; + 13D3C9450091C0727EE5467C762EE36C /* EditorStickersContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EF03C925642347FB4C179BE7900732E /* EditorStickersContentView.swift */; }; + 13DEFDC3EC33E5169893AA67C9A0AF37 /* TVMonogramView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C164151F1DD34151134DD11A5DEE119F /* TVMonogramView+Kingfisher.swift */; }; + 154042352B2AABD60B001E2DD9D656E6 /* PhotoPickerController+Transitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D24BC598AC68446A23A685362B4771 /* PhotoPickerController+Transitioning.swift */; }; + 156C3415816349C400FE0FA43764D3EE /* PhotoPickerLimitCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26EFB4319C95DC0DFE017A090616877D /* PhotoPickerLimitCell.swift */; }; + 15CDF483B0A2075DEE3E1A1DD5BBC17F /* AlbumListConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76B7D8C69B470C235C92617FD810DE27 /* AlbumListConfiguration.swift */; }; + 172C461F334FDD26373D9960F4F56FDD /* PhotoToolBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FEF6522B70603FE48B5C0EA49A7EE0C /* PhotoToolBarView.swift */; }; + 193714CC927C7D9C81917B38AE104429 /* PhotoPickerViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0824C5C8A788B4B9ED82C4EEE79CF945 /* PhotoPickerViewCell.swift */; }; + 1948C12F371AB1F1D8F78CED136229B6 /* PhotoTools+Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 916A15C9469C7807F0DD6E4E1B38EC21 /* PhotoTools+Alert.swift */; }; + 19E46B34CAB85250FAD4DE4CB91D6E68 /* CaptureVideoPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BD7239DE37E0E637C48427825E6DA26 /* CaptureVideoPreviewView.swift */; }; + 1AB1B64282A3B34C193AFA8521AD3B79 /* PhotoPermissionPromptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00053595473C457C7F01F8662132BE4D /* PhotoPermissionPromptView.swift */; }; + 1AE7E772063C954862A492EBEA642638 /* EditorView+GestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E083E391C07B17FD4C41EA3298E12D3 /* EditorView+GestureRecognizer.swift */; }; + 1B0AB3911A9B65785AE4DA3137A8AF09 /* PickerTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = A97180EBDB8840F571744FC0090DC5AE /* PickerTransition.swift */; }; + 1BC1F5EF2E468EB32F87E7A32455843A /* Core+UIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C16ED134A66F5AD3EE12FD02F68CF46F /* Core+UIImageView.swift */; }; + 1BC84F66B275DB542178691161E1CD73 /* Core+UICollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D9302DCBD76A65E81A04690D8985175 /* Core+UICollectionView.swift */; }; + 1C106312971E898364584E4D9CCA07B5 /* EditorViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96848D44BCC2DEB5F35CBA4BB1FCFBBB /* EditorViewProtocol.swift */; }; + 1C77862B5B717B241DE707B07502939B /* RedirectHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F05924C6C570D89A7EF40CC75FC4482 /* RedirectHandler.swift */; }; + 1CBF2555B3B20A75A1D076F53E5B5777 /* ImageProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F66FA3D7214C5808A9F039510AA71F67 /* ImageProcessor.swift */; }; + 1CC979E7BFE3468F93BC657C14161E79 /* EditorViewController+Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = 565F3C8A13E42F29DD911B1DC7C131A4 /* EditorViewController+Await.swift */; }; + 1CE0DDE8193DBB0A2440C14E44F8D8C7 /* LanguageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = A67FE3B51C7883A9055F43E25099AEA5 /* LanguageType.swift */; }; + 1D4DEAA9715B89BC22D3CC33954EC2D6 /* PhotoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6B37DB48E314A875D6B5A0950905A80 /* PhotoManager.swift */; }; + 1E0B879D6CB220CC9C0764D6D8F782DC /* CameraFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451731B59459AFC7CAB02E8CFBACC91B /* CameraFilter.swift */; }; + 1E46A10B25F101BC6EBCC6EAF8A5BF0E /* Core+UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 968EB7A4D2DBFC7A66B9B33AFBEA1470 /* Core+UITableView.swift */; }; + 1ED5785CABEF14E7294B639F55CAF2EC /* WKInterfaceImage+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775539679F9FE4628F30B900CAF405C5 /* WKInterfaceImage+Kingfisher.swift */; }; + 1FFEE8343246709343BCC1E36FC1B416 /* PhotoPreviewVideoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C2B9CD889817B0A2AFDF7AE2F3163D /* PhotoPreviewVideoView.swift */; }; + 212BF896420769386E62A4E9AA92C181 /* KingfisherOptionsInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 834D29E5C3E1BDF0E44CB3DAA4158A87 /* KingfisherOptionsInfo.swift */; }; + 218909F3B141669BBB10B6629B00B344 /* DeniedAuthorizationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF46CD13AB05F29CF8B7495160675D81 /* DeniedAuthorizationView.swift */; }; + 222E5B5D0F09BE2A216FAA93563F1971 /* AlbumTitleViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14728CE560EF0C19EF3DA2D67B840185 /* AlbumTitleViewConfiguration.swift */; }; + 222F85B98CFDEAAFC423FFCC59A78323 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B2072E1F62CD06916E56643130D850 /* Filter.swift */; }; + 2236FAE14F324D4282FC9D46DAFE1D2F /* PhotoMyAlbumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123ACEA4BCEAE24EA1A97784CBFC11A8 /* PhotoMyAlbumViewController.swift */; }; + 23667EA007077150145413AA9F5AD940 /* PhotoAssetCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DF892D1FD203B7634A0EAFE901B019F /* PhotoAssetCollection.swift */; }; + 24237D0937BA67B3D0355291F5857CE4 /* EditorFilterEditView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5369749DA31AC6226D70EBB0D16001 /* EditorFilterEditView.swift */; }; + 25F5CF6224F2AE53D14D07CB3BA32B78 /* Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68005D13E0D1CECCFFB74EB0A945344A /* Kingfisher.swift */; }; + 265D4B9F7DB9E1058C8A27FFDCE7BD7B /* PhotoAsset+Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 585304862865EA038C14AE6C40DA979E /* PhotoAsset+Request.swift */; }; + 269DD5498BECD91FD56FB06386F9E794 /* EditorCanvasView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CD14259AFB5A98F9A7FD7421A5B3D39 /* EditorCanvasView.swift */; }; + 287215E73B86F7D5C6A6D37E6A760106 /* NSButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F8ACDFC1B2CFF07FB9D800D506D54F /* NSButton+Kingfisher.swift */; }; + 2935A33D523AFA49A27FFA9DACA89ED4 /* EditorView+CIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD429C6BAE5A8A100FA0E6B699CC750D /* EditorView+CIImage.swift */; }; + 294DDD78DEC431EDDA1DE3F7808E768B /* PhotoAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49172FA6B1FDA739CFB32B6127A6CA2A /* PhotoAsset.swift */; }; + 2A9C68689407BEECF0E5E78FC0BF7E53 /* EditorFrameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0BE57B2D9C5ABFD493C67CF3D6348DD /* EditorFrameView.swift */; }; + 2AFC73EA846DFB9686A341617BF58755 /* Core+Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4256E3206B7D81E3111A16218CD67A9A /* Core+Data.swift */; }; + 2B9422785F12B710886832C52DE1DA34 /* EditorMosaicToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBE792075FEB2DD9820C6E57A80DE041 /* EditorMosaicToolView.swift */; }; + 2C426B6D0E4ED50F6CBF72EFFD79A7C4 /* PhotoPickerListSwipeSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E46B3FE538490F78EFCA93785EF92B /* PhotoPickerListSwipeSelect.swift */; }; + 2DAD217C629E49274D2D3449406FE872 /* String+MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = C99B91AC259E30C968881C4939849071 /* String+MD5.swift */; }; + 2E653F6A1C49EA71D295342E5C32425E /* Picker+UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D47B82B71AC60087B0D4B099BAD1FE1 /* Picker+UIViewController.swift */; }; + 30D0A4975B4FE006D9865934ABD0F962 /* ImageBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DA76E48675E34635A770C316E9FEB84 /* ImageBinder.swift */; }; + 31FD3CCB6A967E2A85FF0234FFD83228 /* AssetManager+Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2A9F555459E03BB222DD9621D5CDD5F /* AssetManager+Image.swift */; }; 339B0A776F7D2067CD7DAFBF813EF867 /* Pods-SwiftUIExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B3FF74900C0E9F6ECC739ED91751C45B /* Pods-SwiftUIExample-dummy.m */; }; - 344566089C7DDC92FBE16884C4B3A12E /* PhotoPickerControllerAnimationTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DEB026FE77BDEBF3D3E8AAC3FD518D1 /* PhotoPickerControllerAnimationTransitioning.swift */; }; - 3532A023EABE33541308015D6F52B5D9 /* Picker+ConfigExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C552F23A704EA06FC0F852C359DACF /* Picker+ConfigExtension.swift */; }; - 364E2B57EDBED6407DAC1166DDDB1D7C /* Core+FileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E457F3BF11A71054126B11F685FEF8B /* Core+FileManager.swift */; }; - 365A18D1E5A1BB7AF9709B2AA568DBF1 /* ArrowViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89FB0B71480C8B71AEDC39450C99E63C /* ArrowViewConfiguration.swift */; }; - 36B4337B3172E1F92B0DF9400CB7BC59 /* EditorView+PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30409E763E24F3D60C4E75BC16ED56A6 /* EditorView+PhotoTools.swift */; }; - 36D273EC8075005B8A9EA332EF60829D /* EditorStickerTextView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 914FADB1FDBDA9CECBBE4BE96CB3D04D /* EditorStickerTextView+CollectionView.swift */; }; - 37728495111BCFE8B5C6611EE85A031D /* SliderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CAC4B1373FCF618F65DCF1CDCFF351 /* SliderView.swift */; }; - 37F8C0C2E4E94C4A789603278695853E /* RetryStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25BD878FA94DA33C8DFD57A105553389 /* RetryStrategy.swift */; }; - 38459FA8B8291786FFF40CD4A89E8A79 /* EditorAdjusterView+ScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ADC5E4717EE4BE2D4B22C45D5A71819 /* EditorAdjusterView+ScrollView.swift */; }; - 38886405E4DA4CBA623713C15E60F4C0 /* ImageProgressive.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2601D984AFC0E54B562FE838D8A618D /* ImageProgressive.swift */; }; - 38D12A3DB825DB5D85BD626DFC783262 /* EditorMusicListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3534268656B6A7DF2068D79D8840207B /* EditorMusicListViewController.swift */; }; - 38D7981E1769F169D387B4F50F3FBB5B /* Source.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB80C8DF07DE68BD320E2ED991DC7644 /* Source.swift */; }; - 398E4CB9BCF008F7CD739B690E43CCA2 /* AssetURLResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0F6F65F120DF7BC80746EF0CB1E57D /* AssetURLResult.swift */; }; - 39D2167AE4A5D8DC5E57004FB7908F45 /* PhotoPickerSwitchLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132E9CB2A8E5AD7806EDD17190769C1F /* PhotoPickerSwitchLayout.swift */; }; - 3B59A2936E12640CB1114BABB82CF542 /* EditorAdjusterView+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C283540665EBDA5D8743F8E27386DEA /* EditorAdjusterView+Video.swift */; }; - 3B7F757AD66D4CD9BB2D5343059018D7 /* Core+UIDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8679A26BF780F2E676C54467D6BB7046 /* Core+UIDevice.swift */; }; - 3BB802239FD447B9E249D5EBBED7DA29 /* ArrowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFB79AE17C107753DA564DDFFA54BCFF /* ArrowView.swift */; }; - 3C4D36DFC4A711AC765D88EB974E7913 /* PhotoPickerViewController+Camera.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F71EDEA505EF8D70954F2003BB4C6F1 /* PhotoPickerViewController+Camera.swift */; }; - 3CC6701494CF2E153124DF334B6C59B2 /* EditorVideoControlViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B85EF00CEFC6595C1CD7EB1375E3521 /* EditorVideoControlViewCell.swift */; }; - 3D732425BECC181122D7197A6E91A5C0 /* PhotoDeniedAuthorization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D585EA470D45490504E9204F0C4D54 /* PhotoDeniedAuthorization.swift */; }; - 3EF57E957E8C8A5F002CA1152F3FEAF4 /* PhotoPickerViewController+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53BDFEBC1FA2BCFFDDD90DA8452A74E0 /* PhotoPickerViewController+Toolbar.swift */; }; - 3F6110B1CB542B3ED49F392715CE2AE5 /* PickerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D9F2A0728B98F0D270E1C4F4FDF8CC4 /* PickerManager.swift */; }; - 4053A8AB3A5EF83AA8E73F587B124F54 /* PhotoPickerFilterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3CA808374B43D3AD23411D7FB6534D5 /* PhotoPickerFilterViewController.swift */; }; - 40B43D62CF78C857A44423FFF04C0296 /* EditorVideoCompositor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD24D3EF4FB9EC7C5F33B62280B5E12B /* EditorVideoCompositor.swift */; }; - 40E10C37EFAE7BA989132024BF7FF2DE /* EditorViewController+VideoControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91F7862329536E20C9E813E5B26FADFB /* EditorViewController+VideoControl.swift */; }; - 413D80EA37D78C8C074C70C6FC3AAF9D /* EditorBrushBlockView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF642AB4130879F6D6D9CD0FDFD7A88F /* EditorBrushBlockView.swift */; }; - 41873EFF41259CA548A3592D803468B6 /* ImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF917D8B37B6AA169213299433A8A6A1 /* ImageResource.swift */; }; - 41BD88040F2EEA8C87625C83791CA2E0 /* PhotoPickerController+PHPhotoLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0386CE0832420D311DE8EC8182453E17 /* PhotoPickerController+PHPhotoLibrary.swift */; }; - 4280392F0C1A8CA1E7D9A999058FBC1E /* KingfisherManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0B8BB66619A56BE9921CB8D9DF82767 /* KingfisherManager.swift */; }; - 42D0968CA7626F5917906A24CEB50CFC /* EditorView+UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30FB07ADC179E7E252DE13DE666B5F26 /* EditorView+UIImage.swift */; }; - 42E60519CE1AE6C37F4D16058E5598A9 /* EditorViewController+Music.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546F164AF64491F16EDFB0FCF36C9FE8 /* EditorViewController+Music.swift */; }; - 42F225DD278BAB831AB5D9C2478B1601 /* Core+Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F80F0650FAC186261A8EFB6172445B /* Core+Data.swift */; }; - 433C3DC62410A15FB056281B3B3FCAC1 /* AssetManager+LivePhotoURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DA4AD4C1C9603C39AD579E5B5E825F4 /* AssetManager+LivePhotoURL.swift */; }; - 43BD3F047E59A227CD8A04FCECF8B012 /* PickerInteractiveTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BCEF8AEA986ECC495BA63F38F58F7FA /* PickerInteractiveTransition.swift */; }; - 45A6E5AC586CDC6C1D253BAAFBBC0FC5 /* PhotoPickerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD37FDFCFD02B420461A68E431F1239 /* PhotoPickerController.swift */; }; - 45EC6E3F544F4AA78478328615A806AC /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC9FF0A2D9CFC0A55619C01509FE39AD /* Result.swift */; }; - 46BD16632E11154BD230E31A5E75F129 /* PhotoThumbnailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2466B0ADC050A093BFA7C1F1EB59554 /* PhotoThumbnailView.swift */; }; - 47869D8143ADA5B5669994ED2CB17350 /* EditorAdjusterView+FrameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 671B3C4F24342FD0FF8573A04E43B81C /* EditorAdjusterView+FrameView.swift */; }; - 48985EDEC1F15CCA6E4FEC8E2DE20BEB /* CaptureVideoPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDC3CA2F2CD3706A5DF20F8E5A00E99 /* CaptureVideoPreviewView.swift */; }; - 48ACAFFCB390B0C2BE087F9D0BA45DB6 /* EditorTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE3BD898E6A7B563F09180CC07162C3B /* EditorTransition.swift */; }; - 4B422E9D3E8B9D877A5D88EE1275C428 /* EditorView+GestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E083E391C07B17FD4C41EA3298E12D3 /* EditorView+GestureRecognizer.swift */; }; - 4BC02F5D460569B10A8AB319FDB679CF /* EditorControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A9084EA20DFB13595E32F017EB924CD /* EditorControlView.swift */; }; - 4C2C22EEE0A27418B9EEAE59CB056063 /* AssetManager+LivePhoto.swift in Sources */ = {isa = PBXBuildFile; fileRef = 929556B2342ABFE69D82475A81604C6F /* AssetManager+LivePhoto.swift */; }; - 4C4D0D029722BCF25697BE9570E948ED /* Core+UIApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = D906D06935C1AE136D38FD9DD9220CEF /* Core+UIApplication.swift */; }; - 4DD830BD1B5B94442C1E0323B1D6B6DC /* EditorAdjusterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D08B3962ACC3D37AF742AF7AF22DB72 /* EditorAdjusterView.swift */; }; - 4FFDD299771D59FA6E879188D3CDE348 /* PhotoPickerViewController+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9C1FF8B1653CEDDDCFDB792F41E885 /* PhotoPickerViewController+Editor.swift */; }; - 5093B5BA1CF5EB1D5D5EAD8B354C9D71 /* AlbumListConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2508B33D41DEE39D5B11E16E3646BE6A /* AlbumListConfiguration.swift */; }; - 50AD5F5F113A13C11BA5EF731E5D53BB /* EditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00EE5C1CB5A1C7A9538155374706FA1D /* EditorView.swift */; }; - 51E4CBA569D612C3A36E3B46E6C8F88C /* PhotoPickerControllerInteractiveAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9736014E39E41C6D46FF66B0EFA7349F /* PhotoPickerControllerInteractiveAnimator.swift */; }; - 5208386B394A7866251EA7496AE1015D /* PhotoPickerList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20A2F58D6F843C5EC961444D89C49697 /* PhotoPickerList.swift */; }; - 53715459B69306F37941E8EFB07A0650 /* VideoPlaySliderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F340C58F7CEB8BCE79B89E5F76B8EB3 /* VideoPlaySliderView.swift */; }; - 54629EFBC2EDB62A2B35413BD60C81EE /* PhotoPeekViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1ED286ADBACDF82B69A16D096380A2A /* PhotoPeekViewController.swift */; }; - 547A85F80B55B474AAF1E0FE9EB4D7A0 /* SizeExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0577C17000F0186FBDC55B6341BD085 /* SizeExtensions.swift */; }; - 550439C83FC12BDE34794688302A4595 /* Runtime.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE897DB5466680E2D8ABC3A48F000A9B /* Runtime.swift */; }; - 556B3424D8FEA36CA94AFF51A687D399 /* PhotoTools+Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4FDEDE63D5E615512723B4A37E1C519 /* PhotoTools+Alert.swift */; }; - 55FBE009D8079EE10AF65EB41084FA0A /* PhotoManager+Download.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8CE106B86DA76108E489C88058253A8 /* PhotoManager+Download.swift */; }; - 569EFDE20F961D3F6AD0B4CD64FAEDCE /* PhotoPickerListCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 254F6A0C57B1279136874B656ABB46FC /* PhotoPickerListCollectionView.swift */; }; - 56AD13CCABF2E77488C9721A3C851376 /* AssetManager+VideoURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8530A32D18C0432556AB7F006BB9725 /* AssetManager+VideoURL.swift */; }; - 578E5C11CEE0E7A5707DE27BF1376158 /* CameraController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B75C3BE3D630682074903CD1E32E595 /* CameraController.swift */; }; - 57935C715963CE1176A582D936CA9897 /* EditorMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 953DBD88221D0A58E0077303541F9206 /* EditorMaskView.swift */; }; + 340B59358A01E41C9593C6BA0A17D0DD /* PhotoBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 766E2B28C31EF7265194963602853636 /* PhotoBaseViewController.swift */; }; + 3420E88EE9216F92E733A3D58EC9E2D0 /* AppearanceStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 865D53C395AF75606EA6BC1BA1009B2B /* AppearanceStyle.swift */; }; + 346B6AF0161DA9D1FF974714399110F5 /* EditorViewController+LoadAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AE4E2F5EDCC5C2234ECFAB8EE47E82A /* EditorViewController+LoadAsset.swift */; }; + 3471FC85E8EDD931967D54785ADCB445 /* Core+PHAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C7163793147F08DD6232B1F6FCBFE84 /* Core+PHAsset.swift */; }; + 34BF52061F5887A87ECCE4CCA280C4BD /* EditorAdjusterView+ScreenRotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 697C38A66135A8B0636B2316861EC599 /* EditorAdjusterView+ScreenRotation.swift */; }; + 35081453265C380DEAC9195A484FAAFD /* EditorViewController+UINavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F37845621CE8B7E9E527CC9B602FF41 /* EditorViewController+UINavigationController.swift */; }; + 3515A0A15C0CBF2E5D73710DC33E378F /* EditorVideoControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDA9BE81FEAE2531C2F0863FFF311913 /* EditorVideoControlView.swift */; }; + 36A4AAE2C8E04F5EBC00D990F0237CFF /* HXLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51105C474365A0172DB9AE7919904603 /* HXLog.swift */; }; + 377F85C715877C58E0620FC10B8CC8FC /* EditorView+UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B338129A6C8756D1999938F88B431FF /* EditorView+UIView.swift */; }; + 38132783F8D69A64314520CB234AB6AF /* VideoPlaySliderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E630B7F8343389BF4315ACBEC550ADE3 /* VideoPlaySliderView.swift */; }; + 38CBCCEF1A064A74B5BDB531ED15E54D /* PhotoAsset+Local.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50CB8C1829A6CA9B36C2870BCAE98236 /* PhotoAsset+Local.swift */; }; + 3A0EE5BD8449CBB8908CD539A679E7BA /* PhotoPickerViewController+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 814FEFAF154BE89E5C2B2A13A10F8A5F /* PhotoPickerViewController+Editor.swift */; }; + 3C3FFD24ECFA4DF9076393148904BE6D /* GraphicsContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD354DCD1C586F20F448E288A34727AD /* GraphicsContext.swift */; }; + 3C423488DE058DA612FE101C4077E056 /* KingfisherError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D1DE2261D4A8F049E817D43B1D78FB2 /* KingfisherError.swift */; }; + 3D1B3F4DB3A601166EC5203B034E2AFB /* CameraController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B75C3BE3D630682074903CD1E32E595 /* CameraController.swift */; }; + 3D4E42AAF9665B3587F4563B26EB85A8 /* Core+AVAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3323D4D2A8BC9C27FEC1D6EE348CA52E /* Core+AVAsset.swift */; }; + 3F5E7B241B852DA9396891C32F9A4CB7 /* PhotoPreviewViewControllerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9A44EECC742AD45DBA3113063EF4BE /* PhotoPreviewViewControllerProtocol.swift */; }; + 3FF79B573F05A5A47B635669898BB794 /* Picker+PhotoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB690B8811F966F88172D3EFC2E7BADF /* Picker+PhotoManager.swift */; }; + 405B705939B2DF56A8B74A4BCF7B8509 /* EditorRatioToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046E8D52AF62433460446ED748D95868 /* EditorRatioToolView.swift */; }; + 4175F7A72D01745887E7AEC6522E0D7C /* PhotoPickerNavigationTitle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 374CFA55D9094B3691DE46F0718D1DD5 /* PhotoPickerNavigationTitle.swift */; }; + 429DAE4C32DB2A2D4B5D74E407D7BF94 /* AssetManager+AVAssetExportSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = E521238901494DB93FF85A43C5508319 /* AssetManager+AVAssetExportSession.swift */; }; + 429F369CA252726E95CCEB69DD7EB906 /* PhotoFetchAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFFFD1DB25BEBB4196EF523CBC6DAB5B /* PhotoFetchAsset.swift */; }; + 42A4159607965D32FF544CAF5B17981D /* Core+URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D96E9A74BDE1BAE8EF79AF05333B6AD /* Core+URL.swift */; }; + 439292ADA7AE5C2BC59F57F48A9DF6E6 /* ArrowViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B48D951AAB501DFC7943AC73FC6E1C1 /* ArrowViewConfiguration.swift */; }; + 442A3961DB4288101E65826EB0E42C5D /* PhotoPickerListCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53129D60C107C5942B93469B7B09C00F /* PhotoPickerListCollectionView.swift */; }; + 453D44F0B5CDC535CD00DE703EED4926 /* KFImageRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF4BE3DA44B5CA9EA978930D1D320C58 /* KFImageRenderer.swift */; }; + 45EAFC5ED92D5D4713DD3EB567A529C6 /* PhotoPreviewListViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8CE430D965B9B62E1A2DBE5E6C78242 /* PhotoPreviewListViewLayout.swift */; }; + 46ED46030FB56E5644BD3E4741BC52ED /* PhotoPreviewContentPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A57FCE90BF03659995AFEED15965498 /* PhotoPreviewContentPhotoView.swift */; }; + 4739523AE4CD781A0AFE81C4A92F1093 /* EditorDrawTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BA76481D72F7A5F6B64A251FB74AA81 /* EditorDrawTool.swift */; }; + 4778B5BD06480C6A9E1B7CE2EA8A7BA5 /* AssetManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEBF813F901EB1FCB932A8D7F3E41467 /* AssetManager.swift */; }; + 481033B067536CB3243C44AAC495256A /* CameraPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A2D388B59FB4C57AB700DAE43A642D5 /* CameraPreviewView.swift */; }; + 488E6670901A554AB0CD355D7B7521CC /* LivePhotoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 316F4071B94B6FB101EAD3B1400950A0 /* LivePhotoError.swift */; }; + 48BCB1E78D33EE6C44B40A7E013F7597 /* Picker+PhotoAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94A731092E5F1B8FDE1BE4F7C06EABB0 /* Picker+PhotoAsset.swift */; }; + 48E06EBF1FE0558A8996E466BB301553 /* PhotoAlbumControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C3814F153862BB379501C2DA605163C /* PhotoAlbumControllerConfiguration.swift */; }; + 49E3C83FB7047EB828E65C5FB63FC18D /* PhotoPickerBottomNumberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44C64A3AAE405023387CF947AEF3AF6B /* PhotoPickerBottomNumberView.swift */; }; + 4A07466238DF7A1201FF6F76312BA137 /* PhotoPickerListAssets.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCDB4F339FB1955F28C99848D5DEF852 /* PhotoPickerListAssets.swift */; }; + 4A1D76038989B5CB1380B864B180C1C0 /* PhotoPickerFilterItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324E5277BB60D5E37C7D16CD27D0F44A /* PhotoPickerFilterItemView.swift */; }; + 4AE7D1E7959A2372E3EBEFB749421054 /* ImageProgressive.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2601D984AFC0E54B562FE838D8A618D /* ImageProgressive.swift */; }; + 4B8A54394CD05F90A388EC6E690BD79D /* Core+UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A365A5F46E1691045C24EE615F99AB1 /* Core+UIImage.swift */; }; + 4C39170CD39DC1A711788F5580660E7E /* ImageDrawing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5D7388CB14E712D758F46F4534917F /* ImageDrawing.swift */; }; + 4C410E7E08FDA51C906AE19A3F1243FF /* EditorVideoControlViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B85EF00CEFC6595C1CD7EB1375E3521 /* EditorVideoControlViewCell.swift */; }; + 4C49FB96CD582834058E77A5A3F8299A /* EditorAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3F99ADD415612CABF7348002AAEC47 /* EditorAsset.swift */; }; + 4C54C9DB3E308CE9A453EB6379A155E5 /* PhotoPreviewViewController+SelectBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE07908050FF6982B2A50406E9167B6D /* PhotoPreviewViewController+SelectBox.swift */; }; + 4CD4F7D2C04170C7B67C0E346F94AC53 /* PhotoPickerView+Preview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C5C1158364D94A41D9D3616982044C4 /* PhotoPickerView+Preview.swift */; }; + 4DE585CDCD9A1FC6207ACE6EDD48E1A3 /* NSTextAttachment+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E11A037CCACB0F80C8198F2A3066942 /* NSTextAttachment+Kingfisher.swift */; }; + 4EEBF6863EB72EAF23BE9815FACEE100 /* GIFImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1E1994A470E57F8DBB20BD588FCE9 /* GIFImageView.swift */; }; + 4F1E100F452462EFB0BC5EB1A4D984B5 /* CPListItem+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDAFD1BCFDE52E8E0E0AE0D784590CD6 /* CPListItem+Kingfisher.swift */; }; + 4F5FE201C940504690120A403CED308F /* PickerCameraViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C3913A37E783A552ED07CFF5BD3282D /* PickerCameraViewCell.swift */; }; + 5040477D8490726F40B56AD4F0236F4F /* EditorChartletPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5860DCD7F5D0D55E1123858F08E59296 /* EditorChartletPreviewView.swift */; }; + 513D519D0FD4C1284F1B20691BA31B5B /* DeviceOrientationHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCA381FB652E71487CEFFBB05FFCA781 /* DeviceOrientationHelper.swift */; }; + 5344EF30CA7AFADCB45ADF78A85B4576 /* PhotoPreviewSelectedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E0254FBB44F357441BA90923C54295F /* PhotoPreviewSelectedView.swift */; }; + 53F1A6CE0E907932AF4BF8FE123676C0 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82C3A2B02B052420C4B08BB62A7AD32C /* Accelerate.framework */; }; + 53F5D8C4D467BFBE7C77D41B0628CCCA /* EditorStickerTextView+Draw.swift in Sources */ = {isa = PBXBuildFile; fileRef = A46CE765D715464756681E0905328994 /* EditorStickerTextView+Draw.swift */; }; + 547AA28F7BE98EEE656FAEFB571869C7 /* EditorAdjusterViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D37E4195BC49A46B43FC0F1CEA0E9B /* EditorAdjusterViewProtocol.swift */; }; + 54CCFD8B55B754719681B643B57B630C /* PhotoAlbumCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F69CF66AA4F19E8DBD656398B663AD88 /* PhotoAlbumCollectionViewCell.swift */; }; + 5557A81E35F872CE14B91940619D7EDC /* PhotoManager+Language.swift in Sources */ = {isa = PBXBuildFile; fileRef = D76A8EFD3112391A5D4B71415D4AE399 /* PhotoManager+Language.swift */; }; + 557629E3BD2B92CB3278123CB649853E /* PreviewViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34A9BF64900D52253B4105D660151F5F /* PreviewViewConfiguration.swift */; }; + 55B287CA1F2BAAD5B1430032479CE0BF /* EditorView+AVAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = A65EBBAB70CC1C017D00B9CD724533AE /* EditorView+AVAsset.swift */; }; + 55D542CE3171CF96EC3C9457087C0A66 /* PhotoControllerEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFA3CF112E554D34980975FED03C90B0 /* PhotoControllerEvent.swift */; }; + 576C521B0BAAFDC60B2B8F42EE98FBC4 /* AssetURLResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B8DF493DB3E61DE45CF8384C45031A /* AssetURLResult.swift */; }; 57ACEB429FA1D348D4770CC9B57C7985 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E5D00FFA46E2AB9AF4F035C31DC21D /* Foundation.framework */; }; - 57EF80F3BF7637DC199215F5EFF67615 /* PhotoPickerViewController+PhotoList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1715903269BC56CD4512AB888EFF45CA /* PhotoPickerViewController+PhotoList.swift */; }; - 592E819B53C5380E987636DB7B98A138 /* EditorFrameView+Control.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3856A4E1330FB40BE19333260FB60489 /* EditorFrameView+Control.swift */; }; - 59591CA75004272783D153A2B80287B3 /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BD95343654B609B21B9C17AB81B27AD /* Photos.framework */; }; - 59F94E95FEDCCA34DB5F9171597C7CCE /* VideoEditorMusic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DE518BE3D8C1829E483E17E37D678BF /* VideoEditorMusic.swift */; }; - 59FC6DCE315E16BC9133DFADADA11BF5 /* PhotoPanGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B867AD78FFC3FCC7D39D7E94A83F385 /* PhotoPanGestureRecognizer.swift */; }; - 5B1DB61481EF2DF9461FCA6118CA8599 /* EditorRatioToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046E8D52AF62433460446ED748D95868 /* EditorRatioToolView.swift */; }; - 5BC90D56CAC33A6146DAB92417F66096 /* AssetResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54986FD3B479F277CAE03AA4E1E9B3D9 /* AssetResult.swift */; }; - 5CC4B543908D6A10B145C11D72FE1100 /* EditorFrameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0BE57B2D9C5ABFD493C67CF3D6348DD /* EditorFrameView.swift */; }; - 5D8392B474BA7E57A968035E18858CA9 /* EditorAdjusterView+Mirror.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E3F2A635A77829868407767AD79839E /* EditorAdjusterView+Mirror.swift */; }; - 5DD10DE2CCBCB44C2DD7CD4D5DB6A9AF /* PhotoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42EC3AA1FD115A166689EEF77171ADE8 /* PhotoManager.swift */; }; - 5E611B5D9A641011A8C60D2AE4142F80 /* CameraNormalPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFFD6F292F64160B38B6649F159D042C /* CameraNormalPreviewView.swift */; }; - 5F5CF3A09E21DF2AEC896416161C6853 /* EditedResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A5C99EBEE817C2204BBA9FEA60E6B3B /* EditedResult.swift */; }; - 608EC7643490B57544EA81C143011FD0 /* LivePhotoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2ECABCCB399441797DA0B1DE8D14496 /* LivePhotoError.swift */; }; - 617929C5FBB27962B6EB94ABC3AEA62A /* Picker+Int.swift in Sources */ = {isa = PBXBuildFile; fileRef = B269E4BB92DAED94D6323CC0E25F3FDD /* Picker+Int.swift */; }; - 61A7EEE387A786D41B79B1D2659CC54C /* PassThrough.metal in Sources */ = {isa = PBXBuildFile; fileRef = 926B24654E16EDC546F2CF9EA7DD9365 /* PassThrough.metal */; }; - 63947C1E918023B4FCD89999E98CB8B4 /* PhotoPreviewContentVideoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C392CA1A08DAF30066CFFF92C20354 /* PhotoPreviewContentVideoView.swift */; }; - 63DA022CA32302FB9234DB965BAD9677 /* PhotoBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = F420AF1D60F44BF7153657A89341E0C3 /* PhotoBrowser.swift */; }; - 640AD43C1B2D4699FEE5D502286B849C /* KFAnimatedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA52A797E57B739CB6F9C9B97A0B372F /* KFAnimatedImage.swift */; }; - 65B42C96BA6619666A6A38C603AF3247 /* PhotoPickerPageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB81D1976245C16A9BA6D762B8C0A5E4 /* PhotoPickerPageViewController.swift */; }; - 65EDBF8A43C1091B662ABE3791784CD2 /* NetworkAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD6131717B6458F71867E326076F6967 /* NetworkAsset.swift */; }; - 661DFF54A6A8A3AEDFFE39C3EBBD9770 /* PhotoAlbumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C972067FD3D35AE4780CD99FE34432D /* PhotoAlbumViewController.swift */; }; - 664962AD025C46FBE3E4BE852195507E /* PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6794E4F86E877704A71B667FAA78CCC /* PhotoTools.swift */; }; - 6749677D725D81A6A2293F132059FED4 /* AlbumTitleViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = E892491520AEA17049715B574F92A658 /* AlbumTitleViewConfiguration.swift */; }; - 68F0E9968818825FD7DC9AA35C59ED58 /* Core+UIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7635C5B2F28627B7F5ACF0F3B0465C97 /* Core+UIImageView.swift */; }; - 69C88B70EC89F306D59F72FFDD703C6B /* PickerTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B911867DDFC1253F8DF367FF2E52B818 /* PickerTypes.swift */; }; - 69CD28075690B776CA27BE1BCB0EAEA3 /* EditorVideoControlMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5425456A5DE1EFB4F4B91CE382913B19 /* EditorVideoControlMaskView.swift */; }; - 6A1C3E0D8244D7E3C4E36666C3DB5204 /* ImageDataProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6BBF7A8EDFDD0832E4E1C9E23233192 /* ImageDataProcessor.swift */; }; - 6A36FE82FB360C7505A3E1E008986855 /* RequestModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4CAAA3C063399B55C612A56504A94 /* RequestModifier.swift */; }; - 6A41E0C213383181E456898601723DF6 /* Picker+LivePhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD194EB586DB374B10759F36429D0130 /* Picker+LivePhotoTools.swift */; }; - 6AFD200D05F7E35DD522B89A1804E4C3 /* PhotoAsset+FileSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFF3794F048481E0B5C88E2D6F9F4E8D /* PhotoAsset+FileSize.swift */; }; - 6B077A95D83F81D1EE655D3768F315C1 /* ImageContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EB374CA2F10D5110CF8DF9612FC2FC /* ImageContext.swift */; }; - 6B1A2975E39D99B8BE94FCFF661DDE9A /* Editor+CIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B28E2838D03F588207280CF82D521C0F /* Editor+CIImage.swift */; }; - 6E1B6DDA8ADFD8FF65D111F0195CFE21 /* EditorMaskListViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3F319F3A918E44A3477B9F8A5ED425A /* EditorMaskListViewCell.swift */; }; - 6F330A08CFB9704CB0A8CB4B32ABA3F1 /* LocalAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB04DA8603BD60DD7DE3B290F315E961 /* LocalAsset.swift */; }; - 6FDD06E601DFC73B4CEFC1E903E4C3AB /* PreviewVideoControlViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D97345B3C4840CED0FFDCE99956D7ABB /* PreviewVideoControlViewCell.swift */; }; - 7033FFE4216B69AD0B0FC1FB196810A5 /* PhotoPickerData.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA20FE92B94ABA8D0626FEA37BD3A53F /* PhotoPickerData.swift */; }; - 71457B6118D8C904631A3941890CEAA1 /* PhotoPickerControllerInteractiveTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC32EAB1BF505A7E1E3351E77407A7A6 /* PhotoPickerControllerInteractiveTransition.swift */; }; - 715C6321F988D819D4DBB0525182CE2F /* EditorView+CIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD429C6BAE5A8A100FA0E6B699CC750D /* EditorView+CIImage.swift */; }; - 719C3DA1384C6385E711D58A6C81ECC3 /* EditorFilterEditView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5369749DA31AC6226D70EBB0D16001 /* EditorFilterEditView.swift */; }; - 7258CFEFD470C9C9DE1048736C0EEDBB /* CameraViewController+Location.swift in Sources */ = {isa = PBXBuildFile; fileRef = 047C97E634A38136209172F69170720C /* CameraViewController+Location.swift */; }; - 72AACB9124A39AC764CC61C62F687AAF /* EditorContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68E342DDE4ED12FFD89CFD60F303C6FA /* EditorContentView.swift */; }; - 72EF5D9CE65FE4F4EB62E4964A6587B7 /* EditorStickersTrashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD5F7ABA8BE8FFD9B08AFDDCC6897FC /* EditorStickersTrashView.swift */; }; - 73198BB7A3B6837BFFB5771C8A0F921C /* PhotoPickerView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A5A5BB86EFDB4BB5C87A0FC8113DD19 /* PhotoPickerView+CollectionView.swift */; }; - 73A1B50339CF9F9DAD80243ADE48815D /* PhotoTools+Camera.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44E2C3C67FB91EB55E2F3823E4832B6 /* PhotoTools+Camera.swift */; }; - 742D3C7483A4B08DA77A1025D50E2F89 /* Core+PHAssetCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47288D6A78B80F96E0D054EA21858EEF /* Core+PHAssetCollection.swift */; }; + 57B173AA6B94D6AB781CCF18FAD200B2 /* PhotoPickerViewController+FetchAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D3383D2FA5DECE424820FA97BE2099E /* PhotoPickerViewController+FetchAsset.swift */; }; + 58CE9E251AC68DAB444FD166E3E4BDD0 /* EditorView+PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30409E763E24F3D60C4E75BC16ED56A6 /* EditorView+PhotoTools.swift */; }; + 58F0762DCE6F52A3A17D9CB9FF038F5C /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAA6E3B06AE4E0D863F65FBA164BB6C2 /* Storage.swift */; }; + 5A12E9CF48B864FECCBBFDEDA42B54AE /* SelectBoxView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005DD78C8E5CAB1DEA6CB00AF3DC15DB /* SelectBoxView.swift */; }; + 5A137615D5DAFD756363A9B1D50356DE /* PickerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FE94249D2DDC30C4AC7E1182C82C28E /* PickerConfiguration.swift */; }; + 5A4F9495029D4F18B502F303FAAFAB6D /* PhotoPickerFilterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B873831F6743866CC8F760D4C2660172 /* PhotoPickerFilterViewController.swift */; }; + 5A9A57C96195D12F9072135AE0F27525 /* PhotoTextCancelItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC6EDA5D99EFCD86BCE35FFF00558A28 /* PhotoTextCancelItemView.swift */; }; + 5C21E42D1F1DE51ACAEBE55202E995F9 /* LocalAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 081351AEE736FFA337729568085BFA86 /* LocalAsset.swift */; }; + 5C44AF1A8C75F36C9B34A44E3AE42F06 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57DBA903C8B91871A1B4432F452266FD /* SessionDelegate.swift */; }; + 5DB9B82519C8889B3120A0F0CA32D3B3 /* AlbumViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0956E60EB8B965630B7D80A76B487432 /* AlbumViewCell.swift */; }; + 5E06259762AEC04F37B90B75AA513566 /* EditorView+ScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7164596EBEB9267D7541E484D3B5A44C /* EditorView+ScrollView.swift */; }; + 5E423B9A922A238516C00E436D745412 /* EditorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26ED062F0A632909A1719D5BAEE24592 /* EditorViewController.swift */; }; + 625490659A04B8483443FDBBA59991EF /* SizeExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0577C17000F0186FBDC55B6341BD085 /* SizeExtensions.swift */; }; + 62652652D01DF8DF87C3D95D7DC0EF86 /* PhotoPickerViewController+Preview.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6831C1750D4F3E7450A80C3C4E25C60 /* PhotoPickerViewController+Preview.swift */; }; + 631A4D6324495460B169EBD87FA43370 /* EditorAdjusterView+FrameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 671B3C4F24342FD0FF8573A04E43B81C /* EditorAdjusterView+FrameView.swift */; }; + 63F40F61E1787B816A4D981B19E3FC88 /* EditorChartletViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649ECCC364FC87F766A0950349783084 /* EditorChartletViewController.swift */; }; + 64A3BE1D924127869D9EB317DC0F48F9 /* PhotoPreviewViewController+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A6141330D94E6B655BE747DDE36FEC4 /* PhotoPreviewViewController+CollectionView.swift */; }; + 64B2BF5540284247ABFD40D91C942183 /* CameraViewController+Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = E78DB32A47431DF74ADA0F413228BACF /* CameraViewController+Result.swift */; }; + 66BDFF681EC2A34873333F65D3CC4374 /* CameraViewController+Location.swift in Sources */ = {isa = PBXBuildFile; fileRef = 047C97E634A38136209172F69170720C /* CameraViewController+Location.swift */; }; + 679EF7BCA1541B922E5A24E13F70762C /* EditorChartletListProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 902D029FF440BB72A93F862EFA0EA300 /* EditorChartletListProtocol.swift */; }; + 686A46204956BC0CAF63C61D1C8F73FC /* PhotoBrowserInteractiveAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18038FDCC4A3EDB96CEB6F8773A8440A /* PhotoBrowserInteractiveAnimator.swift */; }; + 6991C1B4299D2BFE47B2109304031F98 /* EditorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF6631A47CB74096BA9F169344C69A1 /* EditorType.swift */; }; + 69BDF4E5CAE3639F7311D5BED0E24266 /* EditorAdjusterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D08B3962ACC3D37AF742AF7AF22DB72 /* EditorAdjusterView.swift */; }; + 69C1697FAE31A0A229A9413337FEEEA8 /* AuthenticationChallengeResponsable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3861378691381ECB410F328C6E0A4271 /* AuthenticationChallengeResponsable.swift */; }; + 6A5122D4E48B3AEFBEC9D744B27F995C /* PhotoPreviewSelectedViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6BD34F0ECF3CDD3775795C1743DDA03 /* PhotoPreviewSelectedViewCell.swift */; }; + 6B48D1F3C957EF9A4EABCF1ADA74725E /* AssetManager+ImageURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6071F8423D8DA6F25BF4DD10603DA621 /* AssetManager+ImageURL.swift */; }; + 6BAB339D77940845A99643E7D9CF766B /* ImageDownloaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66F00E5F3BA70304E1B24F1099FC1CDD /* ImageDownloaderDelegate.swift */; }; + 6BC851B19B67BA65FEF55D7A8EA2938F /* PhotoAlbumViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D938338EF833B355C68ADAC05D4D5E75 /* PhotoAlbumViewCell.swift */; }; + 6BE47BA381346550F80F9BFE382B3CF9 /* PhotoPickerViewController+PhotoList.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED47D4C3D6EECEC57FA1EABB8E264104 /* PhotoPickerViewController+PhotoList.swift */; }; + 6C11140FC824A5E9E57FDE3552B06109 /* CameraControllerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B3D72BD284E712839DB2B669F8B9FA /* CameraControllerProtocol.swift */; }; + 6C6EDDA266A325C60B346D0D83303976 /* RetryStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25BD878FA94DA33C8DFD57A105553389 /* RetryStrategy.swift */; }; + 6D862B2A42FEB13C3772FE2D696DEC39 /* PhotoPickerControllerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71BA13F666BF084FEA3F3C67530070A2 /* PhotoPickerControllerProtocol.swift */; }; + 6E72A52D5F75706B69A43158536BF3A3 /* SessionDataTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0940FE5A90B190B7FC193AB0F78BB0A /* SessionDataTask.swift */; }; + 6EC1E52FBF89A4FB647DB04D569B530F /* PhotoPickerBaseViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFB85A21408B9517E57CB2C66CD6BC5 /* PhotoPickerBaseViewCell.swift */; }; + 6F5D2A3D7A5EF303FA32E02DBBA7BFFB /* Picker+Array.swift in Sources */ = {isa = PBXBuildFile; fileRef = C16DE7A11878C65D219BAAA87438BA36 /* Picker+Array.swift */; }; + 705AC054B225D3766997B9B3FC119A09 /* PhotoPickerDataStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5019F96EDAABBBA2A1E9EA1197438EFE /* PhotoPickerDataStatus.swift */; }; + 7061FCF846B8BF440E5DF3F921190572 /* EditorBrushBlockView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF642AB4130879F6D6D9CD0FDFD7A88F /* EditorBrushBlockView.swift */; }; + 70C1E81FC8979D3F5083471307C12AEA /* Core+Dictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = D86D388A9AF70ECC719D8F0026CD369C /* Core+Dictionary.swift */; }; + 713DE9417D4C35E426FDC3FF9EEF626C /* PreviewMetalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2197FD38809E4AAA3B21896415C66F /* PreviewMetalView.swift */; }; + 7222749D98FC7538E8F576CF1C828B5E /* PhotoPickerSwitchLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 022846C123908FDCFEE7680EB3B41562 /* PhotoPickerSwitchLayout.swift */; }; + 72B82A62E245F0290C46C71D025A3C81 /* NetworkAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB66ECA5CC11A66E0A9D503A3944FAD /* NetworkAsset.swift */; }; + 73D2CC4C4B2F8258F949D119B5296582 /* PhotoToolBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D50F836092281E9E7FC8A780F93F04C /* PhotoToolBar.swift */; }; 74F8BB626C932E98392060F03EC7E049 /* Pods-SwiftUIExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F4E13059BCAB5767062BA9027F672B2 /* Pods-SwiftUIExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 750F865E5D3470D6456553FA67EC9E02 /* PreviewPhotoViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F369046E195654B300F571C8FCC2E19 /* PreviewPhotoViewCell.swift */; }; - 7543B8575F2A5BFA4CA79F829A0AED25 /* PhotoPickerView+Camera.swift in Sources */ = {isa = PBXBuildFile; fileRef = 767599F76C817DE5BEF0E8445D6C1FEB /* PhotoPickerView+Camera.swift */; }; - 75A52E8C654053290F6151BCD924C2B8 /* KFOptionsSetter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 029044C6D7D00F27666ECE521E889FA1 /* KFOptionsSetter.swift */; }; - 75E6FD151BDF0423F64F2A20AA4DACD7 /* CameraManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E295A8FF0B29D215F764AAFD0AD355BB /* CameraManager.swift */; }; - 75EBFFFE3DBAFA4BCDB48F5B6D8423C0 /* EditorStickerTextViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70BE86252F6EC092EE5C145B0182E6DE /* EditorStickerTextViewController.swift */; }; - 75F47D5241B25E5F9CD9B38D4CA3A447 /* PhotoPreviewViewController+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B75889419F9851EA697A4E47A49707ED /* PhotoPreviewViewController+CollectionView.swift */; }; - 783100C5898A9A6C2BF5360571BBDD7B /* EditorChartletPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5860DCD7F5D0D55E1123858F08E59296 /* EditorChartletPreviewView.swift */; }; - 78614D75901B2956D9AF13FE8CBA51F7 /* Core+UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AD8D2DCE8B2BBEB8DCEFD49E51DC4ED /* Core+UIImage.swift */; }; - 788056A3B383B86AE91457E7C93703BE /* Picker+UIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD75CD6128762807A6E87DB52DFB9986 /* Picker+UIImageView.swift */; }; - 788814E855CD1B034E66C4C573E16839 /* RedirectHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F05924C6C570D89A7EF40CC75FC4482 /* RedirectHandler.swift */; }; - 7899E39CECF77AECA7E40E34A06C0568 /* AlbumViewBaseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2C6A7374F1A73E560405E0A162CC694 /* AlbumViewBaseCell.swift */; }; - 79788A66EB2990390065B9E2C1879832 /* TVMonogramView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C164151F1DD34151134DD11A5DEE119F /* TVMonogramView+Kingfisher.swift */; }; - 79B2D2A5F681928585445D798990C268 /* GIFImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CE9BBDBE8036F0CBB4184889DECA252 /* GIFImageView.swift */; }; - 7A5AC834E390CD984622ABDABA5393E5 /* EditorAdjusterView+ScreenRotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 697C38A66135A8B0636B2316861EC599 /* EditorAdjusterView+ScreenRotation.swift */; }; - 7A6F42AC26F77D2B5D39C8F0011B3227 /* EditorChartletViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649ECCC364FC87F766A0950349783084 /* EditorChartletViewController.swift */; }; - 7ACD416819012F57F266F4B35434E4C9 /* HXPhotoPicker-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 58C46ED39CD4FF73D195FD90B48FC96C /* HXPhotoPicker-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B74F9F3BB3BFF55CFD0D9215E07B0B5 /* SystemCameraConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2325146BDDB2A1EB3C6E31AAADD8F967 /* SystemCameraConfiguration.swift */; }; - 7C5C8FBD0DA679F01E8201F2D91DB78D /* SystemCameraViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 575CD8550C09242EAF6915E03652B776 /* SystemCameraViewController.swift */; }; - 7CEF4F35D1E64625C704C045850233EA /* ExtensionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30AD68F15E4D4918367FC88EB9DC8FCE /* ExtensionHelpers.swift */; }; - 7DF00C3831638C7BFA2EDFB5C20E902C /* Core+CGFloat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05AD8FFA8BABA6EFEAE10B1640EDEFD0 /* Core+CGFloat.swift */; }; - 7E231CDCDBC494814F678F45A0D6BBD0 /* EditorPlayAuido.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE89711CBB93C755685C6EC1E88AB13A /* EditorPlayAuido.swift */; }; - 7E27077FFAF0521E34515A1FF69EF388 /* EditorViewController+UINavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F37845621CE8B7E9E527CC9B602FF41 /* EditorViewController+UINavigationController.swift */; }; - 7F419B61F148415C73EB7967013412E3 /* EditorChartletViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98796AFEB9EA10C9EE126D4E2DB2483B /* EditorChartletViewCell.swift */; }; - 802C0800B9ED09193CE6F2210E79329B /* Picker+UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13AB52F619E70FAE63B23C06AAD9FFA /* Picker+UIViewController.swift */; }; - 81B071001B8A6897693452C38EF60659 /* PhotoSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B4DCE9DCB46B294A3090927A37AF999 /* PhotoSplitViewController.swift */; }; - 81B3F8657591044AD6F4DCC27747C4F2 /* Core+UICollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E58552A6D6402199DBD939CF6A162B7 /* Core+UICollectionView.swift */; }; - 822B991985D7678DD1D318ECC43A5FF4 /* AssetManager+PlayerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E90E1F38138006C9D29C2E4F4B9ABD4 /* AssetManager+PlayerItem.swift */; }; - 829E7B7F1BB4435D9672972C285EC8F5 /* CPListItem+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDAFD1BCFDE52E8E0E0AE0D784590CD6 /* CPListItem+Kingfisher.swift */; }; - 82CB5F26BE4797D49FFFFB7366CB24A7 /* ExportPreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7EE5A2D4D50C55CFFD6377D36A86F66 /* ExportPreset.swift */; }; - 830906CDFC21303681316FA58EFBED24 /* Core+UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAA3A59350274D54B9CD9E118D9D4840 /* Core+UIViewController.swift */; }; - 8317993B78B635F865A3F7883B9134E9 /* AssetManager+Asset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D9A383E1876165C39EE6C21AEABA8D7 /* AssetManager+Asset.swift */; }; - 83C8CE080019E51777D565C01F038A31 /* VideoPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC21C52322E101141A0CFFF9BD54DF0 /* VideoPlayerView.swift */; }; - 850527D970A45B024A1D74925BC837BF /* AssetManager+ImageURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = E66BEE4736B890C42ECAA83AF1389989 /* AssetManager+ImageURL.swift */; }; - 85B761178BBA4A2FA4B9B70D835B43B6 /* PhotosUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72982AF715DD53C56D5BB7691286B11E /* PhotosUI.framework */; }; - 85BFC7FD921D6B8B1443D2F02F57F014 /* KingfisherOptionsInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 834D29E5C3E1BDF0E44CB3DAA4158A87 /* KingfisherOptionsInfo.swift */; }; - 85C8560DDB470F68E94360240F9AAC97 /* PhotoFetchAssetCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6ABDA47D9AD33B985B4A5CDC0BA601D /* PhotoFetchAssetCollection.swift */; }; - 87B95D82C4A7F7DBB5ECCF2E75C6F0CF /* EditorStickerTextView+Draw.swift in Sources */ = {isa = PBXBuildFile; fileRef = A46CE765D715464756681E0905328994 /* EditorStickerTextView+Draw.swift */; }; - 87CF254EF19FC9D68FD9C0F797D8F890 /* PhotoPickerControllerAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A0E7AAF7A7B7C9395033FD91706717D /* PhotoPickerControllerAnimator.swift */; }; - 88748D9D53660D14AD9FBEF1310945D2 /* PhotoPickerListSwipeSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = A276E646998209B9C92E1B536F361154 /* PhotoPickerListSwipeSelect.swift */; }; - 88CC756B2CF5C4C315014571FF56FF2B /* FormatIndicatedCacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65699AFB29F8E6130A55C056D24A2206 /* FormatIndicatedCacheSerializer.swift */; }; - 892D83F9C8760DE5A68C5E5009056F06 /* EditorView+AdjusterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 265A2153528E32BF8CC24BB852A5588E /* EditorView+AdjusterView.swift */; }; - 8AA4C8CAB90565B9518FEE3FEAB542A3 /* PhotoPreviewVideoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F5B73D1F283C24D8F3EF668D2CEC1C7 /* PhotoPreviewVideoView.swift */; }; - 8B732D62CACF0D8EE5083B7BE7A9A346 /* Core+UILabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54F7D2F7B75704B23A4BC5D702E899BC /* Core+UILabel.swift */; }; - 8CF0C6C73B3093D4BDB446E6DB0E46CC /* Core+UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6A95AE97907C5CB4DA88ED7CFE7C04D /* Core+UIView.swift */; }; - 8DBCC9D38800C97BC994F29F30425E17 /* PhotoPickerViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DF380872E0127279C0D665F172EB91F /* PhotoPickerViewProtocol.swift */; }; - 8F2C44610450523B134C185CC391C8D2 /* PhotoAsset+Local.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA9B5EC1CD2591BC769FD071D7D0771A /* PhotoAsset+Local.swift */; }; - 8FEE533893FCD2D1CD238AB003F35178 /* PhotoPreviewContentLivePhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1E35B955B2216B9AED62398DFA3084D /* PhotoPreviewContentLivePhotoView.swift */; }; - 900178BB0D628A4725DDDB0A0048B42F /* PhotoPreviewContentPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 235E12025186D09B943B78A364779014 /* PhotoPreviewContentPhotoView.swift */; }; - 904D0E51F91596A55B6DCD896B2B76D5 /* EmptyViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B50ECC8B37F34EE2A4442ADD290ED6A /* EmptyViewConfiguration.swift */; }; - 90D3C52498805D630DA5E8A0373440E0 /* PhotoPickerView+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 660B61B3C3A8BF2E1DB1818047E89B01 /* PhotoPickerView+Editor.swift */; }; - 90D609F6C52B45731926AF747265B40B /* PhotoAssetCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72263A4EEC7F89D470C4B451071C380A /* PhotoAssetCollection.swift */; }; - 91C9D0AA6A805FC4BBE96DC1412B6397 /* PhotoPickerLimitCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD4E0A0B70B3F1C1BA34CBD664A21F23 /* PhotoPickerLimitCell.swift */; }; - 923C41D02E437A57AD7BFC86FCEE6FED /* EditorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF6631A47CB74096BA9F169344C69A1 /* EditorType.swift */; }; - 92429F107BCE98A2F41ABB396F1ACAF7 /* EditorChartletViewListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 619608ACCF0B30401BF5B8FB0A0D5A71 /* EditorChartletViewListCell.swift */; }; - 925E7D338CD1C0501E0B7EBD738E4C1D /* PhotoPreviewViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6582730E899D29726DAFBF7F9C7458B6 /* PhotoPreviewViewCell.swift */; }; - 9275B9B80344720BB280773F0ADC079C /* CameraConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219223F37952F11D9AD77827607DB35 /* CameraConfiguration.swift */; }; - 9296B9D7DB03FEC306EB987649B4A87E /* PhotoMyAlbumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9ED540A600789494057981315788074 /* PhotoMyAlbumViewController.swift */; }; - 92B16796F6004C91CE93C7AB1BDC7A3B /* EditorMosaicView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C02989F48F707B16731145521C6EC5A /* EditorMosaicView.swift */; }; - 930369755EDB073E63253BD6F29C6489 /* ProgressCricleJoinView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD7B0159C2744532B657FDB48E1B695 /* ProgressCricleJoinView.swift */; }; - 95DACEF599F311861CEFDE0A8BEC7D3E /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B2072E1F62CD06916E56643130D850 /* Filter.swift */; }; - 9610B05D08EAC2AE6B234376D79B3108 /* PreviewMetalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2197FD38809E4AAA3B21896415C66F /* PreviewMetalView.swift */; }; - 968B430C7F04A502B7B9D828071E1D38 /* Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFEB8E150978F18259E7EBF6FE592A /* Resource.swift */; }; - 974A6C7AF8DE846AE76B8224D32168AA /* Core+AVAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1CA7E8C5693BBD6ECB451C8D853157 /* Core+AVAsset.swift */; }; - 9758DCA2094A6B87298F52A226384154 /* Placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A5A89F03EB91E27D111658D24A42706 /* Placeholder.swift */; }; - 97D4EE10E9616302DF62BB12D2CDDA83 /* GIFAnimatedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A849478CAB6F9978208E8094FE89232 /* GIFAnimatedImage.swift */; }; - 989EFACBB517ECF8D53B7EBFCBD6ED49 /* EditorStickerTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5FCC3982A39124DDCFA01F5A6FD15F6 /* EditorStickerTextView.swift */; }; - 99E1245BB5F30673577243FC100AA989 /* PhotoAlbumCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6CE513A492D6BF7000737B82AFA9FEF /* PhotoAlbumCollectionViewCell.swift */; }; - 9A0F4F198C5C8FB4F1EF942FDA73A376 /* PhotoControllerEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DB67A4B323CF58A31E86CF1661325F /* PhotoControllerEvent.swift */; }; - 9A2610A4608D548ED67DF02BF2633C24 /* String+MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = C99B91AC259E30C968881C4939849071 /* String+MD5.swift */; }; - 9A30AB9B69D089D23E537BD0F1EC1CA4 /* UIButton+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFCF9A6DD6053503818A700B70487F4 /* UIButton+Kingfisher.swift */; }; - 9A4FDA6A4EE612E84515E92086C2800F /* Picker+Array.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09C90E3781AFA0C765FBDC119A395C6 /* Picker+Array.swift */; }; - 9B1BF0CE15ED69F5BFAB68548DB35385 /* PhotoPreviewViewController+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 277D99537EE8E4E877124D9837A7722D /* PhotoPreviewViewController+Editor.swift */; }; - 9B27A62344FFA3F7C0C11DEB9E48921B /* PhotoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293D8EB8065366109775EBD530F72FCB /* PhotoError.swift */; }; - 9B8239D9CDE32B4DCF2CABAC920DCF7F /* CameraViewController+BottomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 593EDE01F9148FE9BE0E24B1E00C0DB2 /* CameraViewController+BottomView.swift */; }; - 9C93FB950013BB7D9E5C2E8CBD1A1143 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E5D00FFA46E2AB9AF4F035C31DC21D /* Foundation.framework */; }; - 9CBAF5E36FF8FA1572CFB3940B501987 /* PhotoTextCancelItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 113F47C1BA52B7966475EF2C9BA3E21A /* PhotoTextCancelItemView.swift */; }; - 9CD1506F61D100198B9D5F6E3B51E9DE /* PhotoBrowserInteractiveAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36599D3DDCE60BEE9F154B01DE6B69BA /* PhotoBrowserInteractiveAnimator.swift */; }; + 77302B3B3FDD8CE1F58A94392D7D55DB /* EditorFrameView+VideoPlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2C297C05BE70DC23D856ADFC870149C /* EditorFrameView+VideoPlay.swift */; }; + 77D2E6EE871E14BDC3F2030D50356B1B /* SystemCameraConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036A9B4BE47D203B418323338BCD1EDB /* SystemCameraConfiguration.swift */; }; + 77FA8766A51043BE1A71B3A148216BF4 /* Kingfisher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A1BBADC0C31E0AF487F1F11B235A95EB /* Kingfisher-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7B545D90409CD89C7722C53723C9D4A5 /* AssetManager+LivePhoto.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049F62DB0E2CCBB75486C09C6F466357 /* AssetManager+LivePhoto.swift */; }; + 7B69A84877BA09A073EE0B45517172E9 /* ImageResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06A616D7C985BC1F18518528DDDC0BF /* ImageResource.swift */; }; + 7B853E7560094484452F67803EC49A6B /* Core+UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508D8A94159BE4C337AF58B7A3D42A61 /* Core+UIFont.swift */; }; + 7B8E0D441D7F16B4125533EBFE71D88A /* Camera+PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421D55D3D3EBB0F7C11670B2375FF787 /* Camera+PhotoTools.swift */; }; + 7BDDBCEE9FDB7C4E0587B91A0EE5A0F3 /* AssetManager+ImageData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3588131FFF478C72C0ECE9EF2FBA99F /* AssetManager+ImageData.swift */; }; + 7C21775BF89313ADB472F1B5638E08E6 /* EditorVolumeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E8E6D39EDFB0D861DDB2C1917F2CC4 /* EditorVolumeView.swift */; }; + 7C23D4B5A41BEE50414E33681B808C46 /* PickerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89845AE8E390423D01A641A87C4A2D3B /* PickerManager.swift */; }; + 7C326D24FCDDBC1901CCE1395AC4EC1F /* EditorVideoCompositor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD24D3EF4FB9EC7C5F33B62280B5E12B /* EditorVideoCompositor.swift */; }; + 7C4C833B5593C86D40D31B32B94AC02C /* ExportPreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18E31EA705A75BEFAE3229D63C737C34 /* ExportPreset.swift */; }; + 7C7867D8CEDACD3F9738B0528925B5E9 /* KFImageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = A71D463B93E4069CBFB3045667F097C1 /* KFImageProtocol.swift */; }; + 7D44A9E0937318931A032A7781F20101 /* CameraRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E88083659F78EA6A9570941E3E0C9205 /* CameraRenderer.swift */; }; + 7E5F6A14B0B7373C8BE8A860B5A0A377 /* PhotoAsset+FileSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21E547808F2A56296B6548ACFFC06388 /* PhotoAsset+FileSize.swift */; }; + 7F41D5DCD847F1047E89968B26D1D97C /* ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7E661172480B126148380918F644BF2 /* ImageCache.swift */; }; + 7F87C97693F7EAEA526EF5712B7DBE4D /* PhotoAsset+Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE028734D59C1A8D164D96C07F3816A6 /* PhotoAsset+Image.swift */; }; + 7FC37BE89F927A9A333FE5956202629F /* CameraNormalPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFFD6F292F64160B38B6649F159D042C /* CameraNormalPreviewView.swift */; }; + 800E1908061AED13185075371DE7BBCB /* EditorFilterParameterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6598A8D0B8AB89496448B3BDB7296513 /* EditorFilterParameterView.swift */; }; + 81457AA092402D2F59171CC7A3BCC26F /* PhotoPickerListFectchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC368314D7476127F23D11119F81CDBF /* PhotoPickerListFectchCell.swift */; }; + 81619922989C38C75F1FDDA668CB9AD7 /* SliderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 175908DADDFE25A9A204580E55E18E65 /* SliderView.swift */; }; + 816EA7189583F03F33F34A82F8DC5DD7 /* GIFAnimatedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A849478CAB6F9978208E8094FE89232 /* GIFAnimatedImage.swift */; }; + 81FEC5C21C4ECF089A0A1D57B7A9FAD4 /* EditorDrawView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8792D1AF56E7CEC30F2FA0C8D0430CEE /* EditorDrawView.swift */; }; + 84326A342B33A9DB0039D8A425339EC5 /* EditorViewController+Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4692EE5D2DF60B82DCD2D183BFFD96C4 /* EditorViewController+Text.swift */; }; + 8450C285FDE8CC4915F5F5385E17B4D3 /* KFAnimatedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA52A797E57B739CB6F9C9B97A0B372F /* KFAnimatedImage.swift */; }; + 85135A1867E554F6CC4D802EA2F7E30C /* EditorAdjusterView+ScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ADC5E4717EE4BE2D4B22C45D5A71819 /* EditorAdjusterView+ScrollView.swift */; }; + 857C70EA6E1B18CD0540E46AF8D25F60 /* PhotoPickerController+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAE2825B40D14A091277CC0011BCC0D /* PhotoPickerController+Internal.swift */; }; + 87BE400BF1AD3C5A65319917152959EE /* PhotoPickerView+Camera.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775F590ED98D7B49A1FECD49ADB9E32C /* PhotoPickerView+Camera.swift */; }; + 88F571431025DB3A78236EB306C47D19 /* PhotoListCellConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B65CA76048F5133E0DA9CA7F949DF3D9 /* PhotoListCellConfiguration.swift */; }; + 8900D50F227C1D0389141B334E83287C /* EditorView+AdjusterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 265A2153528E32BF8CC24BB852A5588E /* EditorView+AdjusterView.swift */; }; + 8BB76C5A153D1535610DE26D30E32418 /* ArrowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6A11429F9B07AA636873E14188DF752 /* ArrowView.swift */; }; + 8C1CE38B965554E46C8912CDAAAEBA56 /* EditorStickerTextView+Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5FC78CD589E6694812723366EB87CE8 /* EditorStickerTextView+Delegate.swift */; }; + 8C2B58E9D44ADEA56763E310E11FECDD /* PhotoPreviewContentVideoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48123199DA99BEFC97D7E27475649D99 /* PhotoPreviewContentVideoView.swift */; }; + 8C7DAA31564424C28F45B5EA0FA3D7F6 /* PhotoBrowserInteractiveTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = A73C807DC077CEC3D2330404038260F7 /* PhotoBrowserInteractiveTransition.swift */; }; + 8C9597F63E7B58E55A2454DDB6977998 /* PassThrough.metal in Sources */ = {isa = PBXBuildFile; fileRef = 926B24654E16EDC546F2CF9EA7DD9365 /* PassThrough.metal */; }; + 8CB33D525B57628358028238EFDA79E3 /* EditorPlayAuido.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE89711CBB93C755685C6EC1E88AB13A /* EditorPlayAuido.swift */; }; + 8D23C1AF184AB4F2C4923FA23C739C6E /* EditorConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFD9464D59012E99B58D7C622186BD9 /* EditorConfiguration.swift */; }; + 8D8948FBBF570DA088B66860ACFFB04D /* PhotoAlbumController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61405EA2293726EB923EFCCF2A4927C2 /* PhotoAlbumController.swift */; }; + 8E4DA8851B93A469AF1535405071EF44 /* KFOptionsSetter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 029044C6D7D00F27666ECE521E889FA1 /* KFOptionsSetter.swift */; }; + 8EA51CFACAE46B953C8E1FC1EF4FBB2D /* PhotoManager+Download.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A28EF71CBEF8DABCD817A195C3399F2 /* PhotoManager+Download.swift */; }; + 8ECAE5BFDB15A8B2AA27152F815EE265 /* ImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9A4AE67E1781BD77660E552945CFAED /* ImageView.swift */; }; + 902326B2F936F546AA411C43777F2730 /* PhotoPickerListCondition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7971888696221E42BEB4BFA1A5FBBE7C /* PhotoPickerListCondition.swift */; }; + 904F03F29B7FF4BBEDDBD1FD611B0B41 /* PhotoAsset+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1C1D162E6C2BA9F8861E21A384C74E5 /* PhotoAsset+Equatable.swift */; }; + 91FE48179EA668D6C7CC4AA1161B2305 /* PhotoPickerView+Asset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D8A6757D53BDD501CBC3B855B96F4B3 /* PhotoPickerView+Asset.swift */; }; + 92C0969AE74483F7C78FA72E7678A38B /* PhotoFetchAssetCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9705A8FFBD684426A76D988C14EA5218 /* PhotoFetchAssetCollection.swift */; }; + 933C2B78420C644C664C6D64ADAD2E1D /* PhotoPickerFinishItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAB546120E1816D27B0285D5C572F92 /* PhotoPickerFinishItemView.swift */; }; + 93E45A28CD0E023A5C00C8B3793AA966 /* ImageFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D3D8B77F20F80031C92EA09692AFD5 /* ImageFormat.swift */; }; + 94C47001BE64B296326BEE97DB5296E1 /* EditorAdjusterView+Rotate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEF46CD3498C4FEDF9F4E831C5168CB2 /* EditorAdjusterView+Rotate.swift */; }; + 974BFC96C6253562CBCFEC4AB2CCED9A /* AssetManager+PlayerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C15AF62BC50E32C08AB512A1C616FC5C /* AssetManager+PlayerItem.swift */; }; + 97A38A4F27848BCBDA27447D5046F300 /* EditorScaleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C9AE6AF918CCBA1307C43B5126DC807 /* EditorScaleView.swift */; }; + 985453026D4F68349F37ED17063FAC5D /* EditorStickersTrashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD5F7ABA8BE8FFD9B08AFDDCC6897FC /* EditorStickersTrashView.swift */; }; + 98CECF9B611042C15C8102A404DFC04D /* Picker+UIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A2C5EF7BB13AA743DEE2FD37E655FFC /* Picker+UIImageView.swift */; }; + 98E81C68A065C5FEB2274AEFC199CFC6 /* PhotoAlbumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AA48A9FA75DFCB27309D23A80B93059 /* PhotoAlbumViewController.swift */; }; + 98F1A6E1959D1349E2DB45354130C33D /* PickerDebugLogsConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78430BCCD2A5D5718BD0D56437FCC912 /* PickerDebugLogsConfig.swift */; }; + 98FAECF48529A74AB5AC7A8DC7AA0127 /* CameraViewController+BottomView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 593EDE01F9148FE9BE0E24B1E00C0DB2 /* CameraViewController+BottomView.swift */; }; + 9911FBCB52BFB9B47893FB47E9D965ED /* PhotoPickerViewController+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB913419AE30930F2C386B630AD71436 /* PhotoPickerViewController+Toolbar.swift */; }; + 993525E646E12EF6076D12A7A32C480E /* ImageModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F7CD0244735ED98CC33370A86716CD3 /* ImageModifier.swift */; }; + 99640DCAEEFAB148662E020EFC8570AA /* EditorRatioToolViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37109A91BE3D68245FE3EB8152576050 /* EditorRatioToolViewCell.swift */; }; + 99CEA5C2FA7AAC6C3DA92819AE9F96B0 /* EditorMosaicView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C02989F48F707B16731145521C6EC5A /* EditorMosaicView.swift */; }; + 9A3D805E9515275CE1BE0FE5002DA850 /* PhotoPickerControllerFectch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 588387E33F05555C84892A55200AD878 /* PhotoPickerControllerFectch.swift */; }; + 9AB0438945AEA068712EEE3E5B0D948E /* PhotoAsset+Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DD87415A13A22FDAE54F6E74F418C77 /* PhotoAsset+Codable.swift */; }; + 9ABABDA467747791E3AC7103113DA739 /* EditorViewController+Chartlet.swift in Sources */ = {isa = PBXBuildFile; fileRef = A699175A78A74E0BC2AB80E5D84E65C7 /* EditorViewController+Chartlet.swift */; }; + 9B0F0EA0698D2ED10B6DA185658DEBA4 /* PhotoPickerControllerInteractiveAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F43848862E30E272889BC4DCB5EC3AD /* PhotoPickerControllerInteractiveAnimator.swift */; }; + 9C2894649A23529B9BB3D123D5371110 /* Core+UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3EEB95B142CE4B2CF711B86E0AD538A /* Core+UIColor.swift */; }; + 9CFF38D250358A2950D33770F2540434 /* CustomLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E281C5AABEE021E976E98B3E93273D0 /* CustomLanguage.swift */; }; 9D68DE3F8AFF24E71F7987C4F16A59BE /* Pods-HXPhotoPickerExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CD58C19BC12EA02BE62EDB5E9720B68 /* Pods-HXPhotoPickerExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DC455EA276B9F9245DCA6CE23654BDA /* PhotoPickerController+Transitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D7D16BAF9D8F68D646625871FF7D0CD /* PhotoPickerController+Transitioning.swift */; }; - 9EA7E843478EC8CD4CF2B1130680084A /* EditorCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D631632530BDB06946FCE1FF26C68D21 /* EditorCollectionView.swift */; }; - A015B6CFCE1A1A5655A22378B9A4DB05 /* AuthenticationChallengeResponsable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3861378691381ECB410F328C6E0A4271 /* AuthenticationChallengeResponsable.swift */; }; - A0A6F25AF725797F9AE437A55BEBE7F1 /* ImageTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC9D0752BD9D4858E0DB474B6E002E44 /* ImageTransition.swift */; }; - A0BAED07143D176E53841C0088161370 /* EditorView+Public.swift in Sources */ = {isa = PBXBuildFile; fileRef = C807D01E4D5C4797948E98EAA5114D23 /* EditorView+Public.swift */; }; - A1299A605C25854B32A16EBD4F3DB821 /* PhotoPickerViewController+Preview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 218277DDF37812D7E9D31E18BED7067A /* PhotoPickerViewController+Preview.swift */; }; - A1322D333F30226BECD8284608B6EA5B /* PreviewViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE09647693462C24E83B73D277CC95FC /* PreviewViewConfiguration.swift */; }; - A22C1D53AD4246B43CB368CD2C7E6D0C /* AssetManager+Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DDA08524E8C52512B6CE24D720C0800 /* AssetManager+Image.swift */; }; - A25D56F329F63AD014324DDEB2346759 /* EditorRatioToolViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37109A91BE3D68245FE3EB8152576050 /* EditorRatioToolViewCell.swift */; }; - A2FE7F55FF0BD0427CF9D33F0A443299 /* AlbumSectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C78E382FA56109F3BFB1EC17F7435C7 /* AlbumSectionHeaderView.swift */; }; - A5BD7EAF176C58714284BDFFB6C1741F /* PhotoNavigationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D6CAC478E7EE818AE2F82B131789C28 /* PhotoNavigationItem.swift */; }; - A760786C0FA8989CE9CB08233EE826CE /* AssetManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89A535377D9B3DA5092760549F6BF4FB /* AssetManager.swift */; }; - A8372882F45CD22D76094A4BB83E8526 /* DiskStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF909AE0612371ECB2A5A760F6F4598 /* DiskStorage.swift */; }; - A8492C49603DA7C2390E9FDA4B9499DD /* KFImageRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF4BE3DA44B5CA9EA978930D1D320C58 /* KFImageRenderer.swift */; }; - A8C4B7E33580617A5DCEACB03320A24F /* EditorView+UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B338129A6C8756D1999938F88B431FF /* EditorView+UIView.swift */; }; - A9773D9100A378472DFF7E90BC91CED8 /* PreviewVideoViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C043B2D857539FB903260B776BE329E5 /* PreviewVideoViewCell.swift */; }; - AA148D94CD9509DC51F68AD0076C4FB5 /* PickerCameraViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC2706A2381C9816D3828A8D073670C3 /* PickerCameraViewCell.swift */; }; - ABD9C6617EC986A4FFD1D238E801DAD4 /* EditorDrawTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BA76481D72F7A5F6B64A251FB74AA81 /* EditorDrawTool.swift */; }; - AC2705A30F9A9909E880AB9CB168F4AD /* EditorStickerTextView+Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5FC78CD589E6694812723366EB87CE8 /* EditorStickerTextView+Delegate.swift */; }; - AE253A0B4A201F262F82B7B59F7A1891 /* KingfisherError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D1DE2261D4A8F049E817D43B1D78FB2 /* KingfisherError.swift */; }; - AE4EB4EDF3EEE372082AD3F2D6E11645 /* PhotoEditorFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DD490B00C17ED0529F951AD23CF46F8 /* PhotoEditorFilter.swift */; }; - AE836128F886A4EE22B69BF31DD85CBF /* EditorMaskListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 108536C153913F3E95D736A086F5B28E /* EditorMaskListViewController.swift */; }; - AFE422ED094BC345A0F98EBE155AD89C /* Core+CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC45B8DA08F49ABBC4F8B745019CD8D7 /* Core+CALayer.swift */; }; - B0A07A2C8E04A75E515D4FFCDBBF9477 /* EditorViewController+Brush.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BD993C5753F648F768C6B193572D4C /* EditorViewController+Brush.swift */; }; - B1D7174BFDD1EC817172BA2A738286AD /* AssetManager+ImageData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0138618DBED9A53A554C7C680CBD78C3 /* AssetManager+ImageData.swift */; }; - B22FBA8EE367EEFB75061837046C199E /* EditorToolsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FCDBEAA9066B259F0EE567AAD2E4EB3 /* EditorToolsView.swift */; }; - B237C98477D4B04FB7B67AA9C9152E6E /* Picker+PhotoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F669006B7F956A560CC9B194560CA69F /* Picker+PhotoManager.swift */; }; - B347075F3AA2454FE20BECF9156D1243 /* PhotoAlbumViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FB6A771CBF505CACE6478569BB7E748 /* PhotoAlbumViewCell.swift */; }; - B372079A58F46159068BD1785F7D7322 /* PhotoPickerViewController+AlbumView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 592E3C47AB2037FAEACFDA3CED12A34B /* PhotoPickerViewController+AlbumView.swift */; }; - B390A80BA3FC6CEEDD97AAC749F64398 /* Camera+PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421D55D3D3EBB0F7C11670B2375FF787 /* Camera+PhotoTools.swift */; }; - B40301445A3E27CEA74117ACFBE50141 /* PhotoAlbumList.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCDA69814ED5A5B0DF540444A36E3817 /* PhotoAlbumList.swift */; }; - B49C7F88B4EEB50C51012CD31B424BAC /* PhotoAssetEquatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CCBEA8537CF7F5B0E9DFA40F566184E /* PhotoAssetEquatable.swift */; }; - B501E4941E5AE5D1F85CC5B77F883E7A /* PhotoAsset+Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FCC5D359D2D1556B643ED90F656A91F /* PhotoAsset+Network.swift */; }; - B5094975A0D4CE70CA95D89CB9790541 /* CallbackQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63660A48C2E814A60A1D1F6D56CCF73E /* CallbackQueue.swift */; }; - B53C30B3CA6AC2F2024C2A2F25E3C04A /* ProgressImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 819F937470EB3FBFF81CA3B5FDEB87CC /* ProgressImageView.swift */; }; - B5657C0454689BC8C89C04DF400ABB17 /* Core+URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 199E4C8DC0C74FB96A3C6781A99E722B /* Core+URL.swift */; }; - B5DC30365347EAE5A3DCC4F75A42242D /* DeviceOrientationHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCA381FB652E71487CEFFBB05FFCA781 /* DeviceOrientationHelper.swift */; }; - B633BE6B5CEC6B285CC0E25F03AC9ADB /* AlbumViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17267B5AE9E34C471949B4AADAED7992 /* AlbumViewCell.swift */; }; - B7526BEFA9AA5B67D1F4F9D19DDF3A60 /* EditorViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96848D44BCC2DEB5F35CBA4BB1FCFBBB /* EditorViewProtocol.swift */; }; - B82EF262A7992086B7330DEAEB779855 /* PhotoAlbumController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26A1DF8B53913A5E332E405298C1627F /* PhotoAlbumController.swift */; }; - B8A4911521C2AA5E0647716C6AAF3D26 /* PhotoPickerView+Cell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 350AB005092E80EC3B96F28FDD20C205 /* PhotoPickerView+Cell.swift */; }; - B8A80D2DFBA4C84CB8165FBF18F29A2D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CF7B1E334502F0240661620A7B805E6 /* UIKit.framework */; }; - B8AB809F9639D440EBB2CEA761A3EB9D /* PhotoToolBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA760584DA7F7727D72DADFEF4D64D21 /* PhotoToolBarView.swift */; }; - B8D9BD2C69C072037D14CE696FE3CFF1 /* EditorCanvasView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CD14259AFB5A98F9A7FD7421A5B3D39 /* EditorCanvasView.swift */; }; - B8E12718A8943A6A3EF1BF76D9304FB5 /* Core+Dictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11848D6132EEB82E1D33E2FEEEA26DD7 /* Core+Dictionary.swift */; }; - B95EF2AFE59FF440C3B240B9563233CA /* PhotoImageCancelItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE58743FF454EF467EF0E389E89149AB /* PhotoImageCancelItemView.swift */; }; - BB9BB79C19D98C28969586A9577626F2 /* SelectBoxView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0B1384A960A50A8BABB0E7FC8B0D676 /* SelectBoxView.swift */; }; - BBA366882A8ADD7B1A37F18FE3ADF0B0 /* AlbumListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9143BB3B021131776E6126271BE532DB /* AlbumListView.swift */; }; - BC08F692EF2B65EE58879D52676EC80F /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = B771C50BFD476BD763EB4B6AFF4E3D3B /* Image.swift */; }; - BC0E3F87DA6ACE18361DCDF602F94B27 /* AVAssetImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 686BDACBA61F5292871A71751935F318 /* AVAssetImageDataProvider.swift */; }; - BCAD082313C1B166AFD39990BF009779 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1EB3DAC10F32239997428F4E0D570E08 /* CFNetwork.framework */; }; - BDB01C9DB790E8A2F8176B9809AE34EA /* ProgressHUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1333A8BEE35ED10B75F547B57B17C965 /* ProgressHUD.swift */; }; - BDF4556609AC86EFF5A32BE6870347CE /* EditorViewController+LoadAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AE4E2F5EDCC5C2234ECFAB8EE47E82A /* EditorViewController+LoadAsset.swift */; }; - BE0B5CC5227E9693DF21F9C72F2287B9 /* Editor+PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E9DB81EFC837287B26F3197EF72FE7 /* Editor+PhotoTools.swift */; }; - BE5FA459DDCCF33D22CF0C5A097D4BDD /* PhotoPickerListConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6352859C46C0357343DE4787F3C3505 /* PhotoPickerListConfig.swift */; }; - BE6335E88123233D8A2297AE1EB606A4 /* PhotoPreviewViewController+SelectBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = F630DBDAF5F59B061F358953F59E393E /* PhotoPreviewViewController+SelectBox.swift */; }; - BF3B510E99ADC9AE69D9C8F86F3D2D1F /* EditorAudioAnimationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4659F351299A01B4C79C8CD01BEE8B4 /* EditorAudioAnimationView.swift */; }; - BF868E7179F80D9194DC50B3256A2076 /* PhotoAsset+Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65A688EB5D954DAF26C7E50549EC7C0 /* PhotoAsset+Request.swift */; }; - C01C29175916A82CB17BD44DA4A9AA98 /* EditorViewController+EditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7111CE1D77FEB26AB89E9339FB03361 /* EditorViewController+EditorView.swift */; }; - C09B97869C17C9368AA1896F04E3402D /* EditorMosaicToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBE792075FEB2DD9820C6E57A80DE041 /* EditorMosaicToolView.swift */; }; - C110137CC7B124F957673070B362866A /* CameraResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06777562807A9179FFD1E3A84B06315F /* CameraResultViewController.swift */; }; - C27BA342E338C5637B5A455E6D0148EF /* EditorView+CGFloat.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA068770D6C64E1938C7F7F47C572F45 /* EditorView+CGFloat.swift */; }; - C372E7221C997169D52D562539F61145 /* PhotoFetchAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB39C7D7F6C10F57DFEE8D0102F3C52 /* PhotoFetchAsset.swift */; }; - C428066FC79D3DBEAC7F015C87E3FC9C /* AssetManager+Authorization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FDC79E3EB259B4BFC5008740E7E882F /* AssetManager+Authorization.swift */; }; - C4437BCF30671D5CC91CF0F29CD2DC08 /* EditorFrameView+VideoPlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2C297C05BE70DC23D856ADFC870149C /* EditorFrameView+VideoPlay.swift */; }; - C5B9BB656C1A6C8C9456A75BF27FBB3E /* PhotoAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3408712BF116100D7470A0AE7D601A1 /* PhotoAsset.swift */; }; - C612A8411EC76A59BC6451463AA2117F /* HXLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6194F89150B002EBC2C4A123F50AD3C8 /* HXLog.swift */; }; - C64BB70D05F39E5A98A78B66D914E270 /* EditorConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFD9464D59012E99B58D7C622186BD9 /* EditorConfiguration.swift */; }; - C67AB13259BCEA1DF93235DCC577005E /* TextManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68E95F9874BD443F200B368CFEDE2B8F /* TextManager.swift */; }; - C6F26517A8E0BB81420B4CCDB3430678 /* CacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E790368DBD681BA616D4DD3FA72CB4B /* CacheSerializer.swift */; }; - C70FC0E68A8EAE9449F967B2BE0865A9 /* PhotoPreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 867AB56CDA8037A06051B915F5923334 /* PhotoPreviewViewController.swift */; }; - C78F35C55D522C5D1DE8C15D00F97A6C /* ExpandButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB74F1F5C0C4BF6020C375E726BF8A77 /* ExpandButton.swift */; }; - C838601087AC28C0A23575BAEF32916E /* EditorViewController+Processing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C3903DF8A4BD2C2F8F6BC40986B7964 /* EditorViewController+Processing.swift */; }; - C8477D2700DEFC05E7844F9ECA4BDD70 /* EditorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26ED062F0A632909A1719D5BAEE24592 /* EditorViewController.swift */; }; - C90F109A8FF8C849538D95E1404159D1 /* PhotoPickerListCondition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0369C6BC874F96F56992A79EB2822A0E /* PhotoPickerListCondition.swift */; }; - C96A84642D0244D2EDD2433A2C668766 /* PhotoPermissionPromptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6018A94B7075F716E9FAB4F2B9895539 /* PhotoPermissionPromptView.swift */; }; - CA987108C91F5737D20D92F427013994 /* EditorTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF01269D6305072DD687D0BF35236B1 /* EditorTypes.swift */; }; - CB3F9C39A4B61AC850AB5EFECBD08F77 /* EditorMusicViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625FCF863B554E94F9519FDAD91E0269 /* EditorMusicViewCell.swift */; }; - CC72BD90758898A31723B7DA57B68F2C /* PhotoPreviewViewControllerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42FF07D1E9BE248789638BF90402BECC /* PhotoPreviewViewControllerProtocol.swift */; }; - CCD74CF104FACC81A8097BA66F5D9BAE /* EditorViewController+Ratio.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8182B1B81ADFB6C0C8DDBABEF0CC10A0 /* EditorViewController+Ratio.swift */; }; - CCF96B98A384A7274FF0C450B4DC4FD7 /* PlayButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8D72AF93DAAB00A816DF7D4351B6AF /* PlayButton.swift */; }; - CD52E3A657980DBAA8E37C673A7AA962 /* AppearanceStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD127C655DFC9DD08CABF07EC41F542 /* AppearanceStyle.swift */; }; - CF130CF9A91165178A9AFF8C87D08384 /* KFImageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = A71D463B93E4069CBFB3045667F097C1 /* KFImageProtocol.swift */; }; - D1674B8989FB16D83334235F57B3EC52 /* EditorFiltersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 582FAF77FFFB1C8E4416A1328DAD433C /* EditorFiltersView.swift */; }; - D167A49629CCBBEFACCAEADCCDE67472 /* ImageDrawing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5D7388CB14E712D758F46F4534917F /* ImageDrawing.swift */; }; - D21AB55DC7ADE4ADE12F64A51DE31F61 /* ImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C87E40B23F1E8549A416BC1F293D9BB /* ImageDataProvider.swift */; }; - D312D1735D63D20AE5E45140E0626A7A /* PhotoPreviewListViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3DFED420961ED36CD4F276A7ACB1140 /* PhotoPreviewListViewCell.swift */; }; - D36BE5B312ADE50D44D8645875353EA3 /* Core+Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D374000D7C9F612BD0DA769801B80E08 /* Core+Bundle.swift */; }; - D376EF6965F2ACFF2E4FB9D250CC8B2A /* KFImageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B87B27C342F0BECDB124457A24C9079 /* KFImageOptions.swift */; }; - D3A3F1CCF1BD255A7D35FADA8391285E /* EditorViewController+Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = 565F3C8A13E42F29DD911B1DC7C131A4 /* EditorViewController+Await.swift */; }; - D4262C40C706DAB6220E67C9806E5736 /* PhotoPreviewContentViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D344F7E1E18F30BDB093B49472940D52 /* PhotoPreviewContentViewProtocol.swift */; }; - D4ACF6EC8F9CBB9E920CF14A43253BFE /* EditorView+ScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7164596EBEB9267D7541E484D3B5A44C /* EditorView+ScrollView.swift */; }; - D603C9967189D800DFB10700B9CA5A44 /* PickerResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = C939BCD529DF297DEDFE95FD4A4D50BE /* PickerResult.swift */; }; - D663B3D13F2C8488CFAAC9B8E105BA16 /* EditorVideoControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDA9BE81FEAE2531C2F0863FFF311913 /* EditorVideoControlView.swift */; }; - D6E489C19A907B5FCB2E749619BE7040 /* EditorChartlet.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEF3E940F42B2190326EF87F0F710AAF /* EditorChartlet.swift */; }; - D72293F7357DB57CD8C653B4C12E249B /* EditorAdjusterView+Croper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76245CA353A4969E054E81E4B0E754EF /* EditorAdjusterView+Croper.swift */; }; - D7CC252EB700E8E96C680028446C884D /* PhotoBrowserAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A39906396247B28D9EF3E8B157B6256 /* PhotoBrowserAnimator.swift */; }; - D99637AC53999E12A04429A48A9CC21C /* PhotoPreviewListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 827BE8598E67B2E17FADD3C7B128597B /* PhotoPreviewListView.swift */; }; - DA507BB1FF64ADC99E4884366FE5E0F5 /* ImagePrefetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3799EF1BB9F91022F3940A336ABA8BB /* ImagePrefetcher.swift */; }; - DAC2D948229005C5342DC11E27C644E9 /* Core+UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5BC64DB81AF37AB27984996A58943AE /* Core+UITableView.swift */; }; - DD33C34769BA2868326134FE78EFB929 /* PhotoPickerViewController+FetchAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BBD29E1D2E4AC60FFDFC72344693235 /* PhotoPickerViewController+FetchAsset.swift */; }; - DD911A7C712EE777F9667BDC95024517 /* EditorFilterParameterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6598A8D0B8AB89496448B3BDB7296513 /* EditorFilterParameterView.swift */; }; - DEA88A18D3F68DD58EC1F3AE67207609 /* EditorViewController+Chartlet.swift in Sources */ = {isa = PBXBuildFile; fileRef = A699175A78A74E0BC2AB80E5D84E65C7 /* EditorViewController+Chartlet.swift */; }; - DFE9EE8E4E7904B3C6FC9CA93D21288C /* ImageView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C246729A6105F01A8A16B833E99CD9F2 /* ImageView+Kingfisher.swift */; }; - E01B4FAFB08B3E634D34DC541FBB9879 /* EditorScaleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C9AE6AF918CCBA1307C43B5126DC807 /* EditorScaleView.swift */; }; - E03A407CE7D4A7EA4CF6488C527A54DD /* AssetManager+AVAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D51A1B311657FE1F991E06E28F3714E /* AssetManager+AVAsset.swift */; }; - E10EFDBD02C69E3F9A0D089B467BC6E6 /* EditorDrawView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8792D1AF56E7CEC30F2FA0C8D0430CEE /* EditorDrawView.swift */; }; - E13102FF69B3EE53793EFFACA934E4BD /* Core+UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC34F27DBCF76763139C9EB88D1D3585 /* Core+UIColor.swift */; }; - E2486A940FADC4FF1EA023EB8043BCE6 /* CameraRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E88083659F78EA6A9570941E3E0C9205 /* CameraRenderer.swift */; }; - E31A33900AF0023F9213319D1DC02A46 /* EditorChartletListProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 902D029FF440BB72A93F862EFA0EA300 /* EditorChartletListProtocol.swift */; }; - E3729148DE876BDA5992283F72D83E82 /* ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7E661172480B126148380918F644BF2 /* ImageCache.swift */; }; - E486291FD399EBE1E1A145C60280AD6F /* ProgressIndefiniteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 262AF06C117EFA4AEDC1148EB7CECC21 /* ProgressIndefiniteView.swift */; }; - E4C58BBB77C8E7799549FDB642DAF14F /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAA6E3B06AE4E0D863F65FBA164BB6C2 /* Storage.swift */; }; - E4CA7DA2E54159A3248272653CC13045 /* ImageModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F7CD0244735ED98CC33370A86716CD3 /* ImageModifier.swift */; }; - E57A335FCB37EF14B2DAD5B78F12EC3C /* PhotoListConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C4410BFF623BE5B3640E6D41599627 /* PhotoListConfiguration.swift */; }; - E65CD92C842A6114ED629E291A595A5A /* EditorView+AVAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = A65EBBAB70CC1C017D00B9CD724533AE /* EditorView+AVAsset.swift */; }; - E6639CEAB7E3AEDC172A0544484C5B37 /* CameraViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A60DDED2BF1A9FA06805302ECC73A52 /* CameraViewController.swift */; }; - E68D7DEBB0D0223BEB6508509117B128 /* PhotoBrowserInteractiveTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2F6A1EB98113A21E196496A44B3994 /* PhotoBrowserInteractiveTransition.swift */; }; - E7168AF8D7B7B04A364C952E6AD0E1C3 /* PhotoPickerDataStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436DB579F8C363657848D06843DA88D1 /* PhotoPickerDataStatus.swift */; }; - E9083D3A10AAE2A96C6DA381C9A93C45 /* PhotoPreviewSelectedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D697E8E6125BCA28F4852C5FE0C03F /* PhotoPreviewSelectedView.swift */; }; - EB516A5BE9AEB5EDA5BC084001B02832 /* EmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132F448A513F87AE9707FD916F9690F7 /* EmptyView.swift */; }; - EC3968FED09EF0F5A38BB063BA8307F2 /* EditorAdjusterViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D37E4195BC49A46B43FC0F1CEA0E9B /* EditorAdjusterViewProtocol.swift */; }; - ECADC494363E0A5B9222F775D82368CA /* PickerTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ABF868373C61D1280D758B884D4CCEF /* PickerTransition.swift */; }; - ED4183785E9BA6F50A46F9126A807B3E /* EditorViewController+ToolsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABDED2EF319469A253D295B795E0FDF7 /* EditorViewController+ToolsView.swift */; }; - ED561593687D820C0D0C7DE4AC5F2C95 /* PhotoPickerView+Preview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6612BAAD765E0971E4B52EB6A2E08735 /* PhotoPickerView+Preview.swift */; }; - EDAAA91324AF527E51D3848E7FA3A41C /* PhotoBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8F9854729BCAF7AC6DDB66AE2E6E30A /* PhotoBaseViewController.swift */; }; - EEC9DE4077DB7B8CD2FDF99139010DD6 /* EditorModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63169814315B9A20CAA3FEED0583B1C4 /* EditorModels.swift */; }; - EFC0CBA15806678BCA424F0F554E180E /* SelectBoxConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 301A26D5E3A055D7222B15B57E461555 /* SelectBoxConfiguration.swift */; }; - F0003CAF1B85C311865A163CC55F58E6 /* PhotoToolBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A0A49B2EC630B2FE5DFA7AB65E778E6 /* PhotoToolBar.swift */; }; - F06948106371C7A9BA8F87D17C27E0EE /* VideoEditedResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5B149D5CE84624B82AB1C127826FE69 /* VideoEditedResult.swift */; }; - F0A083C4CE661363EF027447A7F389E3 /* ProgressCircleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B22B20326F749C11B60EC278EE8A54 /* ProgressCircleView.swift */; }; - F10E629B561AE81F003D1C1F2C87F60E /* EditorAdjusterView+Rotate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEF46CD3498C4FEDF9F4E831C5168CB2 /* EditorAdjusterView+Rotate.swift */; }; - F34D7F0C49BCCD33C69F880F3A25F263 /* PhotoPickerView+Function.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE5275D86AD47973B59CF94DCF4CDC7E /* PhotoPickerView+Function.swift */; }; - F415779DC09990379BE7B7CEACB4DB0C /* PhotoPreviewListViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = A35465F3A1CA1BC230A3945FA928F491 /* PhotoPreviewListViewLayout.swift */; }; - F4D9A054BA1500E6C55673DE17959BCC /* AnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B893F3DAFC7D3C72A765D6725D0774 /* AnimatedImageView.swift */; }; - F4DE145DDC6B2318E1C62F1537EC5CD4 /* PhotoPickerListFectchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED8BB19179A89746DB5D5075C5812E8B /* PhotoPickerListFectchCell.swift */; }; - F561C867C0C2BF0DAE977D1ACA03B0F3 /* EditorVideoPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B1B6257AB0B55014B05D06F6C22BBCE /* EditorVideoPlayerView.swift */; }; - F577A7DC8A02139E74FCA8A6AC438315 /* Core+PHAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = C22DC50AF507E9DCFDC43E637655CA88 /* Core+PHAsset.swift */; }; - F5791D815BF04F308E89CFF175A7AD94 /* CameraViewController+Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = E78DB32A47431DF74ADA0F413228BACF /* CameraViewController+Result.swift */; }; - F69957AD17D410F0AB503291929D37C1 /* Picker+PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21D6CD85C6B8540247F3EC015EFEFA93 /* Picker+PhotoTools.swift */; }; - F707D92468739B85E82173DD435CCBE3 /* PhotoPickerBottomNumberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0E87F7F3A10FE54A05DE06C711082E5 /* PhotoPickerBottomNumberView.swift */; }; - F7790A069FF16D323FB62C412C9ADFB5 /* CameraControllerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B3D72BD284E712839DB2B669F8B9FA /* CameraControllerProtocol.swift */; }; - F7D2B35BCA1584C49FE781A75D5D95CC /* EditorVideoTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07A13F87C2246C241AB9F026059E902E /* EditorVideoTool.swift */; }; - F7F932D3E82B5E54CF4C9B5920CCF651 /* HXPhotoPicker.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D382F6042F2637D1229A4A89F8247158 /* HXPhotoPicker.bundle */; }; - F93CD29BDD50D2C232FF10B14F52939F /* HXPhotoPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F365FF40B42E1EE50579AC592559CF5 /* HXPhotoPicker.swift */; }; - FA720B0F0C11011C5051E0E414FF9F2E /* PhotoTools+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66A98FAAAD8F3D3AD17C9226922F7032 /* PhotoTools+File.swift */; }; - FA98FDC2CDD258B539450CA8C55B3624 /* EditorVolumeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E8E6D39EDFB0D861DDB2C1917F2CC4 /* EditorVolumeView.swift */; }; - FABBF41DADF91C251A762B870B4908BF /* PhotoPickerWeChatViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4024EF8FF215F7AC2CCE79E126BC5D9A /* PhotoPickerWeChatViewCell.swift */; }; - FAC9744F8BC12260CCB17DCE0EC4DB25 /* EditorBrushSizeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49F219A8A766BDBA195C88A4BF4B0B79 /* EditorBrushSizeView.swift */; }; - FB6DD70BDC3215D9F2196736CC24DB2A /* NSTextAttachment+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E11A037CCACB0F80C8198F2A3066942 /* NSTextAttachment+Kingfisher.swift */; }; - FBB4BA9075F2EA9997702F8BE809E58F /* WKInterfaceImage+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 775539679F9FE4628F30B900CAF405C5 /* WKInterfaceImage+Kingfisher.swift */; }; - FBC9CE4C997CAFB1885EC5508C9568AE /* PhotoPickerViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438F64113A176207EEE482A4C1AC6992 /* PhotoPickerViewCell.swift */; }; - FBFFAAFFDF223A54B228240A9F6A7DB9 /* ImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22F28C754B85DE15338E10C5FF39A90C /* ImageView.swift */; }; - FC2C4D2E53CFD61902F9D291FA6FAD02 /* PhotoPickerBaseViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E9CEF2E234FED7FAF13B21A891CEBF9 /* PhotoPickerBaseViewCell.swift */; }; + 9E54E0223EE43BB437FA3C7DB5E9366C /* Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFEB8E150978F18259E7EBF6FE592A /* Resource.swift */; }; + 9EB48670A26D132ADE92964CD7434EE3 /* EditorStickersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF49B4FE9CDCDF7E3A5EF130E081BF8 /* EditorStickersView.swift */; }; + 9EBDBEF697CD99E4D6BF570B382854A9 /* Core+String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ACC01A44213EDD76178CBC38196399D /* Core+String.swift */; }; + 9FD3C14A019AB817DF7A0A1027588A1D /* PhotoAsset+Network.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5025ACB67F9E2A67E6CD39B93AFC79B9 /* PhotoAsset+Network.swift */; }; + A0B8FD9C2D6114D8EFC82C3BEB965DB5 /* EditorStickerTextView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 914FADB1FDBDA9CECBBE4BE96CB3D04D /* EditorStickerTextView+CollectionView.swift */; }; + A0FACB6EEC8D2D0520AC35B72E3C63C2 /* EmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E84BED71C4C1D20FB1DB2BB1E79D8A8C /* EmptyView.swift */; }; + A14EE0D9F2C94482B056EA0D734285E5 /* SystemCameraViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F1C18D883FFEC96A20F9BF299EAB393 /* SystemCameraViewController.swift */; }; + A23091FFEB8EC65359399EBA59EE930E /* PhotoAsset+URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 489D1C6704909E01EA1DE307A3ED8C4A /* PhotoAsset+URL.swift */; }; + A2C7AFE7695C6DB6DF80EFA8A2E34303 /* PhotoPickerViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D68306E84F582BC5180384DE89F127EE /* PhotoPickerViewProtocol.swift */; }; + A358D6D96A1BC34E373D55F9EA50E23D /* Picker+LivePhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E9790C83FFB763C1C67107B1317CCCE /* Picker+LivePhotoTools.swift */; }; + A3A5274E62298FE21C47E53B6C985C3C /* PhotoPreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B28C46918EC83F926AB5793C76D5E14 /* PhotoPreviewViewController.swift */; }; + A4D543373305A28547CC01D464CDF974 /* PhotoDeniedAuthorization.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA508DB147D0713B4C79956CCF87E5B4 /* PhotoDeniedAuthorization.swift */; }; + A61E47FE79F33CE94748F5625E3A5F5E /* CameraManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E295A8FF0B29D215F764AAFD0AD355BB /* CameraManager.swift */; }; + A6B83A289A76858310A36A909F5ADEE8 /* EditorVideoTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07A13F87C2246C241AB9F026059E902E /* EditorVideoTool.swift */; }; + A754F19F765110BEBC5CD9B6322F6019 /* EditorView+UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30FB07ADC179E7E252DE13DE666B5F26 /* EditorView+UIImage.swift */; }; + A7923DBB7FB6DDC409A71950DB877A4F /* PhotosUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72982AF715DD53C56D5BB7691286B11E /* PhotosUI.framework */; }; + A7D1C0675FC903A04CDB9AD053B204A4 /* EditorViewController+EditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7111CE1D77FEB26AB89E9339FB03361 /* EditorViewController+EditorView.swift */; }; + A812381BA081647DC659F0680AFC653A /* EditorViewController+Ratio.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8182B1B81ADFB6C0C8DDBABEF0CC10A0 /* EditorViewController+Ratio.swift */; }; + A8D6D77095C64819E7EBE184D8D307F1 /* EditorViewController+Processing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C3903DF8A4BD2C2F8F6BC40986B7964 /* EditorViewController+Processing.swift */; }; + A9D7D31432F29B3855263D838C78248F /* PhotoListConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38765ED2D44222BB15AA52BF3681431 /* PhotoListConfiguration.swift */; }; + A9DC3A23F1CC90436B18FD1B6FDB8860 /* Core+CGFloat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BAB67015813682108BA6DA1C9EBF63B /* Core+CGFloat.swift */; }; + AA0D499970F533485895846D09115F28 /* PhotoFetchData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AF7C657641EC0F5F6D024AE6A445965 /* PhotoFetchData.swift */; }; + AB36B2EE93F4E8B96D87ACFCE368B54C /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BD95343654B609B21B9C17AB81B27AD /* Photos.framework */; }; + AB46BB73AFDA888675F66CB274316C05 /* Picker+ConfigExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32E5FBA7877CEF2F68C0DCFB3708F808 /* Picker+ConfigExtension.swift */; }; + AD0FA3C26F2700EBAEFABCFFB2AE01E9 /* PhotoPeekViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C876502D0D48B9BD5B20679D6176A150 /* PhotoPeekViewController.swift */; }; + AD89E085C3EB574A63E00DC337DA59D6 /* IndicatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C653D6783614EA05D03ADBE58C9A030 /* IndicatorType.swift */; }; + ADCE8C1ABC8859F5C7AE97333E790492 /* PhotoPickerController+PHPhotoLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04700F67F4554FFE14AC8E8125413910 /* PhotoPickerController+PHPhotoLibrary.swift */; }; + AF2796992B1C2607560678BD611E135C /* Indicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8B8776F93E0E8965FBD080CDE9DF3A1 /* Indicator.swift */; }; + AF4176D68FEA0D6686DC189BE251A0A9 /* ProgressHUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4824932E81AB8E7F97CD5F665A1C7 /* ProgressHUD.swift */; }; + AF9A02B925457D318BBDDD90F0A68EE9 /* Core+NSObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD3AFFECEF0B4181934F42356044EC36 /* Core+NSObject.swift */; }; + B03F70C79F41B41563827AC6CE009FB2 /* EditorStickerTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5FCC3982A39124DDCFA01F5A6FD15F6 /* EditorStickerTextView.swift */; }; + B06623CBA8E2DC76E908075B46646141 /* AlbumSectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0003C076B36331E5FC85DCE40DDD50E /* AlbumSectionHeaderView.swift */; }; + B0BEC0218B746D1493CEF19404CF72D0 /* EditorAdjusterView+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C283540665EBDA5D8743F8E27386DEA /* EditorAdjusterView+Video.swift */; }; + B1925BE624793F0DF021C8A3ACD0E3A0 /* EditorContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68E342DDE4ED12FFD89CFD60F303C6FA /* EditorContentView.swift */; }; + B1A65A2BAC43F43C0AA7CF42FD4A794F /* Core+UIApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = F62EC207BB4338E2814AE61BB821F469 /* Core+UIApplication.swift */; }; + B214F4EECC5447364AA72EE2676AEE38 /* PhotoPickerViewController+Camera.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5144B6BF86E9E01ED963D23F853EB8E /* PhotoPickerViewController+Camera.swift */; }; + B4A935C3E8221691C573AB0D43742075 /* Kingfisher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DCA4DC1F4A7270C57EF6B3CE1D43B5B /* Kingfisher-dummy.m */; }; + B58C249412ADD106EECE0DB49B982919 /* SelectBoxConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = E827AF2C74FB3A4153B3E0074F50E972 /* SelectBoxConfiguration.swift */; }; + B58D8C5DDEB0945EAACDB7AB7299830A /* ImagePrefetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3799EF1BB9F91022F3940A336ABA8BB /* ImagePrefetcher.swift */; }; + B684B1C78E8BB18ABB5D0A3442A4748B /* PhotoPickerView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64B2612B8997B92533F7720EAFC7DC45 /* PhotoPickerView+CollectionView.swift */; }; + B6D497E9040B6EA9916EB8A9111EEDBD /* EditorBrushSizeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49F219A8A766BDBA195C88A4BF4B0B79 /* EditorBrushSizeView.swift */; }; + B74A5B4854F49DB0AFCB498F0F6E27FC /* MemoryStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8F143F1D83379BDB9363E3B216AEF73 /* MemoryStorage.swift */; }; + B8ED049F2D5C90EB80A68FA2FDE19AEB /* Picker+PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = B194B333D0BA0494D91F90088C6CFA7D /* Picker+PhotoTools.swift */; }; + B9D57B6E1F9E535D656121708F53D69E /* Core+FileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C50A5E4339E4059172DB3FE6A8F6C8 /* Core+FileManager.swift */; }; + B9E2B3B797A30FB504B399600018E35A /* PhotoPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85900811001DF34BC738D666B63F5A75 /* PhotoPickerViewController.swift */; }; + BA3F92E0FA85DB2B5D7DA0875DD02FC3 /* EditorAdjusterView+Croper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76245CA353A4969E054E81E4B0E754EF /* EditorAdjusterView+Croper.swift */; }; + BAFD97FD50F591236E4C9AEA309F05DA /* PhotoPanGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2007445060ECA199B618006DAC3A528A /* PhotoPanGestureRecognizer.swift */; }; + BB648A76FC0A729110F83174AB5E3FD0 /* PreviewVideoControlViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A62876B0459A97FACF1F0DA83267CD9B /* PreviewVideoControlViewCell.swift */; }; + BB7DCCFF30FB7EE4C7977119430EE882 /* PickerTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D3BE211676F96EECF5E3EC9348FCA8A /* PickerTypes.swift */; }; + BBA5955BEFE85FB869B134D0BB106DAC /* KF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CAB437FB57A98B3A8FF5DA65B3CF226 /* KF.swift */; }; + BBF1B64701BD9B30ADCD8A03CBE2F24E /* EditorTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF01269D6305072DD687D0BF35236B1 /* EditorTypes.swift */; }; + BCFAECB6DDA6AA44E672B18C9DE1BB49 /* PhotoTools+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0619FDF7D32BC3E30AAF2BFD0449CFC3 /* PhotoTools+File.swift */; }; + BD0B655729310046CB79F86B4FCDAE5E /* PhotoImageCancelItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4129E70FD1CC90816EB0C3CE2AB9F69 /* PhotoImageCancelItemView.swift */; }; + BDB0815D3CD4EE9BACE0D0AB647E77DB /* PhotoPickerController+PickerData.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5017703005776E3AB07BEB55E874FA0 /* PhotoPickerController+PickerData.swift */; }; + BE4002E37DA9AE22258F21CFD22F02CA /* CameraViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A60DDED2BF1A9FA06805302ECC73A52 /* CameraViewController.swift */; }; + BE7D1BC62F87D7B9D80157C3E890DB61 /* PhotoPickerControllerAnimationTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13929D18E8BAE43DB1A380A1CFDF2BDA /* PhotoPickerControllerAnimationTransitioning.swift */; }; + BF390DB5E18111745DC182BF3C47B8D5 /* PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5AA960BBD34362163D43E6F7973AB55 /* PhotoTools.swift */; }; + C041F7888555D78B9CF6934FD449D221 /* PhotoToolBarEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED42A840A0CEA92C27B1F3E7659011A7 /* PhotoToolBarEmptyView.swift */; }; + C0A1A45D06EEFD361A54D1C08C16DBA9 /* VideoEditorMusic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DE518BE3D8C1829E483E17E37D678BF /* VideoEditorMusic.swift */; }; + C0E245EAFFE14C7166A9B74002D0AE4B /* ExtensionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30AD68F15E4D4918367FC88EB9DC8FCE /* ExtensionHelpers.swift */; }; + C274545367C49C313F79C274C009C0B3 /* PhotoPreviewContentLivePhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F027057C7DEC855E80055E825ED5D1F7 /* PhotoPreviewContentLivePhotoView.swift */; }; + C2B6BE3675C153A459F6B5E14BA5D3A3 /* PhotoPickerView+Function.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451D56FC7C8A78A5B745A2D24F5E69C2 /* PhotoPickerView+Function.swift */; }; + C300718CDCA6DCDB170DDDA6999CDAC3 /* EditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00EE5C1CB5A1C7A9538155374706FA1D /* EditorView.swift */; }; + C4005D1D31C41B2F1612847E48F6C015 /* EditorView+CGFloat.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA068770D6C64E1938C7F7F47C572F45 /* EditorView+CGFloat.swift */; }; + C56A290212F27AC9F5A866CBA568962E /* PhotoPickerData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1E094A7D682F0C1B5A02054EAC9BBE7 /* PhotoPickerData.swift */; }; + C57862A18154AB55B666963F49687C86 /* EditorMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 953DBD88221D0A58E0077303541F9206 /* EditorMaskView.swift */; }; + C597674ABFDC75F5BC7159B15E895F96 /* Core+Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F7E0959259006D034E011220CCA2F5E /* Core+Bundle.swift */; }; + C608D8741321A4E7FA87A97115DB0B3B /* Editor+CIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B28E2838D03F588207280CF82D521C0F /* Editor+CIImage.swift */; }; + C60E29444CBD705EA0C0ECDF5C2CAB19 /* EditorChartletViewListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 619608ACCF0B30401BF5B8FB0A0D5A71 /* EditorChartletViewListCell.swift */; }; + C66D1D5E59FF7B9AE4A41473F66ABE21 /* AlbumTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D438E93F7C0904151FFF0F0D9C06A7E /* AlbumTitleView.swift */; }; + C6BDCAA45F1EDC459C3E281287606A14 /* Core+PHAssetCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D7A4374AEB8523483301F1E8AF8EE80 /* Core+PHAssetCollection.swift */; }; + C74903149065D13501DC5BA65D99A32E /* CacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E790368DBD681BA616D4DD3FA72CB4B /* CacheSerializer.swift */; }; + C7A98D04A3B41DBFE74B567E54F8F1E7 /* PhotoBrowserAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21B311BD8F2B6735B99E6EB70D81727A /* PhotoBrowserAnimator.swift */; }; + C887608B59A548966C77CA0426BD1404 /* AssetResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 193FB6AF906F8C9F2588498C0DB95F47 /* AssetResult.swift */; }; + C9F5EFF1911C9937F115D38F867E4E94 /* ProgressImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ECA3FCD57A9A04C423506E5E6BDF655 /* ProgressImageView.swift */; }; + CA843C43D456C9F69E6ED59F3F262DC1 /* EditorToolsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FCDBEAA9066B259F0EE567AAD2E4EB3 /* EditorToolsView.swift */; }; + CA9FCA30BB0E79E056313D288A3B4B90 /* AnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B893F3DAFC7D3C72A765D6725D0774 /* AnimatedImageView.swift */; }; + CADB9F793C215579F148104C29A85C9A /* EditorViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C13C61A955CFED2FB963DC55C0B83E9 /* EditorViewControllerDelegate.swift */; }; + CB2387172590052ABE5D8E64D790F8BB /* EditorMusicView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57ED27CF32BDEB6C7E6357BDAE47ABE /* EditorMusicView.swift */; }; + CB8F8469C62C252D7039864C758AA5E9 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = B771C50BFD476BD763EB4B6AFF4E3D3B /* Image.swift */; }; + CCAC9517FE637E216041B32906913930 /* PhotoPickerListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8491443BBAE4085CAB4B0B5E56D13E81 /* PhotoPickerListViewController.swift */; }; + CCE10BB5DC68CD16F7482F8B4F003FCA /* Core+UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE4B421409CEFCD1486371BBE2523EE1 /* Core+UIView.swift */; }; + CE28070300C25B66AD74F062B89B32F0 /* PreviewVideoViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1DBE0E92BB14C1960077ADD77C3FE9 /* PreviewVideoViewCell.swift */; }; + CEAF0D7C289720409EBBF05992FFAD43 /* PhotoPickerView+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2B0FCDDEAD6261D51136200A93D4CF /* PhotoPickerView+Editor.swift */; }; + CEF914066E7B5518EC2A786C32056B23 /* EditorBrushColorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A49A7254E2CCD294308D8AF370E26D /* EditorBrushColorView.swift */; }; + CF707BFD6AAA4B4EE7A2CFFEA26D2F0D /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC9FF0A2D9CFC0A55619C01509FE39AD /* Result.swift */; }; + CFF69EB4E52B2103BBDC465AD4AE6F13 /* AssetPermissionsUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = E810E5FC1E9D07C6043F9C0AE6D87F2F /* AssetPermissionsUtil.swift */; }; + D01A887155F01B992C56B81B41E56081 /* PhotoPickerSelectableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F9C2113F0CAA8A8483E295A6036BA64 /* PhotoPickerSelectableViewCell.swift */; }; + D04A7B70EA379CBCBFA9AE183B032B1A /* PlayButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79DBC0DF33A355BFA9D942E84DB3BFCB /* PlayButton.swift */; }; + D05A8CF000CF7B715F2ECE21FF1AE639 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E5D00FFA46E2AB9AF4F035C31DC21D /* Foundation.framework */; }; + D05BAAD81E149C832F34E6B457B62151 /* FormatIndicatedCacheSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65699AFB29F8E6130A55C056D24A2206 /* FormatIndicatedCacheSerializer.swift */; }; + D062B7E1E476F53EFAA01CCD04399767 /* PhotoAlbumHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55FCD738AC1CFB30DDAB59D8E30D7769 /* PhotoAlbumHeaderView.swift */; }; + D148CEC323C85D4880DBEB4BBF609934 /* EditorViewController+Filters.swift in Sources */ = {isa = PBXBuildFile; fileRef = C513D837C84FDB4628C399E9DF3E40A0 /* EditorViewController+Filters.swift */; }; + D1EF24F68A1C5C4926F04BD298A084EC /* DiskStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF909AE0612371ECB2A5A760F6F4598 /* DiskStorage.swift */; }; + D264326488E381A38B4129F1C2908643 /* HXPhotoPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6024273B5F7C2F90F687324C50A21FE8 /* HXPhotoPicker.swift */; }; + D2BE83D6434242C7B9A6D900FBE5E026 /* AlbumViewBaseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A08DED19060EBA7E789DB6EF3DE513CF /* AlbumViewBaseCell.swift */; }; + D41FE44ABD1C61058B0B6539DDC68B1B /* ImageContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EB374CA2F10D5110CF8DF9612FC2FC /* ImageContext.swift */; }; + D450A91B5D6EDC5C2B34105593A69247 /* Core+CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80676E7E6F9E56313ACD0AC5E4C04A15 /* Core+CALayer.swift */; }; + D4B69149C82743C774F99AB834FC0925 /* VideoPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D2660AA5420E39F671C05CCC0DE006 /* VideoPlayerView.swift */; }; + D58915579DDED0076F49E0E8CEC62ED2 /* HXPhotoPicker.bundle in Resources */ = {isa = PBXBuildFile; fileRef = BA2B8F8F2C7A4D624E33CA3124D84416 /* HXPhotoPicker.bundle */; }; + D5B963AC95BA1D6E01DA6D7DE6B69A0A /* PhotoPickerView+Cell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE076E03B5603955E3D64B92281A74EE /* PhotoPickerView+Cell.swift */; }; + D5E906843F74A43694E55EDD34B09D4A /* CameraViewController+Preview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F5F9DC98854EECD77CE1AF1785989E4 /* CameraViewController+Preview.swift */; }; + D6CA212C9CAF97BADE298CF34076EB5D /* EditorMusicLyricViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC576D61FF2CC406429A76381944F970 /* EditorMusicLyricViewCell.swift */; }; + D7220E2F73B63C3228419E31CFA97349 /* HXBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D5571D3CF4623A0BD093BC9F3A39CE /* HXBaseViewController.swift */; }; + D7396C1E318F63862E8F297441606BA5 /* EditorMaskListProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02AA6CFB5383939780C8FC103ED3A0B2 /* EditorMaskListProtocol.swift */; }; + D7D9809CEC84D519E5976AC0FD6C9508 /* AssetSaveUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7E6DBE2D2607FAB1B89F0AEA0E13A9 /* AssetSaveUtil.swift */; }; + D8ED5E8B0D09A85A18DE61ACE675CDDE /* PhotoPreviewListViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30BF318269DB5B8EB3BCDE564FEEDB33 /* PhotoPreviewListViewCell.swift */; }; + D9585CA1173BDB870202B8F27B36A066 /* Core+UILabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58C9E88DDBEF7FA5CF5D6FE854B78D18 /* Core+UILabel.swift */; }; + DAEB386BD82338F2B8BFF2EA80D1317E /* TickView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 281C3AB60C5C3DC3C6AA448835E8AF6F /* TickView.swift */; }; + DBD31ED24ED3340A6C7F290568B234D9 /* EditorViewController+ToolsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABDED2EF319469A253D295B795E0FDF7 /* EditorViewController+ToolsView.swift */; }; + DBE6A9AAECE2C0E83137AEE80E9ACEC7 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C48F100FDE22BFB15051865715725B4 /* Box.swift */; }; + DC6BD858698947EB5AB4807B8593DB67 /* KingfisherManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0B8BB66619A56BE9921CB8D9DF82767 /* KingfisherManager.swift */; }; + DCE64FF2007875B75A1F7D4DD0E9BEBD /* PhotoNavigationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D6F7B8DD89AE8E0FCE32130A9FE7BA2 /* PhotoNavigationItem.swift */; }; + DD00731F1E3E08C53815DFA9D8BF8FA5 /* ImageDataProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6BBF7A8EDFDD0832E4E1C9E23233192 /* ImageDataProcessor.swift */; }; + DD65F1D2A117C84B9372CECCCA403604 /* Editor+PhotoTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E9DB81EFC837287B26F3197EF72FE7 /* Editor+PhotoTools.swift */; }; + DDE6FBB8A80D9EF829F45927AAEF14B6 /* EditorAudioAnimationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4659F351299A01B4C79C8CD01BEE8B4 /* EditorAudioAnimationView.swift */; }; + DDFB519B49F9467305C9345E1702D47A /* PhotoPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AEEE59209786579C6B6B91FE34EEF4 /* PhotoPickerView.swift */; }; + DEBFF821B23E4994CAB05B2F309C2A94 /* EditorModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63169814315B9A20CAA3FEED0583B1C4 /* EditorModels.swift */; }; + DEE40D82F8FD6E113968072AB0D4D4FF /* EditorVideoPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B1B6257AB0B55014B05D06F6C22BBCE /* EditorVideoPlayerView.swift */; }; + DEF0BB01CF1BF22669B89BB41D08C3CA /* EditorFrameView+Control.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3856A4E1330FB40BE19333260FB60489 /* EditorFrameView+Control.swift */; }; + DF2415BFF356CFCE888C7B4E48DA9193 /* EditorFiltersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 582FAF77FFFB1C8E4416A1328DAD433C /* EditorFiltersView.swift */; }; + E0AF42573982D7D7C7D91C933E268D10 /* AlbumListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05853881B759517E7FE182AF77D74CF /* AlbumListView.swift */; }; + E0EFADF32186A29F4530ADDC4F778C9C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E5D00FFA46E2AB9AF4F035C31DC21D /* Foundation.framework */; }; + E1051BA8556368328061BE171305FB1E /* PhotoEditorFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DD490B00C17ED0529F951AD23CF46F8 /* PhotoEditorFilter.swift */; }; + E23705F7501D93AB34104D435DEC95B9 /* AssetManager+AVAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 859BFD1B6269610888A1BB0889519072 /* AssetManager+AVAsset.swift */; }; + E2B254EC390CF12A8ACF82974CFEEC7C /* Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF9BC1B5D0E9D6745A8C2D402E0927FE /* Delegate.swift */; }; + E2DBDAAF9CBBA0681B7FC1AF25C79CE3 /* AVAssetImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 686BDACBA61F5292871A71751935F318 /* AVAssetImageDataProvider.swift */; }; + E3037B455AF3EAD52B62BD0C35D17358 /* ImageTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC9D0752BD9D4858E0DB474B6E002E44 /* ImageTransition.swift */; }; + E3DB72CA5BBE20FD2699FB1FB5B4D350 /* ProgressCircleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DCAC869A6EED603E0CE085393821706 /* ProgressCircleView.swift */; }; + E505F4BA142B5454659286364024B637 /* PhotoSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E9D7D7458BA7AE028239B74D72A136F /* PhotoSplitViewController.swift */; }; + E581ABE97ADE0B0F200E70D725B705A0 /* ImageView+Kingfisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C246729A6105F01A8A16B833E99CD9F2 /* ImageView+Kingfisher.swift */; }; + E5DF972D6D1BF6F337F9DD2362722A1B /* EditorTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE3BD898E6A7B563F09180CC07162C3B /* EditorTransition.swift */; }; + E607BD1953CCC2D08005C31141725DD9 /* PhotoPickerListConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19073562545B9DDA4683B07008671D5C /* PhotoPickerListConfig.swift */; }; + E64EF112607EDBB95D557540948078B7 /* PhotoBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BA05307FAA6EAA896BEA39AA350AECC /* PhotoBrowser.swift */; }; + E6828543C55D8D7ADDF9E391EEE80E97 /* EditedResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A5C99EBEE817C2204BBA9FEA60E6B3B /* EditedResult.swift */; }; + E792A078F03AEC2FC3FA8268B3241A99 /* ImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C87E40B23F1E8549A416BC1F293D9BB /* ImageDataProvider.swift */; }; + E7F8EE885EAA0231A4F21952130CD121 /* EditorAdjusterView+Edit.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1C7108DB1A25C7A6E8B80BFA5F808D8 /* EditorAdjusterView+Edit.swift */; }; + E805386CCF64E23E223A109FF471161B /* PhotoPickerViewController+AlbumView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A642D87754A381C626976B558BA1ADA /* PhotoPickerViewController+AlbumView.swift */; }; + E9A99D6659949B967BE6B0FEABC6AAC5 /* EditorViewController+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0EAC6FE9D7CD08A104EA00131DC5C6 /* EditorViewController+Action.swift */; }; + E9E9A031BB469077093E71A8E50C3BC6 /* CameraViewController+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76065164082017F9B18A14AFF19F3695 /* CameraViewController+Editor.swift */; }; + E9FD97E8918F6254F168BC388ABC97F7 /* EditorControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A9084EA20DFB13595E32F017EB924CD /* EditorControlView.swift */; }; + EA3E9C931DD9E947D7758ED1F83F1744 /* ImageEditedResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = D77668AB99BA197EB843224D64ABE774 /* ImageEditedResult.swift */; }; + EB115AD24D8D6C4071EAFBBD099C5A80 /* KFImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB36255D6E904725FBD19ED8D84D9C39 /* KFImage.swift */; }; + EB3D6D44F0F2C441CC47AD50B099A805 /* HXPhotoPicker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3206E34EFB98B2477F97FE05F868669A /* HXPhotoPicker-dummy.m */; }; + EB69F25B7918444F56FFA5E06DD88B53 /* PhotoBrowserAnimationTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6CA9419B6E04FF17790E72E8D9657B4 /* PhotoBrowserAnimationTransitioning.swift */; }; + EBBB06F5C9C4BD0D990A0FC702AAE70C /* EditorViewController+Mosaic.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1E6A2FE0388850ED78E6E61587E8E79 /* EditorViewController+Mosaic.swift */; }; + ED2F504DC1D0400D55ECD265AAB87030 /* Picker+Int.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC29E23788C7A6C234FE599AD189709 /* Picker+Int.swift */; }; + EF5D19ECA0F8A10571830F22A3AE14BC /* EditorViewController+Music.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546F164AF64491F16EDFB0FCF36C9FE8 /* EditorViewController+Music.swift */; }; + F112654F66EA9C6FBA876FFBA021E907 /* KFImageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B87B27C342F0BECDB124457A24C9079 /* KFImageOptions.swift */; }; + F268585AA3063CC965839D4FF3B7B9D3 /* PhotoPreviewViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD9A14582BCF5728941C575960385F10 /* PhotoPreviewViewCell.swift */; }; + F26B8B1204E1F5E4AF7F15D37FA09155 /* RequestModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF4CAAA3C063399B55C612A56504A94 /* RequestModifier.swift */; }; + F27450F1E07AD9CE8E97E556F4A884BA /* EditorVideoControlMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5425456A5DE1EFB4F4B91CE382913B19 /* EditorVideoControlMaskView.swift */; }; + F27B6BD580F6446A97C7BD1202AB7284 /* TextManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D78E5B9E22DDCFD9C6C30BC71E71A7D2 /* TextManager.swift */; }; + F31BD97F93D19128E000EB90DC089416 /* EditorMusicListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3534268656B6A7DF2068D79D8840207B /* EditorMusicListViewController.swift */; }; + F3BE56C59041362B41BB18F686FAFDDD /* PhotoPreviewViewController+NavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A49A19465EF2DAFD03CF26958148DBF /* PhotoPreviewViewController+NavigationController.swift */; }; + F54D2933E78A4E641A05742C412EC9F8 /* PickerBottomViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A7B3289BC3D97333DCD24D50B87BBC /* PickerBottomViewConfiguration.swift */; }; + F5774A2B5575852AA52AB03F61C806C4 /* EditorAdjusterView+Mirror.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E3F2A635A77829868407767AD79839E /* EditorAdjusterView+Mirror.swift */; }; + F5A6A130EDEDC487F97CD98A653C7535 /* PhotoPickerWeChatViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179A3C5769A283226ABA564AD19A2F4D /* PhotoPickerWeChatViewCell.swift */; }; + F6DA53717674E6B6501A7A021CF89659 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1EB3DAC10F32239997428F4E0D570E08 /* CFNetwork.framework */; }; + F71879549BF9B6D4F02246AA48233667 /* Source.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB80C8DF07DE68BD320E2ED991DC7644 /* Source.swift */; }; + F78ADB4CD7BA633288143F4E6ED09DDC /* NotAuthorizedConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B01E47C8C210EE77F0DF6AA6CE6A1A6 /* NotAuthorizedConfiguration.swift */; }; + F7AD9DE67AF069DFA3C41CA50A3EE9AC /* EditorCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D631632530BDB06946FCE1FF26C68D21 /* EditorCollectionView.swift */; }; + F8033B2B2844564654F2FC67FD0B72DE /* PhotoPreviewViewController+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 873CB93710BDF487E2088B2748D24AE8 /* PhotoPreviewViewController+Toolbar.swift */; }; + F9B125BCF3B904773446D405AB5C164F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CF7B1E334502F0240661620A7B805E6 /* UIKit.framework */; }; + F9E818C0086BD2A14227E586165BC5F8 /* ImageContentType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3653369AE9A7B38FBE9452B185C094FC /* ImageContentType.swift */; }; + FA19B1C938DB7BA3F7EFA5C6C7125F5C /* PhotoPreviewViewController+Editor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08F819F52F9EFEB7A123C7947C54BDC2 /* PhotoPreviewViewController+Editor.swift */; }; + FC1B36B9B21BF22647A0E2766F988614 /* Placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A5A89F03EB91E27D111658D24A42706 /* Placeholder.swift */; }; + FC5B2DC29207A123E71DEE5B0DEB6FED /* ExpandButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB74F1F5C0C4BF6020C375E726BF8A77 /* ExpandButton.swift */; }; FCC56DD47FDA9DA6B27B6C9F8E1D7C67 /* Pods-HXPhotoPickerExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E37E6CCE90E9E48BFD1256C90CB324AA /* Pods-HXPhotoPickerExample-dummy.m */; }; - FDC654232785BD15889BEFF8298BCDDE /* PhotoListCellConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4FEF6C29F9FB1F0B3E4C62ABC489A32 /* PhotoListCellConfiguration.swift */; }; - FDE3402238811DB0B5230AFAD200DDAE /* PhotoPickerControllerFectch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 996A7301C93D65797397494057D0EDAF /* PhotoPickerControllerFectch.swift */; }; - FE57ECBA894382DEBD8F7010449B246D /* ImageDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25339E87A238E9701EB7639CB812F021 /* ImageDownloader.swift */; }; - FF6E23DA40E229D5074E97CF94A53D77 /* PhotoPickerController+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC198F48319D355DF838BC856A0E51C /* PhotoPickerController+Internal.swift */; }; - FFC04306EBD1BD9C04C649444FA0D956 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E5D00FFA46E2AB9AF4F035C31DC21D /* Foundation.framework */; }; + FCD5BD2918162DBEB3804D651C95DADC /* PhotoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92A89A7A782E60160445656E193F5E73 /* PhotoError.swift */; }; + FDB92D433F139AA783EAAB17E54722EA /* PhotoPickerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D962893A7290AA113BF571E8469D259 /* PhotoPickerController.swift */; }; + FF204011A02FA1AF98061F5BF89C4150 /* CallbackQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63660A48C2E814A60A1D1F6D56CCF73E /* CallbackQueue.swift */; }; + FF87A31A2352EAA42DE25A28EE107B21 /* PreviewPhotoViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C6DDA7ADA655C06ADCDAFF63AADA322 /* PreviewPhotoViewCell.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 02D451159220541521403A575AFBA84F /* PBXContainerItemProxy */ = { + 132011D4B8408CFB6995ABD358F61892 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F8051AA643C524FA4E210DD0E6E62332; - remoteInfo = HXPhotoPicker; + remoteGlobalIDString = E8022D22FAA6690B5E1C379C1BCE1491; + remoteInfo = Kingfisher; }; - 2253E1A98E39629400A605FD3A53D7B1 /* PBXContainerItemProxy */ = { + 61650E0980D030A3EECE65295705AB9C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E8022D22FAA6690B5E1C379C1BCE1491; remoteInfo = Kingfisher; }; - 74E77B384A311FEDFB1C98AD5D15DEC1 /* PBXContainerItemProxy */ = { + 6C6E0B173DBEBC7DECC0B6728D186424 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F8051AA643C524FA4E210DD0E6E62332; remoteInfo = HXPhotoPicker; }; - 8E7B6466B8CD3DFA5A1EC1FCFF108DC0 /* PBXContainerItemProxy */ = { + 734EECDF3578E6D3AFFED985FEB46552 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = E8022D22FAA6690B5E1C379C1BCE1491; remoteInfo = Kingfisher; }; - A9341C3092F078B50B8BB56F91E803B9 /* PBXContainerItemProxy */ = { + 8EE557DF662E06D9904E4A8FE5A61354 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E8022D22FAA6690B5E1C379C1BCE1491; - remoteInfo = Kingfisher; + remoteGlobalIDString = F8051AA643C524FA4E210DD0E6E62332; + remoteInfo = HXPhotoPicker; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 005069C25CEFB0C555CBDC75E0EA7417 /* PhotoPickerFinishItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerFinishItemView.swift; sourceTree = ""; }; + 00053595473C457C7F01F8662132BE4D /* PhotoPermissionPromptView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPermissionPromptView.swift; sourceTree = ""; }; + 005DD78C8E5CAB1DEA6CB00AF3DC15DB /* SelectBoxView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SelectBoxView.swift; sourceTree = ""; }; 00EE5C1CB5A1C7A9538155374706FA1D /* EditorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorView.swift; sourceTree = ""; }; - 0138618DBED9A53A554C7C680CBD78C3 /* AssetManager+ImageData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+ImageData.swift"; sourceTree = ""; }; - 0241BE4105B52797D209EF32EEFC010E /* PickerDebugLogsConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerDebugLogsConfig.swift; sourceTree = ""; }; + 022846C123908FDCFEE7680EB3B41562 /* PhotoPickerSwitchLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerSwitchLayout.swift; sourceTree = ""; }; 029044C6D7D00F27666ECE521E889FA1 /* KFOptionsSetter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFOptionsSetter.swift; path = Sources/General/KFOptionsSetter.swift; sourceTree = ""; }; 02AA6CFB5383939780C8FC103ED3A0B2 /* EditorMaskListProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMaskListProtocol.swift; sourceTree = ""; }; - 034C1220E20241B77892C942C3B9F4B1 /* Core+NSObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+NSObject.swift"; sourceTree = ""; }; - 0369C6BC874F96F56992A79EB2822A0E /* PhotoPickerListCondition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListCondition.swift; sourceTree = ""; }; - 0386CE0832420D311DE8EC8182453E17 /* PhotoPickerController+PHPhotoLibrary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerController+PHPhotoLibrary.swift"; sourceTree = ""; }; + 036A9B4BE47D203B418323338BCD1EDB /* SystemCameraConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SystemCameraConfiguration.swift; sourceTree = ""; }; + 03C8D29DD91FC39B17393D64AA4E5475 /* Core+UIViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIViewController.swift"; sourceTree = ""; }; 046E8D52AF62433460446ED748D95868 /* EditorRatioToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorRatioToolView.swift; sourceTree = ""; }; + 04700F67F4554FFE14AC8E8125413910 /* PhotoPickerController+PHPhotoLibrary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerController+PHPhotoLibrary.swift"; sourceTree = ""; }; 047C97E634A38136209172F69170720C /* CameraViewController+Location.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CameraViewController+Location.swift"; path = "Sources/HXPhotoPicker/Camera+Location/CameraViewController+Location.swift"; sourceTree = ""; }; + 049F62DB0E2CCBB75486C09C6F466357 /* AssetManager+LivePhoto.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+LivePhoto.swift"; sourceTree = ""; }; 04E9DB81EFC837287B26F3197EF72FE7 /* Editor+PhotoTools.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Editor+PhotoTools.swift"; sourceTree = ""; }; 05105E2D8D5ED9BFEB70040CFF2F4DC7 /* HXPhotoPicker-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HXPhotoPicker-prefix.pch"; sourceTree = ""; }; - 05AD8FFA8BABA6EFEAE10B1640EDEFD0 /* Core+CGFloat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+CGFloat.swift"; sourceTree = ""; }; - 06114F087100B9550BF5BA2AA0D60AB5 /* PreviewLivePhotoViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewLivePhotoViewCell.swift; sourceTree = ""; }; + 0619FDF7D32BC3E30AAF2BFD0449CFC3 /* PhotoTools+File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoTools+File.swift"; sourceTree = ""; }; 06777562807A9179FFD1E3A84B06315F /* CameraResultViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraResultViewController.swift; sourceTree = ""; }; + 0711D9D7B135943A7B31BFF011C98956 /* PhotoAlbumCollectionCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumCollectionCell.swift; sourceTree = ""; }; 07A13F87C2246C241AB9F026059E902E /* EditorVideoTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorVideoTool.swift; sourceTree = ""; }; 07F07F295CEE0EE7F8821B24850EA7A7 /* Kingfisher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Kingfisher.modulemap; sourceTree = ""; }; - 085B2C27BF5697930115474536DC77C1 /* LanguageType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LanguageType.swift; sourceTree = ""; }; - 0966BDD375CC4BD78589C54C551E9BD0 /* ImageContentType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImageContentType.swift; sourceTree = ""; }; + 081351AEE736FFA337729568085BFA86 /* LocalAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LocalAsset.swift; sourceTree = ""; }; + 0824C5C8A788B4B9ED82C4EEE79CF945 /* PhotoPickerViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerViewCell.swift; sourceTree = ""; }; + 08F819F52F9EFEB7A123C7947C54BDC2 /* PhotoPreviewViewController+Editor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+Editor.swift"; sourceTree = ""; }; + 0956E60EB8B965630B7D80A76B487432 /* AlbumViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumViewCell.swift; sourceTree = ""; }; 09E8E6D39EDFB0D861DDB2C1917F2CC4 /* EditorVolumeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorVolumeView.swift; sourceTree = ""; }; - 0A0A49B2EC630B2FE5DFA7AB65E778E6 /* PhotoToolBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoToolBar.swift; sourceTree = ""; }; 0A2D388B59FB4C57AB700DAE43A642D5 /* CameraPreviewView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraPreviewView.swift; sourceTree = ""; }; + 0A365A5F46E1691045C24EE615F99AB1 /* Core+UIImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIImage.swift"; sourceTree = ""; }; 0AD4E13410B170862E357CF9E3EEAE0B /* Pods-HXPhotoPickerExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-HXPhotoPickerExample-frameworks.sh"; sourceTree = ""; }; + 0B772A00FD2C5AE1BA4CBB6219B8D616 /* ProgressIndefiniteView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressIndefiniteView.swift; sourceTree = ""; }; + 0BA05307FAA6EAA896BEA39AA350AECC /* PhotoBrowser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowser.swift; sourceTree = ""; }; + 0BAB67015813682108BA6DA1C9EBF63B /* Core+CGFloat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+CGFloat.swift"; sourceTree = ""; }; 0BD95343654B609B21B9C17AB81B27AD /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Photos.framework; sourceTree = DEVELOPER_DIR; }; 0C283540665EBDA5D8743F8E27386DEA /* EditorAdjusterView+Video.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorAdjusterView+Video.swift"; sourceTree = ""; }; 0CD14259AFB5A98F9A7FD7421A5B3D39 /* EditorCanvasView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorCanvasView.swift; sourceTree = ""; }; - 0DDA08524E8C52512B6CE24D720C0800 /* AssetManager+Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+Image.swift"; sourceTree = ""; }; + 0D47B82B71AC60087B0D4B099BAD1FE1 /* Picker+UIViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+UIViewController.swift"; sourceTree = ""; }; + 0D9302DCBD76A65E81A04690D8985175 /* Core+UICollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UICollectionView.swift"; sourceTree = ""; }; + 0D962893A7290AA113BF571E8469D259 /* PhotoPickerController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerController.swift; sourceTree = ""; }; 0DF49B4FE9CDCDF7E3A5EF130E081BF8 /* EditorStickersView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorStickersView.swift; sourceTree = ""; }; 0E3F99ADD415612CABF7348002AAEC47 /* EditorAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EditorAsset.swift; path = Sources/HXPhotoPicker/Editor/EditorAsset.swift; sourceTree = ""; }; - 0EB39C7D7F6C10F57DFEE8D0102F3C52 /* PhotoFetchAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoFetchAsset.swift; sourceTree = ""; }; + 0EAB546120E1816D27B0285D5C572F92 /* PhotoPickerFinishItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerFinishItemView.swift; sourceTree = ""; }; 108536C153913F3E95D736A086F5B28E /* EditorMaskListViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMaskListViewController.swift; sourceTree = ""; }; 109B519331DB3859FD48580DD8AA3E21 /* HXPhotoPicker.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HXPhotoPicker.release.xcconfig; sourceTree = ""; }; - 113F47C1BA52B7966475EF2C9BA3E21A /* PhotoTextCancelItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoTextCancelItemView.swift; sourceTree = ""; }; - 11848D6132EEB82E1D33E2FEEEA26DD7 /* Core+Dictionary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+Dictionary.swift"; sourceTree = ""; }; - 11BB5F0CEB8EDB5D8030956AA02907F2 /* CustomLanguage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CustomLanguage.swift; sourceTree = ""; }; - 132E9CB2A8E5AD7806EDD17190769C1F /* PhotoPickerSwitchLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerSwitchLayout.swift; sourceTree = ""; }; - 132F448A513F87AE9707FD916F9690F7 /* EmptyView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EmptyView.swift; sourceTree = ""; }; - 1333A8BEE35ED10B75F547B57B17C965 /* ProgressHUD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressHUD.swift; sourceTree = ""; }; - 1516137DFF605D6BF5FF57E936BE016B /* PhotoPickerController+PickerData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerController+PickerData.swift"; sourceTree = ""; }; - 1609F7AA39259586CC8D5EDB4A9D4A39 /* PhotoPickerNavigationTitle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerNavigationTitle.swift; sourceTree = ""; }; - 1715903269BC56CD4512AB888EFF45CA /* PhotoPickerViewController+PhotoList.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+PhotoList.swift"; sourceTree = ""; }; - 17267B5AE9E34C471949B4AADAED7992 /* AlbumViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumViewCell.swift; sourceTree = ""; }; - 1854C1C53173E3F65CB5F4415AA89681 /* PhotoPickerListAssets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListAssets.swift; sourceTree = ""; }; - 18D697E8E6125BCA28F4852C5FE0C03F /* PhotoPreviewSelectedView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewSelectedView.swift; sourceTree = ""; }; - 199E4C8DC0C74FB96A3C6781A99E722B /* Core+URL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+URL.swift"; sourceTree = ""; }; - 1AD1CB59A73E6328FAABA9B65436AC68 /* PhotoFetchData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoFetchData.swift; sourceTree = ""; }; + 123ACEA4BCEAE24EA1A97784CBFC11A8 /* PhotoMyAlbumViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoMyAlbumViewController.swift; sourceTree = ""; }; + 13929D18E8BAE43DB1A380A1CFDF2BDA /* PhotoPickerControllerAnimationTransitioning.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerAnimationTransitioning.swift; sourceTree = ""; }; + 14728CE560EF0C19EF3DA2D67B840185 /* AlbumTitleViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumTitleViewConfiguration.swift; sourceTree = ""; }; + 15DD5F8E79714247FB1F1F5EED8166D5 /* PhotoPickerControllerAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerAnimator.swift; sourceTree = ""; }; + 175908DADDFE25A9A204580E55E18E65 /* SliderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SliderView.swift; sourceTree = ""; }; + 179A3C5769A283226ABA564AD19A2F4D /* PhotoPickerWeChatViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerWeChatViewCell.swift; sourceTree = ""; }; + 18038FDCC4A3EDB96CEB6F8773A8440A /* PhotoBrowserInteractiveAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowserInteractiveAnimator.swift; sourceTree = ""; }; + 18E31EA705A75BEFAE3229D63C737C34 /* ExportPreset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExportPreset.swift; sourceTree = ""; }; + 19073562545B9DDA4683B07008671D5C /* PhotoPickerListConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListConfig.swift; sourceTree = ""; }; + 193FB6AF906F8C9F2588498C0DB95F47 /* AssetResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssetResult.swift; path = Sources/HXPhotoPicker/Picker/AssetResult.swift; sourceTree = ""; }; + 1A6141330D94E6B655BE747DDE36FEC4 /* PhotoPreviewViewController+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+CollectionView.swift"; sourceTree = ""; }; 1B5369749DA31AC6226D70EBB0D16001 /* EditorFilterEditView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorFilterEditView.swift; sourceTree = ""; }; 1B5D7388CB14E712D758F46F4534917F /* ImageDrawing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDrawing.swift; path = Sources/Image/ImageDrawing.swift; sourceTree = ""; }; 1B75C3BE3D630682074903CD1E32E595 /* CameraController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraController.swift; sourceTree = ""; }; 1B87B27C342F0BECDB124457A24C9079 /* KFImageOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageOptions.swift; path = Sources/SwiftUI/KFImageOptions.swift; sourceTree = ""; }; - 1BBD29E1D2E4AC60FFDFC72344693235 /* PhotoPickerViewController+FetchAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+FetchAsset.swift"; sourceTree = ""; }; + 1C5C1158364D94A41D9D3616982044C4 /* PhotoPickerView+Preview.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Preview.swift"; sourceTree = ""; }; + 1C653D6783614EA05D03ADBE58C9A030 /* IndicatorType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IndicatorType.swift; sourceTree = ""; }; 1D1DE2261D4A8F049E817D43B1D78FB2 /* KingfisherError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherError.swift; path = Sources/General/KingfisherError.swift; sourceTree = ""; }; + 1D3BE211676F96EECF5E3EC9348FCA8A /* PickerTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerTypes.swift; sourceTree = ""; }; 1D4989501298FA15692A0BBB2A21F6C9 /* Pods-SwiftUIExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SwiftUIExample.modulemap"; sourceTree = ""; }; - 1D7D16BAF9D8F68D646625871FF7D0CD /* PhotoPickerController+Transitioning.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerController+Transitioning.swift"; sourceTree = ""; }; - 1D9A383E1876165C39EE6C21AEABA8D7 /* AssetManager+Asset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+Asset.swift"; sourceTree = ""; }; + 1DF85A40A6D504D8573EB167A0DA215D /* PhotoThumbnailView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoThumbnailView.swift; sourceTree = ""; }; + 1E0254FBB44F357441BA90923C54295F /* PhotoPreviewSelectedView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewSelectedView.swift; sourceTree = ""; }; 1EB3DAC10F32239997428F4E0D570E08 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; - 1F2F6A1EB98113A21E196496A44B3994 /* PhotoBrowserInteractiveTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowserInteractiveTransition.swift; sourceTree = ""; }; - 1FB6A771CBF505CACE6478569BB7E748 /* PhotoAlbumViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumViewCell.swift; sourceTree = ""; }; - 1FCC5D359D2D1556B643ED90F656A91F /* PhotoAsset+Network.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Network.swift"; sourceTree = ""; }; - 20A2F58D6F843C5EC961444D89C49697 /* PhotoPickerList.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerList.swift; sourceTree = ""; }; - 218277DDF37812D7E9D31E18BED7067A /* PhotoPickerViewController+Preview.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+Preview.swift"; sourceTree = ""; }; - 21D6CD85C6B8540247F3EC015EFEFA93 /* Picker+PhotoTools.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+PhotoTools.swift"; sourceTree = ""; }; - 22DED0E9449185293F3DBAE799DF5894 /* PickerBottomViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerBottomViewConfiguration.swift; sourceTree = ""; }; - 22F28C754B85DE15338E10C5FF39A90C /* ImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImageView.swift; sourceTree = ""; }; - 2325146BDDB2A1EB3C6E31AAADD8F967 /* SystemCameraConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SystemCameraConfiguration.swift; sourceTree = ""; }; - 235E12025186D09B943B78A364779014 /* PhotoPreviewContentPhotoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewContentPhotoView.swift; sourceTree = ""; }; - 24D585EA470D45490504E9204F0C4D54 /* PhotoDeniedAuthorization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoDeniedAuthorization.swift; sourceTree = ""; }; + 1FE94249D2DDC30C4AC7E1182C82C28E /* PickerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerConfiguration.swift; sourceTree = ""; }; + 2007445060ECA199B618006DAC3A528A /* PhotoPanGestureRecognizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPanGestureRecognizer.swift; sourceTree = ""; }; + 2159E08188513A416B86875E9B8AD56B /* PhotoAsset+Video.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Video.swift"; sourceTree = ""; }; + 21B311BD8F2B6735B99E6EB70D81727A /* PhotoBrowserAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowserAnimator.swift; sourceTree = ""; }; + 21E547808F2A56296B6548ACFFC06388 /* PhotoAsset+FileSize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+FileSize.swift"; sourceTree = ""; }; 24DDD4A0849B06C0942057220E1E81B2 /* HXPhotoPicker */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = HXPhotoPicker; path = HXPhotoPicker.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2508B33D41DEE39D5B11E16E3646BE6A /* AlbumListConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumListConfiguration.swift; sourceTree = ""; }; 25339E87A238E9701EB7639CB812F021 /* ImageDownloader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloader.swift; path = Sources/Networking/ImageDownloader.swift; sourceTree = ""; }; - 254F6A0C57B1279136874B656ABB46FC /* PhotoPickerListCollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListCollectionView.swift; sourceTree = ""; }; 25BD878FA94DA33C8DFD57A105553389 /* RetryStrategy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RetryStrategy.swift; path = Sources/Networking/RetryStrategy.swift; sourceTree = ""; }; - 262AF06C117EFA4AEDC1148EB7CECC21 /* ProgressIndefiniteView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressIndefiniteView.swift; sourceTree = ""; }; 265A2153528E32BF8CC24BB852A5588E /* EditorView+AdjusterView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+AdjusterView.swift"; sourceTree = ""; }; 2694286ADC65E9FF6F2D109D0EDF1970 /* Pods-SwiftUIExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftUIExample-acknowledgements.markdown"; sourceTree = ""; }; - 26A1DF8B53913A5E332E405298C1627F /* PhotoAlbumController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumController.swift; sourceTree = ""; }; 26ED062F0A632909A1719D5BAEE24592 /* EditorViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorViewController.swift; sourceTree = ""; }; - 277D99537EE8E4E877124D9837A7722D /* PhotoPreviewViewController+Editor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+Editor.swift"; sourceTree = ""; }; - 290F53E8FC0DC51D8BB840D242460BFF /* PhotoPickerViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerViewController.swift; sourceTree = ""; }; - 293D8EB8065366109775EBD530F72FCB /* PhotoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoError.swift; sourceTree = ""; }; - 29C392CA1A08DAF30066CFFF92C20354 /* PhotoPreviewContentVideoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewContentVideoView.swift; sourceTree = ""; }; - 2A0E7AAF7A7B7C9395033FD91706717D /* PhotoPickerControllerAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerAnimator.swift; sourceTree = ""; }; + 26EFB4319C95DC0DFE017A090616877D /* PhotoPickerLimitCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerLimitCell.swift; sourceTree = ""; }; + 281C3AB60C5C3DC3C6AA448835E8AF6F /* TickView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TickView.swift; sourceTree = ""; }; + 2A2C5EF7BB13AA743DEE2FD37E655FFC /* Picker+UIImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+UIImageView.swift"; sourceTree = ""; }; 2A60DDED2BF1A9FA06805302ECC73A52 /* CameraViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraViewController.swift; sourceTree = ""; }; - 2AD8D2DCE8B2BBEB8DCEFD49E51DC4ED /* Core+UIImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIImage.swift"; sourceTree = ""; }; 2AE4E2F5EDCC5C2234ECFAB8EE47E82A /* EditorViewController+LoadAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+LoadAsset.swift"; sourceTree = ""; }; + 2B28C46918EC83F926AB5793C76D5E14 /* PhotoPreviewViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewViewController.swift; sourceTree = ""; }; 2BA76481D72F7A5F6B64A251FB74AA81 /* EditorDrawTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorDrawTool.swift; sourceTree = ""; }; 2BFD3D871844A55351B719A954A4B5CA /* Pods-HXPhotoPickerExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-HXPhotoPickerExample-acknowledgements.markdown"; sourceTree = ""; }; 2C48F100FDE22BFB15051865715725B4 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Utility/Box.swift; sourceTree = ""; }; - 2CCBEA8537CF7F5B0E9DFA40F566184E /* PhotoAssetEquatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAssetEquatable.swift; sourceTree = ""; }; 2CF7B1E334502F0240661620A7B805E6 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 2D51A1B311657FE1F991E06E28F3714E /* AssetManager+AVAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+AVAsset.swift"; sourceTree = ""; }; + 2D438E93F7C0904151FFF0F0D9C06A7E /* AlbumTitleView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumTitleView.swift; sourceTree = ""; }; + 2D8A6757D53BDD501CBC3B855B96F4B3 /* PhotoPickerView+Asset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Asset.swift"; sourceTree = ""; }; 2DCA4DC1F4A7270C57EF6B3CE1D43B5B /* Kingfisher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kingfisher-dummy.m"; sourceTree = ""; }; - 2DEB026FE77BDEBF3D3E8AAC3FD518D1 /* PhotoPickerControllerAnimationTransitioning.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerAnimationTransitioning.swift; sourceTree = ""; }; - 2E58552A6D6402199DBD939CF6A162B7 /* Core+UICollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UICollectionView.swift"; sourceTree = ""; }; 2E7CB30F9A54E4735D193CCC78882CD3 /* Pods-SwiftUIExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftUIExample-frameworks.sh"; sourceTree = ""; }; - 2E90E1F38138006C9D29C2E4F4B9ABD4 /* AssetManager+PlayerItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+PlayerItem.swift"; sourceTree = ""; }; - 2ED3A5F732E256A8A3B14EF83CDEB3D8 /* PhotoPreviewViewController+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+Toolbar.swift"; sourceTree = ""; }; - 2F340C58F7CEB8BCE79B89E5F76B8EB3 /* VideoPlaySliderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoPlaySliderView.swift; sourceTree = ""; }; + 2E9790C83FFB763C1C67107B1317CCCE /* Picker+LivePhotoTools.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+LivePhotoTools.swift"; sourceTree = ""; }; + 2ECA3FCD57A9A04C423506E5E6BDF655 /* ProgressImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressImageView.swift; sourceTree = ""; }; 2F4E13059BCAB5767062BA9027F672B2 /* Pods-SwiftUIExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftUIExample-umbrella.h"; sourceTree = ""; }; - 2F5B73D1F283C24D8F3EF668D2CEC1C7 /* PhotoPreviewVideoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewVideoView.swift; sourceTree = ""; }; 2FCDBEAA9066B259F0EE567AAD2E4EB3 /* EditorToolsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorToolsView.swift; sourceTree = ""; }; - 301A26D5E3A055D7222B15B57E461555 /* SelectBoxConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SelectBoxConfiguration.swift; sourceTree = ""; }; 30409E763E24F3D60C4E75BC16ED56A6 /* EditorView+PhotoTools.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+PhotoTools.swift"; sourceTree = ""; }; - 30724C165AEB236F8DAE6E982BADF966 /* PhotoAlbumCollectionCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumCollectionCell.swift; sourceTree = ""; }; 30AD68F15E4D4918367FC88EB9DC8FCE /* ExtensionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExtensionHelpers.swift; path = Sources/Utility/ExtensionHelpers.swift; sourceTree = ""; }; + 30B8DBB1C5ED8CE4941277FB5D6EFE53 /* PhotoAlbumList.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumList.swift; sourceTree = ""; }; + 30BE89D805E0519FF4CCF90F32C9CF6E /* EmptyViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EmptyViewConfiguration.swift; sourceTree = ""; }; + 30BF318269DB5B8EB3BCDE564FEEDB33 /* PhotoPreviewListViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewListViewCell.swift; sourceTree = ""; }; 30FB07ADC179E7E252DE13DE666B5F26 /* EditorView+UIImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+UIImage.swift"; sourceTree = ""; }; + 316F4071B94B6FB101EAD3B1400950A0 /* LivePhotoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LivePhotoError.swift; sourceTree = ""; }; 3206E34EFB98B2477F97FE05F868669A /* HXPhotoPicker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HXPhotoPicker-dummy.m"; sourceTree = ""; }; + 324E5277BB60D5E37C7D16CD27D0F44A /* PhotoPickerFilterItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerFilterItemView.swift; sourceTree = ""; }; + 32E5FBA7877CEF2F68C0DCFB3708F808 /* Picker+ConfigExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+ConfigExtension.swift"; sourceTree = ""; }; + 3323D4D2A8BC9C27FEC1D6EE348CA52E /* Core+AVAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+AVAsset.swift"; sourceTree = ""; }; 336F4F6B999E09905C6D3CD9076765AB /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - 350AB005092E80EC3B96F28FDD20C205 /* PhotoPickerView+Cell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Cell.swift"; sourceTree = ""; }; + 34A9BF64900D52253B4105D660151F5F /* PreviewViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewViewConfiguration.swift; sourceTree = ""; }; 3534268656B6A7DF2068D79D8840207B /* EditorMusicListViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMusicListViewController.swift; sourceTree = ""; }; - 35C4410BFF623BE5B3640E6D41599627 /* PhotoListConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoListConfiguration.swift; sourceTree = ""; }; - 36599D3DDCE60BEE9F154B01DE6B69BA /* PhotoBrowserInteractiveAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowserInteractiveAnimator.swift; sourceTree = ""; }; + 3653369AE9A7B38FBE9452B185C094FC /* ImageContentType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImageContentType.swift; sourceTree = ""; }; 37109A91BE3D68245FE3EB8152576050 /* EditorRatioToolViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorRatioToolViewCell.swift; sourceTree = ""; }; + 374CFA55D9094B3691DE46F0718D1DD5 /* PhotoPickerNavigationTitle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerNavigationTitle.swift; sourceTree = ""; }; + 37C50A5E4339E4059172DB3FE6A8F6C8 /* Core+FileManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+FileManager.swift"; sourceTree = ""; }; 3856A4E1330FB40BE19333260FB60489 /* EditorFrameView+Control.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorFrameView+Control.swift"; sourceTree = ""; }; 3861378691381ECB410F328C6E0A4271 /* AuthenticationChallengeResponsable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationChallengeResponsable.swift; path = Sources/Networking/AuthenticationChallengeResponsable.swift; sourceTree = ""; }; - 3A54FBECEE40047D6386ACA090A7596A /* PhotoPreviewSelectedViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewSelectedViewCell.swift; sourceTree = ""; }; + 3A642D87754A381C626976B558BA1ADA /* PhotoPickerViewController+AlbumView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+AlbumView.swift"; sourceTree = ""; }; + 3A8DE631BF5A1040335EB2D5C42A3A78 /* AssetManager+LivePhotoURL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+LivePhotoURL.swift"; sourceTree = ""; }; + 3B2B0FCDDEAD6261D51136200A93D4CF /* PhotoPickerView+Editor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Editor.swift"; sourceTree = ""; }; 3BEFEB8E150978F18259E7EBF6FE592A /* Resource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resource.swift; path = Sources/General/ImageSource/Resource.swift; sourceTree = ""; }; + 3C3814F153862BB379501C2DA605163C /* PhotoAlbumControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumControllerConfiguration.swift; sourceTree = ""; }; 3DA76E48675E34635A770C316E9FEB84 /* ImageBinder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageBinder.swift; path = Sources/SwiftUI/ImageBinder.swift; sourceTree = ""; }; 3DE518BE3D8C1829E483E17E37D678BF /* VideoEditorMusic.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoEditorMusic.swift; sourceTree = ""; }; 3E790368DBD681BA616D4DD3FA72CB4B /* CacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheSerializer.swift; path = Sources/Cache/CacheSerializer.swift; sourceTree = ""; }; - 3EFFC84DF00D03AF4D6FC4C2D5CB2443 /* Picker+PhotoAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+PhotoAsset.swift"; sourceTree = ""; }; + 3E9D7D7458BA7AE028239B74D72A136F /* PhotoSplitViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoSplitViewController.swift; sourceTree = ""; }; 3F37845621CE8B7E9E527CC9B602FF41 /* EditorViewController+UINavigationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+UINavigationController.swift"; sourceTree = ""; }; 3F7CD0244735ED98CC33370A86716CD3 /* ImageModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageModifier.swift; path = Sources/Networking/ImageModifier.swift; sourceTree = ""; }; 3FFCF9A6DD6053503818A700B70487F4 /* UIButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Kingfisher.swift"; path = "Sources/Extensions/UIButton+Kingfisher.swift"; sourceTree = ""; }; - 4024EF8FF215F7AC2CCE79E126BC5D9A /* PhotoPickerWeChatViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerWeChatViewCell.swift; sourceTree = ""; }; 421D55D3D3EBB0F7C11670B2375FF787 /* Camera+PhotoTools.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Camera+PhotoTools.swift"; sourceTree = ""; }; - 42EC3AA1FD115A166689EEF77171ADE8 /* PhotoManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoManager.swift; sourceTree = ""; }; - 42FF07D1E9BE248789638BF90402BECC /* PhotoPreviewViewControllerProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewViewControllerProtocol.swift; sourceTree = ""; }; - 432662E79488B138F862A0A9F77E988F /* PhotoBrowserAnimationTransitioning.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowserAnimationTransitioning.swift; sourceTree = ""; }; - 436DB579F8C363657848D06843DA88D1 /* PhotoPickerDataStatus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerDataStatus.swift; sourceTree = ""; }; - 438F64113A176207EEE482A4C1AC6992 /* PhotoPickerViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerViewCell.swift; sourceTree = ""; }; - 43DB67A4B323CF58A31E86CF1661325F /* PhotoControllerEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoControllerEvent.swift; sourceTree = ""; }; + 4256E3206B7D81E3111A16218CD67A9A /* Core+Data.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+Data.swift"; sourceTree = ""; }; + 44C64A3AAE405023387CF947AEF3AF6B /* PhotoPickerBottomNumberView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerBottomNumberView.swift; sourceTree = ""; }; 451731B59459AFC7CAB02E8CFBACC91B /* CameraFilter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraFilter.swift; sourceTree = ""; }; + 451D56FC7C8A78A5B745A2D24F5E69C2 /* PhotoPickerView+Function.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Function.swift"; sourceTree = ""; }; 4692EE5D2DF60B82DCD2D183BFFD96C4 /* EditorViewController+Text.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Text.swift"; sourceTree = ""; }; - 4696E2B817237BBA8AE1BA22C0833DFE /* PhotoPickerView+Asset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Asset.swift"; sourceTree = ""; }; - 47288D6A78B80F96E0D054EA21858EEF /* Core+PHAssetCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+PHAssetCollection.swift"; sourceTree = ""; }; - 48E2487B094F3FA9ED0B94FB2A05255C /* DeniedAuthorizationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeniedAuthorizationView.swift; sourceTree = ""; }; + 48123199DA99BEFC97D7E27475649D99 /* PhotoPreviewContentVideoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewContentVideoView.swift; sourceTree = ""; }; + 489D1C6704909E01EA1DE307A3ED8C4A /* PhotoAsset+URL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+URL.swift"; sourceTree = ""; }; + 49172FA6B1FDA739CFB32B6127A6CA2A /* PhotoAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAsset.swift; sourceTree = ""; }; 49D3D8B77F20F80031C92EA09692AFD5 /* ImageFormat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageFormat.swift; path = Sources/Image/ImageFormat.swift; sourceTree = ""; }; 49F219A8A766BDBA195C88A4BF4B0B79 /* EditorBrushSizeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorBrushSizeView.swift; sourceTree = ""; }; 4A5C99EBEE817C2204BBA9FEA60E6B3B /* EditedResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EditedResult.swift; path = Sources/HXPhotoPicker/Editor/EditedResult.swift; sourceTree = ""; }; 4A9084EA20DFB13595E32F017EB924CD /* EditorControlView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorControlView.swift; sourceTree = ""; }; + 4AF7C657641EC0F5F6D024AE6A445965 /* PhotoFetchData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoFetchData.swift; sourceTree = ""; }; 4B338129A6C8756D1999938F88B431FF /* EditorView+UIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+UIView.swift"; sourceTree = ""; }; - 4B8D72AF93DAAB00A816DF7D4351B6AF /* PlayButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlayButton.swift; sourceTree = ""; }; - 4BCEF8AEA986ECC495BA63F38F58F7FA /* PickerInteractiveTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerInteractiveTransition.swift; sourceTree = ""; }; + 4B48D951AAB501DFC7943AC73FC6E1C1 /* ArrowViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ArrowViewConfiguration.swift; sourceTree = ""; }; 4C13C61A955CFED2FB963DC55C0B83E9 /* EditorViewControllerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorViewControllerDelegate.swift; sourceTree = ""; }; - 4C972067FD3D35AE4780CD99FE34432D /* PhotoAlbumViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumViewController.swift; sourceTree = ""; }; - 4CC21C52322E101141A0CFFF9BD54DF0 /* VideoPlayerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoPlayerView.swift; sourceTree = ""; }; + 4C9A44EECC742AD45DBA3113063EF4BE /* PhotoPreviewViewControllerProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewViewControllerProtocol.swift; sourceTree = ""; }; 4CF4CAAA3C063399B55C612A56504A94 /* RequestModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestModifier.swift; path = Sources/Networking/RequestModifier.swift; sourceTree = ""; }; 4D08B3962ACC3D37AF742AF7AF22DB72 /* EditorAdjusterView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorAdjusterView.swift; sourceTree = ""; }; - 4E0EC071D910E73172E2D65888E6A26B /* Core+String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+String.swift"; sourceTree = ""; }; + 4D50F836092281E9E7FC8A780F93F04C /* PhotoToolBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoToolBar.swift; sourceTree = ""; }; + 4D6F7B8DD89AE8E0FCE32130A9FE7BA2 /* PhotoNavigationItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoNavigationItem.swift; sourceTree = ""; }; 4E11A037CCACB0F80C8198F2A3066942 /* NSTextAttachment+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextAttachment+Kingfisher.swift"; path = "Sources/Extensions/NSTextAttachment+Kingfisher.swift"; sourceTree = ""; }; - 4F71EDEA505EF8D70954F2003BB4C6F1 /* PhotoPickerViewController+Camera.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+Camera.swift"; sourceTree = ""; }; + 4F9C2113F0CAA8A8483E295A6036BA64 /* PhotoPickerSelectableViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerSelectableViewCell.swift; sourceTree = ""; }; + 5019F96EDAABBBA2A1E9EA1197438EFE /* PhotoPickerDataStatus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerDataStatus.swift; sourceTree = ""; }; + 5025ACB67F9E2A67E6CD39B93AFC79B9 /* PhotoAsset+Network.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Network.swift"; sourceTree = ""; }; + 508D8A94159BE4C337AF58B7A3D42A61 /* Core+UIFont.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIFont.swift"; sourceTree = ""; }; + 50CB8C1829A6CA9B36C2870BCAE98236 /* PhotoAsset+Local.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Local.swift"; sourceTree = ""; }; + 51105C474365A0172DB9AE7919904603 /* HXLog.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HXLog.swift; sourceTree = ""; }; 51F1101C83AEE77604DA897196C340D9 /* Kingfisher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.release.xcconfig; sourceTree = ""; }; 5219223F37952F11D9AD77827607DB35 /* CameraConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraConfiguration.swift; sourceTree = ""; }; 5235B6E7FC022AF6CFE3B6AE86F2AC5D /* Pods-SwiftUIExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftUIExample.debug.xcconfig"; sourceTree = ""; }; - 53BDFEBC1FA2BCFFDDD90DA8452A74E0 /* PhotoPickerViewController+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+Toolbar.swift"; sourceTree = ""; }; + 53129D60C107C5942B93469B7B09C00F /* PhotoPickerListCollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListCollectionView.swift; sourceTree = ""; }; 5425456A5DE1EFB4F4B91CE382913B19 /* EditorVideoControlMaskView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorVideoControlMaskView.swift; sourceTree = ""; }; 546F164AF64491F16EDFB0FCF36C9FE8 /* EditorViewController+Music.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Music.swift"; sourceTree = ""; }; - 54986FD3B479F277CAE03AA4E1E9B3D9 /* AssetResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssetResult.swift; path = Sources/HXPhotoPicker/Picker/AssetResult.swift; sourceTree = ""; }; - 54F7D2F7B75704B23A4BC5D702E899BC /* Core+UILabel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UILabel.swift"; sourceTree = ""; }; - 5658A6FB93F3AC46D187FFF13217C20A /* PickerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerConfiguration.swift; sourceTree = ""; }; + 55FCD738AC1CFB30DDAB59D8E30D7769 /* PhotoAlbumHeaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumHeaderView.swift; sourceTree = ""; }; 565F3C8A13E42F29DD911B1DC7C131A4 /* EditorViewController+Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Await.swift"; sourceTree = ""; }; - 575CD8550C09242EAF6915E03652B776 /* SystemCameraViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SystemCameraViewController.swift; sourceTree = ""; }; - 5780C4803690A4A60C9FA01FC26F3C17 /* NotAuthorizedConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NotAuthorizedConfiguration.swift; sourceTree = ""; }; 57DBA903C8B91871A1B4432F452266FD /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Sources/Networking/SessionDelegate.swift; sourceTree = ""; }; 582FAF77FFFB1C8E4416A1328DAD433C /* EditorFiltersView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorFiltersView.swift; sourceTree = ""; }; + 585304862865EA038C14AE6C40DA979E /* PhotoAsset+Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Request.swift"; sourceTree = ""; }; 5860DCD7F5D0D55E1123858F08E59296 /* EditorChartletPreviewView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorChartletPreviewView.swift; sourceTree = ""; }; + 588387E33F05555C84892A55200AD878 /* PhotoPickerControllerFectch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerFectch.swift; sourceTree = ""; }; 58C46ED39CD4FF73D195FD90B48FC96C /* HXPhotoPicker-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HXPhotoPicker-umbrella.h"; sourceTree = ""; }; - 592E3C47AB2037FAEACFDA3CED12A34B /* PhotoPickerViewController+AlbumView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+AlbumView.swift"; sourceTree = ""; }; + 58C9E88DDBEF7FA5CF5D6FE854B78D18 /* Core+UILabel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UILabel.swift"; sourceTree = ""; }; 593EDE01F9148FE9BE0E24B1E00C0DB2 /* CameraViewController+BottomView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CameraViewController+BottomView.swift"; sourceTree = ""; }; - 5B4DCE9DCB46B294A3090927A37AF999 /* PhotoSplitViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoSplitViewController.swift; sourceTree = ""; }; + 5A28EF71CBEF8DABCD817A195C3399F2 /* PhotoManager+Download.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoManager+Download.swift"; sourceTree = ""; }; + 5AA48A9FA75DFCB27309D23A80B93059 /* PhotoAlbumViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumViewController.swift; sourceTree = ""; }; + 5C3913A37E783A552ED07CFF5BD3282D /* PickerCameraViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerCameraViewCell.swift; sourceTree = ""; }; 5CAB437FB57A98B3A8FF5DA65B3CF226 /* KF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KF.swift; path = Sources/General/KF.swift; sourceTree = ""; }; - 5E9CEF2E234FED7FAF13B21A891CEBF9 /* PhotoPickerBaseViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerBaseViewCell.swift; sourceTree = ""; }; - 6018A94B7075F716E9FAB4F2B9895539 /* PhotoPermissionPromptView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPermissionPromptView.swift; sourceTree = ""; }; - 6194F89150B002EBC2C4A123F50AD3C8 /* HXLog.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HXLog.swift; sourceTree = ""; }; + 5D953DF14408C770684F02A986FE7447 /* PhotoPickerControllerInteractiveTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerInteractiveTransition.swift; sourceTree = ""; }; + 5F1C18D883FFEC96A20F9BF299EAB393 /* SystemCameraViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SystemCameraViewController.swift; sourceTree = ""; }; + 6024273B5F7C2F90F687324C50A21FE8 /* HXPhotoPicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HXPhotoPicker.swift; path = Sources/HXPhotoPicker/Core/HXPhotoPicker.swift; sourceTree = ""; }; + 6071F8423D8DA6F25BF4DD10603DA621 /* AssetManager+ImageURL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+ImageURL.swift"; sourceTree = ""; }; + 61405EA2293726EB923EFCCF2A4927C2 /* PhotoAlbumController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumController.swift; sourceTree = ""; }; 619608ACCF0B30401BF5B8FB0A0D5A71 /* EditorChartletViewListCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorChartletViewListCell.swift; sourceTree = ""; }; 625FCF863B554E94F9519FDAD91E0269 /* EditorMusicViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMusicViewCell.swift; sourceTree = ""; }; 63169814315B9A20CAA3FEED0583B1C4 /* EditorModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorModels.swift; sourceTree = ""; }; 63660A48C2E814A60A1D1F6D56CCF73E /* CallbackQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CallbackQueue.swift; path = Sources/Utility/CallbackQueue.swift; sourceTree = ""; }; + 63B8DF493DB3E61DE45CF8384C45031A /* AssetURLResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssetURLResult.swift; path = Sources/HXPhotoPicker/Picker/AssetURLResult.swift; sourceTree = ""; }; 647A1E17AB2571B588D0802392B7125A /* Kingfisher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.debug.xcconfig; sourceTree = ""; }; 649ECCC364FC87F766A0950349783084 /* EditorChartletViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorChartletViewController.swift; sourceTree = ""; }; - 64CAC4B1373FCF618F65DCF1CDCFF351 /* SliderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SliderView.swift; sourceTree = ""; }; + 64B2612B8997B92533F7720EAFC7DC45 /* PhotoPickerView+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+CollectionView.swift"; sourceTree = ""; }; 65699AFB29F8E6130A55C056D24A2206 /* FormatIndicatedCacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormatIndicatedCacheSerializer.swift; path = Sources/Cache/FormatIndicatedCacheSerializer.swift; sourceTree = ""; }; - 6582730E899D29726DAFBF7F9C7458B6 /* PhotoPreviewViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewViewCell.swift; sourceTree = ""; }; 6598A8D0B8AB89496448B3BDB7296513 /* EditorFilterParameterView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorFilterParameterView.swift; sourceTree = ""; }; - 65B22B20326F749C11B60EC278EE8A54 /* ProgressCircleView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressCircleView.swift; sourceTree = ""; }; - 660B61B3C3A8BF2E1DB1818047E89B01 /* PhotoPickerView+Editor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Editor.swift"; sourceTree = ""; }; - 6612BAAD765E0971E4B52EB6A2E08735 /* PhotoPickerView+Preview.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Preview.swift"; sourceTree = ""; }; - 66A98FAAAD8F3D3AD17C9226922F7032 /* PhotoTools+File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoTools+File.swift"; sourceTree = ""; }; + 65A7B3289BC3D97333DCD24D50B87BBC /* PickerBottomViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerBottomViewConfiguration.swift; sourceTree = ""; }; 66F00E5F3BA70304E1B24F1099FC1CDD /* ImageDownloaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloaderDelegate.swift; path = Sources/Networking/ImageDownloaderDelegate.swift; sourceTree = ""; }; 671B3C4F24342FD0FF8573A04E43B81C /* EditorAdjusterView+FrameView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorAdjusterView+FrameView.swift"; sourceTree = ""; }; 6771F94D823107DB3AB983DE147C290D /* HXPhotoPicker-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HXPhotoPicker-Info.plist"; sourceTree = ""; }; 68005D13E0D1CECCFFB74EB0A945344A /* Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kingfisher.swift; path = Sources/General/Kingfisher.swift; sourceTree = ""; }; 686BDACBA61F5292871A71751935F318 /* AVAssetImageDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AVAssetImageDataProvider.swift; path = Sources/General/ImageSource/AVAssetImageDataProvider.swift; sourceTree = ""; }; 68E342DDE4ED12FFD89CFD60F303C6FA /* EditorContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorContentView.swift; sourceTree = ""; }; - 68E95F9874BD443F200B368CFEDE2B8F /* TextManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextManager.swift; sourceTree = ""; }; 697C38A66135A8B0636B2316861EC599 /* EditorAdjusterView+ScreenRotation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorAdjusterView+ScreenRotation.swift"; sourceTree = ""; }; - 6A5A5BB86EFDB4BB5C87A0FC8113DD19 /* PhotoPickerView+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+CollectionView.swift"; sourceTree = ""; }; 6A5A89F03EB91E27D111658D24A42706 /* Placeholder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Placeholder.swift; path = Sources/Image/Placeholder.swift; sourceTree = ""; }; - 6ABF868373C61D1280D758B884D4CCEF /* PickerTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerTransition.swift; sourceTree = ""; }; - 6AD7B0159C2744532B657FDB48E1B695 /* ProgressCricleJoinView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressCricleJoinView.swift; sourceTree = ""; }; 6B1B6257AB0B55014B05D06F6C22BBCE /* EditorVideoPlayerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorVideoPlayerView.swift; sourceTree = ""; }; - 6B50ECC8B37F34EE2A4442ADD290ED6A /* EmptyViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EmptyViewConfiguration.swift; sourceTree = ""; }; - 6DA4AD4C1C9603C39AD579E5B5E825F4 /* AssetManager+LivePhotoURL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+LivePhotoURL.swift"; sourceTree = ""; }; - 6E457F3BF11A71054126B11F685FEF8B /* Core+FileManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+FileManager.swift"; sourceTree = ""; }; + 6DF892D1FD203B7634A0EAFE901B019F /* PhotoAssetCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAssetCollection.swift; sourceTree = ""; }; + 6EA4824932E81AB8E7F97CD5F665A1C7 /* ProgressHUD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressHUD.swift; sourceTree = ""; }; 70BE86252F6EC092EE5C145B0182E6DE /* EditorStickerTextViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorStickerTextViewController.swift; sourceTree = ""; }; 7164596EBEB9267D7541E484D3B5A44C /* EditorView+ScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+ScrollView.swift"; sourceTree = ""; }; - 72263A4EEC7F89D470C4B451071C380A /* PhotoAssetCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAssetCollection.swift; sourceTree = ""; }; + 719CB988B28E2394600F644A3D9F2876 /* PreviewLivePhotoViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewLivePhotoViewCell.swift; sourceTree = ""; }; + 71BA13F666BF084FEA3F3C67530070A2 /* PhotoPickerControllerProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerProtocol.swift; sourceTree = ""; }; 72977DB27197D66AA26E360C1C1FF0AE /* Kingfisher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-prefix.pch"; sourceTree = ""; }; 72982AF715DD53C56D5BB7691286B11E /* PhotosUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PhotosUI.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/PhotosUI.framework; sourceTree = DEVELOPER_DIR; }; - 7421B0C26F61DFDCA5DC91635EC530AD /* HXBaseViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HXBaseViewController.swift; sourceTree = ""; }; + 753CE6562EF1AD97F107E8ED424FEAD8 /* Core+UIDevice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIDevice.swift"; sourceTree = ""; }; 75B2072E1F62CD06916E56643130D850 /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Image/Filter.swift; sourceTree = ""; }; 75B893F3DAFC7D3C72A765D6725D0774 /* AnimatedImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedImageView.swift; path = Sources/Views/AnimatedImageView.swift; sourceTree = ""; }; - 75C552F23A704EA06FC0F852C359DACF /* Picker+ConfigExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+ConfigExtension.swift"; sourceTree = ""; }; + 75DC5B55D491F57C01E8696D2980877E /* PhotoPickerPageViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerPageViewController.swift; sourceTree = ""; }; 75EB374CA2F10D5110CF8DF9612FC2FC /* ImageContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageContext.swift; path = Sources/SwiftUI/ImageContext.swift; sourceTree = ""; }; 75F8ACDFC1B2CFF07FB9D800D506D54F /* NSButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSButton+Kingfisher.swift"; path = "Sources/Extensions/NSButton+Kingfisher.swift"; sourceTree = ""; }; 76065164082017F9B18A14AFF19F3695 /* CameraViewController+Editor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CameraViewController+Editor.swift"; sourceTree = ""; }; 76245CA353A4969E054E81E4B0E754EF /* EditorAdjusterView+Croper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorAdjusterView+Croper.swift"; sourceTree = ""; }; - 7635C5B2F28627B7F5ACF0F3B0465C97 /* Core+UIImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIImageView.swift"; sourceTree = ""; }; - 767599F76C817DE5BEF0E8445D6C1FEB /* PhotoPickerView+Camera.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Camera.swift"; sourceTree = ""; }; + 766E2B28C31EF7265194963602853636 /* PhotoBaseViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBaseViewController.swift; sourceTree = ""; }; + 76B7D8C69B470C235C92617FD810DE27 /* AlbumListConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumListConfiguration.swift; sourceTree = ""; }; 775539679F9FE4628F30B900CAF405C5 /* WKInterfaceImage+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "WKInterfaceImage+Kingfisher.swift"; path = "Sources/Extensions/WKInterfaceImage+Kingfisher.swift"; sourceTree = ""; }; - 77804D51DDDCF767F86B7CA7D918EC00 /* IndicatorType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IndicatorType.swift; sourceTree = ""; }; + 775F590ED98D7B49A1FECD49ADB9E32C /* PhotoPickerView+Camera.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Camera.swift"; sourceTree = ""; }; + 78430BCCD2A5D5718BD0D56437FCC912 /* PickerDebugLogsConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerDebugLogsConfig.swift; sourceTree = ""; }; 7935E108482D98C377F2C9D91C4A0B78 /* HXPhotoPicker.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = HXPhotoPicker.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 79E6873C3D97B7BD15CF63F38DFE22DD /* AlbumTitleView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumTitleView.swift; sourceTree = ""; }; + 7971888696221E42BEB4BFA1A5FBBE7C /* PhotoPickerListCondition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListCondition.swift; sourceTree = ""; }; + 79DBC0DF33A355BFA9D942E84DB3BFCB /* PlayButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlayButton.swift; sourceTree = ""; }; + 7A57FCE90BF03659995AFEED15965498 /* PhotoPreviewContentPhotoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewContentPhotoView.swift; sourceTree = ""; }; 7ADC5E4717EE4BE2D4B22C45D5A71819 /* EditorAdjusterView+ScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorAdjusterView+ScrollView.swift"; sourceTree = ""; }; - 7C2E06067675A1E00855F10705105718 /* PhotoAlbumHeaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumHeaderView.swift; sourceTree = ""; }; + 7BD7239DE37E0E637C48427825E6DA26 /* CaptureVideoPreviewView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CaptureVideoPreviewView.swift; sourceTree = ""; }; 7CD58C19BC12EA02BE62EDB5E9720B68 /* Pods-HXPhotoPickerExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-HXPhotoPickerExample-umbrella.h"; sourceTree = ""; }; - 7CE9BBDBE8036F0CBB4184889DECA252 /* GIFImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GIFImageView.swift; sourceTree = ""; }; - 7D9F2A0728B98F0D270E1C4F4FDF8CC4 /* PickerManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerManager.swift; sourceTree = ""; }; + 7D7A4374AEB8523483301F1E8AF8EE80 /* Core+PHAssetCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+PHAssetCollection.swift"; sourceTree = ""; }; 7DD490B00C17ED0529F951AD23CF46F8 /* PhotoEditorFilter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoEditorFilter.swift; sourceTree = ""; }; + 7E7E6DBE2D2607FAB1B89F0AEA0E13A9 /* AssetSaveUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AssetSaveUtil.swift; sourceTree = ""; }; 7EF03C925642347FB4C179BE7900732E /* EditorStickersContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorStickersContentView.swift; sourceTree = ""; }; 7F05924C6C570D89A7EF40CC75FC4482 /* RedirectHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RedirectHandler.swift; path = Sources/Networking/RedirectHandler.swift; sourceTree = ""; }; - 7FDC79E3EB259B4BFC5008740E7E882F /* AssetManager+Authorization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+Authorization.swift"; sourceTree = ""; }; + 80676E7E6F9E56313ACD0AC5E4C04A15 /* Core+CALayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+CALayer.swift"; sourceTree = ""; }; + 814FEFAF154BE89E5C2B2A13A10F8A5F /* PhotoPickerViewController+Editor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+Editor.swift"; sourceTree = ""; }; 8182B1B81ADFB6C0C8DDBABEF0CC10A0 /* EditorViewController+Ratio.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Ratio.swift"; sourceTree = ""; }; - 819F937470EB3FBFF81CA3B5FDEB87CC /* ProgressImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressImageView.swift; sourceTree = ""; }; - 827BE8598E67B2E17FADD3C7B128597B /* PhotoPreviewListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewListView.swift; sourceTree = ""; }; 82C3A2B02B052420C4B08BB62A7AD32C /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; 834D29E5C3E1BDF0E44CB3DAA4158A87 /* KingfisherOptionsInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherOptionsInfo.swift; path = Sources/General/KingfisherOptionsInfo.swift; sourceTree = ""; }; + 8491443BBAE4085CAB4B0B5E56D13E81 /* PhotoPickerListViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListViewController.swift; sourceTree = ""; }; 84E5D00FFA46E2AB9AF4F035C31DC21D /* 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; }; + 85900811001DF34BC738D666B63F5A75 /* PhotoPickerViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerViewController.swift; sourceTree = ""; }; + 859BFD1B6269610888A1BB0889519072 /* AssetManager+AVAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+AVAsset.swift"; sourceTree = ""; }; 8603105824EF7E8A36292224AD758B3D /* HXPhotoPicker.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HXPhotoPicker.modulemap; sourceTree = ""; }; - 8679A26BF780F2E676C54467D6BB7046 /* Core+UIDevice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIDevice.swift"; sourceTree = ""; }; - 867AB56CDA8037A06051B915F5923334 /* PhotoPreviewViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewViewController.swift; sourceTree = ""; }; + 865D53C395AF75606EA6BC1BA1009B2B /* AppearanceStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AppearanceStyle.swift; sourceTree = ""; }; + 873CB93710BDF487E2088B2748D24AE8 /* PhotoPreviewViewController+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+Toolbar.swift"; sourceTree = ""; }; 8792D1AF56E7CEC30F2FA0C8D0430CEE /* EditorDrawView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorDrawView.swift; sourceTree = ""; }; - 89A535377D9B3DA5092760549F6BF4FB /* AssetManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AssetManager.swift; sourceTree = ""; }; - 89FB0B71480C8B71AEDC39450C99E63C /* ArrowViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ArrowViewConfiguration.swift; sourceTree = ""; }; - 8A9C1FF8B1653CEDDDCFDB792F41E885 /* PhotoPickerViewController+Editor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+Editor.swift"; sourceTree = ""; }; - 8B867AD78FFC3FCC7D39D7E94A83F385 /* PhotoPanGestureRecognizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPanGestureRecognizer.swift; sourceTree = ""; }; - 8BD7DB8DA37E8B3C0D15FC22FA5809E7 /* AssetManager+AVAssetExportSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+AVAssetExportSession.swift"; sourceTree = ""; }; + 89845AE8E390423D01A641A87C4A2D3B /* PickerManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerManager.swift; sourceTree = ""; }; + 8A49A19465EF2DAFD03CF26958148DBF /* PhotoPreviewViewController+NavigationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+NavigationController.swift"; sourceTree = ""; }; + 8B01E47C8C210EE77F0DF6AA6CE6A1A6 /* NotAuthorizedConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NotAuthorizedConfiguration.swift; sourceTree = ""; }; 8C3903DF8A4BD2C2F8F6BC40986B7964 /* EditorViewController+Processing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Processing.swift"; sourceTree = ""; }; + 8C6DDA7ADA655C06ADCDAFF63AADA322 /* PreviewPhotoViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewPhotoViewCell.swift; sourceTree = ""; }; 8C87E40B23F1E8549A416BC1F293D9BB /* ImageDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDataProvider.swift; path = Sources/General/ImageSource/ImageDataProvider.swift; sourceTree = ""; }; - 8D6CAC478E7EE818AE2F82B131789C28 /* PhotoNavigationItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoNavigationItem.swift; sourceTree = ""; }; + 8DCAC869A6EED603E0CE085393821706 /* ProgressCircleView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressCircleView.swift; sourceTree = ""; }; 8E083E391C07B17FD4C41EA3298E12D3 /* EditorView+GestureRecognizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+GestureRecognizer.swift"; sourceTree = ""; }; + 8E281C5AABEE021E976E98B3E93273D0 /* CustomLanguage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CustomLanguage.swift; sourceTree = ""; }; 8E3F2A635A77829868407767AD79839E /* EditorAdjusterView+Mirror.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorAdjusterView+Mirror.swift"; sourceTree = ""; }; - 8EC0C1FA352EDA1DC563D67293FE792A /* AlbumViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumViewController.swift; sourceTree = ""; }; - 8F365FF40B42E1EE50579AC592559CF5 /* HXPhotoPicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HXPhotoPicker.swift; path = Sources/HXPhotoPicker/Core/HXPhotoPicker.swift; sourceTree = ""; }; 8F5F9DC98854EECD77CE1AF1785989E4 /* CameraViewController+Preview.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CameraViewController+Preview.swift"; sourceTree = ""; }; 902D029FF440BB72A93F862EFA0EA300 /* EditorChartletListProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorChartletListProtocol.swift; sourceTree = ""; }; - 9143BB3B021131776E6126271BE532DB /* AlbumListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumListView.swift; sourceTree = ""; }; 914FADB1FDBDA9CECBBE4BE96CB3D04D /* EditorStickerTextView+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorStickerTextView+CollectionView.swift"; sourceTree = ""; }; + 916A15C9469C7807F0DD6E4E1B38EC21 /* PhotoTools+Alert.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoTools+Alert.swift"; sourceTree = ""; }; 91F7862329536E20C9E813E5B26FADFB /* EditorViewController+VideoControl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+VideoControl.swift"; sourceTree = ""; }; 926B24654E16EDC546F2CF9EA7DD9365 /* PassThrough.metal */ = {isa = PBXFileReference; includeInIndex = 1; path = PassThrough.metal; sourceTree = ""; }; - 929556B2342ABFE69D82475A81604C6F /* AssetManager+LivePhoto.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+LivePhoto.swift"; sourceTree = ""; }; + 92A89A7A782E60160445656E193F5E73 /* PhotoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoError.swift; sourceTree = ""; }; 93B3D72BD284E712839DB2B669F8B9FA /* CameraControllerProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraControllerProtocol.swift; sourceTree = ""; }; + 94A731092E5F1B8FDE1BE4F7C06EABB0 /* Picker+PhotoAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+PhotoAsset.swift"; sourceTree = ""; }; + 94D2660AA5420E39F671C05CCC0DE006 /* VideoPlayerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoPlayerView.swift; sourceTree = ""; }; 953DBD88221D0A58E0077303541F9206 /* EditorMaskView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMaskView.swift; sourceTree = ""; }; + 95AF4FAB284CB01E5FC8595544A17B37 /* PhotoLoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoLoadingView.swift; sourceTree = ""; }; 96848D44BCC2DEB5F35CBA4BB1FCFBBB /* EditorViewProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorViewProtocol.swift; sourceTree = ""; }; - 9736014E39E41C6D46FF66B0EFA7349F /* PhotoPickerControllerInteractiveAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerInteractiveAnimator.swift; sourceTree = ""; }; + 968EB7A4D2DBFC7A66B9B33AFBEA1470 /* Core+UITableView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UITableView.swift"; sourceTree = ""; }; + 9705A8FFBD684426A76D988C14EA5218 /* PhotoFetchAssetCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoFetchAssetCollection.swift; sourceTree = ""; }; 98796AFEB9EA10C9EE126D4E2DB2483B /* EditorChartletViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorChartletViewCell.swift; sourceTree = ""; }; - 99592B83F4165D3F7304BCABB4CF2434 /* PhotoPickerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerView.swift; sourceTree = ""; }; - 996A7301C93D65797397494057D0EDAF /* PhotoPickerControllerFectch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerFectch.swift; sourceTree = ""; }; - 9A39906396247B28D9EF3E8B157B6256 /* PhotoBrowserAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowserAnimator.swift; sourceTree = ""; }; + 98C2B9CD889817B0A2AFDF7AE2F3163D /* PhotoPreviewVideoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewVideoView.swift; sourceTree = ""; }; + 98D24BC598AC68446A23A685362B4771 /* PhotoPickerController+Transitioning.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerController+Transitioning.swift"; sourceTree = ""; }; 9A849478CAB6F9978208E8094FE89232 /* GIFAnimatedImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GIFAnimatedImage.swift; path = Sources/Image/GIFAnimatedImage.swift; sourceTree = ""; }; - 9AC198F48319D355DF838BC856A0E51C /* PhotoPickerController+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerController+Internal.swift"; sourceTree = ""; }; + 9ACC01A44213EDD76178CBC38196399D /* Core+String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+String.swift"; sourceTree = ""; }; 9B85EF00CEFC6595C1CD7EB1375E3521 /* EditorVideoControlViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorVideoControlViewCell.swift; sourceTree = ""; }; 9C02989F48F707B16731145521C6EC5A /* EditorMosaicView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMosaicView.swift; sourceTree = ""; }; 9C4021DAD33D56FC6A0B9D58C2718818 /* Pods-HXPhotoPickerExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-HXPhotoPickerExample.release.xcconfig"; sourceTree = ""; }; - 9C78E382FA56109F3BFB1EC17F7435C7 /* AlbumSectionHeaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumSectionHeaderView.swift; sourceTree = ""; }; + 9C7163793147F08DD6232B1F6FCBFE84 /* Core+PHAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+PHAsset.swift"; sourceTree = ""; }; 9C9AE6AF918CCBA1307C43B5126DC807 /* EditorScaleView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorScaleView.swift; sourceTree = ""; }; 9D2197FD38809E4AAA3B21896415C66F /* PreviewMetalView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewMetalView.swift; sourceTree = ""; }; + 9D3383D2FA5DECE424820FA97BE2099E /* PhotoPickerViewController+FetchAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+FetchAsset.swift"; 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; }; - 9DF380872E0127279C0D665F172EB91F /* PhotoPickerViewProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerViewProtocol.swift; sourceTree = ""; }; - 9E58ECC38D21329F07A0456B7F3440C3 /* PhotoPickerListViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListViewController.swift; sourceTree = ""; }; + 9D96E9A74BDE1BAE8EF79AF05333B6AD /* Core+URL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+URL.swift"; sourceTree = ""; }; + 9DD87415A13A22FDAE54F6E74F418C77 /* PhotoAsset+Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Codable.swift"; sourceTree = ""; }; 9EF01269D6305072DD687D0BF35236B1 /* EditorTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorTypes.swift; sourceTree = ""; }; - 9F310A341E28B55E87401E0149BCD8BD /* Core+UIFont.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIFont.swift"; sourceTree = ""; }; - 9F369046E195654B300F571C8FCC2E19 /* PreviewPhotoViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewPhotoViewCell.swift; sourceTree = ""; }; - 9FA74269CEF587DB6F50406F8953EEB3 /* PhotoPickerFilterItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerFilterItemView.swift; sourceTree = ""; }; + 9F43848862E30E272889BC4DCB5EC3AD /* PhotoPickerControllerInteractiveAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerInteractiveAnimator.swift; sourceTree = ""; }; + 9F7E0959259006D034E011220CCA2F5E /* Core+Bundle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+Bundle.swift"; sourceTree = ""; }; 9FD5F7ABA8BE8FFD9B08AFDDCC6897FC /* EditorStickersTrashView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorStickersTrashView.swift; sourceTree = ""; }; - 9FDC3CA2F2CD3706A5DF20F8E5A00E99 /* CaptureVideoPreviewView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CaptureVideoPreviewView.swift; sourceTree = ""; }; + 9FEF6522B70603FE48B5C0EA49A7EE0C /* PhotoToolBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoToolBarView.swift; sourceTree = ""; }; A0711D8AFDE3C3C534FFE4D231C189F1 /* Pods-SwiftUIExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftUIExample-acknowledgements.plist"; sourceTree = ""; }; - A09C90E3781AFA0C765FBDC119A395C6 /* Picker+Array.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+Array.swift"; sourceTree = ""; }; + A08DED19060EBA7E789DB6EF3DE513CF /* AlbumViewBaseCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumViewBaseCell.swift; sourceTree = ""; }; A1BBADC0C31E0AF487F1F11B235A95EB /* Kingfisher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-umbrella.h"; sourceTree = ""; }; + A1E094A7D682F0C1B5A02054EAC9BBE7 /* PhotoPickerData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerData.swift; sourceTree = ""; }; A1E6A2FE0388850ED78E6E61587E8E79 /* EditorViewController+Mosaic.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Mosaic.swift"; sourceTree = ""; }; - A1ED286ADBACDF82B69A16D096380A2A /* PhotoPeekViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPeekViewController.swift; sourceTree = ""; }; - A276E646998209B9C92E1B536F361154 /* PhotoPickerListSwipeSelect.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListSwipeSelect.swift; sourceTree = ""; }; - A3408712BF116100D7470A0AE7D601A1 /* PhotoAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAsset.swift; sourceTree = ""; }; - A35465F3A1CA1BC230A3945FA928F491 /* PhotoPreviewListViewLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewListViewLayout.swift; sourceTree = ""; }; - A3CA808374B43D3AD23411D7FB6534D5 /* PhotoPickerFilterViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerFilterViewController.swift; sourceTree = ""; }; A3F319F3A918E44A3477B9F8A5ED425A /* EditorMaskListViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMaskListViewCell.swift; sourceTree = ""; }; A46CE765D715464756681E0905328994 /* EditorStickerTextView+Draw.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorStickerTextView+Draw.swift"; sourceTree = ""; }; - A4FDEDE63D5E615512723B4A37E1C519 /* PhotoTools+Alert.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoTools+Alert.swift"; sourceTree = ""; }; - A4FEF6C29F9FB1F0B3E4C62ABC489A32 /* PhotoListCellConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoListCellConfiguration.swift; sourceTree = ""; }; + A62876B0459A97FACF1F0DA83267CD9B /* PreviewVideoControlViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewVideoControlViewCell.swift; sourceTree = ""; }; A65EBBAB70CC1C017D00B9CD724533AE /* EditorView+AVAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+AVAsset.swift"; sourceTree = ""; }; - A6794E4F86E877704A71B667FAA78CCC /* PhotoTools.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoTools.swift; sourceTree = ""; }; + A67FE3B51C7883A9055F43E25099AEA5 /* LanguageType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LanguageType.swift; sourceTree = ""; }; A699175A78A74E0BC2AB80E5D84E65C7 /* EditorViewController+Chartlet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Chartlet.swift"; sourceTree = ""; }; + A6A11429F9B07AA636873E14188DF752 /* ArrowView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ArrowView.swift; sourceTree = ""; }; + A6B37DB48E314A875D6B5A0950905A80 /* PhotoManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoManager.swift; sourceTree = ""; }; A71D463B93E4069CBFB3045667F097C1 /* KFImageProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageProtocol.swift; path = Sources/SwiftUI/KFImageProtocol.swift; sourceTree = ""; }; A7287C5273626CF6F80DE6E2CEDE3ECC /* EditorStickersItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorStickersItemView.swift; sourceTree = ""; }; + A73C807DC077CEC3D2330404038260F7 /* PhotoBrowserInteractiveTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowserInteractiveTransition.swift; sourceTree = ""; }; A8B8776F93E0E8965FBD080CDE9DF3A1 /* Indicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Indicator.swift; path = Sources/Views/Indicator.swift; sourceTree = ""; }; - A8F80F0650FAC186261A8EFB6172445B /* Core+Data.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+Data.swift"; sourceTree = ""; }; + A97180EBDB8840F571744FC0090DC5AE /* PickerTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerTransition.swift; sourceTree = ""; }; A9C9F45D5B0C85FFAEC12CC1B0F89F9A /* HXPhotoPicker.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HXPhotoPicker.debug.xcconfig; sourceTree = ""; }; + AA508DB147D0713B4C79956CCF87E5B4 /* PhotoDeniedAuthorization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoDeniedAuthorization.swift; sourceTree = ""; }; AA52A797E57B739CB6F9C9B97A0B372F /* KFAnimatedImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFAnimatedImage.swift; path = Sources/SwiftUI/KFAnimatedImage.swift; sourceTree = ""; }; - AB04DA8603BD60DD7DE3B290F315E961 /* LocalAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LocalAsset.swift; sourceTree = ""; }; - AB81D1976245C16A9BA6D762B8C0A5E4 /* PhotoPickerPageViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerPageViewController.swift; sourceTree = ""; }; + AB913419AE30930F2C386B630AD71436 /* PhotoPickerViewController+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+Toolbar.swift"; sourceTree = ""; }; ABDED2EF319469A253D295B795E0FDF7 /* EditorViewController+ToolsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+ToolsView.swift"; sourceTree = ""; }; - AC34F27DBCF76763139C9EB88D1D3585 /* Core+UIColor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIColor.swift"; sourceTree = ""; }; - AD4E0A0B70B3F1C1BA34CBD664A21F23 /* PhotoPickerLimitCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerLimitCell.swift; sourceTree = ""; }; - AD6131717B6458F71867E326076F6967 /* NetworkAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NetworkAsset.swift; sourceTree = ""; }; + ADB1E1994A470E57F8DBB20BD588FCE9 /* GIFImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GIFImageView.swift; sourceTree = ""; }; + ADD600C29998E868F14D555CBE2E520A /* PhotoPreviewContentViewProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewContentViewProtocol.swift; sourceTree = ""; }; + AE028734D59C1A8D164D96C07F3816A6 /* PhotoAsset+Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Image.swift"; sourceTree = ""; }; AEF3E940F42B2190326EF87F0F710AAF /* EditorChartlet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorChartlet.swift; sourceTree = ""; }; AEF46CD3498C4FEDF9F4E831C5168CB2 /* EditorAdjusterView+Rotate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorAdjusterView+Rotate.swift"; sourceTree = ""; }; + AFA3CF112E554D34980975FED03C90B0 /* PhotoControllerEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoControllerEvent.swift; sourceTree = ""; }; + B0003C076B36331E5FC85DCE40DDD50E /* AlbumSectionHeaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumSectionHeaderView.swift; sourceTree = ""; }; B0940FE5A90B190B7FC193AB0F78BB0A /* SessionDataTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDataTask.swift; path = Sources/Networking/SessionDataTask.swift; sourceTree = ""; }; - B0E87F7F3A10FE54A05DE06C711082E5 /* PhotoPickerBottomNumberView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerBottomNumberView.swift; sourceTree = ""; }; - B2466B0ADC050A093BFA7C1F1EB59554 /* PhotoThumbnailView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoThumbnailView.swift; sourceTree = ""; }; - B269E4BB92DAED94D6323CC0E25F3FDD /* Picker+Int.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+Int.swift"; sourceTree = ""; }; + B194B333D0BA0494D91F90088C6CFA7D /* Picker+PhotoTools.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+PhotoTools.swift"; sourceTree = ""; }; B28E2838D03F588207280CF82D521C0F /* Editor+CIImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Editor+CIImage.swift"; sourceTree = ""; }; - B2ECABCCB399441797DA0B1DE8D14496 /* LivePhotoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LivePhotoError.swift; sourceTree = ""; }; + B3588131FFF478C72C0ECE9EF2FBA99F /* AssetManager+ImageData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+ImageData.swift"; sourceTree = ""; }; B3799EF1BB9F91022F3940A336ABA8BB /* ImagePrefetcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePrefetcher.swift; path = Sources/Networking/ImagePrefetcher.swift; sourceTree = ""; }; B3FF74900C0E9F6ECC739ED91751C45B /* Pods-SwiftUIExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftUIExample-dummy.m"; sourceTree = ""; }; - B4C6102C31F03764687FFA5EA978BE87 /* PhotoLoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoLoadingView.swift; sourceTree = ""; }; + B4129E70FD1CC90816EB0C3CE2AB9F69 /* PhotoImageCancelItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoImageCancelItemView.swift; sourceTree = ""; }; + B42EE2028C8E68D39D642B3119FD4A8F /* AssetManager+Asset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+Asset.swift"; sourceTree = ""; }; B4D37E4195BC49A46B43FC0F1CEA0E9B /* EditorAdjusterViewProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorAdjusterViewProtocol.swift; sourceTree = ""; }; - B55DA2CF10ECE623504A9F5F855D5C39 /* PhotoPreviewViewController+NavigationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+NavigationController.swift"; sourceTree = ""; }; B57ED27CF32BDEB6C7E6357BDAE47ABE /* EditorMusicView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMusicView.swift; sourceTree = ""; }; B5BD993C5753F648F768C6B193572D4C /* EditorViewController+Brush.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Brush.swift"; sourceTree = ""; }; - B75889419F9851EA697A4E47A49707ED /* PhotoPreviewViewController+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+CollectionView.swift"; sourceTree = ""; }; + B5E46B3FE538490F78EFCA93785EF92B /* PhotoPickerListSwipeSelect.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListSwipeSelect.swift; sourceTree = ""; }; + B65CA76048F5133E0DA9CA7F949DF3D9 /* PhotoListCellConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoListCellConfiguration.swift; sourceTree = ""; }; + B6BD34F0ECF3CDD3775795C1743DDA03 /* PhotoPreviewSelectedViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewSelectedViewCell.swift; sourceTree = ""; }; B771C50BFD476BD763EB4B6AFF4E3D3B /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Image/Image.swift; sourceTree = ""; }; - B87484E48357B1A3C42162EC04F2EFA7 /* PhotoPickerControllerProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerProtocol.swift; sourceTree = ""; }; - B911867DDFC1253F8DF367FF2E52B818 /* PickerTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerTypes.swift; sourceTree = ""; }; + B873831F6743866CC8F760D4C2660172 /* PhotoPickerFilterViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerFilterViewController.swift; sourceTree = ""; }; + BA2B8F8F2C7A4D624E33CA3124D84416 /* HXPhotoPicker.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = HXPhotoPicker.bundle; path = Sources/HXPhotoPicker/Resources/HXPhotoPicker.bundle; sourceTree = ""; }; BBE792075FEB2DD9820C6E57A80DE041 /* EditorMosaicToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMosaicToolView.swift; sourceTree = ""; }; BC576D61FF2CC406429A76381944F970 /* EditorMusicLyricViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorMusicLyricViewCell.swift; sourceTree = ""; }; BC9FF0A2D9CFC0A55619C01509FE39AD /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Sources/Utility/Result.swift; sourceTree = ""; }; BCA381FB652E71487CEFFBB05FFCA781 /* DeviceOrientationHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeviceOrientationHelper.swift; sourceTree = ""; }; - BCFAC7BC850FC8D6191D48735071A581 /* PhotoAlbumControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumControllerConfiguration.swift; sourceTree = ""; }; BD429C6BAE5A8A100FA0E6B699CC750D /* EditorView+CIImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+CIImage.swift"; sourceTree = ""; }; - BD7216D7ED266024EA5AD64F3C15895B /* PhotoToolBarEmptyView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoToolBarEmptyView.swift; sourceTree = ""; }; BDAFD1BCFDE52E8E0E0AE0D784590CD6 /* CPListItem+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CPListItem+Kingfisher.swift"; path = "Sources/Extensions/CPListItem+Kingfisher.swift"; sourceTree = ""; }; - BE5275D86AD47973B59CF94DCF4CDC7E /* PhotoPickerView+Function.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Function.swift"; sourceTree = ""; }; BF0EAC6FE9D7CD08A104EA00131DC5C6 /* EditorViewController+Action.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Action.swift"; sourceTree = ""; }; - BF1CA7E8C5693BBD6ECB451C8D853157 /* Core+AVAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+AVAsset.swift"; sourceTree = ""; }; - BF917D8B37B6AA169213299433A8A6A1 /* ImageResource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImageResource.swift; sourceTree = ""; }; - C043B2D857539FB903260B776BE329E5 /* PreviewVideoViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewVideoViewCell.swift; sourceTree = ""; }; - C0B1384A960A50A8BABB0E7FC8B0D676 /* SelectBoxView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SelectBoxView.swift; sourceTree = ""; }; + BF46CD13AB05F29CF8B7495160675D81 /* DeniedAuthorizationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeniedAuthorizationView.swift; sourceTree = ""; }; C0B8BB66619A56BE9921CB8D9DF82767 /* KingfisherManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherManager.swift; path = Sources/General/KingfisherManager.swift; sourceTree = ""; }; + C15AF62BC50E32C08AB512A1C616FC5C /* AssetManager+PlayerItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+PlayerItem.swift"; sourceTree = ""; }; C164151F1DD34151134DD11A5DEE119F /* TVMonogramView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TVMonogramView+Kingfisher.swift"; path = "Sources/Extensions/TVMonogramView+Kingfisher.swift"; sourceTree = ""; }; - C22DC50AF507E9DCFDC43E637655CA88 /* Core+PHAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+PHAsset.swift"; sourceTree = ""; }; + C16DE7A11878C65D219BAAA87438BA36 /* Picker+Array.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+Array.swift"; sourceTree = ""; }; + C16ED134A66F5AD3EE12FD02F68CF46F /* Core+UIImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIImageView.swift"; sourceTree = ""; }; C246729A6105F01A8A16B833E99CD9F2 /* ImageView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageView+Kingfisher.swift"; path = "Sources/Extensions/ImageView+Kingfisher.swift"; sourceTree = ""; }; C2C297C05BE70DC23D856ADFC870149C /* EditorFrameView+VideoPlay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorFrameView+VideoPlay.swift"; sourceTree = ""; }; - C3DFED420961ED36CD4F276A7ACB1140 /* PhotoPreviewListViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewListViewCell.swift; sourceTree = ""; }; + C3B0A269952077806641AD81AB296780 /* PhotoAsset+Editor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Editor.swift"; sourceTree = ""; }; + C3EEB95B142CE4B2CF711B86E0AD538A /* Core+UIColor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIColor.swift"; sourceTree = ""; }; C3F44C782D64D7EB20B61CE3844EBFAD /* Kingfisher */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Kingfisher; path = Kingfisher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C4AEEE59209786579C6B6B91FE34EEF4 /* PhotoPickerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerView.swift; sourceTree = ""; }; + C4D5571D3CF4623A0BD093BC9F3A39CE /* HXBaseViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HXBaseViewController.swift; sourceTree = ""; }; C513D837C84FDB4628C399E9DF3E40A0 /* EditorViewController+Filters.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+Filters.swift"; sourceTree = ""; }; C5FCC3982A39124DDCFA01F5A6FD15F6 /* EditorStickerTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorStickerTextView.swift; sourceTree = ""; }; - C6352859C46C0357343DE4787F3C3505 /* PhotoPickerListConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListConfig.swift; sourceTree = ""; }; + C6831C1750D4F3E7450A80C3C4E25C60 /* PhotoPickerViewController+Preview.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+Preview.swift"; sourceTree = ""; }; C6BBF7A8EDFDD0832E4E1C9E23233192 /* ImageDataProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDataProcessor.swift; path = Sources/Networking/ImageDataProcessor.swift; sourceTree = ""; }; C7E661172480B126148380918F644BF2 /* ImageCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCache.swift; path = Sources/Cache/ImageCache.swift; sourceTree = ""; }; C807D01E4D5C4797948E98EAA5114D23 /* EditorView+Public.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+Public.swift"; sourceTree = ""; }; - C939BCD529DF297DEDFE95FD4A4D50BE /* PickerResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PickerResult.swift; path = Sources/HXPhotoPicker/Picker/PickerResult.swift; sourceTree = ""; }; + C876502D0D48B9BD5B20679D6176A150 /* PhotoPeekViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPeekViewController.swift; sourceTree = ""; }; + C8A42AF7D5BB09B1ECF39D0C83AF2729 /* PhotoPickerList.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerList.swift; sourceTree = ""; }; C99B91AC259E30C968881C4939849071 /* String+MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+MD5.swift"; path = "Sources/Utility/String+MD5.swift"; sourceTree = ""; }; - CA760584DA7F7727D72DADFEF4D64D21 /* PhotoToolBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoToolBarView.swift; sourceTree = ""; }; - CAA3A59350274D54B9CD9E118D9D4840 /* Core+UIViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIViewController.swift"; sourceTree = ""; }; CAA6E3B06AE4E0D863F65FBA164BB6C2 /* Storage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Storage.swift; path = Sources/Cache/Storage.swift; sourceTree = ""; }; - CC2706A2381C9816D3828A8D073670C3 /* PickerCameraViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerCameraViewCell.swift; sourceTree = ""; }; + CB1DBE0E92BB14C1960077ADD77C3FE9 /* PreviewVideoViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewVideoViewCell.swift; sourceTree = ""; }; + CCDB4F339FB1955F28C99848D5DEF852 /* PhotoPickerListAssets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListAssets.swift; sourceTree = ""; }; CCE0091B2F722D610885659CEEA6FCDC /* Kingfisher-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Kingfisher-Info.plist"; sourceTree = ""; }; CD24BD5CC044D63E01D4F0962A42CEE0 /* Pods-HXPhotoPickerExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-HXPhotoPickerExample-acknowledgements.plist"; sourceTree = ""; }; CD354DCD1C586F20F448E288A34727AD /* GraphicsContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GraphicsContext.swift; path = Sources/Image/GraphicsContext.swift; sourceTree = ""; }; CDF909AE0612371ECB2A5A760F6F4598 /* DiskStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DiskStorage.swift; path = Sources/Cache/DiskStorage.swift; sourceTree = ""; }; - CE09647693462C24E83B73D277CC95FC /* PreviewViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewViewConfiguration.swift; sourceTree = ""; }; - CE3691329BDD686CBF74A2E4B9CF3122 /* PhotoAsset+URL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+URL.swift"; sourceTree = ""; }; + CE076E03B5603955E3D64B92281A74EE /* PhotoPickerView+Cell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerView+Cell.swift"; sourceTree = ""; }; + CE07908050FF6982B2A50406E9167B6D /* PhotoPreviewViewController+SelectBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+SelectBox.swift"; sourceTree = ""; }; + CE533995C47E5A3D387994F8125D9520 /* PickerInteractiveTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PickerInteractiveTransition.swift; sourceTree = ""; }; CF4BE3DA44B5CA9EA978930D1D320C58 /* KFImageRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageRenderer.swift; path = Sources/SwiftUI/KFImageRenderer.swift; sourceTree = ""; }; + D05853881B759517E7FE182AF77D74CF /* AlbumListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumListView.swift; sourceTree = ""; }; + D06A616D7C985BC1F18518528DDDC0BF /* ImageResource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImageResource.swift; sourceTree = ""; }; D0A49A7254E2CCD294308D8AF370E26D /* EditorBrushColorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorBrushColorView.swift; sourceTree = ""; }; - D2C6A7374F1A73E560405E0A162CC694 /* AlbumViewBaseCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumViewBaseCell.swift; sourceTree = ""; }; - D344F7E1E18F30BDB093B49472940D52 /* PhotoPreviewContentViewProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewContentViewProtocol.swift; sourceTree = ""; }; - D374000D7C9F612BD0DA769801B80E08 /* Core+Bundle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+Bundle.swift"; sourceTree = ""; }; - D382F6042F2637D1229A4A89F8247158 /* HXPhotoPicker.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = HXPhotoPicker.bundle; path = Sources/HXPhotoPicker/Resources/HXPhotoPicker.bundle; sourceTree = ""; }; - D44E2C3C67FB91EB55E2F3823E4832B6 /* PhotoTools+Camera.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoTools+Camera.swift"; sourceTree = ""; }; + D21091D254DD9E1D20D4E39059A27B4B /* AlbumViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumViewController.swift; sourceTree = ""; }; + D4FB42308E9D44B8EE23862BFEF40CD8 /* AssetManager+VideoURL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+VideoURL.swift"; sourceTree = ""; }; + D5144B6BF86E9E01ED963D23F853EB8E /* PhotoPickerViewController+Camera.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+Camera.swift"; sourceTree = ""; }; + D5AA960BBD34362163D43E6F7973AB55 /* PhotoTools.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoTools.swift; sourceTree = ""; }; D5FC78CD589E6694812723366EB87CE8 /* EditorStickerTextView+Delegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorStickerTextView+Delegate.swift"; sourceTree = ""; }; D631632530BDB06946FCE1FF26C68D21 /* EditorCollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorCollectionView.swift; sourceTree = ""; }; - D6A95AE97907C5CB4DA88ED7CFE7C04D /* Core+UIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIView.swift"; sourceTree = ""; }; + D68306E84F582BC5180384DE89F127EE /* PhotoPickerViewProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerViewProtocol.swift; sourceTree = ""; }; + D76A8EFD3112391A5D4B71415D4AE399 /* PhotoManager+Language.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoManager+Language.swift"; sourceTree = ""; }; D77668AB99BA197EB843224D64ABE774 /* ImageEditedResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageEditedResult.swift; path = "Sources/HXPhotoPicker/Editor+View/ImageEditedResult.swift"; sourceTree = ""; }; - D8530A32D18C0432556AB7F006BB9725 /* AssetManager+VideoURL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+VideoURL.swift"; sourceTree = ""; }; + D78E5B9E22DDCFD9C6C30BC71E71A7D2 /* TextManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextManager.swift; sourceTree = ""; }; + D86D388A9AF70ECC719D8F0026CD369C /* Core+Dictionary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+Dictionary.swift"; sourceTree = ""; }; D8F143F1D83379BDB9363E3B216AEF73 /* MemoryStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MemoryStorage.swift; path = Sources/Cache/MemoryStorage.swift; sourceTree = ""; }; - D8FB43B03F56E19BF3AA36828B2075FA /* PhotoPickerSelectableViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerSelectableViewCell.swift; sourceTree = ""; }; - D906D06935C1AE136D38FD9DD9220CEF /* Core+UIApplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIApplication.swift"; sourceTree = ""; }; - D97345B3C4840CED0FFDCE99956D7ABB /* PreviewVideoControlViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreviewVideoControlViewCell.swift; sourceTree = ""; }; - DA20FE92B94ABA8D0626FEA37BD3A53F /* PhotoPickerData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerData.swift; sourceTree = ""; }; + D938338EF833B355C68ADAC05D4D5E75 /* PhotoAlbumViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumViewCell.swift; sourceTree = ""; }; DAD26A10057045149A5D17B48925BA7A /* Pods-SwiftUIExample */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-SwiftUIExample"; path = Pods_SwiftUIExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DB0F6F65F120DF7BC80746EF0CB1E57D /* AssetURLResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssetURLResult.swift; path = Sources/HXPhotoPicker/Picker/AssetURLResult.swift; sourceTree = ""; }; DB36255D6E904725FBD19ED8D84D9C39 /* KFImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImage.swift; path = Sources/SwiftUI/KFImage.swift; sourceTree = ""; }; + DB690B8811F966F88172D3EFC2E7BADF /* Picker+PhotoManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+PhotoManager.swift"; sourceTree = ""; }; DB74F1F5C0C4BF6020C375E726BF8A77 /* ExpandButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExpandButton.swift; sourceTree = ""; }; - DBD37FDFCFD02B420461A68E431F1239 /* PhotoPickerController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerController.swift; sourceTree = ""; }; DBFD9464D59012E99B58D7C622186BD9 /* EditorConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorConfiguration.swift; sourceTree = ""; }; - DC32EAB1BF505A7E1E3351E77407A7A6 /* PhotoPickerControllerInteractiveTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerControllerInteractiveTransition.swift; sourceTree = ""; }; - DC45B8DA08F49ABBC4F8B745019CD8D7 /* Core+CALayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+CALayer.swift"; sourceTree = ""; }; DC9D0752BD9D4858E0DB474B6E002E44 /* ImageTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTransition.swift; path = Sources/Image/ImageTransition.swift; sourceTree = ""; }; - DCDA69814ED5A5B0DF540444A36E3817 /* PhotoAlbumList.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumList.swift; sourceTree = ""; }; DD00089B065C6EF40F11594B092382D1 /* Pods-HXPhotoPickerExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-HXPhotoPickerExample.debug.xcconfig"; sourceTree = ""; }; - DD75CD6128762807A6E87DB52DFB9986 /* Picker+UIImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+UIImageView.swift"; sourceTree = ""; }; - DE58743FF454EF467EF0E389E89149AB /* PhotoImageCancelItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoImageCancelItemView.swift; sourceTree = ""; }; + DD9A14582BCF5728941C575960385F10 /* PhotoPreviewViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewViewCell.swift; sourceTree = ""; }; + DDC29E23788C7A6C234FE599AD189709 /* Picker+Int.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+Int.swift"; sourceTree = ""; }; DF3DD67B1B2636E1E21BF16CAEAF2E55 /* Pods-SwiftUIExample-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftUIExample-Info.plist"; sourceTree = ""; }; - DFF3794F048481E0B5C88E2D6F9F4E8D /* PhotoAsset+FileSize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+FileSize.swift"; sourceTree = ""; }; DFFD6F292F64160B38B6649F159D042C /* CameraNormalPreviewView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraNormalPreviewView.swift; sourceTree = ""; }; E0BE57B2D9C5ABFD493C67CF3D6348DD /* EditorFrameView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorFrameView.swift; sourceTree = ""; }; - E13AB52F619E70FAE63B23C06AAD9FFA /* Picker+UIViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+UIViewController.swift"; sourceTree = ""; }; + E1C1D162E6C2BA9F8861E21A384C74E5 /* PhotoAsset+Equatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Equatable.swift"; sourceTree = ""; }; E1C7108DB1A25C7A6E8B80BFA5F808D8 /* EditorAdjusterView+Edit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorAdjusterView+Edit.swift"; sourceTree = ""; }; E295A8FF0B29D215F764AAFD0AD355BB /* CameraManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraManager.swift; sourceTree = ""; }; E2FE59275CA1440D6FF3429B73E88B42 /* EditorAdjusterView+ContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorAdjusterView+ContentView.swift"; sourceTree = ""; }; E37E6CCE90E9E48BFD1256C90CB324AA /* Pods-HXPhotoPickerExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-HXPhotoPickerExample-dummy.m"; sourceTree = ""; }; - E632D174EB96C3F09F5057E9A6CD90D2 /* PhotoAsset+Editor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Editor.swift"; sourceTree = ""; }; - E65A688EB5D954DAF26C7E50549EC7C0 /* PhotoAsset+Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Request.swift"; sourceTree = ""; }; - E66BEE4736B890C42ECAA83AF1389989 /* AssetManager+ImageURL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+ImageURL.swift"; sourceTree = ""; }; - E6ABDA47D9AD33B985B4A5CDC0BA601D /* PhotoFetchAssetCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoFetchAssetCollection.swift; sourceTree = ""; }; + E38765ED2D44222BB15AA52BF3681431 /* PhotoListConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoListConfiguration.swift; sourceTree = ""; }; + E521238901494DB93FF85A43C5508319 /* AssetManager+AVAssetExportSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+AVAssetExportSession.swift"; sourceTree = ""; }; + E630B7F8343389BF4315ACBEC550ADE3 /* VideoPlaySliderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoPlaySliderView.swift; sourceTree = ""; }; + E6CA9419B6E04FF17790E72E8D9657B4 /* PhotoBrowserAnimationTransitioning.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowserAnimationTransitioning.swift; sourceTree = ""; }; E7111CE1D77FEB26AB89E9339FB03361 /* EditorViewController+EditorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorViewController+EditorView.swift"; sourceTree = ""; }; E78DB32A47431DF74ADA0F413228BACF /* CameraViewController+Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CameraViewController+Result.swift"; sourceTree = ""; }; - E7EE5A2D4D50C55CFFD6377D36A86F66 /* ExportPreset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExportPreset.swift; sourceTree = ""; }; + E7F6B4F6B3F9C14E0F634911922C65CB /* ProgressCricleJoinView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProgressCricleJoinView.swift; sourceTree = ""; }; E7FACF0656056AFACF2C82D01BD89750 /* Pods-HXPhotoPickerExample */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-HXPhotoPickerExample"; path = Pods_HXPhotoPickerExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E810E5FC1E9D07C6043F9C0AE6D87F2F /* AssetPermissionsUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AssetPermissionsUtil.swift; sourceTree = ""; }; + E827AF2C74FB3A4153B3E0074F50E972 /* SelectBoxConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SelectBoxConfiguration.swift; sourceTree = ""; }; + E84BED71C4C1D20FB1DB2BB1E79D8A8C /* EmptyView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EmptyView.swift; sourceTree = ""; }; + E8657E411275937B2E988E7DDD25631B /* PhotoPreviewListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewListView.swift; sourceTree = ""; }; E88083659F78EA6A9570941E3E0C9205 /* CameraRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraRenderer.swift; sourceTree = ""; }; - E892491520AEA17049715B574F92A658 /* AlbumTitleViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlbumTitleViewConfiguration.swift; sourceTree = ""; }; - E8F9854729BCAF7AC6DDB66AE2E6E30A /* PhotoBaseViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBaseViewController.swift; sourceTree = ""; }; - EA9B5EC1CD2591BC769FD071D7D0771A /* PhotoAsset+Local.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Local.swift"; sourceTree = ""; }; EAF6631A47CB74096BA9F169344C69A1 /* EditorType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorType.swift; sourceTree = ""; }; - ED8BB19179A89746DB5D5075C5812E8B /* PhotoPickerListFectchCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListFectchCell.swift; sourceTree = ""; }; + ECB66ECA5CC11A66E0A9D503A3944FAD /* NetworkAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NetworkAsset.swift; sourceTree = ""; }; + ECFB85A21408B9517E57CB2C66CD6BC5 /* PhotoPickerBaseViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerBaseViewCell.swift; sourceTree = ""; }; + ED42A840A0CEA92C27B1F3E7659011A7 /* PhotoToolBarEmptyView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoToolBarEmptyView.swift; sourceTree = ""; }; + ED47D4C3D6EECEC57FA1EABB8E264104 /* PhotoPickerViewController+PhotoList.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerViewController+PhotoList.swift"; sourceTree = ""; }; EE3BD898E6A7B563F09180CC07162C3B /* EditorTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorTransition.swift; sourceTree = ""; }; - EFAD4A1FAC95C70727B2CB3A48BD265D /* PhotoManager+Language.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoManager+Language.swift"; sourceTree = ""; }; - EFB79AE17C107753DA564DDFFA54BCFF /* ArrowView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ArrowView.swift; sourceTree = ""; }; + EE4B421409CEFCD1486371BBE2523EE1 /* Core+UIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIView.swift"; sourceTree = ""; }; + EEAE2825B40D14A091277CC0011BCC0D /* PhotoPickerController+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerController+Internal.swift"; sourceTree = ""; }; + F027057C7DEC855E80055E825ED5D1F7 /* PhotoPreviewContentLivePhotoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewContentLivePhotoView.swift; sourceTree = ""; }; F0577C17000F0186FBDC55B6341BD085 /* SizeExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SizeExtensions.swift; path = Sources/Utility/SizeExtensions.swift; sourceTree = ""; }; - F1E35B955B2216B9AED62398DFA3084D /* PhotoPreviewContentLivePhotoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewContentLivePhotoView.swift; sourceTree = ""; }; F2601D984AFC0E54B562FE838D8A618D /* ImageProgressive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProgressive.swift; path = Sources/Image/ImageProgressive.swift; sourceTree = ""; }; + F2A9F555459E03BB222DD9621D5CDD5F /* AssetManager+Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AssetManager+Image.swift"; sourceTree = ""; }; F3CD3235F190AC9D2E3D8E93650C459C /* Pods-HXPhotoPickerExample-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-HXPhotoPickerExample-Info.plist"; sourceTree = ""; }; - F420AF1D60F44BF7153657A89341E0C3 /* PhotoBrowser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBrowser.swift; sourceTree = ""; }; F4659F351299A01B4C79C8CD01BEE8B4 /* EditorAudioAnimationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorAudioAnimationView.swift; sourceTree = ""; }; + F5017703005776E3AB07BEB55E874FA0 /* PhotoPickerController+PickerData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPickerController+PickerData.swift"; sourceTree = ""; }; F5420F28FC6BC7D44BC08DA8F47EFD9A /* Pods-HXPhotoPickerExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-HXPhotoPickerExample.modulemap"; sourceTree = ""; }; F5B149D5CE84624B82AB1C127826FE69 /* VideoEditedResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = VideoEditedResult.swift; path = "Sources/HXPhotoPicker/Editor+View/VideoEditedResult.swift"; sourceTree = ""; }; - F5BC64DB81AF37AB27984996A58943AE /* Core+UITableView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UITableView.swift"; sourceTree = ""; }; - F630DBDAF5F59B061F358953F59E393E /* PhotoPreviewViewController+SelectBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoPreviewViewController+SelectBox.swift"; sourceTree = ""; }; - F669006B7F956A560CC9B194560CA69F /* Picker+PhotoManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+PhotoManager.swift"; sourceTree = ""; }; + F62EC207BB4338E2814AE61BB821F469 /* Core+UIApplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+UIApplication.swift"; sourceTree = ""; }; F66FA3D7214C5808A9F039510AA71F67 /* ImageProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessor.swift; path = Sources/Image/ImageProcessor.swift; sourceTree = ""; }; - F6CE513A492D6BF7000737B82AFA9FEF /* PhotoAlbumCollectionViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumCollectionViewCell.swift; sourceTree = ""; }; + F69CF66AA4F19E8DBD656398B663AD88 /* PhotoAlbumCollectionViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoAlbumCollectionViewCell.swift; sourceTree = ""; }; F6E055A203321AE995A493F51436614D /* Pods-SwiftUIExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftUIExample.release.xcconfig"; sourceTree = ""; }; - F8CE106B86DA76108E489C88058253A8 /* PhotoManager+Download.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoManager+Download.swift"; sourceTree = ""; }; - F8F885D82E80DD755674E85615BBE5E3 /* TickView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TickView.swift; sourceTree = ""; }; - F9ED540A600789494057981315788074 /* PhotoMyAlbumViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoMyAlbumViewController.swift; sourceTree = ""; }; + F8CE430D965B9B62E1A2DBE5E6C78242 /* PhotoPreviewListViewLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPreviewListViewLayout.swift; sourceTree = ""; }; + F9A4AE67E1781BD77660E552945CFAED /* ImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImageView.swift; sourceTree = ""; }; FA068770D6C64E1938C7F7F47C572F45 /* EditorView+CGFloat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EditorView+CGFloat.swift"; sourceTree = ""; }; + FA4E270EC397082B19888F3BE7F7D32B /* PhotoTools+Camera.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoTools+Camera.swift"; sourceTree = ""; }; FA8857EEDA392D7E41A2D8A6090CCF3C /* CameraBottomView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CameraBottomView.swift; sourceTree = ""; }; - FAD127C655DFC9DD08CABF07EC41F542 /* AppearanceStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AppearanceStyle.swift; sourceTree = ""; }; FB80C8DF07DE68BD320E2ED991DC7644 /* Source.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Source.swift; path = Sources/General/ImageSource/Source.swift; sourceTree = ""; }; - FD194EB586DB374B10759F36429D0130 /* Picker+LivePhotoTools.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Picker+LivePhotoTools.swift"; sourceTree = ""; }; + FC368314D7476127F23D11119F81CDBF /* PhotoPickerListFectchCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoPickerListFectchCell.swift; sourceTree = ""; }; + FC6EDA5D99EFCD86BCE35FFF00558A28 /* PhotoTextCancelItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoTextCancelItemView.swift; sourceTree = ""; }; FD24D3EF4FB9EC7C5F33B62280B5E12B /* EditorVideoCompositor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorVideoCompositor.swift; sourceTree = ""; }; + FD3AFFECEF0B4181934F42356044EC36 /* Core+NSObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Core+NSObject.swift"; sourceTree = ""; }; FDA9BE81FEAE2531C2F0863FFF311913 /* EditorVideoControlView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorVideoControlView.swift; sourceTree = ""; }; FE89711CBB93C755685C6EC1E88AB13A /* EditorPlayAuido.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorPlayAuido.swift; sourceTree = ""; }; FE897DB5466680E2D8ABC3A48F000A9B /* Runtime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Runtime.swift; path = Sources/Utility/Runtime.swift; sourceTree = ""; }; + FEBF813F901EB1FCB932A8D7F3E41467 /* AssetManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AssetManager.swift; sourceTree = ""; }; + FF000CAEBDA04F49DB547C49CE7E9357 /* PickerResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PickerResult.swift; path = Sources/HXPhotoPicker/Picker/PickerResult.swift; sourceTree = ""; }; FF642AB4130879F6D6D9CD0FDFD7A88F /* EditorBrushBlockView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EditorBrushBlockView.swift; sourceTree = ""; }; - FF98AE8287F1E4C8D26C4B6F5CDA94A6 /* PhotoAsset+Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PhotoAsset+Codable.swift"; sourceTree = ""; }; FF9BC1B5D0E9D6745A8C2D402E0927FE /* Delegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Delegate.swift; path = Sources/Utility/Delegate.swift; sourceTree = ""; }; + FFFFD1DB25BEBB4196EF523CBC6DAB5B /* PhotoFetchAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoFetchAsset.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -949,13 +955,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 3D7265C81B17F3C99589C41BFF98DD1B /* Frameworks */ = { + 8B1B41C4BB011EA001C9741BD0266168 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1D8862CF3CBF2100B01870BF75F30717 /* Accelerate.framework in Frameworks */, - BCAD082313C1B166AFD39990BF009779 /* CFNetwork.framework in Frameworks */, - FFC04306EBD1BD9C04C649444FA0D956 /* Foundation.framework in Frameworks */, + D05A8CF000CF7B715F2ECE21FF1AE639 /* Foundation.framework in Frameworks */, + AB36B2EE93F4E8B96D87ACFCE368B54C /* Photos.framework in Frameworks */, + A7923DBB7FB6DDC409A71950DB877A4F /* PhotosUI.framework in Frameworks */, + F9B125BCF3B904773446D405AB5C164F /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -967,33 +974,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - EFE769B63B4196B88F66608647D2CC9E /* Frameworks */ = { + AFADCF8B2A59EFD34ABC4FDF16473FC9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9C93FB950013BB7D9E5C2E8CBD1A1143 /* Foundation.framework in Frameworks */, - 59591CA75004272783D153A2B80287B3 /* Photos.framework in Frameworks */, - 85B761178BBA4A2FA4B9B70D835B43B6 /* PhotosUI.framework in Frameworks */, - B8A80D2DFBA4C84CB8165FBF18F29A2D /* UIKit.framework in Frameworks */, + 53F1A6CE0E907932AF4BF8FE123676C0 /* Accelerate.framework in Frameworks */, + F6DA53717674E6B6501A7A021CF89659 /* CFNetwork.framework in Frameworks */, + E0EFADF32186A29F4530ADDC4F778C9C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0412C90438BBE032095D5F75890EEA06 /* View */ = { - isa = PBXGroup; - children = ( - 7CE9BBDBE8036F0CBB4184889DECA252 /* GIFImageView.swift */, - 22F28C754B85DE15338E10C5FF39A90C /* ImageView.swift */, - C0B1384A960A50A8BABB0E7FC8B0D676 /* SelectBoxView.swift */, - EA8220BD5CF357FB799276984FC96280 /* ProgressHUD */, - 2077ECD2C66A368560E8E07C30A5DFBF /* VideoPlayer */, - ); - name = View; - path = Sources/HXPhotoPicker/Core/View; - sourceTree = ""; - }; 06A5FF926D3FB856EE8135F4DCE85836 /* Support Files */ = { isa = PBXGroup; children = ( @@ -1009,6 +1002,52 @@ path = "../Target Support Files/Kingfisher"; sourceTree = ""; }; + 0816BC0828215B19858474F1F7AE74B6 /* Util */ = { + isa = PBXGroup; + children = ( + FEBF813F901EB1FCB932A8D7F3E41467 /* AssetManager.swift */, + B42EE2028C8E68D39D642B3119FD4A8F /* AssetManager+Asset.swift */, + 859BFD1B6269610888A1BB0889519072 /* AssetManager+AVAsset.swift */, + E521238901494DB93FF85A43C5508319 /* AssetManager+AVAssetExportSession.swift */, + F2A9F555459E03BB222DD9621D5CDD5F /* AssetManager+Image.swift */, + B3588131FFF478C72C0ECE9EF2FBA99F /* AssetManager+ImageData.swift */, + 6071F8423D8DA6F25BF4DD10603DA621 /* AssetManager+ImageURL.swift */, + 049F62DB0E2CCBB75486C09C6F466357 /* AssetManager+LivePhoto.swift */, + 3A8DE631BF5A1040335EB2D5C42A3A78 /* AssetManager+LivePhotoURL.swift */, + C15AF62BC50E32C08AB512A1C616FC5C /* AssetManager+PlayerItem.swift */, + D4FB42308E9D44B8EE23862BFEF40CD8 /* AssetManager+VideoURL.swift */, + E810E5FC1E9D07C6043F9C0AE6D87F2F /* AssetPermissionsUtil.swift */, + 7E7E6DBE2D2607FAB1B89F0AEA0E13A9 /* AssetSaveUtil.swift */, + D06A616D7C985BC1F18518528DDDC0BF /* ImageResource.swift */, + A6B37DB48E314A875D6B5A0950905A80 /* PhotoManager.swift */, + 5A28EF71CBEF8DABCD817A195C3399F2 /* PhotoManager+Download.swift */, + D76A8EFD3112391A5D4B71415D4AE399 /* PhotoManager+Language.swift */, + D5AA960BBD34362163D43E6F7973AB55 /* PhotoTools.swift */, + 916A15C9469C7807F0DD6E4E1B38EC21 /* PhotoTools+Alert.swift */, + FA4E270EC397082B19888F3BE7F7D32B /* PhotoTools+Camera.swift */, + 0619FDF7D32BC3E30AAF2BFD0449CFC3 /* PhotoTools+File.swift */, + D78E5B9E22DDCFD9C6C30BC71E71A7D2 /* TextManager.swift */, + ); + name = Util; + path = Sources/HXPhotoPicker/Core/Util; + sourceTree = ""; + }; + 094AAD77C032740C5F75E86CC1BC6772 /* Photo */ = { + isa = PBXGroup; + children = ( + 766E2B28C31EF7265194963602853636 /* PhotoBaseViewController.swift */, + 0D962893A7290AA113BF571E8469D259 /* PhotoPickerController.swift */, + EEAE2825B40D14A091277CC0011BCC0D /* PhotoPickerController+Internal.swift */, + 04700F67F4554FFE14AC8E8125413910 /* PhotoPickerController+PHPhotoLibrary.swift */, + F5017703005776E3AB07BEB55E874FA0 /* PhotoPickerController+PickerData.swift */, + 98D24BC598AC68446A23A685362B4771 /* PhotoPickerController+Transitioning.swift */, + 71BA13F666BF084FEA3F3C67530070A2 /* PhotoPickerControllerProtocol.swift */, + 3E9D7D7458BA7AE028239B74D72A136F /* PhotoSplitViewController.swift */, + ); + name = Photo; + path = Photo; + sourceTree = ""; + }; 0AD9AAAA909075E748CC9BCC80DEB7A8 /* Transition */ = { isa = PBXGroup; children = ( @@ -1038,26 +1077,35 @@ path = Sources/HXPhotoPicker/Camera/Config; sourceTree = ""; }; - 13B318189C865EAEDBF05E3FEB3CB026 /* Browser */ = { + 13E1CE0DBB871031EF10278F49D016EB /* Cell */ = { isa = PBXGroup; children = ( - F420AF1D60F44BF7153657A89341E0C3 /* PhotoBrowser.swift */, + 95AF4FAB284CB01E5FC8595544A17B37 /* PhotoLoadingView.swift */, + ECFB85A21408B9517E57CB2C66CD6BC5 /* PhotoPickerBaseViewCell.swift */, + 26EFB4319C95DC0DFE017A090616877D /* PhotoPickerLimitCell.swift */, + 4F9C2113F0CAA8A8483E295A6036BA64 /* PhotoPickerSelectableViewCell.swift */, + 0824C5C8A788B4B9ED82C4EEE79CF945 /* PhotoPickerViewCell.swift */, + 179A3C5769A283226ABA564AD19A2F4D /* PhotoPickerWeChatViewCell.swift */, + DD9A14582BCF5728941C575960385F10 /* PhotoPreviewViewCell.swift */, + 5C3913A37E783A552ED07CFF5BD3282D /* PickerCameraViewCell.swift */, + 719CB988B28E2394600F644A3D9F2876 /* PreviewLivePhotoViewCell.swift */, + 8C6DDA7ADA655C06ADCDAFF63AADA322 /* PreviewPhotoViewCell.swift */, + A62876B0459A97FACF1F0DA83267CD9B /* PreviewVideoControlViewCell.swift */, + CB1DBE0E92BB14C1960077ADD77C3FE9 /* PreviewVideoViewCell.swift */, + 417343D46F0ACD7D16C4E369A874A89B /* Album */, ); - name = Browser; - path = Browser; + name = Cell; + path = Cell; sourceTree = ""; }; - 1CD003CF16BB698BCFCF4F853587C51E /* Album */ = { + 1A6A17E2E16B817ADD14B04806FA17A3 /* LocalAsset */ = { isa = PBXGroup; children = ( - D2C6A7374F1A73E560405E0A162CC694 /* AlbumViewBaseCell.swift */, - 17267B5AE9E34C471949B4AADAED7992 /* AlbumViewCell.swift */, - 30724C165AEB236F8DAE6E982BADF966 /* PhotoAlbumCollectionCell.swift */, - F6CE513A492D6BF7000737B82AFA9FEF /* PhotoAlbumCollectionViewCell.swift */, - 1FB6A771CBF505CACE6478569BB7E748 /* PhotoAlbumViewCell.swift */, + 081351AEE736FFA337729568085BFA86 /* LocalAsset.swift */, + ECB66ECA5CC11A66E0A9D503A3944FAD /* NetworkAsset.swift */, ); - name = Album; - path = Album; + name = LocalAsset; + path = LocalAsset; sourceTree = ""; }; 1D1FBE09B2AE00A497108940D3135E00 /* View */ = { @@ -1073,25 +1121,48 @@ path = Sources/HXPhotoPicker/Camera/View; sourceTree = ""; }; - 1E75D8CD18B4D0F340662BFB8E7D4FEC /* Controller */ = { + 2154A3ED91EEBBE4CC349D541C485785 /* Lite */ = { isa = PBXGroup; children = ( - 7421B0C26F61DFDCA5DC91635EC530AD /* HXBaseViewController.swift */, + 193FB6AF906F8C9F2588498C0DB95F47 /* AssetResult.swift */, + 63B8DF493DB3E61DE45CF8384C45031A /* AssetURLResult.swift */, + FF000CAEBDA04F49DB547C49CE7E9357 /* PickerResult.swift */, + AA04C82F154B90E815E8A50129B5436C /* Config */, + DFE25439E5336BCA53AD1D74AB1888FB /* Controller */, + F3071AAE8DDD1F0236C87C991EB98BFC /* Data */, + D5CD5C698A745F6249931A937E8CAB51 /* Extension */, + 7BED3574230135FD3351A868CD1036EA /* Model */, + C7E0ABA36CD73313F2201FEE274728BB /* PickerView */, + 60B6E425C4798B0F71FBF0C0DF2FB626 /* Protocol */, + 28A09CB05C438D7BB10E9DC30BB4C3F0 /* Transition */, + B881BD3199CFCE31A8821635A29231B3 /* Util */, + EAF10FF87AAD8F3B15D16CDB944E309C /* View */, ); - name = Controller; - path = Sources/HXPhotoPicker/Core/Controller; + name = Lite; sourceTree = ""; }; - 2077ECD2C66A368560E8E07C30A5DFBF /* VideoPlayer */ = { + 269B0B18613C231EB377024535798C9F /* Fetch */ = { isa = PBXGroup; children = ( - 4B8D72AF93DAAB00A816DF7D4351B6AF /* PlayButton.swift */, - 64CAC4B1373FCF618F65DCF1CDCFF351 /* SliderView.swift */, - 4CC21C52322E101141A0CFFF9BD54DF0 /* VideoPlayerView.swift */, - 2F340C58F7CEB8BCE79B89E5F76B8EB3 /* VideoPlaySliderView.swift */, + FFFFD1DB25BEBB4196EF523CBC6DAB5B /* PhotoFetchAsset.swift */, + 9705A8FFBD684426A76D988C14EA5218 /* PhotoFetchAssetCollection.swift */, ); - name = VideoPlayer; - path = VideoPlayer; + name = Fetch; + path = Fetch; + sourceTree = ""; + }; + 28A09CB05C438D7BB10E9DC30BB4C3F0 /* Transition */ = { + isa = PBXGroup; + children = ( + 21B311BD8F2B6735B99E6EB70D81727A /* PhotoBrowserAnimator.swift */, + 18038FDCC4A3EDB96CEB6F8773A8440A /* PhotoBrowserInteractiveAnimator.swift */, + 15DD5F8E79714247FB1F1F5EED8166D5 /* PhotoPickerControllerAnimator.swift */, + 9F43848862E30E272889BC4DCB5EC3AD /* PhotoPickerControllerInteractiveAnimator.swift */, + CE533995C47E5A3D387994F8125D9520 /* PickerInteractiveTransition.swift */, + A97180EBDB8840F571744FC0090DC5AE /* PickerTransition.swift */, + ); + name = Transition; + path = Sources/HXPhotoPicker/Picker/Transition; sourceTree = ""; }; 2B06B7E33B72713A7905B9482AC34B19 /* Lite */ = { @@ -1111,15 +1182,6 @@ name = Lite; sourceTree = ""; }; - 2C01360B12D26BBBEC67DDE18165A49D /* ToolBar */ = { - isa = PBXGroup; - children = ( - 0A0A49B2EC630B2FE5DFA7AB65E778E6 /* PhotoToolBar.swift */, - ); - name = ToolBar; - path = ToolBar; - sourceTree = ""; - }; 31CE6F851A82DCBCD5DAA052DC58AFE5 /* Text */ = { isa = PBXGroup; children = ( @@ -1202,35 +1264,6 @@ path = Kingfisher; sourceTree = ""; }; - 38C2FA2E889E86914F1B36FAFC370F87 /* Util */ = { - isa = PBXGroup; - children = ( - 89A535377D9B3DA5092760549F6BF4FB /* AssetManager.swift */, - 1D9A383E1876165C39EE6C21AEABA8D7 /* AssetManager+Asset.swift */, - 7FDC79E3EB259B4BFC5008740E7E882F /* AssetManager+Authorization.swift */, - 2D51A1B311657FE1F991E06E28F3714E /* AssetManager+AVAsset.swift */, - 8BD7DB8DA37E8B3C0D15FC22FA5809E7 /* AssetManager+AVAssetExportSession.swift */, - 0DDA08524E8C52512B6CE24D720C0800 /* AssetManager+Image.swift */, - 0138618DBED9A53A554C7C680CBD78C3 /* AssetManager+ImageData.swift */, - E66BEE4736B890C42ECAA83AF1389989 /* AssetManager+ImageURL.swift */, - 929556B2342ABFE69D82475A81604C6F /* AssetManager+LivePhoto.swift */, - 6DA4AD4C1C9603C39AD579E5B5E825F4 /* AssetManager+LivePhotoURL.swift */, - 2E90E1F38138006C9D29C2E4F4B9ABD4 /* AssetManager+PlayerItem.swift */, - D8530A32D18C0432556AB7F006BB9725 /* AssetManager+VideoURL.swift */, - BF917D8B37B6AA169213299433A8A6A1 /* ImageResource.swift */, - 42EC3AA1FD115A166689EEF77171ADE8 /* PhotoManager.swift */, - F8CE106B86DA76108E489C88058253A8 /* PhotoManager+Download.swift */, - EFAD4A1FAC95C70727B2CB3A48BD265D /* PhotoManager+Language.swift */, - A6794E4F86E877704A71B667FAA78CCC /* PhotoTools.swift */, - A4FDEDE63D5E615512723B4A37E1C519 /* PhotoTools+Alert.swift */, - D44E2C3C67FB91EB55E2F3823E4832B6 /* PhotoTools+Camera.swift */, - 66A98FAAAD8F3D3AD17C9226922F7032 /* PhotoTools+File.swift */, - 68E95F9874BD443F200B368CFEDE2B8F /* TextManager.swift */, - ); - name = Util; - path = Sources/HXPhotoPicker/Core/Util; - sourceTree = ""; - }; 391B9D38D3F92862A9E3C29EEE04787B /* Model */ = { isa = PBXGroup; children = ( @@ -1252,18 +1285,6 @@ name = Location; sourceTree = ""; }; - 3AAC91409E46700F3F327246FB70084A /* Transition */ = { - isa = PBXGroup; - children = ( - 432662E79488B138F862A0A9F77E988F /* PhotoBrowserAnimationTransitioning.swift */, - 1F2F6A1EB98113A21E196496A44B3994 /* PhotoBrowserInteractiveTransition.swift */, - 2DEB026FE77BDEBF3D3E8AAC3FD518D1 /* PhotoPickerControllerAnimationTransitioning.swift */, - DC32EAB1BF505A7E1E3351E77407A7A6 /* PhotoPickerControllerInteractiveTransition.swift */, - ); - name = Transition; - path = Transition; - sourceTree = ""; - }; 3B0107CAA6D4640AFFBFF3E1447A1AEB /* Pod */ = { isa = PBXGroup; children = ( @@ -1273,16 +1294,6 @@ name = Pod; sourceTree = ""; }; - 3C7E1529C447EF3BBE8F0D5089A8F7E3 /* Config */ = { - isa = PBXGroup; - children = ( - 0241BE4105B52797D209EF32EEFC010E /* PickerDebugLogsConfig.swift */, - 301A26D5E3A055D7222B15B57E461555 /* SelectBoxConfiguration.swift */, - ); - name = Config; - path = Sources/HXPhotoPicker/Core/Config; - sourceTree = ""; - }; 40E29CCF11E0441088BD9799D77D5146 /* Model */ = { isa = PBXGroup; children = ( @@ -1294,6 +1305,19 @@ path = "Sources/HXPhotoPicker/Editor+View/Model"; sourceTree = ""; }; + 417343D46F0ACD7D16C4E369A874A89B /* Album */ = { + isa = PBXGroup; + children = ( + A08DED19060EBA7E789DB6EF3DE513CF /* AlbumViewBaseCell.swift */, + 0956E60EB8B965630B7D80A76B487432 /* AlbumViewCell.swift */, + 0711D9D7B135943A7B31BFF011C98956 /* PhotoAlbumCollectionCell.swift */, + F69CF66AA4F19E8DBD656398B663AD88 /* PhotoAlbumCollectionViewCell.swift */, + D938338EF833B355C68ADAC05D4D5E75 /* PhotoAlbumViewCell.swift */, + ); + name = Album; + path = Album; + sourceTree = ""; + }; 41AE8E76E31EF8BEEA6C44CE1D9FF5D1 /* iOS */ = { isa = PBXGroup; children = ( @@ -1316,6 +1340,15 @@ name = Camera; sourceTree = ""; }; + 430356C03DE4F41E8C68D6C5A1F06DE9 /* ToolBar */ = { + isa = PBXGroup; + children = ( + 4D50F836092281E9E7FC8A780F93F04C /* PhotoToolBar.swift */, + ); + name = ToolBar; + path = ToolBar; + sourceTree = ""; + }; 466535600139D37F651C6A0E3DBA63EE /* Development Pods */ = { isa = PBXGroup; children = ( @@ -1327,7 +1360,7 @@ 4E27EE93DC7540D5000244C5EA76AD91 /* Picker */ = { isa = PBXGroup; children = ( - 67244E50BD16C9A8FD15AB95E85C047F /* Lite */, + 2154A3ED91EEBBE4CC349D541C485785 /* Lite */, ); name = Picker; sourceTree = ""; @@ -1355,71 +1388,33 @@ path = Sources/HXPhotoPicker/Editor/Protocol; sourceTree = ""; }; - 529F3CB1D2E29CB02DE5B3EACBD6A12B /* Model */ = { + 5553146C02B9672F8CE923800C5F9304 /* ToolBar */ = { isa = PBXGroup; children = ( - FAD127C655DFC9DD08CABF07EC41F542 /* AppearanceStyle.swift */, - 11BB5F0CEB8EDB5D8030956AA02907F2 /* CustomLanguage.swift */, - E7EE5A2D4D50C55CFFD6377D36A86F66 /* ExportPreset.swift */, - 6194F89150B002EBC2C4A123F50AD3C8 /* HXLog.swift */, - 0966BDD375CC4BD78589C54C551E9BD0 /* ImageContentType.swift */, - 77804D51DDDCF767F86B7CA7D918EC00 /* IndicatorType.swift */, - 085B2C27BF5697930115474536DC77C1 /* LanguageType.swift */, - B2ECABCCB399441797DA0B1DE8D14496 /* LivePhotoError.swift */, - 293D8EB8065366109775EBD530F72FCB /* PhotoError.swift */, - 8B867AD78FFC3FCC7D39D7E94A83F385 /* PhotoPanGestureRecognizer.swift */, + 00053595473C457C7F01F8662132BE4D /* PhotoPermissionPromptView.swift */, + E8657E411275937B2E988E7DDD25631B /* PhotoPreviewListView.swift */, + 30BF318269DB5B8EB3BCDE564FEEDB33 /* PhotoPreviewListViewCell.swift */, + F8CE430D965B9B62E1A2DBE5E6C78242 /* PhotoPreviewListViewLayout.swift */, + 1E0254FBB44F357441BA90923C54295F /* PhotoPreviewSelectedView.swift */, + B6BD34F0ECF3CDD3775795C1743DDA03 /* PhotoPreviewSelectedViewCell.swift */, + ED42A840A0CEA92C27B1F3E7659011A7 /* PhotoToolBarEmptyView.swift */, + 9FEF6522B70603FE48B5C0EA49A7EE0C /* PhotoToolBarView.swift */, ); - name = Model; - path = Sources/HXPhotoPicker/Core/Model; - sourceTree = ""; - }; - 53BB7AD883F0DE6DC98E3F8F1EA895E2 /* Picker */ = { - isa = PBXGroup; - children = ( - A3CA808374B43D3AD23411D7FB6534D5 /* PhotoPickerFilterViewController.swift */, - 9E58ECC38D21329F07A0456B7F3440C3 /* PhotoPickerListViewController.swift */, - AB81D1976245C16A9BA6D762B8C0A5E4 /* PhotoPickerPageViewController.swift */, - 290F53E8FC0DC51D8BB840D242460BFF /* PhotoPickerViewController.swift */, - 592E3C47AB2037FAEACFDA3CED12A34B /* PhotoPickerViewController+AlbumView.swift */, - 4F71EDEA505EF8D70954F2003BB4C6F1 /* PhotoPickerViewController+Camera.swift */, - 8A9C1FF8B1653CEDDDCFDB792F41E885 /* PhotoPickerViewController+Editor.swift */, - 1BBD29E1D2E4AC60FFDFC72344693235 /* PhotoPickerViewController+FetchAsset.swift */, - 1715903269BC56CD4512AB888EFF45CA /* PhotoPickerViewController+PhotoList.swift */, - 218277DDF37812D7E9D31E18BED7067A /* PhotoPickerViewController+Preview.swift */, - 53BDFEBC1FA2BCFFDDD90DA8452A74E0 /* PhotoPickerViewController+Toolbar.swift */, - 575CD8550C09242EAF6915E03652B776 /* SystemCameraViewController.swift */, - ); - name = Picker; - path = Picker; - sourceTree = ""; - }; - 5441483C24AFE2DBB2517BC8DE3DAB41 /* Core */ = { - isa = PBXGroup; - children = ( - D382F6042F2637D1229A4A89F8247158 /* HXPhotoPicker.bundle */, - 8F365FF40B42E1EE50579AC592559CF5 /* HXPhotoPicker.swift */, - 3C7E1529C447EF3BBE8F0D5089A8F7E3 /* Config */, - 1E75D8CD18B4D0F340662BFB8E7D4FEC /* Controller */, - 66B3BE528AB2CA2E1129F2E781211301 /* Extension */, - 529F3CB1D2E29CB02DE5B3EACBD6A12B /* Model */, - 38C2FA2E889E86914F1B36FAFC370F87 /* Util */, - 0412C90438BBE032095D5F75890EEA06 /* View */, - ); - name = Core; + name = ToolBar; + path = ToolBar; sourceTree = ""; }; - 5582BC54C138FDC7CFEE084B10614D81 /* Transition */ = { + 5A98B8CF37864A42308B622DBAC23770 /* ProgressHUD */ = { isa = PBXGroup; children = ( - 9A39906396247B28D9EF3E8B157B6256 /* PhotoBrowserAnimator.swift */, - 36599D3DDCE60BEE9F154B01DE6B69BA /* PhotoBrowserInteractiveAnimator.swift */, - 2A0E7AAF7A7B7C9395033FD91706717D /* PhotoPickerControllerAnimator.swift */, - 9736014E39E41C6D46FF66B0EFA7349F /* PhotoPickerControllerInteractiveAnimator.swift */, - 4BCEF8AEA986ECC495BA63F38F58F7FA /* PickerInteractiveTransition.swift */, - 6ABF868373C61D1280D758B884D4CCEF /* PickerTransition.swift */, + 8DCAC869A6EED603E0CE085393821706 /* ProgressCircleView.swift */, + E7F6B4F6B3F9C14E0F634911922C65CB /* ProgressCricleJoinView.swift */, + 6EA4824932E81AB8E7F97CD5F665A1C7 /* ProgressHUD.swift */, + 2ECA3FCD57A9A04C423506E5E6BDF655 /* ProgressImageView.swift */, + 0B772A00FD2C5AE1BA4CBB6219B8D616 /* ProgressIndefiniteView.swift */, ); - name = Transition; - path = Sources/HXPhotoPicker/Picker/Transition; + name = ProgressHUD; + path = ProgressHUD; sourceTree = ""; }; 5F1F52FBC53844330C29F84D605C2BCC /* Editor */ = { @@ -1430,143 +1425,48 @@ name = Editor; sourceTree = ""; }; - 619D67F15E7EC606D35EB28CFEDB450A /* Fetch */ = { - isa = PBXGroup; - children = ( - 0EB39C7D7F6C10F57DFEE8D0102F3C52 /* PhotoFetchAsset.swift */, - E6ABDA47D9AD33B985B4A5CDC0BA601D /* PhotoFetchAssetCollection.swift */, - ); - name = Fetch; - path = Fetch; - sourceTree = ""; - }; - 623A0C0C5360AA3C82E7E094D0CFA0C7 /* Album */ = { + 60B6E425C4798B0F71FBF0C0DF2FB626 /* Protocol */ = { isa = PBXGroup; children = ( - 9143BB3B021131776E6126271BE532DB /* AlbumListView.swift */, - 9C78E382FA56109F3BFB1EC17F7435C7 /* AlbumSectionHeaderView.swift */, - 79E6873C3D97B7BD15CF63F38DFE22DD /* AlbumTitleView.swift */, - 7C2E06067675A1E00855F10705105718 /* PhotoAlbumHeaderView.swift */, + 269B0B18613C231EB377024535798C9F /* Fetch */, + D5ADF62AF461F92B2B77406F20BF28C8 /* Transition */, + 9097BE251F1A1853E9DC7C9160292709 /* UI */, ); - name = Album; - path = Album; - sourceTree = ""; - }; - 66B3BE528AB2CA2E1129F2E781211301 /* Extension */ = { - isa = PBXGroup; - children = ( - BF1CA7E8C5693BBD6ECB451C8D853157 /* Core+AVAsset.swift */, - D374000D7C9F612BD0DA769801B80E08 /* Core+Bundle.swift */, - DC45B8DA08F49ABBC4F8B745019CD8D7 /* Core+CALayer.swift */, - 05AD8FFA8BABA6EFEAE10B1640EDEFD0 /* Core+CGFloat.swift */, - A8F80F0650FAC186261A8EFB6172445B /* Core+Data.swift */, - 11848D6132EEB82E1D33E2FEEEA26DD7 /* Core+Dictionary.swift */, - 6E457F3BF11A71054126B11F685FEF8B /* Core+FileManager.swift */, - 034C1220E20241B77892C942C3B9F4B1 /* Core+NSObject.swift */, - C22DC50AF507E9DCFDC43E637655CA88 /* Core+PHAsset.swift */, - 47288D6A78B80F96E0D054EA21858EEF /* Core+PHAssetCollection.swift */, - 4E0EC071D910E73172E2D65888E6A26B /* Core+String.swift */, - D906D06935C1AE136D38FD9DD9220CEF /* Core+UIApplication.swift */, - 2E58552A6D6402199DBD939CF6A162B7 /* Core+UICollectionView.swift */, - AC34F27DBCF76763139C9EB88D1D3585 /* Core+UIColor.swift */, - 8679A26BF780F2E676C54467D6BB7046 /* Core+UIDevice.swift */, - 9F310A341E28B55E87401E0149BCD8BD /* Core+UIFont.swift */, - 2AD8D2DCE8B2BBEB8DCEFD49E51DC4ED /* Core+UIImage.swift */, - 7635C5B2F28627B7F5ACF0F3B0465C97 /* Core+UIImageView.swift */, - 54F7D2F7B75704B23A4BC5D702E899BC /* Core+UILabel.swift */, - F5BC64DB81AF37AB27984996A58943AE /* Core+UITableView.swift */, - D6A95AE97907C5CB4DA88ED7CFE7C04D /* Core+UIView.swift */, - CAA3A59350274D54B9CD9E118D9D4840 /* Core+UIViewController.swift */, - 199E4C8DC0C74FB96A3C6781A99E722B /* Core+URL.swift */, - ); - name = Extension; - path = Sources/HXPhotoPicker/Core/Extension; - sourceTree = ""; - }; - 67244E50BD16C9A8FD15AB95E85C047F /* Lite */ = { - isa = PBXGroup; - children = ( - 54986FD3B479F277CAE03AA4E1E9B3D9 /* AssetResult.swift */, - DB0F6F65F120DF7BC80746EF0CB1E57D /* AssetURLResult.swift */, - C939BCD529DF297DEDFE95FD4A4D50BE /* PickerResult.swift */, - 9284540EA687406D4A7E7581C28684AC /* Config */, - C60C3FD928B67567F6C58BDC87723269 /* Controller */, - A09966D6A6343C2624987B1EFA723EA2 /* Data */, - BA699C5B0EF3587C62862F298572BA50 /* Extension */, - EA94F6D06F5183382EA9DB10B0BA65DA /* Model */, - E3C176AF68753B47C21013084ECC68C7 /* PickerView */, - 9F179607497764512F833BA1C482D3B9 /* Protocol */, - 5582BC54C138FDC7CFEE084B10614D81 /* Transition */, - DD5F771FC1FFCAAA340392D2BB14399C /* Util */, - 72064DD04834F54889C3C4838E3E0A84 /* View */, - ); - name = Lite; - sourceTree = ""; - }; - 68C82E904E1D8B65998686AB3535B9AF /* UI */ = { - isa = PBXGroup; - children = ( - 43DB67A4B323CF58A31E86CF1661325F /* PhotoControllerEvent.swift */, - 24D585EA470D45490504E9204F0C4D54 /* PhotoDeniedAuthorization.swift */, - 8D6CAC478E7EE818AE2F82B131789C28 /* PhotoNavigationItem.swift */, - 996A7301C93D65797397494057D0EDAF /* PhotoPickerControllerFectch.swift */, - 436DB579F8C363657848D06843DA88D1 /* PhotoPickerDataStatus.swift */, - AFF852241AE3ADE73B57A2E32B443EA9 /* AlbumList */, - 7750D35BA0A98E62F36F983027273FA0 /* PhotoList */, - 2C01360B12D26BBBEC67DDE18165A49D /* ToolBar */, - ); - name = UI; - path = UI; + name = Protocol; + path = Sources/HXPhotoPicker/Picker/Protocol; sourceTree = ""; }; - 72064DD04834F54889C3C4838E3E0A84 /* View */ = { + 72B3D60D83B4DB99A9663A2397B0E08C /* Util */ = { isa = PBXGroup; children = ( - 9FDC3CA2F2CD3706A5DF20F8E5A00E99 /* CaptureVideoPreviewView.swift */, - 48E2487B094F3FA9ED0B94FB2A05255C /* DeniedAuthorizationView.swift */, - DE58743FF454EF467EF0E389E89149AB /* PhotoImageCancelItemView.swift */, - B0E87F7F3A10FE54A05DE06C711082E5 /* PhotoPickerBottomNumberView.swift */, - 9FA74269CEF587DB6F50406F8953EEB3 /* PhotoPickerFilterItemView.swift */, - 005069C25CEFB0C555CBDC75E0EA7417 /* PhotoPickerFinishItemView.swift */, - F1E35B955B2216B9AED62398DFA3084D /* PhotoPreviewContentLivePhotoView.swift */, - 235E12025186D09B943B78A364779014 /* PhotoPreviewContentPhotoView.swift */, - 29C392CA1A08DAF30066CFFF92C20354 /* PhotoPreviewContentVideoView.swift */, - D344F7E1E18F30BDB093B49472940D52 /* PhotoPreviewContentViewProtocol.swift */, - 2F5B73D1F283C24D8F3EF668D2CEC1C7 /* PhotoPreviewVideoView.swift */, - 113F47C1BA52B7966475EF2C9BA3E21A /* PhotoTextCancelItemView.swift */, - B2466B0ADC050A093BFA7C1F1EB59554 /* PhotoThumbnailView.swift */, - 623A0C0C5360AA3C82E7E094D0CFA0C7 /* Album */, - E51DA68538D2BF6CBDADE1CB6EB8A946 /* Cell */, - 9A461AFBD1322901231DBCEFDBC64E9B /* Kit */, - C6CFD0D11DFC8004B0D95ADC4EEDC2F0 /* ToolBar */, + 04E9DB81EFC837287B26F3197EF72FE7 /* Editor+PhotoTools.swift */, ); - name = View; - path = Sources/HXPhotoPicker/Picker/View; + name = Util; + path = Sources/HXPhotoPicker/Editor/Util; sourceTree = ""; }; - 72B3D60D83B4DB99A9663A2397B0E08C /* Util */ = { + 7BED3574230135FD3351A868CD1036EA /* Model */ = { isa = PBXGroup; children = ( - 04E9DB81EFC837287B26F3197EF72FE7 /* Editor+PhotoTools.swift */, + 6DF892D1FD203B7634A0EAFE901B019F /* PhotoAssetCollection.swift */, + 89845AE8E390423D01A641A87C4A2D3B /* PickerManager.swift */, + 1D3BE211676F96EECF5E3EC9348FCA8A /* PickerTypes.swift */, + 1A6A17E2E16B817ADD14B04806FA17A3 /* LocalAsset */, + B89E25E095EBAE74BD1A8E5F282AB213 /* PhotoAsset */, ); - name = Util; - path = Sources/HXPhotoPicker/Editor/Util; + name = Model; + path = Sources/HXPhotoPicker/Picker/Model; sourceTree = ""; }; - 7750D35BA0A98E62F36F983027273FA0 /* PhotoList */ = { + 7D0E61D1C7C5FD4331E138CF5DA87A24 /* Kit */ = { isa = PBXGroup; children = ( - 20A2F58D6F843C5EC961444D89C49697 /* PhotoPickerList.swift */, - 1854C1C53173E3F65CB5F4415AA89681 /* PhotoPickerListAssets.swift */, - 254F6A0C57B1279136874B656ABB46FC /* PhotoPickerListCollectionView.swift */, - 0369C6BC874F96F56992A79EB2822A0E /* PhotoPickerListCondition.swift */, - C6352859C46C0357343DE4787F3C3505 /* PhotoPickerListConfig.swift */, - ED8BB19179A89746DB5D5075C5812E8B /* PhotoPickerListFectchCell.swift */, - A276E646998209B9C92E1B536F361154 /* PhotoPickerListSwipeSelect.swift */, - 1609F7AA39259586CC8D5EDB4A9D4A39 /* PhotoPickerNavigationTitle.swift */, + A6A11429F9B07AA636873E14188DF752 /* ArrowView.swift */, + E84BED71C4C1D20FB1DB2BB1E79D8A8C /* EmptyView.swift */, + 281C3AB60C5C3DC3C6AA448835E8AF6F /* TickView.swift */, ); - name = PhotoList; - path = PhotoList; + name = Kit; + path = Kit; sourceTree = ""; }; 83FE1F0FD9453A3D3CE7B00363C24029 /* Util */ = { @@ -1591,6 +1491,22 @@ path = Sources/HXPhotoPicker/Camera/Model; sourceTree = ""; }; + 864771D02D1411ACA0C62F3274568E5D /* Preview */ = { + isa = PBXGroup; + children = ( + C876502D0D48B9BD5B20679D6176A150 /* PhotoPeekViewController.swift */, + 2B28C46918EC83F926AB5793C76D5E14 /* PhotoPreviewViewController.swift */, + 1A6141330D94E6B655BE747DDE36FEC4 /* PhotoPreviewViewController+CollectionView.swift */, + 08F819F52F9EFEB7A123C7947C54BDC2 /* PhotoPreviewViewController+Editor.swift */, + 8A49A19465EF2DAFD03CF26958148DBF /* PhotoPreviewViewController+NavigationController.swift */, + CE07908050FF6982B2A50406E9167B6D /* PhotoPreviewViewController+SelectBox.swift */, + 873CB93710BDF487E2088B2748D24AE8 /* PhotoPreviewViewController+Toolbar.swift */, + 4C9A44EECC742AD45DBA3113063EF4BE /* PhotoPreviewViewControllerProtocol.swift */, + ); + name = Preview; + path = Preview; + sourceTree = ""; + }; 8FFBE3AF77852DEC631896D98AF1F0DD /* CropSize */ = { isa = PBXGroup; children = ( @@ -1603,24 +1519,20 @@ path = CropSize; sourceTree = ""; }; - 9284540EA687406D4A7E7581C28684AC /* Config */ = { + 9097BE251F1A1853E9DC7C9160292709 /* UI */ = { isa = PBXGroup; children = ( - 2508B33D41DEE39D5B11E16E3646BE6A /* AlbumListConfiguration.swift */, - E892491520AEA17049715B574F92A658 /* AlbumTitleViewConfiguration.swift */, - 89FB0B71480C8B71AEDC39450C99E63C /* ArrowViewConfiguration.swift */, - 6B50ECC8B37F34EE2A4442ADD290ED6A /* EmptyViewConfiguration.swift */, - 5780C4803690A4A60C9FA01FC26F3C17 /* NotAuthorizedConfiguration.swift */, - BCFAC7BC850FC8D6191D48735071A581 /* PhotoAlbumControllerConfiguration.swift */, - A4FEF6C29F9FB1F0B3E4C62ABC489A32 /* PhotoListCellConfiguration.swift */, - 35C4410BFF623BE5B3640E6D41599627 /* PhotoListConfiguration.swift */, - 22DED0E9449185293F3DBAE799DF5894 /* PickerBottomViewConfiguration.swift */, - 5658A6FB93F3AC46D187FFF13217C20A /* PickerConfiguration.swift */, - CE09647693462C24E83B73D277CC95FC /* PreviewViewConfiguration.swift */, - 2325146BDDB2A1EB3C6E31AAADD8F967 /* SystemCameraConfiguration.swift */, + AFA3CF112E554D34980975FED03C90B0 /* PhotoControllerEvent.swift */, + AA508DB147D0713B4C79956CCF87E5B4 /* PhotoDeniedAuthorization.swift */, + 4D6F7B8DD89AE8E0FCE32130A9FE7BA2 /* PhotoNavigationItem.swift */, + 588387E33F05555C84892A55200AD878 /* PhotoPickerControllerFectch.swift */, + 5019F96EDAABBBA2A1E9EA1197438EFE /* PhotoPickerDataStatus.swift */, + F7922E8BDD3BA68690E61AA4A321F7F1 /* AlbumList */, + C585C5065CC85467C80FB2044EF9FD01 /* PhotoList */, + 430356C03DE4F41E8C68D6C5A1F06DE9 /* ToolBar */, ); - name = Config; - path = Sources/HXPhotoPicker/Picker/Config; + name = UI; + path = UI; sourceTree = ""; }; 9719A9411DA0EA04CF25110B3B337644 /* Pods-SwiftUIExample */ = { @@ -1651,56 +1563,93 @@ path = Brush; sourceTree = ""; }; - 9A461AFBD1322901231DBCEFDBC64E9B /* Kit */ = { + A1855072BE02CC325A3A381C31F58577 /* Extension */ = { isa = PBXGroup; children = ( - EFB79AE17C107753DA564DDFFA54BCFF /* ArrowView.swift */, - 132F448A513F87AE9707FD916F9690F7 /* EmptyView.swift */, - F8F885D82E80DD755674E85615BBE5E3 /* TickView.swift */, + B28E2838D03F588207280CF82D521C0F /* Editor+CIImage.swift */, ); - name = Kit; - path = Kit; + name = Extension; + path = Sources/HXPhotoPicker/Editor/Extension; sourceTree = ""; }; - 9F179607497764512F833BA1C482D3B9 /* Protocol */ = { + A238BFF5AD7125EF90FBDE9484911FE6 /* Picker */ = { isa = PBXGroup; children = ( - 619D67F15E7EC606D35EB28CFEDB450A /* Fetch */, - C1E63DCE0E2D1B84E0987833A310AB5E /* PhotoAsset */, - 3AAC91409E46700F3F327246FB70084A /* Transition */, - 68C82E904E1D8B65998686AB3535B9AF /* UI */, + B873831F6743866CC8F760D4C2660172 /* PhotoPickerFilterViewController.swift */, + 8491443BBAE4085CAB4B0B5E56D13E81 /* PhotoPickerListViewController.swift */, + 75DC5B55D491F57C01E8696D2980877E /* PhotoPickerPageViewController.swift */, + 85900811001DF34BC738D666B63F5A75 /* PhotoPickerViewController.swift */, + 3A642D87754A381C626976B558BA1ADA /* PhotoPickerViewController+AlbumView.swift */, + D5144B6BF86E9E01ED963D23F853EB8E /* PhotoPickerViewController+Camera.swift */, + 814FEFAF154BE89E5C2B2A13A10F8A5F /* PhotoPickerViewController+Editor.swift */, + 9D3383D2FA5DECE424820FA97BE2099E /* PhotoPickerViewController+FetchAsset.swift */, + ED47D4C3D6EECEC57FA1EABB8E264104 /* PhotoPickerViewController+PhotoList.swift */, + C6831C1750D4F3E7450A80C3C4E25C60 /* PhotoPickerViewController+Preview.swift */, + AB913419AE30930F2C386B630AD71436 /* PhotoPickerViewController+Toolbar.swift */, + 5F1C18D883FFEC96A20F9BF299EAB393 /* SystemCameraViewController.swift */, ); - name = Protocol; - path = Sources/HXPhotoPicker/Picker/Protocol; + name = Picker; + path = Picker; sourceTree = ""; }; - A09966D6A6343C2624987B1EFA723EA2 /* Data */ = { - isa = PBXGroup; - children = ( - 1AD1CB59A73E6328FAABA9B65436AC68 /* PhotoFetchData.swift */, - DA20FE92B94ABA8D0626FEA37BD3A53F /* PhotoPickerData.swift */, + A6F72D4CE8D9DCC6EB258FEEBE7AE708 /* Extension */ = { + isa = PBXGroup; + children = ( + 3323D4D2A8BC9C27FEC1D6EE348CA52E /* Core+AVAsset.swift */, + 9F7E0959259006D034E011220CCA2F5E /* Core+Bundle.swift */, + 80676E7E6F9E56313ACD0AC5E4C04A15 /* Core+CALayer.swift */, + 0BAB67015813682108BA6DA1C9EBF63B /* Core+CGFloat.swift */, + 4256E3206B7D81E3111A16218CD67A9A /* Core+Data.swift */, + D86D388A9AF70ECC719D8F0026CD369C /* Core+Dictionary.swift */, + 37C50A5E4339E4059172DB3FE6A8F6C8 /* Core+FileManager.swift */, + FD3AFFECEF0B4181934F42356044EC36 /* Core+NSObject.swift */, + 9C7163793147F08DD6232B1F6FCBFE84 /* Core+PHAsset.swift */, + 7D7A4374AEB8523483301F1E8AF8EE80 /* Core+PHAssetCollection.swift */, + 9ACC01A44213EDD76178CBC38196399D /* Core+String.swift */, + F62EC207BB4338E2814AE61BB821F469 /* Core+UIApplication.swift */, + 0D9302DCBD76A65E81A04690D8985175 /* Core+UICollectionView.swift */, + C3EEB95B142CE4B2CF711B86E0AD538A /* Core+UIColor.swift */, + 753CE6562EF1AD97F107E8ED424FEAD8 /* Core+UIDevice.swift */, + 508D8A94159BE4C337AF58B7A3D42A61 /* Core+UIFont.swift */, + 0A365A5F46E1691045C24EE615F99AB1 /* Core+UIImage.swift */, + C16ED134A66F5AD3EE12FD02F68CF46F /* Core+UIImageView.swift */, + 58C9E88DDBEF7FA5CF5D6FE854B78D18 /* Core+UILabel.swift */, + 968EB7A4D2DBFC7A66B9B33AFBEA1470 /* Core+UITableView.swift */, + EE4B421409CEFCD1486371BBE2523EE1 /* Core+UIView.swift */, + 03C8D29DD91FC39B17393D64AA4E5475 /* Core+UIViewController.swift */, + 9D96E9A74BDE1BAE8EF79AF05333B6AD /* Core+URL.swift */, ); - name = Data; - path = Sources/HXPhotoPicker/Picker/Data; + name = Extension; + path = Sources/HXPhotoPicker/Core/Extension; sourceTree = ""; }; - A1855072BE02CC325A3A381C31F58577 /* Extension */ = { + AA04C82F154B90E815E8A50129B5436C /* Config */ = { isa = PBXGroup; children = ( - B28E2838D03F588207280CF82D521C0F /* Editor+CIImage.swift */, + 76B7D8C69B470C235C92617FD810DE27 /* AlbumListConfiguration.swift */, + 14728CE560EF0C19EF3DA2D67B840185 /* AlbumTitleViewConfiguration.swift */, + 4B48D951AAB501DFC7943AC73FC6E1C1 /* ArrowViewConfiguration.swift */, + 30BE89D805E0519FF4CCF90F32C9CF6E /* EmptyViewConfiguration.swift */, + 8B01E47C8C210EE77F0DF6AA6CE6A1A6 /* NotAuthorizedConfiguration.swift */, + 3C3814F153862BB379501C2DA605163C /* PhotoAlbumControllerConfiguration.swift */, + B65CA76048F5133E0DA9CA7F949DF3D9 /* PhotoListCellConfiguration.swift */, + E38765ED2D44222BB15AA52BF3681431 /* PhotoListConfiguration.swift */, + 65A7B3289BC3D97333DCD24D50B87BBC /* PickerBottomViewConfiguration.swift */, + 1FE94249D2DDC30C4AC7E1182C82C28E /* PickerConfiguration.swift */, + 34A9BF64900D52253B4105D660151F5F /* PreviewViewConfiguration.swift */, + 036A9B4BE47D203B418323338BCD1EDB /* SystemCameraConfiguration.swift */, ); - name = Extension; - path = Sources/HXPhotoPicker/Editor/Extension; + name = Config; + path = Sources/HXPhotoPicker/Picker/Config; sourceTree = ""; }; - AFF852241AE3ADE73B57A2E32B443EA9 /* AlbumList */ = { + B060B22EE6B4437F317F9AEAF7BE702A /* Controller */ = { isa = PBXGroup; children = ( - 26A1DF8B53913A5E332E405298C1627F /* PhotoAlbumController.swift */, - DCDA69814ED5A5B0DF540444A36E3817 /* PhotoAlbumList.swift */, + C4D5571D3CF4623A0BD093BC9F3A39CE /* HXBaseViewController.swift */, ); - name = AlbumList; - path = AlbumList; + name = Controller; + path = Sources/HXPhotoPicker/Core/Controller; sourceTree = ""; }; B4AEA5BBEDF63BF3EA3788C5A6E3107A /* Support Files */ = { @@ -1718,6 +1667,36 @@ path = "Pods/Target Support Files/HXPhotoPicker"; sourceTree = ""; }; + B881BD3199CFCE31A8821635A29231B3 /* Util */ = { + isa = PBXGroup; + children = ( + 2E9790C83FFB763C1C67107B1317CCCE /* Picker+LivePhotoTools.swift */, + DB690B8811F966F88172D3EFC2E7BADF /* Picker+PhotoManager.swift */, + B194B333D0BA0494D91F90088C6CFA7D /* Picker+PhotoTools.swift */, + ); + name = Util; + path = Sources/HXPhotoPicker/Picker/Util; + sourceTree = ""; + }; + B89E25E095EBAE74BD1A8E5F282AB213 /* PhotoAsset */ = { + isa = PBXGroup; + children = ( + 49172FA6B1FDA739CFB32B6127A6CA2A /* PhotoAsset.swift */, + 9DD87415A13A22FDAE54F6E74F418C77 /* PhotoAsset+Codable.swift */, + C3B0A269952077806641AD81AB296780 /* PhotoAsset+Editor.swift */, + E1C1D162E6C2BA9F8861E21A384C74E5 /* PhotoAsset+Equatable.swift */, + 21E547808F2A56296B6548ACFFC06388 /* PhotoAsset+FileSize.swift */, + AE028734D59C1A8D164D96C07F3816A6 /* PhotoAsset+Image.swift */, + 50CB8C1829A6CA9B36C2870BCAE98236 /* PhotoAsset+Local.swift */, + 5025ACB67F9E2A67E6CD39B93AFC79B9 /* PhotoAsset+Network.swift */, + 585304862865EA038C14AE6C40DA979E /* PhotoAsset+Request.swift */, + 489D1C6704909E01EA1DE307A3ED8C4A /* PhotoAsset+URL.swift */, + 2159E08188513A416B86875E9B8AD56B /* PhotoAsset+Video.swift */, + ); + name = PhotoAsset; + path = PhotoAsset; + sourceTree = ""; + }; B8D52CE9895E1D261B8CA6C61CDC8EC2 /* Filter */ = { isa = PBXGroup; children = ( @@ -1758,43 +1737,25 @@ path = Sources/HXPhotoPicker/Editor/Controller; sourceTree = ""; }; - B972DCF6F3E382C9278A7D6231D8C658 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - E3BC6CDC56799A1659DC3EFF0C4B7928 /* Pods-HXPhotoPickerExample */, - 9719A9411DA0EA04CF25110B3B337644 /* Pods-SwiftUIExample */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - B9E43D2D65C7C68357A81068B131225D /* Preview */ = { + B94C40E79FC817586DFC6EA3E128CC0B /* VideoPlayer */ = { isa = PBXGroup; children = ( - A1ED286ADBACDF82B69A16D096380A2A /* PhotoPeekViewController.swift */, - 867AB56CDA8037A06051B915F5923334 /* PhotoPreviewViewController.swift */, - B75889419F9851EA697A4E47A49707ED /* PhotoPreviewViewController+CollectionView.swift */, - 277D99537EE8E4E877124D9837A7722D /* PhotoPreviewViewController+Editor.swift */, - B55DA2CF10ECE623504A9F5F855D5C39 /* PhotoPreviewViewController+NavigationController.swift */, - F630DBDAF5F59B061F358953F59E393E /* PhotoPreviewViewController+SelectBox.swift */, - 2ED3A5F732E256A8A3B14EF83CDEB3D8 /* PhotoPreviewViewController+Toolbar.swift */, - 42FF07D1E9BE248789638BF90402BECC /* PhotoPreviewViewControllerProtocol.swift */, + 79DBC0DF33A355BFA9D942E84DB3BFCB /* PlayButton.swift */, + 175908DADDFE25A9A204580E55E18E65 /* SliderView.swift */, + 94D2660AA5420E39F671C05CCC0DE006 /* VideoPlayerView.swift */, + E630B7F8343389BF4315ACBEC550ADE3 /* VideoPlaySliderView.swift */, ); - name = Preview; - path = Preview; + name = VideoPlayer; + path = VideoPlayer; sourceTree = ""; }; - BA699C5B0EF3587C62862F298572BA50 /* Extension */ = { + B972DCF6F3E382C9278A7D6231D8C658 /* Targets Support Files */ = { isa = PBXGroup; children = ( - A09C90E3781AFA0C765FBDC119A395C6 /* Picker+Array.swift */, - 75C552F23A704EA06FC0F852C359DACF /* Picker+ConfigExtension.swift */, - B269E4BB92DAED94D6323CC0E25F3FDD /* Picker+Int.swift */, - 3EFFC84DF00D03AF4D6FC4C2D5CB2443 /* Picker+PhotoAsset.swift */, - DD75CD6128762807A6E87DB52DFB9986 /* Picker+UIImageView.swift */, - E13AB52F619E70FAE63B23C06AAD9FFA /* Picker+UIViewController.swift */, + E3BC6CDC56799A1659DC3EFF0C4B7928 /* Pods-HXPhotoPickerExample */, + 9719A9411DA0EA04CF25110B3B337644 /* Pods-SwiftUIExample */, ); - name = Extension; - path = Sources/HXPhotoPicker/Picker/Extension; + name = "Targets Support Files"; sourceTree = ""; }; BD5EF428EC57E77AF5737DAB43D3FA8C /* Controller */ = { @@ -1825,58 +1786,38 @@ path = Chartlet; sourceTree = ""; }; - C1E63DCE0E2D1B84E0987833A310AB5E /* PhotoAsset */ = { - isa = PBXGroup; - children = ( - 2CCBEA8537CF7F5B0E9DFA40F566184E /* PhotoAssetEquatable.swift */, - ); - name = PhotoAsset; - path = PhotoAsset; - sourceTree = ""; - }; - C60C3FD928B67567F6C58BDC87723269 /* Controller */ = { + C585C5065CC85467C80FB2044EF9FD01 /* PhotoList */ = { isa = PBXGroup; children = ( - CE7C4F3045254FD2A47B8EDCAD8D66D1 /* Album */, - 13B318189C865EAEDBF05E3FEB3CB026 /* Browser */, - C813A2877C9EB2B9A4DE11A066779988 /* Photo */, - 53BB7AD883F0DE6DC98E3F8F1EA895E2 /* Picker */, - B9E43D2D65C7C68357A81068B131225D /* Preview */, + C8A42AF7D5BB09B1ECF39D0C83AF2729 /* PhotoPickerList.swift */, + CCDB4F339FB1955F28C99848D5DEF852 /* PhotoPickerListAssets.swift */, + 53129D60C107C5942B93469B7B09C00F /* PhotoPickerListCollectionView.swift */, + 7971888696221E42BEB4BFA1A5FBBE7C /* PhotoPickerListCondition.swift */, + 19073562545B9DDA4683B07008671D5C /* PhotoPickerListConfig.swift */, + FC368314D7476127F23D11119F81CDBF /* PhotoPickerListFectchCell.swift */, + B5E46B3FE538490F78EFCA93785EF92B /* PhotoPickerListSwipeSelect.swift */, + 374CFA55D9094B3691DE46F0718D1DD5 /* PhotoPickerNavigationTitle.swift */, ); - name = Controller; - path = Sources/HXPhotoPicker/Picker/Controller; - sourceTree = ""; - }; - C6CFD0D11DFC8004B0D95ADC4EEDC2F0 /* ToolBar */ = { - isa = PBXGroup; - children = ( - 6018A94B7075F716E9FAB4F2B9895539 /* PhotoPermissionPromptView.swift */, - 827BE8598E67B2E17FADD3C7B128597B /* PhotoPreviewListView.swift */, - C3DFED420961ED36CD4F276A7ACB1140 /* PhotoPreviewListViewCell.swift */, - A35465F3A1CA1BC230A3945FA928F491 /* PhotoPreviewListViewLayout.swift */, - 18D697E8E6125BCA28F4852C5FE0C03F /* PhotoPreviewSelectedView.swift */, - 3A54FBECEE40047D6386ACA090A7596A /* PhotoPreviewSelectedViewCell.swift */, - BD7216D7ED266024EA5AD64F3C15895B /* PhotoToolBarEmptyView.swift */, - CA760584DA7F7727D72DADFEF4D64D21 /* PhotoToolBarView.swift */, - ); - name = ToolBar; - path = ToolBar; + name = PhotoList; + path = PhotoList; sourceTree = ""; }; - C813A2877C9EB2B9A4DE11A066779988 /* Photo */ = { + C7E0ABA36CD73313F2201FEE274728BB /* PickerView */ = { isa = PBXGroup; children = ( - E8F9854729BCAF7AC6DDB66AE2E6E30A /* PhotoBaseViewController.swift */, - DBD37FDFCFD02B420461A68E431F1239 /* PhotoPickerController.swift */, - 9AC198F48319D355DF838BC856A0E51C /* PhotoPickerController+Internal.swift */, - 0386CE0832420D311DE8EC8182453E17 /* PhotoPickerController+PHPhotoLibrary.swift */, - 1516137DFF605D6BF5FF57E936BE016B /* PhotoPickerController+PickerData.swift */, - 1D7D16BAF9D8F68D646625871FF7D0CD /* PhotoPickerController+Transitioning.swift */, - B87484E48357B1A3C42162EC04F2EFA7 /* PhotoPickerControllerProtocol.swift */, - 5B4DCE9DCB46B294A3090927A37AF999 /* PhotoSplitViewController.swift */, + 022846C123908FDCFEE7680EB3B41562 /* PhotoPickerSwitchLayout.swift */, + C4AEEE59209786579C6B6B91FE34EEF4 /* PhotoPickerView.swift */, + 2D8A6757D53BDD501CBC3B855B96F4B3 /* PhotoPickerView+Asset.swift */, + 775F590ED98D7B49A1FECD49ADB9E32C /* PhotoPickerView+Camera.swift */, + CE076E03B5603955E3D64B92281A74EE /* PhotoPickerView+Cell.swift */, + 64B2612B8997B92533F7720EAFC7DC45 /* PhotoPickerView+CollectionView.swift */, + 3B2B0FCDDEAD6261D51136200A93D4CF /* PhotoPickerView+Editor.swift */, + 451D56FC7C8A78A5B745A2D24F5E69C2 /* PhotoPickerView+Function.swift */, + 1C5C1158364D94A41D9D3616982044C4 /* PhotoPickerView+Preview.swift */, + D68306E84F582BC5180384DE89F127EE /* PhotoPickerViewProtocol.swift */, ); - name = Photo; - path = Photo; + name = PickerView; + path = Sources/HXPhotoPicker/Picker/PickerView; sourceTree = ""; }; C9EC03C5EB1EAEDB705DAACFF0A02609 /* Lite */ = { @@ -1940,15 +1881,19 @@ path = Sources/HXPhotoPicker/Camera/Util; sourceTree = ""; }; - CE7C4F3045254FD2A47B8EDCAD8D66D1 /* Album */ = { + CECA7138A54A3CD4EBA380E12023CB04 /* Core */ = { isa = PBXGroup; children = ( - 8EC0C1FA352EDA1DC563D67293FE792A /* AlbumViewController.swift */, - 4C972067FD3D35AE4780CD99FE34432D /* PhotoAlbumViewController.swift */, - F9ED540A600789494057981315788074 /* PhotoMyAlbumViewController.swift */, + BA2B8F8F2C7A4D624E33CA3124D84416 /* HXPhotoPicker.bundle */, + 6024273B5F7C2F90F687324C50A21FE8 /* HXPhotoPicker.swift */, + D96B2CDFD8EE19240713FB2EE7A044D4 /* Config */, + B060B22EE6B4437F317F9AEAF7BE702A /* Controller */, + A6F72D4CE8D9DCC6EB258FEEBE7AE708 /* Extension */, + D5ABC1A1BE7FCBC3D7C8B04662BA31F1 /* Model */, + 0816BC0828215B19858474F1F7AE74B6 /* Util */, + FD060347C9A0E83CCB112347BB985149 /* View */, ); - name = Album; - path = Album; + name = Core; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -1972,6 +1917,50 @@ path = Sources/HXPhotoPicker/Editor/Config; sourceTree = ""; }; + D5ABC1A1BE7FCBC3D7C8B04662BA31F1 /* Model */ = { + isa = PBXGroup; + children = ( + 865D53C395AF75606EA6BC1BA1009B2B /* AppearanceStyle.swift */, + 8E281C5AABEE021E976E98B3E93273D0 /* CustomLanguage.swift */, + 18E31EA705A75BEFAE3229D63C737C34 /* ExportPreset.swift */, + 51105C474365A0172DB9AE7919904603 /* HXLog.swift */, + 3653369AE9A7B38FBE9452B185C094FC /* ImageContentType.swift */, + 1C653D6783614EA05D03ADBE58C9A030 /* IndicatorType.swift */, + A67FE3B51C7883A9055F43E25099AEA5 /* LanguageType.swift */, + 316F4071B94B6FB101EAD3B1400950A0 /* LivePhotoError.swift */, + 92A89A7A782E60160445656E193F5E73 /* PhotoError.swift */, + 2007445060ECA199B618006DAC3A528A /* PhotoPanGestureRecognizer.swift */, + ); + name = Model; + path = Sources/HXPhotoPicker/Core/Model; + sourceTree = ""; + }; + D5ADF62AF461F92B2B77406F20BF28C8 /* Transition */ = { + isa = PBXGroup; + children = ( + E6CA9419B6E04FF17790E72E8D9657B4 /* PhotoBrowserAnimationTransitioning.swift */, + A73C807DC077CEC3D2330404038260F7 /* PhotoBrowserInteractiveTransition.swift */, + 13929D18E8BAE43DB1A380A1CFDF2BDA /* PhotoPickerControllerAnimationTransitioning.swift */, + 5D953DF14408C770684F02A986FE7447 /* PhotoPickerControllerInteractiveTransition.swift */, + ); + name = Transition; + path = Transition; + sourceTree = ""; + }; + D5CD5C698A745F6249931A937E8CAB51 /* Extension */ = { + isa = PBXGroup; + children = ( + C16DE7A11878C65D219BAAA87438BA36 /* Picker+Array.swift */, + 32E5FBA7877CEF2F68C0DCFB3708F808 /* Picker+ConfigExtension.swift */, + DDC29E23788C7A6C234FE599AD189709 /* Picker+Int.swift */, + 94A731092E5F1B8FDE1BE4F7C06EABB0 /* Picker+PhotoAsset.swift */, + 2A2C5EF7BB13AA743DEE2FD37E655FFC /* Picker+UIImageView.swift */, + 0D47B82B71AC60087B0D4B099BAD1FE1 /* Picker+UIViewController.swift */, + ); + name = Extension; + path = Sources/HXPhotoPicker/Picker/Extension; + sourceTree = ""; + }; D68CA58901FBF589D75F5E40F1EAF5BA /* Frameworks */ = { isa = PBXGroup; children = ( @@ -1980,6 +1969,16 @@ name = Frameworks; sourceTree = ""; }; + D96B2CDFD8EE19240713FB2EE7A044D4 /* Config */ = { + isa = PBXGroup; + children = ( + 78430BCCD2A5D5718BD0D56437FCC912 /* PickerDebugLogsConfig.swift */, + E827AF2C74FB3A4153B3E0074F50E972 /* SelectBoxConfiguration.swift */, + ); + name = Config; + path = Sources/HXPhotoPicker/Core/Config; + sourceTree = ""; + }; DCE34EEFCA81DCA7E5780B8001E2FEE6 /* Lite */ = { isa = PBXGroup; children = ( @@ -1993,23 +1992,25 @@ name = Lite; sourceTree = ""; }; - DD5F771FC1FFCAAA340392D2BB14399C /* Util */ = { + DE412449D68D0468D4F0E301A26F1F6B /* EditorView */ = { isa = PBXGroup; children = ( - FD194EB586DB374B10759F36429D0130 /* Picker+LivePhotoTools.swift */, - F669006B7F956A560CC9B194560CA69F /* Picker+PhotoManager.swift */, - 21D6CD85C6B8540247F3EC015EFEFA93 /* Picker+PhotoTools.swift */, + DCE34EEFCA81DCA7E5780B8001E2FEE6 /* Lite */, ); - name = Util; - path = Sources/HXPhotoPicker/Picker/Util; + name = EditorView; sourceTree = ""; }; - DE412449D68D0468D4F0E301A26F1F6B /* EditorView */ = { + DFE25439E5336BCA53AD1D74AB1888FB /* Controller */ = { isa = PBXGroup; children = ( - DCE34EEFCA81DCA7E5780B8001E2FEE6 /* Lite */, + ED486B6D1BB91A2E37BB4711683D02AC /* Album */, + EDEC57474AE8107F03E7BEF4800E428C /* Browser */, + 094AAD77C032740C5F75E86CC1BC6772 /* Photo */, + A238BFF5AD7125EF90FBDE9484911FE6 /* Picker */, + 864771D02D1411ACA0C62F3274568E5D /* Preview */, ); - name = EditorView; + name = Controller; + path = Sources/HXPhotoPicker/Picker/Controller; sourceTree = ""; }; E1389CC10458FFF716AF4C00A167C48E /* Pods */ = { @@ -2046,45 +2047,6 @@ path = "Target Support Files/Pods-HXPhotoPickerExample"; sourceTree = ""; }; - E3C176AF68753B47C21013084ECC68C7 /* PickerView */ = { - isa = PBXGroup; - children = ( - 132E9CB2A8E5AD7806EDD17190769C1F /* PhotoPickerSwitchLayout.swift */, - 99592B83F4165D3F7304BCABB4CF2434 /* PhotoPickerView.swift */, - 4696E2B817237BBA8AE1BA22C0833DFE /* PhotoPickerView+Asset.swift */, - 767599F76C817DE5BEF0E8445D6C1FEB /* PhotoPickerView+Camera.swift */, - 350AB005092E80EC3B96F28FDD20C205 /* PhotoPickerView+Cell.swift */, - 6A5A5BB86EFDB4BB5C87A0FC8113DD19 /* PhotoPickerView+CollectionView.swift */, - 660B61B3C3A8BF2E1DB1818047E89B01 /* PhotoPickerView+Editor.swift */, - BE5275D86AD47973B59CF94DCF4CDC7E /* PhotoPickerView+Function.swift */, - 6612BAAD765E0971E4B52EB6A2E08735 /* PhotoPickerView+Preview.swift */, - 9DF380872E0127279C0D665F172EB91F /* PhotoPickerViewProtocol.swift */, - ); - name = PickerView; - path = Sources/HXPhotoPicker/Picker/PickerView; - sourceTree = ""; - }; - E51DA68538D2BF6CBDADE1CB6EB8A946 /* Cell */ = { - isa = PBXGroup; - children = ( - B4C6102C31F03764687FFA5EA978BE87 /* PhotoLoadingView.swift */, - 5E9CEF2E234FED7FAF13B21A891CEBF9 /* PhotoPickerBaseViewCell.swift */, - AD4E0A0B70B3F1C1BA34CBD664A21F23 /* PhotoPickerLimitCell.swift */, - D8FB43B03F56E19BF3AA36828B2075FA /* PhotoPickerSelectableViewCell.swift */, - 438F64113A176207EEE482A4C1AC6992 /* PhotoPickerViewCell.swift */, - 4024EF8FF215F7AC2CCE79E126BC5D9A /* PhotoPickerWeChatViewCell.swift */, - 6582730E899D29726DAFBF7F9C7458B6 /* PhotoPreviewViewCell.swift */, - CC2706A2381C9816D3828A8D073670C3 /* PickerCameraViewCell.swift */, - 06114F087100B9550BF5BA2AA0D60AB5 /* PreviewLivePhotoViewCell.swift */, - 9F369046E195654B300F571C8FCC2E19 /* PreviewPhotoViewCell.swift */, - D97345B3C4840CED0FFDCE99956D7ABB /* PreviewVideoControlViewCell.swift */, - C043B2D857539FB903260B776BE329E5 /* PreviewVideoViewCell.swift */, - 1CD003CF16BB698BCFCF4F853587C51E /* Album */, - ); - name = Cell; - path = Cell; - sourceTree = ""; - }; EA271579257556E46A8F48F2F9265CC2 /* Video */ = { isa = PBXGroup; children = ( @@ -2100,45 +2062,78 @@ path = Video; sourceTree = ""; }; - EA8220BD5CF357FB799276984FC96280 /* ProgressHUD */ = { + EAF10FF87AAD8F3B15D16CDB944E309C /* View */ = { isa = PBXGroup; children = ( - 65B22B20326F749C11B60EC278EE8A54 /* ProgressCircleView.swift */, - 6AD7B0159C2744532B657FDB48E1B695 /* ProgressCricleJoinView.swift */, - 1333A8BEE35ED10B75F547B57B17C965 /* ProgressHUD.swift */, - 819F937470EB3FBFF81CA3B5FDEB87CC /* ProgressImageView.swift */, - 262AF06C117EFA4AEDC1148EB7CECC21 /* ProgressIndefiniteView.swift */, + 7BD7239DE37E0E637C48427825E6DA26 /* CaptureVideoPreviewView.swift */, + BF46CD13AB05F29CF8B7495160675D81 /* DeniedAuthorizationView.swift */, + B4129E70FD1CC90816EB0C3CE2AB9F69 /* PhotoImageCancelItemView.swift */, + 44C64A3AAE405023387CF947AEF3AF6B /* PhotoPickerBottomNumberView.swift */, + 324E5277BB60D5E37C7D16CD27D0F44A /* PhotoPickerFilterItemView.swift */, + 0EAB546120E1816D27B0285D5C572F92 /* PhotoPickerFinishItemView.swift */, + F027057C7DEC855E80055E825ED5D1F7 /* PhotoPreviewContentLivePhotoView.swift */, + 7A57FCE90BF03659995AFEED15965498 /* PhotoPreviewContentPhotoView.swift */, + 48123199DA99BEFC97D7E27475649D99 /* PhotoPreviewContentVideoView.swift */, + ADD600C29998E868F14D555CBE2E520A /* PhotoPreviewContentViewProtocol.swift */, + 98C2B9CD889817B0A2AFDF7AE2F3163D /* PhotoPreviewVideoView.swift */, + FC6EDA5D99EFCD86BCE35FFF00558A28 /* PhotoTextCancelItemView.swift */, + 1DF85A40A6D504D8573EB167A0DA215D /* PhotoThumbnailView.swift */, + EEB3A7BEF741E046476B7FE9186EB85C /* Album */, + 13E1CE0DBB871031EF10278F49D016EB /* Cell */, + 7D0E61D1C7C5FD4331E138CF5DA87A24 /* Kit */, + 5553146C02B9672F8CE923800C5F9304 /* ToolBar */, ); - name = ProgressHUD; - path = ProgressHUD; + name = View; + path = Sources/HXPhotoPicker/Picker/View; sourceTree = ""; }; - EA94F6D06F5183382EA9DB10B0BA65DA /* Model */ = { + ED486B6D1BB91A2E37BB4711683D02AC /* Album */ = { isa = PBXGroup; children = ( - AB04DA8603BD60DD7DE3B290F315E961 /* LocalAsset.swift */, - AD6131717B6458F71867E326076F6967 /* NetworkAsset.swift */, - A3408712BF116100D7470A0AE7D601A1 /* PhotoAsset.swift */, - FF98AE8287F1E4C8D26C4B6F5CDA94A6 /* PhotoAsset+Codable.swift */, - E632D174EB96C3F09F5057E9A6CD90D2 /* PhotoAsset+Editor.swift */, - DFF3794F048481E0B5C88E2D6F9F4E8D /* PhotoAsset+FileSize.swift */, - EA9B5EC1CD2591BC769FD071D7D0771A /* PhotoAsset+Local.swift */, - 1FCC5D359D2D1556B643ED90F656A91F /* PhotoAsset+Network.swift */, - E65A688EB5D954DAF26C7E50549EC7C0 /* PhotoAsset+Request.swift */, - CE3691329BDD686CBF74A2E4B9CF3122 /* PhotoAsset+URL.swift */, - 72263A4EEC7F89D470C4B451071C380A /* PhotoAssetCollection.swift */, - 7D9F2A0728B98F0D270E1C4F4FDF8CC4 /* PickerManager.swift */, - B911867DDFC1253F8DF367FF2E52B818 /* PickerTypes.swift */, + D21091D254DD9E1D20D4E39059A27B4B /* AlbumViewController.swift */, + 5AA48A9FA75DFCB27309D23A80B93059 /* PhotoAlbumViewController.swift */, + 123ACEA4BCEAE24EA1A97784CBFC11A8 /* PhotoMyAlbumViewController.swift */, ); - name = Model; - path = Sources/HXPhotoPicker/Picker/Model; + name = Album; + path = Album; + sourceTree = ""; + }; + EDEC57474AE8107F03E7BEF4800E428C /* Browser */ = { + isa = PBXGroup; + children = ( + 0BA05307FAA6EAA896BEA39AA350AECC /* PhotoBrowser.swift */, + ); + name = Browser; + path = Browser; + sourceTree = ""; + }; + EEB3A7BEF741E046476B7FE9186EB85C /* Album */ = { + isa = PBXGroup; + children = ( + D05853881B759517E7FE182AF77D74CF /* AlbumListView.swift */, + B0003C076B36331E5FC85DCE40DDD50E /* AlbumSectionHeaderView.swift */, + 2D438E93F7C0904151FFF0F0D9C06A7E /* AlbumTitleView.swift */, + 55FCD738AC1CFB30DDAB59D8E30D7769 /* PhotoAlbumHeaderView.swift */, + ); + name = Album; + path = Album; + sourceTree = ""; + }; + F3071AAE8DDD1F0236C87C991EB98BFC /* Data */ = { + isa = PBXGroup; + children = ( + 4AF7C657641EC0F5F6D024AE6A445965 /* PhotoFetchData.swift */, + A1E094A7D682F0C1B5A02054EAC9BBE7 /* PhotoPickerData.swift */, + ); + name = Data; + path = Sources/HXPhotoPicker/Picker/Data; sourceTree = ""; }; F62B69525BC481DF7331E1A1A425C986 /* HXPhotoPicker */ = { isa = PBXGroup; children = ( 41FF0B4302D9C0FFB31D6B7EE2638BB3 /* Camera */, - 5441483C24AFE2DBB2517BC8DE3DAB41 /* Core */, + CECA7138A54A3CD4EBA380E12023CB04 /* Core */, 5F1F52FBC53844330C29F84D605C2BCC /* Editor */, DE412449D68D0468D4F0E301A26F1F6B /* EditorView */, 4E27EE93DC7540D5000244C5EA76AD91 /* Picker */, @@ -2149,6 +2144,16 @@ path = ..; sourceTree = ""; }; + F7922E8BDD3BA68690E61AA4A321F7F1 /* AlbumList */ = { + isa = PBXGroup; + children = ( + 61405EA2293726EB923EFCCF2A4927C2 /* PhotoAlbumController.swift */, + 30B8DBB1C5ED8CE4941277FB5D6EFE53 /* PhotoAlbumList.swift */, + ); + name = AlbumList; + path = AlbumList; + sourceTree = ""; + }; F90482EBC2251B867DBBB0C42D691A85 /* View */ = { isa = PBXGroup; children = ( @@ -2167,22 +2172,35 @@ path = Sources/HXPhotoPicker/Editor/View; sourceTree = ""; }; + FD060347C9A0E83CCB112347BB985149 /* View */ = { + isa = PBXGroup; + children = ( + ADB1E1994A470E57F8DBB20BD588FCE9 /* GIFImageView.swift */, + F9A4AE67E1781BD77660E552945CFAED /* ImageView.swift */, + 005DD78C8E5CAB1DEA6CB00AF3DC15DB /* SelectBoxView.swift */, + 5A98B8CF37864A42308B622DBAC23770 /* ProgressHUD */, + B94C40E79FC817586DFC6EA3E128CC0B /* VideoPlayer */, + ); + name = View; + path = Sources/HXPhotoPicker/Core/View; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 47C06BC668F542089FB31E36426B6E72 /* Headers */ = { + 4BC31A7F8E69DE7F9E01FBA9F298312C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1A7CE78AE8E4B4B832000B93400ECB28 /* Kingfisher-umbrella.h in Headers */, + 0B1944A4EDDEC040846013C590963722 /* HXPhotoPicker-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A5418567A9813F7D3B6C0FB2F9E91035 /* Headers */ = { + 81BF78A6C4F2FCB64440A0BBD8527A54 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7ACD416819012F57F266F4B35434E4C9 /* HXPhotoPicker-umbrella.h in Headers */, + 77FA8766A51043BE1A71B3A148216BF4 /* Kingfisher-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2217,8 +2235,8 @@ buildRules = ( ); dependencies = ( - BD9EA3FF42CD2C6947D663FF2F060E67 /* PBXTargetDependency */, - D3EBFC3F6D8107E647E0CD0FC87AAFB2 /* PBXTargetDependency */, + E2FE876EA712A75C6C6C20D232211530 /* PBXTargetDependency */, + 61FCFB711567CADBF80EB39861E1EE12 /* PBXTargetDependency */, ); name = "Pods-SwiftUIExample"; productName = Pods_SwiftUIExample; @@ -2237,8 +2255,8 @@ buildRules = ( ); dependencies = ( - 172AE4EACEA3BC34CA197E3ABBB32B3F /* PBXTargetDependency */, - A06C190DCF26756F4F2AC838AD2C5A0D /* PBXTargetDependency */, + 3F6CF18BBF6395D52AA6C4CE5A9F2DA0 /* PBXTargetDependency */, + 2AE22556946824250A5C8F749926E9CF /* PBXTargetDependency */, ); name = "Pods-HXPhotoPickerExample"; productName = Pods_HXPhotoPickerExample; @@ -2247,12 +2265,12 @@ }; E8022D22FAA6690B5E1C379C1BCE1491 /* Kingfisher */ = { isa = PBXNativeTarget; - buildConfigurationList = B2535BA34267C7EF4012CADDE352489B /* Build configuration list for PBXNativeTarget "Kingfisher" */; + buildConfigurationList = 5EBD875EE500FA44157B829CDF484472 /* Build configuration list for PBXNativeTarget "Kingfisher" */; buildPhases = ( - 47C06BC668F542089FB31E36426B6E72 /* Headers */, - BDA75F689C204CB95184185413964A74 /* Sources */, - 3D7265C81B17F3C99589C41BFF98DD1B /* Frameworks */, - 303B4BD4A1201B1BEA413632E700046E /* Resources */, + 81BF78A6C4F2FCB64440A0BBD8527A54 /* Headers */, + E1337A8CACAE814D83A6A4A9C02173DA /* Sources */, + AFADCF8B2A59EFD34ABC4FDF16473FC9 /* Frameworks */, + A0E6ACE0E57EDA7A4794D26758D801EC /* Resources */, ); buildRules = ( ); @@ -2265,17 +2283,17 @@ }; F8051AA643C524FA4E210DD0E6E62332 /* HXPhotoPicker */ = { isa = PBXNativeTarget; - buildConfigurationList = 6FCB6084EEAADD5CA7C4EF6B0C2D790F /* Build configuration list for PBXNativeTarget "HXPhotoPicker" */; + buildConfigurationList = 373EE2F1978F18999424C92C11686FD9 /* Build configuration list for PBXNativeTarget "HXPhotoPicker" */; buildPhases = ( - A5418567A9813F7D3B6C0FB2F9E91035 /* Headers */, - BABD985C53FB1B14A9E3B07E9C31B045 /* Sources */, - EFE769B63B4196B88F66608647D2CC9E /* Frameworks */, - 8A9D8F846061854161C4D14F84E03FF1 /* Resources */, + 4BC31A7F8E69DE7F9E01FBA9F298312C /* Headers */, + B2D987654912521ECC2957B5DC2272D5 /* Sources */, + 8B1B41C4BB011EA001C9741BD0266168 /* Frameworks */, + B53734D819B0D87FA3E3A9F4A23419FD /* Resources */, ); buildRules = ( ); dependencies = ( - 75CF6F57783FF7B3136E0F40C51365E6 /* PBXTargetDependency */, + 63541E2820210BCB2828010FDC10375E /* PBXTargetDependency */, ); name = HXPhotoPicker; productName = HXPhotoPicker; @@ -2313,25 +2331,25 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 303B4BD4A1201B1BEA413632E700046E /* Resources */ = { + 66B776CC0A16762914AEFF3E90C47C61 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 66B776CC0A16762914AEFF3E90C47C61 /* Resources */ = { + A0E6ACE0E57EDA7A4794D26758D801EC /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 8A9D8F846061854161C4D14F84E03FF1 /* Resources */ = { + B53734D819B0D87FA3E3A9F4A23419FD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F7F932D3E82B5E54CF4C9B5920CCF651 /* HXPhotoPicker.bundle in Resources */, + D58915579DDED0076F49E0E8CEC62ED2 /* HXPhotoPicker.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2353,432 +2371,435 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BABD985C53FB1B14A9E3B07E9C31B045 /* Sources */ = { + B2D987654912521ECC2957B5DC2272D5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5093B5BA1CF5EB1D5D5EAD8B354C9D71 /* AlbumListConfiguration.swift in Sources */, - BBA366882A8ADD7B1A37F18FE3ADF0B0 /* AlbumListView.swift in Sources */, - A2FE7F55FF0BD0427CF9D33F0A443299 /* AlbumSectionHeaderView.swift in Sources */, - 0122BB913C905E41ECA77277BD847EB1 /* AlbumTitleView.swift in Sources */, - 6749677D725D81A6A2293F132059FED4 /* AlbumTitleViewConfiguration.swift in Sources */, - 7899E39CECF77AECA7E40E34A06C0568 /* AlbumViewBaseCell.swift in Sources */, - B633BE6B5CEC6B285CC0E25F03AC9ADB /* AlbumViewCell.swift in Sources */, - 061E310B2B822963EEECB7CFEE559CB1 /* AlbumViewController.swift in Sources */, - CD52E3A657980DBAA8E37C673A7AA962 /* AppearanceStyle.swift in Sources */, - 3BB802239FD447B9E249D5EBBED7DA29 /* ArrowView.swift in Sources */, - 365A18D1E5A1BB7AF9709B2AA568DBF1 /* ArrowViewConfiguration.swift in Sources */, - A760786C0FA8989CE9CB08233EE826CE /* AssetManager.swift in Sources */, - 8317993B78B635F865A3F7883B9134E9 /* AssetManager+Asset.swift in Sources */, - C428066FC79D3DBEAC7F015C87E3FC9C /* AssetManager+Authorization.swift in Sources */, - E03A407CE7D4A7EA4CF6488C527A54DD /* AssetManager+AVAsset.swift in Sources */, - 1A5E4AD22842F71D7A94451666BBAFA8 /* AssetManager+AVAssetExportSession.swift in Sources */, - A22C1D53AD4246B43CB368CD2C7E6D0C /* AssetManager+Image.swift in Sources */, - B1D7174BFDD1EC817172BA2A738286AD /* AssetManager+ImageData.swift in Sources */, - 850527D970A45B024A1D74925BC837BF /* AssetManager+ImageURL.swift in Sources */, - 4C2C22EEE0A27418B9EEAE59CB056063 /* AssetManager+LivePhoto.swift in Sources */, - 433C3DC62410A15FB056281B3B3FCAC1 /* AssetManager+LivePhotoURL.swift in Sources */, - 822B991985D7678DD1D318ECC43A5FF4 /* AssetManager+PlayerItem.swift in Sources */, - 56AD13CCABF2E77488C9721A3C851376 /* AssetManager+VideoURL.swift in Sources */, - 5BC90D56CAC33A6146DAB92417F66096 /* AssetResult.swift in Sources */, - 398E4CB9BCF008F7CD739B690E43CCA2 /* AssetURLResult.swift in Sources */, - B390A80BA3FC6CEEDD97AAC749F64398 /* Camera+PhotoTools.swift in Sources */, - 1CAC2F9617560E78B31B69375BF0CC90 /* CameraBottomView.swift in Sources */, - 9275B9B80344720BB280773F0ADC079C /* CameraConfiguration.swift in Sources */, - 578E5C11CEE0E7A5707DE27BF1376158 /* CameraController.swift in Sources */, - F7790A069FF16D323FB62C412C9ADFB5 /* CameraControllerProtocol.swift in Sources */, - 24B41FCB0A5B5D548F689FE398FE8009 /* CameraFilter.swift in Sources */, - 75E6FD151BDF0423F64F2A20AA4DACD7 /* CameraManager.swift in Sources */, - 5E611B5D9A641011A8C60D2AE4142F80 /* CameraNormalPreviewView.swift in Sources */, - 1DD8AD00AA28C52FC1491E1CFCC62195 /* CameraPreviewView.swift in Sources */, - E2486A940FADC4FF1EA023EB8043BCE6 /* CameraRenderer.swift in Sources */, - C110137CC7B124F957673070B362866A /* CameraResultViewController.swift in Sources */, - E6639CEAB7E3AEDC172A0544484C5B37 /* CameraViewController.swift in Sources */, - 9B8239D9CDE32B4DCF2CABAC920DCF7F /* CameraViewController+BottomView.swift in Sources */, - 29238CABFFBA1B87F5D65141D05AC6C0 /* CameraViewController+Editor.swift in Sources */, - 7258CFEFD470C9C9DE1048736C0EEDBB /* CameraViewController+Location.swift in Sources */, - 2914C4AB28C652F1EAE6516FE2C776BC /* CameraViewController+Preview.swift in Sources */, - F5791D815BF04F308E89CFF175A7AD94 /* CameraViewController+Result.swift in Sources */, - 48985EDEC1F15CCA6E4FEC8E2DE20BEB /* CaptureVideoPreviewView.swift in Sources */, - 974A6C7AF8DE846AE76B8224D32168AA /* Core+AVAsset.swift in Sources */, - D36BE5B312ADE50D44D8645875353EA3 /* Core+Bundle.swift in Sources */, - AFE422ED094BC345A0F98EBE155AD89C /* Core+CALayer.swift in Sources */, - 7DF00C3831638C7BFA2EDFB5C20E902C /* Core+CGFloat.swift in Sources */, - 42F225DD278BAB831AB5D9C2478B1601 /* Core+Data.swift in Sources */, - B8E12718A8943A6A3EF1BF76D9304FB5 /* Core+Dictionary.swift in Sources */, - 364E2B57EDBED6407DAC1166DDDB1D7C /* Core+FileManager.swift in Sources */, - 07EB462226DDE9FEFC4812EFF46DDCED /* Core+NSObject.swift in Sources */, - F577A7DC8A02139E74FCA8A6AC438315 /* Core+PHAsset.swift in Sources */, - 742D3C7483A4B08DA77A1025D50E2F89 /* Core+PHAssetCollection.swift in Sources */, - 2C59834A554AC8F88FB0ABD3E4CC2438 /* Core+String.swift in Sources */, - 4C4D0D029722BCF25697BE9570E948ED /* Core+UIApplication.swift in Sources */, - 81B3F8657591044AD6F4DCC27747C4F2 /* Core+UICollectionView.swift in Sources */, - E13102FF69B3EE53793EFFACA934E4BD /* Core+UIColor.swift in Sources */, - 3B7F757AD66D4CD9BB2D5343059018D7 /* Core+UIDevice.swift in Sources */, - 2CA881A7CBCD6F98AC0E22A617EF74FF /* Core+UIFont.swift in Sources */, - 78614D75901B2956D9AF13FE8CBA51F7 /* Core+UIImage.swift in Sources */, - 68F0E9968818825FD7DC9AA35C59ED58 /* Core+UIImageView.swift in Sources */, - 8B732D62CACF0D8EE5083B7BE7A9A346 /* Core+UILabel.swift in Sources */, - DAC2D948229005C5342DC11E27C644E9 /* Core+UITableView.swift in Sources */, - 8CF0C6C73B3093D4BDB446E6DB0E46CC /* Core+UIView.swift in Sources */, - 830906CDFC21303681316FA58EFBED24 /* Core+UIViewController.swift in Sources */, - B5657C0454689BC8C89C04DF400ABB17 /* Core+URL.swift in Sources */, - 289213F933EE9D892B0331BE800FEE32 /* CustomLanguage.swift in Sources */, - 334E4BE9AC94F554336B88DA95641CF4 /* DeniedAuthorizationView.swift in Sources */, - B5DC30365347EAE5A3DCC4F75A42242D /* DeviceOrientationHelper.swift in Sources */, - 5F5CF3A09E21DF2AEC896416161C6853 /* EditedResult.swift in Sources */, - 6B1A2975E39D99B8BE94FCFF661DDE9A /* Editor+CIImage.swift in Sources */, - BE0B5CC5227E9693DF21F9C72F2287B9 /* Editor+PhotoTools.swift in Sources */, - 4DD830BD1B5B94442C1E0323B1D6B6DC /* EditorAdjusterView.swift in Sources */, - 0D315206E3F9AC9B57C5A5B5E8C48C92 /* EditorAdjusterView+ContentView.swift in Sources */, - D72293F7357DB57CD8C653B4C12E249B /* EditorAdjusterView+Croper.swift in Sources */, - 102A8FCF0008F57AB72586A8FFFF9313 /* EditorAdjusterView+Edit.swift in Sources */, - 47869D8143ADA5B5669994ED2CB17350 /* EditorAdjusterView+FrameView.swift in Sources */, - 5D8392B474BA7E57A968035E18858CA9 /* EditorAdjusterView+Mirror.swift in Sources */, - F10E629B561AE81F003D1C1F2C87F60E /* EditorAdjusterView+Rotate.swift in Sources */, - 7A5AC834E390CD984622ABDABA5393E5 /* EditorAdjusterView+ScreenRotation.swift in Sources */, - 38459FA8B8291786FFF40CD4A89E8A79 /* EditorAdjusterView+ScrollView.swift in Sources */, - 3B59A2936E12640CB1114BABB82CF542 /* EditorAdjusterView+Video.swift in Sources */, - EC3968FED09EF0F5A38BB063BA8307F2 /* EditorAdjusterViewProtocol.swift in Sources */, - 2CB40C311BE1A578EB62B9A1FFD9DA00 /* EditorAsset.swift in Sources */, - BF3B510E99ADC9AE69D9C8F86F3D2D1F /* EditorAudioAnimationView.swift in Sources */, - 413D80EA37D78C8C074C70C6FC3AAF9D /* EditorBrushBlockView.swift in Sources */, - 020C5F858436B8EDD0AC49AAF3B98E80 /* EditorBrushColorView.swift in Sources */, - FAC9744F8BC12260CCB17DCE0EC4DB25 /* EditorBrushSizeView.swift in Sources */, - B8D9BD2C69C072037D14CE696FE3CFF1 /* EditorCanvasView.swift in Sources */, - D6E489C19A907B5FCB2E749619BE7040 /* EditorChartlet.swift in Sources */, - E31A33900AF0023F9213319D1DC02A46 /* EditorChartletListProtocol.swift in Sources */, - 783100C5898A9A6C2BF5360571BBDD7B /* EditorChartletPreviewView.swift in Sources */, - 7F419B61F148415C73EB7967013412E3 /* EditorChartletViewCell.swift in Sources */, - 7A6F42AC26F77D2B5D39C8F0011B3227 /* EditorChartletViewController.swift in Sources */, - 92429F107BCE98A2F41ABB396F1ACAF7 /* EditorChartletViewListCell.swift in Sources */, - 9EA7E843478EC8CD4CF2B1130680084A /* EditorCollectionView.swift in Sources */, - C64BB70D05F39E5A98A78B66D914E270 /* EditorConfiguration.swift in Sources */, - 72AACB9124A39AC764CC61C62F687AAF /* EditorContentView.swift in Sources */, - 4BC02F5D460569B10A8AB319FDB679CF /* EditorControlView.swift in Sources */, - ABD9C6617EC986A4FFD1D238E801DAD4 /* EditorDrawTool.swift in Sources */, - E10EFDBD02C69E3F9A0D089B467BC6E6 /* EditorDrawView.swift in Sources */, - 719C3DA1384C6385E711D58A6C81ECC3 /* EditorFilterEditView.swift in Sources */, - DD911A7C712EE777F9667BDC95024517 /* EditorFilterParameterView.swift in Sources */, - D1674B8989FB16D83334235F57B3EC52 /* EditorFiltersView.swift in Sources */, - 5CC4B543908D6A10B145C11D72FE1100 /* EditorFrameView.swift in Sources */, - 592E819B53C5380E987636DB7B98A138 /* EditorFrameView+Control.swift in Sources */, - C4437BCF30671D5CC91CF0F29CD2DC08 /* EditorFrameView+VideoPlay.swift in Sources */, - 2AAB8B9C0D356557446BF8C83610F9AF /* EditorMaskListProtocol.swift in Sources */, - 6E1B6DDA8ADFD8FF65D111F0195CFE21 /* EditorMaskListViewCell.swift in Sources */, - AE836128F886A4EE22B69BF31DD85CBF /* EditorMaskListViewController.swift in Sources */, - 57935C715963CE1176A582D936CA9897 /* EditorMaskView.swift in Sources */, - EEC9DE4077DB7B8CD2FDF99139010DD6 /* EditorModels.swift in Sources */, - C09B97869C17C9368AA1896F04E3402D /* EditorMosaicToolView.swift in Sources */, - 92B16796F6004C91CE93C7AB1BDC7A3B /* EditorMosaicView.swift in Sources */, - 38D12A3DB825DB5D85BD626DFC783262 /* EditorMusicListViewController.swift in Sources */, - 2AEA2B5CADAAA5023714220D39B6869E /* EditorMusicLyricViewCell.swift in Sources */, - 27B43682030EEC7CA7DAA6A55E440F06 /* EditorMusicView.swift in Sources */, - CB3F9C39A4B61AC850AB5EFECBD08F77 /* EditorMusicViewCell.swift in Sources */, - 7E231CDCDBC494814F678F45A0D6BBD0 /* EditorPlayAuido.swift in Sources */, - 5B1DB61481EF2DF9461FCA6118CA8599 /* EditorRatioToolView.swift in Sources */, - A25D56F329F63AD014324DDEB2346759 /* EditorRatioToolViewCell.swift in Sources */, - E01B4FAFB08B3E634D34DC541FBB9879 /* EditorScaleView.swift in Sources */, - 1CEE752007144EA10EF4AC93F1556E7C /* EditorStickersContentView.swift in Sources */, - 1D3EF47785E7A8CD913180D797F8ED59 /* EditorStickersItemView.swift in Sources */, - 72EF5D9CE65FE4F4EB62E4964A6587B7 /* EditorStickersTrashView.swift in Sources */, - 191DACADF2F08EA6512DA9E70A105092 /* EditorStickersView.swift in Sources */, - 989EFACBB517ECF8D53B7EBFCBD6ED49 /* EditorStickerTextView.swift in Sources */, - 36D273EC8075005B8A9EA332EF60829D /* EditorStickerTextView+CollectionView.swift in Sources */, - AC2705A30F9A9909E880AB9CB168F4AD /* EditorStickerTextView+Delegate.swift in Sources */, - 87B95D82C4A7F7DBB5ECCF2E75C6F0CF /* EditorStickerTextView+Draw.swift in Sources */, - 75EBFFFE3DBAFA4BCDB48F5B6D8423C0 /* EditorStickerTextViewController.swift in Sources */, - B22FBA8EE367EEFB75061837046C199E /* EditorToolsView.swift in Sources */, - 48ACAFFCB390B0C2BE087F9D0BA45DB6 /* EditorTransition.swift in Sources */, - 923C41D02E437A57AD7BFC86FCEE6FED /* EditorType.swift in Sources */, - CA987108C91F5737D20D92F427013994 /* EditorTypes.swift in Sources */, - 40B43D62CF78C857A44423FFF04C0296 /* EditorVideoCompositor.swift in Sources */, - 69CD28075690B776CA27BE1BCB0EAEA3 /* EditorVideoControlMaskView.swift in Sources */, - D663B3D13F2C8488CFAAC9B8E105BA16 /* EditorVideoControlView.swift in Sources */, - 3CC6701494CF2E153124DF334B6C59B2 /* EditorVideoControlViewCell.swift in Sources */, - F561C867C0C2BF0DAE977D1ACA03B0F3 /* EditorVideoPlayerView.swift in Sources */, - F7D2B35BCA1584C49FE781A75D5D95CC /* EditorVideoTool.swift in Sources */, - 50AD5F5F113A13C11BA5EF731E5D53BB /* EditorView.swift in Sources */, - 892D83F9C8760DE5A68C5E5009056F06 /* EditorView+AdjusterView.swift in Sources */, - E65CD92C842A6114ED629E291A595A5A /* EditorView+AVAsset.swift in Sources */, - C27BA342E338C5637B5A455E6D0148EF /* EditorView+CGFloat.swift in Sources */, - 715C6321F988D819D4DBB0525182CE2F /* EditorView+CIImage.swift in Sources */, - 4B422E9D3E8B9D877A5D88EE1275C428 /* EditorView+GestureRecognizer.swift in Sources */, - 36B4337B3172E1F92B0DF9400CB7BC59 /* EditorView+PhotoTools.swift in Sources */, - A0BAED07143D176E53841C0088161370 /* EditorView+Public.swift in Sources */, - D4ACF6EC8F9CBB9E920CF14A43253BFE /* EditorView+ScrollView.swift in Sources */, - 42D0968CA7626F5917906A24CEB50CFC /* EditorView+UIImage.swift in Sources */, - A8C4B7E33580617A5DCEACB03320A24F /* EditorView+UIView.swift in Sources */, - C8477D2700DEFC05E7844F9ECA4BDD70 /* EditorViewController.swift in Sources */, - 317E4723182650029BE89207F8D49618 /* EditorViewController+Action.swift in Sources */, - D3A3F1CCF1BD255A7D35FADA8391285E /* EditorViewController+Await.swift in Sources */, - B0A07A2C8E04A75E515D4FFCDBBF9477 /* EditorViewController+Brush.swift in Sources */, - DEA88A18D3F68DD58EC1F3AE67207609 /* EditorViewController+Chartlet.swift in Sources */, - C01C29175916A82CB17BD44DA4A9AA98 /* EditorViewController+EditorView.swift in Sources */, - 151DE6EE58D626B502D2AC0382C0C639 /* EditorViewController+Filters.swift in Sources */, - BDF4556609AC86EFF5A32BE6870347CE /* EditorViewController+LoadAsset.swift in Sources */, - 06E36BA729B8310FCCFEBBD8E83ED7B8 /* EditorViewController+Mosaic.swift in Sources */, - 42E60519CE1AE6C37F4D16058E5598A9 /* EditorViewController+Music.swift in Sources */, - C838601087AC28C0A23575BAEF32916E /* EditorViewController+Processing.swift in Sources */, - CCD74CF104FACC81A8097BA66F5D9BAE /* EditorViewController+Ratio.swift in Sources */, - 1D2E8AF1C67D6A8143E131F433737709 /* EditorViewController+Text.swift in Sources */, - ED4183785E9BA6F50A46F9126A807B3E /* EditorViewController+ToolsView.swift in Sources */, - 7E27077FFAF0521E34515A1FF69EF388 /* EditorViewController+UINavigationController.swift in Sources */, - 40E10C37EFAE7BA989132024BF7FF2DE /* EditorViewController+VideoControl.swift in Sources */, - 1131CF6D2C9A49E88D1B8B1D3DD9E43E /* EditorViewControllerDelegate.swift in Sources */, - B7526BEFA9AA5B67D1F4F9D19DDF3A60 /* EditorViewProtocol.swift in Sources */, - FA98FDC2CDD258B539450CA8C55B3624 /* EditorVolumeView.swift in Sources */, - EB516A5BE9AEB5EDA5BC084001B02832 /* EmptyView.swift in Sources */, - 904D0E51F91596A55B6DCD896B2B76D5 /* EmptyViewConfiguration.swift in Sources */, - C78F35C55D522C5D1DE8C15D00F97A6C /* ExpandButton.swift in Sources */, - 82CB5F26BE4797D49FFFFB7366CB24A7 /* ExportPreset.swift in Sources */, - 79B2D2A5F681928585445D798990C268 /* GIFImageView.swift in Sources */, - 2A5EE6AAE262C010A480DC5C8250A558 /* HXBaseViewController.swift in Sources */, - C612A8411EC76A59BC6451463AA2117F /* HXLog.swift in Sources */, - F93CD29BDD50D2C232FF10B14F52939F /* HXPhotoPicker.swift in Sources */, - 301B8C269F9D7882B628A556461C9D06 /* HXPhotoPicker-dummy.m in Sources */, - 010A29B4D17C7E14662A42F20EB848CB /* ImageContentType.swift in Sources */, - 2C74633F78F6AE8E27EE344B904A3241 /* ImageEditedResult.swift in Sources */, - 41873EFF41259CA548A3592D803468B6 /* ImageResource.swift in Sources */, - FBFFAAFFDF223A54B228240A9F6A7DB9 /* ImageView.swift in Sources */, - 0C6BF69F60D52F313BB62A385EFA350B /* IndicatorType.swift in Sources */, - 225AB57928945746C3F1972F2D3ED5DD /* LanguageType.swift in Sources */, - 608EC7643490B57544EA81C143011FD0 /* LivePhotoError.swift in Sources */, - 6F330A08CFB9704CB0A8CB4B32ABA3F1 /* LocalAsset.swift in Sources */, - 65EDBF8A43C1091B662ABE3791784CD2 /* NetworkAsset.swift in Sources */, - 24EE9677B61462A816602E8197892544 /* NotAuthorizedConfiguration.swift in Sources */, - 61A7EEE387A786D41B79B1D2659CC54C /* PassThrough.metal in Sources */, - 216C4B6FC5C53324E884DBF75F2595EC /* PhotoAlbumCollectionCell.swift in Sources */, - 99E1245BB5F30673577243FC100AA989 /* PhotoAlbumCollectionViewCell.swift in Sources */, - B82EF262A7992086B7330DEAEB779855 /* PhotoAlbumController.swift in Sources */, - 13ED88D25CAAAC1715E6FF3EDE8DA76A /* PhotoAlbumControllerConfiguration.swift in Sources */, - 17F5046E85D1D9916846BB55B37FFC31 /* PhotoAlbumHeaderView.swift in Sources */, - B40301445A3E27CEA74117ACFBE50141 /* PhotoAlbumList.swift in Sources */, - B347075F3AA2454FE20BECF9156D1243 /* PhotoAlbumViewCell.swift in Sources */, - 661DFF54A6A8A3AEDFFE39C3EBBD9770 /* PhotoAlbumViewController.swift in Sources */, - C5B9BB656C1A6C8C9456A75BF27FBB3E /* PhotoAsset.swift in Sources */, - 0B270FB76A8AD5B8F6F89C6E647F31B8 /* PhotoAsset+Codable.swift in Sources */, - 0376FE553B8A49782599E496D186AE74 /* PhotoAsset+Editor.swift in Sources */, - 6AFD200D05F7E35DD522B89A1804E4C3 /* PhotoAsset+FileSize.swift in Sources */, - 8F2C44610450523B134C185CC391C8D2 /* PhotoAsset+Local.swift in Sources */, - B501E4941E5AE5D1F85CC5B77F883E7A /* PhotoAsset+Network.swift in Sources */, - BF868E7179F80D9194DC50B3256A2076 /* PhotoAsset+Request.swift in Sources */, - 152BA70B3CE01D281837847C84EA7146 /* PhotoAsset+URL.swift in Sources */, - 90D609F6C52B45731926AF747265B40B /* PhotoAssetCollection.swift in Sources */, - B49C7F88B4EEB50C51012CD31B424BAC /* PhotoAssetEquatable.swift in Sources */, - EDAAA91324AF527E51D3848E7FA3A41C /* PhotoBaseViewController.swift in Sources */, - 63DA022CA32302FB9234DB965BAD9677 /* PhotoBrowser.swift in Sources */, - 2275682917BB96771613437F57F6C996 /* PhotoBrowserAnimationTransitioning.swift in Sources */, - D7CC252EB700E8E96C680028446C884D /* PhotoBrowserAnimator.swift in Sources */, - 9CD1506F61D100198B9D5F6E3B51E9DE /* PhotoBrowserInteractiveAnimator.swift in Sources */, - E68D7DEBB0D0223BEB6508509117B128 /* PhotoBrowserInteractiveTransition.swift in Sources */, - 9A0F4F198C5C8FB4F1EF942FDA73A376 /* PhotoControllerEvent.swift in Sources */, - 3D732425BECC181122D7197A6E91A5C0 /* PhotoDeniedAuthorization.swift in Sources */, - AE4EB4EDF3EEE372082AD3F2D6E11645 /* PhotoEditorFilter.swift in Sources */, - 9B27A62344FFA3F7C0C11DEB9E48921B /* PhotoError.swift in Sources */, - C372E7221C997169D52D562539F61145 /* PhotoFetchAsset.swift in Sources */, - 85C8560DDB470F68E94360240F9AAC97 /* PhotoFetchAssetCollection.swift in Sources */, - 03B6BE0501F432F2D3D3E0C110E87609 /* PhotoFetchData.swift in Sources */, - B95EF2AFE59FF440C3B240B9563233CA /* PhotoImageCancelItemView.swift in Sources */, - FDC654232785BD15889BEFF8298BCDDE /* PhotoListCellConfiguration.swift in Sources */, - E57A335FCB37EF14B2DAD5B78F12EC3C /* PhotoListConfiguration.swift in Sources */, - 0EDA7BB04765D6D8E54292663CEE4EF3 /* PhotoLoadingView.swift in Sources */, - 5DD10DE2CCBCB44C2DD7CD4D5DB6A9AF /* PhotoManager.swift in Sources */, - 55FBE009D8079EE10AF65EB41084FA0A /* PhotoManager+Download.swift in Sources */, - 2D4B6260D2C86C4795FA7F2C9AFCE509 /* PhotoManager+Language.swift in Sources */, - 9296B9D7DB03FEC306EB987649B4A87E /* PhotoMyAlbumViewController.swift in Sources */, - A5BD7EAF176C58714284BDFFB6C1741F /* PhotoNavigationItem.swift in Sources */, - 59FC6DCE315E16BC9133DFADADA11BF5 /* PhotoPanGestureRecognizer.swift in Sources */, - 54629EFBC2EDB62A2B35413BD60C81EE /* PhotoPeekViewController.swift in Sources */, - C96A84642D0244D2EDD2433A2C668766 /* PhotoPermissionPromptView.swift in Sources */, - FC2C4D2E53CFD61902F9D291FA6FAD02 /* PhotoPickerBaseViewCell.swift in Sources */, - F707D92468739B85E82173DD435CCBE3 /* PhotoPickerBottomNumberView.swift in Sources */, - 45A6E5AC586CDC6C1D253BAAFBBC0FC5 /* PhotoPickerController.swift in Sources */, - FF6E23DA40E229D5074E97CF94A53D77 /* PhotoPickerController+Internal.swift in Sources */, - 41BD88040F2EEA8C87625C83791CA2E0 /* PhotoPickerController+PHPhotoLibrary.swift in Sources */, - 097932A8D665CD630360775911FAADCE /* PhotoPickerController+PickerData.swift in Sources */, - 9DC455EA276B9F9245DCA6CE23654BDA /* PhotoPickerController+Transitioning.swift in Sources */, - 344566089C7DDC92FBE16884C4B3A12E /* PhotoPickerControllerAnimationTransitioning.swift in Sources */, - 87CF254EF19FC9D68FD9C0F797D8F890 /* PhotoPickerControllerAnimator.swift in Sources */, - FDE3402238811DB0B5230AFAD200DDAE /* PhotoPickerControllerFectch.swift in Sources */, - 51E4CBA569D612C3A36E3B46E6C8F88C /* PhotoPickerControllerInteractiveAnimator.swift in Sources */, - 71457B6118D8C904631A3941890CEAA1 /* PhotoPickerControllerInteractiveTransition.swift in Sources */, - 1028C143269CB7DB793D5230227E79D1 /* PhotoPickerControllerProtocol.swift in Sources */, - 7033FFE4216B69AD0B0FC1FB196810A5 /* PhotoPickerData.swift in Sources */, - E7168AF8D7B7B04A364C952E6AD0E1C3 /* PhotoPickerDataStatus.swift in Sources */, - 1BBA98E1D45DCA348F36FAE603BD5B58 /* PhotoPickerFilterItemView.swift in Sources */, - 4053A8AB3A5EF83AA8E73F587B124F54 /* PhotoPickerFilterViewController.swift in Sources */, - 0E1677C67A53BABCF93872B854DF1516 /* PhotoPickerFinishItemView.swift in Sources */, - 91C9D0AA6A805FC4BBE96DC1412B6397 /* PhotoPickerLimitCell.swift in Sources */, - 5208386B394A7866251EA7496AE1015D /* PhotoPickerList.swift in Sources */, - 10015A2E596CDFB0D7AB586A7ECE8C26 /* PhotoPickerListAssets.swift in Sources */, - 569EFDE20F961D3F6AD0B4CD64FAEDCE /* PhotoPickerListCollectionView.swift in Sources */, - C90F109A8FF8C849538D95E1404159D1 /* PhotoPickerListCondition.swift in Sources */, - BE5FA459DDCCF33D22CF0C5A097D4BDD /* PhotoPickerListConfig.swift in Sources */, - F4DE145DDC6B2318E1C62F1537EC5CD4 /* PhotoPickerListFectchCell.swift in Sources */, - 88748D9D53660D14AD9FBEF1310945D2 /* PhotoPickerListSwipeSelect.swift in Sources */, - 202984D42674653BC57B3D4EF3A3D2E0 /* PhotoPickerListViewController.swift in Sources */, - 217EFDE96E5A70DEA00ACDFB9C849528 /* PhotoPickerNavigationTitle.swift in Sources */, - 65B42C96BA6619666A6A38C603AF3247 /* PhotoPickerPageViewController.swift in Sources */, - 214F18993611F9B7396FD3666FB4907F /* PhotoPickerSelectableViewCell.swift in Sources */, - 39D2167AE4A5D8DC5E57004FB7908F45 /* PhotoPickerSwitchLayout.swift in Sources */, - 0EF23821F3E61C001D50D0F7522BD8DA /* PhotoPickerView.swift in Sources */, - 05DD9E56A412A40818A7C4713ABDE413 /* PhotoPickerView+Asset.swift in Sources */, - 7543B8575F2A5BFA4CA79F829A0AED25 /* PhotoPickerView+Camera.swift in Sources */, - B8A4911521C2AA5E0647716C6AAF3D26 /* PhotoPickerView+Cell.swift in Sources */, - 73198BB7A3B6837BFFB5771C8A0F921C /* PhotoPickerView+CollectionView.swift in Sources */, - 90D3C52498805D630DA5E8A0373440E0 /* PhotoPickerView+Editor.swift in Sources */, - F34D7F0C49BCCD33C69F880F3A25F263 /* PhotoPickerView+Function.swift in Sources */, - ED561593687D820C0D0C7DE4AC5F2C95 /* PhotoPickerView+Preview.swift in Sources */, - FBC9CE4C997CAFB1885EC5508C9568AE /* PhotoPickerViewCell.swift in Sources */, - 024E45FE6517AE51AAEDC3FB9631B138 /* PhotoPickerViewController.swift in Sources */, - B372079A58F46159068BD1785F7D7322 /* PhotoPickerViewController+AlbumView.swift in Sources */, - 3C4D36DFC4A711AC765D88EB974E7913 /* PhotoPickerViewController+Camera.swift in Sources */, - 4FFDD299771D59FA6E879188D3CDE348 /* PhotoPickerViewController+Editor.swift in Sources */, - DD33C34769BA2868326134FE78EFB929 /* PhotoPickerViewController+FetchAsset.swift in Sources */, - 57EF80F3BF7637DC199215F5EFF67615 /* PhotoPickerViewController+PhotoList.swift in Sources */, - A1299A605C25854B32A16EBD4F3DB821 /* PhotoPickerViewController+Preview.swift in Sources */, - 3EF57E957E8C8A5F002CA1152F3FEAF4 /* PhotoPickerViewController+Toolbar.swift in Sources */, - 8DBCC9D38800C97BC994F29F30425E17 /* PhotoPickerViewProtocol.swift in Sources */, - FABBF41DADF91C251A762B870B4908BF /* PhotoPickerWeChatViewCell.swift in Sources */, - 8FEE533893FCD2D1CD238AB003F35178 /* PhotoPreviewContentLivePhotoView.swift in Sources */, - 900178BB0D628A4725DDDB0A0048B42F /* PhotoPreviewContentPhotoView.swift in Sources */, - 63947C1E918023B4FCD89999E98CB8B4 /* PhotoPreviewContentVideoView.swift in Sources */, - D4262C40C706DAB6220E67C9806E5736 /* PhotoPreviewContentViewProtocol.swift in Sources */, - D99637AC53999E12A04429A48A9CC21C /* PhotoPreviewListView.swift in Sources */, - D312D1735D63D20AE5E45140E0626A7A /* PhotoPreviewListViewCell.swift in Sources */, - F415779DC09990379BE7B7CEACB4DB0C /* PhotoPreviewListViewLayout.swift in Sources */, - E9083D3A10AAE2A96C6DA381C9A93C45 /* PhotoPreviewSelectedView.swift in Sources */, - 2D033E8C20FEA87022ABE9BC32A2367B /* PhotoPreviewSelectedViewCell.swift in Sources */, - 8AA4C8CAB90565B9518FEE3FEAB542A3 /* PhotoPreviewVideoView.swift in Sources */, - 925E7D338CD1C0501E0B7EBD738E4C1D /* PhotoPreviewViewCell.swift in Sources */, - C70FC0E68A8EAE9449F967B2BE0865A9 /* PhotoPreviewViewController.swift in Sources */, - 75F47D5241B25E5F9CD9B38D4CA3A447 /* PhotoPreviewViewController+CollectionView.swift in Sources */, - 9B1BF0CE15ED69F5BFAB68548DB35385 /* PhotoPreviewViewController+Editor.swift in Sources */, - 284821F20E7CF56BA8296879958B9098 /* PhotoPreviewViewController+NavigationController.swift in Sources */, - BE6335E88123233D8A2297AE1EB606A4 /* PhotoPreviewViewController+SelectBox.swift in Sources */, - 17B473C651B23D71EA43942FBFEFFE28 /* PhotoPreviewViewController+Toolbar.swift in Sources */, - CC72BD90758898A31723B7DA57B68F2C /* PhotoPreviewViewControllerProtocol.swift in Sources */, - 81B071001B8A6897693452C38EF60659 /* PhotoSplitViewController.swift in Sources */, - 9CBAF5E36FF8FA1572CFB3940B501987 /* PhotoTextCancelItemView.swift in Sources */, - 46BD16632E11154BD230E31A5E75F129 /* PhotoThumbnailView.swift in Sources */, - F0003CAF1B85C311865A163CC55F58E6 /* PhotoToolBar.swift in Sources */, - 28ABDDD1A32BC96F3E5C3C7405882463 /* PhotoToolBarEmptyView.swift in Sources */, - B8AB809F9639D440EBB2CEA761A3EB9D /* PhotoToolBarView.swift in Sources */, - 664962AD025C46FBE3E4BE852195507E /* PhotoTools.swift in Sources */, - 556B3424D8FEA36CA94AFF51A687D399 /* PhotoTools+Alert.swift in Sources */, - 73A1B50339CF9F9DAD80243ADE48815D /* PhotoTools+Camera.swift in Sources */, - FA720B0F0C11011C5051E0E414FF9F2E /* PhotoTools+File.swift in Sources */, - 9A4FDA6A4EE612E84515E92086C2800F /* Picker+Array.swift in Sources */, - 3532A023EABE33541308015D6F52B5D9 /* Picker+ConfigExtension.swift in Sources */, - 617929C5FBB27962B6EB94ABC3AEA62A /* Picker+Int.swift in Sources */, - 6A41E0C213383181E456898601723DF6 /* Picker+LivePhotoTools.swift in Sources */, - 2FB754109EEBA6BD827F6BB2D3781800 /* Picker+PhotoAsset.swift in Sources */, - B237C98477D4B04FB7B67AA9C9152E6E /* Picker+PhotoManager.swift in Sources */, - F69957AD17D410F0AB503291929D37C1 /* Picker+PhotoTools.swift in Sources */, - 788056A3B383B86AE91457E7C93703BE /* Picker+UIImageView.swift in Sources */, - 802C0800B9ED09193CE6F2210E79329B /* Picker+UIViewController.swift in Sources */, - 0FA02190BA7B81D2A46789B94B50F9B1 /* PickerBottomViewConfiguration.swift in Sources */, - AA148D94CD9509DC51F68AD0076C4FB5 /* PickerCameraViewCell.swift in Sources */, - 294F2B8C632EFDABABF201D9AA04B04A /* PickerConfiguration.swift in Sources */, - 02A5E8E57B02D1BD42AA8FA7D50B0A87 /* PickerDebugLogsConfig.swift in Sources */, - 43BD3F047E59A227CD8A04FCECF8B012 /* PickerInteractiveTransition.swift in Sources */, - 3F6110B1CB542B3ED49F392715CE2AE5 /* PickerManager.swift in Sources */, - D603C9967189D800DFB10700B9CA5A44 /* PickerResult.swift in Sources */, - ECADC494363E0A5B9222F775D82368CA /* PickerTransition.swift in Sources */, - 69C88B70EC89F306D59F72FFDD703C6B /* PickerTypes.swift in Sources */, - CCF96B98A384A7274FF0C450B4DC4FD7 /* PlayButton.swift in Sources */, - 11582753C3E9D6C09C80C5B1DAD264C2 /* PreviewLivePhotoViewCell.swift in Sources */, - 9610B05D08EAC2AE6B234376D79B3108 /* PreviewMetalView.swift in Sources */, - 750F865E5D3470D6456553FA67EC9E02 /* PreviewPhotoViewCell.swift in Sources */, - 6FDD06E601DFC73B4CEFC1E903E4C3AB /* PreviewVideoControlViewCell.swift in Sources */, - A9773D9100A378472DFF7E90BC91CED8 /* PreviewVideoViewCell.swift in Sources */, - A1322D333F30226BECD8284608B6EA5B /* PreviewViewConfiguration.swift in Sources */, - F0A083C4CE661363EF027447A7F389E3 /* ProgressCircleView.swift in Sources */, - 930369755EDB073E63253BD6F29C6489 /* ProgressCricleJoinView.swift in Sources */, - BDB01C9DB790E8A2F8176B9809AE34EA /* ProgressHUD.swift in Sources */, - B53C30B3CA6AC2F2024C2A2F25E3C04A /* ProgressImageView.swift in Sources */, - E486291FD399EBE1E1A145C60280AD6F /* ProgressIndefiniteView.swift in Sources */, - EFC0CBA15806678BCA424F0F554E180E /* SelectBoxConfiguration.swift in Sources */, - BB9BB79C19D98C28969586A9577626F2 /* SelectBoxView.swift in Sources */, - 37728495111BCFE8B5C6611EE85A031D /* SliderView.swift in Sources */, - 7B74F9F3BB3BFF55CFD0D9215E07B0B5 /* SystemCameraConfiguration.swift in Sources */, - 7C5C8FBD0DA679F01E8201F2D91DB78D /* SystemCameraViewController.swift in Sources */, - C67AB13259BCEA1DF93235DCC577005E /* TextManager.swift in Sources */, - 03A79C940A800552D4301C20A2D4FF14 /* TickView.swift in Sources */, - F06948106371C7A9BA8F87D17C27E0EE /* VideoEditedResult.swift in Sources */, - 59F94E95FEDCCA34DB5F9171597C7CCE /* VideoEditorMusic.swift in Sources */, - 83C8CE080019E51777D565C01F038A31 /* VideoPlayerView.swift in Sources */, - 53715459B69306F37941E8EFB07A0650 /* VideoPlaySliderView.swift in Sources */, + 15CDF483B0A2075DEE3E1A1DD5BBC17F /* AlbumListConfiguration.swift in Sources */, + E0AF42573982D7D7C7D91C933E268D10 /* AlbumListView.swift in Sources */, + B06623CBA8E2DC76E908075B46646141 /* AlbumSectionHeaderView.swift in Sources */, + C66D1D5E59FF7B9AE4A41473F66ABE21 /* AlbumTitleView.swift in Sources */, + 222E5B5D0F09BE2A216FAA93563F1971 /* AlbumTitleViewConfiguration.swift in Sources */, + D2BE83D6434242C7B9A6D900FBE5E026 /* AlbumViewBaseCell.swift in Sources */, + 5DB9B82519C8889B3120A0F0CA32D3B3 /* AlbumViewCell.swift in Sources */, + 0CCA5997040AD216139D1B55076A3EB3 /* AlbumViewController.swift in Sources */, + 3420E88EE9216F92E733A3D58EC9E2D0 /* AppearanceStyle.swift in Sources */, + 8BB76C5A153D1535610DE26D30E32418 /* ArrowView.swift in Sources */, + 439292ADA7AE5C2BC59F57F48A9DF6E6 /* ArrowViewConfiguration.swift in Sources */, + 4778B5BD06480C6A9E1B7CE2EA8A7BA5 /* AssetManager.swift in Sources */, + 03840F1F8B72C126B73E3911DDD1E9CA /* AssetManager+Asset.swift in Sources */, + E23705F7501D93AB34104D435DEC95B9 /* AssetManager+AVAsset.swift in Sources */, + 429DAE4C32DB2A2D4B5D74E407D7BF94 /* AssetManager+AVAssetExportSession.swift in Sources */, + 31FD3CCB6A967E2A85FF0234FFD83228 /* AssetManager+Image.swift in Sources */, + 7BDDBCEE9FDB7C4E0587B91A0EE5A0F3 /* AssetManager+ImageData.swift in Sources */, + 6B48D1F3C957EF9A4EABCF1ADA74725E /* AssetManager+ImageURL.swift in Sources */, + 7B545D90409CD89C7722C53723C9D4A5 /* AssetManager+LivePhoto.swift in Sources */, + 12771DB94B80865753375FFDC7CB52C1 /* AssetManager+LivePhotoURL.swift in Sources */, + 974BFC96C6253562CBCFEC4AB2CCED9A /* AssetManager+PlayerItem.swift in Sources */, + 0518FE496ACAEA96A436C631B710153E /* AssetManager+VideoURL.swift in Sources */, + CFF69EB4E52B2103BBDC465AD4AE6F13 /* AssetPermissionsUtil.swift in Sources */, + C887608B59A548966C77CA0426BD1404 /* AssetResult.swift in Sources */, + D7D9809CEC84D519E5976AC0FD6C9508 /* AssetSaveUtil.swift in Sources */, + 576C521B0BAAFDC60B2B8F42EE98FBC4 /* AssetURLResult.swift in Sources */, + 7B8E0D441D7F16B4125533EBFE71D88A /* Camera+PhotoTools.swift in Sources */, + 0ECF29ABD26F8FA4F8F641770628DFF7 /* CameraBottomView.swift in Sources */, + 070050A21713158C994F6D6A62D8C1C2 /* CameraConfiguration.swift in Sources */, + 3D1B3F4DB3A601166EC5203B034E2AFB /* CameraController.swift in Sources */, + 6C11140FC824A5E9E57FDE3552B06109 /* CameraControllerProtocol.swift in Sources */, + 1E0B879D6CB220CC9C0764D6D8F782DC /* CameraFilter.swift in Sources */, + A61E47FE79F33CE94748F5625E3A5F5E /* CameraManager.swift in Sources */, + 7FC37BE89F927A9A333FE5956202629F /* CameraNormalPreviewView.swift in Sources */, + 481033B067536CB3243C44AAC495256A /* CameraPreviewView.swift in Sources */, + 7D44A9E0937318931A032A7781F20101 /* CameraRenderer.swift in Sources */, + 05E15B6FE9915FCA292F5A457FAF60F7 /* CameraResultViewController.swift in Sources */, + BE4002E37DA9AE22258F21CFD22F02CA /* CameraViewController.swift in Sources */, + 98FAECF48529A74AB5AC7A8DC7AA0127 /* CameraViewController+BottomView.swift in Sources */, + E9E9A031BB469077093E71A8E50C3BC6 /* CameraViewController+Editor.swift in Sources */, + 66BDFF681EC2A34873333F65D3CC4374 /* CameraViewController+Location.swift in Sources */, + D5E906843F74A43694E55EDD34B09D4A /* CameraViewController+Preview.swift in Sources */, + 64B2BF5540284247ABFD40D91C942183 /* CameraViewController+Result.swift in Sources */, + 19E46B34CAB85250FAD4DE4CB91D6E68 /* CaptureVideoPreviewView.swift in Sources */, + 3D4E42AAF9665B3587F4563B26EB85A8 /* Core+AVAsset.swift in Sources */, + C597674ABFDC75F5BC7159B15E895F96 /* Core+Bundle.swift in Sources */, + D450A91B5D6EDC5C2B34105593A69247 /* Core+CALayer.swift in Sources */, + A9DC3A23F1CC90436B18FD1B6FDB8860 /* Core+CGFloat.swift in Sources */, + 2AFC73EA846DFB9686A341617BF58755 /* Core+Data.swift in Sources */, + 70C1E81FC8979D3F5083471307C12AEA /* Core+Dictionary.swift in Sources */, + B9D57B6E1F9E535D656121708F53D69E /* Core+FileManager.swift in Sources */, + AF9A02B925457D318BBDDD90F0A68EE9 /* Core+NSObject.swift in Sources */, + 3471FC85E8EDD931967D54785ADCB445 /* Core+PHAsset.swift in Sources */, + C6BDCAA45F1EDC459C3E281287606A14 /* Core+PHAssetCollection.swift in Sources */, + 9EBDBEF697CD99E4D6BF570B382854A9 /* Core+String.swift in Sources */, + B1A65A2BAC43F43C0AA7CF42FD4A794F /* Core+UIApplication.swift in Sources */, + 1BC84F66B275DB542178691161E1CD73 /* Core+UICollectionView.swift in Sources */, + 9C2894649A23529B9BB3D123D5371110 /* Core+UIColor.swift in Sources */, + 1219D4CE1FA1F21798F2C6B58D10131E /* Core+UIDevice.swift in Sources */, + 7B853E7560094484452F67803EC49A6B /* Core+UIFont.swift in Sources */, + 4B8A54394CD05F90A388EC6E690BD79D /* Core+UIImage.swift in Sources */, + 1BC1F5EF2E468EB32F87E7A32455843A /* Core+UIImageView.swift in Sources */, + D9585CA1173BDB870202B8F27B36A066 /* Core+UILabel.swift in Sources */, + 1E46A10B25F101BC6EBCC6EAF8A5BF0E /* Core+UITableView.swift in Sources */, + CCE10BB5DC68CD16F7482F8B4F003FCA /* Core+UIView.swift in Sources */, + 0E5F5373622DA41BF89041026761FA37 /* Core+UIViewController.swift in Sources */, + 42A4159607965D32FF544CAF5B17981D /* Core+URL.swift in Sources */, + 9CFF38D250358A2950D33770F2540434 /* CustomLanguage.swift in Sources */, + 218909F3B141669BBB10B6629B00B344 /* DeniedAuthorizationView.swift in Sources */, + 513D519D0FD4C1284F1B20691BA31B5B /* DeviceOrientationHelper.swift in Sources */, + E6828543C55D8D7ADDF9E391EEE80E97 /* EditedResult.swift in Sources */, + C608D8741321A4E7FA87A97115DB0B3B /* Editor+CIImage.swift in Sources */, + DD65F1D2A117C84B9372CECCCA403604 /* Editor+PhotoTools.swift in Sources */, + 69BDF4E5CAE3639F7311D5BED0E24266 /* EditorAdjusterView.swift in Sources */, + 009A48C586A867D825766D33CFF1506D /* EditorAdjusterView+ContentView.swift in Sources */, + BA3F92E0FA85DB2B5D7DA0875DD02FC3 /* EditorAdjusterView+Croper.swift in Sources */, + E7F8EE885EAA0231A4F21952130CD121 /* EditorAdjusterView+Edit.swift in Sources */, + 631A4D6324495460B169EBD87FA43370 /* EditorAdjusterView+FrameView.swift in Sources */, + F5774A2B5575852AA52AB03F61C806C4 /* EditorAdjusterView+Mirror.swift in Sources */, + 94C47001BE64B296326BEE97DB5296E1 /* EditorAdjusterView+Rotate.swift in Sources */, + 34BF52061F5887A87ECCE4CCA280C4BD /* EditorAdjusterView+ScreenRotation.swift in Sources */, + 85135A1867E554F6CC4D802EA2F7E30C /* EditorAdjusterView+ScrollView.swift in Sources */, + B0BEC0218B746D1493CEF19404CF72D0 /* EditorAdjusterView+Video.swift in Sources */, + 547AA28F7BE98EEE656FAEFB571869C7 /* EditorAdjusterViewProtocol.swift in Sources */, + 4C49FB96CD582834058E77A5A3F8299A /* EditorAsset.swift in Sources */, + DDE6FBB8A80D9EF829F45927AAEF14B6 /* EditorAudioAnimationView.swift in Sources */, + 7061FCF846B8BF440E5DF3F921190572 /* EditorBrushBlockView.swift in Sources */, + CEF914066E7B5518EC2A786C32056B23 /* EditorBrushColorView.swift in Sources */, + B6D497E9040B6EA9916EB8A9111EEDBD /* EditorBrushSizeView.swift in Sources */, + 269DD5498BECD91FD56FB06386F9E794 /* EditorCanvasView.swift in Sources */, + 1081965E76DA552D412B14EBA7E9F5CA /* EditorChartlet.swift in Sources */, + 679EF7BCA1541B922E5A24E13F70762C /* EditorChartletListProtocol.swift in Sources */, + 5040477D8490726F40B56AD4F0236F4F /* EditorChartletPreviewView.swift in Sources */, + 085399DB9D7BC8D4AF2B4CAD51C4ACB4 /* EditorChartletViewCell.swift in Sources */, + 63F40F61E1787B816A4D981B19E3FC88 /* EditorChartletViewController.swift in Sources */, + C60E29444CBD705EA0C0ECDF5C2CAB19 /* EditorChartletViewListCell.swift in Sources */, + F7AD9DE67AF069DFA3C41CA50A3EE9AC /* EditorCollectionView.swift in Sources */, + 8D23C1AF184AB4F2C4923FA23C739C6E /* EditorConfiguration.swift in Sources */, + B1925BE624793F0DF021C8A3ACD0E3A0 /* EditorContentView.swift in Sources */, + E9FD97E8918F6254F168BC388ABC97F7 /* EditorControlView.swift in Sources */, + 4739523AE4CD781A0AFE81C4A92F1093 /* EditorDrawTool.swift in Sources */, + 81FEC5C21C4ECF089A0A1D57B7A9FAD4 /* EditorDrawView.swift in Sources */, + 24237D0937BA67B3D0355291F5857CE4 /* EditorFilterEditView.swift in Sources */, + 800E1908061AED13185075371DE7BBCB /* EditorFilterParameterView.swift in Sources */, + DF2415BFF356CFCE888C7B4E48DA9193 /* EditorFiltersView.swift in Sources */, + 2A9C68689407BEECF0E5E78FC0BF7E53 /* EditorFrameView.swift in Sources */, + DEF0BB01CF1BF22669B89BB41D08C3CA /* EditorFrameView+Control.swift in Sources */, + 77302B3B3FDD8CE1F58A94392D7D55DB /* EditorFrameView+VideoPlay.swift in Sources */, + D7396C1E318F63862E8F297441606BA5 /* EditorMaskListProtocol.swift in Sources */, + 0FAE47C3580048AF9B0290913AC0A4A4 /* EditorMaskListViewCell.swift in Sources */, + 0E42D1D78C5D1F34D7E8A1039D129F98 /* EditorMaskListViewController.swift in Sources */, + C57862A18154AB55B666963F49687C86 /* EditorMaskView.swift in Sources */, + DEBFF821B23E4994CAB05B2F309C2A94 /* EditorModels.swift in Sources */, + 2B9422785F12B710886832C52DE1DA34 /* EditorMosaicToolView.swift in Sources */, + 99CEA5C2FA7AAC6C3DA92819AE9F96B0 /* EditorMosaicView.swift in Sources */, + F31BD97F93D19128E000EB90DC089416 /* EditorMusicListViewController.swift in Sources */, + D6CA212C9CAF97BADE298CF34076EB5D /* EditorMusicLyricViewCell.swift in Sources */, + CB2387172590052ABE5D8E64D790F8BB /* EditorMusicView.swift in Sources */, + 026A287E594D2518A5D7E43C01F9E7F5 /* EditorMusicViewCell.swift in Sources */, + 8CB33D525B57628358028238EFDA79E3 /* EditorPlayAuido.swift in Sources */, + 405B705939B2DF56A8B74A4BCF7B8509 /* EditorRatioToolView.swift in Sources */, + 99640DCAEEFAB148662E020EFC8570AA /* EditorRatioToolViewCell.swift in Sources */, + 97A38A4F27848BCBDA27447D5046F300 /* EditorScaleView.swift in Sources */, + 13D3C9450091C0727EE5467C762EE36C /* EditorStickersContentView.swift in Sources */, + 0F988A141257840541D6651792B33EF0 /* EditorStickersItemView.swift in Sources */, + 985453026D4F68349F37ED17063FAC5D /* EditorStickersTrashView.swift in Sources */, + 9EB48670A26D132ADE92964CD7434EE3 /* EditorStickersView.swift in Sources */, + B03F70C79F41B41563827AC6CE009FB2 /* EditorStickerTextView.swift in Sources */, + A0B8FD9C2D6114D8EFC82C3BEB965DB5 /* EditorStickerTextView+CollectionView.swift in Sources */, + 8C1CE38B965554E46C8912CDAAAEBA56 /* EditorStickerTextView+Delegate.swift in Sources */, + 53F5D8C4D467BFBE7C77D41B0628CCCA /* EditorStickerTextView+Draw.swift in Sources */, + 01C9676E692F929FE44D9175BE661398 /* EditorStickerTextViewController.swift in Sources */, + CA843C43D456C9F69E6ED59F3F262DC1 /* EditorToolsView.swift in Sources */, + E5DF972D6D1BF6F337F9DD2362722A1B /* EditorTransition.swift in Sources */, + 6991C1B4299D2BFE47B2109304031F98 /* EditorType.swift in Sources */, + BBF1B64701BD9B30ADCD8A03CBE2F24E /* EditorTypes.swift in Sources */, + 7C326D24FCDDBC1901CCE1395AC4EC1F /* EditorVideoCompositor.swift in Sources */, + F27450F1E07AD9CE8E97E556F4A884BA /* EditorVideoControlMaskView.swift in Sources */, + 3515A0A15C0CBF2E5D73710DC33E378F /* EditorVideoControlView.swift in Sources */, + 4C410E7E08FDA51C906AE19A3F1243FF /* EditorVideoControlViewCell.swift in Sources */, + DEE40D82F8FD6E113968072AB0D4D4FF /* EditorVideoPlayerView.swift in Sources */, + A6B83A289A76858310A36A909F5ADEE8 /* EditorVideoTool.swift in Sources */, + C300718CDCA6DCDB170DDDA6999CDAC3 /* EditorView.swift in Sources */, + 8900D50F227C1D0389141B334E83287C /* EditorView+AdjusterView.swift in Sources */, + 55B287CA1F2BAAD5B1430032479CE0BF /* EditorView+AVAsset.swift in Sources */, + C4005D1D31C41B2F1612847E48F6C015 /* EditorView+CGFloat.swift in Sources */, + 2935A33D523AFA49A27FFA9DACA89ED4 /* EditorView+CIImage.swift in Sources */, + 1AE7E772063C954862A492EBEA642638 /* EditorView+GestureRecognizer.swift in Sources */, + 58CE9E251AC68DAB444FD166E3E4BDD0 /* EditorView+PhotoTools.swift in Sources */, + 060950BD66228C11162BC744CE993B77 /* EditorView+Public.swift in Sources */, + 5E06259762AEC04F37B90B75AA513566 /* EditorView+ScrollView.swift in Sources */, + A754F19F765110BEBC5CD9B6322F6019 /* EditorView+UIImage.swift in Sources */, + 377F85C715877C58E0620FC10B8CC8FC /* EditorView+UIView.swift in Sources */, + 5E423B9A922A238516C00E436D745412 /* EditorViewController.swift in Sources */, + E9A99D6659949B967BE6B0FEABC6AAC5 /* EditorViewController+Action.swift in Sources */, + 1CC979E7BFE3468F93BC657C14161E79 /* EditorViewController+Await.swift in Sources */, + 02B6479EFD5D82C317C9406E71AEABE6 /* EditorViewController+Brush.swift in Sources */, + 9ABABDA467747791E3AC7103113DA739 /* EditorViewController+Chartlet.swift in Sources */, + A7D1C0675FC903A04CDB9AD053B204A4 /* EditorViewController+EditorView.swift in Sources */, + D148CEC323C85D4880DBEB4BBF609934 /* EditorViewController+Filters.swift in Sources */, + 346B6AF0161DA9D1FF974714399110F5 /* EditorViewController+LoadAsset.swift in Sources */, + EBBB06F5C9C4BD0D990A0FC702AAE70C /* EditorViewController+Mosaic.swift in Sources */, + EF5D19ECA0F8A10571830F22A3AE14BC /* EditorViewController+Music.swift in Sources */, + A8D6D77095C64819E7EBE184D8D307F1 /* EditorViewController+Processing.swift in Sources */, + A812381BA081647DC659F0680AFC653A /* EditorViewController+Ratio.swift in Sources */, + 84326A342B33A9DB0039D8A425339EC5 /* EditorViewController+Text.swift in Sources */, + DBD31ED24ED3340A6C7F290568B234D9 /* EditorViewController+ToolsView.swift in Sources */, + 35081453265C380DEAC9195A484FAAFD /* EditorViewController+UINavigationController.swift in Sources */, + 131C4351A507F8554BCFD667E8B1D942 /* EditorViewController+VideoControl.swift in Sources */, + CADB9F793C215579F148104C29A85C9A /* EditorViewControllerDelegate.swift in Sources */, + 1C106312971E898364584E4D9CCA07B5 /* EditorViewProtocol.swift in Sources */, + 7C21775BF89313ADB472F1B5638E08E6 /* EditorVolumeView.swift in Sources */, + A0FACB6EEC8D2D0520AC35B72E3C63C2 /* EmptyView.swift in Sources */, + 11B64A48CA67190E1827168A60C2EE3E /* EmptyViewConfiguration.swift in Sources */, + FC5B2DC29207A123E71DEE5B0DEB6FED /* ExpandButton.swift in Sources */, + 7C4C833B5593C86D40D31B32B94AC02C /* ExportPreset.swift in Sources */, + 4EEBF6863EB72EAF23BE9815FACEE100 /* GIFImageView.swift in Sources */, + D7220E2F73B63C3228419E31CFA97349 /* HXBaseViewController.swift in Sources */, + 36A4AAE2C8E04F5EBC00D990F0237CFF /* HXLog.swift in Sources */, + D264326488E381A38B4129F1C2908643 /* HXPhotoPicker.swift in Sources */, + EB3D6D44F0F2C441CC47AD50B099A805 /* HXPhotoPicker-dummy.m in Sources */, + F9E818C0086BD2A14227E586165BC5F8 /* ImageContentType.swift in Sources */, + EA3E9C931DD9E947D7758ED1F83F1744 /* ImageEditedResult.swift in Sources */, + 7B69A84877BA09A073EE0B45517172E9 /* ImageResource.swift in Sources */, + 8ECAE5BFDB15A8B2AA27152F815EE265 /* ImageView.swift in Sources */, + AD89E085C3EB574A63E00DC337DA59D6 /* IndicatorType.swift in Sources */, + 1CE0DDE8193DBB0A2440C14E44F8D8C7 /* LanguageType.swift in Sources */, + 488E6670901A554AB0CD355D7B7521CC /* LivePhotoError.swift in Sources */, + 5C21E42D1F1DE51ACAEBE55202E995F9 /* LocalAsset.swift in Sources */, + 72B82A62E245F0290C46C71D025A3C81 /* NetworkAsset.swift in Sources */, + F78ADB4CD7BA633288143F4E6ED09DDC /* NotAuthorizedConfiguration.swift in Sources */, + 8C9597F63E7B58E55A2454DDB6977998 /* PassThrough.metal in Sources */, + 0CB0660B9DACD19C58D73D968A625FE9 /* PhotoAlbumCollectionCell.swift in Sources */, + 54CCFD8B55B754719681B643B57B630C /* PhotoAlbumCollectionViewCell.swift in Sources */, + 8D8948FBBF570DA088B66860ACFFB04D /* PhotoAlbumController.swift in Sources */, + 48E06EBF1FE0558A8996E466BB301553 /* PhotoAlbumControllerConfiguration.swift in Sources */, + D062B7E1E476F53EFAA01CCD04399767 /* PhotoAlbumHeaderView.swift in Sources */, + 0F73DA51D2EDCFC40B8A35A036FB5048 /* PhotoAlbumList.swift in Sources */, + 6BC851B19B67BA65FEF55D7A8EA2938F /* PhotoAlbumViewCell.swift in Sources */, + 98E81C68A065C5FEB2274AEFC199CFC6 /* PhotoAlbumViewController.swift in Sources */, + 294DDD78DEC431EDDA1DE3F7808E768B /* PhotoAsset.swift in Sources */, + 9AB0438945AEA068712EEE3E5B0D948E /* PhotoAsset+Codable.swift in Sources */, + 0AFBBCB1283659C9051A318541D5FDEB /* PhotoAsset+Editor.swift in Sources */, + 904F03F29B7FF4BBEDDBD1FD611B0B41 /* PhotoAsset+Equatable.swift in Sources */, + 7E5F6A14B0B7373C8BE8A860B5A0A377 /* PhotoAsset+FileSize.swift in Sources */, + 7F87C97693F7EAEA526EF5712B7DBE4D /* PhotoAsset+Image.swift in Sources */, + 38CBCCEF1A064A74B5BDB531ED15E54D /* PhotoAsset+Local.swift in Sources */, + 9FD3C14A019AB817DF7A0A1027588A1D /* PhotoAsset+Network.swift in Sources */, + 265D4B9F7DB9E1058C8A27FFDCE7BD7B /* PhotoAsset+Request.swift in Sources */, + A23091FFEB8EC65359399EBA59EE930E /* PhotoAsset+URL.swift in Sources */, + 0AD9E05BC0230C48C31D2185A81BB81F /* PhotoAsset+Video.swift in Sources */, + 23667EA007077150145413AA9F5AD940 /* PhotoAssetCollection.swift in Sources */, + 340B59358A01E41C9593C6BA0A17D0DD /* PhotoBaseViewController.swift in Sources */, + E64EF112607EDBB95D557540948078B7 /* PhotoBrowser.swift in Sources */, + EB69F25B7918444F56FFA5E06DD88B53 /* PhotoBrowserAnimationTransitioning.swift in Sources */, + C7A98D04A3B41DBFE74B567E54F8F1E7 /* PhotoBrowserAnimator.swift in Sources */, + 686A46204956BC0CAF63C61D1C8F73FC /* PhotoBrowserInteractiveAnimator.swift in Sources */, + 8C7DAA31564424C28F45B5EA0FA3D7F6 /* PhotoBrowserInteractiveTransition.swift in Sources */, + 55D542CE3171CF96EC3C9457087C0A66 /* PhotoControllerEvent.swift in Sources */, + A4D543373305A28547CC01D464CDF974 /* PhotoDeniedAuthorization.swift in Sources */, + E1051BA8556368328061BE171305FB1E /* PhotoEditorFilter.swift in Sources */, + FCD5BD2918162DBEB3804D651C95DADC /* PhotoError.swift in Sources */, + 429F369CA252726E95CCEB69DD7EB906 /* PhotoFetchAsset.swift in Sources */, + 92C0969AE74483F7C78FA72E7678A38B /* PhotoFetchAssetCollection.swift in Sources */, + AA0D499970F533485895846D09115F28 /* PhotoFetchData.swift in Sources */, + BD0B655729310046CB79F86B4FCDAE5E /* PhotoImageCancelItemView.swift in Sources */, + 88F571431025DB3A78236EB306C47D19 /* PhotoListCellConfiguration.swift in Sources */, + A9D7D31432F29B3855263D838C78248F /* PhotoListConfiguration.swift in Sources */, + 0C2A7F863FD258538450C6794305D612 /* PhotoLoadingView.swift in Sources */, + 1D4DEAA9715B89BC22D3CC33954EC2D6 /* PhotoManager.swift in Sources */, + 8EA51CFACAE46B953C8E1FC1EF4FBB2D /* PhotoManager+Download.swift in Sources */, + 5557A81E35F872CE14B91940619D7EDC /* PhotoManager+Language.swift in Sources */, + 2236FAE14F324D4282FC9D46DAFE1D2F /* PhotoMyAlbumViewController.swift in Sources */, + DCE64FF2007875B75A1F7D4DD0E9BEBD /* PhotoNavigationItem.swift in Sources */, + BAFD97FD50F591236E4C9AEA309F05DA /* PhotoPanGestureRecognizer.swift in Sources */, + AD0FA3C26F2700EBAEFABCFFB2AE01E9 /* PhotoPeekViewController.swift in Sources */, + 1AB1B64282A3B34C193AFA8521AD3B79 /* PhotoPermissionPromptView.swift in Sources */, + 6EC1E52FBF89A4FB647DB04D569B530F /* PhotoPickerBaseViewCell.swift in Sources */, + 49E3C83FB7047EB828E65C5FB63FC18D /* PhotoPickerBottomNumberView.swift in Sources */, + FDB92D433F139AA783EAAB17E54722EA /* PhotoPickerController.swift in Sources */, + 857C70EA6E1B18CD0540E46AF8D25F60 /* PhotoPickerController+Internal.swift in Sources */, + ADCE8C1ABC8859F5C7AE97333E790492 /* PhotoPickerController+PHPhotoLibrary.swift in Sources */, + BDB0815D3CD4EE9BACE0D0AB647E77DB /* PhotoPickerController+PickerData.swift in Sources */, + 154042352B2AABD60B001E2DD9D656E6 /* PhotoPickerController+Transitioning.swift in Sources */, + BE7D1BC62F87D7B9D80157C3E890DB61 /* PhotoPickerControllerAnimationTransitioning.swift in Sources */, + 132D0201EBAF44DF9AAC444DB3B589CB /* PhotoPickerControllerAnimator.swift in Sources */, + 9A3D805E9515275CE1BE0FE5002DA850 /* PhotoPickerControllerFectch.swift in Sources */, + 9B0F0EA0698D2ED10B6DA185658DEBA4 /* PhotoPickerControllerInteractiveAnimator.swift in Sources */, + 0A87FEC3252C2D413B232445AA580474 /* PhotoPickerControllerInteractiveTransition.swift in Sources */, + 6D862B2A42FEB13C3772FE2D696DEC39 /* PhotoPickerControllerProtocol.swift in Sources */, + C56A290212F27AC9F5A866CBA568962E /* PhotoPickerData.swift in Sources */, + 705AC054B225D3766997B9B3FC119A09 /* PhotoPickerDataStatus.swift in Sources */, + 4A1D76038989B5CB1380B864B180C1C0 /* PhotoPickerFilterItemView.swift in Sources */, + 5A4F9495029D4F18B502F303FAAFAB6D /* PhotoPickerFilterViewController.swift in Sources */, + 933C2B78420C644C664C6D64ADAD2E1D /* PhotoPickerFinishItemView.swift in Sources */, + 156C3415816349C400FE0FA43764D3EE /* PhotoPickerLimitCell.swift in Sources */, + 0DFE1E7D77DD0198F7AAF2A39A3313EB /* PhotoPickerList.swift in Sources */, + 4A07466238DF7A1201FF6F76312BA137 /* PhotoPickerListAssets.swift in Sources */, + 442A3961DB4288101E65826EB0E42C5D /* PhotoPickerListCollectionView.swift in Sources */, + 902326B2F936F546AA411C43777F2730 /* PhotoPickerListCondition.swift in Sources */, + E607BD1953CCC2D08005C31141725DD9 /* PhotoPickerListConfig.swift in Sources */, + 81457AA092402D2F59171CC7A3BCC26F /* PhotoPickerListFectchCell.swift in Sources */, + 2C426B6D0E4ED50F6CBF72EFFD79A7C4 /* PhotoPickerListSwipeSelect.swift in Sources */, + CCAC9517FE637E216041B32906913930 /* PhotoPickerListViewController.swift in Sources */, + 4175F7A72D01745887E7AEC6522E0D7C /* PhotoPickerNavigationTitle.swift in Sources */, + 097838C3FB66AC67E6383E813A9BC9D7 /* PhotoPickerPageViewController.swift in Sources */, + D01A887155F01B992C56B81B41E56081 /* PhotoPickerSelectableViewCell.swift in Sources */, + 7222749D98FC7538E8F576CF1C828B5E /* PhotoPickerSwitchLayout.swift in Sources */, + DDFB519B49F9467305C9345E1702D47A /* PhotoPickerView.swift in Sources */, + 91FE48179EA668D6C7CC4AA1161B2305 /* PhotoPickerView+Asset.swift in Sources */, + 87BE400BF1AD3C5A65319917152959EE /* PhotoPickerView+Camera.swift in Sources */, + D5B963AC95BA1D6E01DA6D7DE6B69A0A /* PhotoPickerView+Cell.swift in Sources */, + B684B1C78E8BB18ABB5D0A3442A4748B /* PhotoPickerView+CollectionView.swift in Sources */, + CEAF0D7C289720409EBBF05992FFAD43 /* PhotoPickerView+Editor.swift in Sources */, + C2B6BE3675C153A459F6B5E14BA5D3A3 /* PhotoPickerView+Function.swift in Sources */, + 4CD4F7D2C04170C7B67C0E346F94AC53 /* PhotoPickerView+Preview.swift in Sources */, + 193714CC927C7D9C81917B38AE104429 /* PhotoPickerViewCell.swift in Sources */, + B9E2B3B797A30FB504B399600018E35A /* PhotoPickerViewController.swift in Sources */, + E805386CCF64E23E223A109FF471161B /* PhotoPickerViewController+AlbumView.swift in Sources */, + B214F4EECC5447364AA72EE2676AEE38 /* PhotoPickerViewController+Camera.swift in Sources */, + 3A0EE5BD8449CBB8908CD539A679E7BA /* PhotoPickerViewController+Editor.swift in Sources */, + 57B173AA6B94D6AB781CCF18FAD200B2 /* PhotoPickerViewController+FetchAsset.swift in Sources */, + 6BE47BA381346550F80F9BFE382B3CF9 /* PhotoPickerViewController+PhotoList.swift in Sources */, + 62652652D01DF8DF87C3D95D7DC0EF86 /* PhotoPickerViewController+Preview.swift in Sources */, + 9911FBCB52BFB9B47893FB47E9D965ED /* PhotoPickerViewController+Toolbar.swift in Sources */, + A2C7AFE7695C6DB6DF80EFA8A2E34303 /* PhotoPickerViewProtocol.swift in Sources */, + F5A6A130EDEDC487F97CD98A653C7535 /* PhotoPickerWeChatViewCell.swift in Sources */, + C274545367C49C313F79C274C009C0B3 /* PhotoPreviewContentLivePhotoView.swift in Sources */, + 46ED46030FB56E5644BD3E4741BC52ED /* PhotoPreviewContentPhotoView.swift in Sources */, + 8C2B58E9D44ADEA56763E310E11FECDD /* PhotoPreviewContentVideoView.swift in Sources */, + 0112F591E9D3555E8EE826C588D3A7BF /* PhotoPreviewContentViewProtocol.swift in Sources */, + 12B584CFB087DB87A6F0B89741452782 /* PhotoPreviewListView.swift in Sources */, + D8ED5E8B0D09A85A18DE61ACE675CDDE /* PhotoPreviewListViewCell.swift in Sources */, + 45EAFC5ED92D5D4713DD3EB567A529C6 /* PhotoPreviewListViewLayout.swift in Sources */, + 5344EF30CA7AFADCB45ADF78A85B4576 /* PhotoPreviewSelectedView.swift in Sources */, + 6A5122D4E48B3AEFBEC9D744B27F995C /* PhotoPreviewSelectedViewCell.swift in Sources */, + 1FFEE8343246709343BCC1E36FC1B416 /* PhotoPreviewVideoView.swift in Sources */, + F268585AA3063CC965839D4FF3B7B9D3 /* PhotoPreviewViewCell.swift in Sources */, + A3A5274E62298FE21C47E53B6C985C3C /* PhotoPreviewViewController.swift in Sources */, + 64A3BE1D924127869D9EB317DC0F48F9 /* PhotoPreviewViewController+CollectionView.swift in Sources */, + FA19B1C938DB7BA3F7EFA5C6C7125F5C /* PhotoPreviewViewController+Editor.swift in Sources */, + F3BE56C59041362B41BB18F686FAFDDD /* PhotoPreviewViewController+NavigationController.swift in Sources */, + 4C54C9DB3E308CE9A453EB6379A155E5 /* PhotoPreviewViewController+SelectBox.swift in Sources */, + F8033B2B2844564654F2FC67FD0B72DE /* PhotoPreviewViewController+Toolbar.swift in Sources */, + 3F5E7B241B852DA9396891C32F9A4CB7 /* PhotoPreviewViewControllerProtocol.swift in Sources */, + E505F4BA142B5454659286364024B637 /* PhotoSplitViewController.swift in Sources */, + 5A9A57C96195D12F9072135AE0F27525 /* PhotoTextCancelItemView.swift in Sources */, + 0C50401241450858CF2B86FCEDA0C991 /* PhotoThumbnailView.swift in Sources */, + 73D2CC4C4B2F8258F949D119B5296582 /* PhotoToolBar.swift in Sources */, + C041F7888555D78B9CF6934FD449D221 /* PhotoToolBarEmptyView.swift in Sources */, + 172C461F334FDD26373D9960F4F56FDD /* PhotoToolBarView.swift in Sources */, + BF390DB5E18111745DC182BF3C47B8D5 /* PhotoTools.swift in Sources */, + 1948C12F371AB1F1D8F78CED136229B6 /* PhotoTools+Alert.swift in Sources */, + 0C7AA8C548ECC8CA6BAE27C79B10DD4C /* PhotoTools+Camera.swift in Sources */, + BCFAECB6DDA6AA44E672B18C9DE1BB49 /* PhotoTools+File.swift in Sources */, + 6F5D2A3D7A5EF303FA32E02DBBA7BFFB /* Picker+Array.swift in Sources */, + AB46BB73AFDA888675F66CB274316C05 /* Picker+ConfigExtension.swift in Sources */, + ED2F504DC1D0400D55ECD265AAB87030 /* Picker+Int.swift in Sources */, + A358D6D96A1BC34E373D55F9EA50E23D /* Picker+LivePhotoTools.swift in Sources */, + 48BCB1E78D33EE6C44B40A7E013F7597 /* Picker+PhotoAsset.swift in Sources */, + 3FF79B573F05A5A47B635669898BB794 /* Picker+PhotoManager.swift in Sources */, + B8ED049F2D5C90EB80A68FA2FDE19AEB /* Picker+PhotoTools.swift in Sources */, + 98CECF9B611042C15C8102A404DFC04D /* Picker+UIImageView.swift in Sources */, + 2E653F6A1C49EA71D295342E5C32425E /* Picker+UIViewController.swift in Sources */, + F54D2933E78A4E641A05742C412EC9F8 /* PickerBottomViewConfiguration.swift in Sources */, + 4F5FE201C940504690120A403CED308F /* PickerCameraViewCell.swift in Sources */, + 5A137615D5DAFD756363A9B1D50356DE /* PickerConfiguration.swift in Sources */, + 98F1A6E1959D1349E2DB45354130C33D /* PickerDebugLogsConfig.swift in Sources */, + 08F3EC38FF61A0093B5C6ABFE5253604 /* PickerInteractiveTransition.swift in Sources */, + 7C23D4B5A41BEE50414E33681B808C46 /* PickerManager.swift in Sources */, + 1379F930A147D4A4CFDD463CCC0291E8 /* PickerResult.swift in Sources */, + 1B0AB3911A9B65785AE4DA3137A8AF09 /* PickerTransition.swift in Sources */, + BB7DCCFF30FB7EE4C7977119430EE882 /* PickerTypes.swift in Sources */, + D04A7B70EA379CBCBFA9AE183B032B1A /* PlayButton.swift in Sources */, + 083C98087B42490F5EA794011277D3BC /* PreviewLivePhotoViewCell.swift in Sources */, + 713DE9417D4C35E426FDC3FF9EEF626C /* PreviewMetalView.swift in Sources */, + FF87A31A2352EAA42DE25A28EE107B21 /* PreviewPhotoViewCell.swift in Sources */, + BB648A76FC0A729110F83174AB5E3FD0 /* PreviewVideoControlViewCell.swift in Sources */, + CE28070300C25B66AD74F062B89B32F0 /* PreviewVideoViewCell.swift in Sources */, + 557629E3BD2B92CB3278123CB649853E /* PreviewViewConfiguration.swift in Sources */, + E3DB72CA5BBE20FD2699FB1FB5B4D350 /* ProgressCircleView.swift in Sources */, + 052BC27BB963B760938A1AC7105E27A1 /* ProgressCricleJoinView.swift in Sources */, + AF4176D68FEA0D6686DC189BE251A0A9 /* ProgressHUD.swift in Sources */, + C9F5EFF1911C9937F115D38F867E4E94 /* ProgressImageView.swift in Sources */, + 0EB3BB42A4C079AA32BF94723EE287B2 /* ProgressIndefiniteView.swift in Sources */, + B58C249412ADD106EECE0DB49B982919 /* SelectBoxConfiguration.swift in Sources */, + 5A12E9CF48B864FECCBBFDEDA42B54AE /* SelectBoxView.swift in Sources */, + 81619922989C38C75F1FDDA668CB9AD7 /* SliderView.swift in Sources */, + 77D2E6EE871E14BDC3F2030D50356B1B /* SystemCameraConfiguration.swift in Sources */, + A14EE0D9F2C94482B056EA0D734285E5 /* SystemCameraViewController.swift in Sources */, + F27B6BD580F6446A97C7BD1202AB7284 /* TextManager.swift in Sources */, + DAEB386BD82338F2B8BFF2EA80D1317E /* TickView.swift in Sources */, + 006196A58BEF8117BF4901F590292AA2 /* VideoEditedResult.swift in Sources */, + C0A1A45D06EEFD361A54D1C08C16DBA9 /* VideoEditorMusic.swift in Sources */, + D4B69149C82743C774F99AB834FC0925 /* VideoPlayerView.swift in Sources */, + 38132783F8D69A64314520CB234AB6AF /* VideoPlaySliderView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BDA75F689C204CB95184185413964A74 /* Sources */ = { + E1337A8CACAE814D83A6A4A9C02173DA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F4D9A054BA1500E6C55673DE17959BCC /* AnimatedImageView.swift in Sources */, - A015B6CFCE1A1A5655A22378B9A4DB05 /* AuthenticationChallengeResponsable.swift in Sources */, - BC0E3F87DA6ACE18361DCDF602F94B27 /* AVAssetImageDataProvider.swift in Sources */, - 30EDA8248DB3099DDE8199F820BF2C1D /* Box.swift in Sources */, - C6F26517A8E0BB81420B4CCDB3430678 /* CacheSerializer.swift in Sources */, - B5094975A0D4CE70CA95D89CB9790541 /* CallbackQueue.swift in Sources */, - 829E7B7F1BB4435D9672972C285EC8F5 /* CPListItem+Kingfisher.swift in Sources */, - 033D0F72DD3CCBF5D9EB310673807ECF /* Delegate.swift in Sources */, - A8372882F45CD22D76094A4BB83E8526 /* DiskStorage.swift in Sources */, - 7CEF4F35D1E64625C704C045850233EA /* ExtensionHelpers.swift in Sources */, - 95DACEF599F311861CEFDE0A8BEC7D3E /* Filter.swift in Sources */, - 88CC756B2CF5C4C315014571FF56FF2B /* FormatIndicatedCacheSerializer.swift in Sources */, - 97D4EE10E9616302DF62BB12D2CDDA83 /* GIFAnimatedImage.swift in Sources */, - 3266E8A277642DFBE8D70B52C58C771E /* GraphicsContext.swift in Sources */, - BC08F692EF2B65EE58879D52676EC80F /* Image.swift in Sources */, - 2908EF13FFFA0252E914098B62C469DC /* ImageBinder.swift in Sources */, - E3729148DE876BDA5992283F72D83E82 /* ImageCache.swift in Sources */, - 6B077A95D83F81D1EE655D3768F315C1 /* ImageContext.swift in Sources */, - 6A1C3E0D8244D7E3C4E36666C3DB5204 /* ImageDataProcessor.swift in Sources */, - D21AB55DC7ADE4ADE12F64A51DE31F61 /* ImageDataProvider.swift in Sources */, - FE57ECBA894382DEBD8F7010449B246D /* ImageDownloader.swift in Sources */, - 33104B5253D70F0D4EF29B03D62F9826 /* ImageDownloaderDelegate.swift in Sources */, - D167A49629CCBBEFACCAEADCCDE67472 /* ImageDrawing.swift in Sources */, - 1A8E1D2F3ECC4DE3F610673AB1D78555 /* ImageFormat.swift in Sources */, - E4CA7DA2E54159A3248272653CC13045 /* ImageModifier.swift in Sources */, - DA507BB1FF64ADC99E4884366FE5E0F5 /* ImagePrefetcher.swift in Sources */, - 2A288C9672207EE6C2ED48A750149F82 /* ImageProcessor.swift in Sources */, - 38886405E4DA4CBA623713C15E60F4C0 /* ImageProgressive.swift in Sources */, - A0A6F25AF725797F9AE437A55BEBE7F1 /* ImageTransition.swift in Sources */, - DFE9EE8E4E7904B3C6FC9CA93D21288C /* ImageView+Kingfisher.swift in Sources */, - 1D89F8F2B292938BC261325C6671BA34 /* Indicator.swift in Sources */, - 1F3F6BA7656A96A8F936B060A5AA0776 /* KF.swift in Sources */, - 640AD43C1B2D4699FEE5D502286B849C /* KFAnimatedImage.swift in Sources */, - 13D1D3F16488E8A4D26BBFFDC755C7EA /* KFImage.swift in Sources */, - D376EF6965F2ACFF2E4FB9D250CC8B2A /* KFImageOptions.swift in Sources */, - CF130CF9A91165178A9AFF8C87D08384 /* KFImageProtocol.swift in Sources */, - A8492C49603DA7C2390E9FDA4B9499DD /* KFImageRenderer.swift in Sources */, - 75A52E8C654053290F6151BCD924C2B8 /* KFOptionsSetter.swift in Sources */, - 2E6081BBF2FFECFC043F643ADAD03478 /* Kingfisher.swift in Sources */, - 0F3DE6D1B9BC6EEE33AF403E7326E372 /* Kingfisher-dummy.m in Sources */, - AE253A0B4A201F262F82B7B59F7A1891 /* KingfisherError.swift in Sources */, - 4280392F0C1A8CA1E7D9A999058FBC1E /* KingfisherManager.swift in Sources */, - 85BFC7FD921D6B8B1443D2F02F57F014 /* KingfisherOptionsInfo.swift in Sources */, - 12370C8A46151DE856FB3BCDF7F91C74 /* MemoryStorage.swift in Sources */, - 15037B67E3D417D320C6C363868D9EB9 /* NSButton+Kingfisher.swift in Sources */, - FB6DD70BDC3215D9F2196736CC24DB2A /* NSTextAttachment+Kingfisher.swift in Sources */, - 9758DCA2094A6B87298F52A226384154 /* Placeholder.swift in Sources */, - 788814E855CD1B034E66C4C573E16839 /* RedirectHandler.swift in Sources */, - 6A36FE82FB360C7505A3E1E008986855 /* RequestModifier.swift in Sources */, - 968B430C7F04A502B7B9D828071E1D38 /* Resource.swift in Sources */, - 45EC6E3F544F4AA78478328615A806AC /* Result.swift in Sources */, - 37F8C0C2E4E94C4A789603278695853E /* RetryStrategy.swift in Sources */, - 550439C83FC12BDE34794688302A4595 /* Runtime.swift in Sources */, - 0609D2613AC68FBF5B4831E9B721BA48 /* SessionDataTask.swift in Sources */, - 25BFC69C7DD8B3C00BBF4D60AE3E648F /* SessionDelegate.swift in Sources */, - 547A85F80B55B474AAF1E0FE9EB4D7A0 /* SizeExtensions.swift in Sources */, - 38D7981E1769F169D387B4F50F3FBB5B /* Source.swift in Sources */, - E4C58BBB77C8E7799549FDB642DAF14F /* Storage.swift in Sources */, - 9A2610A4608D548ED67DF02BF2633C24 /* String+MD5.swift in Sources */, - 79788A66EB2990390065B9E2C1879832 /* TVMonogramView+Kingfisher.swift in Sources */, - 9A30AB9B69D089D23E537BD0F1EC1CA4 /* UIButton+Kingfisher.swift in Sources */, - FBB4BA9075F2EA9997702F8BE809E58F /* WKInterfaceImage+Kingfisher.swift in Sources */, + CA9FCA30BB0E79E056313D288A3B4B90 /* AnimatedImageView.swift in Sources */, + 69C1697FAE31A0A229A9413337FEEEA8 /* AuthenticationChallengeResponsable.swift in Sources */, + E2DBDAAF9CBBA0681B7FC1AF25C79CE3 /* AVAssetImageDataProvider.swift in Sources */, + DBE6A9AAECE2C0E83137AEE80E9ACEC7 /* Box.swift in Sources */, + C74903149065D13501DC5BA65D99A32E /* CacheSerializer.swift in Sources */, + FF204011A02FA1AF98061F5BF89C4150 /* CallbackQueue.swift in Sources */, + 4F1E100F452462EFB0BC5EB1A4D984B5 /* CPListItem+Kingfisher.swift in Sources */, + E2B254EC390CF12A8ACF82974CFEEC7C /* Delegate.swift in Sources */, + D1EF24F68A1C5C4926F04BD298A084EC /* DiskStorage.swift in Sources */, + C0E245EAFFE14C7166A9B74002D0AE4B /* ExtensionHelpers.swift in Sources */, + 222F85B98CFDEAAFC423FFCC59A78323 /* Filter.swift in Sources */, + D05BAAD81E149C832F34E6B457B62151 /* FormatIndicatedCacheSerializer.swift in Sources */, + 816EA7189583F03F33F34A82F8DC5DD7 /* GIFAnimatedImage.swift in Sources */, + 3C3FFD24ECFA4DF9076393148904BE6D /* GraphicsContext.swift in Sources */, + CB8F8469C62C252D7039864C758AA5E9 /* Image.swift in Sources */, + 30D0A4975B4FE006D9865934ABD0F962 /* ImageBinder.swift in Sources */, + 7F41D5DCD847F1047E89968B26D1D97C /* ImageCache.swift in Sources */, + D41FE44ABD1C61058B0B6539DDC68B1B /* ImageContext.swift in Sources */, + DD00731F1E3E08C53815DFA9D8BF8FA5 /* ImageDataProcessor.swift in Sources */, + E792A078F03AEC2FC3FA8268B3241A99 /* ImageDataProvider.swift in Sources */, + 11DEDD3EDF89023F10C43B6300C1797C /* ImageDownloader.swift in Sources */, + 6BAB339D77940845A99643E7D9CF766B /* ImageDownloaderDelegate.swift in Sources */, + 4C39170CD39DC1A711788F5580660E7E /* ImageDrawing.swift in Sources */, + 93E45A28CD0E023A5C00C8B3793AA966 /* ImageFormat.swift in Sources */, + 993525E646E12EF6076D12A7A32C480E /* ImageModifier.swift in Sources */, + B58D8C5DDEB0945EAACDB7AB7299830A /* ImagePrefetcher.swift in Sources */, + 1CBF2555B3B20A75A1D076F53E5B5777 /* ImageProcessor.swift in Sources */, + 4AE7D1E7959A2372E3EBEFB749421054 /* ImageProgressive.swift in Sources */, + E3037B455AF3EAD52B62BD0C35D17358 /* ImageTransition.swift in Sources */, + E581ABE97ADE0B0F200E70D725B705A0 /* ImageView+Kingfisher.swift in Sources */, + AF2796992B1C2607560678BD611E135C /* Indicator.swift in Sources */, + BBA5955BEFE85FB869B134D0BB106DAC /* KF.swift in Sources */, + 8450C285FDE8CC4915F5F5385E17B4D3 /* KFAnimatedImage.swift in Sources */, + EB115AD24D8D6C4071EAFBBD099C5A80 /* KFImage.swift in Sources */, + F112654F66EA9C6FBA876FFBA021E907 /* KFImageOptions.swift in Sources */, + 7C7867D8CEDACD3F9738B0528925B5E9 /* KFImageProtocol.swift in Sources */, + 453D44F0B5CDC535CD00DE703EED4926 /* KFImageRenderer.swift in Sources */, + 8E4DA8851B93A469AF1535405071EF44 /* KFOptionsSetter.swift in Sources */, + 25F5CF6224F2AE53D14D07CB3BA32B78 /* Kingfisher.swift in Sources */, + B4A935C3E8221691C573AB0D43742075 /* Kingfisher-dummy.m in Sources */, + 3C423488DE058DA612FE101C4077E056 /* KingfisherError.swift in Sources */, + DC6BD858698947EB5AB4807B8593DB67 /* KingfisherManager.swift in Sources */, + 212BF896420769386E62A4E9AA92C181 /* KingfisherOptionsInfo.swift in Sources */, + B74A5B4854F49DB0AFCB498F0F6E27FC /* MemoryStorage.swift in Sources */, + 287215E73B86F7D5C6A6D37E6A760106 /* NSButton+Kingfisher.swift in Sources */, + 4DE585CDCD9A1FC6207ACE6EDD48E1A3 /* NSTextAttachment+Kingfisher.swift in Sources */, + FC1B36B9B21BF22647A0E2766F988614 /* Placeholder.swift in Sources */, + 1C77862B5B717B241DE707B07502939B /* RedirectHandler.swift in Sources */, + F26B8B1204E1F5E4AF7F15D37FA09155 /* RequestModifier.swift in Sources */, + 9E54E0223EE43BB437FA3C7DB5E9366C /* Resource.swift in Sources */, + CF707BFD6AAA4B4EE7A2CFFEA26D2F0D /* Result.swift in Sources */, + 6C6EDDA266A325C60B346D0D83303976 /* RetryStrategy.swift in Sources */, + 07E860B9E7CD7D1901470C4B09E1E923 /* Runtime.swift in Sources */, + 6E72A52D5F75706B69A43158536BF3A3 /* SessionDataTask.swift in Sources */, + 5C44AF1A8C75F36C9B34A44E3AE42F06 /* SessionDelegate.swift in Sources */, + 625490659A04B8483443FDBBA59991EF /* SizeExtensions.swift in Sources */, + F71879549BF9B6D4F02246AA48233667 /* Source.swift in Sources */, + 58F0762DCE6F52A3A17D9CB9FF038F5C /* Storage.swift in Sources */, + 2DAD217C629E49274D2D3449406FE872 /* String+MD5.swift in Sources */, + 13DEFDC3EC33E5169893AA67C9A0AF37 /* TVMonogramView+Kingfisher.swift in Sources */, + 029915B6755F0878994D16B204D60698 /* UIButton+Kingfisher.swift in Sources */, + 1ED5785CABEF14E7294B639F55CAF2EC /* WKInterfaceImage+Kingfisher.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2793,76 +2814,39 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 172AE4EACEA3BC34CA197E3ABBB32B3F /* PBXTargetDependency */ = { + 2AE22556946824250A5C8F749926E9CF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Kingfisher; + target = E8022D22FAA6690B5E1C379C1BCE1491 /* Kingfisher */; + targetProxy = 734EECDF3578E6D3AFFED985FEB46552 /* PBXContainerItemProxy */; + }; + 3F6CF18BBF6395D52AA6C4CE5A9F2DA0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = HXPhotoPicker; target = F8051AA643C524FA4E210DD0E6E62332 /* HXPhotoPicker */; - targetProxy = 74E77B384A311FEDFB1C98AD5D15DEC1 /* PBXContainerItemProxy */; + targetProxy = 6C6E0B173DBEBC7DECC0B6728D186424 /* PBXContainerItemProxy */; }; - 75CF6F57783FF7B3136E0F40C51365E6 /* PBXTargetDependency */ = { + 61FCFB711567CADBF80EB39861E1EE12 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Kingfisher; target = E8022D22FAA6690B5E1C379C1BCE1491 /* Kingfisher */; - targetProxy = A9341C3092F078B50B8BB56F91E803B9 /* PBXContainerItemProxy */; + targetProxy = 61650E0980D030A3EECE65295705AB9C /* PBXContainerItemProxy */; }; - A06C190DCF26756F4F2AC838AD2C5A0D /* PBXTargetDependency */ = { + 63541E2820210BCB2828010FDC10375E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Kingfisher; target = E8022D22FAA6690B5E1C379C1BCE1491 /* Kingfisher */; - targetProxy = 2253E1A98E39629400A605FD3A53D7B1 /* PBXContainerItemProxy */; + targetProxy = 132011D4B8408CFB6995ABD358F61892 /* PBXContainerItemProxy */; }; - BD9EA3FF42CD2C6947D663FF2F060E67 /* PBXTargetDependency */ = { + E2FE876EA712A75C6C6C20D232211530 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = HXPhotoPicker; target = F8051AA643C524FA4E210DD0E6E62332 /* HXPhotoPicker */; - targetProxy = 02D451159220541521403A575AFBA84F /* PBXContainerItemProxy */; - }; - D3EBFC3F6D8107E647E0CD0FC87AAFB2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Kingfisher; - target = E8022D22FAA6690B5E1C379C1BCE1491 /* Kingfisher */; - targetProxy = 8E7B6466B8CD3DFA5A1EC1FCFF108DC0 /* PBXContainerItemProxy */; + targetProxy = 8EE557DF662E06D9904E4A8FE5A61354 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 07E34BF446EBF6004D7193A7A58CDA63 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 51F1101C83AEE77604DA897196C340D9 /* Kingfisher.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - 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"; - GCC_PREFIX_HEADER = "Target Support Files/Kingfisher/Kingfisher-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Kingfisher/Kingfisher-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/Kingfisher/Kingfisher.modulemap"; - PRODUCT_MODULE_NAME = Kingfisher; - PRODUCT_NAME = Kingfisher; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 20DB2C745AF13EE6D56D1F320AD4AE2E /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9C4021DAD33D56FC6A0B9D58C2718818 /* Pods-HXPhotoPickerExample.release.xcconfig */; @@ -3005,9 +2989,9 @@ }; name = Debug; }; - 5C6E0A8BDBC5D257DCB7B86F2F833BE6 /* Release */ = { + 52FCDF5E1E4A5E10EBEE6FA825D7CD7F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 109B519331DB3859FD48580DD8AA3E21 /* HXPhotoPicker.release.xcconfig */; + baseConfigurationReference = 51F1101C83AEE77604DA897196C340D9 /* Kingfisher.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -3019,8 +3003,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/HXPhotoPicker/HXPhotoPicker-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/HXPhotoPicker/HXPhotoPicker-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Kingfisher/Kingfisher-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Kingfisher/Kingfisher-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -3028,11 +3012,12 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/HXPhotoPicker/HXPhotoPicker.modulemap"; - PRODUCT_MODULE_NAME = HXPhotoPicker; - PRODUCT_NAME = HXPhotoPicker; + MODULEMAP_FILE = "Target Support Files/Kingfisher/Kingfisher.modulemap"; + PRODUCT_MODULE_NAME = Kingfisher; + PRODUCT_NAME = Kingfisher; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; @@ -3179,9 +3164,45 @@ }; name = Debug; }; - BA3C46266D73257D0A52EC19A9D36498 /* Debug */ = { + C3490BE0BDDC8FC0414F2DDD5A7E6695 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A9C9F45D5B0C85FFAEC12CC1B0F89F9A /* HXPhotoPicker.debug.xcconfig */; + baseConfigurationReference = 647A1E17AB2571B588D0802392B7125A /* Kingfisher.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + 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"; + GCC_PREFIX_HEADER = "Target Support Files/Kingfisher/Kingfisher-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Kingfisher/Kingfisher-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/Kingfisher/Kingfisher.modulemap"; + PRODUCT_MODULE_NAME = Kingfisher; + PRODUCT_NAME = Kingfisher; + 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; + }; + C6D80D550CF0E617CB2728B6A6BC0009 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 109B519331DB3859FD48580DD8AA3E21 /* HXPhotoPicker.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -3209,14 +3230,15 @@ SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - FF2E039CE4E38B06EFC85749D7246790 /* Debug */ = { + C729D84DE2AC30D84408E18D9DF812EA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 647A1E17AB2571B588D0802392B7125A /* Kingfisher.debug.xcconfig */; + baseConfigurationReference = A9C9F45D5B0C85FFAEC12CC1B0F89F9A /* HXPhotoPicker.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -3228,8 +3250,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Kingfisher/Kingfisher-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Kingfisher/Kingfisher-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/HXPhotoPicker/HXPhotoPicker-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/HXPhotoPicker/HXPhotoPicker-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -3237,12 +3259,11 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Kingfisher/Kingfisher.modulemap"; - PRODUCT_MODULE_NAME = Kingfisher; - PRODUCT_NAME = Kingfisher; + MODULEMAP_FILE = "Target Support Files/HXPhotoPicker/HXPhotoPicker.modulemap"; + PRODUCT_MODULE_NAME = HXPhotoPicker; + PRODUCT_NAME = HXPhotoPicker; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; @@ -3253,29 +3274,29 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + 373EE2F1978F18999424C92C11686FD9 /* Build configuration list for PBXNativeTarget "HXPhotoPicker" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2B9E26EAE2CD392AD762421F663075A1 /* Debug */, - 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */, + C729D84DE2AC30D84408E18D9DF812EA /* Debug */, + C6D80D550CF0E617CB2728B6A6BC0009 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6FCB6084EEAADD5CA7C4EF6B0C2D790F /* Build configuration list for PBXNativeTarget "HXPhotoPicker" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - BA3C46266D73257D0A52EC19A9D36498 /* Debug */, - 5C6E0A8BDBC5D257DCB7B86F2F833BE6 /* Release */, + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */, + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B2535BA34267C7EF4012CADDE352489B /* Build configuration list for PBXNativeTarget "Kingfisher" */ = { + 5EBD875EE500FA44157B829CDF484472 /* Build configuration list for PBXNativeTarget "Kingfisher" */ = { isa = XCConfigurationList; buildConfigurations = ( - FF2E039CE4E38B06EFC85749D7246790 /* Debug */, - 07E34BF446EBF6004D7193A7A58CDA63 /* Release */, + C3490BE0BDDC8FC0414F2DDD5A7E6695 /* Debug */, + 52FCDF5E1E4A5E10EBEE6FA825D7CD7F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Sources/HXPhotoPicker/Camera/Config/CameraConfiguration.swift b/Sources/HXPhotoPicker/Camera/Config/CameraConfiguration.swift index b3069937..0705c45d 100644 --- a/Sources/HXPhotoPicker/Camera/Config/CameraConfiguration.swift +++ b/Sources/HXPhotoPicker/Camera/Config/CameraConfiguration.swift @@ -25,11 +25,9 @@ public struct CameraConfiguration: IndicatorTypeConfig { public var modalPresentationStyle: UIModalPresentationStyle /// If the built-in language is not enough, you can add a custom language text - /// PhotoManager.shared.customLanguages - custom language array - /// PhotoManager.shared.fixedCustomLanguage - If there are multiple custom languages, one can be fixed to display + /// customLanguages - custom language array /// 如果自带的语言不够,可以添加自定义的语言文字 - /// PhotoManager.shared.customLanguages - 自定义语言数组 - /// PhotoManager.shared.fixedCustomLanguage - 如果有多种自定义语言,可以固定显示某一种 + /// customLanguages - 自定义语言数组 public var languageType: LanguageType = .system { didSet { #if HXPICKER_ENABLE_EDITOR @@ -38,6 +36,12 @@ public struct CameraConfiguration: IndicatorTypeConfig { } } + /// 自定义语言 + public var customLanguages: [CustomLanguage] { + get { PhotoManager.shared.customLanguages } + set { PhotoManager.shared.customLanguages = newValue } + } + /// hide status bar /// 隐藏状态栏 public var prefersStatusBarHidden: Bool = true diff --git a/Sources/HXPhotoPicker/Camera/Controller/CameraViewController+Result.swift b/Sources/HXPhotoPicker/Camera/Controller/CameraViewController+Result.swift index d8ba0509..020084b3 100644 --- a/Sources/HXPhotoPicker/Camera/Controller/CameraViewController+Result.swift +++ b/Sources/HXPhotoPicker/Camera/Controller/CameraViewController+Result.swift @@ -34,7 +34,7 @@ extension CameraViewController: CameraResultViewControllerDelegate { let result = CameraController.Result.image(image) if config.isSaveSystemAlbum { navigationController?.view.hx.show() - AssetManager.save( + AssetSaveUtil.save( type: .image(image), location: location ) { @@ -63,7 +63,7 @@ extension CameraViewController: CameraResultViewControllerDelegate { let result = CameraController.Result.video(videoURL) if config.isSaveSystemAlbum { navigationController?.view.hx.show() - AssetManager.save( + AssetSaveUtil.save( type: .videoURL(videoURL), location: location ) { diff --git a/Sources/HXPhotoPicker/Camera/Controller/CameraViewController.swift b/Sources/HXPhotoPicker/Camera/Controller/CameraViewController.swift index 84571eed..df0285f3 100644 --- a/Sources/HXPhotoPicker/Camera/Controller/CameraViewController.swift +++ b/Sources/HXPhotoPicker/Camera/Controller/CameraViewController.swift @@ -92,7 +92,7 @@ open class CameraViewController: HXBaseViewController { } return } - AssetManager.requestCameraAccess { isGranted in + AssetPermissionsUtil.requestCameraAccess { isGranted in if isGranted { self.setupCamera() }else { @@ -286,7 +286,7 @@ open class CameraViewController: HXBaseViewController { ) } if UIImagePickerController.isSourceTypeAvailable(.camera) { - if !didLayoutPreview && AssetManager.cameraAuthorizationStatus() == .authorized { + if !didLayoutPreview && AssetPermissionsUtil.cameraAuthorizationStatus == .authorized { if config.cameraType == .metal { previewView.frame = previewRect }else { diff --git a/Sources/HXPhotoPicker/Core/Model/CustomLanguage.swift b/Sources/HXPhotoPicker/Core/Model/CustomLanguage.swift index 166f71a7..c0b145ee 100644 --- a/Sources/HXPhotoPicker/Core/Model/CustomLanguage.swift +++ b/Sources/HXPhotoPicker/Core/Model/CustomLanguage.swift @@ -1,22 +1,25 @@ -// // CustomLanguage.swift // HXPhotoPicker // // Created by Slience on 2021/1/7. +// Created by Silence on 2024/3/30. +// Copyright © 2024 Silence. All rights reserved. // import Foundation public class CustomLanguage { - /// 语言 + /// 会与 Locale.preferredLanguages 进行匹配,匹配成功的才会使用。请确保正确性 public let language: String - /// 语言文件路径 - public let path: String + /// 语言Bundle + public let bundle: Bundle - public init(language: String, - path: String) { + public init( + language: String, + bundle: Bundle + ) { self.language = language - self.path = path + self.bundle = bundle } } diff --git a/Sources/HXPhotoPicker/Core/Model/LanguageType.swift b/Sources/HXPhotoPicker/Core/Model/LanguageType.swift index 55c67ecf..2e69501a 100644 --- a/Sources/HXPhotoPicker/Core/Model/LanguageType.swift +++ b/Sources/HXPhotoPicker/Core/Model/LanguageType.swift @@ -7,31 +7,33 @@ import Foundation -public enum LanguageType: Int { +public enum LanguageType: Equatable { /// 跟随系统语言 - case system = 0 + case system /// 中文简体 - case simplifiedChinese = 1 + case simplifiedChinese /// 中文繁体 - case traditionalChinese = 2 + case traditionalChinese /// 日文 - case japanese = 3 + case japanese /// 韩文 - case korean = 4 + case korean /// 英文 - case english = 5 + case english /// 泰语 - case thai = 6 + case thai /// 印尼语 - case indonesia = 7 + case indonesia /// 越南语 - case vietnamese = 8 + case vietnamese /// 俄语 - case russian = 9 + case russian /// 德语 - case german = 10 + case german /// 法语 - case french = 11 + case french /// 阿拉伯 - case arabic = 12 + case arabic + + case custom(Bundle) } diff --git a/Sources/HXPhotoPicker/Core/Util/AssetManager.swift b/Sources/HXPhotoPicker/Core/Util/AssetManager.swift index 431b02b1..50447508 100644 --- a/Sources/HXPhotoPicker/Core/Util/AssetManager.swift +++ b/Sources/HXPhotoPicker/Core/Util/AssetManager.swift @@ -8,19 +8,8 @@ import UIKit import Photos -public struct AssetManager { - - public enum PhotoSaveType { - case image(UIImage) - case imageURL(URL) - case videoURL(URL) - case livePhoto(imageURL: URL, videoURL: URL) - } - public enum PhotoSaveError: Error { - case notDetermined - case phAssetIsNull - } +public struct AssetManager { /// 保存资源到系统相册 /// - Parameters: @@ -31,26 +20,17 @@ public struct AssetManager { @available(iOS 13.0.0, *) @discardableResult public static func save( - type: PhotoSaveType, + type: AssetSaveUtil.SaveType, customAlbumName: String? = nil, creationDate: Date = .init(), location: CLLocation? = nil ) async throws -> PHAsset { - try await withCheckedThrowingContinuation { continuation in - save( - type: type, - customAlbumName: customAlbumName, - creationDate: creationDate, - location: location - ) { result in - switch result { - case .success(let phAsset): - continuation.resume(returning: phAsset) - case .failure(let error): - continuation.resume(throwing: error) - } - } - } + try await AssetSaveUtil.save( + type: type, + customAlbumName: customAlbumName, + creationDate: creationDate, + location: location + ) } /// 保存资源到系统相册 @@ -61,135 +41,18 @@ public struct AssetManager { /// - location: 位置信息 /// - completion: 保存之后的结果 public static func save( - type: PhotoSaveType, + type: AssetSaveUtil.SaveType, customAlbumName: String? = nil, creationDate: Date = .init(), location: CLLocation? = nil, completion: @escaping (Result) -> Void ) { - var albumName: String? - if let customAlbumName = customAlbumName, customAlbumName.count > 0 { - albumName = customAlbumName - }else { - albumName = displayName - } - AssetManager.requestAuthorization { - switch $0 { - case .denied, .notDetermined, .restricted: - completion(.failure(PhotoSaveError.notDetermined)) - return - default: - break - } - DispatchQueue.global().async { - var placeholder: PHObjectPlaceholder? - do { - try PHPhotoLibrary.shared().performChangesAndWait { - var creationRequest: PHAssetCreationRequest? - switch type { - case .image(let image): - creationRequest = PHAssetCreationRequest.creationRequestForAsset( - from: image - ) - case .imageURL(let url): - creationRequest = PHAssetCreationRequest.creationRequestForAssetFromImage( - atFileURL: url - ) - case .videoURL(let url): - creationRequest = PHAssetCreationRequest.creationRequestForAssetFromVideo( - atFileURL: url - ) - case .livePhoto(let imageURL, let videoURL): - creationRequest = PHAssetCreationRequest.forAsset() - creationRequest?.addResource(with: .photo, fileURL: imageURL, options: nil) - creationRequest?.addResource(with: .pairedVideo, fileURL: videoURL, options: nil) - } - creationRequest?.creationDate = creationDate - creationRequest?.location = location - placeholder = creationRequest?.placeholderForCreatedAsset - } - if let placeholder = placeholder, - let phAsset = AssetManager.fetchAsset( - with: placeholder.localIdentifier - ) { - DispatchQueue.main.async { - completion(.success(phAsset)) - } - if let albumName = albumName, !albumName.isEmpty { - saveCustomAlbum(for: phAsset, albumName: albumName) - } - }else { - DispatchQueue.main.async { - completion(.failure(PhotoSaveError.phAssetIsNull)) - } - } - } catch { - DispatchQueue.main.async { - completion(.failure(error)) - } - } - } - } - } - - public static func createAssetCollection(for collectionName: String) -> PHAssetCollection? { - let collections = PHAssetCollection.fetchAssetCollections( - with: .album, - subtype: .albumRegular, - options: nil + AssetSaveUtil.save( + type: type, + customAlbumName: customAlbumName, + creationDate: creationDate, + location: location, + completion: completion ) - var assetCollection: PHAssetCollection? - collections.enumerateObjects { (collection, _, stop) in - if collection.localizedTitle == collectionName { - assetCollection = collection - stop.pointee = true - } - } - if assetCollection == nil { - do { - var createCollectionID: String? - try PHPhotoLibrary.shared().performChangesAndWait { - createCollectionID = PHAssetCollectionChangeRequest.creationRequestForAssetCollection( - withTitle: collectionName - ).placeholderForCreatedAssetCollection.localIdentifier - } - if let createCollectionID = createCollectionID { - assetCollection = PHAssetCollection.fetchAssetCollections( - withLocalIdentifiers: [createCollectionID], - options: nil - ).firstObject - } - }catch { - - } - } - return assetCollection - } - - private static var displayName: String { - if let displayName = Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String { - return displayName.count > 0 ? displayName : "PhotoPicker" - }else if let bundleName = Bundle.main.infoDictionary?[kCFBundleNameKey as String] as? String { - return bundleName.count > 0 ? bundleName : "PhotoPicker" - }else { - return "PhotoPicker" - } - } - - private static func saveCustomAlbum( - for asset: PHAsset, - albumName: String - ) { - guard let assetCollection = createAssetCollection(for: albumName) else { - return - } - try? PHPhotoLibrary.shared().performChangesAndWait { - PHAssetCollectionChangeRequest( - for: assetCollection - )?.insertAssets( - [asset] as NSFastEnumeration, - at: IndexSet.init(integer: 0) - ) - } } } diff --git a/Sources/HXPhotoPicker/Core/Util/AssetManager+Authorization.swift b/Sources/HXPhotoPicker/Core/Util/AssetPermissionsUtil.swift similarity index 76% rename from Sources/HXPhotoPicker/Core/Util/AssetManager+Authorization.swift rename to Sources/HXPhotoPicker/Core/Util/AssetPermissionsUtil.swift index 0169af89..42659bee 100644 --- a/Sources/HXPhotoPicker/Core/Util/AssetManager+Authorization.swift +++ b/Sources/HXPhotoPicker/Core/Util/AssetPermissionsUtil.swift @@ -1,23 +1,22 @@ // -// AssetManager+Authorization.swift +// AssetPermissionsUtil.swift // HXPhotoPicker // -// Created by Slience on 2020/12/29. -// Copyright © 2020 Silence. All rights reserved. +// Created by Silence on 2024/3/25. +// Copyright © 2024 Silence. All rights reserved. // import Photos -public extension AssetManager { +public struct AssetPermissionsUtil { /// 获取当前相册权限状态 /// - Returns: 权限状态 - static func authorizationStatus() -> PHAuthorizationStatus { + public static var authorizationStatus: PHAuthorizationStatus { let status: PHAuthorizationStatus if #available(iOS 14, *) { status = PHPhotoLibrary.authorizationStatus(for: .readWrite) } else { - // Fallback on earlier versions status = PHPhotoLibrary.authorizationStatus() } return status @@ -25,7 +24,7 @@ public extension AssetManager { /// 获取相机权限 /// - Parameter completionHandler: 获取结果 - static func requestCameraAccess( + public static func requestCameraAccess( completionHandler: @escaping (Bool) -> Void ) { #if !targetEnvironment(macCatalyst) @@ -44,18 +43,16 @@ public extension AssetManager { /// 当前相机权限状态 /// - Returns: 权限状态 #if !targetEnvironment(macCatalyst) - static func cameraAuthorizationStatus() -> AVAuthorizationStatus { + public static var cameraAuthorizationStatus: AVAuthorizationStatus { AVCaptureDevice.authorizationStatus(for: AVMediaType.video) } #endif /// 当前相册权限状态是否是Limited - static func authorizationStatusIsLimited() -> Bool { + public static var isLimitedAuthorizationStatus: Bool { #if !targetEnvironment(macCatalyst) - if #available(iOS 14, *) { - if authorizationStatus() == .limited { - return true - } + if #available(iOS 14, *), authorizationStatus == .limited { + return true } #endif return false @@ -64,10 +61,10 @@ public extension AssetManager { /// 请求获取相册权限 /// - Parameters: /// - handler: 请求权限完成 - static func requestAuthorization( + public static func requestAuthorization( with handler: @escaping (PHAuthorizationStatus) -> Void ) { - let status = authorizationStatus() + let status = authorizationStatus if status == PHAuthorizationStatus.notDetermined { if #available(iOS 14, *) { PHPhotoLibrary.requestAuthorization( diff --git a/Sources/HXPhotoPicker/Core/Util/AssetSaveUtil.swift b/Sources/HXPhotoPicker/Core/Util/AssetSaveUtil.swift new file mode 100644 index 00000000..d0d9730a --- /dev/null +++ b/Sources/HXPhotoPicker/Core/Util/AssetSaveUtil.swift @@ -0,0 +1,196 @@ +// +// AssetSaveUtil.swift +// HXPhotoPicker +// +// Created by Silence on 2024/3/25. +// Copyright © 2024 Silence. All rights reserved. +// + +import UIKit +import Photos + +public struct AssetSaveUtil { + + public enum SaveType { + case image(UIImage) + case imageURL(URL) + case videoURL(URL) + case livePhoto(imageURL: URL, videoURL: URL) + } + + public enum SaveError: Error { + case notDetermined + case phAssetIsNull + } + + /// 保存资源到系统相册 + /// - Parameters: + /// - type: 保存类型 + /// - customAlbumName: 需要保存到自定义相册的名称,默认BundleName + /// - creationDate: 创建时间,默认当前时间 + /// - location: 位置信息 + @available(iOS 13.0.0, *) + @discardableResult + public static func save( + type: SaveType, + customAlbumName: String? = nil, + creationDate: Date = .init(), + location: CLLocation? = nil + ) async throws -> PHAsset { + try await withCheckedThrowingContinuation { continuation in + save( + type: type, + customAlbumName: customAlbumName, + creationDate: creationDate, + location: location + ) { result in + switch result { + case .success(let phAsset): + continuation.resume(returning: phAsset) + case .failure(let error): + continuation.resume(throwing: error) + } + } + } + } + + /// 保存资源到系统相册 + /// - Parameters: + /// - type: 保存类型 + /// - customAlbumName: 需要保存到自定义相册的名称,默认BundleName + /// - creationDate: 创建时间,默认当前时间 + /// - location: 位置信息 + /// - completion: 保存之后的结果 + public static func save( + type: SaveType, + customAlbumName: String? = nil, + creationDate: Date = .init(), + location: CLLocation? = nil, + completion: @escaping (Result) -> Void + ) { + var albumName: String? + if let customAlbumName = customAlbumName, customAlbumName.count > 0 { + albumName = customAlbumName + }else { + albumName = displayName + } + AssetPermissionsUtil.requestAuthorization { + switch $0 { + case .denied, .notDetermined, .restricted: + completion(.failure(SaveError.notDetermined)) + return + default: + break + } + DispatchQueue.global().async { + var placeholder: PHObjectPlaceholder? + do { + try PHPhotoLibrary.shared().performChangesAndWait { + var creationRequest: PHAssetCreationRequest? + switch type { + case .image(let image): + creationRequest = PHAssetCreationRequest.creationRequestForAsset( + from: image + ) + case .imageURL(let url): + creationRequest = PHAssetCreationRequest.creationRequestForAssetFromImage( + atFileURL: url + ) + case .videoURL(let url): + creationRequest = PHAssetCreationRequest.creationRequestForAssetFromVideo( + atFileURL: url + ) + case .livePhoto(let imageURL, let videoURL): + creationRequest = PHAssetCreationRequest.forAsset() + creationRequest?.addResource(with: .photo, fileURL: imageURL, options: nil) + creationRequest?.addResource(with: .pairedVideo, fileURL: videoURL, options: nil) + } + creationRequest?.creationDate = creationDate + creationRequest?.location = location + placeholder = creationRequest?.placeholderForCreatedAsset + } + if let placeholder = placeholder, + let phAsset = AssetManager.fetchAsset( + with: placeholder.localIdentifier + ) { + DispatchQueue.main.async { + completion(.success(phAsset)) + } + if let albumName = albumName, !albumName.isEmpty { + saveCustomAlbum(for: phAsset, albumName: albumName) + } + }else { + DispatchQueue.main.async { + completion(.failure(SaveError.phAssetIsNull)) + } + } + } catch { + DispatchQueue.main.async { + completion(.failure(error)) + } + } + } + } + } + + public static func createAssetCollection(for collectionName: String) -> PHAssetCollection? { + let collections = PHAssetCollection.fetchAssetCollections( + with: .album, + subtype: .albumRegular, + options: nil + ) + var assetCollection: PHAssetCollection? + collections.enumerateObjects { (collection, _, stop) in + if collection.localizedTitle == collectionName { + assetCollection = collection + stop.pointee = true + } + } + if assetCollection == nil { + do { + var createCollectionID: String? + try PHPhotoLibrary.shared().performChangesAndWait { + createCollectionID = PHAssetCollectionChangeRequest.creationRequestForAssetCollection( + withTitle: collectionName + ).placeholderForCreatedAssetCollection.localIdentifier + } + if let createCollectionID = createCollectionID { + assetCollection = PHAssetCollection.fetchAssetCollections( + withLocalIdentifiers: [createCollectionID], + options: nil + ).firstObject + } + }catch { + + } + } + return assetCollection + } + + private static var displayName: String { + if let displayName = Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String { + return displayName.count > 0 ? displayName : "PhotoPicker" + }else if let bundleName = Bundle.main.infoDictionary?[kCFBundleNameKey as String] as? String { + return bundleName.count > 0 ? bundleName : "PhotoPicker" + }else { + return "PhotoPicker" + } + } + + private static func saveCustomAlbum( + for asset: PHAsset, + albumName: String + ) { + guard let assetCollection = createAssetCollection(for: albumName) else { + return + } + try? PHPhotoLibrary.shared().performChangesAndWait { + PHAssetCollectionChangeRequest( + for: assetCollection + )?.insertAssets( + [asset] as NSFastEnumeration, + at: IndexSet.init(integer: 0) + ) + } + } +} diff --git a/Sources/HXPhotoPicker/Core/Util/PhotoManager+Language.swift b/Sources/HXPhotoPicker/Core/Util/PhotoManager+Language.swift index 01baf256..993574c3 100644 --- a/Sources/HXPhotoPicker/Core/Util/PhotoManager+Language.swift +++ b/Sources/HXPhotoPicker/Core/Util/PhotoManager+Language.swift @@ -18,11 +18,10 @@ extension PhotoManager { if bundle == nil { createBundle() } - if self.languageType != languageType || isCustomLanguage { + if self.languageType != languageType { // 与上次语言不一致,重新创建 languageBundle = nil } - isCustomLanguage = false if languageBundle == nil { let language: String switch languageType { @@ -50,21 +49,19 @@ extension PhotoManager { language = "fr" case .arabic: language = "ar" + case .custom(let bundle): + language = "" + languageBundle = bundle default: - if let fixedLanguage = fixedCustomLanguage { - isCustomLanguage = true - languageBundle = Bundle(path: fixedLanguage.path) - return languageBundle - } - for customLanguage in customLanguages - where Locale.preferredLanguages.contains(customLanguage.language) { - isCustomLanguage = true - languageBundle = Bundle(path: customLanguage.path) - return languageBundle + for customLanguage in customLanguages { + for preferredLanguage in Locale.preferredLanguages where preferredLanguage.hasPrefix(customLanguage.language) { + languageBundle = customLanguage.bundle + return languageBundle + } } language = languageStr } - if let path = bundle?.path(forResource: language, ofType: "lproj") { + if !language.isEmpty, let path = bundle?.path(forResource: language, ofType: "lproj") { languageBundle = Bundle(path: path) } self.languageType = languageType diff --git a/Sources/HXPhotoPicker/Core/Util/PhotoManager.swift b/Sources/HXPhotoPicker/Core/Util/PhotoManager.swift index d067fee8..5d27928d 100644 --- a/Sources/HXPhotoPicker/Core/Util/PhotoManager.swift +++ b/Sources/HXPhotoPicker/Core/Util/PhotoManager.swift @@ -20,10 +20,6 @@ public final class PhotoManager: NSObject { /// 自定义语言 public var customLanguages: [CustomLanguage] = [] - /// 当配置的 languageType 都不匹配时才会判断自定义语言 - /// 固定的自定义语言,不会受系统语言影响 - public var fixedCustomLanguage: CustomLanguage? - /// 当前是否处于暗黑模式 public class var isDark: Bool { if shared.appearanceStyle == .normal { @@ -51,8 +47,6 @@ public final class PhotoManager: NSObject { /// 自带的bundle文件 var bundle: Bundle? - /// 是否使用了自定义的语言 - var isCustomLanguage: Bool = false /// 加载指示器类型 var indicatorType: IndicatorType = .system diff --git a/Sources/HXPhotoPicker/Core/Util/TextManager.swift b/Sources/HXPhotoPicker/Core/Util/TextManager.swift index d7e76fdc..7ca160ff 100644 --- a/Sources/HXPhotoPicker/Core/Util/TextManager.swift +++ b/Sources/HXPhotoPicker/Core/Util/TextManager.swift @@ -20,6 +20,7 @@ public extension HX { public var picker: Picker = .init() /// 相机 public var camera: Camera = .init() + public var cameraNotAuthorized: CameraNotAuthorized = .init() #endif @@ -57,6 +58,35 @@ public extension HX.TextManager { public var navigationCancelTitle: TextType = .localized("取消") public var navigationCancelTitleFont: UIFont = HXPickerWrapper.mediumPingFang(ofSize: 17) + /// 所有相册 + public var albumCameraRollTitle: TextType = .localized("HXAlbumCameraRoll") + /// 全景照片 + public var albumPanoramasTitle: TextType = .localized("HXAlbumPanoramas") + /// 视频 + public var albumVideosTitle: TextType = .localized("HXAlbumVideos") + /// 个人收藏 + public var albumFavoritesTitle: TextType = .localized("HXAlbumFavorites") + /// 延时摄影 + public var albumTimelapsesTitle: TextType = .localized("HXAlbumTimelapses") + /// 最近项目 + public var albumRecentsTitle: TextType = .localized("HXAlbumRecents") + /// 最近添加 + public var albumRecentlyAddedTitle: TextType = .localized("HXAlbumRecentlyAdded") + /// 连拍快照 + public var albumBurstsTitle: TextType = .localized("HXAlbumBursts") + /// 慢动作 + public var albumSlomoVideosTitle: TextType = .localized("HXAlbumSlomoVideos") + /// 自拍 + public var albumSelfPortraitsTitle: TextType = .localized("HXAlbumSelfPortraits") + /// 屏幕快照 + public var albumScreenshotsTitle: TextType = .localized("HXAlbumScreenshots") + /// 人像 + public var albumDepthEffectTitle: TextType = .localized("HXAlbumDepthEffect") + /// 实况照片 + public var albumLivePhotosTitle: TextType = .localized("HXAlbumLivePhotos") + /// 动图 + public var albumAnimatedTitle: TextType = .localized("HXAlbumAnimated") + public var photoTogetherSelectHudTitle: TextType = .localized("照片和视频不能同时选择") public var videoTogetherSelectHudTitle: TextType = .localized("视频和照片不能同时选择") public var maximumSelectedPhotoHudTitle: TextType = .localized("最多只能选择%d张照片") @@ -336,3 +366,37 @@ public extension HX.TextManager { #endif } +extension HX.TextManager.TextType: Codable { + enum CodingKeys: CodingKey { + case localized + case custom + case error + } + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + if let text = try? container.decode(String.self, forKey: .localized) { + self = .localized(text) + return + } + if let text = try? container.decode(String.self, forKey: .custom) { + self = .custom(text) + return + } + throw DecodingError.dataCorruptedError( + forKey: CodingKeys.error, + in: container, + debugDescription: "Invalid type" + ) + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + switch self { + case .localized(let text): + try container.encode(text, forKey: .localized) + case .custom(let text): + try container.encode(text, forKey: .custom) + } + } +} + diff --git a/Sources/HXPhotoPicker/Core/View/ImageView.swift b/Sources/HXPhotoPicker/Core/View/ImageView.swift index 4fc2bac9..b26be435 100644 --- a/Sources/HXPhotoPicker/Core/View/ImageView.swift +++ b/Sources/HXPhotoPicker/Core/View/ImageView.swift @@ -9,106 +9,68 @@ import UIKit #if canImport(Kingfisher) import Kingfisher +typealias HXImageView = AnimatedImageView +#else +typealias HXImageView = GIFImageView #endif -final class ImageView: UIView { - var imageView: UIImageView! - var image: UIImage? { - get { - my.image - } - set { - setImage(newValue, animated: false) - } - } - - #if canImport(Kingfisher) - var my: AnimatedImageView { - imageView as! AnimatedImageView - } - #else - var my: GIFImageView { - imageView as! GIFImageView - } - #endif +final class ImageView: HXImageView { init() { super.init(frame: .zero) - #if canImport(Kingfisher) - imageView = AnimatedImageView.init() - #else - imageView = GIFImageView.init() - #endif - imageView.contentMode = .scaleAspectFill - imageView.clipsToBounds = true - addSubview(imageView) - } - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - override func layoutSubviews() { - super.layoutSubviews() - imageView.frame = bounds + contentMode = .scaleAspectFill + clipsToBounds = true } func setImage(_ image: UIImage?, animated: Bool) { if let image = image { - my.image = image + self.image = image if animated { let transition: CATransition = .init() transition.type = .fade transition.duration = 0.2 transition.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) - my.layer.add(transition, forKey: nil) + layer.add(transition, forKey: nil) } } } - func setImage(_ img: UIImage?) { - #if canImport(Kingfisher) - if let img = img { - let image: KFCrossPlatformImage? = DefaultImageProcessor.default.process(item: .image(img), options: .init([])) - my.image = image - }else { - my.image = img - } - #else - my.image = img - #endif - } - func setImageData(_ imageData: Data?) { #if canImport(Kingfisher) guard let imageData = imageData else { - my.image = nil + image = nil return } let image: KFCrossPlatformImage? = DefaultImageProcessor.default.process(item: .data(imageData), options: .init([])) - my.image = image + self.image = image #else guard let imageData = imageData else { - my.gifImage = nil + gifImage = nil return } let image: GIFImage? = .init(data: imageData) - my.gifImage = image + gifImage = image #endif } func startAnimatedImage() { #if canImport(Kingfisher) - my.startAnimating() + startAnimating() #else - my.setupDisplayLink() + setupDisplayLink() #endif } func stopAnimatedImage() { #if canImport(Kingfisher) - my.stopAnimating() + stopAnimating() #else - my.displayLink?.invalidate() - my.gifImage = nil + displayLink?.invalidate() + gifImage = nil #endif } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } } diff --git a/Sources/HXPhotoPicker/Core/View/ProgressHUD/ProgressHUD.swift b/Sources/HXPhotoPicker/Core/View/ProgressHUD/ProgressHUD.swift index b750924f..2e0ec063 100644 --- a/Sources/HXPhotoPicker/Core/View/ProgressHUD/ProgressHUD.swift +++ b/Sources/HXPhotoPicker/Core/View/ProgressHUD/ProgressHUD.swift @@ -450,11 +450,8 @@ final class ProgressHUD: UIView { afterDelay: TimeInterval ) { guard let view = view else { return } - for subView in view.subviews { - guard let hud = subView as? ProgressHUD else { - continue - } - hud.hide( + for case let subView as ProgressHUD in view.subviews { + subView.hide( withAnimated: animated, afterDelay: afterDelay ) diff --git a/Sources/HXPhotoPicker/Editor+View/Util/EditorDrawTool.swift b/Sources/HXPhotoPicker/Editor+View/Util/EditorDrawTool.swift index ca84d760..c7d5f121 100644 --- a/Sources/HXPhotoPicker/Editor+View/Util/EditorDrawTool.swift +++ b/Sources/HXPhotoPicker/Editor+View/Util/EditorDrawTool.swift @@ -36,7 +36,7 @@ public class EditorDrawTool { var splinePoints: [CGPoint] = [] guard controlPoints.count >= 4 else { - print("需要至少4个点来生成Catmull-Rom曲线") + HXLog("需要至少4个点来生成Catmull-Rom曲线") return splinePoints } diff --git a/Sources/HXPhotoPicker/Editor+View/View/EditorStickersView.swift b/Sources/HXPhotoPicker/Editor+View/View/EditorStickersView.swift index 45bfc10b..5aafdd9d 100644 --- a/Sources/HXPhotoPicker/Editor+View/View/EditorStickersView.swift +++ b/Sources/HXPhotoPicker/Editor+View/View/EditorStickersView.swift @@ -357,20 +357,18 @@ class EditorStickersView: UIView, EditorStickersItemViewDelegate { } func removeSticker(at itemView: EditorStickersItemBaseView) { - for subView in subviews where subView is EditorStickersItemView { - if subView == itemView { - if subView == selectView { - deselectedSticker() - } - subView.removeFromSuperview() - break + for case let subView as EditorStickersItemView in subviews where subView == itemView { + if subView == selectView { + deselectedSticker() } + subView.removeFromSuperview() + break } } func removeAllSticker() { deselectedSticker() - for subView in subviews where subView is EditorStickersItemView { + for case let subView as EditorStickersItemView in subviews { subView.removeFromSuperview() } } diff --git a/Sources/HXPhotoPicker/Editor/Config/EditorConfiguration.swift b/Sources/HXPhotoPicker/Editor/Config/EditorConfiguration.swift index dcf6f16a..decce9d2 100644 --- a/Sources/HXPhotoPicker/Editor/Config/EditorConfiguration.swift +++ b/Sources/HXPhotoPicker/Editor/Config/EditorConfiguration.swift @@ -22,13 +22,17 @@ public struct EditorConfiguration: IndicatorTypeConfig { public var modalPresentationStyle: UIModalPresentationStyle /// If the built-in language is not enough, you can add a custom language text - /// PhotoManager.shared.customLanguages - custom language array - /// PhotoManager.shared.fixedCustomLanguage - If there are multiple custom languages, one can be fixed to display + /// customLanguages - custom language array /// 如果自带的语言不够,可以添加自定义的语言文字 - /// PhotoManager.shared.customLanguages - 自定义语言数组 - /// PhotoManager.shared.fixedCustomLanguage - 如果有多种自定义语言,可以固定显示某一种 + /// customLanguages - 自定义语言数组 public var languageType: LanguageType = .system + /// 自定义语言 + public var customLanguages: [CustomLanguage] { + get { PhotoManager.shared.customLanguages } + set { PhotoManager.shared.customLanguages = newValue } + } + /// hide status bar /// 隐藏状态栏 public var prefersStatusBarHidden: Bool = true @@ -268,7 +272,7 @@ public extension EditorConfiguration { /// default fixed ratio /// 默认固定比例 - /// ``` + /// ```swift /// /// Leave `aspectRatios` empty if you don't want other ratios at the bottom /// /// 如果不想要底部其他的比例请将`aspectRatios`置空 /// aspectRatios = [] @@ -292,7 +296,7 @@ public extension EditorConfiguration { /// 宽高比数组默认选择的下标 /// 选中不代表默认就是对应的宽高比 /// isRoundCrop = true 时无效 - /// ``` + /// ```swift /// // If you want the default corresponding aspect ratio also set `aspectRatio` /// // 如果想要默认对应的宽高比也要设置 `aspectRatio` /// var cropSize = CropSize() @@ -409,6 +413,9 @@ public extension EditorConfiguration { /// 涂抹的宽度 public var smearWidth: CGFloat = 30 + /// 当滤镜发生改变时更改马赛克背景 + public var isFilterApply: Bool = true + /// Hide texture view while drawing /// 绘制时隐藏贴图视图 public var isHideStickersDuringDrawing: Bool = true diff --git a/Sources/HXPhotoPicker/Editor/Controller/EditorViewController+Await.swift b/Sources/HXPhotoPicker/Editor/Controller/EditorViewController+Await.swift index 50707f27..8aad44cd 100644 --- a/Sources/HXPhotoPicker/Editor/Controller/EditorViewController+Await.swift +++ b/Sources/HXPhotoPicker/Editor/Controller/EditorViewController+Await.swift @@ -23,6 +23,7 @@ public extension EditorViewController { } @MainActor + @discardableResult static func show( _ asset: EditorAsset, config: EditorConfiguration = .init(), diff --git a/Sources/HXPhotoPicker/Editor/Controller/EditorViewController+Filters.swift b/Sources/HXPhotoPicker/Editor/Controller/EditorViewController+Filters.swift index 0ea63e18..e0ac9334 100644 --- a/Sources/HXPhotoPicker/Editor/Controller/EditorViewController+Filters.swift +++ b/Sources/HXPhotoPicker/Editor/Controller/EditorViewController+Filters.swift @@ -57,7 +57,7 @@ extension EditorViewController: EditorFiltersViewDelegate { checkFinishButtonState() return } - if let image = originalImage { + if let image = originalImage, config.mosaic.isFilterApply { editorView.updateImage(image) if let mosaicImage = selectedMosaicImage { editorView.mosaicCGImage = mosaicImage @@ -103,6 +103,9 @@ extension EditorViewController: EditorFiltersViewDelegate { DispatchQueue.main.async { self.editorView.updateImage(image) } + if !self.config.mosaic.isFilterApply { + return + } if let mosaicImage = newImage.applyMosaic(level: self.config.mosaic.mosaicWidth) { let mosaicResultImage = self.imageFilterContext.createCGImage( mosaicImage, @@ -150,7 +153,7 @@ extension EditorViewController: EditorFiltersViewDelegate { func filterView(_ filterView: EditorFiltersView, didSelectedParameter filter: PhotoEditorFilter, at index: Int) { filterParameterView.type = .filter - filterParameterView.title = filter.filterName.localized + filterParameterView.title = filter.filterName.text filterParameterView.models = filter.parameters showFilterParameterView() } @@ -224,6 +227,9 @@ extension EditorViewController: EditorFilterParameterViewDelegate { DispatchQueue.main.async { self.editorView.updateImage(resultImage) } + if !self.config.mosaic.isFilterApply { + return + } var mosaicImage: CIImage? if self.mosaicToolView.canUndo { mosaicImage = newImage.applyMosaic(level: self.config.mosaic.mosaicWidth) @@ -351,6 +357,9 @@ extension EditorViewController: EditorFilterParameterViewDelegate { DispatchQueue.main.async { self.editorView.updateImage(resultImage) } + if !self.config.mosaic.isFilterApply { + return + } var mosaicImage: CGImage? if self.mosaicToolView.canUndo { if let mosaic_Image = newImage.applyMosaic(level: self.config.mosaic.mosaicWidth) { @@ -368,34 +377,42 @@ extension EditorViewController: EditorFilterParameterViewDelegate { } } }else { - if !self.filterEditFator.isApply { + guard let ciImage = ciImage else { DispatchQueue.main.async { self.editorView.updateImage(self.selectedOriginalImage) } return } - if let ciImage = ciImage, - let cgImage = self.imageFilterContext.createCGImage(ciImage, from: ciImage.extent) { - let resultImage = UIImage(cgImage: cgImage) - if operation.isCancelled { return } - DispatchQueue.main.async { - self.editorView.updateImage(resultImage) - } - var mosaicImage: CGImage? - if self.mosaicToolView.canUndo { - if let mosaic_Image = ciImage.applyMosaic(level: self.config.mosaic.mosaicWidth) { - mosaicImage = self.imageFilterContext.createCGImage( - mosaic_Image, - from: mosaic_Image.extent - ) - } - } - if let mosaicImage = mosaicImage { + if self.filterEditFator.isApply { + if let cgImage = self.imageFilterContext.createCGImage(ciImage, from: ciImage.extent) { + let resultImage = UIImage(cgImage: cgImage) if operation.isCancelled { return } DispatchQueue.main.async { - self.editorView.mosaicCGImage = mosaicImage + self.editorView.updateImage(resultImage) } } + }else { + DispatchQueue.main.async { + self.editorView.updateImage(self.selectedOriginalImage) + } + } + if !self.config.mosaic.isFilterApply { + return + } + var mosaicImage: CGImage? + if self.mosaicToolView.canUndo { + if let mosaic_Image = ciImage.applyMosaic(level: self.config.mosaic.mosaicWidth) { + mosaicImage = self.imageFilterContext.createCGImage( + mosaic_Image, + from: mosaic_Image.extent + ) + } + } + if let mosaicImage = mosaicImage { + if operation.isCancelled { return } + DispatchQueue.main.async { + self.editorView.mosaicCGImage = mosaicImage + } } } } diff --git a/Sources/HXPhotoPicker/Editor/Model/PhotoEditorFilter.swift b/Sources/HXPhotoPicker/Editor/Model/PhotoEditorFilter.swift index 41f374e9..2abcee94 100644 --- a/Sources/HXPhotoPicker/Editor/Model/PhotoEditorFilter.swift +++ b/Sources/HXPhotoPicker/Editor/Model/PhotoEditorFilter.swift @@ -18,7 +18,7 @@ public typealias VideoEditorFilterHandler = (CIImage, [PhotoEditorFilterParamete public struct PhotoEditorFilterInfo { /// 滤镜名称 - public let filterName: String + public let filterName: HX.TextManager.TextType /// 滤镜处理器,内部会传入未添加滤镜的图片,返回添加滤镜之后的图片 /// 如果为视频编辑器时,处理的是底部滤镜预览的数据 @@ -31,7 +31,7 @@ public struct PhotoEditorFilterInfo { public let parameters: [PhotoEditorFilterParameter] public init( - filterName: String, + filterName: HX.TextManager.TextType, parameters: [PhotoEditorFilterParameter] = [], filterHandler: @escaping PhotoEditorFilterHandler, videoFilterHandler: VideoEditorFilterHandler? = nil @@ -65,7 +65,7 @@ public struct PhotoEditorFilterParameter: Codable { public class PhotoEditorFilter: Equatable, Codable { /// 滤镜名称 - public let filterName: String + public let filterName: HX.TextManager.TextType /// 滤镜列表的下标 public var sourceIndex: Int = 0 /// 标识符 @@ -74,7 +74,7 @@ public class PhotoEditorFilter: Equatable, Codable { public let parameters: [PhotoEditorFilterParameterInfo] public init( - filterName: String, + filterName: HX.TextManager.TextType, identifier: String = "hx_editor_default", parameters: [PhotoEditorFilterParameterInfo] = [] ) { diff --git a/Sources/HXPhotoPicker/Editor/Util/Editor+PhotoTools.swift b/Sources/HXPhotoPicker/Editor/Util/Editor+PhotoTools.swift index 68da3b85..8d773e72 100644 --- a/Sources/HXPhotoPicker/Editor/Util/Editor+PhotoTools.swift +++ b/Sources/HXPhotoPicker/Editor/Util/Editor+PhotoTools.swift @@ -67,22 +67,22 @@ extension PhotoTools { var filters: [PhotoEditorFilterInfo] = [] filters.append(contentsOf: [ PhotoEditorFilterInfo( - filterName: "唯美" + filterName: .localized("唯美") ) { image, _, _, _ in nashvilleFilter(image) }, PhotoEditorFilterInfo( - filterName: "梦幻" + filterName: .localized("梦幻") ) { (image, _, _, _) in toasterFilter(image) }, PhotoEditorFilterInfo( - filterName: "1977" + filterName: .custom("1977") ) { (image, _, _, _) in apply1977Filter(image) }, PhotoEditorFilterInfo( - filterName: "怀旧" + filterName: .localized("怀旧") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectInstant", @@ -90,7 +90,7 @@ extension PhotoTools { ) }, PhotoEditorFilterInfo( - filterName: "岁月" + filterName: .localized("岁月") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectTransfer", @@ -98,13 +98,13 @@ extension PhotoTools { ) }, PhotoEditorFilterInfo( - filterName: "模糊", + filterName: .localized("模糊"), parameters: [.init(defaultValue: 0.2)], filterHandler: { image, _, parameters, isCover in image.blurredImage(isCover ? 10 : 50 * parameters[0].value) }), PhotoEditorFilterInfo( - filterName: "褪色" + filterName: .localized("褪色") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectFade", @@ -112,7 +112,7 @@ extension PhotoTools { ) }, PhotoEditorFilterInfo( - filterName: "冲印" + filterName: .localized("冲印") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectProcess", @@ -120,7 +120,7 @@ extension PhotoTools { ) }, PhotoEditorFilterInfo( - filterName: "铬黄" + filterName: .localized("铬黄") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectChrome", @@ -128,13 +128,13 @@ extension PhotoTools { ) }, PhotoEditorFilterInfo( - filterName: "老电影", + filterName: .localized("老电影"), parameters: [.init(defaultValue: 1)], filterHandler: { image, _, parameters, isCover in return oldMovie(image, value: isCover ? 1 : parameters[0].value) }), PhotoEditorFilterInfo( - filterName: "色调" + filterName: .localized("色调") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectTonal", @@ -142,7 +142,7 @@ extension PhotoTools { ) }, PhotoEditorFilterInfo( - filterName: "单色" + filterName: .localized("单色") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectMono", @@ -150,7 +150,7 @@ extension PhotoTools { ) }, PhotoEditorFilterInfo( - filterName: "黑白" + filterName: .localized("黑白") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectNoir", @@ -164,28 +164,28 @@ extension PhotoTools { public static func defaultVideoFilters() -> [PhotoEditorFilterInfo] { [ PhotoEditorFilterInfo( - filterName: "唯美" + filterName: .localized("唯美") ) { (image, _, _, _) in nashvilleFilter(image) } videoFilterHandler: { ciImage, _ in nashvilleFilter(ciImage) }, PhotoEditorFilterInfo( - filterName: "梦幻" + filterName: .localized("梦幻") ) { (image, _, _, _) in toasterFilter(image) } videoFilterHandler: { ciImage, _ in toasterFilter(ciImage) }, PhotoEditorFilterInfo( - filterName: "1977" + filterName: .custom("1977") ) { (image, _, _, _) in apply1977Filter(image) } videoFilterHandler: { ciImage, _ in apply1977Filter(ciImage) }, PhotoEditorFilterInfo( - filterName: "怀旧" + filterName: .localized("怀旧") ) { image, _, _, _ in image.filter( name: "CIPhotoEffectInstant", @@ -195,7 +195,7 @@ extension PhotoTools { ciImage.filter(name: "CIPhotoEffectInstant", parameters: [:]) }, PhotoEditorFilterInfo( - filterName: "岁月" + filterName: .localized("岁月") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectTransfer", @@ -205,7 +205,7 @@ extension PhotoTools { ciImage.filter(name: "CIPhotoEffectTransfer", parameters: [:]) }, PhotoEditorFilterInfo( - filterName: "模糊", + filterName: .localized("模糊"), parameters: [.init(defaultValue: 0.2)], filterHandler: { image, _, _, _ in return image.blurredImage(10) @@ -216,7 +216,7 @@ extension PhotoTools { ) }), PhotoEditorFilterInfo( - filterName: "褪色" + filterName: .localized("褪色") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectFade", @@ -226,7 +226,7 @@ extension PhotoTools { ciImage.filter(name: "CIPhotoEffectFade", parameters: [:]) }, PhotoEditorFilterInfo( - filterName: "冲印" + filterName: .localized("冲印") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectProcess", @@ -236,7 +236,7 @@ extension PhotoTools { ciImage.filter(name: "CIPhotoEffectProcess", parameters: [:]) }, PhotoEditorFilterInfo( - filterName: "铬黄" + filterName: .localized("铬黄") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectChrome", @@ -246,7 +246,7 @@ extension PhotoTools { ciImage.filter(name: "CIPhotoEffectChrome", parameters: [:]) }, PhotoEditorFilterInfo( - filterName: "老电影", + filterName: .localized("老电影"), parameters: [.init(defaultValue: 1)], filterHandler: { image, _, _, _ in oldMovie(image, value: 1) @@ -254,7 +254,7 @@ extension PhotoTools { oldMovie($0, value: $1[0].value) }), PhotoEditorFilterInfo( - filterName: "色调" + filterName: .localized("色调") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectTonal", @@ -264,7 +264,7 @@ extension PhotoTools { ciImage.filter(name: "CIPhotoEffectTonal", parameters: [:]) }, PhotoEditorFilterInfo( - filterName: "单色" + filterName: .localized("单色") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectMono", @@ -274,7 +274,7 @@ extension PhotoTools { ciImage.filter(name: "CIPhotoEffectMono", parameters: [:]) }, PhotoEditorFilterInfo( - filterName: "黑白" + filterName: .localized("黑白") ) { (image, _, _, _) in image.filter( name: "CIPhotoEffectNoir", diff --git a/Sources/HXPhotoPicker/Editor/View/Chartlet/EditorChartletPreviewView.swift b/Sources/HXPhotoPicker/Editor/View/Chartlet/EditorChartletPreviewView.swift index 4aed8dbc..c15410e2 100644 --- a/Sources/HXPhotoPicker/Editor/View/Chartlet/EditorChartletPreviewView.swift +++ b/Sources/HXPhotoPicker/Editor/View/Chartlet/EditorChartletPreviewView.swift @@ -45,7 +45,7 @@ class EditorChartletPreviewView: UIView { super.init(frame: .zero) setupFrame(imageSize: CGSize(width: 200, height: 200)) initViews() - imageView.my.kf.indicatorType = .activity + imageView.kf.indicatorType = .activity let options: KingfisherOptionsInfo if imageURL.isGif && editorType == .video { options = [] @@ -61,7 +61,7 @@ class EditorChartletPreviewView: UIView { .backgroundDecode ] } - imageView.my.kf.setImage( + imageView.kf.setImage( with: imageURL, options: options ) { [weak self] result in diff --git a/Sources/HXPhotoPicker/Editor/View/Chartlet/EditorChartletViewCell.swift b/Sources/HXPhotoPicker/Editor/View/Chartlet/EditorChartletViewCell.swift index 4e9dbb86..594cc8d7 100644 --- a/Sources/HXPhotoPicker/Editor/View/Chartlet/EditorChartletViewCell.swift +++ b/Sources/HXPhotoPicker/Editor/View/Chartlet/EditorChartletViewCell.swift @@ -60,8 +60,8 @@ class EditorChartletViewCell: UICollectionViewCell { imageView.image = image downloadCompletion = true }else if let url = url { - imageView.my.kf.indicatorType = .activity - (imageView.my.kf.indicator?.view as? UIActivityIndicatorView)?.color = .white + imageView.kf.indicatorType = .activity + (imageView.kf.indicator?.view as? UIActivityIndicatorView)?.color = .white let processor = DownsamplingImageProcessor( size: CGSize( width: width * 2, @@ -78,7 +78,7 @@ class EditorChartletViewCell: UICollectionViewCell { .backgroundDecode ] } - imageView.my.kf.setImage( + imageView.kf.setImage( with: url, options: options ) { [weak self] result in @@ -106,7 +106,7 @@ class EditorChartletViewCell: UICollectionViewCell { selectedBgView.layer.masksToBounds = true contentView.addSubview(selectedBgView) imageView = ImageView() - imageView.imageView.contentMode = .scaleAspectFit + imageView.contentMode = .scaleAspectFit contentView.addSubview(imageView) } override func layoutSubviews() { diff --git a/Sources/HXPhotoPicker/Editor/View/Filter/EditorFiltersView.swift b/Sources/HXPhotoPicker/Editor/View/Filter/EditorFiltersView.swift index 350b1b6e..412e0ed3 100644 --- a/Sources/HXPhotoPicker/Editor/View/Filter/EditorFiltersView.swift +++ b/Sources/HXPhotoPicker/Editor/View/Filter/EditorFiltersView.swift @@ -122,7 +122,7 @@ class EditorFiltersView: UIView { let filterInfos = filterConfig.infos filters = [] let originalFilter = PhotoEditorFilter( - filterName: isVideo ? .textManager.editor.filter.originalVideoTitle.text : .textManager.editor.filter.originalPhotoTitle.text + filterName: isVideo ? HX.textManager.editor.filter.originalVideoTitle : HX.textManager.editor.filter.originalPhotoTitle ) originalFilter.isOriginal = true if selectedIndex == 0 { @@ -374,7 +374,7 @@ class EditorFiltersViewCell: UICollectionViewCell { } func updateFilter() { - filterNameLb.text = filter.filterName.localized + filterNameLb.text = filter.filterName.text if !filter.isOriginal { imageView.image = delegate?.filterViewCell(fetchFilter: self) } diff --git a/Sources/HXPhotoPicker/Picker/Config/PickerConfiguration.swift b/Sources/HXPhotoPicker/Picker/Config/PickerConfiguration.swift index 082b2a70..bdb7da1e 100644 --- a/Sources/HXPhotoPicker/Picker/Config/PickerConfiguration.swift +++ b/Sources/HXPhotoPicker/Picker/Config/PickerConfiguration.swift @@ -28,16 +28,24 @@ public struct PickerConfiguration: IndicatorTypeConfig, PickerDebugLogsConfig { /// Selector display style, effective when albumShowMode = .popup and fullscreen popup /// 选择器展示样式,当 albumShowMode = .popup 并且全屏弹出时有效 /// rightSwipe: 是否允许右滑手势返回。与微信右滑手势返回一致 + /// ```swift + /// /// 如果返回过程中没有显示背景视图,请将fromVC传入 + /// config.pickerPresentStyle = .present(rightSwipe: .init(50, viewControlls: [FromVC.self])) + /// ``` public var pickerPresentStyle: PickerPresentStyle = .present() /// If the built-in language is not enough, you can add a custom language text - /// PhotoManager.shared.customLanguages - custom language array - /// PhotoManager.shared.fixedCustomLanguage - If there are multiple custom languages, one can be fixed to display + /// customLanguages - custom language array /// 如果自带的语言不够,可以添加自定义的语言文字 - /// PhotoManager.shared.customLanguages - 自定义语言数组 - /// PhotoManager.shared.fixedCustomLanguage - 如果有多种自定义语言,可以固定显示某一种 + /// customLanguages - 自定义语言数组 public var languageType: LanguageType = .system + /// 自定义语言 + public var customLanguages: [CustomLanguage] { + get { PhotoManager.shared.customLanguages } + set { PhotoManager.shared.customLanguages = newValue } + } + /// Appearance style /// 外观风格 public var appearanceStyle: AppearanceStyle = .varied diff --git a/Sources/HXPhotoPicker/Picker/Controller/Browser/PhotoBrowser.swift b/Sources/HXPhotoPicker/Picker/Controller/Browser/PhotoBrowser.swift index 8d8f269f..d4895d2c 100644 --- a/Sources/HXPhotoPicker/Picker/Controller/Browser/PhotoBrowser.swift +++ b/Sources/HXPhotoPicker/Picker/Controller/Browser/PhotoBrowser.swift @@ -308,6 +308,7 @@ open class PhotoBrowser: PhotoPickerController { previewConfig.previewView = pConfig previewConfig.languageType = config.languageType + previewConfig.customLanguages = config.customLanguages previewConfig.navigationTintColor = config.tintColor previewConfig.modalPresentationStyle = config.modalPresentationStyle @@ -473,13 +474,15 @@ extension PhotoBrowser { public struct Configuration { /// If the built-in language is not enough, you can add a custom language text - /// PhotoManager.shared.customLanguages - custom language array - /// PhotoManager.shared.fixedCustomLanguage - If there are multiple custom languages, one can be fixed to display + /// customLanguages - custom language array /// 如果自带的语言不够,可以添加自定义的语言文字 /// PhotoManager.shared.customLanguages - 自定义语言数组 - /// PhotoManager.shared.fixedCustomLanguage - 如果有多种自定义语言,可以固定显示某一种 public var languageType: LanguageType = .system - + /// 自定义语言 + public var customLanguages: [CustomLanguage] { + get { PhotoManager.shared.customLanguages } + set { PhotoManager.shared.customLanguages = newValue } + } /// 导航栏 删除、取消 按钮颜色 public var tintColor: UIColor = .white /// 网络视频加载方式 diff --git a/Sources/HXPhotoPicker/Picker/Controller/Photo/PhotoPickerController+PHPhotoLibrary.swift b/Sources/HXPhotoPicker/Picker/Controller/Photo/PhotoPickerController+PHPhotoLibrary.swift index f39a1aad..07d9da68 100644 --- a/Sources/HXPhotoPicker/Picker/Controller/Photo/PhotoPickerController+PHPhotoLibrary.swift +++ b/Sources/HXPhotoPicker/Picker/Controller/Photo/PhotoPickerController+PHPhotoLibrary.swift @@ -12,7 +12,7 @@ import Photos extension PhotoPickerController: PHPhotoLibraryChangeObserver { public func photoLibraryDidChange(_ changeInstance: PHChange) { - if !AssetManager.authorizationStatusIsLimited() || !config.allowLoadPhotoLibrary { + if !AssetPermissionsUtil.isLimitedAuthorizationStatus || !config.allowLoadPhotoLibrary { return } var needReload = false diff --git a/Sources/HXPhotoPicker/Picker/Controller/Photo/PhotoPickerController.swift b/Sources/HXPhotoPicker/Picker/Controller/Photo/PhotoPickerController.swift index 5144d3d4..619b1679 100644 --- a/Sources/HXPhotoPicker/Picker/Controller/Photo/PhotoPickerController.swift +++ b/Sources/HXPhotoPicker/Picker/Controller/Photo/PhotoPickerController.swift @@ -106,7 +106,7 @@ open class PhotoPickerController: UINavigationController { public func getCurrentPreviewImageView() -> UIImageView? { if let previewVC = previewViewController, let cell = previewVC.getCell(for: previewVC.currentPreviewIndex) { - return cell.scrollContentView.imageView.imageView + return cell.scrollContentView.imageView } return nil } @@ -236,7 +236,7 @@ open class PhotoPickerController: UINavigationController { public override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() - let status = AssetManager.authorizationStatus() + let status = AssetPermissionsUtil.authorizationStatus if status.rawValue >= 1 && status.rawValue < 3 { if let view = splitViewController?.view { deniedView.frame = view.bounds @@ -583,7 +583,7 @@ extension PhotoPickerController { fetchData.fetchCameraAssetCollection() return } - let status = AssetManager.authorizationStatus() + let status = AssetPermissionsUtil.authorizationStatus if status.rawValue >= 3 { // 有权限 PHPhotoLibrary.shared().register(self) @@ -606,7 +606,7 @@ extension PhotoPickerController { }else { // 用户还没做出选择,请求权限 isFirstAuthorization = true - AssetManager.requestAuthorization { _ in + AssetPermissionsUtil.requestAuthorization { _ in self.requestAuthorization() if self.config.albumShowMode.isPop { self.pickerViewController?.initToolbar() diff --git a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerListViewController.swift b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerListViewController.swift index ab3d9229..175f98e8 100644 --- a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerListViewController.swift +++ b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerListViewController.swift @@ -531,7 +531,7 @@ extension PhotoPickerListViewController: UICollectionViewDelegate { isCameraCell = sCell is PickerCameraViewCell if isCameraCell { if !UIImagePickerController.isSourceTypeAvailable(.camera) || - AssetManager.cameraAuthorizationStatus() != .authorized { + AssetPermissionsUtil.cameraAuthorizationStatus != .authorized { return nil } } diff --git a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+AlbumView.swift b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+AlbumView.swift index c15725d1..052cb340 100644 --- a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+AlbumView.swift +++ b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+AlbumView.swift @@ -118,7 +118,7 @@ extension PhotoPickerViewController: PhotoAlbumListDelegate { func getAlbumViewHeight() -> CGFloat { var albumViewHeight = CGFloat(albumView.assetCollections.count) * pickerConfig.albumList.cellHeight - if AssetManager.authorizationStatusIsLimited() && + if AssetPermissionsUtil.isLimitedAuthorizationStatus && pickerConfig.allowLoadPhotoLibrary { albumViewHeight += 40 } diff --git a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+Camera.swift b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+Camera.swift index de8d1032..97a27b8b 100644 --- a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+Camera.swift +++ b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+Camera.swift @@ -198,12 +198,12 @@ extension PhotoPickerViewController: UIImagePickerControllerDelegate, UINavigati ) } func saveSystemAlbum( - type: AssetManager.PhotoSaveType, + type: AssetSaveUtil.SaveType, location: CLLocation? = nil, isCapture: Bool = false, completion: (() -> Void)? = nil ) { - AssetManager.save( + AssetSaveUtil.save( type: type, customAlbumName: config.customAlbumName, location: location @@ -296,7 +296,7 @@ extension PhotoPickerViewController: CameraControllerDelegate { ) let pickerController = pickerController DispatchQueue.global().async { - let saveType: AssetManager.PhotoSaveType + let saveType: AssetSaveUtil.SaveType let photoAsset: PhotoAsset switch result { case .image(let image): diff --git a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+FetchAsset.swift b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+FetchAsset.swift index c876ce97..87c72ab2 100644 --- a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+FetchAsset.swift +++ b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+FetchAsset.swift @@ -63,7 +63,7 @@ extension PhotoPickerViewController { }else { ProgressHUD.hide(forView: self.navigationController?.view, animated: false) } - if AssetManager.authorizationStatusIsLimited() { + if AssetPermissionsUtil.isLimitedAuthorizationStatus { if self.pickerConfig.isRemoveSelectedAssetWhenRemovingAssets { self.photoToolbar.selectedAssetDidChanged(self.pickerController.selectedAssetArray) self.photoToolbar.updateSelectedAssets(self.pickerController.selectedAssetArray) diff --git a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+Toolbar.swift b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+Toolbar.swift index a2931162..b90a391f 100644 --- a/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+Toolbar.swift +++ b/Sources/HXPhotoPicker/Picker/Controller/Picker/PhotoPickerViewController+Toolbar.swift @@ -10,7 +10,7 @@ import UIKit extension PhotoPickerViewController: PhotoToolBarDelegate { func initToolbar() { - if AssetManager.authorizationStatus() == .notDetermined { + if AssetPermissionsUtil.authorizationStatus == .notDetermined { photoToolbar = PhotoToolBarEmptyView(pickerConfig, type: .picker) return } diff --git a/Sources/HXPhotoPicker/Picker/Extension/Picker+PhotoAsset.swift b/Sources/HXPhotoPicker/Picker/Extension/Picker+PhotoAsset.swift index 91766119..204d8997 100644 --- a/Sources/HXPhotoPicker/Picker/Extension/Picker+PhotoAsset.swift +++ b/Sources/HXPhotoPicker/Picker/Extension/Picker+PhotoAsset.swift @@ -22,7 +22,7 @@ public extension PhotoAsset { completion?(.failure(AssetError.localLivePhotoIsEmpty)) return } - AssetManager.save( + AssetSaveUtil.save( type: .livePhoto(imageURL: livePhoto.imageURL, videoURL: livePhoto.videoURL), customAlbumName: albumName ) { @@ -39,8 +39,8 @@ public extension PhotoAsset { } return } - func save(_ type: AssetManager.PhotoSaveType) { - AssetManager.save( + func save(_ type: AssetSaveUtil.SaveType) { + AssetSaveUtil.save( type: type, customAlbumName: albumName ) { @@ -133,6 +133,7 @@ public extension PhotoAsset { /// 获取iCloud状态 /// - Parameter completion: 是否在iCloud上 /// - Returns: 请求ID + @discardableResult func requestICloudState(completion: @escaping (PhotoAsset, Bool) -> Void) -> PHImageRequestID? { guard let phAsset = phAsset, downloadStatus != .succeed else { @@ -251,6 +252,33 @@ public extension PhotoAsset { } } +@available(iOS 13.0, *) +public extension PhotoAsset { + + /// 保存到系统相册 + @discardableResult + func saveAlbum(_ albumName: String? = nil) async throws -> PHAsset { + try await withCheckedThrowingContinuation { continuation in + saveToSystemAlbum(albumName: albumName) { result in + switch result { + case .success(let phAsset): + continuation.resume(returning: phAsset) + case .failure(let error): + continuation.resume(throwing: error) + } + } + } + } + + func inIClound() async -> Bool { + await withCheckedContinuation { continuation in + requestICloudState { _, inIClound in + continuation.resume(returning: inIClound) + } + } + } +} + extension LocalLivePhotoAsset { var jpgURL: URL { diff --git a/Sources/HXPhotoPicker/Picker/Extension/Picker+UIImageView.swift b/Sources/HXPhotoPicker/Picker/Extension/Picker+UIImageView.swift index 4fd6ddfa..a10466fb 100644 --- a/Sources/HXPhotoPicker/Picker/Extension/Picker+UIImageView.swift +++ b/Sources/HXPhotoPicker/Picker/Extension/Picker+UIImageView.swift @@ -14,6 +14,7 @@ import Kingfisher extension UIImageView { #if canImport(Kingfisher) + typealias ImageCompletion = (UIImage?, KingfisherError?, PhotoAsset) -> Void // swiftlint:disable function_body_length @discardableResult func setImage( @@ -311,41 +312,41 @@ extension UIImageView { #endif } -extension ImageView { - - #if canImport(Kingfisher) - typealias ImageCompletion = (UIImage?, KingfisherError?, PhotoAsset) -> Void - - @discardableResult - func setImage( - for asset: PhotoAsset, - urlType: DonwloadURLType, - forciblyOriginal: Bool = false, - progressBlock: DownloadProgressBlock? = nil, - downloadTask: ((Kingfisher.DownloadTask?) -> Void)? = nil, - completionHandler: ImageCompletion? = nil - ) -> Any? { - imageView.setImage( - for: asset, - urlType: urlType, - forciblyOriginal: forciblyOriginal, - progressBlock: progressBlock, - downloadTask: downloadTask, - completionHandler: completionHandler - ) - } - #else - @discardableResult - func setVideoCoverImage( - for asset: PhotoAsset, - imageGenerator: ((AVAssetImageGenerator) -> Void)? = nil, - completionHandler: ((UIImage?, PhotoAsset) -> Void)? = nil - ) -> Any? { - imageView.setVideoCoverImage( - for: asset, - imageGenerator: imageGenerator, - completionHandler: completionHandler - ) - } - #endif -} +//extension ImageView { +// +// #if canImport(Kingfisher) +// typealias ImageCompletion = (UIImage?, KingfisherError?, PhotoAsset) -> Void +// +// @discardableResult +// func setImage( +// for asset: PhotoAsset, +// urlType: DonwloadURLType, +// forciblyOriginal: Bool = false, +// progressBlock: DownloadProgressBlock? = nil, +// downloadTask: ((Kingfisher.DownloadTask?) -> Void)? = nil, +// completionHandler: ImageCompletion? = nil +// ) -> Any? { +// imageView.setImage( +// for: asset, +// urlType: urlType, +// forciblyOriginal: forciblyOriginal, +// progressBlock: progressBlock, +// downloadTask: downloadTask, +// completionHandler: completionHandler +// ) +// } +// #else +// @discardableResult +// func setVideoCoverImage( +// for asset: PhotoAsset, +// imageGenerator: ((AVAssetImageGenerator) -> Void)? = nil, +// completionHandler: ((UIImage?, PhotoAsset) -> Void)? = nil +// ) -> Any? { +// imageView.setVideoCoverImage( +// for: asset, +// imageGenerator: imageGenerator, +// completionHandler: completionHandler +// ) +// } +// #endif +//} diff --git a/Sources/HXPhotoPicker/Picker/Model/LocalAsset.swift b/Sources/HXPhotoPicker/Picker/Model/LocalAsset/LocalAsset.swift similarity index 100% rename from Sources/HXPhotoPicker/Picker/Model/LocalAsset.swift rename to Sources/HXPhotoPicker/Picker/Model/LocalAsset/LocalAsset.swift diff --git a/Sources/HXPhotoPicker/Picker/Model/NetworkAsset.swift b/Sources/HXPhotoPicker/Picker/Model/LocalAsset/NetworkAsset.swift similarity index 100% rename from Sources/HXPhotoPicker/Picker/Model/NetworkAsset.swift rename to Sources/HXPhotoPicker/Picker/Model/LocalAsset/NetworkAsset.swift diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset.swift deleted file mode 100644 index 1db211c2..00000000 --- a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset.swift +++ /dev/null @@ -1,750 +0,0 @@ -// -// PhotoAsset.swift -// HXPhotoPickerSwift -// -// Created by Silence on 2020/11/12. -// Copyright © 2020 Silence. All rights reserved. -// - -import UIKit -import Photos -#if canImport(Kingfisher) -import Kingfisher -#endif - -public typealias PhotoAssetICloudHandler = (PhotoAsset, PHImageRequestID) -> Void -public typealias PhotoAssetProgressHandler = (PhotoAsset, Double) -> Void -public typealias PhotoAssetFailureHandler = (PhotoAsset, [AnyHashable: Any]?, AssetError) -> Void - -open class PhotoAsset: Equatable, PhotoAssetEquatable { - - /// 系统相册里的资源 - public var phAsset: PHAsset? { didSet { setMediaType() } } - - /// 媒体类型 - public var mediaType: MediaType = .photo - - /// 媒体子类型 - public var mediaSubType: MediaSubType = .image - - #if HXPICKER_ENABLE_EDITOR - /// 编辑之后的数据 - public var editedResult: EditedResult? { didSet { pFileSize = nil } } - var initialEditedResult: EditedResult? - - /// 图片编辑结果 - public var photoEditedResult: ImageEditedResult? { - guard let editedResult = editedResult else { - return nil - } - switch editedResult { - case .image(let result, _): - return result - default: - return nil - } - } - /// 视频编辑结果 - public var videoEditedResult: VideoEditedResult? { - guard let editedResult = editedResult else { - return nil - } - switch editedResult { - case .video(let result, _): - return result - default: - return nil - } - } - #endif - - /// 原图 - /// 如果为网络图片时,获取的是缩略地址的图片,也可能为nil - /// 如果为网络视频,则为nil - public var originalImage: UIImage? { getOriginalImage() } - - /// 图片/视频文件大小 - /// 1000 = 1kb - /// 1000000 = 1Mb - public var fileSize: Int { getFileSize() } - - /// 视频时长 格式:00:00 - public var videoTime: String? { - #if HXPICKER_ENABLE_EDITOR - if let videoEdit = videoEditedResult { - return videoEdit.videoTime - } - #endif - return pVideoTime - } - - /// 视频时长 秒 - public var videoDuration: TimeInterval { - #if HXPICKER_ENABLE_EDITOR - if let videoEdit = videoEditedResult { - return videoEdit.videoDuration - } - #endif - return pVideoDuration - } - - /// 当前资源是否被选中 - public var isSelected: Bool = false - - /// 选中时的下标 - public var selectIndex: Int = 0 - - /// 图片/视频尺寸大小 - public var imageSize: CGSize { getImageSize() } - - /// 是否是 gif - public var isGifAsset: Bool { mediaSubType.isGif } - - /// 是否是本地 Asset - public var isLocalAsset: Bool { mediaSubType.isLocal } - - /// 是否是网络 Asset - public var isNetworkAsset: Bool { mediaSubType.isNetwork } - - /// 根据系统相册里对应的 PHAsset 数据初始化 - /// - Parameter asset: 系统相册里对应的 PHAsset 数据 - public init(asset: PHAsset) { - self.phAsset = asset - setMediaType() - } - - public convenience init(_ asset: PHAsset) { - self.init(asset: asset) - } - - /// 根据系统相册里对应的 PHAsset本地唯一标识符 初始化 - /// - Parameter localIdentifier: 系统相册里对应的 PHAsset本地唯一标识符 - public init(localIdentifier: String) { - phAsset = AssetManager.fetchAsset(with: localIdentifier) - setMediaType() - } - - public convenience init(_ localIdentifier: String) { - self.init(localIdentifier: localIdentifier) - } - - /// 本地图片 - public var localImageAsset: LocalImageAsset? - - /// 初始化本地图片 - /// - Parameters: - /// - localImageAsset: 对应本地图片的 LocalImageAsset - public init(localImageAsset: LocalImageAsset) { - self.localImageAsset = localImageAsset - mediaType = .photo - if let imageData = localImageAsset.imageData { - mediaSubType = imageData.isGif ? .localGifImage : .localImage - }else if let imageURL = localImageAsset.imageURL { - mediaSubType = imageURL.isGif ? .localGifImage : .localImage - }else { - mediaSubType = .localImage - } - } - - public convenience init(_ localImageAsset: LocalImageAsset) { - self.init(localImageAsset: localImageAsset) - } - - /// 本地视频 - public var localVideoAsset: LocalVideoAsset? - - /// 初始化本地视频 - /// - Parameters: - /// - localVideoAsset: 对应本地视频的 LocalVideoAsset - public init(localVideoAsset: LocalVideoAsset) { - let videoDuration: TimeInterval - if localVideoAsset.duration == 0 { - videoDuration = PhotoTools.getVideoDuration(videoURL: localVideoAsset.videoURL) - }else { - videoDuration = localVideoAsset.duration - } - pVideoTime = PhotoTools.transformVideoDurationToString(duration: videoDuration) - pVideoDuration = videoDuration - self.localVideoAsset = localVideoAsset - mediaType = .video - mediaSubType = .localVideo - } - - public convenience init(_ localVideoAsset: LocalVideoAsset) { - self.init(localVideoAsset: localVideoAsset) - } - - /// 本地LivePhoto - public var localLivePhoto: LocalLivePhotoAsset? - - /// 初始化本地LivePhoto - public init(localLivePhoto: LocalLivePhotoAsset) { - mediaType = .photo - mediaSubType = .localLivePhoto - self.localLivePhoto = localLivePhoto - } - - public convenience init(_ localLivePhoto: LocalLivePhotoAsset) { - self.init(localLivePhoto: localLivePhoto) - } - - /// 本地/网络Asset的唯一标识符 - public private(set) var localAssetIdentifier: String = UUID().uuidString - - #if canImport(Kingfisher) - /// 初始化网络图片 - /// - Parameter networkImageAsset: 对应网络图片的 NetworkImageAsset - public init(networkImageAsset: NetworkImageAsset) { - self.networkImageAsset = networkImageAsset - mediaType = .photo - let isGif = networkImageAsset.originalURL?.isGif ?? false - mediaSubType = .networkImage(isGif) - } - - public convenience init(_ networkImageAsset: NetworkImageAsset) { - self.init(networkImageAsset: networkImageAsset) - } - - /// 网络图片 - public var networkImageAsset: NetworkImageAsset? - - var localImageType: DonwloadURLType = .thumbnail - - var loadNetworkImageHandler: ((((PhotoAsset) -> Void)?) -> Void)? - #endif - - /// 网络视频 - public var networkVideoAsset: NetworkVideoAsset? - - /// 初始化网络视频 - /// - Parameter networkVideoAsset: 对应网络视频的 NetworkVideoAsset - public init(networkVideoAsset: NetworkVideoAsset) { - self.networkVideoAsset = networkVideoAsset - mediaType = .video - mediaSubType = .networkVideo - if networkVideoAsset.duration > 0 { - pVideoDuration = networkVideoAsset.duration - pVideoTime = PhotoTools.transformVideoDurationToString(duration: networkVideoAsset.duration) - } - } - - public convenience init(_ networkVideoAsset: NetworkVideoAsset) { - self.init(networkVideoAsset: networkVideoAsset) - } - - /// iCloud下载状态,确定不在iCloud上的为 .succeed - public var downloadStatus: DownloadStatus = .unknow - - /// iCloud下载进度,如果取消了会记录上次进度 - public var downloadProgress: Double = 0 - - var localIndex: Int = 0 - var pFileSize: Int? - var pVideoTime: String? - var pVideoDuration: TimeInterval = 0 - var playerTime: CGFloat = 0 - var isScrolling = false - - var identifie: String { - if let phAsset = phAsset { - return phAsset.localIdentifier - } - return localAssetIdentifier - } - - public static func == (lhs: PhotoAsset, rhs: PhotoAsset) -> Bool { - lhs.isEqual(rhs) - } -} - -// MARK: Self-use -extension PhotoAsset { - - var cameraAsset: PhotoAsset? { - var photoAsset: PhotoAsset? - if mediaType == .photo { - if let localImageAsset = localImageAsset { - photoAsset = PhotoAsset(localImageAsset: localImageAsset) - } - }else { - if let localVideoAsset = localVideoAsset { - photoAsset = PhotoAsset(localVideoAsset: localVideoAsset) - } - } - photoAsset?.localAssetIdentifier = localAssetIdentifier - photoAsset?.localIndex = localIndex - return photoAsset - } - - func setMediaType() { - guard let phAsset = phAsset else { - return - } - if phAsset.mediaType == .image { - mediaType = .photo - mediaSubType = .image - }else if phAsset.mediaType == .video { - mediaType = .video - mediaSubType = .video - pVideoDuration = phAsset.duration - pVideoTime = PhotoTools.transformVideoDurationToString(duration: TimeInterval(round(phAsset.duration))) - } - } - - func updateVideoDuration(_ duration: TimeInterval) { - pVideoDuration = duration - pVideoTime = PhotoTools.transformVideoDurationToString(duration: duration) - } - func getOriginalImage() -> UIImage? { - #if HXPICKER_ENABLE_EDITOR - if editedResult != nil { - return getEditedImage() - } - #endif - guard let phAsset = phAsset else { - if mediaType == .photo { - if let livePhoto = localLivePhoto { - if livePhoto.imageURL.isFileURL { - return UIImage(contentsOfFile: livePhoto.imageURL.path) - }else { - #if canImport(Kingfisher) - if ImageCache.default.isCached(forKey: livePhoto.imageURL.cacheKey) { - return ImageCache.default.retrieveImageInMemoryCache( - forKey: livePhoto.imageURL.cacheKey, - options: [] - ) - } - #endif - return nil - } - } - if let image = localImageAsset?.image { - return image - }else if let imageURL = localImageAsset?.imageURL { - let image = UIImage(contentsOfFile: imageURL.path) - localImageAsset?.image = image - } - return localImageAsset?.image - }else { - checkLoaclVideoImage() - return localVideoAsset?.image - } - } - let options = PHImageRequestOptions.init() - options.isSynchronous = true - options.isNetworkAccessAllowed = true - options.deliveryMode = .highQualityFormat - if mediaSubType == .imageAnimated { - options.version = .original - } - var originalImage: UIImage? - let isGif = phAsset.isImageAnimated - AssetManager.requestImageData(for: phAsset, options: options) { (result) in - switch result { - case .success(let dataResult): - let image = UIImage(data: dataResult.imageData)?.normalizedImage() - if isGif && self.mediaSubType != .imageAnimated { - if let data = PhotoTools.getImageData(for: image) { - originalImage = UIImage(data: data) - } - }else { - originalImage = image - } - default: - break - } - } - return originalImage - } - func getImageSize() -> CGSize { - let defaultSize: CGSize = .init(width: 200, height: 200) - #if HXPICKER_ENABLE_EDITOR - if let photoEdit = photoEditedResult { - return photoEdit.image.size - } - if let videoEdit = videoEditedResult { - return videoEdit.coverImage?.size ?? defaultSize - } - #endif - let size: CGSize - if let phAsset = phAsset { - if phAsset.pixelWidth == 0 || phAsset.pixelHeight == 0 { - size = defaultSize - }else { - size = CGSize(width: phAsset.pixelWidth, height: phAsset.pixelHeight) - } - }else { - if let localImage = localImageAsset?.image { - size = localImage.size - }else if let localImageData = localImageAsset?.imageData, - let image = UIImage(data: localImageData) { - size = image.size - }else if let imageURL = localImageAsset?.imageURL, - let image = UIImage(contentsOfFile: imageURL.path) { - localImageAsset?.image = image - size = image.size - }else if let localVideoAsset = localVideoAsset { - if !localVideoAsset.videoSize.equalTo(.zero) { - size = localVideoAsset.videoSize - }else if let localImage = localVideoAsset.image { - size = localImage.size - }else { - let image = PhotoTools.getVideoThumbnailImage(videoURL: localVideoAsset.videoURL, atTime: 0.1) - self.localVideoAsset?.image = image - size = image?.size ?? defaultSize - } - }else if let networkVideo = networkVideoAsset { - if !networkVideo.videoSize.equalTo(.zero) { - size = networkVideo.videoSize - }else if let image = networkVideo.coverImage { - size = image.size - }else { - if let key = networkVideo.videoURL?.absoluteString, - PhotoTools.isCached(forVideo: key) { - let videoURL = PhotoTools.getVideoCacheURL(for: key) - if let image = PhotoTools.getVideoThumbnailImage(videoURL: videoURL, atTime: 0.1) { - networkVideoAsset?.coverImage = image - return image.size - } - } - size = defaultSize - } - }else { - if let localLivePhoto = localLivePhoto { - if localLivePhoto.size.equalTo(.zero) { - if localLivePhoto.imageURL.isFileURL { - let image = UIImage(contentsOfFile: localLivePhoto.imageURL.path) - size = image?.size ?? defaultSize - self.localLivePhoto?.size = size - }else { - #if canImport(Kingfisher) - if ImageCache.default.isCached(forKey: localLivePhoto.imageURL.cacheKey) { - let cachePath = ImageCache.default.cachePath(forKey: localLivePhoto.imageURL.cacheKey) - if let image = UIImage(contentsOfFile: cachePath) { - size = image.size - self.localLivePhoto?.size = size - }else { - size = defaultSize - } - }else { - size = defaultSize - } - #else - size = defaultSize - #endif - } - }else { - size = localLivePhoto.size - } - }else { - #if canImport(Kingfisher) - if let networkImageSize = networkImageAsset?.imageSize, !networkImageSize.equalTo(.zero) { - size = networkImageSize - } else { - size = defaultSize - } - #else - size = defaultSize - #endif - } - - } - } - return size - } - func getVideoCoverURL( - toFile fileURL: URL? = nil, - resultHandler: @escaping AssetURLCompletion - ) { - let coverURL = fileURL ?? PhotoTools.getImageTmpURL(.jpg) - requestImageData { _, result in - switch result { - case .success(let dataResult): - let imageData = dataResult.imageData - DispatchQueue.global().async { - if let imageURL = PhotoTools.write( - toFile: coverURL, - imageData: imageData - ) { - DispatchQueue.main.async { - resultHandler( - .success( - .init( - url: imageURL, - urlType: .local, - mediaType: .photo - ) - ) - ) - } - }else { - DispatchQueue.main.async { - resultHandler(.failure(.fileWriteFailed)) - } - } - } - case .failure(let error): - resultHandler(.failure(error)) - } - } - } - - func requestAssetImageURL( - toFile fileURL: URL? = nil, - compressionQuality: CGFloat? = nil, - filterEditor: Bool = false, - resultHandler: @escaping AssetURLCompletion - ) { - #if HXPICKER_ENABLE_EDITOR - if (editedResult != nil) && !filterEditor { - getEditedImageURL( - toFile: fileURL, - compressionQuality: compressionQuality, - resultHandler: resultHandler - ) - return - } - #endif - guard let phAsset = phAsset else { - resultHandler( - .failure( - .invalidPHAsset - ) - ) - return - } - if mediaType == .video { - getVideoCoverURL( - toFile: fileURL, - resultHandler: resultHandler - ) - return - } - let isGif = phAsset.isImageAnimated - var imageFileURL: URL - if let fileURL = fileURL { - imageFileURL = fileURL - }else { - var suffix: String - if mediaSubType == .imageAnimated { - suffix = "gif" - }else { - if let compressionQuality, compressionQuality < 1, !isGif { - suffix = "jpeg" - }else { - if let photoFormat = photoFormat, !isGif { - suffix = photoFormat - }else { - suffix = "png" - } - } - } - imageFileURL = PhotoTools.getTmpURL(for: suffix) - } - AssetManager.requestImageURL( - for: phAsset, - toFile: imageFileURL - ) { (result) in - switch result { - case .success(let imageURL): - self.requestAssetImageURL( - imageFileURL: imageFileURL, - resultURL: imageURL, - isGif: isGif, - compressionQuality: compressionQuality, - resultHandler: resultHandler - ) - case .failure(let error): - resultHandler(.failure(error)) - } - } - } - - private func requestAssetImageURL( - imageFileURL: URL, - resultURL: URL, - isGif: Bool, - compressionQuality: CGFloat?, - resultHandler: @escaping AssetURLCompletion - ) { - let imageURL = resultURL - func resultSuccess(_ url: URL) { - DispatchQueue.main.async { - resultHandler( - .success( - .init( - url: url, - urlType: .local, - mediaType: .photo - ) - ) - ) - } - } - func converImageURL(_ url: URL) -> URL { - let imageURL: URL - if url.pathExtension.uppercased() == "HEIC" { - let path = url.path.replacingOccurrences( - of: url.pathExtension, - with: imageFileURL.pathExtension - ) - imageURL = .init(fileURLWithPath: path) - }else { - imageURL = url - } - return imageURL - } - if isGif && self.mediaSubType != .imageAnimated { - DispatchQueue.global().async { - // 本质上是gif,需要变成静态图 - guard let imageData = try? Data(contentsOf: imageURL), - let image = UIImage(data: imageData) else { - DispatchQueue.main.async { - resultHandler(.failure(.fileWriteFailed)) - } - return - } - if let compressionQuality = compressionQuality, compressionQuality < 1 { - if FileManager.default.fileExists(atPath: imageURL.path) { - try? FileManager.default.removeItem(at: imageURL) - } - let toURL = converImageURL(imageURL) - if let data = PhotoTools.imageCompress( - imageData, - compressionQuality: compressionQuality - ), - let url = PhotoTools.write( - toFile: toURL, - imageData: data - ) { - resultSuccess(url) - }else { - DispatchQueue.main.async { - resultHandler(.failure(.imageCompressionFailed)) - } - } - return - } - do { - let toURL = converImageURL(imageURL) - let imageData = PhotoTools.getImageData(for: image) - if FileManager.default.fileExists(atPath: imageURL.path) { - try FileManager.default.removeItem(at: imageURL) - } - try imageData?.write(to: toURL) - resultSuccess(toURL) - } catch { - DispatchQueue.main.async { - resultHandler(.failure(.fileWriteFailed)) - } - } - } - return - }else if !isGif { - if let compressionQuality = compressionQuality, compressionQuality < 1 { - DispatchQueue.global().async { - guard let imageData = try? Data(contentsOf: imageURL) else { - DispatchQueue.main.async { - resultHandler(.failure(.imageCompressionFailed)) - } - return - } - if FileManager.default.fileExists(atPath: imageURL.path) { - try? FileManager.default.removeItem(at: imageURL) - } - let toURL = converImageURL(imageURL) - if let data = PhotoTools.imageCompress( - imageData, - compressionQuality: compressionQuality - ), - let url = PhotoTools.write( - toFile: toURL, - imageData: data - ) { - resultSuccess(url) - }else { - DispatchQueue.main.async { - resultHandler(.failure(.imageCompressionFailed)) - } - } - } - return - } - } - resultSuccess(imageURL) - } - - func requestAssetVideoURL( - toFile fileURL: URL? = nil, - exportParameter: VideoExportParameter? = nil, - exportSession: ((AVAssetExportSession) -> Void)? = nil, - resultHandler: @escaping AssetURLCompletion - ) { - let toFile = fileURL == nil ? PhotoTools.getVideoTmpURL() : fileURL! - #if HXPICKER_ENABLE_EDITOR - if let videoEdit = videoEditedResult { - if let fileURL = fileURL { - if PhotoTools.copyFile(at: videoEdit.url, to: fileURL) { - resultHandler(.success(.init(url: fileURL, urlType: .local, mediaType: .video))) - }else { - resultHandler(.failure(.fileWriteFailed)) - } - return - } - resultHandler(.success(.init(url: videoEdit.url, urlType: .local, mediaType: .video))) - return - } - #endif - guard let phAsset = phAsset else { - resultHandler(.failure(.invalidPHAsset)) - return - } - if mediaSubType == .livePhoto { - if let exportParameter = exportParameter { - AssetManager.exportVideoURL( - forVideo: phAsset, - toFile: toFile, - exportParameter: exportParameter, - exportSession: exportSession - ) { (result) in - switch result { - case .success(let videoURL): - resultHandler(.success(.init(url: videoURL, urlType: .local, mediaType: .video))) - case .failure(let error): - resultHandler(.failure(error.error)) - } - } - return - } - AssetManager.requestLivePhoto( - videoURL: phAsset, - toFile: toFile - ) { - switch $0 { - case .success(let videoURL): - resultHandler(.success(.init(url: videoURL, urlType: .local, mediaType: .video))) - case .failure(let error): - resultHandler(.failure(error.assetError)) - } - } - }else { - if mediaType == .photo { - resultHandler(.failure(.typeError)) - return - } - AssetManager.requestVideoURL( - for: phAsset, - toFile: toFile, - exportParameter: exportParameter, - exportSession: exportSession - ) { (result) in - switch result { - case .success(let videoURL): - resultHandler(.success(.init(url: videoURL, urlType: .local, mediaType: .video))) - case .failure(let error): - resultHandler(.failure(error)) - } - } - } - } -} diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Codable.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Codable.swift similarity index 100% rename from Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Codable.swift rename to Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Codable.swift diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Editor.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Editor.swift similarity index 100% rename from Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Editor.swift rename to Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Editor.swift diff --git a/Sources/HXPhotoPicker/Picker/Protocol/PhotoAsset/PhotoAssetEquatable.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Equatable.swift similarity index 93% rename from Sources/HXPhotoPicker/Picker/Protocol/PhotoAsset/PhotoAssetEquatable.swift rename to Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Equatable.swift index 1812e0e3..fdfd2e20 100644 --- a/Sources/HXPhotoPicker/Picker/Protocol/PhotoAsset/PhotoAssetEquatable.swift +++ b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Equatable.swift @@ -1,5 +1,5 @@ // -// PhotoAssetEquatable.swift +// PhotoAsset+Equatable.swift // HXPhotoPicker // // Created by Silence on 2023/10/14. @@ -8,11 +8,7 @@ import Foundation -public protocol PhotoAssetEquatable: PhotoAsset { - func isEqual(_ photoAsset: PhotoAsset?) -> Bool -} - -public extension PhotoAssetEquatable { +public extension PhotoAsset { func isEqual(_ photoAsset: PhotoAsset?) -> Bool { guard let photoAsset = photoAsset else { return false diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset+FileSize.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+FileSize.swift similarity index 100% rename from Sources/HXPhotoPicker/Picker/Model/PhotoAsset+FileSize.swift rename to Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+FileSize.swift diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Image.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Image.swift new file mode 100644 index 00000000..7d0176fe --- /dev/null +++ b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Image.swift @@ -0,0 +1,361 @@ +// +// PhotoAsset+Image.swift +// HXPhotoPicker +// +// Created by Silence on 2024/3/25. +// Copyright © 2024 Silence. All rights reserved. +// + +import UIKit +import Photos +#if canImport(Kingfisher) +import Kingfisher +#endif + +public extension PhotoAsset { + + /// 原图 + /// 如果为网络图片时,获取的是缩略地址的图片,也可能为nil + /// 如果为网络视频,则为nil + var originalImage: UIImage? { + #if HXPICKER_ENABLE_EDITOR + if editedResult != nil { + return getEditedImage() + } + #endif + guard let phAsset = phAsset else { + if mediaType == .photo { + if let livePhoto = localLivePhoto { + if livePhoto.imageURL.isFileURL { + return UIImage(contentsOfFile: livePhoto.imageURL.path) + }else { + #if canImport(Kingfisher) + if ImageCache.default.isCached(forKey: livePhoto.imageURL.cacheKey) { + return ImageCache.default.retrieveImageInMemoryCache( + forKey: livePhoto.imageURL.cacheKey, + options: [] + ) + } + #endif + return nil + } + } + if let image = localImageAsset?.image { + return image + }else if let imageURL = localImageAsset?.imageURL { + let image = UIImage(contentsOfFile: imageURL.path) + localImageAsset?.image = image + } + return localImageAsset?.image + }else { + checkLoaclVideoImage() + return localVideoAsset?.image + } + } + let options = PHImageRequestOptions.init() + options.isSynchronous = true + options.isNetworkAccessAllowed = true + options.deliveryMode = .highQualityFormat + if mediaSubType == .imageAnimated { + options.version = .original + } + var originalImage: UIImage? + let isGif = phAsset.isImageAnimated + AssetManager.requestImageData(for: phAsset, options: options) { (result) in + switch result { + case .success(let dataResult): + let image = UIImage(data: dataResult.imageData)?.normalizedImage() + if isGif && self.mediaSubType != .imageAnimated { + if let data = PhotoTools.getImageData(for: image) { + originalImage = UIImage(data: data) + } + }else { + originalImage = image + } + default: + break + } + } + return originalImage + } + + /// 获取image,视频为封面图片 + /// - Parameters: + /// - compressionQuality: 压缩参数 0-1 + /// - resolution: 缩小到指定分辨率,优先级小于`compressionQuality` + /// - completion: 获取完成 + func getImage( + compressionQuality: CGFloat? = nil, + completion: @escaping (UIImage?) -> Void + ) { + #if canImport(Kingfisher) + let hasEdited: Bool + #if HXPICKER_ENABLE_EDITOR + hasEdited = editedResult != nil + #else + hasEdited = false + #endif + if isNetworkAsset && !hasEdited { + getNetworkImage { image in + guard let compressionQuality = compressionQuality else { + completion(image) + return + } + DispatchQueue.global().async { + guard let imageData = PhotoTools.getImageData(for: image), + let data = PhotoTools.imageCompress( + imageData, + compressionQuality: compressionQuality + ), + let image = UIImage(data: data)?.normalizedImage() + else { + DispatchQueue.main.async { + completion(nil) + } + return + } + DispatchQueue.main.async { + completion(image) + } + } + } + return + } + #endif + requestImage(compressionScale: compressionQuality) { image, _ in + completion(image) + } + } + + /// 获取image,视频为封面图片 + /// - Parameters: + /// - targetSize: 指定`imageSize` + /// - targetMode: 裁剪模式 + /// - completion: 获取完成 + func getImage( + targetSize: CGSize, + targetMode: HX.ImageTargetMode = .fill, + completion: @escaping (UIImage?, PhotoAsset) -> Void + ) { + #if canImport(Kingfisher) + let hasEdited: Bool + #if HXPICKER_ENABLE_EDITOR + hasEdited = editedResult != nil + #else + hasEdited = false + #endif + if isNetworkAsset && !hasEdited { + getNetworkImage { image in + DispatchQueue.global().async { + let image = image?.scaleToFillSize(size: targetSize, mode: targetMode) + DispatchQueue.main.async { + completion(image, self) + } + } + } + return + } + #endif + requestImage(targetSize: targetSize, targetMode: targetMode) { + completion($0, $1) + } + } + + /// 获取 imageData + /// - Parameter completion: 获取完成 + func getImageData(completion: @escaping (Result) -> Void) { + requestImageData { _, result in + completion(result) + } + } + +} + +extension PhotoAsset { + + func requestAssetImageURL( + toFile fileURL: URL? = nil, + compressionQuality: CGFloat? = nil, + filterEditor: Bool = false, + resultHandler: @escaping AssetURLCompletion + ) { + #if HXPICKER_ENABLE_EDITOR + if (editedResult != nil) && !filterEditor { + getEditedImageURL( + toFile: fileURL, + compressionQuality: compressionQuality, + resultHandler: resultHandler + ) + return + } + #endif + guard let phAsset = phAsset else { + resultHandler( + .failure( + .invalidPHAsset + ) + ) + return + } + if mediaType == .video { + getVideoCoverURL( + toFile: fileURL, + resultHandler: resultHandler + ) + return + } + let isGif = phAsset.isImageAnimated + var imageFileURL: URL + if let fileURL = fileURL { + imageFileURL = fileURL + }else { + var suffix: String + if mediaSubType == .imageAnimated { + suffix = "gif" + }else { + if let compressionQuality, compressionQuality < 1, !isGif { + suffix = "jpeg" + }else { + if let photoFormat = photoFormat, !isGif { + suffix = photoFormat + }else { + suffix = "png" + } + } + } + imageFileURL = PhotoTools.getTmpURL(for: suffix) + } + AssetManager.requestImageURL( + for: phAsset, + toFile: imageFileURL + ) { (result) in + switch result { + case .success(let imageURL): + self.requestAssetImageURL( + imageFileURL: imageFileURL, + resultURL: imageURL, + isGif: isGif, + compressionQuality: compressionQuality, + resultHandler: resultHandler + ) + case .failure(let error): + resultHandler(.failure(error)) + } + } + } + + private func requestAssetImageURL( + imageFileURL: URL, + resultURL: URL, + isGif: Bool, + compressionQuality: CGFloat?, + resultHandler: @escaping AssetURLCompletion + ) { + let imageURL = resultURL + func resultSuccess(_ url: URL) { + DispatchQueue.main.async { + resultHandler( + .success( + .init( + url: url, + urlType: .local, + mediaType: .photo + ) + ) + ) + } + } + func converImageURL(_ url: URL) -> URL { + let imageURL: URL + if url.pathExtension.uppercased() == "HEIC" { + let path = url.path.replacingOccurrences( + of: url.pathExtension, + with: imageFileURL.pathExtension + ) + imageURL = .init(fileURLWithPath: path) + }else { + imageURL = url + } + return imageURL + } + if isGif && self.mediaSubType != .imageAnimated { + DispatchQueue.global().async { + // 本质上是gif,需要变成静态图 + guard let imageData = try? Data(contentsOf: imageURL), + let image = UIImage(data: imageData) else { + DispatchQueue.main.async { + resultHandler(.failure(.fileWriteFailed)) + } + return + } + if let compressionQuality = compressionQuality, compressionQuality < 1 { + if FileManager.default.fileExists(atPath: imageURL.path) { + try? FileManager.default.removeItem(at: imageURL) + } + let toURL = converImageURL(imageURL) + if let data = PhotoTools.imageCompress( + imageData, + compressionQuality: compressionQuality + ), + let url = PhotoTools.write( + toFile: toURL, + imageData: data + ) { + resultSuccess(url) + }else { + DispatchQueue.main.async { + resultHandler(.failure(.imageCompressionFailed)) + } + } + return + } + do { + let toURL = converImageURL(imageURL) + let imageData = PhotoTools.getImageData(for: image) + if FileManager.default.fileExists(atPath: imageURL.path) { + try FileManager.default.removeItem(at: imageURL) + } + try imageData?.write(to: toURL) + resultSuccess(toURL) + } catch { + DispatchQueue.main.async { + resultHandler(.failure(.fileWriteFailed)) + } + } + } + return + }else if !isGif { + if let compressionQuality = compressionQuality, compressionQuality < 1 { + DispatchQueue.global().async { + guard let imageData = try? Data(contentsOf: imageURL) else { + DispatchQueue.main.async { + resultHandler(.failure(.imageCompressionFailed)) + } + return + } + if FileManager.default.fileExists(atPath: imageURL.path) { + try? FileManager.default.removeItem(at: imageURL) + } + let toURL = converImageURL(imageURL) + if let data = PhotoTools.imageCompress( + imageData, + compressionQuality: compressionQuality + ), + let url = PhotoTools.write( + toFile: toURL, + imageData: data + ) { + resultSuccess(url) + }else { + DispatchQueue.main.async { + resultHandler(.failure(.imageCompressionFailed)) + } + } + } + return + } + } + resultSuccess(imageURL) + } + +} diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Local.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Local.swift similarity index 100% rename from Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Local.swift rename to Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Local.swift diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Network.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Network.swift similarity index 100% rename from Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Network.swift rename to Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Network.swift diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Request.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Request.swift similarity index 99% rename from Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Request.swift rename to Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Request.swift index b4fd9b67..cf074ae0 100644 --- a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset+Request.swift +++ b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Request.swift @@ -904,8 +904,9 @@ public extension PhotoAsset { var imageURL = localLivePhoto.imageURL var videoURL = localLivePhoto.videoURL let imageURLType: AssetURLResult.URLType - if imageURL.isFileURL { + if localLivePhoto.isCache { imageURLType = .local + imageURL = localLivePhoto.jpgURL if let imageFileURL = imageFileURL { if PhotoTools.copyFile( at: imageURL, @@ -918,9 +919,8 @@ public extension PhotoAsset { } } }else { - if localLivePhoto.isCache { + if imageURL.isFileURL { imageURLType = .local - imageURL = localLivePhoto.jpgURL if let imageFileURL = imageFileURL { if PhotoTools.copyFile( at: imageURL, @@ -937,8 +937,9 @@ public extension PhotoAsset { } } let videoURLType: AssetURLResult.URLType - if videoURL.isFileURL { + if localLivePhoto.isCache { videoURLType = .local + videoURL = localLivePhoto.movURL if let videoFileURL = videoFileURL { if PhotoTools.copyFile( at: videoURL, @@ -951,9 +952,8 @@ public extension PhotoAsset { } } }else { - if localLivePhoto.isCache { + if videoURL.isFileURL { videoURLType = .local - videoURL = localLivePhoto.movURL if let videoFileURL = videoFileURL { if PhotoTools.copyFile( at: videoURL, diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset+URL.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+URL.swift similarity index 85% rename from Sources/HXPhotoPicker/Picker/Model/PhotoAsset+URL.swift rename to Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+URL.swift index 7ee8deac..a79f6b39 100644 --- a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset+URL.swift +++ b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+URL.swift @@ -12,96 +12,6 @@ public extension PhotoAsset { typealias AssetURLCompletion = (Result) -> Void - /// 获取image,视频为封面图片 - /// - Parameters: - /// - compressionQuality: 压缩参数 0-1 - /// - resolution: 缩小到指定分辨率,优先级小于`compressionQuality` - /// - completion: 获取完成 - func getImage( - compressionQuality: CGFloat? = nil, - completion: @escaping (UIImage?) -> Void - ) { - #if canImport(Kingfisher) - let hasEdited: Bool - #if HXPICKER_ENABLE_EDITOR - hasEdited = editedResult != nil - #else - hasEdited = false - #endif - if isNetworkAsset && !hasEdited { - getNetworkImage { image in - guard let compressionQuality = compressionQuality else { - completion(image) - return - } - DispatchQueue.global().async { - guard let imageData = PhotoTools.getImageData(for: image), - let data = PhotoTools.imageCompress( - imageData, - compressionQuality: compressionQuality - ), - let image = UIImage(data: data)?.normalizedImage() - else { - DispatchQueue.main.async { - completion(nil) - } - return - } - DispatchQueue.main.async { - completion(image) - } - } - } - return - } - #endif - requestImage(compressionScale: compressionQuality) { image, _ in - completion(image) - } - } - - /// 获取image,视频为封面图片 - /// - Parameters: - /// - targetSize: 指定`imageSize` - /// - targetMode: 裁剪模式 - /// - completion: 获取完成 - func getImage( - targetSize: CGSize, - targetMode: HX.ImageTargetMode = .fill, - completion: @escaping (UIImage?, PhotoAsset) -> Void - ) { - #if canImport(Kingfisher) - let hasEdited: Bool - #if HXPICKER_ENABLE_EDITOR - hasEdited = editedResult != nil - #else - hasEdited = false - #endif - if isNetworkAsset && !hasEdited { - getNetworkImage { image in - DispatchQueue.global().async { - let image = image?.scaleToFillSize(size: targetSize, mode: targetMode) - DispatchQueue.main.async { - completion(image, self) - } - } - } - return - } - #endif - requestImage(targetSize: targetSize, targetMode: targetMode) { - completion($0, $1) - } - } - - /// 获取 imageData - /// - Parameter completion: 获取完成 - func getImageData(completion: @escaping (Result) -> Void) { - requestImageData { _, result in - completion(result) - } - } - /// 获取url /// - Parameters: /// - fileConfig: 指定地址,若为heic格式的图片,可以设置图片地址为png / jpeg,内部会自动转换(如果为网络资源则忽略) @@ -270,26 +180,6 @@ public extension PhotoAsset { ) } - struct FileConfig { - public let imageURL: URL? - public let videoURL: URL? - - public init(imageURL: URL, videoURL: URL? = nil) { - self.imageURL = imageURL - self.videoURL = videoURL - } - - public init(imageURL: URL? = nil, videoURL: URL) { - self.imageURL = imageURL - self.videoURL = videoURL - } - - public init(imageURL: URL, videoURL: URL) { - self.imageURL = imageURL - self.videoURL = videoURL - } - } - func getAssetResult( toFile fileConfig: PhotoAsset.FileConfig?, compression: PhotoAsset.Compression?, @@ -414,6 +304,26 @@ public extension PhotoAsset { } } } + + struct FileConfig { + public let imageURL: URL? + public let videoURL: URL? + + public init(imageURL: URL, videoURL: URL? = nil) { + self.imageURL = imageURL + self.videoURL = videoURL + } + + public init(imageURL: URL? = nil, videoURL: URL) { + self.imageURL = imageURL + self.videoURL = videoURL + } + + public init(imageURL: URL, videoURL: URL) { + self.imageURL = imageURL + self.videoURL = videoURL + } + } } @available(iOS 13.0, *) diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Video.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Video.swift new file mode 100644 index 00000000..1d4c3fa9 --- /dev/null +++ b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset+Video.swift @@ -0,0 +1,129 @@ +// +// PhotoAsset+Video.swift +// HXPhotoPicker +// +// Created by Silence on 2024/3/27. +// Copyright © 2024 Silence. All rights reserved. +// + +import UIKit +import AVFoundation + +extension PhotoAsset { + func requestAssetVideoURL( + toFile fileURL: URL? = nil, + exportParameter: VideoExportParameter? = nil, + exportSession: ((AVAssetExportSession) -> Void)? = nil, + resultHandler: @escaping AssetURLCompletion + ) { + let toFile = fileURL == nil ? PhotoTools.getVideoTmpURL() : fileURL! + #if HXPICKER_ENABLE_EDITOR + if let videoEdit = videoEditedResult { + if let fileURL = fileURL { + if PhotoTools.copyFile(at: videoEdit.url, to: fileURL) { + resultHandler(.success(.init(url: fileURL, urlType: .local, mediaType: .video))) + }else { + resultHandler(.failure(.fileWriteFailed)) + } + return + } + resultHandler(.success(.init(url: videoEdit.url, urlType: .local, mediaType: .video))) + return + } + #endif + guard let phAsset = phAsset else { + resultHandler(.failure(.invalidPHAsset)) + return + } + if mediaSubType == .livePhoto { + if let exportParameter = exportParameter { + AssetManager.exportVideoURL( + forVideo: phAsset, + toFile: toFile, + exportParameter: exportParameter, + exportSession: exportSession + ) { (result) in + switch result { + case .success(let videoURL): + resultHandler(.success(.init(url: videoURL, urlType: .local, mediaType: .video))) + case .failure(let error): + resultHandler(.failure(error.error)) + } + } + return + } + AssetManager.requestLivePhoto( + videoURL: phAsset, + toFile: toFile + ) { + switch $0 { + case .success(let videoURL): + resultHandler(.success(.init(url: videoURL, urlType: .local, mediaType: .video))) + case .failure(let error): + resultHandler(.failure(error.assetError)) + } + } + }else { + if mediaType == .photo { + resultHandler(.failure(.typeError)) + return + } + AssetManager.requestVideoURL( + for: phAsset, + toFile: toFile, + exportParameter: exportParameter, + exportSession: exportSession + ) { (result) in + switch result { + case .success(let videoURL): + resultHandler(.success(.init(url: videoURL, urlType: .local, mediaType: .video))) + case .failure(let error): + resultHandler(.failure(error)) + } + } + } + } + + func getVideoCoverURL( + toFile fileURL: URL? = nil, + resultHandler: @escaping AssetURLCompletion + ) { + let coverURL = fileURL ?? PhotoTools.getImageTmpURL(.jpg) + requestImageData { _, result in + switch result { + case .success(let dataResult): + let imageData = dataResult.imageData + DispatchQueue.global().async { + if let imageURL = PhotoTools.write( + toFile: coverURL, + imageData: imageData + ) { + DispatchQueue.main.async { + resultHandler( + .success( + .init( + url: imageURL, + urlType: .local, + mediaType: .photo + ) + ) + ) + } + }else { + DispatchQueue.main.async { + resultHandler(.failure(.fileWriteFailed)) + } + } + } + case .failure(let error): + resultHandler(.failure(error)) + } + } + } + + func updateVideoDuration(_ duration: TimeInterval) { + pVideoDuration = duration + pVideoTime = PhotoTools.transformVideoDurationToString(duration: duration) + } + +} diff --git a/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset.swift b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset.swift new file mode 100644 index 00000000..0eaf931b --- /dev/null +++ b/Sources/HXPhotoPicker/Picker/Model/PhotoAsset/PhotoAsset.swift @@ -0,0 +1,381 @@ +// +// PhotoAsset.swift +// HXPhotoPickerSwift +// +// Created by Silence on 2020/11/12. +// Copyright © 2020 Silence. All rights reserved. +// + +import UIKit +import Photos +#if canImport(Kingfisher) +import Kingfisher +#endif + +public typealias PhotoAssetICloudHandler = (PhotoAsset, PHImageRequestID) -> Void +public typealias PhotoAssetProgressHandler = (PhotoAsset, Double) -> Void +public typealias PhotoAssetFailureHandler = (PhotoAsset, [AnyHashable: Any]?, AssetError) -> Void + +open class PhotoAsset: Equatable { + + /// 系统相册里的资源 + public var phAsset: PHAsset? { didSet { setMediaType() } } + + /// 媒体类型 + public var mediaType: MediaType = .photo + + /// 媒体子类型 + public var mediaSubType: MediaSubType = .image + + #if HXPICKER_ENABLE_EDITOR + /// 编辑之后的数据 + public var editedResult: EditedResult? { didSet { pFileSize = nil } } + var initialEditedResult: EditedResult? + + /// 图片编辑结果 + public var photoEditedResult: ImageEditedResult? { + guard let editedResult = editedResult else { + return nil + } + switch editedResult { + case .image(let result, _): + return result + default: + return nil + } + } + /// 视频编辑结果 + public var videoEditedResult: VideoEditedResult? { + guard let editedResult = editedResult else { + return nil + } + switch editedResult { + case .video(let result, _): + return result + default: + return nil + } + } + #endif + + /// 图片/视频文件大小 + /// 1000 = 1kb + /// 1000000 = 1Mb + public var fileSize: Int { getFileSize() } + + /// 图片/视频尺寸大小 + public var imageSize: CGSize { + if let editedImageSize { + return editedImageSize + } + if let localImageSize { + return localImageSize + } + if let phAssetImageSize { + return phAssetImageSize + } + return .init(width: 200, height: 200) + } + + /// 视频时长 格式:00:00 + public var videoTime: String? { + #if HXPICKER_ENABLE_EDITOR + if let videoEdit = videoEditedResult { + return videoEdit.videoTime + } + #endif + return pVideoTime + } + + /// 视频时长 秒 + public var videoDuration: TimeInterval { + #if HXPICKER_ENABLE_EDITOR + if let videoEdit = videoEditedResult { + return videoEdit.videoDuration + } + #endif + return pVideoDuration + } + + /// 当前资源是否被选中 + public var isSelected: Bool = false + + /// 选中时的下标 + public var selectIndex: Int = 0 + + public var isGifAsset: Bool { mediaSubType.isGif } + public var isLocalAsset: Bool { mediaSubType.isLocal } + public var isNetworkAsset: Bool { mediaSubType.isNetwork } + + /// 根据系统相册里对应的 PHAsset 数据初始化 + /// - Parameter asset: 系统相册里对应的 PHAsset 数据 + public init(asset: PHAsset) { + self.phAsset = asset + setMediaType() + } + + public convenience init(_ asset: PHAsset) { + self.init(asset: asset) + } + + /// 根据系统相册里对应的 PHAsset本地唯一标识符 初始化 + /// - Parameter localIdentifier: 系统相册里对应的 PHAsset本地唯一标识符 + public init(localIdentifier: String) { + phAsset = AssetManager.fetchAsset(with: localIdentifier) + setMediaType() + } + + public convenience init(_ localIdentifier: String) { + self.init(localIdentifier: localIdentifier) + } + + /// 本地图片 + public var localImageAsset: LocalImageAsset? + + /// 初始化本地图片 + /// - Parameters: + /// - localImageAsset: 对应本地图片的 LocalImageAsset + public init(localImageAsset: LocalImageAsset) { + self.localImageAsset = localImageAsset + mediaType = .photo + if let imageData = localImageAsset.imageData { + mediaSubType = imageData.isGif ? .localGifImage : .localImage + }else if let imageURL = localImageAsset.imageURL { + mediaSubType = imageURL.isGif ? .localGifImage : .localImage + }else { + mediaSubType = .localImage + } + } + + public convenience init(_ localImageAsset: LocalImageAsset) { + self.init(localImageAsset: localImageAsset) + } + + /// 本地视频 + public var localVideoAsset: LocalVideoAsset? + + /// 初始化本地视频 + /// - Parameters: + /// - localVideoAsset: 对应本地视频的 LocalVideoAsset + public init(localVideoAsset: LocalVideoAsset) { + let videoDuration: TimeInterval + if localVideoAsset.duration == 0 { + videoDuration = PhotoTools.getVideoDuration(videoURL: localVideoAsset.videoURL) + }else { + videoDuration = localVideoAsset.duration + } + pVideoTime = PhotoTools.transformVideoDurationToString(duration: videoDuration) + pVideoDuration = videoDuration + self.localVideoAsset = localVideoAsset + mediaType = .video + mediaSubType = .localVideo + } + + public convenience init(_ localVideoAsset: LocalVideoAsset) { + self.init(localVideoAsset: localVideoAsset) + } + + /// 本地LivePhoto + public var localLivePhoto: LocalLivePhotoAsset? + + /// 初始化本地LivePhoto + public init(localLivePhoto: LocalLivePhotoAsset) { + mediaType = .photo + mediaSubType = .localLivePhoto + self.localLivePhoto = localLivePhoto + } + + public convenience init(_ localLivePhoto: LocalLivePhotoAsset) { + self.init(localLivePhoto: localLivePhoto) + } + + /// 本地/网络Asset的唯一标识符 + public private(set) var localAssetIdentifier: String = UUID().uuidString + + #if canImport(Kingfisher) + /// 初始化网络图片 + /// - Parameter networkImageAsset: 对应网络图片的 NetworkImageAsset + public init(networkImageAsset: NetworkImageAsset) { + self.networkImageAsset = networkImageAsset + mediaType = .photo + let isGif = networkImageAsset.originalURL?.isGif ?? false + mediaSubType = .networkImage(isGif) + } + + public convenience init(_ networkImageAsset: NetworkImageAsset) { + self.init(networkImageAsset: networkImageAsset) + } + + /// 网络图片 + public var networkImageAsset: NetworkImageAsset? + + var localImageType: DonwloadURLType = .thumbnail + + var loadNetworkImageHandler: ((((PhotoAsset) -> Void)?) -> Void)? + #endif + + /// 网络视频 + public var networkVideoAsset: NetworkVideoAsset? + + /// 初始化网络视频 + /// - Parameter networkVideoAsset: 对应网络视频的 NetworkVideoAsset + public init(networkVideoAsset: NetworkVideoAsset) { + self.networkVideoAsset = networkVideoAsset + mediaType = .video + mediaSubType = .networkVideo + if networkVideoAsset.duration > 0 { + pVideoDuration = networkVideoAsset.duration + pVideoTime = PhotoTools.transformVideoDurationToString(duration: networkVideoAsset.duration) + } + } + + public convenience init(_ networkVideoAsset: NetworkVideoAsset) { + self.init(networkVideoAsset: networkVideoAsset) + } + + /// iCloud下载状态,确定不在iCloud上的为 .succeed + public var downloadStatus: DownloadStatus = .unknow + + /// iCloud下载进度,如果取消了会记录上次进度 + public var downloadProgress: Double = 0 + + var localIndex: Int = 0 + var pFileSize: Int? + var pVideoTime: String? + var pVideoDuration: TimeInterval = 0 + var playerTime: CGFloat = 0 + var isScrolling = false + + var identifie: String { + if let phAsset = phAsset { + return phAsset.localIdentifier + } + return localAssetIdentifier + } + + public static func == (lhs: PhotoAsset, rhs: PhotoAsset) -> Bool { + lhs.isEqual(rhs) + } +} + +// MARK: Self-use +extension PhotoAsset { + + var cameraAsset: PhotoAsset? { + var photoAsset: PhotoAsset? + if mediaType == .photo { + if let localImageAsset = localImageAsset { + photoAsset = PhotoAsset(localImageAsset: localImageAsset) + } + }else { + if let localVideoAsset = localVideoAsset { + photoAsset = PhotoAsset(localVideoAsset: localVideoAsset) + } + } + photoAsset?.localAssetIdentifier = localAssetIdentifier + photoAsset?.localIndex = localIndex + return photoAsset + } + + func setMediaType() { + guard let phAsset = phAsset else { + return + } + if phAsset.mediaType == .image { + mediaType = .photo + mediaSubType = .image + }else if phAsset.mediaType == .video { + mediaType = .video + mediaSubType = .video + pVideoDuration = phAsset.duration + pVideoTime = PhotoTools.transformVideoDurationToString(duration: TimeInterval(round(phAsset.duration))) + } + } + + var phAssetImageSize: CGSize? { + guard let phAsset, phAsset.pixelWidth > 0, phAsset.pixelHeight > 0 else { + return nil + } + return .init(width: phAsset.pixelWidth, height: phAsset.pixelHeight) + } + + var localImageSize: CGSize? { + var size: CGSize? + if let localImage = localImageAsset?.image { + size = localImage.size + }else if let localImageData = localImageAsset?.imageData, + let image = UIImage(data: localImageData) { + size = image.size + }else if let imageURL = localImageAsset?.imageURL, + let image = UIImage(contentsOfFile: imageURL.path) { + localImageAsset?.image = image + size = image.size + }else if let localVideoAsset = localVideoAsset { + if !localVideoAsset.videoSize.equalTo(.zero) { + size = localVideoAsset.videoSize + }else if let localImage = localVideoAsset.image { + size = localImage.size + }else { + let image = PhotoTools.getVideoThumbnailImage(videoURL: localVideoAsset.videoURL, atTime: 0.1) + self.localVideoAsset?.image = image + size = image?.size + } + }else if let networkVideo = networkVideoAsset { + if !networkVideo.videoSize.equalTo(.zero) { + size = networkVideo.videoSize + }else if let image = networkVideo.coverImage { + size = image.size + }else { + if let key = networkVideo.videoURL?.absoluteString, + PhotoTools.isCached(forVideo: key) { + let videoURL = PhotoTools.getVideoCacheURL(for: key) + if let image = PhotoTools.getVideoThumbnailImage(videoURL: videoURL, atTime: 0.1) { + networkVideoAsset?.coverImage = image + return image.size + } + } + } + }else { + if let localLivePhoto = localLivePhoto { + if localLivePhoto.size.equalTo(.zero) { + if localLivePhoto.imageURL.isFileURL { + let image = UIImage(contentsOfFile: localLivePhoto.imageURL.path) + size = image?.size + self.localLivePhoto?.size = size ?? .init(width: 200, height: 200) + }else { + #if canImport(Kingfisher) + if ImageCache.default.isCached(forKey: localLivePhoto.imageURL.cacheKey) { + let cachePath = ImageCache.default.cachePath(forKey: localLivePhoto.imageURL.cacheKey) + if let image = UIImage(contentsOfFile: cachePath) { + size = image.size + self.localLivePhoto?.size = size ?? .init(width: 200, height: 200) + } + } + #endif + } + }else { + size = localLivePhoto.size + } + }else { + #if canImport(Kingfisher) + if let networkImageSize = networkImageAsset?.imageSize, !networkImageSize.equalTo(.zero) { + size = networkImageSize + } + #endif + } + } + return size + } + + var editedImageSize: CGSize? { + #if HXPICKER_ENABLE_EDITOR + if let photoEdit = photoEditedResult { + return photoEdit.image.size + } + if let videoEdit = videoEditedResult { + return videoEdit.coverImage?.size + } + #endif + return nil + } +} diff --git a/Sources/HXPhotoPicker/Picker/Model/PickerManager.swift b/Sources/HXPhotoPicker/Picker/Model/PickerManager.swift index 83805be7..54d1f59d 100644 --- a/Sources/HXPhotoPicker/Picker/Model/PickerManager.swift +++ b/Sources/HXPhotoPicker/Picker/Model/PickerManager.swift @@ -106,7 +106,7 @@ extension PickerManager { func requestAuthorization( with handler: @escaping (PHAuthorizationStatus) -> Void ) { - AssetManager.requestAuthorization { status in + AssetPermissionsUtil.requestAuthorization { status in if status != .denied { PHPhotoLibrary.shared().register(self) } @@ -584,7 +584,7 @@ extension PickerManager { extension PickerManager: PHPhotoLibraryChangeObserver { public func photoLibraryDidChange(_ changeInstance: PHChange) { - if !AssetManager.authorizationStatusIsLimited() || !config.allowLoadPhotoLibrary { + if !AssetPermissionsUtil.isLimitedAuthorizationStatus || !config.allowLoadPhotoLibrary { return } var needReload = false diff --git a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Asset.swift b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Asset.swift index 71f3509d..7b637ff8 100644 --- a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Asset.swift +++ b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Asset.swift @@ -22,7 +22,7 @@ extension PhotoPickerView { allowPreview = true } } - if AssetManager.authorizationStatus() != .denied { + if AssetPermissionsUtil.authorizationStatus != .denied { showLoading() } manager.fetchPhotoAssets(assetCollection: assetCollection) @@ -33,7 +33,7 @@ extension PhotoPickerView { if config.allowAddCamera { allowPreview = true } - if AssetManager.authorizationStatus() != .denied { + if AssetPermissionsUtil.authorizationStatus != .denied { showLoading() }else { if config.allowAddCamera { diff --git a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Camera.swift b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Camera.swift index aab5c844..5a08cf91 100644 --- a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Camera.swift +++ b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Camera.swift @@ -181,10 +181,10 @@ extension PhotoPickerView: UIImagePickerControllerDelegate, UINavigationControll ) } func saveSystemAlbum( - type: AssetManager.PhotoSaveType, + type: AssetSaveUtil.SaveType, location: CLLocation? = nil ) { - AssetManager.save( + AssetSaveUtil.save( type: type, customAlbumName: config.customAlbumName, location: location @@ -247,7 +247,7 @@ extension PhotoPickerView: CameraControllerDelegate { animated: true ) DispatchQueue.global().async { - let saveType: AssetManager.PhotoSaveType + let saveType: AssetSaveUtil.SaveType let photoAsset: PhotoAsset switch result { case .image(let image): diff --git a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+CollectionView.swift b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+CollectionView.swift index 01b65cfa..6a587458 100644 --- a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+CollectionView.swift +++ b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+CollectionView.swift @@ -211,7 +211,7 @@ extension PhotoPickerView: UICollectionViewDelegate { ) return } - AssetManager.requestCameraAccess { (granted) in + AssetPermissionsUtil.requestCameraAccess { (granted) in if granted { self.presentCameraViewController() }else { @@ -378,7 +378,7 @@ extension PhotoPickerView: UICollectionViewDelegate { let isSourceTypeAvailable: Bool #if !targetEnvironment(macCatalyst) isCameraCell = sCell is PickerCameraViewCell - isAuthorized = AssetManager.cameraAuthorizationStatus() == .authorized + isAuthorized = AssetPermissionsUtil.cameraAuthorizationStatus == .authorized isSourceTypeAvailable = UIImagePickerController.isSourceTypeAvailable(.camera) #else isCameraCell = false diff --git a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Function.swift b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Function.swift index 6faa5ce4..c7fcc0a5 100644 --- a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Function.swift +++ b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView+Function.swift @@ -65,7 +65,7 @@ extension PhotoPickerView { ) #endif } - if config.allowAddLimit && AssetManager.authorizationStatusIsLimited() { + if config.allowAddLimit && AssetPermissionsUtil.isLimitedAuthorizationStatus { collectionView.register( PhotoPickerLimitCell.self, forCellWithReuseIdentifier: @@ -121,7 +121,7 @@ extension PhotoPickerView { } func setupEmptyView() { - if config.allowAddLimit && AssetManager.authorizationStatusIsLimited() { + if config.allowAddLimit && AssetPermissionsUtil.isLimitedAuthorizationStatus { emptyView.removeFromSuperview() return } @@ -134,7 +134,7 @@ extension PhotoPickerView { func setupDeniedView() { emptyView.removeFromSuperview() - if AssetManager.authorizationStatus() == .denied { + if AssetPermissionsUtil.authorizationStatus == .denied { collectionView.addSubview(deniedView) }else { deniedView.removeFromSuperview() diff --git a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView.swift b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView.swift index 1a8071a2..adc2969f 100644 --- a/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView.swift +++ b/Sources/HXPhotoPicker/Picker/PickerView/PhotoPickerView.swift @@ -184,7 +184,7 @@ open class PhotoPickerView: UIView { #if targetEnvironment(macCatalyst) return false #else - if didFetchAsset && config.allowAddLimit && AssetManager.authorizationStatusIsLimited() { + if didFetchAsset && config.allowAddLimit && AssetPermissionsUtil.isLimitedAuthorizationStatus { return true } return false @@ -244,7 +244,7 @@ open class PhotoPickerView: UIView { }else { emptyView.centerX = collectionView.width * 0.5 } - if AssetManager.authorizationStatus() == .denied { + if AssetPermissionsUtil.authorizationStatus == .denied { deniedView.frame = bounds } } diff --git a/Sources/HXPhotoPicker/Picker/Protocol/Fetch/PhotoFetchAsset.swift b/Sources/HXPhotoPicker/Picker/Protocol/Fetch/PhotoFetchAsset.swift index ba9857d3..825f4776 100644 --- a/Sources/HXPhotoPicker/Picker/Protocol/Fetch/PhotoFetchAsset.swift +++ b/Sources/HXPhotoPicker/Picker/Protocol/Fetch/PhotoFetchAsset.swift @@ -48,7 +48,7 @@ public extension PhotoFetchAsset { var photoCount = 0 var videoCount = 0 var phAssetResult: [PHAsset] = [] - let isLimited = AssetManager.authorizationStatusIsLimited() && config.isRemoveSelectedAssetWhenRemovingAssets + let isLimited = AssetPermissionsUtil.isLimitedAuthorizationStatus && config.isRemoveSelectedAssetWhenRemovingAssets assetCollection.enumerateAssets { photoAsset, index, stop in guard let phAsset = photoAsset.phAsset else { return diff --git a/Sources/HXPhotoPicker/Picker/Protocol/UI/PhotoList/PhotoPickerListCondition.swift b/Sources/HXPhotoPicker/Picker/Protocol/UI/PhotoList/PhotoPickerListCondition.swift index deb4e0e0..79477244 100644 --- a/Sources/HXPhotoPicker/Picker/Protocol/UI/PhotoList/PhotoPickerListCondition.swift +++ b/Sources/HXPhotoPicker/Picker/Protocol/UI/PhotoList/PhotoPickerListCondition.swift @@ -39,7 +39,9 @@ public extension PhotoPickerListCondition { #if targetEnvironment(macCatalyst) return false #else - if didFetchAsset && config.allowAddLimit && AssetManager.authorizationStatusIsLimited() { + if didFetchAsset, + config.allowAddLimit, + AssetPermissionsUtil.isLimitedAuthorizationStatus { return true } return false diff --git a/Sources/HXPhotoPicker/Picker/Protocol/UI/ToolBar/PhotoToolBar.swift b/Sources/HXPhotoPicker/Picker/Protocol/UI/ToolBar/PhotoToolBar.swift index 8f028264..193a7c91 100644 --- a/Sources/HXPhotoPicker/Picker/Protocol/UI/ToolBar/PhotoToolBar.swift +++ b/Sources/HXPhotoPicker/Picker/Protocol/UI/ToolBar/PhotoToolBar.swift @@ -73,7 +73,7 @@ public protocol PhotoToolBar: UIView, PhotoPickerDataStatus { func updateOriginalState(_ isSelected: Bool) /// 内部主动请求原图大小 - /// ``` + /// ```swift /// if !originalButton.isSelected { /// return /// } @@ -127,8 +127,8 @@ public extension PhotoToolBar { static func isShow(_ config: PickerConfiguration, type: PhotoToolBarType) -> Bool { if type == .picker, config.selectMode == .single { return config.photoList.bottomView.isShowPrompt && - config.allowLoadPhotoLibrary && - AssetManager.authorizationStatusIsLimited() + config.allowLoadPhotoLibrary && + AssetPermissionsUtil.isLimitedAuthorizationStatus } return true } diff --git a/Sources/HXPhotoPicker/Picker/Util/Picker+PhotoManager.swift b/Sources/HXPhotoPicker/Picker/Util/Picker+PhotoManager.swift index 17ab7058..47e920f3 100644 --- a/Sources/HXPhotoPicker/Picker/Util/Picker+PhotoManager.swift +++ b/Sources/HXPhotoPicker/Picker/Util/Picker+PhotoManager.swift @@ -13,7 +13,7 @@ import PhotosUI extension PhotoManager { func registerPhotoChangeObserver() { - let status = AssetManager.authorizationStatus() + let status = AssetPermissionsUtil.authorizationStatus if status == .notDetermined || status == .denied { return } diff --git a/Sources/HXPhotoPicker/Picker/Util/Picker+PhotoTools.swift b/Sources/HXPhotoPicker/Picker/Util/Picker+PhotoTools.swift index 2ef4cfdd..1fafcb22 100644 --- a/Sources/HXPhotoPicker/Picker/Util/Picker+PhotoTools.swift +++ b/Sources/HXPhotoPicker/Picker/Util/Picker+PhotoTools.swift @@ -48,38 +48,38 @@ extension PhotoTools { }else { if collection.localizedTitle == "最近项目" || collection.localizedTitle == "最近添加" { - albumName = "HXAlbumRecents".localized + albumName = .textManager.picker.albumRecentsTitle.text }else if collection.localizedTitle == "Camera Roll" || collection.localizedTitle == "相机胶卷" { - albumName = "HXAlbumCameraRoll".localized + albumName = .textManager.picker.albumCameraRollTitle.text }else { switch collection.assetCollectionSubtype { case .smartAlbumUserLibrary: - albumName = "HXAlbumCameraRoll".localized + albumName = .textManager.picker.albumCameraRollTitle.text case .smartAlbumVideos: - albumName = "HXAlbumVideos".localized + albumName = .textManager.picker.albumVideosTitle.text case .smartAlbumPanoramas: - albumName = "HXAlbumPanoramas".localized + albumName = .textManager.picker.albumPanoramasTitle.text case .smartAlbumFavorites: - albumName = "HXAlbumFavorites".localized + albumName = .textManager.picker.albumFavoritesTitle.text case .smartAlbumTimelapses: - albumName = "HXAlbumTimelapses".localized + albumName = .textManager.picker.albumTimelapsesTitle.text case .smartAlbumRecentlyAdded: - albumName = "HXAlbumRecentlyAdded".localized + albumName = .textManager.picker.albumRecentlyAddedTitle.text case .smartAlbumBursts: - albumName = "HXAlbumBursts".localized + albumName = .textManager.picker.albumBurstsTitle.text case .smartAlbumSlomoVideos: - albumName = "HXAlbumSlomoVideos".localized + albumName = .textManager.picker.albumSlomoVideosTitle.text case .smartAlbumSelfPortraits: - albumName = "HXAlbumSelfPortraits".localized + albumName = .textManager.picker.albumSelfPortraitsTitle.text case .smartAlbumScreenshots: - albumName = "HXAlbumScreenshots".localized + albumName = .textManager.picker.albumScreenshotsTitle.text case .smartAlbumDepthEffect: - albumName = "HXAlbumDepthEffect".localized + albumName = .textManager.picker.albumDepthEffectTitle.text case .smartAlbumLivePhotos: - albumName = "HXAlbumLivePhotos".localized + albumName = .textManager.picker.albumLivePhotosTitle.text case .smartAlbumAnimated: - albumName = "HXAlbumAnimated".localized + albumName = .textManager.picker.albumAnimatedTitle.text default: albumName = collection.localizedTitle } diff --git a/Sources/HXPhotoPicker/Picker/View/Album/AlbumListView.swift b/Sources/HXPhotoPicker/Picker/View/Album/AlbumListView.swift index 78e96944..8e53d0b7 100644 --- a/Sources/HXPhotoPicker/Picker/View/Album/AlbumListView.swift +++ b/Sources/HXPhotoPicker/Picker/View/Album/AlbumListView.swift @@ -159,14 +159,14 @@ open class AlbumListView: UIView, PhotoAlbumList, UITableViewDataSource, UITable } public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { - if config.allowLoadPhotoLibrary, AssetManager.authorizationStatusIsLimited() { + if config.allowLoadPhotoLibrary, AssetPermissionsUtil.isLimitedAuthorizationStatus { return 40 } return 0 } public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { - if config.allowLoadPhotoLibrary, AssetManager.authorizationStatusIsLimited() { + if config.allowLoadPhotoLibrary, AssetPermissionsUtil.isLimitedAuthorizationStatus { let config = config.albumList let view = tableView.dequeueReusableHeaderFooterView(withIdentifier: AlbumSectionHeaderView.className) as! AlbumSectionHeaderView view.titleColor = config.limitedStatusPromptColor diff --git a/Sources/HXPhotoPicker/Picker/View/Cell/PhotoPreviewViewCell.swift b/Sources/HXPhotoPicker/Picker/View/Cell/PhotoPreviewViewCell.swift index 9788ce6d..9c22ec76 100644 --- a/Sources/HXPhotoPicker/Picker/View/Cell/PhotoPreviewViewCell.swift +++ b/Sources/HXPhotoPicker/Picker/View/Cell/PhotoPreviewViewCell.swift @@ -30,6 +30,7 @@ open class PhotoPreviewViewCell: UICollectionViewCell, UIScrollViewDelegate { } public var scrollView: UIScrollView! public var scrollContainerView: UIView! { scrollContentView } + public var imageView: UIImageView { scrollContentView.imageView } public func showScrollContainerSubview() { scrollContentView.showOtherSubview() } public func hideScrollContainerSubview() { scrollContentView.hiddenOtherSubview() } diff --git a/Sources/HXPhotoPicker/Picker/View/Cell/PickerCameraViewCell.swift b/Sources/HXPhotoPicker/Picker/View/Cell/PickerCameraViewCell.swift index d871b18d..7797ec59 100644 --- a/Sources/HXPhotoPicker/Picker/View/Cell/PickerCameraViewCell.swift +++ b/Sources/HXPhotoPicker/Picker/View/Cell/PickerCameraViewCell.swift @@ -63,7 +63,7 @@ public class PickerCameraViewCell: UICollectionViewCell { } func canPreview() -> Bool { if !UIImagePickerController.isSourceTypeAvailable(.camera) || - AssetManager.cameraAuthorizationStatus() == .denied { + AssetPermissionsUtil.cameraAuthorizationStatus == .denied { return false } return true @@ -76,7 +76,7 @@ public class PickerCameraViewCell: UICollectionViewCell { if captureView.sessionCompletion || !allowPreview { return } - AssetManager.requestCameraAccess { (granted) in + AssetPermissionsUtil.requestCameraAccess { (granted) in if granted { self.startSession() }else { diff --git a/Sources/HXPhotoPicker/Picker/View/PhotoPreviewContentPhotoView.swift b/Sources/HXPhotoPicker/Picker/View/PhotoPreviewContentPhotoView.swift index e5c07f5f..6f319715 100644 --- a/Sources/HXPhotoPicker/Picker/View/PhotoPreviewContentPhotoView.swift +++ b/Sources/HXPhotoPicker/Picker/View/PhotoPreviewContentPhotoView.swift @@ -46,7 +46,6 @@ class PhotoPreviewContentPhotoView: UIView, PhotoPreviewContentViewProtocol { func initViews() { imageView = ImageView() imageView.size = size - imageView.imageView.size = size addSubview(imageView) } diff --git a/Sources/HXPhotoPicker/Picker/View/ToolBar/PhotoToolBarView.swift b/Sources/HXPhotoPicker/Picker/View/ToolBar/PhotoToolBarView.swift index 71e10320..b9ee5d92 100644 --- a/Sources/HXPhotoPicker/Picker/View/ToolBar/PhotoToolBarView.swift +++ b/Sources/HXPhotoPicker/Picker/View/ToolBar/PhotoToolBarView.swift @@ -86,7 +86,7 @@ public class PhotoToolBarView: UIToolbar, PhotoToolBar { private var isShowPrompt: Bool { type == .picker && - AssetManager.authorizationStatusIsLimited() && + AssetPermissionsUtil.isLimitedAuthorizationStatus && pickerConfig.photoList.bottomView.isShowPrompt && pickerConfig.allowLoadPhotoLibrary } diff --git a/Swift/Classes/Controller/PickerConfigurationViewController.swift b/Swift/Classes/Controller/PickerConfigurationViewController.swift index dc135bed..393a1254 100644 --- a/Swift/Classes/Controller/PickerConfigurationViewController.swift +++ b/Swift/Classes/Controller/PickerConfigurationViewController.swift @@ -335,7 +335,7 @@ extension PickerConfigurationViewController { for title in titles { alert.addAction(UIAlertAction.init(title: title, style: .default, handler: { [weak self] (action) in guard let self = self else { return } - self.config.languageType = LanguageType(rawValue: titles.firstIndex(of: action.title!)!)! + self.config.languageType = LanguageType.type(for: titles.firstIndex(of: action.title!)!) self.tableView.reloadRows(at: [indexPath], with: .fade) })) } @@ -940,6 +940,8 @@ extension LanguageType { return "法语" case .arabic: return "阿拉伯" + case .custom: + return "自定义" } } } @@ -1045,3 +1047,37 @@ extension PhotoPreviewViewController.PlayType { } } } + +extension LanguageType { + + static func type(for value: Int) -> LanguageType { + switch value { + case 1: + return .simplifiedChinese + case 2: + return .traditionalChinese + case 3: + return .japanese + case 4: + return .korean + case 5: + return .english + case 6: + return .thai + case 7: + return .indonesia + case 8: + return .vietnamese + case 9: + return .russian + case 10: + return .german + case 11: + return .french + case 12: + return .arabic + default: + return .system + } + } +} diff --git a/Swift/Classes/Controller/PickerResultViewController.swift b/Swift/Classes/Controller/PickerResultViewController.swift index 5ce40716..6cd00a76 100644 --- a/Swift/Classes/Controller/PickerResultViewController.swift +++ b/Swift/Classes/Controller/PickerResultViewController.swift @@ -99,6 +99,9 @@ class PickerResultViewController: UIViewController, if !selectedAssets.isEmpty, !isPublish { config.photoList.cameraCell.cameraImageName = "hx_picker_photoList_photograph" } +// let bundle = Bundle(path: Bundle.main.path(forResource: "custom", ofType: "lproj")!)! +// PhotoManager.shared.customLanguages = [.init(language: "en", bundle: bundle)] +// config.languageType = .custom() loadFonts() // config.editor.buttonType = .top collectionViewTopConstraint.constant = 20 diff --git a/Swift/Resources/custom.lproj/Localizable.strings b/Swift/Resources/custom.lproj/Localizable.strings new file mode 100644 index 00000000..85604eb3 --- /dev/null +++ b/Swift/Resources/custom.lproj/Localizable.strings @@ -0,0 +1,138 @@ +"无法访问相册中照片" = "无法访问相册中照片-测试"; +"当前无照片访问权限,建议前往系统设置,\n允许访问「照片」中的「所有照片」。" = "当前无照片访问权限,建议前往系统设置,\n允许访问「照片」中的「所有照片」。-测试"; +"前往系统设置" = "前往系统设置"; +"设置" = "设置-测试"; +"取消" = "取消-测试"; +"相册" = "相册-测试"; +"完成" = "完成-测试"; +"原图" = "原图-测试"; +"原片" = "原片-测试"; +"预览" = "预览-测试"; +"编辑" = "编辑-测试"; +"返回" = "返回-测试"; +"还原" = "还原-测试"; +"自由" = "自由-测试"; +"没有可选资源" = "没有可选资源-测试"; +"照片和视频不能同时选择" = "照片和视频不能同时选择-测试"; +"最多只能选择%d张照片" = "最多只能选择%d张照片-测试"; +"已达到最大选择数" = "已达到最大选择数-测试"; +"视频最大时长为%d秒,无法选择" = "视频最大时长为%d秒,无法选择-测试"; +"视频最小时长为%d秒,无法选择" = "视频最小时长为%d秒,无法选择-测试"; +"视频和照片不能同时选择" = "视频和照片不能同时选择-测试"; +"最多只能选择%d个视频" = "最多只能选择%d个视频-测试"; +"正在下载" = "正在下载-测试"; +"下载失败" = "下载失败-测试"; +"没有照片" = "没有照片-测试"; +"你可以使用相机拍些照片" = "你可以使用相机拍些照片-测试"; +"无法访问相册中所有照片,\n请允许访问「照片」中的「所有照片」" = "无法访问相册中所有照片,\n建议允许访问「照片」中的「所有照片」-测试"; +"只能查看允许访问的照片和相关相册" = "只能查看允许访问的照片和相关相册-测试"; +"无法使用相机!" = "无法使用相机!-测试"; +"无法使用相机功能" = "无法使用相机功能-测试"; +"请前往系统设置中,允许访问「相机」。" = "请前往系统设置中,允许访问「相机」。-测试"; +"照片大小超过最大限制" = "照片大小超过最大限制-测试"; +"视频大小超过最大限制" = "视频大小超过最大限制-测试"; +"视频导出失败" = "视频导出失败-测试"; +"保存失败" = "保存失败-测试"; +"所有照片" = "所有照片-测试"; +"正在处理..." = "正在处理...-测试"; +"处理失败" = "处理失败-测试"; +"导出失败" = "导出失败-测试"; +"视频加载中" = "视频加载中-测试"; +"视频加载失败!" = "视频加载失败!-测试"; +"视频可编辑最大时长为%d秒,无法编辑" = "视频可编辑最大时长为%d秒,无法编辑-测试"; +"相机不可用!" = "相机不可用!-测试"; +"确定" = "确定-测试"; +"提示" = "提示-测试"; +"图片获取失败!" = "图片获取失败!-测试"; +"视频获取失败!" = "视频获取失败!-测试"; +"设置失败!" = "设置失败!-测试"; +"唯美" = "唯美-测试"; +"梦幻" = "梦幻-测试"; +"老电影" = "老电影-测试"; +"怀旧" = "怀旧-测试"; +"黑白" = "黑白-测试"; +"色调" = "色调-测试"; +"模糊" = "模糊-测试"; +"岁月" = "岁月-测试"; +"单色" = "单色-测试"; +"褪色" = "褪色-测试"; +"冲印" = "冲印-测试"; +"铬黄" = "铬黄-测试"; +"暂无配乐" = "暂无配乐-测试"; +"配乐" = "配乐-测试"; +"视频原声" = "视频原声-测试"; +"正在同步iCloud" = "正在同步iCloud-测试"; +"iCloud同步失败" = "iCloud同步失败-测试"; +"拖动到此处删除" = "拖动到此处删除-测试"; +"松手即可删除" = "松手即可删除-测试"; +"搜索" = "搜索-测试"; +"背景音乐" = "背景音乐-测试"; +"搜索歌名" = "搜索歌名-测试"; +"此歌曲暂无歌词,请您欣赏" = "此歌曲暂无歌词,请您欣赏-测试"; +"选择" = "选择-测试"; +"取消选择" = "取消选择-测试"; +"歌词" = "歌词-测试"; +"拍摄失败!" = "拍摄失败!-测试"; +"摄像头切换失败!" = "摄像头切换失败!-测试"; +"相机初始化失败!" = "相机初始化失败!-测试"; +"轻触拍照" = "轻触拍照-测试"; +"按住摄像" = "按住摄像-测试"; +"轻触拍照,按住摄像" = "轻触拍照,按住摄像-测试"; +"拍摄时长不足%d秒" = "拍摄时长不足%d秒-测试"; +"麦克风添加失败,录制视频会没有声音哦!" = "麦克风添加失败,录制视频会没有声音哦!-测试"; +"无法使用麦克风" = "无法使用麦克风-测试"; +"请在设置-隐私-相机中允许访问麦克风" = "请在设置-隐私-相机中允许访问麦克风-测试"; +"更多" = "更多-测试"; +"张照片" = "张照片-测试"; +"个视频" = "个视频-测试"; +"实况" = "实况-测试"; +"照片" = "照片-测试"; +"视频" = "视频-测试"; +"点击摄像" = "点击摄像-测试"; +"音量" = "音量-测试"; +"明亮" = "明亮-测试"; +"删除" = "删除-测试"; +"原始比例" = "原始比例-测试"; +"自由格式" = "自由格式-测试"; +"正方形" = "正方形-测试"; +"亮度" = "亮度-测试"; +"对比度" = "对比度-测试"; +"饱和度" = "饱和度-测试"; +"曝光度" = "曝光度-测试"; +"色温" = "色温-测试"; +"暗角" = "暗角-测试"; +"锐化" = "锐化-测试"; +"蒙版素材" = "蒙版素材-测试"; +"筛选" = "筛选-测试"; +"筛选条件" = "筛选条件-测试"; +"无筛选条件" = "无筛选条件-测试"; +"没有项目" = "没有项目-测试"; +"筛选结果" = "筛选结果-测试"; +"所有项目" = "所有项目-测试"; +"已编辑" = "已编辑-测试"; +"仅显示" = "仅显示-测试"; +"筛选照片" = "照片-测试"; +"筛选视频" = "视频-测试"; +"选择相册" = "选择相册-测试"; +"我的相册" = "我的相册-测试"; +"媒体类型" = "媒体类型-测试"; +"查看全部" = "查看全部-测试"; +"全部" = "全部-测试"; +"清空已编辑的内容" = "清空已编辑的内容-测试"; +"高光" = "高光-测试"; +"阴影" = "阴影-测试"; + +"HXAlbumCameraRoll" = "所有照片-测试"; +"HXAlbumPanoramas" = "全景照片-测试"; +"HXAlbumVideos" = "视频-测试"; +"HXAlbumFavorites" = "个人收藏-测试"; +"HXAlbumTimelapses" = "延时摄影-测试"; +"HXAlbumRecents" = "最近项目-测试"; +"HXAlbumRecentlyAdded" = "最近添加-测试"; +"HXAlbumBursts" = "连拍快照-测试"; +"HXAlbumSlomoVideos" = "慢动作-测试"; +"HXAlbumSelfPortraits" = "自拍-测试"; +"HXAlbumScreenshots" = "屏幕快照-测试"; +"HXAlbumDepthEffect" = "人像-测试"; +"HXAlbumLivePhotos" = "实况照片-测试"; +"HXAlbumAnimated" = "动图-测试";