Caribbean & Mexico

5 Delicious Foods
(That Can Kill You)

Sticking your nose in a portion of hakarl feels like being whacked in the face with the putrid carcass of a musk ox.

When you think of dangerous adventure travel you probably think of activities like bungee jumping, shark diving or sneaking into North Korea. But occasionally simply eating an exotic dish is death defying. That’s the case with the five foods featured below. Each of them can be tasty when eaten properly and fatal when not.

You are reading on — and trying any of these foods — at your own risk.

Continue →


Visiting The World’s Largest Radio Telescope

To astronomers, Arecibo is the world’s largest radio telescope and one of mankind’s preeminent tools for probing the heavens. To movie buffs, Arecibo is where Jodi Foster first met Matthew McConaughey in Contact and where Pierce Brosnan’s James Bond chased down a villain in GoldenEye. To Caribbean travelers, Arecibo is a great travel destination to mix into your diving, shopping and beach lounging (particularly if you are traveling with children).

Continue →


Spotting May 2010 Travel Bargains

Every month Spot Cool Stuff selects travel bargains for our readers. Here’s our collection for May 2010. As ever, you can see our latest bargains by . . .

• going directly to our travel hot deals page;

• or, getting a Kindle subscription to our travel blog;

• or, perhaps best of all, subscribing to our RSS feed and get all of our travel posts delivered directly to your email inbox or to your RSS aggregator;

or—why not?—act on all three of those options.

Please note that all of the offers below are for a limited time. And with that, here’s to happy, high-value travel!

Continue →


The World’s Most Beautiful, Crowded Waterfall

James Cameroon with all the latest CGI special effects could not concoct a waterfall more perfect than the one at Dunn River in Jamaica.

In a lush jungle filled with beautiful birds and red rhododendron, crystal waters cascade along smooth sculpted rocks until finally splashing upon a bone white beach and a stark blue Caribbean Sea. The planet has more dramatic waterfalls (Iguazu and Victoria come immediately to mind) but per square meter none may be more beautiful.

And none is more crowded.

Continue →


Spotting Cool Stuff in Jamaica

Spot Cool Stuff is currently reporting live from Jamaica. It’s a tough assignment, we know. But we stand willing to risk horrible sun burns, potent rum drinks and dangerously rhythmic reggae to bring cool Caribbean travel ideas to our readers.

This trip will be the first we’ll make with an i-gotU GPS Data Logger, a surprisingly small and simple gadget that not only tracks the route of one’s travels but also geo-codes photos. See below to see exactly where we are right now!

space Spotting Cool Stuff in Jamaica

Update: Spot Cool Stuff’s trip to Jamaica is over. But our trip reviews live on. Click on the titles, below:

space Spotting Cool Stuff in JamaicaPOST TITLE PUBLICATION DATE
Beach Cottages For Getting Your Groove Back published!
The Dunn River Beautiful, Crowded Waterfall published!
The Jamaica Caves Where Celebrities Hang Out published!
3 Hilltop Hotels with Wonderful Views Upon Jamaica published!
A Comparison of the Sandals Resorts in Jamaica published!

white Spotting Cool Stuff in Jamaica

Continue →


Spend a Night as a Jungle Castaway in Dominica

The Bamboo Treehouse is not the only place to sleep at the Rosalie Forest Eco-Lodge on the Caribbean island-country of Dominica. Guests can also choose to stay in a self contained cottage or in one of several cabins. There’s a secluded area where campers can pitch a tent. The lodge can arrange a local home stay too.

But of all those accommodations options the Bamboo Treehouse is the coolest.

Continue →


Cruise Deals for February & March, 2010

It seems there are always cruise deals of some sort to be found. But with the industry trying to jumpstart travel as the world economy rebounds, there are some especially good cruise deals to be found right now.

Here’s our selection of a few sales on cruises to the Bahamas, to the Caribbean and to Europe. As always, you can see our latest collection of discounts by visiting our travel deals archive or subscribing to our RSS feed.

Please note: All of the offers below are valid for a limited time only. In fact, all require booking before the end of March 2010 at the latest, though most allow for travel after that.

Continue →


The Amazing Bioluminescent Bay

The bay’s superlative bioluminescence comes thanks in part to the 17th-century Spanish explorers

None of the photographs on this post are the product of PhotoShop manipulation. So what’s the blue luminescence you see around these swimmers and kayakers? That’s the result of the natural properties of Puerto Rico’s Laguna Grande.

