Quellcode durchsuchen

Add tests for image processor

onevcat vor 9 Jahren
Ursprung
Commit
547115ec7c

+ 592 - 0
Kingfisher.xcodeproj/project.pbxproj

@@ -26,9 +26,198 @@
 		4BCCF33F1D5B02F8003387C2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4BCCF3381D5B02F8003387C2 /* Main.storyboard */; };
 		4BCCF3401D5B02F8003387C2 /* Cell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BCCF33A1D5B02F8003387C2 /* Cell.xib */; };
 		4BCCF3421D5B02F8003387C2 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BCCF33C1D5B02F8003387C2 /* ViewController.swift */; };
+		4BE3BD0A1D756A77000BFA17 /* kingfisher-b&w-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC11D756A77000BFA17 /* kingfisher-b&w-mac.jpg */; };
+		4BE3BD0B1D756A77000BFA17 /* kingfisher-b&w-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC11D756A77000BFA17 /* kingfisher-b&w-mac.jpg */; };
+		4BE3BD0C1D756A77000BFA17 /* kingfisher-b&w-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC11D756A77000BFA17 /* kingfisher-b&w-mac.jpg */; };
+		4BE3BD0D1D756A77000BFA17 /* kingfisher-b&w.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC21D756A77000BFA17 /* kingfisher-b&w.jpg */; };
+		4BE3BD0E1D756A77000BFA17 /* kingfisher-b&w.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC21D756A77000BFA17 /* kingfisher-b&w.jpg */; };
+		4BE3BD0F1D756A77000BFA17 /* kingfisher-b&w.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC21D756A77000BFA17 /* kingfisher-b&w.jpg */; };
+		4BE3BD101D756A77000BFA17 /* onevcat-b&w-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC31D756A77000BFA17 /* onevcat-b&w-mac.jpg */; };
+		4BE3BD111D756A77000BFA17 /* onevcat-b&w-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC31D756A77000BFA17 /* onevcat-b&w-mac.jpg */; };
+		4BE3BD121D756A77000BFA17 /* onevcat-b&w-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC31D756A77000BFA17 /* onevcat-b&w-mac.jpg */; };
+		4BE3BD131D756A77000BFA17 /* onevcat-b&w.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC41D756A77000BFA17 /* onevcat-b&w.jpg */; };
+		4BE3BD141D756A77000BFA17 /* onevcat-b&w.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC41D756A77000BFA17 /* onevcat-b&w.jpg */; };
+		4BE3BD151D756A77000BFA17 /* onevcat-b&w.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC41D756A77000BFA17 /* onevcat-b&w.jpg */; };
+		4BE3BD161D756A77000BFA17 /* unicorn-b&w-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC51D756A77000BFA17 /* unicorn-b&w-mac.png */; };
+		4BE3BD171D756A77000BFA17 /* unicorn-b&w-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC51D756A77000BFA17 /* unicorn-b&w-mac.png */; };
+		4BE3BD181D756A77000BFA17 /* unicorn-b&w-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC51D756A77000BFA17 /* unicorn-b&w-mac.png */; };
+		4BE3BD191D756A77000BFA17 /* unicorn-b&w.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC61D756A77000BFA17 /* unicorn-b&w.png */; };
+		4BE3BD1A1D756A77000BFA17 /* unicorn-b&w.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC61D756A77000BFA17 /* unicorn-b&w.png */; };
+		4BE3BD1B1D756A77000BFA17 /* unicorn-b&w.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC61D756A77000BFA17 /* unicorn-b&w.png */; };
+		4BE3BD1C1D756A77000BFA17 /* kingfisher-blur-10-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC81D756A77000BFA17 /* kingfisher-blur-10-mac.jpg */; };
+		4BE3BD1D1D756A77000BFA17 /* kingfisher-blur-10-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC81D756A77000BFA17 /* kingfisher-blur-10-mac.jpg */; };
+		4BE3BD1E1D756A77000BFA17 /* kingfisher-blur-10-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC81D756A77000BFA17 /* kingfisher-blur-10-mac.jpg */; };
+		4BE3BD1F1D756A77000BFA17 /* kingfisher-blur-10.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC91D756A77000BFA17 /* kingfisher-blur-10.jpg */; };
+		4BE3BD201D756A77000BFA17 /* kingfisher-blur-10.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC91D756A77000BFA17 /* kingfisher-blur-10.jpg */; };
+		4BE3BD211D756A77000BFA17 /* kingfisher-blur-10.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCC91D756A77000BFA17 /* kingfisher-blur-10.jpg */; };
+		4BE3BD221D756A77000BFA17 /* onevcat-blur-10-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCA1D756A77000BFA17 /* onevcat-blur-10-mac.jpg */; };
+		4BE3BD231D756A77000BFA17 /* onevcat-blur-10-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCA1D756A77000BFA17 /* onevcat-blur-10-mac.jpg */; };
+		4BE3BD241D756A77000BFA17 /* onevcat-blur-10-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCA1D756A77000BFA17 /* onevcat-blur-10-mac.jpg */; };
+		4BE3BD251D756A77000BFA17 /* onevcat-blur-10.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCB1D756A77000BFA17 /* onevcat-blur-10.jpg */; };
+		4BE3BD261D756A77000BFA17 /* onevcat-blur-10.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCB1D756A77000BFA17 /* onevcat-blur-10.jpg */; };
+		4BE3BD271D756A77000BFA17 /* onevcat-blur-10.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCB1D756A77000BFA17 /* onevcat-blur-10.jpg */; };
+		4BE3BD281D756A77000BFA17 /* unicorn-blur-10-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCC1D756A77000BFA17 /* unicorn-blur-10-mac.png */; };
+		4BE3BD291D756A77000BFA17 /* unicorn-blur-10-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCC1D756A77000BFA17 /* unicorn-blur-10-mac.png */; };
+		4BE3BD2A1D756A77000BFA17 /* unicorn-blur-10-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCC1D756A77000BFA17 /* unicorn-blur-10-mac.png */; };
+		4BE3BD2B1D756A77000BFA17 /* unicorn-blur-10.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCD1D756A77000BFA17 /* unicorn-blur-10.png */; };
+		4BE3BD2C1D756A77000BFA17 /* unicorn-blur-10.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCD1D756A77000BFA17 /* unicorn-blur-10.png */; };
+		4BE3BD2D1D756A77000BFA17 /* unicorn-blur-10.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCD1D756A77000BFA17 /* unicorn-blur-10.png */; };
+		4BE3BD2E1D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCF1D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg */; };
+		4BE3BD2F1D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCF1D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg */; };
+		4BE3BD301D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCCF1D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg */; };
+		4BE3BD311D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD01D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg */; };
+		4BE3BD321D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD01D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg */; };
+		4BE3BD331D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD01D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg */; };
+		4BE3BD341D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD11D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg */; };
+		4BE3BD351D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD11D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg */; };
+		4BE3BD361D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD11D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg */; };
+		4BE3BD371D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD21D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg */; };
+		4BE3BD381D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD21D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg */; };
+		4BE3BD391D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD21D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg */; };
+		4BE3BD3A1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD31D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png */; };
+		4BE3BD3B1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD31D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png */; };
+		4BE3BD3C1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD31D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png */; };
+		4BE3BD3D1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD41D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png */; };
+		4BE3BD3E1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD41D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png */; };
+		4BE3BD3F1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD41D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png */; };
+		4BE3BD401D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD61D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg */; };
+		4BE3BD411D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD61D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg */; };
+		4BE3BD421D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD61D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg */; };
+		4BE3BD431D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD71D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg */; };
+		4BE3BD441D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD71D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg */; };
+		4BE3BD451D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD71D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg */; };
+		4BE3BD461D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD81D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg */; };
+		4BE3BD471D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD81D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg */; };
+		4BE3BD481D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD81D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg */; };
+		4BE3BD491D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD91D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg */; };
+		4BE3BD4A1D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD91D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg */; };
+		4BE3BD4B1D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCD91D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg */; };
+		4BE3BD4C1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCDA1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png */; };
+		4BE3BD4D1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCDA1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png */; };
+		4BE3BD4E1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCDA1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png */; };
+		4BE3BD4F1D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCDB1D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png */; };
+		4BE3BD501D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCDB1D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png */; };
+		4BE3BD511D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCDB1D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png */; };
+		4BE3BD761D756A77000BFA17 /* kingfisher-resize-120-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEA1D756A77000BFA17 /* kingfisher-resize-120-mac.jpg */; };
+		4BE3BD771D756A77000BFA17 /* kingfisher-resize-120-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEA1D756A77000BFA17 /* kingfisher-resize-120-mac.jpg */; };
+		4BE3BD781D756A77000BFA17 /* kingfisher-resize-120-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEA1D756A77000BFA17 /* kingfisher-resize-120-mac.jpg */; };
+		4BE3BD791D756A77000BFA17 /* kingfisher-resize-120.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEB1D756A77000BFA17 /* kingfisher-resize-120.jpg */; };
+		4BE3BD7A1D756A77000BFA17 /* kingfisher-resize-120.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEB1D756A77000BFA17 /* kingfisher-resize-120.jpg */; };
+		4BE3BD7B1D756A77000BFA17 /* kingfisher-resize-120.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEB1D756A77000BFA17 /* kingfisher-resize-120.jpg */; };
+		4BE3BD821D756A77000BFA17 /* onevcat-resize-120-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEE1D756A77000BFA17 /* onevcat-resize-120-mac.jpg */; };
+		4BE3BD831D756A77000BFA17 /* onevcat-resize-120-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEE1D756A77000BFA17 /* onevcat-resize-120-mac.jpg */; };
+		4BE3BD841D756A77000BFA17 /* onevcat-resize-120-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEE1D756A77000BFA17 /* onevcat-resize-120-mac.jpg */; };
+		4BE3BD851D756A77000BFA17 /* onevcat-resize-120.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEF1D756A77000BFA17 /* onevcat-resize-120.jpg */; };
+		4BE3BD861D756A77000BFA17 /* onevcat-resize-120.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEF1D756A77000BFA17 /* onevcat-resize-120.jpg */; };
+		4BE3BD871D756A77000BFA17 /* onevcat-resize-120.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCEF1D756A77000BFA17 /* onevcat-resize-120.jpg */; };
+		4BE3BD8E1D756A77000BFA17 /* unicorn-resize-120-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF21D756A77000BFA17 /* unicorn-resize-120-mac.png */; };
+		4BE3BD8F1D756A77000BFA17 /* unicorn-resize-120-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF21D756A77000BFA17 /* unicorn-resize-120-mac.png */; };
+		4BE3BD901D756A77000BFA17 /* unicorn-resize-120-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF21D756A77000BFA17 /* unicorn-resize-120-mac.png */; };
+		4BE3BD911D756A77000BFA17 /* unicorn-resize-120.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF31D756A77000BFA17 /* unicorn-resize-120.png */; };
+		4BE3BD921D756A77000BFA17 /* unicorn-resize-120.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF31D756A77000BFA17 /* unicorn-resize-120.png */; };
+		4BE3BD931D756A77000BFA17 /* unicorn-resize-120.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF31D756A77000BFA17 /* unicorn-resize-120.png */; };
+		4BE3BD9A1D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF71D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg */; };
+		4BE3BD9B1D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF71D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg */; };
+		4BE3BD9C1D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF71D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg */; };
+		4BE3BD9D1D756A77000BFA17 /* kingfisher-round-corner-40.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF81D756A77000BFA17 /* kingfisher-round-corner-40.jpg */; };
+		4BE3BD9E1D756A77000BFA17 /* kingfisher-round-corner-40.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF81D756A77000BFA17 /* kingfisher-round-corner-40.jpg */; };
+		4BE3BD9F1D756A77000BFA17 /* kingfisher-round-corner-40.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF81D756A77000BFA17 /* kingfisher-round-corner-40.jpg */; };
+		4BE3BDA01D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF91D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg */; };
+		4BE3BDA11D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF91D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg */; };
+		4BE3BDA21D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCF91D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg */; };
+		4BE3BDA31D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFA1D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg */; };
+		4BE3BDA41D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFA1D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg */; };
+		4BE3BDA51D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFA1D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg */; };
+		4BE3BDA61D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFB1D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg */; };
+		4BE3BDA71D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFB1D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg */; };
+		4BE3BDA81D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFB1D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg */; };
+		4BE3BDA91D756A77000BFA17 /* onevcat-round-corner-40.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFC1D756A77000BFA17 /* onevcat-round-corner-40.jpg */; };
+		4BE3BDAA1D756A77000BFA17 /* onevcat-round-corner-40.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFC1D756A77000BFA17 /* onevcat-round-corner-40.jpg */; };
+		4BE3BDAB1D756A77000BFA17 /* onevcat-round-corner-40.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFC1D756A77000BFA17 /* onevcat-round-corner-40.jpg */; };
+		4BE3BDAC1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFD1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg */; };
+		4BE3BDAD1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFD1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg */; };
+		4BE3BDAE1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFD1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg */; };
+		4BE3BDAF1D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFE1D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg */; };
+		4BE3BDB01D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFE1D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg */; };
+		4BE3BDB11D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFE1D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg */; };
+		4BE3BDB21D756A77000BFA17 /* unicorn-round-corner-40-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFF1D756A77000BFA17 /* unicorn-round-corner-40-mac.png */; };
+		4BE3BDB31D756A77000BFA17 /* unicorn-round-corner-40-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFF1D756A77000BFA17 /* unicorn-round-corner-40-mac.png */; };
+		4BE3BDB41D756A77000BFA17 /* unicorn-round-corner-40-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BCFF1D756A77000BFA17 /* unicorn-round-corner-40-mac.png */; };
+		4BE3BDB51D756A77000BFA17 /* unicorn-round-corner-40.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD001D756A77000BFA17 /* unicorn-round-corner-40.png */; };
+		4BE3BDB61D756A77000BFA17 /* unicorn-round-corner-40.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD001D756A77000BFA17 /* unicorn-round-corner-40.png */; };
+		4BE3BDB71D756A77000BFA17 /* unicorn-round-corner-40.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD001D756A77000BFA17 /* unicorn-round-corner-40.png */; };
+		4BE3BDB81D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD011D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png */; };
+		4BE3BDB91D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD011D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png */; };
+		4BE3BDBA1D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD011D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png */; };
+		4BE3BDBB1D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD021D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png */; };
+		4BE3BDBC1D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD021D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png */; };
+		4BE3BDBD1D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD021D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png */; };
+		4BE3BDBE1D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD041D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg */; };
+		4BE3BDBF1D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD041D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg */; };
+		4BE3BDC01D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD041D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg */; };
+		4BE3BDC11D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD051D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg */; };
+		4BE3BDC21D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD051D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg */; };
+		4BE3BDC31D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD051D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg */; };
+		4BE3BDC41D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD061D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg */; };
+		4BE3BDC51D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD061D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg */; };
+		4BE3BDC61D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD061D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg */; };
+		4BE3BDC71D756A77000BFA17 /* onevcat-tint-yellow-02.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD071D756A77000BFA17 /* onevcat-tint-yellow-02.jpg */; };
+		4BE3BDC81D756A77000BFA17 /* onevcat-tint-yellow-02.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD071D756A77000BFA17 /* onevcat-tint-yellow-02.jpg */; };
+		4BE3BDC91D756A77000BFA17 /* onevcat-tint-yellow-02.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD071D756A77000BFA17 /* onevcat-tint-yellow-02.jpg */; };
+		4BE3BDCA1D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD081D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png */; };
+		4BE3BDCB1D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD081D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png */; };
+		4BE3BDCC1D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD081D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png */; };
+		4BE3BDCD1D756A77000BFA17 /* unicorn-tint-yellow-02.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD091D756A77000BFA17 /* unicorn-tint-yellow-02.png */; };
+		4BE3BDCE1D756A77000BFA17 /* unicorn-tint-yellow-02.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD091D756A77000BFA17 /* unicorn-tint-yellow-02.png */; };
+		4BE3BDCF1D756A77000BFA17 /* unicorn-tint-yellow-02.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BD091D756A77000BFA17 /* unicorn-tint-yellow-02.png */; };
+		4BE3BDE81D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDC1D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg */; };
+		4BE3BDE91D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDC1D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg */; };
+		4BE3BDEA1D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDC1D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg */; };
+		4BE3BDEB1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDD1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg */; };
+		4BE3BDEC1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDD1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg */; };
+		4BE3BDED1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDD1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg */; };
+		4BE3BDEE1D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDE1D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg */; };
+		4BE3BDEF1D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDE1D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg */; };
+		4BE3BDF01D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDE1D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg */; };
+		4BE3BDF11D757B84000BFA17 /* kingfisher-overlay-red.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDF1D757B84000BFA17 /* kingfisher-overlay-red.jpg */; };
+		4BE3BDF21D757B84000BFA17 /* kingfisher-overlay-red.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDF1D757B84000BFA17 /* kingfisher-overlay-red.jpg */; };
+		4BE3BDF31D757B84000BFA17 /* kingfisher-overlay-red.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDDF1D757B84000BFA17 /* kingfisher-overlay-red.jpg */; };
+		4BE3BDF41D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE01D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg */; };
+		4BE3BDF51D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE01D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg */; };
+		4BE3BDF61D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE01D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg */; };
+		4BE3BDF71D757B84000BFA17 /* onevcat-overlay-red-07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE11D757B84000BFA17 /* onevcat-overlay-red-07.jpg */; };
+		4BE3BDF81D757B84000BFA17 /* onevcat-overlay-red-07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE11D757B84000BFA17 /* onevcat-overlay-red-07.jpg */; };
+		4BE3BDF91D757B84000BFA17 /* onevcat-overlay-red-07.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE11D757B84000BFA17 /* onevcat-overlay-red-07.jpg */; };
+		4BE3BDFA1D757B84000BFA17 /* onevcat-overlay-red-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE21D757B84000BFA17 /* onevcat-overlay-red-mac.jpg */; };
+		4BE3BDFB1D757B84000BFA17 /* onevcat-overlay-red-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE21D757B84000BFA17 /* onevcat-overlay-red-mac.jpg */; };
+		4BE3BDFC1D757B84000BFA17 /* onevcat-overlay-red-mac.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE21D757B84000BFA17 /* onevcat-overlay-red-mac.jpg */; };
+		4BE3BDFD1D757B84000BFA17 /* onevcat-overlay-red.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE31D757B84000BFA17 /* onevcat-overlay-red.jpg */; };
+		4BE3BDFE1D757B84000BFA17 /* onevcat-overlay-red.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE31D757B84000BFA17 /* onevcat-overlay-red.jpg */; };
+		4BE3BDFF1D757B84000BFA17 /* onevcat-overlay-red.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE31D757B84000BFA17 /* onevcat-overlay-red.jpg */; };
+		4BE3BE001D757B84000BFA17 /* unicorn-overlay-red-07-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE41D757B84000BFA17 /* unicorn-overlay-red-07-mac.png */; };
+		4BE3BE011D757B84000BFA17 /* unicorn-overlay-red-07-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE41D757B84000BFA17 /* unicorn-overlay-red-07-mac.png */; };
+		4BE3BE021D757B84000BFA17 /* unicorn-overlay-red-07-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE41D757B84000BFA17 /* unicorn-overlay-red-07-mac.png */; };
+		4BE3BE031D757B84000BFA17 /* unicorn-overlay-red-07.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE51D757B84000BFA17 /* unicorn-overlay-red-07.png */; };
+		4BE3BE041D757B84000BFA17 /* unicorn-overlay-red-07.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE51D757B84000BFA17 /* unicorn-overlay-red-07.png */; };
+		4BE3BE051D757B84000BFA17 /* unicorn-overlay-red-07.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE51D757B84000BFA17 /* unicorn-overlay-red-07.png */; };
+		4BE3BE061D757B84000BFA17 /* unicorn-overlay-red-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE61D757B84000BFA17 /* unicorn-overlay-red-mac.png */; };
+		4BE3BE071D757B84000BFA17 /* unicorn-overlay-red-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE61D757B84000BFA17 /* unicorn-overlay-red-mac.png */; };
+		4BE3BE081D757B84000BFA17 /* unicorn-overlay-red-mac.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE61D757B84000BFA17 /* unicorn-overlay-red-mac.png */; };
+		4BE3BE091D757B84000BFA17 /* unicorn-overlay-red.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE71D757B84000BFA17 /* unicorn-overlay-red.png */; };
+		4BE3BE0A1D757B84000BFA17 /* unicorn-overlay-red.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE71D757B84000BFA17 /* unicorn-overlay-red.png */; };
+		4BE3BE0B1D757B84000BFA17 /* unicorn-overlay-red.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BE3BDE71D757B84000BFA17 /* unicorn-overlay-red.png */; };
 		4BF806D71D752D4900C8DB13 /* ImageProcessorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BF806D61D752D4900C8DB13 /* ImageProcessorTests.swift */; };
 		4BF806D81D752D4900C8DB13 /* ImageProcessorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BF806D61D752D4900C8DB13 /* ImageProcessorTests.swift */; };
 		4BF806D91D752D4900C8DB13 /* ImageProcessorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BF806D61D752D4900C8DB13 /* ImageProcessorTests.swift */; };
