Commits

Anonymous committed 11d322f

Overlay objects added

Comments (0)

Files changed (41)

 joystick src/joystick.c $(SDL)
 draw src/draw.c $(SDL)
 image src/image.c $(SDL)
+overlay src/overlay.c $(SDL)
 transform src/transform.c src/rotozoom.c src/scale2x.c $(SDL)
 
 
     mixer.set_num_channels() no longer crashes [BUG]
     mixer.music.get_pos() properly tracks when paused
     pygame.display.get_wm_info() added, gets a dictionary
+    Overlay object, from Dmitry Borisov
 
 July 6, 2004
     Sound object newstyle types
 <a href=ref/Font.html>Font</a> || 
 <a href=ref/Joystick.html>Joystick</a> || 
 <a href=ref/Movie.html>Movie</a> ||<br>
-|| <a href=ref/Rect.html>Rect</a> || 
+|| <a href=ref/Overlay.html>Overlay</a> || 
+<a href=ref/Rect.html>Rect</a> || 
 <a href=ref/Sound.html>Sound</a> || 
 <a href=ref/Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=ref/pygame_color.html>color</a> || 
 <a href=ref/Movie.html#skip>Movie.skip</a> - skip the movie playback position forward<br>
 <a href=ref/Movie.html#stop>Movie.stop</a> - stop movie playback<br>
 <a href=ref/Movie.html#stop>Movie.stop</a> - stop movie playback<br>
+<a href=ref/Overlay.html#display>Overlay.display</a> - display the yuv data<br>
+<a href=ref/Overlay.html#set_location>Overlay.set_location</a> - set overlay location<br>
 <a href=ref/Rect.html#clamp>Rect.clamp</a> - move rectangle inside another<br>
 <a href=ref/Rect.html#clamp_ip>Rect.clamp_ip</a> - moves the rectangle inside another<br>
 <a href=ref/Rect.html#clip>Rect.clip</a> - rectangle cropped inside another<br>
 <a href=ref/Surface.html#subsurface>Surface.subsurface</a> - create a new surface that shares pixel data<br>
 <a href=ref/Surface.html#unlock>Surface.unlock</a> - locks Surface for pixel access<br>
 <a href=ref/Surface.html#unmap_rgb>Surface.unmap_rgb</a> - convert mapped color into RGB<br>
+<a href=ref/pygame.html#Overlay>pygame.Overlay</a> - Create a new video overlay object<br>
 <a href=ref/pygame.html#Rect>pygame.Rect</a> - create a new rectangle<br>
 <a href=ref/pygame.html#Surface>pygame.Surface</a> - create a new Surface<br>
 <a href=ref/pygame.html#get_error>pygame.get_error</a> - get current error message<br>
 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/Channel.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/Clock.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/Font.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/Joystick.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/Movie.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/Overlay.html

+<html>
+<title>Overlay</title>
+<body bgcolor=#aaeebb text=#000000 link=#331111 vlink=#331111>
+
+
+<table cellspacing=3 width=100%><tr><td bgcolor=#00000>
+<table width=100%><tr><td bgcolor=c2fc20 align=center>
+    <a href=http://www.pygame.org>
+    <img src=../pygame_tiny.gif border=0 width=200 height=60></a><br>
+    <b>pygame&nbsp;&nbsp;&nbsp;documentation</b>
+</td><td bgcolor=6aee28 align=center valign=top width=100%>
+
+	||&nbsp;
+	<a href=http://www.pygame.org>Home</a> &nbsp;||&nbsp;
+	<a href=../index.html>Help Contents</a> &nbsp;||
+	<br>&nbsp;<br>
+
+|| <a href=pygame.html>pygame</a> || 
+<a href=pygame_cdrom.html>cdrom</a> || 
+<a href=pygame_constants.html>constants</a> || 
+<a href=pygame_cursor.html>cursor</a> || 
+<a href=pygame_display.html>display</a> || 
+<a href=pygame_draw.html>draw</a> ||<br>
+|| <a href=pygame_event.html>event</a> || 
+<a href=pygame_font.html>font</a> || 
+<a href=pygame_image.html>image</a> || 
+<a href=pygame_joystick.html>joystick</a> || 
+<a href=pygame_key.html>key</a> || 
+<a href=pygame_mixer.html>mixer</a> ||<br>
+|| <a href=pygame_mixer_music.html>mixer_music</a> || 
+<a href=pygame_mouse.html>mouse</a> || 
+<a href=pygame_movie.html>movie</a> || 
+<a href=pygame_sndarray.html>sndarray</a> || 
+<a href=pygame_surfarray.html>surfarray</a> || 
+<a href=pygame_time.html>time</a> ||<br>
+|| <a href=pygame_transform.html>transform</a> ||<br>
+&nbsp;<br>|| <a href=CD.html>CD</a> || 
+<a href=Channel.html>Channel</a> || 
+<a href=Clock.html>Clock</a> || 
+<a href=Font.html>Font</a> || 
+<a href=Joystick.html>Joystick</a> || 
+<a href=Movie.html>Movie</a> ||<br>
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
+<a href=Sound.html>Sound</a> || 
+<a href=Surface.html>Surface</a> ||<br>
+&nbsp;<br>|| <a href=pygame_color.html>color</a> || 
+<a href=pygame_cursors.html>cursors</a> || 
+<a href=pygame_sprite.html>sprite</a> ||<br>
+
+
+</td></tr></table></td></tr></table>
+<br>
+<h2 align=center>Overlay</h2>
+<a href=pygame.html#Overlay>pygame.Overlay(pixeltype, [width, height])</a> -> Overlay
+Create a new video overlay object
+<br>&nbsp;<br>
+This creates a new Overlay object. Overlays represent a basic
+interface for putting YUV image data into the graphics card's
+video overlay planes. This is a low level object intended for
+use by people who know what they are doing, and have pregenerated
+YUV image data.
+The pixeltype argument must be one of the pygame constants;
+YV12_OVERLAY, IYUV_OVERLAY, YUV2_OVERLAY, UYVY_OVERLAY, or YVYU_OVERLAY.
+<br>&nbsp;<br>
+<br>&nbsp;<br>
+
+<hr>
+
+<table>
+<tr><td><a href=#display>display</a></td><td> -
+display the yuv data</td></tr>
+
+
+<tr><td><a href=#set_location>set_location</a></td><td> -
+set overlay location</td></tr>
+
+
+</table>
+
+<hr>
+
+<a name=display><font size=+2><b>display
+</b></font><br><font size=+1><tt>
+Overlay.display(y, u, v) -> None
+</tt></font><ul>
+Display the yuv data in SDL's overlay planes. The y, u, and v
+arguments represents strings of byte data.
+</ul><br>&nbsp;<br>
+
+<a name=set_location><font size=+2><b>set_location
+</b></font><br><font size=+1><tt>
+Overlay.set_location(rectstyle) -> None
+</tt></font><ul>
+Sets location for the overlay on a screen.
+This does not move or redraw any currently displayed data,
+it only sets the position for newly <a href=#display>display()</a> calls.
+</ul><br>&nbsp;<br>
+
+
+<hr>
+</body></html>

docs/ref/Rect.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/Sound.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/Surface.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 
 <hr>
 
 <table>
+<tr><td><a href=#Overlay>Overlay</a></td><td> -
+Create a new video overlay object</td></tr>
+
+
 <tr><td><a href=#Rect>Rect</a></td><td> -
 create a new rectangle</td></tr>
 
 
 <hr>
 
+<a name=Overlay><font size=+2><b>Overlay
+</b></font><br><font size=+1><tt>
+pygame.Overlay(pixeltype, [width, height]) -> Overlay
+</tt></font><ul>
+This creates a new Overlay object. Overlays represent a basic
+interface for putting YUV image data into the graphics card's
+video overlay planes. This is a low level object intended for
+use by people who know what they are doing, and have pregenerated
+YUV image data.
+The pixeltype argument must be one of the pygame constants;
+YV12_OVERLAY, IYUV_OVERLAY, YUV2_OVERLAY, UYVY_OVERLAY, or YVYU_OVERLAY.
+<br>&nbsp;<br>
+</ul><br>&nbsp;<br>
+
 <a name=Rect><font size=+2><b>Rect
 </b></font><br><font size=+1><tt>
 pygame.Rect(rectstyle) -> Rect

docs/ref/pygame_cdrom.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_color.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_constants.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_cursors.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_display.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_draw.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_event.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_font.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_image.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_joystick.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_key.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_mixer.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_mixer_music.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_mouse.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_movie.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_sndarray.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_sprite.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_surfarray.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_time.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

docs/ref/pygame_transform.html

 <a href=Font.html>Font</a> || 
 <a href=Joystick.html>Joystick</a> || 
 <a href=Movie.html>Movie</a> ||<br>
-|| <a href=Rect.html>Rect</a> || 
+|| <a href=Overlay.html>Overlay</a> || 
+<a href=Rect.html>Rect</a> || 
 <a href=Sound.html>Sound</a> || 
 <a href=Surface.html>Surface</a> ||<br>
 &nbsp;<br>|| <a href=pygame_color.html>color</a> || 

examples/data/yuv_1.pgm

