Whether you’re road-tripping through Portugal or flying in for a short visit, having a clear plan matters when you only have one day in Porto.
It’s a city we return to often. Since living in Portugal, we’ve visited Porto multiple times – on short stays, longer weekends, and when showing friends and family around for the first time.
What we’ve learned is that Porto rewards travellers who understand how the city is laid out before diving in.
Porto isn’t hard to explore, but it is easy to do inefficiently. Steep hills, misleading distances, and busy attractions can quickly eat into limited time.
With just 24 hours, the goal isn’t to see everything. It’s to see the right things, in the right order, without ending the day exhausted.
This one day Porto itinerary is based on repeat visits and refined specifically for first-time visitors who are short on time.
It works as a self-guided walking route, balancing Porto’s most iconic sights with realistic pacing, honest skips, and a few quieter moments that make the city feel lived-in rather than staged.
One Day in Porto Walking Route: How This Itinerary Works
This itinerary is flexible by design. You can swap stops, skip anything that doesn’t interest you, or slow things down where needed.
We haven’t assigned strict times or restaurant bookings. We usually carry snacks and decide where to eat once we’re hungry, but there are plenty of cafés and restaurants along this route.
Since this is essentially a one day walking tour of Porto, the route has been planned to:
- minimise steep climbs
- avoid unnecessary backtracking
- group sights logically
- leave breathing room rather than locking you into times
Below, you’ll find a Google Map of the full walking route so you can save it to your phone and adjust it as needed.
If you’d rather see the city with a guide, we highly recommend this free walking tour led by a local!
Start at São Bento Station
We almost always start at São Bento Station, even when we’re not arriving by train.
On our first visit, we rushed through it, assuming it was just another attractive station only to double back around once we realised our mistake!
On later trips, we slowed down and it completely changed how we experienced it.
The azulejo panels aren’t decorative filler; they tell detailed stories from Portuguese history, and once you realise that, the space feels closer to a museum than a transport hub.
Timing matters here. Early in the morning, São Bento is calm and easy to appreciate. Later in the day, it becomes chaotic and crowded, which makes it much harder to enjoy.
Starting here sets a good tone for the rest of the day before the itinerary becomes busier.
Even after multiple visits, when we’re taking family around the city this is one stop we still make time for – which is usually our test for whether something truly belongs in a one-day itinerary.
Admire the Blue and White Façade of Igreja de Santo Ildefonso
A short walk from São Bento brings you to Igreja de Santo Ildefonso, one of the first places where Porto’s iconic blue and white tiles really stand out.
This isn’t a long stop, and that’s fine. What it does well is reinforce the architectural style you’ll keep seeing throughout the day.
On early visits, we didn’t think much of it; now, we see it as a visual cue that you’re fully in Porto’s historic centre.
If you’re short on time, this is a look-and-move-on stop.
Get Insta-Worthy Photos at Capela das Almas
Capela das Almas is one of Porto’s most photographed buildings, and nearly every itinerary includes it – for good reason!
The exterior is covered in around 16,000 azulejo tiles depicting scenes from the lives of Saint Francis of Assisi and Saint Catherine.
It’s undeniably striking, but it’s also one of the busier stops on this route.
We’ve found this works best as a short pause rather than somewhere to linger.
On one visit, we spent too long waiting for photos and ended up feeling rushed later in the day.
Now, we stop, admire it, and move on, appreciating it without letting it dictate the pace.
Fun fact: São Bento Station, Igreja de Santo Ildefonso, and Capela das Almas were all decorated by the same artist.
Visit The Iconic Igreja dos Clérigos
From here, the route loops back toward the historic centre and reaches Igreja dos Clérigos.
The granite tower rises 75 metres above the city and becomes a reference point you’ll keep spotting throughout the day.
You can climb it for panoramic views, and on our first visit we did, but on later trips, we skipped it.
Why? Because Porto offers several excellent viewpoints later on that don’t involve queues or staircases.
If you’re short on time, saving yourself here makes the rest of the day feel more manageable.
If tower climbs are your thing, go for it – you can book your tickets here! Otherwise, we’d keep moving.
Optional Stop: Livraria Lello (We Personally Skip It)
Livraria Lello sits right near Clérigos, so it makes sense geographically… but it’s also one of the most debated stops in Porto.
Yes, it’s beautiful. The interior is ornate, the staircase is striking, and visually, it’s impressive. But on a one day in Porto itinerary, we personally skipped it, and have done so on multiple visits.
The biggest issue is time versus payoff. Entry now requires a ticket, queues are long even with timed slots, and once inside, the space is often extremely crowded.
Instead of browsing or appreciating the details, most people move through quickly trying to get photos.
There’s also the persistent Harry Potter narrative. While Livraria Lello is often described as inspiration for J.K. Rowling, this has never been confirmed and is widely overstated.
If you genuinely love bookshops or unique retail spaces, Livraria Lello could be worth visiting.
But if your goal is to experience Porto rather than queue in it, skipping this stop tends to make the rest of the day far more relaxed.
Discover The Twin Churches & Porto’s Hidden House
A few steps away are Igreja do Carmo and Igreja dos Carmelitas, often referred to as Porto’s twin churches.
Between them sits one of the city’s quirkiest features: a house just 1.5 metres wide.
Built to keep monks and nuns separated, it’s now open as a small museum and also provides access to Porto’s catacombs.
We didn’t even realise Porto had catacombs until a later visit, which says a lot about how much the city reveals itself over time.
If you enjoy odd details and lesser-known stories, this stop adds something different.
+LmxhYmVsLWRlc2NyaXB0aW9uOjphZnRlciwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnMgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9uc09wdGlvbnNDaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vkfi5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1maWVsZFJvdyAuY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2Vkfi5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWludGVyZXN0R3JvdXBzUm93IC5tbC1mb3JtLWludGVyZXN0R3JvdXBzUm93Q2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZH4ubGFiZWwtZGVzY3JpcHRpb246OmFmdGVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzZSUzY3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNlJTNjL3N2ZyUzZSIpOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNlJTNjY2lyY2xlIHI9JzMnIGZpbGw9JyUyM2ZmZicvJTNlJTNjL3N2ZyUzZSIpOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWhvcml6b250YWxSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWZpZWxkUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1lbWJlZFBlcm1pc3Npb25zIC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnNPcHRpb25zQ2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZH4ubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWludGVyZXN0R3JvdXBzUm93IC5tbC1mb3JtLWludGVyZXN0R3JvdXBzUm93Q2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZH4ubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWNoZWNrYm94Um93IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWR+LmxhYmVsLWRlc2NyaXB0aW9uOjpiZWZvcmUgIHsKICAgICAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiFpbXBvcnRhbnQ7CiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWZpZWxkUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1maWVsZFJvdyAuY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWZpZWxkUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1maWVsZFJvdyAuY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgICAgICAgICAgdG9wOiAycHg7CiAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnMgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9uc09wdGlvbnNDaGVja2JveCAubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnMgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9uc09wdGlvbnNDaGVja2JveCAubGFiZWwtZGVzY3JpcHRpb246OmFmdGVyLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cgLmxhYmVsLWRlc2NyaXB0aW9uOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyAubGFiZWwtZGVzY3JpcHRpb246OmFmdGVyIHsKICAgICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyAubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWNoZWNrYm94Um93IC5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIgewogICAgICAgIHRvcDogMHB4IWltcG9ydGFudDsKICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94IWltcG9ydGFudDsKICAgICAgfQoKICAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1JvdyAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1Jvd0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIgewogICAgICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ghaW1wb3J0YW50OwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGxlZnQ6IC0xLjVyZW07CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICB3aWR0aDogMXJlbTsKICAgICAgICAgICAgaGVpZ2h0OiAxcmVtOwogICAgICAgICAgICBjb250ZW50OiAiIjsKICAgICAgIH0KCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1JvdyAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1Jvd0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YmVmb3JlIHsKICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDRweDsKICAgICAgICAgIGxlZnQ6IC0xLjVyZW07CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICBib3JkZXI6ICNhZGI1YmQgc29saWQgMXB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDJweCFpbXBvcnRhbnQ7CiAgICAgICAgICBsZWZ0OiAtMS41cmVtOwogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICB3aWR0aDogMXJlbTsKICAgICAgICAgIGhlaWdodDogMXJlbTsKICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9ucyAubWwtZm9ybS1lbWJlZFBlcm1pc3Npb25zT3B0aW9uc0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YmVmb3JlLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0taW50ZXJlc3RHcm91cHNSb3cgLm1sLWZvcm0taW50ZXJlc3RHcm91cHNSb3dDaGVja2JveCAubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWNoZWNrYm94Um93IC5sYWJlbC1kZXNjcmlwdGlvbjo6YmVmb3JlIHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIHRvcDogNHB4OwogICAgICAgICAgbGVmdDogLTEuNXJlbTsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgICAgIGJvcmRlcjogI2FkYjViZCBzb2xpZCAxcHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1lbWJlZFBlcm1pc3Npb25zIC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnNPcHRpb25zQ2hlY2tib3ggLmxhYmVsLWRlc2NyaXB0aW9uOjphZnRlciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgICBsZWZ0OiAtMS41cmVtOwogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICB3aWR0aDogMXJlbTsKICAgICAgICAgIGhlaWdodDogMXJlbTsKICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cgLmxhYmVsLWRlc2NyaXB0aW9uOjphZnRlciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgICBsZWZ0OiAtMS41cmVtOwogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICB3aWR0aDogMXJlbTsKICAgICAgICAgIGhlaWdodDogMXJlbTsKICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUvNTAlIDUwJTsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9ucyAubWwtZm9ybS1lbWJlZFBlcm1pc3Npb25zT3B0aW9uc0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1JvdyAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1Jvd0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyAubGFiZWwtZGVzY3JpcHRpb246OmFmdGVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUvNTAlIDUwJTsKICAgICAgfQoKICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWZpZWxkUm93IC5jdXN0b20tY29udHJvbCwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWhvcml6b250YWxSb3cgLmN1c3RvbS1jb250cm9sIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWluLWhlaWdodDogMS41cmVtOwogICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0LCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0IHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIHotaW5kZXg6IC0xOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtbGFiZWwsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtbGFiZWwsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsIHsKICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgZm9udC1zaXplOiAxMnB4IWltcG9ydGFudDsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4OwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1zZWxlY3QsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tc2VsZWN0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7CiAgICAgICAgY29sb3I6ICMzMzMzMzMgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItY29sb3I6ICNjY2NjY2M7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZCAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIHBhZGRpbmc6IDEwcHggMjhweCAxMHB4IDEycHggIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgYmFja2dyb3VuZDogdXJsKCdodHRwczovL2Fzc2V0cy5tbGNkbi5jb20vbWwvaW1hZ2VzL2RlZmF1bHQvZHJvcGRvd24uc3ZnJykgbm8tcmVwZWF0IHJpZ2h0IC43NXJlbSBjZW50ZXIvOHB4IDEwcHg7CiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICBhcHBlYXJhbmNlOiBub25lOwogICAgICB9CgoKICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWhvcml6b250YWxSb3cgewogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgfQogICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5tbC1pbnB1dC1ob3Jpem9udGFsIHsgd2lkdGg6IDcwJTsgZmxvYXQ6IGxlZnQ7IH0KICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0gLm1sLWZvcm0taG9yaXpvbnRhbFJvdyAubWwtYnV0dG9uLWhvcml6b250YWwgeyB3aWR0aDogMzAlOyBmbG9hdDogbGVmdDsgfQogICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5tbC1idXR0b24taG9yaXpvbnRhbC5sYWJlbHNPbiB7IHBhZGRpbmctdG9wOiAyNXB4OyAgfQogICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5ob3Jpem9udGFsLWZpZWxkcyB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZsb2F0OiBsZWZ0OyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0taG9yaXpvbnRhbFJvdyBpbnB1dCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgICBjb2xvcjogIzMzMzMzMzsKICAgICAgICBib3JkZXItY29sb3I6ICNjY2NjY2M7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgb3ZlcmZsb3cteTogaW5pdGlhbDsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0taG9yaXpvbnRhbFJvdyBidXR0b24gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM1REJDRDIgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItY29sb3I6ICM1REJDRDI7CiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgICAgICBib3JkZXItd2lkdGg6IDFweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IGJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzMzMyAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci1jb2xvcjogIzMzMzMzMyAhaW1wb3J0YW50OwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHotaW5kZXg6IC0xOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtOwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyAubGFiZWwtZGVzY3JpcHRpb24gewogICAgICAgIGNvbG9yOiAjMDAwMDAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyBsYWJlbCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWluLWhlaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CgogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyBsYWJlbCBhIHsKICAgICAgICBjb2xvcjogIzAwMDAwMDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cgbGFiZWwgcCB7CiAgICAgICAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICAgICAgICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE4cHggIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwIDVweCAwIDAgIWltcG9ydGFudDsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cgbGFiZWwgcDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkU3VibWl0IHsKICAgICAgICBtYXJnaW46IDAgMCAyMHB4IDA7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkU3VibWl0IGJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzVEQkNEMiAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsKICAgICAgICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHggIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1lbWJlZFN1Ym1pdCBidXR0b24ubG9hZGluZyB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZW1iZWRTdWJtaXQgYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzMzMzICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgICAgLm1sLXN1YnNjcmliZS1jbG9zZSB7CiAgICAgICAgd2lkdGg6IDMwcHg7CiAgICAgICAgaGVpZ2h0OiAzMHB4OwogICAgICAgIGJhY2tncm91bmQ6IHVybCgnaHR0cHM6Ly9hc3NldHMubWxjZG4uY29tL21sL2ltYWdlcy9kZWZhdWx0L21vZGFsX2Nsb3NlLnBuZycpIG5vLXJlcGVhdDsKICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDMwcHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIG1hcmdpbi10b3A6IC0xMHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogLTEwcHg7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgfQogICAgICAubWwtZXJyb3IgaW5wdXQsIC5tbC1lcnJvciB0ZXh0YXJlYSwgLm1sLWVycm9yIHNlbGVjdCB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiByZWQhaW1wb3J0YW50OwogICAgICB9CgogICAgICAubWwtZXJyb3IgLmN1c3RvbS1jaGVja2JveC1yYWRpby1saXN0IHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZWQgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgfQoKICAgICAgLm1sLWVycm9yIC5sYWJlbC1kZXNjcmlwdGlvbiwKICAgICAgLm1sLWVycm9yIC5sYWJlbC1kZXNjcmlwdGlvbiBwLAogICAgICAubWwtZXJyb3IgLmxhYmVsLWRlc2NyaXB0aW9uIHAgYSwKICAgICAgLm1sLWVycm9yIGxhYmVsOmZpcnN0LWNoaWxkIHsKICAgICAgICBjb2xvcjogI2ZmMDAwMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cubWwtZXJyb3IgLmxhYmVsLWRlc2NyaXB0aW9uIHAsCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdy5tbC1lcnJvciAubGFiZWwtZGVzY3JpcHRpb24gcDpmaXJzdC1sZXR0ZXIgewogICAgICAgIGNvbG9yOiAjZmYwMDAwICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NTBweCl7CgogICAgICAgIC5tbC1mb3JtLWVtYmVkV3JhcHBlci5lbWJlZERlZmF1bHQsIC5tbC1mb3JtLWVtYmVkV3JhcHBlci5lbWJlZFBvcHVwIHsgd2lkdGg6IDEwMCUhaW1wb3J0YW50OyB9CiAgICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0geyBmbG9hdDogbGVmdCFpbXBvcnRhbnQ7IH0KICAgICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IHsgaGVpZ2h0OiBhdXRvIWltcG9ydGFudDsgd2lkdGg6IDEwMCUhaW1wb3J0YW50OyBmbG9hdDogbGVmdCFpbXBvcnRhbnQ7IH0KICAgICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5tbC1pbnB1dC1ob3Jpem9udGFsIHsgd2lkdGg6IDEwMCUhaW1wb3J0YW50OyB9CiAgICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0gLm1sLWZvcm0taG9yaXpvbnRhbFJvdyAubWwtaW5wdXQtaG9yaXpvbnRhbCA+IGRpdiB7IHBhZGRpbmctcmlnaHQ6IDBweCFpbXBvcnRhbnQ7IHBhZGRpbmctYm90dG9tOiAxMHB4OyB9CiAgICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0gLm1sLWJ1dHRvbi1ob3Jpem9udGFsIHsgd2lkdGg6IDEwMCUhaW1wb3J0YW50OyB9CiAgICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0gLm1sLWJ1dHRvbi1ob3Jpem9udGFsLmxhYmVsc09uIHsgcGFkZGluZy10b3A6IDBweCFpbXBvcnRhbnQ7IH0KCiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgCiAgCiAgICAKICAgIAoKICAgIAogICAgCgogICAgCiAgICAKCiAgICAKCiAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAKCiAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAKCiAgICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgCgogICAgICAKCiAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgCgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAKCiAgICAgICAKCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAKCgogICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAKCgoKICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgCgoKICAgICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAgCiAgICAKICAKCiAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgIAoKICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgIAoKICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgIAoKICAgICAgIAoKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIAoKICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAKCiAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgCgogICAgCgogICAgCgoKICAgICAgCgoKICAgICAgCgogICAgICAKICAgICAgCgogICAgICAKCiAgICAgIAoKCgoKCiAgICAKCiAgICAgIAogICAgPGRpdiBpZD0ibWxiMi0zNjIwNTUzMyIgY2xhc3M9Im1sLWZvcm0tZW1iZWRDb250YWluZXIgbWwtc3Vic2NyaWJlLWZvcm0gbWwtc3Vic2NyaWJlLWZvcm0tMzYyMDU1MzMiPgogICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLWFsaWduLWNlbnRlciAiPgogICAgICAgIDxkaXYgY2xhc3M9Im1sLWZvcm0tZW1iZWRXcmFwcGVyIGVtYmVkRm9ybSI+CgogICAgICAgICAgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLWVtYmVkSGVhZGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vc3RvcmFnZS5tbGNkbi5jb20vYWNjb3VudF9pbWFnZS81NDIzNDMvb3FvVTh5QmJSMktEdjh6VnFPNGEzWmZkU1VDbm5tRGZrbm0xYlJNRy5wbmciIGJvcmRlcj0iMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NTBweCl7CiAgICAgICAgICAgICAgICAgIC5tbC1mb3JtLWVtYmVkSGVhZGVyIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgPC9zdHlsZT4KCiAgICAgICAgICAgIAogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ibWwtZm9ybS1lbWJlZEJvZHkgbWwtZm9ybS1lbWJlZEJvZHlEZWZhdWx0IHJvdy1mb3JtIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1sLWZvcm0tZW1iZWRDb250ZW50IiBzdHlsZT0iICI+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8aDQ+8J+amSBPdmVyd2hlbG1lZCBieSBQbGFubmluZyBZb3VyIFBvcnR1Z2FsIFJvYWQgVHJpcD88L2g0PgogICAgICAgICAgICAgICAgPHA+R2V0IHJvYWQgdHJpcCByZWFkeSB3aXRoIG91ciZuYnNwOzxzdHJvbmc+ZnJlZSBQb3J0dWdhbCBwbGFubmVyPC9zdHJvbmc+Jm5ic3A7LSBpbmNsdWRpbmcgc2V0dXAgY2hlY2tsaXN0cywgYnVkZ2V0IHRpcHMsIHNhZmV0eSBhZHZpY2UsIGFuZCBzcGFjZSB0byBtYXAgb3V0IHlvdXIgb3duIHJvdXRlLjwvcD4KPHA+UGx1cyByZWNlaXZlIGJlaGluZC10aGUtc2NlbmVzIHN0b3JpZXMgYW5kJm5ic3A7b3VyIGJlc3QgdGlwcyBmb3Igcm9hZCB0cmlwcGluZywgc3RyYWlnaHQgdG8geW91ciBpbmJveDxicj48L3A+CgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJtbC1ibG9jay1mb3JtIiBhY3Rpb249Imh0dHBzOi8vYXNzZXRzLm1haWxlcmxpdGUuY29tL2pzb25wLzU0MjM0My9mb3Jtcy8xNzc1NzI4MTU3MTE1MDM1MjUvc3Vic2NyaWJlIiBkYXRhLWNvZGU9IiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtZm9ybS1mb3JtQ29udGVudCI+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLWZpZWxkUm93ICI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtZmllbGQtZ3JvdXAgbWwtZmllbGQtZW1haWwgbWwtdmFsaWRhdGUtZW1haWwgbWwtdmFsaWRhdGUtcmVxdWlyZWQiPgoKICAgICAgICAgICAgICAgICAgICAgIAoKCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGlucHV0IC0tPgogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGFyaWEtbGFiZWw9ImVtYWlsIiBhcmlhLXJlcXVpcmVkPSJ0cnVlIiB0eXBlPSJlbWFpbCIgY2xhc3M9ImZvcm0tY29udHJvbCIgZGF0YS1pbnB1dG1hc2s9IiIgbmFtZT0iZmllbGRzW2VtYWlsXSIgcGxhY2Vob2xkZXI9IkVtYWlsIiBhdXRvY29tcGxldGU9ImVtYWlsIj4KICAgICAgICAgICAgICAgICAgICAgIDwhLS0gL2lucHV0IC0tPgoKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gdGV4dGFyZWEgLS0+CiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gL3RleHRhcmVhIC0tPgoKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc2VsZWN0IC0tPgogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIC9zZWxlY3QgLS0+CgogICAgICAgICAgICAgICAgICAgICAgPCEtLSBjaGVja2JveGVzIC0tPgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSAvY2hlY2tib3hlcyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIHJhZGlvIC0tPgogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIC9yYWRpbyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNvdW50cmllcyAtLT4KICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgPCEtLSAvY291bnRyaWVzIC0tPgoKCgoKCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9Im1sLWZvcm0tZmllbGRSb3cgbWwtbGFzdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1maWVsZC1ncm91cCBtbC1maWVsZC1uYW1lIj4KCiAgICAgICAgICAgICAgICAgICAgICAKCgogICAgICAgICAgICAgICAgICAgICAgPCEtLSBpbnB1dCAtLT4KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhcmlhLWxhYmVsPSJuYW1lIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBkYXRhLWlucHV0bWFzaz0iIiBuYW1lPSJmaWVsZHNbbmFtZV0iIHBsYWNlaG9sZGVyPSJOYW1lIiBhdXRvY29tcGxldGU9ImdpdmVuLW5hbWUiPgogICAgICAgICAgICAgICAgICAgICAgPCEtLSAvaW5wdXQgLS0+CgogICAgICAgICAgICAgICAgICAgICAgPCEtLSB0ZXh0YXJlYSAtLT4KICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgPCEtLSAvdGV4dGFyZWEgLS0+CgogICAgICAgICAgICAgICAgICAgICAgPCEtLSBzZWxlY3QgLS0+CiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gL3NlbGVjdCAtLT4KCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNoZWNrYm94ZXMgLS0+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIC9jaGVja2JveGVzIC0tPgoKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcmFkaW8gLS0+CiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gL3JhZGlvIC0tPgoKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gY291bnRyaWVzIC0tPgogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIC9jb3VudHJpZXMgLS0+CgoKCgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgCgogICAgICAgICAgICAgIDwhLS0gUHJpdmFjeSBwb2xpY3kgLS0+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPCEtLSAvUHJpdmFjeSBwb2xpY3kgLS0+CgogICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgCgoKCgoKCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibWwtc3VibWl0IiB2YWx1ZT0iMSI+CgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1sLWZvcm0tZW1iZWRTdWJtaXQiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0icHJpbWFyeSI+SSBuZWVkIHRoaXMgbm93ITwvYnV0dG9uPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8YnV0dG9uIGRpc2FibGVkPSJkaXNhYmxlZCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiB0eXBlPSJidXR0b24iIGNsYXNzPSJsb2FkaW5nIj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtZm9ybS1lbWJlZFN1Ym1pdExvYWQiPjwvZGl2PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+TG9hZGluZy4uLjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhbnRpY3NyZiIgdmFsdWU9InRydWUiPgogICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLXN1Y2Nlc3NCb2R5IHJvdy1zdWNjZXNzIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLXN1Y2Nlc3NDb250ZW50Ij4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxoND5UaGFuayB5b3UhPC9oND4KICAgICAgICAgICAgICAgIDxwPkNoZWNrIHlvdXIgaW5ib3ggdG8gYWNjZXNzIHlvdXIgcGxhbm5lciE8L3A+CjxwPjxzcGFuPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9ncm91cHMvcm9hZHRyaXBldXJvcGUiPjxzdHJvbmc+RG9uJ3QgZm9yZ2V0IHRvIGpvaW4gb3VyIHJvYWQgdHJpcHBpbmcgRXVyb3BlIEZhY2Vib29rIGdyb3VwIGZvciBtb3JlIGluc3BpcmF0aW9uIGZyb20gb3VyIGNvbW11bml0eTwvc3Ryb25nPiE8L2E+PC9zcGFuPjwvcD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogIAoKICAKICAKICA8c2NyaXB0PgogICAgZnVuY3Rpb24gbWxfd2ViZm9ybV9zdWNjZXNzXzM2MjA1NTMzKCkgewogICAgICB2YXIgJCA9IG1sX2pRdWVyeSB8fCBqUXVlcnk7CiAgICAgICQoJy5tbC1zdWJzY3JpYmUtZm9ybS0zNjIwNTUzMyAucm93LXN1Y2Nlc3MnKS5zaG93KCk7CiAgICAgICQoJy5tbC1zdWJzY3JpYmUtZm9ybS0zNjIwNTUzMyAucm93LWZvcm0nKS5oaWRlKCk7CiAgICB9CiAgICAgIDwvc2NyaXB0PgogIAogIAogICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9ncm9vdC5tYWlsZXJsaXRlLmNvbS9qcy93L3dlYmZvcm1zLm1pbi5qcz92MTc2ZTEwYmFhNWU3ZWQ4MGQzNWFlMjM1YmUzZDUwMjQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgZmV0Y2goImh0dHBzOi8vYXNzZXRzLm1haWxlcmxpdGUuY29tL2pzb25wLzU0MjM0My9mb3Jtcy8xNzc1NzI4MTU3MTE1MDM1MjUvdGFrZWwiKQogICAgICAgIDwvc2NyaXB0Pg==
Take A Breather At Jardim da Cordoaria
From the churches, the route heads gently toward the river through Jardim da Cordoaria.
This isn’t a must-see garden if you’re tight on time, but it works well as a breather.
After a few denser stops, having a quieter stretch makes the itinerary feel more balanced.
Knowing it was designed by the same landscape architect as London’s Crystal Palace gardens gave us a new appreciation on later visits – but even without that context, it’s a pleasant transition point.