+		4BF806E01D75411B00C8DB13 /* kingfisher.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BF806DD1D75411B00C8DB13 /* kingfisher.jpg */; };
+		4BF806E11D75411B00C8DB13 /* kingfisher.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BF806DD1D75411B00C8DB13 /* kingfisher.jpg */; };
+		4BF806E21D75411B00C8DB13 /* kingfisher.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BF806DD1D75411B00C8DB13 /* kingfisher.jpg */; };
+		4BF806E31D75411B00C8DB13 /* onevcat.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BF806DE1D75411B00C8DB13 /* onevcat.jpg */; };
+		4BF806E41D75411B00C8DB13 /* onevcat.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BF806DE1D75411B00C8DB13 /* onevcat.jpg */; };
+		4BF806E51D75411B00C8DB13 /* onevcat.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 4BF806DE1D75411B00C8DB13 /* onevcat.jpg */; };
+		4BF806E61D75411B00C8DB13 /* unicorn.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BF806DF1D75411B00C8DB13 /* unicorn.png */; };
+		4BF806E71D75411B00C8DB13 /* unicorn.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BF806DF1D75411B00C8DB13 /* unicorn.png */; };
+		4BF806E81D75411B00C8DB13 /* unicorn.png in Resources */ = {isa = PBXBuildFile; fileRef = 4BF806DF1D75411B00C8DB13 /* unicorn.png */; };
 		B8BBB7092D89EAC97D6ED888 /* libPods-KingfisherTests-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0268A213AE27BC6133BC5E0F /* libPods-KingfisherTests-macOS.a */; };
 		D10945F71C526B86001408EB /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = D10945EA1C526B6C001408EB /* Image.swift */; };
 		D10945F81C526B86001408EB /* ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = D10945EB1C526B6C001408EB /* ImageCache.swift */; };
