From http://www.jwz.org/xscreensaver/xscreensaver-5.19.tar.gz
authorZygo Blaxell <zblaxell@faye.furryterror.org>
Fri, 27 Jul 2012 03:36:35 +0000 (23:36 -0400)
committerZygo Blaxell <zblaxell@faye.furryterror.org>
Fri, 8 Feb 2013 17:55:16 +0000 (12:55 -0500)
-rw-r--r-- 1 zblaxell zblaxell 7373580 Jul 26 23:00 xscreensaver-5.19.tar.gz
16437d45f568ded8721a917e082f9b4d948954ec  xscreensaver-5.19.tar.gz

29 files changed:
OSX/Makefile
OSX/SaverRunner.h
OSX/SaverRunner.m
OSX/SaverRunner.plist
OSX/XScreenSaver.plist
OSX/XScreenSaverGLView.m
OSX/XScreenSaverView.h
OSX/XScreenSaverView.m
OSX/bindist.rtf
OSX/build-fntable.pl [new file with mode: 0755]
OSX/iSaverRunner.plist
OSX/icmp-warning.pl
OSX/ios_function_tables.h [new file with mode: 0644]
OSX/jwxyz.m
OSX/update-info-plist.pl
OSX/update-thumbnail.pl [new file with mode: 0755]
README
driver/Makefile.in
driver/XScreenSaver.ad.in
driver/XScreenSaver_ad.h
hacks/config/README
hacks/glx/hypertorus.c
hacks/glx/sonar-icmp.c
hacks/vidwhacker
hacks/webcollage
po/POTFILES.in
utils/version.h
xscreensaver.spec
xscreensaver.xcodeproj/project.pbxproj

index 63a5aba5b15c3b5c3b172a95d43aa38062f8d274..b7b37fd965b6f88bab2d707328a8e699a87139af 100644 (file)
@@ -1,10 +1,11 @@
-# XScreenSaver for MacOS X, Copyright (c) 2006-2011 by Jamie Zawinski.
+# XScreenSaver for MacOS X, Copyright (c) 2006-2012 by Jamie Zawinski.
 
 XCODEBUILD = /Developer/usr/bin/xcodebuild
 TARGETS    = -target "All Savers"
 ARCH       = -arch i386 -arch x86_64
 CERT       = 'Jamie Zawinski'
 CERT       = 'iPhone Developer: Jamie Zawinski (Y5M82TL69N)'
+THUMBDIR   = $(HOME)/www/xscreensaver/screenshots/
 
 default: release
 all: debug release
@@ -28,7 +29,7 @@ release:: distdepend
        cd ..; $(XCODEBUILD) $(ARCH) $(TARGETS) -configuration Release build
 
 release:: check_versions
-
+release:: update_thumbs
 release:: sign
 
 sign:
@@ -56,6 +57,14 @@ check_versions:
   if [ "$$RESULT" = 0 ]; then echo "Versions match ($$V2)" ; fi ;      \
   exit $$RESULT
 
+update_thumbs::
+       ./update-thumbnail.pl $(THUMBDIR) build/Release/*.saver
+
+
+# Arrrrgh
+ios_function_tables.h::
+       @./build-fntable.pl build/Debug-iphoneos/XScreenSaver.app $@
+
 
 echo_tarfiles:
        @echo `find . \
@@ -86,6 +95,7 @@ update_plist_version:
   done ;                                                                     \
   rm $$T
 
+
 # -format UDBZ saves 4% (~1.2 MB) over UDZO.
 dmg:: distdepend check_versions
        @                                                                     \
index 0a35ca195fe6a9a6a2f344e3039fda247451405a..0284ccf5065a296ebb7a9b3f9b8aad96d1e6f865 100644 (file)
@@ -48,6 +48,7 @@
 # else  // USE_IPHONE
 
   ScreenSaverView *saverView;
+  UIView *backgroundView;
   UINavigationController *rootViewController;
   IBOutlet UIWindow *window;
   EAGLContext *eagl_ctx;
index 3fd451d9ae2b23cb7680e6d34cb3f3b93bc06e5c..526f62eb0dc4071b3a0a8e19c1282a154cf7f207 100644 (file)
@@ -426,10 +426,20 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
 
   saverName = name;
 
+  if (! backgroundView) {
+    // This view is the parent of the XScreenSaverView, and exists only
+    // so that there is a black background behind it.  Without this, when
+    // rotation is in progresss, the scrolling-list window's corners show
+    // through in the corners.
+    backgroundView = [[[NSView class] alloc] initWithFrame:[window frame]];
+    [backgroundView setBackgroundColor:[NSColor blackColor]];
+  }
+
   if (saverView) {
     if ([saverView isAnimating])
       [saverView stopAnimation];
     [saverView removeFromSuperview];
+    [backgroundView removeFromSuperview];
   }
 
   NSSize size = [window frame].size;
@@ -455,7 +465,8 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
  LAUNCH:
   if (launch) {
     [self saveScreenshot];
-    [window addSubview: saverView];
+    [window addSubview: backgroundView];
+    [backgroundView addSubview: saverView];
     [saverView becomeFirstResponder];
     [saverView startAnimation];
   }
index b116fb8f49f7eaf2925c2ce73247d5798f43d647..357321667251b47dd6e4e24a962e33a4c96967c2 100644 (file)
@@ -22,11 +22,11 @@ http://www.jwz.org/xscreensaver/</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.18</string>
+       <string>5.19</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.18</string>
+       <string>5.19</string>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSHumanReadableCopyright</key>
index fa9f4870d0d0cf533a2b82ee2cb06bd0e47ec496..7e8075350f90e374d87052277212caf691e9b725 100644 (file)
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.18</string>
+       <string>5.19</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.18</string>
+       <string>5.19</string>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSMainNibFile</key>
index 58144ee1c342b1645749d37571d6770c4cd46233..3d3aeeaba4b438fb84d0b57eeeaac642e4b79533 100644 (file)
@@ -82,6 +82,16 @@ extern void check_gl_error (const char *type);
 }
 
 
+#ifdef USE_IPHONE
+/* With GL programs, drawing at full resolution isn't a problem.
+ */
+- (CGFloat) hackedContentScaleFactor
+{
+  return [self contentScaleFactor];
+}
+#endif // USE_IPHONE
+
+
 - (void) setOglContext: (NSOpenGLContext *) ctx
 {
   ogl_ctx = ctx;
@@ -89,9 +99,9 @@ extern void check_gl_error (const char *type);
 # ifdef USE_IPHONE
   [EAGLContext setCurrentContext: ogl_ctx];
 
-  double s = self.contentScaleFactor;
-  int w = s * [self frame].size.width;
-  int h = s * [self frame].size.height;
+  double s = [self hackedContentScaleFactor];
+  int w = s * [self bounds].size.width;
+  int h = s * [self bounds].size.height;
 
   if (gl_framebuffer)  glDeleteFramebuffersOES  (1, &gl_framebuffer);
   if (gl_renderbuffer) glDeleteRenderbuffersOES (1, &gl_renderbuffer);
@@ -173,11 +183,21 @@ extern void check_gl_error (const char *type);
     return [CAEAGLLayer class];
 }
 
+- (void) swapBuffers
+{
+  glBindRenderbufferOES (GL_RENDERBUFFER_OES, gl_renderbuffer);
+  [ogl_ctx presentRenderbuffer:GL_RENDERBUFFER_OES];
+}
+#endif // USE_IPHONE
+
+
+#ifdef USE_BACKBUFFER
+
+- (void) initLayer
+{
+  // Do nothing.
+}
 
-/* On MacOS:   drawRect does nothing, and animateOneFrame renders.
-   On iOS GL:  drawRect does nothing, and animateOneFrame renders.
-   On iOS X11: drawRect renders, and animateOneFrame marks the view dirty.
- */
 - (void)drawRect:(NSRect)rect
 {
 }
@@ -185,9 +205,15 @@ extern void check_gl_error (const char *type);
 
 - (void) animateOneFrame
 {
+# ifdef USE_IPHONE
   UIGraphicsPushContext (backbuffer);
+#endif
+
   [self render_x11];
+
+# ifdef USE_IPHONE
   UIGraphicsPopContext();
+#endif
 }
 
 
@@ -202,8 +228,12 @@ extern void check_gl_error (const char *type);
   // Don't resize the X11 window to match rotation. 
   // Rotation and scaling are handled in GL.
   //
-  NSRect f = [self frame];
-  double s = self.contentScaleFactor;
+# ifdef USE_IPHONE
+  double s = [self hackedContentScaleFactor];
+# else
+  double s = 1;
+# endif
+  NSRect f = [self bounds];
   backbuffer_size.width  = (int) (s * f.size.width);
   backbuffer_size.height = (int) (s * f.size.height);
 
@@ -217,13 +247,6 @@ extern void check_gl_error (const char *type);
     CGColorSpaceRelease (cs);
   }
 }
-
-
-- (void) swapBuffers
-{
-  glBindRenderbufferOES (GL_RENDERBUFFER_OES, gl_renderbuffer);
-  [ogl_ctx presentRenderbuffer:GL_RENDERBUFFER_OES];
-}
 # endif // USE_IPHONE
 
 
index 7365b9d82080e0566111c4ccdfb95f502215aaf8..0fe2046c0d4de0a3df3cf1b616ee82378b02737a 100644 (file)
 #endif // USE_IPHONE
 
 
+#ifdef USE_IPHONE
+# define USE_BACKBUFFER  /* must be in sync with jwxyz.h */
+#endif
+
+
 @interface XScreenSaverView : ScreenSaverView
 # ifdef USE_IPHONE
                              <UIAlertViewDelegate>
   NSSize rot_current_size;
   GLfloat rot_current_angle;
 
-  CGContextRef backbuffer;
-  NSSize backbuffer_size;
-
   NSTimer *crash_timer;
 
 # endif // USE_IPHONE
 
+# ifdef USE_BACKBUFFER
+  CGContextRef backbuffer;
+  CGSize backbuffer_size;
+# endif // USE_BACKBUFFER
 }
 
 - (id)initWithFrame:(NSRect)frame saverName:(NSString*)n isPreview:(BOOL)p;
 #ifdef USE_IPHONE
 - (void)didRotate:(NSNotification *)notification;
 - (void)setScreenLocked:(BOOL)locked;
-- (void)createBackbuffer;
 #endif // USE_IPHONE
 
+#ifdef USE_BACKBUFFER
+- (void)initLayer;
+- (void)createBackbuffer;
+#endif // USE_BACKBUFFER
+
 @end
index 438c05f9c712922a7c8ef8087477df1c508088c1..4cb5ea1183f41553fbe81b8f0f3424f4bfe89532 100644 (file)
 #import "xlockmoreI.h"
 #import "jwxyz-timers.h"
 
+#ifdef USE_IPHONE
+# include "ios_function_tables.h"
+static NSDictionary *function_tables = 0;
+#endif
+
+
 /* Garbage collection only exists if we are being compiled against the 
    10.6 SDK or newer, not if we are building against the 10.4 SDK.
  */
@@ -118,17 +124,30 @@ int mono_p = 0;
   if (! name)
     name = [[path lastPathComponent] stringByDeletingPathExtension];
 
-  NSString *table_name = [[[name lowercaseString]
-                            stringByReplacingOccurrencesOfString:@" "
-                            withString:@""]
-                           stringByAppendingString:
-                             @"_xscreensaver_function_table"];
+  name = [[name lowercaseString]
+           stringByReplacingOccurrencesOfString:@" "
+           withString:@""];
+
+# ifndef USE_IPHONE
+  // CFBundleGetDataPointerForName doesn't work in "Archive" builds.
+  // I'm guessing that symbol-stripping is mandatory.  Fuck.
+  NSString *table_name = [name stringByAppendingString:
+                                 @"_xscreensaver_function_table"];
   void *addr = CFBundleGetDataPointerForName (cfb, (CFStringRef) table_name);
   CFRelease (cfb);
 
   if (! addr)
     NSLog (@"no symbol \"%@\" for \"%@\"", table_name, path);
 
+# else  // USE_IPHONE
+  // Remember: any time you add a new saver to the iOS app,
+  // manually run "make ios_function_tables.h"!
+  if (! function_tables)
+    function_tables = [make_function_tables_dict() retain];
+  NSValue *v = [function_tables objectForKey: name];
+  void *addr = v ? [v pointerValue] : 0;
+# endif // USE_IPHONE
+
   return (struct xscreensaver_function_table *) addr;
 }
 
@@ -354,9 +373,12 @@ double_time (void)
 
   next_frame_time = 0;
   
-# ifdef USE_IPHONE
+# ifdef USE_BACKBUFFER
   [self createBackbuffer];
+  [self initLayer];
+# endif
 
+# ifdef USE_IPHONE
   // So we can tell when we're docked.
   [UIDevice currentDevice].batteryMonitoringEnabled = YES;
 # endif // USE_IPHONE
@@ -364,6 +386,15 @@ double_time (void)
   return self;
 }
 
+- (void) initLayer
+{
+# ifndef USE_IPHONE
+  [self setLayer: [CALayer layer]];
+  [self setWantsLayer: YES];
+# endif
+}
+
+
 - (id) initWithFrame:(NSRect)frame isPreview:(BOOL)p
 {
   return [self initWithFrame:frame saverName:0 isPreview:p];
@@ -377,7 +408,7 @@ double_time (void)
   if (xdpy)
     jwxyz_free_display (xdpy);
 
-# ifdef USE_IPHONE
+# ifdef USE_BACKBUFFER
   if (backbuffer)
     CGContextRelease (backbuffer);
 # endif
@@ -518,48 +549,31 @@ screenhack_do_fps (Display *dpy, Window w, fps_state *fpst, void *closure)
   fps_draw (fpst);
 }
 
+
 #ifdef USE_IPHONE
 
-/* Create a bitmap context into which we render everything.
+/* On iPhones with Retina displays, we can draw the savers in "real"
+   pixels, and that works great.  The 320x480 "point" screen is really
+   a 640x960 *pixel* screen.  However, Retina iPads have 768x1024
+   point screens which are 1536x2048 pixels, and apparently that's
+   enough pixels that copying those bits to the screen is slow.  Like,
+   drops us from 15fps to 7fps.  So, on Retina iPads, we don't draw in
+   real pixels.  This will probably make the savers look better
+   anyway, since that's a higher resolution than most desktop monitors
+   have even today.  (This is only true for X11 programs, not GL 
+   programs.  Those are fine at full rez.)
  */
-- (void) createBackbuffer
+- (CGFloat) hackedContentScaleFactor
 {
-  CGContextRef ob = backbuffer;
-  NSSize osize = backbuffer_size;
-
-  CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();
-  double s = self.contentScaleFactor;
-  backbuffer_size.width  = (int) (s * rot_current_size.width);
-  backbuffer_size.height = (int) (s * rot_current_size.height);
-  backbuffer = CGBitmapContextCreate (NULL,
-                                      backbuffer_size.width,
-                                      backbuffer_size.height,
-                                      8, 
-                                      backbuffer_size.width * 4,
-                                      cs,
-                                      kCGImageAlphaPremultipliedLast);
-  NSAssert (backbuffer, @"unable to allocate back buffer");
-  CGColorSpaceRelease (cs);
-
-  // Clear it.
-  CGContextSetGrayFillColor (backbuffer, 0, 1);
-  CGRect r = CGRectZero;
-  r.size = backbuffer_size;
-  CGContextFillRect (backbuffer, r);
-
-  if (ob) {
-    // Restore old bits, as much as possible, to the X11 upper left origin.
-    NSRect rect;
-    rect.origin.x = 0;
-    rect.origin.y = (backbuffer_size.height - osize.height);
-    rect.size  = osize;
-    CGImageRef img = CGBitmapContextCreateImage (ob);
-    CGContextDrawImage (backbuffer, rect, img);
-    CGImageRelease (img);
-    CGContextRelease (ob);
-  }
+  GLfloat s = [self contentScaleFactor];
+  CGRect frame = [self bounds];
+  if (frame.size.width  >= 1024 ||
+      frame.size.height >= 1024)
+    s = 1;
+  return s;
 }
 