Hidden alley near Porto Cathedral
Soak in the Views from Miradouro da Vitória
Miradouro da Vitória is one of our favourite viewpoints in Porto, and it’s one we consistently recommend.
Approaching from this direction keeps the walk manageable. Coming up from Ribeira later involves a steep climb and a lot of steps, which can feel brutal mid-afternoon in the summer.
From here, you get views over Ribeira’s rooftops, across the Douro River, and toward Vila Nova de Gaia and Dom Luís I Bridge.
It’s usually busy, but it’s free, accessible, and genuinely rewarding which is why it stays in our one-day plan.
⏳ Spots fill fast! Reserve your free guided tour of Porto’s street art today!

View From Miradouro da Vitória
Admire Porto Cathedral
A short walk brings you to Porto Cathedral, the city’s most important religious building.
Construction began in the 12th century, and its fortress-like appearance reflects Porto’s medieval past.
The exterior and surrounding views are the highlight for us. While you can tour inside, we’ve found the interior less impactful than other Portuguese landmarks we’ve visited.
With limited time, we usually admire the cathedral from outside, enjoy the views, and move on – a choice that’s served us well on repeat visits.
Lunch & Wandering in Ribeira
By lunchtime, you’ll reach Ribeira, Porto’s oldest and most animated district.
Yes, it’s touristy – and yes, prices are higher – but it’s also one of the nicest places to slow down.
On our first visit, we spent too much time here early and felt rushed later. Now, we treat Ribeira as a relaxed midpoint in the day.
Our preferred route down is via Rua da Alfândega, which brings you out at the quieter end of the riverfront before the busiest stretch near the bridge.
Cross The Dom Luís I Bridge
The Dom Luís I Bridge is one of Porto’s most recognisable landmarks, and crossing it is an essential part of seeing the city properly, especially if you’re spending one day in Porto.
We recommend walking along the lower riverfront from Ribeira into Vila Nova de Gaia rather than crossing the bridge immediately.
This keeps the walk flat, scenic, and far more enjoyable than climbing stairs straight after lunch.
Once you’ve spent some time in Gaia – whether that’s walking the waterfront, visiting a port cellar, or just soaking up the atmosphere – take the Gaia cable car up toward the upper level of the bridge.
From there, walk back into Porto on the top level of Dom Luís I Bridge.
This way you avoid a lot of steps on your way back into Porto.
Stroll Along the Vila Nova de Gaia Waterfront
Vila Nova de Gaia sits directly across the river from Porto and has a noticeably slower pace.
This is where you’ll find the historic port wine cellars, a relaxed waterfront, and some of the best views back toward Porto’s old town.
When we’re visiting Porto with family, this is usually where the day naturally slows down and where we spend the most time.
If you’re interested in learning more about port wine, this is the best place to do it.
We’ve done several cellar visits over the years, and the Calem port wine tour is the one we tend to recommend most often.
It’s short enough to fit comfortably into a one-day itinerary, informative without being overly technical, and well-paced which matters when you’ve already been on your feet all day.
Even if you skip a tour, simply wandering the Gaia waterfront, stopping for a drink, and enjoying the view back toward Porto is a fitting way to end the day.

