MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_01C71A17.C1E04960" This document is a Single File Web Page, also known as a Web Archive file. If you are seeing this message, your browser or editor doesn't support Web Archive files. Please download a browser that supports Web Archive, such as Microsoft Internet Explorer. ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19

This presentation contains content that your browser may not be able to = show properly. This presentation was optimized for more recent versions of Micro= soft Internet Explorer.

If you would like to proceed anyway, click here.

------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/master03.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
‹date/time›
‹footer›
‹#›
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/master03.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; charset="utf-8" ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/preview.wmf Content-Transfer-Encoding: base64 Content-Type: image/x-wmf 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 ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/master04.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
‹date/time›
‹footer›
‹#›
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/master04.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; charset="utf-8" ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/master02.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
<= /div>
<= /div>
<= /div>
‹h= eader›
<= /div>
<= /div>
<= /div>
‹date/time›
<= /div>
<= /div>
<= /div>
‹f= ooter›
<= /div>
<= /div>
<= /div>
‹#›
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/pres.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; charset="utf-8" ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0001.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
CSE 303
Concepts and Tools for
Software Developme= nt
Richard C. Davis
UW CSE – 11/17/2006 Lecture 19 – Build Scripting
=
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0001_image001.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhyAF2AHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADG AXUAgAAAAJkAAAL/jI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8woMCBBAsaPIgwocKFDBs6fAgxosSJFCtavIgxo8aNNhw7evwIMqTIkSRLmjyJMqXK lSxbunwJM6bMmTRr2ryJM6fOnTx7+vwJNKjQoUSLGj2KNOmkAgA7 ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0004.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
2
Administravia
&#= 8226;HW6 went out, project directories set up
&= #8211;It was late, sorry
&= #8211;Hopefully, it will be short
&#= 8226;Societal Implications on Monday
&= #8211;Do the reading
&= #8211;Send in your summary
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0004_image002.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0005.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
3
Academic Integrity
&#= 8226;Complaints of policy violations
&#= 8226;The Gilligan's Island Rule
&= #8211;Please observe it
&= #8211;It's for your benefit
&= #8211;It strikes a balance between
&= #8226;Need to collaborate
&= #8226;Need to evaluate students individually
&= #8211;Congrats to all who are walking the line
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0005_image003.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0012.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
4
Academic Integrity
G= illigan's Island Rule Do's and Don'ts
Do discuss specifics of homework
Do arrange times with friends for discussions
Do bring your own code into discussions
Do ignore the rule when talking to partner
D= on't modify turn-in for 30 minutes after discussion
D= on't discuss homework in the labs
D= on't keep written records from discussions
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0012_image004.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0006.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
5
Where We Are
&#= 8226;Tools for working on larger projects
&= #8211;Monday
&= #8226;Specification
&= #8226;Testing
&= #8211;Wednesday
&= #8226;Version Control Systems
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0006_image005.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0007.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
6
Today
&#= 8226;Build Scripting
&= #8211;Steps in building an executable
&= #8211;The need for scripting
&= #8226;Execute repetitive commands
&= #8226;Avoid repeating unnecessary build steps
&= #8211;Recompilation Management
&= #8226;Theory
&= #8226;Practice: make=
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0007_image006.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0009.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
7
Build Process (In Lecture 12)
Executable
Preprocessed
.c File
.c File
C Pre-processor
C Compiler
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0009_image007.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0009_image008.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh5wFAAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADm AT8AgQAAAAAAALvg48DAwAL/hI+pGu0Po3yr2ouz3rz7/03iGIHmiabqqpHuyIKTQNf2jef2FPf+ D1zMdMTiTRJMKpeyiPFZRAYh0KoVB2Fqt0Dq9VvNcsfkkxOMJpZQj7T7SynL54j2+/6M0/dkO/6v o9fSAFgI5cCXmORg2KjWoBjpw+hYeQR5QWi5iRUg+WkWwDlagwh6yqFJOoqZoLpK2oo6yyAKC+tJ q1tnexuba9Druwq8Oys8zFpsDIqczJnr/Ly5zBwpPV1ZbZ2Ine34+g3N/ektXrhNPmd+/hfeDq6u +A6PLj9fb0mZbyjr8QIwoECAofg18tdhoMKFCtkYPCiK3cMwAtK1GIAxo8aN/xw7evwIMqRGixki TnRHEkMAkSxbunyZUqXEk3k0zaSZw1ZMCytf+vz5c2cFnTdx7ohoBqjSpSCFDq1Y1CgNQqr2SQ1U NSnTrVydMjh6NUpWEz25mgXq9evUqCerOrN6FW5FrWfrukxbpxNbeO/wHihrN3BTh0f3toNLb63h YXJL0RUMmaPfYI8S1/Nz5HHkzQMmU87ZOB9msEbOfDOtRjNnyJ5nehH3OjXZ1as9A5AYO1tu0GAk QEMdRjVtu617A4d4vLTw4Wdtsx2izfcVy9MZvnC3nHlXMyitk8A+W7tg5929Q39DPazy8OKJc1eP pnX7wOThw1msXv78usXtw//Jvl9QhPkXBn5h6RfgdmQROB2ACd41IIOlGRiXgw+y1J+EeVh4YUj1 aSgWiBuy1yFa74komwwlLvUhip24mGIIKyqVIYyZkTgjhCfaWAqFUiGYo44y8IgFh0GOFCGR6YkI 5JEi1UjkXDg6OdiOSvpoVJNUfgSlkkZS2eKVUe7wpZNd8qjllh2FiSaWOKWp5kZn2ghnnBmxSaeb NNVpZ2dWejlln3cm2eaYjgUqqJ8LGiqliolKRmiejDYq46Ny/olmmUfiCeOSIPJp55ydahokpy56 qiGocYp6Kqk5mooiqhKqqiarsbo6I6xM6tkWrivayqSvJer6Ka8T0bolsJ//Ctshsaka+xCyYGJK J7MXOjsrtAZJaya1oyIqKLYMyjqutQ8qm6q5CYpLILntqhsgurPCux+7/rl7L73zyVsuuH3aax++ AevbHr/v+htqpJ1qyw+3m3rbKsKrKnwqw6IRLJ7B+UpcK8WxWnwZxtppPDDHyXq866QOlwrxrSZP 23KxKodiXs3mxbwsWTbvzBDKMjNq2z0rgMyX0HwQfY7A8AVttM85Ny0H0rBJDRvUUc9sdRlU67a1 bllrDfTXfYTddTJMi/2PoWejnUrYt0W5NtttAyr3Fkq/Wczd0cZd9wZ6b8t334NUPNTfUwcuuN+G T5141GWDs1NoxyLUeB+LSt8iSOWWP36HKQlJfjjimtPM+SGej370aHxlrrPquIiBOirJEQN77Kfs hjnrP4gAiAi238N7ebX/bs0Iwg9Px87EN6788onb/EMBADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0009_image009.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhGgAOAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAgAW AAoAgAAAAAAAAAIchI8WyX0BnVQwTlbzy7xz4IXeBY5kqZ2UpVJOAQA7 ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0009_image010.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhGgAOAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAIAAgAV AAoAgAAAAAAAAAIahI8Wya2xnIRUNoof3rz7H1mdhWxkUp2oUwAAOw== ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0009_image011.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhGgAOAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAwAW AAkAgAAAAAAAAAIahI8Xke221psgRmWzznV7TWFcKEokcp0J4xQAOx== ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0009_image012.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhGQAOAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAgAV AAoAgAAAAAAAAAIahI8Wya2xnIRUNoof3rz7H1mdhWxkUp2oUwAAOw== ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0010.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
8
Build Process (More Complete)
Source File
(.c, .cpp)
Pre-processor
Compiler
Linker
Preprocessed
Source File
Object File
(.o)
Executable
Standard
Library
gcc a= nd g++ handle this process automatically  for a small number of files
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0010_image013.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhIgAiAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEABgAb ABsAgAAAAAAAAAJAhI+pGeseYntUSgqtxUtvrngTGGpkZ55IBFzqwRrxO8tvO95wruP9ytPVekNh 8FZEHmlLVZL520VlzdPTWT0VAAA7 ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0010_image014.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhAwAJAXcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAQAB AAYBgAAAAAAAAAIkTGAIytfrIpzvpXswynx7DVJSNZbiBHbpp7bfScJmrKy2e38FADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0010_image015.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhAwAJAXcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAQAB AAYBgAAAAAAAAAIkDGB4yeuqgpFo2oqpvju/BoHiR3Ymh2apRobt6MbrrNan/L4FADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0010_image016.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhAgAJAXcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAQAB AAYBgAAAAAAAAAIkTGB4yQv4Dpyyxkuxbarzv4Sek5WWqaUQOLbsS56yOqOwK74FADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0010_image017.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0010_image018.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh5wEuAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADm AS0AgQAAAAAAALvg48DAwAL/hI9pwe2sopy02ouz3uB5yIXiSJbU95jqyrZoqn7CTNfz1+b6Hsn2 L/DwhkSSD0jDFZdMiQdpE2Yc0CrQ0cxqOwyrN9nYineN7xc7To+o5iraGWjLweq6sTtvg+x8Szlv ttc3eIAH6CW4EHc4l0j4uMDYGAD5aCh5RllZd4npptnhmQeK8WJ6ipqq+jYlKkdauio7Swvr5/rK UbvLG7axiIsYGXz2O3CMnKy8zNzs/AytbFsBTGw1fRKtvc0djT1RbQ317dRtfv5M3iOOGM5+pRGA Pk8PrZ7g/h5lXN8/f48gn74k/PwZTPdrIJI/Cms4ynYwojmAhQQOpFhIokZn/xi5NPzRscPGkSEt 6mP4MUhHeSNbMlsZJOWNki5drjTJ7iHEmgZL4rRWptO7Lit5GoUZsyHRgkYjwhSaMw7Npv1KqlQq FRhUXIaKUm2JVOVPRl2Zfq0aD8zYQ2XjnaVndeZQreHYeLJ7w+1bjWHVusIbxOxedH1nrm3Xaerg bnHVHv6U2OKRcU8W6l3cM+3CytcejBOMmVthh5wpe7Z8ObS3hJsBt0YZ5TGqXFNU+xsN2ZQe0Lbt aQ50inbt3r5/I9YNXKbD1MQnGpepuPnqVsrzMpeerDH0x8G8Ymf8PGX0781wK+WNXbt47lyvk0dI vfr499LCf5xPXv199n97lP+jr8002PAnioDgAFief+tUF5gC37CEoIFOMLiVQgI6AiGCHPWAIYMN 4vNQhhoec6EtBN7FoYAjlrigchVelKIgIo5Yn4OsnIhJiYnMqKGOpOAoiY/4rBgjLECydSRbRYLA I40kLqlJkoD4uEeTAFIZpYdYZtQjlIVQKOUoszhZ3ixayiISmQPQcuYqaUaIZpivyDmnLGouwyaY blpJX57yxblinGBq6eWbdz5pIwx07pboG3y+t2UoFBZqaJ+ULpoJoY3+eGh2RQakKYi+cEmmkF9O uumQXaYK6p+hBoRhp8iwiM+rFamoJq2typdiD0Qm2uJ2ti7wn6wSOjhsBwf/5qogsqjis2yEzTrr IqbFDGesfee5J218LqInnX5YJRttp+ZZCC6k2qLLbXqsVUtuseauC2O7lnoLXbrEiWuhtcJgOy++ 4un73bn1AnyvwOM+e8Gjq5YSr7w0GnwSwbbxe5G/19j7K8QMN3wnxUNZrBrGJ2nsBscPNxyxr8wq vC3C6tI7V8uqZgszuzKvfMvHfnTsMbw+7xRw0N+qXDDNIyN98bvCDl3uoSYvvXO3RufLdMlOD4wy PFnPnHPFX++7dcxVu6u0OFkO/Esvbr89athq6xKyLkePvVhIkrI9jM6bQPIiV3pXCrTcgofgcG+D B/6XiYwjOfjfWTw+pU4gXL+sC+ViRk54fmv4a7kimpvGueRbuLZ56QvUfcfor5mQeNOtJ8lKw6XF JoXpusNxO2kwrBB7uCygQHrcsBc+O+qG/R4DCrs/n3ztOsBN/SxFvHB99dorMQT2GxQAADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0010_image019.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhPAAuAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAQA7 ACwAgQAAAAAAALvg4wECAwKihI95we0PmZqURoGz3hzHWjndSJaZAwKNybZkozDuTHOSEdT6LgQq D5z5csGiaWVMblZEZTIn6zWdOmTUg6Qer9gRRPvtcEuRsvnhGmuL6jWw7d7B47U5XTi9y/P6Or+P B8hjJ/jyV7iF6KdIQ8io4fjYJckSKWn5iMmoqciJ6FkIKigKOERJtnCY6ZNAqnRjkdWHkoIQ9vRQ q6ty1pu7C1AAADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0010_image020.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh7gEZAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADs ARcAgAAAAP///wJ8jI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmRlZAAA7 ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0011.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
9
The "Real" Build Process
Source Files
(.c, .cpp)
Pre-= processor
Compiler
Preprocessed
Source Files
Object Files
(.o)
Executable
Library
Library
Pre-processor
Compiler
Linker
Pre-processor
Compiler
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0011_image021.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhKgBeAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAwAl AFkAgAAAAAAAAALMhI+pEboOF4tmUsgy1Vdy/HVVZjlkeZ0hojZi6yaweKieTY8re+aAhXrsNrRg MZZC5pRE3+jorCyZHWOEmpxGrSAnF7P1fbvLsNiLJZfP4rTJLUG3vfN6cQvnme9yaP8V9aP1l4Xn R/eS98ZnWKVowkgYWDXJVul4CZhZuHn1WPk5OdY5uhkaWJqZenna2Kn2+hC7OCtbK3Mr04qYW9Nb s2vZuwoavPZLLGocmZuMuqyJDI35K1jtvIdc/TOdsm0tvd3tfT1+JW4OG1sAADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0011_image022.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhAwAJAXcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAQAB AAYBgAAAAAAAAAIkTGAIytfrIpzvpXswynx7DVJSNZbiBHbpp7bfScJmrKy2e38FADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0011_image023.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhAwAJAXcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAQAB AAYBgAAAAAAAAAIkDGB4yeuqgpFo2oqpvju/BoHiR3Ymh2apRobt6MbrrNan/L4FADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0011_image024.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhAgAJAXcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAQAB AAYBgAAAAAAAAAIkTGB4yQv4Dpyyxkuxbarzv4Sek5WWqaUQOLbsS56yOqOwK74FADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0011_image025.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0011_image026.gif Content-Transfer-Encoding: base64 Content-Type: image/gif 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 ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0011_image027.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhRAAuAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAQAAAA7 ACwAgQAAAAAAALvg4wECAwKkhI8Jwe0PoZo0QYGz3pzLqjjdSJabUzXmyppM2MZy9xrBjOdCsOi+ zPgJV6qh8RQMHofJG0a5nBV3zowoWppaq57H8jKCEiPkstjFxTLT6t+57XvDc/K5lG2/5934favu NxZI1zeYVWgYhpjYxRgD6IgUyQI5+bRoWZmJOanZyRnpGQrKyNNjGXYg6leDoJXYALLw2vYgOxEh 9HHLq2r2a9prUAAAOw== ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0011_image028.gif Content-Transfer-Encoding: base64 Content-Type: image/gif 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 ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0008.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
10
The "Real" Build Process
&#= 8226;Many files, many steps
&= #8211;And they keep piling up
&= #8226;Steps for generating documentation
&= #8226;Steps for running tests
&= #8226;Steps for generating source files (not in 303)
&= #8211;Need help to manage steps
&= #8226;So you can give a whole project to others
&= #8226;So you can avoid repeating steps
&= #8211;Big projects can take many hours to build
&= #8211;What if you want to change one line in one file?
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0008_image029.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0013.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
11
Our Build Process (up to now)
gcc -Wall heaptest.c heap.c allocreclist.c <= /span>
How have you dealt with this?
Retype it every time &= #13;
Shame shame!
Use up-arrow or history
Shame!  (You have to re-type it after logout)
Use alias or bash script
Good thinking!
Use a Makefile
You're ahead of the ga= me
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0013_image030.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0014.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
12
Recompilation Management
D= ependency DAG avoids unnecessary work
To create target T you need
S= ources s<= span style=3D'font-size:55%;color:#990000;position:relative;top:.37em;mso-text-= raise: -25%'>1, s1,… = sn
C= ommand c<= span style=3D'font-size:83%'> that creates T from sources
I= f T is newer<= /i> than every source, don't run c
R= ecursive building:
A source s<= /span> may be a target with it's own dependencies
I= n this case, T is dependent on s's sour= ces as well
Cy= cles are problematic in theory, but can be handled
<= i>(DAG =3D Directed Acyclic Graph)
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0014_image031.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0015.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
13
C/C++ Recompilation Management
C= ompiling .c /.cpp creates .o =
T= arget:  .o file
S= ources:
&= #8226;.c<= /span> /.cpp file
A= ll .h<= /span> files included by .c /.cpp file.h files included by those .h files …
T= his is why careful header design is important!
C= reating an executable (linking)
T= arget: executable file
S= ources: All .o files
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0015_image032.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0016.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
14
Dependency Graph for HW4
allocr= ec-
list.h=
allocr= ec-
list.o=
heap.h
heap.o
heaptest.o
(Bui= ld targets are in red)
allocr= ec-
list.c=
heap.c
heaptest.c
heaptest
Header Files
C Files
Object Files
Executable File
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0016_image033.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0016_image034.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhNgAVAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAAAw ABAAgAAAAAAAAAI5TICpy+0PjIS0Wjmt3gkbDl5YSD7eUabKqbbRWH0uwzrZ3NTdjduw14udeEHT sEgZypA0JdO3TBQAADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0016_image035.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhYAF2AHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAQBb AXMAgAAAAAAAAAL/hI+py+0Po5y02hnC3bz7D4biSJbmlmXnyrbuC8fyldbzjef6zp/1r+kJh8Si cQRMBo/MpvOJU0pT0Kr1io1MqYxf9gsOC7eqik2MTqs/5CXbvV6U4/Rru87j4ve7O9849ydI4jcI FWiYCFGo+KXXaMgIGYc4KSZpKViZydQGxzn5CKqDOWpqsHlKSKbauvjpasYaS4uRWgtQirsrccvp yRsc4vsHLHxsIkqni9ycDGs36zwdBU3ETJ19o9wnpf3tRCxjDV5+JG6eTsut3l6L7h7/S+7iSS+P L8JebQ+U/88B3rV+XgAaPCAwC8GCB7/ti7TwTMN390xFfDiRT0Je/xc3ZmyC0V3Hih+7lXww8hw+ jycVpIQRklrMlh5edmDYjiXNVRcd+Is3c2e3kSSbBRX6RJo6nUgBJcl3tOk5if+iSh1YNB3Tq6Tw ZOXHFSlVp1/D5tjaCedAs4fGUnKbBy3bFU81qiUld26JKZruboNTVi8Ke5D8xuBiVXAXY7l+WnI8 DrJilIx91gVlmIVkwYRvbhm12Ufmlp2fofJmcXTNyxNLn1WyDq5n1jkrYw3tCrcs2Nlch/OiOlZw CrKD6U6qtrjx4ZNfK8+bWnlzmMwDL49pfbpL5q0zQ+csXerd8NoRcufq77h29eX5ljdP/j0C3s3Z y19MO6z9+w1Qm//dz59l3wF1XoD8AWjggQUm+B6CDMq34IPrRSjhZA5W+MyA88SHIXX0XZdYh/V8 SBGHIvJDIUQhnjhDftGtyOJhJGKWYoyRzQGjGhfaiOJ22V1SI483QqPhbyYKOdSPywSJpIxFKsRk kx4qmcaOUjpHZRhWXtljJlty2WUoR4IZ15NG5khmi2hGM2aaSTbypZth9tWmnG8OEudSZnq1Jkh1 VvWnilmmFShAM4LWZxF5GvoZonti+SgyRA2qZaI9LCppRP1FWWmkTlp6Sk+zeUoopWWSuuRCL4DK ppQdDWGqnaf2IytUmtYqz6u4EqjqriLd6quewAZbjq7ErqTUsfECFAAAOw== ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0016_image036.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhTQArAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEABwBH ACQAgAAAAAAAAAJyhI+py+0aopyv2vumxrxjHXniuIABiYrmmbaWZFDuzMBISOeHneD6zPsJY76h MGjUIZO0JdPlfKaiUhK1qipip9qttevNssKoK/kFPn/SavS43THDa+x5Q27v1fOQPf/m90f0JngX KIiHePiXWEhY+FAAADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0017.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
15
How would you handle this?
&#= 8226;Imagine a script that handles this
&= #8211;Inputs:
&= #8226;A dependency DAG (targets, sources, commands)
&= #8226;A current target to build
&= #8211;Actions
&= #8226;Determine which sources are out of date
&= #8226;Build sources (in order) if necessary
&#= 8226;This is what build tools do!
&= #8211;Many exist: make, ant, most IDEs
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0017_image037.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0018.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
16
Make basics
R= 26;target: sources
R= 26;        command
= 226;
S= yntax Gotchas
T= he colon after the target is required
C= ommand lines musts start with TAB
N= ot spaces!
C= an have multiple command lines for each target
M= ulti-line command? End previous line with \
W= hich shell language for commands?
W= hatever set in SHELL environment variable
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0018_image038.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0028.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
17
Notes on gcc/g++
= 226;Use gcc and g++ with the same options
&= #8211;To compile without linking: -c
&= #8211;To specify file name of output: -o filename
&= #8211;To link: run on .o= files instead of <= b>.c/.cpp files=
= 226;g++ -o programName cl= ass1.o class2.o 
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0028_image039.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0027.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
18
Makefile for HW4
heaptest: heaptest.o heap.o allocreclist.o <= /span>
   &= nbsp; gcc -o heaptest heaptest.o heap.o allocreclist.o