@@ -282,7 +471,70 @@
 		4BCCF33B1D5B02F8003387C2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		4BCCF33C1D5B02F8003387C2 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
 		4BCCF3441D5B0457003387C2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		4BE3BCC11D756A77000BFA17 /* kingfisher-b&w-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-b&w-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCC21D756A77000BFA17 /* kingfisher-b&w.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-b&w.jpg"; sourceTree = "<group>"; };
+		4BE3BCC31D756A77000BFA17 /* onevcat-b&w-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-b&w-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCC41D756A77000BFA17 /* onevcat-b&w.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-b&w.jpg"; sourceTree = "<group>"; };
+		4BE3BCC51D756A77000BFA17 /* unicorn-b&w-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-b&w-mac.png"; sourceTree = "<group>"; };
+		4BE3BCC61D756A77000BFA17 /* unicorn-b&w.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-b&w.png"; sourceTree = "<group>"; };
+		4BE3BCC81D756A77000BFA17 /* kingfisher-blur-10-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-blur-10-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCC91D756A77000BFA17 /* kingfisher-blur-10.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-blur-10.jpg"; sourceTree = "<group>"; };
+		4BE3BCCA1D756A77000BFA17 /* onevcat-blur-10-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-blur-10-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCCB1D756A77000BFA17 /* onevcat-blur-10.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-blur-10.jpg"; sourceTree = "<group>"; };
+		4BE3BCCC1D756A77000BFA17 /* unicorn-blur-10-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-blur-10-mac.png"; sourceTree = "<group>"; };
+		4BE3BCCD1D756A77000BFA17 /* unicorn-blur-10.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-blur-10.png"; sourceTree = "<group>"; };
+		4BE3BCCF1D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-color-control-b00-c11-s12-ev07-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCD01D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-color-control-b00-c11-s12-ev07.jpg"; sourceTree = "<group>"; };
+		4BE3BCD11D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-color-control-b00-c11-s12-ev07-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCD21D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-color-control-b00-c11-s12-ev07.jpg"; sourceTree = "<group>"; };
+		4BE3BCD31D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-color-control-b00-c11-s12-ev07-mac.png"; sourceTree = "<group>"; };
+		4BE3BCD41D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-color-control-b00-c11-s12-ev07.png"; sourceTree = "<group>"; };
+		4BE3BCD61D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-blur-4-round-corner-60-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCD71D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-blur-4-round-corner-60.jpg"; sourceTree = "<group>"; };
+		4BE3BCD81D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-blur-4-round-corner-60-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCD91D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-blur-4-round-corner-60.jpg"; sourceTree = "<group>"; };
+		4BE3BCDA1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-blur-4-round-corner-60-mac.png"; sourceTree = "<group>"; };
+		4BE3BCDB1D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-blur-4-round-corner-60.png"; sourceTree = "<group>"; };
+		4BE3BCEA1D756A77000BFA17 /* kingfisher-resize-120-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-resize-120-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCEB1D756A77000BFA17 /* kingfisher-resize-120.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-resize-120.jpg"; sourceTree = "<group>"; };
+		4BE3BCEE1D756A77000BFA17 /* onevcat-resize-120-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-resize-120-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCEF1D756A77000BFA17 /* onevcat-resize-120.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-resize-120.jpg"; sourceTree = "<group>"; };
+		4BE3BCF21D756A77000BFA17 /* unicorn-resize-120-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-resize-120-mac.png"; sourceTree = "<group>"; };
+		4BE3BCF31D756A77000BFA17 /* unicorn-resize-120.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-resize-120.png"; sourceTree = "<group>"; };
+		4BE3BCF71D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-round-corner-40-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCF81D756A77000BFA17 /* kingfisher-round-corner-40.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-round-corner-40.jpg"; sourceTree = "<group>"; };
+		4BE3BCF91D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-round-corner-60-resize-100-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCFA1D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-round-corner-60-resize-100.jpg"; sourceTree = "<group>"; };
+		4BE3BCFB1D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-round-corner-40-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCFC1D756A77000BFA17 /* onevcat-round-corner-40.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-round-corner-40.jpg"; sourceTree = "<group>"; };
+		4BE3BCFD1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-round-corner-60-resize-100-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BCFE1D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-round-corner-60-resize-100.jpg"; sourceTree = "<group>"; };
+		4BE3BCFF1D756A77000BFA17 /* unicorn-round-corner-40-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-round-corner-40-mac.png"; sourceTree = "<group>"; };
+		4BE3BD001D756A77000BFA17 /* unicorn-round-corner-40.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-round-corner-40.png"; sourceTree = "<group>"; };
+		4BE3BD011D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-round-corner-60-resize-100-mac.png"; sourceTree = "<group>"; };
+		4BE3BD021D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-round-corner-60-resize-100.png"; sourceTree = "<group>"; };
+		4BE3BD041D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-tint-yellow-02-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BD051D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-tint-yellow-02.jpg"; sourceTree = "<group>"; };
+		4BE3BD061D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-tint-yellow-02-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BD071D756A77000BFA17 /* onevcat-tint-yellow-02.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-tint-yellow-02.jpg"; sourceTree = "<group>"; };
+		4BE3BD081D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-tint-yellow-02-mac.png"; sourceTree = "<group>"; };
+		4BE3BD091D756A77000BFA17 /* unicorn-tint-yellow-02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-tint-yellow-02.png"; sourceTree = "<group>"; };
+		4BE3BDDC1D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-overlay-red-07-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BDDD1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-overlay-red-07.jpg"; sourceTree = "<group>"; };
+		4BE3BDDE1D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-overlay-red-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BDDF1D757B84000BFA17 /* kingfisher-overlay-red.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "kingfisher-overlay-red.jpg"; sourceTree = "<group>"; };
+		4BE3BDE01D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-overlay-red-07-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BDE11D757B84000BFA17 /* onevcat-overlay-red-07.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-overlay-red-07.jpg"; sourceTree = "<group>"; };
+		4BE3BDE21D757B84000BFA17 /* onevcat-overlay-red-mac.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-overlay-red-mac.jpg"; sourceTree = "<group>"; };
+		4BE3BDE31D757B84000BFA17 /* onevcat-overlay-red.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "onevcat-overlay-red.jpg"; sourceTree = "<group>"; };
+		4BE3BDE41D757B84000BFA17 /* unicorn-overlay-red-07-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-overlay-red-07-mac.png"; sourceTree = "<group>"; };
+		4BE3BDE51D757B84000BFA17 /* unicorn-overlay-red-07.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-overlay-red-07.png"; sourceTree = "<group>"; };
+		4BE3BDE61D757B84000BFA17 /* unicorn-overlay-red-mac.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-overlay-red-mac.png"; sourceTree = "<group>"; };
+		4BE3BDE71D757B84000BFA17 /* unicorn-overlay-red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unicorn-overlay-red.png"; sourceTree = "<group>"; };
 		4BF806D61D752D4900C8DB13 /* ImageProcessorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageProcessorTests.swift; sourceTree = "<group>"; };
+		4BF806DD1D75411B00C8DB13 /* kingfisher.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = kingfisher.jpg; sourceTree = "<group>"; };
+		4BF806DE1D75411B00C8DB13 /* onevcat.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = onevcat.jpg; sourceTree = "<group>"; };
+		4BF806DF1D75411B00C8DB13 /* unicorn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = unicorn.png; sourceTree = "<group>"; };
 		6CD5C0134AA4B1C0892E7319 /* Pods-KingfisherTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KingfisherTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-KingfisherTests/Pods-KingfisherTests.release.xcconfig"; sourceTree = "<group>"; };
 		7204D40BEFEA059FA25864C4 /* Pods-KingfisherTests-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KingfisherTests-macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-KingfisherTests-macOS/Pods-KingfisherTests-macOS.debug.xcconfig"; sourceTree = "<group>"; };
 		9D0E767B01589AA8BE21FFA6 /* libPods-KingfisherTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-KingfisherTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -470,6 +722,156 @@
 			path = "Tests/KingfisherTests-macOS";
 			sourceTree = "<group>";
 		};
+		4BE3BCBF1D756A77000BFA17 /* Modified */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BCC01D756A77000BFA17 /* B&W */,
+				4BE3BCC71D756A77000BFA17 /* Blur */,
+				4BE3BCCE1D756A77000BFA17 /* ColorControl */,
+				4BE3BCD51D756A77000BFA17 /* Composition */,
+				4BE3BCDC1D756A77000BFA17 /* Overlay */,
+				4BE3BCE91D756A77000BFA17 /* Resize */,
+				4BE3BCF61D756A77000BFA17 /* RoundCorner */,
+				4BE3BD031D756A77000BFA17 /* Tint */,
+			);
+			path = Modified;
+			sourceTree = "<group>";
+		};
+		4BE3BCC01D756A77000BFA17 /* B&W */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BCC11D756A77000BFA17 /* kingfisher-b&w-mac.jpg */,
+				4BE3BCC21D756A77000BFA17 /* kingfisher-b&w.jpg */,
+				4BE3BCC31D756A77000BFA17 /* onevcat-b&w-mac.jpg */,
+				4BE3BCC41D756A77000BFA17 /* onevcat-b&w.jpg */,
+				4BE3BCC51D756A77000BFA17 /* unicorn-b&w-mac.png */,
+				4BE3BCC61D756A77000BFA17 /* unicorn-b&w.png */,
+			);
+			path = "B&W";
+			sourceTree = "<group>";
+		};
+		4BE3BCC71D756A77000BFA17 /* Blur */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BCC81D756A77000BFA17 /* kingfisher-blur-10-mac.jpg */,
+				4BE3BCC91D756A77000BFA17 /* kingfisher-blur-10.jpg */,
+				4BE3BCCA1D756A77000BFA17 /* onevcat-blur-10-mac.jpg */,
+				4BE3BCCB1D756A77000BFA17 /* onevcat-blur-10.jpg */,
+				4BE3BCCC1D756A77000BFA17 /* unicorn-blur-10-mac.png */,
+				4BE3BCCD1D756A77000BFA17 /* unicorn-blur-10.png */,
+			);
+			path = Blur;
+			sourceTree = "<group>";
+		};
+		4BE3BCCE1D756A77000BFA17 /* ColorControl */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BCCF1D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg */,
+				4BE3BCD01D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg */,
+				4BE3BCD11D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg */,
+				4BE3BCD21D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg */,
+				4BE3BCD31D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png */,
+				4BE3BCD41D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png */,
+			);
+			path = ColorControl;
+			sourceTree = "<group>";
+		};
+		4BE3BCD51D756A77000BFA17 /* Composition */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BCD61D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg */,
+				4BE3BCD71D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg */,
+				4BE3BCD81D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg */,
+				4BE3BCD91D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg */,
+				4BE3BCDA1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png */,
+				4BE3BCDB1D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png */,
+			);
+			path = Composition;
+			sourceTree = "<group>";
+		};
+		4BE3BCDC1D756A77000BFA17 /* Overlay */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BDDC1D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg */,
+				4BE3BDDD1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg */,
+				4BE3BDDE1D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg */,
+				4BE3BDDF1D757B84000BFA17 /* kingfisher-overlay-red.jpg */,
+				4BE3BDE01D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg */,
+				4BE3BDE11D757B84000BFA17 /* onevcat-overlay-red-07.jpg */,
+				4BE3BDE21D757B84000BFA17 /* onevcat-overlay-red-mac.jpg */,
+				4BE3BDE31D757B84000BFA17 /* onevcat-overlay-red.jpg */,
+				4BE3BDE41D757B84000BFA17 /* unicorn-overlay-red-07-mac.png */,
+				4BE3BDE51D757B84000BFA17 /* unicorn-overlay-red-07.png */,
+				4BE3BDE61D757B84000BFA17 /* unicorn-overlay-red-mac.png */,
+				4BE3BDE71D757B84000BFA17 /* unicorn-overlay-red.png */,
+			);
+			path = Overlay;
+			sourceTree = "<group>";
+		};
+		4BE3BCE91D756A77000BFA17 /* Resize */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BCEA1D756A77000BFA17 /* kingfisher-resize-120-mac.jpg */,
+				4BE3BCEB1D756A77000BFA17 /* kingfisher-resize-120.jpg */,
+				4BE3BCEE1D756A77000BFA17 /* onevcat-resize-120-mac.jpg */,
+				4BE3BCEF1D756A77000BFA17 /* onevcat-resize-120.jpg */,
+				4BE3BCF21D756A77000BFA17 /* unicorn-resize-120-mac.png */,
+				4BE3BCF31D756A77000BFA17 /* unicorn-resize-120.png */,
+			);
+			path = Resize;
+			sourceTree = "<group>";
+		};
+		4BE3BCF61D756A77000BFA17 /* RoundCorner */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BCF71D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg */,
+				4BE3BCF81D756A77000BFA17 /* kingfisher-round-corner-40.jpg */,
+				4BE3BCF91D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg */,
+				4BE3BCFA1D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg */,
+				4BE3BCFB1D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg */,
+				4BE3BCFC1D756A77000BFA17 /* onevcat-round-corner-40.jpg */,
+				4BE3BCFD1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg */,
+				4BE3BCFE1D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg */,
+				4BE3BCFF1D756A77000BFA17 /* unicorn-round-corner-40-mac.png */,
+				4BE3BD001D756A77000BFA17 /* unicorn-round-corner-40.png */,
+				4BE3BD011D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png */,
+				4BE3BD021D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png */,
+			);
+			path = RoundCorner;
+			sourceTree = "<group>";
+		};
+		4BE3BD031D756A77000BFA17 /* Tint */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BD041D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg */,
+				4BE3BD051D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg */,
+				4BE3BD061D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg */,
+				4BE3BD071D756A77000BFA17 /* onevcat-tint-yellow-02.jpg */,
+				4BE3BD081D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png */,
+				4BE3BD091D756A77000BFA17 /* unicorn-tint-yellow-02.png */,
+			);
+			path = Tint;
+			sourceTree = "<group>";
+		};
+		4BF806DA1D75411B00C8DB13 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				4BE3BCBF1D756A77000BFA17 /* Modified */,
+				4BF806DC1D75411B00C8DB13 /* Original */,
+			);
+			path = Resources;
+			sourceTree = "<group>";
+		};
+		4BF806DC1D75411B00C8DB13 /* Original */ = {
+			isa = PBXGroup;
+			children = (
+				4BF806DD1D75411B00C8DB13 /* kingfisher.jpg */,
+				4BF806DE1D75411B00C8DB13 /* onevcat.jpg */,
+				4BF806DF1D75411B00C8DB13 /* unicorn.png */,
+			);
+			path = Original;
+			sourceTree = "<group>";
+		};
 		7C9E3F3AA655241E5FF95378 /* Pods */ = {
 			isa = PBXGroup;
 			children = (
@@ -532,6 +934,7 @@
 		D12E0C431C47F23500AC98AD /* KingfisherTests */ = {
 			isa = PBXGroup;
 			children = (
+				4BF806DA1D75411B00C8DB13 /* Resources */,
 				D12E0C491C47F23500AC98AD /* Info.plist */,
 				D12E0C441C47F23500AC98AD /* dancing-banana.gif */,
 				D1D2C3291C70A3230018F2F9 /* single-frame.gif */,
@@ -1035,8 +1438,71 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				4BE3BD441D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg in Resources */,
+				4BE3BE071D757B84000BFA17 /* unicorn-overlay-red-mac.png in Resources */,
+				4BE3BD861D756A77000BFA17 /* onevcat-resize-120.jpg in Resources */,
+				4BE3BDBC1D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png in Resources */,
+				4BE3BD321D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg in Resources */,
+				4BE3BDEF1D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg in Resources */,
+				4BE3BE041D757B84000BFA17 /* unicorn-overlay-red-07.png in Resources */,
+				4BE3BDB61D756A77000BFA17 /* unicorn-round-corner-40.png in Resources */,
+				4BE3BD411D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg in Resources */,
+				4BE3BDC81D756A77000BFA17 /* onevcat-tint-yellow-02.jpg in Resources */,
+				4BF806E11D75411B00C8DB13 /* kingfisher.jpg in Resources */,
+				4BE3BD141D756A77000BFA17 /* onevcat-b&w.jpg in Resources */,
+				4BE3BDAD1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg in Resources */,
 				D1D2C32B1C70A3230018F2F9 /* single-frame.gif in Resources */,
+				4BE3BD501D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png in Resources */,
+				4BE3BD471D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg in Resources */,
+				4BE3BD4A1D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg in Resources */,
+				4BE3BD2F1D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg in Resources */,
+				4BE3BDB31D756A77000BFA17 /* unicorn-round-corner-40-mac.png in Resources */,
+				4BE3BDAA1D756A77000BFA17 /* onevcat-round-corner-40.jpg in Resources */,
+				4BE3BDB91D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png in Resources */,
+				4BE3BD9E1D756A77000BFA17 /* kingfisher-round-corner-40.jpg in Resources */,
+				4BF806E41D75411B00C8DB13 /* onevcat.jpg in Resources */,
+				4BE3BDA41D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg in Resources */,
+				4BE3BD171D756A77000BFA17 /* unicorn-b&w-mac.png in Resources */,
+				4BF806E71D75411B00C8DB13 /* unicorn.png in Resources */,
+				4BE3BD8F1D756A77000BFA17 /* unicorn-resize-120-mac.png in Resources */,
+				4BE3BDA11D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg in Resources */,
+				4BE3BDF51D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg in Resources */,
+				4BE3BD3E1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png in Resources */,
+				4BE3BD291D756A77000BFA17 /* unicorn-blur-10-mac.png in Resources */,
+				4BE3BDC21D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg in Resources */,
+				4BE3BD831D756A77000BFA17 /* onevcat-resize-120-mac.jpg in Resources */,
+				4BE3BD1A1D756A77000BFA17 /* unicorn-b&w.png in Resources */,
+				4BE3BDB01D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg in Resources */,
+				4BE3BD771D756A77000BFA17 /* kingfisher-resize-120-mac.jpg in Resources */,
+				4BE3BD201D756A77000BFA17 /* kingfisher-blur-10.jpg in Resources */,
+				4BE3BD921D756A77000BFA17 /* unicorn-resize-120.png in Resources */,
+				4BE3BD111D756A77000BFA17 /* onevcat-b&w-mac.jpg in Resources */,
+				4BE3BDEC1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg in Resources */,
+				4BE3BD351D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg in Resources */,
+				4BE3BE0A1D757B84000BFA17 /* unicorn-overlay-red.png in Resources */,
+				4BE3BDBF1D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg in Resources */,
+				4BE3BD4D1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png in Resources */,
 				D12E0C751C47F70600AC98AD /* dancing-banana.gif in Resources */,
+				4BE3BDC51D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg in Resources */,
+				4BE3BD7A1D756A77000BFA17 /* kingfisher-resize-120.jpg in Resources */,
+				4BE3BD3B1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png in Resources */,
+				4BE3BDFE1D757B84000BFA17 /* onevcat-overlay-red.jpg in Resources */,
+				4BE3BE011D757B84000BFA17 /* unicorn-overlay-red-07-mac.png in Resources */,
+				4BE3BD1D1D756A77000BFA17 /* kingfisher-blur-10-mac.jpg in Resources */,
+				4BE3BDCE1D756A77000BFA17 /* unicorn-tint-yellow-02.png in Resources */,
+				4BE3BDFB1D757B84000BFA17 /* onevcat-overlay-red-mac.jpg in Resources */,
+				4BE3BD0E1D756A77000BFA17 /* kingfisher-b&w.jpg in Resources */,
+				4BE3BDE91D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg in Resources */,
+				4BE3BD261D756A77000BFA17 /* onevcat-blur-10.jpg in Resources */,
+				4BE3BDA71D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg in Resources */,
+				4BE3BDCB1D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png in Resources */,
+				4BE3BD231D756A77000BFA17 /* onevcat-blur-10-mac.jpg in Resources */,
+				4BE3BD381D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg in Resources */,
+				4BE3BDF81D757B84000BFA17 /* onevcat-overlay-red-07.jpg in Resources */,
+				4BE3BD9B1D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg in Resources */,
+				4BE3BD2C1D756A77000BFA17 /* unicorn-blur-10.png in Resources */,
+				4BE3BD0B1D756A77000BFA17 /* kingfisher-b&w-mac.jpg in Resources */,
+				4BE3BDF21D757B84000BFA17 /* kingfisher-overlay-red.jpg in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1044,8 +1510,71 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				4BE3BD451D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg in Resources */,
+				4BE3BE081D757B84000BFA17 /* unicorn-overlay-red-mac.png in Resources */,
+				4BE3BD871D756A77000BFA17 /* onevcat-resize-120.jpg in Resources */,
+				4BE3BDBD1D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png in Resources */,
+				4BE3BD331D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg in Resources */,
+				4BE3BDF01D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg in Resources */,
+				4BE3BE051D757B84000BFA17 /* unicorn-overlay-red-07.png in Resources */,
+				4BE3BDB71D756A77000BFA17 /* unicorn-round-corner-40.png in Resources */,
+				4BE3BD421D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg in Resources */,
+				4BE3BDC91D756A77000BFA17 /* onevcat-tint-yellow-02.jpg in Resources */,
+				4BF806E21D75411B00C8DB13 /* kingfisher.jpg in Resources */,
+				4BE3BD151D756A77000BFA17 /* onevcat-b&w.jpg in Resources */,
+				4BE3BDAE1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg in Resources */,
 				D1D2C32C1C70A3230018F2F9 /* single-frame.gif in Resources */,
+				4BE3BD511D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png in Resources */,
+				4BE3BD481D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg in Resources */,
+				4BE3BD4B1D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg in Resources */,
+				4BE3BD301D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg in Resources */,
+				4BE3BDB41D756A77000BFA17 /* unicorn-round-corner-40-mac.png in Resources */,
+				4BE3BDAB1D756A77000BFA17 /* onevcat-round-corner-40.jpg in Resources */,
+				4BE3BDBA1D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png in Resources */,
+				4BE3BD9F1D756A77000BFA17 /* kingfisher-round-corner-40.jpg in Resources */,
+				4BF806E51D75411B00C8DB13 /* onevcat.jpg in Resources */,
+				4BE3BDA51D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg in Resources */,
+				4BE3BD181D756A77000BFA17 /* unicorn-b&w-mac.png in Resources */,
+				4BF806E81D75411B00C8DB13 /* unicorn.png in Resources */,
+				4BE3BD901D756A77000BFA17 /* unicorn-resize-120-mac.png in Resources */,
+				4BE3BDA21D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg in Resources */,
+				4BE3BDF61D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg in Resources */,
+				4BE3BD3F1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png in Resources */,
+				4BE3BD2A1D756A77000BFA17 /* unicorn-blur-10-mac.png in Resources */,
+				4BE3BDC31D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg in Resources */,
+				4BE3BD841D756A77000BFA17 /* onevcat-resize-120-mac.jpg in Resources */,
+				4BE3BD1B1D756A77000BFA17 /* unicorn-b&w.png in Resources */,
+				4BE3BDB11D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg in Resources */,
+				4BE3BD781D756A77000BFA17 /* kingfisher-resize-120-mac.jpg in Resources */,
+				4BE3BD211D756A77000BFA17 /* kingfisher-blur-10.jpg in Resources */,
+				4BE3BD931D756A77000BFA17 /* unicorn-resize-120.png in Resources */,
+				4BE3BD121D756A77000BFA17 /* onevcat-b&w-mac.jpg in Resources */,
+				4BE3BDED1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg in Resources */,
+				4BE3BD361D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg in Resources */,
+				4BE3BE0B1D757B84000BFA17 /* unicorn-overlay-red.png in Resources */,
+				4BE3BDC01D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg in Resources */,
+				4BE3BD4E1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png in Resources */,
 				D12E0C8A1C47F7C000AC98AD /* dancing-banana.gif in Resources */,
+				4BE3BDC61D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg in Resources */,
+				4BE3BD7B1D756A77000BFA17 /* kingfisher-resize-120.jpg in Resources */,
+				4BE3BD3C1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png in Resources */,
+				4BE3BDFF1D757B84000BFA17 /* onevcat-overlay-red.jpg in Resources */,
+				4BE3BE021D757B84000BFA17 /* unicorn-overlay-red-07-mac.png in Resources */,
+				4BE3BD1E1D756A77000BFA17 /* kingfisher-blur-10-mac.jpg in Resources */,
+				4BE3BDCF1D756A77000BFA17 /* unicorn-tint-yellow-02.png in Resources */,
+				4BE3BDFC1D757B84000BFA17 /* onevcat-overlay-red-mac.jpg in Resources */,
+				4BE3BD0F1D756A77000BFA17 /* kingfisher-b&w.jpg in Resources */,
+				4BE3BDEA1D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg in Resources */,
+				4BE3BD271D756A77000BFA17 /* onevcat-blur-10.jpg in Resources */,
+				4BE3BDA81D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg in Resources */,
+				4BE3BDCC1D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png in Resources */,
+				4BE3BD241D756A77000BFA17 /* onevcat-blur-10-mac.jpg in Resources */,
+				4BE3BD391D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg in Resources */,
+				4BE3BDF91D757B84000BFA17 /* onevcat-overlay-red-07.jpg in Resources */,
+				4BE3BD9C1D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg in Resources */,
+				4BE3BD2D1D756A77000BFA17 /* unicorn-blur-10.png in Resources */,
+				4BE3BD0C1D756A77000BFA17 /* kingfisher-b&w-mac.jpg in Resources */,
+				4BE3BDF31D757B84000BFA17 /* kingfisher-overlay-red.jpg in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1110,8 +1639,71 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				4BE3BD431D756A77000BFA17 /* kingfisher-blur-4-round-corner-60.jpg in Resources */,
+				4BE3BE061D757B84000BFA17 /* unicorn-overlay-red-mac.png in Resources */,
+				4BE3BD851D756A77000BFA17 /* onevcat-resize-120.jpg in Resources */,
+				4BE3BDBB1D756A77000BFA17 /* unicorn-round-corner-60-resize-100.png in Resources */,
+				4BE3BD311D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07.jpg in Resources */,
+				4BE3BDEE1D757B84000BFA17 /* kingfisher-overlay-red-mac.jpg in Resources */,
+				4BE3BE031D757B84000BFA17 /* unicorn-overlay-red-07.png in Resources */,
+				4BE3BDB51D756A77000BFA17 /* unicorn-round-corner-40.png in Resources */,
+				4BE3BD401D756A77000BFA17 /* kingfisher-blur-4-round-corner-60-mac.jpg in Resources */,
+				4BE3BDC71D756A77000BFA17 /* onevcat-tint-yellow-02.jpg in Resources */,
+				4BF806E01D75411B00C8DB13 /* kingfisher.jpg in Resources */,
+				4BE3BD131D756A77000BFA17 /* onevcat-b&w.jpg in Resources */,
+				4BE3BDAC1D756A77000BFA17 /* onevcat-round-corner-60-resize-100-mac.jpg in Resources */,
 				D1D2C32A1C70A3230018F2F9 /* single-frame.gif in Resources */,
+				4BE3BD4F1D756A77000BFA17 /* unicorn-blur-4-round-corner-60.png in Resources */,
+				4BE3BD461D756A77000BFA17 /* onevcat-blur-4-round-corner-60-mac.jpg in Resources */,
+				4BE3BD491D756A77000BFA17 /* onevcat-blur-4-round-corner-60.jpg in Resources */,
+				4BE3BD2E1D756A77000BFA17 /* kingfisher-color-control-b00-c11-s12-ev07-mac.jpg in Resources */,
+				4BE3BDB21D756A77000BFA17 /* unicorn-round-corner-40-mac.png in Resources */,
+				4BE3BDA91D756A77000BFA17 /* onevcat-round-corner-40.jpg in Resources */,
+				4BE3BDB81D756A77000BFA17 /* unicorn-round-corner-60-resize-100-mac.png in Resources */,
+				4BE3BD9D1D756A77000BFA17 /* kingfisher-round-corner-40.jpg in Resources */,
+				4BF806E31D75411B00C8DB13 /* onevcat.jpg in Resources */,
+				4BE3BDA31D756A77000BFA17 /* kingfisher-round-corner-60-resize-100.jpg in Resources */,
+				4BE3BD161D756A77000BFA17 /* unicorn-b&w-mac.png in Resources */,
+				4BF806E61D75411B00C8DB13 /* unicorn.png in Resources */,
+				4BE3BD8E1D756A77000BFA17 /* unicorn-resize-120-mac.png in Resources */,
+				4BE3BDA01D756A77000BFA17 /* kingfisher-round-corner-60-resize-100-mac.jpg in Resources */,
+				4BE3BDF41D757B84000BFA17 /* onevcat-overlay-red-07-mac.jpg in Resources */,
+				4BE3BD3D1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07.png in Resources */,
+				4BE3BD281D756A77000BFA17 /* unicorn-blur-10-mac.png in Resources */,
+				4BE3BDC11D756A77000BFA17 /* kingfisher-tint-yellow-02.jpg in Resources */,
+				4BE3BD821D756A77000BFA17 /* onevcat-resize-120-mac.jpg in Resources */,
+				4BE3BD191D756A77000BFA17 /* unicorn-b&w.png in Resources */,
+				4BE3BDAF1D756A77000BFA17 /* onevcat-round-corner-60-resize-100.jpg in Resources */,
+				4BE3BD761D756A77000BFA17 /* kingfisher-resize-120-mac.jpg in Resources */,
+				4BE3BD1F1D756A77000BFA17 /* kingfisher-blur-10.jpg in Resources */,
+				4BE3BD911D756A77000BFA17 /* unicorn-resize-120.png in Resources */,
+				4BE3BD101D756A77000BFA17 /* onevcat-b&w-mac.jpg in Resources */,
+				4BE3BDEB1D757B84000BFA17 /* kingfisher-overlay-red-07.jpg in Resources */,
+				4BE3BD341D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07-mac.jpg in Resources */,
+				4BE3BE091D757B84000BFA17 /* unicorn-overlay-red.png in Resources */,
+				4BE3BDBE1D756A77000BFA17 /* kingfisher-tint-yellow-02-mac.jpg in Resources */,
+				4BE3BD4C1D756A77000BFA17 /* unicorn-blur-4-round-corner-60-mac.png in Resources */,
 				D12E0C4F1C47F23500AC98AD /* dancing-banana.gif in Resources */,
+				4BE3BDC41D756A77000BFA17 /* onevcat-tint-yellow-02-mac.jpg in Resources */,
+				4BE3BD791D756A77000BFA17 /* kingfisher-resize-120.jpg in Resources */,
+				4BE3BD3A1D756A77000BFA17 /* unicorn-color-control-b00-c11-s12-ev07-mac.png in Resources */,
+				4BE3BDFD1D757B84000BFA17 /* onevcat-overlay-red.jpg in Resources */,
+				4BE3BE001D757B84000BFA17 /* unicorn-overlay-red-07-mac.png in Resources */,
+				4BE3BD1C1D756A77000BFA17 /* kingfisher-blur-10-mac.jpg in Resources */,
+				4BE3BDCD1D756A77000BFA17 /* unicorn-tint-yellow-02.png in Resources */,
+				4BE3BDFA1D757B84000BFA17 /* onevcat-overlay-red-mac.jpg in Resources */,
+				4BE3BD0D1D756A77000BFA17 /* kingfisher-b&w.jpg in Resources */,
+				4BE3BDE81D757B84000BFA17 /* kingfisher-overlay-red-07-mac.jpg in Resources */,
+				4BE3BD251D756A77000BFA17 /* onevcat-blur-10.jpg in Resources */,
+				4BE3BDA61D756A77000BFA17 /* onevcat-round-corner-40-mac.jpg in Resources */,
+				4BE3BDCA1D756A77000BFA17 /* unicorn-tint-yellow-02-mac.png in Resources */,
+				4BE3BD221D756A77000BFA17 /* onevcat-blur-10-mac.jpg in Resources */,
+				4BE3BD371D756A77000BFA17 /* onevcat-color-control-b00-c11-s12-ev07.jpg in Resources */,
+				4BE3BDF71D757B84000BFA17 /* onevcat-overlay-red-07.jpg in Resources */,
+				4BE3BD9A1D756A77000BFA17 /* kingfisher-round-corner-40-mac.jpg in Resources */,
+				4BE3BD2B1D756A77000BFA17 /* unicorn-blur-10.png in Resources */,
+				4BE3BD0A1D756A77000BFA17 /* kingfisher-b&w-mac.jpg in Resources */,
+				4BE3BDF11D757B84000BFA17 /* kingfisher-overlay-red.jpg in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 104 - 45
Sources/Image.swift

@@ -55,7 +55,7 @@ private let ciContext = CIContext(options: nil)
 // MARK: - Image Properties
 extension Image {
 #if os(macOS)
-    var cgImage: CGImage! {
+    var cgImage: CGImage? {
         return cgImage(forProposedRect: nil, context: nil, hints: nil)
     }
     
@@ -199,6 +199,9 @@ extension Image {
     // MARK: - JPEG
     func jpegRepresentation(compressionQuality: CGFloat) -> Data? {
         #if os(macOS)
+            guard let cgImage = cgImage else {
+                return nil
+            }
             let rep = NSBitmapImageRep(cgImage: cgImage)
             return rep.representation(using:.JPEG, properties: [NSImageCompressionFactor: compressionQuality])
         #else
@@ -402,7 +405,7 @@ extension Image {
     // MARK: - Resize
     func kf_resize(to size: CGSize) -> Image {
         
-        guard let imageRef = cgImage else {
+        guard let cgImage = cgImage?.fixed else {
             assertionFailure("[Kingfisher] Resizing only works for CG-based image.")
             return self
         }
@@ -412,11 +415,11 @@ extension Image {
             return self
         }
         
-        let bitsPerComponent = imageRef.bitsPerComponent
-        let bytesPerRow = imageRef.bytesPerRow
-        let colorSpace = imageRef.colorSpace
-        let bitmapInfo = imageRef.bitmapInfo
-        
+        let bitsPerComponent = cgImage.bitsPerComponent
+        let bytesPerRow = cgImage.bytesPerRow
+        let colorSpace = cgImage.colorSpace
+        let bitmapInfo = cgImage.bitmapInfo.fixed
+
         guard let context = CGContext(data: nil,
                                       width: Int(size.width),
                                       height: Int(size.height),
@@ -429,8 +432,7 @@ extension Image {
             return self
         }
         
-        context.interpolationQuality = .high
-        context.draw(imageRef, in: CGRect(origin: CGPoint.zero, size: size))
+        context.draw(cgImage, in: CGRect(origin: CGPoint.zero, size: size))
         
         #if os(macOS)
             let result = context.makeImage().flatMap { Image(cgImage: $0, size: size) }
@@ -438,7 +440,7 @@ extension Image {
             let result = context.makeImage().flatMap { Image(cgImage: $0) }
         #endif
         guard let scaledImage = result else {
-            assertionFailure("Can not make an resized image within context.")
+            assertionFailure("[Kingfisher] Can not make an resized image within context.")
             return self
         }
         
@@ -450,28 +452,11 @@ extension Image {
         #if os(watchOS)
             return self
         #else
-            guard let cgImage = cgImage else {
+            guard let cgImage = cgImage?.fixed else {
                 assertionFailure("[Kingfisher] Blur only works for CG-based image.")
                 return self
             }
             
-            let imageRef: CGImage
-            if !cgImage.isARGB8888 {
-                // Convert to ARGB if it isn't
-                guard let context = CGContext.createARGBContext(from: cgImage) else {
-                    assertionFailure("[Kingfisher] Failed to create CG context when converting non ARGB image.")
-                    return self
-                }
-                context.draw(cgImage, in: CGRect(x: 0, y: 0, width: cgImage.width, height: cgImage.height))
-                guard let r = context.makeImage() else {
-                    assertionFailure("[Kingfisher] Failed to create CG image when converting non ARGB image.")
-                    return self
-                }
-                imageRef = r
-            } else {
-                imageRef = cgImage
-            }
-            
             // http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement
             // let d = floor(s * 3*sqrt(2*pi)/4 + 0.5)
             // if d is odd, use three box-blurs of size 'd', centered on the output pixel.
@@ -494,26 +479,27 @@ extension Image {
             
             let w = Int(kf_size.width)
             let h = Int(kf_size.height)
-            let rowBytes = Int(CGFloat(imageRef.bytesPerRow))
+            let rowBytes = Int(CGFloat(cgImage.bytesPerRow))
             
             let inDataPointer = malloc(rowBytes * Int(h))
             defer {
                 free(inDataPointer)
             }
             
+            let bitmapInfo = cgImage.bitmapInfo.fixed
             guard let context = CGContext(data: inDataPointer,
                                           width: w,
                                           height: h,
-                                          bitsPerComponent: imageRef.bitsPerComponent,
+                                          bitsPerComponent: cgImage.bitsPerComponent,
                                           bytesPerRow: rowBytes,
-                                          space: imageRef.colorSpace!,
-                                          bitmapInfo: imageRef.bitmapInfo.rawValue) else
+                                          space: cgImage.colorSpace ?? CGColorSpaceCreateDeviceRGB(),
+                                          bitmapInfo: bitmapInfo.rawValue) else
             {
                 assertionFailure("[Kingfisher] Failed to create CG context for blurring image.")
                 return self
             }
             
-            context.draw(imageRef, in: CGRect(x: 0, y: 0, width: w, height: h))
+            context.draw(cgImage, in: CGRect(x: 0, y: 0, width: w, height: h))
             
             
             var inBuffer = vImage_Buffer(data: inDataPointer, height: vImagePixelCount(h), width: vImagePixelCount(w), rowBytes: rowBytes)
@@ -533,22 +519,22 @@ extension Image {
             guard let outContext = CGContext(data: inDataPointer,
                                              width: w,
                                              height: h,
-                                             bitsPerComponent: imageRef.bitsPerComponent,
+                                             bitsPerComponent: cgImage.bitsPerComponent,
                                              bytesPerRow: rowBytes,
-                                             space: imageRef.colorSpace!,
-                                             bitmapInfo: imageRef.bitmapInfo.rawValue) else
+                                             space: cgImage.colorSpace ?? CGColorSpaceCreateDeviceRGB(),
+                                             bitmapInfo: cgImage.bitmapInfo.rawValue) else
             {
                 assertionFailure("[Kingfisher] Failed to create CG context for blurring image.")
                 return self
             }
             
             #if os(macOS)
-                let result = outContext.makeImage().flatMap { Image(cgImage: $0, size: size) }
+                let result = outContext.makeImage().flatMap { Image(cgImage: $0, size: kf_size) }
             #else
                 let result = outContext.makeImage().flatMap { Image(cgImage: $0) }
             #endif
             guard let blurredImage = result else {
-                assertionFailure("Can not make an resized image within context.")
+                assertionFailure("[Kingfisher] Can not make an resized image within context.")
                 return self
             }
             
@@ -574,7 +560,7 @@ extension Image {
             
             return output
         #else
-            UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
+            UIGraphicsBeginImageContextWithOptions(size, false, scale)
 
             color.set()
             UIRectFill(rect)
@@ -590,6 +576,46 @@ extension Image {
         #endif
     }
     
+    // MARK: - Tint
+    func kf_tinted(with color: Color) -> Image {
+        #if os(watchOS)
+            return self
+        #else
+        guard let cgImage = cgImage else {
+            assertionFailure("[Kingfisher] Tint image only works for CG-based image.")
+            return self
+        }
+    
+            
+        let colorFilter = CIFilter(name: "CIConstantColorGenerator")!
+        colorFilter.setValue(CIColor(color: color), forKey: kCIInputColorKey)
+        
+        let colorImage = colorFilter.outputImage
+            
+        let input = CIImage(cgImage: cgImage)
+        let filter = CIFilter(name: "CISourceOverCompositing")!
+        filter.setValue(colorImage, forKey: kCIInputImageKey)
+        filter.setValue(input, forKey: kCIInputBackgroundImageKey)
+        
+        guard let output = filter.outputImage?.cropping(to: input.extent) else {
+            assertionFailure("[Kingfisher] Tint filter failed to create output image.")
+            return self
+        }
+            
+        guard let result = ciContext.createCGImage(output, from: output.extent) else {
+            assertionFailure("[Kingfisher] Can not make an tint image within context.")
+            return self
+        }
+            
+        #if os(macOS)
+            return Image(cgImage: result, size: .zero)
+        #else
+            return Image(cgImage: result)
+        #endif
+        #endif
+    }
+    
+    // MARK: - Color Control
     func kf_adjusted(brightness: CGFloat, contrast: CGFloat, saturation: CGFloat, inputEV: CGFloat) -> Image {
         #if os(watchOS)
         return self
@@ -640,14 +666,17 @@ extension Image {
         }
 #endif
         
-        let imageRef = self.cgImage
+        guard let imageRef = self.cgImage else {
+            assertionFailure("[Kingfisher] Decoding only works for CG-based image.")
+            return nil
+        }
         let colorSpace = CGColorSpaceCreateDeviceRGB()
-        let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue).rawValue
+        let bitmapInfo = imageRef.bitmapInfo.fixed
         
-        let context = CGContext(data: nil, width: (imageRef?.width)!, height: (imageRef?.height)!, bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo)
+        let context = CGContext(data: nil, width: imageRef.width, height: imageRef.height, bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo.rawValue)
         if let context = context {
-            let rect = CGRect(x: 0, y: 0, width: (imageRef?.width)!, height: (imageRef?.height)!)
-            context.draw(imageRef!, in: rect)
+            let rect = CGRect(x: 0, y: 0, width: imageRef.width, height: imageRef.height)
+            context.draw(imageRef, in: rect)
             let decompressedImageRef = context.makeImage()
             return Image.kf_image(cgImage: decompressedImageRef!, scale: scale, refImage: self)
         } else {
@@ -725,6 +754,36 @@ extension CGImage {
         return bitsPerPixel == 32 && bitsPerComponent == 8 && bitmapInfo.contains(.alphaInfoMask)
     }
     
+    var fixed: CGImage {
+        if isARGB8888 { return self }
+
+        // Convert to ARGB if it isn't
+        guard let context = CGContext.createARGBContext(from: self) else {
+            assertionFailure("[Kingfisher] Failed to create CG context when converting non ARGB image.")
+            return self
+        }
+        context.draw(self, in: CGRect(x: 0, y: 0, width: width, height: height))
+        guard let r = context.makeImage() else {
+            assertionFailure("[Kingfisher] Failed to create CG image when converting non ARGB image.")
+            return self
+        }
+        return r
+    }
+}
+
+extension CGBitmapInfo {
+    var fixed: CGBitmapInfo {
+        var fixed = self
+        let alpha = (rawValue & CGBitmapInfo.alphaInfoMask.rawValue)
+        if alpha == CGImageAlphaInfo.none.rawValue {
+            fixed.remove(.alphaInfoMask)
+            fixed = CGBitmapInfo(rawValue: fixed.rawValue | CGImageAlphaInfo.noneSkipFirst.rawValue)
+        } else if !(alpha == CGImageAlphaInfo.noneSkipFirst.rawValue) || !(alpha == CGImageAlphaInfo.noneSkipLast.rawValue) {
+            fixed.remove(.alphaInfoMask)
+            fixed = CGBitmapInfo(rawValue: fixed.rawValue | CGImageAlphaInfo.premultipliedFirst.rawValue)
+        }
+        return fixed
+    }
 }
 
 extension CGContext {
@@ -740,7 +799,7 @@ extension CGContext {
             free(data)
         }
         
-        let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedFirst.rawValue)
+        let bitmapInfo = imageRef.bitmapInfo.fixed
         
         // Create the bitmap context. We want pre-multiplied ARGB, 8-bits
         // per component. Regardless of what the source image format is

+ 16 - 0
Sources/ImageProcessor.swift

@@ -124,6 +124,22 @@ public struct OverlayImageProcessor: ImageProcessor {
     }
 }
 
+public struct TintImageProcessor: ImageProcessor {
+    public let tint: Color
+    public init(tint: Color) {
+        self.tint = tint
+    }
+    
+    public func process(item: ImageProcessItem, options: KingfisherOptionsInfo) -> Image? {
+        switch item {
+        case .image(let image):
+            return image.kf_tinted(with: tint)
+        case .data(_):
+            return (DefaultProcessor() |> self).process(item: item, options: options)
+        }
+    }
+}
+
 public struct ColorControlsProcessor: ImageProcessor {
     public let brightness: CGFloat
     public let contrast: CGFloat

+ 102 - 4
Tests/KingfisherTests/ImageProcessorTests.swift

@@ -11,6 +11,12 @@ import Kingfisher
 
 class ImageProcessorTests: XCTestCase {
     
+    let imageNames = ["kingfisher.jpg", "onevcat.jpg", "unicorn.png"]
+    
+    lazy var imageData: [Data] = {
+        self.imageNames.map { Data(fileName: $0) }
+    }()
+    
     override func setUp() {
         super.setUp()
         // Put setup code here. This method is called before the invocation of each test method in the class.
@@ -28,11 +34,103 @@ class ImageProcessorTests: XCTestCase {
         XCTAssertTrue(image1.renderEqual(to: image2))
     }
     
-    func testPerformanceExample() {
-        // This is an example of a performance test case.
-        self.measure {
-            // Put the code you want to measure the time of here.
+    func testRoundCornerProcessor() {
+        let p = RoundCornerImageProcessor(cornerRadius: 40)
+        checkProcessor(p, with: "round-corner-40")
+    }
+    
+    func testRoundCornerWithResizingProcessor() {
+        let p = RoundCornerImageProcessor(cornerRadius: 60, targetSize: CGSize(width: 100, height: 100))
+        checkProcessor(p, with: "round-corner-60-resize-100")
+    }
+ 
+    func testResizingProcessor() {
+        let p = ResizingImageProcessor(targetSize: CGSize(width: 120, height: 120))
+        checkProcessor(p, with: "resize-120")
+    }
+    
+    func testOverlayProcessor() {
+        let p1 = OverlayImageProcessor(overlay: .red)
+        checkProcessor(p1, with: "overlay-red")
+        
+        let p2 = OverlayImageProcessor(overlay: .red, fraction: 0.7)
+        checkProcessor(p2, with: "overlay-red-07")
+    }
+    
+    func testTintProcessor() {
+        let color = Color.yellow.withAlphaComponent(0.2)
+        let p = TintImageProcessor(tint: color)
+        checkProcessor(p, with: "tint-yellow-02")
+    }
+    
+    func testColorControlProcessor() {
+        let p = ColorControlsProcessor(brightness: 0, contrast: 1.1, saturation: 1.2, inputEV: 0.7)
+        checkProcessor(p, with: "color-control-b00-c11-s12-ev07")
+    }
+    
+    func testBlackWhiteProcessor() {
+        let p = BlackWhiteProcessor()
+        checkProcessor(p, with: "b&w")
+    }
+    
+    func testCompositionProcessor() {
+        let p = BlurImageProcessor(blurRadius: 4) |> RoundCornerImageProcessor(cornerRadius: 60)
+        checkProcessor(p, with: "blur-4-round-corner-60")
+    }
+}
+
+extension ImageProcessorTests {
+    
+    func checkProcessor(_ p: ImageProcessor, with suffix: String) {
+        
+        let specifiedSuffix = getSuffix(with: suffix)
+        
+        let targetImages = imageNames
+            .map { $0.replacingOccurrences(of: ".", with: "-\(specifiedSuffix).") }
+            .map { Image(fileName: $0) }
+        
+        let resultImages = imageData.flatMap { p.process(item: .data($0), options: []) }
+        
+        checkImagesEqual(targetImages: targetImages, resultImages: resultImages, for: specifiedSuffix)
+    }
+    
+    func checkImagesEqual(targetImages: [Image], resultImages: [Image], for suffix: String) {
+        XCTAssertEqual(targetImages.count, resultImages.count)
+        
+        for (i, (resultImage, targetImage)) in zip(resultImages, targetImages).enumerated() {
+            guard resultImage.renderEqual(to: targetImage) else {
+                let originalName = imageNames[i]
+                let excutingName = originalName.replacingOccurrences(of: ".", with: "-\(suffix).")
+                XCTFail("Result image is not the same to target. Failed at: \(excutingName)) for \(originalName)")
+                let t = targetImage.write("target-\(excutingName)")
+                let r = resultImage.write("result-\(excutingName)")
+                print("Expected: \(t)")
+                print("But Got: \(r)")
+                continue
+            }
         }
     }
     
+    func getSuffix(with ori: String) -> String {
+        #if os(macOS)
+        return "\(ori)-mac"
+        #else
+        return ori
+        #endif
+    }
+}
+
+/*
+extension ImageProcessorTests {
+    //Helper Writer
+    func testWrite() {
+        
+        let p = ResizingImageProcessor(targetSize: CGSize(width: 300, height: 300))
+        let suffix = "resize-300-mac"
+        let resultImages = imageData.flatMap { p.process(item: .data($0), options: []) }
+        for i in 0..<resultImages.count {
+            resultImages[i].write(imageNames[i].replacingOccurrences(of: ".", with: "-\(suffix)."))
+        }
+    }
 }
+*/

+ 31 - 2
Tests/KingfisherTests/KingfisherTestHelper.swift

@@ -82,7 +82,9 @@ extension Image {
             let byte2 = dataPtr2[index]
             let delta = UInt8(abs(Int(byte1) - Int(byte2)))
             
-            guard delta <= tolerance else { return false }
+            guard delta <= tolerance else {
+                return false
+            }
         }
         
         return true
@@ -126,11 +128,38 @@ extension Image {
         context.draw(cgImage, in: CGRect(origin: CGPoint.zero, size: size))
         
         #if os(macOS)
-        return context.makeImage().flatMap { Image(cgImage: $0, size: size) }
+        return context.makeImage().flatMap { Image(cgImage: $0, size: kf_size) }
         #else
         return context.makeImage().flatMap { Image(cgImage: $0) }
         #endif
     }
 }
 
+extension Image {
+    convenience init(fileName: String) {
+        let data = Data(fileName: fileName)
+        self.init(data: data)!
+    }
+    
+    @discardableResult
+    func write(_ name: String) -> String {
+        let path = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).last!
+        let p = ((path) as NSString).appendingPathComponent(name)
+        print(p)
+        try! pngRepresentation()?.write(to: URL(fileURLWithPath: p))
+        return p
+    }
+}
 
+extension Data {
+    
+    init(fileName: String) {
+        let comp = fileName.components(separatedBy: ".")
+        guard comp.count == 2 else { fatalError() }
+        self.init(named: comp[0], type: comp[1])
+    }
+    
+    init(named name: String, type: String) {
+        try! self.init(contentsOf: URL(fileURLWithPath: Bundle(for: ImageExtensionTests.self).path(forResource: name, ofType: type)!))
+    }
+}