+
 static GLfloat _global_rot_current_angle_kludge;
 
 double current_device_rotation (void)
@@ -614,11 +628,11 @@ double current_device_rotation (void)
 
 #   undef CLAMP180
 
-  double s = self.contentScaleFactor;
+  double s = [self hackedContentScaleFactor];
   if (((int) backbuffer_size.width  != (int) (s * rot_current_size.width) ||
        (int) backbuffer_size.height != (int) (s * rot_current_size.height))
 /*      && rotation_ratio == -1*/)
-    [self setFrame:[self frame]];
+    [self resize_x11];
 }
 
 
@@ -651,6 +665,93 @@ double current_device_rotation (void)
 #endif // USE_IPHONE
 
 
+#ifdef USE_BACKBUFFER
+
+/* Create a bitmap context into which we render everything.
+   If the desired size has changed, re-created it.
+ */
+- (void) createBackbuffer
+{
+# ifdef USE_IPHONE
+  double s = [self hackedContentScaleFactor];
+  int new_w = s * rot_current_size.width;
+  int new_h = s * rot_current_size.height;
+# else
+  int new_w = [self bounds].size.width;
+  int new_h = [self bounds].size.height;
+# endif
+
+  if (backbuffer &&
+      backbuffer_size.width  == new_w &&
+      backbuffer_size.height == new_h)
+    return;
+
+  CGSize osize = backbuffer_size;
+  CGContextRef ob = backbuffer;
+
+  backbuffer_size.width  = new_w;
+  backbuffer_size.height = new_h;
+
+  CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();
+  backbuffer = CGBitmapContextCreate (NULL,
+                                      backbuffer_size.width,
+                                      backbuffer_size.height,
+                                      8, 
+                                      backbuffer_size.width * 4,
+                                      cs,
+                                      kCGImageAlphaPremultipliedLast);
+  CGColorSpaceRelease (cs);
+  NSAssert (backbuffer, @"unable to allocate back buffer");
+
+  // Clear it.
+  CGRect r;
+  r.origin.x = r.origin.y = 0;
+  r.size = backbuffer_size;
+  CGContextSetGrayFillColor (backbuffer, 0, 1);
+  CGContextFillRect (backbuffer, r);
+
+  if (ob) {
+    // Restore old bits, as much as possible, to the X11 upper left origin.
+    CGRect rect;
+    rect.origin.x = 0;
+    rect.origin.y = (backbuffer_size.height - osize.height);
+    rect.size  = osize;
+    CGImageRef img = CGBitmapContextCreateImage (ob);
+    CGContextDrawImage (backbuffer, rect, img);
+    CGImageRelease (img);
+    CGContextRelease (ob);
+  }
+}
+
+#endif // USE_BACKBUFFER
+
+
+/* Inform X11 that the size of our window has changed.
+ */
+- (void) resize_x11
+{
+  if (!xwindow) return;  // early
+
+# ifdef USE_BACKBUFFER
+  [self createBackbuffer];
+  jwxyz_window_resized (xdpy, xwindow,
+                        0, 0,
+                        backbuffer_size.width, backbuffer_size.height,
+                        backbuffer);
+# else   // !USE_BACKBUFFER
+  NSRect r = [self frame];             // ignoring rotation is closer
+  r.size = [self bounds].size;         // to what XGetGeometry expects.
+  jwxyz_window_resized (xdpy, xwindow,
+                        r.origin.x, r.origin.y,
+                        r.size.width, r.size.height,
+                        0);
+# endif  // !USE_BACKBUFFER
+
+  // Next time render_x11 is called, run the saver's reshape_cb.
+  resized_p = YES;
+}
+
+
 - (void) render_x11
 {
 # ifdef USE_IPHONE
@@ -664,26 +765,14 @@ double current_device_rotation (void)
   if (!initted_p) {
 
     if (! xdpy) {
-# ifdef USE_IPHONE
+# ifdef USE_BACKBUFFER
       NSAssert (backbuffer, @"no back buffer");
       xdpy = jwxyz_make_display (self, backbuffer);
 # else
       xdpy = jwxyz_make_display (self, 0);
 # endif
       xwindow = XRootWindow (xdpy, 0);
-
-# ifdef USE_IPHONE
-      jwxyz_window_resized (xdpy, xwindow,
-                            0, 0,
-                            backbuffer_size.width, backbuffer_size.height,
-                            backbuffer);
-# else
-      NSRect r = [self frame];
-      jwxyz_window_resized (xdpy, xwindow,
-                            r.origin.x, r.origin.y,
-                            r.size.width, r.size.height,
-                            0);
-# endif
+      [self resize_x11];
     }
 
     if (!setup_p) {
@@ -786,14 +875,14 @@ double current_device_rotation (void)
     // Xlib drawing takes place under the animation timer.
     [self resizeContext];
     NSRect r;
-# ifndef USE_IPHONE
-    r = [self frame];
-# else  // USE_IPHONE
+# ifndef USE_BACKBUFFER
+    r = [self bounds];
+# else  // USE_BACKBUFFER
     r.origin.x = 0;
     r.origin.y = 0;
     r.size.width  = backbuffer_size.width;
     r.size.height = backbuffer_size.height;
-# endif // USE_IPHONE
+# endif // USE_BACKBUFFER
 
     xsft->reshape_cb (xdpy, xwindow, xdata, r.size.width, r.size.height);
     resized_p = NO;
@@ -865,11 +954,9 @@ double current_device_rotation (void)
 }
 
 
-/* On MacOS:   drawRect does nothing, and animateOneFrame renders.
-   On iOS GL:  drawRect does nothing, and animateOneFrame renders.
-   On iOS X11: drawRect renders, and animateOneFrame marks the view dirty.
+/* drawRect always does nothing, and animateOneFrame renders bits to the
+   screen.  This is (now) true of both X11 and GL on both MacOS and iOS.
  */
-#ifndef USE_IPHONE
 
 - (void)drawRect:(NSRect)rect
 {
@@ -879,78 +966,58 @@ double current_device_rotation (void)
     [super drawRect:rect];    // early: black.
 }
 
+
+#ifndef USE_BACKBUFFER
+
 - (void) animateOneFrame
 {
   [self render_x11];
 }
 
-#else  // USE_IPHONE
+#else  // USE_BACKBUFFER
 
-- (void)drawRect:(NSRect)rect
+- (void) animateOneFrame
 {
   // Render X11 into the backing store bitmap...
 
   NSAssert (backbuffer, @"no back buffer");
-  UIGraphicsPushContext (backbuffer);
-  [self render_x11];
-  UIGraphicsPopContext();
-
-  // Then copy that bitmap to the screen.
 
-  CGContextRef cgc = UIGraphicsGetCurrentContext();
-
-  // Mask it to only update the parts that are exposed.
-//  CGContextClipToRect (cgc, rect);
-
-  double s = self.contentScaleFactor;
-  CGRect frame = [self frame];
+# ifdef USE_IPHONE
+  UIGraphicsPushContext (backbuffer);
+# endif
 
-  NSRect target;
-  target.size.width  = backbuffer_size.width;
-  target.size.height = backbuffer_size.height;
-  target.origin.x = (s * frame.size.width  - target.size.width)  / 2;
-  target.origin.y = (s * frame.size.height - target.size.height) / 2;
+  [self render_x11];
 
-  target.origin.x    /= s;
-  target.origin.y    /= s;
-  target.size.width  /= s;
-  target.size.height /= s;
+# ifdef USE_IPHONE
+  UIGraphicsPopContext();
+# endif
 
-  CGAffineTransform t = CGAffineTransformIdentity;
+# ifdef USE_IPHONE
+  // Then compute the transformations for rotation.
 
-  // Rotate around center
-  float cx = frame.size.width  / 2;
-  float cy = frame.size.height / 2;
-  t = CGAffineTransformTranslate (t, cx, cy);
-  t = CGAffineTransformRotate (t, -rot_current_angle / (180.0 / M_PI));
-  t = CGAffineTransformTranslate (t, -cx, -cy);
+  // The rotation origin for layer.affineTransform is in the center already.
+  CGAffineTransform t =
+    CGAffineTransformMakeRotation (rot_current_angle / (180.0 / M_PI));
 
-  // Flip Y axis
-  t = CGAffineTransformConcat (t,
-        CGAffineTransformMake ( 1, 0, 0,
-                               -1, 0, frame.size.height));
+  // Correct the aspect ratio.
+  CGRect frame = [self bounds];
+  double s = [self hackedContentScaleFactor];
+  t = CGAffineTransformScale(t,
+                             backbuffer_size.width  / (s * frame.size.width),
+                             backbuffer_size.height / (s * frame.size.height));
 
-  // Clear background (visible in corners of screen during rotation)
-  if (rotation_ratio != -1) {
-    CGContextSetGrayFillColor (cgc, 0, 1);
-    CGContextFillRect (cgc, frame);
-  }
+  self.layer.affineTransform = t;
+# endif // USE_IPHONE
 
-  CGContextConcatCTM (cgc, t);
+  // Then copy that bitmap to the screen, by just stuffing it into
+  // the layer.  The superclass drawRect method will handle the rest.
 
-  // Copy the backbuffer to the screen.
-  // Note that CGContextDrawImage measures in "points", not "pixels".
   CGImageRef img = CGBitmapContextCreateImage (backbuffer);
-  CGContextDrawImage (cgc, target, img);
+  self.layer.contents = (id)img;
   CGImageRelease (img);
 }
 
-- (void) animateOneFrame
-{
-  [self setNeedsDisplay];
-}
-
-#endif // !USE_IPHONE
+#endif // !USE_BACKBUFFER
 
 
 
@@ -958,26 +1025,8 @@ double current_device_rotation (void)
 {
   [super setFrame:newRect];
 
-# ifdef USE_IPHONE
-  [self createBackbuffer];
-# endif
-
-  resized_p = YES; // The reshape_cb runs in render_x11
-  if (xwindow) {   // inform Xlib that the window has changed now.
-# ifdef USE_IPHONE
-    NSAssert (backbuffer, @"no back buffer");
-    // The backbuffer is the rotated size, and so is the xwindow.
-    jwxyz_window_resized (xdpy, xwindow,
-                          0, 0,
-                          backbuffer_size.width, backbuffer_size.height,
-                          backbuffer);
-# else
-    jwxyz_window_resized (xdpy, xwindow,
-                          newRect.origin.x, newRect.origin.y,
-                          newRect.size.width, newRect.size.height,
-                          0);
-# endif
-  }
+  if (xwindow)     // inform Xlib that the window has changed now.
+    [self resize_x11];
 }
 
 
@@ -985,13 +1034,8 @@ double current_device_rotation (void)
 - (void) setFrameSize:(NSSize) newSize
 {
   [super setFrameSize:newSize];
-  resized_p = YES;
   if (xwindow)
-    jwxyz_window_resized (xdpy, xwindow,
-                          [self frame].origin.x,
-                          [self frame].origin.y,
-                          newSize.width, newSize.height,
-                          0); // backbuffer only on iPhone
+    [self resize_x11];
 }
 # endif // !USE_IPHONE
 
@@ -1085,12 +1129,12 @@ double current_device_rotation (void)
   NSPoint p = [[[e window] contentView] convertPoint:[e locationInWindow]
                                             toView:self];
 # ifdef USE_IPHONE
-  double s = self.contentScaleFactor;
+  double s = [self hackedContentScaleFactor];
 # else
   int s = 1;
 # endif
   int x = s * p.x;
-  int y = s * ([self frame].size.height - p.y);
+  int y = s * ([self bounds].size.height - p.y);
 
   xe.xany.type = type;
   switch (type) {
@@ -1258,12 +1302,12 @@ double current_device_rotation (void)
     [[n topViewController] becomeFirstResponder];
   }
 
-  // [self removeFromSuperview];
+  UIView *fader = [self superview];  // the "backgroundView" view is our parent
   [UIView animateWithDuration: 0.5
-          animations:^{ self.alpha = 0.0; }
+          animations:^{ fader.alpha = 0.0; }
           completion:^(BOOL finished) {
-            [self removeFromSuperview];
-             self.alpha = 1.0;
+            [fader removeFromSuperview];
+             fader.alpha = 1.0;
           }];
 }
 
@@ -1363,7 +1407,7 @@ double current_device_rotation (void)
   default:                                    angle_to = 0;   break;
   }
 
