Changing over to finishing the search engine

Changing over to finishing the search engine

am 12.03.2011 23:07:44 von Bill Mudry

For now, I thank those helping me with the=20
strange absence of some UV photos when others
were showing. The problem still exists, so I will=20
get back to it again on another day when some
matters of greater priority are taken care of.

The highest priority of unfinished programming=20
tasks for my TAXA site is finishing the search
engine. There are 4 organizational levels for the=20
wood data but probably 95% of any queries
or interest in the site will be at the species=20
level, the level that defines all woods and at which
the public can relate. It is only those=20
academically minded who would show interest in the
higher botanical levels. Therefore the search=20
engine I have been working on is being designed
to work only on different columns of one table,=20
the 'species' table. All relevant pages and
query reports are dynamically formed.

Once completed, it will totally make access to=20
the huge amount of data far more user friendly
and versatile and become a key cornerstone for the operation of the website.

I am no ace at PHP, more like slow but=20
determined. This has been the most challenging code
I, personally, have had to work on. I started via=20
a simple, one column, one table search
template from www.designplace.org. Mid stream in=20
my efforts, I designed a way to let users
choose what type of search (what column,=20
actually) they wish to use. Recently I was able to
combine that function into the search form successfully.

All search categories work successfully ---- but=20
at present, only the first page of a query.
Page control is accomplished through two PHP_SELF=20
statements, one to advance to the next
page (until the end of the report is finished)=20
and the other to go back a page. At one point,
I had the forward action working right to the=20
last page of a query. Now neither the page=20
advancement nor the page reversing now works past=20
the first page being reported ---- and I am not=20
sure what I messed up ;-( :-[ . After getting the=20
first page showing, pressing either the previous=20
or next button brings out the following preprogrammed statements of:

Sorry, your search: "Pterocarpus"=20
returned zero results (from a genus search)
Couldn't execute query

However, it does not put out a standard PHP error.

If I can get these forward and reverse page=20
actions to work, I expect that the job will be
complete! In case this helps, the two PHP_SELF=20
statements are on lines 478 and 529.
I will list the code for the whole page. There is=20
copious internal documentation and many
"debug" statements to help follow parameter values.

Because of the uncommented debug statements, you=20
can use the actual search page to
follow values .... at:
http://www.prowebcanada.com/taxa/commonname_search.php

Much thanks for any help you can give,

Bill Mudry
Mississauga, Ontario Canada

==================== =====3D=
==================== =====3D=
===================3D

[CODE]
//session_start(); // start up your PHP session!


//$record_counter=3D @$_GET[$record_counter];
//$record_counter =3D $_SESSION['$record_counter']; // Not used=
now.
ECHO "\$record_counter on line 7 is $record_counter
";
$count =3D $record_counter+1;

//$count =3D $_SESSION['$count'];

ECHO "\$count at the top, line 12 is - $count
";

//$_SESSION['$count'] =3D $count;
?>








TAXA: Multicolumn Search
http://www.designplace.org/">
Knowledge Base web designer and author">










//parse_str($_SERVER['QUERY_STRING'], $qs);
//$record_counter =3D$qs['record_counter'];

//$record_counter =3D 14; hard coded as a debug statement

//ECHO "\$count on line 99 is - $count
"; //debug statement

ECHO "\$record_counter on line 95 is -=20
$record_counter
"; //debug statement
?>

Multi Column Search





//querystring =3D"";
//$querystring =3D"";

$newsearch =3D 0 ; //Equals 1 only on a new search request
//ECHO "

\$newsearch on line 111 is $newsearch

";
$submit=3D"";
//ECHO "\Ssubmit, before the form, on line 113 is - $submit
";
If ($submit) {$record_counter =3D 0;}
?>






cellpadding=3D'6'>














Choose=20
which search type you want first


Common names
name=3D"searchtype" />

Botanical names
value=3D'botanical names' name=3D"searchtype" />

Genus
/>

Location
" />

Description
name=3D"searchtype" />

Enter a Search String: 

name=3D"querystring" />   
value=3D"1">
name=3D"submit" value=3D"Start Search" />








$submit =3D $_GET["submit"];
ECHO "\$submit on line 179 is - $submit
";

$newsearch =3D $_GET["newsearch"];
//ECHO "\$newsearch just past the form on line 180 is - $newsearch
";

IF ($newsearch=3D1) {$record_counter=3D0;};
ECHO "\$record_counter on line 185 is - $record_counter
";
/*
==================== =====3D=
==================== =====3D=
==================== =====3D
XXXXXXXXXXX GET THE SEARCH TYPE AND SEARCH STRING FROM THE FORM XXXXXXXXXXX
==================== =====3D=
==================== =====3D=
==================== =====3D
*/
$searchtype =3D $_GET['searchtype'] ;
$searchtype =3D trim($searchtype); //trim=20
whitespace from the stored variable

//ECHO "On line 192, \$searchtype is -=20
$searchtype
"; // Debug statement

$querystring =3D @$_GET['querystring'] ;
$querystring =3D trim($querystring);=20
//trim whitespace from the stored variable

//=20
==================== =====3D=
==================== =====3D=
==================== =====3D=
==========
// REASSURE USER OF THEIR CHOICES. (ALSO GOOD FOR DEBUGGING).
If (!empty($searchtype))
{
ECHO " align=3D'center'>searching under $searchtype for:=20
"" . $querystring . """;
}

//ECHO "Line 204 - \$searchtype=20
is - $searchtype
"; //debug statement
/*
==================== =====3D=
==================== =====3D=
==================== =====3D=
====
XXXXXXXXXXXXXXXXX TRANSLATION OF SEARCH TYPE TO=20
COLUMN NAME XXXXXXXXXXXXXXXXX
==================== =====3D=
==================== =====3D=
==================== =====3D=
====
*/

$searchfield =3D "";
//ECHO "Line 196 - \$searchtype is -=20
$searchtype
"; // Debug statement

switch ($searchtype) {
case "common names":
$searchfield =3D trim("species_commonname");
//ECHO "
common names - $searchfield
\n";
break;
case "botanical names":
$searchfield =3D trim("species_name");
//ECHO "
botanical=20
names - $searchfield
\n";
break;
case "genus":
$searchfield =3D trim("genus_name");
//ECHO "
genus -=20
$searchfield
\n";
break;
case "location":
$searchfield =3D trim("location");
//ECHO "
location -=20
$searchfield
\n";
break;
case "description":
$searchfield =3D trim("species_description");
//ECHO "
description=20
- $searchfield
\n";
break;
default: If (!isset($searchfield)) {
ECHO "Please choose a search type first";
}
}
/*
==================== =====3D=
==================== =====3D=
==================== =====3D=
====
XXXXXXXXXXXXX END OF TRANSLATION OF SEARCH TYPE TO COLUMN NAME =
XXXXXXXXXXXXXX
==================== =====3D=
==================== =====3D=
==================== =====3D=
====
*/


// Get the search variable from URL. Old=20
designations were $var =3D @$_GET['q'] ;

$newquerystring =3D @$_GET['querystring'] ;
$querystring =3D trim($newquerystring); //trim=20
whitespace from the stored variable

$count =3D $record_counter +1;
$newsearch =3D @$_GET['newsearch'] ;
ECHO "\$newsearch on line 255 is $newsearch";

if ($newsearch > 0) {$record_counter=3D0;};

=
/*===================3D= 3D=====
==================== =====3D=
====================
XXXXXXXXXXXXX SET THE NUMBER OF RECORDS PER PAGE HERE =
XXXXXXXXXXXXXX
=
==================== =====3D=
==================== =====3D=
===================3D*/
$limit=3D'30';

// check for an empty string and display a message.
if ($querystring == "")
{
ECHO "

Please enter a search string...

";
exit;
}

// check for a search parameter
if (!isset($newquerystring))
{
ECHO "

We dont seem to have a search parameter!

";
exit;
}

/*===================3D= 3D=====
==================== =====3D=
==================== =====3D=
===============3D
XXXXXXXXXXXXXXXXXXXXXXXXXXX Connect to the=20
TAXA Database XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
=
==================== =====3D=
==================== =====3D=
==================== =====3D=
==============*/

include ("connecttotaxa.php");
$connection =3D mysql_connect($hostname, $username, $password)
or die("Unable to connect to database server");


//specify database ** EDIT REQUIRED HERE **
mysql_select_db("taxa") or die("Unable to select=20
the TAXA database"); //select which database we're using


/*===================3D= 3D=====
==================== =====3D=
========
XXXXXXXXXXXXXXX BUILD THE SQL QUERY XXXXXXXXXXXXXXXXXXXX
==================== =====3D=
==================== =====3D=
=======3D*/

// Build SQL Query
$searchquery =3D "SELECT *
FROM species
WHERE $searchfield like \"%$querystring%\"
order by '$searchfield'";

$numresults=3Dmysql_query($searchquery);


@$numrows=3Dmysql_num_rows($numresults);

/*===================3D= 3D=====
==================== =====3D=
==================== =====3D=
==================== =3D
XXXXXXXXXXXXXXX TEST FOR ZERO RESULTS AND=20
PRINT A MESSAGE OF THAT IF TRUE XXXXXXXXXXXXXXXXXXXX
==================== =====3D=
==================== =====3D=
==================== =====3D=
==================== =3D*/
if ($numrows == 0)
{
ECHO "

Search Results

";
ECHO "

Sorry, your search:=20
"" . $querystring. "" returned zero results

";
}

/*===================3D= 3D=====
==================== =====3D=
========
// $record_counter is the record counter for the present record
// next determine if s has been passed to script, if not use 0
==================== =====3D=
==================== =====3D=
=======3D*/

if (empty($s)) {
$record_counter=3D0;
}

/*===================3D= 3D=====
==================== =====3D=
==================== =====3D=
=3D
XXXXXXXXXXXXXXX QUERY THE DATABASE TO GET THE RESULTS =
XXXXXXXXXXXXXXXXXXXX
==================== =====3D=
==================== =====3D=
==================== =====3D*=
/

// get results
$searchquery .=3D " limit $record_counter,$limit";
$result =3D mysql_query($searchquery) or die("Couldn't execute query");

/*===================3D= 3D=====
==================== =====3D=
==================== =====3D=
===============3D
XXXXXXXXXXXXXXX ECHO BACK TO THE USER WHAT=20
THEY ASKED TO SEARCH FOR XXXXXXXXXXXXXXXXXXXX
==================== =====3D=
==================== =====3D=
==================== =====3D=
==============*/
ECHO "

You searched for: ""=20
.. $querystring . ""

";

//////////////////////////////////////////////////////////// /////
// ********** REPORTING STARTS HERE ********** //
//////////////////////////////////////////////////////////// /////

/*===================3D= 3D=====
==================== =====3D=
===============3D
XXXXXXXXXXXXXXX SET A TITLE FOR THE REPORT XXXXXXXXXXXXXXXXXXXX
==================== =====3D=
==================== =====3D=
==============*/
ECHO "

Search Results -=20
$numrows references found.

";

// now you can display the results returned

/*===================3D= 3D=====
==================== =====3D=
==================== =====3D
XXXXXXXXXXXXXXX SET UP COLUMN HEADERS FOR THE REPORT =
XXXXXXXXXXXXXXXXXXXX
==================== =====3D=
==================== =====3D=
==================== ====*/

ECHO " cellpadding=3D3 Cellspacing=3D0 bgcolor=3D'white'>";
ECHO "";
ECHO "";

ECHO "";

ECHO "";

ECHO "";

ECHO "";

ECHO "";

if (!isset($count)){$count=3D1;};

ECHO "";
ECHO "";





/*===================3D= 3D=====
==================== =====3D=
=======3D
XXXXXXXXX PRINT OUT RECORDS TILL END OF QUERY XXXXXXXXX

************** WHILE LOOP STARTS HERE ******************
==================== =====3D=
==================== =====3D=
======*/
while ($row=3D mysql_fetch_array($result)) {
$commonname =3D $row["species_commonname"];
$botname =3D $row["species_name"];
$authorities =3D $row["authorities_species"];

$genusname =3D $row["genus_name"];
$location =3D $row["location"];
$comments =3D $row["comments"];

ECHO "";

ECHO "";
ECHO "";

ECHO "";

ECHO "";

ECHO "";

ECHO "";
ECHO "";

$count++ ;
$record_counter++ ; // DOESN'T $record_counter=20
HAVE TO BE INCREMEENTED FOR EACH ROW PRINTED ALSO??
// ANOTHER COPY WORKED A FEW MONTHS AGO=20
WITHOUT IT. iT IS NOT IN THE TEMPLATE.
//ECHO "\$record_counter on line 412 is -=20
$record_counter
"; //debug statement
}


/*===================3D= 3D=====
==================== =====3D=
=======3D
XXXXXXXXX END OF WHILE LOOP. XXXXXXXXX
==================== =====3D=
==================== =====3D=
======*/

////////////////////////////////////////////////////////////
// CLOSE THE REPORT TABLE
////////////////////////////////////////////////////////////
ECHO "";
ECHO "
";
//ECHO "Common Name";
ECHO "Common Name";
ECHO "
";
ECHO "Botanical Name";
ECHO "
";
ECHO "Authorities";
ECHO "
";
ECHO "Genus Name";
ECHO "
";
ECHO "Location";ECHO "
";
ECHO "Comments";
ECHO "
";
//ECHO "\$count is $count
";

ECHO "$count   $commonname
" ;
ECHO "
";
ECHO "";
ECHO "$botname
";
ECHO "

\n";

ECHO "
";
ECHO "$authorities
";
ECHO "
";
ECHO "$genusname
";
ECHO "
";
ECHO "$location
";
ECHO "
";
ECHO "$comments
";
ECHO "
";
ECHO "
";
ECHO "\$record_counter on line 436 at the end of=20
the report loop is - $record_counter
";



// Calculate the current page
$currPage =3D (($record_counter/$limit) + 1);
$pages =3D $currPage; //
ECHO "\$currPage on line 451 is - $currPage
"; //debug statement
ECHO "\$record_counter on line 452 is -=20
$record_counter
"; //debug statement

//break before paging
ECHO "
";

// next we need to do the links to other results

//////////////////////////////////////////////////////////// //////////
// If $record_counter is less than 1, there are=20
no more records to view backwards.
//////////////////////////////////////////////////////////// //////////

// bypass PREV link if s is 0 since there must be=20
at least one more record to display to use a new page.
if ($record_counter>=3D1) {
ECHO "\$record_counter at line 453 is -=20
$record_counter
"; //debug statement
$prevs=3D($record_counter-$limit);
ECHO "\$prevs at line 455 is - $prevs
"; //debug statement

//////////////////////////////////////////////////////////// ////////////////=
//////////////////
// ****** This statement will run the prior=20
page of the report. It is user chosen******
//
//////////////////////////////////////////////////////////// ////////////////=
//////////////////
print "  href=3D\"$PHP_SELF?record_counter=3D$prevs&querystring=3D$qu erystring&search=
field=3D$searchfield\">

<<=20
Previous $limit records

  "; // Page 357

} //END OF PRESENT IF STATEMENT

// calculate number of pages needing links
$pages=3Dintval($numrows/$limit);

//ECHO "\$pages on line 469 is - $pages
"; //debug statement
//ECHO "\$numrows on line 470 is - $numrows
"; //debug statement
//ECHO "\$limit on line 471 is - $limit
"; //debug statement

// $pages now contains int of pages needed unless=20
there is a remainder from division

if ($numrows%$limit) {
// has remainder so add one page
$pages++;
}
//ECHO "\$pages on line 479 is - $pages
"; //debug statement

$remainder =3D ($numrows%$limit);
//ECHO "\$remainder on line 353 is - $remainder
"; //debug statement

ECHO "
";

//$x =3D ($record_counter+$limit)/$limit
//ECHO "\$x on line 478 is - $x
"; //debug statement
ECHO "\$record_counter on line 479 is -=20
$record_counter
"; //debug statement

//ECHO "\$limit on line 490 is - $limit
"; //debug statement
//ECHO "\$pages on line 491 is - $pages
"; //debug statement

// check to see if last page
if (!((($record_counter+$limit)/$limit)==$pages) && $pages!=3D1) {

ECHO "
";

// not last page so give NEXT link
$news=3D$record_counter+$limit;
ECHO "\$record_counter on line 517 is -=20
$record_counter
"; //debug statement
//ECHO "\$limit on line 492 is - $limit
"; //debug statement
//ECHO "\$news on line 493 is - $news
"; //debug statement
//ECHO "
";

////////////////////////////////////////////////////////////
// This statement will run the next page of the report.
// It is user chosen
////////////////////////////////////////////////////////////

//echo " Next 10=
>>
";

ECHO "  href=3D\"$PHP_SELF?record_counter=3D$news&querystring=3D$new querystring&sear=
chfield=3D$searchfield\">

Next=20
$limit records >>

";

ECHO "
";
}
ECHO "\$record_counter on line 534 is -=20
$record_counter
"; //debug statement

$record_counter =3D $news;

ECHO "\$record_counter on line 538 is -=20
$record_counter
"; //debug statement

//$_SESSION['$record_counter'] =3D $record_counter;
//$_SESSION['$count'] =3D $count;

?>







[/CODE]


--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: Changing over to finishing the search engine

am 13.03.2011 04:22:41 von Tommy Pham

T24gU2F0LCBNYXIgMTIsIDIwMTEgYXQgMjowNyBQTSwgQmlsbCBNdWRyeSA8 YmlsbG11ZHJ5QHJv
Z2Vycy5jb20+IHdyb3RlOgo+IEZvciBub3csIEkgdGhhbmsgdGhvc2UgaGVs cGluZyBtZSB3aXRo
IHRoZSBzdHJhbmdlIGFic2VuY2Ugb2Ygc29tZSBVViBwaG90b3MKPiB3aGVu IG90aGVycwo+IHdl
cmUgc2hvd2luZy4gVGhlIHByb2JsZW0gc3RpbGwgZXhpc3RzLCBzbyBJIHdp bGwgZ2V0IGJhY2sg
dG8gaXQgYWdhaW4gb24KPiBhbm90aGVyIGRheSB3aGVuIHNvbWUKPiBtYXR0 ZXJzIG9mIGdyZWF0
ZXIgcHJpb3JpdHkgYXJlIHRha2VuIGNhcmUgb2YuCj4KPiBUaGUgaGlnaGVz dCBwcmlvcml0eSBv
ZiB1bmZpbmlzaGVkIHByb2dyYW1taW5nIHRhc2tzIGZvciBteSBUQVhBIHNp dGUgaXMKPiBmaW5p
c2hpbmcgdGhlIHNlYXJjaAo+IGVuZ2luZS4gVGhlcmUgYXJlIDQgb3JnYW5p emF0aW9uYWwgbGV2
ZWxzIGZvciB0aGUgd29vZCBkYXRhIGJ1dCBwcm9iYWJseSA5NSUKPiBvZiBh bnkgcXVlcmllcwo+
IG9yIGludGVyZXN0IGluIHRoZSBzaXRlIHdpbGwgYmUgYXQgdGhlIHNwZWNp ZXMgbGV2ZWwsIHRo
ZSBsZXZlbCB0aGF0IGRlZmluZXMKPiBhbGwgd29vZHMgYW5kIGF0IHdoaWNo Cj4gdGhlIHB1Ymxp
YyBjYW4gcmVsYXRlLiBJdCBpcyBvbmx5IHRob3NlIGFjYWRlbWljYWxseSBt aW5kZWQgd2hvIHdv
dWxkIHNob3cKPiBpbnRlcmVzdCBpbiB0aGUKPiBoaWdoZXIgYm90YW5pY2Fs IGxldmVscy4gVGhl
cmVmb3JlIHRoZSBzZWFyY2ggZW5naW5lIEkgaGF2ZSBiZWVuIHdvcmtpbmcg b24KPiBpcyBiZWlu
ZyBkZXNpZ25lZAo+IHRvIHdvcmsgb25seSBvbiBkaWZmZXJlbnQgY29sdW1u cyBvZiBvbmUgdGFi
bGUsIHRoZSAnc3BlY2llcycgdGFibGUuIEFsbAo+IHJlbGV2YW50IHBhZ2Vz IGFuZAo+IHF1ZXJ5
IHJlcG9ydHMgYXJlIGR5bmFtaWNhbGx5IGZvcm1lZC4KPgo+IE9uY2UgY29t cGxldGVkLCBpdCB3
aWxsIHRvdGFsbHkgbWFrZSBhY2Nlc3MgdG8gdGhlIGh1Z2UgYW1vdW50IG9m IGRhdGEgZmFyCj4g
bW9yZSB1c2VyIGZyaWVuZGx5Cj4gYW5kIHZlcnNhdGlsZSBhbmQgYmVjb21l IGEga2V5IGNvcm5l
cnN0b25lIGZvciB0aGUgb3BlcmF0aW9uIG9mIHRoZSB3ZWJzaXRlLgo+Cj4g SSBhbSBubyBhY2Ug
YXQgUEhQLCBtb3JlIGxpa2Ugc2xvdyBidXQgZGV0ZXJtaW5lZC4gVGhpcyBo YXMgYmVlbiB0aGUg
bW9zdAo+IGNoYWxsZW5naW5nIGNvZGUKPiBJLCBwZXJzb25hbGx5LCBoYXZl IGhhZCB0byB3b3Jr
IG9uLiBJIHN0YXJ0ZWQgdmlhIGEgc2ltcGxlLCBvbmUgY29sdW1uLCBvbmUK PiB0YWJsZSBzZWFy
Y2gKPiB0ZW1wbGF0ZSBmcm9tIHd3dy5kZXNpZ25wbGFjZS5vcmcuIE1pZCBz dHJlYW0gaW4gbXkg
ZWZmb3J0cywgSSBkZXNpZ25lZCBhCj4gd2F5IHRvIGxldCB1c2Vycwo+IGNo b29zZSB3aGF0IHR5
cGUgb2Ygc2VhcmNoICh3aGF0IGNvbHVtbiwgYWN0dWFsbHkpIHRoZXkgd2lz aCB0byB1c2UuCj4g
UmVjZW50bHkgSSB3YXMgYWJsZSB0bwo+IGNvbWJpbmUgdGhhdCBmdW5jdGlv biBpbnRvIHRoZSBz
ZWFyY2ggZm9ybSBzdWNjZXNzZnVsbHkuCj4KPiBBbGwgc2VhcmNoIGNhdGVn b3JpZXMgd29yayBz
dWNjZXNzZnVsbHkgLS0tLSBidXQgYXQgcHJlc2VudCwgb25seSB0aGUgZmly c3QKPiBwYWdlIG9m
IGEgcXVlcnkuCj4gUGFnZSBjb250cm9sIGlzIGFjY29tcGxpc2hlZCB0aHJv dWdoIHR3byBQSFBf
U0VMRiBzdGF0ZW1lbnRzLCBvbmUgdG8gYWR2YW5jZQo+IHRvIHRoZSBuZXh0 Cj4gcGFnZSAodW50
aWwgdGhlIGVuZCBvZiB0aGUgcmVwb3J0IGlzIGZpbmlzaGVkKSBhbmQgdGhl IG90aGVyIHRvIGdv
IGJhY2sgYQo+IHBhZ2UuIEF0IG9uZSBwb2ludCwKPiBJIGhhZCB0aGUgZm9y d2FyZCBhY3Rpb24g
d29ya2luZyByaWdodCB0byB0aGUgbGFzdCBwYWdlIG9mIGEgcXVlcnkuIE5v dwo+IG5laXRoZXIg
dGhlIHBhZ2UgYWR2YW5jZW1lbnQgbm9yIHRoZSBwYWdlIHJldmVyc2luZyBu b3cgd29ya3MgcGFz
dCB0aGUgZmlyc3QKPiBwYWdlIGJlaW5nIHJlcG9ydGVkIC0tLS0gYW5kIEkg YW0gbm90IHN1cmUg
d2hhdCBJIG1lc3NlZCB1cCA7LSggOi1bIC4gQWZ0ZXIKPiBnZXR0aW5nIHRo ZSBmaXJzdCBwYWdl
IHNob3dpbmcsIHByZXNzaW5nIGVpdGhlciB0aGUgcHJldmlvdXMgb3IgbmV4 dCBidXR0b24KPiBi
cmluZ3Mgb3V0IHRoZSBmb2xsb3dpbmcgcHJlcHJvZ3JhbW1lZCBzdGF0ZW1l bnRzIG9mOgo+Cj4g
wqAgwqAgwqAgwqBTb3JyeSwgeW91ciBzZWFyY2g6ICJQdGVyb2NhcnB1cyIg cmV0dXJuZWQgemVy
byByZXN1bHRzIMKgKGZyb20gYQo+IGdlbnVzIHNlYXJjaCkKPiDCoCDCoCDC oCDCoENvdWxkbid0
IGV4ZWN1dGUgcXVlcnkKPgo+IEhvd2V2ZXIsIGl0IGRvZXMgbm90IHB1dCBv dXQgYSBzdGFuZGFy
ZCBQSFAgZXJyb3IuCj4KPiBJZiBJIGNhbiBnZXQgdGhlc2UgZm9yd2FyZCBh bmQgcmV2ZXJzZSBw
YWdlIGFjdGlvbnMgdG8gd29yaywgSSBleHBlY3QgdGhhdAo+IHRoZSBqb2Ig d2lsbCBiZQo+IGNv
bXBsZXRlISBJbiBjYXNlIHRoaXMgaGVscHMsIHRoZSB0d28gUEhQX1NFTEYg c3RhdGVtZW50cyBh
cmUgb24gbGluZXMgNDc4Cj4gYW5kIDUyOS4KPiBJIHdpbGwgbGlzdCB0aGUg Y29kZSBmb3IgdGhl
IHdob2xlIHBhZ2UuIFRoZXJlIGlzIGNvcGlvdXMgaW50ZXJuYWwKPiBkb2N1 bWVudGF0aW9uIGFu
ZCBtYW55Cj4gImRlYnVnIiBzdGF0ZW1lbnRzIHRvIGhlbHAgZm9sbG93IHBh cmFtZXRlciB2YWx1
ZXMuCj4KPiBCZWNhdXNlIG9mIHRoZSB1bmNvbW1lbnRlZCBkZWJ1ZyBzdGF0 ZW1lbnRzLCB5b3Ug
Y2FuIHVzZSB0aGUgYWN0dWFsIHNlYXJjaAo+IHBhZ2UgdG8KPiBmb2xsb3cg dmFsdWVzIC4uLi4g
YXQ6Cj4gwqAgwqAgwqAgwqBodHRwOi8vd3d3LnByb3dlYmNhbmFkYS5jb20v dGF4YS9jb21tb25u
YW1lX3NlYXJjaC5waHAKPgo+IE11Y2ggdGhhbmtzIGZvciBhbnkgaGVscCB5 b3UgY2FuIGdpdmUs
Cj4KPiBCaWxsIE11ZHJ5Cj4gTWlzc2lzc2F1Z2EsIE9udGFyaW8gQ2FuYWRh Cj4KPgoKQmlsbCwK
CkJlZm9yZSBJIGRpc3NlY3QgeW91ciBjb2RlLCB5b3Ugc2hvdWxkIGZvbGxv dyB0aGUgc3VnZ2Vz
dGlvbnMgaW4gdGhlCnBocC5pbmkgZmlsZSBhcyBwZXIgZW52aXJvbm1lbnQu ICBJZiB5b3UncmUg
Y29kaW5nIG9uIGEgZGV2ZWxvcG1lbnQKYm94IHdoaWNoIHlvdSBzaG91bGQg YmUgZG9pbmcgYW55
IHdheSwgdGhlbiBzZXQgdGhlIGJlbG93IHNldHRpbmdzCmFjY29yZGluZ2x5 IHRvIGluY3JlYXNl
IHlvdXIgY29kaW5nIHNwZWVkIGFuZCByZWR1Y2UgZGVidWdnaW5nIHRpbWUu CgoxKSBXaGF0J3Mg
dGhlIGVycm9yX3JlcG9ydGluZyBzZXQgdG8/CjIpIFdoYXQncyB0aGUgdmFs dWUgb2YgZGlzcGxh
eV9lcnJvcnM/Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KPgo+IFtDT0RFXQo+IDw/cGhwCj4g Ly9zZXNzaW9uX3N0
YXJ0KCk7IC8vIHN0YXJ0IHVwIHlvdXIgUEhQIHNlc3Npb24hCj4KPgo+IMKg IMKgIMKgIMKgLy8k
cmVjb3JkX2NvdW50ZXI9IEAkX0dFVFskcmVjb3JkX2NvdW50ZXJdOwo+IMKg IMKgIMKgIMKgLy8k
cmVjb3JkX2NvdW50ZXIgPSAkX1NFU1NJT05bJyRyZWNvcmRfY291bnRlcidd OyDCoC8vIE5vdCB1
c2VkIG5vdy4KPiDCoCDCoCDCoCDCoEVDSE8gIlwkcmVjb3JkX2NvdW50ZXIg b24gbGluZSA3IGlz
ICRyZWNvcmRfY291bnRlcjxiciAvPiI7Cj4gwqAgwqAgwqAgwqAkY291bnQg PSAkcmVjb3JkX2Nv
dW50ZXIrMTsKPgo+IMKgIMKgIMKgIMKgLy8kY291bnQgPSAkX1NFU1NJT05b JyRjb3VudCddOwo+
Cj4gwqAgwqAgwqAgwqBFQ0hPICJcJGNvdW50IGF0IHRoZSB0b3AsIGxpbmUg MTIgaXMgLSAkY291
bnQ8YnIgLz4iOwo+Cj4gLy8kX1NFU1NJT05bJyRjb3VudCddID0gJGNvdW50 Owo+ID8+Cj4KPgo+
IDxIVE1MPgo+IDxIRUFEPgo+IDwhLS0tCj4gIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMj
IyMjIyMKPiBUaGlzIHBhZ2UgY29udGFpbnMgdGhlIG1ham9yIHNlYXJjaCBm dW5jdGlvbnMgZm9y
IFRoZSBUQVhBIFdvb2QgS25vd2xlZGdlCj4gQmFzZS4KPiBUaGUgZmlsZSBp cyBjb21tb25uYW1l
X3NlYXJjaC5waHAuCj4gSXQgaXMgY2FsbGVkIGZyb20gdGhlIG1haW4gbWVu dS4KPiBJbXBvcnRh
bnQgcGFyYW1ldGVycyBpbmNsdWRlOgo+IMKgIMKgIMKgIMKgJHNlYXJjaHR5 cGUgLSBpcyB0aGUg
bWV0aG9kIHVzZXJzIGNob29zZSB0byBkbyBhIHNlYXJjaCBhcyB0aGUKPiBF bmdsaXNoIHdvcmRz
Cj4gwqAgwqAkc2VhcmNoZmllbGQgLSBFYWNoIG1ldGhvZCB0cmFuc2xhdGVz IGludG8gdGhlIGFj
dHVhbCBmaWVsZCBpbiB0aGUKPiAnc3BlY2llcycgdGFibGUKPiDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCB1c2VkIHRvIGNvbXBsZXRlIHRoZSBxdWVy eQo+IMKgIMKgIMKg
IMKgJHF1ZXJ5c3RyaW5nIC0gaXMgdGhlIGFjdHVhbCBxdWVyeSBzdHJpbmcg c3VibWl0dGVkIGJ5
IHRoZSB1c2VyLgo+IMKgIMKgJHJlY29yZF9jb3VudGVyIGlzIHRoZSByZWNv cmQgY291bnRlciBm
b3IgdGhlIGxhc3QgcmVjb3JkIG9mIHRoZSBwcmVzZW50Cj4gcGFnZS4gRmly c3QgYXBwZWFycyBp
biBsaW5lIDE0Ngo+IMKgIMKgIMKgIMKgJG5ld3F1ZXJ5c3RyaW5nIC0gVGhl IG5ldyBxdWVyeSBz
dHJpbmcgdmFsdWUgZm9tIHRoZSBmb3JtIGJ5IHVzaW5nCj4gJF9HRVRbXQo+ IMKgIMKgIMKgIMKg
JGxpbWl0IC0gVGhlIGFsbG93ZWQgbnVtYmVyIG9mIHJlY29yZHMgcmVwb3J0 ZWQgYmVmb3JlIHN0
YXJ0aW5nIGEgbmV3Cj4gcGFnZQo+IMKgIMKgY29ubmVjdHRvdGF4YS5waHAg LSBob2xkcyB0aGUg
dmFsdWVzIG5lZWRlZCB0byBjb25uZWN0IHRvIHRoZSB0YXhhCj4gZGF0YWJh c2UKPiDCoCDCoCDC
oCDCoCRzZWFyY2hmaWVsZCAtIFRoZSB2YXJpYWJsZSB0byBpbmRpY2F0ZSB3 aGF0IGZpZWxkIHRv
IHNlYXJjaCBvbi4KPiBSaWdodCBub3cgdGhlcmUgaXMgb25seSBvbmUsCj4g wqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBidXQgY29kaW5nIGhhcyBhbHJlYWR5 IGJlZW4gd29ya2Vk
IG91dCBmb3IgbGV0dGluZwo+IHVzZXJzIGNob29zZSBmcm9tIGEgbGlzdCBv Zgo+IMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgY29sdW1ucy4gVG8gYmUgYWRkZWQgaW4gdGhlIG5l eHQgdmVyc2lvbgo+
IMKgIMKgIMKgIMKgJCRudW1yb3dzIC0gVGhlIHRvdGFsIG51bWJlciBvZiBy b3dzIGluIHRoZSBw
cmVzZW50IHF1ZXJ5IHJlc3VsdAo+IMKgIMKgJGNvdW50IC0gaXMgdGhlIGxv d2VyIHJlY29yZCBu
dW1iZXIgaW4gdGhlIG5leHQgdXBjb21pbmcgcGFnZSAoaWYgb25lIGlzCj4g bmVlZGVkKQo+IMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgSXQgd2lsbCBhbHdheXMgYmUgb25lIG1v cmUgdGhhbiAkcmVj
b3JkX2NvdW50ZXIgd2hpY2ggaG9sZHMKPiB0aGUgaGlnaGVzdCByZWNvcmQg bnVtYmVyIGZvciB0
aGUKPiDCoCDCoCDCoCDCoCDCoCDCoGN1dXJlbnQgcGFnZS4KPiDCoCDCoCDC oCDCoCRjdXJyUGFn
ZSAtIENhbGN1bGF0ZXMgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIuCj4gwqAg wqAgwqAgwqAkUGFn
ZSAtIExpa2UgJGN1cnJQYWdlLiBJIGFtIG5vdCBzdXJlIHlldCB3aGF0IHRo ZSByZWxhdGlvbnNo
aXAKPiBiZXR3ZWVuIHRoZW0gaXMuCj4gwqAgwqAgwqAgwqAkcmVtYWluZGVy IC0gVGhlIHF1ZXJ5
IHNob3dzIGluIGJsb2NrcyBvZiAkbGltaXQgcmVjb3Jkcy4gSWYgdGhlCj4g dG90YWwgbnVtYmVy
IG9mIHJlY29yZHMKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRvIHJlcG9y dCBpcyBkaXZpZGVk
IGJ5IHRoZSBibG9jayBzaXplICgkbGltaXQpIGFuZCB0aGVyZSBpcwo+IGEg cmVtYWluZGVyLCB0
aGVuCj4gwqAgwqAgwqAgwqAgwqAgwqBhIG5ldyBwYWdlIG5lZWRzIHRvIGJl IHN0YXJ0ZWQgdG8g
ZmluaXNoIG9mZiB0aGUgbGFzdCByZWNvcmRzIGluCj4gdGhlIHJlcG9ydC4K PiDCoCDCoCDCoCDC
oCRuZXdzIC0gSXMgdGhlIGhpZ2hlc3QgcmVjb3JkIG51bWJlciB0byB1c2Ug Zm9yIHRoZSBuZXh0
IHBhZ2UuCj4gKC4uLi4uIG9yIHRoaXMgaXMgd2hhdCBJIGludGVycHJldGVk IHNvIGZhcikuCj4K
PiBUaGlzIHNlYXJjaCBlbmdpbmUgd2FzIGFkYXB0ZWQgZnJvbSB0aGUgdGVt cGxhdGUgc2VhcmNo
IGVuZ2luZSBhdAo+IMKgIMKgIMKgIMKgaHR0cDovL3d3dy5kZXNpZ25wbGFj ZS5vcmcvc2NyaXB0
cy5waHA/cGFnZT0xJmNfaWQ9MjUKPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMj
Iwo+IC0tLT4KPgo+Cj4KPiA8VElUTEU+VEFYQTogTXVsdGljb2x1bW4gU2Vh cmNoPC9USVRMRT4K
PiA8TUVUQSBuYW1lPSJUZW1wbGF0ZSBhdXRob3IiIGNvbnRlbnQ9IlN0ZXZl IFIsIGh0dHA6Ly93
d3cuZGVzaWducGxhY2Uub3JnLyI+Cj4gPE1FVEEgbmFtZT0iQmlsbCBNdWRy eSIgQ29udGVudD0i
VEFYQSBXb29kIEtub3dsZWRnZSBCYXNlIHdlYiBkZXNpZ25lciBhbmQKPiBh dXRob3IiPgo+IDxT
VFlMRSB0eXBlPSJ0ZXh0L2NzcyI+Cj4gwqAgwqAgwqAgwqBib2R5IHsKPiDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoGJhY2tncm91bmQtY29sb3I6J2l2b3J5JzsgY29sb3I6ICdu YXZ5JzsgZm9udC1m
YW1pbHk6Cj4gdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTJweDsKPiDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiDCoCDCoCDCoCDCoC5zbWFsbHRl eHQge2ZvbnQtc2l6
ZTogMTBweDt9Cj4gwqAgwqAgwqAgwqAubWVkaXVtdGV4dCB7Zm9udC1zaXpl OiAxM3B4O30KPiDC
oCDCoCDCoCDCoC5sYXJnZXJ0ZXh0IHtmb250LXNpemU6IDEuNWVtfTsKPiDC oCDCoCDCoCDCoC5y
ZXBvcnRoZWFkZXIge2ZvbnQtc2l6ZTogMjBweDsgZm9udC13ZWlnaHQ6NzAw O30KPgo+IMKgIMKg
IMKgIMKgdGQge2ZvbnQtc2l6ZTowLjhlbTsgYmFja2dyb3VuZC1jb2xvcjog JyNFRkRGQ0YnfQo+
Cj4gwqAgwqAgwqAgwqBIMSB7Zm9udC1zaXplOjJlbX07IMKgLyogZGlzcGxh eWVkIGF0IDI0cHgg
Ki8KPiDCoCDCoCDCoCDCoEgyIHtmb250LXNpemU6MS41ZW19OyDCoC8qIGRp c3BsYXllZCBhdCAx
OHB4ICovCj4gwqAgwqAgwqAgwqBIMyB7Zm9udC1zaXplOjEuMjVlbX07IMKg LyogZGlzcGxheWVk
IGF0IDE1cHggKi8KPiDCoCDCoCDCoCDCoEg0IHtmb250LXNpemU6MWVtfTsg wqAvKiBkaXNwbGF5
ZWQgYXQgMTJweCAqLwo+Cj4gwqAgwqAgwqAgwqAjZm9ybWJveCB7ZmxvYXQ6 IGxlZnQ7IGJvcmRl
cjozcHggZG90dGVkCj4gcmVkO2JhY2tncm91bmQtY29sb3I6InNreWJsdWUi O30KPgo+IDwvU1RZ
TEU+Cj4KPiA8L0hFQUQ+Cj4gPCEtLSDDgsKpIGh0dHA6Ly93d3cuZGVzaWdu cGxhY2Uub3JnLyAo
Rm9yIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHN0YXJ0IHRoaXMKPiBkZXNpZ24p IC0tPgo+Cj4gPCEt
LQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gWFhYWFhY WFhYWFhYWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWCBFTkQgT0YgSEVBREVSCj4gwqBYWFhYWFhYWFhY WFhYWFhYWFhYWFhY
WFhYWFhYWFhYWFhYWFhYCj4KPiBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhY WFhYWFhYWFhYIFNU
QVJUIE9GIEJPRFkKPiDCoFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhY WFhYWFhYWFgKPiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IC0tPgo+Cj4gPEJP RFk+Cj4KPiDCoDw/
cGhwCj4KPiDCoCDCoCDCoCDCoC8vcGFyc2Vfc3RyKCRfU0VSVkVSWydRVUVS WV9TVFJJTkcnXSwg
JHFzKTsKPiDCoCDCoCDCoCDCoC8vJHJlY29yZF9jb3VudGVyID0kcXNbJ3Jl Y29yZF9jb3VudGVy
J107Cj4KPiDCoCDCoCDCoCDCoC8vJHJlY29yZF9jb3VudGVyID0gMTQ7IGhh cmQgY29kZWQgYXMg
YSBkZWJ1ZyBzdGF0ZW1lbnQKPgo+IMKgLy9FQ0hPICJcJGNvdW50IG9uIGxp bmUgOTkgaXMgLSAk
Y291bnQ8QlIgLz4iOyAvL2RlYnVnIHN0YXRlbWVudAo+Cj4gwqBFQ0hPICJc JHJlY29yZF9jb3Vu
dGVyIG9uIGxpbmUgOTUgaXMgLSAkcmVjb3JkX2NvdW50ZXI8QlIgLz4iOyAv L2RlYnVnCj4gc3Rh
dGVtZW50Cj4gwqA/Pgo+Cj4gPEgyIGFsaWduPSJjZW50ZXIiPk11bHRpIENv bHVtbiBTZWFyY2g8
L0gyPgo+Cj4gPERJViBpZD0iZm9ybWJveCI+Cj4KPiA8P3BocAo+IC8vcXVl cnlzdHJpbmcgPSIi
Owo+IC8vJHF1ZXJ5c3RyaW5nID0iIjsKPgo+IMKgJG5ld3NlYXJjaCA9IDAg OyAvL0VxdWFscyAx
IG9ubHkgb24gYSBuZXcgc2VhcmNoIHJlcXVlc3QKPiDCoC8vRUNITyAiPHAg YWxpZ249bGVmdD5c
JG5ld3NlYXJjaCBvbiBsaW5lIDExMSBpcyAkbmV3c2VhcmNoPC9wPiI7Cj4g wqAkc3VibWl0PSIi
Owo+IMKgLy9FQ0hPICJcU3N1Ym1pdCwgYmVmb3JlIHRoZSBmb3JtLCBvbiBs aW5lIDExMyBpcyAt
ICRzdWJtaXQ8YnIgLz4iOwo+IMKgSWYgKCRzdWJtaXQpIHskcmVjb3JkX2Nv dW50ZXIgPSAwO30K
PiA/Pgo+Cj4gPCEtLQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Cj4gWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYIE1BSU4gRk9STSBTVEFSVFMgSEVS RQo+IMKgWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKPiA9PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PQo+IC0tPgo+Cj4gPEZPUk0gbmFtZT0iZm9ybSIgYWN0aW9uPSJj b21tb25uYW1lX3Nl
YXJjaC5waHAiIG1ldGhvZD0iZ2V0Ij4KPgo+IDwhLS0gQUREIEEgVFJBTlBB UkVOVCBJTlNJREUg
VEFCTEUgVE8gT1JHQU5JWkUgUExBQ0VNRU5UIE9GIEFMTCBUSEUgRk9STQo+ IEVMRU1FTlRTIC0t
Pgo+IMKgIMKgIMKgIMKgPFRBQkxFIGFsaWduPSdjZW50ZXInIGJvcmRlcj0n MCcgYmdjb2xvcj0n
aXZvcnknIGNlbGxwYWRkaW5nPSc2Jz4KPiDCoCDCoCDCoCDCoCDCoCDCoDxU Uj4KPiDCoCDCoCDC
oCDCoCDCoCDCoDxURCBhbGlnbj0iY2VudGVyIiBjb2xzcGFuPSI1Ij4KPiDC oCDCoCDCoCDCoCDC
oCDCoDxTUEFOIGNsYXNzPSJyZXBvcnRoZWFkZXIiPkNob29zZSB3aGljaCBz ZWFyY2ggdHlwZSB5
b3Ugd2FudAo+IGZpcnN0PC9TUEFOPgo+IMKgIMKgIMKgIMKgIMKgIMKgPC9U RD4KPiDCoCDCoCDC
oCDCoDwvVFI+Cj4gwqAgwqAgwqAgwqA8VFI+Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqA8VEQg
Y2xhc3M9Im1lZGl1bXRleHQiPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg PEI+Q29tbW9uIG5h
bWVzPC9CPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgPElucHV0IHR5cGU9 J3JhZGlvJyB2YWx1
ZT0nY29tbW9uIG5hbWVzJyBuYW1lPSJzZWFyY2h0eXBlIiAvPgo+IMKgIMKg IMKgIMKgIMKgIMKg
IMKgIMKgPC9URD4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxURCBjbGFz cz0ibWVkaXVtdGV4
dCI+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8Qj5Cb3RhbmljYWwgbmFt ZXM8L0I+Cj4gwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqA8SW5wdXQgdHlwZT0ncmFkaW8nIHZhbHVl PSdib3RhbmljYWwg
bmFtZXMnIG5hbWU9InNlYXJjaHR5cGUiCj4gLz4KPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoDwv
VEQ+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8VEQgY2xhc3M9Im1lZGl1 bXRleHQiPgo+IMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgPEI+R2VudXM8L0I+Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAg
wqA8SW5wdXQgdHlwZT0ncmFkaW8nIHZhbHVlPSdnZW51cycgbmFtZT0ic2Vh cmNodHlwZSIgLz4K
PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDwvVEQ+Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqA8
VEQgY2xhc3M9Im1lZGl1bXRleHQiPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgPEI+TG9jYXRp
b248L0I+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8SW5wdXQgdHlwZT0n cmFkaW8nIHZhbHVl
PSdsb2NhdGlvbicgbmFtZT0ic2VhcmNodHlwZSIgLz4KPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDC
oDwvVEQ+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8VEQgY2xhc3M9Im1l ZGl1bXRleHQiPgo+
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgPEI+RGVzY3JpcHRpb248L0I+Cj4g wqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqA8SW5wdXQgdHlwZT0ncmFkaW8nIHZhbHVlPSdkZXNjcmlw dGlvbicgbmFtZT0i
c2VhcmNodHlwZSIgLz4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDwvVEQ+ Cj4gwqAgwqAgwqAg
wqA8L1RSPgo+IMKgIMKgIMKgIMKgPFRSPgo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgPFREIGFs
aWduPSJjZW50ZXIiIGNvbHNwYW49IjUiIGNsYXNzPSJtZWRpdW10ZXh0Ij4K PiDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxCPkVudGVyIGEgU2VhcmNoIFN0 cmluZzo8L0I+Jm5i
c3A7Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxJTlBVVCB0eXBlPSJ0 ZXh0IiBzaXplPSI0
MCIgbmFtZT0icXVlcnlzdHJpbmciCj4gLz4mbmJzcDsmbmJzcDsmbmJzcDsK PiDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxJTlBVVCB0eXBlPSJoaWRkZW4i IG5hbWU9Im5ld3Nl
YXJjaCIgdmFsdWU9IjEiPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgPElO
UFVUIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3RhcnQK PiBTZWFyY2giIC8+
Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8L1REPgo+ IMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgPC9UUj4KPiDCoCDCoCDCoCDCoDwvVEFCTEU+Cj4KPiA8 L0ZPUk0+Cj4gPC9E
SVY+Cj4KPiA8IS0tCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KPiBYWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFggTUFJTiBGT1JNIFNUT1BTIEhF UkUKPiDCoFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAo+ID09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09Cj4gLS0+Cj4KPiA8P3BocAo+Cj4gJHN1Ym1pdCA9ICRfR0VUWyJz dWJtaXQiXTsKPiBF
Q0hPICJcJHN1Ym1pdCBvbiBsaW5lIDE3OSBpcyAtICRzdWJtaXQ8YnIgLz4i Owo+Cj4gJG5ld3Nl
YXJjaCA9ICRfR0VUWyJuZXdzZWFyY2giXTsKPiAvL0VDSE8gIlwkbmV3c2Vh cmNoIGp1c3QgcGFz
dCB0aGUgZm9ybSBvbiBsaW5lIDE4MCBpcyAtICRuZXdzZWFyY2g8YnIgLz4i Owo+Cj4gSUYgKCRu
ZXdzZWFyY2g9MSkgeyRyZWNvcmRfY291bnRlcj0wO307Cj4gRUNITyAiXCRy ZWNvcmRfY291bnRl
ciBvbiBsaW5lIDE4NSBpcyAtICRyZWNvcmRfY291bnRlcjxiciAvPiI7Cj4g LyoKPiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT0KPiBYWFhYWFhYWFhYWCBHRVQgVEhFIFNFQVJDSCBUWVBF IEFORCBTRUFSQ0gg
U1RSSU5HIEZST00gVEhFIEZPUk0gWFhYWFhYWFhYWFgKPiA9PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KPiAq
Lwo+IMKgIMKgIMKgIMKgJHNlYXJjaHR5cGUgPSAkX0dFVFsnc2VhcmNodHlw ZSddIDsKPiDCoCDC
oCDCoCDCoCRzZWFyY2h0eXBlID0gdHJpbSgkc2VhcmNodHlwZSk7IC8vdHJp bSB3aGl0ZXNwYWNl
IGZyb20gdGhlIHN0b3JlZAo+IHZhcmlhYmxlCj4KPiDCoCDCoCDCoCDCoC8v RUNITyAiT24gbGlu
ZSAxOTIsIFwkc2VhcmNodHlwZSBpcyAtICRzZWFyY2h0eXBlPGJyIC8+Ijsg Ly8gRGVidWcKPiBz
dGF0ZW1lbnQKPgo+IMKgIMKgIMKgIMKgJHF1ZXJ5c3RyaW5nID0gQCRfR0VU WydxdWVyeXN0cmlu
ZyddIDsKPiDCoCDCoCDCoCDCoCRxdWVyeXN0cmluZyA9IHRyaW0oJHF1ZXJ5 c3RyaW5nKTsgLy90
cmltIHdoaXRlc3BhY2UgZnJvbSB0aGUgc3RvcmVkCj4gdmFyaWFibGUKPgo+ IMKgLy8KPiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Cj4gwqAgwqAgwqAgwqAvLyBSRUFT U1VSRSBVU0VSIE9G
IFRIRUlSIENIT0lDRVMuIChBTFNPIEdPT0QgRk9SIERFQlVHR0lORykuCj4g wqAgwqAgwqAgwqBJ
ZiAoIWVtcHR5KCRzZWFyY2h0eXBlKSkKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHsKPiDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEVDSE8gIjxoMyBhbGln bj0nY2VudGVyJz5z
ZWFyY2hpbmcgdW5kZXIgJHNlYXJjaHR5cGUKPiBmb3I6ICZxdW90OyIgLiAk cXVlcnlzdHJpbmcg
LiAiJnF1b3Q7PC9oMz4iOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+ Cj4gwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAvL0VDSE8gIkxpbmUgMjA0IC0gXCRzZWFyY2h0eXBl IGlzIC0gJHNlYXJj
aHR5cGU8YnIgLz4iOwo+IC8vZGVidWcgc3RhdGVtZW50Cj4gLyoKPiA9PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09Cj4gWFhYWFhYWFhYWFhYWFhYWFggwqBUUkFOU0xBVElPTiBPRiBT RUFSQ0ggVFlQRSBU
TyBDT0xVTU4gTkFNRQo+IMKgWFhYWFhYWFhYWFhYWFhYWFgKPiA9PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09Cj4gKi8KPgo+ICRzZWFyY2hmaWVsZCA9ICIiOwo+IMKgIMKgIMKgIMKg Ly9FQ0hPICJMaW5l
IDE5NiAtIFwkc2VhcmNodHlwZSBpcyAtICRzZWFyY2h0eXBlPGJyIC8+Ijsg Ly8gRGVidWcKPiBz
dGF0ZW1lbnQKPgo+IMKgIMKgIMKgIMKgc3dpdGNoICgkc2VhcmNodHlwZSkg ewo+IMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgY2FzZSAiY29tbW9uIG5hbWVzIjoKPiDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCRzZWFyY2hmaWVsZCA9IHRyaW0oInNwZWNpZXNf Y29tbW9ubmFtZSIp
Owo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLy9FQ0hP ICI8YnI+Y29tbW9u
IG5hbWVzIC0gJHNlYXJjaGZpZWxkPGJyPlxuIjsKPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2Fz ZSAiYm90YW5pY2Fs
IG5hbWVzIjoKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCRzZWFyY2hmaWVs
ZCA9IHRyaW0oInNwZWNpZXNfbmFtZSIpOwo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKg
IMKgIMKgLy9FQ0hPICI8YnI+Ym90YW5pY2FsIG5hbWVzIC0gJHNlYXJjaGZp ZWxkIDxicj5cbiI7
Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsK PiDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoGNhc2UgImdlbnVzIjoKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCRzZWFyY2hmaWVsZCA9IHRyaW0oImdlbnVzX25hbWUiKTsKPiDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8vRUNITyAiPGJyPmdlbnVzIC0gJHNl YXJjaGZpZWxkIDxi
cj5cbiI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBi cmVhazsKPiDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoGNhc2UgImxvY2F0aW9uIjoKPiDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCRzZWFyY2hmaWVsZCA9IHRyaW0oImxvY2F0aW9u Iik7Cj4gwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvL0VDSE8gIjxicj5sb2Nh dGlvbiAtICRzZWFy
Y2hmaWVsZCA8YnI+XG4iOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgYnJl
YWs7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjYXNlICJkZXNjcmlwdGlv biI6Cj4gwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAkc2VhcmNoZmllbGQgPSB0 cmltKCJzcGVjaWVz
X2Rlc2NyaXB0aW9uIik7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAvL0VD
SE8gIjxicj5kZXNjcmlwdGlvbiAtICRzZWFyY2hmaWVsZCA8YnI+XG4iOwo+ IMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBk
ZWZhdWx0OiBJZiAoIWlzc2V0KCRzZWFyY2hmaWVsZCkpIHsKPiDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoEVDSE8gIlBsZWFzZSBjaG9vc2UgYSBzZWFyY2gg dHlwZSBmaXJzdCI7
Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gwqAgwqAgwqAgwqB9Cj4g LyoKPiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09Cj4gWFhYWFhYWFhYWFhYWCBFTkQgT0YgVFJBTlNM QVRJT04gT0YgU0VB
UkNIIFRZUEUgVE8gQ09MVU1OIE5BTUUKPiDCoFhYWFhYWFhYWFhYWFhYCj4g PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PQo+ICovCj4KPgo+IMKgLy8gR2V0IHRoZSBzZWFyY2ggdmFy aWFibGUgZnJvbSBV
UkwuIE9sZCBkZXNpZ25hdGlvbnMgd2VyZSAkdmFyID0KPiBAJF9HRVRbJ3En XSA7Cj4KPiDCoCRu
ZXdxdWVyeXN0cmluZyA9IEAkX0dFVFsncXVlcnlzdHJpbmcnXSA7Cj4gwqAk cXVlcnlzdHJpbmcg
PSB0cmltKCRuZXdxdWVyeXN0cmluZyk7IC8vdHJpbSB3aGl0ZXNwYWNlIGZy b20gdGhlIHN0b3Jl
ZAo+IHZhcmlhYmxlCj4KPiDCoCDCoCDCoCDCoCRjb3VudCA9ICRyZWNvcmRf Y291bnRlciArMTsK
PiDCoCRuZXdzZWFyY2ggPSBAJF9HRVRbJ25ld3NlYXJjaCddIDsKPiDCoEVD SE8gIlwkbmV3c2Vh
cmNoIG9uIGxpbmUgMjU1IGlzICRuZXdzZWFyY2giOwo+Cj4gwqBpZiAoJG5l d3NlYXJjaCA+IDAp
IHskcmVjb3JkX2NvdW50ZXI9MDt9Owo+Cj4KPiDCoC8qPT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Cj4gwqAgwqAgwqAg
wqBYWFhYWFhYWFhYWFhYIFNFVCBUSEUgTlVNQkVSIE9GIFJFQ09SRFMgUEVS IFBBR0UgSEVSRSDC
oFhYWFhYWFhYWFhYWFhYCj4KPiDCoD09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCj4gwqAgwqAg wqAgwqAkbGltaXQ9
JzMwJzsKPgo+IC8vIGNoZWNrIGZvciBhbiBlbXB0eSBzdHJpbmcgYW5kIGRp c3BsYXkgYSBtZXNz
YWdlLgo+IGlmICgkcXVlcnlzdHJpbmcgPT0gIiIpCj4gwqB7Cj4gwqBFQ0hP ICI8cCBhbGlnbj0n
Y2VudGVyJz5QbGVhc2UgZW50ZXIgYSBzZWFyY2ggc3RyaW5nLi4uPC9wPiI7 Cj4gwqBleGl0Owo+
IMKgfQo+Cj4gLy8gY2hlY2sgZm9yIGEgc2VhcmNoIHBhcmFtZXRlcgo+IGlm ICghaXNzZXQoJG5l
d3F1ZXJ5c3RyaW5nKSkKPiDCoHsKPiDCoEVDSE8gIjxwIGFsaWduPSdjZW50 ZXInPldlIGRvbnQg
c2VlbSB0byBoYXZlIGEgc2VhcmNoIHBhcmFtZXRlciE8L3A+IjsKPiDCoGV4 aXQ7Cj4gwqB9Cj4K
PiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gwqBYWFhY WFhYWFhYWFhYWFhY
WFhYWFhYWFhYWFggQ29ubmVjdCB0byB0aGUgVEFYQSBEYXRhYmFzZQo+IMKg WFhYWFhYWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWAo+IMKgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0q
Lwo+Cj4gaW5jbHVkZSAoImNvbm5lY3R0b3RheGEucGhwIik7Cj4gJGNvbm5l Y3Rpb24gPSBteXNx
bF9jb25uZWN0KCRob3N0bmFtZSwgJHVzZXJuYW1lLCAkcGFzc3dvcmQpCj4g wqAgwqAgwqAgwqBv
ciBkaWUoIlVuYWJsZSB0byBjb25uZWN0IHRvIGRhdGFiYXNlIHNlcnZlciIp Owo+Cj4KPiAvL3Nw
ZWNpZnkgZGF0YWJhc2UgKiogRURJVCBSRVFVSVJFRCBIRVJFICoqCj4gbXlz cWxfc2VsZWN0X2Ri
KCJ0YXhhIikgb3IgZGllKCJVbmFibGUgdG8gc2VsZWN0IHRoZSBUQVhBIGRh dGFiYXNlIik7Cj4g
Ly9zZWxlY3Qgd2hpY2ggZGF0YWJhc2Ugd2UncmUgdXNpbmcKPgo+Cj4gLyo9 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K PiDCoFhYWFhYWFhY
WFhYWFhYWCBCVUlMRCBUSEUgU1FMIFFVRVJZIMKgWFhYWFhYWFhYWFhYWFhY WFhYWFgKPiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0qLwo+
Cj4gLy8gQnVpbGQgU1FMIFF1ZXJ5Cj4gJHNlYXJjaHF1ZXJ5ID0gIlNFTEVD VCAqCj4gRlJPTSBz
cGVjaWVzCj4gV0hFUkUgJHNlYXJjaGZpZWxkIGxpa2UgXCIlJHF1ZXJ5c3Ry aW5nJVwiCj4gwqBv
cmRlciBieSAnJHNlYXJjaGZpZWxkJyI7Cj4KPiDCoCRudW1yZXN1bHRzPW15 c3FsX3F1ZXJ5KCRz
ZWFyY2hxdWVyeSk7Cj4KPgo+IMKgQCRudW1yb3dzPW15c3FsX251bV9yb3dz KCRudW1yZXN1bHRz
KTsKPgo+IC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KPiDCoFhYWFhY
WFhYWFhYWFhYWCBURVNUIEZPUiBaRVJPIFJFU1VMVFMgQU5EIFBSSU5UIEEg TUVTU0FHRSBPRiBU
SEFUIElGIFRSVUUKPiDCoFhYWFhYWFhYWFhYWFhYWFhYWFhYCj4gPT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ki8KPiBpZiAoJG51bXJvd3MgPT0gMCkK PiDCoHsKPiDCoEVD
SE8gIjxoMyBhbGlnbj0nY2VudGVyJz5TZWFyY2ggUmVzdWx0czwvaDM+IjsK PiDCoEVDSE8gIjxw
IGFsaWduPSdjZW50ZXInPlNvcnJ5LCB5b3VyIHNlYXJjaDogJnF1b3Q7IiAu ICRxdWVyeXN0cmlu
Zy4gIiZxdW90Owo+IHJldHVybmVkIHplcm8gcmVzdWx0czwvcD4iOwo+IMKg fQo+Cj4gLyo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KPiAv
LyAkcmVjb3JkX2NvdW50ZXIgaXMgdGhlIHJlY29yZCBjb3VudGVyIGZvciB0 aGUgcHJlc2VudCBy
ZWNvcmQKPiAvLyBuZXh0IGRldGVybWluZSBpZiBzIGhhcyBiZWVuIHBhc3Nl ZCB0byBzY3JpcHQs
IGlmIG5vdCB1c2UgMAo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSovCj4KPiDCoGlmIChlbXB0eSgkcykpIHsKPiDC oCRyZWNvcmRfY291
bnRlcj0wOwo+IMKgfQo+Cj4gLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiDCoFhY WFhYWFhYWFhYWFhY
WCBRVUVSWSBUSEUgREFUQUJBU0UgVE8gR0VUIFRIRSBSRVNVTFRTIMKgWFhY WFhYWFhYWFhYWFhY
WFhYWFgKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwo+Cj4gLy8gZ2V0IHJlc3Vs dHMKPiDCoCRzZWFy
Y2hxdWVyeSAuPSAiIGxpbWl0ICRyZWNvcmRfY291bnRlciwkbGltaXQiOwo+ IMKgJHJlc3VsdCA9
IG15c3FsX3F1ZXJ5KCRzZWFyY2hxdWVyeSkgb3IgZGllKCJDb3VsZG4ndCBl eGVjdXRlIHF1ZXJ5
Iik7Cj4KPiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4g wqBYWFhYWFhYWFhY
WFhYWFggRUNITyBCQUNLIFRPIFRIRSBVU0VSIFdIQVQgVEhFWSBBU0tFRCBU TyBTRUFSQ0ggRk9S
Cj4gwqBYWFhYWFhYWFhYWFhYWFhYWFhYWAo+ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09Ki8KPiBFQ0hPICI8cCBhbGlnbj0nY2VudGVyJz5Zb3Ugc2VhcmNoZWQg Zm9yOiAmcXVvdDsi
IC4gJHF1ZXJ5c3RyaW5nIC4KPiAiJnF1b3Q7PC9wPiI7Cj4KPiAvLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Lwo+IC8vIMKgIMKg
IMKgIMKgIMKgKioqKioqKioqKiBSRVBPUlRJTkcgU1RBUlRTIEhFUkUgwqAq KioqKioqKioqIMKg
IMKgIMKgIC8vCj4gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KPgo+IC8qPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IMKgWFhYWFhY WFhYWFhYWFhYIFNF
VCBBIFRJVExFIEZPUiBUSEUgUkVQT1JUIMKgWFhYWFhYWFhYWFhYWFhYWFhY WFgKPiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
Ki8KPiBFQ0hPICI8SDMgYWxpZ249J2NlbnRlcic+U2VhcmNoIFJlc3VsdHMg LSAkbnVtcm93cyBy
ZWZlcmVuY2VzIGZvdW5kLjxicgo+IC8+PGJyIC8+PC9IMz4iOwo+Cj4gLy8g bm93IHlvdSBjYW4g
ZGlzcGxheSB0aGUgcmVzdWx0cyByZXR1cm5lZAo+Cj4gLyo9PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQo+IMKg
WFhYWFhYWFhYWFhYWFhYIFNFVCBVUCBDT0xVTU4gSEVBREVSUyBGT1IgVEhF IFJFUE9SVCDCoFhY
WFhYWFhYWFhYWFhYWFhYWFhYCj4gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwo+Cj4g RUNITyAiPHRhYmxl
IGFsaWduPSdjZW50ZXInIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgQ2VsbHNw YWNpbmc9MAo+IGJn
Y29sb3I9J3doaXRlJz4iOwo+IEVDSE8gIjx0ciBjb2xzcGFuPTM+IjsKPiDC oCDCoCDCoCDCoEVD
SE8gIjx0ZCBiZ2NvbG9yPScjRUZERkNGJyBjbGFzcz1cInJlcG9ydGhlYWRl clwiPiI7Cj4gwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAvL0VDSE8gIjxzcGFuPkNvbW1vbiBOYW1l PC9zcGFuPiI7Cj4g
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBFQ0hPICJDb21tb24gTmFtZSI7Cj4g wqAgwqAgwqAgwqBF
Q0hPICI8L3RkPiI7Cj4KPiDCoCDCoCDCoCDCoEVDSE8gIjx0ZCBiZ2NvbG9y PScjRUZERkNGJyBj
bGFzcz1cInJlcG9ydGhlYWRlclwiPiI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBFQ0hPICJC
b3RhbmljYWwgTmFtZSI7Cj4gwqAgwqAgwqAgwqBFQ0hPICI8L3RkPiI7Cj4K PiDCoCDCoCDCoCDC
oEVDSE8gIjx0ZCBiZ2NvbG9yPScjRUZERkNGJyBjbGFzcz1cInJlcG9ydGhl YWRlclwiPiI7Cj4g
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBFQ0hPICJBdXRob3JpdGllcyI7Cj4g wqAgwqAgwqAgwqBF
Q0hPICI8L3RkPiI7Cj4KPiDCoCDCoCDCoCDCoEVDSE8gIjx0ZCBiZ2NvbG9y PScjRUZERkNGJyBj
bGFzcz1cInJlcG9ydGhlYWRlclwiPiI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBFQ0hPICJH
ZW51cyBOYW1lIjsKPiDCoCDCoCDCoCDCoEVDSE8gIjwvdGQ+IjsKPgo+IMKg IMKgIMKgIMKgRUNI
TyAiPHRkIGJnY29sb3I9JyNFRkRGQ0YnIGNsYXNzPVwicmVwb3J0aGVhZGVy XCI+IjsKPiDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoEVDSE8gIkxvY2F0aW9uIjtFQ0hPICI8L3Rk PiI7Cj4KPiDCoCDC
oCDCoCDCoEVDSE8gIjx0ZCBiZ2NvbG9yPScjRUZERkNGJyBjbGFzcz1cInJl cG9ydGhlYWRlclwi
PiI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBFQ0hPICJDb21tZW50cyI7 Cj4gwqAgwqAgwqAg
wqBFQ0hPICI8L3RkPiI7Cj4KPiDCoCDCoCDCoCDCoGlmICghaXNzZXQoJGNv dW50KSl7JGNvdW50
PTE7fTsKPgo+IEVDSE8gIjwvdHI+IjsKPiBFQ0hPICI8dHI+IjsKPgo+Cj4K Pgo+Cj4gLyo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQo+IMKg
WFhYWFhYWFhYIMKgUFJJTlQgT1VUIFJFQ09SRFMgVElMTCBFTkQgT0YgUVVF UlkgWFhYWFhYWFhY
Cj4KPiDCoCoqKioqKioqKioqKioqIFdISUxFIExPT1AgU1RBUlRTIEhFUkUg KioqKioqKioqKioq
KioqKioqCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT0qLwo+IMKgd2hpbGUgKCRyb3c9IG15c3FsX2ZldGNoX2FycmF5 KCRyZXN1bHQpKSB7
Cj4gwqAkY29tbW9ubmFtZSA9ICRyb3dbInNwZWNpZXNfY29tbW9ubmFtZSJd Owo+IMKgJGJvdG5h
bWUgPSAkcm93WyJzcGVjaWVzX25hbWUiXTsKPiDCoCRhdXRob3JpdGllcyA9 ICRyb3dbImF1dGhv
cml0aWVzX3NwZWNpZXMiXTsKPgo+IMKgJGdlbnVzbmFtZSA9ICRyb3dbImdl bnVzX25hbWUiXTsK
PiDCoCRsb2NhdGlvbiA9ICRyb3dbImxvY2F0aW9uIl07Cj4gwqAkY29tbWVu dHMgPSAkcm93WyJj
b21tZW50cyJdOwo+Cj4gwqAgwqAgwqAgwqBFQ0hPICI8dGQgdmFsaWduPSd0 b3AnIGNsYXNzPXNt
YWxsdGV4dDs+IjsKPiDCoCDCoCDCoCDCoC8vRUNITyAiXCRjb3VudCBpcyAk Y291bnQ8YnIgLz4i
Owo+Cj4gwqAgwqAgwqAgwqBFQ0hPICIkY291bnQgJm5ic3A7ICRjb21tb25u YW1lPGJyIC8+IiA7
Cj4gwqAgwqAgwqAgwqBFQ0hPICI8L3RkPiI7Cj4KPiDCoCDCoCDCoCDCoEVD SE8gIjx0ZCB2YWxp
Z249J3RvcCcgY2xhc3M9c21hbGx0ZXh0Oz4iOwo+IMKgIMKgIMKgIMKgRUNI TyAiPGEgaHJlZj1c
ImRpc3BsYXlzcGVjaWVzLnBocD8mc3BlY2llc19uYW1lPSRib3RuYW1lIFwi PiI7Cj4gwqAgwqAg
wqAgwqBFQ0hPICIkYm90bmFtZTxiciAvPiI7Cj4gwqAgwqAgwqAgwqBFQ0hP ICI8L2E+PGJyPlxu
IjsKPgo+IMKgIMKgIMKgIMKgRUNITyAiPC90ZD4iOwo+IMKgIMKgIMKgIMKg RUNITyAiPHRkIHZh
bGlnbj0ndG9wJyBjbGFzcz1zbWFsbHRleHQ7PiI7Cj4gwqAgwqAgwqAgwqBF Q0hPICIkYXV0aG9y
aXRpZXM8YnIgLz4iOwo+IMKgIMKgIMKgIMKgRUNITyAiPC90ZD4iOwo+Cj4g wqAgwqAgwqAgwqBF
Q0hPICI8dGQgdmFsaWduPSd0b3AnIGNsYXNzPXNtYWxsdGV4dDs+IjsKPiDC oCDCoCDCoCDCoEVD
SE8gIiRnZW51c25hbWU8YnIgLz4iOwo+IMKgIMKgIMKgIMKgRUNITyAiPC90 ZD4iOwo+Cj4gwqAg
wqAgwqAgwqBFQ0hPICI8dGQgdmFsaWduPSd0b3AnIGNsYXNzPXNtYWxsdGV4 dDs+IjsKPiDCoCDC
oCDCoCDCoEVDSE8gIiRsb2NhdGlvbjxiciAvPiI7Cj4gwqAgwqAgwqAgwqBF Q0hPICI8L3RkPiI7
Cj4KPiDCoCDCoCDCoCDCoEVDSE8gIjx0ZCBjbGFzcz1zbWFsbHRleHQ7PiI7 Cj4gwqAgwqAgwqAg
wqBFQ0hPICIkY29tbWVudHM8YnIgLz4iOwo+IMKgIMKgIMKgIMKgRUNITyAi PC90ZD4iOwo+Cj4g
wqAgwqAgwqAgwqBFQ0hPICI8L3RyPiI7Cj4gwqAgwqAgwqAgwqBFQ0hPICI8 dHI+IjsKPgo+IMKg
JGNvdW50KysgOwo+IMKgJHJlY29yZF9jb3VudGVyKysgOyAvLyBET0VTTidU ICRyZWNvcmRfY291
bnRlciBIQVZFIFRPIEJFIElOQ1JFTUVFTlRFRCBGT1IKPiBFQUNIIFJPVyBQ UklOVEVEIEFMU08/
Pwo+IMKgLy8gQU5PVEhFUiBDT1BZIFdPUktFRCBBIEZFVyBNT05USFMgQUdP IFdJVEhPVVQgSVQu
IGlUIElTIE5PVCBJTiBUSEUKPiBURU1QTEFURS4KPiDCoC8vRUNITyAiXCRy ZWNvcmRfY291bnRl
ciBvbiBsaW5lIDQxMiBpcyAtICRyZWNvcmRfY291bnRlcjxCUiAvPiI7IC8v ZGVidWcKPiBzdGF0
ZW1lbnQKPiDCoH0KPgo+Cj4gLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQo+IMKgWFhYWFhYWFhYIMKgRU5EIE9GIFdI SUxFIExPT1AuIFhY
WFhYWFhYWAo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09Ki8KPgo+IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwo+IC8vIMKgIMKgIENMT1NFIFRIRSBSRVBP UlQgVEFCTEUKPiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8KPiBFQ0hPICI8L3RyPiI7Cj4gRUNITyAiPC90YWJsZT4iOwo+IEVDSE8g IjxCUiAvPiI7Cj4g
RUNITyAiXCRyZWNvcmRfY291bnRlciBvbiBsaW5lIDQzNiBhdCB0aGUgZW5k IG9mIHRoZSByZXBv
cnQgbG9vcCBpcyAtCj4gJHJlY29yZF9jb3VudGVyPGJyIC8+IjsKPgo+Cj4K PiAvLyBDYWxjdWxh
dGUgdGhlIGN1cnJlbnQgcGFnZQo+ICRjdXJyUGFnZSA9ICgoJHJlY29yZF9j b3VudGVyLyRsaW1p
dCkgKyAxKTsKPiAkcGFnZXMgPSAkY3VyclBhZ2U7IC8vCj4gRUNITyAiXCRj dXJyUGFnZSBvbiBs
aW5lIDQ1MSBpcyAtICRjdXJyUGFnZTxiciAvPiI7IC8vZGVidWcgc3RhdGVt ZW50Cj4gRUNITyAi
XCRyZWNvcmRfY291bnRlciBvbiBsaW5lIDQ1MiBpcyAtICRyZWNvcmRfY291 bnRlcjxCUiAvPiI7
IC8vZGVidWcKPiBzdGF0ZW1lbnQKPgo+IC8vYnJlYWsgYmVmb3JlIHBhZ2lu Zwo+IMKgRUNITyAi
PGJyIC8+IjsKPgo+IMKgLy8gbmV4dCB3ZSBuZWVkIHRvIGRvIHRoZSBsaW5r cyB0byBvdGhlciBy
ZXN1bHRzCj4KPiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCj4gLy8gSWYgJHJlY29yZF9jb3Vu dGVyIGlzIGxlc3Mg
dGhhbiAxLCB0aGVyZSBhcmUgbm8gbW9yZSByZWNvcmRzIHRvIHZpZXcKPiBi YWNrd2FyZHMuCj4g
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwo+Cj4gLy8gYnlwYXNzIFBSRVYgbGluayBpZiBzIGlz IDAgc2luY2UgdGhl
cmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgbW9yZSByZWNvcmQKPiB0byBkaXNw bGF5IHRvIHVzZSBh
IG5ldyBwYWdlLgo+IGlmICgkcmVjb3JkX2NvdW50ZXI+PTEpIHsKPiDCoEVD SE8gIlwkcmVjb3Jk
X2NvdW50ZXIgYXQgbGluZSA0NTMgaXMgLSAkcmVjb3JkX2NvdW50ZXI8YnIg Lz4gIjsgLy9kZWJ1
Zwo+IHN0YXRlbWVudAo+IMKgJHByZXZzPSgkcmVjb3JkX2NvdW50ZXItJGxp bWl0KTsKPiDCoCDC
oCDCoCDCoCDCoEVDSE8gIlwkcHJldnMgYXQgbGluZSA0NTUgaXMgLSAkcHJl dnM8YnIgLz4gIjsg
Ly9kZWJ1ZyBzdGF0ZW1lbnQKPgo+IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8KPiAvLyDCoCDCoCoqKioqKiBUaGlzIHN0YXRlbWVudCB3aWxsIHJ1biB0 aGUgcHJpb3IgcGFn
ZSBvZiB0aGUgcmVwb3J0LiBJdCBpcwo+IHVzZXIgY2hvc2VuKioqKioqCj4g Ly8KPiAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCj4gwqBwcmludCAiJm5i c3A7PGEKPiBocmVm
PVwiJFBIUF9TRUxGP3JlY29yZF9jb3VudGVyPSRwcmV2cyZxdWVyeXN0cmlu Zz0kcXVlcnlzdHJp
bmcmc2VhcmNoZmllbGQ9JHNlYXJjaGZpZWxkXCI+CgpJIGRvbid0IHNlZSAk UEhQX1NFTEYgZGVj
bGFyZWQgcHJpb3IgdG8gdXNhZ2UuICBIYXZpbmcgdGhlIHByb3BlcgpkZXZl bG9wbWVudCBzZXR0
aW5ncyBpbiBwaHAuaW5pIHdpbGwgc2hvdyB5b3UgdGhpcyBlcnJvci4gIEhl cmUgSQp0aGluayB5
b3UgbWVhbnQgJF9TRVJWRVJbJ1BIUF9TRUxGJ10uICBTZWUKaHR0cDovL3Bo cC5uZXQvcmVzZXJ2
ZWQudmFyaWFibGVzLgoKSXQncyByZWNvbW1lbmRlZCB0byB1c2UgJF9TRVJW RVJbJ1NDUklQVF9O
QU1FJ10gb3ZlciAkX1NFUlZFUlsnUEhQX1NFTEYnXS4KCj4gwqA8cCBhbGln bj0nbGVmdCcgY2xh
c3M9J2xhcmdlcnRleHQnPjxiPiZsdDsmbHQ7IFByZXZpb3VzICRsaW1pdAo+ IHJlY29yZHM8L2I+
PC9wPjwvYT4mbmJzcCZuYnNwOyI7IC8vIFBhZ2UgMzU3Cj4KPiB9IMKgIC8v RU5EIE9GIFBSRVNF
TlQgSUYgU1RBVEVNRU5UCj4KPiAvLyBjYWxjdWxhdGUgbnVtYmVyIG9mIHBh Z2VzIG5lZWRpbmcg
bGlua3MKPiDCoCRwYWdlcz1pbnR2YWwoJG51bXJvd3MvJGxpbWl0KTsKPgo+ IC8vRUNITyAiXCRw
YWdlcyBvbiBsaW5lIDQ2OSBpcyAtICRwYWdlczxiciAvPiI7IC8vZGVidWcg c3RhdGVtZW50Cj4g
Ly9FQ0hPICJcJG51bXJvd3Mgb24gbGluZSA0NzAgaXMgLSAkbnVtcm93czxi ciAvPiI7IC8vZGVi
dWcgc3RhdGVtZW50Cj4gLy9FQ0hPICJcJGxpbWl0IG9uIGxpbmUgNDcxIGlz IC0gJGxpbWl0PGJy
IC8+IjsgLy9kZWJ1ZyBzdGF0ZW1lbnQKPgo+IC8vICRwYWdlcyBub3cgY29u dGFpbnMgaW50IG9m
IHBhZ2VzIG5lZWRlZCB1bmxlc3MgdGhlcmUgaXMgYSByZW1haW5kZXIgZnJv bQo+IGRpdmlzaW9u
Cj4KPiDCoGlmICgkbnVtcm93cyUkbGltaXQpIHsKPiDCoC8vIGhhcyByZW1h aW5kZXIgc28gYWRk
IG9uZSBwYWdlCj4gwqAkcGFnZXMrKzsKPiDCoH0KPiAvL0VDSE8gIlwkcGFn ZXMgb24gbGluZSA0
NzkgaXMgLSAkcGFnZXM8YnIgLz4iOyAvL2RlYnVnIHN0YXRlbWVudAo+Cj4g JHJlbWFpbmRlciA9
ICgkbnVtcm93cyUkbGltaXQpOwo+IC8vRUNITyAiXCRyZW1haW5kZXIgb24g bGluZSAzNTMgaXMg
LSAkcmVtYWluZGVyPGJyIC8+IjsgLy9kZWJ1ZyBzdGF0ZW1lbnQKPgo+IMKg RUNITyAiPGJyIC8+
IjsKPgo+IMKgIMKgIMKgIMKgLy8keCA9ICgkcmVjb3JkX2NvdW50ZXIrJGxp bWl0KS8kbGltaXQK
PiDCoCDCoCDCoCDCoC8vRUNITyAiXCR4IG9uIGxpbmUgNDc4IGlzIC0gJHg8 YnIgLz4iOyAvL2Rl
YnVnIHN0YXRlbWVudAo+IMKgIMKgIMKgIMKgRUNITyAiXCRyZWNvcmRfY291 bnRlciBvbiBsaW5l
IDQ3OSBpcyAtICRyZWNvcmRfY291bnRlcjxiciAvPiI7Cj4gLy9kZWJ1ZyBz dGF0ZW1lbnQKPgo+
IMKgIMKgIMKgIMKgLy9FQ0hPICJcJGxpbWl0IG9uIGxpbmUgNDkwIGlzIC0g JGxpbWl0PGJyIC8+
IjsgLy9kZWJ1ZyBzdGF0ZW1lbnQKPiDCoCDCoCDCoCDCoC8vRUNITyAiXCRw YWdlcyBvbiBsaW5l
IDQ5MSBpcyAtICRwYWdlczxiciAvPiI7IC8vZGVidWcgc3RhdGVtZW50Cj4K PiAvLyBjaGVjayB0
byBzZWUgaWYgbGFzdCBwYWdlCj4gwqBpZiAoISgoKCRyZWNvcmRfY291bnRl ciskbGltaXQpLyRs
aW1pdCk9PSRwYWdlcykgJiYgJHBhZ2VzIT0xKSB7Cj4KPiDCoEVDSE8gIjxi ciAvPiI7Cj4KPiDC
oC8vIG5vdCBsYXN0IHBhZ2Ugc28gZ2l2ZSBORVhUIGxpbmsKPiDCoCRuZXdz PSRyZWNvcmRfY291
bnRlciskbGltaXQ7Cj4gwqAgwqAgwqAgwqBFQ0hPICJcJHJlY29yZF9jb3Vu dGVyIG9uIGxpbmUg
NTE3IGlzIC0gJHJlY29yZF9jb3VudGVyPGJyIC8+IjsKPiAvL2RlYnVnIHN0 YXRlbWVudAo+IMKg
IMKgIMKgIMKgLy9FQ0hPICJcJGxpbWl0IG9uIGxpbmUgNDkyIGlzIC0gJGxp bWl0PGJyIC8+Ijsg
Ly9kZWJ1ZyBzdGF0ZW1lbnQKPiDCoCDCoCDCoCDCoC8vRUNITyAiXCRuZXdz IG9uIGxpbmUgNDkz
IGlzIC0gJG5ld3M8YnIgLz4iOyAvL2RlYnVnIHN0YXRlbWVudAo+IMKgIMKg IMKgIMKgLy9FQ0hP
ICI8ZGl2IGFsaWduPSdyaWdodCcgc3R5bGU9J2NvbG9yOicjRkYwMDAwJz4i Owo+Cj4gLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCj4g
Ly8gwqBUaGlzIHN0YXRlbWVudCB3aWxsIHJ1biB0aGUgbmV4dCBwYWdlIG9m IHRoZSByZXBvcnQu
Cj4gLy8gwqBJdCBpcyB1c2VyIGNob3Nlbgo+IC8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo+Cj4gLy9lY2hvICIm bmJzcDs8YSBocmVm
PVwiJFBIUF9TRUxGP3M9JG5ld3MmcT0kdmFyXCI+TmV4dCAxMCAmZ3Q7Jmd0 OzwvYT4iOwo+CgpB
Z2Fpbiwgc2VlIHRoZSBhYm92ZS4KCj4gRUNITyAiJm5ic3A7PGEKPiBocmVm PVwiJFBIUF9TRUxG
P3JlY29yZF9jb3VudGVyPSRuZXdzJnF1ZXJ5c3RyaW5nPSRuZXdxdWVyeXN0 cmluZyZzZWFyY2hm
aWVsZD0kc2VhcmNoZmllbGRcIj4KPiA8cCBjbGFzcz0nbGFyZ2VydGV4dCcg YWxpZ209J3JpZ2h0
Jz48Qj5OZXh0ICRsaW1pdCByZWNvcmRzCj4gJmd0OyZndDs8L2I+PC9wPjwv YT4iOwo+Cj4gwqAg
wqAgwqAgwqBFQ0hPICI8L2Rpdj4iOwo+IMKgfQo+IMKgIMKgIMKgIMKgRUNI TyAiXCRyZWNvcmRf
Y291bnRlciBvbiBsaW5lIDUzNCBpcyAtICRyZWNvcmRfY291bnRlcjxCUiAv PiI7Cj4gLy9kZWJ1
ZyBzdGF0ZW1lbnQKPgo+IMKgIMKgIMKgIMKgJHJlY29yZF9jb3VudGVyID0g JG5ld3M7Cj4KPiDC
oCDCoCDCoCDCoEVDSE8gIlwkcmVjb3JkX2NvdW50ZXIgb24gbGluZSA1Mzgg aXMgLSAkcmVjb3Jk
X2NvdW50ZXI8QlIgLz4iOwo+IC8vZGVidWcgc3RhdGVtZW50Cj4KPiAvLyRf U0VTU0lPTlsnJHJl
Y29yZF9jb3VudGVyJ10gPSAkcmVjb3JkX2NvdW50ZXI7Cj4gLy8kX1NFU1NJ T05bJyRjb3VudCdd
ID0gJGNvdW50Owo+Cj4gPz4KPgo+IDwhLS0gw4PigJrDgsKpIGh0dHA6Ly93 d3cuZGVzaWducGxh
Y2Uub3JnLyAtLT4KPgo+IDwvQk9EWT4KPiA8L0hUTUw+Cj4KPgo+IFsvQ09E RV0KPgo+CgpPbmUg
bW9yZSB0aGluZywgY29uc2lkZXIgdXNpbmcgcGFzdGViaW4uY29tIGZvciBj b2RlIHBvc3Rpbmcu
ICBEb2luZwppbiB0aGUgZW1haWxzIGlzIHZlcnkgYmFkIGZvciBsZWdpYmls aXR5IChkdWUgdG8g
bGluZSB3cmFwcGluZykgYW5kIG5vCmxpbmUgbnVtYmVycyB3aGVuIHlvdSBy ZWZlcmVuY2UgbGlu
ZSBudW1iZXIgaW4gZGVzY3JpYmluZyB5b3VyCnByb2JsZW0sICBlc3BlY2lh bGx5IG9uIGEgbG9u
ZyBwb3N0IGxpa2UgeW91cnMuCgpSZWdhcmRzLApUb21teQo=