neptune 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. data/LICENSE +39 -0
  2. data/README +50 -0
  3. data/bin/neptune +16 -0
  4. data/doc/AppControllerClient.html +468 -0
  5. data/doc/CommonFunctions.html +368 -0
  6. data/doc/LICENSE.html +131 -0
  7. data/doc/Object.html +431 -0
  8. data/doc/README.html +135 -0
  9. data/doc/bin/neptune.html +58 -0
  10. data/doc/created.rid +7 -0
  11. data/doc/images/brick.png +0 -0
  12. data/doc/images/brick_link.png +0 -0
  13. data/doc/images/bug.png +0 -0
  14. data/doc/images/bullet_black.png +0 -0
  15. data/doc/images/bullet_toggle_minus.png +0 -0
  16. data/doc/images/bullet_toggle_plus.png +0 -0
  17. data/doc/images/date.png +0 -0
  18. data/doc/images/find.png +0 -0
  19. data/doc/images/loadingAnimation.gif +0 -0
  20. data/doc/images/macFFBgHack.png +0 -0
  21. data/doc/images/package.png +0 -0
  22. data/doc/images/page_green.png +0 -0
  23. data/doc/images/page_white_text.png +0 -0
  24. data/doc/images/page_white_width.png +0 -0
  25. data/doc/images/plugin.png +0 -0
  26. data/doc/images/ruby.png +0 -0
  27. data/doc/images/tag_green.png +0 -0
  28. data/doc/images/wrench.png +0 -0
  29. data/doc/images/wrench_orange.png +0 -0
  30. data/doc/images/zoom.png +0 -0
  31. data/doc/index.html +90 -0
  32. data/doc/js/darkfish.js +116 -0
  33. data/doc/js/jquery.js +32 -0
  34. data/doc/js/quicksearch.js +114 -0
  35. data/doc/js/thickbox-compressed.js +10 -0
  36. data/doc/lib/app_controller_client_rb.html +60 -0
  37. data/doc/lib/common_functions_rb.html +68 -0
  38. data/doc/lib/job_rb.html +55 -0
  39. data/doc/scripts/appscale/add_appserver_rb.html +52 -0
  40. data/doc/scripts/appscale/add_database_rb.html +52 -0
  41. data/doc/scripts/appscale/add_loadbalancer_rb.html +52 -0
  42. data/doc/scripts/appscale/add_slave_rb.html +52 -0
  43. data/doc/scripts/cewssa/cewssa-output.html +104 -0
  44. data/doc/scripts/cewssa/get_cewssa_output_rb.html +52 -0
  45. data/doc/scripts/cewssa/run_cewssa_rb.html +52 -0
  46. data/doc/scripts/cewssa/test_dfsp_rb.html +52 -0
  47. data/doc/scripts/dfsp/get_dfsp_output_rb.html +52 -0
  48. data/doc/scripts/dfsp/make_output_public_rb.html +52 -0
  49. data/doc/scripts/dfsp/run_dfsp_rb.html +52 -0
  50. data/doc/scripts/dfsp/see_acl_rb.html +52 -0
  51. data/doc/scripts/dfsp/test_dfsp_rb.html +52 -0
  52. data/doc/scripts/mapreduce/get_mapreduce_output_rb.html +52 -0
  53. data/doc/scripts/mapreduce/input-10.html +114 -0
  54. data/doc/scripts/mapreduce/input-30.html +114 -0
  55. data/doc/scripts/mapreduce/input-7.html +104 -0
  56. data/doc/scripts/mapreduce/map_rb.html +56 -0
  57. data/doc/scripts/mapreduce/reduce_rb.html +56 -0
  58. data/doc/scripts/mapreduce/run_java_mr_rb.html +52 -0
  59. data/doc/scripts/mapreduce/run_mapreduce_rb.html +52 -0
  60. data/doc/scripts/mpi/Makefile.html +125 -0
  61. data/doc/scripts/mpi/get_mpi_output_rb.html +52 -0
  62. data/doc/scripts/mpi/hw2_c.html +52 -0
  63. data/doc/scripts/mpi/hw2harness_c.html +52 -0
  64. data/doc/scripts/mpi/hw2harness_h.html +52 -0
  65. data/doc/scripts/mpi/run_mpi_cpi_rb.html +52 -0
  66. data/doc/scripts/mpi/run_mpi_powermethod_rb.html +52 -0
  67. data/doc/scripts/mpi/test_rb.html +52 -0
  68. data/doc/scripts/x10/Makefile.html +106 -0
  69. data/doc/scripts/x10/get_x10_output_rb.html +52 -0
  70. data/doc/scripts/x10/run_x10_kmeans_rb.html +52 -0
  71. data/doc/scripts/x10/run_x10_montypi_rb.html +52 -0
  72. data/doc/scripts/x10/run_x10_nqueens_rb.html +52 -0
  73. data/doc/scripts/x10/run_x10_powermethod_rb.html +52 -0
  74. data/doc/scripts/x10/run_x10_qsort_rb.html +52 -0
  75. data/doc/scripts/x10/test_rb.html +52 -0
  76. data/lib/app_controller_client.rb +135 -0
  77. data/lib/common_functions.rb +107 -0
  78. data/lib/job.rb +161 -0
  79. metadata +145 -0