heaptest.o: heaptest.c heap.h
   gcc -Wall -o heaptest.o -c heaptest.c
heap.o: heap.c heap.h allocreclist.h
=    gcc -Wall -o heap.o -c heap.c
allocreclist.o: allocreclist.c allocreclist.h
=    gcc -Wall -o allocreclist.o= -c allocreclist.c
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0027_image040.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0019.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
19
Using Make
&#= 8226;At the prompt
R= 26;-bash-3.= 1$ make -f makefileName targetName
&#= 8226;Defaults
&= #8211;If no -f: use a file named Ma= kefile
&= #8211;If no target specified: use the first one
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0019_image041.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0020.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
20
Basics of Make
Summary
scripting + dependency analysis =3D ma= ke
Not language or tool specific
Rest of lecture: better Makefiles
Short and modular =
Easy to reuse (differe= nt flags, platforms, etc.)
Useful for many tasks&= #13;
Automatically maintain= ed dependencies
Trick most of us use: = Copy Makefiles!!!
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0020_image042.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0022.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
21
Make Variables
CC =3D gcc
CFLAGS =3D -Wall
OBJECTS =3D heap.o heaptest.o allocreclist.o
heaptest: $(OBJECTS)
        gcc -o heaptest $(OBJECTS)
heap.o: heap.c heap.h allocreclist.h =
        $(CC) $(CFLAGS)-o heap.o -c heap.c