Inside Casa Portuguesa do Pastel de Bacalhau
One Day In Porto FAQs
Is one day in Porto enough?
Yes, one day in Porto is enough to see the main highlights if you plan your time well. You can explore Ribeira, visit Livraria Lello, admire São Bento Station, and enjoy sunset views from the Dom Luís I Bridge. However, one day only scratches the surface of the city’s culture and food scene.
How long do you need in Porto?
Most visitors need 2 to 3 days in Porto to experience the city comfortably. This allows time to explore the historic centre, visit port wine cellars in Vila Nova de Gaia, enjoy the food scene, and possibly take a short trip along the Douro River.
Is Porto walkable?
Yes, Porto is very walkable, especially within the historic centre. Most major attractions are close together, although the city is known for its steep hills. A free Porto walking tour is a great way to explore the highlights while learning about the city’s history and hidden gems.
Can you day trip to Porto from Lisbon?
Yes, you can day trip to Porto from Lisbon by train, but it makes for a long day. The high-speed train takes around 2.5 to 3 hours each way. While possible, staying at least one night in Porto gives you a much more relaxed and enjoyable experience.
Is the Porto Card worth it for one day?
The Porto Card can be worth it if you plan to visit several paid attractions and use public transport. For one day, it depends on your itinerary. If you mainly plan to walk and visit free landmarks, it may not provide significant savings.
When is the best time to visit Porto?
Spring (April to June) and early autumn (September to October) are the best times to visit Porto. The weather is warm but comfortable, crowds are smaller than peak summer, and accommodation prices are generally lower. July and August are lively but busier and hotter.
Final Thoughts: Is Porto Worth Visiting?
Even with just one day, Porto leaves a lasting impression.
While we always recommend staying overnight if possible, this itinerary shows that Porto is absolutely worth visiting, even on a tight schedule.
It’s a city that rewards intention more than speed and one that often brings people back for a second visit.
If this is your first time in Porto, this route gives you a solid introduction and, hopefully, a reason to return.
Continue Planning Your Road Trip;
Road Trip Itineraries;
City Travel Guides;
Plan By Region;