Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/ios.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarino Faggiana <m.faggiana@twsweb.it>2018-11-11 16:23:16 +0300
committerMarino Faggiana <marinofaggiana@MacBook-Pro-di-Marino.local>2018-11-11 16:23:16 +0300
commit9b1b0aa3fc57cff73576455437bf87a83768fdff (patch)
tree2831c1d45718782d18d74d2d47bb578bae52ced1 /Libraries external
parent80ea059154ab7945d1b853f6fc8bfb2c4ce55c52 (diff)
remove old library
Diffstat (limited to 'Libraries external')
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetCheckmark.h50
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetCheckmark.m165
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetCollectionViewCell.h54
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetCollectionViewCell.m319
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetCollectionViewController.h33
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetCollectionViewController.m564
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetItemViewController.h45
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetItemViewController.m422
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetPlayButton.h31
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetPlayButton.m180
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetScrollView.h67
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetScrollView.m713
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetSelectionButton.h31
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetSelectionButton.m122
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetSelectionLabel.h99
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetSelectionLabel.m219
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetThumbnailOverlay.h36
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetThumbnailOverlay.m156
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetThumbnailStacks.h39
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetThumbnailStacks.m141
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetThumbnailView.h38
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetThumbnailView.m196
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridSelectedView.h41
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridSelectedView.m142
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridView.h33
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridView.m86
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridViewCell.h44
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridViewCell.m204
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridViewController.h50
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridViewController.m802
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridViewFooter.h38
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridViewFooter.m146
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridViewLayout.h33
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsGridViewLayout.m109
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsNavigationController.h31
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsNavigationController.m119
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPageView.h37
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPageView.m111
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPageViewController.h69
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPageViewController.m422
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerAccessDeniedView.h31
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerAccessDeniedView.m126
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock.pngbin1610 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@2x.pngbin9373 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@3x.pngbin7581 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@2x.pngbin264 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@3x.pngbin389 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@2x.pngbin240 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@3x.pngbin332 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@2x.pngbin594 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@3x.pngbin859 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@2x.pngbin647 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@3x.pngbin865 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@2x.pngbin442 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@3x.pngbin596 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@2x.pngbin853 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@3x.pngbin1007 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@2x.pngbin346 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@3x.pngbin483 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@2x.pngbin551 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@3x.pngbin769 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall.pngbin339 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@2x.pngbin1437 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@3x.pngbin2437 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@2x.pngbin563 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@3x.pngbin852 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@2x.pngbin876 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@3x.pngbin1502 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall.pngbin642 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@2x.pngbin1648 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@3x.pngbin2556 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@2x.pngbin456 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@3x.pngbin635 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall.pngbin257 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@2x.pngbin402 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@3x.pngbin530 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark.pngbin544 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@2x.pngbin1102 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@3x.pngbin1656 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow.pngbin1246 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@2x.pngbin2093 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@3x.pngbin3841 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected.pngbin1242 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@2x.pngbin3315 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@3x.pngbin6516 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow.pngbin224 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@2x.pngbin368 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@3x.pngbin326 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset.pngbin283 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@2x.pngbin600 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@3x.pngbin684 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum.pngbin1023 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@2x.pngbin573 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@3x.pngbin921 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared.pngbin1292 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@2x.pngbin1345 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@3x.pngbin1975 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll.pngbin679 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@2x.pngbin1315 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@3x.pngbin1894 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient.pngbin209 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@2x.pngbin324 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@3x.pngbin396 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@2x.pngbin1136 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@3x.pngbin1602 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton.pngbin269 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@2x.pngbin352 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@3x.pngbin537 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton.pngbin387 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@2x.pngbin738 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@3x.pngbin1043 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask.pngbin2877 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@2x.pngbin2258 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@3x.pngbin3921 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask.pngbin2550 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@2x.pngbin1780 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@3x.pngbin2419 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ar.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/da.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/de.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/en.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/es-MX.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/es.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/fi.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/fr.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/he.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/hi-IN.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/hu.lproj/CTAssetsPicker.strings47
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/id.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/it.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ja.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ko.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/nl-NL.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/nl.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/pt-PT.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/pt.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ru.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/sv.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/tr.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hans.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hant.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.h374
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerController.m621
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerDefines.h69
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerNoAssetsView.h31
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsPickerNoAssetsView.m133
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsViewControllerTransition.h38
-rwxr-xr-xLibraries external/CTAssetsPickerController/CTAssetsViewControllerTransition.m236
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/CTAssetsPageViewController+Internal.h31
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/CTAssetsPickerController+Internal.h42
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.h37
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.m43
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/NSDateFormatter+CTAssetsPickerController.h36
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/NSDateFormatter+CTAssetsPickerController.m93
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.h33
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.m44
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.h33
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.m38
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/PHAsset+CTAssetsPickerController.h39
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/PHAsset+CTAssetsPickerController.m79
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/PHAssetCollection+CTAssetsPickerController.h35
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/PHAssetCollection+CTAssetsPickerController.m103
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/PHImageManager+CTAssetsPickerController.h15
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/PHImageManager+CTAssetsPickerController.m40
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.h33
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.m49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.h33
-rwxr-xr-xLibraries external/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.m37
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock.pngbin1610 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock@2x.pngbin9373 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock@3x.pngbin7581 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/BadgeAllPhotos@2x.pngbin264 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/BadgeAllPhotos@3x.pngbin389 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/BadgeBurst@2x.pngbin240 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/BadgeBurst@3x.pngbin332 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/BadgeFavorites@2x.pngbin594 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/BadgeFavorites@3x.pngbin859 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/BadgeLastImport@2x.pngbin647 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/BadgeLastImport@3x.pngbin865 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/BadgePanorama@2x.pngbin442 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/BadgePanorama@3x.pngbin596 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/BadgeRecentlyDeleted@2x.pngbin853 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/BadgeRecentlyDeleted@3x.pngbin1007 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/BadgeScreenshots@2x.pngbin346 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/BadgeScreenshots@3x.pngbin483 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/BadgeSelfPortraits@2x.pngbin551 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/BadgeSelfPortraits@3x.pngbin769 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/Contents.json22
-rw-r--r--Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall.pngbin339 -> 0 bytes
-rw-r--r--Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall@2x.pngbin1437 -> 0 bytes
-rw-r--r--Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall@3x.pngbin2437 -> 0 bytes
-rw-r--r--Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/BadgeSlomo@2x.pngbin563 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/BadgeSlomo@3x.pngbin852 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/BadgeTimelapse@2x.pngbin876 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/BadgeTimelapse@3x.pngbin1502 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall.pngbin642 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall@2x.pngbin1648 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall@3x.pngbin2556 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/BadgeVideo@2x.pngbin456 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/BadgeVideo@3x.pngbin635 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall.pngbin257 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall@2x.pngbin402 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall@3x.pngbin530 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark.pngbin544 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark@2x.pngbin1102 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark@3x.pngbin1656 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow.pngbin1246 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow@2x.pngbin2093 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow@3x.pngbin3841 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected.pngbin1242 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected@2x.pngbin3315 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected@3x.pngbin6516 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Contents.json6
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow.pngbin224 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow@2x.pngbin368 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow@3x.pngbin326 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset.pngbin283 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset@2x.pngbin600 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset@3x.pngbin684 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum.pngbin1023 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum@2x.pngbin573 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum@3x.pngbin921 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared.pngbin1292 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared@2x.pngbin1345 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared@3x.pngbin1975 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll.pngbin679 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll@2x.pngbin1315 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll@3x.pngbin1894 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient.pngbin209 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient@2x.pngbin324 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient@3x.pngbin396 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/Contents.json22
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/GridHiddenAlbum@2x.pngbin1136 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/GridHiddenAlbum@3x.pngbin1602 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton.pngbin269 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton@2x.pngbin352 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton@3x.pngbin537 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton.pngbin387 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton@2x.pngbin738 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton@3x.pngbin1043 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask.pngbin2877 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask@2x.pngbin2258 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask@3x.pngbin3921 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/Contents.json23
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask.pngbin2550 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask@2x.pngbin1780 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask@3x.pngbin2419 -> 0 bytes
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/ar.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/da.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/de.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/en.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/es-MX.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/es.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/fi.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/fr.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/he.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/hi-IN.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/hu.lproj/CTAssetsPicker.strings47
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/id.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/it.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/ja.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/ko.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/nl-NL.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/nl.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/pt-PT.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/pt.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/ru.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/sv.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/tr.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/zh-Hans.lproj/CTAssetsPicker.strings49
-rwxr-xr-xLibraries external/CTAssetsPickerController/Resources/zh-Hant.lproj/CTAssetsPicker.strings49
297 files changed, 0 insertions, 11798 deletions
diff --git a/Libraries external/CTAssetsPickerController/CTAssetCheckmark.h b/Libraries external/CTAssetsPickerController/CTAssetCheckmark.h
deleted file mode 100755
index c5c7de6f1..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetCheckmark.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-
-/**
- * The check mark to show selected asset.
- */
-@interface CTAssetCheckmark : UIView
-
-#pragma mark Customizing Appearance
-
-/**
- * @name Customizing Appearance
- */
-
-/**
- * To set margin of the check mark from specific edges.
- *
- * @param margin The margin from the edges.
- * @param edgeX The layout attribute respresents vertical edge that the check mark pins to. Either `NSLayoutAttributeLeft` or `NSLayoutAttributeRight`.
- * @param edgeY The layout attribute respresents horizontal edge that the check mark pins to. Either `NSLayoutAttributeTop` or `NSLayoutAttributeBottom`.
- */
-- (void)setMargin:(CGFloat)margin forVerticalEdge:(NSLayoutAttribute)edgeX horizontalEdge:(NSLayoutAttribute)edgeY UI_APPEARANCE_SELECTOR;
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetCheckmark.m b/Libraries external/CTAssetsPickerController/CTAssetCheckmark.m
deleted file mode 100755
index 0c0671854..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetCheckmark.m
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetCheckmark.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-
-
-/**
- * The check mark to show selected asset.
- */
-@interface CTAssetCheckmark ()
-
-
-#pragma mark Managing Subviews
-
-/**
- * The image view of the check mark shadow.
- */
-@property (nonatomic, strong) UIImageView *shadowImageView;
-
-/**
- * The image view of the check mark.
- */
-@property (nonatomic, strong) UIImageView *checkmarkImageView;
-
-
-#pragma mark Managing Auto Layout
-
-/**
- * The constraint for pinning the check mark to vertical edge.
- */
-@property (nonatomic, strong) NSLayoutConstraint *verticalConstraint;
-
-/**
- * The constraint for pinning the check mark to horizontal edge.
- */
-@property (nonatomic, strong) NSLayoutConstraint *horizontalConstraint;
-
-/**
- * Determines whether or not the constraints have been set up.
- */
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-@implementation CTAssetCheckmark
-
-#pragma mark Initializing a Check Mark Object
-
-/**
- * Designated Initializer
- *
- * @return an initialized check mark object
- */
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
-
- if (self)
- {
- self.userInteractionEnabled = NO;
- self.isAccessibilityElement = NO;
- [self setupViews];
- }
-
- return self;
-}
-
-
-#pragma mark Setting up Subviews
-
-/**
- * To setup subviews.
- */
-- (void)setupViews
-{
- UIImage *shadowImage = [UIImage ctassetsPickerImageNamed:@"CheckmarkShadow"];
- UIImageView *shadowImageView = [[UIImageView alloc] initWithImage:shadowImage];
- shadowImageView.userInteractionEnabled = NO;
- self.shadowImageView = shadowImageView;
- [self addSubview:self.shadowImageView];
-
- UIImage *checkmarkImage = [UIImage ctassetsPickerImageNamed:@"Checkmark"];
- checkmarkImage = [checkmarkImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
- UIImageView *checkmarkImageView = [[UIImageView alloc] initWithImage:checkmarkImage];
- checkmarkImageView.userInteractionEnabled = NO;
- self.checkmarkImageView = checkmarkImageView;
- [self addSubview:self.checkmarkImageView];
-}
-
-
-#pragma mark Customizing Appearance
-
-/**
- * To set margin of the check mark from specific edges.
- *
- * @param margin The margin from the edges.
- * @param edgeX The layout attribute respresents vertical edge that the check mark pins to. Either `NSLayoutAttributeLeft` or `NSLayoutAttributeRight`.
- * @param edgeY The layout attribute respresents horizontal edge that the check mark pins to. Either `NSLayoutAttributeTop` or `NSLayoutAttributeBottom`.
- */
-- (void)setMargin:(CGFloat)margin forVerticalEdge:(NSLayoutAttribute)edgeX horizontalEdge:(NSLayoutAttribute)edgeY
-{
- NSAssert(edgeX == NSLayoutAttributeLeft || edgeX == NSLayoutAttributeRight, @"Vertical edge must be NSLayoutAttributeLeft or NSLayoutAttributeRight");
- NSAssert(edgeY == NSLayoutAttributeTop || edgeY == NSLayoutAttributeBottom, @"Horizontal edge must be NSLayoutAttributeTop or NSLayoutAttributeBottom");
-
- [self.superview removeConstraints:@[self.verticalConstraint, self.horizontalConstraint]];
- self.verticalConstraint = [self autoPinEdgeToSuperviewEdge:(ALEdge)edgeX withInset:margin];
- self.horizontalConstraint = [self autoPinEdgeToSuperviewEdge:(ALEdge)edgeY withInset:margin];
-}
-
-
-#pragma mark Triggering Auto Layout
-
-/**
- * Updates constraints of the check mark.
- */
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- CGSize size = [UIImage ctassetsPickerImageNamed:@"CheckmarkShadow"].size;
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityRequired forConstraints:^{
- [self autoSetDimensionsToSize:size];
- }];
-
- [self.shadowImageView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self.checkmarkImageView autoCenterInSuperview];
-
- self.verticalConstraint = [self autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:0];
- self.horizontalConstraint = [self autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:0];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetCollectionViewCell.h b/Libraries external/CTAssetsPickerController/CTAssetCollectionViewCell.h
deleted file mode 100755
index 9857b49bc..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetCollectionViewCell.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import <Photos/Photos.h>
-#import "CTAssetThumbnailStacks.h"
-
-
-
-@interface CTAssetCollectionViewCell : UITableViewCell
-
-@property (nonatomic, strong, readonly, nonnull) CTAssetThumbnailStacks *thumbnailStacks;
-
-@property (nonatomic, weak, nullable) UIFont *titleFont UI_APPEARANCE_SELECTOR;
-@property (nonatomic, strong, nullable) UIColor *titleTextColor UI_APPEARANCE_SELECTOR;
-@property (nonatomic, strong, nullable) UIColor *selectedTitleTextColor UI_APPEARANCE_SELECTOR;
-
-@property (nonatomic, weak, nullable) UIFont *countFont UI_APPEARANCE_SELECTOR;
-@property (nonatomic, strong, nullable) UIColor *countTextColor UI_APPEARANCE_SELECTOR;
-@property (nonatomic, strong, nullable) UIColor *selectedCountTextColor UI_APPEARANCE_SELECTOR;
-
-@property (nonatomic, strong, nullable) UIColor *accessoryColor UI_APPEARANCE_SELECTOR;
-@property (nonatomic, strong, nullable) UIColor *selectedAccessoryColor UI_APPEARANCE_SELECTOR;
-
-@property (nonatomic, weak, nullable) UIColor *selectedBackgroundColor UI_APPEARANCE_SELECTOR;
-
-
-- (instancetype)initWithThumbnailSize:(CGSize)size reuseIdentifier:(nullable NSString *)reuseIdentifier;
-- (void)bind:(nonnull PHAssetCollection *)collection count:(NSUInteger)count;
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetCollectionViewCell.m b/Libraries external/CTAssetsPickerController/CTAssetCollectionViewCell.m
deleted file mode 100755
index c5f378faf..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetCollectionViewCell.m
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetCollectionViewCell.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-#import "NSNumberFormatter+CTAssetsPickerController.h"
-
-
-
-@interface CTAssetCollectionViewCell ()
-
-@property (nonatomic, assign) CGSize thumbnailSize;
-
-@property (nonatomic, strong) CTAssetThumbnailStacks *thumbnailStacks;
-@property (nonatomic, strong) UIView *labelsView;
-@property (nonatomic, strong) UILabel *titleLabel;
-@property (nonatomic, strong) UILabel *countLabel;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@property (nonatomic, strong) PHAssetCollection *collection;
-@property (nonatomic, assign) NSUInteger count;
-
-@end
-
-
-
-
-
-@implementation CTAssetCollectionViewCell
-
-- (instancetype)initWithThumbnailSize:(CGSize)size reuseIdentifier:(NSString *)reuseIdentifier;
-{
- if (self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier])
- {
- _thumbnailSize = size;
-
- _titleTextColor = CTAssetCollectionViewCellTitleTextColor;
- _selectedTitleTextColor = CTAssetCollectionViewCellTitleTextColor;
- _countTextColor = CTAssetCollectionViewCellCountTextColor;
- _selectedCountTextColor = CTAssetCollectionViewCellCountTextColor;
-
- _accessoryColor = CTAssetCollectionViewCellAccessoryColor;
- _selectedAccessoryColor = CTAssetCollectionViewCellAccessoryColor;
-
- self.opaque = YES;
- self.isAccessibilityElement = YES;
- self.textLabel.backgroundColor = self.backgroundColor;
- self.detailTextLabel.backgroundColor = self.backgroundColor;
- self.accessoryType = UITableViewCellAccessoryNone;
-
- [self setupViews];
- }
-
- return self;
-}
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- CTAssetThumbnailStacks *thumbnailStacks = [CTAssetThumbnailStacks newAutoLayoutView];
- thumbnailStacks.thumbnailSize = self.thumbnailSize;
- self.thumbnailStacks = thumbnailStacks;
-
- UILabel *titleLabel = [UILabel newAutoLayoutView];
- titleLabel.font = CTAssetCollectionViewCellTitleFont;
- titleLabel.textColor = self.titleTextColor;
- self.titleLabel = titleLabel;
-
- UILabel *countLabel = [UILabel newAutoLayoutView];
- countLabel.font = CTAssetCollectionViewCellCountFont;
- countLabel.textColor = self.countTextColor;
- self.countLabel = countLabel;
-
- UIView *labelsView = [UIView newAutoLayoutView];
- [labelsView addSubview:self.titleLabel];
- [labelsView addSubview:self.countLabel];
- self.labelsView = labelsView;
-
- [self.contentView addSubview:self.thumbnailStacks];
- [self.contentView addSubview:self.labelsView];
-
- UIImage *accessory = [UIImage ctassetsPickerImageNamed:@"DisclosureArrow"];
- accessory = [accessory imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
- UIImageView *accessoryView = [[UIImageView alloc] initWithImage:accessory];
- accessoryView.tintColor = self.accessoryColor;
- self.accessoryView = accessoryView;
-}
-
-- (void)setupPlaceholderImage
-{
- NSString *imageName = [self placeHolderImageNameOfCollectionSubtype:self.collection.assetCollectionSubtype];
- UIImage *image = [UIImage ctassetsPickerImageNamed:imageName];
- image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
-
- for (CTAssetThumbnailView *thumbnailView in self.thumbnailStacks.thumbnailViews)
- {
- [thumbnailView bind:nil assetCollection:nil];
- thumbnailView.backgroundImage = image;
- }
-}
-
-- (NSString *)placeHolderImageNameOfCollectionSubtype:(PHAssetCollectionSubtype)subtype
-{
- if (subtype == PHAssetCollectionSubtypeSmartAlbumUserLibrary)
- return @"GridEmptyCameraRoll";
-
- else if (subtype == PHAssetCollectionSubtypeSmartAlbumAllHidden)
- return @"GridHiddenAlbum";
-
- else if (subtype == PHAssetCollectionSubtypeAlbumCloudShared)
- return @"GridEmptyAlbumShared";
-
- else
- return @"GridEmptyAlbum";
-}
-
-
-#pragma mark - Apperance
-
-- (UIFont *)titleFont
-{
- return self.titleLabel.font;
-}
-
-- (void)setTitleFont:(UIFont *)titleFont
-{
- UIFont *font = (titleFont) ? titleFont : CTAssetCollectionViewCellTitleFont;
- self.titleLabel.font = font;
-}
-
-- (void)setTitleTextColor:(UIColor *)titleTextColor
-{
- UIColor *color = (titleTextColor) ? titleTextColor : CTAssetCollectionViewCellTitleTextColor;
- _titleTextColor = color;
-}
-
-- (void)setSelectedTitleTextColor:(UIColor *)titleTextColor
-{
- UIColor *color = (titleTextColor) ? titleTextColor : CTAssetCollectionViewCellTitleTextColor;
- _selectedTitleTextColor = color;
-}
-
-- (UIFont *)countFont
-{
- return self.countLabel.font;
-}
-
-- (void)setCountFont:(UIFont *)countFont
-{
- UIFont *font = (countFont) ? countFont : CTAssetCollectionViewCellCountFont;
- self.countLabel.font = font;
-}
-
-- (void)setCountTextColor:(UIColor *)countTextColor
-{
- UIColor *color = (countTextColor) ? countTextColor : CTAssetCollectionViewCellCountTextColor;
- _countTextColor = color;
-}
-
-- (void)setSelectedCountTextColor:(UIColor *)countTextColor
-{
- UIColor *color = (countTextColor) ? countTextColor : CTAssetCollectionViewCellCountTextColor;
- _selectedCountTextColor = color;
-}
-
-- (void)setAccessoryColor:(UIColor *)accessoryColor
-{
- UIColor *color = (accessoryColor) ? accessoryColor : CTAssetCollectionViewCellAccessoryColor;
- _accessoryColor = color;
-}
-
-- (void)setSelectedAccessoryColor:(UIColor *)accessoryColor
-{
- UIColor *color = (accessoryColor) ? accessoryColor : CTAssetCollectionViewCellAccessoryColor;
- _selectedAccessoryColor = color;
-}
-
-- (UIColor *)selectedBackgroundColor
-{
- return self.selectedBackgroundView.backgroundColor;
-}
-
-- (void)setSelectedBackgroundColor:(UIColor *)selectedBackgroundColor
-{
- if (!selectedBackgroundColor)
- self.selectedBackgroundView = nil;
- else
- {
- UIView *view = [UIView new];
- view.backgroundColor = selectedBackgroundColor;
- self.selectedBackgroundView = view;
- }
-}
-
-
-#pragma mark - Override highlighted / selected
-
-- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
-{
- [super setHighlighted:highlighted animated:animated];
- [self.thumbnailStacks setHighlighted:highlighted];
-
- self.titleLabel.textColor = (highlighted) ? self.selectedTitleTextColor : self.titleTextColor;
- self.countLabel.textColor = (highlighted) ? self.selectedCountTextColor : self.countTextColor;
- self.accessoryView.tintColor = (highlighted) ? self.selectedAccessoryColor : self.accessoryColor;
-}
-
-- (void)setSelected:(BOOL)selected animated:(BOOL)animated
-{
- [super setSelected:selected animated:animated];
- [self.thumbnailStacks setHighlighted:selected];
-
- self.titleLabel.textColor = (selected) ? self.selectedTitleTextColor : self.titleTextColor;
- self.countLabel.textColor = (selected) ? self.selectedCountTextColor : self.countTextColor;
- self.accessoryView.tintColor = (selected) ? self.selectedAccessoryColor : self.accessoryColor;
-}
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- CGSize size = self.thumbnailSize;
- CGFloat top = self.thumbnailStacks.edgeInsets.top;
- size.height += top;
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityRequired forConstraints:^{
- [self.thumbnailStacks autoSetDimensionsToSize:size];
- }];
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityDefaultHigh forConstraints:^{
- [self.thumbnailStacks autoPinEdgesToSuperviewMarginsExcludingEdge:ALEdgeTrailing];
- }];
-
- [self.labelsView autoAlignAxisToSuperviewAxis:ALAxisHorizontal];
- [self.labelsView autoPinEdge:ALEdgeLeading
- toEdge:ALEdgeTrailing
- ofView:self.thumbnailStacks
- withOffset:self.labelsView.layoutMargins.left
- relation:NSLayoutRelationGreaterThanOrEqual];
-
- [self.titleLabel autoPinEdgesToSuperviewMarginsExcludingEdge:ALEdgeBottom];
- [self.countLabel autoPinEdgesToSuperviewMarginsExcludingEdge:ALEdgeTop];
- [self.countLabel autoPinEdge:ALEdgeTop
- toEdge:ALEdgeBottom
- ofView:self.titleLabel
- withOffset:self.countLabel.layoutMargins.top
- relation:NSLayoutRelationGreaterThanOrEqual];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-
-#pragma mark - Bind asset collection
-
-- (void)bind:(PHAssetCollection *)collection count:(NSUInteger)count
-{
- self.collection = collection;
- self.count = count;
-
- [self setupPlaceholderImage];
-
- self.titleLabel.text = collection.localizedTitle;
-
- if (count != NSNotFound)
- {
- NSNumberFormatter *nf = [NSNumberFormatter new];
- self.countLabel.text = [nf ctassetsPickerStringFromAssetsCount:count];
- }
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
-}
-
-
-#pragma mark - Accessibility label
-
-- (NSString *)accessibilityLabel
-{
- NSString *title = self.titleLabel.text;
- NSString *count = [NSString stringWithFormat:CTAssetsPickerLocalizedString(@"%@ Photos", nil), self.countLabel.text];
-
- NSArray *labels = @[title, count];
- return [labels componentsJoinedByString:@","];
-}
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetCollectionViewController.h b/Libraries external/CTAssetsPickerController/CTAssetCollectionViewController.h
deleted file mode 100755
index 91c1d2c7c..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetCollectionViewController.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetCollectionViewController : UITableViewController
-
-- (void)reloadUserInterface;
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetCollectionViewController.m b/Libraries external/CTAssetsPickerController/CTAssetCollectionViewController.m
deleted file mode 100755
index 0daf3c617..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetCollectionViewController.m
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsPickerController.h"
-#import "CTAssetsPickerController+Internal.h"
-#import "CTAssetCollectionViewController.h"
-#import "CTAssetCollectionViewCell.h"
-#import "CTAssetsGridViewController.h"
-#import "PHAssetCollection+CTAssetsPickerController.h"
-#import "PHAsset+CTAssetsPickerController.h"
-#import "PHImageManager+CTAssetsPickerController.h"
-#import "NSBundle+CTAssetsPickerController.h"
-
-
-
-
-
-@interface CTAssetCollectionViewController()
-<PHPhotoLibraryChangeObserver, CTAssetsGridViewControllerDelegate>
-
-@property (nonatomic, weak) CTAssetsPickerController *picker;
-
-@property (nonatomic, strong) UIBarButtonItem *cancelButton;
-@property (nonatomic, strong) UIBarButtonItem *doneButton;
-
-@property (nonatomic, copy) NSArray *fetchResults;
-@property (nonatomic, copy) NSArray *assetCollections;
-@property (nonatomic, strong) PHCachingImageManager *imageManager;
-
-@property (nonatomic, strong) PHAssetCollection *defaultAssetCollection;
-@property (nonatomic, assign) BOOL didShowDefaultAssetCollection;
-@property (nonatomic, assign) BOOL didSelectDefaultAssetCollection;
-
-@end
-
-
-
-
-
-@implementation CTAssetCollectionViewController
-
-- (instancetype)init
-{
- if (self = [super initWithStyle:UITableViewStylePlain])
- {
- _imageManager = [PHCachingImageManager new];
- [self addNotificationObserver];
- }
-
- return self;
-}
-
-- (void)viewDidLoad
-{
- [super viewDidLoad];
- [self setupViews];
- [self localize];
- [self setupDefaultAssetCollection];
- [self setupFetchResults];
- [self registerChangeObserver];
-}
-
-- (void)viewWillAppear:(BOOL)animated
-{
- [super viewWillAppear:animated];
- [self setupButtons];
- [self updateTitle:self.picker.selectedAssets];
- [self updateButton:self.picker.selectedAssets];
- [self selectDefaultAssetCollection];
-}
-
-- (void)dealloc
-{
- [self unregisterChangeObserver];
- [self removeNotificationObserver];
-}
-
-
-#pragma mark - Reload user interface
-
-- (void)reloadUserInterface
-{
- [self setupViews];
- [self setupButtons];
- [self localize];
- [self setupDefaultAssetCollection];
- [self setupFetchResults];
-}
-
-
-#pragma mark - Accessors
-
-- (CTAssetsPickerController *)picker
-{
- return (CTAssetsPickerController *)self.splitViewController.parentViewController;
-}
-
-- (NSIndexPath *)indexPathForAssetCollection:(PHAssetCollection *)assetCollection
-{
- NSInteger row = [self.assetCollections indexOfObject:assetCollection];
-
- if (row != NSNotFound)
- return [NSIndexPath indexPathForRow:row inSection:0];
- else
- return nil;
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- self.tableView.rowHeight = UITableViewAutomaticDimension;
-
- self.tableView.estimatedRowHeight =
- self.picker.assetCollectionThumbnailSize.height +
- self.tableView.layoutMargins.top +
- self.tableView.layoutMargins.bottom;
-
- self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
-}
-
-- (void)setupButtons
-{
- if (self.doneButton == nil)
- {
- NSString *title = (self.picker.doneButtonTitle) ?
- self.picker.doneButtonTitle : CTAssetsPickerLocalizedString(@"Done", nil);
-
- self.doneButton =
- [[UIBarButtonItem alloc] initWithTitle:title
- style:UIBarButtonItemStyleDone
- target:self.picker
- action:@selector(finishPickingAssets:)];
- }
-
- if (self.cancelButton == nil)
- {
- self.cancelButton =
- [[UIBarButtonItem alloc] initWithTitle:CTAssetsPickerLocalizedString(@"Cancel", nil)
- style:UIBarButtonItemStylePlain
- target:self.picker
- action:@selector(dismiss:)];
- }
-}
-
-- (void)localize
-{
- [self resetTitle];
-}
-
-- (void)setupFetchResults
-{
- NSMutableArray *fetchResults = [NSMutableArray new];
-
- for (NSNumber *subtypeNumber in self.picker.assetCollectionSubtypes)
- {
- PHAssetCollectionType type = [PHAssetCollection ctassetPickerAssetCollectionTypeOfSubtype:subtypeNumber.integerValue];
- PHAssetCollectionSubtype subtype = subtypeNumber.integerValue;
-
- PHFetchResult *fetchResult =
- [PHAssetCollection fetchAssetCollectionsWithType:type
- subtype:subtype
- options:self.picker.assetCollectionFetchOptions];
-
- [fetchResults addObject:fetchResult];
- }
-
- self.fetchResults = [NSMutableArray arrayWithArray:fetchResults];
-
- [self updateAssetCollections];
- [self reloadData];
- [self showDefaultAssetCollection];
-}
-
-- (void)updateAssetCollections
-{
- NSMutableArray *assetCollections = [NSMutableArray new];
-
- for (PHFetchResult *fetchResult in self.fetchResults)
- {
- for (PHAssetCollection *assetCollection in fetchResult)
- {
- BOOL showsAssetCollection = YES;
-
- if (!self.picker.showsEmptyAlbums)
- {
- PHFetchOptions *options = [PHFetchOptions new];
- options.predicate = self.picker.assetsFetchOptions.predicate;
-
- if ([options respondsToSelector:@selector(setFetchLimit:)])
- options.fetchLimit = 1;
-
- NSInteger count = [assetCollection ctassetPikcerCountOfAssetsFetchedWithOptions:options];
-
- showsAssetCollection = (count > 0);
- }
-
- if (showsAssetCollection)
- [assetCollections addObject:assetCollection];
- }
- }
-
- self.assetCollections = [NSMutableArray arrayWithArray:assetCollections];
-}
-
-- (void)setupDefaultAssetCollection
-{
- if (!self.picker || self.picker.defaultAssetCollection == PHAssetCollectionSubtypeAny) {
- self.defaultAssetCollection = nil;
- return;
- }
-
- PHAssetCollectionType type = [PHAssetCollection ctassetPickerAssetCollectionTypeOfSubtype:self.picker.defaultAssetCollection];
- PHFetchResult *fetchResult = [PHAssetCollection fetchAssetCollectionsWithType:type subtype:self.picker.defaultAssetCollection options:self.picker.assetCollectionFetchOptions];
-
- self.defaultAssetCollection = fetchResult.firstObject;
-}
-
-
-#pragma mark - Rotation
-
-- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
-{
- [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
-
- [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
- [self updateTitle:self.picker.selectedAssets];
- [self updateButton:self.picker.selectedAssets];
- } completion:nil];
-}
-
-#pragma mark - Notifications
-
-- (void)addNotificationObserver
-{
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
-
- [center addObserver:self
- selector:@selector(selectedAssetsChanged:)
- name:CTAssetsPickerSelectedAssetsDidChangeNotification
- object:nil];
-
- [center addObserver:self
- selector:@selector(contentSizeCategoryChanged:)
- name:UIContentSizeCategoryDidChangeNotification
- object:nil];
-}
-
-- (void)removeNotificationObserver
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self name:CTAssetsPickerSelectedAssetsDidChangeNotification object:nil];
- [[NSNotificationCenter defaultCenter] removeObserver:self name:UIContentSizeCategoryDidChangeNotification object:nil];
-}
-
-
-#pragma mark - Photo library change observer
-
-- (void)registerChangeObserver
-{
- [[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:self];
-}
-
-- (void)unregisterChangeObserver
-{
- [[PHPhotoLibrary sharedPhotoLibrary] unregisterChangeObserver:self];
-}
-
-
-#pragma mark - Photo library changed
-
-- (void)photoLibraryDidChange:(PHChange *)changeInstance
-{
- // Call might come on any background queue. Re-dispatch to the main queue to handle it.
- dispatch_async(dispatch_get_main_queue(), ^{
-
- NSMutableArray *updatedFetchResults = nil;
-
- for (PHFetchResult *fetchResult in self.fetchResults)
- {
- PHFetchResultChangeDetails *changeDetails = [changeInstance changeDetailsForFetchResult:fetchResult];
-
- if (changeDetails)
- {
- if (!updatedFetchResults)
- updatedFetchResults = [self.fetchResults mutableCopy];
-
- updatedFetchResults[[self.fetchResults indexOfObject:fetchResult]] = changeDetails.fetchResultAfterChanges;
- }
- }
-
- if (updatedFetchResults)
- {
- self.fetchResults = updatedFetchResults;
- [self updateAssetCollections];
- [self reloadData];
- }
-
- });
-}
-
-
-#pragma mark - Selected assets changed
-
-- (void)selectedAssetsChanged:(NSNotification *)notification
-{
- NSArray *selectedAssets = (NSArray *)notification.object;
- [self updateTitle:selectedAssets];
- [self updateButton:selectedAssets];
-}
-
-- (void)updateTitle:(NSArray *)selectedAssets
-{
- if ([self isTopViewController] && selectedAssets.count > 0)
- self.title = self.picker.selectedAssetsString;
- else
- [self resetTitle];
-}
-
-- (void)updateButton:(NSArray *)selectedAssets
-{
- self.navigationItem.leftBarButtonItem = (self.picker.showsCancelButton) ? self.cancelButton : nil;
- self.navigationItem.rightBarButtonItem = [self isTopViewController] ? self.doneButton : nil;
-
- if (self.picker.alwaysEnableDoneButton)
- self.navigationItem.rightBarButtonItem.enabled = YES;
- else
- self.navigationItem.rightBarButtonItem.enabled = (self.picker.selectedAssets.count > 0);
-}
-
-- (BOOL)isTopViewController
-{
- UIViewController *vc = self.splitViewController.viewControllers.lastObject;
-
- if ([vc isMemberOfClass:[UINavigationController class]])
- return (self == ((UINavigationController *)vc).topViewController);
- else
- return NO;
-}
-
-- (void)resetTitle
-{
- if (!self.picker.title)
- self.title = CTAssetsPickerLocalizedString(@"Photos", nil);
- else
- self.title = self.picker.title;
-}
-
-
-#pragma mark - Content size category changed
-
-- (void)contentSizeCategoryChanged:(NSNotification *)notification
-{
- [self reloadData];
-}
-
-
-#pragma mark - Reload data
-
-- (void)reloadData
-{
- if (self.assetCollections.count > 0)
- [self.tableView reloadData];
- else
- [self.picker showNoAssets];
-}
-
-
-#pragma mark - Table view data source
-
-- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
-{
- return 1;
-}
-
-- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
-{
- return self.assetCollections.count;
-}
-
-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
-{
- PHAssetCollection *collection = self.assetCollections[indexPath.row];
- NSUInteger count;
-
- if (self.picker.showsNumberOfAssets)
- count = [collection ctassetPikcerCountOfAssetsFetchedWithOptions:self.picker.assetsFetchOptions];
- else
- count = NSNotFound;
-
- static NSString *cellIdentifier = @"CellIdentifier";
-
- CTAssetCollectionViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
-
- if (cell == nil)
- cell = [[CTAssetCollectionViewCell alloc] initWithThumbnailSize:self.picker.assetCollectionThumbnailSize
- reuseIdentifier:cellIdentifier];
-
- [cell bind:collection count:count];
- [self requestThumbnailsForCell:cell assetCollection:collection];
-
- return cell;
-}
-
-- (void)requestThumbnailsForCell:(CTAssetCollectionViewCell *)cell assetCollection:(PHAssetCollection *)collection
-{
- NSUInteger count = cell.thumbnailStacks.thumbnailViews.count;
- NSArray *assets = [self posterAssetsFromAssetCollection:collection count:count];
- CGSize targetSize = [self.picker imageSizeForContainerSize:self.picker.assetCollectionThumbnailSize];
-
- for (NSUInteger index = 0; index < count; index++)
- {
- CTAssetThumbnailView *thumbnailView = [cell.thumbnailStacks thumbnailAtIndex:index];
- thumbnailView.hidden = (assets.count > 0) ? YES : NO;
-
- if (index < assets.count)
- {
- PHAsset *asset = assets[index];
- [self.imageManager ctassetsPickerRequestImageForAsset:asset
- targetSize:targetSize
- contentMode:PHImageContentModeAspectFill
- options:self.picker.thumbnailRequestOptions
- resultHandler:^(UIImage *image, NSDictionary *info){
- [thumbnailView setHidden:NO];
- [thumbnailView bind:image assetCollection:collection];
- }];
- }
- }
-}
-
-- (NSArray *)posterAssetsFromAssetCollection:(PHAssetCollection *)collection count:(NSUInteger)count;
-{
- PHFetchOptions *options = [PHFetchOptions new];
- options.predicate = self.picker.assetsFetchOptions.predicate; // aligned specified predicate
- options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
-
- PHFetchResult *result = [PHAsset fetchKeyAssetsInAssetCollection:collection options:options];
-
- NSUInteger location = 0;
- NSUInteger length = (result.count < count) ? result.count : count;
- NSArray *assets = [self itemsFromFetchResult:result range:NSMakeRange(location, length)];
-
- return assets;
-}
-
-- (NSArray *)itemsFromFetchResult:(PHFetchResult *)result range:(NSRange)range
-{
- if (result.count == 0)
- return nil;
-
- NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
- NSArray *array = [result objectsAtIndexes:indexSet];
-
- return array;
-}
-
-
-#pragma mark - Table view delegate
-
-- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
-{
- PHAssetCollection *collection = self.assetCollections[indexPath.row];
-
- CTAssetsGridViewController *vc = [CTAssetsGridViewController new];
- vc.title = self.picker.selectedAssetsString ? : collection.localizedTitle;
- vc.assetCollection = collection;
- vc.delegate = self;
-
- UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
- nav.delegate = (id<UINavigationControllerDelegate>)self.picker;
-
- [self.picker setShouldCollapseDetailViewController:NO];
- [self.splitViewController showDetailViewController:nav sender:nil];
-}
-
-
-#pragma mark - Show / select default asset collection
-
-- (void)showDefaultAssetCollection
-{
- if (self.defaultAssetCollection && !self.didShowDefaultAssetCollection)
- {
- CTAssetsGridViewController *vc = [CTAssetsGridViewController new];
- vc.title = self.picker.selectedAssetsString ? : self.defaultAssetCollection.localizedTitle;
- vc.assetCollection = self.defaultAssetCollection;
- vc.delegate = self;
-
- UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
- nav.delegate = (id<UINavigationControllerDelegate>)self.picker;
-
- [self.picker setShouldCollapseDetailViewController:(self.picker.modalPresentationStyle == UIModalPresentationFormSheet)];
- [self.splitViewController showDetailViewController:nav sender:nil];
-
- NSIndexPath *indexPath = [self indexPathForAssetCollection:self.defaultAssetCollection];
- [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
-
- self.didShowDefaultAssetCollection = YES;
- }
-}
-
-- (void)selectDefaultAssetCollection
-{
- if (self.defaultAssetCollection && !self.didSelectDefaultAssetCollection)
- {
- NSIndexPath *indexPath = [self indexPathForAssetCollection:self.defaultAssetCollection];
-
- if (indexPath)
- {
- [UIView animateWithDuration:0.0f
- animations:^{
- [self.tableView selectRowAtIndexPath:indexPath
- animated:(!self.splitViewController.collapsed)
- scrollPosition:UITableViewScrollPositionTop];
- }
- completion:^(BOOL finished){
- // mimic clearsSelectionOnViewWillAppear
- if (finished && self.splitViewController.collapsed)
- [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
- }];
- }
-
- self.didSelectDefaultAssetCollection = YES;
- }
-}
-
-
-#pragma mark - Grid view controller delegate
-
-- (void)assetsGridViewController:(CTAssetsGridViewController *)picker photoLibraryDidChangeForAssetCollection:(PHAssetCollection *)assetCollection
-{
- NSIndexPath *indexPath = [self indexPathForAssetCollection:assetCollection];
-
- if (indexPath)
- {
- [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
- [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
- }
-}
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetItemViewController.h b/Libraries external/CTAssetsPickerController/CTAssetItemViewController.h
deleted file mode 100755
index b36d15b92..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetItemViewController.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import <Photos/Photos.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CTAssetItemViewController : UIViewController
-
-@property (nonatomic, assign) BOOL allowsSelection;
-@property (nonatomic, strong, readonly) PHAsset *asset;
-@property (nonatomic, strong, readonly, nullable) UIImage *image;
-
-+ (CTAssetItemViewController *)assetItemViewControllerForAsset:(PHAsset *)asset;
-
-- (void)playAsset:(nullable id)sender;
-- (void)pauseAsset:(nullable id)sender;
-
-@end
-
-NS_ASSUME_NONNULL_END \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetItemViewController.m b/Libraries external/CTAssetsPickerController/CTAssetItemViewController.m
deleted file mode 100755
index 3e5acadba..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetItemViewController.m
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerController.h"
-#import "CTAssetItemViewController.h"
-#import "CTAssetScrollView.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "PHAsset+CTAssetsPickerController.h"
-#import "PHImageManager+CTAssetsPickerController.h"
-
-
-
-
-@interface CTAssetItemViewController ()
-
-@property (nonatomic, weak) CTAssetsPickerController *picker;
-
-@property (nonatomic, strong) PHAsset *asset;
-@property (nonatomic, strong) UIImage *image;
-
-@property (nonatomic, strong) PHImageManager *imageManager;
-@property (nonatomic, assign) PHImageRequestID imageRequestID;
-@property (nonatomic, assign) PHImageRequestID playerItemRequestID;
-@property (nonatomic, strong) CTAssetScrollView *scrollView;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-
-
-
-@implementation CTAssetItemViewController
-
-+ (CTAssetItemViewController *)assetItemViewControllerForAsset:(PHAsset *)asset
-{
- return [[self alloc] initWithAsset:asset];
-}
-
-- (instancetype)initWithAsset:(PHAsset *)asset
-{
- if (self = [super init])
- {
- _imageManager = [PHImageManager defaultManager];
- self.asset = asset;
- self.allowsSelection = NO;
- }
-
- return self;
-}
-
-
-- (void)viewDidLoad
-{
- [super viewDidLoad];
- [self setupViews];
-}
-
-- (void)viewWillAppear:(BOOL)animated
-{
- [super viewWillAppear:animated];
- [self setupScrollViewButtons];
- [self requestAssetImage];
-}
-
-- (void)viewWillDisappear:(BOOL)animated
-{
- [super viewWillDisappear:animated];
- [self pauseAsset:self.view];
- [self cancelRequestAsset];
-}
-
-- (void)viewWillLayoutSubviews
-{
- [super viewWillLayoutSubviews];
-
- [self.scrollView setNeedsUpdateConstraints];
- [self.scrollView updateConstraintsIfNeeded];
-}
-
-- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
-{
- [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
-
- [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
- [self.scrollView updateZoomScalesAndZoom:YES];
- } completion:nil];
-}
-
-
-#pragma mark - Accessors
-
-- (CTAssetsPickerController *)picker
-{
- return (CTAssetsPickerController *)self.splitViewController.parentViewController;
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- CTAssetScrollView *scrollView = [CTAssetScrollView newAutoLayoutView];
- scrollView.allowsSelection = self.allowsSelection;
-
- self.scrollView = scrollView;
- [self.view addSubview:self.scrollView];
- [self.view layoutIfNeeded];
-}
-
-- (void)setupScrollViewButtons
-{
- CTAssetPlayButton *playButton = self.scrollView.playButton;
- [playButton addTarget:self action:@selector(playAsset:) forControlEvents:UIControlEventTouchUpInside];
-
- CTAssetSelectionButton *selectionButton = self.scrollView.selectionButton;
-
- selectionButton.enabled = [self assetScrollView:self.scrollView shouldEnableAsset:self.asset];
- selectionButton.selected = [self.picker.selectedAssets containsObject:self.asset];
-
- [selectionButton addTarget:self action:@selector(selectionButtonTouchDown:) forControlEvents:UIControlEventTouchDown];
- [selectionButton addTarget:self action:@selector(selectionButtonTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];
-}
-
-
-#pragma mark - Cancel request
-
-- (void)cancelRequestAsset
-{
- [self cancelRequestImage];
- [self cancelRequestPlayerItem];
-}
-
-- (void)cancelRequestImage
-{
- if (self.imageRequestID)
- {
- [self.scrollView setProgress:1];
- [self.imageManager cancelImageRequest:self.imageRequestID];
- }
-}
-
-- (void)cancelRequestPlayerItem
-{
- if (self.playerItemRequestID)
- {
- [self.scrollView stopActivityAnimating];
- [self.imageManager cancelImageRequest:self.playerItemRequestID];
- }
-}
-
-
-#pragma mark - Request image
-
-- (void)requestAssetImage
-{
- [self.scrollView setProgress:0];
-
- CGSize targetSize = [self targetImageSize];
- PHImageRequestOptions *options = [self imageRequestOptions];
-
- self.imageRequestID =
- [self.imageManager ctassetsPickerRequestImageForAsset:self.asset
- targetSize:targetSize
- contentMode:PHImageContentModeAspectFit
- options:options
- resultHandler:^(UIImage *image, NSDictionary *info) {
-
- // this image is set for transition animation
- self.image = image;
-
- dispatch_async(dispatch_get_main_queue(), ^{
-
- NSError *error = info[PHImageErrorKey];
-
- if (error)
- [self showRequestImageError:error title:nil];
- else
- [self.scrollView bind:self.asset image:image requestInfo:info];
- });
- }];
-}
-
-- (CGSize)targetImageSize
-{
- UIScreen *screen = UIScreen.mainScreen;
- CGFloat scale = screen.scale;
- return CGSizeMake(CGRectGetWidth(screen.bounds) * scale, CGRectGetHeight(screen.bounds) * scale);
-}
-
-- (PHImageRequestOptions *)imageRequestOptions
-{
- PHImageRequestOptions *options = [PHImageRequestOptions new];
- options.networkAccessAllowed = YES;
- options.progressHandler = ^(double progress, NSError *error, BOOL *stop, NSDictionary *info) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.scrollView setProgress:progress];
- });
- };
-
- return options;
-}
-
-
-#pragma mark - Request player item
-
-- (void)requestAssetPlayerItem:(id)sender
-{
- [self.scrollView startActivityAnimating];
-
- PHVideoRequestOptions *options = [self videoRequestOptions];
-
- self.playerItemRequestID =
- [self.imageManager requestPlayerItemForVideo:self.asset
- options:options
- resultHandler:^(AVPlayerItem *playerItem, NSDictionary *info) {
- dispatch_async(dispatch_get_main_queue(), ^{
-
- NSError *error = info[PHImageErrorKey];
- NSString * title = CTAssetsPickerLocalizedString(@"Cannot Play Stream Video", nil);
-
- if (error)
- [self showRequestVideoError:error title:title];
- else
- [self.scrollView bind:playerItem requestInfo:info];
- });
- }];
-}
-
-- (PHVideoRequestOptions *)videoRequestOptions
-{
- PHVideoRequestOptions *options = [PHVideoRequestOptions new];
- options.networkAccessAllowed = YES;
- options.progressHandler = ^(double progress, NSError *error, BOOL *stop, NSDictionary *info) {
- dispatch_async(dispatch_get_main_queue(), ^{
- //do nothing
- });
- };
-
- return options;
-}
-
-
-#pragma mark - Request error
-
-- (void)showRequestImageError:(NSError *)error title:(NSString *)title
-{
- [self.scrollView setProgress:1];
- [self showRequestError:error title:title];
-}
-
-- (void)showRequestVideoError:(NSError *)error title:(NSString *)title
-{
- [self.scrollView stopActivityAnimating];
- [self showRequestError:error title:title];
-}
-
-- (void)showRequestError:(NSError *)error title:(NSString *)title
-{
- UIAlertController *alert =
- [UIAlertController alertControllerWithTitle:title
- message:error.localizedDescription
- preferredStyle:UIAlertControllerStyleAlert];
-
- UIAlertAction *action =
- [UIAlertAction actionWithTitle:CTAssetsPickerLocalizedString(@"OK", nil)
- style:UIAlertActionStyleDefault
- handler:nil];
-
- [alert addAction:action];
-
- [self presentViewController:alert animated:YES completion:nil];
-}
-
-
-#pragma mark - Playback
-
-- (void)playAsset:(id)sender
-{
- if (!self.scrollView.player)
- [self requestAssetPlayerItem:sender];
- else
- [self.scrollView playVideo];
-}
-
-- (void)pauseAsset:(id)sender
-{
- if (!self.scrollView.player)
- [self cancelRequestPlayerItem];
- else
- [self.scrollView pauseVideo];
-}
-
-
-#pragma mark - Selection
-
-- (void)selectionButtonTouchDown:(id)sender
-{
- PHAsset *asset = self.asset;
- CTAssetScrollView *scrollView = self.scrollView;
-
- if ([self assetScrollView:scrollView shouldHighlightAsset:asset])
- [self assetScrollView:scrollView didHighlightAsset:asset];
-}
-
-- (void)selectionButtonTouchUpInside:(id)sender
-{
- PHAsset *asset = self.asset;
- CTAssetScrollView *scrollView = self.scrollView;
- CTAssetSelectionButton *selectionButton = scrollView.selectionButton;
-
-
- if (!selectionButton.selected)
- {
- if ([self assetScrollView:scrollView shouldSelectAsset:asset])
- {
- [self.picker selectAsset:asset];
- [selectionButton setSelected:YES];
- [self assetScrollView:scrollView didSelectAsset:asset];
- }
- }
-
- else
- {
- if ([self assetScrollView:scrollView shouldDeselectAsset:asset])
- {
- [self.picker deselectAsset:asset];
- [selectionButton setSelected:NO];
- [self assetScrollView:scrollView didDeselectAsset:asset];
- }
- }
-
- [self assetScrollView:self.scrollView didUnhighlightAsset:self.asset];
-}
-
-
-#pragma mark - Asset scrollView delegate
-
-- (BOOL)assetScrollView:(CTAssetScrollView *)scrollView shouldEnableAsset:(PHAsset *)asset
-{
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:shouldEnableAsset:)])
- return [self.picker.delegate assetsPickerController:self.picker shouldEnableAsset:asset];
- else
- return YES;
-}
-
-- (BOOL)assetScrollView:(CTAssetScrollView *)scrollView shouldSelectAsset:(PHAsset *)asset
-{
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:shouldSelectAsset:)])
- return [self.picker.delegate assetsPickerController:self.picker shouldSelectAsset:asset];
- else
- return YES;
-}
-
-- (void)assetScrollView:(CTAssetScrollView *)scrollView didSelectAsset:(PHAsset *)asset
-{
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:didSelectAsset:)])
- [self.picker.delegate assetsPickerController:self.picker didSelectAsset:asset];
-}
-
-- (BOOL)assetScrollView:(CTAssetScrollView *)scrollView shouldDeselectAsset:(PHAsset *)asset
-{
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:shouldDeselectAsset:)])
- return [self.picker.delegate assetsPickerController:self.picker shouldDeselectAsset:asset];
- else
- return YES;
-}
-
-- (void)assetScrollView:(CTAssetScrollView *)scrollView didDeselectAsset:(PHAsset *)asset
-{
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:didDeselectAsset:)])
- [self.picker.delegate assetsPickerController:self.picker didDeselectAsset:asset];
-}
-
-- (BOOL)assetScrollView:(CTAssetScrollView *)scrollView shouldHighlightAsset:(PHAsset *)asset
-{
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:shouldHighlightAsset:)])
- return [self.picker.delegate assetsPickerController:self.picker shouldHighlightAsset:asset];
- else
- return YES;
-}
-
-- (void)assetScrollView:(CTAssetScrollView *)scrollView didHighlightAsset:(PHAsset *)asset
-{
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:didHighlightAsset:)])
- [self.picker.delegate assetsPickerController:self.picker didHighlightAsset:asset];
-}
-
-- (void)assetScrollView:(CTAssetScrollView *)scrollView didUnhighlightAsset:(PHAsset *)asset
-{
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:didUnhighlightAsset:)])
- [self.picker.delegate assetsPickerController:self.picker didUnhighlightAsset:asset];
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetPlayButton.h b/Libraries external/CTAssetsPickerController/CTAssetPlayButton.h
deleted file mode 100755
index ffbb38386..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetPlayButton.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetPlayButton : UIControl
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetPlayButton.m b/Libraries external/CTAssetsPickerController/CTAssetPlayButton.m
deleted file mode 100755
index e260e4cb2..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetPlayButton.m
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetPlayButton.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-
-
-
-@interface CTAssetPlayButton ()
-
-@property (nonatomic, strong) UIVisualEffectView *blurView;
-@property (nonatomic, strong) UIVisualEffectView *vibrancyView;
-@property (nonatomic, strong) UIView *vibrancyFill;
-
-@property (nonatomic, strong) UIView *highlightedView;
-@property (nonatomic, strong) UIView *colorView;
-
-@property (nonatomic, strong) UIImageView *glyphMask;
-@property (nonatomic, strong) UIImageView *buttonMask;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-
-
-
-@implementation CTAssetPlayButton
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
-
- if (self)
- {
- self.isAccessibilityElement = YES;
- self.accessibilityTraits = UIAccessibilityTraitButton;
-
- [self setupViews];
- [self localize];
- }
-
- return self;
-}
-
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- [self setupEffectViews];
- [self setupHightlightedView];
- [self setupColorView];
- [self setupMaskViews];
-}
-
-- (void)setupEffectViews
-{
- // Blur effect
- UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
- UIVisualEffectView *blurView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
- blurView.userInteractionEnabled = NO;
- self.blurView = blurView;
-
- // Vibrancy effect
- UIVibrancyEffect *vibrancyEffect = [UIVibrancyEffect effectForBlurEffect:blurEffect];
- UIVisualEffectView *vibrancyView = [[UIVisualEffectView alloc] initWithEffect:vibrancyEffect];
- vibrancyView.userInteractionEnabled = NO;
- self.vibrancyView = vibrancyView;
-
- UIView *vibrancyFill = [UIView newAutoLayoutView];
- vibrancyFill.backgroundColor = [UIColor whiteColor];
- vibrancyFill.userInteractionEnabled = NO;
- self.vibrancyFill = vibrancyFill;
-
- // Add fill to the vibrancy view
- [vibrancyView.contentView addSubview:self.vibrancyFill];
- [blurView.contentView addSubview:self.vibrancyView];
-
- [self addSubview:blurView];
-}
-
-- (void)setupHightlightedView
-{
- UIView *highlightedView = [UIView newAutoLayoutView];
- highlightedView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
- highlightedView.userInteractionEnabled = NO;
- highlightedView.hidden = YES;
- self.highlightedView = highlightedView;
-
- [self addSubview:self.highlightedView];
-}
-
-- (void)setupColorView
-{
- UIView *colorView = [UIView newAutoLayoutView];
- colorView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.8];
- colorView.userInteractionEnabled = NO;
- self.colorView = colorView;
-
- [self addSubview:self.colorView];
-}
-
-- (void)setupMaskViews
-{
- UIImage *glyphMaskImage = [UIImage ctassetsPickerImageNamed:@"VideoPlayGlyphMask"];
- UIImageView *glyphMask = [[UIImageView alloc] initWithImage:glyphMaskImage];
- glyphMask.userInteractionEnabled = NO;
- self.colorView.maskView = glyphMask;
-
- UIImage *buttonMaskImage = [UIImage ctassetsPickerImageNamed:@"VideoPlayButtonMask"];
- UIImageView *buttonMask = [[UIImageView alloc] initWithImage:buttonMaskImage];
- buttonMask.userInteractionEnabled = NO;
- self.maskView = buttonMask;
-}
-
-- (void)localize
-{
- self.accessibilityLabel = CTAssetsPickerLocalizedString(@"Play", nil);
-}
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- CGSize size = [UIImage ctassetsPickerImageNamed:@"VideoPlayButtonMask"].size;
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityRequired forConstraints:^{
- [self autoSetDimensionsToSize:size];
- }];
-
- [self.blurView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self.vibrancyView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self.vibrancyFill autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self.highlightedView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self.colorView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-
-#pragma mark - States
-
-- (void)setHighlighted:(BOOL)highlighted
-{
- super.highlighted = highlighted;
- self.highlightedView.hidden = !highlighted;
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetScrollView.h b/Libraries external/CTAssetsPickerController/CTAssetScrollView.h
deleted file mode 100755
index bd7f81ac9..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetScrollView.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import "CTAssetItemViewController.h"
-#import "CTAssetPlayButton.h"
-#import "CTAssetSelectionButton.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-extern NSString * const CTAssetScrollViewDidTapNotification;
-extern NSString * const CTAssetScrollViewPlayerWillPlayNotification;
-extern NSString * const CTAssetScrollViewPlayerWillPauseNotification;
-
-
-@interface CTAssetScrollView : UIScrollView
-
-@property (nonatomic, assign) BOOL allowsSelection;
-
-@property (nonatomic, strong, readonly, nullable) UIImage *image;
-@property (nonatomic, strong, readonly, nullable) AVPlayer *player;
-
-@property (nonatomic, strong, readonly) UIImageView *imageView;
-@property (nonatomic, strong, readonly) CTAssetPlayButton *playButton;
-@property (nonatomic, strong, readonly) CTAssetSelectionButton *selectionButton;
-
-
-- (void)startActivityAnimating;
-- (void)stopActivityAnimating;
-
-- (void)setProgress:(CGFloat)progress;
-
-- (void)bind:(PHAsset *)asset image:(nullable UIImage *)image requestInfo:(nullable NSDictionary<NSString*, id> *)info;
-- (void)bind:(AVPlayerItem *)playerItem requestInfo:(nullable NSDictionary *)info;
-
-- (void)updateZoomScalesAndZoom:(BOOL)zoom;
-
-- (void)playVideo;
-- (void)pauseVideo;
-
-@end
-
-NS_ASSUME_NONNULL_END \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetScrollView.m b/Libraries external/CTAssetsPickerController/CTAssetScrollView.m
deleted file mode 100755
index ae9dd0de4..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetScrollView.m
+++ /dev/null
@@ -1,713 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetScrollView.h"
-#import "CTAssetPlayButton.h"
-#import "PHAsset+CTAssetsPickerController.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-
-
-
-
-NSString * const CTAssetScrollViewDidTapNotification = @"CTAssetScrollViewDidTapNotification";
-NSString * const CTAssetScrollViewPlayerWillPlayNotification = @"CTAssetScrollViewPlayerWillPlayNotification";
-NSString * const CTAssetScrollViewPlayerWillPauseNotification = @"CTAssetScrollViewPlayerWillPauseNotification";
-
-
-
-
-@interface CTAssetScrollView ()
-<UIScrollViewDelegate, UIGestureRecognizerDelegate>
-
-@property (nonatomic, strong) PHAsset *asset;
-@property (nonatomic, strong) UIImage *image;
-@property (nonatomic, strong) AVPlayer *player;
-
-@property (nonatomic, assign) BOOL didLoadPlayerItem;
-
-@property (nonatomic, assign) CGFloat perspectiveZoomScale;
-
-@property (nonatomic, strong) UIImageView *imageView;
-
-@property (nonatomic, strong) UIProgressView *progressView;
-@property (nonatomic, strong) UIActivityIndicatorView *activityView;
-@property (nonatomic, strong) CTAssetPlayButton *playButton;
-@property (nonatomic, strong) CTAssetSelectionButton *selectionButton;
-
-@property (nonatomic, assign) BOOL shouldUpdateConstraints;
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-
-@end
-
-
-
-
-
-@implementation CTAssetScrollView
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
-
- if (self)
- {
- _shouldUpdateConstraints = YES;
- self.allowsSelection = NO;
- self.showsVerticalScrollIndicator = NO;
- self.showsHorizontalScrollIndicator = NO;
- self.bouncesZoom = YES;
- self.decelerationRate = UIScrollViewDecelerationRateFast;
- self.delegate = self;
-
- [self setupViews];
- [self addGestureRecognizers];
- }
-
- return self;
-}
-
-- (void)dealloc
-{
- [self removePlayerNotificationObserver];
- [self removePlayerLoadedTimeRangesObserver];
- [self removePlayerRateObserver];
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- UIImageView *imageView = [UIImageView new];
- imageView.isAccessibilityElement = YES;
- imageView.accessibilityTraits = UIAccessibilityTraitImage;
- self.imageView = imageView;
- [self addSubview:self.imageView];
-
- UIProgressView *progressView =
- [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
- self.progressView = progressView;
- [self addSubview:self.progressView];
-
- UIActivityIndicatorView *activityView =
- [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
- self.activityView = activityView;
- [self addSubview:self.activityView];
-
- CTAssetPlayButton *playButton = [CTAssetPlayButton newAutoLayoutView];
- self.playButton = playButton;
- [self addSubview:self.playButton];
-
- CTAssetSelectionButton *selectionButton = [CTAssetSelectionButton newAutoLayoutView];
- self.selectionButton = selectionButton;
- [self addSubview:self.selectionButton];
-}
-
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [self updateSelectionButtonIfNeeded];
- [self autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self updateProgressConstraints];
- [self updateActivityConstraints];
- [self updateButtonsConstraints];
-
- self.didSetupConstraints = YES;
- }
-
- [self updateContentFrame];
- [super updateConstraints];
-}
-
-- (void)updateSelectionButtonIfNeeded
-{
- if (!self.allowsSelection)
- {
- [self.selectionButton removeFromSuperview];
- self.selectionButton = nil;
- }
-}
-
-- (void)updateProgressConstraints
-{
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityDefaultLow forConstraints:^{
- [self.progressView autoConstrainAttribute:ALAttributeLeading toAttribute:ALAttributeLeading ofView:self.superview withMultiplier:1 relation:NSLayoutRelationEqual];
- [self.progressView autoConstrainAttribute:ALAttributeTrailing toAttribute:ALAttributeTrailing ofView:self.superview withMultiplier:1 relation:NSLayoutRelationEqual];
- [self.progressView autoConstrainAttribute:ALAttributeBottom toAttribute:ALAttributeBottom ofView:self.superview withMultiplier:1 relation:NSLayoutRelationEqual];
- }];
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityDefaultHigh forConstraints:^{
- [self.progressView autoConstrainAttribute:ALAttributeLeading toAttribute:ALAttributeLeading ofView:self.imageView withMultiplier:1 relation:NSLayoutRelationGreaterThanOrEqual];
- [self.progressView autoConstrainAttribute:ALAttributeTrailing toAttribute:ALAttributeTrailing ofView:self.imageView withMultiplier:1 relation:NSLayoutRelationLessThanOrEqual];
- [self.progressView autoConstrainAttribute:ALAttributeBottom toAttribute:ALAttributeBottom ofView:self.imageView withMultiplier:1 relation:NSLayoutRelationLessThanOrEqual];
- }];
-}
-
-- (void)updateActivityConstraints
-{
- [self.activityView autoAlignAxis:ALAxisVertical toSameAxisOfView:self.superview];
- [self.activityView autoAlignAxis:ALAxisHorizontal toSameAxisOfView:self.superview];
-}
-
-- (void)updateButtonsConstraints
-{
- [self.playButton autoAlignAxis:ALAxisVertical toSameAxisOfView:self.superview];
- [self.playButton autoAlignAxis:ALAxisHorizontal toSameAxisOfView:self.superview];
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityDefaultLow forConstraints:^{
- [self.selectionButton autoConstrainAttribute:ALAttributeTrailing toAttribute:ALAttributeTrailing ofView:self.superview withOffset:-self.layoutMargins.right relation:NSLayoutRelationEqual];
- [self.selectionButton autoConstrainAttribute:ALAttributeBottom toAttribute:ALAttributeBottom ofView:self.superview withOffset:-self.layoutMargins.bottom relation:NSLayoutRelationEqual];
- }];
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityDefaultHigh forConstraints:^{
- [self.selectionButton autoConstrainAttribute:ALAttributeTrailing toAttribute:ALAttributeTrailing ofView:self.imageView withOffset:-self.layoutMargins.right relation:NSLayoutRelationLessThanOrEqual];
- [self.selectionButton autoConstrainAttribute:ALAttributeBottom toAttribute:ALAttributeBottom ofView:self.imageView withOffset:-self.layoutMargins.bottom relation:NSLayoutRelationLessThanOrEqual];
- }];
-}
-
-- (void)updateContentFrame
-{
- CGSize boundsSize = self.bounds.size;
-
- CGFloat w = self.zoomScale * self.asset.pixelWidth;
- CGFloat h = self.zoomScale * self.asset.pixelHeight;
-
- CGFloat dx = (boundsSize.width - w) / 2.0;
- CGFloat dy = (boundsSize.height - h) / 2.0;
-
- self.contentOffset = CGPointZero;
- self.imageView.frame = CGRectMake(dx, dy, w, h);
-}
-
-
-
-#pragma mark - Start/stop loading animation
-
-- (void)startActivityAnimating
-{
- [self.playButton setHidden:YES];
- [self.selectionButton setHidden:YES];
- [self.activityView startAnimating];
- [self postPlayerWillPlayNotification];
-}
-
-- (void)stopActivityAnimating
-{
- [self.playButton setHidden:NO];
- [self.selectionButton setHidden:NO];
- [self.activityView stopAnimating];
- [self postPlayerWillPauseNotification];
-}
-
-
-#pragma mark - Set progress
-
-- (void)setProgress:(CGFloat)progress
-{
-#if !defined(CT_APP_EXTENSIONS)
- [UIApplication sharedApplication].networkActivityIndicatorVisible = progress < 1;
-#endif
- [self.progressView setProgress:progress animated:(progress < 1)];
- self.progressView.hidden = progress == 1;
-}
-
-// To mimic image downloading progress
-// as PHImageRequestOptions does not work as expected
-- (void)mimicProgress
-{
- CGFloat progress = self.progressView.progress;
-
- if (progress < 0.95)
- {
- int lowerbound = progress * 100 + 1;
- int upperbound = 95;
-
- int random = lowerbound + arc4random() % (upperbound - lowerbound);
- CGFloat randomProgress = random / 100.0f;
-
- [self setProgress:randomProgress];
-
- NSInteger randomDelay = 1 + arc4random() % (3 - 1);
- [self performSelector:@selector(mimicProgress) withObject:nil afterDelay:randomDelay];
- }
-}
-
-
-#pragma mark - asset size
-
-- (CGSize)assetSize
-{
- return CGSizeMake(self.asset.pixelWidth, self.asset.pixelHeight);
-}
-
-
-#pragma mark - Bind asset image
-
-- (void)bind:(PHAsset *)asset image:(UIImage *)image requestInfo:(NSDictionary *)info
-{
- self.asset = asset;
- self.imageView.accessibilityLabel = asset.accessibilityLabel;
- self.playButton.hidden = [asset ctassetsPickerIsPhoto];
-
- BOOL isDegraded = [info[PHImageResultIsDegradedKey] boolValue];
-
- if (self.image == nil || !isDegraded)
- {
- BOOL zoom = (!self.image);
- self.image = image;
- self.imageView.image = image;
-
- if (isDegraded)
- [self mimicProgress];
- else
- [self setProgress:1];
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
- [self updateZoomScalesAndZoom:zoom];
- }
-}
-
-
-#pragma mark - Bind player item
-
-- (void)bind:(AVPlayerItem *)playerItem requestInfo:(NSDictionary *)info
-{
- [self unbindPlayerItem];
-
- AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
- AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
- playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
-
- CALayer *layer = self.imageView.layer;
- [layer addSublayer:playerLayer];
- playerLayer.frame = layer.bounds;
-
- self.player = player;
-
- [self addPlayerNotificationObserver];
- [self addPlayerLoadedTimeRangesObserver];
-}
-
-- (void)unbindPlayerItem
-{
- [self removePlayerNotificationObserver];
- [self removePlayerLoadedTimeRangesObserver];
-
- for (CALayer *layer in self.imageView.layer.sublayers)
- [layer removeFromSuperlayer];
-
- self.player = nil;
-}
-
-
-
-#pragma mark - Upate zoom scales
-
-- (void)updateZoomScalesAndZoom:(BOOL)zoom
-{
- if (!self.asset)
- return;
-
- CGSize assetSize = [self assetSize];
- CGSize boundsSize = self.bounds.size;
-
- CGFloat xScale = boundsSize.width / assetSize.width; //scale needed to perfectly fit the image width-wise
- CGFloat yScale = boundsSize.height / assetSize.height; //scale needed to perfectly fit the image height-wise
-
- CGFloat minScale = MIN(xScale, yScale);
- CGFloat maxScale = 3.0 * minScale;
-
- if ([self.asset ctassetsPickerIsVideo])
- {
- self.minimumZoomScale = minScale;
- self.maximumZoomScale = minScale;
- }
-
- else
- {
- self.minimumZoomScale = minScale;
- self.maximumZoomScale = maxScale;
- }
-
- // update perspective zoom scale
- self.perspectiveZoomScale = (boundsSize.width > boundsSize.height) ? xScale : yScale;
-
- if (zoom)
- [self zoomToInitialScale];
-}
-
-
-
-#pragma mark - Zoom
-
-- (void)zoomToInitialScale
-{
- if ([self canPerspectiveZoom])
- [self zoomToPerspectiveZoomScaleAnimated:NO];
- else
- [self zoomToMinimumZoomScaleAnimated:NO];
-}
-
-- (void)zoomToMinimumZoomScaleAnimated:(BOOL)animated
-{
- [self setZoomScale:self.minimumZoomScale animated:animated];
-}
-
-- (void)zoomToMaximumZoomScaleWithGestureRecognizer:(UITapGestureRecognizer *)recognizer
-{
- CGRect zoomRect = [self zoomRectWithScale:self.maximumZoomScale withCenter:[recognizer locationInView:recognizer.view]];
-
- self.shouldUpdateConstraints = NO;
-
- [UIView animateWithDuration:0.3 animations:^{
- [self zoomToRect:zoomRect animated:NO];
-
- CGRect frame = self.imageView.frame;
- frame.origin.x = 0;
- frame.origin.y = 0;
-
- self.imageView.frame = frame;
- }];
-}
-
-
-#pragma mark - Perspective zoom
-
-- (BOOL)canPerspectiveZoom
-{
- CGSize assetSize = [self assetSize];
- CGSize boundsSize = self.bounds.size;
-
- CGFloat assetRatio = assetSize.width / assetSize.height;
- CGFloat boundsRatio = boundsSize.width / boundsSize.height;
-
- // can perform perspective zoom when the difference of aspect ratios is smaller than 20%
- return (fabs( (assetRatio - boundsRatio) / boundsRatio ) < 0.2f);
-}
-
-- (void)zoomToPerspectiveZoomScaleAnimated:(BOOL)animated;
-{
- CGRect zoomRect = [self zoomRectWithScale:self.perspectiveZoomScale];
- [self zoomToRect:zoomRect animated:animated];
-}
-
-- (CGRect)zoomRectWithScale:(CGFloat)scale
-{
- CGSize targetSize;
- targetSize.width = self.bounds.size.width / scale;
- targetSize.height = self.bounds.size.height / scale;
-
- CGPoint targetOrigin;
- targetOrigin.x = (self.asset.pixelWidth - targetSize.width) / 2.0;
- targetOrigin.y = (self.asset.pixelHeight - targetSize.height) / 2.0;
-
- CGRect zoomRect;
- zoomRect.origin = targetOrigin;
- zoomRect.size = targetSize;
-
- return zoomRect;
-}
-
-
-#pragma mark - Zoom with gesture recognizer
-
-- (void)zoomWithGestureRecognizer:(UITapGestureRecognizer *)recognizer
-{
- if (self.minimumZoomScale == self.maximumZoomScale)
- return;
-
- if ([self canPerspectiveZoom])
- {
- if ((self.zoomScale >= self.minimumZoomScale && self.zoomScale < self.perspectiveZoomScale) ||
- (self.zoomScale <= self.maximumZoomScale && self.zoomScale > self.perspectiveZoomScale))
- [self zoomToPerspectiveZoomScaleAnimated:YES];
- else
- [self zoomToMaximumZoomScaleWithGestureRecognizer:recognizer];
-
- return;
- }
-
- if (self.zoomScale < self.maximumZoomScale)
- [self zoomToMaximumZoomScaleWithGestureRecognizer:recognizer];
- else
- [self zoomToMinimumZoomScaleAnimated:YES];
-}
-
-- (CGRect)zoomRectWithScale:(CGFloat)scale withCenter:(CGPoint)center
-{
- center = [self.imageView convertPoint:center fromView:self];
-
- CGRect zoomRect;
-
- zoomRect.size.height = self.imageView.frame.size.height / scale;
- zoomRect.size.width = self.imageView.frame.size.width / scale;
-
- zoomRect.origin.x = center.x - ((zoomRect.size.width / 2.0));
- zoomRect.origin.y = center.y - ((zoomRect.size.height / 2.0));
-
- return zoomRect;
-}
-
-
-#pragma mark - Gesture recognizers
-
-- (void)addGestureRecognizers
-{
- UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapping:)];
- UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapping:)];
-
- doubleTap.numberOfTapsRequired = 2.0;
- [singleTap requireGestureRecognizerToFail:doubleTap];
-
- singleTap.delegate = self;
- doubleTap.delegate = self;
-
- [self addGestureRecognizer:singleTap];
- [self addGestureRecognizer:doubleTap];
-}
-
-
-#pragma mark - Handle tappings
-
-- (void)handleTapping:(UITapGestureRecognizer *)recognizer
-{
- [[NSNotificationCenter defaultCenter] postNotificationName:CTAssetScrollViewDidTapNotification object:recognizer];
-
- if (recognizer.numberOfTapsRequired == 2)
- [self zoomWithGestureRecognizer:recognizer];
-}
-
-
-#pragma mark - Scroll view delegate
-
-- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
-{
- return self.imageView;
-}
-
-- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
-{
- self.shouldUpdateConstraints = YES;
-}
-
-- (void)scrollViewDidZoom:(UIScrollView *)scrollView
-{
- self.scrollEnabled = self.zoomScale != self.perspectiveZoomScale;
-
- if (self.shouldUpdateConstraints)
- {
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
- }
-}
-
-
-#pragma mark - Gesture recognizer delegate
-
-- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
-{
- return !([touch.view isDescendantOfView:self.playButton] || [touch.view isDescendantOfView:self.selectionButton]);
-}
-
-
-#pragma mark - Notification observer
-
-- (void)addPlayerNotificationObserver
-{
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
-
- [center addObserver:self
- selector:@selector(applicationWillResignActive:)
- name:UIApplicationWillResignActiveNotification
- object:nil];
-}
-
-- (void)removePlayerNotificationObserver
-{
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
-
- [center removeObserver:self name:UIApplicationWillResignActiveNotification object:nil];
-}
-
-
-
-#pragma mark - Video player item key-value observer
-
-- (void)addPlayerLoadedTimeRangesObserver
-{
- [self.player addObserver:self
- forKeyPath:@"currentItem.loadedTimeRanges"
- options:NSKeyValueObservingOptionNew
- context:nil];
-}
-
-- (void)removePlayerLoadedTimeRangesObserver
-{
- @try {
- [self.player removeObserver:self forKeyPath:@"currentItem.loadedTimeRanges"];
- }
- @catch (NSException *exception) {
- // do nothing
- }
-}
-
-- (void)addPlayerRateObserver
-{
- [self.player addObserver:self
- forKeyPath:@"rate"
- options:NSKeyValueObservingOptionNew
- context:nil];
-}
-
-- (void)removePlayerRateObserver
-{
- @try {
- [self.player removeObserver:self forKeyPath:@"rate"];
- }
- @catch (NSException *exception) {
- // do nothing
- }
-}
-
-
-#pragma mark - Video playback Key-Value changed
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
-{
- if (object == self.player && [keyPath isEqual:@"currentItem.loadedTimeRanges"])
- {
- NSArray *timeRanges = change[NSKeyValueChangeNewKey];
-
- if (timeRanges && timeRanges.count)
- {
- CMTimeRange timeRange = [timeRanges.firstObject CMTimeRangeValue];
-
- if (CMTIME_COMPARE_INLINE(timeRange.duration, ==, self.player.currentItem.duration))
- [self performSelector:@selector(playerDidLoadItem:) withObject:object];
- }
- }
-
- if (object == self.player && [keyPath isEqual:@"rate"])
- {
- CGFloat rate = [[change valueForKey:NSKeyValueChangeNewKey] floatValue];
-
- if (rate > 0)
- [self performSelector:@selector(playerDidPlay:) withObject:object];
-
- if (rate == 0)
- [self performSelector:@selector(playerDidPause:) withObject:object];
- }
-}
-
-
-
-#pragma mark - Notifications
-
-- (void)postPlayerWillPlayNotification
-{
- [[NSNotificationCenter defaultCenter] postNotificationName:CTAssetScrollViewPlayerWillPlayNotification object:nil];
-}
-
-- (void)postPlayerWillPauseNotification
-{
- [[NSNotificationCenter defaultCenter] postNotificationName:CTAssetScrollViewPlayerWillPauseNotification object:nil];
-}
-
-
-#pragma mark - Playback events
-
-- (void)applicationWillResignActive:(NSNotification *)notification
-{
- [self pauseVideo];
-}
-
-
-- (void)playerDidPlay:(id)sender
-{
- [self setProgress:1];
- [self.playButton setHidden:YES];
- [self.selectionButton setHidden:YES];
- [self.activityView stopAnimating];
-}
-
-
-- (void)playerDidPause:(id)sender
-{
- [self.playButton setHidden:NO];
- [self.selectionButton setHidden:NO];
-}
-
-- (void)playerDidLoadItem:(id)sender
-{
- if (!self.didLoadPlayerItem)
- {
- [self setDidLoadPlayerItem:YES];
- [self addPlayerRateObserver];
-
- [self.activityView stopAnimating];
- [self playVideo];
- }
-}
-
-
-#pragma mark - Playback
-
-- (void)playVideo
-{
- if (self.didLoadPlayerItem)
- {
- if (CMTIME_COMPARE_INLINE(self.player.currentTime, == , self.player.currentItem.duration))
- [self.player seekToTime:kCMTimeZero];
-
- [self postPlayerWillPlayNotification];
- [self.player play];
- }
-}
-
-- (void)pauseVideo
-{
- if (self.didLoadPlayerItem)
- {
- [self postPlayerWillPauseNotification];
- [self.player pause];
- }
- else
- {
- [self stopActivityAnimating];
- [self unbindPlayerItem];
- }
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetSelectionButton.h b/Libraries external/CTAssetsPickerController/CTAssetSelectionButton.h
deleted file mode 100755
index 06f58e729..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetSelectionButton.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetSelectionButton : UIControl
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetSelectionButton.m b/Libraries external/CTAssetsPickerController/CTAssetSelectionButton.m
deleted file mode 100755
index 10973c13a..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetSelectionButton.m
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetSelectionButton.h"
-#import "CTAssetCheckmark.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-
-
-
-@interface CTAssetSelectionButton ()
-
-@property (nonatomic, strong) CTAssetCheckmark *checkmark;
-@property (nonatomic, strong) UIImageView *backgroundView;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-
-
-
-@implementation CTAssetSelectionButton
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
-
- if (self)
- {
- self.isAccessibilityElement = YES;
- self.accessibilityTraits = UIAccessibilityTraitButton;
-
- [self setupViews];
- [self localize];
- }
-
- return self;
-}
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- // Background
- UIImage *backgroundImage = [UIImage ctassetsPickerImageNamed:@"CheckmarkUnselected"];
- UIImageView *backgroundView = [[UIImageView alloc] initWithImage:backgroundImage];
- backgroundView.userInteractionEnabled = NO;
- self.backgroundView = backgroundView;
-
- [self addSubview:self.backgroundView];
-
- // Checkmark
- CTAssetCheckmark *checkmark = [CTAssetCheckmark newAutoLayoutView];
- checkmark.userInteractionEnabled = NO;
- checkmark.hidden = YES;
- self.checkmark = checkmark;
-
- [self addSubview:self.checkmark];
-}
-
-- (void)localize
-{
- self.accessibilityLabel = CTAssetsPickerLocalizedString(@"Select", nil);
-}
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- CGSize size = [UIImage ctassetsPickerImageNamed:@"CheckmarkUnselected"].size;
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityRequired forConstraints:^{
- [self autoSetDimensionsToSize:size];
- }];
-
- [self.backgroundView autoCenterInSuperview];
- [self.checkmark autoCenterInSuperview];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-#pragma mark - States
-
-- (void)setSelected:(BOOL)selected
-{
- super.selected = selected;
- self.checkmark.hidden = !selected;
-
- self.accessibilityLabel = (selected) ? CTAssetsPickerLocalizedString(@"Deselect", nil) : CTAssetsPickerLocalizedString(@"Select", nil);
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetSelectionLabel.h b/Libraries external/CTAssetsPickerController/CTAssetSelectionLabel.h
deleted file mode 100755
index c9c241d14..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetSelectionLabel.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-/**
- * The label to show selection index.
- */
-@interface CTAssetSelectionLabel : UILabel
-
-
-#pragma mark Customizing Appearance
-
-/**
- * @name Customizing Appearance
- */
-
-/**
-* Determines whether the label is circular or not. *Deprecated*.
-*/
-@property (nonatomic, assign, getter=isCircular) BOOL circular UI_APPEARANCE_SELECTOR DEPRECATED_MSG_ATTRIBUTE("Use setCornerRadius: instead.");
-
-/**
- * The width of the label's border.
- */
-@property (nonatomic, assign) CGFloat borderWidth UI_APPEARANCE_SELECTOR;
-
-/**
- * The color of the label's border.
- */
-@property (nonatomic, weak) UIColor *borderColor UI_APPEARANCE_SELECTOR;
-
-/**
- * To set the size of label.
- *
- * @param size The size of the label.
- */
-- (void)setSize:(CGSize)size UI_APPEARANCE_SELECTOR;
-
-/**
- * To set the corner radius of label.
- *
- * @param cornerRadius The radius to use when drawing rounded corners for the label’s background.
- */
-- (void)setCornerRadius:(CGFloat)cornerRadius UI_APPEARANCE_SELECTOR;
-
-/**
- * To set margin of the label from the edges.
- *
- * @param margin The margin from the edges.
- *
- * @see setMargin:forVerticalEdge:horizontalEdge:
- */
-- (void)setMargin:(CGFloat)margin UI_APPEARANCE_SELECTOR;
-
-/**
- * To set margin of the label from specific edges.
- *
- * @param margin The margin from the edges.
- * @param edgeX The layout attribute respresents vertical edge that the label pins to. Either `NSLayoutAttributeLeft` or `NSLayoutAttributeRight`.
- * @param edgeY The layout attribute respresents horizontal edge that the label pins to. Either `NSLayoutAttributeTop` or `NSLayoutAttributeBottom`.
- *
- * @see setMargin:
- */
-- (void)setMargin:(CGFloat)margin forVerticalEdge:(NSLayoutAttribute)edgeX horizontalEdge:(NSLayoutAttribute)edgeY UI_APPEARANCE_SELECTOR;
-
-/**
- * To set the text attributes to display the label.
- *
- * Currently only supports attributes `NSFontAttributeName`, `NSForegroundColorAttributeName` and `NSBackgroundColorAttributeName`.
- *
- * @param textAttributes The text attributes used to display the label.
- */
-- (void)setTextAttributes:(NSDictionary<NSString*, id> *)textAttributes UI_APPEARANCE_SELECTOR;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetSelectionLabel.m b/Libraries external/CTAssetsPickerController/CTAssetSelectionLabel.m
deleted file mode 100755
index df8a94805..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetSelectionLabel.m
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetSelectionLabel.h"
-#import "CTAssetsPickerDefines.h"
-
-
-/**
- * The label to show selection index.
- */
-@interface CTAssetSelectionLabel ()
-
-#pragma mark Managing Auto Layout
-
-/**
- * The constraints of the size of the label.
- */
-@property (nonatomic, strong) NSArray *sizeConstraints;
-
-/**
- * The constraint for pinning the label to vertical edge.
- */
-@property (nonatomic, strong) NSLayoutConstraint *verticalConstraint;
-
-/**
- * The constraint for pinning the label to horizontal edge.
- */
-@property (nonatomic, strong) NSLayoutConstraint *horizontalConstraint;
-
-/**
- * Determines whether or not the constraints have been set up.
- */
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-@implementation CTAssetSelectionLabel
-
-#pragma mark Initializing a Label Object
-
-/**
- * Designated Initializer
- *
- * @return an initialized label object
- */
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
-
- if (self)
- {
- self.textAlignment = NSTextAlignmentCenter;
- self.font = CTAssetLabelFont;
- self.textColor = CTAssetLabelTextColor;
- self.backgroundColor = CTAssetLabelBackgroundColor;
- self.layer.borderColor = CTAssetLabelBorderColor.CGColor;
- self.layer.masksToBounds = YES;
- self.isAccessibilityElement = NO;
- }
-
- return self;
-}
-
-
-#pragma mark Customizing Appearance
-
-/**
- * The width of the label's border
- */
-- (CGFloat)borderWidth
-{
- return self.layer.borderWidth;
-}
-
-- (void)setBorderWidth:(CGFloat)borderWidth
-{
- self.layer.borderWidth = borderWidth;
-}
-
-/**
- * The color of the label's border
- */
-
-- (UIColor *)borderColor
-{
- return [UIColor colorWithCGColor:self.layer.borderColor];
-}
-
-- (void)setBorderColor:(UIColor *)borderColor
-{
- UIColor *color = (borderColor) ? borderColor : CTAssetLabelBorderColor;
- self.layer.borderColor = color.CGColor;
-}
-
-/**
- * To set the size of label.
- *
- * @param size The size of the label.
- */
-- (void)setSize:(CGSize)size
-{
- if (CGSizeEqualToSize(size, CGSizeZero)) {
- size = CTAssetLabelSize;
- }
-
- [self removeConstraints:self.sizeConstraints];
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityRequired forConstraints:^{
- self.sizeConstraints = [self autoSetDimensionsToSize:size];
- }];
-}
-
-/**
- * To set the size of label.
- *
- * @param cornerRadius The radius to use when drawing rounded corners for the label’s background.
- */
-- (void)setCornerRadius:(CGFloat)cornerRadius
-{
- self.layer.cornerRadius = cornerRadius;
-}
-
-/**
- * To set margin of the label from the edges.
- *
- * @param margin The margin from the edges.
- *
- * @see setMargin:forVerticalEdge:horizontalEdge:
- */
-- (void)setMargin:(CGFloat)margin
-{
- [self setMargin:margin forVerticalEdge:NSLayoutAttributeRight horizontalEdge:NSLayoutAttributeBottom];
-}
-
-/**
- * To set margin of the label from specific edges.
- *
- * @param margin The margin from the edges.
- * @param edgeX The layout attribute respresents vertical edge that the label pins to. Either `NSLayoutAttributeLeft` or `NSLayoutAttributeRight`.
- * @param edgeY The layout attribute respresents horizontal edge that the label pins to. Either `NSLayoutAttributeTop` or `NSLayoutAttributeBottom`.
- *
- * @see setMargin:
- */
-- (void)setMargin:(CGFloat)margin forVerticalEdge:(NSLayoutAttribute)edgeX horizontalEdge:(NSLayoutAttribute)edgeY
-{
- NSAssert(edgeX == NSLayoutAttributeLeft || edgeX == NSLayoutAttributeRight,
- @"Vertical edge must be NSLayoutAttributeLeft or NSLayoutAttributeRight");
-
- NSAssert(edgeY == NSLayoutAttributeTop || edgeY == NSLayoutAttributeBottom,
- @"Horizontal edge must be NSLayoutAttributeTop or NSLayoutAttributeBottom");
-
- [self.superview removeConstraints:@[self.verticalConstraint, self.horizontalConstraint]];
- self.verticalConstraint = [self autoPinEdgeToSuperviewEdge:(ALEdge)edgeX withInset:margin];
- self.horizontalConstraint = [self autoPinEdgeToSuperviewEdge:(ALEdge)edgeY withInset:margin];
-}
-
-/**
- * To set the text attributes to display the label.
- *
- * Currently only supports attributes `NSFontAttributeName`, `NSForegroundColorAttributeName` and `NSBackgroundColorAttributeName`.
- *
- * @param textAttributes The text attributes used to display the label.
- */
-- (void)setTextAttributes:(NSDictionary *)textAttributes
-{
- self.font = (textAttributes) ? textAttributes[NSFontAttributeName] : CTAssetLabelFont;
- self.textColor = (textAttributes) ? textAttributes[NSForegroundColorAttributeName] : CTAssetLabelTextColor;
- self.backgroundColor = (textAttributes) ? textAttributes[NSBackgroundColorAttributeName] : CTAssetLabelBackgroundColor;
-}
-
-
-#pragma mark Triggering Auto Layout
-
-/**
- * Updates constraints of the label.
- */
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityRequired forConstraints:^{
- self.sizeConstraints = [self autoSetDimensionsToSize:CTAssetLabelSize];
- }];
-
- self.verticalConstraint = [self autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:0];
- self.horizontalConstraint = [self autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:0];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetThumbnailOverlay.h b/Libraries external/CTAssetsPickerController/CTAssetThumbnailOverlay.h
deleted file mode 100755
index 2c5c6ef6b..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetThumbnailOverlay.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import <Photos/Photos.h>
-
-
-@interface CTAssetThumbnailOverlay : UIView
-
-- (void)bind:(nullable PHAsset *)asset duration:(nullable NSString *)duration;
-- (void)bind:(nullable PHAssetCollection *)assetCollection;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetThumbnailOverlay.m b/Libraries external/CTAssetsPickerController/CTAssetThumbnailOverlay.m
deleted file mode 100755
index 7390e4546..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetThumbnailOverlay.m
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetThumbnailOverlay.h"
-#import "UIImage+CTAssetsPickerController.h"
-#import "PHAsset+CTAssetsPickerController.h"
-#import "PHAssetCollection+CTAssetsPickerController.h"
-
-
-
-@interface CTAssetThumbnailOverlay ()
-
-@property (nonatomic, strong) UIImageView *gradient;
-@property (nonatomic, strong) UIImageView *badge;
-@property (nonatomic, strong) UILabel *duration;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-
-@implementation CTAssetThumbnailOverlay
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- self.opaque = NO;
- self.clipsToBounds = YES;
- self.isAccessibilityElement = NO;
-
- [self setupViews];
- }
-
- return self;
-}
-
-
-#pragma markt - Setup
-
-- (void)setupViews
-{
- UIImageView *gradient = [UIImageView newAutoLayoutView];
- gradient.image = [UIImage ctassetsPickerImageNamed:@"GridGradient"];
- self.gradient = gradient;
-
- [self addSubview:self.gradient];
-
- UIImageView *badge = [UIImageView newAutoLayoutView];
- badge.tintColor = [UIColor whiteColor];
- self.badge = badge;
-
- [self addSubview:self.badge];
-
- UILabel *duration = [UILabel newAutoLayoutView];
- duration.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption2];
- duration.textColor = [UIColor whiteColor];
- duration.lineBreakMode = NSLineBreakByTruncatingTail;
- duration.layoutMargins = UIEdgeInsetsMake(2.5, 2.5, 2.5, 2.5);
- self.duration = duration;
-
- [self addSubview:self.duration];
-}
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [self.gradient autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero excludingEdge:ALEdgeTop];
- [self.gradient autoSetDimension:ALDimensionHeight toSize:self.gradient.image.size.height];
- [self.badge autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:self.badge.layoutMargins.left];
- [self.badge autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:self.badge.layoutMargins.bottom];
- [self.duration autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:self.duration.layoutMargins.right];
- [self.duration autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:self.duration.layoutMargins.bottom];
-
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-
-#pragma - Bind asset and duration
-
-- (void)bind:(PHAsset *)asset duration:(NSString *)duration;
-{
- self.badge.image = [asset badgeImage];
- self.badge.layoutMargins = [self layoutMarginsForAsset:asset];
- self.duration.text = duration;
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
-}
-
-- (UIEdgeInsets)layoutMarginsForAsset:(PHAsset *)asset
-{
- if (asset.ctassetsPickerIsHighFrameRateVideo)
- return UIEdgeInsetsMake(2.5, 2.5, 2.5, 2.5);
-
- else if (asset.ctassetsPickerIsTimelapseVideo)
- return UIEdgeInsetsMake(2.5, 2.5, 2.5, 2.5);
-
- else if (asset.ctassetsPickerIsVideo)
- return UIEdgeInsetsMake(4.5, 4.5, 4.5, 4.5);
-
- else
- return UIEdgeInsetsZero;
-}
-
-
-#pragma - Bind asset collection
-
-- (void)bind:(PHAssetCollection *)assetCollection;
-{
- self.badge.image = [assetCollection badgeImage];
- self.badge.layoutMargins = [self layoutMarginsForAssetCollection:assetCollection];
- self.duration.text = nil;
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
-}
-
-- (UIEdgeInsets)layoutMarginsForAssetCollection:(PHAssetCollection *)assetCollection
-{
- return UIEdgeInsetsMake(4.0, 4.0, 4.0, 4.0);
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetThumbnailStacks.h b/Libraries external/CTAssetsPickerController/CTAssetThumbnailStacks.h
deleted file mode 100755
index e2280691f..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetThumbnailStacks.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import "CTAssetThumbnailView.h"
-
-@interface CTAssetThumbnailStacks : UIView
-
-@property (nonatomic, assign) CGSize thumbnailSize;
-@property (nonatomic, copy, readonly) NSArray<CTAssetThumbnailView*> *thumbnailViews;
-@property (nonatomic, assign, readonly) UIEdgeInsets edgeInsets;
-
-- (nonnull CTAssetThumbnailView *)thumbnailAtIndex:(NSUInteger)index;
-- (void)setHighlighted:(BOOL)highlighted;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetThumbnailStacks.m b/Libraries external/CTAssetsPickerController/CTAssetThumbnailStacks.m
deleted file mode 100755
index a17c397db..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetThumbnailStacks.m
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetThumbnailStacks.h"
-#import "CTAssetThumbnailView.h"
-
-
-@interface CTAssetThumbnailStacks ()
-
-@property (nonatomic, copy) NSArray *thumbnailViews;
-@property (nonatomic, assign) UIEdgeInsets edgeInsets;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-
-@implementation CTAssetThumbnailStacks
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- _edgeInsets = UIEdgeInsetsMake(4.0, 0, 0, 0);
-
- self.opaque = YES;
- self.clipsToBounds = YES;
- self.isAccessibilityElement = NO;
-
- [self setupViews];
- }
-
- return self;
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- NSMutableArray *thumbnailViews = [NSMutableArray new];
-
- for (NSUInteger index = 0; index < 3; index++)
- {
- CTAssetThumbnailView *thumbnailView = [CTAssetThumbnailView newAutoLayoutView];
- thumbnailView.showsDuration = NO;
- thumbnailView.layer.borderColor = [UIColor whiteColor].CGColor;
- thumbnailView.layer.borderWidth = 0.5f;
-
- [thumbnailViews addObject:thumbnailView];
- [self insertSubview:thumbnailView atIndex:0];
- }
-
- self.thumbnailViews = [NSArray arrayWithArray:thumbnailViews];
-}
-
-
-#pragma markt - Setters
-
-- (void)setThumbnailSize:(CGSize)thumbnailSize
-{
- _thumbnailSize = thumbnailSize;
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
-}
-
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- for (NSUInteger index = 0; index < self.thumbnailViews.count; index++)
- {
- CTAssetThumbnailView *thumbnailView = [self thumbnailAtIndex:index];
-
- CGFloat delta = self.edgeInsets.top / 2;
-
- CGSize size = self.thumbnailSize;
- size.width -= index * delta * 2;
- size.height -= index * delta * 2;
-
- CGFloat inset = (index * delta * 3);
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityRequired forConstraints:^{
- [thumbnailView autoSetDimensionsToSize:size];
- }];
-
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityDefaultHigh forConstraints:^{
- [thumbnailView autoAlignAxisToSuperviewAxis:ALAxisVertical];
- [thumbnailView autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:inset];
- }];
- }
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-
-- (CTAssetThumbnailView *)thumbnailAtIndex:(NSUInteger)index
-{
- return self.thumbnailViews[index];
-}
-
-- (void)setHighlighted:(BOOL)highlighted
-{
- for (CTAssetThumbnailView *thumbnailView in self.thumbnailViews)
- thumbnailView.backgroundColor = CTAssetsPikcerThumbnailBackgroundColor;
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetThumbnailView.h b/Libraries external/CTAssetsPickerController/CTAssetThumbnailView.h
deleted file mode 100755
index 1cf681cc1..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetThumbnailView.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import <Photos/Photos.h>
-
-@interface CTAssetThumbnailView : UIView
-
-@property (nonatomic, assign) BOOL showsDuration;
-@property (nonatomic, strong, nullable) UIImage *backgroundImage;
-
-- (void)bind:(nullable UIImage *)image asset:(nullable PHAsset *)asset;
-- (void)bind:(nullable UIImage *)image assetCollection:(nullable PHAssetCollection *)assetCollection;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetThumbnailView.m b/Libraries external/CTAssetsPickerController/CTAssetThumbnailView.m
deleted file mode 100755
index e0603483a..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetThumbnailView.m
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetThumbnailView.h"
-#import "CTAssetThumbnailOverlay.h"
-#import "PHAsset+CTAssetsPickerController.h"
-#import "NSDateFormatter+CTAssetsPickerController.h"
-
-
-
-@interface CTAssetThumbnailView ()
-
-@property (nonatomic, strong) CTAssetThumbnailOverlay *overlay;
-@property (nonatomic, strong) UIImageView *imageView;
-@property (nonatomic, strong) UIImageView *backgroundView;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-
-@implementation CTAssetThumbnailView
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- _showsDuration = YES;
- self.opaque = YES;
- self.clipsToBounds = YES;
- self.isAccessibilityElement = NO;
-
- [self setupViews];
- }
-
- return self;
-}
-
-#pragma markt - Setup
-
-- (void)setupViews
-{
- self.backgroundColor = CTAssetsPikcerThumbnailBackgroundColor;
-
- UIImageView *backgroundView = [UIImageView new];
- backgroundView.contentMode = UIViewContentModeCenter;
- backgroundView.tintColor = CTAssetsPikcerThumbnailTintColor;
- self.backgroundView = backgroundView;
-
- UIImageView *imageView = [UIImageView new];
- imageView.contentMode = UIViewContentModeScaleAspectFill;
- self.imageView = imageView;
-
- [self addSubview:self.backgroundView];
- [self addSubview:self.imageView];
-}
-
-
-#pragma markt - Setters
-
-- (void)setBackgroundImage:(UIImage *)backgroundImage
-{
- _backgroundImage = backgroundImage;
- self.backgroundView.image = backgroundImage;
-}
-
-
-#pragma markt - Override set bounds
-
--(void)setBounds:(CGRect)bounds
-{
- super.bounds = bounds;
-
- self.overlay.frame = bounds;
- [self.overlay setNeedsDisplay];
-}
-
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [self.backgroundView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self.imageView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-#pragma - Bind asset and image
-
-- (void)bind:(UIImage *)image asset:(PHAsset *)asset;
-{
- [self setupOverlayForAsset:asset];
-
- self.imageView.image = image;
- self.backgroundView.hidden = (image != nil);
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
-}
-
-- (void)setupOverlayForAsset:(PHAsset *)asset
-{
- if (asset.ctassetsPickerIsVideo)
- {
- if (!self.overlay) {
- self.overlay = [[CTAssetThumbnailOverlay alloc] initWithFrame:self.bounds];
- [self addSubview:self.overlay];
- }
-
- NSString *duration = nil;
-
- if (self.showsDuration)
- {
- NSDateFormatter *df = [NSDateFormatter new];
- duration = [df ctassetsPickerStringFromTimeInterval:asset.duration];
- }
-
- [self.overlay bind:asset duration:duration];
- }
-
- else
- {
- [self.overlay removeFromSuperview];
- self.overlay = nil;
- }
-}
-
-
-#pragma - Bind asset collection and image
-
-- (void)bind:(UIImage *)image assetCollection:(PHAssetCollection *)assetCollection;
-{
- [self setupOverlayForAssetCollection:assetCollection];
-
- self.imageView.image = image;
- self.backgroundView.hidden = (image != nil);
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
-}
-
-- (void)setupOverlayForAssetCollection:(PHAssetCollection *)assetCollection
-{
- if (assetCollection.assetCollectionType == PHAssetCollectionTypeSmartAlbum &&
- assetCollection.assetCollectionSubtype != PHAssetCollectionSubtypeSmartAlbumAllHidden)
- {
- if (!self.overlay) {
- self.overlay = [[CTAssetThumbnailOverlay alloc] initWithFrame:self.bounds];
- [self addSubview:self.overlay];
- }
-
- [self.overlay bind:assetCollection];
- }
-
- else
- {
- [self.overlay removeFromSuperview];
- self.overlay = nil;
- }
-}
-
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridSelectedView.h b/Libraries external/CTAssetsPickerController/CTAssetsGridSelectedView.h
deleted file mode 100755
index 22b64d531..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridSelectedView.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2013 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetsGridSelectedView : UIView
-
-@property (nonatomic, assign) BOOL showsSelectionIndex;
-@property (nonatomic, assign) NSUInteger selectionIndex;
-
-@property (nonatomic, weak, nullable) UIColor *selectedBackgroundColor UI_APPEARANCE_SELECTOR;
-@property (nonatomic, assign) CGFloat borderWidth UI_APPEARANCE_SELECTOR;
-
-@property (nonatomic, weak, nullable) UIFont *font UI_APPEARANCE_SELECTOR DEPRECATED_MSG_ATTRIBUTE("Use setTextAttributes: of CTAssetSelectionLabel instead.");
-@property (nonatomic, weak, nullable) UIColor *textColor UI_APPEARANCE_SELECTOR DEPRECATED_MSG_ATTRIBUTE("Use setTextAttributes: of CTAssetSelectionLabel instead.");
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridSelectedView.m b/Libraries external/CTAssetsPickerController/CTAssetsGridSelectedView.m
deleted file mode 100755
index 634a931cf..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridSelectedView.m
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2013 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsGridSelectedView.h"
-#import "CTAssetCheckmark.h"
-#import "CTAssetSelectionLabel.h"
-
-
-
-
-@interface CTAssetsGridSelectedView ()
-
-@property (nonatomic, strong) CTAssetCheckmark *checkmark;
-@property (nonatomic, strong) CTAssetSelectionLabel *selectionIndexLabel;
-
-@end
-
-
-
-
-
-@implementation CTAssetsGridSelectedView
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- [self setupViews];
- self.showsSelectionIndex = NO;
- }
-
- return self;
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- self.backgroundColor = CTAssetsGridSelectedViewBackgroundColor;
- self.layer.borderColor = CTAssetsGridSelectedViewTintColor.CGColor;
-
- CTAssetCheckmark *checkmark = [CTAssetCheckmark newAutoLayoutView];
- self.checkmark = checkmark;
- [self addSubview:checkmark];
-
- CTAssetSelectionLabel *selectionIndexLabel = [CTAssetSelectionLabel newAutoLayoutView];
- self.selectionIndexLabel = selectionIndexLabel;
-
- [self addSubview:self.selectionIndexLabel];
-}
-
-
-#pragma mark - Accessors
-
-- (void)setShowsSelectionIndex:(BOOL)showsSelectionIndex
-{
- _showsSelectionIndex = showsSelectionIndex;
-
- if (showsSelectionIndex)
- {
- self.checkmark.hidden = YES;
- self.selectionIndexLabel.hidden = NO;
- }
- else
- {
- self.checkmark.hidden = NO;
- self.selectionIndexLabel.hidden = YES;
- }
-}
-
-- (void)setSelectionIndex:(NSUInteger)selectionIndex
-{
- _selectionIndex = selectionIndex;
- self.selectionIndexLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)(selectionIndex + 1)];
-}
-
-
-#pragma mark - Apperance
-
-- (UIColor *)selectedBackgroundColor
-{
- return self.backgroundColor;
-}
-
-- (void)setSelectedBackgroundColor:(UIColor *)backgroundColor
-{
- UIColor *color = (backgroundColor) ? backgroundColor : CTAssetsGridSelectedViewBackgroundColor;
- self.backgroundColor = color;
-}
-
-- (CGFloat)borderWidth
-{
- return self.layer.borderWidth;
-}
-
-- (void)setBorderWidth:(CGFloat)borderWidth
-{
- self.layer.borderWidth = borderWidth;
-}
-
-- (void)setTintColor:(UIColor *)tintColor
-{
- UIColor *color = (tintColor) ? tintColor : CTAssetsGridSelectedViewTintColor;
- self.layer.borderColor = color.CGColor;
-}
-
-
-#pragma mark - Accessibility Label
-
-- (NSString *)accessibilityLabel
-{
- return self.selectionIndexLabel.text;
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridView.h b/Libraries external/CTAssetsPickerController/CTAssetsGridView.h
deleted file mode 100755
index e7e26f68d..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridView.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetsGridView : UIView
-
-@property (nonatomic, weak, nullable) UIColor *gridBackgroundColor UI_APPEARANCE_SELECTOR;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridView.m b/Libraries external/CTAssetsPickerController/CTAssetsGridView.m
deleted file mode 100755
index 7cc7aa6c5..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridView.m
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsGridView.h"
-
-@interface CTAssetsGridView ()
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-@implementation CTAssetsGridView
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- [self setupViews];
- }
-
- return self;
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- self.backgroundColor = CTAssetsGridViewBackgroundColor;
-}
-
-
-#pragma mark - Apperance
-
-- (UIColor *)gridBackgroundColor
-{
- return self.backgroundColor;
-}
-
-- (void)setGridBackgroundColor:(UIColor *)backgroundColor
-{
- UIColor *color = (backgroundColor) ? (backgroundColor) : CTAssetsGridViewBackgroundColor;
- self.backgroundColor = color;
-}
-
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [self autoPinEdgesToSuperviewEdges];
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridViewCell.h b/Libraries external/CTAssetsPickerController/CTAssetsGridViewCell.h
deleted file mode 100755
index fe8153465..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridViewCell.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import <Photos/Photos.h>
-#import "CTAssetThumbnailView.h"
-
-
-
-@interface CTAssetsGridViewCell : UICollectionViewCell
-
-@property (nonatomic, assign, getter = isEnabled) BOOL enabled;
-@property (nonatomic, assign) BOOL showsSelectionIndex;
-@property (nonatomic, assign) NSUInteger selectionIndex;
-
-@property (nonatomic, weak, nullable) UIColor *disabledColor UI_APPEARANCE_SELECTOR;
-@property (nonatomic, weak, nullable) UIColor *highlightedColor UI_APPEARANCE_SELECTOR;
-
-- (void)bind:(nonnull PHAsset *)asset;
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridViewCell.m b/Libraries external/CTAssetsPickerController/CTAssetsGridViewCell.m
deleted file mode 100755
index 1bfa214dd..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridViewCell.m
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsGridViewCell.h"
-#import "CTAssetsGridSelectedView.h"
-#import "PHAsset+CTAssetsPickerController.h"
-#import "NSDateFormatter+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-
-
-
-@interface CTAssetsGridViewCell ()
-
-@property (nonatomic, strong) PHAsset *asset;
-
-@property (nonatomic, strong) UIImageView *disabledImageView;
-@property (nonatomic, strong) UIView *disabledView;
-@property (nonatomic, strong) UIView *highlightedView;
-@property (nonatomic, strong) CTAssetsGridSelectedView *selectedView;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-
-
-
-@implementation CTAssetsGridViewCell
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- self.opaque = YES;
- self.isAccessibilityElement = YES;
- self.accessibilityTraits = UIAccessibilityTraitImage;
- self.enabled = YES;
- self.showsSelectionIndex = NO;
-
- [self setupViews];
- }
-
- return self;
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- CTAssetThumbnailView *thumbnailView = [CTAssetThumbnailView newAutoLayoutView];
- self.backgroundView = thumbnailView;
-
- UIImage *disabledImage = [UIImage ctassetsPickerImageNamed:@"GridDisabledAsset"];
- disabledImage = [disabledImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
- UIImageView *disabledImageView = [[UIImageView alloc] initWithImage:disabledImage];
- disabledImageView.tintColor = CTAssetsPikcerThumbnailTintColor;
- self.disabledImageView = disabledImageView;
-
- UIView *disabledView = [UIView newAutoLayoutView];
- disabledView.backgroundColor = CTAssetsGridViewCellDisabledColor;
- disabledView.hidden = YES;
- [disabledView addSubview:self.disabledImageView];
- self.disabledView = disabledView;
- [self addSubview:self.disabledView];
-
- UIView *highlightedView = [UIView newAutoLayoutView];
- highlightedView.backgroundColor = CTAssetsGridViewCellHighlightedColor;
- highlightedView.hidden = YES;
- self.highlightedView = highlightedView;
- [self addSubview:self.highlightedView];
-
- CTAssetsGridSelectedView *selectedView = [CTAssetsGridSelectedView newAutoLayoutView];
- selectedView.hidden = YES;
- self.selectedView = selectedView;
- [self addSubview:self.selectedView];
-}
-
-#pragma mark - Apperance
-
-- (UIColor *)disabledColor
-{
- return self.disabledView.backgroundColor;
-}
-
-- (void)setDisabledColor:(UIColor *)disabledColor
-{
- UIColor *color = (disabledColor) ? disabledColor : CTAssetsGridViewCellDisabledColor;
- self.disabledView.backgroundColor = color;
-}
-
-- (UIColor *)highlightedColor
-{
- return self.highlightedView.backgroundColor;
-}
-
-- (void)setHighlightedColor:(UIColor *)highlightedColor
-{
- UIColor *color = (highlightedColor) ? highlightedColor : CTAssetsGridViewCellHighlightedColor;
- self.highlightedView.backgroundColor = color;
-}
-
-
-#pragma mark - Accessors
-
-- (void)setEnabled:(BOOL)enabled
-{
- _enabled = enabled;
- self.disabledView.hidden = enabled;
-}
-
-- (void)setHighlighted:(BOOL)highlighted
-{
- super.highlighted = highlighted;
- self.highlightedView.hidden = !highlighted;
-}
-
-- (void)setSelected:(BOOL)selected
-{
- super.selected = selected;
- self.selectedView.hidden = !selected;
-}
-
-- (void)setShowsSelectionIndex:(BOOL)showsSelectionIndex
-{
- _showsSelectionIndex = showsSelectionIndex;
- self.selectedView.showsSelectionIndex = showsSelectionIndex;
-}
-
-- (void)setSelectionIndex:(NSUInteger)selectionIndex
-{
- _selectionIndex = selectionIndex;
- self.selectedView.selectionIndex = selectionIndex;
-}
-
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [NSLayoutConstraint autoSetPriority:UILayoutPriorityRequired forConstraints:^{
- [self.backgroundView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self.disabledView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self.highlightedView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- [self.selectedView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
- }];
-
- [self.disabledImageView autoCenterInSuperview];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-
-- (void)bind:(PHAsset *)asset
-{
- self.asset = asset;
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
-}
-
-
-#pragma mark - Accessibility Label
-
-- (NSString *)accessibilityLabel
-{
- if (self.selectedView.accessibilityLabel)
- return [NSString stringWithFormat:@"%@, %@", self.selectedView.accessibilityLabel, self.asset.accessibilityLabel];
- else
- return self.asset.accessibilityLabel;
-}
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridViewController.h b/Libraries external/CTAssetsPickerController/CTAssetsGridViewController.h
deleted file mode 100755
index 34d68fece..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridViewController.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import <Photos/Photos.h>
-
-
-@class CTAssetsGridViewController;
-
-
-
-@protocol CTAssetsGridViewControllerDelegate <NSObject>
-
-- (void)assetsGridViewController:(nonnull CTAssetsGridViewController *)picker photoLibraryDidChangeForAssetCollection:(nonnull PHAssetCollection *)assetCollection;
-
-@end
-
-
-
-@interface CTAssetsGridViewController : UICollectionViewController
-
-@property (nonatomic, weak) id<CTAssetsGridViewControllerDelegate> delegate;
-@property (nonatomic, strong, nonnull) PHAssetCollection *assetCollection;
-
-@end
-
-
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridViewController.m b/Libraries external/CTAssetsPickerController/CTAssetsGridViewController.m
deleted file mode 100755
index 8914379fc..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridViewController.m
+++ /dev/null
@@ -1,802 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsPickerController.h"
-#import "CTAssetsPickerController+Internal.h"
-#import "CTAssetsGridViewController.h"
-#import "CTAssetsGridView.h"
-#import "CTAssetsGridViewLayout.h"
-#import "CTAssetsGridViewCell.h"
-#import "CTAssetsGridViewFooter.h"
-#import "CTAssetsPickerNoAssetsView.h"
-#import "CTAssetsPageViewController.h"
-#import "CTAssetsPageViewController+Internal.h"
-#import "CTAssetsViewControllerTransition.h"
-#import "UICollectionView+CTAssetsPickerController.h"
-#import "NSIndexSet+CTAssetsPickerController.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "PHImageManager+CTAssetsPickerController.h"
-
-
-
-
-
-NSString * const CTAssetsGridViewCellIdentifier = @"CTAssetsGridViewCellIdentifier";
-NSString * const CTAssetsGridViewFooterIdentifier = @"CTAssetsGridViewFooterIdentifier";
-
-
-@interface CTAssetsGridViewController ()
-<PHPhotoLibraryChangeObserver>
-
-@property (nonatomic, weak) CTAssetsPickerController *picker;
-@property (nonatomic, strong) PHFetchResult *fetchResult;
-@property (nonatomic, strong) PHCachingImageManager *imageManager;
-
-@property (nonatomic, assign) CGRect previousPreheatRect;
-@property (nonatomic, assign) CGRect previousBounds;
-
-@property (nonatomic, strong) CTAssetsGridViewFooter *footer;
-@property (nonatomic, strong) CTAssetsPickerNoAssetsView *noAssetsView;
-
-@property (nonatomic, assign) BOOL didLayoutSubviews;
-
-@end
-
-
-
-
-
-@implementation CTAssetsGridViewController
-
-
-- (instancetype)init
-{
- CTAssetsGridViewLayout *layout = [CTAssetsGridViewLayout new];
-
- if (self = [super initWithCollectionViewLayout:layout])
- {
- _imageManager = [PHCachingImageManager new];
-
- self.extendedLayoutIncludesOpaqueBars = YES;
-
- self.collectionView.allowsMultipleSelection = YES;
-
- [self.collectionView registerClass:CTAssetsGridViewCell.class
- forCellWithReuseIdentifier:CTAssetsGridViewCellIdentifier];
-
- [self.collectionView registerClass:CTAssetsGridViewFooter.class
- forSupplementaryViewOfKind:UICollectionElementKindSectionFooter
- withReuseIdentifier:CTAssetsGridViewFooterIdentifier];
-
- [self addNotificationObserver];
- }
-
- return self;
-}
-
-- (void)viewDidLoad
-{
- [super viewDidLoad];
- [self setupViews];
- [self registerChangeObserver];
- [self addGestureRecognizer];
- [self addNotificationObserver];
- [self resetCachedAssetImages];
-}
-
-- (void)viewWillAppear:(BOOL)animated
-{
- [super viewWillAppear:animated];
- [self setupButtons];
- [self setupAssets];
- [self updateTitle:self.picker.selectedAssets];
- [self updateButton:self.picker.selectedAssets];
-}
-
-- (void)viewDidAppear:(BOOL)animated
-{
- [super viewDidAppear:animated];
- [self updateCachedAssetImages];
-}
-
-- (void)viewWillLayoutSubviews
-{
- [super viewWillLayoutSubviews];
-
- if (!CGRectEqualToRect(self.view.bounds, self.previousBounds))
- {
- [self updateCollectionViewLayout];
- self.previousBounds = self.view.bounds;
- }
-}
-
-- (void)viewDidLayoutSubviews
-{
- [super viewDidLayoutSubviews];
-
- if (!self.didLayoutSubviews && self.fetchResult.count > 0)
- {
- [self scrollToBottomIfNeeded];
- self.didLayoutSubviews = YES;
- }
-}
-
-- (void)dealloc
-{
- [self unregisterChangeObserver];
- [self removeNotificationObserver];
-}
-
-
-#pragma mark - Accessors
-
-- (CTAssetsPickerController *)picker
-{
- return (CTAssetsPickerController *)self.splitViewController.parentViewController;
-}
-
-- (PHAsset *)assetAtIndexPath:(NSIndexPath *)indexPath
-{
- return (self.fetchResult.count > 0) ? self.fetchResult[indexPath.item] : nil;
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- self.collectionView.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
- CTAssetsGridView *gridView = [CTAssetsGridView new];
- [self.view insertSubview:gridView atIndex:0];
- [self.view setNeedsUpdateConstraints];
-}
-
-- (void)setupButtons
-{
- if (self.navigationItem.rightBarButtonItem == nil)
- {
- NSString *title = (self.picker.doneButtonTitle) ?
- self.picker.doneButtonTitle : CTAssetsPickerLocalizedString(@"Done", nil);
-
- self.navigationItem.rightBarButtonItem =
- [[UIBarButtonItem alloc] initWithTitle:title
- style:UIBarButtonItemStyleDone
- target:self.picker
- action:@selector(finishPickingAssets:)];
- }
-}
-
-- (void)setupAssets
-{
- PHFetchResult *fetchResult =
- [PHAsset fetchAssetsInAssetCollection:self.assetCollection
- options:self.picker.assetsFetchOptions];
-
- self.fetchResult = fetchResult;
- [self reloadData];
-}
-
-
-
-
-#pragma mark - Collection view layout
-
-- (void)updateCollectionViewLayout
-{
- UITraitCollection *trait = self.traitCollection;
- CGSize contentSize = self.view.bounds.size;
- UICollectionViewLayout *layout;
-
- NSArray *attributes = [self.collectionView.collectionViewLayout layoutAttributesForElementsInRect:self.collectionView.bounds];
- UICollectionViewLayoutAttributes *attr = (UICollectionViewLayoutAttributes*)attributes.firstObject;
- // new content size should be at least of first item size, else ignoring
- if (contentSize.width < attr.size.width || contentSize.height < attr.size.height) {
- return;
- }
-
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:collectionViewLayoutForContentSize:traitCollection:)]) {
- layout = [self.picker.delegate assetsPickerController:self.picker collectionViewLayoutForContentSize:contentSize traitCollection:trait];
- } else {
- layout = [[CTAssetsGridViewLayout alloc] initWithContentSize:contentSize traitCollection:trait];
- }
-
- __weak CTAssetsGridViewController *weakSelf = self;
-
- [self.collectionView setCollectionViewLayout:layout animated:NO completion:^(BOOL finished){
- [weakSelf.collectionView reloadItemsAtIndexPaths:[weakSelf.collectionView indexPathsForVisibleItems]];
- }];
-}
-
-
-
-#pragma mark - Scroll to bottom
-
-- (void)scrollToBottomIfNeeded
-{
- BOOL shouldScrollToBottom;
-
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:shouldScrollToBottomForAssetCollection:)])
- shouldScrollToBottom = [self.picker.delegate assetsPickerController:self.picker shouldScrollToBottomForAssetCollection:self.assetCollection];
- else
- shouldScrollToBottom = YES;
-
- if (shouldScrollToBottom)
- {
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.fetchResult.count-1 inSection:0];
- [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:NO];
- }
-}
-
-
-
-#pragma mark - Notifications
-
-- (void)addNotificationObserver
-{
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
-
- [center addObserver:self
- selector:@selector(assetsPickerSelectedAssetsDidChange:)
- name:CTAssetsPickerSelectedAssetsDidChangeNotification
- object:nil];
-
- [center addObserver:self
- selector:@selector(assetsPickerDidSelectAsset:)
- name:CTAssetsPickerDidSelectAssetNotification
- object:nil];
-
- [center addObserver:self
- selector:@selector(assetsPickerDidDeselectAsset:)
- name:CTAssetsPickerDidDeselectAssetNotification
- object:nil];
-}
-
-- (void)removeNotificationObserver
-{
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
-
- [center removeObserver:self name:CTAssetsPickerSelectedAssetsDidChangeNotification object:nil];
- [center removeObserver:self name:CTAssetsPickerDidSelectAssetNotification object:nil];
- [center removeObserver:self name:CTAssetsPickerDidDeselectAssetNotification object:nil];
-}
-
-
-#pragma mark - Photo library change observer
-
-- (void)registerChangeObserver
-{
- [[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:self];
-}
-
-- (void)unregisterChangeObserver
-{
- [[PHPhotoLibrary sharedPhotoLibrary] unregisterChangeObserver:self];
-}
-
-
-#pragma mark - Photo library changed
-
-- (void)photoLibraryDidChange:(PHChange *)changeInstance
-{
- // Call might come on any background queue. Re-dispatch to the main queue to handle it.
- dispatch_async(dispatch_get_main_queue(), ^{
-
- PHFetchResultChangeDetails *changeDetails = [changeInstance changeDetailsForFetchResult:self.fetchResult];
-
- if (changeDetails)
- {
- self.fetchResult = changeDetails.fetchResultAfterChanges;
-
- UICollectionView *collectionView = self.collectionView;
-
- if (!changeDetails.hasIncrementalChanges || changeDetails.hasMoves)
- {
- [collectionView reloadData];
- [self resetCachedAssetImages];
- }
- else
- {
- NSArray *removedPaths;
- NSArray *insertedPaths;
- NSArray *changedPaths;
-
- NSIndexSet *removedIndexes = changeDetails.removedIndexes;
- removedPaths = [removedIndexes ctassetsPickerIndexPathsFromIndexesWithSection:0];
-
- NSIndexSet *insertedIndexes = changeDetails.insertedIndexes;
- insertedPaths = [insertedIndexes ctassetsPickerIndexPathsFromIndexesWithSection:0];
-
- NSIndexSet *changedIndexes = changeDetails.changedIndexes;
- changedPaths = [changedIndexes ctassetsPickerIndexPathsFromIndexesWithSection:0];
-
- BOOL shouldReload = NO;
-
- if (changedPaths != nil && removedPaths != nil)
- {
- for (NSIndexPath *changedPath in changedPaths)
- {
- if ([removedPaths containsObject:changedPath])
- {
- shouldReload = YES;
- break;
- }
- }
- }
-
- if (removedPaths.lastObject && ((NSIndexPath *)removedPaths.lastObject).item >= self.fetchResult.count)
- {
- shouldReload = YES;
- }
-
- if (shouldReload)
- {
- [collectionView reloadData];
-
- }
- else
- {
- // if we have incremental diffs, tell the collection view to animate insertions and deletions
- [collectionView performBatchUpdates:^{
- if (removedPaths.count)
- {
- [collectionView deleteItemsAtIndexPaths:[removedIndexes ctassetsPickerIndexPathsFromIndexesWithSection:0]];
- }
-
- if (insertedPaths.count)
- {
- [collectionView insertItemsAtIndexPaths:[insertedIndexes ctassetsPickerIndexPathsFromIndexesWithSection:0]];
- }
-
- if (changedPaths.count)
- {
- [collectionView reloadItemsAtIndexPaths:[changedIndexes ctassetsPickerIndexPathsFromIndexesWithSection:0] ];
- }
- } completion:^(BOOL finished){
- if (finished)
- [self resetCachedAssetImages];
- }];
- }
- }
-
- [self.footer bind:self.fetchResult];
-
- if (self.fetchResult.count == 0)
- [self showNoAssets];
- else
- [self hideNoAssets];
- }
-
- if ([self.delegate respondsToSelector:@selector(assetsGridViewController:photoLibraryDidChangeForAssetCollection:)])
- [self.delegate assetsGridViewController:self photoLibraryDidChangeForAssetCollection:self.assetCollection];
-
- });
-}
-
-
-#pragma mark - Selected assets changed
-
-- (void)assetsPickerSelectedAssetsDidChange:(NSNotification *)notification
-{
- NSArray *selectedAssets = (NSArray *)notification.object;
- [self updateTitle:selectedAssets];
- [self updateButton:selectedAssets];
-}
-
-- (void)updateTitle:(NSArray *)selectedAssets
-{
- if (selectedAssets.count > 0)
- self.title = self.picker.selectedAssetsString;
- else
- self.title = self.assetCollection.localizedTitle;
-}
-
-- (void)updateButton:(NSArray *)selectedAssets
-{
- if (self.picker.alwaysEnableDoneButton)
- self.navigationItem.rightBarButtonItem.enabled = YES;
- else
- self.navigationItem.rightBarButtonItem.enabled = (self.picker.selectedAssets.count > 0);
-}
-
-
-#pragma mark - Did de/select asset notifications
-
-- (void)assetsPickerDidSelectAsset:(NSNotification *)notification
-{
- PHAsset *asset = (PHAsset *)notification.object;
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:[self.fetchResult indexOfObject:asset] inSection:0];
- [self.collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];
-
- [self updateSelectionOrderLabels];
-}
-
-- (void)assetsPickerDidDeselectAsset:(NSNotification *)notification
-{
- PHAsset *asset = (PHAsset *)notification.object;
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:[self.fetchResult indexOfObject:asset] inSection:0];
- [self.collectionView deselectItemAtIndexPath:indexPath animated:NO];
-
- [self updateSelectionOrderLabels];
-}
-
-
-#pragma mark - Update Selection Order Labels
-
-- (void)updateSelectionOrderLabels
-{
- for (NSIndexPath *indexPath in [self.collectionView indexPathsForSelectedItems])
- {
- PHAsset *asset = [self assetAtIndexPath:indexPath];
- CTAssetsGridViewCell *cell = (CTAssetsGridViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath];
- cell.selectionIndex = [self.picker.selectedAssets indexOfObject:asset];
- }
-}
-
-
-#pragma mark - Gesture recognizer
-
-- (void)addGestureRecognizer
-{
- UILongPressGestureRecognizer *longPress =
- [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(pushPageViewController:)];
-
- [self.collectionView addGestureRecognizer:longPress];
-}
-
-
-#pragma mark - Push assets page view controller
-
-- (void)pushPageViewController:(UILongPressGestureRecognizer *)longPress
-{
- if (longPress.state == UIGestureRecognizerStateBegan)
- {
- CGPoint point = [longPress locationInView:self.collectionView];
- NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:point];
-
- CTAssetsPageViewController *vc = [[CTAssetsPageViewController alloc] initWithFetchResult:self.fetchResult];
- vc.allowsSelection = YES;
- vc.pageIndex = indexPath.item;
-
- [self.navigationController pushViewController:vc animated:YES];
- }
-}
-
-
-#pragma mark - Reload data
-
-- (void)reloadData
-{
- if (self.fetchResult.count > 0)
- {
- [self hideNoAssets];
- [self.collectionView reloadData];
- }
- else
- {
- [self showNoAssets];
- }
-}
-
-
-#pragma mark - Asset images caching
-
-- (void)resetCachedAssetImages
-{
- [self.imageManager stopCachingImagesForAllAssets];
- self.previousPreheatRect = CGRectZero;
-}
-
-- (void)updateCachedAssetImages
-{
- BOOL isViewVisible = [self isViewLoaded] && self.view.window != nil;
-
- if (!isViewVisible)
- return;
-
- // The preheat window is twice the height of the visible rect
- CGRect preheatRect = self.collectionView.bounds;
- preheatRect = CGRectInset(preheatRect, 0.0f, -0.5f * CGRectGetHeight(preheatRect));
-
- // If scrolled by a "reasonable" amount...
- CGFloat delta = ABS(CGRectGetMidY(preheatRect) - CGRectGetMidY(self.previousPreheatRect));
-
- if (delta > CGRectGetHeight(self.collectionView.bounds) / 3.0f)
- {
- // Compute the assets to start caching and to stop caching.
- NSMutableArray *addedIndexPaths = [NSMutableArray array];
- NSMutableArray *removedIndexPaths = [NSMutableArray array];
-
- [self computeDifferenceBetweenRect:self.previousPreheatRect
- andRect:preheatRect
- removedHandler:^(CGRect removedRect) {
- NSArray *indexPaths = [self.collectionView ctassetsPickerIndexPathsForElementsInRect:removedRect];
- [removedIndexPaths addObjectsFromArray:indexPaths];
- } addedHandler:^(CGRect addedRect) {
- NSArray *indexPaths = [self.collectionView ctassetsPickerIndexPathsForElementsInRect:addedRect];
- [addedIndexPaths addObjectsFromArray:indexPaths];
- }];
-
- [self startCachingThumbnailsForIndexPaths:addedIndexPaths];
- [self stopCachingThumbnailsForIndexPaths:removedIndexPaths];
-
- self.previousPreheatRect = preheatRect;
- }
-}
-
-- (void)startCachingThumbnailsForIndexPaths:(NSArray *)indexPaths
-{
- for (NSIndexPath *indexPath in indexPaths)
- {
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- if (!asset) break;
-
- UICollectionViewLayoutAttributes *attributes =
- [self.collectionView.collectionViewLayout layoutAttributesForItemAtIndexPath:indexPath];
-
- CGSize targetSize = [self.picker imageSizeForContainerSize:attributes.size];
-
- [self.imageManager startCachingImagesForAssets:@[asset]
- targetSize:targetSize
- contentMode:PHImageContentModeAspectFill
- options:self.picker.thumbnailRequestOptions];
- }
-}
-
-- (void)stopCachingThumbnailsForIndexPaths:(NSArray *)indexPaths
-{
- for (NSIndexPath *indexPath in indexPaths)
- {
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- if (!asset) break;
-
- UICollectionViewLayoutAttributes *attributes =
- [self.collectionView.collectionViewLayout layoutAttributesForItemAtIndexPath:indexPath];
-
- CGSize targetSize = [self.picker imageSizeForContainerSize:attributes.size];
-
- [self.imageManager stopCachingImagesForAssets:@[asset]
- targetSize:targetSize
- contentMode:PHImageContentModeAspectFill
- options:self.picker.thumbnailRequestOptions];
- }
-}
-
-- (void)computeDifferenceBetweenRect:(CGRect)oldRect andRect:(CGRect)newRect removedHandler:(void (^)(CGRect removedRect))removedHandler addedHandler:(void (^)(CGRect addedRect))addedHandler
-{
- if (CGRectIntersectsRect(newRect, oldRect)) {
- CGFloat oldMaxY = CGRectGetMaxY(oldRect);
- CGFloat oldMinY = CGRectGetMinY(oldRect);
- CGFloat newMaxY = CGRectGetMaxY(newRect);
- CGFloat newMinY = CGRectGetMinY(newRect);
- if (newMaxY > oldMaxY) {
- CGRect rectToAdd = CGRectMake(newRect.origin.x, oldMaxY, newRect.size.width, (newMaxY - oldMaxY));
- addedHandler(rectToAdd);
- }
- if (oldMinY > newMinY) {
- CGRect rectToAdd = CGRectMake(newRect.origin.x, newMinY, newRect.size.width, (oldMinY - newMinY));
- addedHandler(rectToAdd);
- }
- if (newMaxY < oldMaxY) {
- CGRect rectToRemove = CGRectMake(newRect.origin.x, newMaxY, newRect.size.width, (oldMaxY - newMaxY));
- removedHandler(rectToRemove);
- }
- if (oldMinY < newMinY) {
- CGRect rectToRemove = CGRectMake(newRect.origin.x, oldMinY, newRect.size.width, (newMinY - oldMinY));
- removedHandler(rectToRemove);
- }
- } else {
- addedHandler(newRect);
- removedHandler(oldRect);
- }
-}
-
-
-#pragma mark - Scroll view delegate
-
-- (void)scrollViewDidScroll:(UIScrollView *)scrollView
-{
- [self updateCachedAssetImages];
-}
-
-
-#pragma mark - No assets
-
-- (void)showNoAssets
-{
- CTAssetsPickerNoAssetsView *view = [CTAssetsPickerNoAssetsView new];
- [self.view addSubview:view];
- [view setNeedsUpdateConstraints];
- [view updateConstraintsIfNeeded];
-
- self.noAssetsView = view;
-}
-
-- (void)hideNoAssets
-{
- if (self.noAssetsView)
- {
- [self.noAssetsView removeFromSuperview];
- self.noAssetsView = nil;
- }
-}
-
-
-#pragma mark - Collection view data source
-
-- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
-{
- return 1;
-}
-
-- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
-{
- return self.fetchResult.count;
-}
-
-- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
-{
- CTAssetsGridViewCell *cell =
- [collectionView dequeueReusableCellWithReuseIdentifier:CTAssetsGridViewCellIdentifier
- forIndexPath:indexPath];
-
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:shouldEnableAsset:)])
- cell.enabled = [self.picker.delegate assetsPickerController:self.picker shouldEnableAsset:asset];
- else
- cell.enabled = YES;
-
- cell.showsSelectionIndex = self.picker.showsSelectionIndex;
-
- // XXX
- // Setting `selected` property blocks further deselection.
- // Have to call selectItemAtIndexPath too. ( ref: http://stackoverflow.com/a/17812116/1648333 )
- if ([self.picker.selectedAssets containsObject:asset])
- {
- cell.selected = YES;
- cell.selectionIndex = [self.picker.selectedAssets indexOfObject:asset];
- [collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];
- }
-
- [cell bind:asset];
-
- UICollectionViewLayoutAttributes *attributes =
- [collectionView.collectionViewLayout layoutAttributesForItemAtIndexPath:indexPath];
-
- CGSize targetSize = [self.picker imageSizeForContainerSize:attributes.size];
-
- [self requestThumbnailForCell:cell targetSize:targetSize asset:asset];
-
- return cell;
-}
-
-- (void)requestThumbnailForCell:(CTAssetsGridViewCell *)cell targetSize:(CGSize)targetSize asset:(PHAsset *)asset
-{
- NSInteger tag = cell.tag + 1;
- cell.tag = tag;
-
- [self.imageManager ctassetsPickerRequestImageForAsset:asset
- targetSize:targetSize
- contentMode:PHImageContentModeAspectFill
- options:self.picker.thumbnailRequestOptions
- resultHandler:^(UIImage *image, NSDictionary *info){
- // Only update the image if the cell tag hasn't changed. Otherwise, the cell has been re-used.
- if (cell.tag == tag)
- [(CTAssetThumbnailView *)cell.backgroundView bind:image asset:asset];
- }];
-}
-
-- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
-{
- CTAssetsGridViewFooter *footer =
- [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter
- withReuseIdentifier:CTAssetsGridViewFooterIdentifier
- forIndexPath:indexPath];
-
- [footer bind:self.fetchResult];
-
- self.footer = footer;
-
- return footer;
-}
-
-
-#pragma mark - Collection view delegate
-
-- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath
-{
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- CTAssetsGridViewCell *cell = (CTAssetsGridViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
-
- if (!cell.isEnabled)
- return NO;
- else if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:shouldSelectAsset:)])
- return [self.picker.delegate assetsPickerController:self.picker shouldSelectAsset:asset];
- else
- return YES;
-}
-
-- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
-{
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- [self.picker selectAsset:asset];
-
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:didSelectAsset:)])
- [self.picker.delegate assetsPickerController:self.picker didSelectAsset:asset];
-}
-
-- (BOOL)collectionView:(UICollectionView *)collectionView shouldDeselectItemAtIndexPath:(NSIndexPath *)indexPath
-{
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:shouldDeselectAsset:)])
- return [self.picker.delegate assetsPickerController:self.picker shouldDeselectAsset:asset];
- else
- return YES;
-}
-
-- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
-{
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- [self.picker deselectAsset:asset];
-
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:didDeselectAsset:)])
- [self.picker.delegate assetsPickerController:self.picker didDeselectAsset:asset];
-}
-
-- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath
-{
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:shouldHighlightAsset:)])
- return [self.picker.delegate assetsPickerController:self.picker shouldHighlightAsset:asset];
- else
- return YES;
-}
-
-- (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
-{
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:didHighlightAsset:)])
- [self.picker.delegate assetsPickerController:self.picker didHighlightAsset:asset];
-}
-
-- (void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath
-{
- PHAsset *asset = [self assetAtIndexPath:indexPath];
-
- if ([self.picker.delegate respondsToSelector:@selector(assetsPickerController:didUnhighlightAsset:)])
- [self.picker.delegate assetsPickerController:self.picker didUnhighlightAsset:asset];
-}
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridViewFooter.h b/Libraries external/CTAssetsPickerController/CTAssetsGridViewFooter.h
deleted file mode 100755
index d0cf55f0c..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridViewFooter.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import <Photos/Photos.h>
-
-
-@interface CTAssetsGridViewFooter : UICollectionReusableView
-
-@property (nonatomic, weak, nullable) UIFont *font UI_APPEARANCE_SELECTOR;
-@property (nonatomic, weak, nullable) UIColor *textColor UI_APPEARANCE_SELECTOR;
-
-- (void)bind:(nonnull PHFetchResult *)result;
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridViewFooter.m b/Libraries external/CTAssetsPickerController/CTAssetsGridViewFooter.m
deleted file mode 100755
index c7b7f5ed2..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridViewFooter.m
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsGridViewFooter.h"
-#import "NSNumberFormatter+CTAssetsPickerController.h"
-#import "NSBundle+CTAssetsPickerController.h"
-
-
-
-
-@interface CTAssetsGridViewFooter ()
-
-@property (nonatomic, strong) UILabel *label;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-
-
-
-
-@implementation CTAssetsGridViewFooter
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- [self setupViews];
- }
-
- return self;
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- UILabel *label = [UILabel newAutoLayoutView];
- label.textAlignment = NSTextAlignmentCenter;
- label.font = CTAssetsGridViewFooterFont;
- label.textColor = CTAssetsGridViewFooterTextColor;
-
- self.label = label;
- [self addSubview:self.label];
-}
-
-
-#pragma mark - Appearance
-
-- (UIFont *)font
-{
- return self.label.font;
-}
-
-- (void)setFont:(UIFont *)font
-{
- UIFont *labelFont = (font) ? font : CTAssetsGridViewFooterFont;
- self.label.font = labelFont;
-}
-
-- (UIColor *)textColor
-{
- return self.label.textColor;
-}
-
-- (void)setTextColor:(UIColor *)textColor
-{
- UIColor *color = (textColor) ? textColor : CTAssetsGridViewFooterTextColor;
- self.label.textColor = color;
-}
-
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [self.label autoPinEdgesToSuperviewMargins];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-- (void)bind:(PHFetchResult *)result
-{
- NSNumberFormatter *nf = [NSNumberFormatter new];
-
- NSString *numberOfVideos = @"";
- NSString *numberOfPhotos = @"";
-
- NSUInteger videoCount = [result countOfAssetsWithMediaType:PHAssetMediaTypeVideo];
- NSUInteger photoCount = [result countOfAssetsWithMediaType:PHAssetMediaTypeImage];
-
- if (videoCount > 0)
- numberOfVideos = [nf ctassetsPickerStringFromAssetsCount:videoCount];
-
- if (photoCount > 0)
- numberOfPhotos = [nf ctassetsPickerStringFromAssetsCount:photoCount];
-
- if (photoCount > 0 && videoCount > 0)
- self.label.text = [NSString stringWithFormat:CTAssetsPickerLocalizedString(@"%@ Photos, %@ Videos", nil), numberOfPhotos, numberOfVideos];
- else if (photoCount > 0 && videoCount <= 0)
- self.label.text = [NSString stringWithFormat:CTAssetsPickerLocalizedString(@"%@ Photos", nil), numberOfPhotos];
- else if (photoCount <= 0 && videoCount > 0)
- self.label.text = [NSString stringWithFormat:CTAssetsPickerLocalizedString(@"%@ Videos", nil), numberOfVideos];
- else
- self.label.text = @"";
-
- self.hidden = (result.count == 0);
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
-}
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridViewLayout.h b/Libraries external/CTAssetsPickerController/CTAssetsGridViewLayout.h
deleted file mode 100755
index 292533c63..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridViewLayout.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetsGridViewLayout : UICollectionViewFlowLayout
-
-- (instancetype)initWithContentSize:(CGSize)contentSize traitCollection:(UITraitCollection *)traits;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsGridViewLayout.m b/Libraries external/CTAssetsPickerController/CTAssetsGridViewLayout.m
deleted file mode 100755
index 75f377c95..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsGridViewLayout.m
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "CTAssetsGridViewLayout.h"
-
-@implementation CTAssetsGridViewLayout
-
-- (instancetype)initWithContentSize:(CGSize)contentSize traitCollection:(UITraitCollection *)traits
-{
- if (self = [super init])
- {
- CGFloat scale = traits.displayScale;
- NSInteger numberOfColumns = [self numberOfColumnsForTraitCollection:traits];
- CGFloat onePixel = (scale == 3.0) ? (2.0 / scale) : (1.0 / scale);
-
- // spacing is as small as possible
- self.minimumInteritemSpacing = onePixel;
- self.minimumLineSpacing = onePixel;
-
- // total spaces between items (in pixel)
- CGFloat spaces = self.minimumInteritemSpacing * (numberOfColumns - 1);
-
- // item length (in pixel)
- CGFloat length = (scale * (contentSize.width - spaces)) / numberOfColumns;
-
- // remaining spaces (in pixel) after rounding the length to integer
- CGFloat insets = (length - floor(length)) * numberOfColumns;
-
- // round the length to integer (in pixel)
- length = floor(length);
-
- // divide insets to two
- CGFloat left = insets / 2;
- CGFloat right = insets / 2;
-
- // adjust if insets is odd
- if (fmodf(insets, 2.0) == 1.0f)
- {
- left -= 0.5;
- right += 0.5;
- }
-
- // left / right insets (in point, 2 decimal)
- left = floorf(left / scale * 100) / 100;
- right = floorf(right / scale * 100) / 100;
-
- // item length (in point, 2 decimal)
- length = floorf(length / scale * 100) / 100;
-
- self.sectionInset = UIEdgeInsetsMake(0, left, 0, right);
- self.itemSize = CGSizeMake(length, length);
-
- self.footerReferenceSize = CGSizeMake(contentSize.width, floor(length * 2/3));
- }
-
- return self;
-}
-
-- (NSInteger)numberOfColumnsForTraitCollection:(UITraitCollection *)traits
-{
- switch (traits.userInterfaceIdiom) {
- case UIUserInterfaceIdiomPad:
- {
- return 6;
- break;
- }
- case UIUserInterfaceIdiomPhone:
- {
- // iPhone 6+ landscape
- if (traits.horizontalSizeClass == UIUserInterfaceSizeClassRegular)
- return 4;
- // iPhone landscape
- else if (traits.verticalSizeClass == UIUserInterfaceSizeClassCompact)
- return 6;
- // iPhone portrait
- else
- return 4;
- break;
- }
- default:
- return 4;
- break;
- }
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsNavigationController.h b/Libraries external/CTAssetsPickerController/CTAssetsNavigationController.h
deleted file mode 100755
index 564076f8b..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsNavigationController.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 bawn
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetsNavigationController : UINavigationController
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsNavigationController.m b/Libraries external/CTAssetsPickerController/CTAssetsNavigationController.m
deleted file mode 100755
index 75536f462..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsNavigationController.m
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 bawn
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "CTAssetsNavigationController.h"
-
-
-
-@interface CTAssetsNavigationController ()<UIGestureRecognizerDelegate, UINavigationControllerDelegate>
-
-@end
-
-@implementation CTAssetsNavigationController
-
-- (void)viewDidLoad
-{
- [super viewDidLoad];
- __weak CTAssetsNavigationController<UIGestureRecognizerDelegate> *weakSelf = self;
-
- if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)])
- {
- self.interactivePopGestureRecognizer.delegate = weakSelf;
-
- self.delegate = weakSelf;
- }
-
-}
-
-- (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
-}
-
-- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
-{
-
- if ( [self respondsToSelector:@selector(interactivePopGestureRecognizer)] && animated == YES )
- {
- self.interactivePopGestureRecognizer.enabled = NO;
- }
-
- [super pushViewController:viewController animated:animated];
-
-}
-
-- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
-{
- if ( [self respondsToSelector:@selector(interactivePopGestureRecognizer)] && animated == YES )
- {
- self.interactivePopGestureRecognizer.enabled = NO;
- }
-
- return [super popToRootViewControllerAnimated:animated];
-
-}
-
-- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
-{
- if( [self respondsToSelector:@selector(interactivePopGestureRecognizer)] )
- {
- self.interactivePopGestureRecognizer.enabled = NO;
- }
-
- return [super popToViewController:viewController animated:animated];
-
-}
-
-#pragma mark UINavigationControllerDelegate
-
-- (void)navigationController:(UINavigationController *)navigationController
- didShowViewController:(UIViewController *)viewController
- animated:(BOOL)animate
-{
- if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)])
- {
- self.interactivePopGestureRecognizer.enabled = YES;
- }
-}
-
-
-- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
-{
-
- if ( gestureRecognizer == self.interactivePopGestureRecognizer )
- {
- if ( self.viewControllers.count < 2 || self.visibleViewController == self.viewControllers[0] )
- {
- return NO;
- }
- }
-
- return YES;
-}
-
-
-@end
-
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPageView.h b/Libraries external/CTAssetsPickerController/CTAssetsPageView.h
deleted file mode 100755
index a30a4a705..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPageView.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetsPageView : UIView
-
-@property (nonatomic, strong, nullable) UIColor *pageBackgroundColor UI_APPEARANCE_SELECTOR;
-@property (nonatomic, strong, nullable) UIColor *fullscreenBackgroundColor UI_APPEARANCE_SELECTOR;
-
-- (void)enterFullscreen;
-- (void)exitFullscreen;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPageView.m b/Libraries external/CTAssetsPickerController/CTAssetsPageView.m
deleted file mode 100755
index 530020677..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPageView.m
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsPageView.h"
-
-@interface CTAssetsPageView ()
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end
-
-
-
-@implementation CTAssetsPageView
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- _pageBackgroundColor = CTAssetsPageViewPageBackgroundColor;
- _fullscreenBackgroundColor = CTAssetsPageViewFullscreenBackgroundColor;
- [self setupViews];
- }
-
- return self;
-}
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- self.backgroundColor = self.pageBackgroundColor;
-}
-
-
-#pragma mark - Apperance
-
-- (void)setPageBackgroundColor:(UIColor *)backgroundColor
-{
- UIColor *color = (backgroundColor) ? backgroundColor : CTAssetsPageViewPageBackgroundColor;
- _pageBackgroundColor = color;
- self.backgroundColor = color;
-}
-
-- (void)setFullscreenBackgroundColor:(UIColor *)fullscreenBackgroundColor
-{
- UIColor *color = (fullscreenBackgroundColor) ? fullscreenBackgroundColor : CTAssetsPageViewFullscreenBackgroundColor;
- _fullscreenBackgroundColor = color;
-}
-
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [self autoPinEdgesToSuperviewEdges];
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-
-#pragma mark - Fading views
-
-- (void)enterFullscreen
-{
- [UIView animateWithDuration:0.2
- animations:^{
- self.backgroundColor = self.fullscreenBackgroundColor;
- }];
-}
-
-- (void)exitFullscreen
-{
- [UIView animateWithDuration:0.2
- animations:^{
- self.backgroundColor = self.pageBackgroundColor;
- }];
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPageViewController.h b/Libraries external/CTAssetsPickerController/CTAssetsPageViewController.h
deleted file mode 100755
index 30a66493c..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPageViewController.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import <Photos/Photos.h>
-
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * A view controller that shows selected photos and vidoes from user's photo library that let the user navigate the item page by page.
- */
-@interface CTAssetsPageViewController : UIPageViewController
-
-/**
- * The index of the photo or video with the currently showing item.
- */
-@property (nonatomic, assign) NSInteger pageIndex;
-
-
-/**
- * @name Creating a Assets Page View Controller
- */
-
-/**
- * Initializes a newly created view controller with a fetech result.
- *
- * @param fetchResult A fetch result of `PHAsset` objects.
- *
- * @return An instance of `CTAssetPageViewController` initialized to show the asset items in `fetchResult`.
- */
-- (instancetype)initWithFetchResult:(PHFetchResult *)fetchResult;
-
-/**
- * Initializes a newly created view controller with an array of assets.
- *
- * @param assets An array of `PHAsset` objects.
- *
- * @return An instance of `CTAssetPageViewController` initialized to show the asset items in `assets`.
- */
-- (instancetype)initWithAssets:(NSArray<PHAsset*> *)assets;
-
-@end
-
-NS_ASSUME_NONNULL_END \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPageViewController.m b/Libraries external/CTAssetsPickerController/CTAssetsPageViewController.m
deleted file mode 100755
index 683827069..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPageViewController.m
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "CTAssetsPageViewController.h"
-#import "CTAssetsPageView.h"
-#import "CTAssetItemViewController.h"
-#import "CTAssetScrollView.h"
-#import "NSNumberFormatter+CTAssetsPickerController.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-#import "PHAsset+CTAssetsPickerController.h"
-
-
-
-
-
-@interface CTAssetsPageViewController ()
-<UIPageViewControllerDataSource, UIPageViewControllerDelegate>
-
-
-@property (nonatomic, assign) BOOL allowsSelection;
-
-@property (nonatomic, assign, getter = isStatusBarHidden) BOOL statusBarHidden;
-
-@property (nonatomic, copy) NSArray *assets;
-@property (nonatomic, strong, readonly) PHAsset *asset;
-
-@property (nonatomic, strong) CTAssetsPageView *pageView;
-
-@property (nonatomic, strong) UIBarButtonItem *playButton;
-@property (nonatomic, strong) UIBarButtonItem *pauseButton;
-
-@end
-
-
-
-
-
-@implementation CTAssetsPageViewController
-
-- (instancetype)initWithFetchResult:(PHFetchResult *)fetchResult
-{
- NSMutableArray *assets = [NSMutableArray new];
-
- for (PHAsset *asset in fetchResult)
- [assets addObject:asset];
-
- return [self initWithAssets:[NSArray arrayWithArray:assets]];
-}
-
-- (instancetype)initWithAssets:(NSArray *)assets
-{
- self = [super initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
- navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
- options:@{UIPageViewControllerOptionInterPageSpacingKey:@30.f}];
-
- if (self)
- {
- self.assets = assets;
- self.dataSource = self;
- self.delegate = self;
- self.allowsSelection = NO;
- self.automaticallyAdjustsScrollViewInsets = NO;
- }
-
- return self;
-}
-
-
-- (void)viewDidLoad
-{
- [super viewDidLoad];
- [self setupViews];
- [self addNotificationObserver];
-}
-
-- (void)dealloc
-{
- [self removeNotificationObserver];
-}
-
-- (BOOL)prefersStatusBarHidden
-{
- if (self.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact)
- return YES;
- else
- return self.isStatusBarHidden;
-}
-
-
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- self.pageView = [CTAssetsPageView new];
- [self.view insertSubview:self.pageView atIndex:0];
- [self.view setNeedsUpdateConstraints];
-}
-
-- (void)setupButtons
-{
- if (!self.playButton)
- {
- UIImage *playImage = [UIImage ctassetsPickerImageNamed:@"PlayButton"];
- playImage = [playImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
-
- UIBarButtonItem *playButton =
- [[UIBarButtonItem alloc] initWithImage:playImage style:UIBarButtonItemStyleDone target:self action:@selector(playAsset:)];
-
- self.playButton = playButton;
- }
-
- if (!self.pauseButton)
- {
- UIImage *pasueImage = [UIImage ctassetsPickerImageNamed:@"PauseButton"];
- pasueImage = [pasueImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
-
- UIBarButtonItem *pauseButton =
- [[UIBarButtonItem alloc] initWithImage:pasueImage style:UIBarButtonItemStylePlain target:self action:@selector(pauseAsset:)];
-
- self.pauseButton = pauseButton;
- }
-}
-
-
-#pragma mark - Update title
-
-- (void)updateTitle:(NSInteger)index
-{
- NSNumberFormatter *nf = [NSNumberFormatter new];
-
- NSInteger count = self.assets.count;
- self.title = [NSString stringWithFormat:CTAssetsPickerLocalizedString(@"%@ of %@", nil),
- [nf ctassetsPickerStringFromAssetsCount:index],
- [nf ctassetsPickerStringFromAssetsCount:count]];
-}
-
-
-#pragma mark - Update toolbar
-
-- (void)updateToolbar
-{
- [self setupButtons];
-
- if ([self.asset ctassetsPickerIsVideo])
- self.toolbarItems = @[[self toolbarSpace], self.playButton, [self toolbarSpace]];
- else
- self.toolbarItems = nil;
-}
-
-- (void)replaceToolbarButton:(UIBarButtonItem *)button
-{
- if (button)
- {
- UIBarButtonItem *space = [self toolbarSpace];
- self.toolbarItems = @[space, button, space];
- }
-}
-
-- (UIBarButtonItem *)toolbarSpace
-{
- return [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
-}
-
-
-
-#pragma mark - Accessors
-
-- (NSInteger)pageIndex
-{
- return [self.assets indexOfObject:self.asset];
-}
-
-- (void)setPageIndex:(NSInteger)pageIndex
-{
- NSInteger count = self.assets.count;
-
- if (pageIndex >= 0 && pageIndex < count)
- {
- PHAsset *asset = self.assets[pageIndex];
-
- CTAssetItemViewController *page = [CTAssetItemViewController assetItemViewControllerForAsset:asset];
- page.allowsSelection = self.allowsSelection;
-
- [self setViewControllers:@[page]
- direction:UIPageViewControllerNavigationDirectionForward
- animated:NO
- completion:NULL];
-
- [self updateTitle:pageIndex + 1];
- [self updateToolbar];
- }
-}
-
-- (PHAsset *)asset
-{
- return ((CTAssetItemViewController *)self.viewControllers[0]).asset;
-}
-
-
-#pragma mark - Page view controller data source
-
-- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
-{
- PHAsset *asset = ((CTAssetItemViewController *)viewController).asset;
- NSInteger index = [self.assets indexOfObject:asset];
-
- if (index > 0)
- {
- PHAsset *beforeAsset = self.assets[(index - 1)];
- CTAssetItemViewController *page = [CTAssetItemViewController assetItemViewControllerForAsset:beforeAsset];
- page.allowsSelection = self.allowsSelection;
-
- return page;
- }
-
- return nil;
-}
-
-- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
-{
- PHAsset *asset = ((CTAssetItemViewController *)viewController).asset;
- NSInteger index = [self.assets indexOfObject:asset];
- NSInteger count = self.assets.count;
-
- if (index < count - 1)
- {
- PHAsset *afterAsset = self.assets[(index + 1)];
- CTAssetItemViewController *page = [CTAssetItemViewController assetItemViewControllerForAsset:afterAsset];
- page.allowsSelection = self.allowsSelection;
-
- return page;
- }
-
- return nil;
-}
-
-
-#pragma mark - Page view controller delegate
-
-- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
-{
- if (completed)
- {
- CTAssetItemViewController *vc = (CTAssetItemViewController *)pageViewController.viewControllers[0];
- NSInteger index = [self.assets indexOfObject:vc.asset] + 1;
-
- [self updateTitle:index];
- [self updateToolbar];
- }
-}
-
-- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers
-{
- [self.navigationController setToolbarHidden:YES animated:YES];
-}
-
-
-#pragma mark - Notification observer
-
-- (void)addNotificationObserver
-{
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
-
- [center addObserver:self
- selector:@selector(assetScrollViewDidTap:)
- name:CTAssetScrollViewDidTapNotification
- object:nil];
-
- [center addObserver:self
- selector:@selector(assetScrollViewPlayerDidPlayToEnd:)
- name:AVPlayerItemDidPlayToEndTimeNotification
- object:nil];
-
- [center addObserver:self
- selector:@selector(assetScrollViewPlayerWillPlay:)
- name:CTAssetScrollViewPlayerWillPlayNotification
- object:nil];
-
- [center addObserver:self
- selector:@selector(assetScrollViewPlayerWillPause:)
- name:CTAssetScrollViewPlayerWillPauseNotification
- object:nil];
-}
-
-- (void)removeNotificationObserver
-{
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
-
- [center removeObserver:self name:CTAssetScrollViewDidTapNotification object:nil];
- [center removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
- [center removeObserver:self name:CTAssetScrollViewPlayerWillPlayNotification object:nil];
- [center removeObserver:self name:CTAssetScrollViewPlayerWillPauseNotification object:nil];
-}
-
-
-#pragma mark - Notification events
-
-- (void)assetScrollViewDidTap:(NSNotification *)notification
-{
- UITapGestureRecognizer *gesture = (UITapGestureRecognizer *)notification.object;
-
- if (gesture.numberOfTapsRequired == 1)
- [self toggleFullscreen:gesture];
-}
-
-- (void)assetScrollViewPlayerDidPlayToEnd:(NSNotification *)notification
-{
- [self replaceToolbarButton:self.playButton];
- [self setFullscreen:NO];
-}
-
-- (void)assetScrollViewPlayerWillPlay:(NSNotification *)notification
-{
- [self replaceToolbarButton:self.pauseButton];
- [self setFullscreen:YES];
-}
-
-- (void)assetScrollViewPlayerWillPause:(NSNotification *)notification
-{
- [self replaceToolbarButton:self.playButton];
-}
-
-
-#pragma mark - Toggle fullscreen
-
-- (void)toggleFullscreen:(id)sender
-{
- [self setFullscreen:!self.isStatusBarHidden];
-}
-
-- (void)setFullscreen:(BOOL)fullscreen
-{
- if (fullscreen)
- {
- [self.pageView enterFullscreen];
- [self fadeAwayControls:self.navigationController];
- }
- else
- {
- [self.pageView exitFullscreen];
- [self fadeInControls:self.navigationController];
- }
-
-}
-
-- (void)fadeInControls:(UINavigationController *)nav
-{
- self.statusBarHidden = NO;
-
- [nav setNavigationBarHidden:NO];
- nav.navigationBar.alpha = 0.0f;
-
- if ([self.asset ctassetsPickerIsVideo])
- {
- [nav setToolbarHidden:NO];
- nav.toolbar.alpha = 0.0f;
- }
-
- [UIView animateWithDuration:0.2
- animations:^{
- [self setNeedsStatusBarAppearanceUpdate];
- nav.navigationBar.alpha = 1.0f;
-
- if ([self.asset ctassetsPickerIsVideo])
- nav.toolbar.alpha = 1.0f;
- }];
-}
-
-- (void)fadeAwayControls:(UINavigationController *)nav
-{
- self.statusBarHidden = YES;
-
- [UIView animateWithDuration:0.2
- animations:^{
- [self setNeedsStatusBarAppearanceUpdate];
- [nav setNavigationBarHidden:YES animated:NO];
- [nav setToolbarHidden:YES animated:NO];
- nav.navigationBar.alpha = 0.0f;
- nav.toolbar.alpha = 0.0f;
- }];
-}
-
-
-#pragma mark - Playback
-
-- (void)playAsset:(id)sender
-{
- [((CTAssetItemViewController *)self.viewControllers[0]) playAsset:sender];
-}
-
-- (void)pauseAsset:(id)sender
-{
- [((CTAssetItemViewController *)self.viewControllers[0]) pauseAsset:sender];
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerAccessDeniedView.h b/Libraries external/CTAssetsPickerController/CTAssetsPickerAccessDeniedView.h
deleted file mode 100755
index 358477c35..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerAccessDeniedView.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetsPickerAccessDeniedView : UIView
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerAccessDeniedView.m b/Libraries external/CTAssetsPickerController/CTAssetsPickerAccessDeniedView.m
deleted file mode 100755
index 72a14464a..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerAccessDeniedView.m
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsPickerAccessDeniedView.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-
-
-
-@interface CTAssetsPickerAccessDeniedView ()
-
-@property (nonatomic, strong) UIImageView *padlock;
-@property (nonatomic, strong) UILabel *title;
-@property (nonatomic, strong) UILabel *message;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end;
-
-
-@implementation CTAssetsPickerAccessDeniedView
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- [self setupViews];
- }
-
- return self;
-}
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- UIImageView *padlock = [self padlockImageView];
- self.padlock = padlock;
-
- UILabel *title = [UILabel new];
- title.textColor = CTAssetsPikcerAccessDeniedViewTextColor;
- title.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
- title.textAlignment = NSTextAlignmentCenter;
- title.numberOfLines = 5;
- title.text = CTAssetsPickerLocalizedString(@"This app does not have access to your photos or videos.", nil);
- self.title = title;
-
- UILabel *message = [UILabel new];
- message.textColor = CTAssetsPikcerAccessDeniedViewTextColor;
- message.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
- message.textAlignment = NSTextAlignmentCenter;
- message.numberOfLines = 5;
- message.text = CTAssetsPickerLocalizedString(@"You can enable access in Privacy Settings.", nil);
- self.message = message;
-
- [self addSubview:self.padlock];
- [self addSubview:self.title];
- [self addSubview:self.message];
-}
-
-- (UIImageView *)padlockImageView
-{
- UIImage *image = [UIImage ctassetsPickerImageNamed:@"AccessDeniedViewLock"];
- image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
-
- UIImageView *padlock = [[UIImageView alloc] initWithImage:image];
- padlock.tintColor = CTAssetsPikcerAccessDeniedViewTextColor;
-
- return padlock;
-}
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [self autoCenterInSuperview];
-
- // suggested solution for issue #176
- [self autoPinEdgeToSuperviewEdge:ALEdgeLeading withInset:self.layoutMargins.top];
- [self autoPinEdgeToSuperviewEdge:ALEdgeTrailing withInset:self.layoutMargins.bottom];
-
- [self.padlock autoAlignAxisToSuperviewAxis:ALAxisVertical];
- [self.padlock autoPinEdgeToSuperviewEdge:ALEdgeTop];
- [self.title autoAlignAxis:ALAxisVertical toSameAxisOfView:self.padlock];
- [self.title autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.padlock withOffset:20];
- [self.title autoPinEdgeToSuperviewEdge:ALEdgeLeading];
- [self.title autoPinEdgeToSuperviewEdge:ALEdgeTrailing];
- [self.message autoAlignAxis:ALAxisVertical toSameAxisOfView:self.padlock];
- [self.message autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.title withOffset:10];
- [self.message autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero excludingEdge:ALEdgeTop];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock.png
deleted file mode 100755
index 76bf0af47..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@2x.png
deleted file mode 100755
index 3a3c68cfe..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@3x.png
deleted file mode 100755
index 2c03ba269..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@2x.png
deleted file mode 100755
index 437b3b540..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@3x.png
deleted file mode 100755
index 8190ef1f4..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@2x.png
deleted file mode 100755
index d04c6d458..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@3x.png
deleted file mode 100755
index 42c3992ea..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@2x.png
deleted file mode 100755
index 6f250f823..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@3x.png
deleted file mode 100755
index e0f2ed180..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@2x.png
deleted file mode 100755
index 1735e92b3..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@3x.png
deleted file mode 100755
index 6a1452cdb..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@2x.png
deleted file mode 100755
index d31d06bbb..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@3x.png
deleted file mode 100755
index d35caa86f..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@2x.png
deleted file mode 100755
index 58c51b021..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@3x.png
deleted file mode 100755
index 2af6ea121..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@2x.png
deleted file mode 100755
index 6cd76cf28..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@3x.png
deleted file mode 100755
index 0375fca48..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@2x.png
deleted file mode 100755
index aa83c6c03..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@3x.png
deleted file mode 100755
index 38a894db9..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall.png
deleted file mode 100755
index a4cd0db2a..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@2x.png
deleted file mode 100755
index 823b496c3..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@3x.png
deleted file mode 100755
index 33c4fde05..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@2x.png
deleted file mode 100755
index 484cd081b..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@3x.png
deleted file mode 100755
index 49fa563de..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@2x.png
deleted file mode 100755
index cd2ffd9f2..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@3x.png
deleted file mode 100755
index 8679d98eb..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall.png
deleted file mode 100755
index d4c8c7be2..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@2x.png
deleted file mode 100755
index aefecb6ba..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@3x.png
deleted file mode 100755
index c9e59fd21..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@2x.png
deleted file mode 100755
index 01c7ebb98..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@3x.png
deleted file mode 100755
index 6251a256d..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall.png
deleted file mode 100755
index 5fc5ca30a..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@2x.png
deleted file mode 100755
index 182da541b..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@3x.png
deleted file mode 100755
index 9f1dfef8b..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark.png
deleted file mode 100755
index edbadabce..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@2x.png
deleted file mode 100755
index 93922d5d2..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@3x.png
deleted file mode 100755
index f91a1cfa4..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow.png
deleted file mode 100755
index 14de0f8c1..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@2x.png
deleted file mode 100755
index 34231165f..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@3x.png
deleted file mode 100755
index 71239e35e..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected.png
deleted file mode 100755
index cb88ed687..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@2x.png
deleted file mode 100755
index 88173f8f1..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@3x.png
deleted file mode 100755
index 8d3d9f54c..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow.png
deleted file mode 100755
index 7acd36403..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@2x.png
deleted file mode 100755
index 3e9ad6688..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@3x.png
deleted file mode 100755
index 95b86f76a..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset.png
deleted file mode 100755
index cae5e3c22..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@2x.png
deleted file mode 100755
index 521130b9b..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@3x.png
deleted file mode 100755
index 3c2d14abb..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum.png
deleted file mode 100755
index 3299115c3..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@2x.png
deleted file mode 100755
index f3111ce88..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@3x.png
deleted file mode 100755
index 59906c31d..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared.png
deleted file mode 100755
index a12013719..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@2x.png
deleted file mode 100755
index 4c9a4c8e1..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@3x.png
deleted file mode 100755
index 5d12f8674..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll.png
deleted file mode 100755
index 9a5f97cc6..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@2x.png
deleted file mode 100755
index fe9255bf6..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@3x.png
deleted file mode 100755
index 62dab35c9..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient.png
deleted file mode 100755
index 7f44a6ec8..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@2x.png
deleted file mode 100755
index 18feaac7f..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@3x.png
deleted file mode 100755
index e44483919..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@2x.png
deleted file mode 100755
index eb6add0a9..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@3x.png
deleted file mode 100755
index 950edc960..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton.png
deleted file mode 100755
index 066d11a9d..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@2x.png
deleted file mode 100755
index 47fe70985..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@3x.png
deleted file mode 100755
index 7a994bcda..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton.png
deleted file mode 100755
index 342090e1e..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@2x.png
deleted file mode 100755
index d97612f22..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@3x.png
deleted file mode 100755
index 08db865e4..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask.png
deleted file mode 100755
index 8113b27f2..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@2x.png
deleted file mode 100755
index 456acbed0..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@3x.png
deleted file mode 100755
index e6dd3bc98..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask.png
deleted file mode 100755
index 3fda59521..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@2x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@2x.png
deleted file mode 100755
index a13d9dbbc..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@3x.png b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@3x.png
deleted file mode 100755
index 9e5d8c5b2..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ar.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ar.lproj/CTAssetsPicker.strings
deleted file mode 100755
index ee81b42d1..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ar.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "إلغاء";
-"Done" = "تم";
-
-/* Default title */
-"Photos" = "الصور";
-
-/* No. of selected */
-"%@ Photo Selected" = "تم تحديد %@ صورة";
-"%@ Photos Selected" = "تم تحديد %@ صور";
-"%@ Video Selected" = "تم تحديد %@ فيديو";
-"%@ Videos Selected" = "تم تحديد %@ فيديوهات";
-"%@ Items Selected" = "تم تحديد %@ عناصر";
-
-/* Grid view footer */
-"%@ Photos" = "%@ صور";
-"%@ Videos" = "%@ فيديوهات";
-"%@ Photos, %@ Videos" = "%@ صور، %@ فيديو";
-
-/* Assets index */
-"%@ of %@" = "%@ من %@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "لا يحق لهذا التطبيق الوصول إلى صورك أو فيديوهاتك.";
-"You can enable access in Privacy Settings." = "يمكن تفعيل الوصول من إعدادات الخصوصية.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "لا توجد صور أو فيديوهات";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "يمكنك التقاط الصور والفيديوهات باستخدام الكاميرا، أو مزامنة الصورة والفيديوهات مع %@ الخاص بك.\nباستخدام iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "يمكنك مزامنة الصورة والفيديوهات مع %@ الخاص بك.";
-
-/* Accessibility labels */
-"Play" = "تشغيل";
-"Select" = "حدد";
-"Deselect" = "إلغاء";
-
-/* Video duration spell out */
-"hours" = "ساعات";
-"hour" = "ساعة";
-"minutes" = "دقائق";
-"minute" = "دقيقة";
-"seconds" = "ثواني";
-"second" = "ثانية";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/da.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/da.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 2859bfdf5..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/da.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Fortryd";
-"Done" = "Færdig";
-
-/* Default title */
-"Photos" = "Billeder";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Billed valgt";
-"%@ Photos Selected" = "%@ Billeder valgt";
-"%@ Video Selected" = "%@ Video valgt";
-"%@ Videos Selected" = "%@ Videoer valgt";
-"%@ Items Selected" = "%@ Emner valgt";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Billeder";
-"%@ Videos" = "%@ Videoer";
-"%@ Photos, %@ Videos" = "%1$@ Billeder, %2$@ Videoer";
-
-/* Assets index */
-"%@ of %@" = "%1$@ af %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Denne app har ikke adgangs til dine billeder eller videoer.";
-"You can enable access in Privacy Settings." = "Du kan tildele adgang under Privatlivs indstillinger.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Ingen billeder eller videoer";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Du kan tage billeder med kameraet, eller synkronisere billeder og videoer til din %@\nmed iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Du kan synkronisere billeder eller videoer til din %@ med iTunes.";
-
-/* Accessibility labels */
-"Play" = "Afspil";
-"Select" = "Vælg";
-"Deselect" = "Fravælg";
-
-/* Video duration spell out */
-"hours" = "timer";
-"hour" = "time";
-"minutes" = "minutter";
-"minute" = "minut";
-"seconds" = "sekunder";
-"second" = "sekund";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Kan ikke afspille video streaming";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/de.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/de.lproj/CTAssetsPicker.strings
deleted file mode 100755
index a5fe5fb7a..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/de.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Abbrechen";
-"Done" = "Fertig";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto ausgewählt";
-"%@ Photos Selected" = "%@ Fotos ausgewählt";
-"%@ Video Selected" = "%@ Video ausgewählt";
-"%@ Videos Selected" = "%@ Videos ausgewählt";
-"%@ Items Selected" = "%@ Objekte ausgewählt";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotos";
-"%@ Videos" = "%@ Videos";
-"%@ Photos, %@ Videos" = "%1$@ Fotos, %2$@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ von %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Diese App darf nicht auf Ihr Fotoalbum zugreifen.";
-"You can enable access in Privacy Settings." = "Sie können den Zugriff in den Datenschutz Einstellungen erlauben.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Keine Fotos oder Videos vorhanden";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Sie können Fotos oder Videos mit der Kamera aufnehmen oder Ihr %@\nmit iTunes synchronisieren.";
-"You can sync photos and videos onto your %@ using iTunes." = "Sie können Fotos und Videos mit iTunes auf Ihr %@ synchronisieren.";
-
-/* Accessibility labels */
-"Play" = "Wiedergeben";
-"Select" = "Wählen Sie";
-"Deselect" = "Markierung entfernen";
-
-/* Video duration spell out */
-"hours" = "Stunden";
-"hour" = "Stunde";
-"minutes" = "Minuten";
-"minute" = "Minute";
-"seconds" = "Sekunden";
-"second" = "Sekunde";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Video kann nicht wiedergegeben werden";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/en.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/en.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 2ea8c8474..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/en.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancel";
-"Done" = "Done";
-
-/* Default title */
-"Photos" = "Photos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Photo Selected";
-"%@ Photos Selected" = "%@ Photos Selected";
-"%@ Video Selected" = "%@ Video Selected";
-"%@ Videos Selected" = "%@ Videos Selected";
-"%@ Items Selected" = "%@ Items Selected";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Photos";
-"%@ Videos" = "%@ Videos";
-"%@ Photos, %@ Videos" = "%1$@ Photos, %2$@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ of %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "This app does not have access to your photos or videos.";
-"You can enable access in Privacy Settings." = "You can enable access in Privacy Settings.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "No Photos or Videos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "You can sync photos and videos onto your %@ using iTunes.";
-
-/* Accessibility labels */
-"Play" = "Play";
-"Select" = "Select";
-"Deselect" = "Deselect";
-
-/* Video duration spell out */
-"hours" = "hours";
-"hour" = "hour";
-"minutes" = "minutes";
-"minute" = "minute";
-"seconds" = "seconds";
-"second" = "second";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/es-MX.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/es-MX.lproj/CTAssetsPicker.strings
deleted file mode 100755
index f7e1d85dc..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/es-MX.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancela";
-"Done" = "OK";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto seleccionada";
-"%@ Photos Selected" = "%@ Fotos seleccionadas";
-"%@ Video Selected" = "%@ Video seleccionado";
-"%@ Videos Selected" = "%@ Videos seleccionados";
-"%@ Items Selected" = "%@ Objetos seleccionados";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotos";
-"%@ Videos" = "%@ Videos";
-"%@ Photos, %@ Videos" = "%@ Fotos, %@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%@ de %@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "La aplicación no tiene acceso a tus fotos o videos.";
-"You can enable access in Privacy Settings." = "Puedes acceder en Ajustes/Privacidad.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Ni fotos ni videos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Puedes tomar fotos y videos utilizando la cámara, o sincronizarlas con tu %@ con iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Puedes sincronizar las fotos y videos en tu %@ con iTunes";
-
-/* Accessibility labels */
-"Play" = "Reproducir";
-"Select" = "Select";
-"Deselect" = "Deselect";
-
-/* Video duration spell out */
-"hours" = "horas";
-"hour" = "hora";
-"minutes" = "minutos";
-"minute" = "minuto";
-"seconds" = "segundos";
-"second" = "segundo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/es.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/es.lproj/CTAssetsPicker.strings
deleted file mode 100755
index a381824a3..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/es.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancelar";
-"Done" = "Hecho";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto seleccionada";
-"%@ Photos Selected" = "%@ fotos seleccionadas";
-"%@ Video Selected" = "%@ vídeo seleccionado";
-"%@ Videos Selected" = "%@ vídeos seleccionados";
-"%@ Items Selected" = "%@ objetos seleccionados";
-
-/* Grid view footer */
-"%@ Photos" = "%@ fotos";
-"%@ Videos" = "%@ vídeos";
-"%@ Photos, %@ Videos" = "%1$@ fotos, %2$@ vídeos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ de %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Esta aplicación no tiene acceso a tus fotos o vídeos.";
-"You can enable access in Privacy Settings." = "Puedes habilitar el acceso en los ajustes de privacidad.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "No hay fotos ni vídeos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Puedes tomar fotos y vídeos con la cámara o sincronizar fotos y vídeos en tu %@\na través de iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Puedes sincronizar fotos y vídeos en tu %@ a través de iTunes.";
-
-/* Accessibility labels */
-"Play" = "Reproducir";
-"Select" = "Seleccione";
-"Deselect" = "Deseleccionar";
-
-/* Video duration spell out */
-"hours" = "horas";
-"hour" = "hora";
-"minutes" = "minutos";
-"minute" = "minuto";
-"seconds" = "segundos";
-"second" = "segundo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/fi.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/fi.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 89a139e42..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/fi.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Kumoa";
-"Done" = "Valmis";
-
-/* Default title */
-"Photos" = "Kuvat";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ kuva valittu";
-"%@ Photos Selected" = "%@ kuvaa valittu";
-"%@ Video Selected" = "%@ video valittu";
-"%@ Videos Selected" = "%@ videota valittu";
-"%@ Items Selected" = "%@ kohdetta valittu";
-
-/* Grid view footer */
-"%@ Photos" = "%@ kuvaa";
-"%@ Videos" = "%@ videota";
-"%@ Photos, %@ Videos" = "%1$@ kuvaa, %2$@ videota";
-
-/* Assets index */
-"%@ of %@" = "%1$@ / %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Sovelluksella ei ole pääsyä kuviin tai videoihin.";
-"You can enable access in Privacy Settings." = "Voit sallia pääsyn Asetukset-valikossa.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Ei kuvia tai videoita";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Voit ottaa kuvia ja videokuvata kameralla tai synkroinoida iTunesin avulla kuvia ja videoita %@en.";
-"You can sync photos and videos onto your %@ using iTunes." = "Voit synkroinoida iTunesin avulla kuvia ja videoita %@en.";
-
-/* Accessibility labels */
-"Play" = "Toista";
-"Select" = "Valitse";
-"Deselect" = "Poista";
-
-/* Video duration spell out */
-"hours" = "tuntia";
-"hour" = "tunti";
-"minutes" = "minuuttia";
-"minute" = "minuutti";
-"seconds" = "sekuntia";
-"second" = "sekunti";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/fr.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/fr.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 72b453065..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/fr.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Annuler";
-"Done" = "Valider";
-
-/* Default title */
-"Photos" = "Photos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ photo selectionée";
-"%@ Photos Selected" = "%@ photos sélectionnées";
-"%@ Video Selected" = "%@ vidéo sélectionnée";
-"%@ Videos Selected" = "%@ vidéos sélectionnées";
-"%@ Items Selected" = "%@ éléments sélectionnés";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Photos";
-"%@ Videos" = "%@ Vidéos";
-"%@ Photos, %@ Videos" = "%1$@ Photos, %2$@ Vidéos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ sur %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Cette application n'a pas accès à vos photos et vos vidéos.";
-"You can enable access in Privacy Settings." = "Vous pouvez autoriser l'accès dans l'application Réglages > Confidentialité.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Pas de Photos ou Vidéos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Vous pouvez prendre des photos et des vidéos en utilisant l'appareil ou synchroniser vos photos et vidéos sur %@\n avec iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Vous pouvez synchroniser vos photos et vidéos sur %@ avec iTunes.";
-
-/* Accessibility labels */
-"Play" = "Lire";
-"Select" = "Sélectionner";
-"Deselect" = "Désélectionner";
-
-/* Video duration spell out */
-"hours" = "heures";
-"hour" = "heure";
-"minutes" = "minutes";
-"minute" = "minute";
-"seconds" = "secondes";
-"second" = "seconde";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Impossible de lire le flux vidéo";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/he.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/he.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 7f87a9a65..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/he.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "ביטול";
-"Done" = "סיום";
-
-/* Default title */
-"Photos" = "תמונות";
-
-/* No. of selected */
-"%@ Photo Selected" = "נבחרה תמונה %@";
-"%@ Photos Selected" = "נבחרו %@ תמונות";
-"%@ Video Selected" = "נבחר וידאו %@";
-"%@ Videos Selected" = "נבחרו %@ סרטוני וידאו";
-"%@ Items Selected" = "נבחרו %@ פריטים";
-
-/* Grid view footer */
-"%@ Photos" = "%@ תמונות";
-"%@ Videos" = "%@ סרטוני וידאו";
-"%@ Photos, %@ Videos" = "%1$@ תמונות, %2$@ סרטוני וידאו";
-
-/* Assets index */
-"%@ of %@" = "%1$@ מ-%2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "לאפליקציה הזו אין גישה לתמונות ולסרטוני הוידאו שלך.";
-"You can enable access in Privacy Settings." = "באפשרותך לאפשר גישה בהגדרות הפרטיות.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "אין תמונות או סרטוני וידאו";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "באפשרותך לצלם תמונות ולהקליט וידאו בעזרת המצלמה או לסנכרן תמונות וסרטוני וידאו עם %@\nבאמצעות ב-iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "באפשרותך לסנכרן תמונות וסרטוני וידאו עם %@ באמצעות iTunes.";
-
-/* Accessibility labels */
-"Play" = "הפעלה";
-"Select" = "בחר";
-"Deselect" = "בטלו את הבחירה";
-
-/* Video duration spell out */
-"hours" = "שעות";
-"hour" = "שעה";
-"minutes" = "דקות";
-"minute" = "דקה";
-"seconds" = "שניות";
-"second" = "שנייה";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/hi-IN.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/hi-IN.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 71cdb7706..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/hi-IN.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "रद्द करें";
-"Done" = "पूर्ण हुआ";
-
-/* Default title */
-"Photos" = "चित्र";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ चित्र चयनित";
-"%@ Photos Selected" = "%@ चित्र चयनित";
-"%@ Video Selected" = "%@ वीडियो चयनित";
-"%@ Videos Selected" = "%@ वीडियो चयनित";
-"%@ Items Selected" = "%@ आइटम चयनित";
-
-/* Grid view footer */
-"%@ Photos" = "%@ चित्र";
-"%@ Videos" = "%@ वीडियो";
-"%@ Photos, %@ Videos" = "%1$@ चित्र, %2$@ वीडियो";
-
-/* Assets index */
-"%@ of %@" = "%2$@ में से %1$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "यह ऐप आपके चित्रों या वीडियो तक नहीं पहुंच सकता।";
-"You can enable access in Privacy Settings." = "आप निजता सेटिंग्स में पहुंच सक्षम कर सकते हैं।";
-
-/* Messages if no assets */
-"No Photos or Videos" = "कोई चित्र या वीडियो नहीं";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "आप कैमरा का उपयोग करके चित्र या वीडियो ले सकते हैं, अथवा iTunes का उपयोग करके चित्र या वीडियो अपने %@ पर सिंक\nकर सकते हैं।";
-"You can sync photos and videos onto your %@ using iTunes." = "आप iTunes का उपयोग करके अपने %@ पर चित्र और वीडियो सिंक कर सकते हैं।";
-
-/* Accessibility labels */
-"Play" = "चलाएं";
-"Select" = "चुनना";
-"Deselect" = "चयन रद्द करें";
-
-/* Video duration spell out */
-"hours" = "घंटे";
-"hour" = "घंटा";
-"minutes" = "मिनट";
-"minute" = "मिनट";
-"seconds" = "सेकंड";
-"second" = "सेकंड";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/hu.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/hu.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 8a781aa15..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/hu.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Mégsem";
-"Done" = "Kész";
-
-/* Default title */
-"Photos" = "Fotók";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ fotó kiválasztva";
-"%@ Photos Selected" = "%@ fotó kiválasztva";
-"%@ Video Selected" = "%@ videó kiválasztva";
-"%@ Videos Selected" = "%@ videó kiválasztva";
-"%@ Items Selected" = "%@ elem kiválasztva";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotó";
-"%@ Videos" = "%@ Videó";
-"%@ Photos, %@ Videos" = "%1$@ Fotó, %2$@ Videó";
-
-/* Assets index */
-"%@ of %@" = "%1$@ / %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Ez az alkalmazás nem fér hozzá a fotóidhoz vagy a videóidhoz.";
-"You can enable access in Privacy Settings." = "Engedélyezheted a hozzáférést az Adatvédelmi beállításokban.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Nincsenek fotók vagy videók";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Képeket és videókat készíthetsz a készülék kamerájával, vagy szinkronizáld a fotóidat és a videóidat %@\n-ra iTunes-szal.";
-"You can sync photos and videos onto your %@ using iTunes." = "Szinkronizálhatod a fotóidat és a videóidat a %@-ra iTunes-szal.";
-
-/* Accessibility labels */
-"Play" = "Lejátszás";
-
-/* Video duration spell out */
-"hours" = "óra";
-"hour" = "óra";
-"minutes" = "perc";
-"minute" = "perc";
-"seconds" = "másodperc";
-"second" = "másodperc";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/id.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/id.lproj/CTAssetsPicker.strings
deleted file mode 100755
index ef25ed060..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/id.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Batal";
-"Done" = "Selesai";
-
-/* Default title */
-"Photos" = "Foto";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto Terpilih";
-"%@ Photos Selected" = "%@ Foto Terpilih";
-"%@ Video Selected" = "%@ Video Terpilih";
-"%@ Videos Selected" = "%@ Video Terpilih";
-"%@ Items Selected" = "%@ Item Terpilih";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Foto";
-"%@ Videos" = "%@ Video";
-"%@ Photos, %@ Videos" = "%1$@ Foto, %2$@ Video";
-
-/* Assets index */
-"%@ of %@" = "%1$@ dari %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Aplikasi ini tidak memiliki akses ke foto atau videomu.";
-"You can enable access in Privacy Settings." = "Kamu bisa mengaktifkan akses di Setelan Privasi.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Tidak ada Foto atau Video";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Kamu bisa mengambil foto dan video menggunakan kamera, atau menyinkronkan foto dan video ke %@\nmenggunakan iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Kamu bisa menyinkronkan foto dan video ke %@ menggunakan iTunes.";
-
-/* Accessibility labels */
-"Play" = "Putar";
-"Select" = "Memilih";
-"Deselect" = "Hapus";
-
-/* Video duration spell out */
-"hours" = "jam";
-"hour" = "jam";
-"minutes" = "menit";
-"minute" = "menit";
-"seconds" = "detik";
-"second" = "detik";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/it.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/it.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 4b0da704e..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/it.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Annulla";
-"Done" = "Fatto";
-
-/* Default title */
-"Photos" = "Foto";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto selezionata";
-"%@ Photos Selected" = "%@ foto selezionate";
-"%@ Video Selected" = "%@ video selezionato";
-"%@ Videos Selected" = "%@ video selezionati";
-"%@ Items Selected" = "%@ oggetto selezionato";
-
-/* Grid view footer */
-"%@ Photos" = "%@ foto";
-"%@ Videos" = "%@ video";
-"%@ Photos, %@ Videos" = "%1$@ foto, %2$@ video";
-
-/* Assets index */
-"%@ of %@" = "%1$@ di %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Questa app non ha accesso alle tue foto o ai tuoi video.";
-"You can enable access in Privacy Settings." = "Puoi attivare l'accesso nelle Impostazioni sulla privacy.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Nessuna foto o video";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Puoi scattare foto e registrare video con la fotocamera oppure sincronizzandoli sul tuo %@\ncon iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Puoi sincronizzare foto e video sul tuo %@ con iTunes.";
-
-/* Accessibility labels */
-"Play" = "Riproduci";
-"Select" = "Selezionare";
-"Deselect" = "Deseleziona";
-
-/* Video duration spell out */
-"hours" = "ore";
-"hour" = "ora";
-"minutes" = "minuti";
-"minute" = "minuto";
-"seconds" = "secondi";
-"second" = "secondo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ja.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ja.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 43ca2d995..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ja.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "キャンセル";
-"Done" = "完了";
-
-/* Default title */
-"Photos" = "写真";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ 枚の写真が選択されました";
-"%@ Photos Selected" = "%@ 枚の写真が選択されました";
-"%@ Video Selected" = "%@ 件の動画が選択されました";
-"%@ Videos Selected" = "%@ 件の動画が選択されました";
-"%@ Items Selected" = "%@ 個のアイテムが選択されました";
-
-/* Grid view footer */
-"%@ Photos" = "%@ 枚の写真";
-"%@ Videos" = "%@ 件の動画";
-"%@ Photos, %@ Videos" = "%1$@ 枚の写真、%2$@ 件の動画";
-
-/* Assets index */
-"%@ of %@" = "%1$@ / %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "このアプリはあなたの写真と動画へアクセスする許可を得ていません。";
-"You can enable access in Privacy Settings." = "「プライバシー設定」からアクセスを許可できます。";
-
-/* Messages if no assets */
-"No Photos or Videos" = "写真または動画がありません";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "カメラを使用して写真または動画を撮影するか、ご利用の%@へ写真と動画を同期することができます。\n同期はiTunes を使用して行えます。";
-"You can sync photos and videos onto your %@ using iTunes." = "iTunes を使用して、ご利用の%@へ写真と動画を同期することができます。";
-
-/* Accessibility labels */
-"Play" = "再生";
-"Select" = "選択";
-"Deselect" = "選択を解除";
-
-/* Video duration spell out */
-"hours" = "時間";
-"hour" = "時間";
-"minutes" = "分";
-"minute" = "分";
-"seconds" = "秒";
-"second" = "秒";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "ストリーム動画が再生できません";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ko.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ko.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 10a6c1452..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ko.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "취소";
-"Done" = "완료";
-
-/* Default title */
-"Photos" = "사진";
-
-/* No. of selected */
-"%@ Photo Selected" = "사진 %@개 선택됨";
-"%@ Photos Selected" = "사진 %@개 선택됨";
-"%@ Video Selected" = "동영상 %@개 선택됨";
-"%@ Videos Selected" = "동영상 %@개 선택됨";
-"%@ Items Selected" = "%@개의 항목 선택됨";
-
-/* Grid view footer */
-"%@ Photos" = "사진 %@개";
-"%@ Videos" = "동영상 %@개";
-"%@ Photos, %@ Videos" = "사진 %1$@개, 동영상 %2$@ 개";
-
-/* Assets index */
-"%@ of %@" = "%1$@/%2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "이 앱은 귀하의 사진이나 동영상에 접근 권한이 없습니다.";
-"You can enable access in Privacy Settings." = "개인정보 설정에서 접근을 활성화할 수 있습니다.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "사진이나 동영상 없음";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "카메라를 사용해서 사진 및 동영상을 가져오거나 iTunes를 사용하여 %@에서 사진 및 동영상을 동기화할 수\n있습니다.";
-"You can sync photos and videos onto your %@ using iTunes." = "iTunes를 사용하여 %@에서 사진 및 동영상을 동기화할 수 있습니다.";
-
-/* Accessibility labels */
-"Play" = "플레이";
-"Select" = "선택";
-"Deselect" = "선택 해제";
-
-/* Video duration spell out */
-"hours" = "시간";
-"hour" = "시간";
-"minutes" = "분";
-"minute" = "분";
-"seconds" = "초";
-"second" = "초";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/nl-NL.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/nl-NL.lproj/CTAssetsPicker.strings
deleted file mode 100755
index a0e244842..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/nl-NL.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Annuleren";
-"Done" = "Gereed";
-
-/* Default title */
-"Photos" = "Foto's";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto geselecteerd";
-"%@ Photos Selected" = "%@ foto's geselecteerd";
-"%@ Video Selected" = "%@ video geselecteerd";
-"%@ Videos Selected" = "%@ video's geselecteerd";
-"%@ Items Selected" = "%@ items geselecteerd";
-
-/* Album's footer */
-"%@ Photos" = "%@ Foto's";
-"%@ Videos" = "%@ Video's";
-"%@ Photos, %@ Videos" = "%1$@ Foto's, %2$@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ op %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Deze App heeft geen toegang tot je foto's en video's.";
-"You can enable access in Privacy Settings." = "Je kan de applicatie toegang verlenen via Instellingen > Privacy.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Geen foto's of video's";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Je kunt foto's of video's nemen met je camera, of door je foto's en video's te synchroniseren met je %@n in iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Je kunt foto's en video's synchroniseren met je %@ in iTunes";
-
-/* Accessibility labels */
-"Play" = "Lezen";
-"Select" = "Select";
-"Deselect" = "Deselecteren";
-
-/* Video duration spell out */
-"hours" = "uren";
-"hour" = "uur";
-"minutes" = "minuten";
-"minute" = "minuut";
-"seconds" = "seconden";
-"second" = "seconde";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Kan video stream niet afspelen";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/nl.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/nl.lproj/CTAssetsPicker.strings
deleted file mode 100755
index a0e244842..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/nl.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Annuleren";
-"Done" = "Gereed";
-
-/* Default title */
-"Photos" = "Foto's";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto geselecteerd";
-"%@ Photos Selected" = "%@ foto's geselecteerd";
-"%@ Video Selected" = "%@ video geselecteerd";
-"%@ Videos Selected" = "%@ video's geselecteerd";
-"%@ Items Selected" = "%@ items geselecteerd";
-
-/* Album's footer */
-"%@ Photos" = "%@ Foto's";
-"%@ Videos" = "%@ Video's";
-"%@ Photos, %@ Videos" = "%1$@ Foto's, %2$@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ op %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Deze App heeft geen toegang tot je foto's en video's.";
-"You can enable access in Privacy Settings." = "Je kan de applicatie toegang verlenen via Instellingen > Privacy.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Geen foto's of video's";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Je kunt foto's of video's nemen met je camera, of door je foto's en video's te synchroniseren met je %@n in iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Je kunt foto's en video's synchroniseren met je %@ in iTunes";
-
-/* Accessibility labels */
-"Play" = "Lezen";
-"Select" = "Select";
-"Deselect" = "Deselecteren";
-
-/* Video duration spell out */
-"hours" = "uren";
-"hour" = "uur";
-"minutes" = "minuten";
-"minute" = "minuut";
-"seconds" = "seconden";
-"second" = "seconde";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Kan video stream niet afspelen";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/pt-PT.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/pt-PT.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 3b4f1f074..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/pt-PT.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancelar";
-"Done" = "Fechar";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto selecionada";
-"%@ Photos Selected" = "%@ Fotos selecionadas";
-"%@ Video Selected" = "%@ Video selecionado";
-"%@ Videos Selected" = "%@ Videos selecionados";
-"%@ Items Selected" = "%@ Items selecionados";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotos";
-"%@ Videos" = "%@ Vídeos";
-"%@ Photos, %@ Videos" = "%@ Fotos, %@ Vídeos";
-
-/* Assets index */
-"%@ of %@" = "%@ de %@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Esta app não tem acesso às suas fotos ou vídeos.";
-"You can enable access in Privacy Settings." = "Pode dar acesso nas configurações de privacidade.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Sem fotos ou vídeos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Você pode tirar fotos e vídeos com a sua câmera, ou sincronizar fotos e vídeos para o seu %@ usando o iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Pode sincronizar fotos e vídeos para o seu %@ usando o iTunes";
-
-/* Accessibility labels */
-"Play" = "Reproduzir";
-"Select" = "Selecionar";
-"Deselect" = "Desmarque";
-
-/* Video duration spell out */
-"hours" = "horas";
-"hour" = "hora";
-"minutes" = "minutos";
-"minute" = "minuto";
-"seconds" = "segundos";
-"second" = "segundo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/pt.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/pt.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 2d5136ff3..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/pt.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancelar";
-"Done" = "Concluir";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto selecionada";
-"%@ Photos Selected" = "%@ Fotos selecionadas";
-"%@ Video Selected" = "%@ Video selecionado";
-"%@ Videos Selected" = "%@ Videos selecionados";
-"%@ Items Selected" = "%@ Items selecionados";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotos";
-"%@ Videos" = "%@ Vídeos";
-"%@ Photos, %@ Videos" = "%@ Fotos, %@ Vídeos";
-
-/* Assets index */
-"%@ of %@" = "%@ de %@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Este aplicativo não possui acesso a suas fotos e vídeos.";
-"You can enable access in Privacy Settings." = "Você pode autorizar este acesso em Ajustes > Privacidade > Fotos.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Nenhuma Foto ou Vídeo";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Você pode tirar fotos e vídeos com a sua câmera, ou sincronizar fotos e vídeos para o seu %@ usando o iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Pode sincronizar fotos e vídeos para o seu %@ usando o iTunes.";
-
-/* Accessibility labels */
-"Play" = "Reproduzir";
-"Select" = "Selecionar";
-"Deselect" = "Desmarque";
-
-/* Video duration spell out */
-"hours" = "horas";
-"hour" = "hora";
-"minutes" = "minutos";
-"minute" = "minuto";
-"seconds" = "segundos";
-"second" = "segundo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ru.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ru.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 92202d861..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/ru.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Отмена";
-"Done" = "Готово";
-
-/* Default title */
-"Photos" = "Фотографии";
-
-/* No. of selected */
-"%@ Photo Selected" = "выбрана %@ фотография";
-"%@ Photos Selected" = "выбрано %@ фотографий";
-"%@ Video Selected" = "выбрано %@ видео";
-"%@ Videos Selected" = "выбрано %@ видео";
-"%@ Items Selected" = "выбрано %@ элементов";
-
-/* Grid view footer */
-"%@ Photos" = "%@ фотографий";
-"%@ Videos" = "%@ видео";
-"%@ Photos, %@ Videos" = "%1$@ фотографий, %2$@ видео";
-
-/* Assets index */
-"%@ of %@" = "%1$@ из %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "У этого приложения нет доступа к вашим фотографиям и видео.";
-"You can enable access in Privacy Settings." = "Вы можете включить доступ приложению в Настройках конфиденциальности.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Нет фотографий и видео";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Вы можете сделать фотографии или снять видео при помощи камеры либо синхронизировать фотографии и видео со своим %@\nчерез iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Вы можете синхронизировать фотографии и видео со своим %@ при помощи iTunes.";
-
-/* Accessibility labels */
-"Play" = "Воспр.";
-"Select" = "Выбрать";
-"Deselect" = "Снимите";
-
-/* Video duration spell out */
-"hours" = "часов";
-"hour" = "час";
-"minutes" = "минут";
-"minute" = "минута";
-"seconds" = "секунд";
-"second" = "секунда";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/sv.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/sv.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 055e321af..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/sv.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Avbryt";
-"Done" = "Klar";
-
-/* Default title */
-"Photos" = "Foton";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto valt";
-"%@ Photos Selected" = "%@ foton valda";
-"%@ Video Selected" = "%@ video vald";
-"%@ Videos Selected" = "%@ videor valda";
-"%@ Items Selected" = "%@ artiklar valda";
-
-/* Grid view footer */
-"%@ Photos" = "%@ foton";
-"%@ Videos" = "%@ videor";
-"%@ Photos, %@ Videos" = "%1$@ foton, %2$@ videor";
-
-/* Assets index */
-"%@ of %@" = "%1$@ av %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Denna app har inte tillgång till dina foton eller videor.";
-"You can enable access in Privacy Settings." = "Du kan aktivera tillgång i Integritetsinställningarna.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Inga foton eller videor";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Du kan ta foton och videor med kameran, eller synka foton och videor in i din %@ med hjälp av iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Du kan synka foton och videor in i din %@ med hjälp av iTunes.";
-
-/* Accessibility labels */
-"Play" = "Spela upp";
-"Select" = "Välj";
-"Deselect" = "Nollställ";
-
-/* Video duration spell out */
-"hours" = "timmar";
-"hour" = "timme";
-"minutes" = "minuter";
-"minute" = "minut";
-"seconds" = "sekunder";
-"second" = "sekund";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Kan inte spela upp video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/tr.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/tr.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 9459fb367..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/tr.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Vazgeç";
-"Done" = "Bitti";
-
-/* Default title */
-"Photos" = "Fotoğraflar";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Fotoğraf seçildi";
-"%@ Photos Selected" = "%@ Fotoğraf seçildi";
-"%@ Video Selected" = "%@ Vidyo seçildi";
-"%@ Videos Selected" = "%@ Vidyo seçildi";
-"%@ Items Selected" = "%@ Öğe seçildi";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotoğraf";
-"%@ Videos" = "%@ Vidyo";
-"%@ Photos, %@ Videos" = "%1$@ Fotoğraf, %2$@ Vidyo";
-
-/* Assets index */
-"%@ of %@" = "%2$@ içerisinden %1$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Bu uygulamanın fotoğraflarınıza ya da vidyolarınıza erişim hakkı bulunmuyor.";
-"You can enable access in Privacy Settings." = "Gizlilik Ayarlarından uygulamaya izin verebilirsiniz.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Hiç fotoğraf ya da vidyo bulunamadı";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Kamerayı kullanarak fotoğraf ve vidyo çekebilirsiniz ya da fotoğraf ve vidyolarınızı %@\n hesabınıza iTunes kullanarak eşleyebilirsiniz.";
-"You can sync photos and videos onto your %@ using iTunes." = "Fotoğraf ve vidyoları iTunes kullanarak %@ hesabınıza eşleyebilirsiniz.";
-
-/* Accessibility labels */
-"Play" = "Oynat";
-"Select" = "Seç";
-"Deselect" = "Seçimi bırak";
-
-/* Video duration spell out */
-"hours" = "saat";
-"hour" = "saat";
-"minutes" = "dakika";
-"minute" = "dakika";
-"seconds" = "saniye";
-"second" = "saniye";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Vidyo oynatılamıyor";
-"OK" = "Tamam"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hans.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hans.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 827962b5a..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hans.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "取消";
-"Done" = "完成";
-
-/* Default title */
-"Photos" = "照片";
-
-/* No. of selected */
-"%@ Photo Selected" = "已选择%@张照片";
-"%@ Photos Selected" = "已选择%@张照片";
-"%@ Video Selected" = "已选择%@个视频";
-"%@ Videos Selected" = "已选择%@个视频";
-"%@ Items Selected" = "已选择%@项";
-
-/* Grid view footer */
-"%@ Photos" = "%@张照片";
-"%@ Videos" = "%@个视频";
-"%@ Photos, %@ Videos" = "%1$@张照片,%2$@个视频";
-
-/* Assets index */
-"%@ of %@" = "%1$@,共%2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "此应用程序对您的照片或视频没有访问权。";
-"You can enable access in Privacy Settings." = "您可以在隐私设置中启用访问权。";
-
-/* Messages if no assets */
-"No Photos or Videos" = "无照片或视频";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "您可以使用摄像头拍摄照片和视频,或使用iTunes将照片和视频同步到您的%@上。\n";
-"You can sync photos and videos onto your %@ using iTunes." = "您可以使用iTunes将照片和视频同步到您的%@上。";
-
-/* Accessibility labels */
-"Play" = "播放";
-"Select" = "选择";
-"Deselect" = "取消选择";
-
-/* Video duration spell out */
-"hours" = "小时";
-"hour" = "小时";
-"minutes" = "分钟";
-"minute" = "分钟";
-"seconds" = "秒";
-"second" = "秒";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "无法播放影片";
-"OK" = "好"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hant.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hant.lproj/CTAssetsPicker.strings
deleted file mode 100755
index ab71d8436..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hant.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "取消";
-"Done" = "完成";
-
-/* Default title */
-"Photos" = "照片";
-
-/* No. of selected */
-"%@ Photo Selected" = "已選取 %@ 張照片";
-"%@ Photos Selected" = "已選取 %@ 張照片";
-"%@ Video Selected" = "已選取 %@ 部影片";
-"%@ Videos Selected" = "已選取 %@ 部影片";
-"%@ Items Selected" = "已選取 %@ 個項目";
-
-/* Grid view footer */
-"%@ Photos" = "%@ 張照片";
-"%@ Videos" = "%@ 部影片";
-"%@ Photos, %@ Videos" = "%1$@ 張照片、%2$@ 部影片";
-
-/* Assets index */
-"%@ of %@" = "%1$@/%2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "此 App 無法取用您的照片或影片。";
-"You can enable access in Privacy Settings." = "您可以在「隱私權設定」中啟用存取。";
-
-/* Messages if no assets */
-"No Photos or Videos" = "沒有照片或影片";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "您可以用相機拍照錄影或用 iTunes\n將照片和影片同步到 %@。";
-"You can sync photos and videos onto your %@ using iTunes." = "您可以使用 iTunes 將照片和影片\n同步到 %@。";
-
-/* Accessibility labels */
-"Play" = "播放";
-"Select" = "選擇";
-"Deselect" = "取消選擇";
-
-/* Video duration spell out */
-"hours" = "小時";
-"hour" = "小時";
-"minutes" = "分";
-"minute" = "分";
-"seconds" = "秒";
-"second" = "秒";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "無法播放影片";
-"OK" = "好"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.h
deleted file mode 100755
index 0afa620e5..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.h
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-
-#import <UIKit/UIKit.h>
-#import <Photos/Photos.h>
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol CTAssetsPickerControllerDelegate;
-
-/**
- * A controller that allows picking multiple photos and videos from user's photo library.
- */
-@interface CTAssetsPickerController : UIViewController
-
-/**
- * The assets picker’s delegate object.
- */
-@property (nonatomic, weak) id <CTAssetsPickerControllerDelegate> delegate;
-
-/**
- * Set the `assetCollectionSubtypes` to specify which asset collections (albums) to be shown in the picker.
- *
- * You can specify which albums and their order to be shown in the picker by creating an `NSArray` of `NSNumber`
- * that containing the value of `PHAssetCollectionSubtype`.
- */
-@property (nonatomic, copy) NSArray<NSNumber*> *assetCollectionSubtypes;
-
-/**
- * Set the `defaultAssetCollection` to specify which asset collection (album) is the default asset collection.
- *
- * If the `defaultAssetCollection` is explictly set, the picker initially shows the content of default asset
- * collection instead of a list of albums. By default, there are no default asset collection.
- *
- * If there are more than one asset collections that match the subtype value of `defaultAssetCollection`, the
- * first matched asset collection will be the default asset collection.
- */
-@property (nonatomic, assign) PHAssetCollectionSubtype defaultAssetCollection;
-
-/**
- * Set the `PHFetchOptions` to specify options when fetching asset collections (albums).
- *
- * @see assetsFetchOptions
- */
-@property (nonatomic, strong) PHFetchOptions *assetCollectionFetchOptions;
-
-/**
- * Set the `PHFetchOptions` to specify options when fetching assets.
- *
- * @see assetCollectionFetchOptions
- */
-@property (nonatomic, strong) PHFetchOptions *assetsFetchOptions;
-
-
-/**
- * The selected assets.
- *
- * It contains selected `PHAsset` objects. The order of the objects is the selection order.
- *
- * You can use this property to select assets initially when presenting the picker.
- */
-@property (nonatomic, strong) NSMutableArray *selectedAssets;
-
-/**
- * An optional title for the done button
- *
- * You can override the title of "Done" button by this value.
- */
-@property (nonatomic, copy) NSString *doneButtonTitle;
-
-/**
- * Determines whether or not the cancel button is visible in the picker.
- *
- * The cancel button is visible by default. To hide the cancel button, (e.g. presenting the picker in `UIPopoverController`)
- * set this property’s value to `NO`.
- */
-@property (nonatomic, assign) BOOL showsCancelButton;
-
-/**
- * Determines whether or not the empty albums is shown in the album list.
- *
- * All albums are visible by default. To hide albums without assets matched with `assetsFetchOptions`,
- * set this property’s value to `NO`.
- *
- * @see assetsFetchOptions
- */
-@property (nonatomic, assign) BOOL showsEmptyAlbums;
-
-/**
- * Determines whether or not the number of assets is shown in the album list.
- *
- * The number of assets is visible by default. To hide the number of assets, (e.g. implementing `shouldShowAsset` delegate method)
- * set this property’s value to `NO`.
- */
-@property (nonatomic, assign) BOOL showsNumberOfAssets;
-
-/**
- * Determines whether or not the done button is always enabled.
- *
- * The done button is enabled only when assets are selected. To enable the done button even without assets selected,
- * set this property’s value to `YES`.
- */
-@property (nonatomic, assign) BOOL alwaysEnableDoneButton;
-
-/**
- * Determines whether or not the selection order is shown in the grid view.
- *
- * Only a checkmark is shown on selected assets by default. To shows the order of selection,
- * set this property’s value to `YES`.
- */
-@property (nonatomic, assign) BOOL showsSelectionIndex;
-
-/**
- * The split view controller of the picker hierarchy. (read-only)
- *
- * This property contains the child split view controller of the picker.
- */
-@property (nonatomic, readonly, strong) UISplitViewController *childSplitViewController;
-
-
-/**
- * @name Managing Selections
- */
-
-/**
- * Selects an asset in the picker.
- *
- * @param asset The asset to be selected.
- *
- * @see deselectAsset:
- */
-- (void)selectAsset:(PHAsset *)asset;
-
-/**
- * Deselects an asset in the picker.
- *
- * @param asset The asset to be deselected.
- *
- * @see selectAsset:
- */
-- (void)deselectAsset:(PHAsset *)asset;
-
-@end
-
-
-/**
- * The `CTAssetsPickerControllerDelegate` protocol defines methods that allow you to to interact with the assets picker interface
- * and manage the selection and highlighting of assets in the picker.
- *
- * The methods of this protocol notify your delegate when the user selects, highlights, finish picking assets, or cancels the picker operation.
- *
- * The delegate methods are responsible for dismissing the picker when the operation completes.
- * To dismiss the picker, call the `dismissViewControllerAnimated:completion:` method of the presenting controller
- * responsible for displaying `CTAssetsPickerController` object.
- *
- * The picked assets are `PHAsset` objects and contain only metadata. The underlying image or video data for any given asset might not be stored on the local device.
- * You have to use `PHImageManager` object for loading image or video data associated with a `PHAsset`.
- */
-@protocol CTAssetsPickerControllerDelegate <NSObject>
-
-
-/**
- * @name Closing the Picker
- */
-
-/**
- * Tells the delegate that the user finish picking photos or videos.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param assets An array containing picked `PHAsset` objects.
- *
- * @see assetsPickerControllerDidCancel:
- */
-- (void)assetsPickerController:(CTAssetsPickerController *)picker didFinishPickingAssets:(NSArray<PHAsset*> *)assets;
-
-@optional
-
-/**
- * Tells the delegate that the user cancelled the pick operation.
- *
- * @param picker The controller object managing the assets picker interface.
- *
- * @see assetsPickerController:didFinishPickingAssets:
- */
-- (void)assetsPickerControllerDidCancel:(CTAssetsPickerController *)picker;
-
-
-/**
- * @name Configuting Asset Selection View
- */
-
-/**
- * Ask the delegate the layout of asset selection view (UICollectionView).
- *
- * @param picker The controller object managing the assets picker interface.
- * @param contentSize The bounds size of current view.
- * @param trait The trait collection of current view.
- *
- * @return Custom `UICollectionViewLayout` for the asset selection view.
- */
-- (UICollectionViewLayout *)assetsPickerController:(CTAssetsPickerController *)picker collectionViewLayoutForContentSize:(CGSize)contentSize traitCollection:(UITraitCollection *)trait;
-
-
-/**
- * Ask the delegate if the asset selection view should sroll to bottom on shown.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param assetCollection The asset collection of asset selection view.
- *
- * @return `YES` (the default) if the asset grid should scroll to bottom on shown or `NO` if it should not.
- */
-
-- (BOOL)assetsPickerController:(CTAssetsPickerController *)picker shouldScrollToBottomForAssetCollection:(PHAssetCollection *)assetCollection;
-
-
-/**
- * @name Enabling Assets
- */
-
-/**
- * Ask the delegate if the specified asset should be enabled for selection.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param asset The asset to be enabled.
- *
- * @return `YES` if the asset should be enabled or `NO` if it should not.
- *
- * @see assetsPickerController:shouldShowAsset:
- */
-- (BOOL)assetsPickerController:(CTAssetsPickerController *)picker shouldEnableAsset:(PHAsset *)asset;
-
-
-/**
- * @name Managing the Selected Assets
- */
-
-/**
- * Asks the delegate if the specified asset should be selected.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param asset The asset to be selected.
- *
- * @return `YES` if the asset should be selected or `NO` if it should not.
- *
- * @see assetsPickerController:shouldDeselectAsset:
- */
-- (BOOL)assetsPickerController:(CTAssetsPickerController *)picker shouldSelectAsset:(PHAsset *)asset;
-
-/**
- * Tells the delegate that the asset was selected.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param asset The asset that was selected.
- *
- * @see assetsPickerController:didDeselectAsset:
- */
-- (void)assetsPickerController:(CTAssetsPickerController *)picker didSelectAsset:(PHAsset *)asset;
-
-/**
- * Asks the delegate if the specified asset should be deselected.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param asset The asset to be deselected.
- *
- * @return `YES` if the asset should be deselected or `NO` if it should not.
- *
- * @see assetsPickerController:shouldSelectAsset:
- */
-- (BOOL)assetsPickerController:(CTAssetsPickerController *)picker shouldDeselectAsset:(PHAsset *)asset;
-
-/**
- * Tells the delegate that the item at the specified path was deselected.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param asset The asset that was deselected.
- *
- * @see assetsPickerController:didSelectAsset:
- */
-- (void)assetsPickerController:(CTAssetsPickerController *)picker didDeselectAsset:(PHAsset *)asset;
-
-
-
-/**
- * @name Managing Asset Highlighting
- */
-
-/**
- * Asks the delegate if the specified asset should be highlighted.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param asset The asset to be highlighted.
- *
- * @return `YES` if the asset should be highlighted or `NO` if it should not.
- */
-- (BOOL)assetsPickerController:(CTAssetsPickerController *)picker shouldHighlightAsset:(PHAsset *)asset;
-
-/**
- * Tells the delegate that asset was highlighted.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param asset The asset that was highlighted.
- *
- * @see assetsPickerController:didUnhighlightAsset:
- */
-- (void)assetsPickerController:(CTAssetsPickerController *)picker didHighlightAsset:(PHAsset *)asset;
-
-
-/**
- * Tells the delegate that the highlight was removed from the asset.
- *
- * @param picker The controller object managing the assets picker interface.
- * @param asset The asset that had its highlight removed.
- *
- * @see assetsPickerController:didHighlightAsset:
- */
-- (void)assetsPickerController:(CTAssetsPickerController *)picker didUnhighlightAsset:(PHAsset *)asset;
-
-
-
-
-/**
- * @name Notifications
- */
-
-/**
- * Sent when the assets selected or deselected
- *
- * The notification’s `object` is an `NSArray` object of selected assets
- */
-extern NSString * const CTAssetsPickerSelectedAssetsDidChangeNotification;
-
-/**
- * Sent when asset is selected
- *
- * The notification’s `object` is a `PHAsset` that is selected
- */
-extern NSString * const CTAssetsPickerDidSelectAssetNotification;
-
-/**
- * Sent when asset is deselected
- *
- * The notification’s `object` is a `PHAsset` that is deselected
- */
-extern NSString * const CTAssetsPickerDidDeselectAssetNotification;
-
-
-@end
-
-NS_ASSUME_NONNULL_END \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/CTAssetsPickerController.m
deleted file mode 100755
index 7e055593d..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerController.m
+++ /dev/null
@@ -1,621 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsPickerController.h"
-#import "CTAssetsPickerAccessDeniedView.h"
-#import "CTAssetsPickerNoAssetsView.h"
-#import "CTAssetCollectionViewController.h"
-#import "CTAssetsGridViewController.h"
-#import "CTAssetScrollView.h"
-#import "CTAssetsPageViewController.h"
-#import "CTAssetsViewControllerTransition.h"
-#import "NSBundle+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-#import "NSNumberFormatter+CTAssetsPickerController.h"
-#import "CTAssetsNavigationController.h"
-
-
-
-NSString * const CTAssetsPickerSelectedAssetsDidChangeNotification = @"CTAssetsPickerSelectedAssetsDidChangeNotification";
-NSString * const CTAssetsPickerDidSelectAssetNotification = @"CTAssetsPickerDidSelectAssetNotification";
-NSString * const CTAssetsPickerDidDeselectAssetNotification = @"CTAssetsPickerDidDeselectAssetNotification";
-
-
-
-@interface CTAssetsPickerController ()
-<PHPhotoLibraryChangeObserver, UISplitViewControllerDelegate, UINavigationControllerDelegate>
-
-@property (nonatomic, assign) BOOL shouldCollapseDetailViewController;
-
-@property (nonatomic, assign) CGSize assetCollectionThumbnailSize;
-@property (nonatomic, assign) CGSize assetThumbnailSize;
-
-@property (nonatomic, strong) PHImageRequestOptions *thumbnailRequestOptions;
-
-@end
-
-
-
-@implementation CTAssetsPickerController
-
-- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
-{
- if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])
- {
- _shouldCollapseDetailViewController = YES;
- _assetCollectionThumbnailSize = CTAssetCollectionThumbnailSize;
- _assetCollectionFetchOptions = nil;
- _assetsFetchOptions = nil;
- _selectedAssets = [NSMutableArray new];
- _showsCancelButton = YES;
- _showsEmptyAlbums = YES;
- _showsNumberOfAssets = YES;
- _alwaysEnableDoneButton = NO;
- _showsSelectionIndex = NO;
- _defaultAssetCollection = PHAssetCollectionSubtypeAny;
-
- [self initAssetCollectionSubtypes];
- [self initThumbnailRequestOptions];
- self.preferredContentSize = CTAssetsPickerPopoverContentSize;
- }
-
- return self;
-}
-
-- (void)viewDidLoad
-{
- [super viewDidLoad];
- [self setupViews];
- [self setupEmptyViewController];
- [self checkAuthorizationStatus];
- [self addKeyValueObserver];
- [self registerChangeObserver];
-}
-
-- (void)dealloc
-{
- [self removeKeyValueObserver];
- [self unregisterChangeObserver];
-}
-
-- (UIViewController *)childViewControllerForStatusBarStyle
-{
- return self.childSplitViewController.viewControllers.firstObject;
-}
-
-- (UIViewController *)childViewControllerForStatusBarHidden
-{
- UIViewController *vc = self.childSplitViewController.viewControllers.lastObject;
-
- if ([vc isMemberOfClass:[UINavigationController class]])
- return ((UINavigationController *)vc).topViewController;
- else
- return nil;
-}
-
-
-
-#pragma mark - Init properties
-
-- (void)initAssetCollectionSubtypes
-{
- _assetCollectionSubtypes =
- @[@(PHAssetCollectionSubtypeSmartAlbumUserLibrary),
- @(PHAssetCollectionSubtypeAlbumMyPhotoStream),
- @(PHAssetCollectionSubtypeSmartAlbumRecentlyAdded),
- @(PHAssetCollectionSubtypeSmartAlbumFavorites),
- @(PHAssetCollectionSubtypeSmartAlbumPanoramas),
- @(PHAssetCollectionSubtypeSmartAlbumVideos),
- @(PHAssetCollectionSubtypeSmartAlbumSlomoVideos),
- @(PHAssetCollectionSubtypeSmartAlbumTimelapses),
- @(PHAssetCollectionSubtypeSmartAlbumBursts),
- @(PHAssetCollectionSubtypeSmartAlbumAllHidden),
- @(PHAssetCollectionSubtypeSmartAlbumGeneric),
- @(PHAssetCollectionSubtypeAlbumRegular),
- @(PHAssetCollectionSubtypeAlbumSyncedAlbum),
- @(PHAssetCollectionSubtypeAlbumSyncedEvent),
- @(PHAssetCollectionSubtypeAlbumSyncedFaces),
- @(PHAssetCollectionSubtypeAlbumImported),
- @(PHAssetCollectionSubtypeAlbumCloudShared)];
-
- // Add iOS 9's new albums
- if ([[PHAsset new] respondsToSelector:@selector(sourceType)])
- {
- NSMutableArray *subtypes = [NSMutableArray arrayWithArray:self.assetCollectionSubtypes];
- [subtypes insertObject:@(PHAssetCollectionSubtypeSmartAlbumSelfPortraits) atIndex:4];
- [subtypes insertObject:@(PHAssetCollectionSubtypeSmartAlbumScreenshots) atIndex:10];
-
- self.assetCollectionSubtypes = [NSArray arrayWithArray:subtypes];
- }
-}
-
-- (void)initThumbnailRequestOptions
-{
- PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
- options.resizeMode = PHImageRequestOptionsResizeModeFast;
- options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
-
- _thumbnailRequestOptions = options;
-}
-
-
-#pragma mark - Check authorization status
-
-- (void)checkAuthorizationStatus
-{
- PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
-
- switch (status)
- {
- case PHAuthorizationStatusNotDetermined:
- [self requestAuthorizationStatus];
- break;
- case PHAuthorizationStatusRestricted:
- case PHAuthorizationStatusDenied:
- {
- [self showAccessDenied];
- break;
- }
- case PHAuthorizationStatusAuthorized:
- default:
- {
- [self checkAssetsCount];
- break;
- }
- }
-}
-
-
-#pragma mark - Request authorization status
-
-- (void)requestAuthorizationStatus
-{
- [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status){
- switch (status) {
- case PHAuthorizationStatusAuthorized:
- {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self checkAssetsCount];
- });
- break;
- }
- default:
- {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self showAccessDenied];
- });
- break;
- }
- }
- }];
-}
-
-
-#pragma mark - Check assets count
-
-- (void)checkAssetsCount
-{
- PHFetchResult *fetchResult = [PHAsset fetchAssetsWithOptions:self.assetsFetchOptions];
-
- if (fetchResult.count > 0) {
- [self showAssetCollectionViewController];
- } else {
- [self showNoAssets];
- }
-}
-
-
-#pragma mark - Setup views
-
-- (void)setupViews
-{
- self.view.backgroundColor = [UIColor whiteColor];
-}
-
-
-#pragma mark - Setup view controllers
-
-- (void)setupEmptyViewController
-{
- UINavigationController *nav = [self emptyNavigationController];
- [self setupChildViewController:nav];
-}
-
-- (void)setupSplitViewController
-{
- CTAssetCollectionViewController *vc = [CTAssetCollectionViewController new];
- CTAssetsNavigationController *master = [[CTAssetsNavigationController alloc] initWithRootViewController:vc];
- UINavigationController *detail = [self emptyNavigationController];
- UISplitViewController *svc = [UISplitViewController new];
-
- svc.delegate = self;
- svc.viewControllers = @[master, detail];
- svc.presentsWithGesture = NO;
- svc.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;
-
- [self addChildViewController:svc];
- svc.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
- [self.view addSubview:svc.view];
- [svc didMoveToParentViewController:self];
-
- [vc reloadUserInterface];
-}
-
-- (void)setupChildViewController:(UIViewController *)vc
-{
- [self addChildViewController:vc];
- vc.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
- [self.view addSubview:vc.view];
- [vc didMoveToParentViewController:self];
-}
-
-- (void)removeChildViewController
-{
- UIViewController *vc = self.childViewControllers.firstObject;
- [vc willMoveToParentViewController:nil];
- [vc.view removeFromSuperview];
- [vc removeFromParentViewController];
-}
-
-#pragma mark - Setup view controllers
-
-- (UINavigationController *)emptyNavigationController
-{
- UIViewController *vc = [self emptyViewController];
- return [[UINavigationController alloc] initWithRootViewController:vc];
-}
-
-- (UIViewController *)emptyViewController
-{
- UIViewController *vc = [UIViewController new];
- vc.view.backgroundColor = [UIColor whiteColor];
- vc.navigationItem.hidesBackButton = YES;
-
- return vc;
-}
-
-
-
-
-#pragma mark - Show asset collection view controller
-
-- (void)showAssetCollectionViewController
-{
- [self removeChildViewController];
- [self setupSplitViewController];
-}
-
-
-#pragma mark - Show auxiliary view
-
-- (void)showAuxiliaryView:(UIView *)view
-{
- [self removeChildViewController];
-
- UIViewController *vc = [self emptyViewController];
- UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
-
- [vc.view addSubview:view];
- [view setNeedsUpdateConstraints];
- [view updateConstraintsIfNeeded];
-
- [self setupButtonInViewController:vc];
- [self setupChildViewController:nav];
-}
-
-
-#pragma mark - Access denied
-
-- (void)showAccessDenied
-{
- [self showAuxiliaryView:[CTAssetsPickerAccessDeniedView new]];
-}
-
-
-#pragma mark - No Assets
-
-- (void)showNoAssets
-{
- [self showAuxiliaryView:[CTAssetsPickerNoAssetsView new]];
-}
-
-
-#pragma mark - Cancel button
-
-- (void)setupButtonInViewController:(UIViewController *)viewController
-{
- if (self.showsCancelButton)
- {
- viewController.navigationItem.leftBarButtonItem =
- [[UIBarButtonItem alloc] initWithTitle:CTAssetsPickerLocalizedString(@"Cancel", nil)
- style:UIBarButtonItemStylePlain
- target:self
- action:@selector(dismiss:)];
- }
-}
-
-
-#pragma mark - Key-Value observer
-
-- (void)addKeyValueObserver
-{
- [self addObserver:self
- forKeyPath:@"selectedAssets"
- options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
- context:nil];
-}
-
-- (void)removeKeyValueObserver
-{
- @try {
- [self removeObserver:self forKeyPath:@"selectedAssets"];
- }
- @catch (NSException *exception) {
- // do nothing
- }
-}
-
-
-#pragma mark - Key-Value changed
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
-{
- if ([keyPath isEqual:@"selectedAssets"])
- {
- [self toggleDoneButton];
- [self postSelectedAssetsDidChangeNotification:[object valueForKey:keyPath]];
- }
-}
-
-
-#pragma mark - Photo library change observer
-
-- (void)registerChangeObserver
-{
- [[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:self];
-}
-
-- (void)unregisterChangeObserver
-{
- [[PHPhotoLibrary sharedPhotoLibrary] unregisterChangeObserver:self];
-}
-
-
-
-#pragma mark - Photo library changed
-
-- (void)photoLibraryDidChange:(PHChange *)changeInstance
-{
- // Call might come on any background queue. Re-dispatch to the main queue to handle it.
- dispatch_async(dispatch_get_main_queue(), ^{
-
- NSMutableArray *deselectAssets = [NSMutableArray new];
-
- for (PHAsset *asset in self.selectedAssets)
- {
- PHObjectChangeDetails *changeDetails = [changeInstance changeDetailsForObject:asset];
-
- if (changeDetails.objectWasDeleted)
- [deselectAssets addObject:asset];
- }
-
- // Deselect asset if it was deleted from library
- for (PHAsset *asset in deselectAssets)
- [self deselectAsset:asset];
- });
-}
-
-
-
-#pragma mark - Toggle button
-
-- (void)toggleDoneButton
-{
- UIViewController *vc = self.childSplitViewController.viewControllers.firstObject;
-
- if ([vc isMemberOfClass:[UINavigationController class]])
- {
- BOOL enabled = (self.alwaysEnableDoneButton) ? YES : (self.selectedAssets.count > 0);
-
- for (UIViewController *viewController in ((UINavigationController *)vc).viewControllers)
- viewController.navigationItem.rightBarButtonItem.enabled = enabled;
- }
-}
-
-
-#pragma mark - Post notifications
-
-- (void)postSelectedAssetsDidChangeNotification:(id)sender
-{
- [[NSNotificationCenter defaultCenter] postNotificationName:CTAssetsPickerSelectedAssetsDidChangeNotification
- object:sender];
-}
-
-- (void)postDidSelectAssetNotification:(id)sender
-{
- [[NSNotificationCenter defaultCenter] postNotificationName:CTAssetsPickerDidSelectAssetNotification
- object:sender];
-}
-
-- (void)postDidDeselectAssetNotification:(id)sender
-{
- [[NSNotificationCenter defaultCenter] postNotificationName:CTAssetsPickerDidDeselectAssetNotification
- object:sender];
-}
-
-
-#pragma mark - Accessors
-
-- (UISplitViewController *)childSplitViewController
-{
- return (UISplitViewController *)self.childViewControllers.firstObject;
-}
-
-
-#pragma mark - Indexed accessors
-
-- (NSUInteger)countOfSelectedAssets
-{
- return self.selectedAssets.count;
-}
-
-- (instancetype)objectInSelectedAssetsAtIndex:(NSUInteger)index
-{
- return self.selectedAssets[index];
-}
-
-- (void)insertObject:(id)object inSelectedAssetsAtIndex:(NSUInteger)index
-{
- [self.selectedAssets insertObject:object atIndex:index];
-}
-
-- (void)removeObjectFromSelectedAssetsAtIndex:(NSUInteger)index
-{
- [self.selectedAssets removeObjectAtIndex:index];
-}
-
-- (void)replaceObjectInSelectedAssetsAtIndex:(NSUInteger)index withObject:(PHAsset *)object
-{
- self.selectedAssets[index] = object;
-}
-
-
-#pragma mark - De/Select asset
-
-- (void)selectAsset:(PHAsset *)asset
-{
- [self insertObject:asset inSelectedAssetsAtIndex:self.countOfSelectedAssets];
- [self postDidSelectAssetNotification:asset];
-}
-
-- (void)deselectAsset:(PHAsset *)asset
-{
- [self removeObjectFromSelectedAssetsAtIndex:[self.selectedAssets indexOfObject:asset]];
- [self postDidDeselectAssetNotification:asset];
-}
-
-
-#pragma mark - Selected assets string
-
-- (NSPredicate *)predicateOfMediaType:(PHAssetMediaType)type
-{
- return [NSPredicate predicateWithBlock:^BOOL(PHAsset *asset, NSDictionary *bindings) {
- return (asset.mediaType == type);
- }];
-}
-
-- (NSString *)selectedAssetsString
-{
- if (self.selectedAssets.count == 0)
- return nil;
-
- NSPredicate *photoPredicate = [self predicateOfMediaType:PHAssetMediaTypeImage];
- NSPredicate *videoPredicate = [self predicateOfMediaType:PHAssetMediaTypeVideo];
-
- BOOL photoSelected = ([self.selectedAssets filteredArrayUsingPredicate:photoPredicate].count > 0);
- BOOL videoSelected = ([self.selectedAssets filteredArrayUsingPredicate:videoPredicate].count > 0);
-
- NSString *format;
-
- if (photoSelected && videoSelected)
- format = CTAssetsPickerLocalizedString(@"%@ Items Selected", nil);
-
- else if (photoSelected)
- format = (self.selectedAssets.count > 1) ?
- CTAssetsPickerLocalizedString(@"%@ Photos Selected", nil) :
- CTAssetsPickerLocalizedString(@"%@ Photo Selected", nil);
-
- else if (videoSelected)
- format = (self.selectedAssets.count > 1) ?
- CTAssetsPickerLocalizedString(@"%@ Videos Selected", nil) :
- CTAssetsPickerLocalizedString(@"%@ Video Selected", nil);
-
- NSNumberFormatter *nf = [NSNumberFormatter new];
-
- return [NSString stringWithFormat:format, [nf ctassetsPickerStringFromAssetsCount:self.selectedAssets.count]];
-}
-
-
-#pragma mark - Image target size
-
-- (CGSize)imageSizeForContainerSize:(CGSize)size
-{
- CGFloat scale = UIScreen.mainScreen.scale;
- return CGSizeMake(size.width * scale, size.height * scale);
-}
-
-
-#pragma mark - Split view controller delegate
-
-- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController
-{
- return self.shouldCollapseDetailViewController;
-}
-
-
-#pragma mark - Navigation controller delegate
-
-- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
- animationControllerForOperation:(UINavigationControllerOperation)operation
- fromViewController:(UIViewController *)fromVC
- toViewController:(UIViewController *)toVC
-{
- if ((operation == UINavigationControllerOperationPush && [toVC isKindOfClass:[CTAssetsPageViewController class]]) ||
- (operation == UINavigationControllerOperationPop && [fromVC isKindOfClass:[CTAssetsPageViewController class]]))
- {
- CTAssetsViewControllerTransition *transition = [[CTAssetsViewControllerTransition alloc] init];
- transition.operation = operation;
-
- return transition;
- }
- else
- {
- return nil;
- }
-}
-
-
-#pragma mark - Actions
-
-- (void)dismiss:(id)sender
-{
- if ([self.delegate respondsToSelector:@selector(assetsPickerControllerDidCancel:)])
- [self.delegate assetsPickerControllerDidCancel:self];
- else
- [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
-}
-
-
-- (void)finishPickingAssets:(id)sender
-{
- if ([self.delegate respondsToSelector:@selector(assetsPickerController:didFinishPickingAssets:)])
- [self.delegate assetsPickerController:self didFinishPickingAssets:self.selectedAssets];
-}
-
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerDefines.h b/Libraries external/CTAssetsPickerController/CTAssetsPickerDefines.h
deleted file mode 100755
index bc6ba3079..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerDefines.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-/* Default size */
-
-#define CTAssetCollectionThumbnailLengh 70.0f
-#define CTAssetCollectionThumbnailSize CGSizeMake(CTAssetCollectionThumbnailLengh, CTAssetCollectionThumbnailLengh)
-
-#define CTAssetsPickerPopoverContentSize CGSizeMake(695.0f, 580.0f)
-
-
-
-/* Default appearance */
-
-#define CTAssetsPikcerAccessDeniedViewTextColor [UIColor colorWithRed:129.0f/255.0f green:136.0f/255.0f blue:148.0f/255.0f alpha:1]
-#define CTAssetsPickerNoAssetsViewTextColor [UIColor colorWithRed:153.0f/255.0f green:153.0f/255.0f blue:153.0f/255.0f alpha:1]
-
-#define CTAssetsPikcerThumbnailTintColor [UIColor colorWithRed:164.0f/255.0f green:164.0f/255.0f blue:164.0f/255.0f alpha:1]
-#define CTAssetsPikcerThumbnailBackgroundColor [UIColor colorWithRed:235.0f/255.0f green:235.0f/255.0f blue:235.0f/255.0f alpha:1]
-
-#define CTAssetCollectionViewCellTitleFont [UIFont preferredFontForTextStyle:UIFontTextStyleBody]
-#define CTAssetCollectionViewCellTitleTextColor [UIColor darkTextColor]
-#define CTAssetCollectionViewCellCountFont [UIFont preferredFontForTextStyle:UIFontTextStyleCaption1]
-#define CTAssetCollectionViewCellCountTextColor [UIColor darkTextColor]
-#define CTAssetCollectionViewCellAccessoryColor [UIColor colorWithRed:187.0f/255.0f green:187.0f/255.0f blue:193.0f/255.0f alpha:1]
-
-#define CTAssetsGridViewBackgroundColor [UIColor whiteColor]
-
-#define CTAssetsGridViewCellDisabledColor [UIColor colorWithWhite:1 alpha:0.8]
-#define CTAssetsGridViewCellHighlightedColor [UIColor colorWithWhite:0 alpha:0.5]
-
-#define CTAssetsGridSelectedViewBackgroundColor [UIColor colorWithWhite:1 alpha:0.3]
-#define CTAssetsGridSelectedViewTintColor [UIView new].tintColor
-
-#define CTAssetLabelSize CGSizeMake(25.0f, 25.0f)
-#define CTAssetLabelFont [UIFont preferredFontForTextStyle:UIFontTextStyleBody]
-#define CTAssetLabelTextColor [UIColor whiteColor]
-#define CTAssetLabelBackgroundColor [UIView new].tintColor
-#define CTAssetLabelBorderColor [UIColor whiteColor]
-
-#define CTAssetsGridViewFooterFont [UIFont preferredFontForTextStyle:UIFontTextStyleBody]
-#define CTAssetsGridViewFooterTextColor [UIColor darkTextColor]
-
-#define CTAssetsPageViewPageBackgroundColor [UIColor whiteColor]
-#define CTAssetsPageViewFullscreenBackgroundColor [UIColor blackColor]
-
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerNoAssetsView.h b/Libraries external/CTAssetsPickerController/CTAssetsPickerNoAssetsView.h
deleted file mode 100755
index dbed9e62c..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerNoAssetsView.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface CTAssetsPickerNoAssetsView : UIView
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsPickerNoAssetsView.m b/Libraries external/CTAssetsPickerController/CTAssetsPickerNoAssetsView.m
deleted file mode 100755
index d8121daa8..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsPickerNoAssetsView.m
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <PureLayout/PureLayout.h>
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsPickerNoAssetsView.h"
-#import "NSBundle+CTAssetsPickerController.h"
-
-
-
-@interface CTAssetsPickerNoAssetsView ()
-
-@property (nonatomic, strong) UILabel *title;
-@property (nonatomic, strong) UILabel *message;
-
-@property (nonatomic, assign) BOOL didSetupConstraints;
-
-@end;
-
-
-@implementation CTAssetsPickerNoAssetsView
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- if (self = [super initWithFrame:frame])
- {
- [self setupViews];
- }
-
- return self;
-}
-
-#pragma mark - Setup
-
-- (void)setupViews
-{
- UIFontDescriptor *descriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
- CGFloat size = descriptor.pointSize * 1.7;
-
- UILabel *title = [UILabel new];
- title.textColor = CTAssetsPickerNoAssetsViewTextColor;
- title.font = [UIFont fontWithDescriptor:descriptor size:size];
- title.textAlignment = NSTextAlignmentCenter;
- title.numberOfLines = 5;
- title.text = CTAssetsPickerLocalizedString(@"No Photos or Videos", nil);
- self.title = title;
-
- UILabel *message = [UILabel new];
- message.textColor = CTAssetsPickerNoAssetsViewTextColor;
- message.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
- message.textAlignment = NSTextAlignmentCenter;
- message.numberOfLines = 5;
- message.text = [self noAssetsMessage];
- self.message = message;
-
- [self addSubview:self.title];
- [self addSubview:self.message];
-}
-
-- (NSString *)deviceModel
-{
- return [UIDevice currentDevice].model;
-}
-
-- (BOOL)isCameraDeviceAvailable
-{
- return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
-}
-
-- (NSString *)noAssetsMessage
-{
- NSString *format;
-
- if ([self isCameraDeviceAvailable])
- format = CTAssetsPickerLocalizedString(@"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes.", nil);
- else
- format = CTAssetsPickerLocalizedString(@"You can sync photos and videos onto your %@ using iTunes.", nil);
-
- return [NSString stringWithFormat:format, self.deviceModel];
-}
-
-
-#pragma mark - Update auto layout constraints
-
-- (void)updateConstraints
-{
- if (!self.didSetupConstraints)
- {
- [self autoCenterInSuperview];
-
- // suggested solution for issue #176
- [self autoPinEdgeToSuperviewEdge:ALEdgeLeading withInset:self.layoutMargins.top];
- [self autoPinEdgeToSuperviewEdge:ALEdgeTrailing withInset:self.layoutMargins.bottom];
-
-
- [self.title autoAlignAxisToSuperviewAxis:ALAxisVertical];
- [self.title autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero excludingEdge:ALEdgeBottom];
-
- [self.message autoAlignAxis:ALAxisVertical toSameAxisOfView:self.title];
- [self.message autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.title withOffset:10];
- [self.message autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero excludingEdge:ALEdgeTop];
-
- self.didSetupConstraints = YES;
- }
-
- [super updateConstraints];
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsViewControllerTransition.h b/Libraries external/CTAssetsPickerController/CTAssetsViewControllerTransition.h
deleted file mode 100755
index cc5b29f91..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsViewControllerTransition.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-
-
-
-
-@interface CTAssetsViewControllerTransition : NSObject
-<UIViewControllerAnimatedTransitioning>
-
-@property (nonatomic, assign) UINavigationControllerOperation operation;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/CTAssetsViewControllerTransition.m b/Libraries external/CTAssetsPickerController/CTAssetsViewControllerTransition.m
deleted file mode 100755
index 66c0f719d..000000000
--- a/Libraries external/CTAssetsPickerController/CTAssetsViewControllerTransition.m
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "CTAssetsViewControllerTransition.h"
-#import "CTAssetsPickerDefines.h"
-#import "CTAssetsGridViewController.h"
-#import "CTAssetsPageViewController.h"
-#import "CTAssetItemViewController.h"
-#import "CTAssetScrollView.h"
-#import "CTAssetsPageView.h"
-
-
-
-@interface CTAssetsViewControllerTransition ()
-
-@end
-
-
-
-
-@implementation CTAssetsViewControllerTransition
-
-
-#pragma mark - UIViewControllerAnimatedTransitioning
-
-- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext
-{
- return 0.35f;
-}
-
-- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
-{
- UIView *containerView = [transitionContext containerView];
-
- UIColor *backgroundColor = [CTAssetsPageView appearance].pageBackgroundColor;
- containerView.backgroundColor = (backgroundColor) ? backgroundColor : CTAssetsPageViewPageBackgroundColor;
-
- if (self.operation == UINavigationControllerOperationPush)
- {
- CTAssetsGridViewController *fromVC = (CTAssetsGridViewController *)[transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
- CTAssetsPageViewController *toVC = (CTAssetsPageViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
- CTAssetItemViewController *iVC = (CTAssetItemViewController *)toVC.viewControllers[0];
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:toVC.pageIndex inSection:0];
-
- UIView *cellView = [fromVC.collectionView cellForItemAtIndexPath:indexPath];
- UIImageView *imageView = [[UIImageView alloc] initWithImage:iVC.image];
- UIView *snapshot = [self resizedSnapshot:imageView];
-
- CGPoint cellCenter = [fromVC.view convertPoint:cellView.center fromView:cellView.superview];
- CGPoint snapCenter = toVC.view.center;
-
- // Find the scales of snapshot
- float startScale = MAX(cellView.frame.size.width / snapshot.frame.size.width,
- cellView.frame.size.height / snapshot.frame.size.height);
-
- float minScale = MIN(toVC.view.frame.size.width / snapshot.frame.size.width,
- toVC.view.frame.size.height / snapshot.frame.size.height);
-
- float perspectiveScale = MAX(toVC.view.frame.size.width / snapshot.frame.size.width,
- toVC.view.frame.size.height / snapshot.frame.size.height);
-
- BOOL canPerspectiveZoom = ([self canPerspectiveZoomWithImageSize:iVC.image.size boundsSize:toVC.view.bounds.size]);
-
- float endScale = (canPerspectiveZoom) ? perspectiveScale : minScale;
-
- // Find the bounds of the snapshot mask
- float width = snapshot.bounds.size.width;
- float height = snapshot.bounds.size.height;
- float length = MIN(width, height);
-
- CGRect startBounds = CGRectMake((width-length)/2, (height-length)/2, length, length);
-
- // Create the mask
- UIView *mask = [[UIView alloc] initWithFrame:startBounds];
- mask.backgroundColor = [UIColor whiteColor];
-
- // Prepare transition
- snapshot.transform = CGAffineTransformMakeScale(startScale, startScale);;
- snapshot.layer.mask = mask.layer;
- snapshot.center = cellCenter;
-
- toVC.view.frame = [transitionContext finalFrameForViewController:toVC];
- toVC.view.alpha = 0;
-
- // Add to container view
- [containerView addSubview:toVC.view];
- [containerView addSubview:snapshot];
-
- // Animate
- [UIView animateWithDuration:[self transitionDuration:transitionContext]
- delay:0
- usingSpringWithDamping:0.75
- initialSpringVelocity:0
- options:UIViewAnimationOptionCurveLinear
- animations:^{
- fromVC.view.alpha = 0;
- snapshot.transform = CGAffineTransformMakeScale(endScale, endScale);
- snapshot.layer.mask.bounds = snapshot.bounds;
- snapshot.center = snapCenter;
- toVC.navigationController.toolbar.alpha = 0;
- }
- completion:^(BOOL finished){
- toVC.view.alpha = 1;
- [snapshot removeFromSuperview];
- [transitionContext completeTransition:YES];
- }];
- }
-
- else
- {
- CTAssetsPageViewController *fromVC = (CTAssetsPageViewController *)[transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
- CTAssetsGridViewController *toVC = (CTAssetsGridViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
- CTAssetItemViewController *iVC = (CTAssetItemViewController *)fromVC.viewControllers[0];
- NSIndexPath *indexPath = [NSIndexPath indexPathForItem:fromVC.pageIndex inSection:0];
-
- // Scroll to index path
- [toVC.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionNone animated:NO];
- [toVC.collectionView layoutIfNeeded];
-
- UIView *cellView = [toVC.collectionView cellForItemAtIndexPath:indexPath];
- CTAssetScrollView *scrollView = iVC.view.subviews[0];
- UIImageView *imageView = scrollView.imageView;
- UIView *snapshot = [self resizedSnapshot:imageView];
-
- CGPoint cellCenter = [toVC.view convertPoint:cellView.center fromView:cellView.superview];
- CGPoint snapCenter = fromVC.view.center;
-
- // Find the scales of snapshot
- float startScale = MIN(fromVC.view.frame.size.width / snapshot.frame.size.width,
- fromVC.view.frame.size.height / snapshot.frame.size.height);
-
- float endScale = MAX(cellView.frame.size.width / snapshot.frame.size.width,
- cellView.frame.size.height / snapshot.frame.size.height);
-
- // Find the bounds of the snapshot mask
- float width = snapshot.bounds.size.width;
- float height = snapshot.bounds.size.height;
- float length = MIN(width, height);
- CGRect endBounds = CGRectMake((width-length)/2, (height-length)/2, length, length);
-
- UIView *mask = [[UIView alloc] initWithFrame:snapshot.bounds];
- mask.backgroundColor = [UIColor whiteColor];
-
- // Prepare transition
- snapshot.transform = CGAffineTransformMakeScale(startScale, startScale);
- snapshot.layer.mask = mask.layer;
- snapshot.center = snapCenter;
-
- toVC.view.frame = [transitionContext finalFrameForViewController:toVC];
- toVC.view.alpha = 0;
- fromVC.view.alpha = 0;
-
- // Add to container view
- [containerView addSubview:toVC.view];
- [containerView addSubview:snapshot];
-
- // Animate
- [UIView animateWithDuration:[self transitionDuration:transitionContext]
- delay:0
- usingSpringWithDamping:1
- initialSpringVelocity:0
- options:UIViewAnimationOptionCurveLinear
- animations:^{
- toVC.view.alpha = 1;
- snapshot.transform = CGAffineTransformMakeScale(endScale, endScale);
- snapshot.layer.mask.bounds = endBounds;
- snapshot.center = cellCenter;
- toVC.navigationController.toolbar.alpha = 0;
- }
- completion:^(BOOL finished){
- [snapshot removeFromSuperview];
- [transitionContext completeTransition:YES];
- }];
- }
-}
-
-
-#pragma mark - Perspective Zoom
-
-- (BOOL)canPerspectiveZoomWithImageSize:(CGSize)imageSize boundsSize:(CGSize)boundsSize
-{
- CGFloat imageRatio = imageSize.width / imageSize.height;
- CGFloat boundsRatio = boundsSize.width / boundsSize.height;
-
- // can perform perspective zoom when the difference of aspect ratios is smaller than 20%
- return (fabs( (imageRatio - boundsRatio) / boundsRatio ) < 0.2f);
-}
-
-
-
-#pragma mark - Snapshot
-
-- (UIView *)resizedSnapshot:(UIImageView *)imageView
-{
- CGSize size = imageView.frame.size;
-
- if (CGSizeEqualToSize(size, CGSizeZero))
- return nil;
-
- UIGraphicsBeginImageContextWithOptions(size, YES, 0);
-
- [[UIColor whiteColor] set];
- UIRectFill(CGRectMake(0, 0, size.width, size.height));
-
- [imageView.image drawInRect:CGRectMake(0, 0, size.width, size.height)];
- UIImage *resized = UIGraphicsGetImageFromCurrentImageContext();
-
- UIGraphicsEndImageContext();
-
- return (UIView *)[[UIImageView alloc] initWithImage:resized];
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/CTAssetsPageViewController+Internal.h b/Libraries external/CTAssetsPickerController/Categories/CTAssetsPageViewController+Internal.h
deleted file mode 100755
index 277a02931..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/CTAssetsPageViewController+Internal.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-@interface CTAssetsPageViewController (Internal)
-
-@property (nonatomic, assign) BOOL allowsSelection;
-
-@end \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Categories/CTAssetsPickerController+Internal.h b/Libraries external/CTAssetsPickerController/Categories/CTAssetsPickerController+Internal.h
deleted file mode 100755
index 66765cc5d..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/CTAssetsPickerController+Internal.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-@interface CTAssetsPickerController (Internal)
-
-- (void)dismiss:(id)sender;
-- (void)finishPickingAssets:(id)sender;
-
-- (void)setShouldCollapseDetailViewController:(BOOL)collapse;
-- (void)showNoAssets;
-
-- (CGSize)assetCollectionThumbnailSize;
-- (CGSize)assetThumbnailSize;
-- (NSString *)selectedAssetsString;
-
-- (PHImageRequestOptions *)thumbnailRequestOptions;
-- (CGSize)imageSizeForContainerSize:(CGSize)size;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.h
deleted file mode 100755
index 2830f3be6..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <Foundation/Foundation.h>
-
-
-#define CTAssetsPickerLocalizedString(key, comment) \
-NSLocalizedStringFromTableInBundle((key), @"CTAssetsPicker", [NSBundle ctassetsPickerBundle], (comment))
-
-@interface NSBundle (CTAssetsPickerController)
-
-+ (NSBundle *)ctassetsPickerBundle;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.m
deleted file mode 100755
index 2bb47299e..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.m
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "NSBundle+CTAssetsPickerController.h"
-#import "CTAssetsPickerController.h"
-
-@implementation NSBundle (CTAssetsPickerController)
-
-+ (NSBundle *)ctassetsPickerBundle
-{
- return [NSBundle bundleWithPath:[NSBundle ctassetsPickerBundlePath]];
-}
-
-+ (NSString *)ctassetsPickerBundlePath
-{
- return [[NSBundle bundleForClass:[CTAssetsPickerController class]]
- pathForResource:@"CTAssetsPickerController" ofType:@"bundle"];
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/NSDateFormatter+CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/Categories/NSDateFormatter+CTAssetsPickerController.h
deleted file mode 100755
index f9963c881..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/NSDateFormatter+CTAssetsPickerController.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <Foundation/Foundation.h>
-
-
-
-@interface NSDateFormatter (CTAssetsPickerController)
-
-- (NSString *)ctassetsPickerStringFromTimeInterval:(NSTimeInterval)timeInterval;
-- (NSString *)ctassetsPickerSpellOutStringFromTimeInterval:(NSTimeInterval)timeInterval;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/NSDateFormatter+CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/Categories/NSDateFormatter+CTAssetsPickerController.m
deleted file mode 100755
index 98f99adad..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/NSDateFormatter+CTAssetsPickerController.m
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "NSDateFormatter+CTAssetsPickerController.h"
-#import "NSBundle+CTAssetsPickerController.h"
-
-
-
-@implementation NSDateFormatter (CTAssetsPickerController)
-
-- (NSString *)ctassetsPickerStringFromTimeInterval:(NSTimeInterval)timeInterval
-{
- NSDateComponents *components = [self dateComponetsWithTimeInterval:timeInterval];
- NSInteger roundedSeconds = lround(timeInterval - (components.hour * 60 * 60) - (components.minute * 60));
-
- if (components.hour > 0)
- return [NSString stringWithFormat:@"%ld:%02ld:%02ld", (long)components.hour, (long)components.minute, (long)roundedSeconds];
-
- else
- return [NSString stringWithFormat:@"%ld:%02ld", (long)components.minute, (long)roundedSeconds];
-}
-
-- (NSString *)ctassetsPickerSpellOutStringFromTimeInterval:(NSTimeInterval)timeInterval
-{
- NSString *string = @"";
-
- NSDateComponents *components = [self dateComponetsWithTimeInterval:timeInterval];
-
- if (components.hour > 0)
- string = [string stringByAppendingFormat:@"%ld %@",
- (long)components.hour,
- (components.hour > 1) ?
- CTAssetsPickerLocalizedString(@"hours", nil) :
- CTAssetsPickerLocalizedString(@"hour", nil)];
-
- if (components.minute > 0)
- string = [string stringByAppendingFormat:@"%ld %@",
- (long)components.minute,
- (components.minute > 1) ?
- CTAssetsPickerLocalizedString(@"minutes", nil) :
- CTAssetsPickerLocalizedString(@"minute", nil)];
-
- if (components.second > 0)
- string = [string stringByAppendingFormat:@"%ld %@",
- (long)components.second,
- (components.second > 1) ?
- CTAssetsPickerLocalizedString(@"seconds", nil) :
- CTAssetsPickerLocalizedString(@"second", nil)];
-
- return string;
-}
-
-- (NSDateComponents *)dateComponetsWithTimeInterval:(NSTimeInterval)timeInterval
-{
- NSCalendar *calendar = [NSCalendar currentCalendar];
-
- NSDate *date1 = [[NSDate alloc] init];
- NSDate *date2 = [[NSDate alloc] initWithTimeInterval:timeInterval sinceDate:date1];
-
- unsigned int unitFlags =
- NSCalendarUnitSecond | NSCalendarUnitMinute | NSCalendarUnitHour |
- NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear;
-
- return [calendar components:unitFlags
- fromDate:date1
- toDate:date2
- options:0];
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.h
deleted file mode 100755
index 684a09b76..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <Foundation/Foundation.h>
-
-@interface NSIndexSet (CTAssetsPickerController)
-
-- (NSArray *)ctassetsPickerIndexPathsFromIndexesWithSection:(NSUInteger)section;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.m
deleted file mode 100755
index 64e0f8385..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.m
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-#import "NSIndexSet+CTAssetsPickerController.h"
-
-
-@implementation NSIndexSet (CTAssetsPickerController)
-
-- (NSArray *)ctassetsPickerIndexPathsFromIndexesWithSection:(NSUInteger)section
-{
- NSMutableArray *indexPaths = [NSMutableArray arrayWithCapacity:self.count];
-
- [self enumerateIndexesUsingBlock:^(NSUInteger index, BOOL *stop) {
- [indexPaths addObject:[NSIndexPath indexPathForItem:index inSection:section]];
- }];
-
- return indexPaths;
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.h
deleted file mode 100755
index dbe1a2be1..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <Foundation/Foundation.h>
-
-@interface NSNumberFormatter (CTAssetsPickerController)
-
-- (NSString *)ctassetsPickerStringFromAssetsCount:(NSUInteger)count;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.m
deleted file mode 100755
index d7f247497..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.m
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "NSNumberFormatter+CTAssetsPickerController.h"
-
-@implementation NSNumberFormatter (CTAssetsPickerController)
-
-- (NSString *)ctassetsPickerStringFromAssetsCount:(NSUInteger)count
-{
- self.numberStyle = NSNumberFormatterDecimalStyle;
- self.locale = [NSLocale currentLocale];
- return [self stringFromNumber:@(count)];
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/PHAsset+CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/Categories/PHAsset+CTAssetsPickerController.h
deleted file mode 100755
index 09f544772..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/PHAsset+CTAssetsPickerController.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <Photos/Photos.h>
-
-@interface PHAsset (CTAssetsPickerController)
-
-- (BOOL)ctassetsPickerIsPhoto;
-- (BOOL)ctassetsPickerIsVideo;
-- (BOOL)ctassetsPickerIsHighFrameRateVideo;
-- (BOOL)ctassetsPickerIsTimelapseVideo;
-
-- (UIImage *)badgeImage;
-- (NSString *)ctassetsPickerAccessibilityLabel;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/PHAsset+CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/Categories/PHAsset+CTAssetsPickerController.m
deleted file mode 100755
index d1dba70cd..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/PHAsset+CTAssetsPickerController.m
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "PHAsset+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-
-
-
-@implementation PHAsset (CTAssetsPickerController)
-
-- (BOOL)ctassetsPickerIsPhoto
-{
- return (self.mediaType == PHAssetMediaTypeImage);
-}
-
-- (BOOL)ctassetsPickerIsVideo
-{
- return (self.mediaType == PHAssetMediaTypeVideo);
-}
-
-- (BOOL)ctassetsPickerIsHighFrameRateVideo
-{
- return (self.mediaType == PHAssetMediaTypeVideo && (self.mediaSubtypes & PHAssetMediaSubtypeVideoHighFrameRate));
-}
-
-- (BOOL)ctassetsPickerIsTimelapseVideo
-{
- return (self.mediaType == PHAssetMediaTypeVideo && (self.mediaSubtypes & PHAssetMediaSubtypeVideoTimelapse));
-}
-
-- (UIImage *)badgeImage
-{
- NSString *imageName;
-
- if (self.ctassetsPickerIsHighFrameRateVideo)
- imageName = @"BadgeSlomoSmall";
-
- else if (self.ctassetsPickerIsTimelapseVideo)
- imageName = @"BadgeTimelapseSmall";
-
- else if (self.ctassetsPickerIsVideo)
- imageName = @"BadgeVideoSmall";
-
- if (imageName)
- return [[UIImage ctassetsPickerImageNamed:imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
- else
- return nil;
-}
-
-- (NSString *)ctassetsPickerAccessibilityLabel
-{
- return nil;
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/PHAssetCollection+CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/Categories/PHAssetCollection+CTAssetsPickerController.h
deleted file mode 100755
index 0e8f879c2..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/PHAssetCollection+CTAssetsPickerController.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <Photos/Photos.h>
-
-@interface PHAssetCollection (CTAssetsPickerController)
-
-+ (PHAssetCollectionType)ctassetPickerAssetCollectionTypeOfSubtype:(PHAssetCollectionSubtype)subtype;
-- (NSUInteger)ctassetPikcerCountOfAssetsFetchedWithOptions:(PHFetchOptions *)fetchOptions;
-- (UIImage *)badgeImage;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/PHAssetCollection+CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/Categories/PHAssetCollection+CTAssetsPickerController.m
deleted file mode 100755
index 9b48cd482..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/PHAssetCollection+CTAssetsPickerController.m
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "PHAssetCollection+CTAssetsPickerController.h"
-#import "UIImage+CTAssetsPickerController.h"
-
-
-
-@implementation PHAssetCollection (CTAssetsPickerController)
-
-+ (PHAssetCollectionType)ctassetPickerAssetCollectionTypeOfSubtype:(PHAssetCollectionSubtype)subtype
-{
- return (subtype >= PHAssetCollectionSubtypeSmartAlbumGeneric) ? PHAssetCollectionTypeSmartAlbum : PHAssetCollectionTypeAlbum;
-}
-
-- (NSUInteger)ctassetPikcerCountOfAssetsFetchedWithOptions:(PHFetchOptions *)fetchOptions
-{
- PHFetchResult *result = [PHAsset fetchAssetsInAssetCollection:self options:fetchOptions];
- return result.count;
-}
-
-- (UIImage *)badgeImage
-{
- NSString *imageName;
-
- switch (self.assetCollectionSubtype)
- {
- case PHAssetCollectionSubtypeSmartAlbumUserLibrary:
- imageName = @"BadgeAllPhotos";
- break;
-
- case PHAssetCollectionSubtypeSmartAlbumPanoramas:
- imageName = @"BadgePanorama";
- break;
-
- case PHAssetCollectionSubtypeSmartAlbumVideos:
- imageName = @"BadgeVideo";
- break;
-
- case PHAssetCollectionSubtypeSmartAlbumFavorites:
- imageName = @"BadgeFavorites";
- break;
-
- case PHAssetCollectionSubtypeSmartAlbumTimelapses:
- imageName = @"BadgeTimelapse";
- break;
-
- case PHAssetCollectionSubtypeSmartAlbumRecentlyAdded:
- imageName = @"BadgeLastImport";
- break;
-
- case PHAssetCollectionSubtypeSmartAlbumBursts:
- imageName = @"BadgeBurst";
- break;
-
- case PHAssetCollectionSubtypeSmartAlbumSlomoVideos:
- imageName = @"BadgeSlomo";
- break;
-
- case PHAssetCollectionSubtypeSmartAlbumScreenshots:
- imageName = @"BadgeScreenshots";
- break;
-
- case PHAssetCollectionSubtypeSmartAlbumSelfPortraits:
- imageName = @"BadgeSelfPortraits";
- break;
-
- default:
- imageName = nil;
- break;
- }
-
- if (imageName)
- return [[UIImage ctassetsPickerImageNamed:imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
- else
- return nil;
-}
-
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/PHImageManager+CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/Categories/PHImageManager+CTAssetsPickerController.h
deleted file mode 100755
index 072d0cd3f..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/PHImageManager+CTAssetsPickerController.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// PHImageManager+CTSupport.h
-// CTAssetsPickerDemo
-//
-// Created by Korben Allen Rusek on 4/7/16.
-// Copyright © 2016 Clement T. All rights reserved.
-//
-
-#import <Photos/Photos.h>
-
-@interface PHImageManager (CTAssetsPickerController)
-
-- (PHImageRequestID)ctassetsPickerRequestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:( PHImageRequestOptions *)options resultHandler:(void (^)(UIImage * result, NSDictionary * info))resultHandler;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/PHImageManager+CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/Categories/PHImageManager+CTAssetsPickerController.m
deleted file mode 100755
index 1e9376275..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/PHImageManager+CTAssetsPickerController.m
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// PHImageManager+CTSupport.m
-// CTAssetsPickerDemo
-//
-// Created by Korben Allen Rusek on 4/7/16.
-// Copyright © 2016 Clement T. All rights reserved.
-//
-
-#import "PHImageManager+CTAssetsPickerController.h"
-
-@implementation PHImageManager (CTAssetsPickerController)
-
-+ (BOOL)ctassetsPickerNeedsiPadSupportSize {
- return [(NSString*)[UIDevice currentDevice].model hasPrefix:@"iPad"] && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad == false;
-}
-
-+ (CGSize)ctassetsPickerSizeForSize:(CGSize)size withMinimumDimension:(CGFloat)dimension {
- if (size.width >= dimension && size.height >= dimension) return size;
- if (size.width <= 0 || size.height <= 0) return size;
-
- CGFloat width, height;
- if (size.width < size.height) {
- width = 500;
- height = size.height/size.width*width;
- } else {
- height = 500;
- width = size.width/size.height*height;
- }
- return CGSizeMake(width, height);
-}
-
-- (PHImageRequestID)ctassetsPickerRequestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:( PHImageRequestOptions *)options resultHandler:(void (^)(UIImage * result, NSDictionary * info))resultHandler {
- CGSize size = targetSize;
- if ([[self class] ctassetsPickerNeedsiPadSupportSize]) {
- size = [[self class] ctassetsPickerSizeForSize:targetSize withMinimumDimension:500];
- }
- return [self requestImageForAsset:asset targetSize:size contentMode:contentMode options:options resultHandler:resultHandler];
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.h
deleted file mode 100755
index e3af399bd..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface UICollectionView (CTAssetsPickerController)
-
-- (NSArray *)ctassetsPickerIndexPathsForElementsInRect:(CGRect)rect;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.m
deleted file mode 100755
index 213d7765a..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.m
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "UICollectionView+CTAssetsPickerController.h"
-
-@implementation UICollectionView (CTAssetsPickerController)
-
-- (NSArray *)ctassetsPickerIndexPathsForElementsInRect:(CGRect)rect
-{
- NSArray *allAttributes = [self.collectionViewLayout layoutAttributesForElementsInRect:rect];
-
- if (allAttributes.count == 0)
- return nil;
-
- NSMutableArray *indexPaths = [NSMutableArray arrayWithCapacity:allAttributes.count];
-
- for (UICollectionViewLayoutAttributes *attributes in allAttributes)
- {
- NSIndexPath *indexPath = attributes.indexPath;
- [indexPaths addObject:indexPath];
- }
-
- return indexPaths;
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.h b/Libraries external/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.h
deleted file mode 100755
index 350545e7a..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import <UIKit/UIKit.h>
-
-@interface UIImage (CTAssetsPickerController)
-
-+ (UIImage *)ctassetsPickerImageNamed:(NSString *)name;
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.m b/Libraries external/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.m
deleted file mode 100755
index ce28b255d..000000000
--- a/Libraries external/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.m
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-
- MIT License (MIT)
-
- Copyright (c) 2015 Clement CN Tsang
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-#import "UIImage+CTAssetsPickerController.h"
-#import "NSBundle+CTAssetsPickerController.h"
-
-@implementation UIImage (CTAssetsPickerController)
-
-+ (UIImage *)ctassetsPickerImageNamed:(NSString *)name
-{
- return [UIImage imageNamed:name inBundle:[NSBundle ctassetsPickerBundle] compatibleWithTraitCollection:nil];
-}
-
-@end
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock.png
deleted file mode 100755
index 76bf0af47..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock@2x.png
deleted file mode 100755
index 3a3c68cfe..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock@3x.png
deleted file mode 100755
index 2c03ba269..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/AccessDeniedViewLock@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/Contents.json
deleted file mode 100755
index 8079d59c5..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/AccessDeniedViewLock.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "AccessDeniedViewLock.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "AccessDeniedViewLock@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "AccessDeniedViewLock@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/BadgeAllPhotos@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/BadgeAllPhotos@2x.png
deleted file mode 100755
index 437b3b540..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/BadgeAllPhotos@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/BadgeAllPhotos@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/BadgeAllPhotos@3x.png
deleted file mode 100755
index 8190ef1f4..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/BadgeAllPhotos@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/Contents.json
deleted file mode 100755
index 3b970b96c..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeAllPhotos.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeAllPhotos@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeAllPhotos@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/BadgeBurst@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/BadgeBurst@2x.png
deleted file mode 100755
index d04c6d458..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/BadgeBurst@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/BadgeBurst@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/BadgeBurst@3x.png
deleted file mode 100755
index 42c3992ea..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/BadgeBurst@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/Contents.json
deleted file mode 100755
index 44d9554dd..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeBurst.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeBurst@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeBurst@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/BadgeFavorites@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/BadgeFavorites@2x.png
deleted file mode 100755
index 6f250f823..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/BadgeFavorites@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/BadgeFavorites@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/BadgeFavorites@3x.png
deleted file mode 100755
index e0f2ed180..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/BadgeFavorites@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/Contents.json
deleted file mode 100755
index 4fdff8a99..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeFavorites.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeFavorites@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeFavorites@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/BadgeLastImport@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/BadgeLastImport@2x.png
deleted file mode 100755
index 1735e92b3..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/BadgeLastImport@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/BadgeLastImport@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/BadgeLastImport@3x.png
deleted file mode 100755
index 6a1452cdb..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/BadgeLastImport@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/Contents.json
deleted file mode 100755
index 9f862b4b4..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeLastImport.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeLastImport@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeLastImport@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/BadgePanorama@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/BadgePanorama@2x.png
deleted file mode 100755
index d31d06bbb..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/BadgePanorama@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/BadgePanorama@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/BadgePanorama@3x.png
deleted file mode 100755
index d35caa86f..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/BadgePanorama@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/Contents.json
deleted file mode 100755
index 441500e67..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgePanorama.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgePanorama@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgePanorama@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/BadgeRecentlyDeleted@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/BadgeRecentlyDeleted@2x.png
deleted file mode 100755
index 58c51b021..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/BadgeRecentlyDeleted@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/BadgeRecentlyDeleted@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/BadgeRecentlyDeleted@3x.png
deleted file mode 100755
index 2af6ea121..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/BadgeRecentlyDeleted@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/Contents.json
deleted file mode 100755
index d74e24aa8..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeRecentlyDeleted.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeRecentlyDeleted@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeRecentlyDeleted@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/BadgeScreenshots@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/BadgeScreenshots@2x.png
deleted file mode 100755
index 6cd76cf28..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/BadgeScreenshots@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/BadgeScreenshots@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/BadgeScreenshots@3x.png
deleted file mode 100755
index 0375fca48..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/BadgeScreenshots@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/Contents.json
deleted file mode 100755
index 5565cb8ea..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeScreenshots.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeScreenshots@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeScreenshots@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/BadgeSelfPortraits@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/BadgeSelfPortraits@2x.png
deleted file mode 100755
index aa83c6c03..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/BadgeSelfPortraits@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/BadgeSelfPortraits@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/BadgeSelfPortraits@3x.png
deleted file mode 100755
index 38a894db9..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/BadgeSelfPortraits@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/Contents.json
deleted file mode 100755
index a1d90b5ef..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSelfPortraits.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeSelfPortraits@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeSelfPortraits@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall.png
deleted file mode 100644
index a4cd0db2a..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall@2x.png
deleted file mode 100644
index 823b496c3..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall@3x.png
deleted file mode 100644
index 33c4fde05..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/BadgeSloMoSmall@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/Contents.json
deleted file mode 100644
index b4523c26c..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSloMoSmall.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "BadgeSloMoSmall.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeSloMoSmall@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeSloMoSmall@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/BadgeSlomo@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/BadgeSlomo@2x.png
deleted file mode 100755
index 484cd081b..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/BadgeSlomo@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/BadgeSlomo@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/BadgeSlomo@3x.png
deleted file mode 100755
index 49fa563de..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/BadgeSlomo@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/Contents.json
deleted file mode 100755
index f0d28d028..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeSlomo.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeSlomo@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeSlomo@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/BadgeTimelapse@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/BadgeTimelapse@2x.png
deleted file mode 100755
index cd2ffd9f2..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/BadgeTimelapse@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/BadgeTimelapse@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/BadgeTimelapse@3x.png
deleted file mode 100755
index 8679d98eb..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/BadgeTimelapse@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/Contents.json
deleted file mode 100755
index aa1b6a5d9..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapse.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeTimelapse@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeTimelapse@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall.png
deleted file mode 100755
index d4c8c7be2..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall@2x.png
deleted file mode 100755
index aefecb6ba..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall@3x.png
deleted file mode 100755
index c9e59fd21..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/BadgeTimelapseSmall@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/Contents.json
deleted file mode 100755
index 5b7622bd2..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeTimelapseSmall.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "BadgeTimelapseSmall.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeTimelapseSmall@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeTimelapseSmall@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/BadgeVideo@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/BadgeVideo@2x.png
deleted file mode 100755
index 01c7ebb98..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/BadgeVideo@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/BadgeVideo@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/BadgeVideo@3x.png
deleted file mode 100755
index 6251a256d..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/BadgeVideo@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/Contents.json
deleted file mode 100755
index 02fb09d2c..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideo.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeVideo@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeVideo@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall.png
deleted file mode 100755
index 5fc5ca30a..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall@2x.png
deleted file mode 100755
index 182da541b..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall@3x.png
deleted file mode 100755
index 9f1dfef8b..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/BadgeVideoSmall@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/Contents.json
deleted file mode 100755
index 7cd51a5d7..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/BadgeVideoSmall.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "BadgeVideoSmall.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeVideoSmall@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "BadgeVideoSmall@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark.png
deleted file mode 100755
index edbadabce..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark@2x.png
deleted file mode 100755
index 93922d5d2..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark@3x.png
deleted file mode 100755
index f91a1cfa4..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Checkmark@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Contents.json
deleted file mode 100755
index b3c5dca06..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Checkmark.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "Checkmark.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "Checkmark@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "Checkmark@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow.png
deleted file mode 100755
index 14de0f8c1..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow@2x.png
deleted file mode 100755
index 34231165f..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow@3x.png
deleted file mode 100755
index 71239e35e..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/CheckmarkShadow@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/Contents.json
deleted file mode 100755
index 581e04ccb..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkShadow.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "CheckmarkShadow.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "CheckmarkShadow@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "CheckmarkShadow@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected.png
deleted file mode 100755
index cb88ed687..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected@2x.png
deleted file mode 100755
index 88173f8f1..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected@3x.png
deleted file mode 100755
index 8d3d9f54c..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/CheckmarkUnselected@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/Contents.json
deleted file mode 100755
index 7dc576adc..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/CheckmarkUnselected.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "CheckmarkUnselected.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "CheckmarkUnselected@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "CheckmarkUnselected@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Contents.json
deleted file mode 100755
index da4a164c9..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/Contents.json
deleted file mode 100755
index fde9c7ca0..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "DisclosureArrow.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "DisclosureArrow@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "DisclosureArrow@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow.png
deleted file mode 100755
index 7acd36403..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow@2x.png
deleted file mode 100755
index 3e9ad6688..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow@3x.png
deleted file mode 100755
index 95b86f76a..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/DisclosureArrow.imageset/DisclosureArrow@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/Contents.json
deleted file mode 100755
index f4e1dc9ac..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "GridDisabledAsset.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "GridDisabledAsset@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "GridDisabledAsset@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset.png
deleted file mode 100755
index cae5e3c22..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset@2x.png
deleted file mode 100755
index 521130b9b..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset@3x.png
deleted file mode 100755
index 3c2d14abb..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridDisabledAsset.imageset/GridDisabledAsset@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/Contents.json
deleted file mode 100755
index b23aea161..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "GridEmptyAlbum.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "GridEmptyAlbum@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "GridEmptyAlbum@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum.png
deleted file mode 100755
index 3299115c3..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum@2x.png
deleted file mode 100755
index f3111ce88..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum@3x.png
deleted file mode 100755
index 59906c31d..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbum.imageset/GridEmptyAlbum@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/Contents.json
deleted file mode 100755
index f9cef4a5e..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "GridEmptyAlbumShared.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "GridEmptyAlbumShared@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "GridEmptyAlbumShared@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared.png
deleted file mode 100755
index a12013719..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared@2x.png
deleted file mode 100755
index 4c9a4c8e1..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared@3x.png
deleted file mode 100755
index 5d12f8674..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyAlbumShared.imageset/GridEmptyAlbumShared@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/Contents.json
deleted file mode 100755
index 316fd246f..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "GridEmptyCameraRoll.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "GridEmptyCameraRoll@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "GridEmptyCameraRoll@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll.png
deleted file mode 100755
index 9a5f97cc6..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll@2x.png
deleted file mode 100755
index fe9255bf6..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll@3x.png
deleted file mode 100755
index 62dab35c9..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridEmptyCameraRoll.imageset/GridEmptyCameraRoll@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/Contents.json
deleted file mode 100755
index 4d2ef3f01..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "GridGradient.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "GridGradient@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "GridGradient@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient.png
deleted file mode 100755
index 7f44a6ec8..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient@2x.png
deleted file mode 100755
index 18feaac7f..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient@3x.png
deleted file mode 100755
index e44483919..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridGradient.imageset/GridGradient@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/Contents.json
deleted file mode 100755
index 4a6f7f62f..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/Contents.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "GridHiddenAlbum@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "GridHiddenAlbum@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/GridHiddenAlbum@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/GridHiddenAlbum@2x.png
deleted file mode 100755
index eb6add0a9..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/GridHiddenAlbum@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/GridHiddenAlbum@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/GridHiddenAlbum@3x.png
deleted file mode 100755
index 950edc960..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/GridHiddenAlbum.imageset/GridHiddenAlbum@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/Contents.json
deleted file mode 100755
index 38412d429..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "PauseButton.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "PauseButton@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "PauseButton@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton.png
deleted file mode 100755
index 066d11a9d..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton@2x.png
deleted file mode 100755
index 47fe70985..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton@3x.png
deleted file mode 100755
index 7a994bcda..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PauseButton.imageset/PauseButton@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/Contents.json
deleted file mode 100755
index ce86fc5e4..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "PlayButton.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "PlayButton@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "PlayButton@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton.png
deleted file mode 100755
index 342090e1e..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton@2x.png
deleted file mode 100755
index d97612f22..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton@3x.png
deleted file mode 100755
index 08db865e4..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/PlayButton.imageset/PlayButton@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/Contents.json
deleted file mode 100755
index de147ffec..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "VideoPlayButtonMask.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "VideoPlayButtonMask@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "VideoPlayButtonMask@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask.png
deleted file mode 100755
index 8113b27f2..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask@2x.png
deleted file mode 100755
index 456acbed0..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask@3x.png
deleted file mode 100755
index e6dd3bc98..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayButtonMask.imageset/VideoPlayButtonMask@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/Contents.json b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/Contents.json
deleted file mode 100755
index e4a259f65..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "VideoPlayGlyphMask.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "VideoPlayGlyphMask@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "VideoPlayGlyphMask@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask.png
deleted file mode 100755
index 3fda59521..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask@2x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask@2x.png
deleted file mode 100755
index a13d9dbbc..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask@3x.png b/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask@3x.png
deleted file mode 100755
index 9e5d8c5b2..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/CTAssetsPicker.xcassets/VideoPlayGlyphMask.imageset/VideoPlayGlyphMask@3x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/CTAssetsPickerController/Resources/ar.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/ar.lproj/CTAssetsPicker.strings
deleted file mode 100755
index ee81b42d1..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/ar.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "إلغاء";
-"Done" = "تم";
-
-/* Default title */
-"Photos" = "الصور";
-
-/* No. of selected */
-"%@ Photo Selected" = "تم تحديد %@ صورة";
-"%@ Photos Selected" = "تم تحديد %@ صور";
-"%@ Video Selected" = "تم تحديد %@ فيديو";
-"%@ Videos Selected" = "تم تحديد %@ فيديوهات";
-"%@ Items Selected" = "تم تحديد %@ عناصر";
-
-/* Grid view footer */
-"%@ Photos" = "%@ صور";
-"%@ Videos" = "%@ فيديوهات";
-"%@ Photos, %@ Videos" = "%@ صور، %@ فيديو";
-
-/* Assets index */
-"%@ of %@" = "%@ من %@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "لا يحق لهذا التطبيق الوصول إلى صورك أو فيديوهاتك.";
-"You can enable access in Privacy Settings." = "يمكن تفعيل الوصول من إعدادات الخصوصية.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "لا توجد صور أو فيديوهات";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "يمكنك التقاط الصور والفيديوهات باستخدام الكاميرا، أو مزامنة الصورة والفيديوهات مع %@ الخاص بك.\nباستخدام iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "يمكنك مزامنة الصورة والفيديوهات مع %@ الخاص بك.";
-
-/* Accessibility labels */
-"Play" = "تشغيل";
-"Select" = "حدد";
-"Deselect" = "إلغاء";
-
-/* Video duration spell out */
-"hours" = "ساعات";
-"hour" = "ساعة";
-"minutes" = "دقائق";
-"minute" = "دقيقة";
-"seconds" = "ثواني";
-"second" = "ثانية";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/da.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/da.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 2859bfdf5..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/da.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Fortryd";
-"Done" = "Færdig";
-
-/* Default title */
-"Photos" = "Billeder";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Billed valgt";
-"%@ Photos Selected" = "%@ Billeder valgt";
-"%@ Video Selected" = "%@ Video valgt";
-"%@ Videos Selected" = "%@ Videoer valgt";
-"%@ Items Selected" = "%@ Emner valgt";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Billeder";
-"%@ Videos" = "%@ Videoer";
-"%@ Photos, %@ Videos" = "%1$@ Billeder, %2$@ Videoer";
-
-/* Assets index */
-"%@ of %@" = "%1$@ af %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Denne app har ikke adgangs til dine billeder eller videoer.";
-"You can enable access in Privacy Settings." = "Du kan tildele adgang under Privatlivs indstillinger.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Ingen billeder eller videoer";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Du kan tage billeder med kameraet, eller synkronisere billeder og videoer til din %@\nmed iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Du kan synkronisere billeder eller videoer til din %@ med iTunes.";
-
-/* Accessibility labels */
-"Play" = "Afspil";
-"Select" = "Vælg";
-"Deselect" = "Fravælg";
-
-/* Video duration spell out */
-"hours" = "timer";
-"hour" = "time";
-"minutes" = "minutter";
-"minute" = "minut";
-"seconds" = "sekunder";
-"second" = "sekund";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Kan ikke afspille video streaming";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/Resources/de.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/de.lproj/CTAssetsPicker.strings
deleted file mode 100755
index a5fe5fb7a..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/de.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Abbrechen";
-"Done" = "Fertig";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto ausgewählt";
-"%@ Photos Selected" = "%@ Fotos ausgewählt";
-"%@ Video Selected" = "%@ Video ausgewählt";
-"%@ Videos Selected" = "%@ Videos ausgewählt";
-"%@ Items Selected" = "%@ Objekte ausgewählt";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotos";
-"%@ Videos" = "%@ Videos";
-"%@ Photos, %@ Videos" = "%1$@ Fotos, %2$@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ von %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Diese App darf nicht auf Ihr Fotoalbum zugreifen.";
-"You can enable access in Privacy Settings." = "Sie können den Zugriff in den Datenschutz Einstellungen erlauben.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Keine Fotos oder Videos vorhanden";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Sie können Fotos oder Videos mit der Kamera aufnehmen oder Ihr %@\nmit iTunes synchronisieren.";
-"You can sync photos and videos onto your %@ using iTunes." = "Sie können Fotos und Videos mit iTunes auf Ihr %@ synchronisieren.";
-
-/* Accessibility labels */
-"Play" = "Wiedergeben";
-"Select" = "Wählen Sie";
-"Deselect" = "Markierung entfernen";
-
-/* Video duration spell out */
-"hours" = "Stunden";
-"hour" = "Stunde";
-"minutes" = "Minuten";
-"minute" = "Minute";
-"seconds" = "Sekunden";
-"second" = "Sekunde";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Video kann nicht wiedergegeben werden";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/Resources/en.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/en.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 2ea8c8474..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/en.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancel";
-"Done" = "Done";
-
-/* Default title */
-"Photos" = "Photos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Photo Selected";
-"%@ Photos Selected" = "%@ Photos Selected";
-"%@ Video Selected" = "%@ Video Selected";
-"%@ Videos Selected" = "%@ Videos Selected";
-"%@ Items Selected" = "%@ Items Selected";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Photos";
-"%@ Videos" = "%@ Videos";
-"%@ Photos, %@ Videos" = "%1$@ Photos, %2$@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ of %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "This app does not have access to your photos or videos.";
-"You can enable access in Privacy Settings." = "You can enable access in Privacy Settings.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "No Photos or Videos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "You can sync photos and videos onto your %@ using iTunes.";
-
-/* Accessibility labels */
-"Play" = "Play";
-"Select" = "Select";
-"Deselect" = "Deselect";
-
-/* Video duration spell out */
-"hours" = "hours";
-"hour" = "hour";
-"minutes" = "minutes";
-"minute" = "minute";
-"seconds" = "seconds";
-"second" = "second";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/es-MX.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/es-MX.lproj/CTAssetsPicker.strings
deleted file mode 100755
index f7e1d85dc..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/es-MX.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancela";
-"Done" = "OK";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto seleccionada";
-"%@ Photos Selected" = "%@ Fotos seleccionadas";
-"%@ Video Selected" = "%@ Video seleccionado";
-"%@ Videos Selected" = "%@ Videos seleccionados";
-"%@ Items Selected" = "%@ Objetos seleccionados";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotos";
-"%@ Videos" = "%@ Videos";
-"%@ Photos, %@ Videos" = "%@ Fotos, %@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%@ de %@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "La aplicación no tiene acceso a tus fotos o videos.";
-"You can enable access in Privacy Settings." = "Puedes acceder en Ajustes/Privacidad.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Ni fotos ni videos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Puedes tomar fotos y videos utilizando la cámara, o sincronizarlas con tu %@ con iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Puedes sincronizar las fotos y videos en tu %@ con iTunes";
-
-/* Accessibility labels */
-"Play" = "Reproducir";
-"Select" = "Select";
-"Deselect" = "Deselect";
-
-/* Video duration spell out */
-"hours" = "horas";
-"hour" = "hora";
-"minutes" = "minutos";
-"minute" = "minuto";
-"seconds" = "segundos";
-"second" = "segundo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/es.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/es.lproj/CTAssetsPicker.strings
deleted file mode 100755
index a381824a3..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/es.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancelar";
-"Done" = "Hecho";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto seleccionada";
-"%@ Photos Selected" = "%@ fotos seleccionadas";
-"%@ Video Selected" = "%@ vídeo seleccionado";
-"%@ Videos Selected" = "%@ vídeos seleccionados";
-"%@ Items Selected" = "%@ objetos seleccionados";
-
-/* Grid view footer */
-"%@ Photos" = "%@ fotos";
-"%@ Videos" = "%@ vídeos";
-"%@ Photos, %@ Videos" = "%1$@ fotos, %2$@ vídeos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ de %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Esta aplicación no tiene acceso a tus fotos o vídeos.";
-"You can enable access in Privacy Settings." = "Puedes habilitar el acceso en los ajustes de privacidad.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "No hay fotos ni vídeos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Puedes tomar fotos y vídeos con la cámara o sincronizar fotos y vídeos en tu %@\na través de iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Puedes sincronizar fotos y vídeos en tu %@ a través de iTunes.";
-
-/* Accessibility labels */
-"Play" = "Reproducir";
-"Select" = "Seleccione";
-"Deselect" = "Deseleccionar";
-
-/* Video duration spell out */
-"hours" = "horas";
-"hour" = "hora";
-"minutes" = "minutos";
-"minute" = "minuto";
-"seconds" = "segundos";
-"second" = "segundo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/fi.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/fi.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 89a139e42..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/fi.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Kumoa";
-"Done" = "Valmis";
-
-/* Default title */
-"Photos" = "Kuvat";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ kuva valittu";
-"%@ Photos Selected" = "%@ kuvaa valittu";
-"%@ Video Selected" = "%@ video valittu";
-"%@ Videos Selected" = "%@ videota valittu";
-"%@ Items Selected" = "%@ kohdetta valittu";
-
-/* Grid view footer */
-"%@ Photos" = "%@ kuvaa";
-"%@ Videos" = "%@ videota";
-"%@ Photos, %@ Videos" = "%1$@ kuvaa, %2$@ videota";
-
-/* Assets index */
-"%@ of %@" = "%1$@ / %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Sovelluksella ei ole pääsyä kuviin tai videoihin.";
-"You can enable access in Privacy Settings." = "Voit sallia pääsyn Asetukset-valikossa.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Ei kuvia tai videoita";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Voit ottaa kuvia ja videokuvata kameralla tai synkroinoida iTunesin avulla kuvia ja videoita %@en.";
-"You can sync photos and videos onto your %@ using iTunes." = "Voit synkroinoida iTunesin avulla kuvia ja videoita %@en.";
-
-/* Accessibility labels */
-"Play" = "Toista";
-"Select" = "Valitse";
-"Deselect" = "Poista";
-
-/* Video duration spell out */
-"hours" = "tuntia";
-"hour" = "tunti";
-"minutes" = "minuuttia";
-"minute" = "minuutti";
-"seconds" = "sekuntia";
-"second" = "sekunti";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/fr.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/fr.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 72b453065..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/fr.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Annuler";
-"Done" = "Valider";
-
-/* Default title */
-"Photos" = "Photos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ photo selectionée";
-"%@ Photos Selected" = "%@ photos sélectionnées";
-"%@ Video Selected" = "%@ vidéo sélectionnée";
-"%@ Videos Selected" = "%@ vidéos sélectionnées";
-"%@ Items Selected" = "%@ éléments sélectionnés";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Photos";
-"%@ Videos" = "%@ Vidéos";
-"%@ Photos, %@ Videos" = "%1$@ Photos, %2$@ Vidéos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ sur %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Cette application n'a pas accès à vos photos et vos vidéos.";
-"You can enable access in Privacy Settings." = "Vous pouvez autoriser l'accès dans l'application Réglages > Confidentialité.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Pas de Photos ou Vidéos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Vous pouvez prendre des photos et des vidéos en utilisant l'appareil ou synchroniser vos photos et vidéos sur %@\n avec iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Vous pouvez synchroniser vos photos et vidéos sur %@ avec iTunes.";
-
-/* Accessibility labels */
-"Play" = "Lire";
-"Select" = "Sélectionner";
-"Deselect" = "Désélectionner";
-
-/* Video duration spell out */
-"hours" = "heures";
-"hour" = "heure";
-"minutes" = "minutes";
-"minute" = "minute";
-"seconds" = "secondes";
-"second" = "seconde";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Impossible de lire le flux vidéo";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/Resources/he.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/he.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 7f87a9a65..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/he.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "ביטול";
-"Done" = "סיום";
-
-/* Default title */
-"Photos" = "תמונות";
-
-/* No. of selected */
-"%@ Photo Selected" = "נבחרה תמונה %@";
-"%@ Photos Selected" = "נבחרו %@ תמונות";
-"%@ Video Selected" = "נבחר וידאו %@";
-"%@ Videos Selected" = "נבחרו %@ סרטוני וידאו";
-"%@ Items Selected" = "נבחרו %@ פריטים";
-
-/* Grid view footer */
-"%@ Photos" = "%@ תמונות";
-"%@ Videos" = "%@ סרטוני וידאו";
-"%@ Photos, %@ Videos" = "%1$@ תמונות, %2$@ סרטוני וידאו";
-
-/* Assets index */
-"%@ of %@" = "%1$@ מ-%2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "לאפליקציה הזו אין גישה לתמונות ולסרטוני הוידאו שלך.";
-"You can enable access in Privacy Settings." = "באפשרותך לאפשר גישה בהגדרות הפרטיות.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "אין תמונות או סרטוני וידאו";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "באפשרותך לצלם תמונות ולהקליט וידאו בעזרת המצלמה או לסנכרן תמונות וסרטוני וידאו עם %@\nבאמצעות ב-iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "באפשרותך לסנכרן תמונות וסרטוני וידאו עם %@ באמצעות iTunes.";
-
-/* Accessibility labels */
-"Play" = "הפעלה";
-"Select" = "בחר";
-"Deselect" = "בטלו את הבחירה";
-
-/* Video duration spell out */
-"hours" = "שעות";
-"hour" = "שעה";
-"minutes" = "דקות";
-"minute" = "דקה";
-"seconds" = "שניות";
-"second" = "שנייה";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/hi-IN.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/hi-IN.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 71cdb7706..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/hi-IN.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "रद्द करें";
-"Done" = "पूर्ण हुआ";
-
-/* Default title */
-"Photos" = "चित्र";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ चित्र चयनित";
-"%@ Photos Selected" = "%@ चित्र चयनित";
-"%@ Video Selected" = "%@ वीडियो चयनित";
-"%@ Videos Selected" = "%@ वीडियो चयनित";
-"%@ Items Selected" = "%@ आइटम चयनित";
-
-/* Grid view footer */
-"%@ Photos" = "%@ चित्र";
-"%@ Videos" = "%@ वीडियो";
-"%@ Photos, %@ Videos" = "%1$@ चित्र, %2$@ वीडियो";
-
-/* Assets index */
-"%@ of %@" = "%2$@ में से %1$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "यह ऐप आपके चित्रों या वीडियो तक नहीं पहुंच सकता।";
-"You can enable access in Privacy Settings." = "आप निजता सेटिंग्स में पहुंच सक्षम कर सकते हैं।";
-
-/* Messages if no assets */
-"No Photos or Videos" = "कोई चित्र या वीडियो नहीं";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "आप कैमरा का उपयोग करके चित्र या वीडियो ले सकते हैं, अथवा iTunes का उपयोग करके चित्र या वीडियो अपने %@ पर सिंक\nकर सकते हैं।";
-"You can sync photos and videos onto your %@ using iTunes." = "आप iTunes का उपयोग करके अपने %@ पर चित्र और वीडियो सिंक कर सकते हैं।";
-
-/* Accessibility labels */
-"Play" = "चलाएं";
-"Select" = "चुनना";
-"Deselect" = "चयन रद्द करें";
-
-/* Video duration spell out */
-"hours" = "घंटे";
-"hour" = "घंटा";
-"minutes" = "मिनट";
-"minute" = "मिनट";
-"seconds" = "सेकंड";
-"second" = "सेकंड";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/hu.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/hu.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 8a781aa15..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/hu.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Mégsem";
-"Done" = "Kész";
-
-/* Default title */
-"Photos" = "Fotók";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ fotó kiválasztva";
-"%@ Photos Selected" = "%@ fotó kiválasztva";
-"%@ Video Selected" = "%@ videó kiválasztva";
-"%@ Videos Selected" = "%@ videó kiválasztva";
-"%@ Items Selected" = "%@ elem kiválasztva";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotó";
-"%@ Videos" = "%@ Videó";
-"%@ Photos, %@ Videos" = "%1$@ Fotó, %2$@ Videó";
-
-/* Assets index */
-"%@ of %@" = "%1$@ / %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Ez az alkalmazás nem fér hozzá a fotóidhoz vagy a videóidhoz.";
-"You can enable access in Privacy Settings." = "Engedélyezheted a hozzáférést az Adatvédelmi beállításokban.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Nincsenek fotók vagy videók";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Képeket és videókat készíthetsz a készülék kamerájával, vagy szinkronizáld a fotóidat és a videóidat %@\n-ra iTunes-szal.";
-"You can sync photos and videos onto your %@ using iTunes." = "Szinkronizálhatod a fotóidat és a videóidat a %@-ra iTunes-szal.";
-
-/* Accessibility labels */
-"Play" = "Lejátszás";
-
-/* Video duration spell out */
-"hours" = "óra";
-"hour" = "óra";
-"minutes" = "perc";
-"minute" = "perc";
-"seconds" = "másodperc";
-"second" = "másodperc";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/Resources/id.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/id.lproj/CTAssetsPicker.strings
deleted file mode 100755
index ef25ed060..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/id.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Batal";
-"Done" = "Selesai";
-
-/* Default title */
-"Photos" = "Foto";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto Terpilih";
-"%@ Photos Selected" = "%@ Foto Terpilih";
-"%@ Video Selected" = "%@ Video Terpilih";
-"%@ Videos Selected" = "%@ Video Terpilih";
-"%@ Items Selected" = "%@ Item Terpilih";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Foto";
-"%@ Videos" = "%@ Video";
-"%@ Photos, %@ Videos" = "%1$@ Foto, %2$@ Video";
-
-/* Assets index */
-"%@ of %@" = "%1$@ dari %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Aplikasi ini tidak memiliki akses ke foto atau videomu.";
-"You can enable access in Privacy Settings." = "Kamu bisa mengaktifkan akses di Setelan Privasi.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Tidak ada Foto atau Video";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Kamu bisa mengambil foto dan video menggunakan kamera, atau menyinkronkan foto dan video ke %@\nmenggunakan iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Kamu bisa menyinkronkan foto dan video ke %@ menggunakan iTunes.";
-
-/* Accessibility labels */
-"Play" = "Putar";
-"Select" = "Memilih";
-"Deselect" = "Hapus";
-
-/* Video duration spell out */
-"hours" = "jam";
-"hour" = "jam";
-"minutes" = "menit";
-"minute" = "menit";
-"seconds" = "detik";
-"second" = "detik";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/it.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/it.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 4b0da704e..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/it.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Annulla";
-"Done" = "Fatto";
-
-/* Default title */
-"Photos" = "Foto";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto selezionata";
-"%@ Photos Selected" = "%@ foto selezionate";
-"%@ Video Selected" = "%@ video selezionato";
-"%@ Videos Selected" = "%@ video selezionati";
-"%@ Items Selected" = "%@ oggetto selezionato";
-
-/* Grid view footer */
-"%@ Photos" = "%@ foto";
-"%@ Videos" = "%@ video";
-"%@ Photos, %@ Videos" = "%1$@ foto, %2$@ video";
-
-/* Assets index */
-"%@ of %@" = "%1$@ di %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Questa app non ha accesso alle tue foto o ai tuoi video.";
-"You can enable access in Privacy Settings." = "Puoi attivare l'accesso nelle Impostazioni sulla privacy.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Nessuna foto o video";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Puoi scattare foto e registrare video con la fotocamera oppure sincronizzandoli sul tuo %@\ncon iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Puoi sincronizzare foto e video sul tuo %@ con iTunes.";
-
-/* Accessibility labels */
-"Play" = "Riproduci";
-"Select" = "Selezionare";
-"Deselect" = "Deseleziona";
-
-/* Video duration spell out */
-"hours" = "ore";
-"hour" = "ora";
-"minutes" = "minuti";
-"minute" = "minuto";
-"seconds" = "secondi";
-"second" = "secondo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/ja.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/ja.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 43ca2d995..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/ja.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "キャンセル";
-"Done" = "完了";
-
-/* Default title */
-"Photos" = "写真";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ 枚の写真が選択されました";
-"%@ Photos Selected" = "%@ 枚の写真が選択されました";
-"%@ Video Selected" = "%@ 件の動画が選択されました";
-"%@ Videos Selected" = "%@ 件の動画が選択されました";
-"%@ Items Selected" = "%@ 個のアイテムが選択されました";
-
-/* Grid view footer */
-"%@ Photos" = "%@ 枚の写真";
-"%@ Videos" = "%@ 件の動画";
-"%@ Photos, %@ Videos" = "%1$@ 枚の写真、%2$@ 件の動画";
-
-/* Assets index */
-"%@ of %@" = "%1$@ / %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "このアプリはあなたの写真と動画へアクセスする許可を得ていません。";
-"You can enable access in Privacy Settings." = "「プライバシー設定」からアクセスを許可できます。";
-
-/* Messages if no assets */
-"No Photos or Videos" = "写真または動画がありません";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "カメラを使用して写真または動画を撮影するか、ご利用の%@へ写真と動画を同期することができます。\n同期はiTunes を使用して行えます。";
-"You can sync photos and videos onto your %@ using iTunes." = "iTunes を使用して、ご利用の%@へ写真と動画を同期することができます。";
-
-/* Accessibility labels */
-"Play" = "再生";
-"Select" = "選択";
-"Deselect" = "選択を解除";
-
-/* Video duration spell out */
-"hours" = "時間";
-"hour" = "時間";
-"minutes" = "分";
-"minute" = "分";
-"seconds" = "秒";
-"second" = "秒";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "ストリーム動画が再生できません";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/ko.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/ko.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 10a6c1452..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/ko.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "취소";
-"Done" = "완료";
-
-/* Default title */
-"Photos" = "사진";
-
-/* No. of selected */
-"%@ Photo Selected" = "사진 %@개 선택됨";
-"%@ Photos Selected" = "사진 %@개 선택됨";
-"%@ Video Selected" = "동영상 %@개 선택됨";
-"%@ Videos Selected" = "동영상 %@개 선택됨";
-"%@ Items Selected" = "%@개의 항목 선택됨";
-
-/* Grid view footer */
-"%@ Photos" = "사진 %@개";
-"%@ Videos" = "동영상 %@개";
-"%@ Photos, %@ Videos" = "사진 %1$@개, 동영상 %2$@ 개";
-
-/* Assets index */
-"%@ of %@" = "%1$@/%2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "이 앱은 귀하의 사진이나 동영상에 접근 권한이 없습니다.";
-"You can enable access in Privacy Settings." = "개인정보 설정에서 접근을 활성화할 수 있습니다.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "사진이나 동영상 없음";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "카메라를 사용해서 사진 및 동영상을 가져오거나 iTunes를 사용하여 %@에서 사진 및 동영상을 동기화할 수\n있습니다.";
-"You can sync photos and videos onto your %@ using iTunes." = "iTunes를 사용하여 %@에서 사진 및 동영상을 동기화할 수 있습니다.";
-
-/* Accessibility labels */
-"Play" = "플레이";
-"Select" = "선택";
-"Deselect" = "선택 해제";
-
-/* Video duration spell out */
-"hours" = "시간";
-"hour" = "시간";
-"minutes" = "분";
-"minute" = "분";
-"seconds" = "초";
-"second" = "초";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/nl-NL.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/nl-NL.lproj/CTAssetsPicker.strings
deleted file mode 100755
index a0e244842..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/nl-NL.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Annuleren";
-"Done" = "Gereed";
-
-/* Default title */
-"Photos" = "Foto's";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto geselecteerd";
-"%@ Photos Selected" = "%@ foto's geselecteerd";
-"%@ Video Selected" = "%@ video geselecteerd";
-"%@ Videos Selected" = "%@ video's geselecteerd";
-"%@ Items Selected" = "%@ items geselecteerd";
-
-/* Album's footer */
-"%@ Photos" = "%@ Foto's";
-"%@ Videos" = "%@ Video's";
-"%@ Photos, %@ Videos" = "%1$@ Foto's, %2$@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ op %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Deze App heeft geen toegang tot je foto's en video's.";
-"You can enable access in Privacy Settings." = "Je kan de applicatie toegang verlenen via Instellingen > Privacy.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Geen foto's of video's";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Je kunt foto's of video's nemen met je camera, of door je foto's en video's te synchroniseren met je %@n in iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Je kunt foto's en video's synchroniseren met je %@ in iTunes";
-
-/* Accessibility labels */
-"Play" = "Lezen";
-"Select" = "Select";
-"Deselect" = "Deselecteren";
-
-/* Video duration spell out */
-"hours" = "uren";
-"hour" = "uur";
-"minutes" = "minuten";
-"minute" = "minuut";
-"seconds" = "seconden";
-"second" = "seconde";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Kan video stream niet afspelen";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/Resources/nl.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/nl.lproj/CTAssetsPicker.strings
deleted file mode 100755
index a0e244842..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/nl.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Annuleren";
-"Done" = "Gereed";
-
-/* Default title */
-"Photos" = "Foto's";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto geselecteerd";
-"%@ Photos Selected" = "%@ foto's geselecteerd";
-"%@ Video Selected" = "%@ video geselecteerd";
-"%@ Videos Selected" = "%@ video's geselecteerd";
-"%@ Items Selected" = "%@ items geselecteerd";
-
-/* Album's footer */
-"%@ Photos" = "%@ Foto's";
-"%@ Videos" = "%@ Video's";
-"%@ Photos, %@ Videos" = "%1$@ Foto's, %2$@ Videos";
-
-/* Assets index */
-"%@ of %@" = "%1$@ op %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Deze App heeft geen toegang tot je foto's en video's.";
-"You can enable access in Privacy Settings." = "Je kan de applicatie toegang verlenen via Instellingen > Privacy.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Geen foto's of video's";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Je kunt foto's of video's nemen met je camera, of door je foto's en video's te synchroniseren met je %@n in iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Je kunt foto's en video's synchroniseren met je %@ in iTunes";
-
-/* Accessibility labels */
-"Play" = "Lezen";
-"Select" = "Select";
-"Deselect" = "Deselecteren";
-
-/* Video duration spell out */
-"hours" = "uren";
-"hour" = "uur";
-"minutes" = "minuten";
-"minute" = "minuut";
-"seconds" = "seconden";
-"second" = "seconde";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Kan video stream niet afspelen";
-"OK" = "OK";
diff --git a/Libraries external/CTAssetsPickerController/Resources/pt-PT.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/pt-PT.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 3b4f1f074..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/pt-PT.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancelar";
-"Done" = "Fechar";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto selecionada";
-"%@ Photos Selected" = "%@ Fotos selecionadas";
-"%@ Video Selected" = "%@ Video selecionado";
-"%@ Videos Selected" = "%@ Videos selecionados";
-"%@ Items Selected" = "%@ Items selecionados";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotos";
-"%@ Videos" = "%@ Vídeos";
-"%@ Photos, %@ Videos" = "%@ Fotos, %@ Vídeos";
-
-/* Assets index */
-"%@ of %@" = "%@ de %@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Esta app não tem acesso às suas fotos ou vídeos.";
-"You can enable access in Privacy Settings." = "Pode dar acesso nas configurações de privacidade.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Sem fotos ou vídeos";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Você pode tirar fotos e vídeos com a sua câmera, ou sincronizar fotos e vídeos para o seu %@ usando o iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Pode sincronizar fotos e vídeos para o seu %@ usando o iTunes";
-
-/* Accessibility labels */
-"Play" = "Reproduzir";
-"Select" = "Selecionar";
-"Deselect" = "Desmarque";
-
-/* Video duration spell out */
-"hours" = "horas";
-"hour" = "hora";
-"minutes" = "minutos";
-"minute" = "minuto";
-"seconds" = "segundos";
-"second" = "segundo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/pt.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/pt.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 2d5136ff3..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/pt.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Cancelar";
-"Done" = "Concluir";
-
-/* Default title */
-"Photos" = "Fotos";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Foto selecionada";
-"%@ Photos Selected" = "%@ Fotos selecionadas";
-"%@ Video Selected" = "%@ Video selecionado";
-"%@ Videos Selected" = "%@ Videos selecionados";
-"%@ Items Selected" = "%@ Items selecionados";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotos";
-"%@ Videos" = "%@ Vídeos";
-"%@ Photos, %@ Videos" = "%@ Fotos, %@ Vídeos";
-
-/* Assets index */
-"%@ of %@" = "%@ de %@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Este aplicativo não possui acesso a suas fotos e vídeos.";
-"You can enable access in Privacy Settings." = "Você pode autorizar este acesso em Ajustes > Privacidade > Fotos.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Nenhuma Foto ou Vídeo";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Você pode tirar fotos e vídeos com a sua câmera, ou sincronizar fotos e vídeos para o seu %@ usando o iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Pode sincronizar fotos e vídeos para o seu %@ usando o iTunes.";
-
-/* Accessibility labels */
-"Play" = "Reproduzir";
-"Select" = "Selecionar";
-"Deselect" = "Desmarque";
-
-/* Video duration spell out */
-"hours" = "horas";
-"hour" = "hora";
-"minutes" = "minutos";
-"minute" = "minuto";
-"seconds" = "segundos";
-"second" = "segundo";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/ru.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/ru.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 92202d861..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/ru.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Отмена";
-"Done" = "Готово";
-
-/* Default title */
-"Photos" = "Фотографии";
-
-/* No. of selected */
-"%@ Photo Selected" = "выбрана %@ фотография";
-"%@ Photos Selected" = "выбрано %@ фотографий";
-"%@ Video Selected" = "выбрано %@ видео";
-"%@ Videos Selected" = "выбрано %@ видео";
-"%@ Items Selected" = "выбрано %@ элементов";
-
-/* Grid view footer */
-"%@ Photos" = "%@ фотографий";
-"%@ Videos" = "%@ видео";
-"%@ Photos, %@ Videos" = "%1$@ фотографий, %2$@ видео";
-
-/* Assets index */
-"%@ of %@" = "%1$@ из %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "У этого приложения нет доступа к вашим фотографиям и видео.";
-"You can enable access in Privacy Settings." = "Вы можете включить доступ приложению в Настройках конфиденциальности.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Нет фотографий и видео";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Вы можете сделать фотографии или снять видео при помощи камеры либо синхронизировать фотографии и видео со своим %@\nчерез iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Вы можете синхронизировать фотографии и видео со своим %@ при помощи iTunes.";
-
-/* Accessibility labels */
-"Play" = "Воспр.";
-"Select" = "Выбрать";
-"Deselect" = "Снимите";
-
-/* Video duration spell out */
-"hours" = "часов";
-"hour" = "час";
-"minutes" = "минут";
-"minute" = "минута";
-"seconds" = "секунд";
-"second" = "секунда";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Cannot Play Stream Video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/sv.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/sv.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 055e321af..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/sv.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Avbryt";
-"Done" = "Klar";
-
-/* Default title */
-"Photos" = "Foton";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ foto valt";
-"%@ Photos Selected" = "%@ foton valda";
-"%@ Video Selected" = "%@ video vald";
-"%@ Videos Selected" = "%@ videor valda";
-"%@ Items Selected" = "%@ artiklar valda";
-
-/* Grid view footer */
-"%@ Photos" = "%@ foton";
-"%@ Videos" = "%@ videor";
-"%@ Photos, %@ Videos" = "%1$@ foton, %2$@ videor";
-
-/* Assets index */
-"%@ of %@" = "%1$@ av %2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Denna app har inte tillgång till dina foton eller videor.";
-"You can enable access in Privacy Settings." = "Du kan aktivera tillgång i Integritetsinställningarna.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Inga foton eller videor";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Du kan ta foton och videor med kameran, eller synka foton och videor in i din %@ med hjälp av iTunes.";
-"You can sync photos and videos onto your %@ using iTunes." = "Du kan synka foton och videor in i din %@ med hjälp av iTunes.";
-
-/* Accessibility labels */
-"Play" = "Spela upp";
-"Select" = "Välj";
-"Deselect" = "Nollställ";
-
-/* Video duration spell out */
-"hours" = "timmar";
-"hour" = "timme";
-"minutes" = "minuter";
-"minute" = "minut";
-"seconds" = "sekunder";
-"second" = "sekund";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Kan inte spela upp video";
-"OK" = "OK"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/tr.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/tr.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 9459fb367..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/tr.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "Vazgeç";
-"Done" = "Bitti";
-
-/* Default title */
-"Photos" = "Fotoğraflar";
-
-/* No. of selected */
-"%@ Photo Selected" = "%@ Fotoğraf seçildi";
-"%@ Photos Selected" = "%@ Fotoğraf seçildi";
-"%@ Video Selected" = "%@ Vidyo seçildi";
-"%@ Videos Selected" = "%@ Vidyo seçildi";
-"%@ Items Selected" = "%@ Öğe seçildi";
-
-/* Grid view footer */
-"%@ Photos" = "%@ Fotoğraf";
-"%@ Videos" = "%@ Vidyo";
-"%@ Photos, %@ Videos" = "%1$@ Fotoğraf, %2$@ Vidyo";
-
-/* Assets index */
-"%@ of %@" = "%2$@ içerisinden %1$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "Bu uygulamanın fotoğraflarınıza ya da vidyolarınıza erişim hakkı bulunmuyor.";
-"You can enable access in Privacy Settings." = "Gizlilik Ayarlarından uygulamaya izin verebilirsiniz.";
-
-/* Messages if no assets */
-"No Photos or Videos" = "Hiç fotoğraf ya da vidyo bulunamadı";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Kamerayı kullanarak fotoğraf ve vidyo çekebilirsiniz ya da fotoğraf ve vidyolarınızı %@\n hesabınıza iTunes kullanarak eşleyebilirsiniz.";
-"You can sync photos and videos onto your %@ using iTunes." = "Fotoğraf ve vidyoları iTunes kullanarak %@ hesabınıza eşleyebilirsiniz.";
-
-/* Accessibility labels */
-"Play" = "Oynat";
-"Select" = "Seç";
-"Deselect" = "Seçimi bırak";
-
-/* Video duration spell out */
-"hours" = "saat";
-"hour" = "saat";
-"minutes" = "dakika";
-"minute" = "dakika";
-"seconds" = "saniye";
-"second" = "saniye";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "Vidyo oynatılamıyor";
-"OK" = "Tamam"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/zh-Hans.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/zh-Hans.lproj/CTAssetsPicker.strings
deleted file mode 100755
index 827962b5a..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/zh-Hans.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "取消";
-"Done" = "完成";
-
-/* Default title */
-"Photos" = "照片";
-
-/* No. of selected */
-"%@ Photo Selected" = "已选择%@张照片";
-"%@ Photos Selected" = "已选择%@张照片";
-"%@ Video Selected" = "已选择%@个视频";
-"%@ Videos Selected" = "已选择%@个视频";
-"%@ Items Selected" = "已选择%@项";
-
-/* Grid view footer */
-"%@ Photos" = "%@张照片";
-"%@ Videos" = "%@个视频";
-"%@ Photos, %@ Videos" = "%1$@张照片,%2$@个视频";
-
-/* Assets index */
-"%@ of %@" = "%1$@,共%2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "此应用程序对您的照片或视频没有访问权。";
-"You can enable access in Privacy Settings." = "您可以在隐私设置中启用访问权。";
-
-/* Messages if no assets */
-"No Photos or Videos" = "无照片或视频";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "您可以使用摄像头拍摄照片和视频,或使用iTunes将照片和视频同步到您的%@上。\n";
-"You can sync photos and videos onto your %@ using iTunes." = "您可以使用iTunes将照片和视频同步到您的%@上。";
-
-/* Accessibility labels */
-"Play" = "播放";
-"Select" = "选择";
-"Deselect" = "取消选择";
-
-/* Video duration spell out */
-"hours" = "小时";
-"hour" = "小时";
-"minutes" = "分钟";
-"minute" = "分钟";
-"seconds" = "秒";
-"second" = "秒";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "无法播放影片";
-"OK" = "好"; \ No newline at end of file
diff --git a/Libraries external/CTAssetsPickerController/Resources/zh-Hant.lproj/CTAssetsPicker.strings b/Libraries external/CTAssetsPickerController/Resources/zh-Hant.lproj/CTAssetsPicker.strings
deleted file mode 100755
index ab71d8436..000000000
--- a/Libraries external/CTAssetsPickerController/Resources/zh-Hant.lproj/CTAssetsPicker.strings
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Navigation bar buttons */
-"Cancel" = "取消";
-"Done" = "完成";
-
-/* Default title */
-"Photos" = "照片";
-
-/* No. of selected */
-"%@ Photo Selected" = "已選取 %@ 張照片";
-"%@ Photos Selected" = "已選取 %@ 張照片";
-"%@ Video Selected" = "已選取 %@ 部影片";
-"%@ Videos Selected" = "已選取 %@ 部影片";
-"%@ Items Selected" = "已選取 %@ 個項目";
-
-/* Grid view footer */
-"%@ Photos" = "%@ 張照片";
-"%@ Videos" = "%@ 部影片";
-"%@ Photos, %@ Videos" = "%1$@ 張照片、%2$@ 部影片";
-
-/* Assets index */
-"%@ of %@" = "%1$@/%2$@";
-
-/* Messages if privacy is not granted */
-"This app does not have access to your photos or videos." = "此 App 無法取用您的照片或影片。";
-"You can enable access in Privacy Settings." = "您可以在「隱私權設定」中啟用存取。";
-
-/* Messages if no assets */
-"No Photos or Videos" = "沒有照片或影片";
-
-/* The parameter will be replaced by the device model name */
-"You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "您可以用相機拍照錄影或用 iTunes\n將照片和影片同步到 %@。";
-"You can sync photos and videos onto your %@ using iTunes." = "您可以使用 iTunes 將照片和影片\n同步到 %@。";
-
-/* Accessibility labels */
-"Play" = "播放";
-"Select" = "選擇";
-"Deselect" = "取消選擇";
-
-/* Video duration spell out */
-"hours" = "小時";
-"hour" = "小時";
-"minutes" = "分";
-"minute" = "分";
-"seconds" = "秒";
-"second" = "秒";
-
-/* Error message of playing stream video */
-"Cannot Play Stream Video" = "無法播放影片";
-"OK" = "好"; \ No newline at end of file