Added
New image
+P5
+752 864
+255
+����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+
 %&&)+/51<?87@EDPQTVTPSXZZ\]YVX]YX^a[WY[X`f_UX^\]cf^V[cbcd`abbhggjh_]cgfcgbW\]OL\llYKv��fGy��``ld\]`hnjkkhkla[bjjfgiffjlghggheeikgfdcfifigffghgfhmlhijijinolkklnomllmlkkmponolkqqllnnmmkloonoppqpnnoonmnhfjmhjnlbZSQWequvuurrvg`ohapztuvrsrsvvtuwvtsrsuwvutvxvv{wuwywvwxyzxxzzxy{wwxy{|y��������������������������������4Yf\^a_a``_^\[YX]\\\\\[\\[[]`aa``dghghknnqrt~�����������������½������������������������þ��������}�����}{{|}}{yxxyyz{xxwuuvssvutuvuptutrqqompooonleb__[SROMYkpmlkoodURVTQVXZY[ZY\_^\[[]`_]`dkllkijnrqpopqrqpurppsutrqrrsuvtqorqooqqonljklkfcmljhgffeffgilnml������������������������������������������¿�������������}ww}yuz������wqqssuvsstw{zwuvuv|r_etpeinrohegfikmmjgjnonnlgfjoqojhfhnpnjigfkqmkhddmqnmohegmqkaURK8,)"$'%! !% "$"
 >TOLZjkXKx��`K���`cld\]ahnjkogfg`]emjkmliloliklifkokjgikhhklhjlkihjmjhikkmnlnnmnnlknqoopponnmoqomnqqprrqpkkpoopoklmjmoqqppmjidgjhkmic[SRWdpttywtyyeasofntrvwtuwtrwzwtsrtwywtuxvsuz{|wwxwvwyxx|zwy{yvxw{�������������������������������������3JRLORSVSSUVXZ[\^]\^`bbaccdfhijkgijlmmmmllmnopqqoqsuuutsqppoonnnkkjhgeddgfdba_]\^^]]]\\\[ZYXVUTSTTTTTTTTLLLLLLMLNMLLKJIIJJJJKKKKHHIIIIIIGGGGGGGGGFEEEDB@F>?AA<9EV]Z^^^g\F=FGBFDAEIQZbimowx~�������������¾�����������������������������������������������z��{~~xz~|y{wqqrtw{}{upwwwwwxxxursvwtsvutsqqrtutuuronqtosvtqopsprrttvwlmlv~vrw{tifkkiihgjlkkklkhjle^cg`^hopomhflpnjljfgqmmnkhhjlpqlfekpmkjigimnpnlhffjmrpe]dnolh`X`nppzyku�sejp{��t]X`Y^`^`iia`d]]fid___]diaXZ_adikhda`bcefaYUVQOJD=73032-$! 
  
 !!"#%&&'))',++*)(('(((''&&&%$#%)&&++/#7SMG\mkXP|��dI|��cbke^_cjjhrsmml^[hkkkkklnmkigikigikjgghihhijmmihlkglmlklmnpnmoqommmjknpnjloooomnppnrrpostqprqppqpoqqomoqnllmkjihjnmd[XWYdquytvw{ufgqjarzwvwvttuutuursuuttuwwwyywvvttvwwyzyxxw{{wy��|ndb_]^_��������������������������������$8=79<9:==<<;::9;:9:<=<;<<;;;;;;<==>=<;;;;<<===>@@?>=<::99999999:;::9:997889:;;;???@@@AA?@@AABBCFFFGFGFFHIIJJJJKNNMMLLKKKLLLMMNNMNMNNNNNMMMMMMMMMLKJJHFDFFB=>85G]jb`hfglY=9D@<@D@@@@@@@?@?@CA?AECB@??@ACEFEDCDCBDEEDBCEHABCEEDCDDGHIGHIKIORXfkb[[dkvz��������������������������������������¶������������������|}}{yxy{xwz|{wmlu�����~}tpmlmsvtostqoopppswn`htqbfqtljjbjqqnnkggnoqojhjmknqne`hsrolifhlmlmkedimnimkgjljjikpomxzjjmrwreajoz�ugebaa`aa^WSRMJKH@851-,*$#"
 ! 
+Rw������~���������vYZo}��������o^R:.AY][G'(/+=Y\VG0&.+-+3;:9::@ED@K^X?04.
 4h�������~~���kVhzypqz�yr[?,2D>/(@IFLED[`G<KJDGGEB?>>@A>:AAAWY8/4.$9QOJ`vsXL{��]J���hkqhbfd_gosrqrqd\hqrqqqooonmnnooonnrh^v������������������������ÿ��������������������������������’wurrttrolmmlkmopf\WX\ix}zxtx~wdr�udx�zururqtwwuuttuvxwwvxwtwxy{qh{����������׶��Ъ�����怀������������������������������f�ŷ���̿�{~}zy����{y{y~�{{}~�zvty������������������������������������������������������������Ü���������������������������������ҽ���������������������������������������������������������������զ\Lba[`caWVWXYZ[^`defgilkimh`ZQIN\SEHNMWZMSJk�����������������������۱�������������������������������������������ʑ�������������������ž�ԝnj`^w����ĕ��Ȼ�dmrigempkimjegknonidejlnlihfgknlighjkkkihidemm\O:..-%!#$%&')***'&'$
 
 !"&(*--..+*)$
 &_�|rm`fm�gOBKURW]N?N^YYZY[[]W[_M/*&&,#"@cqgimkiSF=2,,)(1/5+
 F~�hXW_\T]^RP[acd^[`]USQX[]^VY_O,#%*.)5][><@:.&3HF.$+'#%17-6TQKaws[P{��`J��gmpiagd^gqvxttte]kwvrooprrprpoooonlshc{���Ǹ�������Ƽ���������������ÿ���������������������������Ɠquurqrpmrqmpplooe]YZ_juwuyutxsct�sbv{sruwyyusuvtsruwttutxywyvwypf{��������������ζ�����退������������������������������m�����}������}~�������������������}}���������������������������������������������������������������������������������������������������������ſ�����������������������������������~rsuj[a[OQWWSY[\[[]]ZX]WIDHKIJYcfigee`bflnjghjlmkloqpookkj[NQOJVWQ��ٸ�����������������٬���������������������������������������������t}���{����������������۟rke]x�¶��������agtlhimnomkhggkklkgcdgkmlgdehklkjjgehntigl_=%()$'(!
 !#'*,/1.-.-)''''#
 '& '/+\t]A766@YYXa[TWda`^ZVPINONLFMWJ0.2*%.-)-)&?fpjo\:'(''++09/
-2($**!%% 
 ';@>78605=1-6?AGPE?FX^PJQYQOXZ[\H/+/*.HbrmlmmiZB-.0/,)&&+58,
  "$&),+)''"
  $*/0/*(!!*,--+*-));LLSQB=JRJNTZYW]`\Z\]]W[bQ2&*-*($'(-,&&*.0,-14346626+
+CX]]\\\\\\^\Z[\]ZXRTUTOLKLGFEDDDDE;;:87543....----.-+*)+,-11) 7UTLdxt^Rx��aM~��jorhchaYfsxxvuse\jwtomnoqrpmoqrrqnmrkay���������������������������½���������������������Ľ������‘ousoqqmlmnopppoofZXYapuvtwut}{`o��lkwutvsvywqqsuuwxvsstuwutzxuwod�������׸�������������р�������������������������������l�̰��������}y|���}~������������{��������������������������������������������������������������������������������������������������������������������������ȿ�t}��|��}m[NT_`\WTUVTTTTSXWI:<GGNUXWUWYXWWUVVXX]_]YZ^]XA4-1535;567:>BGIKKMNMIHIG@@ABGKHPQOESOK����������û�~�����������������������������������������ڼ�{����������ž����������כnjcTw����˪���БciphjjinonokiklmmkkhgiimnjfefglmkggfhmlkkcZchYC:'"%&+'%)(')&""$&()*+,-+)$
-;65420/.-,./.+*+-*+,,+*)).-,***++*++,--..***++++,.///-*'&'+&
 "7q���|a~���������sgw~}���tiqw|s``cbdmja^\[XYZVW[WX[[\\[YZWUY[ZXZ\_`a_[XTRORSSPB54COOKGIJOMKRWRKTPKNW]`fns{~}���|squqmotprw}{|�xZSslZ`d]]`YS[dkdfjg]Y^eghhggggfhebbdffef]Xo���������������������������������������������´������»��Ûf`lhgheecbfdcaeg]SLOZ]_ejhb`lj^r��dktmpokkmnnnoonmknpnsvroptqtyi]���β������������������Ԁ�������������������������������=`s���������������������������������������������������������������������������������������������������������������������������������������������Öhgmbadgdinnqtphfb]]agljomd`^]_ikptiVTblnsreVWbloppstqoqrrrqrsurvtrtustvsvyvtvuvwz|socD:Nr|xhVj{~{vxxuyyxwuv{{u{wttxzzyyuun`bqxuwiZ`h`TU\_\[\[ZVPJIJMOPROONGRdbXV^[STXaaYa^Y������������������ؽkUcST�ķθ���Ź��lsrhktuvz|vmmsoooooooorkuuT4.04/'4B<53*(""
 
  
  
 
 
 
 
 
 !!#&(/010001334;MXY^\WVZVR[cghhi`QP]ecegfdbcd_acefffffXVp{������������������������������������������������·��������a`jecdadcgfaa`bd\QOLMVaffe``eeZv��^gomklhgopjgkljlghllmnlmqsmmxb_��ȿ�������������������̀�������������������������������J��������nr��������������������������������wylt�������}��������~���}qt|�������������Ȓ����������|����������������������������¾�����|feb_[XWUKPVWUSSTcehknnjg^\_hprlcZ^ccadhgbgecgg_YQFN][Y^ab_`a`cffffeddfikgpslgimmrY@899:=?>:<CDBEECCGLOPPRMNUUMLPOetsqvxvpsvurqtvtxvsw{xtuquzyvwxoc`mna\\\]_`_ZY]abccdedafbYPX^WXYUZ_]dmhc��̶����������ͪm\eNIs����������rTZ\UTVUUUUVVVVUM[fJ&
 :?38C(
 "%)+.--02320407GSV[b\Z\VQ[chb]aaTPZehfgjiecedcccddddcTYw�����������������������������������������������������Ⱦ����edibce`aaccbcaad\RQOPX`a^dfaceYw�`ipnkkkkjjjkmmnlmnljmnjinmiksZ]�����������������������ǀ�������������������������������O��������s{���{����������Ž���������������‹sts{}|����wlr������������wsw~�������~�����В|���Ǹ}��������������������������������ı�����mnje_ZUSQPNLLNPRSSYbhkkkkga_chmnjb_`bbceeffa_gkaUJFP]\Z^a^]`dfhgdhgd_\_hpklnomgc`SF:7878;9:==?BDABDEEHMSTTMLPPIIONWlxsnontsrrsssrutvyxtu|xrpswzulrtm^ZhjNR]_\``\[_aa^]]^^^\WS\^W[]V]ia]jkf��ϸ�������ü�үp^hQLv����������qSZ]WVYTTTTTTTTTMW[? 
 
 #&(-./12433445:GV^_ZWYVT]abidb]TUZZcdcccedcgecccca_fVYu~����������������������������������������������������ļ����a_e_bfcefacacaacZLKKOXbeccb_cbWw�y`kokikmmomllllnnllmnmmmlmmknsZ_�����������������������Ҁ�������������������������������I�������ߛx��}�����������������������������ʖsq|wzyy����������������{ws{}~|zz{xs�ӽ���������Ɋs�������������������������������������{lnjd^ZWWWVTRQPPONSSUY_ehidbbegjjgb`abaaefdd`[_faT@HW`_\^_a_adefgd_^][[]adkh`WVWRJ<:;;:778>;?B?>@>@?@BGIJIFIJFGJJGAWszssywuutsrsuv{wvrrx|vrnpttrqppgc]Yit_R]`^`^[]Z\]]_a_]_dbY\^VWWZX]^dsih��˾����������֯o[eOKs����������rT[^XWYUUTTSSSRVUNNUI1%+$1HC369(
 "&',.013344722:FQ[bZVYUT\ab`ci`PO[bcffaadgebcdcbabceUWt~������������������������������������������������º��ü����`dibce`ba`bbcaabZONMOW`b_cb_dbXy�{bmokillimmkmjhliklkkllmrrrqtw_e�����������������������Ԁ�������������������������������F�������ˢ��������������������������»����������������������������������������������������������|������������������������ƿ������÷���xnokd^YXXYTSRSUUSPTUVWZ_fkfdcccgklf``eb_ae]``]_f^MBMZ^[\`caadfddca^]\[ZYZ[]]XSTWPF9:;<;988<:;?>=>>?>>BFIHEBGGCCGFBA_wxtvwtutrrrsssvuuvvxxxrmnttqpplc]a`chbX[[]_`^^`bb_^^_^\baZ\^Y^bf[aa_mmb��ɻ�������º�˰nZdOKr����������tV\^WVXVVUUTSRRPNOQTVNAABJO=2::'
 
 #%'+-/112359779BNX^YVWQNX_cfabaVU]bcfgd__ae_bdcaacedTVs~�����������������������������������ø���������������ž����abhacebcc`aacaabYNMLOW`b_c`_daXz�}bknlmmiillkljghjkllmllpnllmoqYa�����������������������ր�������������������������������G�����������������������������������������������������������������������������������������������������������������������������������śrjsmf]XVWWSTVVUTTTTUWXZ_fkgdcefjlkebbcbaba_^\X\e_J@P^a^]_acdgfa_`_Z[\ZXXY[\ZUQPOH?89::::::=<::>>======@FHGFECA@?>?Snystwtsuvvvutssruuvxtptrnptsqpnjg]^d_`e`\\\]^_\\^_^]^__Z[[Y\YVb�~\Ya^knh��ȹ����������βpZeQLs����������vW]^VUVWWVUUSSSQQWWQSXVTV[S:0<;&
 #%'),/1113539:8>O\^ZX[TPYageac_SQZ_fcbdfca_`abbbbcceUWt����������������������������������������������������ľ����`_e`bfcff_aacbaaXMLKNW`c`b^^c`Wz�z`ilkmniigjkjkkhkkjkmjhmommnrrZc�����������������������Ӏ�������������������������������K�����������������������������������������������������������������������������������������������������������������������������������Ɩmlvqg^WTTUWWVUTSSRSRQUZ`celd`cinojacc`agf]\[[Y_h]CDT_^[\`dgfgd]\_aY]`^YUUWXURQOJA;88889;;;AB<9>?<;;88=@@CJQF><96:Ci}{ntwsvqtutqqtxwuvvtvyxqqstpoomlf]]\[`ba\\\Z^b_\^^^`a`]_[[]_XVh��nV[`mhd�����������Ž�ϵr\fRNt����������wX]^VTUXXWVUTSSUSSTSPQUNNVV>1:8&
 Kpj`eda^ZY[]ae^bfeiz���yv~|rmg`\YXYYWUWWWXYYYYZXYZXYYVUQRUQNMLDGCEOUTS[]][[]]\VSV\\UNLOONLGFKSQXZZ[]]``^[YPSbe\WB)!%%$'()+-023568856?INWXPNY`_dba\RQ[dddddcbbc_baacb`bhTSq����������������������������������������������������Ŷ����Xad_ba^b_]ab]]ecVLLKOW`b_`_\`_Z{�x^hlhfiihhiiijjjfjljhilnlnlkppXg�����������������������ˀ�������������������������������&|���������������������������������������������������������������������������������������������������������������������������������Œn]a]YY]_agjfhbWTQVcefc]YYWTZcaYUMN\gi]TUV]b_STZZMFRSMIKLJKNNQTSNJKMJGBAAA?=7447;<;:>><;;98:<92046454138;@FHINME@CLPctxvvsrlpooqsrrswvrsuvxrgaiqrolnnh`XZ\[`he_`jmigbcff`Y[`^\_bb_^]\[\\Z`f\t�����������ú�ʮn\hSLt����������qPWYSSQQQRRSRQPYXVTTTUVPNQUE247'
 
 Dkh`fg^_`YQU_ehda`cn~���yuqnkd_^[XUVY]Y[\ZXWZ]ZYYZYYXWWURQQPKEDECENWVPX\a^SKSb]ZWXZZXXTQNLIFGKVWX\]Z\c_^[[UT^b\V?( #%&''(+-0245689648?JTVOOY_^Z[^\TRY]cdddbbbcdea_``_bbRTr}����������������������������������������������������������]cfbdcadaa^^`_`]WMLKNV_a^b\Za_Y{�v^jlhgihhiklhddhifglnmlnknkjopWf�����������������������΀�������������������������������">���������������������������������������������������������������������������������������������������������������������������������vegkwxnbbededhf`]XQLU_hie_XSXX]]SKKJUgeXSTYZNFNXVJDMNLJKLNOOSSQMGCAA>?@AAA@@87669::9;;;<=85777559:8853358:>BMKLNPOPRNYnyvoqynpssrrtvouxytqtrjgkjjnnohjwuc`g`\aaahllmhdcec]\`^`ec]]a`\[]]]``Yz��¿����������ƫq_ePOw����������nMVWOOOPPPQSTUVQRSRQOMLMTZVA9@8(
 @jiaeecbbYLN\eea_`bgt���}trpne^^]YWUWXYZZYWWY\YXXXZYXXVVTRRPMJG@@HQUTQWZ`aVJP_ba^WVX[ZVSPMIDEGSVYZ\[]b\[XYUT\a[R;&!$&'&'(*-0346677536<GQUNOY`]\_b\RQZ`bdd`bdd`dea^a`_b`QTs~����������������������������������������������������¶���~Xdfbdd`da]`a\\cbUKKLOX__[`\]b]W|�v_kmiijhijkihggggjkkkkjijmkjooWf�����������������������̀�������������������������������"/u��������������������������������������������������������������������������������������������������������������������������������q`m��h\aadjfbddeec^[OT]fjf]WVS]cTJKJUddXNR\ZKDMUOFAGMHHNQPRVOPNIA=>A><<>AA@=;;:99975;:76889<><647:;?775588<BQKIMONNPOUjwurqxqqsuropsqtvxvuvqhhmlinnnqrxzh[ag^`bcgmolgeefb\Z\abca^_`^[Y\\\a_[|������¾�¿���Ȫr`dOQx����������mLTUPONSSRQQRRSRRPPPRSTU^dY@<D9#
 
 
  
  $
 
+303BQWRNo������������������������������������������������������������������������������������������������������������������������gS[XYXWX[afjjjgcekoomlklic]ZSOLLJKLJ=A@>?@AB??@CC@>>=@BA><>AA><<?AA@A?A@<=AA=ABBBDB?A;533234/01220-,-*)--(!
+1,,9FKTVKe�������������������������������������������������������������������ľ���ļ�����������������������������������������û���`[VXYXWVWY[]^[XY\WF5?ILE@BB?BDFC@CEC>CC@?@@AED@>=@BCAAA?>>?@CAAC@<=B@;986:=<@@?@AA@?:7554100-,,-048:?J:
  
+2-/=KPQRGe��������������������������������������������ǰ������������������������������������������������������������������������ݘ[SUSPPOMJGDB9744:@>8??@CCA?><=@@@DC=BBABEC@ACCB??ACBABDDCA?><AA;8:943135320+0/132/-.3223226:HJLNONLKOOR;
 &>buropnkmsustsqkhouspuustrrvo\U^efdbfnqqronqox|ulhgekimo`QZqmfifca\bZ[\YX^^W��˿ļ������ƺ���racPQx����������jJTYQQUWFCF;3@PB$
 
 
 !##%%&%+))),-.-*++-82%+IYUKRXX[XYYTOOUWacb`b`^`^\^]`_[a^PVt����������������������������������������������������������rUed^acab\_Z^a_a^SLKILUWWXWU[\QX~b_jdbdffcdddefecgeedeghegkgflgRl�ɷ��þ�������������������������������������������������!((*:IKG.X���������������������������������������������پ�������������������������������ٱ������������������������������������������I19=A=989;:9::9:9:9:9::;;<<=?<=??<;=<>>@ACBADDB@@CBA?@??<9535653464/,/241..0/0//14546645756=LNPRRSTUQOXV4
 %'%%(*('),.-,.+,01-$ 7V\KMWXXXYYUPSXZa^^_]_a_^[]^__\a]NSs����������������������������������������������������������mXdd_ab`a]]XX\^b\NKJINVZY[ZVY]QY�`_kggifcbcddfhhghihfcehkhkgglgQm�ö������������������ļ���������������������������������*((<KB67����������������������������������������������Կ��������������������������������ǽ����������������������������������������O;JG=:88;<;:889898888899;;<<<??<<==:==?AB@>>BCC@?@AA=;989864121/020-/230.-///./245448547846>JLOONORUSNUV9
 
+**:@3*V����������������������������������������������շ��������������������������������������������������������������������������[VgR;978:;97776767776779:;<<<>=<;=<;@??AA@@B?AA><===<<;:8743310220/1231.-00.0/144348425:948BHKMMKLPUTNSW@"#>fzossnkmrtqrrsqlmsuqprqpruqa[ce`\[Zhonnkc]_fd\^ikdfehe`hiZOaa\^\YXXXYWU[\T}������ù���û���racPQx����������lLVZSRVXO>315>KE%
 !"
+8) 9Z]X\^\ZYY[]\[ZVUUVTRSQSUTSUWYWVSQRQPQTVTOPUTNQPPRW\^]RRTSNKIFFMMLSVUV\`^\aa[YVPOSQIFJJLG4"
 &Jnslnrmjosssrqrvskqrqrtsruq_VZ^`dga_TEBJMHXfbVZcbaga]]\[[\TFN^\XXTUUUSRZ^Zs�����������ź���s][PYu����������lPX\[\WYQKIFBFOA$
+6(-Q_[Z\_][[[\ZYUUVXVSSUVVUUWXYXVURPPPPRTSSUVVSQNQTVVXZ[WUWWRMNNILQTRRTVSTVXZ^]XRLLPNHFJKME2!
 
+4+
 #" &*)&*+-,)'*.-380 # !
 !!!%&&&((''()*),66(
 #" "')&'*))(*-,+.51$
 2IUWUVX[^^[YVWZ]\XVWYUTVVRSVVWTPPPSXRVYWUUTSPMNQQNQWWOMPSVUQIIFA>=>@JOQPOONMPNKGEEFGFD/
 " !! %&%%()('(**(25,!  
 "$&''&'&%$),*+12) ## !
 -DX^RUWPPRPT^b_Z]_^__``][\^_aOTn|���������������������������������������������������������lV`ba_`ca\ba`^ae^ONLHJT[[ZZZZRH`|kXdhbficeiebadggfigeffeefjiikn^Th�������������������������������������������������������� .Z�������������������������������������������������������Ш����������������������T<OYOT\Y[ZQXg~������ķ����t}������{oro[z���������w:463//021100/.-+))/0/-.24313456654440022//2/-022/-.,.1235731233576688;@@=<>==?BCCC=>?ACEEFHJKNUVVYX[a_`dM%
  #"##$%&&'''$&)*0<</ 
  .HQKNUULNMPUQLNKMNOOOPQWTSROOQQNOPONNPSROLLJHHKLLMPNHFHF><>>?DFLRTROQRQLJB>CCCOL4!
-7859;:;==946<91101578;@CLYafhhglfaa`]\]dabdirmXO]bYXekg`\TJB=>A8CLMJHD>@50/.,+(%# 
 ##"##&()%'+*)(*5EWmiD$
 ""!
+JWQUSQMLPI6##%''%&(''&&'*-/7@JQb���������������������������������������������������������iUUTTSSSSSSNOPNNMHA>DJRWTWVSVWM`{j[hkc^VQT[ZXXZXY^ZWX\YUYcddegjZSp�������������������ț�����������������������������������
 *Hhngnn]]ionnonmimlkoqpqpdVKDCFHDFHGGGKNILLD==BEADFB=;BIGIPW\^R?DGPZREKRQPHCFF?<BB9/-+&%!
-a�������zqePCM]jy�pqqqnjfcbccc`\XVUUVWXZ[[RVUONQPKJKLKJKOTJNXZTRUROOTSXv����vlk___UW�����������rm�����rkkedklfejsogls]</4579986551130/00/,-.+,.-*02120.2//001111-,+.4:?A>=====<<7<>?AAADECFLNLNTNQRQQSTSQUWWVUROORPMNMMPU[[VY^^d^."*Jkpid^\hppqqnmkonjjlnqmjh\HEICCDFFFGJLINOIBADFC??BA>BKSXTJDBHSP;B_\KPVY``XLEQfsiVLQSLFJDD@775*&&$ 
 %0/:HB-%,,5;<95>O[NHJLMKF<5JL30:;;;BINU[[QEGNONWlw����xsvxksc5%/"
 
 "*-'"# 
 !""#%%%&'&'&'&'$*-5JbcWEO_^F4+!&.)7VG,4KSKGJMOTOGA?>93/,,4ANSU_ipmaUJC4*"#').33K^U>9?CB?CGEDHJHJJJIJLMRRRPPQSTPSTRNNPQLNPPLLPRKNPQUXWSRKKNLOL@;>AIRTQQTPURJazjV`cb`UOW[YWZ]WWb`ZZ^][]bb_cij[Wt���|~��xv}yxysz��e]ZLd���������������������������������
 !*,'""!!&+:NMKJIKOSVTUSQV]]YH?AUmwlYRSSSROMKCDFHHGFEFHLNPONMRSOHHNRPOONLQVUOIQOOSM]�����okqrccecbo�����������}rg`dccdbccdc^`^`f`I600123344110.1440210000.-/,*,.-,-0/..07@GEHHEBB@>@?=<<>@BABA@FIKMLOQOPRUTOQSTUVTQSUWWYYXTTRPMLLMNOUYWX^`]h]1
+QkhfeU[lqjlmkklnoqpnlv}{hSLMMIHIJKJKKOROJNWXTRNLLLKNTUYXWZZXX`^]]^]_ce`_gh_n����eG813.1/,./--,+-00.-.-/3565567<<;@BDIC::@B=5+.+@JCCEB87;?AEJIJIIDDKMQgol`YTPPGDIJ<-$
 
 (HinbKRhpijjfnjikjhimdKCF@=CGCGIJLORSNPNGDEGEEEHIGCFKOOPSUUSQPSTRSVWVZQPUUSawyvuxwiUIKPPIGLLFIGGKMKHFB??AB?==ADEIMJHKD:2242246+7VVCELAAACIOOKKCEJJKSZW���c^bm��R'!$ 
 :XXNRZYP@AHB9>IUULIPUUUVTUUUVVTPUVY[[YXY\WTUXWTRYWUUVVUTWVWXUTRNJIIJIFFIGNaZ2
 !%&$'*''$%%"#&&'&&').38++05418CRPPRQOOQMJKOQMJIIJKLLLKKFKHHYt����{xvttvvwxuppohdcgiVn�Š������������������]LHSg���������������o]PLPLJMPJJGEFDAAC@BB>?B@?EFFIIINLKJJMPSTNRVVTSUXTUTPOPPNORTUVWTPRQONOQOLNQUXWX\b`adL 
 &$&$#%&&'(($$&'.2-"#("!>YWDR`D#8PGJ:!%FOIVM18@5FWC/88422.-1//641Fbs���y���z���}���������������~~��}ry�zjemk\W`cXOPRLEEE>=>;89:<86:@B?;69AHKMI@8;>EPTRSRRSMJfzdXbaa]OLQRUVD7FQOPPQQQRUWU[[[VLPdmdYV]ebZ[aZ`pij��ώQ__Na�������������������������������� #"!""!)2+%-#4r�]t��H"2TF3/563521/-,,,,*)'$%)06987544442230J������������������������������������������������~�v�����±����������������������������������������bHFHGIGFHIDADECB@ADGIIHGJJLPPNOQSUUVVVURONMKMPSSRRUUQRUUVTVXTSTQPQRQOMNPNPTWVSY``X^bG
+L]]aeilhdefggiijkdQHG?3*#"!(17AJPPNPKB?>@DADB@EHJKKNTWY\afhmoorurkjlcWZgg[^_\URPMHLLKIHGFECBA?ACGIHFFFDBCFKDCMVSMJEGIJIEA>973/,*++)-268<BGFKOLIHKMPQTUTQUZaU4
 $ 
 1ZbVU\TNPICFJFDIJONSOCDOSOUYZYYWTVUVVWYZWUVXYZYWVVUUUSQRSRQRTRMLNKIHEEJC2#!!$%""$"$%$##%(&%+.-$&AMQJAEKGAAD8).63,+'#--',5=:6?FA=21123;FOH;5536>?>@GE>CNMJKPPIJOOMHLPLLOOLLJJNNLMNQPPTURQVVY^a``cljkonklqoutswnUBNOKGJIINHHKNNOKA<<=DMNMPPMPKJgu^Raa_ZNMRRPRNF?8:<;9524;BCBDC;6@MWPJIHEDE?@CFHHGECUnud\{���������������������������������
 "
 
 ;ZbZZ^RJG?BIIBDLMJILIBDPUPSVWXXXWTUXWVWYX[[ZYXVTSRRTUSQQSRTSPMKIHIEEEFE:)!##"#$$$)&#"$&&%##//-8AFNKC?CB>=?@A5&&/1'
 ##(+.114<BBA=3&(5.6:?HE9311;A>@B=>;<:69932<916844668:=?AAABFIKKLMJLMNNNNLSSSQQQQONMPPMMRTONGFT\WOGEGGGJH@9;>FPOLMOMPJIhv]U`^][QMPRRVOE=9=<=;879>BBCDKI<Mxumotvvwuiaaeikrnfc������������������������������������"#
 
 %'%)(.AWV;! %%';Yg[7Ah|�������������w��sqwsgdih]VZ\QIKKDA@CA;8;<:88;<:7?<::>DFBEGFNbfXI>?EJKMI?<<=CMNMPNMQHHhv[Raa_ZNMRNTR=5BKNFKMKKMLJFDKOG>J\d]VSSU]fec`]\\^`[~���qX��������������������������������#!
-PjkejiaYbddffibI9<CEHJJOFLQOMHEFQSLIJHGGJJHGIHFFIHGGIIGFFECBDFGFGFEFFEFGFHHFGJJHGGFFIKJFIKMLJIIKHGFEDCDDECCDCDDACCBCEDBBFDCDEFDBDBER``]``^_bghhhhijjhku~X- "
+Na_WVSNOIHFJJA@INLNONLKMORPPSTRPOOQTTSTUSRRSSTTTTVRPRVUSQRPNLIFFHEEDD@/#$$"!"#$')%&())(''#V�|H:?<GD=<A?<>C@=98>=1" 
 
 &!#Fa[WXWRRPGDGQTGAJSNNRSQQSQQSUUUUVXVSQTVVVVSSTUUTRQRUUQPSUSQOKHGHFDDDE>,!"#!$%&(*-(")*)&#4\���a<A7/3>C><=;B?>:;<9A:$!"
 #'/9GI;(!
 ,-:Xkr�������������������������������������������������������vA5??@>:9AKIHHFFKG;99:BMQNOJMSGJnrUV`^^ZLJPNOH=9<:4679;=@ABCACDCKYb`fffifbea`_bfhge`Z]hfXRV��������������������������������$.-'%)/2-*38456,F��Qt���������������������������������������������������������������{qosw{yvw~�����ǫ�����|tsqicq���y�������GAEFGFEFIKMKNTYZ^chlppoqy}{}������������_GGE>3.5>@@ACFGGFKKNNLJKJMQQQUTRSTPNPQOOPQORSQRUTRTUTVVTRQRRQRQNJKRTUXVTW[\\ZWdc?!<^e`^[`a^acc`RB<DHGCFFGLLPNIIG?8ALLJKIIJFHJIGEGIFEEFGFFGEEEEEEFFGFEEFFFFGFDEGGFHIHHIKKJHIGHGGHJHGFGHEDDBCED?@CDA@BEDBCC@FFB>?@BGDFDIX^]^_cghhiihmgiogm{o<# !
 !% .SfYYYTPSQFEFQTH@JTPPQRPQTTRSTUVWXXSRSTUSTUUUVUUTSRVTRQSTSPPMJJJGEDEFD7' "$$%&&&&'((%'),$%Ey���k7:C2).<?=<:C=<:=<9B<$%()A><=$
+Qqz��������������������������������������������������������uD>B==CHHHIBGIGDIG=9;;BMQNNONOBHotVWb`^YMKOMSRH>>??@<87:=??>=?>86@MGD@AFIFEFP[a``di_ZNBEc����������������������������������
-<F2(+4<84A:%5&
 /Wsy��������������������������������������������������������qB>FA@FKJHGBEIFABEB<9:CONLOLMQELpsSVca]XMKNKOQME>>@===>@AAAC@?D=,I���wcUMHCBAABFGGFGIKUt����������������������������������� .0)(&"#0117:797:.C����������������������������������������������������������������yibdgvoe_]^^^����������~{wzvk]i����u������wMCLMLJFEFHGDDJQXaiaXMHHIHE==B?=>:>�¬��yiOKHJMMMMBBCDFGGEDFEGKMKMMKMNMORPPSTSQTUUTVTRSRQURQOPSTTWTTQNNQSSNOTWRRTRYYUUTY`U)
 .IP>-&'35(")5Wrv�������������������������������������������������������tFFOD=CKMIEIIKH?>@?<99DONKOMNQEInsUVca\WMJLMLNQNHDDA@??@ACDKLGIE4Q���������rne\USUXRf��������������������������������������!./))% #-46::9;7.2f���������������������������������������������������~z~���}|~�vaX^bkhdaabcc�����ǥ���~~�xh`l���|r������tE>EGGFEFIKLIIMQTY`OKHHJKJGINSNV[Vc�����wp`JJIGHLNMNJDACGKMEHHIOPNOPPQRSTUTYXWUTTVVXVTUWWURVWVVXVTSSTUSRRRQJMRTSRSSWXTUTV]V0#@Z^^^YWYXPGFDCEAEJLNPOJLPSMFGD9=IKJJHHHLJGFFFFEFHGEEFFDGGFFFFFFFFFFEEFGGHHHHEDHGHIIIHIIIHHGFHIGEEHHEDDCCCCBABBA?BDA>@DC?ADEDBA?ACCDM\cabeimkgedjkkkgqnJ#"$
 .!&6;*#" %59))>=!$F?
 %&&%$%'('&",-"/c������S936;96;;5/
 ##3HTUXE4KS;Pw~��������������������������������������������������������sLGG@>??@>8=A@<=@?:9;<ALPMKKKQHLmqSU`_^ZNKOILQRPRSRRQLGJRUSPPLNJ<S���������������������������������������������������������&24132--*399:;71F���TA=>>K`����������������������������������������������������������}������~������ݽ������������������������bOTVSVXVVXYXWY[[ZY\\\\\\\\^]_Za^Zz�����RGJIFFJJIJMRPPTVSOMFJJJOUSKGIJIFEFGGJJGFHJIOQSUVVUTY_a^\\ZW[UNKKLKJJPWZVRRUVUPMNLOY?!,GWWZ__mbG5;A><?BBDJLMPOONMLIECHJLJIIHFHHGHGFFHGEFFDDEDFFEDEFFEDIIEEHHDHFFGFHIGGGHJIGGHFJKIFFHIIIGFDCAAAABCCBA@CCCBACDDEB?ADEEDECDEIV`ahifeiihjhjjhlnQ'!#
  
+$'0552.3')CNGCRWPE6'
 # #8@>Ro���������������������������������������������������������qNRYWYYVVXVUUSQSTK???>CMOKKHKLDQqpW^f]X]^^\WW]a]Z]aa^\]`_[WZ\[_ZI\���������������������������������������������������������.=DEF@62+&(394,)BSG4;>68=:8;D87h��������������������������������������������������������������������Ū������������������������cKTUQRTRTVWY[[XUVZYYYYYYYYVUW[TT{���vdWROPMRTRRSQLMONJGHJJEJMMOVZZYYYYYXWVWSQPLFEICDEGGHGGHHILMLHFGIKIGGKOLJIJJKQZVWTUXX[ffP*
-G[V?2:<@GH>1+,4:AHJJMNMLNOOLIIJKIFIKHDFEFGDBFFGEDFEDEEFEDDFFDFFFCCEFEFHFEHIEDJGEEFEEEJFCEFFFGJJHFDBA@@AABAABB@@AA?@BB?CDCC?AHBCECDRckllgfjhddijmo`>$ 
--#0711=;*7B=4'%105<<79@EU[G- "&$+Ny���������������������������������������������������������iMU[VX[XVXWSTVTXVHBA>?EJKLMQNN>MypEPc_Y]YX\[YX]c^Z\\\^^ZWX]`]\`XH\���������������������������������������������������������g�Ļ����R.%0..21FYSFA>;3;==5;=6B{������������������������������������������������������������������ɻ�������������������������aIQSQRTRTURTUVVWWXYXWWXXWUWYX^SX����nYPTPMRSQNIGGIJMPOJHILFEGKMNORXXYZ[[[[YZ[[ZZ[\XWUUTRNKIKJHHJKIEGIMOQRRWWWXY[\\`cdbceebaS.E`K/3>ADJI9**+0:CHJLOONOQQNMNIHIJIGGJIIHFEFHGEEEFFFEEGFEEFFB=DBACEEB@DCDFECEIGFEFIJHDGGFGIJIEFFFHHDAA@??ACCA=@AAA@ABCDAEF@CGBAACCGWfkhgghecdhihir^4"!#
 #".b~urxfXWXVTQPPPQPOQTQGFOTSSTSRQSTPPQMNSTQPQSSSRPSQPPRRQONLKMLJGFIE?9/&""
-8<>@98GPMPWSD857<DLSY`eYI>8IF-;w����������������������������������������������������dHVYTVYVTUUUUURVVIDD><CLOMKLOOCTuhJV_^]^^^Y]\[]_ZY_]__]]``^d^Z\TG]���������������������������������������������������������R����������jG3*&  !""#
 (49>DD8)  *7>CLPLIJ>>FFEGGHKLJHHHGCEGGFFGICEFECCEHGFDDEEDBDCBCFFDACDEFFEDEGFFFFGFEIGEGIJIGIGEEDBAA@B?=AB@@C??B@@BCBDCAACCACKPPQX`e_`ejjeejjmnU."$
  
 
    !!""!#&()(&$'/Ch������������������������������������������������������������������������������������������bJOQNPQNNNRRQNNPQPSQPQSTSRQSRL\���iPNQMLJMPNNOPRTXUUZ\XWWUQRTTPLOTTSNKMLHHIHLUZZZ\b]YXWSPONLJIHEEFFEFIJLNPPLIKLKOTVQPUZYTQNOVH#
 !
 ! !!!!! !$&'(''())=cy|~{������������������������������������������������������������������������������������dJLRONOPPMNQSSRQPPOQRRPOQRRSOJ`���fPLONMIHKJJKNPSTQWXW[[VTXXWWTQQSUURQQOKJFEHOUX[]Z[[\]^\ZWURPMKJJMHGJKIHJJGFGHIKNMORSOJKPPTaX0
 !
 #%/43CTURPQUTPNPMPLLPLEIQQPOMOPQRRQRQRRRUVSRWTNORQPQRQNLIFFIIHEB7-&#   
 "
 
+32?SVUQOQPNOSRPMQVLFMRSRONNPPKOSSQPSURSRRTTPNSQONNMKIFGHFEHE:3'#$"!"##""! 
 
 "$%#!  "
 ""(1BQO@77?atqqtuxkt}�����������������������������������������������������������������������������������\INQMNQQPNOOONNOQRPPONMMLLJRFS����cNKQOLKPSOJHIKKKNLLNPQTW[[\]^]\ZYWTTUWXXXUTUTQQTOKIKKKNSXWXZ\[XU[XXYYWX[``acgkoqqlkopmklqa[`P%
  !""'7IRQORRQPRQNRMLRSIEITPMOSROONNLLNMOUSQQQQQRSQQQNLJKLFIKHB:0)$#"!!!"#
   ""
 ""  !"#%$(#'Lollmonow������s5&0,,-,++(*00!$-&/3&")
 ('#,2.&%*,+).:FNZs�zI0?C2:W~����������������������������������������������������������������������~~}{xusqpmmnnnprs|~}y�wR@LOLLONOMNOPONMMMOONMMLKKMOBS����eSMLKNOPMNPOMKLMQNKJKMQTYZZZ[\_b____^[VSSZ^[XXYXWWVRQONLKQW[[YYYU]fkorrnlkkklmoqsrmhd`YSQNQXO.
   !"
-.-1.2:=68:6587?:DQTTVRBB\v���������������������������������������������������������^JUWWWVVUUTTTRSVQF@@>=GLJKJILL@WwhPY`Z]\YW\]\][YZ^^Y\^^]]]\[[^cSFf���������������������������������������������������������%&-CU[cmnhdWKXknr�������sI63Bj����������������������������������������������������������|xzxrrxpooonmmllkkkjjiimjghlopoz}xwTBJOLMONNLLMNNMMMNNNMMKKJJLNBU����eSNMJMOQNPPOLJIIONMMMMNORSTWY\^```__]YTPMTY\[\ZYX[[YWXVRPSWYYXWW[UT[djmpqnjhhjnqfe`XTSOHFEBC>+
  !!
   
 "!  !"#"$%###)'*Lkmlmnmmu~�����i-)-)*(%+-&
 
 
 !""#%##"*(,Ljmlmnlls}������z;
 
 
 
 
 !"###$%%!!&$%@amekmmnkq�����|��h5-;C=.1.%%1+$F?#
 
  "%$! "&'$"$#"$&5Yndcmkjokm������~�v<*;G;'2>3)51(MJ,#7DFEE?;>EFCHSOPQQONPQSMKPRONRD9\z��vSUomXn������������������������������������������������YJWUQSVTSTTSTRSTNE@?;<CJKHGDIJCYo_U\^WVY[]\Y\\ZXYZXYXVY]ZX\Z]a`MEd���������������~�����������������������������������������"*228FDHTO;0@QKKNMKLOLGWR7-48;743.(),,)'())('((-?ezrovtuvuttx����������������������������������{uoiebdb`]ZVTSUUWTQUWQTo�wtu\ADGKKHHHHLJJJJIIKFFFFGGGGLCGs����~WJJIOPSQPONNNNONOOQW^a`aaa`\WUVWUOJJNMJPQTX[\_ce_]]ZYZ[USTXZXWW\_dhjhc_fif\WYZWXWW\hrrlh\UQLJF< (Ww[11BBBEKQNFCGGB@GHNSE:@IEANYRFMQFCMK@JP=-571779988=CGLTWUUUSQTOOV^^YSQNNLMIITX\XPLFBDLPOKJNNKLMLJJMOOQKFDA>=>DOJ=?DB>BA:8;;77;GH?=]nH 
 ($
 
 $ 
 !"!""$%! "%%#$#%'%0Nehdegkkhgq}�~��|��t;*?H7(/7.+-"
 #'#
 !""##!
 "'%,Daicbifeijmry�}z�~z��b60>:3/3/,+)
  #%#
 !!#!
 !'$
 ",0+(,)'*-.--,.CRKEIHLJIIJJJIEKIFIKKLNLKKLMMKMMLMPNLLPONNNOOOOSUSRSTTTVWUTSRPIFUion_HCEFCCEIJGD@;H[_ZYYZZZZYY[VWz��gnlNIILQOMNQOKMTSUYXSSUTPNORTTW\`ddcghgfbb`\YWVUUYXTUUTTRPTYYTV[[XUUUTPMQX\^```aa^_`\VOIDBDGMG>BI25j|^;.33:GMB9:FFA;44:6:9=EHFGEEJQRRRNFENH3/1,,15712?HDMSSOQSRQSOOTZZWTMKGCEFFP`]YWTI?>@AA@A?>@BB@ACB><?@@?>?>=ALJ?>?=;<5378314>GF;>Tioc;#" $'"
 !$!
 
 
 
 (,((('((&$% )>KIIKIJKKKJJJKIJLKKLLJHKLJKOMJNOKKNPMNMMMOPPPOPPPPQRQOSWVTSRPKDSimfYF>BFFGHGECBA=GY[V][YXWWXYYRVz���jp�xWJNONOMMNMLLOSSXZXX[[UNLOQOORUZ^_egffjghjib`b`]WUWWUWUVWUSSVYVVWXYWSPOPU[`a^ZZ[\[UQKC?@HKJC=AJ;'VxjH7.3BRN82>?:GJ5'1;JPGBIMNEEOWQJIF==FE2*-*)15834@HDLRTQSTSQUQPU\]ZWNKGCJJFM`bZPOIAADDA@A@?AAA@>?BA>>?@>>??=CPN@<>=<88742100;EI>>SgfnV+
 )E_c]^dceghjnsw��||~�n?"%%%&')(&#''$))
 #
 
+4:9'
  # $7JFEHJIHJJIIHHIJJJJLJKLKIJLJKKLKKLMOOPPMMNMMONNQRPPSSRQRRPMMHKWfaJ=DC@AEFCCD@=@IVXQWXVTSUVU\PSx���}^\zvSJNQUTRMJJMPSSTWZ_cf`][ZVVVTTSQOOQSUX[YZbgedbcdehhc]_^[YYWUUUVUUXVSRVLHOVVTTMLJHECABCCA?>ACCAE8)_{`<:@=:978688867=;::;;;BDAINC7GVJ;6:EC3),,&340*0@IIKSSRRSUONRVXZ^^[VNE@@GMNXYPIKH@>BCB?>=<<?@@>=>??C><?@@>??FD;8:979?DKLMNF@EG=7J`dbke9
 "
-FGDGIHIKLKJJIIJKJIIKMNMKIILMMLKJKKPOPMKLOMNONOSRQRRPPRTSRQIGGRfeL@@DDCCBBFB@?AIW]ZWVWXXVTU]TUw����fWpuUINSLPSSOMNPOPRTX[^`c`_\XWXWTTRMLOPNNVXTX\`db`adggeda_]ZWXZZ[[XVVURRPLILSVTQOLD@C@AGGDABDCA@?G@%Uzd:*246988325997:?;:9=<?GKON@3DVF57;C@2)++%-1/+0=CAKPPPRTVPQRVZ_`[TYSH@CHIHONIGIE?@B@@@>>AD@@A@><=A>BDAAA@=@A?9648?MOONJJNIBBE?:I_fdhlK
 #%&# 
 "($ "&-6=ELLLMONNPQQPOOOLNPPONMMPQQOOOPOQOMMNLJHB?.
-GD%
 6O^M( &;ZaYY[`chhhklns}���M&))%.1&'-'#&
  
 *3:?8, 
 $%(/8HUPJOIONKGKSN<Edw��wy����������������������������������������������������jGMXSNQUQOPOVTOMOKB<<>CFFFGD@KCEejSS]YXZYXYXWWXZ[ZXWZZZYY[[Z]^]RAP{���������������������������������������������������������
  
 )1BZjdOFLILTH6Bbv��{�����������������������������������������������������gGOXKPTQOQSRMMNPNG@A<9<CFIJHDK@DehPO\WVWVUUTYVUWWWWXWZ\[YZ[\YZ]SBX����������������������������������������������������������0N>
 
 ! 
 "/LZN'!
 
 '1?A/
 4@?0).1.,/%
  3@<0)-1/.0-  
   
 #%%+7?@ADBEIFCLPEBED=@VfcdfgecekqupR<DH?=@>;AFJNKJKMMLLLMOONQUURRTQQUTQORSRPQSMJPNNOONPOJKLKMJGF9*!
 %.7<@9*
 !
 !"#!!##!+&+105>?=DD<AXhfeffdcejousYBEE==GN6.GOIIKLLLKKMNLNPORSUVRPQSSPQRRRPPRNKNOMLOPKHKIKIJGFH?-" %+4=?A7)
 "!-EH3# 
  
  !&%'" !"&)(8EF<AXhhffedceimsy`CBE?=JK51EKHMKLLLKKMOPOLMRVTQSSSRQPOPRRQOPSOHKONMONKKIJHIFGLD1%$,1;CC>4'
 (4=>2*.20/1028;3# 
  
 '%0'
+GME>6EFKSULIRPI>55995011-/@JF@ELEFH><561/7>@A8% *&
 #'2=81-/341/12873;8#
 
 #"$"!#&'$!$% 
 #%""""!"$%$#"+>JJHEFECCDDBBFDCEDBEEEGGGFFEJHFEEEFFJIHHGFGHIHIIFGJIKIIKLKLNJLNLNMHNe]GCLKKFBAA@@ABCA=;<CR[YRRW^^UXej^d���]Obi\MLMPNQSSSUUUVUSOPROOUXTQQOMMPJLNQTZ`ehhkoqooonhaZTQU\^ZVTTRPMOLJKNKJMQPQMILPMRTQMMNOSW^eiknprqolkkwrI4=68FPN</NdW>CZ_ZZ[\YRS[ZQTWOQWO@A4'(*462+-:CB2;@FMH:14=A?BJKE>JMIF?:=5>QNFX_P?IK?0*097@B<+
 #'"
 
 "" "$&!"""""#$"#0BIHGFBDDDCEDCBDDEIKGBHHFEDDEFHHIIJJJJJKKKHGGHGLKGIKJHIJJJIKLNLMOMNNKOgdLBHIHD@@???@??C?;:APXUVXWRPValh\c���^Ocj]QNJJKNOOQRSSUPQPOQRQSTSSSQONOOOOOQU[_ccgnponpomicZUX_^][YWVTSRPOQQLKRXWTNGIOQVTQOOPRVZdmqstrommkkjsoN
+(
 
 .9+!),$4CG=AXhhdfhgddhltpQ68>>DOO<;JLMMMNNOMJJMONOPNMOQPQRQONNOONONLMOONPRRONMNMNMMNPPOPNLJIJC8-05<FPQKLONLNTY[Z]_^\^`a_eihhmqs{|��v2
 $&# !'4<4$ #(17E]q��x�����������������������������������������������������Z>LULQQLLRRMNNNOMC=>:9@HGEDCHG<IhcNQZTSUUVXXSSTTTTVXVVWXYYYYVV\NBe����������������������������������������������������������
 
 #! "" #&'%!'7DJLJHGDCGDDDDDBAADEB@CGFDBDHHFDDDEFGHGFFFHJIFEFIKKJGDEJLGHJJIIJKJKKMJILKKdmP=JQKBAAB@?>?@A>;=@BABCCHJHHID>@Ru��iP[tjPHHIKOMOQPQTROQTTTUURSWYXUSQONNOONORTVXYZ]befikpqmedfmoojc][\YXVVYYWYUSOJKQ\g_USWY`jnmnqttpkinqpplhh^5
 #!# 
 $%"!"$,6?HMJCHGFEEDDDAABCCCCCCCBBBDFGGFEEEEFIFFFFFGGFHHHIIGGFFGHGHJJJIIJKMNLKKKMIHKLNdmX@FQNC:?@?AAAA><<?A>:7<<;:86549BRm~xiXWloYLKHKRPNORROLOQONQSTVSUXXURQQOPOLKMLHNPOMPX^^a`dkomlmuropqng`\XVXZ[^b_WRSW`hjeZT[fnppsojiousnmngadefjG
-.#$*/15+5LI@A5+4CHD7-:<=>FQY[a]ZVJ;7<F@ELIGLOLEBELZM$,(,-
+#!../-"'/430.05:<83*!
  
 $1AG<970.,"+T[3
+8%6EH>@WgghfdddfghwrW?=83<HG::HNLGPQPOORRQOKJNSRRSPQQPQPOOLKKNMJJNRQPONNMLKNNMMMMMONNOMNNLOSSRUVRPNMNPTXYYZ]]_bb`aeghihjosw}|��a$
 
-3+
 +161130&
 "%0/86%"*-.2('-$#5D@3--.21*/-+12+&&.735HH,5;?9@L<$01/--,*+(,/.+***,,++.2317EJ>=ThgbcdddfjmuoN4:=0)$"$2GQNMLLLLMMMMURNMMKLQPNORPNOPMOSSNNOOJMNMIIJMLMNNMLKJIKLMORTTWUSUY\]\ZYXXY[]_^^^^_`abbehijmquv���p/
+3'
 ,92# $!
 '61$"&"1IJ@;4379?GKIIJIFEFF>537DRc����������������������������������������g?FLPQPRQPNLMOPMJMLNQLB<<::@DCBCCFB:QgVGUTSURRYVQSQTUQPQQOQVXTSSQZXXUTHCe��������������������������������������������������������1.
  &41&$($
+22252142/39@DCA@ACEBBBACEDDEEEDCEHFEEFEDCDACEDBABC<=<>A@@CCBBDDCBCBCCCCDFGFFEDGJIFIIFGJHFHGGJIDEGFJHGGHHIKKKIHIKJHR_gaIFWR<=A>>@>><8:<:;??FC=98?Wsu���zjRJIIIIJJJIJLPRRSTSVUTVTST[[XX[XUXZXWXZ[ZXWVTV]^\\Z[]aba`abghdabbaab`YSRRRSTUPJNY`a``__bb]YWY`fhggdfeaaccadf^4!/%$;1&5(1?.0--?:'.2&)-0/-3=3-;<) *9/*//+-.20% "$)-/'49*,<B?9($***)+2:84;B@<BA>AEFHC92'!),)',.,+)*/-,.1/)')$,0/.10.8AE?>PchdeffeegivsQ-$"
 .41123565429@CABCB@CBBCDBBDFFFEEEGHFEDEFFDBBCDCBABC@??@AA@>ADBAEC@CCCDEDDFIHGGGGGFDJKIGIHGHJHGGFEEFIJJGHKKHGKKHGJIESflfPFTO<;?>=@????88>4##3Ytr����pTMLLKIIHFCGMPQRUWVVUTTUWYYTRTUUW[WWYXRRWYXXWVWYZYXY[\]_abefeccddbda]XUUTNWQLMQQV^ac`[^`][YZ^cddehfccffa`bacbA
 -:/#"#!$! 5LPHGLLKJIIJKLGHHIJKKLIIGEDB@@::998777778:>CHKT\ekw��������������yQ:=IMNNMLLMNOMLLMMMLLLNMGA>?99?DCBBBHB8SkVITVRWZVWWQOOUVSSRSRRUURRUUTWWTTUK=l�������������������������������������������������������"0,
 .4122222333:@B@@ABCCBBDCBCEEDDEGIIIHFDCDDCACCCBA@@@>@BBAABD@BBBBDCBCBDGGFDCAFJJGFHLIKIHIHEFIFEFGGFEJIGHHHHHGJKHGJIFSaghTHTR>;?@?A?@?;46<0 &A_sq~����w]PLIIJJIGHJLMNPSVVWXXWWXZTSSVXVUUW^ZSUWWZ[YXXXWX[^\ZZ\_abefgfdcdfc_^]VSTVRUVVTPT`b^]]\\ZTUZ`cddddegihc__b_cdG
 (34(!!#2BNPKHLJGJLKIIHJKLJJJJIIIIJJJJJKKKHHHIIIJJKKLLKKJINLKLKIHIJEINLMLGEKPPKIMRLMMMKLLNNNLKJJKKJKMLF>::45;AAABBE>;YjVLTSSTUWWVTQTWRPUWUPTUUSSUXTUUUVWWVL?O|����������������������������������������������������+$(5444431149>@ABCDCBCCCCBDFECCDEDDDFGGGFEDDCCDCBBBB@?@@AAAAAACADC>@EDCBABEHGDEFGGHIKLHGIHDEIIFDBDFFEEIGFFGFFFGGGHHGFFUdfi\JOQ?8?@:=?;@@86<4#
 &$':HUedt�����oheVIIJIKMLJKLOQRNORUXYYYSUX\ZWVYZWVXZ[\\^\\]^^`d`aa_[Z[]beijiijlkikjd\ZYZYTRTTQPXXXSNRZ]bbdfhhfefhjhc^^a_^ea@(33:89>:26>><=<:76:99<==<99==95331.,,**-+*/0/01/,**/-'#$%$"&'"
 ! ##"&#)''*-3;=:@H@:Qhfbdfc__dirncZ^f_PWUKGPPHILMNPPPMJRNJLPMLQPNNQRPMKMNONNOOMNQSSRQSTLKLNNMNPOPPPQTTRPOSVVSU[YTWZUW^^^[`d__dcabdgjkkknvy��q4" 
+100432359=?@@@A@@@@ABDEEEDCADGGFDCCEEDDCCCC@@??@BA?>ABB@A@?AABBBDEBDCBEGIGEHHHIJKJIIJIGGHHEEFDEGFDHGGGIIGFGFGHJKJIHO_be_OMN@<@>;=;;A>89?2#$
 "%)-)(+)(*++-1112209AG@;Qgfbdec``dirhVKOUVZdXTWQGFJMOOLLOOMMHIOOKMSUPQTQQQNONPONOPNLOPPPRTUPNMNPQPOQPPRRQQSRQRTUVWY[XTUZ^][^bbbea`fdccceiklnx{��x:!!
-22255679;=>EDCA@???DDEEEDCCDEGFDBABDDDCCBBB@@@?@@@?=@BBBBA@ABCCABDCCDFFFEFGKLLJGGJLLJIIIHGFHDGHEEGEEGFGJFDGMJHGIIHGTddebTPM>:?=<>>=>>96=3$ANRQVdplirwqde[MJIGGJKHJRQNSTTRONPTVWX[\ZXXVWSRV\\\_][[]`_^\]]\[YYZ[]`bdhhiklhhie_YRVVURNKIIORV[_][]]bccddcchfeegheb`a`h_3
  
 &!"$')+,,*'##%'&%$$##&*,**+,-,+-/./,*,//1210/-+)'#&%" !
 #$$'*.00/..255445413344442010,**,*'(-.+))+/)/04;4&#3BF>>Qada`__`begvpL4<;-/716FNJJONLMQOJKQKOOMPPMLQRSQPPQQPSOKNNMPROMOQOOQORTTRQPPRPOQQPOPSQQTWWVUZYTU[ZVZ_`cc_`baegijhhikqox���\*$##
+.+)+0541241*)-0/.157778:5/*)*+($"$$! "$$"%# "''"(++,2789>@A<635940154//475453002133026620100241,)+.--44*3D=,/4,%1BF=@Q_c^][\^acdniQAC9#&$,IOGNONLMNNNNPOPQNNOLNSPLPPOQTPRQLOSNLPPNNPPMONOQPNNPSRONQSPLRTSPQVXVXXVTW[\\_fc^abaffghgfgkoinzz��m3%%#
 !  "&'*'*/34423347:;97:;@?63671/1564223762112451/1233550.351..,.+.29B=6IZ? ,7/3AE@=Nc_\ZZ[ZY]bumN73/(
 !!,82%!'4980-/035211,&$&-6>CEFHFFIKJIHHFFGJIHGIJIFFHHHJIGHIIIJIHJMJJJJIHHHHKKLNMJKJJKKKKKJJKKJJLLJMJLNMLLLJKLLKJIHKJJLE<<:88AECA?@F=?ZbMLXUSQQRSRRTTTTTTSRSVTSTUTUUSSUVTTVRUWVVVUTUSQRTRLFEEEDCCBB��������������������������������"$".>BB?<BEA?AB@1)
 ####"$" !&-/.0343355531147:98<>EC8146..16863203446521544332/,/230/0/,,++8AADD@9:-
 #3A@@?@<;@FA3'#2AIBCEECBBC@@@??@CDE@>@@>>@ABBCDEECEFEEGHGFJMMLLJIMKJJKJGEFEFHGEEGFEGGDEFGFDIJGGJIEK]WO`gVHC<<>===;<=64<5 +HRNNRMNOQTVWWWRPNKIGGFHJMNOOPQPTWVTSVWVVVWVUVWUUTUWYXUTX\]^_^\]_`___aa]_`agihfjkhfe^SNJLMNPUY[c`_^adc^aefddfjjia^de`]aa]__gkI
 *60$&376003431,5GB.''-=JIFEJKIJFHHHHJJHHIHHHJJHFIIHIGGJIIHHJLJFIHGHJKKJKIIJHJLKKKJIJJKLKJJKKJJLMIJLKKMNJKJKMHEIIJJIB<<826@BACA@C;>[bMJURQPPRSRQSSRRQQRRQTSRTUTTRRRSTUUUTTUWVSRRXURTWYVSUUUUVVWW��������������������������������-@?-
 (AQLLOKHHKMMKKLOQPOPSRPNNNNNONONLKKLLOOOPRRPNKOQPPNMPONOPRTTSTSTVWVTTZYUSVVUW]]]]`efegeeeffjnonux~��A#
 *-',12//34230/38:8775566325751123542+%$&'(*-//-,.-+(+-)%+48/3,#4F8'95"
-8;>>>=<<>@@AA@?=952-(%%&-8<?AA?>?BBCCABDDBCDGHJJKJJKLLLKJJMLIJKHFIGFFGFCCEDEGFDCEFDGECGGEGKLHDHW\M>>==>?=:9;9284
  )3.#!)586//565335579407DPHFHHHIHGGFGIJJJHHHHHHGGJKJHIJJJGHIJKIHJKHGJKJIIJHIJIJKJJJJLKIIIMNLKNLHHJIKMJGHMIIIIGFGJEEFKD:8629CC?>=AE=BabJMVPRSSQPPQPPQSRQQQTSRTVVSQRSRSSSRRURRUURRVUTSQRUVVRTUTSSTT��������������������������������
 """""!&'))(2CNHHHHHIJKGFGHGHHGHKHEEHGFHHIIGHIHJJIHGIIIIJKKJIGFKLJJJJIKJIJJIHILKIGIKKKNJIGIKMLKJIHHHHHJFGKJB;9858?@@B@CD8Cc^FHQPPQSSSRRRRSRPOPRQRQPQSRPURRUUSPPRRRRSRQQTVSPSUTSTTTUUUUV��������������������������������
 &-1159;::;=<<;:<>???>>===>>BBB@BBA@EFDFJHDHKHHKLMLGIHFCDEEDFDBBDEDBFCABEFDBEEEEHGEECBABBAML@:>;>?>78;8425GVTKKLMLJNMJKMKIIGFGHIJIHHMIHHGILJGIGFKJHJPMKNSTTUV[_^\]^\_`bc`ZXYXX[ceb`aba`^ZVVXUTQLJJJJORTTX^_[`_ab`adccaadebbf^]`dcabc\`c__b`anh:
 ! 
 !$(,05:<<;::>=;::==<=<<>??>=>@B?<@DB@ACBDIKGFIIJKIHIIFCBBBBBCAABBBDFACEEEDDEEEBBEFFGFA@CC?KOB9=>=9;<;=6325DOLEJNNKFJMLKLMJFGIFGGEFHGFHHHIIIKFEEDADIKMHJNPRTRXX[\Y\`a^bd`\[ZWX[^`bdca]]ZVUWVRWTOJLQQMPSWXZ]^^`cc`_]^c_^ac`beddaceccc`a^^_cebdmj>%2+#,.+').-(&*'*,**--%'(%$)+'&&'('&).&)'##%$%$$$$#)/2<?:684.02.-/,()*.22,*-1244202552440+)*++'&%&'))'),*
-@C=<CLMKGHMLGJRXU=%
 !"#*0:=99;:9::;;<<=<<===>>?>?@@>?AACDDEEFHIJGHJHFFGHECCCBBCDDCDECBCDCBCEFEDECFIFDFHHFCD@@IND99>=<:;<;9117GQPJKKJJGJLLNNLMMKHHHHHHHHKLMKJJJHIHHHFDDEGIHHMRQORUYZZZ]`]\^]ZY[\Y[]`cc_YVWVTRTWXVVURNMNOPUX[_`^]^bfebbcb`acccdb^_baaega[bcdd`]^bjoT#"-0,+,,)&*32,,*))*+))(&%&$%()+%#(.10/01-'&*)#$')*.9<73:59DA6-.,)&&(**-+*-24432235652021/../,(*'&'('()+'$
 !"# !)-167:DKKGIKIGGHIHHHHHHHGHIHGGIIHHGFFHIIHIIHGGFFIGIJJKHGGILKJJKJILKJIJJIGJJIHJIIJJKKJKLKINLIJLJHIHEIIB<;919BBBA?CD8D^VEMUTQQMPROPSRONQQPRONRUTOOQTRPQTVUTQSTSRTTTUUTRTVWVRRTVVSSU��������������������������������!%'##0=?:;;;:::;<=;=>=<<>@A>>B@?ACDCBCEFEDGGGIIGDFBDDCCDCAEDCCDCBDDDDDDDDDEIIFGHGHDC@B@?FKB9:=:::<:56239FQLJJLNLHKKKLKKNOLKJHHGHIIJHKMIKMKJGFIIGFIIIJMLHJRQQTWYZ\^[[_a^ZYWV[_`_]ZVVVW[ZXWYZZXSNKMPPTWZ\]^`cggdca_bcggefda`_ca`b_Z[_aababba`k^2
  &%(/56;BJHGGIIIHFFHHGFFHKIGHJKIGIGHIIFGHIGGIJJIIHHGGKJHGKKJIKIGJHGHIIHILJJIHJIHHGHKLKHHHIKKJJJHHIGJH@:8439A@?ABDB8F_UFOSOSQQRNQTQORTQNOQRQQQRRSSRTTSVSPPRSSSSTTRSRRRRQSUUUTRSVUR��������������������������������
 
 ""&'*)'%
 "!$+0.2;FJIEFLKEHKKIHIIGGIHFHKIDIHGHIIGFJFEGHHIHJIEEGIIJIKJGHIIHKIIJJIIJJJIIKKIIMKIHHIIIKLJHJJHFFEHG@<:72;@?A@;AC9IbWGNPOQMORQROLNRRNOQOMQSQNORSPRRSTTRQRRQRTUTRTTRQSUTRTTUVUSST��������������������������������
 !%)*0:BJLEEJJEGHGEGIHDFJJGGIIEHHHGHJIEHEGJJIIHIIJJJIJILIIKJIJKIIIJKJIIJJIILLIIDLNHFKLHLKIHJKIIGFIH@<:62;ABEB=EC6E_TFQUNPRQOORPPSSOMOOKPQQOOQRPTSSRQQRRSTSRSVTQRTUSSSSQVTRRSTUU��������������������������������
 !"%(.7AHLHEGHGFGHIHHIJFJLJHGHIGGGIIHGHHFGHFEGGGHKKGFHHIHIHFHJHGHIIGGIKIIHHKKIIHGHJJHGIIJIIJGFHGGJHA=;739ADC@>DA4EbWFOSOOTPLQPMNQPPSSPNMQRPMOSVURRSRSSONSUQORSQSQQTVUSSRTUTSSUV��������������������������������
  !$$$%$'0<:;=>:9<=>>=>@?=????ACB?A@@CDCDEGB@DECBDDCCDEEDC@ACCDDCC@BCCCDDDDDDDDDEEEEBBA?DGE;;<:;<>;;65-<chKHKNJJLJKKLKKJIIGIIEEHIHKLIHKLLOMLIJMKIJIHIJKJIJKMPRSVZ]dbaa^ZXX[Z]bghjlbefdcddcab^VRRTURPT\a`ad_]`fga`caa`adeb_ba`aa\Z^`_`aa``b]`k`0
-BC@?BLJIIIGFGJMUQ.)HPLMKMNKKNLILMNQRPPPPQQPNOQNNONLMMJKMMMOPONRQNKKNQOLLNNOQRQQQQTVSRUUVWXXXYZZYXXY[\\````cehinnkq}���w2*0$
 "#)$ "$)-17CJJGHGEFGGFFGIFEGHGFEEHHGFGHGHHGHHFFHHFGHIIIGFFHHEGJJGLJIHHGHILIIJKIIIGHJIHHIKJGIIGFGDGFHE=9:83:?=@A?C>4HaTFNRNROMQOMRROMNPOPQOQSRRRRQPRUSPQTTTSRRTTTSQQQSTSQQQSUTQPSU��������������������������������
  !"$# 
  
 
  
 "  #"
+

examples/overlay.py

+#! /bin/env python
+
+import sys
+import pygame
+
+SR= (800,600)
+ovl= None
+
+########################################################################
+# Simple video player 
+def vPlayer( fName ):
+    global ovl
+    f= open( fName, 'rb' )
+    fmt= f.readline().strip()
+    res= f.readline().strip()
+    col= f.readline().strip()
+    if fmt!= "P5":
+        print 'Unknown format( len %d ). Exiting...' % len( fmt )
+        return
+    
+    w,h= [ int(x) for x in res.split( ' ' ) ]
+    h= ( h* 2 )/ 3
+    # Read into strings
+    y= f.read( w*h )
+    u= []
+    v= []
+    for i in xrange( 0, h/2 ):
+        u.append( f.read( w/2 ))
+        v.append( f.read( w/2 ))
+    
+    u= ''.join(u)
+    v= ''.join(v)
+    
+    # Open overlay with the resolution specified
+    ovl= pygame.Overlay(pygame.YV12_OVERLAY, (w,h))
+    ovl.set_location(0, 0, w, h)
+    
+    ovl.display((y,u,v))
+    while 1:
+        pygame.time.wait(10)
+        for ev in pygame.event.get():
+            if ev.type in (pygame.KEYDOWN, pygame.QUIT): 
+                return
+
+
+# Test all modules
+if __name__== '__main__':
+    if len( sys.argv )!= 2:
+        print "Usage: play_file <file_pattern>"
+    else:
+        pygame.init()
+        pygame.display.set_mode(SR)
+        vPlayer(sys.argv[1])
+        pygame.quit()
+
 try: from pygame.surface import *
 except (ImportError,IOError):Surface = lambda:Missing_Function
 
+try: from pygame.overlay import *
+except (ImportError,IOError):Overlay = lambda:Missing_Function
+
 try: import pygame.time
 except (ImportError,IOError), msg:time=MissingModule("time", msg, 1)
 
     Andrew Straw, Michael Hudson, Ole Martin Bjoerndalen,
     Herv� Cauwelier, James Mazer, Lalo Martins,
     Timothy Stranex, Chad Lester, Matthias Spillers,
-    Bo Jangeborg</li>
+    Bo Jangeborg, Dmitry Borisov</li>
 <li>And our bug hunters above and beyond:
     Angus, Guillaume Proux, Frank Raiser,
     Austin Henry, Kaweh Kazemi, Arturo Aldama,
    Tyler, Nathaniel Pryce, Dave Wallace, John Popplewell, Michael Urman,
    Andrew Straw, Michael Hudson, Ole Martin Bjoerndalen, Herv� Cauwelier,
    James Mazer, Lalo Martins, Timothy Stranex, Chad Lester, Matthias
-   Spillers, Bo Jangeborg
+   Spillers, Bo Jangeborg, Dmitry Borisov
 
      And our bug hunters above and beyond: Angus, Guillaume Proux, Frank
    Raiser, Austin Henry, Kaweh Kazemi, Arturo Aldama, Mike Mulcheck, Rene
 
 	module = Py_InitModule3("constants", builtins, doc_pygame_constants_MODULE);
 
+	DEC_CONST(YV12_OVERLAY);
+	DEC_CONST(IYUV_OVERLAY);
+	DEC_CONST(YUY2_OVERLAY);
+	DEC_CONST(UYVY_OVERLAY);
+	DEC_CONST(YVYU_OVERLAY);
+
 	DEC_CONST(SWSURFACE);
 	DEC_CONST(HWSURFACE);
 	DEC_CONST(RESIZABLE);
+/*
+ *			A part of the pydfb module. Provides interface for basic overlay
+ *			manipulation functions.
+ *      In this implementation overlay can use only one layer out of maximum
+ *      possible. After getting overlay, no overlay can be created.
+ *
+ *					Copyright (C) 2002-2003  Dmitry Borisov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Dmitry Borisov
+*/
+
+
+#include <Python.h>
+#include "pygame.h"
+
+typedef struct
+{
+  PyObject_HEAD
+	SDL_Overlay *cOverlay;
+	GAME_Rect cRect;
+} PyGameOverlay;
+
+
+static void
+overlay_dealloc(PyGameOverlay *self)
+{
+	if(SDL_WasInit(SDL_INIT_VIDEO) && self->cOverlay)
+		SDL_FreeYUVOverlay(self->cOverlay);
+
+	PyObject_Free((PyObject*)self);
+}
+
+
+
+    /*DOC*/ static char doc_Overlay_SetLocation[] =
+    /*DOC*/    "Overlay.set_location(rectstyle) -> None\n"
+    /*DOC*/    "set overlay location\n"
+    /*DOC*/    "\n"
+    /*DOC*/    "Sets location for the overlay on a screen.\n"
+    /*DOC*/    "This does not move or redraw any currently displayed data,\n"
+    /*DOC*/    "it only sets the position for newly display() calls.\n"
+    /*DOC*/ ;
+
+static PyObject* Overlay_SetLocation(PyGameOverlay *self, PyObject *args)
+{
+        GAME_Rect *rect, temp;
+    
+        rect = GameRect_FromObject(args, &temp);
+        if(!rect)
+            return RAISE(PyExc_TypeError, "Invalid rectstyle argument");
+        
+        self->cRect.x = rect->x;
+        self->cRect.y = rect->y;
+        self->cRect.w = rect->w;
+        self->cRect.h = rect->h;
+
+	RETURN_NONE
+}
+
+
+
+    /*DOC*/ static char doc_Overlay_Display[] =
+    /*DOC*/    "Overlay.display(y, u, v) -> None\n"
+    /*DOC*/    "display the yuv data\n"
+    /*DOC*/    "\n"
+    /*DOC*/    "Display the yuv data in SDL's overlay planes. The y, u, and v\n"
+    /*DOC*/    "arguments represents strings of byte data.\n"
+    /*DOC*/ ;
+
+static PyObject* Overlay_Display(PyGameOverlay *self, PyObject *args)
+{
+	// Parse data params for frame
+	int ls_y, ls_u, ls_v, y;
+	unsigned char *dst_y, *dst_u, *dst_v, *src_y, *src_u, *src_v;
+	if(!PyArg_ParseTuple(args, "(s#s#s#)", &src_y, &ls_y, &src_u, &ls_u, &src_v, &ls_v))
+		return NULL;
+
+	{
+		SDL_Rect cRect= { self->cRect.x, self->cRect.y, self->cRect.w, self->cRect.h };
+		SDL_LockYUVOverlay( self->cOverlay );
+
+		// No clipping at this time( only support for YUV420 )
+		dst_y = (char*)self->cOverlay->pixels[ 0 ];
+		dst_v = (char*)self->cOverlay->pixels[ 1 ];
+		dst_u = (char*)self->cOverlay->pixels[ 2 ];
+		for (y=0; y< self->cOverlay->h; y++)
+		{
+			memcpy( dst_y, src_y, self->cOverlay->w );
+
+			src_y += ls_y / self->cOverlay->h;
+			dst_y += self->cOverlay->pitches[ 0 ];
+
+			if (y & 1) {
+				src_u += ( ls_u* 2 )/self->cOverlay->h;
+				src_v += ( ls_v* 2 )/self->cOverlay->h;
+				dst_u += self->cOverlay->pitches[ 1 ];
+				dst_v += self->cOverlay->pitches[ 2 ];
+			}
+			else
+			{
+				memcpy( dst_u, src_u, ( ls_u* 2 )/self->cOverlay->h );
+				memcpy( dst_v, src_v, ( ls_v* 2 )/self->cOverlay->h );
+			}
+		}
+
+		SDL_UnlockYUVOverlay( self->cOverlay );
+                SDL_DisplayYUVOverlay( self->cOverlay, &cRect);
+	}
+	RETURN_NONE
+}
+
+
+
+PyObject* Overlay_New(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+	int pixelformat;
+	PyGameOverlay *self;
+	int w, h;
+        SDL_Surface *screen;
+	if(!PyArg_ParseTuple(args, "i(ii)", &pixelformat, &w, &h))
+		return NULL;
+
+	if(!SDL_WasInit(SDL_INIT_VIDEO))
+		return RAISE(PyExc_SDLError, "cannot create overlay without pygame.display initialized");
+
+        screen = SDL_GetVideoSurface();
+        if(!screen)
+            return RAISE(PyExc_SDLError, "Display mode not set");
+        
+	// Create new Overlay object
+	self= (PyGameOverlay *)type->tp_alloc(type, 0);
+        if( !self )
+		return NULL;
+
+	// Create layer with desired format
+	self->cOverlay = SDL_CreateYUVOverlay(w, h, pixelformat, screen);
+	if( !self->cOverlay )
+		return RAISE(PyExc_SDLError, "Cannot create overlay");
+
+	self->cRect.x= 0;
+	self->cRect.y= 0;
+	self->cRect.w= w;
+	self->cRect.h= h;
+
+	return (PyObject*)self;
+}
+
+
+static PyMethodDef Overlay_methods[] = {
+  {"set_location", (PyCFunction)Overlay_SetLocation, METH_VARARGS, doc_Overlay_SetLocation},
+  {"display", (PyCFunction)Overlay_Display, METH_VARARGS, doc_Overlay_Display},
+	{NULL}  /* Sentinel */
+};
+
+
+    /*DOC*/ static char doc_Overlay[] =
+    /*DOC*/    "pygame.Overlay(pixeltype, [width, height]) -> Overlay\n"
+    /*DOC*/    "Create a new video overlay object\n"
+    /*DOC*/    "\n"
+    /*DOC*/    "This creates a new Overlay object. Overlays represent a basic\n"
+    /*DOC*/    "interface for putting YUV image data into the graphics card's\n"
+    /*DOC*/    "video overlay planes. This is a low level object intended for\n"
+    /*DOC*/    "use by people who know what they are doing, and have pregenerated\n"
+    /*DOC*/    "YUV image data.\n"
+    /*DOC*/    "The pixeltype argument must be one of the pygame constants;\n"
+    /*DOC*/    "YV12_OVERLAY, IYUV_OVERLAY, YUV2_OVERLAY, UYVY_OVERLAY, or YVYU_OVERLAY.\n"
+    /*DOC*/    "\n"
+    /*DOC*/ ;
+
+#if 0
+    /*DOC*/ static char doc_Overlay_MODULE[] =
+    /*DOC*/    "pygame.Overlay(pixeltype, [width, height]) -> Overlay\n"
+    /*DOC*/    "Create a new video overlay object\n"
+    /*DOC*/    "\n"
+    /*DOC*/    "This creates a new Overlay object. Overlays represent a basic\n"
+    /*DOC*/    "interface for putting YUV image data into the graphics card's\n"
+    /*DOC*/    "video overlay planes. This is a low level object intended for\n"
+    /*DOC*/    "use by people who know what they are doing, and have pregenerated\n"
+    /*DOC*/    "YUV image data.\n"
+    /*DOC*/    "The pixeltype argument must be one of the pygame constants;\n"
+    /*DOC*/    "YV12_OVERLAY, IYUV_OVERLAY, YUV2_OVERLAY, UYVY_OVERLAY, or YVYU_OVERLAY.\n"
+    /*DOC*/    "\n"
+    /*DOC*/    "\n"
+    /*DOC*/ ;
+#endif
+
+PyTypeObject PyOverlay_Type =
+{
+	PyObject_HEAD_INIT(NULL)
+    0,                         /*ob_size*/
+    "pygame.overlay",        /*tp_name*/
+    sizeof(PyGameOverlay),      /*tp_basicsize*/
+    0,                         /*tp_itemsize*/
+    (destructor)overlay_dealloc,												/*tp_dealloc*/
+		0,                         /*tp_print*/
+    0,                         /*tp_getattr*/
+    0,                         /*tp_setattr*/
+    0,                         /*tp_compare*/
+    0,                         /*tp_repr*/
+    0,                         /*tp_as_number*/
+    0,                         /*tp_as_sequence*/
+    0,                         /*tp_as_mapping*/
+    0,                         /*tp_hash */
+    0,                         /*tp_call*/
+    0,                         /*tp_str*/
+    PyObject_GenericGetAttr,   /*tp_getattro*/
+    0,                         /*tp_setattro*/
+    0,                         /*tp_as_buffer*/
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
+    doc_Overlay,           /* tp_doc */
+    0,		               /* tp_traverse */
+    0,		               /* tp_clear */
+    0,		               /* tp_richcompare */
+    0,		               /* tp_weaklistoffset */
+    0,		               /* tp_iter */
+    0,		               /* tp_iternext */
+    Overlay_methods,             /* tp_methods */
+    0,             /* tp_members */
+    0,                         /* tp_getset */
+    0,                         /* tp_base */
+    0,                         /* tp_dict */
+    0,                         /* tp_descr_get */
+    0,                         /* tp_descr_set */
+    0,                         /* tp_dictoffset */
+    0,    /* tp_init */
+    PyType_GenericAlloc,       /* tp_alloc */
+    Overlay_New,			   /* tp_new */
+};
+
+static PyMethodDef overlay_methods[] =
+{
+	{ NULL, NULL }
+};
+
+
+PYGAME_EXPORT
+void initoverlay(void)
+{
+	PyObject *module;
+	module = Py_InitModule("overlay", overlay_methods );
+
+	PyOverlay_Type.ob_type = &PyType_Type;
+	Py_INCREF((PyObject *)&PyOverlay_Type);
+	PyType_Init(PyOverlay_Type);
+
+    /* create the module reference */
+	PyModule_AddObject(module, "Overlay", (PyObject *)&PyOverlay_Type);
+
+	import_pygame_base();
+	import_pygame_rect();    
+}