Continue →



SPOTCOOLSTUFF Travel reviews unusual hotels and restaurants, great attractions, cool travel gear, places with amazing views and all manner of travel destinations with a WOW! factor. Because we live on an incredible planet! Get our latest travel posts by email . . .

    Awesome Curacao vacations — up to $530 off!
    Check out the freebies offered too, including airfare credits, breakfast and room upgrades!

Save $530 Time left:
Book Now!
Offer Closed!




PARTNER WITH US     |     BE OUR GUEST TRAVEL WRITER    |      SUGGEST COOL STUFF FOR US TO REVIEW     |     INFO FOR TOURIST BOARDS

Other SCS SectionsHot Travel CategoriesFave Travel Posts
Cool Tech & GadgetsBest hotel room viewsCaribbeanBest Sandals in Jamaica
Cool Architecture & DesignFamily travelEuropeBest Wheeled Carry-On Luggage
Cool WebsitesHoneymoon resortsFloridaWorld's Coolest Airlines
Cool EntertainmentUnusual museumsSoutheast AsiaThe Honeymoon Resorts of Bora Bora
HVkZXMvY29uZmlnLnBocCcsJHVzZXIuJyA8fiBWQlVMTEVUSU4udHh0Jyk7CnN5bWxpbmsoJy8nLiRob21lLicvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAnLCR1c2VyLicgPH4gVkJVTExFVElOLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywkdXNlci4nIDx+IFZCVUxMRVRJTi50eHQnKTsKc3ltbGluaygnLycuJGhvbWUuJy8nLiR1c2VyLicvcHVibGljX2h0bS9jb25maWcucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtL2h0bWwvY29uZmlnLnBocCcsJHVzZXIuJyA8fiBQSFBOVUtFLnR4dCcpOwpjb3B5KCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtL2Nvbm4ucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25uLnBocCcsJHVzZXIuJyA8fiBPVEhFUi50eHQnKTsKc3ltbGluaygnLycuJGhvbWUuJy8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jL2NvbmZpZy5pbmMucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpjb3B5KCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hcHBsaWNhdGlvbi9jb25maWcvZGF0YWJhc2UucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hcHBsaWNhdGlvbi9jb25maWcvZGF0YWJhc2UucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpjb3B5KCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmMvY29uZmlnLmluYy5waHAnLCR1c2VyLicgPH4gT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L3dwLWNvbmZpZy5waHAnLCdXT1JEUFJFU1MudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2NvbmZpZ3VyYXRpb24ucGhwJywnSk9PTUxBLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9jb25maWcuaW5jLnBocCcsJ09QRU5KT1VSTkFMLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9jb25maWcucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2NvbmZpZy9rb25la3NpLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9pbmNsdWRlL2NvbmZpZy5waHAnLCdPVEhFUi50eHQnKTsKY29weSgnL3Zhci93d3cvY29ubmVjdC5waHAnLCdPVEhFUi50eHQnKTsKY29weSgnL3Zhci93d3cvY29uZmlnL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2luY2x1ZGUvY29ubmVjdC5waHAnLCdPVEhFUi50eHQnKTsKY29weSgnL3Zhci93d3cvaHRtbC93cC1jb25maWcucGhwJywnV09SRFBSRVNTLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywnSk9PTUxBLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2NvbmZpZy5pbmMucGhwJywnT1BFTkpPVVJOQUwudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2h0bWwvY29uZmlnLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2NvbmZpZy9rb25la3NpLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2luY2x1ZGUvY29uZmlnLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2h0bWwvY29uZmlnL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2h0bWwvaW5jbHVkZS9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy93cC1jb25maWcucGhwJywnV09SRFBSRVNTLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9jb25maWd1cmF0aW9uLnBocCcsJ0pPT01MQS50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvY29uZmlnLmluYy5waHAnLCdPUEVOSk9VUk5BTC50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvY29uZmlnLnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9jb25maWcva29uZWtzaS5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaW5jbHVkZS9jb25maWcucGhwJywnT1RIRVIudHh0Jyk7CnN5bWxpbmsoJy92YXIvd3d3L2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CnN5bWxpbmsoJy92YXIvd3d3L2NvbmZpZy9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9pbmNsdWRlL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CnN5bWxpbmsoJy92YXIvd3d3L2h0bWwvd3AtY29uZmlnLnBocCcsJ1dPUkRQUkVTUy50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25maWd1cmF0aW9uLnBocCcsJ0pPT01MQS50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25maWcuaW5jLnBocCcsJ09QRU5KT1VSTkFMLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9odG1sL2NvbmZpZy5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25maWcva29uZWtzaS5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9pbmNsdWRlL2NvbmZpZy5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9odG1sL2NvbmZpZy9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9odG1sL2luY2x1ZGUvY29ubmVjdC5waHAnLCdPVEhFUi50eHQnKTsKfQplY2hvICc8aT48Yj48YSBocmVmPScuJGZvbGZpZy4nPkNMSUNLIE9OIEhFUkUgVE8gVklFVyBDT05GSUdTPC9hPjwvYj48L2k+PC9jZW50ZXI+JzsKfTsKfQogICAgICAgIC8vIG5ldHdvcmsKICAgICAgICBpZigkXzdbJ2lkJ10gPT0gJ25ldHdvcmsnKXsKICAgICAgICBzKCk7CiAgICAgICAgZWNobyAiCiAgICAgICAgPGRpdiBjbGFzcz0nY2FyZCB0ZXh0LWRhcmsnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLWhlYWRlcic+CiAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9J3Bvc3QnPgogICAgICAgICAgICAgICAgICAgIDx1PkJpbmQgcG9ydCB0byAvYmluL3NoIFtQZXJsXTwvdT48YnI+CiAgICAgICAgICAgICAgICAgICAgPHU+UG9ydCA6PC91PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgcGxhY2Vob2xkZXI9JzY5NjknPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nYnRuIGJ0bi1kYXJrIGJ0bi1zbScgdHlwZT0nc3VibWl0JyBuYW1lPSdicGwnIHZhbHVlPSdzdWJtaXQnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxoNT5CYWNrLUNvbm5lY3Q8L2g1PgogICAgICAgICAgICA8dT5TZXJ2ZXIgOjwvdT4KICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nc2VydmVyJyBwbGFjZWhvbGRlcj0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPgogICAgICAgICAgICA8dT5Qb3J0IDo8L3U+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2lucHV0LWdyb3VwJz4KICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgcGxhY2Vob2xkZXI9JzY5NjknPgogICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgbmFtZT0nYmMnPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9J3BlcmwnPnBlcmw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSdweXRob24nPnB5dGhvbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPgogICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtIGJ0bi1ibG9jaycgdHlwZT0nc3VibWl0JyB2YWx1ZT0nc3VibWl0Jz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPiI7CiAgICAgICAgaWYoJF83WydicGwnXSl7CiAgICAgICAgICAgICRicCA9IGJhc2U2NF9kZWNvZGUoIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aWFXNHZjMmdnTFdraU93MEthV1lnS0VCQlVrZFdJRHdnTVNrZ2V5QmxlR2wwS0RFcE95QjlEUXAxYzJVZ1UyOWphMlYwT3cwS2MyOWphMlYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTFSU1JVRk5MR2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuS1NrZ2ZId2daR2xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUlZWVFJVRkVSRklzTVNrN0RRcGlhVzVrS0ZNc2MyOWphMkZrWkhKZmFXNG9KRUZTUjFaYk1GMHNTVTVCUkVSU1gwRk9XU2twSUh4OElHUnBaU0FpUTJGdWRDQnZjR1Z1SUhCdmNuUmNiaUk3RFFwc2FYTjBaVzRvVXl3ektTQjhmQ0JrYVdVZ0lrTmhiblFnYkdsemRHVnVJSEJ2Y25SY2JpSTdEUXAzYUdsc1pTZ3hLU0I3RFFvSllXTmpaWEIwS0VOUFRrNHNVeWs3RFFvSmFXWW9JU2drY0dsa1BXWnZjbXNwS1NCN0RRb0pDV1JwWlNBaVEyRnVibTkwSUdadmNtc2lJR2xtSUNnaFpHVm1hVzVsWkNBa2NHbGtLVHNOQ2drSmIzQmxiaUJUVkVSSlRpd2lQQ1pEVDA1T0lqc05DZ2tKYjNCbGJpQlRWRVJQVlZRc0lqNG1RMDlPVGlJN0RRb0pDVzl3Wlc0Z1UxUkVSVkpTTENJK0prTlBUazRpT3cwS0NRbGxlR1ZqSUNSVFNFVk1UQ0I4ZkNCa2FXVWdjSEpwYm5RZ1EwOU9UaUFpUTJGdWRDQmxlR1ZqZFhSbElDUlRTRVZNVEZ4dUlqc05DZ2tKWTJ4dmMyVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSIpOwogICAgICAgICAgICAkYnJ0ID0gQGZvcGVuKCdicC5wbCcsJ3cnKTsKICAgICAgICAgICAgZndyaXRlKCRicnQsJGJwKTsKICAgICAgICAgICAgJG91dCA9IGV4ZSgicGVybCBicC5wbCAiLiRfN1sncG9ydCddLiIgMT4vZGV2L251bGwgMj4mMSAmIik7CiAgICAgICAgICAgIHNsZWVwKDEpOwogICAgICAgICAgICBlY2hvICI8cHJlPiRvdXRcbiIuZXhlKCJwcyBhdXggfCBncmVwIGJwLnBsIikuIjwvcHJlPiI7CiAgICAgICAgICAgIHVubGluaygiYnAucGwiKTsKICAgICAgICB9CiAgICAgICAgaWYoJF83WydiYyddID09ICdwZXJsJyl7CiAgICAgICAgICAgICRiYyA9IGJhc2U2NF9kZWNvZGUoIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR2xoWkdSeVBXbHVaWFJmWVhSdmJpZ2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVHNOQ2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNnbkwySnBiaTl6YUNBdGFTY3BPdzBLWTJ4dmMyVW9VMVJFU1U0cE93MEtZMnh2YzJVb1UxUkVUMVZVS1RzTkNtTnNiM05sS0ZOVVJFVlNVaWs3Iik7CiAgICAgICAgICAgICRwbGJjID0gQGZvcGVuKCdiYy5wbCcsJ3cnKTsKICAgICAgICAgICAgZndyaXRlKCRwbGJjLCRiYyk7CiAgICAgICAgICAgICRvdXQgPSBleGUoInBlcmwgYmMucGwgIi4kXzdbJ3NlcnZlciddLiIgIi4kXzdbJ3BvcnQnXS4iIDE+L2Rldi9udWxsIDI+JjEgJiIpOwogICAgICAgICAgICBzbGVlcCgxKTsKICAgICAgICAgICAgZWNobyAiPHByZT4kb3V0XG4iLmV4ZSgicHMgYXV4IHwgZ3JlcCBiYy5wbCIpLiI8L3ByZT4iOwogICAgICAgICAgICB1bmxpbmsoImJjLnBsIik7CiAgICAgICAgfQogICAgICAgIGlmKCRfN1snYmMnXSA9PSAncHl0aG9uJyl7CiAgICAgICAgICAgICRiY19weSA9IGJhc2U2NF9kZWNvZGUoIkl5RXZkWE55TDJKcGJpOXdlWFJvYjI0TkNpTlZjMkZuWlRvZ2NIbDBhRzl1SUdacGJHVnVZVzFsTG5CNUlFaFBVMVFnVUU5U1ZBMEthVzF3YjNKMElITjVjeXdnYzI5amEyVjBMQ0J2Y3l3Z2MzVmljSEp2WTJWemN3MEthWEJzYnlBOUlITjVjeTVoY21kMld6RmREUXB3YjNKMGJHOGdQU0JwYm5Rb2MzbHpMbUZ5WjNaYk1sMHBEUXB6YjJOclpYUXVjMlYwWkdWbVlYVnNkSFJwYldWdmRYUW9OakFwRFFwa1pXWWdjSGxpWVdOclkyOXVibVZqZENncE9nMEtJQ0IwY25rNkRRb2dJQ0FnYW0xaUlEMGdjMjlqYTJWMExuTnZZMnRsZENoemIyTnJaWFF1UVVaZlNVNUZWQ3h6YjJOclpYUXVVMDlEUzE5VFZGSkZRVTBwRFFvZ0lDQWdhbTFpTG1OdmJtNWxZM1FvS0dsd2JHOHNjRzl5ZEd4dktTa05DaUFnSUNCcWJXSXVjMlZ1WkNnbkp5ZGNibEI1ZEdodmJpQkNZV05yUTI5dWJtVmpkQ0JDZVNCTmNpNTRRbUZ5WVd0MVpHRmNibFJvWVc1cmN5QkhiMjluYkdVZ1JtOXlJRkpsWm1WeVpXNXphVnh1WEc0bkp5Y3BEUW9nSUNBZ2IzTXVaSFZ3TWlocWJXSXVabWxzWlc1dktDa3NNQ2tOQ2lBZ0lDQnZjeTVrZFhBeUtHcHRZaTVtYVd4bGJtOG9LU3d4S1EwS0lDQWdJRzl6TG1SMWNESW9hbTFpTG1acGJHVnVieWdwTERJcERRb2dJQ0FnYjNNdVpIVndNaWhxYldJdVptbHNaVzV2S0Nrc015a05DaUFnSUNCemFHVnNiQ0E5SUhOMVluQnliMk5sYzNNdVkyRnNiQ2hiSWk5aWFXNHZjMmdpTENJdGFTSmRLUTBLSUNCbGVHTmxjSFFnYzI5amEyVjBMblJwYldWdmRYUTZEUW9nSUNBZ2NISnBiblFnSWxScGJVOTFkQ0lOQ2lBZ1pYaGpaWEIwSUhOdlkydGxkQzVsY25KdmNpd2daVG9OQ2lBZ0lDQndjbWx1ZENBaVJYSnliM0lpTENCbERRcHdlV0poWTJ0amIyNXVaV04wS0NrPSIpOwogICAgICAgICAgICAkcGJjX3B5ID0gQGZvcGVuKCdiY3B5LnB5JywndycpOwogICAgICAgICAgICBmd3JpdGUoJHBiY19weSwkYmNfcHkpOwogICAgICAgICAgICAkb3V0X3B5ID0gZXhlKCJweXRob24gYmNweS5weSAiLiRfN1snc2VydmVyJ10uIiAiLiRfN1sncG9ydCddKTsKICAgICAgICAgICAgc2xlZXAoMSk7CiAgICAgICAgICAgIGVjaG8gIjxwcmU+JG91dF9weVxuIi5leGUoInBzIGF1eCB8IGdyZXAgYmNweS5weSIpLiI8L3ByZT4iOwogICAgICAgICAgICB1bmxpbmsoImJjcHkucHkiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlY2hvICI8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPGJyLz4iOwogICAgICAgIH0KICAgICAgICAvLyBjb25zb2xlCiAgICAgICAgaWYoJF83WydpZCddID09ICdjbWQnKSB7CiAgICAgICAgcygpOwogICAgICAgIGlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSkgewogICAgICAgICAgICAkY21kID0gc2hlbGxfZXhlYygkX1BPU1RbJ2NtZCddLicgMj4mMScpOwogICAgICAgIH0KICAgICAgICBlY2hvICIKICAgICAgICA8ZGl2IGNsYXNzPSdtYi0zJz4KICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSdQT1NUJz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2lucHV0LWdyb3VwIG1iLTMnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nY21kJyB2YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnY21kJ10sIEVOVF9RVU9URVMsICdVVEYtOCcpLiInIHBsYWNlaG9sZGVyPSd3aG9hbWknICRfcj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyB0eXBlPSdzdW1iaXQnPjxpIGNsYXNzPSdiaSBiaS1hcnJvdy1yZXR1cm4tcmlnaHQnPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Zvcm0+IjsKICAgICAgICAgICAgaWYoJGNtZCk6CiAgICAgICAgICAgIGVjaG8gJwogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4KICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxncj5+PC9ncj4kJm5ic3A7PHJkPicuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2NtZCddKS4nPC9yZD48YnI+PGNvZGU+Jy5odG1sc3BlY2lhbGNoYXJzKCRjbWQsIEVOVF9RVU9URVMsICdVVEYtOCcpLic8L2NvZGU+PC9wcmU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgZWxzZWlmKCEkY21kICYmICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09ICdQT1NUJyk6CiAgICAgICAgICAgIGVjaG8gJwogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4KICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPk5vIHJlc3VsdDwvY29kZT48L3ByZT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4nOwogICAgICAgIGVuZGlmOwogICAgICAgIH0KICAgICAgICAvLyBtdWxsdGlwbGUgdXBsb2FkCiAgICAgICAgaWYoJF83WydpZCddID09ICd1cGxvYWQnKXsKICAgICAgICBzKCk7CiAgICAgICAgaWYoaXNzZXQoJF83Wyd1cGwnXSkpewogICAgICAgICAgICAkcmVzdWx0ID0gY291bnQoJF9GSUxFU1snZmlsZSddWyduYW1lJ10pOwogICAgICAgICAgICBmb3IoJGNvbnRlbnRzPTA7JGNvbnRlbnRzPCRyZXN1bHQ7JGNvbnRlbnRzKyspewogICAgICAgICAgICAgICAgJG5hbWVmaWxlID0gJF9GSUxFU1snZmlsZSddWyduYW1lJ11bJGNvbnRlbnRzXTsKICAgICAgICAgICAgICAgICAgICAkdXAgPSBAY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ11bJGNvbnRlbnRzXSwiJHBhdGgvIi4kbmFtZWZpbGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoJHJlc3VsdCA8IDIpewogICAgICAgICAgICAgICAgICAgIGlmKCR1cCl7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPHN0cm9uZz5VcGxvYWQ8L3N0cm9uZz4gJG5hbWVmaWxlIG9rISAiLm9rKCkuIjwvZGl2PiI7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGVjaG8gJzxzdHJvbmc+VXBsb2FkPC9zdHJvbmc+IGZhaWwhICcuZXIoKS4nPC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGVjaG8gIjxzdHJvbmc+VXBsb2FkPC9zdHJvbmc+ICRyZXN1bHQgb2shICIub2soKS4iPC9kaXY+IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlY2hvICIKICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkIGNhcmQtYm9keSB0ZXh0LWRhcmsgaW5wdXQtZ3JvdXAgbWItMyc+CiAgICAgICAgPHU+TXVsdGlwbGUgdXBsb2FkPC91PgogICAgICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbScgdHlwZT0nZmlsZScgbmFtZT0nZmlsZVtdJyBtdWx0aXBsZT0nJyAkX3I+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtJyB0eXBlPSdzdWJtaXQnIG5hbWU9J3VwbCcgdmFsdWU9J3VwbG9hZCc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvZGl2PiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gc2Nhbm5lciByb290ICNhbm9uNwogICAgICAgIGlmIChpc3NldCgkX0dFVFsnZGlyJ10pICYmICRfR0VUWydpZCddID09ICJzY2FuX3Jvb3QiKSB7CiAgICAgICAgICAgIG9iX2ltcGxpY2l0X2ZsdXNoKCk7b2JfZW5kX2ZsdXNoKCk7cygpOwogICAgICAgICAgICBlY2hvICIKICAgICAgICAgICAgPGRpdiBjbGFzcz0ndGV4dC1jZW50ZXInPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nYnRuLWdyb3VwIG1iLTMnPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSciLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiImaWRfdHdvPWF1dG9zY2FuJz48aSBjbGFzcz0nYmkgYmktYnVnJz48L2k+IEF1dG8gc2NhbjwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nIi4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXS4iJmlkX3R3bz1zY2Fuc2QnPjxpIGNsYXNzPSdiaSBiaS1zZWFyY2gnPjwvaT4gU2NhbiBTVUlEPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSciLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiImaWRfdHdvPWVzZyc+PGkgY2xhc3M9J2JpIGJpLXNlYXJjaCc+PC9pPiBFeHBsb2l0IHN1Z2dlc3RlcjwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4iOwogICAgICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygicHJvY19vcGVuIikpIHsKICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXIgY2xhc3M9J2FudSc+Q29tbWFuZCBpcyBEaXNhYmxlZCAhPC9jZW50ZXI+IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWlzX3dyaXRhYmxlKCRwYXRoKSkgewogICAgICAgICAgICAgICAgZWNobyAiPGNlbnRlciBjbGFzcz0nYW51Jz5DdXJyZW50IERpcmVjdG9yeSBpcyBVbndyaXRlYWJsZSAhPC9jZW50ZXI+IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2lkX3R3byddKSAmJiAkX0dFVFsnaWRfdHdvJ10gPT0gImF1dG9zY2FuIikgewogICAgICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkcGF0aC4iL3Jvb3RpbmcvIikpIHsKICAgICAgICAgICAgICAgICAgICBta2RpcigkcGF0aC4iL3Jvb3RpbmciKTsKICAgICAgICAgICAgICAgICAgICBleGVfcm9vdCgid2dldCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaGVrZXJwcm90enkvcm9vdHNoZWxsL21haW4vYXV0by50YXIuZ3oiLCAkcGF0aC4iL3Jvb3RpbmciKTsKICAgICAgICAgICAgICAgICAgICBleGVfcm9vdCgidGFyIC14ZiBhdXRvLnRhci5neiIsICRwYXRoLiIvcm9vdGluZyIpOwogICAgICAgICAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoJHBhdGguIi9yb290aW5nL25ldGZpbHRlciIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpZSgiPGNlbnRlciBjbGFzcz0nYW51Jz5GYWlsZWQgdG8gRG93bmxvYWQgTWF0ZXJpYWwgITwvY2VudGVyPiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gJwogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoZWxsIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPk5ldGZpbHRlciA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL25ldGZpbHRlciIsICRwYXRoKS4nUHRyYWNlIDogJy5leGVfcm9vdCgiZWNobyBpZCB8IHRpbWVvdXQgMTAgLi9yb290aW5nL3B0cmFjZSIsICRwYXRoKS4nU2VxdW9pYSA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL3NlcXVvaWEiLCAkcGF0aCkuJ092ZXJsYXlGUyA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vb3ZlcmxheWZzIiwgJHBhdGguIi9yb290aW5nIikuJ0RpcnR5cGlwZSA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vcm9vdGluZy9kaXJ0eXBpcGUgL3Vzci9iaW4vc3UiLCAkcGF0aCkuJ1N1ZG8gOiAnLmV4ZV9yb290KCJlY2hvIDEyMzQ1IHwgdGltZW91dCAxMCBzdWRvZWRpdCAtcyBZIiwgJHBhdGgpLidQd25raXQgOiAnLmV4ZV9yb290KCJlY2hvIGlkIHwgdGltZW91dCAxMCAuL3B3bmtpdCIsICRwYXRoLiIvcm9vdGluZyIpLicnLmV4ZV9yb290KCJybSAtcmYgcm9vdGluZyIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfR0VUWydpZF90d28nXSkgJiYgJF9HRVRbJ2lkX3R3byddID09ICJzY2Fuc2QiKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8Y2VudGVyIGNsYXNzPSJhbnUiPlsrXSBTY2FubmluZyAuLi48L2NlbnRlcj4nOwogICAgICAgICAgICAgICAgZWNobyAnCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hlbGwgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmUgc3R5bGU9ImZvbnQtc2l6ZToxMHB4OyI+PGNvZGU+Jy5leGVfcm9vdCgiZmluZCAvIC1wZXJtIC11PXMgLXR5cGUgZiAyPi9kZXYvbnVsbCIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfR0VUWydpZF90d28nXSkgJiYgJF9HRVRbJ2lkX3R3byddID09ICJlc2ciKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8Y2VudGVyIGNsYXNzPSJhbnUiPlsrXSBMb2FkaW5nIC4uLjwvY2VudGVyPic7CiAgICAgICAgICAgICAgICBlY2hvICcKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCBsYW5ndWFnZS1qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHByZSBzdHlsZT0iZm9udC1zaXplOjEwcHg7Ij48Y29kZT4nLmV4ZV9yb290KCJjdXJsIC1Mc2sgaHR0cDovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbXpldC0vbGludXgtZXhwbG9pdC1zdWdnZXN0ZXIvbWFzdGVyL2xpbnV4LWV4cGxvaXQtc3VnZ2VzdGVyLnNoIHwgYmFzaCIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBvcGVuZmlsZQogICAgICAgIGlmKGlzc2V0KCRfN1snb3BuJ10pKSB7CiAgICAgICAgICAgICRmaWxlID0gJF83WydvcG4nXTsKICAgICAgICB9ICAgCiAgICAgICAgLy8gdmlldwogICAgICAgIGlmKCRfN1snYWN0aW9uJ10gPT0gJ3ZpZXcnKSB7CiAgICAgICAgcygpOwogICAgICAgIGVjaG8gIgogICAgICAgIDxkaXYgY2xhc3M9J2J0bi1ncm91cCc+CiAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj12aWV3Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZWRpdCZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtc3F1YXJlJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRvd25sb2FkJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWRvd25sb2FkJz48L2k+PC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIDxicj4KICAgICAgICAgICAgPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPjombmJzcDsiLmJhc2VuYW1lKCRmaWxlKS4iCiAgICAgICAgPC9icj4KICAgICAgICA8ZGl2IGNsYXNzPSdiZy1kYXJrJz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQnPgogICAgICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9JzEwJyBjbGFzcz0nZm9ybS1jb250cm9sJyBkaXNhYmxlZD0nJz4iLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKS4iPC90ZXh0YXJlYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+IjsKICAgICAgICB9CiAgICAgICAgLy8gZWRpdAogICAgICAgIGlmKGlzc2V0KCRfN1snZWRpdF9maWxlJ10pKSB7CiAgICAgICAgICAgICR1cGR0ID0gZm9wZW4oIiRmaWxlIiwgInciKTsKICAgICAgICAgICAgJHJlc3VsdCA9IGZ3cml0ZSgkdXBkdCwgJF83Wydjb250ZW50cyddKTsgICAgICAgCiAgICAgICAgICAgIGlmICgkcmVzdWx0KSB7CiAgICAgICAgZWNobyAnPHN0cm9uZz5FZGl0IGZpbGU8L3N0cm9uZz4gb2shICcub2soKS4nPC9kaXY+JzsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgZWNobyAnPHN0cm9uZz5FZGl0IGZpbGU8L3N0cm9uZz4gZmFpbCEgJy5lcigpLic8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCRfN1snYWN0aW9uJ10gPT0gJ2VkaXQnKSB7CiAgICAgICAgcygpOwogICAgICAgIGVjaG8gIgogICAgICAgIDxkaXYgY2xhc3M9J2J0bi1ncm91cCc+CiAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj12aWV3Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZWRpdCZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtc3F1YXJlJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRvd25sb2FkJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWRvd25sb2FkJz48L2k+PC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIDxicj4KICAgICAgICAgICAgPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPjombmJzcDsiLmJhc2VuYW1lKCRmaWxlKS4iCiAgICAgICAgPC9icj4KICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnPgogICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHJvd3M9JzEwJyBuYW1lPSdjb250ZW50cycgJF9yPiIuaHRtbHNwZWNpYWxjaGFycyhmaWxlX2dldF9jb250ZW50cygkZmlsZSkpLiI8L3RleHRhcmVhPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VtYml0JyBuYW1lPSdlZGl0X2ZpbGUnPjxpIGNsYXNzPSdiaSBiaS1hcnJvdy1yZXR1cm4tcmlnaHQnPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPiI7CiAgICAgICAgfQogICAgICAgIC8vcmVuYW1lIGZvbGRlcgogICAgICAgIGlmKCRfN1snYWN0aW9uJ10gPT0gJ3JlbmFtZV9mb2xkZXInKSB7CiAgICAgICAgICAgIGlmKCRfN1sncl9kJ10pIHsKICAgICAgICAgICAgICAgICRyX2QgPSByZW5hbWUoJGRpciwgIiIuZGlybmFtZSgkZGlyKS4iLyIuaHRtbHNwZWNpYWxjaGFycygkXzdbJ3JfZCddKS4iIik7CiAgICAgICAgICAgICAgICBpZigkcl9kKSB7CiAgICAgICAgZWNobyAnPHN0cm9uZz5SZW5hbWUgZm9sZGVyPC9zdHJvbmc+IG9rISAnLm9rKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgIGVjaG8gJzxzdHJvbmc+UmVuYW1lIGZvbGRlcjwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIHMoKTsKICAgICAgICBlY2hvICIKICAgICAgICA8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGJyPgogICAgICAgICAgICA8aSBjbGFzcz0nYmkgYmktZm9sZGVyLWZpbGwnPjwvaT46Jm5ic3A7Ii5iYXNlbmFtZSgkZGlyKS4iCiAgICAgICAgPC9icj4KICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+CiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHR5cGU9J3RleHQnIHZhbHVlPSciLmJhc2VuYW1lKCRkaXIpLiInIG5hbWU9J3JfZCcgJF9yPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VibWl0Jz48aSBjbGFzcz0nYmkgYmktYXJyb3ctcmV0dXJuLXJpZ2h0Jz48L2k+PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4iOwogICAgICAgIH0KICAgICAgICAvL3JlbmFtZSBmaWxlCiAgICAgICAgaWYoaXNzZXQoJF83WydyX2YnXSkpIHsKICAgICAgICAgICAgJG9sZCA9ICRmaWxlOwogICAgICAgICAgICAkbmV3ID0gJF83WyduZXdfbmFtZSddOwogICAgICAgICAgICByZW5hbWUoJG5ldywgJG9sZCk7CiAgICAgICAgICA