From greg@bx.psu.edu Tue Aug 28 09:11:22 2012 From: Greg Von Kuster To: galaxy-dev@lists.galaxyproject.org Subject: Re: [galaxy-dev] Cannot install freebayes with migration script Date: Tue, 28 Aug 2012 09:11:16 -0400 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0779209963561725584==" --===============0779209963561725584== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Philip, Is it possible for you to upgrade your Galaxy instance code base to at least = changeset 2531e085f262 (the human-readable changeset revision is 7503)? I'm = not sure what is causing the behavior in your environment, but I had to upgra= de the tool shed to this rev in order to deal with some issues related to set= ting metadata on repositories in the tool shed, so this may have resulted in = problems installing the somewhat special-case freebayes repository into local= Galaxy instances running the older dist release. You can also choose to wai= t until the next Galaxy release to upgrade if you do not need the freebayes t= ool in your local instance immediately. Sorry for the inconvenience I'm sure this is causing. Greg Von Kuster On Aug 27, 2012, at 4:18 PM, Philip Mabon wrote: > I already had that entry to the tool_data_table_conf.xml but still getting = the same error. >=20 > After some debugging and print statement, I found that it initially finds t= he correct path to the 'sam_fa_indexes' when reading tool_data_table_conf.xml= in Galaxy installation directory but re-reads another file in the shed_tools= dir. > It's the sample tool_data_table_conf.xml from the freebayes directory. > ../shed_tools/toolshed.g2.bx.psu.edu/repos/devteam/freebayes/213a3d6b579a/f= reebayes/tool_data_table_conf.xml.sample. >=20 > Maybe the tool_data_table_conf.xml.sample is invalid? >=20 > Philip Mabon > Senior Bioinformatician > National Microbiology Laboratory > Public Health Agency of Canada=20 >=20 >=20 > On Mon, Aug 27, 2012 at 9:41 AM, Greg Von Kuster wrote: > Hi Phillip, >=20 > I'm not able to reproduce this behavior, so it's difficult to determine wha= t may be the cause. I have not seen others in the community encounter this p= roblem, but that may simply be due to the fact that no one is yet installing = the freebayes tool from the tool shed. >=20 > A possible work-aound is to add the following entry into your local tool_da= ta_table_conf.xml file located in your Galaxy installation directory. >=20 > > line_type, value, path > >
>=20 > Let us know if this still does not correct the problem. >=20 > Greg Von Kuster >=20 > On Aug 27, 2012, at 10:07 AM, Philip Mabon wrote: >=20 >> Any ideas anyone? >>=20 >> Philip Mabon >> Senior Bioinformatician >> National Microbiology Laboratory >> Public Health Agency of Canada=20 >>=20 >>=20 >> On Tue, Aug 21, 2012 at 10:34 AM, Philip Mabon w= rote: >> I just upgrade our galaxy to the latest release : 7487:be81990d148a and r= an the migration tool script for freebayes.=20 >>=20 >> I received the following error: >>=20 >> No handlers could be found for logger "galaxy.tools" >> /opt/galaxy/galaxy_dist/eggs/pysam-0.4.2_kanwei_b10f6e722e9a-py2.6-linux-x= 86_64-ucs4.egg/pysam/__init__.py:1: RuntimeWarning: __builtin__.file size cha= nged, may indicate binary incompatibility >> from csamtools import * >> Repositories will be installed into configured tool_path location ../shed= _tools >> Adding new row (or updating an existing row) for repository 'freebayes' in= the tool_shed_repository table. >> Traceback (most recent call last): >> File "./scripts/migrate_tools/migrate_tools.py", line 21, in >> app =3D MigrateToolsApplication( sys.argv[ 1 ] ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/migrate/common.py", l= ine 150, in __init__ >> install_dependencies=3Dinstall_dependencies ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/install_manager.py", = line 37, in __init__ >> self.install_repository( repository_elem, install_dependencies ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/install_manager.py", = line 262, in install_repository >> install_dependencies=3Dinstall_dependencies ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/install_manager.py", = line 150, in handle_repository_contents >> repository_tools_tups =3D get_repository_tools_tups( self.app, metadat= a_dict ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/util/shed_util.py", line 1077, = in get_repository_tools_tups >> tool =3D app.toolbox.load_tool( os.path.abspath( relative_path ), guid= =3Dguid ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 452, i= n load_tool >> return ToolClass( config_file, root, self.app, guid=3Dguid ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 790, i= n __init__ >> self.parse( root, guid=3Dguid ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 961, i= n parse >> self.parse_inputs( root ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1045, = in parse_inputs >> display, inputs =3D self.parse_input_page( page, enctypes ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1447, = in parse_input_page >> inputs =3D self.parse_input_elem( input_elem, enctypes ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1514, = in parse_input_elem >> case.inputs =3D self.parse_input_elem( case_elem, enctypes, context ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1470, = in parse_input_elem >> group.inputs =3D self.parse_input_elem( elem, enctypes, context ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1540, = in parse_input_elem >> param =3D self.parse_param_elem( elem, enctypes, context ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1552, = in parse_param_elem >> param =3D ToolParameter.build( self, input_elem ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/basic.py", lin= e 176, in build >> return parameter_types[param_type]( tool, param ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/basic.py", lin= e 1361, in __init__ >> ToolParameter.__init__( self, tool, elem ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/basic.py", lin= e 43, in __init__ >> self.validators.append( validation.Validator.from_element( self, elem = ) ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/validation.py"= , line 23, in from_element >> return validator_types[type].from_element( param, elem ) >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/validation.py"= , line 279, in from_element >> tool_data_table =3D param.tool.app.tool_data_tables[ table_name ] >> File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/data/__init__.py", line 2= 5, in __getitem__ >> return self.data_tables.__getitem__( key ) >> KeyError: 'sam_fa_indexes' >>=20 >>=20 >> What happen is that the freebayes itself installs correctly into the shed_= tools/toolshed.g2.bx.psu.edu/repos/devteam/* but the dependency on samtools 1= .1.8 fails. >>=20 >> The value 'sam_fa_indexes' is present in the tool_data_table_conf.xml and= I know it works since all my samtools are functional. >>=20 >> The status column for the freebayes entry in the database is 'Cloning'.=20 >>=20 >> I get the same error if I try to install freebayes thru the web front end.= ( Had to delete the row in the db and remove the freebayes install directory) >>=20 >> Any ideas Greg? >>=20 >> Thanks! >>=20 >> Philip Mabon (Takadonet) >> Senior Bioinformatician >> National Microbiology Laboratory >> Public Health Agency of Canada >>=20 >> ___________________________________________________________ >> Please keep all replies on the list by using "reply all" >> in your mail client. To manage your subscriptions to this >> and other Galaxy lists, please use the interface at: >>=20 >> http://lists.bx.psu.edu/ >=20 >=20 > ___________________________________________________________ > Please keep all replies on the list by using "reply all" > in your mail client. To manage your subscriptions to this > and other Galaxy lists, please use the interface at: >=20 > http://lists.bx.psu.edu/ --===============0779209963561725584== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" MIME-Version: 1.0 PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5IHN0eWxlPSJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IC13 ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTsgLXdlYmtpdC1saW5lLWJyZWFrOiBhZnRlci13aGl0ZS1z cGFjZTsgIj5QaGlsaXAsPGRpdj48YnI+PC9kaXY+PGRpdj5JcyBpdCBwb3NzaWJsZSBmb3IgeW91 IHRvIHVwZ3JhZGUgeW91ciBHYWxheHkgaW5zdGFuY2UgY29kZSBiYXNlIHRvIGF0IGxlYXN0IGNo YW5nZXNldCZuYnNwOzI1MzFlMDg1ZjI2MiAodGhlIGh1bWFuLXJlYWRhYmxlIGNoYW5nZXNldCBy ZXZpc2lvbiBpcyA3NTAzKT8gJm5ic3A7SSdtIG5vdCBzdXJlIHdoYXQgaXMgY2F1c2luZyB0aGUg YmVoYXZpb3IgaW4geW91ciBlbnZpcm9ubWVudCwgYnV0IEkgaGFkIHRvIHVwZ3JhZGUgdGhlIHRv b2wgc2hlZCB0byB0aGlzIHJldiBpbiBvcmRlciB0byBkZWFsIHdpdGggc29tZSBpc3N1ZXMgcmVs YXRlZCB0byBzZXR0aW5nIG1ldGFkYXRhIG9uIHJlcG9zaXRvcmllcyBpbiB0aGUgdG9vbCBzaGVk LCBzbyB0aGlzIG1heSBoYXZlIHJlc3VsdGVkIGluIHByb2JsZW1zIGluc3RhbGxpbmcgdGhlIHNv bWV3aGF0IHNwZWNpYWwtY2FzZSBmcmVlYmF5ZXMgcmVwb3NpdG9yeSBpbnRvIGxvY2FsIEdhbGF4 eSBpbnN0YW5jZXMgcnVubmluZyB0aGUgb2xkZXIgZGlzdCByZWxlYXNlLiAmbmJzcDtZb3UgY2Fu IGFsc28gY2hvb3NlIHRvIHdhaXQgdW50aWwgdGhlIG5leHQgR2FsYXh5IHJlbGVhc2UgdG8gdXBn cmFkZSBpZiB5b3UgZG8gbm90IG5lZWQgdGhlIGZyZWViYXllcyB0b29sIGluIHlvdXIgbG9jYWwg aW5zdGFuY2UgaW1tZWRpYXRlbHkuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5Tb3JyeSBmb3Ig dGhlIGluY29udmVuaWVuY2UgSSdtIHN1cmUgdGhpcyBpcyBjYXVzaW5nLjwvZGl2PjxkaXY+PGJy PjwvZGl2PjxkaXY+R3JlZyBWb24gS3VzdGVyPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+ PGRpdj48ZGl2Pk9uIEF1ZyAyNywgMjAxMiwgYXQgNDoxOCBQTSwgUGhpbGlwIE1hYm9uIHdyb3Rl OjwvZGl2PjxiciBjbGFzcz0iQXBwbGUtaW50ZXJjaGFuZ2UtbmV3bGluZSI+PGJsb2NrcXVvdGUg dHlwZT0iY2l0ZSI+SSBhbHJlYWR5IGhhZCB0aGF0IGVudHJ5IHRvIHRoZSB0b29sX2RhdGFfdGFi bGVfY29uZi54bWwgYnV0IHN0aWxsIGdldHRpbmcgdGhlIHNhbWUgZXJyb3IuPGRpdj48YnI+PC9k aXY+PGRpdj5BZnRlciBzb21lIGRlYnVnZ2luZyBhbmQgcHJpbnQgc3RhdGVtZW50LCBJIGZvdW5k IHRoYXQgaXQmbmJzcDtpbml0aWFsbHkgZmluZHMgdGhlIGNvcnJlY3QgcGF0aCB0byB0aGUgJ3Nh bV9mYV9pbmRleGVzJyB3aGVuIHJlYWRpbmcgdG9vbF9kYXRhX3RhYmxlX2NvbmYueG1sIGluIEdh bGF4eSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGJ1dCByZS1yZWFkcyBhbm90aGVyIGZpbGUgaW4g dGhlIHNoZWRfdG9vbHMgZGlyLjwvZGl2Pgo8ZGl2Pkl0J3MgdGhlIHNhbXBsZSB0b29sX2RhdGFf dGFibGVfY29uZi54bWwgZnJvbSB0aGUgZnJlZWJheWVzIGRpcmVjdG9yeS48L2Rpdj48ZGl2Pi4u L3NoZWRfdG9vbHMvPGEgaHJlZj0iaHR0cDovL3Rvb2xzaGVkLmcyLmJ4LnBzdS5lZHUvcmVwb3Mv ZGV2dGVhbS9mcmVlYmF5ZXMvMjEzYTNkNmI1NzlhL2ZyZWViYXllcy90b29sX2RhdGFfdGFibGVf Y29uZi54bWwuc2FtcGxlIj50b29sc2hlZC5nMi5ieC5wc3UuZWR1L3JlcG9zL2RldnRlYW0vZnJl ZWJheWVzLzIxM2EzZDZiNTc5YS9mcmVlYmF5ZXMvdG9vbF9kYXRhX3RhYmxlX2NvbmYueG1sLnNh bXBsZTwvYT4uPC9kaXY+CjxkaXY+PGJyPjwvZGl2PjxkaXY+TWF5YmUgdGhlICZuYnNwO3Rvb2xf ZGF0YV90YWJsZV9jb25mLnhtbC5zYW1wbGUgaXMgaW52YWxpZD88L2Rpdj48ZGl2Pjxicj48L2Rp dj5QaGlsaXAgTWFib248YnI+U2VuaW9yIEJpb2luZm9ybWF0aWNpYW48YnI+TmF0aW9uYWwgTWlj cm9iaW9sb2d5IExhYm9yYXRvcnk8YnI+UHVibGljIEhlYWx0aCBBZ2VuY3kgb2YgQ2FuYWRhIDxi cj4KPGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+T24gTW9uLCBBdWcgMjcsIDIwMTIg YXQgOTo0MSBBTSwgR3JlZyBWb24gS3VzdGVyIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0i bWFpbHRvOmdyZWdAYngucHN1LmVkdSIgdGFyZ2V0PSJfYmxhbmsiPmdyZWdAYngucHN1LmVkdTwv YT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBz dHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGlu Zy1sZWZ0OjFleCI+CjxkaXYgc3R5bGU9IndvcmQtd3JhcDpicmVhay13b3JkIj5IaSBQaGlsbGlw LDxkaXY+PGJyPjwvZGl2PjxkaXY+SSdtIG5vdCBhYmxlIHRvIHJlcHJvZHVjZSB0aGlzIGJlaGF2 aW9yLCBzbyBpdCdzIGRpZmZpY3VsdCB0byBkZXRlcm1pbmUgd2hhdCBtYXkgYmUgdGhlIGNhdXNl LiAmbmJzcDtJIGhhdmUgbm90IHNlZW4gb3RoZXJzIGluIHRoZSBjb21tdW5pdHkgZW5jb3VudGVy IHRoaXMgcHJvYmxlbSwgYnV0IHRoYXQgbWF5IHNpbXBseSBiZSBkdWUgdG8gdGhlIGZhY3QgdGhh dCBubyBvbmUgaXMgeWV0IGluc3RhbGxpbmcgdGhlIGZyZWViYXllcyB0b29sIGZyb20gdGhlIHRv b2wgc2hlZC48L2Rpdj4KPGRpdj48YnI+PC9kaXY+PGRpdj5BIHBvc3NpYmxlIHdvcmstYW91bmQg aXMgdG8gYWRkIHRoZSBmb2xsb3dpbmcgZW50cnkgaW50byB5b3VyIGxvY2FsIHRvb2xfZGF0YV90 YWJsZV9jb25mLnhtbCBmaWxlIGxvY2F0ZWQgaW4geW91ciBHYWxheHkgaW5zdGFsbGF0aW9uIGRp cmVjdG9yeS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbHQ7 dGFibGUgbmFtZT0ic2FtX2ZhX2luZGV4ZXMiIGNvbW1lbnRfY2hhcj0iIyImZ3Q7PC9kaXY+Cjxk aXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZsdDtjb2x1bW5zJmd0O2xpbmVfdHlwZSwg dmFsdWUsIHBhdGgmbHQ7L2NvbHVtbnMmZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJmx0O2ZpbGUgcGF0aD0idG9vbC1kYXRhL3NhbV9mYV9pbmRpY2VzLmxvYyIgLyZn dDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJmx0Oy90YWJsZSZndDs8L2Rpdj48ZGl2Pjxicj48 L2Rpdj48ZGl2PkxldCB1cyBrbm93IGlmIHRoaXMgc3RpbGwgZG9lcyBub3QgY29ycmVjdCB0aGUg cHJvYmxlbS48L2Rpdj4KPGRpdj48YnI+PC9kaXY+PGRpdj5HcmVnIFZvbiBLdXN0ZXI8L2Rpdj48 ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+PGRpdiBjbGFzcz0iaDUiPjxkaXY+T24gQXVnIDI3LCAy MDEyLCBhdCAxMDowNyBBTSwgUGhpbGlwIE1hYm9uIHdyb3RlOjwvZGl2Pjxicj48L2Rpdj48L2Rp dj48YmxvY2txdW90ZSB0eXBlPSJjaXRlIj48ZGl2PjxkaXYgY2xhc3M9Img1Ij5BbnkgaWRlYXMg YW55b25lPzxkaXY+CjxiciBjbGVhcj0iYWxsIj5QaGlsaXAgTWFib248YnI+U2VuaW9yIEJpb2lu Zm9ybWF0aWNpYW48YnI+TmF0aW9uYWwgTWljcm9iaW9sb2d5IExhYm9yYXRvcnk8YnI+UHVibGlj IEhlYWx0aCBBZ2VuY3kgb2YgQ2FuYWRhIDxicj4KPGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9x dW90ZSI+T24gVHVlLCBBdWcgMjEsIDIwMTIgYXQgMTA6MzQgQU0sIFBoaWxpcCBNYWJvbiA8c3Bh biBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpwaGlsaXBtYWJvbkBnbWFpbC5jb20iIHRh cmdldD0iX2JsYW5rIj5waGlsaXBtYWJvbkBnbWFpbC5jb208L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6 PGJyPjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAu OGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgoKPGRpdiBz dHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlh bCxzYW5zLXNlcmlmIj5JIGp1c3QgdXBncmFkZSBvdXIgZ2FsYXh5IHRvIHRoZSBsYXRlc3QgcmVs ZWFzZSA6Jm5ic3A7IDc0ODc6YmU4MTk5MGQxNDhhIGFuZCByYW4gdGhlIG1pZ3JhdGlvbiB0b29s IHNjcmlwdCBmb3IgZnJlZWJheWVzLiZuYnNwOzwvZGl2Pgo8ZGl2IHN0eWxlPSJjb2xvcjpyZ2Io MzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPjxi cj48L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2Zv bnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPgpJIHJlY2VpdmVkIHRoZSBmb2xsb3dpbmcgZXJy b3I6PC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtm b250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj48YnI+PC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6 cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlm Ij4KPGRpdj5ObyBoYW5kbGVycyBjb3VsZCBiZSBmb3VuZCBmb3IgbG9nZ2VyICJnYWxheHkudG9v bHMiPC9kaXY+PGRpdj4vb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9lZ2dzL3B5c2FtLTAuNC4yX2th bndlaV9iMTBmNmU3MjJlOWEtcHkyLjYtbGludXgteDg2XzY0LXVjczQuZWdnL3B5c2FtL19faW5p dF9fLnB5OjE6IFJ1bnRpbWVXYXJuaW5nOiBfX2J1aWx0aW5fXy5maWxlIHNpemUgY2hhbmdlZCwg bWF5IGluZGljYXRlIGJpbmFyeSBpbmNvbXBhdGliaWxpdHk8L2Rpdj4KCgo8ZGl2PiZuYnNwOyBm cm9tIGNzYW10b29scyBpbXBvcnQgKjwvZGl2PjxkaXY+UmVwb3NpdG9yaWVzIHdpbGwgYmUgaW5z dGFsbGVkIGludG8gY29uZmlndXJlZCB0b29sX3BhdGggbG9jYXRpb24gJm5ic3A7Li4vc2hlZF90 b29sczwvZGl2PjxkaXY+QWRkaW5nIG5ldyByb3cgKG9yIHVwZGF0aW5nIGFuIGV4aXN0aW5nIHJv dykgZm9yIHJlcG9zaXRvcnkgJ2ZyZWViYXllcycgaW4gdGhlIHRvb2xfc2hlZF9yZXBvc2l0b3J5 IHRhYmxlLjwvZGl2PgoKCjxkaXY+VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOjwv ZGl2PjxkaXY+Jm5ic3A7IEZpbGUgIi4vc2NyaXB0cy9taWdyYXRlX3Rvb2xzL21pZ3JhdGVfdG9v bHMucHkiLCBsaW5lIDIxLCBpbiAmbHQ7bW9kdWxlJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNw OyBhcHAgPSBNaWdyYXRlVG9vbHNBcHBsaWNhdGlvbiggc3lzLmFyZ3ZbIDEgXSApPC9kaXY+PGRp dj4mbmJzcDsgRmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29sX3No ZWQvbWlncmF0ZS9jb21tb24ucHkiLCBsaW5lIDE1MCwgaW4gX19pbml0X188L2Rpdj4KCgo8ZGl2 PiZuYnNwOyAmbmJzcDsgaW5zdGFsbF9kZXBlbmRlbmNpZXM9aW5zdGFsbF9kZXBlbmRlbmNpZXMg KTwvZGl2PjxkaXY+Jm5ic3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxh eHkvdG9vbF9zaGVkL2luc3RhbGxfbWFuYWdlci5weSIsIGxpbmUgMzcsIGluIF9faW5pdF9fPC9k aXY+PGRpdj4mbmJzcDsgJm5ic3A7IHNlbGYuaW5zdGFsbF9yZXBvc2l0b3J5KCByZXBvc2l0b3J5 X2VsZW0sIGluc3RhbGxfZGVwZW5kZW5jaWVzICk8L2Rpdj4KCgo8ZGl2PiZuYnNwOyBGaWxlICIv b3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xfc2hlZC9pbnN0YWxsX21hbmFn ZXIucHkiLCBsaW5lIDI2MiwgaW4gaW5zdGFsbF9yZXBvc2l0b3J5PC9kaXY+PGRpdj4mbmJzcDsg Jm5ic3A7IGluc3RhbGxfZGVwZW5kZW5jaWVzPWluc3RhbGxfZGVwZW5kZW5jaWVzICk8L2Rpdj48 ZGl2PiZuYnNwOyBGaWxlICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xf c2hlZC9pbnN0YWxsX21hbmFnZXIucHkiLCBsaW5lIDE1MCwgaW4gaGFuZGxlX3JlcG9zaXRvcnlf Y29udGVudHM8L2Rpdj4KCgo8ZGl2PiZuYnNwOyAmbmJzcDsgcmVwb3NpdG9yeV90b29sc190dXBz ID0gZ2V0X3JlcG9zaXRvcnlfdG9vbHNfdHVwcyggc2VsZi5hcHAsIG1ldGFkYXRhX2RpY3QgKTwv ZGl2PjxkaXY+Jm5ic3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxheHkv dXRpbC9zaGVkX3V0aWwucHkiLCBsaW5lIDEwNzcsIGluIGdldF9yZXBvc2l0b3J5X3Rvb2xzX3R1 cHM8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgdG9vbCA9IGFwcC50b29sYm94LmxvYWRfdG9vbCgg b3MucGF0aC5hYnNwYXRoKCByZWxhdGl2ZV9wYXRoICksIGd1aWQ9Z3VpZCApPC9kaXY+CgoKPGRp dj4mbmJzcDsgRmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9f X2luaXRfXy5weSIsIGxpbmUgNDUyLCBpbiBsb2FkX3Rvb2w8L2Rpdj48ZGl2PiZuYnNwOyAmbmJz cDsgcmV0dXJuIFRvb2xDbGFzcyggY29uZmlnX2ZpbGUsIHJvb3QsIHNlbGYuYXBwLCBndWlkPWd1 aWQgKTwvZGl2PjxkaXY+Jm5ic3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9n YWxheHkvdG9vbHMvX19pbml0X18ucHkiLCBsaW5lIDc5MCwgaW4gX19pbml0X188L2Rpdj4KCgo8 ZGl2PiZuYnNwOyAmbmJzcDsgc2VsZi5wYXJzZSggcm9vdCwgZ3VpZD1ndWlkICk8L2Rpdj48ZGl2 PiZuYnNwOyBGaWxlICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL19f aW5pdF9fLnB5IiwgbGluZSA5NjEsIGluIHBhcnNlPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IHNl bGYucGFyc2VfaW5wdXRzKCByb290ICk8L2Rpdj48ZGl2PiZuYnNwOyBGaWxlICIvb3B0L2dhbGF4 eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5IiwgbGluZSAxMDQ1LCBp biBwYXJzZV9pbnB1dHM8L2Rpdj4KCgo8ZGl2PiZuYnNwOyAmbmJzcDsgZGlzcGxheSwgaW5wdXRz ID0gc2VsZi5wYXJzZV9pbnB1dF9wYWdlKCBwYWdlLCBlbmN0eXBlcyApPC9kaXY+PGRpdj4mbmJz cDsgRmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9fX2luaXRf Xy5weSIsIGxpbmUgMTQ0NywgaW4gcGFyc2VfaW5wdXRfcGFnZTwvZGl2PjxkaXY+Jm5ic3A7ICZu YnNwOyBpbnB1dHMgPSBzZWxmLnBhcnNlX2lucHV0X2VsZW0oIGlucHV0X2VsZW0sIGVuY3R5cGVz ICk8L2Rpdj4KCgo8ZGl2PiZuYnNwOyBGaWxlICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIv Z2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5IiwgbGluZSAxNTE0LCBpbiBwYXJzZV9pbnB1dF9lbGVt PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IGNhc2UuaW5wdXRzID0gc2VsZi5wYXJzZV9pbnB1dF9l bGVtKCBjYXNlX2VsZW0sIGVuY3R5cGVzLCBjb250ZXh0ICk8L2Rpdj48ZGl2PiZuYnNwOyBGaWxl ICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5Iiwg bGluZSAxNDcwLCBpbiBwYXJzZV9pbnB1dF9lbGVtPC9kaXY+CgoKPGRpdj4mbmJzcDsgJm5ic3A7 IGdyb3VwLmlucHV0cyA9IHNlbGYucGFyc2VfaW5wdXRfZWxlbSggZWxlbSwgZW5jdHlwZXMsIGNv bnRleHQgKTwvZGl2PjxkaXY+Jm5ic3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xp Yi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkiLCBsaW5lIDE1NDAsIGluIHBhcnNlX2lucHV0X2Vs ZW08L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgcGFyYW0gPSBzZWxmLnBhcnNlX3BhcmFtX2VsZW0o IGVsZW0sIGVuY3R5cGVzLCBjb250ZXh0ICk8L2Rpdj4KCgo8ZGl2PiZuYnNwOyBGaWxlICIvb3B0 L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5IiwgbGluZSAx NTUyLCBpbiBwYXJzZV9wYXJhbV9lbGVtPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IHBhcmFtID0g VG9vbFBhcmFtZXRlci5idWlsZCggc2VsZiwgaW5wdXRfZWxlbSApPC9kaXY+PGRpdj4mbmJzcDsg RmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJz L2Jhc2ljLnB5IiwgbGluZSAxNzYsIGluIGJ1aWxkPC9kaXY+CgoKPGRpdj4mbmJzcDsgJm5ic3A7 IHJldHVybiBwYXJhbWV0ZXJfdHlwZXNbcGFyYW1fdHlwZV0oIHRvb2wsIHBhcmFtICk8L2Rpdj48 ZGl2PiZuYnNwOyBGaWxlICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xz L3BhcmFtZXRlcnMvYmFzaWMucHkiLCBsaW5lIDEzNjEsIGluIF9faW5pdF9fPC9kaXY+PGRpdj4m bmJzcDsgJm5ic3A7IFRvb2xQYXJhbWV0ZXIuX19pbml0X18oIHNlbGYsIHRvb2wsIGVsZW0gKTwv ZGl2PgoKCjxkaXY+Jm5ic3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxh eHkvdG9vbHMvcGFyYW1ldGVycy9iYXNpYy5weSIsIGxpbmUgNDMsIGluIF9faW5pdF9fPC9kaXY+ PGRpdj4mbmJzcDsgJm5ic3A7IHNlbGYudmFsaWRhdG9ycy5hcHBlbmQoIHZhbGlkYXRpb24uVmFs aWRhdG9yLmZyb21fZWxlbWVudCggc2VsZiwgZWxlbSApICk8L2Rpdj48ZGl2PiZuYnNwOyBGaWxl ICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL3BhcmFtZXRlcnMvdmFs aWRhdGlvbi5weSIsIGxpbmUgMjMsIGluIGZyb21fZWxlbWVudDwvZGl2PgoKCjxkaXY+Jm5ic3A7 ICZuYnNwOyByZXR1cm4gdmFsaWRhdG9yX3R5cGVzW3R5cGVdLmZyb21fZWxlbWVudCggcGFyYW0s IGVsZW0gKTwvZGl2PjxkaXY+Jm5ic3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xp Yi9nYWxheHkvdG9vbHMvcGFyYW1ldGVycy92YWxpZGF0aW9uLnB5IiwgbGluZSAyNzksIGluIGZy b21fZWxlbWVudDwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyB0b29sX2RhdGFfdGFibGUgPSBwYXJh bS50b29sLmFwcC50b29sX2RhdGFfdGFibGVzWyB0YWJsZV9uYW1lIF08L2Rpdj4KCgo8ZGl2PiZu YnNwOyBGaWxlICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL2RhdGEv X19pbml0X18ucHkiLCBsaW5lIDI1LCBpbiBfX2dldGl0ZW1fXzwvZGl2PjxkaXY+Jm5ic3A7ICZu YnNwOyByZXR1cm4gc2VsZi5kYXRhX3RhYmxlcy5fX2dldGl0ZW1fXygga2V5ICk8L2Rpdj48ZGl2 PktleUVycm9yOiAnc2FtX2ZhX2luZGV4ZXMnPC9kaXY+PC9kaXY+Cgo8ZGl2IHN0eWxlPSJjb2xv cjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2Vy aWYiPgo8YnI+PC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6 MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj48YnI+PC9kaXY+PGRpdiBzdHlsZT0i Y29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5z LXNlcmlmIj4KV2hhdCBoYXBwZW4gaXMgdGhhdCB0aGUgZnJlZWJheWVzIGl0c2VsZiBpbnN0YWxs cyBjb3JyZWN0bHkgaW50byB0aGUmbmJzcDtzaGVkX3Rvb2xzLzxhIGhyZWY9Imh0dHA6Ly90b29s c2hlZC5nMi5ieC5wc3UuZWR1L3JlcG9zL2RldnRlYW0vKiIgc3R5bGU9ImNvbG9yOnJnYigxNyw4 NSwyMDQpIiB0YXJnZXQ9Il9ibGFuayI+dG9vbHNoZWQuZzIuYngucHN1LmVkdS9yZXBvcy9kZXZ0 ZWFtLyo8L2E+Jm5ic3A7YnV0IHRoZSBkZXBlbmRlbmN5IG9uIHNhbXRvb2xzIDEuMS44IGZhaWxz LjwvZGl2PgoKCjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7 Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9y OnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJp ZiI+ClRoZSB2YWx1ZSAnc2FtX2ZhX2luZGV4ZXMnIGlzIHByZXNlbnQgaW4gdGhlJm5ic3A7dG9v bF9kYXRhX3RhYmxlX2NvbmYueG1sICZuYnNwO2FuZCBJIGtub3cgaXQgd29ya3Mgc2luY2UgYWxs IG15IHNhbXRvb2xzIGFyZSBmdW5jdGlvbmFsLjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOnJnYigz NCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+Cjxi cj48L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2Zv bnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPlRoZSBzdGF0dXMgY29sdW1uIGZvciB0aGUgZnJl ZWJheWVzIGVudHJ5IGluIHRoZSBkYXRhYmFzZSBpcyAnQ2xvbmluZycuJm5ic3A7PC9kaXY+PGRp diBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTph cmlhbCxzYW5zLXNlcmlmIj4KCgo8YnI+PC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0 LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj5JIGdldCB0 aGUgc2FtZSBlcnJvciBpZiBJIHRyeSB0byBpbnN0YWxsIGZyZWViYXllcyB0aHJ1IHRoZSB3ZWIg ZnJvbnQgZW5kLiAoIEhhZCB0byBkZWxldGUgdGhlIHJvdyBpbiB0aGUgZGIgYW5kIHJlbW92ZSB0 aGUgZnJlZWJheWVzIGluc3RhbGwgZGlyZWN0b3J5KTwvZGl2PgoKCjxkaXYgc3R5bGU9ImNvbG9y OnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJp ZiI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEz cHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+CkFueSBpZGVhcyBHcmVnPzwvZGl2Pjxk aXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6 YXJpYWwsc2Fucy1zZXJpZiI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwz NCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+ClRoYW5rcyE8 L2Rpdj48YnIgY2xlYXI9ImFsbCIgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXpl OjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+PHNwYW4gc3R5bGU9ImNvbG9yOnJn YigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+ UGhpbGlwIE1hYm9uIChUYWthZG9uZXQpPC9zcGFuPjxiciBzdHlsZT0iY29sb3I6cmdiKDM0LDM0 LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj4KCgo8c3Bh biBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTph cmlhbCxzYW5zLXNlcmlmIj5TZW5pb3IgQmlvaW5mb3JtYXRpY2lhbjwvc3Bhbj48YnIgc3R5bGU9 ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fu cy1zZXJpZiI+CjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4 O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPk5hdGlvbmFsIE1pY3JvYmlvbG9neSBMYWJv cmF0b3J5PC9zcGFuPjxiciBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNw eDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj4KPHNwYW4gc3R5bGU9ImNvbG9yOnJnYigz NCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+UHVi bGljIEhlYWx0aCBBZ2VuY3kgb2YgQ2FuYWRhPC9zcGFuPgo8L2Jsb2NrcXVvdGU+PC9kaXY+PGJy PjwvZGl2PjwvZGl2PjwvZGl2PgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXzxicj5QbGVhc2Uga2VlcCBhbGwgcmVwbGllcyBvbiB0aGUg bGlzdCBieSB1c2luZyAicmVwbHkgYWxsIjxicj5pbiB5b3VyIG1haWwgY2xpZW50LiAmbmJzcDtU byBtYW5hZ2UgeW91ciBzdWJzY3JpcHRpb25zIHRvIHRoaXM8YnI+YW5kIG90aGVyIEdhbGF4eSBs aXN0cywgcGxlYXNlIHVzZSB0aGUgaW50ZXJmYWNlIGF0Ojxicj4KPGJyPiAmbmJzcDs8YSBocmVm PSJodHRwOi8vbGlzdHMuYngucHN1LmVkdS8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbGlzdHMu YngucHN1LmVkdS88L2E+PC9ibG9ja3F1b3RlPjwvZGl2Pjxicj48L2Rpdj48L2Rpdj48L2Jsb2Nr cXVvdGU+PC9kaXY+PGJyPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXzxicj5QbGVhc2Uga2VlcCBhbGwgcmVwbGllcyBvbiB0aGUgbGlz dCBieSB1c2luZyAicmVwbHkgYWxsIjxicj5pbiB5b3VyIG1haWwgY2xpZW50LiAmbmJzcDtUbyBt YW5hZ2UgeW91ciBzdWJzY3JpcHRpb25zIHRvIHRoaXM8YnI+YW5kIG90aGVyIEdhbGF4eSBsaXN0 cywgcGxlYXNlIHVzZSB0aGUgaW50ZXJmYWNlIGF0Ojxicj48YnI+ICZuYnNwOzxhIGhyZWY9Imh0 dHA6Ly9saXN0cy5ieC5wc3UuZWR1LyI+aHR0cDovL2xpc3RzLmJ4LnBzdS5lZHUvPC9hPjwvYmxv Y2txdW90ZT48L2Rpdj48YnI+PC9kaXY+PC9ib2R5PjwvaHRtbD4= --===============0779209963561725584==--