-  NSRect ff = [self frame];
+  NSRect ff = [self bounds];
 
   switch (orientation) {
   case UIDeviceOrientationLandscapeRight:      // from landscape
@@ -1402,6 +1446,9 @@ double current_device_rotation (void)
    because UIPanGestureRecognizer doesn't give us enough detail in its
    callbacks.
 
+   Currently we don't handle multi-touches (just the first touch) but
+   I'm leaving this comment here for future reference:
+
    In the simulator, multi-touch sequences look like this:
 
      touchesBegan [touchA, touchB]
@@ -1426,13 +1473,12 @@ double current_device_rotation (void)
    number of touchEnds matches the number of touchBegins.
  */
 
-static void
-rotate_mouse (int *x, int *y, int w, int h, int rot)
+- (void) rotateMouse:(int)rot x:(int*)x y:(int *)y w:(int)w h:(int)h
 {
-  int ox = *x, oy = *y;
-  if      (rot >  45 && rot <  135) { *x = oy;   *y = w-ox; }
-  else if (rot < -45 && rot > -135) { *x = h-oy; *y = ox;   }
-  else if (rot > 135 || rot < -135) { *x = w-ox; *y = h-oy; }
+  CGRect frame = [self bounds];                // Correct aspect ratio and scale.
+  double s = [self hackedContentScaleFactor];
+  *x *= (backbuffer_size.width  / frame.size.width)  / s;
+  *y *= (backbuffer_size.height / frame.size.height) / s;
 }
 
 
@@ -1460,10 +1506,11 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
   tap_time = 0;
 
   if (xsft->event_cb && xwindow) {
-    double s = self.contentScaleFactor;
+    double s = [self hackedContentScaleFactor];
     XEvent xe;
     memset (&xe, 0, sizeof(xe));
     int i = 0;
+    // #### 'frame' here or 'bounds'?
     int w = s * [self frame].size.width;
     int h = s * [self frame].size.height;
     for (UITouch *touch in touches) {
@@ -1473,7 +1520,8 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
       xe.xbutton.button = i + 1;
       xe.xbutton.x      = s * p.x;
       xe.xbutton.y      = s * p.y;
-      rotate_mouse (&xe.xbutton.x, &xe.xbutton.y, w, h, rot_current_angle);
+      [self rotateMouse: rot_current_angle
+            x: &xe.xbutton.x y: &xe.xbutton.y w: w h: h];
       jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y);
 
       // Ignore return code: don't care whether the hack handled it.
@@ -1493,10 +1541,11 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
 {
   if (xsft->event_cb && xwindow) {
-    double s = self.contentScaleFactor;
+    double s = [self hackedContentScaleFactor];
     XEvent xe;
     memset (&xe, 0, sizeof(xe));
     int i = 0;
+    // #### 'frame' here or 'bounds'?
     int w = s * [self frame].size.width;
     int h = s * [self frame].size.height;
     for (UITouch *touch in touches) {
@@ -1517,7 +1566,8 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
       xe.xbutton.button = i + 1;
       xe.xbutton.x      = s * p.x;
       xe.xbutton.y      = s * p.y;
-      rotate_mouse (&xe.xbutton.x, &xe.xbutton.y, w, h, rot_current_angle);
+      [self rotateMouse: rot_current_angle
+            x: &xe.xbutton.x y: &xe.xbutton.y w: w h: h];
       jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y);
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
       i++;
@@ -1530,10 +1580,11 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
 {
   if (xsft->event_cb && xwindow) {
-    double s = self.contentScaleFactor;
+    double s = [self hackedContentScaleFactor];
     XEvent xe;
     memset (&xe, 0, sizeof(xe));
     int i = 0;
+    // #### 'frame' here or 'bounds'?
     int w = s * [self frame].size.width;
     int h = s * [self frame].size.height;
     for (UITouch *touch in touches) {
@@ -1541,7 +1592,8 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
       xe.xany.type      = MotionNotify;
       xe.xmotion.x      = s * p.x;
       xe.xmotion.y      = s * p.y;
-      rotate_mouse (&xe.xbutton.x, &xe.xbutton.y, w, h, rot_current_angle);
+      [self rotateMouse: rot_current_angle
+            x: &xe.xbutton.x y: &xe.xbutton.y w: w h: h];
       jwxyz_mouse_moved (xdpy, xwindow, xe.xmotion.x, xe.xmotion.y);
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
       i++;
index c1677625e143482102dad9c0b6d0d679199d6874..b6757a476b84962f71589abb5d2f2b23ea924652 100644 (file)
@@ -16,8 +16,8 @@ XScreenSaver\
 by Jamie Zawinski\
 and many others\
 \
-version 5.18\
-03-Jul-2012\
+version 5.19\
+26-Jul-2012\
 \
 {\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}}
 \
diff --git a/OSX/build-fntable.pl b/OSX/build-fntable.pl
new file mode 100755 (executable)
index 0000000..f5e3b1f
--- /dev/null
@@ -0,0 +1,113 @@
+#!/usr/bin/perl -w
+# Copyright Â© 2012 Jamie Zawinski <jwz@jwz.org>
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation.  No representations are made about the suitability of this
+# software for any purpose.  It is provided "as is" without express or 
+# implied warranty.
+#
+# Generates a .h file that lists all the function tables we use, because
+# CFBundleGetDataPointerForName doesn't work in "Archive" builds.
+# What a crock of shit.
+#
+# There's no real way to integrate this into the Xcode build system, so
+# run this manually each time a new saver is added to the iOS app.
+#
+# Created: 14-Jul-2012.
+
+require 5;
+#use diagnostics;      # Fails on some MacOS 10.5 systems
+use strict;
+
+my $progname = $0; $progname =~ s@.*/@@g;
+my $version = q{ $Revision: 1.1 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+
+my $verbose = 1;
+
+sub build_h($$) {
+  my ($app_dir, $outfile) = @_;
+
+  opendir (my $dh, $app_dir) || error ("$app_dir: $!");
+  print STDERR "$progname: scanning $app_dir...\n" if ($verbose > 1);
+
+  my @names = ();
+  foreach (sort (readdir ($dh))) {
+    next unless (m/^(.*)\.xml$/);
+    push @names, $1;
+  }
+  closedir $dh;
+
+  my $suf = 'xscreensaver_function_table';
+
+  my $body = "extern struct $suf";
+  foreach my $s (@names) {
+    $body .= "\n *${s}_${suf},";
+  }
+  $body =~ s/,\s*$/;/s;
+
+  $body .= ("\n\n" .
+            "static NSDictionary *make_function_tables_dict(void)\n{\n" .
+            "  return\n    [NSDictionary dictionaryWithObjectsAndKeys:\n");
+  foreach my $s (@names) {
+    $body .= "\t[NSValue valueWithPointer:&${s}_${suf}], @\"${s}\",\n";
+  }
+  $body .= ("\tnil];\n" .
+            "}\n");
+
+  my $obody = '';
+  if (open (my $in, '<', $outfile)) {
+    local $/ = undef;  # read entire file
+    $obody = <$in>;
+    close $in;
+  }
+
+  if ($obody eq $body) {
+    print STDERR "$progname: $outfile: unchanged\n" if ($verbose > 1);
+  } else {
+    my $file_tmp = "$outfile.tmp";
+    open (my $out, '>', $file_tmp) || error ("$file_tmp: $!");
+    print $out $body || error ("$file_tmp: $!");
+    close $out || error ("$file_tmp: $!");
+
+    if (!rename ("$file_tmp", "$outfile")) {
+      unlink "$file_tmp";
+      error ("mv \"$file_tmp\" \"$outfile\": $!");
+    }
+    print STDERR "$progname: wrote $outfile\n" if ($verbose);
+  }
+}
+
+
+sub error($) {
+  my ($err) = @_;
+  print STDERR "$progname: $err\n";
+  exit 1;
+}
+
+sub usage() {
+  print STDERR "usage: $progname [--verbose] program.app output.h\n";
+  exit 1;
+}
+
+sub main() {
+
+  my ($app, $out);
+  while ($_ = $ARGV[0]) {
+    shift @ARGV;
+    if    (m/^--?verbose$/s)  { $verbose++; }
+    elsif (m/^-v+$/)          { $verbose += length($_)-1; }
+    elsif (m/^--?q(uiet)?$/s) { $verbose = 0; }
+    elsif (m/^-/s)            { usage(); }
+    elsif (! $app)            { $app = $_; }
+    elsif (! $out)            { $out = $_; }
+    else                      { usage(); }
+  }
+  usage() unless ($out && $app);
+  build_h ($app, $out);
+}
+
+main();
+exit 0;
index a296b33b1d5eeec819e376e8d66f32172c3b5324..fc4ec6e73e36ee3b5887c4e0404db677d02eb0b4 100644 (file)
@@ -9,7 +9,7 @@
        <key>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleVersion</key>
-       <string>5.18</string>
+       <string>5.19</string>
        <key>NSMainNibFile</key>
        <string>iSaverRunner</string>
        <key>CFBundlePackageType</key>
@@ -19,7 +19,7 @@
        <key>UIStatusBarHidden</key>
        <true/>
        <key>CFBundleShortVersionString</key>
-       <string>5.18</string>
+       <string>5.19</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>UIRequiredDeviceCapabilities</key>
index ac76fdc31fb7cabb0949f76f17e7fb388cdb9ea1..044158b8383ddf44d7498473d970ed9cafa7dcaf 100755 (executable)
 # Created: 20-Jun-2012.
 
 require 5;
-use diagnostics;
+#use diagnostics;      # Fails on some MacOS 10.5 - 10.7 systems
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.1 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
+my $version = q{ $Revision: 1.2 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
 
 my $verbose = 0;
 
diff --git a/OSX/ios_function_tables.h b/OSX/ios_function_tables.h
new file mode 100644 (file)
index 0000000..5854587
--- /dev/null
@@ -0,0 +1,396 @@
+extern struct xscreensaver_function_table
+ *abstractile_xscreensaver_function_table,
+ *anemone_xscreensaver_function_table,
+ *anemotaxis_xscreensaver_function_table,
+ *antinspect_xscreensaver_function_table,
+ *antmaze_xscreensaver_function_table,
+ *antspotlight_xscreensaver_function_table,
+ *apollonian_xscreensaver_function_table,
+ *apple2_xscreensaver_function_table,
+ *atlantis_xscreensaver_function_table,
+ *attraction_xscreensaver_function_table,
+ *atunnel_xscreensaver_function_table,
+ *barcode_xscreensaver_function_table,
+ *blaster_xscreensaver_function_table,
+ *blinkbox_xscreensaver_function_table,
+ *blitspin_xscreensaver_function_table,
+ *blocktube_xscreensaver_function_table,
+ *boing_xscreensaver_function_table,
+ *bouboule_xscreensaver_function_table,
+ *bouncingcow_xscreensaver_function_table,
+ *boxed_xscreensaver_function_table,
+ *boxfit_xscreensaver_function_table,
+ *braid_xscreensaver_function_table,
+ *bsod_xscreensaver_function_table,
+ *bubble3d_xscreensaver_function_table,
+ *bumps_xscreensaver_function_table,
+ *cage_xscreensaver_function_table,
+ *carousel_xscreensaver_function_table,
+ *ccurve_xscreensaver_function_table,
+ *celtic_xscreensaver_function_table,
+ *circuit_xscreensaver_function_table,
+ *cloudlife_xscreensaver_function_table,
+ *companioncube_xscreensaver_function_table,
+ *compass_xscreensaver_function_table,
+ *coral_xscreensaver_function_table,
+ *crackberg_xscreensaver_function_table,
+ *crystal_xscreensaver_function_table,
+ *cube21_xscreensaver_function_table,
+ *cubenetic_xscreensaver_function_table,
+ *cubestorm_xscreensaver_function_table,
+ *cubicgrid_xscreensaver_function_table,
+ *cwaves_xscreensaver_function_table,
+ *cynosure_xscreensaver_function_table,
+ *dangerball_xscreensaver_function_table,
+ *decayscreen_xscreensaver_function_table,
+ *deco_xscreensaver_function_table,
+ *deluxe_xscreensaver_function_table,
+ *demon_xscreensaver_function_table,
+ *discrete_xscreensaver_function_table,
+ *distort_xscreensaver_function_table,
+ *dnalogo_xscreensaver_function_table,
+ *drift_xscreensaver_function_table,
+ *endgame_xscreensaver_function_table,
+ *engine_xscreensaver_function_table,
+ *epicycle_xscreensaver_function_table,
+ *eruption_xscreensaver_function_table,
+ *euler2d_xscreensaver_function_table,
+ *fadeplot_xscreensaver_function_table,
+ *fiberlamp_xscreensaver_function_table,
+ *fireworkx_xscreensaver_function_table,
+ *flame_xscreensaver_function_table,
+ *flipflop_xscreensaver_function_table,
+ *flipscreen3d_xscreensaver_function_table,
+ *fliptext_xscreensaver_function_table,
+ *flow_xscreensaver_function_table,
+ *fluidballs_xscreensaver_function_table,
+ *flyingtoasters_xscreensaver_function_table,
+ *fontglide_xscreensaver_function_table,
+ *fuzzyflakes_xscreensaver_function_table,
+ *galaxy_xscreensaver_function_table,
+ *gears_xscreensaver_function_table,
+ *gflux_xscreensaver_function_table,
+ *glblur_xscreensaver_function_table,
+ *glcells_xscreensaver_function_table,
+ *gleidescope_xscreensaver_function_table,
+ *glhanoi_xscreensaver_function_table,
+ *glknots_xscreensaver_function_table,
+ *glmatrix_xscreensaver_function_table,
+ *glplanet_xscreensaver_function_table,
+ *glschool_xscreensaver_function_table,
+ *glslideshow_xscreensaver_function_table,
+ *glsnake_xscreensaver_function_table,
+ *gltext_xscreensaver_function_table,
+ *goop_xscreensaver_function_table,
+ *grav_xscreensaver_function_table,
+ *greynetic_xscreensaver_function_table,
+ *halftone_xscreensaver_function_table,
+ *halo_xscreensaver_function_table,
+ *helix_xscreensaver_function_table,
+ *hilbert_xscreensaver_function_table,
+ *hopalong_xscreensaver_function_table,
+ *hypertorus_xscreensaver_function_table,
+ *hypnowheel_xscreensaver_function_table,
+ *ifs_xscreensaver_function_table,
+ *imsmap_xscreensaver_function_table,
+ *interaggregate_xscreensaver_function_table,
+ *interference_xscreensaver_function_table,
+ *intermomentary_xscreensaver_function_table,
+ *jigglypuff_xscreensaver_function_table,
+ *jigsaw_xscreensaver_function_table,
+ *juggler3d_xscreensaver_function_table,
+ *julia_xscreensaver_function_table,
+ *kaleidescope_xscreensaver_function_table,
+ *klein_xscreensaver_function_table,
+ *kumppa_xscreensaver_function_table,
+ *lament_xscreensaver_function_table,
+ *lavalite_xscreensaver_function_table,
+ *loop_xscreensaver_function_table,
+ *m6502_xscreensaver_function_table,
+ *maze_xscreensaver_function_table,
+ *memscroller_xscreensaver_function_table,
+ *menger_xscreensaver_function_table,
+ *metaballs_xscreensaver_function_table,
+ *mirrorblob_xscreensaver_function_table,
+ *moebius_xscreensaver_function_table,
+ *moebiusgears_xscreensaver_function_table,
+ *moire_xscreensaver_function_table,
+ *moire2_xscreensaver_function_table,
+ *molecule_xscreensaver_function_table,
+ *morph3d_xscreensaver_function_table,
+ *mountain_xscreensaver_function_table,
+ *munch_xscreensaver_function_table,
+ *nerverot_xscreensaver_function_table,
+ *noof_xscreensaver_function_table,
+ *noseguy_xscreensaver_function_table,
+ *pacman_xscreensaver_function_table,
+ *pedal_xscreensaver_function_table,
+ *penetrate_xscreensaver_function_table,
+ *penrose_xscreensaver_function_table,
+ *petri_xscreensaver_function_table,
+ *phosphor_xscreensaver_function_table,
+ *photopile_xscreensaver_function_table,
+ *piecewise_xscreensaver_function_table,
+ *pinion_xscreensaver_function_table,
+ *pipes_xscreensaver_function_table,
+ *polyhedra_xscreensaver_function_table,
+ *polyominoes_xscreensaver_function_table,
+ *polytopes_xscreensaver_function_table,
+ *pong_xscreensaver_function_table,
+ *popsquares_xscreensaver_function_table,
+ *providence_xscreensaver_function_table,
+ *pulsar_xscreensaver_function_table,
+ *pyro_xscreensaver_function_table,
+ *qix_xscreensaver_function_table,
+ *queens_xscreensaver_function_table,
+ *rdbomb_xscreensaver_function_table,
+ *ripples_xscreensaver_function_table,
+ *rocks_xscreensaver_function_table,
+ *rorschach_xscreensaver_function_table,
+ *rotzoomer_xscreensaver_function_table,
+ *rubik_xscreensaver_function_table,
+ *rubikblocks_xscreensaver_function_table,
+ *sballs_xscreensaver_function_table,
+ *shadebobs_xscreensaver_function_table,
+ *sierpinski_xscreensaver_function_table,
+ *sierpinski3d_xscreensaver_function_table,
+ *skytentacles_xscreensaver_function_table,
+ *slidescreen_xscreensaver_function_table,
+ *slip_xscreensaver_function_table,
+ *sonar_xscreensaver_function_table,
+ *speedmine_xscreensaver_function_table,
+ *spheremonics_xscreensaver_function_table,
+ *spotlight_xscreensaver_function_table,
+ *sproingies_xscreensaver_function_table,
+ *squiral_xscreensaver_function_table,
+ *stairs_xscreensaver_function_table,
+ *starfish_xscreensaver_function_table,
+ *starwars_xscreensaver_function_table,
+ *stonerview_xscreensaver_function_table,
+ *strange_xscreensaver_function_table,
+ *substrate_xscreensaver_function_table,
+ *superquadrics_xscreensaver_function_table,
+ *surfaces_xscreensaver_function_table,
+ *swirl_xscreensaver_function_table,
+ *tangram_xscreensaver_function_table,
+ *thornbird_xscreensaver_function_table,
+ *timetunnel_xscreensaver_function_table,
+ *topblock_xscreensaver_function_table,
+ *triangle_xscreensaver_function_table,
+ *tronbit_xscreensaver_function_table,
+ *truchet_xscreensaver_function_table,
+ *twang_xscreensaver_function_table,
+ *vermiculate_xscreensaver_function_table,
+ *voronoi_xscreensaver_function_table,
+ *wander_xscreensaver_function_table,
+ *whirlwindwarp_xscreensaver_function_table,
+ *wormhole_xscreensaver_function_table,
+ *xanalogtv_xscreensaver_function_table,
+ *xflame_xscreensaver_function_table,
+ *xjack_xscreensaver_function_table,
+ *xlyap_xscreensaver_function_table,
+ *xmatrix_xscreensaver_function_table,
+ *xrayswarm_xscreensaver_function_table,
+ *xspirograph_xscreensaver_function_table,
+ *zoom_xscreensaver_function_table;
+
+static NSDictionary *make_function_tables_dict(void)
+{
+  return
+    [NSDictionary dictionaryWithObjectsAndKeys:
+       [NSValue valueWithPointer:&abstractile_xscreensaver_function_table], @"abstractile",
+       [NSValue valueWithPointer:&anemone_xscreensaver_function_table], @"anemone",
+       [NSValue valueWithPointer:&anemotaxis_xscreensaver_function_table], @"anemotaxis",
+       [NSValue valueWithPointer:&antinspect_xscreensaver_function_table], @"antinspect",
+       [NSValue valueWithPointer:&antmaze_xscreensaver_function_table], @"antmaze",
+       [NSValue valueWithPointer:&antspotlight_xscreensaver_function_table], @"antspotlight",
+       [NSValue valueWithPointer:&apollonian_xscreensaver_function_table], @"apollonian",
+       [NSValue valueWithPointer:&apple2_xscreensaver_function_table], @"apple2",
+       [NSValue valueWithPointer:&atlantis_xscreensaver_function_table], @"atlantis",
+       [NSValue valueWithPointer:&attraction_xscreensaver_function_table], @"attraction",
+       [NSValue valueWithPointer:&atunnel_xscreensaver_function_table], @"atunnel",
+       [NSValue valueWithPointer:&barcode_xscreensaver_function_table], @"barcode",
+       [NSValue valueWithPointer:&blaster_xscreensaver_function_table], @"blaster",
+       [NSValue valueWithPointer:&blinkbox_xscreensaver_function_table], @"blinkbox",
+       [NSValue valueWithPointer:&blitspin_xscreensaver_function_table], @"blitspin",
+       [NSValue valueWithPointer:&blocktube_xscreensaver_function_table], @"blocktube",
+       [NSValue valueWithPointer:&boing_xscreensaver_function_table], @"boing",
+       [NSValue valueWithPointer:&bouboule_xscreensaver_function_table], @"bouboule",
+       [NSValue valueWithPointer:&bouncingcow_xscreensaver_function_table], @"bouncingcow",
+       [NSValue valueWithPointer:&boxed_xscreensaver_function_table], @"boxed",
+       [NSValue valueWithPointer:&boxfit_xscreensaver_function_table], @"boxfit",
+       [NSValue valueWithPointer:&braid_xscreensaver_function_table], @"braid",
+       [NSValue valueWithPointer:&bsod_xscreensaver_function_table], @"bsod",
+       [NSValue valueWithPointer:&bubble3d_xscreensaver_function_table], @"bubble3d",
+       [NSValue valueWithPointer:&bumps_xscreensaver_function_table], @"bumps",
+       [NSValue valueWithPointer:&cage_xscreensaver_function_table], @"cage",
+       [NSValue valueWithPointer:&carousel_xscreensaver_function_table], @"carousel",
+       [NSValue valueWithPointer:&ccurve_xscreensaver_function_table], @"ccurve",
+       [NSValue valueWithPointer:&celtic_xscreensaver_function_table], @"celtic",
+       [NSValue valueWithPointer:&circuit_xscreensaver_function_table], @"circuit",
+       [NSValue valueWithPointer:&cloudlife_xscreensaver_function_table], @"cloudlife",
+       [NSValue valueWithPointer:&companioncube_xscreensaver_function_table], @"companioncube",
+       [NSValue valueWithPointer:&compass_xscreensaver_function_table], @"compass",
+       [NSValue valueWithPointer:&coral_xscreensaver_function_table], @"coral",
+       [NSValue valueWithPointer:&crackberg_xscreensaver_function_table], @"crackberg",
+       [NSValue valueWithPointer:&crystal_xscreensaver_function_table], @"crystal",
+       [NSValue valueWithPointer:&cube21_xscreensaver_function_table], @"cube21",
+       [NSValue valueWithPointer:&cubenetic_xscreensaver_function_table], @"cubenetic",
+       [NSValue valueWithPointer:&cubestorm_xscreensaver_function_table], @"cubestorm",
+       [NSValue valueWithPointer:&cubicgrid_xscreensaver_function_table], @"cubicgrid",
+       [NSValue valueWithPointer:&cwaves_xscreensaver_function_table], @"cwaves",
+       [NSValue valueWithPointer:&cynosure_xscreensaver_function_table], @"cynosure",
+       [NSValue valueWithPointer:&dangerball_xscreensaver_function_table], @"dangerball",
+       [NSValue valueWithPointer:&decayscreen_xscreensaver_function_table], @"decayscreen",
+       [NSValue valueWithPointer:&deco_xscreensaver_function_table], @"deco",
+       [NSValue valueWithPointer:&deluxe_xscreensaver_function_table], @"deluxe",
+       [NSValue valueWithPointer:&demon_xscreensaver_function_table], @"demon",
+       [NSValue valueWithPointer:&discrete_xscreensaver_function_table], @"discrete",
+       [NSValue valueWithPointer:&distort_xscreensaver_function_table], @"distort",
+       [NSValue valueWithPointer:&dnalogo_xscreensaver_function_table], @"dnalogo",
+       [NSValue valueWithPointer:&drift_xscreensaver_function_table], @"drift",
+       [NSValue valueWithPointer:&endgame_xscreensaver_function_table], @"endgame",
+       [NSValue valueWithPointer:&engine_xscreensaver_function_table], @"engine",
+       [NSValue valueWithPointer:&epicycle_xscreensaver_function_table], @"epicycle",
+       [NSValue valueWithPointer:&eruption_xscreensaver_function_table], @"eruption",
+       [NSValue valueWithPointer:&euler2d_xscreensaver_function_table], @"euler2d",
+       [NSValue valueWithPointer:&fadeplot_xscreensaver_function_table], @"fadeplot",
+       [NSValue valueWithPointer:&fiberlamp_xscreensaver_function_table], @"fiberlamp",
+       [NSValue valueWithPointer:&fireworkx_xscreensaver_function_table], @"fireworkx",
+       [NSValue valueWithPointer:&flame_xscreensaver_function_table], @"flame",
+       [NSValue valueWithPointer:&flipflop_xscreensaver_function_table], @"flipflop",
+       [NSValue valueWithPointer:&flipscreen3d_xscreensaver_function_table], @"flipscreen3d",
+       [NSValue valueWithPointer:&fliptext_xscreensaver_function_table], @"fliptext",
+       [NSValue valueWithPointer:&flow_xscreensaver_function_table], @"flow",
+       [NSValue valueWithPointer:&fluidballs_xscreensaver_function_table], @"fluidballs",
+       [NSValue valueWithPointer:&flyingtoasters_xscreensaver_function_table], @"flyingtoasters",
+       [NSValue valueWithPointer:&fontglide_xscreensaver_function_table], @"fontglide",
+       [NSValue valueWithPointer:&fuzzyflakes_xscreensaver_function_table], @"fuzzyflakes",
+       [NSValue valueWithPointer:&galaxy_xscreensaver_function_table], @"galaxy",
+       [NSValue valueWithPointer:&gears_xscreensaver_function_table], @"gears",
+       [NSValue valueWithPointer:&gflux_xscreensaver_function_table], @"gflux",
+       [NSValue valueWithPointer:&glblur_xscreensaver_function_table], @"glblur",
+       [NSValue valueWithPointer:&glcells_xscreensaver_function_table], @"glcells",
+       [NSValue valueWithPointer:&gleidescope_xscreensaver_function_table], @"gleidescope",
+       [NSValue valueWithPointer:&glhanoi_xscreensaver_function_table], @"glhanoi",
+       [NSValue valueWithPointer:&glknots_xscreensaver_function_table], @"glknots",
+       [NSValue valueWithPointer:&glmatrix_xscreensaver_function_table], @"glmatrix",
+       [NSValue valueWithPointer:&glplanet_xscreensaver_function_table], @"glplanet",
+       [NSValue valueWithPointer:&glschool_xscreensaver_function_table], @"glschool",
+       [NSValue valueWithPointer:&glslideshow_xscreensaver_function_table], @"glslideshow",
+       [NSValue valueWithPointer:&glsnake_xscreensaver_function_table], @"glsnake",
+       [NSValue valueWithPointer:&gltext_xscreensaver_function_table], @"gltext",
+       [NSValue valueWithPointer:&goop_xscreensaver_function_table], @"goop",
+       [NSValue valueWithPointer:&grav_xscreensaver_function_table], @"grav",
+       [NSValue valueWithPointer:&greynetic_xscreensaver_function_table], @"greynetic",
+       [NSValue valueWithPointer:&halftone_xscreensaver_function_table], @"halftone",
+       [NSValue valueWithPointer:&halo_xscreensaver_function_table], @"halo",
+       [NSValue valueWithPointer:&helix_xscreensaver_function_table], @"helix",
+       [NSValue valueWithPointer:&hilbert_xscreensaver_function_table], @"hilbert",
+       [NSValue valueWithPointer:&hopalong_xscreensaver_function_table], @"hopalong",
+       [NSValue valueWithPointer:&hypertorus_xscreensaver_function_table], @"hypertorus",
+       [NSValue valueWithPointer:&hypnowheel_xscreensaver_function_table], @"hypnowheel",
+       [NSValue valueWithPointer:&ifs_xscreensaver_function_table], @"ifs",
+       [NSValue valueWithPointer:&imsmap_xscreensaver_function_table], @"imsmap",
+       [NSValue valueWithPointer:&interaggregate_xscreensaver_function_table], @"interaggregate",
+       [NSValue valueWithPointer:&interference_xscreensaver_function_table], @"interference",
+       [NSValue valueWithPointer:&intermomentary_xscreensaver_function_table], @"intermomentary",
+       [NSValue valueWithPointer:&jigglypuff_xscreensaver_function_table], @"jigglypuff",
+       [NSValue valueWithPointer:&jigsaw_xscreensaver_function_table], @"jigsaw",
+       [NSValue valueWithPointer:&juggler3d_xscreensaver_function_table], @"juggler3d",
+       [NSValue valueWithPointer:&julia_xscreensaver_function_table], @"julia",
+       [NSValue valueWithPointer:&kaleidescope_xscreensaver_function_table], @"kaleidescope",
+       [NSValue valueWithPointer:&klein_xscreensaver_function_table], @"klein",
+       [NSValue valueWithPointer:&kumppa_xscreensaver_function_table], @"kumppa",
+       [NSValue valueWithPointer:&lament_xscreensaver_function_table], @"lament",
+       [NSValue valueWithPointer:&lavalite_xscreensaver_function_table], @"lavalite",
+       [NSValue valueWithPointer:&loop_xscreensaver_function_table], @"loop",
+       [NSValue valueWithPointer:&m6502_xscreensaver_function_table], @"m6502",
+       [NSValue valueWithPointer:&maze_xscreensaver_function_table], @"maze",
+       [NSValue valueWithPointer:&memscroller_xscreensaver_function_table], @"memscroller",
+       [NSValue valueWithPointer:&menger_xscreensaver_function_table], @"menger",
+       [NSValue valueWithPointer:&metaballs_xscreensaver_function_table], @"metaballs",
+       [NSValue valueWithPointer:&mirrorblob_xscreensaver_function_table], @"mirrorblob",
+       [NSValue valueWithPointer:&moebius_xscreensaver_function_table], @"moebius",
+       [NSValue valueWithPointer:&moebiusgears_xscreensaver_function_table], @"moebiusgears",
+       [NSValue valueWithPointer:&moire_xscreensaver_function_table], @"moire",
+       [NSValue valueWithPointer:&moire2_xscreensaver_function_table], @"moire2",
+       [NSValue valueWithPointer:&molecule_xscreensaver_function_table], @"molecule",
+       [NSValue valueWithPointer:&morph3d_xscreensaver_function_table], @"morph3d",
+       [NSValue valueWithPointer:&mountain_xscreensaver_function_table], @"mountain",
+       [NSValue valueWithPointer:&munch_xscreensaver_function_table], @"munch",
+       [NSValue valueWithPointer:&nerverot_xscreensaver_function_table], @"nerverot",
+       [NSValue valueWithPointer:&noof_xscreensaver_function_table], @"noof",
+       [NSValue valueWithPointer:&noseguy_xscreensaver_function_table], @"noseguy",
+       [NSValue valueWithPointer:&pacman_xscreensaver_function_table], @"pacman",
+       [NSValue valueWithPointer:&pedal_xscreensaver_function_table], @"pedal",
+       [NSValue valueWithPointer:&penetrate_xscreensaver_function_table], @"penetrate",
+       [NSValue valueWithPointer:&penrose_xscreensaver_function_table], @"penrose",
+       [NSValue valueWithPointer:&petri_xscreensaver_function_table], @"petri",
+       [NSValue valueWithPointer:&phosphor_xscreensaver_function_table], @"phosphor",
+       [NSValue valueWithPointer:&photopile_xscreensaver_function_table], @"photopile",
+       [NSValue valueWithPointer:&piecewise_xscreensaver_function_table], @"piecewise",
+       [NSValue valueWithPointer:&pinion_xscreensaver_function_table], @"pinion",
+       [NSValue valueWithPointer:&pipes_xscreensaver_function_table], @"pipes",
+       [NSValue valueWithPointer:&polyhedra_xscreensaver_function_table], @"polyhedra",
+       [NSValue valueWithPointer:&polyominoes_xscreensaver_function_table], @"polyominoes",
+       [NSValue valueWithPointer:&polytopes_xscreensaver_function_table], @"polytopes",
+       [NSValue valueWithPointer:&pong_xscreensaver_function_table], @"pong",
+       [NSValue valueWithPointer:&popsquares_xscreensaver_function_table], @"popsquares",
+       [NSValue valueWithPointer:&providence_xscreensaver_function_table], @"providence",
+       [NSValue valueWithPointer:&pulsar_xscreensaver_function_table], @"pulsar",
+       [NSValue valueWithPointer:&pyro_xscreensaver_function_table], @"pyro",
+       [NSValue valueWithPointer:&qix_xscreensaver_function_table], @"qix",
+       [NSValue valueWithPointer:&queens_xscreensaver_function_table], @"queens",
+       [NSValue valueWithPointer:&rdbomb_xscreensaver_function_table], @"rdbomb",
+       [NSValue valueWithPointer:&ripples_xscreensaver_function_table], @"ripples",
+       [NSValue valueWithPointer:&rocks_xscreensaver_function_table], @"rocks",
+       [NSValue valueWithPointer:&rorschach_xscreensaver_function_table], @"rorschach",
+       [NSValue valueWithPointer:&rotzoomer_xscreensaver_function_table], @"rotzoomer",
+       [NSValue valueWithPointer:&rubik_xscreensaver_function_table], @"rubik",
+       [NSValue valueWithPointer:&rubikblocks_xscreensaver_function_table], @"rubikblocks",
+       [NSValue valueWithPointer:&sballs_xscreensaver_function_table], @"sballs",
+       [NSValue valueWithPointer:&shadebobs_xscreensaver_function_table], @"shadebobs",
+       [NSValue valueWithPointer:&sierpinski_xscreensaver_function_table], @"sierpinski",
+       [NSValue valueWithPointer:&sierpinski3d_xscreensaver_function_table], @"sierpinski3d",
+       [NSValue valueWithPointer:&skytentacles_xscreensaver_function_table], @"skytentacles",
+       [NSValue valueWithPointer:&slidescreen_xscreensaver_function_table], @"slidescreen",
+       [NSValue valueWithPointer:&slip_xscreensaver_function_table], @"slip",
+       [NSValue valueWithPointer:&sonar_xscreensaver_function_table], @"sonar",
+       [NSValue valueWithPointer:&speedmine_xscreensaver_function_table], @"speedmine",
+       [NSValue valueWithPointer:&spheremonics_xscreensaver_function_table], @"spheremonics",
+       [NSValue valueWithPointer:&spotlight_xscreensaver_function_table], @"spotlight",
+       [NSValue valueWithPointer:&sproingies_xscreensaver_function_table], @"sproingies",
+       [NSValue valueWithPointer:&squiral_xscreensaver_function_table], @"squiral",
+       [NSValue valueWithPointer:&stairs_xscreensaver_function_table], @"stairs",
+       [NSValue valueWithPointer:&starfish_xscreensaver_function_table], @"starfish",
+       [NSValue valueWithPointer:&starwars_xscreensaver_function_table], @"starwars",
+       [NSValue valueWithPointer:&stonerview_xscreensaver_function_table], @"stonerview",
+       [NSValue valueWithPointer:&strange_xscreensaver_function_table], @"strange",
+       [NSValue valueWithPointer:&substrate_xscreensaver_function_table], @"substrate",
+       [NSValue valueWithPointer:&superquadrics_xscreensaver_function_table], @"superquadrics",
+       [NSValue valueWithPointer:&surfaces_xscreensaver_function_table], @"surfaces",
+       [NSValue valueWithPointer:&swirl_xscreensaver_function_table], @"swirl",
+       [NSValue valueWithPointer:&tangram_xscreensaver_function_table], @"tangram",
+       [NSValue valueWithPointer:&thornbird_xscreensaver_function_table], @"thornbird",
+       [NSValue valueWithPointer:&timetunnel_xscreensaver_function_table], @"timetunnel",
+       [NSValue valueWithPointer:&topblock_xscreensaver_function_table], @"topblock",
+       [NSValue valueWithPointer:&triangle_xscreensaver_function_table], @"triangle",
+       [NSValue valueWithPointer:&tronbit_xscreensaver_function_table], @"tronbit",
+       [NSValue valueWithPointer:&truchet_xscreensaver_function_table], @"truchet",
+       [NSValue valueWithPointer:&twang_xscreensaver_function_table], @"twang",
+       [NSValue valueWithPointer:&vermiculate_xscreensaver_function_table], @"vermiculate",
+       [NSValue valueWithPointer:&voronoi_xscreensaver_function_table], @"voronoi",
+       [NSValue valueWithPointer:&wander_xscreensaver_function_table], @"wander",
+       [NSValue valueWithPointer:&whirlwindwarp_xscreensaver_function_table], @"whirlwindwarp",
+       [NSValue valueWithPointer:&wormhole_xscreensaver_function_table], @"wormhole",
+       [NSValue valueWithPointer:&xanalogtv_xscreensaver_function_table], @"xanalogtv",
+       [NSValue valueWithPointer:&xflame_xscreensaver_function_table], @"xflame",
+       [NSValue valueWithPointer:&xjack_xscreensaver_function_table], @"xjack",
+       [NSValue valueWithPointer:&xlyap_xscreensaver_function_table], @"xlyap",
+       [NSValue valueWithPointer:&xmatrix_xscreensaver_function_table], @"xmatrix",
+       [NSValue valueWithPointer:&xrayswarm_xscreensaver_function_table], @"xrayswarm",
+       [NSValue valueWithPointer:&xspirograph_xscreensaver_function_table], @"xspirograph",
+       [NSValue valueWithPointer:&zoom_xscreensaver_function_table], @"zoom",
+       nil];
+}
index b7e99525b6be63c925dd25c8cd03cf3f11e1dd0d..f9dc5b007b163376c6fd8303b50064cd2164d3bd 100644 (file)
 #import "jwxyz-timers.h"
 #import "yarandom.h"
 
+#ifdef USE_IPHONE
+# define USE_BACKBUFFER  /* must be in sync with XScreenSaverView.h */
+#endif
+
 #undef  Assert
 #define Assert(C,S) do { if (!(C)) jwxyz_abort ("%s",(S)); } while(0)
 
@@ -194,7 +198,7 @@ jwxyz_free_display (Display *dpy)
 void *
 jwxyz_window_view (Window w)
 {
-  Assert (w->type == WINDOW, "not a window");
+  Assert (w && w->type == WINDOW, "not a window");
   return w->window.view;
 }
 
@@ -221,7 +225,7 @@ jwxyz_window_resized (Display *dpy, Window w,
                       void *cgc_arg)
 {
   CGContextRef cgc = (CGContextRef) cgc_arg;
-  Assert (w->type == WINDOW, "not a window");
+  Assert (w && w->type == WINDOW, "not a window");
   w->frame.origin.x    = new_x;
   w->frame.origin.y    = new_y;
   w->frame.size.width  = new_width;
@@ -270,7 +274,7 @@ jwxyz_window_resized (Display *dpy, Window w,
 void
 jwxyz_mouse_moved (Display *dpy, Window w, int x, int y)
 {
-  Assert (w->type == WINDOW, "not a window");
+  Assert (w && w->type == WINDOW, "not a window");
   w->window.last_mouse_x = x;
   w->window.last_mouse_y = y;
 }
@@ -475,6 +479,12 @@ push_bg_gc (Drawable d, GC gc, Bool fill_p)
  */
 #define XDRAWPOINTS_IMAGES
 
+/* Update, 2012: Kurt Revis <krevis@snoize.com> points out that diddling
+   the bitmap data directly is faster.  This only works on Pixmaps, though,
+   not Windows.  (Fortunately, on iOS, the Window is really a Pixmap.)
+ */
+#define XDRAWPOINTS_CGDATA
+
 int
 XDrawPoints (Display *dpy, Drawable d, GC gc, 
              XPoint *points, int count, int mode)
@@ -484,68 +494,125 @@ XDrawPoints (Display *dpy, Drawable d, GC gc,
 
   push_fg_gc (d, gc, YES);
 
-# ifdef XDRAWPOINTS_IMAGES
+# ifdef XDRAWPOINTS_CGDATA
+
+#  ifdef USE_BACKBUFFER
+  if (1)  // Because of the backbuffer, all iPhone Windows work like Pixmaps.
+#  else
+  if (d->type == PIXMAP)
+#  endif
+  {
+    CGContextRef cgc = d->cgc;
+    void *data = CGBitmapContextGetData (cgc);
+    size_t bpr = CGBitmapContextGetBytesPerRow (cgc);
+    size_t w = CGBitmapContextGetWidth (cgc);
+    size_t h = CGBitmapContextGetHeight (cgc);
 
-  unsigned int argb = gc->gcv.foreground;
-  validate_pixel (argb, gc->depth, gc->gcv.alpha_allowed_p);
-  if (gc->depth == 1)
-    argb = (gc->gcv.foreground ? WhitePixel(0,0) : BlackPixel(0,0));
-
-  CGDataProviderRef prov = CGDataProviderCreateWithData (NULL, &argb, 4, NULL);
-  CGImageRef cgi = CGImageCreate (1, 1,
-                                  8, 32, 4,
-                                  dpy->colorspace, 
-                                  /* Host-ordered, since we're using the
-                                     address of an int as the color data. */
-                                  (kCGImageAlphaNoneSkipFirst | 
-                                   kCGBitmapByteOrder32Host),
-                                  prov, 
-                                  NULL,  /* decode[] */
-                                  NO, /* interpolate */
-                                  kCGRenderingIntentDefault);
-  CGDataProviderRelease (prov);
+    Assert (data, "no bitmap data in Drawable");
 
-  CGContextRef cgc = d->cgc;
-  CGRect rect;
-  rect.size.width = rect.size.height = 1;
-  for (i = 0; i < count; i++) {
-    if (i > 0 && mode == CoordModePrevious) {
-      rect.origin.x += points->x;
-      rect.origin.x -= points->y;
+    unsigned int argb = gc->gcv.foreground;
+    validate_pixel (argb, gc->depth, gc->gcv.alpha_allowed_p);
+    if (gc->depth == 1)
+      argb = (gc->gcv.foreground ? WhitePixel(0,0) : BlackPixel(0,0));
+
+    CGFloat x0 = wr.origin.x;
+    CGFloat y0 = wr.origin.y + wr.size.height;
+
+    // It's uglier, but faster, to hoist the conditional out of the loop.
+    if (mode == CoordModePrevious) {
+      CGFloat x = x0, y = y0;
+      for (i = 0; i < count; i++, points++) {
+        x += points->x;
+        y -= points->y;
+
+        if (0 <= x && x < w && 0 <= y && y < h) {
+          unsigned int *p = (unsigned int *)
+            ((char *) data + (size_t) y * bpr + (size_t) x * 4);
+          *p = argb;
+        }
+      }
     } else {
-      rect.origin.x = wr.origin.x + points->x;
-      rect.origin.y = wr.origin.y + wr.size.height - points->y - 1;
+      for (i = 0; i < count; i++, points++) {
+        CGFloat x = x0 + points->x;
+        CGFloat y = y0 - points->y;
+
+        if (0 <= x && x < w && 0 <= y && y < h) {
+          unsigned int *p = (unsigned int *)
+            ((char *) data + (size_t) y * bpr + (size_t) x * 4);
+          *p = argb;
+        }
+      }
     }
 
-    //Assert (CGImageGetColorSpace (cgi) == dpy->colorspace, "bad colorspace");
-    CGContextDrawImage (cgc, rect, cgi);
-    points++;
-  }
+  } else       /* d->type == WINDOW */
+
+# endif /* XDRAWPOINTS_CGDATA */
+  {
+
+# ifdef XDRAWPOINTS_IMAGES
+
+    unsigned int argb = gc->gcv.foreground;
+    validate_pixel (argb, gc->depth, gc->gcv.alpha_allowed_p);
+    if (gc->depth == 1)
+      argb = (gc->gcv.foreground ? WhitePixel(0,0) : BlackPixel(0,0));
+
+    CGDataProviderRef prov = CGDataProviderCreateWithData (NULL, &argb, 4,
+                                                           NULL);
+    CGImageRef cgi = CGImageCreate (1, 1,
+                                    8, 32, 4,
+                                    dpy->colorspace, 
+                                    /* Host-ordered, since we're using the
+                                       address of an int as the color data. */
+                                    (kCGImageAlphaNoneSkipFirst | 
+                                     kCGBitmapByteOrder32Host),
+                                    prov, 
+                                    NULL,  /* decode[] */
+                                    NO, /* interpolate */
+                                    kCGRenderingIntentDefault);
+    CGDataProviderRelease (prov);
 
-  CGImageRelease (cgi);
+    CGContextRef cgc = d->cgc;
+    CGRect rect;
+    rect.size.width = rect.size.height = 1;
+    for (i = 0; i < count; i++) {
+      if (i > 0 && mode == CoordModePrevious) {
+        rect.origin.x += points->x;
+        rect.origin.x -= points->y;
+      } else {
+        rect.origin.x = wr.origin.x + points->x;
+        rect.origin.y = wr.origin.y + wr.size.height - points->y - 1;
+      }
+
+      //Assert(CGImageGetColorSpace (cgi) == dpy->colorspace,"bad colorspace");
+      CGContextDrawImage (cgc, rect, cgi);
+      points++;
+    }
+
+    CGImageRelease (cgi);
 
 # else /* ! XDRAWPOINTS_IMAGES */
 
-  CGRect *rects = (CGRect *) malloc (count * sizeof(CGRect));
-  CGRect *r = rects;
+    CGRect *rects = (CGRect *) malloc (count * sizeof(CGRect));
+    CGRect *r = rects;
   
-  for (i = 0; i < count; i++) {
-    r->size.width = r->size.height = 1;
-    if (i > 0 && mode == CoordModePrevious) {
-      r->origin.x = r[-1].origin.x + points->x;
-      r->origin.y = r[-1].origin.x - points->y;
-    } else {
-      r->origin.x = wr.origin.x + points->x;
-      r->origin.y = wr.origin.y + wr.size.height - points->y;
+    for (i = 0; i < count; i++) {
+      r->size.width = r->size.height = 1;
+      if (i > 0 && mode == CoordModePrevious) {
+        r->origin.x = r[-1].origin.x + points->x;
+        r->origin.y = r[-1].origin.x - points->y;
+      } else {
+        r->origin.x = wr.origin.x + points->x;
+        r->origin.y = wr.origin.y + wr.size.height - points->y;
+      }
+      points++;
+      r++;
     }
-    points++;
-    r++;
-  }
 
-  CGContextFillRects (d->cgc, rects, count);
-  free (rects);
+    CGContextFillRects (d->cgc, rects, count);
+    free (rects);
 
 # endif /* ! XDRAWPOINTS_IMAGES */
+  }
 
   pop_gc (d, gc);
   invalidate_drawable_cache (d);
@@ -661,7 +728,7 @@ XCopyArea (Display *dpy, Drawable src, Drawable dst, GC gc,
   BOOL free_cgi_p = NO;
 
 
-#ifndef USE_IPHONE
+#ifndef USE_BACKBUFFER
   // Because of the backbuffer, all iPhone Windows work like Pixmaps.
   if (src->type == PIXMAP)
 # endif
@@ -701,7 +768,7 @@ XCopyArea (Display *dpy, Drawable src, Drawable dst, GC gc,
   if (src->type == PIXMAP && src->pixmap.depth == 1)
       mask_p = YES;
 
-# ifndef USE_IPHONE
+# ifndef USE_BACKBUFFER
   } else { /* (src->type == WINDOW) */
     
     NSRect nsfrom;    // NSRect != CGRect on 10.4
@@ -759,7 +826,7 @@ XCopyArea (Display *dpy, Drawable src, Drawable dst, GC gc,
       CGDataProviderRelease (prov);
     }
 
-# endif // !USE_IPHONE
+# endif // !USE_BACKBUFFER
   }
 
   CGContextRef cgc = dst->cgc;
@@ -805,10 +872,10 @@ XCopyArea (Display *dpy, Drawable src, Drawable dst, GC gc,
     } else {
       // No cgi means src == dst, and both are Windows.
 
-# ifdef USE_IPHONE
+# ifdef USE_BACKBUFFER
       Assert (0, "NSCopyBits unimplemented"); // shouldn't be reached anyway
       return 0;
-# else // !USE_IPHONE
+# else // !USE_BACKBUFFER
       NSRect nsfrom;
       nsfrom.origin.x    = src_rect.origin.x;    // NSRect != CGRect on 10.4
       nsfrom.origin.y    = src_rect.origin.y;
@@ -818,7 +885,7 @@ XCopyArea (Display *dpy, Drawable src, Drawable dst, GC gc,
       nsto.x             = dst_rect.origin.x;
       nsto.y             = dst_rect.origin.y;
       NSCopyBits (0, nsfrom, nsto);
-# endif // !USE_IPHONE
+# endif // !USE_BACKBUFFER
     }
 
     pop_gc (dst, gc);
@@ -954,7 +1021,7 @@ XDrawSegments (Display *dpy, Drawable d, GC gc, XSegment *segments, int count)
 int
 XClearWindow (Display *dpy, Window win)
 {
-  Assert (win->type == WINDOW, "not a window");
+  Assert (win && win->type == WINDOW, "not a window");
   CGRect wr = win->frame;
   return XClearArea (dpy, win, 0, 0, wr.size.width, wr.size.height, 0);
 }
@@ -962,7 +1029,7 @@ XClearWindow (Display *dpy, Window win)
 int
 XSetWindowBackground (Display *dpy, Window w, unsigned long pixel)
 {
-  Assert (w->type == WINDOW, "not a window");
+  Assert (w && w->type == WINDOW, "not a window");
   validate_pixel (pixel, 32, NO);
   w->window.background = pixel;
   return 0;
@@ -1043,7 +1110,7 @@ XFillRectangles (Display *dpy, Drawable d, GC gc, XRectangle *rects, int n)
 int
 XClearArea (Display *dpy, Window win, int x, int y, int w, int h, Bool exp)
 {
-  Assert (win->type == WINDOW, "not a window");
+  Assert (win && win->type == WINDOW, "not a window");
   CGContextRef cgc = win->cgc;
   set_color (cgc, win->window.background, 32, NO, YES);
   draw_rect (dpy, win, 0, x, y, w, h, NO, YES);
@@ -1279,7 +1346,7 @@ XFreeGC (Display *dpy, GC gc)
 Status
 XGetWindowAttributes (Display *dpy, Window w, XWindowAttributes *xgwa)
 {
-  Assert (w->type == WINDOW, "not a window");
+  Assert (w && w->type == WINDOW, "not a window");
   memset (xgwa, 0, sizeof(*xgwa));
   xgwa->x      = w->frame.origin.x;
   xgwa->y      = w->frame.origin.y;
@@ -1761,7 +1828,7 @@ XGetImage (Display *dpy, Drawable d, int x, int y,
 {
   const unsigned char *data = 0;
   int depth, ibpp, ibpl, alpha_first_p;
-# ifndef USE_IPHONE
+# ifndef USE_BACKBUFFER
   NSBitmapImageRep *bm = 0;
 # endif
   
@@ -1772,7 +1839,7 @@ XGetImage (Display *dpy, Drawable d, int x, int y,
 
   CGContextRef cgc = d->cgc;
 
-#ifndef USE_IPHONE
+#ifndef USE_BACKBUFFER
   // Because of the backbuffer, all iPhone Windows work like Pixmaps.
   if (d->type == PIXMAP)
 # endif
@@ -1788,7 +1855,7 @@ XGetImage (Display *dpy, Drawable d, int x, int y,
     data = CGBitmapContextGetData (cgc);
     Assert (data, "CGBitmapContextGetData failed");
 
-# ifndef USE_IPHONE
+# ifndef USE_BACKBUFFER
   } else { /* (d->type == WINDOW) */
 
     // get the bits (desired sub-rectangle) out of the NSView
@@ -1804,7 +1871,7 @@ XGetImage (Display *dpy, Drawable d, int x, int y,
     ibpl = [bm bytesPerRow];
     data = [bm bitmapData];
     Assert (data, "NSBitmapImageRep initWithFocusedViewRect failed");
-# endif // !USE_IPHONE
+# endif // !USE_BACKBUFFER
   }
   
   // data points at (x,y) with ibpl rowstride.  ignore x,y from now on.
@@ -1883,7 +1950,7 @@ XGetImage (Display *dpy, Drawable d, int x, int y,
     }
   }
 
-# ifndef USE_IPHONE
+# ifndef USE_BACKBUFFER
   if (bm) [bm release];
 # endif
 
@@ -2100,7 +2167,7 @@ XCreatePixmap (Display *dpy, Drawable d,
 int
 XFreePixmap (Display *d, Pixmap p)
 {
-  Assert (p->type == PIXMAP, "not a pixmap");
+  Assert (p && p->type == PIXMAP, "not a pixmap");
   invalidate_drawable_cache (p);
   CGContextRelease (p->cgc);
   if (p->pixmap.cgc_buffer)
@@ -3009,7 +3076,7 @@ XQueryPointer (Display *dpy, Window w, Window *root_ret, Window *child_ret,
                int *root_x_ret, int *root_y_ret, 
                int *win_x_ret, int *win_y_ret, unsigned int *mask_ret)
 {
-  Assert (w->type == WINDOW, "not a window");
+  Assert (w && w->type == WINDOW, "not a window");
 
 # ifdef USE_IPHONE
   int x = w->window.last_mouse_x;
@@ -3081,7 +3148,7 @@ XTranslateCoordinates (Display *dpy, Window w, Window dest_w,
                        int *dest_x_ret, int *dest_y_ret,
                        Window *child_ret)
 {
-  Assert (w->type == WINDOW, "not a window");
+  Assert (w && w->type == WINDOW, "not a window");
 
 # ifdef USE_IPHONE
 
index 998c452399efc9d5741a9159614967574bd5681e..14b1494a14e350ea17ac267e4bc716130032b464 100755 (executable)
@@ -23,7 +23,7 @@ require 5;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.21 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.22 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
 
 $ENV{PATH} = "/usr/local/bin:$ENV{PATH}";   # for seticon
 
@@ -175,9 +175,9 @@ sub update_saver_xml($$) {
     print STDERR "$progname: $filename: unchanged\n" if ($verbose > 1);
   } else {
     my $file_tmp = "$filename.tmp";
-    open(OUT, ">$file_tmp") || error ("$file_tmp: $!");
-    print OUT $body || error ("$file_tmp: $!");
-    close OUT || error ("$file_tmp: $!");
+    open (my $out, '>', $file_tmp) || error ("$file_tmp: $!");
+    print $out $body || error ("$file_tmp: $!");
+    close $out || error ("$file_tmp: $!");
 
     if (!rename ("$file_tmp", "$filename")) {
       unlink "$file_tmp";
@@ -269,9 +269,9 @@ sub update($) {
       print STDERR "$progname: $filename: unchanged\n" if ($verbose > 1);
     } else {
       my $file_tmp = "$filename.tmp";
-      open(OUT, ">$file_tmp") || error ("$file_tmp: $!");
-      print OUT $plist || error ("$file_tmp: $!");
-      close OUT || error ("$file_tmp: $!");
+      open (my $out, '>', $file_tmp) || error ("$file_tmp: $!");
+      print $out $plist || error ("$file_tmp: $!");
+      close $out || error ("$file_tmp: $!");
 
       if (!rename ("$file_tmp", "$filename")) {
         unlink "$file_tmp";
diff --git a/OSX/update-thumbnail.pl b/OSX/update-thumbnail.pl
new file mode 100755 (executable)
index 0000000..bd4e128
--- /dev/null
@@ -0,0 +1,150 @@
+#!/usr/bin/perl -w
+# Copyright Â© 2006-2012 Jamie Zawinski <jwz@jwz.org>
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation.  No representations are made about the suitability of this
+# software for any purpose.  It is provided "as is" without express or 
+# implied warranty.
+#
+# Converts and installs a thumbnail image inside a .saver bundle.
+#
+# Created:  26-Jul-2012.
+
+require 5;
+#use diagnostics;      # Fails on some MacOS 10.5 systems
+use strict;
+
+my $progname = $0; $progname =~ s@.*/@@g;
+my $version = q{ $Revision: 1.22 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+
+my $verbose = 1;
+
+
+sub safe_system(@) {
+  my @cmd = @_;
+  system (@cmd);
+  my $exit_value  = $? >> 8;
+  my $signal_num  = $? & 127;
+  my $dumped_core = $? & 128;
+  error ("$cmd[0]: core dumped!") if ($dumped_core);
+  error ("$cmd[0]: signal $signal_num!") if ($signal_num);
+  error ("$cmd[0]: exited with $exit_value!") if ($exit_value);
+}
+
+
+# Returns true if the two files differ (by running "cmp")
+#
+sub cmp_files($$) {
+  my ($file1, $file2) = @_;
+
+  my @cmd = ("cmp", "-s", "$file1", "$file2");
+  print STDERR "$progname: executing \"" . join(" ", @cmd) . "\"\n"
+    if ($verbose > 3);
+
+  system (@cmd);
+  my $exit_value  = $? >> 8;
+  my $signal_num  = $? & 127;
+  my $dumped_core = $? & 128;
+
+  error ("$cmd[0]: core dumped!") if ($dumped_core);
+  error ("$cmd[0]: signal $signal_num!") if ($signal_num);
+  return $exit_value;
+}
+
+
+sub update($$) {
+  my ($src_dir, $app_dir) = @_;
+
+  # Apparently Apple wants Resources/{thumbnail.png to be 90x58,
+  # and Resources/thumbnail@2x.png to be 180x116.  Let's just 
+  # make the former, but make it be the latter's size.
+  #
+  my $size = '180x116';
+
+  error ("$app_dir does not exist") unless (-d $app_dir);
+  error ("$app_dir: no name")
+    unless ($app_dir =~ m@/([^/.]+).(saver|app)/?$@x);
+  my $app_name = $1;
+
+  $app_dir =~ s@/+$@@s;
+  $app_dir .= "/Contents/Resources";
+
+  error ("$app_dir does not exist") unless (-d $app_dir);
+  my $target = "$app_dir/thumbnail.png";
+
+  $src_dir .= "/" unless ($src_dir =~ m@/$@s);
+  my $src_dir2 = "${src_dir}retired/";
+
+  $app_name =~ s/rdbomb/rd-bomb/si;   # sigh
+
+  my $img  = $src_dir  . lc($app_name) . ".jpg";
+  my $img2 = $src_dir2 . lc($app_name) . ".jpg";
+  $img = $img2 if (! -f $img && -f $img2);
+  error ("$img does not exist") unless (-f $img);
+
+  my $tmp = sprintf ("%s/thumb-%08x.png",
+                     ($ENV{TMPDIR} ? $ENV{TMPDIR} : "/tmp"),
+                     rand(0xFFFFFFFF));
+  my @cmd = ("convert",
+             $img, 
+             "-resize", $size . "^",
+             "-gravity", "center",
+             "-extent", $size,
+             $tmp);
+
+  print STDERR "$progname: exec: " . join(' ', @cmd) . "\n" 
+    if ($verbose > 2);
+  safe_system (@cmd);
+
+  if (! -s $tmp) {
+    unlink $tmp;
+    error ("failed: " . join(" ", @cmd));
+  }
+
+  if (! cmp_files ($tmp, $target)) {
+    unlink $tmp;
+    print STDERR "$progname: $target: unchanged\n" if ($verbose > 1);
+  } elsif (! rename ($tmp, $target)) {
+    unlink $tmp;
+    error ("mv $tmp $target: $!");
+  } else {
+    print STDERR "$progname: wrote $target\n" if ($verbose);
+  }
+}
+
+
+sub error($) {
+  my ($err) = @_;
+  print STDERR "$progname: $err\n";
+  exit 1;
+}
+
+sub usage() {
+  print STDERR "usage: $progname [--verbose] image-dir program.app ...\n";
+  exit 1;
+}
+
+sub main() {
+
+  my $src_dir;
+  my @files = ();
+  while ($_ = $ARGV[0]) {
+    shift @ARGV;
+    if    (m/^--?verbose$/s)  { $verbose++; }
+    elsif (m/^-v+$/)          { $verbose += length($_)-1; }
+    elsif (m/^--?q(uiet)?$/s) { $verbose = 0; }
+    elsif (m/^-/s)            { usage(); }
+    elsif (! $src_dir)        { $src_dir = $_; }
+    else                      { push @files, $_; }
+  }
+  usage() unless ($src_dir && $#files >= 0);
+  foreach (@files) {
+    update ($src_dir, $_);
+  }
+}
+
+main();
+exit 0;
diff --git a/README b/README
index 48860ab40771726655436e4b57839605d642353c..97708f5c655c81e6b23196e7ef178bd46316e48a 100644 (file)
--- a/README
+++ b/README
@@ -38,6 +38,8 @@ XScreenSaver has an extensive manual -- please read it!
 
 ===============================================================================
 
+Changes since 5.18:   * MacOS 10.8.0 compatibility.
+                      * iOS performance improvements.
 Changes since 5.17:   * iOS responds to shake gestures to randomize.
                       * iOS can load images from your Photo Library.
                       * iOS has clickable Wikipedia links in Settings panels.
index e071dac52690508e78f4eafe563f647061779ca4..0d5865cbe137e6ea2a280f87d198758e72468970 100644 (file)
@@ -877,21 +877,7 @@ xdpyinfo: xdpyinfo.o
 # DO NOT DELETE: updated by make distdepend
 
 demo-Gtk-conf.o: ../config.h
-demo-Gtk-conf.o: $(srcdir)/demo-Gtk-conf.h
-demo-Gtk-conf.o: $(UTILS_SRC)/xscreensaver-intl.h
-demo-Gtk.o: XScreenSaver_ad.h
 demo-Gtk.o: ../config.h
-demo-Gtk.o: $(srcdir)/demo-Gtk-conf.h
-demo-Gtk.o: $(srcdir)/demo-Gtk-support.h
-demo-Gtk.o: $(srcdir)/demo-Gtk-widgets.h
-demo-Gtk.o: $(srcdir)/prefs.h
-demo-Gtk.o: $(srcdir)/remote.h
-demo-Gtk.o: $(srcdir)/types.h
-demo-Gtk.o: $(UTILS_SRC)/resources.h
-demo-Gtk.o: $(UTILS_SRC)/usleep.h
-demo-Gtk.o: $(UTILS_SRC)/version.h
-demo-Gtk.o: $(UTILS_SRC)/visual.h
-demo-Gtk.o: $(UTILS_SRC)/xscreensaver-intl.h
 demo-Gtk-support.o: ../config.h
 demo-Gtk-support.o: $(srcdir)/demo-Gtk-support.h
 demo-Gtk-widgets.o: ../config.h
index bdfc2dc28db147e534514e07fee10b97c330a7fb..26018f5d0dc6a370f3235ae707b1e3592c2b6ab8 100644 (file)
@@ -4,8 +4,8 @@
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
-!                              version 5.18
-!                              03-Jul-2012
+!                              version 5.19
+!                              26-Jul-2012
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
index d916213599470c9cff480c27d93f0650e7ba8784..88edae9ddefef99c832fb5939fc6c36cecfc4d2a 100644 (file)
@@ -46,9 +46,9 @@
 "*demoCommand: xscreensaver-demo",
 "*prefsCommand: xscreensaver-demo -prefs",
 "*helpURL: http://www.jwz.org/xscreensaver/man.html",
-"*loadURL: gnome-open '%s'",
-"*manualCommand: gnome-terminal --title '%s manual' \
-               --command '/bin/sh -c \"man %s; read foo\"'",
+"*loadURL: firefox '%s' || mozilla '%s' || netscape '%s'",
+"*manualCommand: xterm -sb -fg black -bg gray75 -T '%s manual' \
+                   -e /bin/sh -c 'man \"%s\" ; read foo'",
 "*dateFormat:          %d-%b-%y (%a); %I:%M %p",
 "*installColormap:     True",
 "*programs:                                                                  \
index d1a1815a610a88465cacd80bc12a848105dde2f8..6b4de9840fecd038f7b96f997b110881ee35528a 100644 (file)
@@ -4,8 +4,8 @@
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
-                              version 5.18
-                               03-Jul-2012
+                              version 5.19
+                               26-Jul-2012
 
                      http://www.jwz.org/xscreensaver/
 
index 57cd1896e0f3dc0273797f80c2633999fcbf30de..f957f5d28249154fff4d16334ce135cb01731972 100644 (file)
@@ -95,9 +95,9 @@ static const char sccsid[] = "@(#)hypertorus.c  1.2 05/09/28 xlockmore";
 #endif /* !STANDALONE */
 
 #ifdef USE_GL
-# ifndef HAVE_JWZGLES
-#  include <X11/keysym.h>
-# endif
+#ifndef HAVE_COCOA
+# include <X11/keysym.h>
+#endif
 
 #include "gltrackball.h"
 
index fa1ea893df64faca035eaac4ab1381fd8fd26f33..936fd8a17698aafb354550f5c6272fea77420e2a 100644 (file)
@@ -181,7 +181,7 @@ unpack_addr (unsigned long addr,
 
 
 
-/* If resolves the bogie's name (either a hostname or ip address string)
+/* Resolves the bogie's name (either a hostname or ip address string)
    to a hostent.  Returns 1 if successful, 0 if it failed to resolve.
  */
 static int
@@ -294,7 +294,7 @@ print_host (FILE *out, unsigned long ip, const char *name)
 }
 
 
-/* Create a sonar_bogie a host name or ip address string.
+/* Create a sonar_bogie from a host name or ip address string.
    Returns NULL if the name could not be resolved.
  */
 static sonar_bogie *
@@ -590,9 +590,16 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
               if (pd->debug_p)
                 fprintf (stderr, "%s:     if: %4s: %s\n", progname,
                          ifa->ifa_name,
-                         (ifa->ifa_addr->sa_family == AF_UNIX  ? "local" :
+                         (
+# ifdef AF_UNIX
+                          ifa->ifa_addr->sa_family == AF_UNIX  ? "local" :
+# endif
+# ifdef AF_LINK
                           ifa->ifa_addr->sa_family == AF_LINK  ? "link"  :
+# endif
+# ifdef AF_INET6
                           ifa->ifa_addr->sa_family == AF_INET6 ? "ipv6"  :
+# endif
                           "other"));
               continue;
             }
@@ -615,13 +622,12 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
            */
           if (mask_width (mask) == 31)
             {
-              char buf[255];
               sprintf (buf,
                        "Can't ping subnet:\n"
                        "local network is\n"
-                       "%s/%d,\n"
+                       "%.100s/%d,\n"
                        "a p2p bridge\n"
-                       "on if %s.",
+                       "on if %.100s.",
                        inet_ntoa (in2), mask_width (mask), ifa->ifa_name);
               if (*error_ret) free (*error_ret);
               *error_ret = strdup (buf);
@@ -676,7 +682,7 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
         {
           sprintf(buf, 
                   "Unable to resolve\n"
-                  "local host \"%s\"", 
+                  "local host \"%.100s\"", 
                   hostname);
           *error_ret = strdup(buf);
           return 0;
@@ -695,7 +701,7 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
           sprintf (buf,
                    "Unable to determine\n"
                    "local subnet address:\n"
-                   "\"%s\"\n"
+                   "\"%.100s\"\n"
                    "resolves to\n"
                    "loopback address\n"
                    "%u.%u.%u.%u.",
@@ -714,10 +720,14 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
   h_base = ntohl (n_base);
 
   if (desc_ret && !*desc_ret) {
-    unsigned int a, b, c, d;
     char buf[255];
-    unpack_addr (n_base, &a, &b, &c, &d);
-    sprintf (buf, "%u.%u.%u.%u/%d", a, b, c, d, subnet_width);
+    unsigned int a, b, c, d;
+    unsigned long bb = n_base & htonl(h_mask);
+    unpack_addr (bb, &a, &b, &c, &d);
+    if (subnet_width > 24)
+      sprintf (buf, "%u.%u.%u.%u/%d", a, b, c, d, subnet_width);
+    else
+      sprintf (buf, "%u.%u.%u/%d", a, b, c, subnet_width);
     *desc_ret = strdup (buf);
   }
 
@@ -805,7 +815,7 @@ send_ping (ping_data *pd, const sonar_bogie *b)
      just to give a clue to anyone sniffing and wondering what's up.
    */
   sprintf ((char *) &packet[sizeof(struct ICMP) + sizeof(struct timeval)],
-           "%s%c%s %s",
+           "%.100s%c%.20s %.20s",
            b->name, 0, token, pd->version);
 
   ICMP_CHECKSUM(icmph) = checksum((u_short *)packet, pcktsiz);
@@ -818,7 +828,7 @@ send_ping (ping_data *pd, const sonar_bogie *b)
     {
 #if 0
       char buf[BUFSIZ];
-      sprintf(buf, "%s: pinging %s", progname, b->name);
+      sprintf(buf, "%s: pinging %.100s", progname, b->name);
       perror(buf);
 #endif
     }
@@ -989,6 +999,11 @@ get_ping (sonar_sensor_data *ssd)
                                                 sizeof(struct ICMP) +
                                                 sizeof(struct timeval)];
             sonar_bogie *b;
+
+            /* Ensure that a maliciously-crafted return packet can't
+               make us overflow in strcmp. */
+            packet[sizeof(packet)-1] = 0;
+
             for (b = pd->targets; b; b = b->next)
               if (!strcmp (name, b->name))
                 {
@@ -1106,8 +1121,8 @@ double_time (void)
 }
 
 
-/* If a bogie is provided, pings it.
-   Then, returns all outstanding ping replies.
+/* Pings the next bogie, if it's time.
+   Returns all outstanding ping replies.
  */
 static sonar_bogie *
 ping_scan (sonar_sensor_data *ssd)
@@ -1271,7 +1286,6 @@ sonar_init_ping (Display *dpy, char **error_ret, char **desc_ret,
   ping_data *pd = (ping_data *) calloc (1, sizeof(*pd));
   sonar_bogie *b;
   char *s;
-  int i;
 
   Bool socket_initted_p = False;
   Bool socket_raw_p     = False;
@@ -1381,16 +1395,20 @@ sonar_init_ping (Display *dpy, char **error_ret, char **desc_ret,
      Even on a /24, allocated IPs tend to cluster together, so
      don't put any two hosts closer together than N degrees to
      avoid unnecessary overlap when we have plenty of space due
-     to addresses that probably won't respond.
+     to addresses that probably won't respond.  And don't spread
+     them out too far apart, because that looks too symmetrical
+     when there are a small number of hosts.
    */
   {
-    int min_separation = 23;  /* degrees */
-    int div = pd->target_count;
-    if (div > 360 / min_separation)
-      div = 360 / min_separation;
-    for (i = 0, b = pd->targets; b; b = b->next, i++)
-      b->th = (M_PI/2 -
-               M_PI * 2 * ((div - i) % div) / div);
+    double th = frand(M_PI);
+    double sep = 360.0 / pd->target_count;
+    if (sep < 23) sep = 23;
+    if (sep > 43) sep = 43;
+    sep /= 180/M_PI;
+    for (b = pd->targets; b; b = b->next) {
+      b->th = th;
+      th += sep;
+    }
   }
 
   return ssd;
index c7cd5d47f43ea1493ad3a7730913b16ddb1a5a4b..34bef3d0c728f63642ed493db7af09543c31968a 100755 (executable)
@@ -452,7 +452,7 @@ sub usage() {
 sub main() {
   while ($_ = $ARGV[0]) {
     shift @ARGV;
-    if ($_ eq "--verbose") { $verbose++; }
+    if (m/^--?verbose$/) { $verbose++; }
     elsif (m/^-v+$/) { $verbose += length($_)-1; }
     elsif (m/^(-display|-disp|-dis|-dpy|-d)$/) { $ENV{DISPLAY} = shift @ARGV; }
     elsif (m/^--?stdin$/) { $use_stdin = 1; }
index b4991c851a6614a2085701e172968559cb64e86e..e9a3aa37a0acd5393ecd2a22e43a2aae7ceffeb4 100755 (executable)
@@ -60,21 +60,22 @@ use bytes;  # Larry can take Unicode and shove it up his ass sideways.
 
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.158 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.159 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
 my $copyright = "WebCollage $version, Copyright (c) 1999-2011" .
     " Jamie Zawinski <jwz\@jwz.org>\n" .
     "            http://www.jwz.org/webcollage/\n";
 
 
 
-my @search_methods = ( 24, "googlephotos",  \&pick_from_google_image_photos,
-                       13, "googleimgs",    \&pick_from_google_images,
-                       13, "googlenums",    \&pick_from_google_image_numbers,
-                       16, "flickr_recent", \&pick_from_flickr_recent,
-                       13, "flickr_random", \&pick_from_flickr_random,
-                       10, "twitpic",       \&pick_from_twitpic_images,
-                        8, "livejournal",   \&pick_from_livejournal_images,
-                        3, "yahoorand",     \&pick_from_yahoo_random_link,
+my @search_methods = ( 26, "googlephotos",  \&pick_from_google_image_photos,
+                       15, "googleimgs",    \&pick_from_google_images,
+                       15, "googlenums",    \&pick_from_google_image_numbers,
+                       17, "flickr_recent", \&pick_from_flickr_recent,
+                       14, "flickr_random", \&pick_from_flickr_random,
+# twitpic went stale. don't have time to fix it right now.
+#                       10, "twitpic",       \&pick_from_twitpic_images,
+                        9, "livejournal",   \&pick_from_livejournal_images,
+                        4, "yahoorand",     \&pick_from_yahoo_random_link,
 
                      # This one doesn't work very well: too many non-img links.
                         0, "twitter",       \&pick_from_twitter_images,
index 7743e54c4abe04ea88cad4a7737c108396fefe2a..44d1d0c50b2891af89f20f6af9240cb44fb6f0b4 100644 (file)
@@ -1,4 +1,4 @@
-# Auto-generated: Tue Jul  3 14:23:31 PDT 2012
+# Auto-generated: Thu Jul 26 19:29:57 PDT 2012
 driver/demo-Gtk-conf.c
 driver/demo-Gtk-support.c
 driver/demo-Gtk-widgets.c
index ea951e2a764ea40c6e3548490b6566abdfa79a70..cdf099e7bd23e872fd8055c0899c92d62f8c3240 100644 (file)
@@ -1,2 +1,2 @@
 static const char screensaver_id[] =
-       "@(#)xscreensaver 5.18 (03-Jul-2012), by Jamie Zawinski (jwz@jwz.org)";
+       "@(#)xscreensaver 5.19 (26-Jul-2012), by Jamie Zawinski (jwz@jwz.org)";
index bf8bb5623dd6e800f4eb2e6fa2b2ac8b73a9439b..f7a053039a878d5f36621616d2be8a0be7bed729 100644 (file)
@@ -1,5 +1,5 @@
 %define        name xscreensaver
-%define        version 5.18
+%define        version 5.19
 
 Summary:       X screen saver and locker
 Name:          %{name}
index bd824ab895f0502b55c9a5d13877ac553ce8e1a5..9bc4725152c82c241161ef38854d36dc247faf14 100644 (file)
                AF1FDA89158FF96600C40F17 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
                AF1FDA8A158FF96600C40F17 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
                AF241F83107C38DF00046A84 /* dropshadow.c in Sources */ = {isa = PBXBuildFile; fileRef = AF241F81107C38DF00046A84 /* dropshadow.c */; };
+               AF2C31E615C0F7FE007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31EA15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31EB15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31EC15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31ED15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31EE15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31EF15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31F915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31FA15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31FB15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31FC15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31FD15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31FE15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C31FF15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C320F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C321F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C322F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C323F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C324F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C325F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C326F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327A15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327B15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327C15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327D15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327E15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C327F15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328A15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328B15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328C15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328D15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328E15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C328F15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329A15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329B15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329C15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329D15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329E15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C329F15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32A915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32AA15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32AB15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32AC15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32AD15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32AE15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32AF15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32B915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32BA15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32BB15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32BC15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32BD15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32BE15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32BF15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32C015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32C115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32C215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32C315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32C415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32C515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32C615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32C715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF2C32C815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
                AF2D4D8413E902F5002AA818 /* SaverRunner.nib in Resources */ = {isa = PBXBuildFile; fileRef = AF9772E10989DFC6001F8B92 /* SaverRunner.nib */; };
                AF2D4D8613E902F5002AA818 /* SaverRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = AFE1FD400981E32E00F7970E /* SaverRunner.m */; };
                AF2D4D8713E902F5002AA818 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
                AF1A17800D6D6F62008AF328 /* lcdscrub.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = lcdscrub.xml; sourceTree = "<group>"; };
                AF241F81107C38DF00046A84 /* dropshadow.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = dropshadow.c; path = hacks/glx/dropshadow.c; sourceTree = "<group>"; };
                AF241F82107C38DF00046A84 /* dropshadow.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = dropshadow.h; path = hacks/glx/dropshadow.h; sourceTree = "<group>"; };
+               AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
                AF2D4D8F13E902F5002AA818 /* Phosphor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Phosphor.app; sourceTree = BUILT_PRODUCTS_DIR; };
                AF2D4F7E13E91093002AA818 /* Apple2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Apple2.app; sourceTree = BUILT_PRODUCTS_DIR; };
                AF2D522513E954A0002AA818 /* SaverRunner.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = SaverRunner.icns; path = OSX/SaverRunner.icns; sourceTree = "<group>"; };
                        files = (
                                AF1FD8EF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8F0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8F1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8F2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8F3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8F4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8F5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8F6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7BF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7C0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7C1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7C2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA33158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA34158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA35158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA36158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7BB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7BC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7BD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7BE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7F3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7F4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7F5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7F6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD723158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD724158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31EE15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD725158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD726158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9F3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9F4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9F5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9F6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD91B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD91C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD91D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD91E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA2F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA30158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA31158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA32158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD99B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD99C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328D15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD99D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD99E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD993158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD994158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328B15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD995158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD996158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7AB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7AC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7AD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7AE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD83F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD840158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD841158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD842158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD767158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD768158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31FF15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD769158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD76A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD74F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD750158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD751158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD752158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD84B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD84C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD84D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD84E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA7B158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA7C158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32C515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA7D158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA7E158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD743158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD744158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD745158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD746158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7DB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7DC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7DD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7DE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA83158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA84158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32C715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA85158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA86158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD717158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD718158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31EB15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD719158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD71A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD793158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD794158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD795158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD796158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7FF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD800158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD801158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD802158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7F7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7F8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7F9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7FA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD85B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD85C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD85D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD85E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD787158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD788158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD789158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD78A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD71B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD71C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31EC15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD71D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD71E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7AF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7B0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7B1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7B2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD79F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7A0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7A1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7A2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD86F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD870158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD871158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD872158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD77B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD77C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD77D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD77E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7B3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7B4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7B5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7B6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA6B158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA6C158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32C115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA6D158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA6E158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7C3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7C4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7C5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7C6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7E3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7E4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7E5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7E6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD803158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD804158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD805158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD806158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD837158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD838158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD839158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD83A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD753158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD754158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31FA15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD755158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD756158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD76F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD770158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD771158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD772158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7B7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7B8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7B9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7BA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD833158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD834158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD835158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD836158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA3F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA40158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA41158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA42158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7EB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7EC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7ED158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7EE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD72F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD730158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD731158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD732158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD877158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD878158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD879158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD87A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD873158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD874158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD875158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD876158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD857158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD858158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD859158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD85A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD847158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD848158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD849158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD84A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD74B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD74C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD74D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD74E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD83B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD83C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD83D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD83E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7A7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7A8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7A9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7AA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD747158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD748158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD749158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD74A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD77F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD780158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD781158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD782158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD737158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD738158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD739158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD73A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7E7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7E8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7E9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7EA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD867158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD868158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD869158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD86A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD75B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD75C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31FC15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD75D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD75E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA43158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA44158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA45158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA46158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD827158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD828158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD829158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD82A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD79B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD79C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD79D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD79E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD897158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD898158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD899158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD89A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD933158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD934158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD935158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD936158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD957158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD958158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327C15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD959158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD95A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9D7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9D8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329C15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9D9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9DA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD97B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD97C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD97D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD97E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA1F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA20158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32AE15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA21158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA22158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9AF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9B0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9B1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9B2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD92F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD930158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD931158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD932158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD943158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD944158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD945158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD946158FF96500C40F17 /* Carbon.framework in Frameworks */,
                                AF84FD4209B1209E00F3AB06 /* GLUT.framework in Frameworks */,
                        files = (
                                AF1FDA53158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA54158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32BB15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA55158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA56158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD807158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD808158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD809158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD80A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA4F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA50158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32BA15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA51158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA52158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7D3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7D4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7D5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7D6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7D7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7D8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7D9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7DA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD78B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD78C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD78D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD78E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD82B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD82C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD82D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD82E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA3B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA3C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA3D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA3E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7EF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7F0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7F1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7F2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8C3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8C4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8C5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8C6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD94B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD94C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD94D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD94E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD95B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD95C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327D15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD95D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD95E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9B7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9B8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9B9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9BA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA17158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA18158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32AC15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA19158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA1A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD97F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD980158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD981158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD982158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD94F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD950158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327A15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD951158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD952158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA13158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA14158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32AB15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA15158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA16158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD913158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD914158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD915158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD916158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD937158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD938158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD939158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD93A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD783158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD784158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD785158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD786158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD733158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD734158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD735158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD736158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD98B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD98C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD98D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD98E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD88F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD890158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD891158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD892158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8A3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8A4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8A5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8A6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8BB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8BC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8BD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8BE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7A3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7A4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7A5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7A6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7CF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7D0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7D1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7D2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD80B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD80C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD80D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD80E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD85F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD860158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD861158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD862158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD81F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD820158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD821158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD822158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7CB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7CC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7CD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7CE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD773158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD774158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD775158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD776158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD72B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD72C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD72D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD72E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD777158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD778158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD779158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD77A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7C7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7C8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7C9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7CA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD797158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD798158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD799158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD79A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD78F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD790158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD791158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD792158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7DF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7E0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C321D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7E1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7E2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD813158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD814158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD815158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD816158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD763158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD764158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31FE15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD765158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD766158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD817158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD818158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD819158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD81A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD727158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD728158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31EF15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD729158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD72A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        buildActionMask = 2147483647;
                        files = (
                                AFEB9C37158FFF88003974F3 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31E615C0F7FE007A6896 /* QuartzCore.framework in Frameworks */,
                                AF918B99158FF045002B5D1E /* Cocoa.framework in Frameworks */,
                                AF918B9A158FF04C002B5D1E /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA2B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA2C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA2D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA2E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD75F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD760158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31FD15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD761158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD762158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD823158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD824158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD825158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD826158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD87B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD87C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD87D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD87E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD73F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD740158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD741158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD742158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD76B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD76C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C320015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD76D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD76E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD80F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD810158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD811158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD812158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD81B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD81C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD81D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD81E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD843158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD844158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD845158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD846158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD82F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD830158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD831158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD832158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD86B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD86C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD86D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD86E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD7FB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD7FC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C322415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD7FD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD7FE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD863158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD864158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD865158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD866158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD73B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD73C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31F415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD73D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD73E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD71F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD720158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31ED15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD721158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD722158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD84F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD850158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD851158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD852158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD853158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD854158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C323A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD855158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD856158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD90F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD910158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD911158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD912158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9BB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9BC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9BD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9BE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA1B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA1C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32AD15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA1D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA1E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9C7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9C8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9C9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9CA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9EF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9F0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9F1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9F2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA0F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA10158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32AA15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA11158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA12158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA0B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA0C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA0D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA0E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9A7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9A8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9A9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9AA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD90B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD90C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD90D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD90E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD977158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD978158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD979158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD97A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9E7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9E8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9E9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9EA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9FF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA00158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA01158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA02158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD95F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD960158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327E15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD961158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD962158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD917158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD918158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD919158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD91A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9B3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9B4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9B5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9B6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD93F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD940158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD941158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD942158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD983158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD984158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD985158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD986158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD907158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD908158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD909158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD90A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA4B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA4C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA4D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA4E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9FB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9FC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9FD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9FE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD927158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD928158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD929158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD92A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA07158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA08158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA09158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA0A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9AB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9AC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9AD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9AE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9EB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9EC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9ED158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9EE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD93B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD93C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327515C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD93D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD93E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD963158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD964158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327F15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD965158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD966158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD953158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD954158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327B15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD955158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD956158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD903158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD904158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD905158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD906158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD997158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD998158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328C15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD999158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD99A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9A3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9A4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328F15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9A5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9A6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD98F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD990158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328A15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD991158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD992158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD973158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD974158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD975158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD976158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD92B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD92C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD92D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD92E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD96F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD970158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD971158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD972158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8FB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8FC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8FD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8FE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD947158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD948158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C327815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD949158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD94A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8E3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8E4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8E5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8E6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8EB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8EC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8ED158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8EE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9DF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9E0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329E15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9E1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9E2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9C3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9C4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9C5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9C6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8F7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8F8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326415C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8F9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8FA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9CB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9CC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329915C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9CD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9CE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9DB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9DC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329D15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9DD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9DE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9E3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9E4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329F15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9E5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9E6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9D3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9D4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329B15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9D5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9D6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8FF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD900158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD901158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD902158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8E7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8E8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8E9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8EA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA23158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA24158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32AF15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA25158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA26158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD91F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD920158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD921158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD922158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD96B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD96C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328115C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD96D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD96E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD923158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD924158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C326F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD925158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD926158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA27158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA28158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA29158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA2A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD99F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9A0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328E15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9A1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9A2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9CF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9D0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329A15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9D1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9D2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD987158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD988158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD989158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD98A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD887158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD888158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324715C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD889158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD88A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA47158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA48158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA49158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA4A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA7F158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA80158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32C615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA81158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA82158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8AB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8AC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325015C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8AD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8AE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8AF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8B0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325115C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8B1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8B2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8B3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8B4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325215C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8B5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8B6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA5B158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA5C158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32BD15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA5D158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA5E158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA5F158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA60158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32BE15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA61158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA62158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA63158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA64158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32BF15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA65158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA66158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA67158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA68158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32C015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA69158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA6A158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8C7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8C8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8C9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8CA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8CF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8D0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8D1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8D2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA73158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA74158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32C315C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA75158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA76158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA77158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA78158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32C415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA79158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA7A158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD89F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8A0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8A1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8A2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8BF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8C0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8C1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8C2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8DF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8E0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325E15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8E1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8E2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA87158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA88158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32C815C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA89158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA8A158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA6F158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA70158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32C215C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA71158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA72158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA37158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA38158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32B415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA39158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA3A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8A7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8A8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324F15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8A9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8AA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD893158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD894158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324A15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD895158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD896158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD87F158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD880158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324515C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD881158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD882158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD89B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD89C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD89D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD89E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8DB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8DC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325D15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8DD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8DE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA57158FF96600C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA58158FF96600C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32BC15C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA59158FF96600C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA5A158FF96600C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8D7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8D8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325C15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8D9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8DA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8CB158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8CC158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325915C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8CD158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8CE158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD883158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD884158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324615C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD885158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD886158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD88B158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD88C158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C324815C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD88D158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD88E158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8B7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8B8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325315C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8B9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8BA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD8D3158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD8D4158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C325B15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD8D5158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD8D6158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FDA03158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FDA04158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A715C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FDA05158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FDA06158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9F7158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9F8158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C32A415C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9F9158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9FA158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD9BF158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD9C0158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C329615C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD9C1158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD9C2158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD713158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD714158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31EA15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD715158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD716158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD757158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD758158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C31FB15C0FC9C007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD759158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD75A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                        files = (
                                AF1FD967158FF96500C40F17 /* libjwxyz.a in Frameworks */,
                                AF1FD968158FF96500C40F17 /* ScreenSaver.framework in Frameworks */,
+                               AF2C328015C0FC9D007A6896 /* QuartzCore.framework in Frameworks */,
                                AF1FD969158FF96500C40F17 /* Cocoa.framework in Frameworks */,
                                AF1FD96A158FF96500C40F17 /* Carbon.framework in Frameworks */,
                        );
                                AFEB9C3815900514003974F3 /* UIKit.framework */,
                                AF0F46DC104E1809000A929C /* AppKit.framework */,
                                AF976ED30989BF59001F8B92 /* ScreenSaver.framework */,
+                               AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */,
                                AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */,
                                AF561DF3159651A7007CA5ED /* AudioToolbox.framework */,
                                AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */,
                29B97313FDCFA39411CA2CEA /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               LastUpgradeCheck = 0430;
+                               LastUpgradeCheck = 0440;
                        };
                        buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "xscreensaver" */;
                        compatibilityVersion = "Xcode 3.2";
                                );
                                PRODUCT_NAME = Phosphor;
                                "PROVISIONING_PROFILE[sdk=iphoneos*]" = "AC8EDA6B-E061-4508-B2BA-129DD6D2AF72";
-                               "SDKROOT[arch=i386]" = macosx10.6;
-                               "SDKROOT[arch=x86_64]" = macosx10.6;
                                TARGETED_DEVICE_FAMILY = "1,2";
                                WRAPPER_EXTENSION = app;
                        };
                                );
                                PRODUCT_NAME = Phosphor;
                                "PROVISIONING_PROFILE[sdk=iphoneos*]" = "AC8EDA6B-E061-4508-B2BA-129DD6D2AF72";
-                               "SDKROOT[arch=i386]" = macosx10.6;
-                               "SDKROOT[arch=x86_64]" = macosx10.6;
                                TARGETED_DEVICE_FAMILY = "1,2";
                                VALIDATE_PRODUCT = YES;
                                WRAPPER_EXTENSION = app;
                                );
                                PRODUCT_NAME = Apple2;
                                "PROVISIONING_PROFILE[sdk=iphoneos*]" = "AC8EDA6B-E061-4508-B2BA-129DD6D2AF72";
-                               "SDKROOT[arch=i386]" = macosx10.6;
-                               "SDKROOT[arch=x86_64]" = macosx10.6;
                                TARGETED_DEVICE_FAMILY = "1,2";
                                WRAPPER_EXTENSION = app;
                        };
                                );
                                PRODUCT_NAME = Apple2;
                                "PROVISIONING_PROFILE[sdk=iphoneos*]" = "AC8EDA6B-E061-4508-B2BA-129DD6D2AF72";
-                               "SDKROOT[arch=i386]" = macosx10.6;
-                               "SDKROOT[arch=x86_64]" = macosx10.6;
                                TARGETED_DEVICE_FAMILY = "1,2";
                                VALIDATE_PRODUCT = YES;
                                WRAPPER_EXTENSION = app;
                                        armv7,
                                );
                                CODE_SIGN_IDENTITY = "iPhone Developer";
-                               DEAD_CODE_STRIPPING = NO;
                                FRAMEWORK_SEARCH_PATHS = (
                                        "$(inherited)",
                                        "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
                                        armv7,
                                );
                                CODE_SIGN_IDENTITY = "iPhone Distribution: Jamie Zawinski";
-                               DEAD_CODE_STRIPPING = NO;
                                FRAMEWORK_SEARCH_PATHS = (
                                        "$(inherited)",
                                        "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-                               GCC_ENABLE_OBJC_GC = required;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               GCC_ENABLE_OBJC_GC = supported;
                                "GCC_ENABLE_OBJC_GC[sdk=iphoneos*][arch=*]" = unsupported;
                                "GCC_ENABLE_OBJC_GC[sdk=iphonesimulator*][arch=*]" = unsupported;
                                GCC_OPTIMIZATION_LEVEL = 0;
                                "MACOSX_DEPLOYMENT_TARGET[sdk=iphoneos*][arch=*]" = "";
                                "MACOSX_DEPLOYMENT_TARGET[sdk=iphonesimulator*][arch=*]" = "";
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               SDKROOT = macosx10.6;
+                               SDKROOT = macosx;
                                SYMROOT = OSX/build;
                                USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR) $(USER_HEADER_SEARCH_PATHS)";
                                WARNING_CFLAGS = "-Wimplicit";
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-                               GCC_ENABLE_OBJC_GC = required;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               GCC_ENABLE_OBJC_GC = supported;
                                "GCC_ENABLE_OBJC_GC[sdk=iphoneos*][arch=*]" = unsupported;
                                "GCC_ENABLE_OBJC_GC[sdk=iphonesimulator*][arch=*]" = unsupported;
                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
                                "MACOSX_DEPLOYMENT_TARGET[sdk=iphoneos*][arch=*]" = "";
                                "MACOSX_DEPLOYMENT_TARGET[sdk=iphonesimulator*][arch=*]" = "";
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               SDKROOT = macosx10.6;
+                               SDKROOT = macosx;
                                SYMROOT = OSX/build;
                                USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR) $(USER_HEADER_SEARCH_PATHS)";
                                WARNING_CFLAGS = "-Wimplicit";