@@ -0,0 +1,368 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
7
+
8
+ <title>Module: CommonFunctions</title>
9
+
10
+ <link rel="stylesheet" href="./rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="./js/jquery.js" type="text/javascript"
13
+ charset="utf-8"></script>
14
+ <script src="./js/thickbox-compressed.js" type="text/javascript"
15
+ charset="utf-8"></script>
16
+ <script src="./js/quicksearch.js" type="text/javascript"
17
+ charset="utf-8"></script>
18
+ <script src="./js/darkfish.js" type="text/javascript"
19
+ charset="utf-8"></script>
20
+
21
+ </head>
22
+ <body class="module">
23
+
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="./index.html">Home</a>
29
+ <a href="./index.html#classes">Classes</a>
30
+ <a href="./index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="file-metadata">
36
+ <div id="file-list-section" class="section">
37
+ <h3 class="section-header">In Files</h3>
38
+ <div class="section-body">
39
+ <ul>
40
+
41
+ <li><a href="./lib/common_functions_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="lib/common_functions.rb">lib/common_functions.rb</a></li>
43
+
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+
49
+ </div>
50
+
51
+ <div id="class-metadata">
52
+
53
+ <!-- Parent Class -->
54
+
55
+
56
+ <!-- Namespace Contents -->
57
+
58
+
59
+ <!-- Method Quickref -->
60
+
61
+ <div id="method-list-section" class="section">
62
+ <h3 class="section-header">Methods</h3>
63
+ <ul class="link-list">
64
+
65
+ <li><a href="#method-c-get_from_yaml">::get_from_yaml</a></li>
66
+
67
+ <li><a href="#method-c-get_secret_key">::get_secret_key</a></li>
68
+
69
+ <li><a href="#method-c-scp_file">::scp_file</a></li>
70
+
71
+ <li><a href="#method-c-scp_to_shadow">::scp_to_shadow</a></li>
72
+
73
+ </ul>
74
+ </div>
75
+
76
+
77
+ <!-- Included Modules -->
78
+
79
+ </div>
80
+
81
+ <div id="project-metadata">
82
+
83
+
84
+ <div id="fileindex-section" class="section project-section">
85
+ <h3 class="section-header">Files</h3>
86
+ <ul>
87
+
88
+ <li class="file"><a href="./LICENSE.html">LICENSE</a></li>
89
+
90
+ <li class="file"><a href="./README.html">README</a></li>
91
+
92
+ </ul>
93
+ </div>
94
+
95
+
96
+ <div id="classindex-section" class="section project-section">
97
+ <h3 class="section-header">Class/Module Index
98
+ <span class="search-toggle"><img src="./images/find.png"
99
+ height="16" width="16" alt="[+]"
100
+ title="show/hide quicksearch" /></span></h3>
101
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
102
+ <fieldset>
103
+ <legend>Quicksearch</legend>
104
+ <input type="text" name="quicksearch" value=""
105
+ class="quicksearch-field" />
106
+ </fieldset>
107
+ </form>
108
+
109
+ <ul class="link-list">
110
+
111
+ <li><a href="./AppControllerClient.html">AppControllerClient</a></li>
112
+
113
+ <li><a href="./CommonFunctions.html">CommonFunctions</a></li>
114
+
115
+ <li><a href="./Object.html">Object</a></li>
116
+
117
+ </ul>
118
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
119
+ </div>
120
+
121
+
122
+ </div>
123
+ </div>
124
+
125
+ <div id="documentation">
126
+ <h1 class="module">CommonFunctions</h1>
127
+
128
+ <div id="description">
129
+
130
+ <p>A helper module that aggregates functions that are not part of Neptune’s
131
+ core functionality. Specifically, this module contains methods to scp files
132
+ to other machines and the ability to read YAML files, which are often
133
+ needed to determine which machine should be used for computation or to copy
134
+ over code and input files.</p>
135
+
136
+ </div>
137
+
138
+ <!-- Constants -->
139
+
140
+
141
+ <!-- Attributes -->
142
+
143
+
144
+ <!-- Methods -->
145
+
146
+ <div id="public-class-method-details" class="method-section section">
147
+ <h3 class="section-header">Public Class Methods</h3>
148
+
149
+
150
+ <div id="get_from_yaml-method" class="method-detail ">
151
+ <a name="method-c-get_from_yaml"></a>
152
+
153
+
154
+ <div class="method-heading">
155
+ <span class="method-name">get_from_yaml</span><span
156
+ class="method-args">(keyname, tag, required=true)</span>
157
+ <span class="method-click-advice">click to toggle source</span>
158
+ </div>
159
+
160
+
161
+ <div class="method-description">
162
+
163
+ <p>Given the AppScale keyname, reads the associated YAML file and returns the
164
+ contents of the given tag. The required flag (default value is true)
165
+ indicates whether a value must exist for this tag: if set to true, this
166
+ method aborts if the value doesn’t exist or the YAML file is malformed.
167
+ If the required flag is set to false, it returns nil in either scenario
168
+ instead.</p>
169
+
170
+
171
+
172
+ <div class="method-source-code"
173
+ id="get_from_yaml-source">
174
+ <pre>
175
+ <span class="ruby-comment"># File lib/common_functions.rb, line 79</span>
176
+ def self.get_from_yaml(keyname, tag, required=true)
177
+ location_file = <span class="ruby-constant">File</span>.expand_path(&quot;~/.appscale/locations-#{keyname}.yaml&quot;)
178
+
179
+ abort(&quot;An AppScale instance is not currently running with the provided keyname, \&quot;#{keyname}\&quot;.&quot;) unless <span class="ruby-constant">File</span>.exists?(location_file)
180
+
181
+ begin
182
+ tree = <span class="ruby-constant">YAML</span>.load_file(location_file)
183
+ rescue <span class="ruby-constant">ArgumentError</span>
184
+ if required
185
+ abort(<span class="ruby-string">&quot;The yaml file you provided was malformed. Please correct any errors in it and try again.&quot;</span>)
186
+ else
187
+ return nil
188
+ end
189
+ end
190
+
191
+ value = tree[tag]
192
+
193
+ bad_yaml_format_msg = &quot;The file #{location_file} is in the wrong format and doesn't contain a #{tag} tag. Please make sure the file is in the correct format and try again&quot;
194
+ abort(bad_yaml_format_msg) if value.nil? and required
195
+ return value
196
+ end</pre>
197
+ </div>
198
+
199
+ </div>
200
+
201
+
202
+
203
+
204
+ </div>
205
+
206
+
207
+ <div id="get_secret_key-method" class="method-detail ">
208
+ <a name="method-c-get_secret_key"></a>
209
+
210
+
211
+ <div class="method-heading">
212
+ <span class="method-name">get_secret_key</span><span
213
+ class="method-args">(keyname, required=true)</span>
214
+ <span class="method-click-advice">click to toggle source</span>
215
+ </div>
216
+
217
+
218
+ <div class="method-description">
219
+
220
+ <p>Returns the secret key needed for communication with AppScale’s Shadow
221
+ node. This method is a nice frontend to the <a
222
+ href="CommonFunctions.html#method-c-get_from_yaml">get_from_yaml</a>
223
+ function, as the secret is stored in a YAML file.</p>
224
+
225
+
226
+
227
+ <div class="method-source-code"
228
+ id="get_secret_key-source">
229
+ <pre>
230
+ <span class="ruby-comment"># File lib/common_functions.rb, line 104</span>
231
+ def self.get_secret_key(keyname, required=true)
232
+ return <span class="ruby-constant">CommonFunctions</span>.get_from_yaml(keyname, :secret)
233
+ end</pre>
234
+ </div>
235
+
236
+ </div>
237
+
238
+
239
+
240
+
241
+ </div>
242
+
243
+
244
+ <div id="scp_file-method" class="method-detail ">
245
+ <a name="method-c-scp_file"></a>
246
+
247
+
248
+ <div class="method-heading">
249
+ <span class="method-name">scp_file</span><span
250
+ class="method-args">(local_file_loc, remote_file_loc, target_ip, public_key_loc)</span>
251
+ <span class="method-click-advice">click to toggle source</span>
252
+ </div>
253
+
254
+
255
+ <div class="method-description">
256
+
257
+ <p>Performs the actual remote copying of files: given the IP address and other
258
+ information from <a
259
+ href="CommonFunctions.html#method-c-scp_to_shadow">scp_to_shadow</a>,
260
+ attempts to use scp to copy the file over. Aborts if the scp fails, which
261
+ can occur if the network is down, if a bad keyname is provided, or if the
262
+ wrong IP is given.</p>
263
+
264
+
265
+
266
+ <div class="method-source-code"
267
+ id="scp_file-source">
268
+ <pre>
269
+ <span class="ruby-comment"># File lib/common_functions.rb, line 37</span>
270
+ def self.scp_file(local_file_loc, remote_file_loc, target_ip, public_key_loc)
271
+ cmd = <span class="ruby-string">&quot;&quot;</span>
272
+ local_file_loc = <span class="ruby-constant">File</span>.expand_path(local_file_loc)
273
+
274
+ if public_key_loc.class == <span class="ruby-constant">Array</span>
275
+ public_key_loc.each { |key|
276
+ key = <span class="ruby-constant">File</span>.expand_path(key)
277
+ }
278
+
279
+ cmd = &quot;scp -i #{public_key_loc.join(' -i ')} -o StrictHostkeyChecking=no 2&gt;&amp;1 #{local_file_loc} root@#{target_ip}:#{remote_file_loc}&quot;
280
+ else
281
+ public_key_loc = <span class="ruby-constant">File</span>.expand_path(public_key_loc)
282
+ cmd = &quot;scp -i #{public_key_loc} -o StrictHostkeyChecking=no 2&gt;&amp;1 #{local_file_loc} root@#{target_ip}:#{remote_file_loc}&quot;
283
+ end
284
+
285
+ cmd &lt;&lt; <span class="ruby-string">&quot;; echo $? &gt;&gt; ~/.appscale/retval&quot;</span>
286
+
287
+ retval_loc = <span class="ruby-constant">File</span>.expand_path(<span class="ruby-string">&quot;~/.appscale/retval&quot;</span>)
288
+ <span class="ruby-constant">FileUtils</span>.rm_f(retval_loc)
289
+
290
+ begin
291
+ <span class="ruby-constant">Timeout</span>::timeout(-1) { `#{cmd}` }
292
+ rescue <span class="ruby-constant">Timeout</span>::<span class="ruby-constant">Error</span>
293
+ abort(&quot;Remotely copying over files failed. Is the destination machine on and reachable from this computer? We tried the following command:\n\n#{cmd}&quot;)
294
+ end
295
+
296
+ loop {
297
+ break if <span class="ruby-constant">File</span>.exists?(retval_loc)
298
+ sleep(5)
299
+ }
300
+
301
+ retval = (<span class="ruby-constant">File</span>.open(retval_loc) { |f| f.read }).chomp
302
+ abort(&quot;\n\n[#{cmd}] returned #{retval} instead of 0 as expected. Is your environment set up properly?&quot;) if retval != <span class="ruby-string">&quot;0&quot;</span>
303
+ return cmd
304
+ end</pre>
305
+ </div>
306
+
307
+ </div>
308
+
309
+
310
+
311
+
312
+ </div>
313
+
314
+
315
+ <div id="scp_to_shadow-method" class="method-detail ">
316
+ <a name="method-c-scp_to_shadow"></a>
317
+
318
+
319
+ <div class="method-heading">
320
+ <span class="method-name">scp_to_shadow</span><span
321
+ class="method-args">(local_file_loc, remote_file_loc, keyname)</span>
322
+ <span class="method-click-advice">click to toggle source</span>
323
+ </div>
324
+
325
+
326
+ <div class="method-description">
327
+
328
+ <p>Copies a file to the Shadow node (head node) within AppScale. The caller
329
+ specifies the local file location, the destination where the file should be
330
+ placed, and the name of the key to use. The keyname is typically specified
331
+ by the Neptune job given, but defaults to ”appscale” if not provided.</p>
332
+
333
+
334
+
335
+ <div class="method-source-code"
336
+ id="scp_to_shadow-source">
337
+ <pre>
338
+ <span class="ruby-comment"># File lib/common_functions.rb, line 25</span>
339
+ def self.scp_to_shadow(local_file_loc, remote_file_loc, keyname)
340
+ shadow_ip = <span class="ruby-constant">CommonFunctions</span>.get_from_yaml(keyname, :shadow)
341
+ ssh_key = <span class="ruby-constant">File</span>.expand_path(&quot;~/.appscale/#{keyname}.key&quot;)
342
+
343
+ self.scp_file(local_file_loc, remote_file_loc, shadow_ip, ssh_key)
344
+ end</pre>
345
+ </div>
346
+
347
+ </div>
348
+
349
+
350
+
351
+
352
+ </div>
353
+
354
+
355
+ </div>
356
+
357
+
358
+ </div>
359
+
360
+ <div id="validator-badges">
361
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
362
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
363
+ Rdoc Generator</a> 2</small>.</p>
364
+ </div>
365
+
366
+ </body>
367
+ </html>
368
+
data/doc/LICENSE.html ADDED
@@ -0,0 +1,131 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
8
+
9
+ <title>File: LICENSE [RDoc Documentation]</title>
10
+
11
+ <link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet" />
12
+
13
+ <script src="./js/jquery.js" type="text/javascript"
14
+ charset="utf-8"></script>
15
+ <script src="./js/thickbox-compressed.js" type="text/javascript"
16
+ charset="utf-8"></script>
17
+ <script src="./js/quicksearch.js" type="text/javascript"
18
+ charset="utf-8"></script>
19
+ <script src="./js/darkfish.js" type="text/javascript"
20
+ charset="utf-8"></script>
21
+ </head>
22
+
23
+ <body class="file">
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="./index.html">Home</a>
29
+ <a href="./index.html#classes">Classes</a>
30
+ <a href="./index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="project-metadata">
36
+
37
+
38
+ <div id="fileindex-section" class="section project-section">
39
+ <h3 class="section-header">Files</h3>
40
+ <ul>
41
+
42
+ <li class="file"><a href="./LICENSE.html">LICENSE</a></li>
43
+
44
+ <li class="file"><a href="./README.html">README</a></li>
45
+
46
+ </ul>
47
+ </div>
48
+
49
+
50
+ <div id="classindex-section" class="section project-section">
51
+ <h3 class="section-header">Class Index
52
+ <span class="search-toggle"><img src="./images/find.png"
53
+ height="16" width="16" alt="[+]"
54
+ title="show/hide quicksearch" /></span></h3>
55
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
56
+ <fieldset>
57
+ <legend>Quicksearch</legend>
58
+ <input type="text" name="quicksearch" value=""
59
+ class="quicksearch-field" />
60
+ </fieldset>
61
+ </form>
62
+
63
+ <ul class="link-list">
64
+
65
+ <li><a href="./AppControllerClient.html">AppControllerClient</a></li>
66
+
67
+ <li><a href="./CommonFunctions.html">CommonFunctions</a></li>
68
+
69
+ <li><a href="./Object.html">Object</a></li>
70
+
71
+ </ul>
72
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
73
+ </div>
74
+
75
+
76
+ </div>
77
+ </div>
78
+
79
+ <div id="documentation">
80
+
81
+ <h1>begin rdoc</h1>
82
+
83
+ <p>Software License Agreement (BSD License)</p>
84
+
85
+ <p>Copyright © 2008, Regents of the University of California All rights
86
+ reserved.</p>
87
+
88
+ <p>Redistribution and use of this software in source and binary forms, with or
89
+ without modification, are permitted provided that the following conditions
90
+ are met:</p>
91
+ <ul><li>
92
+ <p>Redistributions of source code must retain the above copyright notice, this
93
+ list of conditions and the following disclaimer.</p>
94
+ </li><li>
95
+ <p>Redistributions in binary form must reproduce the above copyright notice,
96
+ this list of conditions and the following disclaimer in the documentation
97
+ and/or other materials provided with the distribution.</p>
98
+ </li></ul>
99
+
100
+ <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS
101
+ IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
102
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
103
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
104
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
105
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
106
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
107
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
108
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
109
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
110
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF THIS SOFTWARE
111
+ ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE LICENSED MATERIAL,
112
+ COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS SOFTWARE, AND IF ANY SUCH
113
+ MATERIAL IS DISCOVERED THE PARTY DISCOVERING IT MAY INFORM DR. CHANDRA
114
+ KRINTZ AT THE UNIVERSITY OF CALIFORNIA, SANTA BARBARA WHO WILL THEN
115
+ ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN THE REGENTS’ DISCRETION
116
+ MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT OF THE CODE SO IDENTIFIED,
117
+ LICENSING OF THE CODE SO IDENTIFIED, OR WITHDRAWAL OF THE CODE CAPABILITY
118
+ TO THE EXTENT NEEDED TO COMPLY WITH ANY SUCH LICENSES OR RIGHTS.</p>
119
+
120
+ <h1>end</h1>
121
+
122
+ </div>
123
+
124
+ <div id="validator-badges">
125
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
126
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
127
+ Rdoc Generator</a> 2</small>.</p>
128
+ </div>
129
+ </body>
130
+ </html>
131
+