= 3;
•<= /span>Why do this?
–<= /span>Easier to change build options for everything =
–<= /span>Easier to reuse Makefiles
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0022_image043.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0023.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
22
Targets without sources
= 226;clean:&= #13;
= 226;        rm $(OBJECTS) heaptest
= 226;
&#= 8226;Why "clean"?
&= #8211;Convention: Way to "start over"
&= #8226;Type make clean = to clear away all objects
&= #8226;Type make after that to start build from scratch
&= #8211;Note: no target, so it will always run command
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0023_image044.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0024.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
23
More Funny Characters
&#= 8226;Consider using these
<= span style=3D'font-family:"Courier New";color:#339933'>$@ for target
<= span style=3D'font-family:"Courier New";color:#339933'>$^ for all sources
<= span style=3D'font-family:"Courier New";color:#339933'>$< for left-most source
R= 26;
= 226;heaptes= t: $(OBJECTS)
= 226;        $(CC) $(CFLAGS) -o $@ $^
= 226;heap.o: heap.c heap.h allocreclist.h
= 226;        $(CC) $(CFLAGS) -o $@ -c $<
= 226;
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0024_image045.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0029.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
24
Generating Dependencies
&#= 8226;Manual tracking of dependencies is a pain
&#= 8226;Forget a dependency?
&= #8211;Introduce subtle bugs
&= #8211;Get confusing build errors if you're lucky!
= 226;Generating dependencies automatically
&= #8211;Use gcc -M (or -MM = or -MG) <= /span>
&= #8211;Use an IDE that does this for you
&= #8211;This is beyond the scope of this class
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0029_image046.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0030.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
25
Summary
&#= 8226;Always script complicated build tasks
make can h= andle building in any language
= 226;Lots of tricks for keeping Makefiles neat
&#= 8226;Lots of conventions in Makefiles
&= #8211;Reuse them often!
&#= 8226;Learn about dependency generation
&= #8211;Not in this class, but VERY handy
&= #8211;If you use an IDE, this is handled for you
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0030_image047.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0003.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19
11/17/2006
CSE 303 Lecture 19
26
Next Time
Digital Rights Management
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/slide0003_image048.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/master01.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
<= /div>
<= /div>
<= /div>
‹h= eader›
<= /div>
<= /div>
<= /div>
‹date/time›
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
<= /div>
<= /div>
<= /div>
‹f= ooter›
<= /div>
<= /div>
<= /div>
‹#›
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/master03_stylesheet.css Content-Transfer-Encoding: base64 Content-Type: text/css Ym9keQ0KCXt3aWR0aDo1MzRweDsNCgloZWlnaHQ6NDAwcHg7fQ0KLlRCDQoJe21zby1zcGVjaWFs LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5UDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQt ZmFtaWx5OkFyaWFsOw0KCWNvbG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQt c2l6ZToyMDklOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N Ci5CQg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMjI7fQ0KLkINCgl7dGV4dC1hbGln bjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOiM5OTAwMDA7DQoJZm9udC1zaXpl OjE1MiU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkIx Qg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMTM7fQ0KLkIxDQoJe3RleHQtYWxpZ246 bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5k ZXg6MTsNCglmb250LXNpemU6MTMzJTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Ut b3ZlcmZsb3c6MTt9DQouQjJCDQoJe21zby1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMjAyMjt9DQou QjINCgl7dGV4dC1hbGlnbjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNr Ow0KCW1zby1jb2xvci1pbmRleDoxOw0KCWZvbnQtc2l6ZToxMTQlOw0KCW1zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5CM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0 OmJ1bGxldFwyMDEzO30NCi5CMw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1pbHk6QXJp YWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXplOjk1JTsN Cgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQjRCDQoJe21z by1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMDBCQjt9DQouQjQNCgl7dGV4dC1hbGlnbjpsZWZ0Ow0K CWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNrOw0KCW1zby1jb2xvci1pbmRleDoxOw0K CWZvbnQtc2l6ZTo5NSU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93 OjE7fQ0KLk5CDQoJe21zby1zcGVjaWFsLWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5ODQoJe3Rl eHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28t Y29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5OMUINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0 XDIwMjI7fQ0KLk4xDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCglj b2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5OMkINCgl7bXNvLXNwZWNp YWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4yDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250 LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250 LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N Ci5OM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4zDQoJe3RleHQt YWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29s b3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5ONE4NCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw MjI7fQ0KLk40DQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xv cjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFy LXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PQg0KCXttc28tc3BlY2lhbC1m b3JtYXQ6bm9idWxsZXRcMjAyMjt9DQouTw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1p bHk6QXJpYWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXpl Ojg1JTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzEN Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLk8yDQoJe21z by1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PMw0KCXttc28tY2hh ci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzQNCgl7bXNvLWNoYXItd3Jh cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCQg0KCXttc28tc3BlY2lhbC1mb3Jt YXQ6bm9idWxsZXRcMjAyMjt9DQouQ0INCgl7dGV4dC1hbGlnbjpjZW50ZXI7DQoJZm9udC1mYW1p bHk6QXJpYWw7DQoJY29sb3I6Izk5MDAwMDsNCglmb250LXNpemU6MTUyJTsNCgltc28tY2hhci13 cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0IxDQoJe21zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5DQjINCgl7bXNvLWNoYXItd3JhcDoxOw0K CW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCMw0KCXttc28tY2hhci13cmFwOjE7DQoJbXNv LWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0I0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5DVEINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw MjI7fQ0KLkNUDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNv bG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQtc2l6ZToyMDklOw0KCW1zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQg0KCXtjb2xvcjojOTkw MDAwOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjEN Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkhCMg0KCXtt c28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouSEIzDQoJe21zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjQNCgl7bXNvLWNoYXIt d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCDQoJe2NvbG9yOiM5OTAwMDA7 DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCMQ0KCXtt c28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouUUIyDQoJe21zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5RQjMNCgl7bXNvLWNoYXIt d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCNA0KCXttc28tY2hhci13cmFw OjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouVGJsDQoJe2NvbG9yOiM5OTAwMDA7DQoJ bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDENCgl7bXNv LWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDINCgl7bXNvLWNo YXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDMNCgl7bXNvLWNoYXIt d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDQNCgl7bXNvLWNoYXItd3Jh cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLmRlZmF1bHRCDQoJe21zby1zcGVjaWFs LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5kZWZhdWx0DQoJe3RleHQtYWxpZ246bGVmdDsNCglm b250LWZhbWlseTpBcmlhbDsNCglmb250LXdlaWdodDpub3JtYWw7DQoJZm9udC1zdHlsZTpub3Jt YWw7DQoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7DQoJdGV4dC1zaGFkb3c6bm9uZTsNCgl0ZXh0LWVm ZmVjdDpub25lOw0KCW1zby1mYXJlYXN0LWhpbnQ6bm87DQoJbGF5b3V0LWZsb3c6aG9yaXpvbnRh bDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6ODUlOw0K CW1zby10ZXh0LXJhaXNlOjAlOw0KCW1zby1saW5lLXNwYWNpbmc6IjEwMCAwIDAiOw0KCW1zby1t YXJnaW4tbGVmdC1hbHQ6MDsNCgltc28tdGV4dC1pbmRlbnQtYWx0OjA7DQoJbXNvLWNoYXItd3Jh cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7DQoJZGlyZWN0aW9uOmx0cjsNCgltc28td29y ZC13cmFwOjE7DQoJbXNvLXZlcnRpY2FsLWFsaWduLXNwZWNpYWw6YmFzZWxpbmU7DQoJbXNvLWFu c2ktbGFuZ3VhZ2U6RU4tVVM7fQ0KYTpsaW5rDQoJe2NvbG9yOiMwMDk5OTkgIWltcG9ydGFudDt9 DQphOmFjdGl2ZQ0KCXtjb2xvcjojMzMzMzk5ICFpbXBvcnRhbnQ7fQ0KYTp2aXNpdGVkDQoJe2Nv bG9yOiM5OUNDMDAgIWltcG9ydGFudDt9DQp= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/master04_stylesheet.css Content-Transfer-Encoding: base64 Content-Type: text/css Ym9keQ0KCXt3aWR0aDo1MzRweDsNCgloZWlnaHQ6NDAwcHg7fQ0KLlRCDQoJe21zby1zcGVjaWFs LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5UDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQt ZmFtaWx5OkFyaWFsOw0KCWNvbG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQt c2l6ZToyMDklOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N Ci5CQg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMjI7fQ0KLkINCgl7dGV4dC1hbGln bjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOiMwMDAwOTk7DQoJZm9udC1zaXpl OjE1MiU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkIx Qg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMTM7fQ0KLkIxDQoJe3RleHQtYWxpZ246 bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5k ZXg6MTsNCglmb250LXNpemU6MTMzJTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Ut b3ZlcmZsb3c6MTt9DQouQjJCDQoJe21zby1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMjAyMjt9DQou QjINCgl7dGV4dC1hbGlnbjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNr Ow0KCW1zby1jb2xvci1pbmRleDoxOw0KCWZvbnQtc2l6ZToxMTQlOw0KCW1zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5CM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0 OmJ1bGxldFwyMDEzO30NCi5CMw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1pbHk6QXJp YWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXplOjk1JTsN Cgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQjRCDQoJe21z by1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMDBCQjt9DQouQjQNCgl7dGV4dC1hbGlnbjpsZWZ0Ow0K CWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNrOw0KCW1zby1jb2xvci1pbmRleDoxOw0K CWZvbnQtc2l6ZTo5NSU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93 OjE7fQ0KLk5CDQoJe21zby1zcGVjaWFsLWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5ODQoJe3Rl eHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28t Y29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5OMUINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0 XDIwMjI7fQ0KLk4xDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCglj b2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5OMkINCgl7bXNvLXNwZWNp YWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4yDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250 LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250 LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N Ci5OM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4zDQoJe3RleHQt YWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29s b3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5ONE4NCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw MjI7fQ0KLk40DQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xv cjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFy LXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PQg0KCXttc28tc3BlY2lhbC1m b3JtYXQ6bm9idWxsZXRcMjAyMjt9DQouTw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1p bHk6QXJpYWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXpl Ojg1JTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzEN Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLk8yDQoJe21z by1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PMw0KCXttc28tY2hh ci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzQNCgl7bXNvLWNoYXItd3Jh cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCQg0KCXttc28tc3BlY2lhbC1mb3Jt YXQ6bm9idWxsZXRcMjAyMjt9DQouQ0INCgl7dGV4dC1hbGlnbjpjZW50ZXI7DQoJZm9udC1mYW1p bHk6QXJpYWw7DQoJY29sb3I6IzAwMDA5OTsNCglmb250LXNpemU6MTUyJTsNCgltc28tY2hhci13 cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0IxDQoJe21zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5DQjINCgl7bXNvLWNoYXItd3JhcDoxOw0K CW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCMw0KCXttc28tY2hhci13cmFwOjE7DQoJbXNv LWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0I0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5DVEINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw MjI7fQ0KLkNUDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNv bG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQtc2l6ZToyMDklOw0KCW1zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQg0KCXtjb2xvcjojMDAw MDk5Ow0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjEN Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkhCMg0KCXtt c28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouSEIzDQoJe21zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjQNCgl7bXNvLWNoYXIt d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCDQoJe2NvbG9yOiMwMDAwOTk7 DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCMQ0KCXtt c28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouUUIyDQoJe21zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5RQjMNCgl7bXNvLWNoYXIt d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCNA0KCXttc28tY2hhci13cmFw OjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouVGJsDQoJe2NvbG9yOiMwMDAwOTk7DQoJ bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDENCgl7bXNv LWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDINCgl7bXNvLWNo YXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDMNCgl7bXNvLWNoYXIt d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDQNCgl7bXNvLWNoYXItd3Jh cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLmRlZmF1bHRCDQoJe21zby1zcGVjaWFs LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5kZWZhdWx0DQoJe3RleHQtYWxpZ246bGVmdDsNCglm b250LWZhbWlseTpBcmlhbDsNCglmb250LXdlaWdodDpub3JtYWw7DQoJZm9udC1zdHlsZTpub3Jt YWw7DQoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7DQoJdGV4dC1zaGFkb3c6bm9uZTsNCgl0ZXh0LWVm ZmVjdDpub25lOw0KCW1zby1mYXJlYXN0LWhpbnQ6bm87DQoJbGF5b3V0LWZsb3c6aG9yaXpvbnRh bDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6ODUlOw0K CW1zby10ZXh0LXJhaXNlOjAlOw0KCW1zby1saW5lLXNwYWNpbmc6IjEwMCAwIDAiOw0KCW1zby1t YXJnaW4tbGVmdC1hbHQ6MDsNCgltc28tdGV4dC1pbmRlbnQtYWx0OjA7DQoJbXNvLWNoYXItd3Jh cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7DQoJZGlyZWN0aW9uOmx0cjsNCgltc28td29y ZC13cmFwOjE7DQoJbXNvLXZlcnRpY2FsLWFsaWduLXNwZWNpYWw6YmFzZWxpbmU7DQoJbXNvLWFu c2ktbGFuZ3VhZ2U6RU4tVVM7fQ0KYTpsaW5rDQoJe2NvbG9yOiMwMDk5OTkgIWltcG9ydGFudDt9 DQphOmFjdGl2ZQ0KCXtjb2xvcjojMzMzMzk5ICFpbXBvcnRhbnQ7fQ0KYTp2aXNpdGVkDQoJe2Nv bG9yOiM5OUNDMDAgIWltcG9ydGFudDt9DQp= ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/script.js Content-Transfer-Encoding: quoted-printable Content-Type: application/javascript; charset="us-ascii" function LoadSld() { var sld=3DGetObj("SlideObj") if( !g_supportsPPTHTML ) { =09 sld.style.visibility=3D"visible" return } if( MakeNotesVis() ) return runAnimations =3D _InitAnimations(); =09 if( IsWin("PPTSld") ) parent.SldUpdated(GetSldId()) g_origSz=3DparseInt(SlideObj.style.fontSize) g_origH=3Dsld.style.posHeight g_origW=3Dsld.style.posWidth g_scaleHyperlinks=3D(document.all.tags("AREA").length>0) if( g_scaleHyperlinks ) InitHLinkArray() if( g_scaleInFrame||(IsWin("PPTSld") && parent.IsFullScrMode() ) ) document.body.scroll=3D"no" _RSW() if( IsWin("PPTSld") && parent.IsFullScrMode() ) FullScrInit(); =09 MakeSldVis(); ChkAutoAdv() if( runAnimations ) { if( document.all("NSPlay") ) document.all("NSPlay").autoStart =3D false; if( sld.filters && sld.filters.revealtrans ) setTimeout( "document.body.start()", sld.filters.revealtrans.duration * = 1000 ); else document.body.start(); } } function MakeSldVis()=20 { var fTrans=3Dg_showAnimation && SldHasTrans() if( fTrans )=09 { if( g_bgSound ) { idx=3Dg_bgSound.indexOf(","); pptSound.src=3Dg_bgSound.substr( 0, idx ); pptSound.loop=3D -(parseInt(g_bgSound.substr(idx+1))); } SlideObj.filters.revealtrans.Apply()=09 } SlideObj.style.visibility=3D"visible" if( fTrans ) SlideObj.filters.revealtrans.Play() } function MakeNotesVis()=20 { if( !IsNts() ) return false=20 SlideObj.style.display=3D"none" nObj =3D document.all.item("NotesObj") parent.SetHasNts(0) if( nObj ) {=20 nObj.style.display=3D"" parent.SetHasNts(1) } return 1 } function ChkAutoAdv() { if(SldHasTrans()) SlideObj.onfilterchange=3DAutoAdv else AutoAdv() } function AutoAdv() { if(!IsWin("PPTSld") || !gUseSldTimings )return var sld=3DGetCurSld() if( (sld.mAdvDelay>0) && !parent.IsFramesMode() ) setTimeout("parent.GoToNextSld()",sld.mAdvDelay) } function GetObj(id) { if(g_supportsPPTHTML) return document.all(id); else return document.getElementById(id); } function SldHasTrans() { return SlideObj.style.filter !=3D ""; } function GetSldId()=20 { var regExp =3D /file:\/\/\//i var pos =3D location.href.search(regExp) if (MHTMLPrefix !=3D "" && pos !=3D -1) sId =3D location.href.substring(pos) else { sId =3D RemoveFilePrefixFromHref(location.href); var regExp =3D /\// var fixedHref =3D sId var pos =3D -1 =09 pos =3D fixedHref.search(regExp) while (pos !=3D -1) { fixedHref =3D fixedHref.replace(regExp, "\\") pos =3D fixedHref.search(regExp) } =09 if (g_fBaseHyperlink =3D=3D true) sId =3D "file:///" + fixedHref; else sId =3D fixedHref.substring(fixedHref.lastIndexOf('\\') + 1) } =09 return sId } function HideMenu() { if( frames["PPTSld"] && PPTSld.document.all.item("ctx= tmenu") && PPTSld.ctxtmenu.style.display!=3D"none" ) { PPTSld.ctxtmenu.styl= e.display=3D'none'; return true } return false } function IsWin( name ) { return window.name =3D=3D name } function IsNts() { return IsWin("PPTNts") } function IsSldOrNts() { return( IsWin("PPTSld")||IsWin("PPTNts") ) } function SupportsPPTAnimation() { return( navigator.platform =3D=3D "Win32"= && navigator.appVersion.indexOf("Windows")>0 ) } function SupportsPPTHTML() { var appVer=3Dnavigator.appVersion, msie=3DappVer.indexOf("MSIE "), ver=3D0 if( msie >=3D 0 ) ver=3DparseFloat( appVer.substring( msie+5, appVer.indexOf(";",msie) ) ) else ver=3DparseInt(appVer) return( ver >=3D 4 && msie >=3D 0 ) } function _RSW() { if( !g_supportsPPTHTML || IsNts() || ( !g_scaleInFrame && (!IsWin("PPTSld") || !parent.IsFullScrMode()) ) ) return var padding=3D0; if( IsWin("PPTSld") && parent.IsFramesMode() ) padding=3D6 cltWidth=3Ddocument.body.clientWidth-padding cltHeight=3Ddocument.body.clientHeight-padding factor=3D(1.0*cltWidth)/g_origW if( cltHeight < g_origH*factor ) factor=3D(1.0*cltHeight)/g_origH newSize =3D g_origSz * factor if( newSize < 1 ) newSize=3D1 s=3DSlideObj.style s.fontSize=3DnewSize+"px" s.posWidth=3Dg_origW*factor s.posHeight=3Dg_origH*factor s.posLeft=3D(cltWidth-s.posWidth+padding)/2 s.posTop=3D(cltHeight-s.posHeight+padding)/2 if( g_scaleHyperlinks ) ScaleHyperlinks( factor ) } function _InitAnimations() { animRuntimeInstalled =3D ''+document.body.localTime !=3D 'undefined'; isFullScreen =3D (window.name =3D=3D "PPTSld") && !parent.IsFramesMode(); g_animUseRuntime =3D g_showAnimation && animRuntimeInstalled && !(isFullSc= reen && parent.IsSldVisited()); if( g_animUseRuntime ) { collSeq =3D document.all.tags("seq"); if( collSeq !=3D null ) { for(ii=3D0;ii numSlds ) gSldJumpIdx =3D numSlds; if ( gSldJumpIdx >=3D 0 ) { if ( gSldJumpIdx =3D=3D 0 ) gSldJumpIdx =3D 1; var jumpTo =3D parseInt(gSldJumpIdx); gSldJump =3D 0; gSldJumpIdx =3D ""; win.GoToSld( parent.GetSldList().mList[jumpTo-1].mSldHref ) } } } function _KDH() { if( event.keyCode =3D=3D 8 ) { event.returnValue =3D 0; parent.GoToPrevSld(); } } function DocumentOnClick() { if( IsNts() || parent.HideMenu() ) return; if( ( g_allowAdvOnClick && !parent.IsFramesMode() ) || (event && (event.keyCode=3D=3D32) ) ) parent.GoToNextSld(); } var g_supportsPPTHTML =3D SupportsPPTHTML(), g_scaleInFrame =3D 1, gId=3D""= , g_bgSound=3D"", g_scaleHyperlinks =3D false, g_allowAdvOnClick =3D 1, g_showInBrowser = =3D 0, gLoopCont =3D 0, gUseSldTimings =3D 1; var g_showAnimation =3D g_supportsPPTHTML && SupportsPPTAnimation() && ( (w= indow.name=3D=3D"PPTSld" && !parent.IsFramesMode()) || g_showInBrowser );va= r g_animManager =3D null; var g_animUseRuntime =3D false; var g_animItemsToHide, g_animInteractiveItems, g_animSlideTime; var g_animMainSequence =3D null; var ENDSHOW_MESG=3D"End of slide show, click to exit.", SCREEN_MODE=3D"Fram= es", gIsEndShow=3D0, NUM_VIS_SLDS=3D26, SCRIPT_HREF=3D"script.js", FULLSCR_= HREF=3D"fullscreen.htm"; var gCurSld =3D gPrevSld =3D 1, g_offset =3D 0, gNtsOpen =3D gHasNts =3D gO= tlTxtExp =3D 0, gHasNarration =3D 0, gOtlOpen =3D true window.gPPTHTML=3DSupportsPPTHTML() var g_fBaseHyperlink =3D false; var gMainDoc=3Dnew Array(new hrefList("slide0001.htm",1,-1,1),new hrefList(= "slide0004.htm",1,-1,1),new hrefList("slide0005.htm",1,-1,1),new hrefList("= slide0012.htm",1,-1,1),new hrefList("slide0006.htm",1,-1,1),new hrefList("s= lide0007.htm",1,-1,1),new hrefList("slide0009.htm",1,-1,1),new hrefList("sl= ide0010.htm",1,-1,1),new hrefList("slide0011.htm",1,-1,1),new hrefList("sli= de0008.htm",1,-1,1),new hrefList("slide0013.htm",1,-1,1),new hrefList("slid= e0014.htm",1,-1,1),new hrefList("slide0015.htm",1,-1,1),new hrefList("slide= 0016.htm",1,-1,1),new hrefList("slide0017.htm",1,-1,1),new hrefList("slide0= 018.htm",1,-1,1),new hrefList("slide0028.htm",1,-1,1),new hrefList("slide00= 27.htm",1,-1,1),new hrefList("slide0019.htm",1,-1,1),new hrefList("slide002= 0.htm",1,-1,1),new hrefList("slide0022.htm",1,-1,1),new hrefList("slide0023= .htm",1,-1,1),new hrefList("slide0024.htm",1,-1,1),new hrefList("slide0029.= htm",1,-1,1),new hrefList("slide0030.htm",1,-1,1),new hrefList("slide0003.h= tm",1,-1,1)); /********************************************* Frameset functions These functions control slide navigation and state of the frameset. **********************************************/ function RemoveFilePrefixFromHref(href) { var regExp =3D /^file:\/\/\//i; return href.replace(regExp, "") } function FullScrInit() { g_allowAdvOnClick =3D GetCurSld().mAdvOnClk document.body.style.backgroundColor=3D"black" document.oncontextmenu=3Dparent._CM; document.onkeydown =3D _KDH; document.ondragstart=3DCancel document.onselectstart=3DCancel self.focus() } function Redirect( frmId ) {=09 var str=3Ddocument.location.hash,idx=3Dstr.indexOf('#'), sId=3DGetSldId() if(idx>=3D0) str=3Dstr.substr(1); if( window.name !=3D frmId && ( sId !=3D str) ) { obj =3D GetObj("Main-File") window.location.href=3Dobj.href+"#"+sId return 1 } return 0 } var MHTMLPrefix =3D CalculateMHTMLPrefix();=20 function CalculateMHTMLPrefix() { if ( document.location.protocol =3D=3D 'mhtml:') {=20 href=3Dnew String(document.location.href)=20 Start=3Dhref.indexOf('!')+1=20 End=3Dhref.lastIndexOf('/')+1=20 if (End < Start)=20 return href.substring(0, Start)=20 else=20 return href.substring(0, End)=20 } return ''; } function GetTags(base,tag) { if(g_supportsPPTHTML) return base.all.tags(tag); else return base.getElementsByTagName(tag); } function UpdNtsPane(){ if(frames["PPTNts"]) PPTNts.location.replace( MHTMLP= refix+GetHrefObj( gCurSld ).mNtsHref ) } function UpdNavPane( sldIndex ){ if(gNavLoaded) PPTNav.UpdNav() } function UpdOtNavPane(){ if(gOtlNavLoaded) PPTOtlNav.UpdOtlNav() } function UpdOtlPane(){ if(gOtlLoaded) PPTOtl.UpdOtl() } function SetHasNts( fVal ) { if( gHasNts !=3D fVal ) { gHasNts=3DfVal UpdNavPane() } } function ToggleOtlText() { gOtlTxtExp=3D!gOtlTxtExp UpdOtlPane() } function ClearMedia() { // Clear any sounds playing before launching another browser window. Other= wise, // in fullscreen mode, you'll continue to hear the sound in the frames mod= e. if (PPTSld.pptSound) PPTSld.pptSound.loop =3D 0; } function FullScreen() {=20 if ( PPTSld.g_animUseRuntime ) PPTSld.document.body.pause(); ClearMedia(); var href =3D ( document.location.protocol =3D=3D 'mhtml:') ? FULLSCR_HREF = : FULLSCR_HREF+"#"+GetHrefObj(gCurSld).mSldHref; if (MHTMLPrefix !=3D "") href =3D RemoveFilePrefixFromHref(href) if(PPTNav.event.ctrlKey) { var w =3D (window.screen.availWidth * 1.0) / 2.0 var h =3D w * (PPTSld.g_origH * 1.0) / PPTSld.g_origW win =3D window.open( MHTMLPrefix+href,null,"toolbar=3D0,resizable=3D1,top= =3D0,left=3D0," + "width=3D"+ w + ",height=3D" + h ); if( win.document.body && PPTSld.g_animUseRuntime ) win.document.body.PPTSldFrameset=3Dwindow; } else { win =3D window.open( MHTMLPrefix+href,null,"fullscreen=3Dyes" ); if( win.document.body && PPTSld.g_animUseRuntime ) win.document.body.PPTSldFrameset=3Dwindow; } } function ToggleVNarration() { rObj=3DPPTSld.document.all("NSPlay") if( rObj && !PPTSld.g_animUseRuntime ) { if( (rObj.playState =3D=3D 1)||(rObj.playState =3D=3D 0) ) rObj.Play() else if( rObj.playState =3D=3D 2 ) rObj.Pause() else return; } else if( PPTSld.g_animUseRuntime ) { narObj =3D PPTSld.document.all("narrationID") if( narObj ) narObj.togglePause() } } function GetCurSldNum() { =20 obj=3DGetHrefObj(gCurSld) if( obj.mOrigVis =3D=3D 1 ) return obj.mSldIdx else =20 return gCurSld } function GetNumSlds() { =20 if( GetHrefObj(gCurSld).mOrigVis =3D=3D 1 ) return GetSldList().mNumVisSlds; else return GetSldList().mList.length } function GetSldNum( href ) { for(ii=3D0; ii 1 ) PopSldList(); else if( !IsFramesMode() ) { if( gLoopCont ) GoToFirst() else EndShow() } } function GoToPrevSld() { ii=3DgCurSld-1 if( ii > 0 ) { obj=3DGetHrefObj(ii) while ( obj && ( obj.mVis =3D=3D 0 ) && ( ii>0 ) ) obj=3DGetHrefObj(--ii) if( ii =3D=3D 0 ) ii=3D1 GoToSldNum(ii) } } function GoToFirst(){ GoToSld( GetHrefObj(1).mSldHref ) } function GoToLast() { ii=3DGetSldList().mList.length if( ii !=3D gCurSld ) GoToSld( GetHrefObj(ii).mSldHref ) } function GoToSldNum( num ) { if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue obj =3D GetHrefObj( num ) obj.mVis=3D1 gPrevSld=3DgCurSld gCurSld =3D num; =09 if (MHTMLPrefix !=3D "") PPTSld.location.replace(MHTMLPrefix+RemoveFilePrefixFromHref(obj.mSldHref= )) else PPTSld.location.replace(obj.mSldHref) =09 if( IsFramesMode() ) { UpdNavPane(); UpdOtlPane(); UpdNtsPane() } } function GoToSld( href ) { if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue GetHrefObj( GetSldNum(href) ).mVis=3D1 if (MHTMLPrefix !=3D "") PPTSld.location.replace(MHTMLPrefix+RemoveFilePrefixFromHref(href)) else PPTSld.location.replace(href) } function SldUpdated( id ) { if( id =3D=3D GetHrefObj(gCurSld).mSldHref ) return gPrevSld=3DgCurSld gCurSld=3DGetSldNum(id) if( IsFramesMode() ) { UpdNavPane(); UpdOtlPane(); UpdNtsPane() } } function PrevSldViewed(){ GoToSld( GetHrefObj(gPrevSld).mSldHref ) } function HasPrevSld() { return ( gIsEndShow || ( gCurSld !=3D 1 && GetHrefO= bj( gCurSld-1 ).mVis =3D=3D 1 )||( GetCurSldNum() > 1 ) ) } function HasNextSld() { return (GetCurSldNum() !=3D GetNumSlds()) } function CloseWindow() { if( HideMenu() ) return; =09 var event =3D PPTSld.event; if( !IsFramesMode() && event && (event.keyCode=3D=3D27 || event.keyCode=3D= =3D32 || event.type=3D=3D"click" ) ) window.close( self ); CatchNumKeys( self, event ); } function Unload() { gIsEndShow=3D0; } function SetupEndShow() { gIsEndShow=3D1; PPTSld.document.body.scroll=3D"no"; PPTSld.document.onkeypress=3DCloseWindow; PPTSld.document.onclick=3DCloseWindow; PPTSld.document.oncontextmenu=3D_CM; } function EndShow() { if( IsFramesMode() ) return if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue doc=3DPPTSld.document var dir =3D doc.body.dir if( dir !=3D "rtl" ) dir =3D "ltr"; doc.open() doc.writeln('


' + ENDSHOW_MESG + '

') doc.close() } function SetSldVisited(){ GetSldList().mList[gCurSld-1].mVisited=3Dtrue } function IsSldVisited(){ return GetSldList().mList[gCurSld-1].mVisited } function hrefList( sldHref, visible, advDelay, advClk ) { this.mSldHref=3D this.mNtsHref =3D sldHref this.mOrigVis=3D this.mVis =3D visible this.mVisited=3D false this.mAdvDelay=3D advDelay this.mAdvOnClk=3D advClk } function SldList(arr,curSld,fEnd) { this.mCurSld =3D curSld; this.mList =3D new Array(); var idx =3D 1; for(ii=3D0;ii 0) { PushSldList(sldList,fEnd); gCurSld =3D 1; } else if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue } function PushSldList(arr,fEnd) { var ii =3D gSldStack.length; gSldStack[ii] =3D new SldList(arr,gCurSld,fEnd); GoToSld( gSldStack[ii].mList[0].mSldHref ); } function PopSldList() { if (gSldStack[gSldStack.length-1].fEndShow) EndShow() else { gCurSld =3D gSldStack[gSldStack.length-1].mCurSld; gSldStack[gSldStack.length-1] =3D null; gSldStack.length--; var sldList =3D gSldStack[gSldStack.length-1]; GoToSld( sldList.mList[gCurSld - 1].mSldHref ); } } var custShowList=3Dnew Array(); /********************************************* Navigation button implementation There are 2 types of buttons: ImgBtn, TxtBtn implemented as function objects. They share a similiar interface so the event handlers can call SetActive, for example, on a button=20 object without needing to know exactly=20 what type of button it is. **********************************************/ //---------------------------------- function ImgBtn( oId,bId,w,action ) //---------------------------------- { var t=3Dthis t.Perform =3D _IBP t.SetActive =3D _IBSetA t.SetInactive=3D _IBSetI t.SetPressed =3D _IBSetP t.SetDisabled=3D _IBSetD t.Enabled =3D _IBSetE t.ChangeIcon =3D null t.UserAction =3D action t.ChgState =3D _IBUI t.mObjId =3D oId t.mBorderId=3D bId t.mWidth =3D w t.mIsOn =3D t.mCurState =3D 0 } function _IBSetA() { if( this.mIsOn ) { obj=3Dthis.ChgState( gHiliteClr,gShadowClr,2 ) obj.style.posTop=3D0 } } function _IBSetI() { if( this.mIsOn ) { obj=3Dthis.ChgState( gFaceClr,gFaceClr,1 ) obj.style.posTop=3D0=20 } } function _IBSetP() { if( this.mIsOn ) { obj=3Dthis.ChgState( gShadowClr,gHiliteClr,2 ) obj.style.posLeft+=3D1; obj.style.posTop+=3D1 } } function _IBSetD() { =20 obj=3Dthis.ChgState( gFaceClr,gFaceClr,0 ) obj.style.posTop=3D0=20 } function _IBSetE( state ) { var t=3Dthis GetObj( t.mBorderId ).style.visibility=3D"visible" if( state !=3D t.mIsOn ) { t.mIsOn=3Dstate if( state ) t.SetInactive() else t.SetDisabled() } } function _IBP() { var t=3Dthis if( t.mIsOn ) { if( t.UserAction !=3D null ) t.UserAction() if( t.ChangeIcon ) { obj=3DGetObj(t.mObjId) if( t.ChangeIcon() ) obj.style.posLeft=3Dobj.style.posLeft+(t.mCurState-4)*t.mWidth else obj.style.posLeft=3Dobj.style.posLeft+(t.mCurState-0)*t.mWidth } t.SetActive() } =20 } function _IBUI( clr1,clr2,nextState ) { var t=3Dthis SetBorder( GetObj( t.mBorderId ),clr1,clr2 ) obj=3DGetObj( t.mObjId ) obj.style.posLeft=3Dobj.style.posLeft+(t.mCurState-nextState)*t.mWidth-obj= .style.posTop t.mCurState=3DnextState return obj } //----------------------------------------- function TxtBtn( oId,oeId,action,chkState ) //----------------------------------------- { var t=3Dthis t.Perform =3D _TBP t.SetActive =3D _TBSetA t.SetInactive=3D _TBSetI t.SetPressed =3D _TBSetP t.SetDisabled=3D _TBSetD t.SetEnabled =3D _TBSetE t.GetState =3D chkState t.UserAction =3D action t.ChgState =3D _TBUI t.mObjId =3D oId t.m_elementsId=3D oeId t.mIsOn =3D 1 } function _TBSetA() { var t=3Dthis if( t.mIsOn && !t.GetState() ) t.ChgState( gHiliteClr,gShadowClr,0,0 ) } function _TBSetI() { var t=3Dthis if( t.mIsOn && !t.GetState() ) t.ChgState( gFaceClr,gFaceClr,0,0 ) } function _TBSetP() { if( this.mIsOn ) this.ChgState( gShadowClr,gHiliteClr,1,1 ) } function _TBSetD() { =20 this.ChgState( gFaceClr,gFaceClr,0,0 ) this.mIsOn =3D 0 } function _TBSetE() { var t=3Dthis if( !t.GetState() ) t.ChgState( gFaceClr,gFaceClr,0,0 ) else t.ChgState( gShadowClr,gHiliteClr,1,1 ) t.mIsOn =3D 1 } function _TBP() { var t=3Dthis if( t.mIsOn ) {=20 if( t.UserAction !=3D null ) t.UserAction() if( !t.GetState ) return if( t.GetState() ) t.SetPressed() else t.SetActive() } =20 } function _TBUI( clr1,clr2,lOffset,tOffset ) { SetBorder( GetObj( this.mObjId ),clr1,clr2 ) Offset( GetObj( this.m_elementsId ),lOffset,tOffset ) } function Offset( obj, top, left ){ obj.style.top=3Dtop; obj.style.left=3Dle= ft } function SetBorder( obj, upperLeft, lowerRight ) { s=3Dobj.style; s.borderStyle =3D "solid" s.borderWidth =3D 1=20 s.borderLeftColor =3D s.borderTopColor =3D upperLeft s.borderBottomColor=3D s.borderRightColor =3D lowerRight } function GetBtnObj(){ return gBtnArr[window.event.srcElement.id] } function BtnOnOver(){ b=3DGetBtnObj(); if( b !=3D null ) b.SetActive() } function BtnOnDown(){ b=3DGetBtnObj(); if( b !=3D null ) b.SetPressed() } function BtnOnOut(){ b=3DGetBtnObj(); if( b !=3D null ) b.SetInactive() } function BtnOnUp() { b=3DGetBtnObj() if( b !=3D null ) b.Perform() else Upd() } function GetNtsState(){ return parent.gNtsOpen } function GetOtlState(){ return parent.gOtlOpen } function GetOtlTxtState(){ return parent.gOtlTxtExp } function NtsBtnSetFlag( fVal ) { s=3Ddocument.all.item( this.m_flagId ).style s.display=3D"none" if( fVal ) s.display=3D"" else s.display=3D"none" } function _BSetA_Border(){ b =3D gBtnArr[this.mObjId]; if( b !=3D null ) b.S= etActive() } function _BSetI_Border(){ b =3D gBtnArr[this.mObjId]; if( b !=3D null ) b.S= etInactive() } function _BSetP_Border(){ b =3D gBtnArr[this.mObjId]; if( b !=3D null ) b.S= etPressed() } function _BSetA_BorderImg() {=20 b =3D gBtnArr[this.mBorderId]=20 if( b !=3D null && this.mIsOn && !b.GetState() ) { obj=3Dthis.ChgState( gHiliteClr,gShadowClr,2 ) obj.style.posTop=3D0 } } function _BSetI_BorderImg() {=20 b =3D gBtnArr[this.mBorderId] if( b !=3D null && this.mIsOn && !b.GetState() ) { obj=3Dthis.ChgState( gFaceClr,gFaceClr,1 ) obj.style.posTop=3D0 } } var gHiliteClr=3D"THREEDHIGHLIGHT",gShadowClr=3D"THREEDSHADOW",gFaceClr=3D"= THREEDFACE" var gBtnArr =3D new Array() gBtnArr["nb_otl"] =3D new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOtlPan= e,GetOtlState ) gBtnArr["nb_otlElem"] =3D new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOt= lPane,GetOtlState ) gBtnArr["nb_nts"] =3D new ImgBtn( "nb_nts","nb_ntsBorder",10,parent.ToggleN= tsPane ) gBtnArr["nb_nts"].SetActive =3D _BSetA_BorderImg; gBtnArr["nb_nts"].SetInactive =3D _BSetI_BorderImg; gBtnArr["nb_ntsBorder"] =3D new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.= ToggleNtsPane,GetNtsState ) gBtnArr["nb_ntsElem"] =3D new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.To= ggleNtsPane,GetNtsState ) gBtnArr["nb_prevBorder"] =3D gBtnArr["nb_prev"]=3D new ImgBtn( "nb_prev","n= b_prevBorder",30,parent.GoToPrevSld ) gBtnArr["nb_nextBorder"] =3D gBtnArr["nb_next"]=3D new ImgBtn( "nb_next","n= b_nextBorder",30,parent.GoToNextSld ) gBtnArr["nb_sldshw"]=3D new ImgBtn( "nb_sldshw","nb_sldshwBorder",18,parent= .FullScreen ) gBtnArr["nb_sldshwBorder"] =3D new TxtBtn( "nb_sldshw","nb_sldshwBorder",pa= rent.FullScreen,null ) gBtnArr["nb_sldshwBorder"].SetActive =3D _BSetA_Border; gBtnArr["nb_sldshwBorder"].SetInactive =3D _BSetI_Border; gBtnArr["nb_sldshwText"] =3D new TxtBtn( "nb_sldshw","nb_sldshwText",parent= .FullScreen,null ) gBtnArr["nb_sldshwText"].SetActive =3D _BSetA_Border; gBtnArr["nb_sldshwText"].SetInactive =3D _BSetI_Border; gBtnArr["nb_voice"] =3D gBtnArr["nb_voiceBorder"] =3D new ImgBtn( "nb_voice= ","nb_voiceBorder",18,parent.ToggleVNarration ) gBtnArr["nb_otlTxtBorder"] =3D gBtnArr["nb_otlTxt"]=3D new ImgBtn( "nb_otlT= xt","nb_otlTxtBorder",23,parent.ToggleOtlText ) gBtnArr["nb_ntsBorder"].m_flagId=3D "nb_nts" gBtnArr["nb_ntsBorder"].SetFlag =3D NtsBtnSetFlag gBtnArr["nb_otlTxt"].ChangeIcon=3D GetOtlTxtState /********************************************* Context menu implementation _CM() is the function that's hooked up to the oncontextmenu event. Once we're asked to show the menu, we first build it by creating DIVs on-the-fly. Then we position it=20 within the screen area so it doesn't get clipped. Creating the DIVs using createElement() means we don't have to write out any extra HTML into the slide HTML files. **********************************************/ var sNext=3D"Next",sPrev=3D"Previous",sEnd=3D"End Show",sFont=3D"Arial",sAr= row=3D"Arrow",sFreeform=3D"Freeform",sRect=3D"Rectangle",sOval=3D"Oval" function ShowMenu() { BuildMenu(); var doc=3DPPTSld.document.body,x=3DPPTSld.event.clientX+doc.scrollLeft,y= =3DPPTSld.event.clientY+doc.scrollTop m =3D PPTSld.document.all.item("ctxtmenu") m.style.pixelLeft=3Dx if( (x+m.scrollWidth > doc.clientWidth)&&(x-m.scrollWidth > 0) ) m.style.pixelLeft=3Dx-m.scrollWidth m.style.pixelTop=3Dy if( (y+m.scrollHeight > doc.clientHeight)&&(y-m.scrollHeight > 0) ) m.style.pixelTop=3Dy-m.scrollHeight m.style.display=3D"" } function _CM() { if( !parent.IsFullScrMode() ) return; if(!PPTSld.event.ctrlKey) { ShowMenu() return false } else HideMenu() } function BuildMenu() { if( PPTSld.document.all.item("ctxtmenu") ) return var mObj=3DCreateItem( PPTSld.document.body ) mObj.id=3D"ctxtmenu" mObj.style.visibility=3D"hidden" var s=3DmObj.style s.position=3D"absolute" s.cursor=3D"default" s.width=3D"120px" SetCMBorder(mObj,"menu","black") var iObj=3DCreateItem( mObj ) SetCMBorder( iObj, "threedhighlight","threedshadow" ) iObj.style.padding=3D2 CreateMenuItem( iObj,sNext,M_GoNextSld,M_True ) CreateMenuItem( iObj,sPrev,M_GoPrevSld,M_HasPrevSld ) =09 CreateSeparator( iObj ) CreateMenuItem( iObj,sEnd,M_End,M_True ) mObj.style.visibility=3D"visible" } function Cancel() { window.event.cancelBubble=3Dtrue; window.event.returnVa= lue=3Dfalse } function Highlight() { ChangeClr("activecaption","threedhighlight") } function Deselect() { ChangeClr("threedface","menutext") } function Perform() { e=3DPPTSld.event.srcElement if( e.type=3D=3D"menuitem" && e.IsActive() ) e.Action() else PPTSld.event.cancelBubble=3Dtrue } function ChangeClr( bg,clr ) { e=3DPPTSld.event.srcElement if( e.type=3D=3D"menuitem" && e.IsActive() ) { e.style.backgroundColor=3Dbg e.style.color=3Dclr } } function M_HasPrevSld() { return( parent.HasPrevSld() ) } function M_GoNextSld() { if( gIsEndShow ) M_End(); else GoToNextSld() } function M_GoPrevSld() { if( gIsEndShow ) { gIsEndShow=3D0; history.back();= PPTSld.event.cancelBubble=3Dtrue; } else GoToPrevSld() } function M_True() { return true } function M_End() { window.close( self ) } function CreateMenuItem( node,text,action,eval ) { var e=3DCreateItem( node ) e.type=3D"menuitem" e.Action=3Daction e.IsActive=3Deval e.innerHTML=3Dtext if( !e.IsActive() ) e.style.color=3D"threedshadow" e.onclick=3DPerform e.onmouseover=3DHighlight e.onmouseout=3DDeselect s=3De.style; s.fontFamily=3DsFont s.fontSize=3D"9pt" s.paddingLeft=3D2 } function CreateSeparator( node ) { var sObj=3DCreateItem( node ) SetCMBorder(sObj,"menu","menu") var s=3DsObj.style s.borderTopColor=3D"threedshadow" s.borderBottomColor=3D"threedhighlight" s.height=3D1 s.fontSize=3D"0px" } function CreateItem( node ) { var elem=3DPPTSld.document.createElement("DIV") node.insertBefore( elem ) return elem } function SetCMBorder( o,ltClr,rbClr ) { var s=3Do.style s.backgroundColor=3D"menu" s.borderStyle=3D"solid" s.borderWidth=3D1 s.borderColor=3DltClr+" "+rbClr+" "+rbClr+" "+ltClr } ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/fullscreen.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/buttons.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWAESAPf4AAAAAIAAAACAAICAAAAAgIAAgACAgICAgAQEBISEBASEBISEhAQEhMTExAQE /KTM9Pz8/ERERPz8BAT8/KSkpGRkhMTcxCRkxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAMDAwP8AAAD/AP//AAAA//8A/wD//////yH5BAEAAPgALAAAAABYARIA QAj/APEJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGCEiQKCRo8YDIEHig2DxAD4LKD1avDDhgUuV GUOGbHBR5QGYFBG4fHAB58EKECJEwCfUYAWPFGAygLCRKQIIUKM6WAohKUGgCikcFWh1INWoYKVS 7SrQ41GbIhGYLAuVQVOoC+IyXUuUAkG1HE3KFDhAwkgJc5/qDZmxsOHDiBMrXsy4sePDGyP7lChT 5MULmDPnlDw5YmW6FTNrfgi0aNGEZPEtbfo2bNTUpYeeRph69dPWrqvCNFuBIGG1A59CYPAVQtwF cw0OxWdTIOiBCQAjaAB17fOFII8voGmRc+eOkilm/z9OvTtnjN4hYk1YoT3H2rnBOphPAB9skgq3 2lcaX/5YnJVt9BloAar12UEIRGCZdQghMABI1Tn32IQUVthYexhmqGGGMBHAgIfEhSiiiATAtOGJ GnYI4ogsEldicAYOGNJGZaml3Y0L3NTZUBz1xlB0PUoUI0jlVWRSVN89xBKSGB1YU1TMoRfVBEle hR9HQs1GEHxQ3RZZbveZthxt/LEmXHyp5XWABSCpaRJwbM13gAACPHVccgJFgF+NEhqUAEkQSCfc ddhVhh5dVTaEAEsTUNlkZUWKN9BNGDE6QU8OrSdbllzpxyVTTrU21Uj3scfhp7nNpyoDaTIEJ3P9 If8J2kbLNYegg9JRBwGhFvbq66+ZUiDssMQWK2yHxiZLrInKNotss8l+B5yBrr5p2UIJvortANoC 6+234IbLla/elRtZjeamh5CC3Sb0YLvixivvYkDFGlZqBNh7r4n6goVvv6/ZlCicN+kL71ALTnpQ dCIZp7CihkLA3UQmoWRBogyxtBPGCTnZncVR1rSTo5nuydC/Eo8kUH+lOoTyyvjoCuZu+PjYIKLD rZybtrM1d10C0QXKEVz48GrQkEeWdFJKlbb0UmEeV0SzyC6RvNB646LWIVjUNeC1zAFb+RDKXksM 9r531bwmpQW9+hQDDsx5pqwDRWBXcFES2hc+gEn/wJGdEEWdE6LoWcoxQweaTNmkhydkKaYMYY2Q p1unbLl/pPKbn3v7EZRvrKvqlja2ONvrtoIw9tn2g32/tQBlhtYkU+MNikZ7QYlPDPuMldpOmuJX nVo5VF3HjI+q89mteX5IDd/fVFClma5kiE4f2XUJhlz09gj2NbTDRifkmu7zXjR++RVJ/lPznuvr QH2iD6S+UewP9Dnon6d2NLwN8n90BB6hC68cFMCHoe+ACASP9c4DowUyEF0OPFcDI0ij/VXPaAKC UfhS95AKGoQ7IBRICI1HwhGaUIQoLGEKT6jCFrLwhSuMoQtlCMMZ2rCGOKShDm+4wxzy8Ic+DGIP B4cIRCKGMCAAOy== ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/frame.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 19 ------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/outline.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
 No= tes
Slide Show
Outline
<= /a>= = = = = = = = = = =
------=_NextPart_01C71A17.C1E04960 Content-Location: file:///C:/AF8A9A59/cse303-06au-lecture19_files/filelist.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; charset="utf-8" ------=_NextPart_01C71A17.C1E04960--