---
title: "USGS streamgages: discover and map a basin"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{USGS streamgages: discover and map a basin}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---



The [USGS waterdata OGC API](https://api.waterdata.usgs.gov/ogcapi/beta/)
is a clean, real-world EDR endpoint with one collection (`daily-edr`)
that exposes every USGS station's daily-value time series. It's a good
target for learning `edr4r` because the API surface is small and the
data is familiar (stream gauges).

This vignette walks through a typical streamgage exploration:
discover what's on offer, find every gauge in the
[North Carolina Triangle](https://en.wikipedia.org/wiki/Research_Triangle)
(Wake, Orange, and Durham counties), pull recent streamflow for each,
and render an interactive map. Every chunk runs against the live USGS
endpoint at vignette build time.

## 1. Connect and discover collections


``` r
library(edr4r)
library(ggplot2)

usgs <- edr_client("https://api.waterdata.usgs.gov/ogcapi/beta")
edr_collections(usgs)[, c("id", "title", "data_queries")]
#> # A tibble: 1 × 3
#>   id        title                                           data_queries
#>   <chr>     <chr>                                           <list>      
#> 1 daily-edr Daily values environmental data retrieval (EDR) <chr [1]>
```

USGS exposes a single collection, `daily-edr`. The `data_queries`
column tells us what query verbs it supports:


``` r
edr_collections(usgs)$data_queries[[1]]
#> [1] "locations"
```

Just `locations`. No `cube`, no `area`, no `position`. That matters:
`edr_explore()` will fall back to per-station fetches instead of one
bulk call. For ~10 gauges that's fine; for thousands it would be slow.
The WWDH `rise-edr` collection in `vignette("getting-started")` shows
the bulk-fetch path against a richer server.

### Discovering parameters

`edr_parameters()` reads the `parameter_names` block from the
collection document -- but USGS doesn't populate it. Use
`edr_queryables()` instead to see what filter properties the server
exposes:


``` r
q <- edr_queryables(usgs, "daily-edr")
names(q$properties)
#>  [1] "geometry"                      "id"                           
#>  [3] "unit_of_measure"               "parameter_name"               
#>  [5] "parameter_code"                "statistic_id"                 
#>  [7] "hydrologic_unit_code"          "state_name"                   
#>  [9] "last_modified"                 "begin"                        
#> [11] "end"                           "computation_period_identifier"
#> [13] "computation_identifier"        "thresholds"                   
#> [15] "sublocation_identifier"        "primary"                      
#> [17] "monitoring_location_id"        "web_description"              
#> [19] "parameter_description"         "parent_time_series_id"
```

`parameter_code` is the filter you'd pass as `parameter_name =` in a
query. USGS uses the standard
[NWIS parameter codes](https://waterdata.usgs.gov/code-dictionary)
-- a few common ones for streamgages:

| Code    | Meaning                              | Unit   |
|---------|--------------------------------------|--------|
| `00060` | Discharge (streamflow)               | ft³/s  |
| `00065` | Gage height (stage)                  | ft     |
| `00010` | Water temperature                    | °C     |
| `00400` | pH                                   | std units |
| `00095` | Specific conductance                 | µS/cm  |

The rest of this vignette uses `00060` -- daily mean streamflow.

## 2. Find streamgages in the Triangle

The North Carolina Triangle covers Wake, Orange, and Durham counties.
A bounding box that comfortably contains all three:


``` r
triangle_bbox <- c(-79.2, 35.5, -78.25, 36.25)
#                   minx   miny   maxx   maxy
```

`edr_locations()` returns a `sf` object (with [`sf`](https://r-spatial.github.io/sf/) installed) with one point per gauge:


``` r
gauges <- edr_locations(usgs, "daily-edr", bbox = triangle_bbox)
nrow(gauges)
#> [1] 10

gauges[, c("id", "monitoring_location_name", "county_name", "drainage_area")]
#> Simple feature collection with 10 features and 4 fields
#> Geometry type: POINT
#> Dimension:     XY
#> Bounding box:  xmin: -79.18751 ymin: 36.04986 xmax: -78.29611 ymax: 36.2132
#> Geodetic CRS:  WGS 84
#> # A tibble: 10 × 5
#>    id              monitoring_location_name            county_name drainage_area
#>    <chr>           <chr>                               <chr>               <dbl>
#>  1 USGS-02081500   TAR RIVER NEAR TAR RIVER, NC        Granville …        167   
#>  2 USGS-02081740   TAR RIVER AT LOUISBURG, NC          Franklin C…        429   
#>  3 USGS-02081747   TAR R AT US 401 AT LOUISBURG, NC    Franklin C…        427   
#>  4 USGS-02081800   CEDAR CREEK NEAR LOUISBURG, NC      Franklin C…         47.8 
#>  5 USGS-0208273070 DEVILS CRADLE C AT NC 39 NR KEARNE… Franklin C…          2.89
#>  6 USGS-02084903   SEVENMILE CREEK TRIB AT SR1120 NR … Orange Cou…          1.34
#>  7 USGS-02084908   SEVENMILE CREEK TRIB AT I-85 NR EF… Orange Cou…          0.29
#>  8 USGS-02084909   SEVENMILE CREEK NR EFLAND, NC       Orange Cou…         14.1 
#>  9 USGS-02085000   ENO RIVER AT HILLSBOROUGH, NC       Orange Cou…         66   
#> 10 USGS-0208500600 CATES CREEK NR HILLSBOROUGH, NC     Orange Cou…          4.2 
#> # ℹ 1 more variable: geometry <POINT [°]>
```

Each `gauges$id` is in the form `"USGS-02087500"` (agency code + the
familiar 8-digit NWIS site number). That's what you pass back as
`location_id =` to a query.

## 3. Pull streamflow for one station

A USGS quirk to flag up front: when you ask for a specific station
with `edr_location()`, the server **ignores the `datetime` interval
and just returns the most recent `limit` records** (`limit` defaults
to 10). To get five months of daily data, pass a `limit` that
comfortably covers the window -- say 200 days -- and filter to the
target window client-side.


``` r
example_id   <- gauges$id[[1]]
example_name <- gauges$monitoring_location_name[[1]]

resp <- edr_location(
  usgs, "daily-edr",
  location_id    = example_id,
  parameter_name = "00060",
  limit          = 200
)
df <- covjson_to_tibble(resp)

# Filter to the Jan–May 2026 window we care about
df_jan_may <- df[df$datetime >= as.POSIXct("2026-01-01", tz = "UTC") &
                 df$datetime <= as.POSIXct("2026-05-31", tz = "UTC"), ]
head(df_jan_may[, c("datetime", "value", "unit")])
#> # A tibble: 6 × 3
#>   datetime            value unit 
#>   <dttm>              <dbl> <chr>
#> 1 2026-05-31 00:00:00  2.21 ft3/s
#> 2 2026-05-30 00:00:00  2.53 ft3/s
#> 3 2026-05-29 00:00:00  2.66 ft3/s
#> 4 2026-05-28 00:00:00  3.14 ft3/s
#> 5 2026-05-27 00:00:00  3.13 ft3/s
#> 6 2026-05-26 00:00:00  3.29 ft3/s
```

`edr_plot()` is a small ggplot wrapper for the tidy tibble:


``` r
edr_plot(df_jan_may) +
  ggtitle(paste0(example_name, " — daily streamflow"))
```

<div class="figure">
<img src="usgs-streamgages-figs/plot-one-gauge-1.png" alt="plot of chunk plot-one-gauge" width="100%" />
<p class="caption">plot of chunk plot-one-gauge</p>
</div>

## 4. Map every gauge with per-station popups

`edr_explore()` does the per-station loop and hands the results to
`edr_map()` in one call. Each marker becomes an inline plot + CSV
download for that gauge.


``` r
m <- edr_explore(
  usgs, "daily-edr",
  bbox           = triangle_bbox,
  parameter_name = "00060",
  record_limit   = 200,                 # ~6 months of daily values per station
  popup          = "plot+csv",
  label_col      = "monitoring_location_name",
  quiet          = TRUE
)
# Embed the interactive map inline via a base64 data URI so the vignette
# is fully selfcontained (no sidecar files in inst/doc/).
tmp <- tempfile(fileext = ".html")
edr_save_html(m, tmp)
data_uri <- paste0(
  "data:text/html;charset=utf-8;base64,",
  base64enc::base64encode(tmp)
)
unlink(tmp)
cat(sprintf(
  '<iframe src="%s" width="100%%" height="520" style="border:1px solid #ddd;"></iframe>',
  data_uri
))
```

<iframe src="data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+Cjx0aXRsZT5sZWFmbGV0PC90aXRsZT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj5AbGF5ZXIgaHRtbHRvb2xzIHsKLmh0bWwtZmlsbC1jb250YWluZXIgewpkaXNwbGF5OiBmbGV4OwpmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoKbWluLWhlaWdodDogMDsKbWluLXdpZHRoOiAwOwp9Ci5odG1sLWZpbGwtY29udGFpbmVyID4gLmh0bWwtZmlsbC1pdGVtIHsKCmZsZXg6IDEgMSBhdXRvOwptaW4taGVpZ2h0OiAwOwptaW4td2lkdGg6IDA7Cn0KLmh0bWwtZmlsbC1jb250YWluZXIgPiA6bm90KC5odG1sLWZpbGwtaXRlbSkgewoKZmxleDogMCAwIGF1dG87Cn0KfQo8L3N0eWxlPgo8c2NyaXB0PihmdW5jdGlvbigpIHsKICAvLyBJZiB3aW5kb3cuSFRNTFdpZGdldHMgaXMgYWxyZWFkeSBkZWZpbmVkLCB0aGVuIHVzZSBpdDsgb3RoZXJ3aXNlIGNyZWF0ZSBhCiAgLy8gbmV3IG9iamVjdC4gVGhpcyBhbGxvd3MgcHJlY2VkaW5nIGNvZGUgdG8gc2V0IG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlCiAgLy8gaW5pdGlhbGl6YXRpb24gcHJvY2VzcyAodGhvdWdoIG5vbmUgY3VycmVudGx5IGV4aXN0KS4KICB3aW5kb3cuSFRNTFdpZGdldHMgPSB3aW5kb3cuSFRNTFdpZGdldHMgfHwge307CgogIC8vIFNlZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgdmlld2VyIHBhbmUuIElmIG5vdCwgd2UncmUgaW4gYSB3ZWIgYnJvd3Nlci4KICB2YXIgdmlld2VyTW9kZSA9IHdpbmRvdy5IVE1MV2lkZ2V0cy52aWV3ZXJNb2RlID0KICAgICAgL1xidmlld2VyX3BhbmU9MVxiLy50ZXN0KHdpbmRvdy5sb2NhdGlvbik7CgogIC8vIFNlZSBpZiB3ZSdyZSBydW5uaW5nIGluIFNoaW55IG1vZGUuIElmIG5vdCwgaXQncyBhIHN0YXRpYyBkb2N1bWVudC4KICAvLyBOb3RlIHRoYXQgc3RhdGljIHdpZGdldHMgY2FuIGFwcGVhciBpbiBib3RoIFNoaW55IGFuZCBzdGF0aWMgbW9kZXMsIGJ1dAogIC8vIG9idmlvdXNseSwgU2hpbnkgd2lkZ2V0cyBjYW4gb25seSBhcHBlYXIgaW4gU2hpbnkgYXBwcy9kb2N1bWVudHMuCiAgdmFyIHNoaW55TW9kZSA9IHdpbmRvdy5IVE1MV2lkZ2V0cy5zaGlueU1vZGUgPQogICAgICB0eXBlb2Yod2luZG93LlNoaW55KSAhPT0gInVuZGVmaW5lZCIgJiYgISF3aW5kb3cuU2hpbnkub3V0cHV0QmluZGluZ3M7CgogIC8vIFdlIGNhbid0IGNvdW50IG9uIGpRdWVyeSBiZWluZyBhdmFpbGFibGUsIHNvIHdlIGltcGxlbWVudCBvdXIgb3duCiAgLy8gdmVyc2lvbiBpZiBuZWNlc3NhcnkuCiAgZnVuY3Rpb24gcXVlcnlTZWxlY3RvckFsbChzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmICh0eXBlb2YoalF1ZXJ5KSAhPT0gInVuZGVmaW5lZCIgJiYgc2NvcGUgaW5zdGFuY2VvZiBqUXVlcnkpIHsKICAgICAgcmV0dXJuIHNjb3BlLmZpbmQoc2VsZWN0b3IpOwogICAgfQogICAgaWYgKHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwpIHsKICAgICAgcmV0dXJuIHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gYXNBcnJheSh2YWx1ZSkgewogICAgaWYgKHZhbHVlID09PSBudWxsKQogICAgICByZXR1cm4gW107CiAgICBpZiAoJC5pc0FycmF5KHZhbHVlKSkKICAgICAgcmV0dXJuIHZhbHVlOwogICAgcmV0dXJuIFt2YWx1ZV07CiAgfQoKICAvLyBJbXBsZW1lbnQgalF1ZXJ5J3MgZXh0ZW5kCiAgZnVuY3Rpb24gZXh0ZW5kKHRhcmdldCAvKiwgLi4uICovKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHJldHVybiB0YXJnZXQ7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOwogICAgICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSkgewogICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkocHJvcCkpIHsKICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiB0YXJnZXQ7CiAgfQoKICAvLyBJRTggZG9lc24ndCBzdXBwb3J0IEFycmF5LmZvckVhY2guCiAgZnVuY3Rpb24gZm9yRWFjaCh2YWx1ZXMsIGNhbGxiYWNrLCB0aGlzQXJnKSB7CiAgICBpZiAodmFsdWVzLmZvckVhY2gpIHsKICAgICAgdmFsdWVzLmZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpOwogICAgfSBlbHNlIHsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHZhbHVlc1tpXSwgaSwgdmFsdWVzKTsKICAgICAgfQogICAgfQogIH0KCiAgLy8gUmVwbGFjZXMgdGhlIHNwZWNpZmllZCBtZXRob2Qgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ1bmNTb3VyY2UuCiAgLy8KICAvLyBOb3RlIHRoYXQgZnVuY1NvdXJjZSBzaG91bGQgbm90IEJFIHRoZSBuZXcgbWV0aG9kLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbgogIC8vIHRoYXQgUkVUVVJOUyB0aGUgbmV3IG1ldGhvZC4gZnVuY1NvdXJjZSByZWNlaXZlcyBhIHNpbmdsZSBhcmd1bWVudCB0aGF0IGlzCiAgLy8gdGhlIG92ZXJyaWRkZW4gbWV0aG9kLCBpdCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIG5ldyBtZXRob2QuIFRoZSBvdmVycmlkZGVuCiAgLy8gbWV0aG9kIGNhbiBiZSBjYWxsZWQgbGlrZSBhIHJlZ3VsYXIgZnVuY3Rpb24sIGl0IGhhcyB0aGUgdGFyZ2V0IHBlcm1hbmVudGx5CiAgLy8gYm91bmQgdG8gaXQgc28gInRoaXMiIHdpbGwgd29yayBjb3JyZWN0bHkuCiAgZnVuY3Rpb24gb3ZlcnJpZGVNZXRob2QodGFyZ2V0LCBtZXRob2ROYW1lLCBmdW5jU291cmNlKSB7CiAgICB2YXIgc3VwZXJGdW5jID0gdGFyZ2V0W21ldGhvZE5hbWVdIHx8IGZ1bmN0aW9uKCkge307CiAgICB2YXIgc3VwZXJGdW5jQm91bmQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHN1cGVyRnVuYy5hcHBseSh0YXJnZXQsIGFyZ3VtZW50cyk7CiAgICB9OwogICAgdGFyZ2V0W21ldGhvZE5hbWVdID0gZnVuY1NvdXJjZShzdXBlckZ1bmNCb3VuZCk7CiAgfQoKICAvLyBBZGQgYSBtZXRob2QgdG8gZGVsZWdhdG9yIHRoYXQsIHdoZW4gaW52b2tlZCwgY2FsbHMKICAvLyBkZWxlZ2F0ZWUubWV0aG9kTmFtZS4gSWYgdGhlcmUgaXMgbm8gc3VjaCBtZXRob2Qgb24KICAvLyB0aGUgZGVsZWdhdGVlLCBidXQgdGhlcmUgd2FzIG9uZSBvbiBkZWxlZ2F0b3IgYmVmb3JlCiAgLy8gZGVsZWdhdGVNZXRob2Qgd2FzIGNhbGxlZCwgdGhlbiB0aGUgb3JpZ2luYWwgdmVyc2lvbgogIC8vIGlzIGludm9rZWQgaW5zdGVhZC4KICAvLyBGb3IgZXhhbXBsZToKICAvLwogIC8vIHZhciBhID0gewogIC8vICAgbWV0aG9kMTogZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdhMScpOyB9CiAgLy8gICBtZXRob2QyOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2EyJyk7IH0KICAvLyB9OwogIC8vIHZhciBiID0gewogIC8vICAgbWV0aG9kMTogZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdiMScpOyB9CiAgLy8gfTsKICAvLyBkZWxlZ2F0ZU1ldGhvZChhLCBiLCAibWV0aG9kMSIpOwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QyIik7CiAgLy8gYS5tZXRob2QxKCk7CiAgLy8gYS5tZXRob2QyKCk7CiAgLy8KICAvLyBUaGUgb3V0cHV0IHdvdWxkIGJlICJiMSIsICJhMiIuCiAgZnVuY3Rpb24gZGVsZWdhdGVNZXRob2QoZGVsZWdhdG9yLCBkZWxlZ2F0ZWUsIG1ldGhvZE5hbWUpIHsKICAgIHZhciBpbmhlcml0ZWQgPSBkZWxlZ2F0b3JbbWV0aG9kTmFtZV07CiAgICBkZWxlZ2F0b3JbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIHRhcmdldCA9IGRlbGVnYXRlZTsKICAgICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlZVttZXRob2ROYW1lXTsKCiAgICAgIC8vIFRoZSBtZXRob2QgZG9lc24ndCBleGlzdCBvbiB0aGUgZGVsZWdhdGVlLiBJbnN0ZWFkLAogICAgICAvLyBjYWxsIHRoZSBtZXRob2Qgb24gdGhlIGRlbGVnYXRvciwgaWYgaXQgZXhpc3RzLgogICAgICBpZiAoIW1ldGhvZCkgewogICAgICAgIHRhcmdldCA9IGRlbGVnYXRvcjsKICAgICAgICBtZXRob2QgPSBpbmhlcml0ZWQ7CiAgICAgIH0KCiAgICAgIGlmIChtZXRob2QpIHsKICAgICAgICByZXR1cm4gbWV0aG9kLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgICAgfQogICAgfTsKICB9CgogIC8vIEltcGxlbWVudCBhIHZhZ3VlIGZhY3NpbWlsaWUgb2YgalF1ZXJ5J3MgZGF0YSBtZXRob2QKICBmdW5jdGlvbiBlbGVtZW50RGF0YShlbCwgbmFtZSwgdmFsdWUpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsKICAgICAgcmV0dXJuIGVsWyJodG1sd2lkZ2V0X2RhdGFfIiArIG5hbWVdOwogICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDMpIHsKICAgICAgZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV0gPSB2YWx1ZTsKICAgICAgcmV0dXJuIGVsOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBlbGVtZW50RGF0YTogIiArCiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCk7CiAgICB9CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM0NDYxNzAvZXNjYXBlLXN0cmluZy1mb3ItdXNlLWluLWphdmFzY3JpcHQtcmVnZXgKICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7CiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcLVxbXF1cL1x7XH1cKFwpXCpcK1w/XC5cXFxeXCRcfF0vZywgIlxcJCYiKTsKICB9CgogIGZ1bmN0aW9uIGhhc0NsYXNzKGVsLCBjbGFzc05hbWUpIHsKICAgIHZhciByZSA9IG5ldyBSZWdFeHAoIlxcYiIgKyBlc2NhcGVSZWdFeHAoY2xhc3NOYW1lKSArICJcXGIiKTsKICAgIHJldHVybiByZS50ZXN0KGVsLmNsYXNzTmFtZSk7CiAgfQoKICAvLyBlbGVtZW50cyAtIGFycmF5IChvciBhcnJheS1saWtlIG9iamVjdCkgb2YgSFRNTCBlbGVtZW50cwogIC8vIGNsYXNzTmFtZSAtIGNsYXNzIG5hbWUgdG8gdGVzdCBmb3IKICAvLyBpbmNsdWRlIC0gaWYgdHJ1ZSwgb25seSByZXR1cm4gZWxlbWVudHMgd2l0aCBnaXZlbiBjbGFzc05hbWU7CiAgLy8gICBpZiBmYWxzZSwgb25seSByZXR1cm4gZWxlbWVudHMgKndpdGhvdXQqIGdpdmVuIGNsYXNzTmFtZQogIGZ1bmN0aW9uIGZpbHRlckJ5Q2xhc3MoZWxlbWVudHMsIGNsYXNzTmFtZSwgaW5jbHVkZSkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKGhhc0NsYXNzKGVsZW1lbnRzW2ldLCBjbGFzc05hbWUpID09IGluY2x1ZGUpCiAgICAgICAgcmVzdWx0cy5wdXNoKGVsZW1lbnRzW2ldKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KCiAgZnVuY3Rpb24gb24ob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmouYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICBvYmouYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1bmMsIGZhbHNlKTsKICAgIH0gZWxzZSBpZiAob2JqLmF0dGFjaEV2ZW50KSB7CiAgICAgIG9iai5hdHRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2ZmKG9iaiwgZXZlbnROYW1lLCBmdW5jKSB7CiAgICBpZiAob2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgIG9iai5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgZWxzZSBpZiAob2JqLmRldGFjaEV2ZW50KSB7CiAgICAgIG9iai5kZXRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgLy8gVHJhbnNsYXRlIGFycmF5IG9mIHZhbHVlcyB0byB0b3AvcmlnaHQvYm90dG9tL2xlZnQsIGFzIHVzdWFsIHdpdGgKICAvLyB0aGUgInBhZGRpbmciIENTUyBwcm9wZXJ0eQogIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9wYWRkaW5nCiAgZnVuY3Rpb24gdW5wYWNrUGFkZGluZyh2YWx1ZSkgewogICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICJudW1iZXIiKQogICAgICB2YWx1ZSA9IFt2YWx1ZV07CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzBdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVswXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAyKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAzKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSA0KSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVszXX07CiAgICB9CiAgfQoKICAvLyBDb252ZXJ0IGFuIHVucGFja2VkIHBhZGRpbmcgb2JqZWN0IHRvIGEgQ1NTIHZhbHVlCiAgZnVuY3Rpb24gcGFkZGluZ1RvQ3NzKHBhZGRpbmdPYmopIHsKICAgIHJldHVybiBwYWRkaW5nT2JqLnRvcCArICJweCAiICsgcGFkZGluZ09iai5yaWdodCArICJweCAiICsgcGFkZGluZ09iai5ib3R0b20gKyAicHggIiArIHBhZGRpbmdPYmoubGVmdCArICJweCI7CiAgfQoKICAvLyBNYWtlcyBhIG51bWJlciBzdWl0YWJsZSBmb3IgQ1NTCiAgZnVuY3Rpb24gcHgoeCkgewogICAgaWYgKHR5cGVvZih4KSA9PT0gIm51bWJlciIpCiAgICAgIHJldHVybiB4ICsgInB4IjsKICAgIGVsc2UKICAgICAgcmV0dXJuIHg7CiAgfQoKICAvLyBSZXRyaWV2ZXMgcnVudGltZSB3aWRnZXQgc2l6aW5nIGluZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LgogIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG51bGwsIG9yIGFuIG9iamVjdCB3aXRoIGZpbGwsIHBhZGRpbmcsCiAgLy8gZGVmYXVsdFdpZHRoLCBkZWZhdWx0SGVpZ2h0IGZpZWxkcy4KICBmdW5jdGlvbiBzaXppbmdQb2xpY3koZWwpIHsKICAgIHZhciBzaXppbmdFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2h0bWx3aWRnZXQtc2l6aW5nJ10iKTsKICAgIGlmICghc2l6aW5nRWwpCiAgICAgIHJldHVybiBudWxsOwogICAgdmFyIHNwID0gSlNPTi5wYXJzZShzaXppbmdFbC50ZXh0Q29udGVudCB8fCBzaXppbmdFbC50ZXh0IHx8ICJ7fSIpOwogICAgaWYgKHZpZXdlck1vZGUpIHsKICAgICAgcmV0dXJuIHNwLnZpZXdlcjsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBzcC5icm93c2VyOwogICAgfQogIH0KCiAgLy8gQHBhcmFtIHRhc2tzIEFycmF5IG9mIHN0cmluZ3MgKG9yIGZhbHN5IHZhbHVlLCBpbiB3aGljaCBjYXNlIG5vLW9wKS4KICAvLyAgIEVhY2ggZWxlbWVudCBtdXN0IGJlIGEgdmFsaWQgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgeWllbGRzIGEKICAvLyAgIGZ1bmN0aW9uLiBPciwgY2FuIGJlIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCAiY29kZSIgYW5kICJkYXRhIgogIC8vICAgcHJvcGVydGllczsgaW4gdGhpcyBjYXNlLCB0aGUgImNvZGUiIHByb3BlcnR5IHNob3VsZCBiZSBhIHN0cmluZwogIC8vICAgb2YgSlMgdGhhdCdzIGFuIGV4cHIgdGhhdCB5aWVsZHMgYSBmdW5jdGlvbiwgYW5kICJkYXRhIiBzaG91bGQgYmUKICAvLyAgIGFuIG9iamVjdCB0aGF0IHdpbGwgYmUgYWRkZWQgYXMgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB3aGVuIHRoYXQKICAvLyAgIGZ1bmN0aW9uIGlzIGNhbGxlZC4KICAvLyBAcGFyYW0gdGFyZ2V0IFRoZSBvYmplY3QgdGhhdCB3aWxsIGJlICJ0aGlzIiBmb3IgZWFjaCBmdW5jdGlvbgogIC8vICAgZXhlY3V0aW9uLgogIC8vIEBwYXJhbSBhcmdzIEFycmF5IG9mIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9ucy4gKFRoZQogIC8vICAgc2FtZSBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgdG8gYWxsIGZ1bmN0aW9ucy4pCiAgZnVuY3Rpb24gZXZhbEFuZFJ1bih0YXNrcywgdGFyZ2V0LCBhcmdzKSB7CiAgICBpZiAodGFza3MpIHsKICAgICAgZm9yRWFjaCh0YXNrcywgZnVuY3Rpb24odGFzaykgewogICAgICAgIHZhciB0aGVzZUFyZ3MgPSBhcmdzOwogICAgICAgIGlmICh0eXBlb2YodGFzaykgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICB0aGVzZUFyZ3MgPSB0aGVzZUFyZ3MuY29uY2F0KFt0YXNrLmRhdGFdKTsKICAgICAgICAgIHRhc2sgPSB0YXNrLmNvZGU7CiAgICAgICAgfQogICAgICAgIHZhciB0YXNrRnVuYyA9IHRyeUV2YWwodGFzayk7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrRnVuYykgIT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGFzayBtdXN0IGJlIGEgZnVuY3Rpb24hIFNvdXJjZTpcbiIgKyB0YXNrKTsKICAgICAgICB9CiAgICAgICAgdGFza0Z1bmMuYXBwbHkodGFyZ2V0LCB0aGVzZUFyZ3MpOwogICAgICB9KTsKICAgIH0KICB9CgogIC8vIEF0dGVtcHQgZXZhbCgpIGJvdGggd2l0aCBhbmQgd2l0aG91dCBlbmNsb3NpbmcgaW4gcGFyZW50aGVzZXMuCiAgLy8gTm90ZSB0aGF0IGVuY2xvc2luZyBjb2VyY2VzIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24gaW50bwogIC8vIGFuIGV4cHJlc3Npb24gdGhhdCBldmFsKCkgY2FuIHBhcnNlCiAgLy8gKG90aGVyd2lzZSwgYSBTeW50YXhFcnJvciBpcyB0aHJvd24pCiAgZnVuY3Rpb24gdHJ5RXZhbChjb2RlKSB7CiAgICB2YXIgcmVzdWx0ID0gbnVsbDsKICAgIHRyeSB7CiAgICAgIHJlc3VsdCA9IGV2YWwoIigiICsgY29kZSArICIpIik7CiAgICB9IGNhdGNoKGVycm9yKSB7CiAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpKSB7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KICAgICAgdHJ5IHsKICAgICAgICByZXN1bHQgPSBldmFsKGNvZGUpOwogICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICBmdW5jdGlvbiBpbml0U2l6aW5nKGVsKSB7CiAgICB2YXIgc2l6aW5nID0gc2l6aW5nUG9saWN5KGVsKTsKICAgIGlmICghc2l6aW5nKQogICAgICByZXR1cm47CgogICAgdmFyIGNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJodG1sd2lkZ2V0X2NvbnRhaW5lciIpOwogICAgaWYgKCFjZWwpCiAgICAgIHJldHVybjsKCiAgICBpZiAodHlwZW9mKHNpemluZy5wYWRkaW5nKSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAiMCI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZyA9IHBhZGRpbmdUb0Nzcyh1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKSk7CiAgICB9CgogICAgaWYgKHNpemluZy5maWxsKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgY2VsLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKICAgICAgdmFyIHBhZCA9IHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpOwogICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgIGNlbC5zdHlsZS5yaWdodCA9IHBhZC5yaWdodCArICJweCI7CiAgICAgIGNlbC5zdHlsZS5ib3R0b20gPSBwYWQuYm90dG9tICsgInB4IjsKICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBlbC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDsgfQogICAgICB9OwogICAgfQogIH0KCiAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIG1ldGhvZHMKICB2YXIgZGVmYXVsdHMgPSB7CiAgICBmaW5kOiBmdW5jdGlvbihzY29wZSkgewogICAgICByZXR1cm4gcXVlcnlTZWxlY3RvckFsbChzY29wZSwgIi4iICsgdGhpcy5uYW1lKTsKICAgIH0sCiAgICByZW5kZXJFcnJvcjogZnVuY3Rpb24oZWwsIGVycikgewogICAgICB2YXIgJGVsID0gJChlbCk7CgogICAgICB0aGlzLmNsZWFyRXJyb3IoZWwpOwoKICAgICAgLy8gQWRkIGFsbCB0aGVzZSBlcnJvciBjbGFzc2VzLCBhcyBTaGlueSBkb2VzCiAgICAgIHZhciBlcnJDbGFzcyA9ICJzaGlueS1vdXRwdXQtZXJyb3IiOwogICAgICBpZiAoZXJyLnR5cGUgIT09IG51bGwpIHsKICAgICAgICAvLyB1c2UgdGhlIGNsYXNzZXMgb2YgdGhlIGVycm9yIGNvbmRpdGlvbiBhcyBDU1MgY2xhc3MgbmFtZXMKICAgICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiAiICsgJC5tYXAoYXNBcnJheShlcnIudHlwZSksIGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgIHJldHVybiBlcnJDbGFzcyArICItIiArIHR5cGU7CiAgICAgICAgfSkuam9pbigiICIpOwogICAgICB9CiAgICAgIGVyckNsYXNzID0gZXJyQ2xhc3MgKyAiIGh0bWx3aWRnZXRzLWVycm9yIjsKCiAgICAgIC8vIElzIGVsIGlubGluZSBvciBibG9jaz8gSWYgaW5saW5lIG9yIGlubGluZS1ibG9jaywganVzdCBkaXNwbGF5Om5vbmUgaXQKICAgICAgLy8gYW5kIGFkZCBhbiBpbmxpbmUgZXJyb3IuCiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmNzcygiZGlzcGxheSIpOwogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBkaXNwbGF5KTsKCiAgICAgIGlmIChkaXNwbGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIikgewogICAgICAgICRlbC5oaWRlKCk7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yU3BhbiA9ICQoIjxzcGFuPiIpLmFkZENsYXNzKGVyckNsYXNzKTsKICAgICAgICAgIGVycm9yU3Bhbi50ZXh0KGVyci5tZXNzYWdlKTsKICAgICAgICAgICRlbC5hZnRlcihlcnJvclNwYW4pOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKSB7CiAgICAgICAgLy8gSWYgYmxvY2ssIGFkZCBhbiBlcnJvciBqdXN0IGFmdGVyIHRoZSBlbCwgc2V0IHZpc2liaWxpdHk6bm9uZSBvbiB0aGUKICAgICAgICAvLyBlbCwgYW5kIHBvc2l0aW9uIHRoZSBlcnJvciB0byBiZSBvbiB0b3Agb2YgdGhlIGVsLgogICAgICAgIC8vIE1hcmsgaXQgd2l0aCBhIHVuaXF1ZSBJRCBhbmQgQ1NTIGNsYXNzIHNvIHdlIGNhbiByZW1vdmUgaXQgbGF0ZXIuCiAgICAgICAgJGVsLmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICIiKSB7CiAgICAgICAgICB2YXIgZXJyb3JEaXYgPSAkKCI8ZGl2PiIpLmFkZENsYXNzKGVyckNsYXNzKS5jc3MoInBvc2l0aW9uIiwgImFic29sdXRlIikKICAgICAgICAgICAgLmNzcygidG9wIiwgZWwub2Zmc2V0VG9wKQogICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgLy8gc2V0dGluZyB3aWR0aCBjYW4gcHVzaCBvdXQgdGhlIHBhZ2Ugc2l6ZSwgZm9yY2luZyBvdGhlcndpc2UKICAgICAgICAgICAgLy8gdW5uZWNlc3Nhcnkgc2Nyb2xsYmFycyB0byBhcHBlYXIgYW5kIG1ha2luZyBpdCBpbXBvc3NpYmxlIGZvcgogICAgICAgICAgICAvLyB0aGUgZWxlbWVudCB0byBzaHJpbms7IHNvIHVzZSBtYXgtd2lkdGggaW5zdGVhZAogICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAuY3NzKCJoZWlnaHQiLCBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgZXJyb3JEaXYudGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JEaXYpOwoKICAgICAgICAgIC8vIFJlYWxseSBkdW1iIHdheSB0byBrZWVwIHRoZSBzaXplL3Bvc2l0aW9uIG9mIHRoZSBlcnJvciBpbiBzeW5jIHdpdGgKICAgICAgICAgIC8vIHRoZSBwYXJlbnQgZWxlbWVudCBhcyB0aGUgd2luZG93IGlzIHJlc2l6ZWQgb3Igd2hhdGV2ZXIuCiAgICAgICAgICB2YXIgaW50SWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCFlcnJvckRpdlswXS5wYXJlbnRFbGVtZW50KSB7CiAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRJZCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVycm9yRGl2CiAgICAgICAgICAgICAgLmNzcygidG9wIiwgZWwub2Zmc2V0VG9wKQogICAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQogICAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgY2xlYXJFcnJvcjogZnVuY3Rpb24oZWwpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwogICAgICB2YXIgZGlzcGxheSA9ICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIpOwogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBudWxsKTsKCiAgICAgIGlmIChkaXNwbGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIikgewogICAgICAgIGlmIChkaXNwbGF5KQogICAgICAgICAgJGVsLmNzcygiZGlzcGxheSIsIGRpc3BsYXkpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIil7CiAgICAgICAgJGVsLmNzcygidmlzaWJpbGl0eSIsICJpbmhlcml0Iik7CiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsKICAgICAgfQogICAgfSwKICAgIHNpemluZzoge30KICB9OwoKICAvLyBDYWxsZWQgYnkgd2lkZ2V0IGJpbmRpbmdzIHRvIHJlZ2lzdGVyIGEgbmV3IHR5cGUgb2Ygd2lkZ2V0LiBUaGUgZGVmaW5pdGlvbgogIC8vIG9iamVjdCBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAgLy8gLSBuYW1lIChyZXF1aXJlZCkgLSBBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBiaW5kaW5nIG5hbWUsIHdoaWNoIHdpbGwgYmUKICAvLyAgIHVzZWQgYnkgZGVmYXVsdCBhcyB0aGUgQ1NTIGNsYXNzbmFtZSB0byBsb29rIGZvci4KICAvLyAtIGluaXRpYWxpemUgKG9wdGlvbmFsKSAtIEEgZnVuY3Rpb24oZWwpIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIHdpZGdldCBlbGVtZW50OyBpZiBhIHZhbHVlIGlzIHJldHVybmVkLCBpdCB3aWxsIGJlIHBhc3NlZCBhcyB0aGUgdGhpcmQKICAvLyAgIHZhbHVlIHRvIHJlbmRlclZhbHVlLgogIC8vIC0gcmVuZGVyVmFsdWUgKHJlcXVpcmVkKSAtIEEgZnVuY3Rpb24oZWwsIGRhdGEsIGluaXRWYWx1ZSkgdGhhdCB3aWxsIGJlCiAgLy8gICBjYWxsZWQgd2l0aCBkYXRhLiBTdGF0aWMgY29udGV4dHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBvbmNlIHBlcgogIC8vICAgZWxlbWVudDsgU2hpbnkgYXBwcyB3aWxsIGNhdXNlIHRoaXMgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHBlcgogIC8vICAgZWxlbWVudCwgYXMgdGhlIGRhdGEgY2hhbmdlcy4KICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0ID0gZnVuY3Rpb24oZGVmaW5pdGlvbikgewogICAgaWYgKCFkZWZpbml0aW9uLm5hbWUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgbmFtZSIpOwogICAgfQogICAgaWYgKCFkZWZpbml0aW9uLnR5cGUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgdHlwZSIpOwogICAgfQogICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBvdXRwdXQgd2lkZ2V0cwogICAgaWYgKGRlZmluaXRpb24udHlwZSAhPT0gIm91dHB1dCIpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgd2lkZ2V0IHR5cGUgJyIgKyBkZWZpbml0aW9uLnR5cGUgKyAiJyIpOwogICAgfQogICAgLy8gVE9ETzogVmVyaWZ5IHRoYXQgLm5hbWUgaXMgYSB2YWxpZCBDU1MgY2xhc3NuYW1lCgogICAgLy8gU3VwcG9ydCBuZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbnMuIE9sZC1zdHlsZSBjbGFzcy1ib3VuZAogICAgLy8gZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0ICJvYmplY3QiIHBlciB3aWRnZXQgcGVyIHR5cGUvY2xhc3Mgb2YKICAgIC8vIHdpZGdldDsgdGhlIHJlbmRlclZhbHVlIGFuZCByZXNpemUgbWV0aG9kcyBvbiBzdWNoIHdpZGdldCBvYmplY3RzCiAgICAvLyB0YWtlIGVsIGFuZCBpbnN0YW5jZSBhcmd1bWVudHMsIGJlY2F1c2UgdGhlIHdpZGdldCBvYmplY3QgY2FuJ3QKICAgIC8vIHN0b3JlIHRoZW0uIE5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQKICAgIC8vIG9iamVjdCBwZXIgd2lkZ2V0IGluc3RhbmNlOyB0aGUgZGVmaW5pdGlvbiB0aGF0J3MgcGFzc2VkIGluIGRvZXNuJ3QKICAgIC8vIHByb3ZpZGUgcmVuZGVyVmFsdWUgb3IgcmVzaXplIG1ldGhvZHMgYXQgYWxsLCBqdXN0IHRoZSBzaW5nbGUgbWV0aG9kCiAgICAvLyAgIGZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpCiAgICAvLyB3aGljaCByZXR1cm5zIGFuIG9iamVjdCB0aGF0IGhhcyByZW5kZXJWYWx1ZSh4KSBhbmQgcmVzaXplKHcsIGgpLgogICAgLy8gVGhpcyBlbmFibGVzIGEgZmFyIG1vcmUgbmF0dXJhbCBwcm9ncmFtbWluZyBzdHlsZSBmb3IgdGhlIHdpZGdldAogICAgLy8gYXV0aG9yLCB3aG8gY2FuIHN0b3JlIHBlci1pbnN0YW5jZSBzdGF0ZSB1c2luZyBlaXRoZXIgT08tc3R5bGUKICAgIC8vIGluc3RhbmNlIGZpZWxkcyBvciBmdW5jdGlvbmFsLXN0eWxlIGNsb3N1cmUgdmFyaWFibGVzIChJIGd1ZXNzIHRoaXMKICAgIC8vIGlzIGluIGNvbnRyYXN0IHRvIHdoYXQgY2FuIG9ubHkgYmUgY2FsbGVkIEMtc3R5bGUgcHNldWRvLU9PIHdoaWNoIGlzCiAgICAvLyB3aGF0IHdlIHJlcXVpcmVkIGJlZm9yZSkuCiAgICBpZiAoZGVmaW5pdGlvbi5mYWN0b3J5KSB7CiAgICAgIGRlZmluaXRpb24gPSBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZpbml0aW9uKTsKICAgIH0KCiAgICBpZiAoIWRlZmluaXRpb24ucmVuZGVyVmFsdWUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgcmVuZGVyVmFsdWUgZnVuY3Rpb24iKTsKICAgIH0KCiAgICAvLyBGb3Igc3RhdGljIHJlbmRlcmluZyAobm9uLVNoaW55KSwgdXNlIGEgc2ltcGxlIHdpZGdldCByZWdpc3RyYXRpb24KICAgIC8vIHNjaGVtZS4gV2UgYWxzbyB1c2UgdGhpcyBzY2hlbWUgZm9yIFNoaW55IGFwcHMvZG9jdW1lbnRzIHRoYXQgYWxzbwogICAgLy8gY29udGFpbiBzdGF0aWMgd2lkZ2V0cy4KICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107CiAgICAvLyBNZXJnZSBkZWZhdWx0cyBpbnRvIHRoZSBkZWZpbml0aW9uOyBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24uCiAgICB2YXIgc3RhdGljQmluZGluZyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOwogICAgb3ZlcnJpZGVNZXRob2Qoc3RhdGljQmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgICAgdmFyIHJlc3VsdHMgPSBzdXBlcmZ1bmMoc2NvcGUpOwogICAgICAgIC8vIEZpbHRlciBvdXQgU2hpbnkgb3V0cHV0cywgd2Ugb25seSB3YW50IHRoZSBzdGF0aWMga2luZAogICAgICAgIHJldHVybiBmaWx0ZXJCeUNsYXNzKHJlc3VsdHMsICJodG1sLXdpZGdldC1vdXRwdXQiLCBmYWxzZSk7CiAgICAgIH07CiAgICB9KTsKICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzLnB1c2goc3RhdGljQmluZGluZyk7CgogICAgaWYgKHNoaW55TW9kZSkgewogICAgICAvLyBTaGlueSBpcyBydW5uaW5nLiBSZWdpc3RlciB0aGUgZGVmaW5pdGlvbiB3aXRoIGFuIG91dHB1dCBiaW5kaW5nLgogICAgICAvLyBUaGUgZGVmaW5pdGlvbiBpdHNlbGYgd2lsbCBub3QgYmUgdGhlIG91dHB1dCBiaW5kaW5nLCBpbnN0ZWFkCiAgICAgIC8vIHdlIHdpbGwgbWFrZSBhbiBvdXRwdXQgYmluZGluZyBvYmplY3QgdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlCiAgICAgIC8vIGRlZmluaXRpb24uIFRoaXMgaXMgYmVjYXVzZSB3ZSBmb29saXNobHkgdXNlZCB0aGUgc2FtZSBtZXRob2QKICAgICAgLy8gbmFtZSAocmVuZGVyVmFsdWUpIGZvciBodG1sd2lkZ2V0cyBkZWZpbml0aW9uIGFuZCBTaGlueSBiaW5kaW5ncwogICAgICAvLyBidXQgdGhleSBhY3R1YWxseSBoYXZlIHF1aXRlIGRpZmZlcmVudCBzZW1hbnRpY3MgKHRoZSBTaGlueQogICAgICAvLyBiaW5kaW5ncyByZWNlaXZlIGRhdGEgdGhhdCBpbmNsdWRlcyBsb3RzIG9mIG1ldGFkYXRhIHRoYXQgaXQKICAgICAgLy8gc3RyaXBzIG9mZiBiZWZvcmUgY2FsbGluZyBodG1sd2lkZ2V0cyByZW5kZXJWYWx1ZSkuIFdlIGNhbid0CiAgICAgIC8vIGp1c3QgaWdub3JlIHRoZSBkaWZmZXJlbmNlIGJlY2F1c2UgaW4gc29tZSB3aWRnZXRzIGl0J3MgaGVscGZ1bAogICAgICAvLyB0byBjYWxsIHRoaXMucmVuZGVyVmFsdWUoKSBmcm9tIGluc2lkZSBvZiByZXNpemUoKSwgYW5kIGlmCiAgICAgIC8vIHdlJ3JlIG5vdCBkZWxlZ2F0aW5nLCB0aGVuIHRoYXQgY2FsbCB3aWxsIGdvIHRvIHRoZSBTaGlueQogICAgICAvLyB2ZXJzaW9uIGluc3RlYWQgb2YgdGhlIGh0bWx3aWRnZXRzIHZlcnNpb24uCgogICAgICAvLyBNZXJnZSBkZWZhdWx0cyB3aXRoIGRlZmluaXRpb24sIHdpdGhvdXQgbXV0YXRpbmcgZWl0aGVyLgogICAgICB2YXIgYmluZGluZ0RlZiA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOwoKICAgICAgLy8gVGhpcyBvYmplY3Qgd2lsbCBiZSBvdXIgYWN0dWFsIFNoaW55IGJpbmRpbmcuCiAgICAgIHZhciBzaGlueUJpbmRpbmcgPSBuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpOwoKICAgICAgLy8gV2l0aCBhIGZldyBleGNlcHRpb25zLCB3ZSdsbCB3YW50IHRvIHNpbXBseSB1c2UgdGhlIGJpbmRpbmdEZWYncwogICAgICAvLyB2ZXJzaW9uIG9mIG1ldGhvZHMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCiAgICAgIC8vIFNoaW55J3MgZGVmYXVsdHMuIE5PVEU6IElmIFNoaW55J3Mgb3V0cHV0IGJpbmRpbmdzIGdhaW4gYWRkaXRpb25hbAogICAgICAvLyBtZXRob2RzIGluIHRoZSBmdXR1cmUsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgb3ZlcnJpZGVhYmxlIGJ5CiAgICAgIC8vIEhUTUxXaWRnZXQgYmluZGluZyBkZWZpbml0aW9ucywgdGhlbiB3ZSdsbCBuZWVkIHRvIGFkZCB0aGVtIHRvIHRoaXMKICAgICAgLy8gbGlzdC4KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiZ2V0SWQiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUNoYW5nZSIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJvblZhbHVlRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAicmVuZGVyRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiY2xlYXJFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJzaG93UHJvZ3Jlc3MiKTsKCiAgICAgIC8vIFRoZSBmaW5kLCByZW5kZXJWYWx1ZSwgYW5kIHJlc2l6ZSBhcmUgaGFuZGxlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB3ZQogICAgICAvLyB3YW50IHRvIGFjdHVhbGx5IGRlY29yYXRlIHRoZSBiZWhhdmlvciBvZiB0aGUgYmluZGluZ0RlZiBtZXRob2RzLgoKICAgICAgc2hpbnlCaW5kaW5nLmZpbmQgPSBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gYmluZGluZ0RlZi5maW5kKHNjb3BlKTsKCiAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzCiAgICAgICAgdmFyIGR5bmFtaWNSZXN1bHRzID0gcmVzdWx0cy5maWx0ZXIoIi5odG1sLXdpZGdldC1vdXRwdXQiKTsKCiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdoYXRldmVyIGNhdXNlZCBTaGlueSB0byB0aGluayB0aGVyZSBtaWdodCBiZQogICAgICAgIC8vIG5ldyBkeW5hbWljIG91dHB1dHMsIGFsc28gY2F1c2VkIHRoZXJlIHRvIGJlIG5ldyBzdGF0aWMgb3V0cHV0cy4KICAgICAgICAvLyBTaW5jZSB0aGVyZSBtaWdodCBiZSBsb3RzIG9mIGRpZmZlcmVudCBodG1sd2lkZ2V0cyBiaW5kaW5ncywgd2UKICAgICAgICAvLyBzY2hlZHVsZSBleGVjdXRpb24gZm9yIGxhdGVyLS1ubyBuZWVkIHRvIHN0YXRpY1JlbmRlciBtdWx0aXBsZQogICAgICAgIC8vIHRpbWVzLgogICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gZHluYW1pY1Jlc3VsdHMubGVuZ3RoKQogICAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXIoKTsKCiAgICAgICAgcmV0dXJuIGR5bmFtaWNSZXN1bHRzOwogICAgICB9OwoKICAgICAgLy8gV3JhcCByZW5kZXJWYWx1ZSB0byBoYW5kbGUgaW5pdGlhbGl6YXRpb24sIHdoaWNoIHVuZm9ydHVuYXRlbHkgaXNuJ3QKICAgICAgLy8gc3VwcG9ydGVkIG5hdGl2ZWx5IGJ5IFNoaW55IGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZy4KCiAgICAgIHNoaW55QmluZGluZy5yZW5kZXJWYWx1ZSA9IGZ1bmN0aW9uKGVsLCBkYXRhKSB7CiAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7CiAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBkYXRhLmV2YWxzICYmIGkgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2ldKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFiaW5kaW5nRGVmLnJlbmRlck9uTnVsbFZhbHVlKSB7CiAgICAgICAgICBpZiAoZGF0YS54ID09PSBudWxsKSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJpbmhlcml0IjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgIGluaXRTaXppbmcoZWwpOwoKICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiLCB0cnVlKTsKICAgICAgICAgIGlmIChiaW5kaW5nRGVmLmluaXRpYWxpemUpIHsKICAgICAgICAgICAgdmFyIHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGJpbmRpbmdEZWYuaW5pdGlhbGl6ZShlbCwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpOwogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYmluZGluZ0RlZi5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpLCBbZWwsIGRhdGEueF0pOwogICAgICB9OwoKICAgICAgLy8gT25seSBvdmVycmlkZSByZXNpemUgaWYgYmluZGluZ0RlZiBpbXBsZW1lbnRzIGl0CiAgICAgIGlmIChiaW5kaW5nRGVmLnJlc2l6ZSkgewogICAgICAgIHNoaW55QmluZGluZy5yZXNpemUgPSBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgICAgLy8gU2hpbnkgY2FuIGNhbGwgcmVzaXplIGJlZm9yZSBpbml0aWFsaXplL3JlbmRlclZhbHVlIGhhdmUgYmVlbgogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuCiAgICAgICAgICBpZiAoZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICAgIGJpbmRpbmdEZWYucmVzaXplKGVsLCB3aWR0aCwgaGVpZ2h0LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgIH0KCiAgICAgIFNoaW55Lm91dHB1dEJpbmRpbmdzLnJlZ2lzdGVyKHNoaW55QmluZGluZywgYmluZGluZ0RlZi5uYW1lKTsKICAgIH0KICB9OwoKICB2YXIgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICBmdW5jdGlvbiBzY2hlZHVsZVN0YXRpY1JlbmRlcigpIHsKICAgIGlmICghc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkKSB7CiAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0sIDEpOwogICAgfQogIH0KCiAgLy8gUmVuZGVyIHN0YXRpYyB3aWRnZXRzIGFmdGVyIHRoZSBkb2N1bWVudCBmaW5pc2hlcyBsb2FkaW5nCiAgLy8gU3RhdGljYWxseSByZW5kZXIgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIG9mIHRoaXMgd2lkZ2V0J3MgY2xhc3MKICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgYmluZGluZ3MgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIGZvckVhY2goYmluZGluZ3MsIGZ1bmN0aW9uKGJpbmRpbmcpIHsKICAgICAgdmFyIG1hdGNoZXMgPSBiaW5kaW5nLmZpbmQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKICAgICAgZm9yRWFjaChtYXRjaGVzLCBmdW5jdGlvbihlbCkgewogICAgICAgIHZhciBzaXplT2JqID0gaW5pdFNpemluZyhlbCwgYmluZGluZyk7CgogICAgICAgIHZhciBnZXRTaXplID0gZnVuY3Rpb24oZWwpIHsKICAgICAgICAgIGlmIChzaXplT2JqKSB7CiAgICAgICAgICAgIHJldHVybiB7dzogc2l6ZU9iai5nZXRXaWR0aCgpLCBoOiBzaXplT2JqLmdldEhlaWdodCgpfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgcmV0dXJuIHt3OiByZWN0LndpZHRoLCBoOiByZWN0LmhlaWdodH0KICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBpZiAoaGFzQ2xhc3MoZWwsICJodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiKSkKICAgICAgICAgIHJldHVybjsKICAgICAgICBlbC5jbGFzc05hbWUgPSBlbC5jbGFzc05hbWUgKyAiIGh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCI7CgogICAgICAgIHZhciBpbml0UmVzdWx0OwogICAgICAgIGlmIChiaW5kaW5nLmluaXRpYWxpemUpIHsKICAgICAgICAgIHZhciBzaXplID0gZ2V0U2l6ZShlbCk7CiAgICAgICAgICBpbml0UmVzdWx0ID0gYmluZGluZy5pbml0aWFsaXplKGVsLCBzaXplLncsIHNpemUuaCk7CiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgaW5pdFJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYmluZGluZy5yZXNpemUpIHsKICAgICAgICAgIHZhciBsYXN0U2l6ZSA9IGdldFNpemUoZWwpOwogICAgICAgICAgdmFyIHJlc2l6ZUhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBzaXplID0gZ2V0U2l6ZShlbCk7CiAgICAgICAgICAgIGlmIChzaXplLncgPT09IDAgJiYgc2l6ZS5oID09PSAwKQogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gbGFzdFNpemUudyAmJiBzaXplLmggPT09IGxhc3RTaXplLmgpCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBsYXN0U2l6ZSA9IHNpemU7CiAgICAgICAgICAgIGJpbmRpbmcucmVzaXplKGVsLCBzaXplLncsIHNpemUuaCwgaW5pdFJlc3VsdCk7CiAgICAgICAgICB9OwoKICAgICAgICAgIG9uKHdpbmRvdywgInJlc2l6ZSIsIHJlc2l6ZUhhbmRsZXIpOwoKICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciBjYXNlcyB3aGVyZSB3ZSdyZSBydW5uaW5nIGluIGEgU2hpbnkKICAgICAgICAgIC8vIGFwcCwgYnV0IHRoZSB3aWRnZXQgaXRzZWxmIGlzIG5vdCBhIFNoaW55IG91dHB1dCwgYnV0CiAgICAgICAgICAvLyByYXRoZXIgYSBzaW1wbGUgc3RhdGljIHdpZGdldC4gT25lIGV4YW1wbGUgb2YgdGhpcyBpcwogICAgICAgICAgLy8gYW4gcm1hcmtkb3duIGRvY3VtZW50IHRoYXQgaGFzIHJ1bnRpbWU6c2hpbnkgYW5kIHdpZGdldAogICAgICAgICAgLy8gdGhhdCBpc24ndCBpbiBhIHJlbmRlciBmdW5jdGlvbi4gU2hpbnkgb25seSBrbm93cyB0bwogICAgICAgICAgLy8gY2FsbCByZXNpemUgaGFuZGxlcnMgZm9yIFNoaW55IG91dHB1dHMsIG5vdCBmb3Igc3RhdGljCiAgICAgICAgICAvLyB3aWRnZXRzLCBzbyB3ZSBkbyBpdCBvdXJzZWx2ZXMuCiAgICAgICAgICBpZiAod2luZG93LmpRdWVyeSkgewogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigKICAgICAgICAgICAgICAic2hvd24uaHRtbHdpZGdldHMgc2hvd24uYnMudGFiLmh0bWx3aWRnZXRzIHNob3duLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwKICAgICAgICAgICAgICByZXNpemVIYW5kbGVyCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKAogICAgICAgICAgICAgICJoaWRkZW4uaHRtbHdpZGdldHMgaGlkZGVuLmJzLnRhYi5odG1sd2lkZ2V0cyBoaWRkZW4uYnMuY29sbGFwc2UuaHRtbHdpZGdldHMiLAogICAgICAgICAgICAgIHJlc2l6ZUhhbmRsZXIKICAgICAgICAgICAgKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIHNwZWNpZmljIGNhc2Ugb2YgaW9zbGlkZXMsIHdoaWNoCiAgICAgICAgICAvLyBmbGlwcyBzbGlkZXMgYmV0d2VlbiBkaXNwbGF5Om5vbmUgYW5kIGRpc3BsYXk6YmxvY2suCiAgICAgICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIG5vdCBoYXZlIHRvIGhhdmUgaW9zbGlkZS1zcGVjaWZpYyBjb2RlCiAgICAgICAgICAvLyBoZXJlLCBidXQgcmF0aGVyIGhhdmUgaW9zbGlkZXMgcmFpc2UgYSBnZW5lcmljIGV2ZW50LAogICAgICAgICAgLy8gYnV0IHRoZSBybWFya2Rvd24gcGFja2FnZSBqdXN0IHdlbnQgdG8gQ1JBTiBzbyB0aGUKICAgICAgICAgIC8vIHdpbmRvdyB0byBnZXR0aW5nIHRoYXQgZml4ZWQgbWF5IGJlIGxvbmcuCiAgICAgICAgICBpZiAod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgICAgICAgLy8gSXQncyBPSyB0byBsaW1pdCB0aGlzIHRvIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyCiAgICAgICAgICAgIC8vIGJyb3dzZXJzIGJlY2F1c2UgaW9zbGlkZXMgaXRzZWxmIG9ubHkgc3VwcG9ydHMKICAgICAgICAgICAgLy8gc3VjaCBicm93c2Vycy4KICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWVudGVyIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVsZWF2ZSIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHNjcmlwdERhdGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzY3JpcHRbZGF0YS1mb3I9JyIgKyBlbC5pZCArICInXVt0eXBlPSdhcHBsaWNhdGlvbi9qc29uJ10iKTsKICAgICAgICBpZiAoc2NyaXB0RGF0YSkgewogICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKHNjcmlwdERhdGEudGV4dENvbnRlbnQgfHwgc2NyaXB0RGF0YS50ZXh0KTsKICAgICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgICAgZm9yICh2YXIgayA9IDA7IGRhdGEuZXZhbHMgJiYgayA8IGRhdGEuZXZhbHMubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1trXSk7CiAgICAgICAgICB9CiAgICAgICAgICBiaW5kaW5nLnJlbmRlclZhbHVlKGVsLCBkYXRhLngsIGluaXRSZXN1bHQpOwogICAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBpbml0UmVzdWx0LCBbZWwsIGRhdGEueF0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9KTsKCiAgICBpbnZva2VQb3N0UmVuZGVySGFuZGxlcnMoKTsKICB9CgoKICBmdW5jdGlvbiBoYXNfalF1ZXJ5MygpIHsKICAgIGlmICghd2luZG93LmpRdWVyeSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICB2YXIgJHZlcnNpb24gPSB3aW5kb3cualF1ZXJ5LmZuLmpxdWVyeTsKICAgIHZhciAkbWFqb3JfdmVyc2lvbiA9IHBhcnNlSW50KCR2ZXJzaW9uLnNwbGl0KCIuIilbMF0pOwogICAgcmV0dXJuICRtYWpvcl92ZXJzaW9uID49IDM7CiAgfQoKICAvKgogIC8gU2hpbnkgMS40IGJ1bXBlZCBqUXVlcnkgZnJvbSAxLnggdG8gMy54IHdoaWNoIG1lYW5zIGpRdWVyeSdzCiAgLyBvbi1yZWFkeSBoYW5kbGVyIChpLmUuLCAkKGZuKSkgaXMgbm93IGFzeW5jcm9ub3VzIChpLmUuLCBpdCBub3cKICAvIHJlYWxseSBtZWFucyAkKHNldFRpbWVvdXQoZm4pKS4KICAvIGh0dHBzOi8vanF1ZXJ5LmNvbS91cGdyYWRlLWd1aWRlLzMuMC8jYnJlYWtpbmctY2hhbmdlLWRvY3VtZW50LXJlYWR5LWhhbmRsZXJzLWFyZS1ub3ctYXN5bmNocm9ub3VzCiAgLwogIC8gU2luY2UgU2hpbnkgdXNlcyAkKCkgdG8gc2NoZWR1bGUgaW5pdFNoaW55LCBzaGlueT49MS40IGNhbGxzIGluaXRTaGlueQogIC8gb25lIHRpY2sgbGF0ZXIgdGhhbiBpdCBkaWQgYmVmb3JlLCB3aGljaCBtZWFucyBzdGF0aWNSZW5kZXIoKSBpcwogIC8gY2FsbGVkIHJlbmRlclZhbHVlKCkgZWFybGllciB0aGFuIChhZHZhbmNlZCkgd2lkZ2V0IGF1dGhvcnMgbWlnaHQgYmUgZXhwZWN0aW5nLgogIC8gaHR0cHM6Ly9naXRodWIuY29tL3JzdHVkaW8vc2hpbnkvaXNzdWVzLzI2MzAKICAvCiAgLyBGb3IgYSBjb25jcmV0ZSBleGFtcGxlLCBsZWFmbGV0IGhhcyBzb21lIG1ldGhvZHMgKGUuZy4sIHVwZGF0ZUJvdW5kcykKICAvIHdoaWNoIHJlZmVyZW5jZSBTaGlueSBtZXRob2RzIHJlZ2lzdGVyZWQgaW4gaW5pdFNoaW55IChlLmcuLCBzZXRJbnB1dFZhbHVlKS4KICAvIFNpbmNlIGxlYWZsZXQgaXMgcHJpdnkgdG8gdGhpcyBsaWZlLWN5Y2xlLCBpdCBrbm93cyB0byB1c2Ugc2V0VGltZW91dCgpIHRvCiAgLyBkZWxheSBleGVjdXRpb24gb2YgdGhvc2UgbWV0aG9kcyAodW50aWwgU2hpbnkgbWV0aG9kcyBhcmUgcmVhZHkpCiAgLyBodHRwczovL2dpdGh1Yi5jb20vcnN0dWRpby9sZWFmbGV0L2Jsb2IvMThlYzk4MS9qYXZhc2NyaXB0L3NyYy9pbmRleC5qcyNMMjY2LUwyNjgKICAvCiAgLyBJZGVhbGx5IHdpZGdldCBhdXRob3JzIHdvdWxkbid0IG5lZWQgdG8gdXNlIHRoaXMgc2V0VGltZW91dCgpIGhhY2sgdGhhdAogIC8gbGVhZmxldCB1c2VzIHRvIGNhbGwgU2hpbnkgbWV0aG9kcyBvbiBhIHN0YXRpY1JlbmRlcigpLiBJbiB0aGUgbG9uZyBydW4sCiAgLyB0aGUgbG9naWMgaW5pdFNoaW55IHNob3VsZCBiZSBicm9rZW4gdXAgc28gdGhhdCBtZXRob2QgcmVnaXN0cmF0aW9uIGhhcHBlbnMKICAvIHJpZ2h0IGF3YXksIGJ1dCBiaW5kaW5nIGhhcHBlbnMgbGF0ZXIuCiAgKi8KICBmdW5jdGlvbiBtYXliZVN0YXRpY1JlbmRlckxhdGVyKCkgewogICAgaWYgKHNoaW55TW9kZSAmJiBoYXNfalF1ZXJ5MygpKSB7CiAgICAgIHdpbmRvdy5qUXVlcnkod2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcik7CiAgICB9IGVsc2UgewogICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICB9CiAgfQoKICBpZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgYXJndW1lbnRzLmNhbGxlZSwgZmFsc2UpOwogICAgICBtYXliZVN0YXRpY1JlbmRlckxhdGVyKCk7CiAgICB9LCBmYWxzZSk7CiAgfSBlbHNlIGlmIChkb2N1bWVudC5hdHRhY2hFdmVudCkgewogICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGZ1bmN0aW9uKCkgewogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIikgewogICAgICAgIGRvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICBtYXliZVN0YXRpY1JlbmRlckxhdGVyKCk7CiAgICAgIH0KICAgIH0pOwogIH0KCgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRBdHRhY2htZW50VXJsID0gZnVuY3Rpb24oZGVwbmFtZSwga2V5KSB7CiAgICAvLyBJZiBubyBrZXksIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGl0ZW0KICAgIGlmICh0eXBlb2Yoa2V5KSA9PT0gInVuZGVmaW5lZCIpCiAgICAgIGtleSA9IDE7CgogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXBuYW1lICsgIi0iICsga2V5ICsgIi1hdHRhY2htZW50Iik7CiAgICBpZiAoIWxpbmspIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRhY2htZW50ICIgKyBkZXBuYW1lICsgIi8iICsga2V5ICsgIiBub3QgZm91bmQgaW4gZG9jdW1lbnQiKTsKICAgIH0KICAgIHJldHVybiBsaW5rLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5kYXRhZnJhbWVUb0QzID0gZnVuY3Rpb24oZGYpIHsKICAgIHZhciBuYW1lcyA9IFtdOwogICAgdmFyIGxlbmd0aDsKICAgIGZvciAodmFyIG5hbWUgaW4gZGYpIHsKICAgICAgICBpZiAoZGYuaGFzT3duUHJvcGVydHkobmFtZSkpCiAgICAgICAgICAgIG5hbWVzLnB1c2gobmFtZSk7CiAgICAgICAgaWYgKHR5cGVvZihkZltuYW1lXSkgIT09ICJvYmplY3QiIHx8IHR5cGVvZihkZltuYW1lXS5sZW5ndGgpID09PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZihsZW5ndGgpICE9PSAidW5kZWZpbmVkIiAmJiBsZW5ndGggIT09IGRmW25hbWVdLmxlbmd0aCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIik7CiAgICAgICAgfQogICAgICAgIGxlbmd0aCA9IGRmW25hbWVdLmxlbmd0aDsKICAgIH0KICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgaXRlbTsKICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IGxlbmd0aDsgcm93KyspIHsKICAgICAgICBpdGVtID0ge307CiAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgbmFtZXMubGVuZ3RoOyBjb2wrKykgewogICAgICAgICAgICBpdGVtW25hbWVzW2NvbF1dID0gZGZbbmFtZXNbY29sXV1bcm93XTsKICAgICAgICB9CiAgICAgICAgcmVzdWx0cy5wdXNoKGl0ZW0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhcnJheSkgewogICAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSByZXR1cm4gYXJyYXk7CiAgICAgIHZhciBuZXdBcnJheSA9IGFycmF5WzBdLm1hcChmdW5jdGlvbihjb2wsIGkpIHsKICAgICAgICAgIHJldHVybiBhcnJheS5tYXAoZnVuY3Rpb24ocm93KSB7CiAgICAgICAgICAgICAgcmV0dXJuIHJvd1tpXQogICAgICAgICAgfSkKICAgICAgfSk7CiAgICAgIHJldHVybiBuZXdBcnJheTsKICB9OwogIC8vIFNwbGl0IHZhbHVlIGF0IHNwbGl0Q2hhciwgYnV0IGFsbG93IHNwbGl0Q2hhciB0byBiZSBlc2NhcGVkCiAgLy8gdXNpbmcgZXNjYXBlQ2hhci4gQW55IG90aGVyIGNoYXJhY3RlcnMgZXNjYXBlZCBieSBlc2NhcGVDaGFyCiAgLy8gd2lsbCBiZSBpbmNsdWRlZCBhcyB1c3VhbCAoaW5jbHVkaW5nIGVzY2FwZUNoYXIgaXRzZWxmKS4KICBmdW5jdGlvbiBzcGxpdFdpdGhFc2NhcGUodmFsdWUsIHNwbGl0Q2hhciwgZXNjYXBlQ2hhcikgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBlc2NhcGVNb2RlID0gZmFsc2U7CiAgICB2YXIgY3VycmVudFJlc3VsdCA9ICIiOwogICAgZm9yICh2YXIgcG9zID0gMDsgcG9zIDwgdmFsdWUubGVuZ3RoOyBwb3MrKykgewogICAgICBpZiAoIWVzY2FwZU1vZGUpIHsKICAgICAgICBpZiAodmFsdWVbcG9zXSA9PT0gc3BsaXRDaGFyKSB7CiAgICAgICAgICByZXN1bHRzLnB1c2goY3VycmVudFJlc3VsdCk7CiAgICAgICAgICBjdXJyZW50UmVzdWx0ID0gIiI7CiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVtwb3NdID09PSBlc2NhcGVDaGFyKSB7CiAgICAgICAgICBlc2NhcGVNb2RlID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBjdXJyZW50UmVzdWx0ICs9IHZhbHVlW3Bvc107CiAgICAgICAgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgICBpZiAoY3VycmVudFJlc3VsdCAhPT0gIiIpIHsKICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQogIC8vIEZ1bmN0aW9uIGF1dGhvcmVkIGJ5IFlpaHVpL0pKIEFsbGFpcmUKICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIgPSBmdW5jdGlvbihvLCBtZW1iZXIpIHsKICAgIHZhciBwYXJ0cyA9IHNwbGl0V2l0aEVzY2FwZShtZW1iZXIsICcuJywgJ1xcJyk7CiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICB2YXIgcGFydCA9IHBhcnRzW2ldOwogICAgICAvLyBwYXJ0IG1heSBiZSBhIGNoYXJhY3RlciBvciAnbnVtZXJpYycgbWVtYmVyIG5hbWUKICAgICAgaWYgKG8gIT09IG51bGwgJiYgdHlwZW9mIG8gPT09ICJvYmplY3QiICYmIHBhcnQgaW4gbykgewogICAgICAgIGlmIChpID09IChsIC0gMSkpIHsgLy8gaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgdGhlbiBldmFsdWxhdGUKICAgICAgICAgIGlmICh0eXBlb2Ygb1twYXJ0XSA9PT0gInN0cmluZyIpCiAgICAgICAgICAgIG9bcGFydF0gPSB0cnlFdmFsKG9bcGFydF0pOwogICAgICAgIH0gZWxzZSB7IC8vIG90aGVyd2lzZSBjb250aW51ZSB0byBuZXh0IGVtYmVkZGVkIG9iamVjdAogICAgICAgICAgbyA9IG9bcGFydF07CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKCiAgLy8gUmV0cmlldmUgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZiBhbgogIC8vIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIGFuIGVsZW1lbnQsIG9yIG51bGwgaWYgbm9uZS4KICB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbihlbCkgewogICAgcmV0dXJuIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKTsKICB9OwoKICAvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3RvciwKICAvLyBhbmQgcmV0dXJucyB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZSAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mCiAgLy8gYW4gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggdGhhdCBlbGVtZW50LCBpZiBhbnkuIElmIG5vIGVsZW1lbnQgbWF0Y2hlcyB0aGUKICAvLyBzZWxlY3Rvciwgb3IgdGhlIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQgaGFzIG5vIEhUTUxXaWRnZXQKICAvLyBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggaXQsIHRoZW4gbnVsbCBpcyByZXR1cm5lZC4KICAvLwogIC8vIFRoZSBzY29wZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHdpbmRvdy5kb2N1bWVudC4KICB3aW5kb3cuSFRNTFdpZGdldHMuZmluZCA9IGZ1bmN0aW9uKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewogICAgICBzZWxlY3RvciA9IHNjb3BlOwogICAgICBzY29wZSA9IGRvY3VtZW50OwogICAgfQoKICAgIHZhciBlbCA9IHNjb3BlLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwogICAgaWYgKGVsID09PSBudWxsKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZShlbCk7CiAgICB9CiAgfTsKCiAgLy8gRmluZHMgYWxsIGVsZW1lbnRzIGluIHRoZSBzY29wZSB0aGF0IG1hdGNoIHRoZSBzZWxlY3RvciwgYW5kCiAgLy8gcmV0dXJucyB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZXMgKGkuZS4gdGhlIHJldHVybiB2YWx1ZXMgb2YKICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWxlbWVudHMsIGluIGFuIGFycmF5LiBJZiBlbGVtZW50cyB0aGF0CiAgLy8gbWF0Y2ggdGhlIHNlbGVjdG9yIGRvbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBIVE1MV2lkZ2V0CiAgLy8gaW5zdGFuY2UsIHRoZSByZXR1cm5lZCBhcnJheSB3aWxsIGNvbnRhaW4gbnVsbHMuCiAgLy8KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmRBbGwgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgc2VsZWN0b3IgPSBzY29wZTsKICAgICAgc2NvcGUgPSBkb2N1bWVudDsKICAgIH0KCiAgICB2YXIgbm9kZXMgPSBzY29wZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKICAgIHZhciByZXN1bHRzID0gW107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHJlc3VsdHMucHVzaCh3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2Uobm9kZXNbaV0pKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIHZhciBwb3N0UmVuZGVySGFuZGxlcnMgPSBbXTsKICBmdW5jdGlvbiBpbnZva2VQb3N0UmVuZGVySGFuZGxlcnMoKSB7CiAgICB3aGlsZSAocG9zdFJlbmRlckhhbmRsZXJzLmxlbmd0aCkgewogICAgICB2YXIgaGFuZGxlciA9IHBvc3RSZW5kZXJIYW5kbGVycy5zaGlmdCgpOwogICAgICBpZiAoaGFuZGxlcikgewogICAgICAgIGhhbmRsZXIoKTsKICAgICAgfQogICAgfQogIH0KCiAgLy8gUmVnaXN0ZXIgdGhlIGdpdmVuIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQgYWZ0ZXIgdGhlCiAgLy8gbmV4dCB0aW1lIHN0YXRpYyB3aWRnZXRzIGFyZSByZW5kZXJlZC4KICB3aW5kb3cuSFRNTFdpZGdldHMuYWRkUG9zdFJlbmRlckhhbmRsZXIgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgcG9zdFJlbmRlckhhbmRsZXJzLnB1c2goY2FsbGJhY2spOwogIH07CgogIC8vIFRha2VzIGEgbmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb24sIGFuZCByZXR1cm5zIGFuCiAgLy8gb2xkLXN0eWxlIGNsYXNzLWJvdW5kIGRlZmluaXRpb24uIFRoaXMgc2F2ZXMgdXMgZnJvbSBoYXZpbmcKICAvLyB0byByZXdyaXRlIGFsbCB0aGUgbG9naWMgaW4gdGhpcyBmaWxlIHRvIGFjY29tb2RhdGUgYm90aAogIC8vIHR5cGVzIG9mIGRlZmluaXRpb25zLgogIGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeURlZmluaXRpb25BZGFwdGVyKGRlZm4pIHsKICAgIHZhciByZXN1bHQgPSB7CiAgICAgIG5hbWU6IGRlZm4ubmFtZSwKICAgICAgdHlwZTogZGVmbi50eXBlLAogICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgIHJldHVybiBkZWZuLmZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpOwogICAgICB9LAogICAgICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIHgsIGluc3RhbmNlKSB7CiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlbmRlclZhbHVlKHgpOwogICAgICB9LAogICAgICByZXNpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0LCBpbnN0YW5jZSkgewogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZXNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgIH0KICAgIH07CgogICAgaWYgKGRlZm4uZmluZCkKICAgICAgcmVzdWx0LmZpbmQgPSBkZWZuLmZpbmQ7CiAgICBpZiAoZGVmbi5yZW5kZXJFcnJvcikKICAgICAgcmVzdWx0LnJlbmRlckVycm9yID0gZGVmbi5yZW5kZXJFcnJvcjsKICAgIGlmIChkZWZuLmNsZWFyRXJyb3IpCiAgICAgIHJlc3VsdC5jbGVhckVycm9yID0gZGVmbi5jbGVhckVycm9yOwoKICAgIHJldHVybiByZXN1bHQ7CiAgfQp9KSgpOwo8L3NjcmlwdD4KPHNjcmlwdD4vKiEgalF1ZXJ5IHYzLjYuMCB8IChjKSBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lLmRvY3VtZW50P3QoZSwhMCk6ZnVuY3Rpb24oZSl7aWYoIWUuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIHQoZSl9OnQoZSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKEMsZSl7InVzZSBzdHJpY3QiO3ZhciB0PVtdLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mLHM9dC5zbGljZSxnPXQuZmxhdD9mdW5jdGlvbihlKXtyZXR1cm4gdC5mbGF0LmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiB0LmNvbmNhdC5hcHBseShbXSxlKX0sdT10LnB1c2gsaT10LmluZGV4T2Ysbj17fSxvPW4udG9TdHJpbmcsdj1uLmhhc093blByb3BlcnR5LGE9di50b1N0cmluZyxsPWEuY2FsbChPYmplY3QpLHk9e30sbT1mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZS5pdGVtfSx4PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlPT09ZS53aW5kb3d9LEU9Qy5kb2N1bWVudCxjPXt0eXBlOiEwLHNyYzohMCxub25jZTohMCxub01vZHVsZTohMH07ZnVuY3Rpb24gYihlLHQsbil7dmFyIHIsaSxvPShuPW58fEUpLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2lmKG8udGV4dD1lLHQpZm9yKHIgaW4gYykoaT10W3JdfHx0LmdldEF0dHJpYnV0ZSYmdC5nZXRBdHRyaWJ1dGUocikpJiZvLnNldEF0dHJpYnV0ZShyLGkpO24uaGVhZC5hcHBlbmRDaGlsZChvKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIG51bGw9PWU/ZSsiIjoib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlP25bby5jYWxsKGUpXXx8Im9iamVjdCI6dHlwZW9mIGV9dmFyIGY9IjMuNi4wIixTPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBTLmZuLmluaXQoZSx0KX07ZnVuY3Rpb24gcChlKXt2YXIgdD0hIWUmJiJsZW5ndGgiaW4gZSYmZS5sZW5ndGgsbj13KGUpO3JldHVybiFtKGUpJiYheChlKSYmKCJhcnJheSI9PT1ufHwwPT09dHx8Im51bWJlciI9PXR5cGVvZiB0JiYwPHQmJnQtMSBpbiBlKX1TLmZuPVMucHJvdG90eXBlPXtqcXVlcnk6Zixjb25zdHJ1Y3RvcjpTLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gcy5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/cy5jYWxsKHRoaXMpOmU8MD90aGlzW2UrdGhpcy5sZW5ndGhdOnRoaXNbZV19LHB1c2hTdGFjazpmdW5jdGlvbihlKXt2YXIgdD1TLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxlKTtyZXR1cm4gdC5wcmV2T2JqZWN0PXRoaXMsdH0sZWFjaDpmdW5jdGlvbihlKXtyZXR1cm4gUy5lYWNoKHRoaXMsZSl9LG1hcDpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5tYXAodGhpcyxmdW5jdGlvbihlLHQpe3JldHVybiBuLmNhbGwoZSx0LGUpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhzLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGV2ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5ncmVwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4odCsxKSUyfSkpfSxvZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5ncmVwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCUyfSkpfSxlcTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmxlbmd0aCxuPStlKyhlPDA/dDowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9biYmbjx0P1t0aGlzW25dXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDp1LHNvcnQ6dC5zb3J0LHNwbGljZTp0LnNwbGljZX0sUy5leHRlbmQ9Uy5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLG8sYT1hcmd1bWVudHNbMF18fHt9LHM9MSx1PWFyZ3VtZW50cy5sZW5ndGgsbD0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgYSYmKGw9YSxhPWFyZ3VtZW50c1tzXXx8e30scysrKSwib2JqZWN0Ij09dHlwZW9mIGF8fG0oYSl8fChhPXt9KSxzPT09dSYmKGE9dGhpcyxzLS0pO3M8dTtzKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW3NdKSlmb3IodCBpbiBlKXI9ZVt0XSwiX19wcm90b19fIiE9PXQmJmEhPT1yJiYobCYmciYmKFMuaXNQbGFpbk9iamVjdChyKXx8KGk9QXJyYXkuaXNBcnJheShyKSkpPyhuPWFbdF0sbz1pJiYhQXJyYXkuaXNBcnJheShuKT9bXTppfHxTLmlzUGxhaW5PYmplY3Qobik/bjp7fSxpPSExLGFbdF09Uy5leHRlbmQobCxvLHIpKTp2b2lkIDAhPT1yJiYoYVt0XT1yKSk7cmV0dXJuIGF9LFMuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhmK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxub29wOmZ1bmN0aW9uKCl7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuISghZXx8IltvYmplY3QgT2JqZWN0XSIhPT1vLmNhbGwoZSkpJiYoISh0PXIoZSkpfHwiZnVuY3Rpb24iPT10eXBlb2Yobj12LmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcikmJmEuY2FsbChuKT09PWwpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oZSx0LG4pe2IoZSx7bm9uY2U6dCYmdC5ub25jZX0sbil9LGVhY2g6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTA7aWYocChlKSl7Zm9yKG49ZS5sZW5ndGg7cjxuO3IrKylpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWt9ZWxzZSBmb3IociBpbiBlKWlmKCExPT09dC5jYWxsKGVbcl0scixlW3JdKSlicmVhaztyZXR1cm4gZX0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8W107cmV0dXJuIG51bGwhPWUmJihwKE9iamVjdChlKSk/Uy5tZXJnZShuLCJzdHJpbmciPT10eXBlb2YgZT9bZV06ZSk6dS5jYWxsKG4sZSkpLG59LGluQXJyYXk6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsPT10Py0xOmkuY2FsbCh0LGUsbil9LG1lcmdlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPSt0Lmxlbmd0aCxyPTAsaT1lLmxlbmd0aDtyPG47cisrKWVbaSsrXT10W3JdO3JldHVybiBlLmxlbmd0aD1pLGV9LGdyZXA6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1bXSxpPTAsbz1lLmxlbmd0aCxhPSFuO2k8bztpKyspIXQoZVtpXSxpKSE9PWEmJnIucHVzaChlW2ldKTtyZXR1cm4gcn0sbWFwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89MCxhPVtdO2lmKHAoZSkpZm9yKHI9ZS5sZW5ndGg7bzxyO28rKyludWxsIT0oaT10KGVbb10sbyxuKSkmJmEucHVzaChpKTtlbHNlIGZvcihvIGluIGUpbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7cmV0dXJuIGcoYSl9LGd1aWQ6MSxzdXBwb3J0Onl9KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoUy5mbltTeW1ib2wuaXRlcmF0b3JdPXRbU3ltYm9sLml0ZXJhdG9yXSksUy5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe25bIltvYmplY3QgIit0KyJdIl09dC50b0xvd2VyQ2FzZSgpfSk7dmFyIGQ9ZnVuY3Rpb24obil7dmFyIGUsZCxiLG8saSxoLGYsZyx3LHUsbCxULEMsYSxFLHYscyxjLHksUz0ic2l6emxlIisxKm5ldyBEYXRlLHA9bi5kb2N1bWVudCxrPTAscj0wLG09dWUoKSx4PXVlKCksQT11ZSgpLE49dWUoKSxqPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10JiYobD0hMCksMH0sRD17fS5oYXNPd25Qcm9wZXJ0eSx0PVtdLHE9dC5wb3AsTD10LnB1c2gsSD10LnB1c2gsTz10LnNsaWNlLFA9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspaWYoZVtuXT09PXQpcmV0dXJuIG47cmV0dXJuLTF9LFI9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixJPSIoPzpcXFxcW1xcZGEtZkEtRl17MSw2fSIrTSsiP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlwwLVxceDdmXSkrIixXPSJcXFsiK00rIiooIitJKyIpKD86IitNKyIqKFsqXiR8IX5dPz0pIitNKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrSSsiKSl8KSIrTSsiKlxcXSIsRj0iOigiK0krIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK1crIikqKXwuKilcXCl8KSIsQj1uZXcgUmVnRXhwKE0rIisiLCJnIiksJD1uZXcgUmVnRXhwKCJeIitNKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK00rIiskIiwiZyIpLF89bmV3IFJlZ0V4cCgiXiIrTSsiKiwiK00rIioiKSx6PW5ldyBSZWdFeHAoIl4iK00rIiooWz4rfl18IitNKyIpIitNKyIqIiksVT1uZXcgUmVnRXhwKE0rInw+IiksWD1uZXcgUmVnRXhwKEYpLFY9bmV3IFJlZ0V4cCgiXiIrSSsiJCIpLEc9e0lEOm5ldyBSZWdFeHAoIl4jKCIrSSsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitJKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitJKyJ8WypdKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrVyksUFNFVURPOm5ldyBSZWdFeHAoIl4iK0YpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK1IrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L0hUTUwkL2ksUT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLEo9L15oXGQkL2ksSz0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGVlPS9bK35dLyx0ZT1uZXcgUmVnRXhwKCJcXFxcW1xcZGEtZkEtRl17MSw2fSIrTSsiP3xcXFxcKFteXFxyXFxuXFxmXSkiLCJnIiksbmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj0iMHgiK2Uuc2xpY2UoMSktNjU1MzY7cmV0dXJuIHR8fChuPDA/U3RyaW5nLmZyb21DaGFyQ29kZShuKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKG4+PjEwfDU1Mjk2LDEwMjMmbnw1NjMyMCkpfSxyZT0vKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZyxpZT1mdW5jdGlvbihlLHQpe3JldHVybiB0PyJcMCI9PT1lPyJcdWZmZmQiOmUuc2xpY2UoMCwtMSkrIlxcIitlLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoiXFwiK2V9LG9lPWZ1bmN0aW9uKCl7VCgpfSxhZT1iZShmdW5jdGlvbihlKXtyZXR1cm4hMD09PWUuZGlzYWJsZWQmJiJmaWVsZHNldCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9LHtkaXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7SC5hcHBseSh0PU8uY2FsbChwLmNoaWxkTm9kZXMpLHAuY2hpbGROb2RlcyksdFtwLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlKXtIPXthcHBseTp0Lmxlbmd0aD9mdW5jdGlvbihlLHQpe0wuYXBwbHkoZSxPLmNhbGwodCkpfTpmdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoLHI9MDt3aGlsZShlW24rK109dFtyKytdKTtlLmxlbmd0aD1uLTF9fX1mdW5jdGlvbiBzZSh0LGUsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmPWUmJmUub3duZXJEb2N1bWVudCxwPWU/ZS5ub2RlVHlwZTo5O2lmKG49bnx8W10sInN0cmluZyIhPXR5cGVvZiB0fHwhdHx8MSE9PXAmJjkhPT1wJiYxMSE9PXApcmV0dXJuIG47aWYoIXImJihUKGUpLGU9ZXx8QyxFKSl7aWYoMTEhPT1wJiYodT1aLmV4ZWModCkpKWlmKGk9dVsxXSl7aWYoOT09PXApe2lmKCEoYT1lLmdldEVsZW1lbnRCeUlkKGkpKSlyZXR1cm4gbjtpZihhLmlkPT09aSlyZXR1cm4gbi5wdXNoKGEpLG59ZWxzZSBpZihmJiYoYT1mLmdldEVsZW1lbnRCeUlkKGkpKSYmeShlLGEpJiZhLmlkPT09aSlyZXR1cm4gbi5wdXNoKGEpLG59ZWxzZXtpZih1WzJdKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KSksbjtpZigoaT11WzNdKSYmZC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEguYXBwbHkobixlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaSkpLG59aWYoZC5xc2EmJiFOW3QrIiAiXSYmKCF2fHwhdi50ZXN0KHQpKSYmKDEhPT1wfHwib2JqZWN0IiE9PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpe2lmKGM9dCxmPWUsMT09PXAmJihVLnRlc3QodCl8fHoudGVzdCh0KSkpeyhmPWVlLnRlc3QodCkmJnllKGUucGFyZW50Tm9kZSl8fGUpPT09ZSYmZC5zY29wZXx8KChzPWUuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXMucmVwbGFjZShyZSxpZSk6ZS5zZXRBdHRyaWJ1dGUoImlkIixzPVMpKSxvPShsPWgodCkpLmxlbmd0aDt3aGlsZShvLS0pbFtvXT0ocz8iIyIrczoiOnNjb3BlIikrIiAiK3hlKGxbb10pO2M9bC5qb2luKCIsIil9dHJ5e3JldHVybiBILmFwcGx5KG4sZi5xdWVyeVNlbGVjdG9yQWxsKGMpKSxufWNhdGNoKGUpe04odCwhMCl9ZmluYWxseXtzPT09UyYmZS5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gZyh0LnJlcGxhY2UoJCwiJDEiKSxlLG4scil9ZnVuY3Rpb24gdWUoKXt2YXIgcj1bXTtyZXR1cm4gZnVuY3Rpb24gZSh0LG4pe3JldHVybiByLnB1c2godCsiICIpPmIuY2FjaGVMZW5ndGgmJmRlbGV0ZSBlW3Iuc2hpZnQoKV0sZVt0KyIgIl09bn19ZnVuY3Rpb24gbGUoZSl7cmV0dXJuIGVbU109ITAsZX1mdW5jdGlvbiBjZShlKXt2YXIgdD1DLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhZSh0KX1jYXRjaChlKXtyZXR1cm4hMX1maW5hbGx5e3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHQ9bnVsbH19ZnVuY3Rpb24gZmUoZSx0KXt2YXIgbj1lLnNwbGl0KCJ8Iikscj1uLmxlbmd0aDt3aGlsZShyLS0pYi5hdHRySGFuZGxlW25bcl1dPXR9ZnVuY3Rpb24gcGUoZSx0KXt2YXIgbj10JiZlLHI9biYmMT09PWUubm9kZVR5cGUmJjE9PT10Lm5vZGVUeXBlJiZlLnNvdXJjZUluZGV4LXQuc291cmNlSW5kZXg7aWYocilyZXR1cm4gcjtpZihuKXdoaWxlKG49bi5uZXh0U2libGluZylpZihuPT09dClyZXR1cm4tMTtyZXR1cm4gZT8xOi0xfWZ1bmN0aW9uIGRlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZlLnR5cGU9PT10fX1mdW5jdGlvbiBoZShuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybigiaW5wdXQiPT09dHx8ImJ1dHRvbiI9PT10KSYmZS50eXBlPT09bn19ZnVuY3Rpb24gZ2UodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJmb3JtImluIGU/ZS5wYXJlbnROb2RlJiYhMT09PWUuZGlzYWJsZWQ/ImxhYmVsImluIGU/ImxhYmVsImluIGUucGFyZW50Tm9kZT9lLnBhcmVudE5vZGUuZGlzYWJsZWQ9PT10OmUuZGlzYWJsZWQ9PT10OmUuaXNEaXNhYmxlZD09PXR8fGUuaXNEaXNhYmxlZCE9PSF0JiZhZShlKT09PXQ6ZS5kaXNhYmxlZD09PXQ6ImxhYmVsImluIGUmJmUuZGlzYWJsZWQ9PT10fX1mdW5jdGlvbiB2ZShhKXtyZXR1cm4gbGUoZnVuY3Rpb24obyl7cmV0dXJuIG89K28sbGUoZnVuY3Rpb24oZSx0KXt2YXIgbixyPWEoW10sZS5sZW5ndGgsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPXJbaV1dJiYoZVtuXT0hKHRbbl09ZVtuXSkpfSl9KX1mdW5jdGlvbiB5ZShlKXtyZXR1cm4gZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZlfWZvcihlIGluIGQ9c2Uuc3VwcG9ydD17fSxpPXNlLmlzWE1MPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubmFtZXNwYWNlVVJJLG49ZSYmKGUub3duZXJEb2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiFZLnRlc3QodHx8biYmbi5ub2RlTmFtZXx8IkhUTUwiKX0sVD1zZS5zZXREb2N1bWVudD1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZT9lLm93bmVyRG9jdW1lbnR8fGU6cDtyZXR1cm4gciE9QyYmOT09PXIubm9kZVR5cGUmJnIuZG9jdW1lbnRFbGVtZW50JiYoYT0oQz1yKS5kb2N1bWVudEVsZW1lbnQsRT0haShDKSxwIT1DJiYobj1DLmRlZmF1bHRWaWV3KSYmbi50b3AhPT1uJiYobi5hZGRFdmVudExpc3RlbmVyP24uYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixvZSwhMSk6bi5hdHRhY2hFdmVudCYmbi5hdHRhY2hFdmVudCgib251bmxvYWQiLG9lKSksZC5zY29wZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZChDLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwidW5kZWZpbmVkIiE9dHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbCYmIWUucXVlcnlTZWxlY3RvckFsbCgiOnNjb3BlIGZpZWxkc2V0IGRpdiIpLmxlbmd0aH0pLGQuYXR0cmlidXRlcz1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGFzc05hbWU9ImkiLCFlLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxkLmdldEVsZW1lbnRzQnlUYWdOYW1lPWNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGVuZENoaWxkKEMuY3JlYXRlQ29tbWVudCgiIikpLCFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksZC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPUsudGVzdChDLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGQuZ2V0QnlJZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlKS5pZD1TLCFDLmdldEVsZW1lbnRzQnlOYW1lfHwhQy5nZXRFbGVtZW50c0J5TmFtZShTKS5sZW5ndGh9KSxkLmdldEJ5SWQ/KGIuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSh0ZSxuZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKT09PXR9fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIG4/W25dOltdfX0pOihiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiB0JiZ0LnZhbHVlPT09bn19LGIuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmRSl7dmFyIG4scixpLG89dC5nZXRFbGVtZW50QnlJZChlKTtpZihvKXtpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb107aT10LmdldEVsZW1lbnRzQnlOYW1lKGUpLHI9MDt3aGlsZShvPWlbcisrXSlpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb119cmV0dXJuW119fSksYi5maW5kLlRBRz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGUsdCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lP3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk6ZC5xc2E/dC5xdWVyeVNlbGVjdG9yQWxsKGUpOnZvaWQgMH06ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9MCxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk7aWYoIioiPT09ZSl7d2hpbGUobj1vW2krK10pMT09PW4ubm9kZVR5cGUmJnIucHVzaChuKTtyZXR1cm4gcn1yZXR1cm4gb30sYi5maW5kLkNMQVNTPWQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmRSlyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSxzPVtdLHY9W10sKGQucXNhPUsudGVzdChDLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGNlKGZ1bmN0aW9uKGUpe3ZhciB0O2EuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MPSI8YSBpZD0nIitTKyInPjwvYT48c2VsZWN0IGlkPSciK1MrIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmdi5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8di5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK1IrIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49IitTKyItXSIpLmxlbmd0aHx8di5wdXNoKCJ+PSIpLCh0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJuYW1lIiwiIiksZS5hcHBlbmRDaGlsZCh0KSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPScnXSIpLmxlbmd0aHx8di5wdXNoKCJcXFsiK00rIipuYW1lIitNKyIqPSIrTSsiKig/OicnfFwiXCIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8di5wdXNoKCI6Y2hlY2tlZCIpLGUucXVlcnlTZWxlY3RvckFsbCgiYSMiK1MrIisqIikubGVuZ3RofHx2LnB1c2goIi4jLitbK35dIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJcXFxmIiksdi5wdXNoKCJbXFxyXFxuXFxmXSIpfSksY2UoZnVuY3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Quc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmdi5wdXNoKCJuYW1lIitNKyIqWypeJHwhfl0/PSIpLDIhPT1lLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZD0hMCwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnYucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSx2LnB1c2goIiwuKjoiKX0pKSwoZC5tYXRjaGVzU2VsZWN0b3I9Sy50ZXN0KGM9YS5tYXRjaGVzfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcikpJiZjZShmdW5jdGlvbihlKXtkLmRpc2Nvbm5lY3RlZE1hdGNoPWMuY2FsbChlLCIqIiksYy5jYWxsKGUsIltzIT0nJ106eCIpLHMucHVzaCgiIT0iLEYpfSksdj12Lmxlbmd0aCYmbmV3IFJlZ0V4cCh2LmpvaW4oInwiKSkscz1zLmxlbmd0aCYmbmV3IFJlZ0V4cChzLmpvaW4oInwiKSksdD1LLnRlc3QoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikseT10fHxLLnRlc3QoYS5jb250YWlucyk/ZnVuY3Rpb24oZSx0KXt2YXIgbj05PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLHI9dCYmdC5wYXJlbnROb2RlO3JldHVybiBlPT09cnx8ISghcnx8MSE9PXIubm9kZVR5cGV8fCEobi5jb250YWlucz9uLmNvbnRhaW5zKHIpOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKX06ZnVuY3Rpb24oZSx0KXtpZih0KXdoaWxlKHQ9dC5wYXJlbnROb2RlKWlmKHQ9PT1lKXJldHVybiEwO3JldHVybiExfSxqPXQ/ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gbD0hMCwwO3ZhciBuPSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBufHwoMSYobj0oZS5vd25lckRvY3VtZW50fHxlKT09KHQub3duZXJEb2N1bWVudHx8dCk/ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KToxKXx8IWQuc29ydERldGFjaGVkJiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpPT09bj9lPT1DfHxlLm93bmVyRG9jdW1lbnQ9PXAmJnkocCxlKT8tMTp0PT1DfHx0Lm93bmVyRG9jdW1lbnQ9PXAmJnkocCx0KT8xOnU/UCh1LGUpLVAodSx0KTowOjQmbj8tMToxKX06ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gbD0hMCwwO3ZhciBuLHI9MCxpPWUucGFyZW50Tm9kZSxvPXQucGFyZW50Tm9kZSxhPVtlXSxzPVt0XTtpZighaXx8IW8pcmV0dXJuIGU9PUM/LTE6dD09Qz8xOmk/LTE6bz8xOnU/UCh1LGUpLVAodSx0KTowO2lmKGk9PT1vKXJldHVybiBwZShlLHQpO249ZTt3aGlsZShuPW4ucGFyZW50Tm9kZSlhLnVuc2hpZnQobik7bj10O3doaWxlKG49bi5wYXJlbnROb2RlKXMudW5zaGlmdChuKTt3aGlsZShhW3JdPT09c1tyXSlyKys7cmV0dXJuIHI/cGUoYVtyXSxzW3JdKTphW3JdPT1wPy0xOnNbcl09PXA/MTowfSksQ30sc2UubWF0Y2hlcz1mdW5jdGlvbihlLHQpe3JldHVybiBzZShlLG51bGwsbnVsbCx0KX0sc2UubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7aWYoVChlKSxkLm1hdGNoZXNTZWxlY3RvciYmRSYmIU5bdCsiICJdJiYoIXN8fCFzLnRlc3QodCkpJiYoIXZ8fCF2LnRlc3QodCkpKXRyeXt2YXIgbj1jLmNhbGwoZSx0KTtpZihufHxkLmRpc2Nvbm5lY3RlZE1hdGNofHxlLmRvY3VtZW50JiYxMSE9PWUuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIG59Y2F0Y2goZSl7Tih0LCEwKX1yZXR1cm4gMDxzZSh0LEMsbnVsbCxbZV0pLmxlbmd0aH0sc2UuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZS5vd25lckRvY3VtZW50fHxlKSE9QyYmVChlKSx5KGUsdCl9LHNlLmF0dHI9ZnVuY3Rpb24oZSx0KXsoZS5vd25lckRvY3VtZW50fHxlKSE9QyYmVChlKTt2YXIgbj1iLmF0dHJIYW5kbGVbdC50b0xvd2VyQ2FzZSgpXSxyPW4mJkQuY2FsbChiLmF0dHJIYW5kbGUsdC50b0xvd2VyQ2FzZSgpKT9uKGUsdCwhRSk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1yP3I6ZC5hdHRyaWJ1dGVzfHwhRT9lLmdldEF0dHJpYnV0ZSh0KToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9LHNlLmVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4oZSsiIikucmVwbGFjZShyZSxpZSl9LHNlLmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sc2UudW5pcXVlU29ydD1mdW5jdGlvbihlKXt2YXIgdCxuPVtdLHI9MCxpPTA7aWYobD0hZC5kZXRlY3REdXBsaWNhdGVzLHU9IWQuc29ydFN0YWJsZSYmZS5zbGljZSgwKSxlLnNvcnQoaiksbCl7d2hpbGUodD1lW2krK10pdD09PWVbaV0mJihyPW4ucHVzaChpKSk7d2hpbGUoci0tKWUuc3BsaWNlKG5bcl0sMSl9cmV0dXJuIHU9bnVsbCxlfSxvPXNlLmdldFRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj0iIixyPTAsaT1lLm5vZGVUeXBlO2lmKGkpe2lmKDE9PT1pfHw5PT09aXx8MTE9PT1pKXtpZigic3RyaW5nIj09dHlwZW9mIGUudGV4dENvbnRlbnQpcmV0dXJuIGUudGV4dENvbnRlbnQ7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKW4rPW8oZSl9ZWxzZSBpZigzPT09aXx8ND09PWkpcmV0dXJuIGUubm9kZVZhbHVlfWVsc2Ugd2hpbGUodD1lW3IrK10pbis9byh0KTtyZXR1cm4gbn0sKGI9c2Uuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86bGUsbWF0Y2g6RyxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS5yZXBsYWNlKHRlLG5lKSxlWzNdPShlWzNdfHxlWzRdfHxlWzVdfHwiIikucmVwbGFjZSh0ZSxuZSksIn49Ij09PWVbMl0mJihlWzNdPSIgIitlWzNdKyIgIiksZS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihlKXtyZXR1cm4gZVsxXT1lWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1lWzFdLnNsaWNlKDAsMyk/KGVbM118fHNlLmVycm9yKGVbMF0pLGVbNF09KyhlWzRdP2VbNV0rKGVbNl18fDEpOjIqKCJldmVuIj09PWVbM118fCJvZGQiPT09ZVszXSkpLGVbNV09KyhlWzddK2VbOF18fCJvZGQiPT09ZVszXSkpOmVbM10mJnNlLmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihlKXt2YXIgdCxuPSFlWzZdJiZlWzJdO3JldHVybiBHLkNISUxELnRlc3QoZVswXSk/bnVsbDooZVszXT9lWzJdPWVbNF18fGVbNV18fCIiOm4mJlgudGVzdChuKSYmKHQ9aChuLCEwKSkmJih0PW4uaW5kZXhPZigiKSIsbi5sZW5ndGgtdCktbi5sZW5ndGgpJiYoZVswXT1lWzBdLnNsaWNlKDAsdCksZVsyXT1uLnNsaWNlKDAsdCkpLGUuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09ZT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dH19LENMQVNTOmZ1bmN0aW9uKGUpe3ZhciB0PW1bZSsiICJdO3JldHVybiB0fHwodD1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2UrIigiK00rInwkKSIpKSYmbShlLGZ1bmN0aW9uKGUpe3JldHVybiB0LnRlc3QoInN0cmluZyI9PXR5cGVvZiBlLmNsYXNzTmFtZSYmZS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihuLHIsaSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXNlLmF0dHIoZSxuKTtyZXR1cm4gbnVsbD09dD8iIT0iPT09cjohcnx8KHQrPSIiLCI9Ij09PXI/dD09PWk6IiE9Ij09PXI/dCE9PWk6Il49Ij09PXI/aSYmMD09PXQuaW5kZXhPZihpKToiKj0iPT09cj9pJiYtMTx0LmluZGV4T2YoaSk6IiQ9Ij09PXI/aSYmdC5zbGljZSgtaS5sZW5ndGgpPT09aToifj0iPT09cj8tMTwoIiAiK3QucmVwbGFjZShCLCIgIikrIiAiKS5pbmRleE9mKGkpOiJ8PSI9PT1yJiYodD09PWl8fHQuc2xpY2UoMCxpLmxlbmd0aCsxKT09PWkrIi0iKSl9fSxDSElMRDpmdW5jdGlvbihoLGUsdCxnLHYpe3ZhciB5PSJudGgiIT09aC5zbGljZSgwLDMpLG09Imxhc3QiIT09aC5zbGljZSgtNCkseD0ib2YtdHlwZSI9PT1lO3JldHVybiAxPT09ZyYmMD09PXY/ZnVuY3Rpb24oZSl7cmV0dXJuISFlLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbD15IT09bT8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLGM9ZS5wYXJlbnROb2RlLGY9eCYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHA9IW4mJiF4LGQ9ITE7aWYoYyl7aWYoeSl7d2hpbGUobCl7YT1lO3doaWxlKGE9YVtsXSlpZih4P2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWY6MT09PWEubm9kZVR5cGUpcmV0dXJuITE7dT1sPSJvbmx5Ij09PWgmJiF1JiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKHU9W20/Yy5maXJzdENoaWxkOmMubGFzdENoaWxkXSxtJiZwKXtkPShzPShyPShpPShvPShhPWMpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSYmclsyXSxhPXMmJmMuY2hpbGROb2Rlc1tzXTt3aGlsZShhPSsrcyYmYSYmYVtsXXx8KGQ9cz0wKXx8dS5wb3AoKSlpZigxPT09YS5ub2RlVHlwZSYmKytkJiZhPT09ZSl7aVtoXT1bayxzLGRdO2JyZWFrfX1lbHNlIGlmKHAmJihkPXM9KHI9KGk9KG89KGE9ZSlbU118fChhW1NdPXt9KSlbYS51bmlxdWVJRF18fChvW2EudW5pcXVlSURdPXt9KSlbaF18fFtdKVswXT09PWsmJnJbMV0pLCExPT09ZCl3aGlsZShhPSsrcyYmYSYmYVtsXXx8KGQ9cz0wKXx8dS5wb3AoKSlpZigoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKSYmKytkJiYocCYmKChpPShvPWFbU118fChhW1NdPXt9KSlbYS51bmlxdWVJRF18fChvW2EudW5pcXVlSURdPXt9KSlbaF09W2ssZF0pLGE9PT1lKSlicmVhaztyZXR1cm4oZC09dik9PT1nfHxkJWc9PTAmJjA8PWQvZ319fSxQU0VVRE86ZnVuY3Rpb24oZSxvKXt2YXIgdCxhPWIucHNldWRvc1tlXXx8Yi5zZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV18fHNlLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrZSk7cmV0dXJuIGFbU10/YShvKToxPGEubGVuZ3RoPyh0PVtlLGUsIiIsb10sYi5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/bGUoZnVuY3Rpb24oZSx0KXt2YXIgbixyPWEoZSxvKSxpPXIubGVuZ3RoO3doaWxlKGktLSllW249UChlLHJbaV0pXT0hKHRbbl09cltpXSl9KTpmdW5jdGlvbihlKXtyZXR1cm4gYShlLDAsdCl9KTphfX0scHNldWRvczp7bm90OmxlKGZ1bmN0aW9uKGUpe3ZhciByPVtdLGk9W10scz1mKGUucmVwbGFjZSgkLCIkMSIpKTtyZXR1cm4gc1tTXT9sZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvPXMoZSxudWxsLHIsW10pLGE9ZS5sZW5ndGg7d2hpbGUoYS0tKShpPW9bYV0pJiYoZVthXT0hKHRbYV09aSkpfSk6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByWzBdPWUscyhyLG51bGwsbixpKSxyWzBdPW51bGwsIWkucG9wKCl9fSksaGFzOmxlKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMDxzZSh0LGUpLmxlbmd0aH19KSxjb250YWluczpsZShmdW5jdGlvbih0KXtyZXR1cm4gdD10LnJlcGxhY2UodGUsbmUpLGZ1bmN0aW9uKGUpe3JldHVybi0xPChlLnRleHRDb250ZW50fHxvKGUpKS5pbmRleE9mKHQpfX0pLGxhbmc6bGUoZnVuY3Rpb24obil7cmV0dXJuIFYudGVzdChufHwiIil8fHNlLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK24pLG49bi5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGUpe3ZhciB0O2Rve2lmKHQ9RT9lLmxhbmc6ZS5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGUuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuKHQ9dC50b0xvd2VyQ2FzZSgpKT09PW58fDA9PT10LmluZGV4T2YobisiLSIpfXdoaWxlKChlPWUucGFyZW50Tm9kZSkmJjE9PT1lLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bi5sb2NhdGlvbiYmbi5sb2NhdGlvbi5oYXNoO3JldHVybiB0JiZ0LnNsaWNlKDEpPT09ZS5pZH0scm9vdDpmdW5jdGlvbihlKXtyZXR1cm4gZT09PWF9LGZvY3VzOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09Qy5hY3RpdmVFbGVtZW50JiYoIUMuaGFzRm9jdXN8fEMuaGFzRm9jdXMoKSkmJiEhKGUudHlwZXx8ZS5ocmVmfHx+ZS50YWJJbmRleCl9LGVuYWJsZWQ6Z2UoITEpLGRpc2FibGVkOmdlKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dCYmISFlLmNoZWNrZWR8fCJvcHRpb24iPT09dCYmISFlLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwhMD09PWUuc2VsZWN0ZWR9LGVtcHR5OmZ1bmN0aW9uKGUpe2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZylpZihlLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihlKXtyZXR1cm4hYi5wc2V1ZG9zLmVtcHR5KGUpfSxoZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIEoudGVzdChlLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFEudGVzdChlLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dCYmImJ1dHRvbiI9PT1lLnR5cGV8fCJidXR0b24iPT09dH0sdGV4dDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1lLnR5cGUmJihudWxsPT0odD1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09dC50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6dmUoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnZlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuW3QtMV19KSxlcTp2ZShmdW5jdGlvbihlLHQsbil7cmV0dXJuW248MD9uK3Q6bl19KSxldmVuOnZlKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksb2RkOnZlKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTE7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksbHQ6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0OnQ8bj90Om47MDw9LS1yOyllLnB1c2gocik7cmV0dXJuIGV9KSxndDp2ZShmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW48MD9uK3Q6bjsrK3I8dDspZS5wdXNoKHIpO3JldHVybiBlfSl9fSkucHNldWRvcy5udGg9Yi5wc2V1ZG9zLmVxLHtyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSliLnBzZXVkb3NbZV09ZGUoZSk7Zm9yKGUgaW57c3VibWl0OiEwLHJlc2V0OiEwfSliLnBzZXVkb3NbZV09aGUoZSk7ZnVuY3Rpb24gbWUoKXt9ZnVuY3Rpb24geGUoZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aCxyPSIiO3Q8bjt0Kyspcis9ZVt0XS52YWx1ZTtyZXR1cm4gcn1mdW5jdGlvbiBiZShzLGUsdCl7dmFyIHU9ZS5kaXIsbD1lLm5leHQsYz1sfHx1LGY9dCYmInBhcmVudE5vZGUiPT09YyxwPXIrKztyZXR1cm4gZS5maXJzdD9mdW5jdGlvbihlLHQsbil7d2hpbGUoZT1lW3VdKWlmKDE9PT1lLm5vZGVUeXBlfHxmKXJldHVybiBzKGUsdCxuKTtyZXR1cm4hMX06ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPVtrLHBdO2lmKG4pe3doaWxlKGU9ZVt1XSlpZigoMT09PWUubm9kZVR5cGV8fGYpJiZzKGUsdCxuKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilpZihpPShvPWVbU118fChlW1NdPXt9KSlbZS51bmlxdWVJRF18fChvW2UudW5pcXVlSURdPXt9KSxsJiZsPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKWU9ZVt1XXx8ZTtlbHNle2lmKChyPWlbY10pJiZyWzBdPT09ayYmclsxXT09PXApcmV0dXJuIGFbMl09clsyXTtpZigoaVtjXT1hKVsyXT1zKGUsdCxuKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gd2UoaSl7cmV0dXJuIDE8aS5sZW5ndGg/ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWkubGVuZ3RoO3doaWxlKHItLSlpZighaVtyXShlLHQsbikpcmV0dXJuITE7cmV0dXJuITB9OmlbMF19ZnVuY3Rpb24gVGUoZSx0LG4scixpKXtmb3IodmFyIG8sYT1bXSxzPTAsdT1lLmxlbmd0aCxsPW51bGwhPXQ7czx1O3MrKykobz1lW3NdKSYmKG4mJiFuKG8scixpKXx8KGEucHVzaChvKSxsJiZ0LnB1c2gocykpKTtyZXR1cm4gYX1mdW5jdGlvbiBDZShkLGgsZyx2LHksZSl7cmV0dXJuIHYmJiF2W1NdJiYodj1DZSh2KSkseSYmIXlbU10mJih5PUNlKHksZSkpLGxlKGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVtdLHU9W10sbD10Lmxlbmd0aCxjPWV8fGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspc2UoZSx0W3JdLG4pO3JldHVybiBufShofHwiKiIsbi5ub2RlVHlwZT9bbl06bixbXSksZj0hZHx8IWUmJmg/YzpUZShjLHMsZCxuLHIpLHA9Zz95fHwoZT9kOmx8fHYpP1tdOnQ6ZjtpZihnJiZnKGYscCxuLHIpLHYpe2k9VGUocCx1KSx2KGksW10sbixyKSxvPWkubGVuZ3RoO3doaWxlKG8tLSkoYT1pW29dKSYmKHBbdVtvXV09IShmW3Vbb11dPWEpKX1pZihlKXtpZih5fHxkKXtpZih5KXtpPVtdLG89cC5sZW5ndGg7d2hpbGUoby0tKShhPXBbb10pJiZpLnB1c2goZltvXT1hKTt5KG51bGwscD1bXSxpLHIpfW89cC5sZW5ndGg7d2hpbGUoby0tKShhPXBbb10pJiYtMTwoaT15P1AoZSxhKTpzW29dKSYmKGVbaV09ISh0W2ldPWEpKX19ZWxzZSBwPVRlKHA9PT10P3Auc3BsaWNlKGwscC5sZW5ndGgpOnApLHk/eShudWxsLHQscCxyKTpILmFwcGx5KHQscCl9KX1mdW5jdGlvbiBFZShlKXtmb3IodmFyIGksdCxuLHI9ZS5sZW5ndGgsbz1iLnJlbGF0aXZlW2VbMF0udHlwZV0sYT1vfHxiLnJlbGF0aXZlWyIgIl0scz1vPzE6MCx1PWJlKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09aX0sYSwhMCksbD1iZShmdW5jdGlvbihlKXtyZXR1cm4tMTxQKGksZSl9LGEsITApLGM9W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj0hbyYmKG58fHQhPT13KXx8KChpPXQpLm5vZGVUeXBlP3UoZSx0LG4pOmwoZSx0LG4pKTtyZXR1cm4gaT1udWxsLHJ9XTtzPHI7cysrKWlmKHQ9Yi5yZWxhdGl2ZVtlW3NdLnR5cGVdKWM9W2JlKHdlKGMpLHQpXTtlbHNle2lmKCh0PWIuZmlsdGVyW2Vbc10udHlwZV0uYXBwbHkobnVsbCxlW3NdLm1hdGNoZXMpKVtTXSl7Zm9yKG49KytzO248cjtuKyspaWYoYi5yZWxhdGl2ZVtlW25dLnR5cGVdKWJyZWFrO3JldHVybiBDZSgxPHMmJndlKGMpLDE8cyYmeGUoZS5zbGljZSgwLHMtMSkuY29uY2F0KHt2YWx1ZToiICI9PT1lW3MtMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZSgkLCIkMSIpLHQsczxuJiZFZShlLnNsaWNlKHMsbikpLG48ciYmRWUoZT1lLnNsaWNlKG4pKSxuPHImJnhlKGUpKX1jLnB1c2godCl9cmV0dXJuIHdlKGMpfXJldHVybiBtZS5wcm90b3R5cGU9Yi5maWx0ZXJzPWIucHNldWRvcyxiLnNldEZpbHRlcnM9bmV3IG1lLGg9c2UudG9rZW5pemU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHMsdSxsPXhbZSsiICJdO2lmKGwpcmV0dXJuIHQ/MDpsLnNsaWNlKDApO2E9ZSxzPVtdLHU9Yi5wcmVGaWx0ZXI7d2hpbGUoYSl7Zm9yKG8gaW4gbiYmIShyPV8uZXhlYyhhKSl8fChyJiYoYT1hLnNsaWNlKHJbMF0ubGVuZ3RoKXx8YSkscy5wdXNoKGk9W10pKSxuPSExLChyPXouZXhlYyhhKSkmJihuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpyWzBdLnJlcGxhY2UoJCwiICIpfSksYT1hLnNsaWNlKG4ubGVuZ3RoKSksYi5maWx0ZXIpIShyPUdbb10uZXhlYyhhKSl8fHVbb10mJiEocj11W29dKHIpKXx8KG49ci5zaGlmdCgpLGkucHVzaCh7dmFsdWU6bix0eXBlOm8sbWF0Y2hlczpyfSksYT1hLnNsaWNlKG4ubGVuZ3RoKSk7aWYoIW4pYnJlYWt9cmV0dXJuIHQ/YS5sZW5ndGg6YT9zZS5lcnJvcihlKTp4KGUscykuc2xpY2UoMCl9LGY9c2UuY29tcGlsZT1mdW5jdGlvbihlLHQpe3ZhciBuLHYseSxtLHgscixpPVtdLG89W10sYT1BW2UrIiAiXTtpZighYSl7dHx8KHQ9aChlKSksbj10Lmxlbmd0aDt3aGlsZShuLS0pKGE9RWUodFtuXSkpW1NdP2kucHVzaChhKTpvLnB1c2goYSk7KGE9QShlLCh2PW8sbT0wPCh5PWkpLmxlbmd0aCx4PTA8di5sZW5ndGgscj1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvLGEscyx1PTAsbD0iMCIsYz1lJiZbXSxmPVtdLHA9dyxkPWV8fHgmJmIuZmluZC5UQUcoIioiLGkpLGg9ays9bnVsbD09cD8xOk1hdGgucmFuZG9tKCl8fC4xLGc9ZC5sZW5ndGg7Zm9yKGkmJih3PXQ9PUN8fHR8fGkpO2whPT1nJiZudWxsIT0obz1kW2xdKTtsKyspe2lmKHgmJm8pe2E9MCx0fHxvLm93bmVyRG9jdW1lbnQ9PUN8fChUKG8pLG49IUUpO3doaWxlKHM9dlthKytdKWlmKHMobyx0fHxDLG4pKXtyLnB1c2gobyk7YnJlYWt9aSYmKGs9aCl9bSYmKChvPSFzJiZvKSYmdS0tLGUmJmMucHVzaChvKSl9aWYodSs9bCxtJiZsIT09dSl7YT0wO3doaWxlKHM9eVthKytdKXMoYyxmLHQsbik7aWYoZSl7aWYoMDx1KXdoaWxlKGwtLSljW2xdfHxmW2xdfHwoZltsXT1xLmNhbGwocikpO2Y9VGUoZil9SC5hcHBseShyLGYpLGkmJiFlJiYwPGYubGVuZ3RoJiYxPHUreS5sZW5ndGgmJnNlLnVuaXF1ZVNvcnQocil9cmV0dXJuIGkmJihrPWgsdz1wKSxjfSxtP2xlKHIpOnIpKSkuc2VsZWN0b3I9ZX1yZXR1cm4gYX0sZz1zZS5zZWxlY3Q9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLGM9IXImJmgoZT1sLnNlbGVjdG9yfHxlKTtpZihuPW58fFtdLDE9PT1jLmxlbmd0aCl7aWYoMjwobz1jWzBdPWNbMF0uc2xpY2UoMCkpLmxlbmd0aCYmIklEIj09PShhPW9bMF0pLnR5cGUmJjk9PT10Lm5vZGVUeXBlJiZFJiZiLnJlbGF0aXZlW29bMV0udHlwZV0pe2lmKCEodD0oYi5maW5kLklEKGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSx0KXx8W10pWzBdKSlyZXR1cm4gbjtsJiYodD10LnBhcmVudE5vZGUpLGU9ZS5zbGljZShvLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPUcubmVlZHNDb250ZXh0LnRlc3QoZSk/MDpvLmxlbmd0aDt3aGlsZShpLS0pe2lmKGE9b1tpXSxiLnJlbGF0aXZlW3M9YS50eXBlXSlicmVhaztpZigodT1iLmZpbmRbc10pJiYocj11KGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSxlZS50ZXN0KG9bMF0udHlwZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpKSl7aWYoby5zcGxpY2UoaSwxKSwhKGU9ci5sZW5ndGgmJnhlKG8pKSlyZXR1cm4gSC5hcHBseShuLHIpLG47YnJlYWt9fX1yZXR1cm4obHx8ZihlLGMpKShyLHQsIUUsbiwhdHx8ZWUudGVzdChlKSYmeWUodC5wYXJlbnROb2RlKXx8dCksbn0sZC5zb3J0U3RhYmxlPVMuc3BsaXQoIiIpLnNvcnQoaikuam9pbigiIik9PT1TLGQuZGV0ZWN0RHVwbGljYXRlcz0hIWwsVCgpLGQuc29ydERldGFjaGVkPWNlKGZ1bmN0aW9uKGUpe3JldHVybiAxJmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oQy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGZlKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihlLHQsbil7aWYoIW4pcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsInR5cGUiPT09dC50b0xvd2VyQ2FzZSgpPzE6Mil9KSxkLmF0dHJpYnV0ZXMmJmNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGlucHV0Lz4iLGUuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGZlKCJ2YWx1ZSIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiBlLmRlZmF1bHRWYWx1ZX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxmZShSLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZighbilyZXR1cm4hMD09PWVbdF0/dC50b0xvd2VyQ2FzZSgpOihyPWUuZ2V0QXR0cmlidXRlTm9kZSh0KSkmJnIuc3BlY2lmaWVkP3IudmFsdWU6bnVsbH0pLHNlfShDKTtTLmZpbmQ9ZCxTLmV4cHI9ZC5zZWxlY3RvcnMsUy5leHByWyI6Il09Uy5leHByLnBzZXVkb3MsUy51bmlxdWVTb3J0PVMudW5pcXVlPWQudW5pcXVlU29ydCxTLnRleHQ9ZC5nZXRUZXh0LFMuaXNYTUxEb2M9ZC5pc1hNTCxTLmNvbnRhaW5zPWQuY29udGFpbnMsUy5lc2NhcGVTZWxlY3Rvcj1kLmVzY2FwZTt2YXIgaD1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10saT12b2lkIDAhPT1uO3doaWxlKChlPWVbdF0pJiY5IT09ZS5ub2RlVHlwZSlpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmUyhlKS5pcyhuKSlicmVhaztyLnB1c2goZSl9cmV0dXJuIHJ9LFQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W107ZTtlPWUubmV4dFNpYmxpbmcpMT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59LGs9Uy5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBBKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX12YXIgTj0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtmdW5jdGlvbiBqKGUsbixyKXtyZXR1cm4gbShuKT9TLmdyZXAoZSxmdW5jdGlvbihlLHQpe3JldHVybiEhbi5jYWxsKGUsdCxlKSE9PXJ9KTpuLm5vZGVUeXBlP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09biE9PXJ9KToic3RyaW5nIiE9dHlwZW9mIG4/Uy5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuLTE8aS5jYWxsKG4sZSkhPT1yfSk6Uy5maWx0ZXIobixlLHIpfVMuZmlsdGVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10WzBdO3JldHVybiBuJiYoZT0iOm5vdCgiK2UrIikiKSwxPT09dC5sZW5ndGgmJjE9PT1yLm5vZGVUeXBlP1MuZmluZC5tYXRjaGVzU2VsZWN0b3IocixlKT9bcl06W106Uy5maW5kLm1hdGNoZXMoZSxTLmdyZXAodCxmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KSl9LFMuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzLmxlbmd0aCxpPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiB0aGlzLnB1c2hTdGFjayhTKGUpLmZpbHRlcihmdW5jdGlvbigpe2Zvcih0PTA7dDxyO3QrKylpZihTLmNvbnRhaW5zKGlbdF0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKG49dGhpcy5wdXNoU3RhY2soW10pLHQ9MDt0PHI7dCsrKVMuZmluZChlLGlbdF0sbik7cmV0dXJuIDE8cj9TLnVuaXF1ZVNvcnQobik6bn0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqKHRoaXMsZXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqKHRoaXMsZXx8W10sITApKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFqKHRoaXMsInN0cmluZyI9PXR5cGVvZiBlJiZrLnRlc3QoZSk/UyhlKTplfHxbXSwhMSkubGVuZ3RofX0pO3ZhciBELHE9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsoUy5mbi5pbml0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKCFlKXJldHVybiB0aGlzO2lmKG49bnx8RCwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCEocj0iPCI9PT1lWzBdJiYiPiI9PT1lW2UubGVuZ3RoLTFdJiYzPD1lLmxlbmd0aD9bbnVsbCxlLG51bGxdOnEuZXhlYyhlKSl8fCFyWzFdJiZ0KXJldHVybiF0fHx0LmpxdWVyeT8odHx8bikuZmluZChlKTp0aGlzLmNvbnN0cnVjdG9yKHQpLmZpbmQoZSk7aWYoclsxXSl7aWYodD10IGluc3RhbmNlb2YgUz90WzBdOnQsUy5tZXJnZSh0aGlzLFMucGFyc2VIVE1MKHJbMV0sdCYmdC5ub2RlVHlwZT90Lm93bmVyRG9jdW1lbnR8fHQ6RSwhMCkpLE4udGVzdChyWzFdKSYmUy5pc1BsYWluT2JqZWN0KHQpKWZvcihyIGluIHQpbSh0aGlzW3JdKT90aGlzW3JdKHRbcl0pOnRoaXMuYXR0cihyLHRbcl0pO3JldHVybiB0aGlzfXJldHVybihpPUUuZ2V0RWxlbWVudEJ5SWQoclsyXSkpJiYodGhpc1swXT1pLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGUubm9kZVR5cGU/KHRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0oZSk/dm9pZCAwIT09bi5yZWFkeT9uLnJlYWR5KGUpOmUoUyk6Uy5tYWtlQXJyYXkoZSx0aGlzKX0pLnByb3RvdHlwZT1TLmZuLEQ9UyhFKTt2YXIgTD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxIPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2Z1bmN0aW9uIE8oZSx0KXt3aGlsZSgoZT1lW3RdKSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfVMuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oZSl7dmFyIHQ9UyhlLHRoaXMpLG49dC5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxuO2UrKylpZihTLmNvbnRhaW5zKHRoaXMsdFtlXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXRoaXMubGVuZ3RoLG89W10sYT0ic3RyaW5nIiE9dHlwZW9mIGUmJlMoZSk7aWYoIWsudGVzdChlKSlmb3IoO3I8aTtyKyspZm9yKG49dGhpc1tyXTtuJiZuIT09dDtuPW4ucGFyZW50Tm9kZSlpZihuLm5vZGVUeXBlPDExJiYoYT8tMTxhLmluZGV4KG4pOjE9PT1uLm5vZGVUeXBlJiZTLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sZSkpKXtvLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8by5sZW5ndGg/Uy51bmlxdWVTb3J0KG8pOm8pfSxpbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09dHlwZW9mIGU/aS5jYWxsKFMoZSksdGhpc1swXSk6aS5jYWxsKHRoaXMsZS5qcXVlcnk/ZVswXTplKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnB1c2hTdGFjayhTLnVuaXF1ZVNvcnQoUy5tZXJnZSh0aGlzLmdldCgpLFMoZSx0KSkpKX0sYWRkQmFjazpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9fSksUy5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYxMSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwYXJlbnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGUpe3JldHVybiBPKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIGgoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSwibmV4dFNpYmxpbmciLG4pfSxwcmV2VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiBUKChlLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGUpfSxjaGlsZHJlbjpmdW5jdGlvbihlKXtyZXR1cm4gVChlLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZS5jb250ZW50RG9jdW1lbnQmJnIoZS5jb250ZW50RG9jdW1lbnQpP2UuY29udGVudERvY3VtZW50OihBKGUsInRlbXBsYXRlIikmJihlPWUuY29udGVudHx8ZSksUy5tZXJnZShbXSxlLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKHIsaSl7Uy5mbltyXT1mdW5jdGlvbihlLHQpe3ZhciBuPVMubWFwKHRoaXMsaSxlKTtyZXR1cm4iVW50aWwiIT09ci5zbGljZSgtNSkmJih0PWUpLHQmJiJzdHJpbmciPT10eXBlb2YgdCYmKG49Uy5maWx0ZXIodCxuKSksMTx0aGlzLmxlbmd0aCYmKEhbcl18fFMudW5pcXVlU29ydChuKSxMLnRlc3QocikmJm4ucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUD0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIFIoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gTShlKXt0aHJvdyBlfWZ1bmN0aW9uIEkoZSx0LG4scil7dmFyIGk7dHJ5e2UmJm0oaT1lLnByb21pc2UpP2kuY2FsbChlKS5kb25lKHQpLmZhaWwobik6ZSYmbShpPWUudGhlbik/aS5jYWxsKGUsdCxuKTp0LmFwcGx5KHZvaWQgMCxbZV0uc2xpY2UocikpfWNhdGNoKGUpe24uYXBwbHkodm9pZCAwLFtlXSl9fVMuQ2FsbGJhY2tzPWZ1bmN0aW9uKHIpe3ZhciBlLG47cj0ic3RyaW5nIj09dHlwZW9mIHI/KGU9cixuPXt9LFMuZWFjaChlLm1hdGNoKFApfHxbXSxmdW5jdGlvbihlLHQpe25bdF09ITB9KSxuKTpTLmV4dGVuZCh7fSxyKTt2YXIgaSx0LG8sYSxzPVtdLHU9W10sbD0tMSxjPWZ1bmN0aW9uKCl7Zm9yKGE9YXx8ci5vbmNlLG89aT0hMDt1Lmxlbmd0aDtsPS0xKXt0PXUuc2hpZnQoKTt3aGlsZSgrK2w8cy5sZW5ndGgpITE9PT1zW2xdLmFwcGx5KHRbMF0sdFsxXSkmJnIuc3RvcE9uRmFsc2UmJihsPXMubGVuZ3RoLHQ9ITEpfXIubWVtb3J5fHwodD0hMSksaT0hMSxhJiYocz10P1tdOiIiKX0sZj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIHMmJih0JiYhaSYmKGw9cy5sZW5ndGgtMSx1LnB1c2godCkpLGZ1bmN0aW9uIG4oZSl7Uy5lYWNoKGUsZnVuY3Rpb24oZSx0KXttKHQpP3IudW5pcXVlJiZmLmhhcyh0KXx8cy5wdXNoKHQpOnQmJnQubGVuZ3RoJiYic3RyaW5nIiE9PXcodCkmJm4odCl9KX0oYXJndW1lbnRzKSx0JiYhaSYmYygpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gUy5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihlLHQpe3ZhciBuO3doaWxlKC0xPChuPVMuaW5BcnJheSh0LHMsbikpKXMuc3BsaWNlKG4sMSksbjw9bCYmbC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlPy0xPFMuaW5BcnJheShlLHMpOjA8cy5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHMmJihzPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGE9dT1bXSxzPXQ9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hc30sbG9jazpmdW5jdGlvbigpe3JldHVybiBhPXU9W10sdHx8aXx8KHM9dD0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFhfSxmaXJlV2l0aDpmdW5jdGlvbihlLHQpe3JldHVybiBhfHwodD1bZSwodD10fHxbXSkuc2xpY2U/dC5zbGljZSgpOnRdLHUucHVzaCh0KSxpfHxjKCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIW99fTtyZXR1cm4gZn0sUy5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUpe3ZhciBvPVtbIm5vdGlmeSIsInByb2dyZXNzIixTLkNhbGxiYWNrcygibWVtb3J5IiksUy5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLFMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLFMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxpPSJwZW5kaW5nIixhPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBpfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEudGhlbihudWxsLGUpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzO3JldHVybiBTLkRlZmVycmVkKGZ1bmN0aW9uKHIpe1MuZWFjaChvLGZ1bmN0aW9uKGUsdCl7dmFyIG49bShpW3RbNF1dKSYmaVt0WzRdXTtzW3RbMV1dKGZ1bmN0aW9uKCl7dmFyIGU9biYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmbShlLnByb21pc2UpP2UucHJvbWlzZSgpLnByb2dyZXNzKHIubm90aWZ5KS5kb25lKHIucmVzb2x2ZSkuZmFpbChyLnJlamVjdCk6clt0WzBdKyJXaXRoIl0odGhpcyxuP1tlXTphcmd1bWVudHMpfSl9KSxpPW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24odCxuLHIpe3ZhciB1PTA7ZnVuY3Rpb24gbChpLG8sYSxzKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLHI9YXJndW1lbnRzLGU9ZnVuY3Rpb24oKXt2YXIgZSx0O2lmKCEoaTx1KSl7aWYoKGU9YS5hcHBseShuLHIpKT09PW8ucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO3Q9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiZlLnRoZW4sbSh0KT9zP3QuY2FsbChlLGwodSxvLFIscyksbCh1LG8sTSxzKSk6KHUrKyx0LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scyksbCh1LG8sUixvLm5vdGlmeVdpdGgpKSk6KGEhPT1SJiYobj12b2lkIDAscj1bZV0pLChzfHxvLnJlc29sdmVXaXRoKShuLHIpKX19LHQ9cz9lOmZ1bmN0aW9uKCl7dHJ5e2UoKX1jYXRjaChlKXtTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJlMuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLHQuc3RhY2tUcmFjZSksdTw9aSsxJiYoYSE9PU0mJihuPXZvaWQgMCxyPVtlXSksby5yZWplY3RXaXRoKG4scikpfX07aT90KCk6KFMuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYodC5zdGFja1RyYWNlPVMuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLEMuc2V0VGltZW91dCh0KSl9fXJldHVybiBTLkRlZmVycmVkKGZ1bmN0aW9uKGUpe29bMF1bM10uYWRkKGwoMCxlLG0ocik/cjpSLGUubm90aWZ5V2l0aCkpLG9bMV1bM10uYWRkKGwoMCxlLG0odCk/dDpSKSksb1syXVszXS5hZGQobCgwLGUsbShuKT9uOk0pKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT9TLmV4dGVuZChlLGEpOmF9fSxzPXt9O3JldHVybiBTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPXRbMl0scj10WzVdO2FbdFsxXV09bi5hZGQsciYmbi5hZGQoZnVuY3Rpb24oKXtpPXJ9LG9bMy1lXVsyXS5kaXNhYmxlLG9bMy1lXVszXS5kaXNhYmxlLG9bMF1bMl0ubG9jayxvWzBdWzNdLmxvY2spLG4uYWRkKHRbM10uZmlyZSksc1t0WzBdXT1mdW5jdGlvbigpe3JldHVybiBzW3RbMF0rIldpdGgiXSh0aGlzPT09cz92b2lkIDA6dGhpcyxhcmd1bWVudHMpLHRoaXN9LHNbdFswXSsiV2l0aCJdPW4uZmlyZVdpdGh9KSxhLnByb21pc2UocyksZSYmZS5jYWxsKHMscyksc30sd2hlbjpmdW5jdGlvbihlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHQ9bixyPUFycmF5KHQpLGk9cy5jYWxsKGFyZ3VtZW50cyksbz1TLkRlZmVycmVkKCksYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7clt0XT10aGlzLGlbdF09MTxhcmd1bWVudHMubGVuZ3RoP3MuY2FsbChhcmd1bWVudHMpOmUsLS1ufHxvLnJlc29sdmVXaXRoKHIsaSl9fTtpZihuPD0xJiYoSShlLG8uZG9uZShhKHQpKS5yZXNvbHZlLG8ucmVqZWN0LCFuKSwicGVuZGluZyI9PT1vLnN0YXRlKCl8fG0oaVt0XSYmaVt0XS50aGVuKSkpcmV0dXJuIG8udGhlbigpO3doaWxlKHQtLSlJKGlbdF0sYSh0KSxvLnJlamVjdCk7cmV0dXJuIG8ucHJvbWlzZSgpfX0pO3ZhciBXPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO1MuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLHQpe0MuY29uc29sZSYmQy5jb25zb2xlLndhcm4mJmUmJlcudGVzdChlLm5hbWUpJiZDLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UsZS5zdGFjayx0KX0sUy5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihlKXtDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9O3ZhciBGPVMuRGVmZXJyZWQoKTtmdW5jdGlvbiBCKCl7RS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCKSxDLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLEIpLFMucmVhZHkoKX1TLmZuLnJlYWR5PWZ1bmN0aW9uKGUpe3JldHVybiBGLnRoZW4oZSlbImNhdGNoIl0oZnVuY3Rpb24oZSl7Uy5yZWFkeUV4Y2VwdGlvbihlKX0pLHRoaXN9LFMuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5OmZ1bmN0aW9uKGUpeyghMD09PWU/LS1TLnJlYWR5V2FpdDpTLmlzUmVhZHkpfHwoUy5pc1JlYWR5PSEwKSE9PWUmJjA8LS1TLnJlYWR5V2FpdHx8Ri5yZXNvbHZlV2l0aChFLFtTXSl9fSksUy5yZWFkeS50aGVuPUYudGhlbiwiY29tcGxldGUiPT09RS5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1FLnJlYWR5U3RhdGUmJiFFLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9DLnNldFRpbWVvdXQoUy5yZWFkeSk6KEUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixCKSk7dmFyICQ9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSl7dmFyIHM9MCx1PWUubGVuZ3RoLGw9bnVsbD09bjtpZigib2JqZWN0Ij09PXcobikpZm9yKHMgaW4gaT0hMCxuKSQoZSx0LHMsbltzXSwhMCxvLGEpO2Vsc2UgaWYodm9pZCAwIT09ciYmKGk9ITAsbShyKXx8KGE9ITApLGwmJihhPyh0LmNhbGwoZSxyKSx0PW51bGwpOihsPXQsdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGwuY2FsbChTKGUpLG4pfSkpLHQpKWZvcig7czx1O3MrKyl0KGVbc10sbixhP3I6ci5jYWxsKGVbc10scyx0KGVbc10sbikpKTtyZXR1cm4gaT9lOmw/dC5jYWxsKGUpOnU/dChlWzBdLG4pOm99LF89L14tbXMtLyx6PS8tKFthLXpdKS9nO2Z1bmN0aW9uIFUoZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIFgoZSl7cmV0dXJuIGUucmVwbGFjZShfLCJtcy0iKS5yZXBsYWNlKHosVSl9dmFyIFY9ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfHw5PT09ZS5ub2RlVHlwZXx8IStlLm5vZGVUeXBlfTtmdW5jdGlvbiBHKCl7dGhpcy5leHBhbmRvPVMuZXhwYW5kbytHLnVpZCsrfUcudWlkPTEsRy5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdHx8KHQ9e30sVihlKSYmKGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXQ6T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdGhpcy5leHBhbmRvLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pKSksdH0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPXRoaXMuY2FjaGUoZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlbWCh0KV09bjtlbHNlIGZvcihyIGluIHQpaVtYKHIpXT10W3JdO3JldHVybiBpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLmNhY2hlKGUpOmVbdGhpcy5leHBhbmRvXSYmZVt0aGlzLmV4cGFuZG9dW1godCldfSxhY2Nlc3M6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10fHx0JiYic3RyaW5nIj09dHlwZW9mIHQmJnZvaWQgMD09PW4/dGhpcy5nZXQoZSx0KToodGhpcy5zZXQoZSx0LG4pLHZvaWQgMCE9PW4/bjp0KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1lW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09cil7aWYodm9pZCAwIT09dCl7bj0odD1BcnJheS5pc0FycmF5KHQpP3QubWFwKFgpOih0PVgodCkpaW4gcj9bdF06dC5tYXRjaChQKXx8W10pLmxlbmd0aDt3aGlsZShuLS0pZGVsZXRlIHJbdFtuXV19KHZvaWQgMD09PXR8fFMuaXNFbXB0eU9iamVjdChyKSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGVbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09dCYmIVMuaXNFbXB0eU9iamVjdCh0KX19O3ZhciBZPW5ldyBHLFE9bmV3IEcsSj0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLEs9L1tBLVpdL2c7ZnVuY3Rpb24gWihlLHQsbil7dmFyIHIsaTtpZih2b2lkIDA9PT1uJiYxPT09ZS5ub2RlVHlwZSlpZihyPSJkYXRhLSIrdC5yZXBsYWNlKEssIi0kJiIpLnRvTG93ZXJDYXNlKCksInN0cmluZyI9PXR5cGVvZihuPWUuZ2V0QXR0cmlidXRlKHIpKSl7dHJ5e249InRydWUiPT09KGk9bil8fCJmYWxzZSIhPT1pJiYoIm51bGwiPT09aT9udWxsOmk9PT0raSsiIj8raTpKLnRlc3QoaSk/SlNPTi5wYXJzZShpKTppKX1jYXRjaChlKXt9US5zZXQoZSx0LG4pfWVsc2Ugbj12b2lkIDA7cmV0dXJuIG59Uy5leHRlbmQoe2hhc0RhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIFEuaGFzRGF0YShlKXx8WS5oYXNEYXRhKGUpfSxkYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUS5hY2Nlc3MoZSx0LG4pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7US5yZW1vdmUoZSx0KX0sX2RhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBZLmFjY2VzcyhlLHQsbil9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7WS5yZW1vdmUoZSx0KX19KSxTLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihuLGUpe3ZhciB0LHIsaSxvPXRoaXNbMF0sYT1vJiZvLmF0dHJpYnV0ZXM7aWYodm9pZCAwPT09bil7aWYodGhpcy5sZW5ndGgmJihpPVEuZ2V0KG8pLDE9PT1vLm5vZGVUeXBlJiYhWS5nZXQobywiaGFzRGF0YUF0dHJzIikpKXt0PWEubGVuZ3RoO3doaWxlKHQtLSlhW3RdJiYwPT09KHI9YVt0XS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpJiYocj1YKHIuc2xpY2UoNSkpLFoobyxyLGlbcl0pKTtZLnNldChvLCJoYXNEYXRhQXR0cnMiLCEwKX1yZXR1cm4gaX1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIG4/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7US5zZXQodGhpcyxuKX0pOiQodGhpcyxmdW5jdGlvbihlKXt2YXIgdDtpZihvJiZ2b2lkIDA9PT1lKXJldHVybiB2b2lkIDAhPT0odD1RLmdldChvLG4pKT90OnZvaWQgMCE9PSh0PVoobyxuKSk/dDp2b2lkIDA7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7US5zZXQodGhpcyxuLGUpfSl9LG51bGwsZSwxPGFyZ3VtZW50cy5sZW5ndGgsbnVsbCwhMCl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1EucmVtb3ZlKHRoaXMsZSl9KX19KSxTLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIpKyJxdWV1ZSIscj1ZLmdldChlLHQpLG4mJighcnx8QXJyYXkuaXNBcnJheShuKT9yPVkuYWNjZXNzKGUsdCxTLm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIgbj1TLnF1ZXVlKGUsdCkscj1uLmxlbmd0aCxpPW4uc2hpZnQoKSxvPVMuX3F1ZXVlSG9va3MoZSx0KTsiaW5wcm9ncmVzcyI9PT1pJiYoaT1uLnNoaWZ0KCksci0tKSxpJiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsZnVuY3Rpb24oKXtTLmRlcXVldWUoZSx0KX0sbykpLCFyJiZvJiZvLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4gWS5nZXQoZSxuKXx8WS5hY2Nlc3MoZSxuLHtlbXB0eTpTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtZLnJlbW92ZShlLFt0KyJxdWV1ZSIsbl0pfSl9KX19KSxTLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24odCxuKXt2YXIgZT0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmKG49dCx0PSJmeCIsZS0tKSxhcmd1bWVudHMubGVuZ3RoPGU/Uy5xdWV1ZSh0aGlzWzBdLHQpOnZvaWQgMD09PW4/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TLnF1ZXVlKHRoaXMsdCxuKTtTLl9xdWV1ZUhvb2tzKHRoaXMsdCksImZ4Ij09PXQmJiJpbnByb2dyZXNzIiE9PWVbMF0mJlMuZGVxdWV1ZSh0aGlzLHQpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZGVxdWV1ZSh0aGlzLGUpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucXVldWUoZXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTEsaT1TLkRlZmVycmVkKCksbz10aGlzLGE9dGhpcy5sZW5ndGgscz1mdW5jdGlvbigpey0tcnx8aS5yZXNvbHZlV2l0aChvLFtvXSl9OyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksZT1lfHwiZngiO3doaWxlKGEtLSkobj1ZLmdldChvW2FdLGUrInF1ZXVlSG9va3MiKSkmJm4uZW1wdHkmJihyKyssbi5lbXB0eS5hZGQocykpO3JldHVybiBzKCksaS5wcm9taXNlKHQpfX0pO3ZhciBlZT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSx0ZT1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrZWUrIikoW2EteiVdKikkIiwiaSIpLG5lPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0scmU9RS5kb2N1bWVudEVsZW1lbnQsaWU9ZnVuY3Rpb24oZSl7cmV0dXJuIFMuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfSxvZT17Y29tcG9zZWQ6ITB9O3JlLmdldFJvb3ROb2RlJiYoaWU9ZnVuY3Rpb24oZSl7cmV0dXJuIFMuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfHxlLmdldFJvb3ROb2RlKG9lKT09PWUub3duZXJEb2N1bWVudH0pO3ZhciBhZT1mdW5jdGlvbihlLHQpe3JldHVybiJub25lIj09PShlPXR8fGUpLnN0eWxlLmRpc3BsYXl8fCIiPT09ZS5zdHlsZS5kaXNwbGF5JiZpZShlKSYmIm5vbmUiPT09Uy5jc3MoZSwiZGlzcGxheSIpfTtmdW5jdGlvbiBzZShlLHQsbixyKXt2YXIgaSxvLGE9MjAscz1yP2Z1bmN0aW9uKCl7cmV0dXJuIHIuY3VyKCl9OmZ1bmN0aW9uKCl7cmV0dXJuIFMuY3NzKGUsdCwiIil9LHU9cygpLGw9biYmblszXXx8KFMuY3NzTnVtYmVyW3RdPyIiOiJweCIpLGM9ZS5ub2RlVHlwZSYmKFMuY3NzTnVtYmVyW3RdfHwicHgiIT09bCYmK3UpJiZ0ZS5leGVjKFMuY3NzKGUsdCkpO2lmKGMmJmNbM10hPT1sKXt1Lz0yLGw9bHx8Y1szXSxjPSt1fHwxO3doaWxlKGEtLSlTLnN0eWxlKGUsdCxjK2wpLCgxLW8pKigxLShvPXMoKS91fHwuNSkpPD0wJiYoYT0wKSxjLz1vO2MqPTIsUy5zdHlsZShlLHQsYytsKSxuPW58fFtdfXJldHVybiBuJiYoYz0rY3x8K3V8fDAsaT1uWzFdP2MrKG5bMV0rMSkqblsyXTorblsyXSxyJiYoci51bml0PWwsci5zdGFydD1jLHIuZW5kPWkpKSxpfXZhciB1ZT17fTtmdW5jdGlvbiBsZShlLHQpe2Zvcih2YXIgbixyLGksbyxhLHMsdSxsPVtdLGM9MCxmPWUubGVuZ3RoO2M8ZjtjKyspKHI9ZVtjXSkuc3R5bGUmJihuPXIuc3R5bGUuZGlzcGxheSx0Pygibm9uZSI9PT1uJiYobFtjXT1ZLmdldChyLCJkaXNwbGF5Iil8fG51bGwsbFtjXXx8KHIuc3R5bGUuZGlzcGxheT0iIikpLCIiPT09ci5zdHlsZS5kaXNwbGF5JiZhZShyKSYmKGxbY109KHU9YT1vPXZvaWQgMCxhPShpPXIpLm93bmVyRG9jdW1lbnQscz1pLm5vZGVOYW1lLCh1PXVlW3NdKXx8KG89YS5ib2R5LmFwcGVuZENoaWxkKGEuY3JlYXRlRWxlbWVudChzKSksdT1TLmNzcyhvLCJkaXNwbGF5Iiksby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pLCJub25lIj09PXUmJih1PSJibG9jayIpLHVlW3NdPXUpKSkpOiJub25lIiE9PW4mJihsW2NdPSJub25lIixZLnNldChyLCJkaXNwbGF5IixuKSkpO2ZvcihjPTA7YzxmO2MrKyludWxsIT1sW2NdJiYoZVtjXS5zdHlsZS5kaXNwbGF5PWxbY10pO3JldHVybiBlfVMuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oZSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZT9lP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2FlKHRoaXMpP1ModGhpcykuc2hvdygpOlModGhpcykuaGlkZSgpfSl9fSk7dmFyIGNlLGZlLHBlPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLGRlPS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKS9pLGhlPS9eJHxebW9kdWxlJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaTtjZT1FLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5hcHBlbmRDaGlsZChFLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwoZmU9RS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGZlLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxmZS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksY2UuYXBwZW5kQ2hpbGQoZmUpLHkuY2hlY2tDbG9uZT1jZS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsY2UuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+Iix5Lm5vQ2xvbmVDaGVja2VkPSEhY2UuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLGNlLmlubmVySFRNTD0iPG9wdGlvbj48L29wdGlvbj4iLHkub3B0aW9uPSEhY2UubGFzdENoaWxkO3ZhciBnZT17dGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O2Z1bmN0aW9uIHZlKGUsdCl7dmFyIG47cmV0dXJuIG49InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lP2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUodHx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbD9lLnF1ZXJ5U2VsZWN0b3JBbGwodHx8IioiKTpbXSx2b2lkIDA9PT10fHx0JiZBKGUsdCk/Uy5tZXJnZShbZV0sbik6bn1mdW5jdGlvbiB5ZShlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylZLnNldChlW25dLCJnbG9iYWxFdmFsIiwhdHx8WS5nZXQodFtuXSwiZ2xvYmFsRXZhbCIpKX1nZS50Ym9keT1nZS50Zm9vdD1nZS5jb2xncm91cD1nZS5jYXB0aW9uPWdlLnRoZWFkLGdlLnRoPWdlLnRkLHkub3B0aW9ufHwoZ2Uub3B0Z3JvdXA9Z2Uub3B0aW9uPVsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0pO3ZhciBtZT0vPHwmIz9cdys7LztmdW5jdGlvbiB4ZShlLHQsbixyLGkpe2Zvcih2YXIgbyxhLHMsdSxsLGMsZj10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxwPVtdLGQ9MCxoPWUubGVuZ3RoO2Q8aDtkKyspaWYoKG89ZVtkXSl8fDA9PT1vKWlmKCJvYmplY3QiPT09dyhvKSlTLm1lcmdlKHAsby5ub2RlVHlwZT9bb106byk7ZWxzZSBpZihtZS50ZXN0KG8pKXthPWF8fGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSkscz0oZGUuZXhlYyhvKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSx1PWdlW3NdfHxnZS5fZGVmYXVsdCxhLmlubmVySFRNTD11WzFdK1MuaHRtbFByZWZpbHRlcihvKSt1WzJdLGM9dVswXTt3aGlsZShjLS0pYT1hLmxhc3RDaGlsZDtTLm1lcmdlKHAsYS5jaGlsZE5vZGVzKSwoYT1mLmZpcnN0Q2hpbGQpLnRleHRDb250ZW50PSIifWVsc2UgcC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpO2YudGV4dENvbnRlbnQ9IiIsZD0wO3doaWxlKG89cFtkKytdKWlmKHImJi0xPFMuaW5BcnJheShvLHIpKWkmJmkucHVzaChvKTtlbHNlIGlmKGw9aWUobyksYT12ZShmLmFwcGVuZENoaWxkKG8pLCJzY3JpcHQiKSxsJiZ5ZShhKSxuKXtjPTA7d2hpbGUobz1hW2MrK10paGUudGVzdChvLnR5cGV8fCIiKSYmbi5wdXNoKG8pfXJldHVybiBmfXZhciBiZT0vXihbXi5dKikoPzpcLiguKyl8KS87ZnVuY3Rpb24gd2UoKXtyZXR1cm4hMH1mdW5jdGlvbiBUZSgpe3JldHVybiExfWZ1bmN0aW9uIENlKGUsdCl7cmV0dXJuIGU9PT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gRS5hY3RpdmVFbGVtZW50fWNhdGNoKGUpe319KCk9PSgiZm9jdXMiPT09dCl9ZnVuY3Rpb24gRWUoZSx0LG4scixpLG8pe3ZhciBhLHM7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtmb3IocyBpbiJzdHJpbmciIT10eXBlb2YgbiYmKHI9cnx8bixuPXZvaWQgMCksdClFZShlLHMsbixyLHRbc10sbyk7cmV0dXJuIGV9aWYobnVsbD09ciYmbnVsbD09aT8oaT1uLHI9bj12b2lkIDApOm51bGw9PWkmJigic3RyaW5nIj09dHlwZW9mIG4/KGk9cixyPXZvaWQgMCk6KGk9cixyPW4sbj12b2lkIDApKSwhMT09PWkpaT1UZTtlbHNlIGlmKCFpKXJldHVybiBlO3JldHVybiAxPT09byYmKGE9aSwoaT1mdW5jdGlvbihlKXtyZXR1cm4gUygpLm9mZihlKSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLmd1aWQ9YS5ndWlkfHwoYS5ndWlkPVMuZ3VpZCsrKSksZS5lYWNoKGZ1bmN0aW9uKCl7Uy5ldmVudC5hZGQodGhpcyx0LGkscixuKX0pfWZ1bmN0aW9uIFNlKGUsaSxvKXtvPyhZLnNldChlLGksITEpLFMuZXZlbnQuYWRkKGUsaSx7bmFtZXNwYWNlOiExLGhhbmRsZXI6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPVkuZ2V0KHRoaXMsaSk7aWYoMSZlLmlzVHJpZ2dlciYmdGhpc1tpXSl7aWYoci5sZW5ndGgpKFMuZXZlbnQuc3BlY2lhbFtpXXx8e30pLmRlbGVnYXRlVHlwZSYmZS5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKHI9cy5jYWxsKGFyZ3VtZW50cyksWS5zZXQodGhpcyxpLHIpLHQ9byh0aGlzLGkpLHRoaXNbaV0oKSxyIT09KG49WS5nZXQodGhpcyxpKSl8fHQ/WS5zZXQodGhpcyxpLCExKTpuPXt9LHIhPT1uKXJldHVybiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSxuJiZuLnZhbHVlfWVsc2Ugci5sZW5ndGgmJihZLnNldCh0aGlzLGkse3ZhbHVlOlMuZXZlbnQudHJpZ2dlcihTLmV4dGVuZChyWzBdLFMuRXZlbnQucHJvdG90eXBlKSxyLnNsaWNlKDEpLHRoaXMpfSksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9fSkpOnZvaWQgMD09PVkuZ2V0KGUsaSkmJlMuZXZlbnQuYWRkKGUsaSx3ZSl9Uy5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbih0LGUsbixyLGkpe3ZhciBvLGEscyx1LGwsYyxmLHAsZCxoLGcsdj1ZLmdldCh0KTtpZihWKHQpKXtuLmhhbmRsZXImJihuPShvPW4pLmhhbmRsZXIsaT1vLnNlbGVjdG9yKSxpJiZTLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHJlLGkpLG4uZ3VpZHx8KG4uZ3VpZD1TLmd1aWQrKyksKHU9di5ldmVudHMpfHwodT12LmV2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpKSwoYT12LmhhbmRsZSl8fChhPXYuaGFuZGxlPWZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgUyYmUy5ldmVudC50cmlnZ2VyZWQhPT1lLnR5cGU/Uy5ldmVudC5kaXNwYXRjaC5hcHBseSh0LGFyZ3VtZW50cyk6dm9pZCAwfSksbD0oZT0oZXx8IiIpLm1hdGNoKFApfHxbIiJdKS5sZW5ndGg7d2hpbGUobC0tKWQ9Zz0ocz1iZS5leGVjKGVbbF0pfHxbXSlbMV0saD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLGQmJihmPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30sZD0oaT9mLmRlbGVnYXRlVHlwZTpmLmJpbmRUeXBlKXx8ZCxmPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30sYz1TLmV4dGVuZCh7dHlwZTpkLG9yaWdUeXBlOmcsZGF0YTpyLGhhbmRsZXI6bixndWlkOm4uZ3VpZCxzZWxlY3RvcjppLG5lZWRzQ29udGV4dDppJiZTLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoaSksbmFtZXNwYWNlOmguam9pbigiLiIpfSxvKSwocD11W2RdKXx8KChwPXVbZF09W10pLmRlbGVnYXRlQ291bnQ9MCxmLnNldHVwJiYhMSE9PWYuc2V0dXAuY2FsbCh0LHIsaCxhKXx8dC5hZGRFdmVudExpc3RlbmVyJiZ0LmFkZEV2ZW50TGlzdGVuZXIoZCxhKSksZi5hZGQmJihmLmFkZC5jYWxsKHQsYyksYy5oYW5kbGVyLmd1aWR8fChjLmhhbmRsZXIuZ3VpZD1uLmd1aWQpKSxpP3Auc3BsaWNlKHAuZGVsZWdhdGVDb3VudCsrLDAsYyk6cC5wdXNoKGMpLFMuZXZlbnQuZ2xvYmFsW2RdPSEwKX19LHJlbW92ZTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvLGEscyx1LGwsYyxmLHAsZCxoLGcsdj1ZLmhhc0RhdGEoZSkmJlkuZ2V0KGUpO2lmKHYmJih1PXYuZXZlbnRzKSl7bD0odD0odHx8IiIpLm1hdGNoKFApfHxbIiJdKS5sZW5ndGg7d2hpbGUobC0tKWlmKGQ9Zz0ocz1iZS5leGVjKHRbbF0pfHxbXSlbMV0saD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLGQpe2Y9Uy5ldmVudC5zcGVjaWFsW2RdfHx7fSxwPXVbZD0ocj9mLmRlbGVnYXRlVHlwZTpmLmJpbmRUeXBlKXx8ZF18fFtdLHM9c1syXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIraC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxhPW89cC5sZW5ndGg7d2hpbGUoby0tKWM9cFtvXSwhaSYmZyE9PWMub3JpZ1R5cGV8fG4mJm4uZ3VpZCE9PWMuZ3VpZHx8cyYmIXMudGVzdChjLm5hbWVzcGFjZSl8fHImJnIhPT1jLnNlbGVjdG9yJiYoIioqIiE9PXJ8fCFjLnNlbGVjdG9yKXx8KHAuc3BsaWNlKG8sMSksYy5zZWxlY3RvciYmcC5kZWxlZ2F0ZUNvdW50LS0sZi5yZW1vdmUmJmYucmVtb3ZlLmNhbGwoZSxjKSk7YSYmIXAubGVuZ3RoJiYoZi50ZWFyZG93biYmITEhPT1mLnRlYXJkb3duLmNhbGwoZSxoLHYuaGFuZGxlKXx8Uy5yZW1vdmVFdmVudChlLGQsdi5oYW5kbGUpLGRlbGV0ZSB1W2RdKX1lbHNlIGZvcihkIGluIHUpUy5ldmVudC5yZW1vdmUoZSxkK3RbbF0sbixyLCEwKTtTLmlzRW1wdHlPYmplY3QodSkmJlkucmVtb3ZlKGUsImhhbmRsZSBldmVudHMiKX19LGRpc3BhdGNoOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYSxzPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSx1PVMuZXZlbnQuZml4KGUpLGw9KFkuZ2V0KHRoaXMsImV2ZW50cyIpfHxPYmplY3QuY3JlYXRlKG51bGwpKVt1LnR5cGVdfHxbXSxjPVMuZXZlbnQuc3BlY2lhbFt1LnR5cGVdfHx7fTtmb3Ioc1swXT11LHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXNbdF09YXJndW1lbnRzW3RdO2lmKHUuZGVsZWdhdGVUYXJnZXQ9dGhpcywhYy5wcmVEaXNwYXRjaHx8ITEhPT1jLnByZURpc3BhdGNoLmNhbGwodGhpcyx1KSl7YT1TLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyx1LGwpLHQ9MDt3aGlsZSgoaT1hW3QrK10pJiYhdS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXt1LmN1cnJlbnRUYXJnZXQ9aS5lbGVtLG49MDt3aGlsZSgobz1pLmhhbmRsZXJzW24rK10pJiYhdS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKXUucm5hbWVzcGFjZSYmITEhPT1vLm5hbWVzcGFjZSYmIXUucm5hbWVzcGFjZS50ZXN0KG8ubmFtZXNwYWNlKXx8KHUuaGFuZGxlT2JqPW8sdS5kYXRhPW8uZGF0YSx2b2lkIDAhPT0ocj0oKFMuZXZlbnQuc3BlY2lhbFtvLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8by5oYW5kbGVyKS5hcHBseShpLmVsZW0scykpJiYhMT09PSh1LnJlc3VsdD1yKSYmKHUucHJldmVudERlZmF1bHQoKSx1LnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGMucG9zdERpc3BhdGNoJiZjLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsdSksdS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGEscz1bXSx1PXQuZGVsZWdhdGVDb3VudCxsPWUudGFyZ2V0O2lmKHUmJmwubm9kZVR5cGUmJiEoImNsaWNrIj09PWUudHlwZSYmMTw9ZS5idXR0b24pKWZvcig7bCE9PXRoaXM7bD1sLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWwubm9kZVR5cGUmJigiY2xpY2siIT09ZS50eXBlfHwhMCE9PWwuZGlzYWJsZWQpKXtmb3Iobz1bXSxhPXt9LG49MDtuPHU7bisrKXZvaWQgMD09PWFbaT0ocj10W25dKS5zZWxlY3RvcisiICJdJiYoYVtpXT1yLm5lZWRzQ29udGV4dD8tMTxTKGksdGhpcykuaW5kZXgobCk6Uy5maW5kKGksdGhpcyxudWxsLFtsXSkubGVuZ3RoKSxhW2ldJiZvLnB1c2gocik7by5sZW5ndGgmJnMucHVzaCh7ZWxlbTpsLGhhbmRsZXJzOm99KX1yZXR1cm4gbD10aGlzLHU8dC5sZW5ndGgmJnMucHVzaCh7ZWxlbTpsLGhhbmRsZXJzOnQuc2xpY2UodSl9KSxzfSxhZGRQcm9wOmZ1bmN0aW9uKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMuRXZlbnQucHJvdG90eXBlLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDptKGUpP2Z1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiBlKHRoaXMub3JpZ2luYWxFdmVudCl9OmZ1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbdF19LHNldDpmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSl9fSl9LGZpeDpmdW5jdGlvbihlKXtyZXR1cm4gZVtTLmV4cGFuZG9dP2U6bmV3IFMuRXZlbnQoZSl9LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxjbGljazp7c2V0dXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc3x8ZTtyZXR1cm4gcGUudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZBKHQsImlucHV0IikmJlNlKHQsImNsaWNrIix3ZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc3x8ZTtyZXR1cm4gcGUudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZBKHQsImlucHV0IikmJlNlKHQsImNsaWNrIiksITB9LF9kZWZhdWx0OmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmWS5nZXQodCwiY2xpY2siKXx8QSh0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihlKXt2b2lkIDAhPT1lLnJlc3VsdCYmZS5vcmlnaW5hbEV2ZW50JiYoZS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWUucmVzdWx0KX19fX0sUy5yZW1vdmVFdmVudD1mdW5jdGlvbihlLHQsbil7ZS5yZW1vdmVFdmVudExpc3RlbmVyJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX0sUy5FdmVudD1mdW5jdGlvbihlLHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFMuRXZlbnQpKXJldHVybiBuZXcgUy5FdmVudChlLHQpO2UmJmUudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWUsdGhpcy50eXBlPWUudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1lLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWUuZGVmYXVsdFByZXZlbnRlZCYmITE9PT1lLnJldHVyblZhbHVlP3dlOlRlLHRoaXMudGFyZ2V0PWUudGFyZ2V0JiYzPT09ZS50YXJnZXQubm9kZVR5cGU/ZS50YXJnZXQucGFyZW50Tm9kZTplLnRhcmdldCx0aGlzLmN1cnJlbnRUYXJnZXQ9ZS5jdXJyZW50VGFyZ2V0LHRoaXMucmVsYXRlZFRhcmdldD1lLnJlbGF0ZWRUYXJnZXQpOnRoaXMudHlwZT1lLHQmJlMuZXh0ZW5kKHRoaXMsdCksdGhpcy50aW1lU3RhbXA9ZSYmZS50aW1lU3RhbXB8fERhdGUubm93KCksdGhpc1tTLmV4cGFuZG9dPSEwfSxTLkV2ZW50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Uy5FdmVudCxpc0RlZmF1bHRQcmV2ZW50ZWQ6VGUsaXNQcm9wYWdhdGlvblN0b3BwZWQ6VGUsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6VGUsaXNTaW11bGF0ZWQ6ITEscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9d2UsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUucHJldmVudERlZmF1bHQoKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9d2UsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcFByb3BhZ2F0aW9uKCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxTLmVhY2goe2FsdEtleTohMCxidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsY2hhbmdlZFRvdWNoZXM6ITAsY3RybEtleTohMCxkZXRhaWw6ITAsZXZlbnRQaGFzZTohMCxtZXRhS2V5OiEwLHBhZ2VYOiEwLHBhZ2VZOiEwLHNoaWZ0S2V5OiEwLHZpZXc6ITAsImNoYXIiOiEwLGNvZGU6ITAsY2hhckNvZGU6ITAsa2V5OiEwLGtleUNvZGU6ITAsYnV0dG9uOiEwLGJ1dHRvbnM6ITAsY2xpZW50WDohMCxjbGllbnRZOiEwLG9mZnNldFg6ITAsb2Zmc2V0WTohMCxwb2ludGVySWQ6ITAscG9pbnRlclR5cGU6ITAsc2NyZWVuWDohMCxzY3JlZW5ZOiEwLHRhcmdldFRvdWNoZXM6ITAsdG9FbGVtZW50OiEwLHRvdWNoZXM6ITAsd2hpY2g6ITB9LFMuZXZlbnQuYWRkUHJvcCksUy5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihlLHQpe1MuZXZlbnQuc3BlY2lhbFtlXT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gU2UodGhpcyxlLENlKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBTZSh0aGlzLGUpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybiEwfSxkZWxlZ2F0ZVR5cGU6dH19KSxTLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGUsaSl7Uy5ldmVudC5zcGVjaWFsW2VdPXtkZWxlZ2F0ZVR5cGU6aSxiaW5kVHlwZTppLGhhbmRsZTpmdW5jdGlvbihlKXt2YXIgdCxuPWUucmVsYXRlZFRhcmdldCxyPWUuaGFuZGxlT2JqO3JldHVybiBuJiYobj09PXRoaXN8fFMuY29udGFpbnModGhpcyxuKSl8fChlLnR5cGU9ci5vcmlnVHlwZSx0PXIuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS50eXBlPWkpLHR9fX0pLFMuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRWUodGhpcyxlLHQsbixyKX0sb25lOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBFZSh0aGlzLGUsdCxuLHIsMSl9LG9mZjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLmhhbmRsZU9iailyZXR1cm4gcj1lLmhhbmRsZU9iaixTKGUuZGVsZWdhdGVUYXJnZXQpLm9mZihyLm5hbWVzcGFjZT9yLm9yaWdUeXBlKyIuIityLm5hbWVzcGFjZTpyLm9yaWdUeXBlLHIuc2VsZWN0b3Isci5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Zm9yKGkgaW4gZSl0aGlzLm9mZihpLHQsZVtpXSk7cmV0dXJuIHRoaXN9cmV0dXJuITEhPT10JiYiZnVuY3Rpb24iIT10eXBlb2YgdHx8KG49dCx0PXZvaWQgMCksITE9PT1uJiYobj1UZSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Uy5ldmVudC5yZW1vdmUodGhpcyxlLG4sdCl9KX19KTt2YXIga2U9LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksQWU9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksTmU9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nO2Z1bmN0aW9uIGplKGUsdCl7cmV0dXJuIEEoZSwidGFibGUiKSYmQSgxMSE9PXQubm9kZVR5cGU/dDp0LmZpcnN0Q2hpbGQsInRyIikmJlMoZSkuY2hpbGRyZW4oInRib2R5IilbMF18fGV9ZnVuY3Rpb24gRGUoZSl7cmV0dXJuIGUudHlwZT0obnVsbCE9PWUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIitlLnR5cGUsZX1mdW5jdGlvbiBxZShlKXtyZXR1cm4idHJ1ZS8iPT09KGUudHlwZXx8IiIpLnNsaWNlKDAsNSk/ZS50eXBlPWUudHlwZS5zbGljZSg1KTplLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGV9ZnVuY3Rpb24gTGUoZSx0KXt2YXIgbixyLGksbyxhLHM7aWYoMT09PXQubm9kZVR5cGUpe2lmKFkuaGFzRGF0YShlKSYmKHM9WS5nZXQoZSkuZXZlbnRzKSlmb3IoaSBpbiBZLnJlbW92ZSh0LCJoYW5kbGUgZXZlbnRzIikscylmb3Iobj0wLHI9c1tpXS5sZW5ndGg7bjxyO24rKylTLmV2ZW50LmFkZCh0LGksc1tpXVtuXSk7US5oYXNEYXRhKGUpJiYobz1RLmFjY2VzcyhlKSxhPVMuZXh0ZW5kKHt9LG8pLFEuc2V0KHQsYSkpfX1mdW5jdGlvbiBIZShuLHIsaSxvKXtyPWcocik7dmFyIGUsdCxhLHMsdSxsLGM9MCxmPW4ubGVuZ3RoLHA9Zi0xLGQ9clswXSxoPW0oZCk7aWYoaHx8MTxmJiYic3RyaW5nIj09dHlwZW9mIGQmJiF5LmNoZWNrQ2xvbmUmJkFlLnRlc3QoZCkpcmV0dXJuIG4uZWFjaChmdW5jdGlvbihlKXt2YXIgdD1uLmVxKGUpO2gmJihyWzBdPWQuY2FsbCh0aGlzLGUsdC5odG1sKCkpKSxIZSh0LHIsaSxvKX0pO2lmKGYmJih0PShlPXhlKHIsblswXS5vd25lckRvY3VtZW50LCExLG4sbykpLmZpcnN0Q2hpbGQsMT09PWUuY2hpbGROb2Rlcy5sZW5ndGgmJihlPXQpLHR8fG8pKXtmb3Iocz0oYT1TLm1hcCh2ZShlLCJzY3JpcHQiKSxEZSkpLmxlbmd0aDtjPGY7YysrKXU9ZSxjIT09cCYmKHU9Uy5jbG9uZSh1LCEwLCEwKSxzJiZTLm1lcmdlKGEsdmUodSwic2NyaXB0IikpKSxpLmNhbGwobltjXSx1LGMpO2lmKHMpZm9yKGw9YVthLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LFMubWFwKGEscWUpLGM9MDtjPHM7YysrKXU9YVtjXSxoZS50ZXN0KHUudHlwZXx8IiIpJiYhWS5hY2Nlc3ModSwiZ2xvYmFsRXZhbCIpJiZTLmNvbnRhaW5zKGwsdSkmJih1LnNyYyYmIm1vZHVsZSIhPT0odS50eXBlfHwiIikudG9Mb3dlckNhc2UoKT9TLl9ldmFsVXJsJiYhdS5ub01vZHVsZSYmUy5fZXZhbFVybCh1LnNyYyx7bm9uY2U6dS5ub25jZXx8dS5nZXRBdHRyaWJ1dGUoIm5vbmNlIil9LGwpOmIodS50ZXh0Q29udGVudC5yZXBsYWNlKE5lLCIiKSx1LGwpKX1yZXR1cm4gbn1mdW5jdGlvbiBPZShlLHQsbil7Zm9yKHZhciByLGk9dD9TLmZpbHRlcih0LGUpOmUsbz0wO251bGwhPShyPWlbb10pO28rKylufHwxIT09ci5ub2RlVHlwZXx8Uy5jbGVhbkRhdGEodmUocikpLHIucGFyZW50Tm9kZSYmKG4mJmllKHIpJiZ5ZSh2ZShyLCJzY3JpcHQiKSksci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKTtyZXR1cm4gZX1TLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sY2xvbmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGM9ZS5jbG9uZU5vZGUoITApLGY9aWUoZSk7aWYoISh5Lm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlfHxTLmlzWE1MRG9jKGUpKSlmb3IoYT12ZShjKSxyPTAsaT0obz12ZShlKSkubGVuZ3RoO3I8aTtyKyspcz1vW3JdLHU9YVtyXSx2b2lkIDAsImlucHV0Ij09PShsPXUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkmJnBlLnRlc3Qocy50eXBlKT91LmNoZWNrZWQ9cy5jaGVja2VkOiJpbnB1dCIhPT1sJiYidGV4dGFyZWEiIT09bHx8KHUuZGVmYXVsdFZhbHVlPXMuZGVmYXVsdFZhbHVlKTtpZih0KWlmKG4pZm9yKG89b3x8dmUoZSksYT1hfHx2ZShjKSxyPTAsaT1vLmxlbmd0aDtyPGk7cisrKUxlKG9bcl0sYVtyXSk7ZWxzZSBMZShlLGMpO3JldHVybiAwPChhPXZlKGMsInNjcmlwdCIpKS5sZW5ndGgmJnllKGEsIWYmJnZlKGUsInNjcmlwdCIpKSxjfSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scixpPVMuZXZlbnQuc3BlY2lhbCxvPTA7dm9pZCAwIT09KG49ZVtvXSk7bysrKWlmKFYobikpe2lmKHQ9bltZLmV4cGFuZG9dKXtpZih0LmV2ZW50cylmb3IociBpbiB0LmV2ZW50cylpW3JdP1MuZXZlbnQucmVtb3ZlKG4scik6Uy5yZW1vdmVFdmVudChuLHIsdC5oYW5kbGUpO25bWS5leHBhbmRvXT12b2lkIDB9bltRLmV4cGFuZG9dJiYobltRLmV4cGFuZG9dPXZvaWQgMCl9fX0pLFMuZm4uZXh0ZW5kKHtkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIE9lKHRoaXMsZSwhMCl9LHJlbW92ZTpmdW5jdGlvbihlKXtyZXR1cm4gT2UodGhpcyxlKX0sdGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP1MudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHwodGhpcy50ZXh0Q29udGVudD1lKX0pfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8amUodGhpcyxlKS5hcHBlbmRDaGlsZChlKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgdD1qZSh0aGlzLGUpO3QuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9MDtudWxsIT0oZT10aGlzW3RdKTt0KyspMT09PWUubm9kZVR5cGUmJihTLmNsZWFuRGF0YSh2ZShlLCExKSksZS50ZXh0Q29udGVudD0iIik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9bnVsbCE9ZSYmZSx0PW51bGw9PXQ/ZTp0LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIFMuY2xvbmUodGhpcyxlLHQpfSl9LGh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlKXt2YXIgdD10aGlzWzBdfHx7fSxuPTAscj10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1lJiYxPT09dC5ub2RlVHlwZSlyZXR1cm4gdC5pbm5lckhUTUw7aWYoInN0cmluZyI9PXR5cGVvZiBlJiYha2UudGVzdChlKSYmIWdlWyhkZS5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7ZT1TLmh0bWxQcmVmaWx0ZXIoZSk7dHJ5e2Zvcig7bjxyO24rKykxPT09KHQ9dGhpc1tuXXx8e30pLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEodmUodCwhMSkpLHQuaW5uZXJIVE1MPWUpO3Q9MH1jYXRjaChlKXt9fXQmJnRoaXMuZW1wdHkoKS5hcHBlbmQoZSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gSGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO1MuaW5BcnJheSh0aGlzLG4pPDAmJihTLmNsZWFuRGF0YSh2ZSh0aGlzKSksdCYmdC5yZXBsYWNlQ2hpbGQoZSx0aGlzKSl9LG4pfX0pLFMuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGUsYSl7Uy5mbltlXT1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj1bXSxyPVMoZSksaT1yLmxlbmd0aC0xLG89MDtvPD1pO28rKyl0PW89PT1pP3RoaXM6dGhpcy5jbG9uZSghMCksUyhyW29dKVthXSh0KSx1LmFwcGx5KG4sdC5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4pfX0pO3ZhciBQZT1uZXcgUmVnRXhwKCJeKCIrZWUrIikoPyFweClbYS16JV0rJCIsImkiKSxSZT1mdW5jdGlvbihlKXt2YXIgdD1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIHQmJnQub3BlbmVyfHwodD1DKSx0LmdldENvbXB1dGVkU3R5bGUoZSl9LE1lPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e307Zm9yKGkgaW4gdClvW2ldPWUuc3R5bGVbaV0sZS5zdHlsZVtpXT10W2ldO2ZvcihpIGluIHI9bi5jYWxsKGUpLHQpZS5zdHlsZVtpXT1vW2ldO3JldHVybiByfSxJZT1uZXcgUmVnRXhwKG5lLmpvaW4oInwiKSwiaSIpO2Z1bmN0aW9uIFdlKGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuc3R5bGU7cmV0dXJuKG49bnx8UmUoZSkpJiYoIiIhPT0oYT1uLmdldFByb3BlcnR5VmFsdWUodCl8fG5bdF0pfHxpZShlKXx8KGE9Uy5zdHlsZShlLHQpKSwheS5waXhlbEJveFN0eWxlcygpJiZQZS50ZXN0KGEpJiZJZS50ZXN0KHQpJiYocj1zLndpZHRoLGk9cy5taW5XaWR0aCxvPXMubWF4V2lkdGgscy5taW5XaWR0aD1zLm1heFdpZHRoPXMud2lkdGg9YSxhPW4ud2lkdGgscy53aWR0aD1yLHMubWluV2lkdGg9aSxzLm1heFdpZHRoPW8pKSx2b2lkIDAhPT1hP2ErIiI6YX1mdW5jdGlvbiBGZShlLHQpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtpZighZSgpKXJldHVybih0aGlzLmdldD10KS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZGVsZXRlIHRoaXMuZ2V0fX19IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2lmKGwpe3Uuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MCIsbC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElIixyZS5hcHBlbmRDaGlsZCh1KS5hcHBlbmRDaGlsZChsKTt2YXIgZT1DLmdldENvbXB1dGVkU3R5bGUobCk7bj0iMSUiIT09ZS50b3Ascz0xMj09PXQoZS5tYXJnaW5MZWZ0KSxsLnN0eWxlLnJpZ2h0PSI2MCUiLG89MzY9PT10KGUucmlnaHQpLHI9MzY9PT10KGUud2lkdGgpLGwuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixpPTEyPT09dChsLm9mZnNldFdpZHRoLzMpLHJlLnJlbW92ZUNoaWxkKHUpLGw9bnVsbH19ZnVuY3Rpb24gdChlKXtyZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGUpKX12YXIgbixyLGksbyxhLHMsdT1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGw9RS5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLnN0eWxlJiYobC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGwuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIix5LmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09bC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxTLmV4dGVuZCh5LHtib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBlKCkscn0scGl4ZWxCb3hTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG99LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG59LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBlKCksc30sc2Nyb2xsYm94U2l6ZTpmdW5jdGlvbigpe3JldHVybiBlKCksaX0scmVsaWFibGVUckRpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scjtyZXR1cm4gbnVsbD09YSYmKGU9RS5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLHQ9RS5jcmVhdGVFbGVtZW50KCJ0ciIpLG49RS5jcmVhdGVFbGVtZW50KCJkaXYiKSxlLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlIix0LnN0eWxlLmNzc1RleHQ9ImJvcmRlcjoxcHggc29saWQiLHQuc3R5bGUuaGVpZ2h0PSIxcHgiLG4uc3R5bGUuaGVpZ2h0PSI5cHgiLG4uc3R5bGUuZGlzcGxheT0iYmxvY2siLHJlLmFwcGVuZENoaWxkKGUpLmFwcGVuZENoaWxkKHQpLmFwcGVuZENoaWxkKG4pLHI9Qy5nZXRDb21wdXRlZFN0eWxlKHQpLGE9cGFyc2VJbnQoci5oZWlnaHQsMTApK3BhcnNlSW50KHIuYm9yZGVyVG9wV2lkdGgsMTApK3BhcnNlSW50KHIuYm9yZGVyQm90dG9tV2lkdGgsMTApPT09dC5vZmZzZXRIZWlnaHQscmUucmVtb3ZlQ2hpbGQoZSkpLGF9fSkpfSgpO3ZhciBCZT1bIldlYmtpdCIsIk1veiIsIm1zIl0sJGU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSxfZT17fTtmdW5jdGlvbiB6ZShlKXt2YXIgdD1TLmNzc1Byb3BzW2VdfHxfZVtlXTtyZXR1cm4gdHx8KGUgaW4gJGU/ZTpfZVtlXT1mdW5jdGlvbihlKXt2YXIgdD1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPUJlLmxlbmd0aDt3aGlsZShuLS0paWYoKGU9QmVbbl0rdClpbiAkZSlyZXR1cm4gZX0oZSl8fGUpfXZhciBVZT0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sWGU9L14tLS8sVmU9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LEdlPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifTtmdW5jdGlvbiBZZShlLHQsbil7dmFyIHI9dGUuZXhlYyh0KTtyZXR1cm4gcj9NYXRoLm1heCgwLHJbMl0tKG58fDApKSsoclszXXx8InB4Iik6dH1mdW5jdGlvbiBRZShlLHQsbixyLGksbyl7dmFyIGE9IndpZHRoIj09PXQ/MTowLHM9MCx1PTA7aWYobj09PShyPyJib3JkZXIiOiJjb250ZW50IikpcmV0dXJuIDA7Zm9yKDthPDQ7YSs9MikibWFyZ2luIj09PW4mJih1Kz1TLmNzcyhlLG4rbmVbYV0sITAsaSkpLHI/KCJjb250ZW50Ij09PW4mJih1LT1TLmNzcyhlLCJwYWRkaW5nIituZVthXSwhMCxpKSksIm1hcmdpbiIhPT1uJiYodS09Uy5jc3MoZSwiYm9yZGVyIituZVthXSsiV2lkdGgiLCEwLGkpKSk6KHUrPVMuY3NzKGUsInBhZGRpbmciK25lW2FdLCEwLGkpLCJwYWRkaW5nIiE9PW4/dSs9Uy5jc3MoZSwiYm9yZGVyIituZVthXSsiV2lkdGgiLCEwLGkpOnMrPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKSk7cmV0dXJuIXImJjA8PW8mJih1Kz1NYXRoLm1heCgwLE1hdGguY2VpbChlWyJvZmZzZXQiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpXS1vLXUtcy0uNSkpfHwwKSx1fWZ1bmN0aW9uIEplKGUsdCxuKXt2YXIgcj1SZShlKSxpPSgheS5ib3hTaXppbmdSZWxpYWJsZSgpfHxuKSYmImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxyKSxvPWksYT1XZShlLHQscikscz0ib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtpZihQZS50ZXN0KGEpKXtpZighbilyZXR1cm4gYTthPSJhdXRvIn1yZXR1cm4oIXkuYm94U2l6aW5nUmVsaWFibGUoKSYmaXx8IXkucmVsaWFibGVUckRpbWVuc2lvbnMoKSYmQShlLCJ0ciIpfHwiYXV0byI9PT1hfHwhcGFyc2VGbG9hdChhKSYmImlubGluZSI9PT1TLmNzcyhlLCJkaXNwbGF5IiwhMSxyKSkmJmUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJihpPSJib3JkZXItYm94Ij09PVMuY3NzKGUsImJveFNpemluZyIsITEsciksKG89cyBpbiBlKSYmKGE9ZVtzXSkpLChhPXBhcnNlRmxvYXQoYSl8fDApK1FlKGUsdCxufHwoaT8iYm9yZGVyIjoiY29udGVudCIpLG8scixhKSsicHgifWZ1bmN0aW9uIEtlKGUsdCxuLHIsaSl7cmV0dXJuIG5ldyBLZS5wcm90b3R5cGUuaW5pdChlLHQsbixyLGkpfVMuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49V2UoZSwib3BhY2l0eSIpO3JldHVybiIiPT09bj8iMSI6bn19fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsZ3JpZEFyZWE6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TdGFydDohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6e30sc3R5bGU6ZnVuY3Rpb24oZSx0LG4scil7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0eWxlKXt2YXIgaSxvLGEscz1YKHQpLHU9WGUudGVzdCh0KSxsPWUuc3R5bGU7aWYodXx8KHQ9emUocykpLGE9Uy5jc3NIb29rc1t0XXx8Uy5jc3NIb29rc1tzXSx2b2lkIDA9PT1uKXJldHVybiBhJiYiZ2V0ImluIGEmJnZvaWQgMCE9PShpPWEuZ2V0KGUsITEscikpP2k6bFt0XTsic3RyaW5nIj09PShvPXR5cGVvZiBuKSYmKGk9dGUuZXhlYyhuKSkmJmlbMV0mJihuPXNlKGUsdCxpKSxvPSJudW1iZXIiKSxudWxsIT1uJiZuPT1uJiYoIm51bWJlciIhPT1vfHx1fHwobis9aSYmaVszXXx8KFMuY3NzTnVtYmVyW3NdPyIiOiJweCIpKSx5LmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1ufHwwIT09dC5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChsW3RdPSJpbmhlcml0IiksYSYmInNldCJpbiBhJiZ2b2lkIDA9PT0obj1hLnNldChlLG4scikpfHwodT9sLnNldFByb3BlcnR5KHQsbik6bFt0XT1uKSl9fSxjc3M6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHM9WCh0KTtyZXR1cm4gWGUudGVzdCh0KXx8KHQ9emUocykpLChhPVMuY3NzSG9va3NbdF18fFMuY3NzSG9va3Nbc10pJiYiZ2V0ImluIGEmJihpPWEuZ2V0KGUsITAsbikpLHZvaWQgMD09PWkmJihpPVdlKGUsdCxyKSksIm5vcm1hbCI9PT1pJiZ0IGluIEdlJiYoaT1HZVt0XSksIiI9PT1ufHxuPyhvPXBhcnNlRmxvYXQoaSksITA9PT1ufHxpc0Zpbml0ZShvKT9vfHwwOmkpOml9fSksUy5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihlLHUpe1MuY3NzSG9va3NbdV09e2dldDpmdW5jdGlvbihlLHQsbil7aWYodClyZXR1cm4hVWUudGVzdChTLmNzcyhlLCJkaXNwbGF5IikpfHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP0plKGUsdSxuKTpNZShlLFZlLGZ1bmN0aW9uKCl7cmV0dXJuIEplKGUsdSxuKX0pfSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9UmUoZSksbz0heS5zY3JvbGxib3hTaXplKCkmJiJhYnNvbHV0ZSI9PT1pLnBvc2l0aW9uLGE9KG98fG4pJiYiYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLGkpLHM9bj9RZShlLHUsbixhLGkpOjA7cmV0dXJuIGEmJm8mJihzLT1NYXRoLmNlaWwoZVsib2Zmc2V0Iit1WzBdLnRvVXBwZXJDYXNlKCkrdS5zbGljZSgxKV0tcGFyc2VGbG9hdChpW3VdKS1RZShlLHUsImJvcmRlciIsITEsaSktLjUpKSxzJiYocj10ZS5leGVjKHQpKSYmInB4IiE9PShyWzNdfHwicHgiKSYmKGUuc3R5bGVbdV09dCx0PVMuY3NzKGUsdSkpLFllKDAsdCxzKX19fSksUy5jc3NIb29rcy5tYXJnaW5MZWZ0PUZlKHkucmVsaWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4ocGFyc2VGbG9hdChXZShlLCJtYXJnaW5MZWZ0IikpfHxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtTWUoZSx7bWFyZ2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pLFMuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGksbyl7Uy5jc3NIb29rc1tpK29dPXtleHBhbmQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj17fSxyPSJzdHJpbmciPT10eXBlb2YgZT9lLnNwbGl0KCIgIik6W2VdO3Q8NDt0KyspbltpK25lW3RdK29dPXJbdF18fHJbdC0yXXx8clswXTtyZXR1cm4gbn19LCJtYXJnaW4iIT09aSYmKFMuY3NzSG9va3NbaStvXS5zZXQ9WWUpfSksUy5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihlLHQpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz17fSxhPTA7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHI9UmUoZSksaT10Lmxlbmd0aDthPGk7YSsrKW9bdFthXV09Uy5jc3MoZSx0W2FdLCExLHIpO3JldHVybiBvfXJldHVybiB2b2lkIDAhPT1uP1Muc3R5bGUoZSx0LG4pOlMuY3NzKGUsdCl9LGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfX0pLCgoUy5Ud2Vlbj1LZSkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpLZSxpbml0OmZ1bmN0aW9uKGUsdCxuLHIsaSxvKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9bix0aGlzLmVhc2luZz1pfHxTLmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9dCx0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9cix0aGlzLnVuaXQ9b3x8KFMuY3NzTnVtYmVyW25dPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgZT1LZS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gZSYmZS5nZXQ/ZS5nZXQodGhpcyk6S2UucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGUpe3ZhciB0LG49S2UucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz10PVMuZWFzaW5nW3RoaXMuZWFzaW5nXShlLHRoaXMub3B0aW9ucy5kdXJhdGlvbiplLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPXQ9ZSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqdCt0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxuJiZuLnNldD9uLnNldCh0aGlzKTpLZS5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSkuaW5pdC5wcm90b3R5cGU9S2UucHJvdG90eXBlLChLZS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDEhPT1lLmVsZW0ubm9kZVR5cGV8fG51bGwhPWUuZWxlbVtlLnByb3BdJiZudWxsPT1lLmVsZW0uc3R5bGVbZS5wcm9wXT9lLmVsZW1bZS5wcm9wXToodD1TLmNzcyhlLmVsZW0sZS5wcm9wLCIiKSkmJiJhdXRvIiE9PXQ/dDowfSxzZXQ6ZnVuY3Rpb24oZSl7Uy5meC5zdGVwW2UucHJvcF0/Uy5meC5zdGVwW2UucHJvcF0oZSk6MSE9PWUuZWxlbS5ub2RlVHlwZXx8IVMuY3NzSG9va3NbZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW3plKGUucHJvcCldP2UuZWxlbVtlLnByb3BdPWUubm93OlMuc3R5bGUoZS5lbGVtLGUucHJvcCxlLm5vdytlLnVuaXQpfX19KS5zY3JvbGxUb3A9S2UucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihlKXtlLmVsZW0ubm9kZVR5cGUmJmUuZWxlbS5wYXJlbnROb2RlJiYoZS5lbGVtW2UucHJvcF09ZS5ub3cpfX0sUy5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3dpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuLjUtTWF0aC5jb3MoZSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifSxTLmZ4PUtlLnByb3RvdHlwZS5pbml0LFMuZnguc3RlcD17fTt2YXIgWmUsZXQsdHQsbnQscnQ9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGl0PS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gb3QoKXtldCYmKCExPT09RS5oaWRkZW4mJkMucmVxdWVzdEFuaW1hdGlvbkZyYW1lP0MucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG90KTpDLnNldFRpbWVvdXQob3QsUy5meC5pbnRlcnZhbCksUy5meC50aWNrKCkpfWZ1bmN0aW9uIGF0KCl7cmV0dXJuIEMuc2V0VGltZW91dChmdW5jdGlvbigpe1plPXZvaWQgMH0pLFplPURhdGUubm93KCl9ZnVuY3Rpb24gc3QoZSx0KXt2YXIgbixyPTAsaT17aGVpZ2h0OmV9O2Zvcih0PXQ/MTowO3I8NDtyKz0yLXQpaVsibWFyZ2luIisobj1uZVtyXSldPWlbInBhZGRpbmciK25dPWU7cmV0dXJuIHQmJihpLm9wYWNpdHk9aS53aWR0aD1lKSxpfWZ1bmN0aW9uIHV0KGUsdCxuKXtmb3IodmFyIHIsaT0obHQudHdlZW5lcnNbdF18fFtdKS5jb25jYXQobHQudHdlZW5lcnNbIioiXSksbz0wLGE9aS5sZW5ndGg7bzxhO28rKylpZihyPWlbb10uY2FsbChuLHQsZSkpcmV0dXJuIHJ9ZnVuY3Rpb24gbHQobyxlLHQpe3ZhciBuLGEscj0wLGk9bHQucHJlZmlsdGVycy5sZW5ndGgscz1TLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIHUuZWxlbX0pLHU9ZnVuY3Rpb24oKXtpZihhKXJldHVybiExO2Zvcih2YXIgZT1aZXx8YXQoKSx0PU1hdGgubWF4KDAsbC5zdGFydFRpbWUrbC5kdXJhdGlvbi1lKSxuPTEtKHQvbC5kdXJhdGlvbnx8MCkscj0wLGk9bC50d2VlbnMubGVuZ3RoO3I8aTtyKyspbC50d2VlbnNbcl0ucnVuKG4pO3JldHVybiBzLm5vdGlmeVdpdGgobyxbbCxuLHRdKSxuPDEmJmk/dDooaXx8cy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsXSksITEpfSxsPXMucHJvbWlzZSh7ZWxlbTpvLHByb3BzOlMuZXh0ZW5kKHt9LGUpLG9wdHM6Uy5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOlMuZWFzaW5nLl9kZWZhdWx0fSx0KSxvcmlnaW5hbFByb3BlcnRpZXM6ZSxvcmlnaW5hbE9wdGlvbnM6dCxzdGFydFRpbWU6WmV8fGF0KCksZHVyYXRpb246dC5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1TLlR3ZWVuKG8sbC5vcHRzLGUsdCxsLm9wdHMuc3BlY2lhbEVhc2luZ1tlXXx8bC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2gobiksbn0sc3RvcDpmdW5jdGlvbihlKXt2YXIgdD0wLG49ZT9sLnR3ZWVucy5sZW5ndGg6MDtpZihhKXJldHVybiB0aGlzO2ZvcihhPSEwO3Q8bjt0KyspbC50d2VlbnNbdF0ucnVuKDEpO3JldHVybiBlPyhzLm5vdGlmeVdpdGgobyxbbCwxLDBdKSxzLnJlc29sdmVXaXRoKG8sW2wsZV0pKTpzLnJlamVjdFdpdGgobyxbbCxlXSksdGhpc319KSxjPWwucHJvcHM7Zm9yKCFmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGE7Zm9yKG4gaW4gZSlpZihpPXRbcj1YKG4pXSxvPWVbbl0sQXJyYXkuaXNBcnJheShvKSYmKGk9b1sxXSxvPWVbbl09b1swXSksbiE9PXImJihlW3JdPW8sZGVsZXRlIGVbbl0pLChhPVMuY3NzSG9va3Nbcl0pJiYiZXhwYW5kImluIGEpZm9yKG4gaW4gbz1hLmV4cGFuZChvKSxkZWxldGUgZVtyXSxvKW4gaW4gZXx8KGVbbl09b1tuXSx0W25dPWkpO2Vsc2UgdFtyXT1pfShjLGwub3B0cy5zcGVjaWFsRWFzaW5nKTtyPGk7cisrKWlmKG49bHQucHJlZmlsdGVyc1tyXS5jYWxsKGwsbyxjLGwub3B0cykpcmV0dXJuIG0obi5zdG9wKSYmKFMuX3F1ZXVlSG9va3MobC5lbGVtLGwub3B0cy5xdWV1ZSkuc3RvcD1uLnN0b3AuYmluZChuKSksbjtyZXR1cm4gUy5tYXAoYyx1dCxsKSxtKGwub3B0cy5zdGFydCkmJmwub3B0cy5zdGFydC5jYWxsKG8sbCksbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3MpLmRvbmUobC5vcHRzLmRvbmUsbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyksUy5meC50aW1lcihTLmV4dGVuZCh1LHtlbGVtOm8sYW5pbTpsLHF1ZXVlOmwub3B0cy5xdWV1ZX0pKSxsfVMuQW5pbWF0aW9uPVMuZXh0ZW5kKGx0LHt0d2VlbmVyczp7IioiOltmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY3JlYXRlVHdlZW4oZSx0KTtyZXR1cm4gc2Uobi5lbGVtLGUsdGUuZXhlYyh0KSxuKSxufV19LHR3ZWVuZXI6ZnVuY3Rpb24oZSx0KXttKGUpPyh0PWUsZT1bIioiXSk6ZT1lLm1hdGNoKFApO2Zvcih2YXIgbixyPTAsaT1lLmxlbmd0aDtyPGk7cisrKW49ZVtyXSxsdC50d2VlbmVyc1tuXT1sdC50d2VlbmVyc1tuXXx8W10sbHQudHdlZW5lcnNbbl0udW5zaGlmdCh0KX0scHJlZmlsdGVyczpbZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGMsZj0id2lkdGgiaW4gdHx8ImhlaWdodCJpbiB0LHA9dGhpcyxkPXt9LGg9ZS5zdHlsZSxnPWUubm9kZVR5cGUmJmFlKGUpLHY9WS5nZXQoZSwiZnhzaG93Iik7Zm9yKHIgaW4gbi5xdWV1ZXx8KG51bGw9PShhPVMuX3F1ZXVlSG9va3MoZSwiZngiKSkudW5xdWV1ZWQmJihhLnVucXVldWVkPTAscz1hLmVtcHR5LmZpcmUsYS5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7YS51bnF1ZXVlZHx8cygpfSksYS51bnF1ZXVlZCsrLHAuYWx3YXlzKGZ1bmN0aW9uKCl7cC5hbHdheXMoZnVuY3Rpb24oKXthLnVucXVldWVkLS0sUy5xdWV1ZShlLCJmeCIpLmxlbmd0aHx8YS5lbXB0eS5maXJlKCl9KX0pKSx0KWlmKGk9dFtyXSxydC50ZXN0KGkpKXtpZihkZWxldGUgdFtyXSxvPW98fCJ0b2dnbGUiPT09aSxpPT09KGc/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWl8fCF2fHx2b2lkIDA9PT12W3JdKWNvbnRpbnVlO2c9ITB9ZFtyXT12JiZ2W3JdfHxTLnN0eWxlKGUscil9aWYoKHU9IVMuaXNFbXB0eU9iamVjdCh0KSl8fCFTLmlzRW1wdHlPYmplY3QoZCkpZm9yKHIgaW4gZiYmMT09PWUubm9kZVR5cGUmJihuLm92ZXJmbG93PVtoLm92ZXJmbG93LGgub3ZlcmZsb3dYLGgub3ZlcmZsb3dZXSxudWxsPT0obD12JiZ2LmRpc3BsYXkpJiYobD1ZLmdldChlLCJkaXNwbGF5IikpLCJub25lIj09PShjPVMuY3NzKGUsImRpc3BsYXkiKSkmJihsP2M9bDoobGUoW2VdLCEwKSxsPWUuc3R5bGUuZGlzcGxheXx8bCxjPVMuY3NzKGUsImRpc3BsYXkiKSxsZShbZV0pKSksKCJpbmxpbmUiPT09Y3x8ImlubGluZS1ibG9jayI9PT1jJiZudWxsIT1sKSYmIm5vbmUiPT09Uy5jc3MoZSwiZmxvYXQiKSYmKHV8fChwLmRvbmUoZnVuY3Rpb24oKXtoLmRpc3BsYXk9bH0pLG51bGw9PWwmJihjPWguZGlzcGxheSxsPSJub25lIj09PWM/IiI6YykpLGguZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLG4ub3ZlcmZsb3cmJihoLm92ZXJmbG93PSJoaWRkZW4iLHAuYWx3YXlzKGZ1bmN0aW9uKCl7aC5vdmVyZmxvdz1uLm92ZXJmbG93WzBdLGgub3ZlcmZsb3dYPW4ub3ZlcmZsb3dbMV0saC5vdmVyZmxvd1k9bi5vdmVyZmxvd1syXX0pKSx1PSExLGQpdXx8KHY/ImhpZGRlbiJpbiB2JiYoZz12LmhpZGRlbik6dj1ZLmFjY2VzcyhlLCJmeHNob3ciLHtkaXNwbGF5Omx9KSxvJiYodi5oaWRkZW49IWcpLGcmJmxlKFtlXSwhMCkscC5kb25lKGZ1bmN0aW9uKCl7Zm9yKHIgaW4gZ3x8bGUoW2VdKSxZLnJlbW92ZShlLCJmeHNob3ciKSxkKVMuc3R5bGUoZSxyLGRbcl0pfSkpLHU9dXQoZz92W3JdOjAscixwKSxyIGluIHZ8fCh2W3JdPXUuc3RhcnQsZyYmKHUuZW5kPXUuc3RhcnQsdS5zdGFydD0wKSl9XSxwcmVmaWx0ZXI6ZnVuY3Rpb24oZSx0KXt0P2x0LnByZWZpbHRlcnMudW5zaGlmdChlKTpsdC5wcmVmaWx0ZXJzLnB1c2goZSl9fSksUy5zcGVlZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZSYmIm9iamVjdCI9PXR5cGVvZiBlP1MuZXh0ZW5kKHt9LGUpOntjb21wbGV0ZTpufHwhbiYmdHx8bShlKSYmZSxkdXJhdGlvbjplLGVhc2luZzpuJiZ0fHx0JiYhbSh0KSYmdH07cmV0dXJuIFMuZngub2ZmP3IuZHVyYXRpb249MDoibnVtYmVyIiE9dHlwZW9mIHIuZHVyYXRpb24mJihyLmR1cmF0aW9uIGluIFMuZnguc3BlZWRzP3IuZHVyYXRpb249Uy5meC5zcGVlZHNbci5kdXJhdGlvbl06ci5kdXJhdGlvbj1TLmZ4LnNwZWVkcy5fZGVmYXVsdCksbnVsbCE9ci5xdWV1ZSYmITAhPT1yLnF1ZXVlfHwoci5xdWV1ZT0iZngiKSxyLm9sZD1yLmNvbXBsZXRlLHIuY29tcGxldGU9ZnVuY3Rpb24oKXttKHIub2xkKSYmci5vbGQuY2FsbCh0aGlzKSxyLnF1ZXVlJiZTLmRlcXVldWUodGhpcyxyLnF1ZXVlKX0scn0sUy5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5maWx0ZXIoYWUpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6dH0sZSxuLHIpfSxhbmltYXRlOmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPVMuaXNFbXB0eU9iamVjdCh0KSxvPVMuc3BlZWQoZSxuLHIpLGE9ZnVuY3Rpb24oKXt2YXIgZT1sdCh0aGlzLFMuZXh0ZW5kKHt9LHQpLG8pOyhpfHxZLmdldCh0aGlzLCJmaW5pc2giKSkmJmUuc3RvcCghMCl9O3JldHVybiBhLmZpbmlzaD1hLGl8fCExPT09by5xdWV1ZT90aGlzLmVhY2goYSk6dGhpcy5xdWV1ZShvLnF1ZXVlLGEpfSxzdG9wOmZ1bmN0aW9uKGksZSxvKXt2YXIgYT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3RvcCx0KG8pfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGkmJihvPWUsZT1pLGk9dm9pZCAwKSxlJiZ0aGlzLnF1ZXVlKGl8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPSEwLHQ9bnVsbCE9aSYmaSsicXVldWVIb29rcyIsbj1TLnRpbWVycyxyPVkuZ2V0KHRoaXMpO2lmKHQpclt0XSYmclt0XS5zdG9wJiZhKHJbdF0pO2Vsc2UgZm9yKHQgaW4gcilyW3RdJiZyW3RdLnN0b3AmJml0LnRlc3QodCkmJmEoclt0XSk7Zm9yKHQ9bi5sZW5ndGg7dC0tOyluW3RdLmVsZW0hPT10aGlzfHxudWxsIT1pJiZuW3RdLnF1ZXVlIT09aXx8KG5bdF0uYW5pbS5zdG9wKG8pLGU9ITEsbi5zcGxpY2UodCwxKSk7IWUmJm98fFMuZGVxdWV1ZSh0aGlzLGkpfSl9LGZpbmlzaDpmdW5jdGlvbihhKXtyZXR1cm4hMSE9PWEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ9WS5nZXQodGhpcyksbj10W2ErInF1ZXVlIl0scj10W2ErInF1ZXVlSG9va3MiXSxpPVMudGltZXJzLG89bj9uLmxlbmd0aDowO2Zvcih0LmZpbmlzaD0hMCxTLnF1ZXVlKHRoaXMsYSxbXSksciYmci5zdG9wJiZyLnN0b3AuY2FsbCh0aGlzLCEwKSxlPWkubGVuZ3RoO2UtLTspaVtlXS5lbGVtPT09dGhpcyYmaVtlXS5xdWV1ZT09PWEmJihpW2VdLmFuaW0uc3RvcCghMCksaS5zcGxpY2UoZSwxKSk7Zm9yKGU9MDtlPG87ZSsrKW5bZV0mJm5bZV0uZmluaXNoJiZuW2VdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSB0LmZpbmlzaH0pfX0pLFMuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oZSxyKXt2YXIgaT1TLmZuW3JdO1MuZm5bcl09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PXR5cGVvZiBlP2kuYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZShzdChyLCEwKSxlLHQsbil9fSksUy5lYWNoKHtzbGlkZURvd246c3QoInNob3ciKSxzbGlkZVVwOnN0KCJoaWRlIiksc2xpZGVUb2dnbGU6c3QoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oZSxyKXtTLmZuW2VdPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5hbmltYXRlKHIsZSx0LG4pfX0pLFMudGltZXJzPVtdLFMuZngudGljaz1mdW5jdGlvbigpe3ZhciBlLHQ9MCxuPVMudGltZXJzO2ZvcihaZT1EYXRlLm5vdygpO3Q8bi5sZW5ndGg7dCsrKShlPW5bdF0pKCl8fG5bdF0hPT1lfHxuLnNwbGljZSh0LS0sMSk7bi5sZW5ndGh8fFMuZnguc3RvcCgpLFplPXZvaWQgMH0sUy5meC50aW1lcj1mdW5jdGlvbihlKXtTLnRpbWVycy5wdXNoKGUpLFMuZnguc3RhcnQoKX0sUy5meC5pbnRlcnZhbD0xMyxTLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7ZXR8fChldD0hMCxvdCgpKX0sUy5meC5zdG9wPWZ1bmN0aW9uKCl7ZXQ9bnVsbH0sUy5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sUy5mbi5kZWxheT1mdW5jdGlvbihyLGUpe3JldHVybiByPVMuZngmJlMuZnguc3BlZWRzW3JdfHxyLGU9ZXx8ImZ4Iix0aGlzLnF1ZXVlKGUsZnVuY3Rpb24oZSx0KXt2YXIgbj1DLnNldFRpbWVvdXQoZSxyKTt0LnN0b3A9ZnVuY3Rpb24oKXtDLmNsZWFyVGltZW91dChuKX19KX0sdHQ9RS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLG50PUUuY3JlYXRlRWxlbWVudCgic2VsZWN0IikuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksdHQudHlwZT0iY2hlY2tib3giLHkuY2hlY2tPbj0iIiE9PXR0LnZhbHVlLHkub3B0U2VsZWN0ZWQ9bnQuc2VsZWN0ZWQsKHR0PUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudmFsdWU9InQiLHR0LnR5cGU9InJhZGlvIix5LnJhZGlvVmFsdWU9InQiPT09dHQudmFsdWU7dmFyIGN0LGZ0PVMuZXhwci5hdHRySGFuZGxlO1MuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuICQodGhpcyxTLmF0dHIsZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MucmVtb3ZlQXR0cih0aGlzLGUpfSl9fSksUy5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz1lLm5vZGVUeXBlO2lmKDMhPT1vJiY4IT09byYmMiE9PW8pcmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBlLmdldEF0dHJpYnV0ZT9TLnByb3AoZSx0LG4pOigxPT09byYmUy5pc1hNTERvYyhlKXx8KGk9Uy5hdHRySG9va3NbdC50b0xvd2VyQ2FzZSgpXXx8KFMuZXhwci5tYXRjaC5ib29sLnRlc3QodCk/Y3Q6dm9pZCAwKSksdm9pZCAwIT09bj9udWxsPT09bj92b2lkIFMucmVtb3ZlQXR0cihlLHQpOmkmJiJzZXQiaW4gaSYmdm9pZCAwIT09KHI9aS5zZXQoZSxuLHQpKT9yOihlLnNldEF0dHJpYnV0ZSh0LG4rIiIpLG4pOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShyPWkuZ2V0KGUsdCkpP3I6bnVsbD09KHI9Uy5maW5kLmF0dHIoZSx0KSk/dm9pZCAwOnIpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihlLHQpe2lmKCF5LnJhZGlvVmFsdWUmJiJyYWRpbyI9PT10JiZBKGUsImlucHV0Iikpe3ZhciBuPWUudmFsdWU7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJ0eXBlIix0KSxuJiYoZS52YWx1ZT1uKSx0fX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wLGk9dCYmdC5tYXRjaChQKTtpZihpJiYxPT09ZS5ub2RlVHlwZSl3aGlsZShuPWlbcisrXSllLnJlbW92ZUF0dHJpYnV0ZShuKX19KSxjdD17c2V0OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hMT09PXQ/Uy5yZW1vdmVBdHRyKGUsbik6ZS5zZXRBdHRyaWJ1dGUobixuKSxufX0sUy5lYWNoKFMuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGUsdCl7dmFyIGE9ZnRbdF18fFMuZmluZC5hdHRyO2Z0W3RdPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89dC50b0xvd2VyQ2FzZSgpO3JldHVybiBufHwoaT1mdFtvXSxmdFtvXT1yLHI9bnVsbCE9YShlLHQsbik/bzpudWxsLGZ0W29dPWkpLHJ9fSk7dmFyIHB0PS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksZHQ9L14oPzphfGFyZWEpJC9pO2Z1bmN0aW9uIGh0KGUpe3JldHVybihlLm1hdGNoKFApfHxbXSkuam9pbigiICIpfWZ1bmN0aW9uIGd0KGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifWZ1bmN0aW9uIHZ0KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6InN0cmluZyI9PXR5cGVvZiBlJiZlLm1hdGNoKFApfHxbXX1TLmZuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihlLHQpe3JldHVybiAkKHRoaXMsUy5wcm9wLGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tTLnByb3BGaXhbZV18fGVdfSl9fSksUy5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz1lLm5vZGVUeXBlO2lmKDMhPT1vJiY4IT09byYmMiE9PW8pcmV0dXJuIDE9PT1vJiZTLmlzWE1MRG9jKGUpfHwodD1TLnByb3BGaXhbdF18fHQsaT1TLnByb3BIb29rc1t0XSksdm9pZCAwIT09bj9pJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjplW3RdPW46aSYmImdldCJpbiBpJiZudWxsIT09KHI9aS5nZXQoZSx0KSk/cjplW3RdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5maW5kLmF0dHIoZSwidGFiaW5kZXgiKTtyZXR1cm4gdD9wYXJzZUludCh0LDEwKTpwdC50ZXN0KGUubm9kZU5hbWUpfHxkdC50ZXN0KGUubm9kZU5hbWUpJiZlLmhyZWY/MDotMX19fSxwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn19KSx5Lm9wdFNlbGVjdGVkfHwoUy5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQmJnQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsbnVsbH0sc2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTt0JiYodC5zZWxlY3RlZEluZGV4LHQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpfX0pLFMuZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHkiLCJtYXhMZW5ndGgiLCJjZWxsU3BhY2luZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNwYW4iLCJ1c2VNYXAiLCJmcmFtZUJvcmRlciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7Uy5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pLFMuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyx1PTA7aWYobSh0KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykuYWRkQ2xhc3ModC5jYWxsKHRoaXMsZSxndCh0aGlzKSkpfSk7aWYoKGU9dnQodCkpLmxlbmd0aCl3aGlsZShuPXRoaXNbdSsrXSlpZihpPWd0KG4pLHI9MT09PW4ubm9kZVR5cGUmJiIgIitodChpKSsiICIpe2E9MDt3aGlsZShvPWVbYSsrXSlyLmluZGV4T2YoIiAiK28rIiAiKTwwJiYocis9bysiICIpO2khPT0ocz1odChyKSkmJm4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYSxzLHU9MDtpZihtKHQpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7Uyh0aGlzKS5yZW1vdmVDbGFzcyh0LmNhbGwodGhpcyxlLGd0KHRoaXMpKSl9KTtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5hdHRyKCJjbGFzcyIsIiIpO2lmKChlPXZ0KHQpKS5sZW5ndGgpd2hpbGUobj10aGlzW3UrK10paWYoaT1ndChuKSxyPTE9PT1uLm5vZGVUeXBlJiYiICIraHQoaSkrIiAiKXthPTA7d2hpbGUobz1lW2ErK10pd2hpbGUoLTE8ci5pbmRleE9mKCIgIitvKyIgIikpcj1yLnJlcGxhY2UoIiAiK28rIiAiLCIgIik7aSE9PShzPWh0KHIpKSYmbi5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oaSx0KXt2YXIgbz10eXBlb2YgaSxhPSJzdHJpbmciPT09b3x8QXJyYXkuaXNBcnJheShpKTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0JiZhP3Q/dGhpcy5hZGRDbGFzcyhpKTp0aGlzLnJlbW92ZUNsYXNzKGkpOm0oaSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykudG9nZ2xlQ2xhc3MoaS5jYWxsKHRoaXMsZSxndCh0aGlzKSx0KSx0KX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQsbixyO2lmKGEpe3Q9MCxuPVModGhpcykscj12dChpKTt3aGlsZShlPXJbdCsrXSluLmhhc0NsYXNzKGUpP24ucmVtb3ZlQ2xhc3MoZSk6bi5hZGRDbGFzcyhlKX1lbHNlIHZvaWQgMCE9PWkmJiJib29sZWFuIiE9PW98fCgoZT1ndCh0aGlzKSkmJlkuc2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iLGUpLHRoaXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGV8fCExPT09aT8iIjpZLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPTA7dD0iICIrZSsiICI7d2hpbGUobj10aGlzW3IrK10paWYoMT09PW4ubm9kZVR5cGUmJi0xPCgiICIraHQoZ3QobikpKyIgIikuaW5kZXhPZih0KSlyZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgeXQ9L1xyL2c7Uy5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihuKXt2YXIgcixlLGksdD10aGlzWzBdO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW0obiksdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0OzE9PT10aGlzLm5vZGVUeXBlJiYobnVsbD09KHQ9aT9uLmNhbGwodGhpcyxlLFModGhpcykudmFsKCkpOm4pP3Q9IiI6Im51bWJlciI9PXR5cGVvZiB0P3QrPSIiOkFycmF5LmlzQXJyYXkodCkmJih0PVMubWFwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6ZSsiIn0pKSwocj1TLnZhbEhvb2tzW3RoaXMudHlwZV18fFMudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJzZXQiaW4gciYmdm9pZCAwIT09ci5zZXQodGhpcyx0LCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT10KSl9KSk6dD8ocj1TLnZhbEhvb2tzW3QudHlwZV18fFMudmFsSG9va3NbdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJnZXQiaW4gciYmdm9pZCAwIT09KGU9ci5nZXQodCwidmFsdWUiKSk/ZToic3RyaW5nIj09dHlwZW9mKGU9dC52YWx1ZSk/ZS5yZXBsYWNlKHl0LCIiKTpudWxsPT1lPyIiOmU6dm9pZCAwfX0pLFMuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5maW5kLmF0dHIoZSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9dD90Omh0KFMudGV4dChlKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaT1lLm9wdGlvbnMsbz1lLnNlbGVjdGVkSW5kZXgsYT0ic2VsZWN0LW9uZSI9PT1lLnR5cGUscz1hP251bGw6W10sdT1hP28rMTppLmxlbmd0aDtmb3Iocj1vPDA/dTphP286MDtyPHU7cisrKWlmKCgobj1pW3JdKS5zZWxlY3RlZHx8cj09PW8pJiYhbi5kaXNhYmxlZCYmKCFuLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFBKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9UyhuKS52YWwoKSxhKXJldHVybiB0O3MucHVzaCh0KX1yZXR1cm4gc30sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpPWUub3B0aW9ucyxvPVMubWFrZUFycmF5KHQpLGE9aS5sZW5ndGg7d2hpbGUoYS0tKSgocj1pW2FdKS5zZWxlY3RlZD0tMTxTLmluQXJyYXkoUy52YWxIb29rcy5vcHRpb24uZ2V0KHIpLG8pKSYmKG49ITApO3JldHVybiBufHwoZS5zZWxlY3RlZEluZGV4PS0xKSxvfX19fSksUy5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Uy52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gZS5jaGVja2VkPS0xPFMuaW5BcnJheShTKGUpLnZhbCgpLHQpfX0seS5jaGVja09ufHwoUy52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmUudmFsdWV9KX0pLHkuZm9jdXNpbj0ib25mb2N1c2luImluIEM7dmFyIG10PS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyx4dD1mdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfTtTLmV4dGVuZChTLmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbCxjLGYscD1bbnx8RV0sZD12LmNhbGwoZSwidHlwZSIpP2UudHlwZTplLGg9di5jYWxsKGUsIm5hbWVzcGFjZSIpP2UubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYobz1mPWE9bj1ufHxFLDMhPT1uLm5vZGVUeXBlJiY4IT09bi5ub2RlVHlwZSYmIW10LnRlc3QoZCtTLmV2ZW50LnRyaWdnZXJlZCkmJigtMTxkLmluZGV4T2YoIi4iKSYmKGQ9KGg9ZC5zcGxpdCgiLiIpKS5zaGlmdCgpLGguc29ydCgpKSx1PWQuaW5kZXhPZigiOiIpPDAmJiJvbiIrZCwoZT1lW1MuZXhwYW5kb10/ZTpuZXcgUy5FdmVudChkLCJvYmplY3QiPT10eXBlb2YgZSYmZSkpLmlzVHJpZ2dlcj1yPzI6MyxlLm5hbWVzcGFjZT1oLmpvaW4oIi4iKSxlLnJuYW1lc3BhY2U9ZS5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIraC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGUucmVzdWx0PXZvaWQgMCxlLnRhcmdldHx8KGUudGFyZ2V0PW4pLHQ9bnVsbD09dD9bZV06Uy5tYWtlQXJyYXkodCxbZV0pLGM9Uy5ldmVudC5zcGVjaWFsW2RdfHx7fSxyfHwhYy50cmlnZ2VyfHwhMSE9PWMudHJpZ2dlci5hcHBseShuLHQpKSl7aWYoIXImJiFjLm5vQnViYmxlJiYheChuKSl7Zm9yKHM9Yy5kZWxlZ2F0ZVR5cGV8fGQsbXQudGVzdChzK2QpfHwobz1vLnBhcmVudE5vZGUpO287bz1vLnBhcmVudE5vZGUpcC5wdXNoKG8pLGE9bzthPT09KG4ub3duZXJEb2N1bWVudHx8RSkmJnAucHVzaChhLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvd3x8Qyl9aT0wO3doaWxlKChvPXBbaSsrXSkmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpZj1vLGUudHlwZT0xPGk/czpjLmJpbmRUeXBlfHxkLChsPShZLmdldChvLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbZS50eXBlXSYmWS5nZXQobywiaGFuZGxlIikpJiZsLmFwcGx5KG8sdCksKGw9dSYmb1t1XSkmJmwuYXBwbHkmJlYobykmJihlLnJlc3VsdD1sLmFwcGx5KG8sdCksITE9PT1lLnJlc3VsdCYmZS5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gZS50eXBlPWQscnx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8Yy5fZGVmYXVsdCYmITEhPT1jLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksdCl8fCFWKG4pfHx1JiZtKG5bZF0pJiYheChuKSYmKChhPW5bdV0pJiYoblt1XT1udWxsKSxTLmV2ZW50LnRyaWdnZXJlZD1kLGUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmZi5hZGRFdmVudExpc3RlbmVyKGQseHQpLG5bZF0oKSxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLHh0KSxTLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsYSYmKG5bdV09YSkpLGUucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVMuZXh0ZW5kKG5ldyBTLkV2ZW50LG4se3R5cGU6ZSxpc1NpbXVsYXRlZDohMH0pO1MuZXZlbnQudHJpZ2dlcihyLG51bGwsdCl9fSksUy5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Uy5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXNbMF07aWYobilyZXR1cm4gUy5ldmVudC50cmlnZ2VyKGUsdCxuLCEwKX19KSx5LmZvY3VzaW58fFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24obixyKXt2YXIgaT1mdW5jdGlvbihlKXtTLmV2ZW50LnNpbXVsYXRlKHIsZS50YXJnZXQsUy5ldmVudC5maXgoZSkpfTtTLmV2ZW50LnNwZWNpYWxbcl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLmRvY3VtZW50fHx0aGlzLHQ9WS5hY2Nlc3MoZSxyKTt0fHxlLmFkZEV2ZW50TGlzdGVuZXIobixpLCEwKSxZLmFjY2VzcyhlLHIsKHR8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUsciktMTt0P1kuYWNjZXNzKGUscix0KTooZS5yZW1vdmVFdmVudExpc3RlbmVyKG4saSwhMCksWS5yZW1vdmUoZSxyKSl9fX0pO3ZhciBidD1DLmxvY2F0aW9uLHd0PXtndWlkOkRhdGUubm93KCl9LFR0PS9cPy87Uy5wYXJzZVhNTD1mdW5jdGlvbihlKXt2YXIgdCxuO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3Q9KG5ldyBDLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsInRleHQveG1sIil9Y2F0Y2goZSl7fXJldHVybiBuPXQmJnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIilbMF0sdCYmIW58fFMuZXJyb3IoIkludmFsaWQgWE1MOiAiKyhuP1MubWFwKG4uY2hpbGROb2RlcyxmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pLmpvaW4oIlxuIik6ZSkpLHR9O3ZhciBDdD0vXFtcXSQvLEV0PS9ccj9cbi9nLFN0PS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxrdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24gQXQobixlLHIsaSl7dmFyIHQ7aWYoQXJyYXkuaXNBcnJheShlKSlTLmVhY2goZSxmdW5jdGlvbihlLHQpe3J8fEN0LnRlc3Qobik/aShuLHQpOkF0KG4rIlsiKygib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQ/ZToiIikrIl0iLHQscixpKX0pO2Vsc2UgaWYocnx8Im9iamVjdCIhPT13KGUpKWkobixlKTtlbHNlIGZvcih0IGluIGUpQXQobisiWyIrdCsiXSIsZVt0XSxyLGkpfVMucGFyYW09ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1tKHQpP3QoKTp0O3Jbci5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChlKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG51bGw9PW4/IiI6bil9O2lmKG51bGw9PWUpcmV0dXJuIiI7aWYoQXJyYXkuaXNBcnJheShlKXx8ZS5qcXVlcnkmJiFTLmlzUGxhaW5PYmplY3QoZSkpUy5lYWNoKGUsZnVuY3Rpb24oKXtpKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKG4gaW4gZSlBdChuLGVbbl0sdCxpKTtyZXR1cm4gci5qb2luKCImIil9LFMuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gUy5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPVMucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBlP1MubWFrZUFycmF5KGUpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgZT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIVModGhpcykuaXMoIjpkaXNhYmxlZCIpJiZrdC50ZXN0KHRoaXMubm9kZU5hbWUpJiYhU3QudGVzdChlKSYmKHRoaXMuY2hlY2tlZHx8IXBlLnRlc3QoZSkpfSkubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG49Uyh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOkFycmF5LmlzQXJyYXkobik/Uy5tYXAobixmdW5jdGlvbihlKXtyZXR1cm57bmFtZTp0Lm5hbWUsdmFsdWU6ZS5yZXBsYWNlKEV0LCJcclxuIil9fSk6e25hbWU6dC5uYW1lLHZhbHVlOm4ucmVwbGFjZShFdCwiXHJcbiIpfX0pLmdldCgpfX0pO3ZhciBOdD0vJTIwL2csanQ9LyMuKiQvLER0PS8oWz8mXSlfPVteJl0qLyxxdD0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLEx0PS9eKD86R0VUfEhFQUQpJC8sSHQ9L15cL1wvLyxPdD17fSxQdD17fSxSdD0iKi8iLmNvbmNhdCgiKiIpLE10PUUuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIEl0KG8pe3JldHVybiBmdW5jdGlvbihlLHQpeyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPSIqIik7dmFyIG4scj0wLGk9ZS50b0xvd2VyQ2FzZSgpLm1hdGNoKFApfHxbXTtpZihtKHQpKXdoaWxlKG49aVtyKytdKSIrIj09PW5bMF0/KG49bi5zbGljZSgxKXx8IioiLChvW25dPW9bbl18fFtdKS51bnNoaWZ0KHQpKToob1tuXT1vW25dfHxbXSkucHVzaCh0KX19ZnVuY3Rpb24gV3QodCxpLG8sYSl7dmFyIHM9e30sdT10PT09UHQ7ZnVuY3Rpb24gbChlKXt2YXIgcjtyZXR1cm4gc1tlXT0hMCxTLmVhY2godFtlXXx8W10sZnVuY3Rpb24oZSx0KXt2YXIgbj10KGksbyxhKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIG58fHV8fHNbbl0/dT8hKHI9bik6dm9pZCAwOihpLmRhdGFUeXBlcy51bnNoaWZ0KG4pLGwobiksITEpfSkscn1yZXR1cm4gbChpLmRhdGFUeXBlc1swXSl8fCFzWyIqIl0mJmwoIioiKX1mdW5jdGlvbiBGdChlLHQpe3ZhciBuLHIsaT1TLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKG4gaW4gdCl2b2lkIDAhPT10W25dJiYoKGlbbl0/ZTpyfHwocj17fSkpW25dPXRbbl0pO3JldHVybiByJiZTLmV4dGVuZCghMCxlLHIpLGV9TXQuaHJlZj1idC5ocmVmLFMuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpidC5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDovXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLy50ZXN0KGJ0LnByb3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7IioiOlJ0LHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi9cYnhtbFxiLyxodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjpTLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9GdChGdChlLFMuYWpheFNldHRpbmdzKSx0KTpGdChTLmFqYXhTZXR0aW5ncyxlKX0sYWpheFByZWZpbHRlcjpJdChPdCksYWpheFRyYW5zcG9ydDpJdChQdCksYWpheDpmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksdD10fHx7fTt2YXIgYyxmLHAsbixkLHIsaCxnLGksbyx2PVMuYWpheFNldHVwKHt9LHQpLHk9di5jb250ZXh0fHx2LG09di5jb250ZXh0JiYoeS5ub2RlVHlwZXx8eS5qcXVlcnkpP1MoeSk6Uy5ldmVudCx4PVMuRGVmZXJyZWQoKSxiPVMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHc9di5zdGF0dXNDb2RlfHx7fSxhPXt9LHM9e30sdT0iY2FuY2VsZWQiLFQ9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihlKXt2YXIgdDtpZihoKXtpZighbil7bj17fTt3aGlsZSh0PXF0LmV4ZWMocCkpblt0WzFdLnRvTG93ZXJDYXNlKCkrIiAiXT0oblt0WzFdLnRvTG93ZXJDYXNlKCkrIiAiXXx8W10pLmNvbmNhdCh0WzJdKX10PW5bZS50b0xvd2VyQ2FzZSgpKyIgIl19cmV0dXJuIG51bGw9PXQ/bnVsbDp0LmpvaW4oIiwgIil9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBoP3A6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1oJiYoZT1zW2UudG9Mb3dlckNhc2UoKV09c1tlLnRvTG93ZXJDYXNlKCldfHxlLGFbZV09dCksdGhpc30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09aCYmKHYubWltZVR5cGU9ZSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihlKXt2YXIgdDtpZihlKWlmKGgpVC5hbHdheXMoZVtULnN0YXR1c10pO2Vsc2UgZm9yKHQgaW4gZSl3W3RdPVt3W3RdLGVbdF1dO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihlKXt2YXIgdD1lfHx1O3JldHVybiBjJiZjLmFib3J0KHQpLGwoMCx0KSx0aGlzfX07aWYoeC5wcm9taXNlKFQpLHYudXJsPSgoZXx8di51cmx8fGJ0LmhyZWYpKyIiKS5yZXBsYWNlKEh0LGJ0LnByb3RvY29sKyIvLyIpLHYudHlwZT10Lm1ldGhvZHx8dC50eXBlfHx2Lm1ldGhvZHx8di50eXBlLHYuZGF0YVR5cGVzPSh2LmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goUCl8fFsiIl0sbnVsbD09di5jcm9zc0RvbWFpbil7cj1FLmNyZWF0ZUVsZW1lbnQoImEiKTt0cnl7ci5ocmVmPXYudXJsLHIuaHJlZj1yLmhyZWYsdi5jcm9zc0RvbWFpbj1NdC5wcm90b2NvbCsiLy8iK010Lmhvc3QhPXIucHJvdG9jb2wrIi8vIityLmhvc3R9Y2F0Y2goZSl7di5jcm9zc0RvbWFpbj0hMH19aWYodi5kYXRhJiZ2LnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIHYuZGF0YSYmKHYuZGF0YT1TLnBhcmFtKHYuZGF0YSx2LnRyYWRpdGlvbmFsKSksV3QoT3Qsdix0LFQpLGgpcmV0dXJuIFQ7Zm9yKGkgaW4oZz1TLmV2ZW50JiZ2Lmdsb2JhbCkmJjA9PVMuYWN0aXZlKysmJlMuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksdi50eXBlPXYudHlwZS50b1VwcGVyQ2FzZSgpLHYuaGFzQ29udGVudD0hTHQudGVzdCh2LnR5cGUpLGY9di51cmwucmVwbGFjZShqdCwiIiksdi5oYXNDb250ZW50P3YuZGF0YSYmdi5wcm9jZXNzRGF0YSYmMD09PSh2LmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJih2LmRhdGE9di5kYXRhLnJlcGxhY2UoTnQsIisiKSk6KG89di51cmwuc2xpY2UoZi5sZW5ndGgpLHYuZGF0YSYmKHYucHJvY2Vzc0RhdGF8fCJzdHJpbmciPT10eXBlb2Ygdi5kYXRhKSYmKGYrPShUdC50ZXN0KGYpPyImIjoiPyIpK3YuZGF0YSxkZWxldGUgdi5kYXRhKSwhMT09PXYuY2FjaGUmJihmPWYucmVwbGFjZShEdCwiJDEiKSxvPShUdC50ZXN0KGYpPyImIjoiPyIpKyJfPSIrd3QuZ3VpZCsrK28pLHYudXJsPWYrbyksdi5pZk1vZGlmaWVkJiYoUy5sYXN0TW9kaWZpZWRbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLFMubGFzdE1vZGlmaWVkW2ZdKSxTLmV0YWdbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsUy5ldGFnW2ZdKSksKHYuZGF0YSYmdi5oYXNDb250ZW50JiYhMSE9PXYuY29udGVudFR5cGV8fHQuY29udGVudFR5cGUpJiZULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsdi5jb250ZW50VHlwZSksVC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHYuZGF0YVR5cGVzWzBdJiZ2LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dP3YuYWNjZXB0c1t2LmRhdGFUeXBlc1swXV0rKCIqIiE9PXYuZGF0YVR5cGVzWzBdPyIsICIrUnQrIjsgcT0wLjAxIjoiIik6di5hY2NlcHRzWyIqIl0pLHYuaGVhZGVycylULnNldFJlcXVlc3RIZWFkZXIoaSx2LmhlYWRlcnNbaV0pO2lmKHYuYmVmb3JlU2VuZCYmKCExPT09di5iZWZvcmVTZW5kLmNhbGwoeSxULHYpfHxoKSlyZXR1cm4gVC5hYm9ydCgpO2lmKHU9ImFib3J0IixiLmFkZCh2LmNvbXBsZXRlKSxULmRvbmUodi5zdWNjZXNzKSxULmZhaWwodi5lcnJvciksYz1XdChQdCx2LHQsVCkpe2lmKFQucmVhZHlTdGF0ZT0xLGcmJm0udHJpZ2dlcigiYWpheFNlbmQiLFtULHZdKSxoKXJldHVybiBUO3YuYXN5bmMmJjA8di50aW1lb3V0JiYoZD1DLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtULmFib3J0KCJ0aW1lb3V0Iil9LHYudGltZW91dCkpO3RyeXtoPSExLGMuc2VuZChhLGwpfWNhdGNoKGUpe2lmKGgpdGhyb3cgZTtsKC0xLGUpfX1lbHNlIGwoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIGwoZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPXQ7aHx8KGg9ITAsZCYmQy5jbGVhclRpbWVvdXQoZCksYz12b2lkIDAscD1yfHwiIixULnJlYWR5U3RhdGU9MDxlPzQ6MCxpPTIwMDw9ZSYmZTwzMDB8fDMwND09PWUsbiYmKHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5jb250ZW50cyx1PWUuZGF0YVR5cGVzO3doaWxlKCIqIj09PXVbMF0pdS5zaGlmdCgpLHZvaWQgMD09PXImJihyPWUubWltZVR5cGV8fHQuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihyKWZvcihpIGluIHMpaWYoc1tpXSYmc1tpXS50ZXN0KHIpKXt1LnVuc2hpZnQoaSk7YnJlYWt9aWYodVswXWluIG4pbz11WzBdO2Vsc2V7Zm9yKGkgaW4gbil7aWYoIXVbMF18fGUuY29udmVydGVyc1tpKyIgIit1WzBdXSl7bz1pO2JyZWFrfWF8fChhPWkpfW89b3x8YX1pZihvKXJldHVybiBvIT09dVswXSYmdS51bnNoaWZ0KG8pLG5bb119KHYsVCxuKSksIWkmJi0xPFMuaW5BcnJheSgic2NyaXB0Iix2LmRhdGFUeXBlcykmJlMuaW5BcnJheSgianNvbiIsdi5kYXRhVHlwZXMpPDAmJih2LmNvbnZlcnRlcnNbInRleHQgc2NyaXB0Il09ZnVuY3Rpb24oKXt9KSxzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD17fSxjPWUuZGF0YVR5cGVzLnNsaWNlKCk7aWYoY1sxXSlmb3IoYSBpbiBlLmNvbnZlcnRlcnMpbFthLnRvTG93ZXJDYXNlKCldPWUuY29udmVydGVyc1thXTtvPWMuc2hpZnQoKTt3aGlsZShvKWlmKGUucmVzcG9uc2VGaWVsZHNbb10mJihuW2UucmVzcG9uc2VGaWVsZHNbb11dPXQpLCF1JiZyJiZlLmRhdGFGaWx0ZXImJih0PWUuZGF0YUZpbHRlcih0LGUuZGF0YVR5cGUpKSx1PW8sbz1jLnNoaWZ0KCkpaWYoIioiPT09bylvPXU7ZWxzZSBpZigiKiIhPT11JiZ1IT09byl7aWYoIShhPWxbdSsiICIrb118fGxbIiogIitvXSkpZm9yKGkgaW4gbClpZigocz1pLnNwbGl0KCIgIikpWzFdPT09byYmKGE9bFt1KyIgIitzWzBdXXx8bFsiKiAiK3NbMF1dKSl7ITA9PT1hP2E9bFtpXTohMCE9PWxbaV0mJihvPXNbMF0sYy51bnNoaWZ0KHNbMV0pKTticmVha31pZighMCE9PWEpaWYoYSYmZVsidGhyb3dzIl0pdD1hKHQpO2Vsc2UgdHJ5e3Q9YSh0KX1jYXRjaChlKXtyZXR1cm57c3RhdGU6InBhcnNlcmVycm9yIixlcnJvcjphP2U6Ik5vIGNvbnZlcnNpb24gZnJvbSAiK3UrIiB0byAiK299fX1yZXR1cm57c3RhdGU6InN1Y2Nlc3MiLGRhdGE6dH19KHYscyxULGkpLGk/KHYuaWZNb2RpZmllZCYmKCh1PVQuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSkmJihTLmxhc3RNb2RpZmllZFtmXT11KSwodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIikpJiYoUy5ldGFnW2ZdPXUpKSwyMDQ9PT1lfHwiSEVBRCI9PT12LnR5cGU/bD0ibm9jb250ZW50IjozMDQ9PT1lP2w9Im5vdG1vZGlmaWVkIjoobD1zLnN0YXRlLG89cy5kYXRhLGk9IShhPXMuZXJyb3IpKSk6KGE9bCwhZSYmbHx8KGw9ImVycm9yIixlPDAmJihlPTApKSksVC5zdGF0dXM9ZSxULnN0YXR1c1RleHQ9KHR8fGwpKyIiLGk/eC5yZXNvbHZlV2l0aCh5LFtvLGwsVF0pOngucmVqZWN0V2l0aCh5LFtULGwsYV0pLFQuc3RhdHVzQ29kZSh3KSx3PXZvaWQgMCxnJiZtLnRyaWdnZXIoaT8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFtULHYsaT9vOmFdKSxiLmZpcmVXaXRoKHksW1QsbF0pLGcmJihtLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW1Qsdl0pLC0tUy5hY3RpdmV8fFMuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiBUfSxnZXRKU09OOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUy5nZXQoZSx0LG4sImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFMuZ2V0KGUsdm9pZCAwLHQsInNjcmlwdCIpfX0pLFMuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihlLGkpe1NbaV09ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG0odCkmJihyPXJ8fG4sbj10LHQ9dm9pZCAwKSxTLmFqYXgoUy5leHRlbmQoe3VybDplLHR5cGU6aSxkYXRhVHlwZTpyLGRhdGE6dCxzdWNjZXNzOm59LFMuaXNQbGFpbk9iamVjdChlKSYmZSkpfX0pLFMuYWpheFByZWZpbHRlcihmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlLmhlYWRlcnMpImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCkmJihlLmNvbnRlbnRUeXBlPWUuaGVhZGVyc1t0XXx8IiIpfSksUy5fZXZhbFVybD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24oZSl7Uy5nbG9iYWxFdmFsKGUsdCxuKX19KX0sUy5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHRoaXNbMF0mJihtKGUpJiYoZT1lLmNhbGwodGhpc1swXSkpLHQ9UyhlLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmdC5pbnNlcnRCZWZvcmUodGhpc1swXSksdC5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3doaWxlKGUuZmlyc3RFbGVtZW50Q2hpbGQpZT1lLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBlfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24obil7cmV0dXJuIG0obik/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykud3JhcElubmVyKG4uY2FsbCh0aGlzLGUpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPVModGhpcyksdD1lLmNvbnRlbnRzKCk7dC5sZW5ndGg/dC53cmFwQWxsKG4pOmUuYXBwZW5kKG4pfSl9LHdyYXA6ZnVuY3Rpb24odCl7dmFyIG49bSh0KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykud3JhcEFsbChuP3QuY2FsbCh0aGlzLGUpOnQpfSl9LHVud3JhcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpe1ModGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLHRoaXN9fSksUy5leHByLnBzZXVkb3MuaGlkZGVuPWZ1bmN0aW9uKGUpe3JldHVybiFTLmV4cHIucHNldWRvcy52aXNpYmxlKGUpfSxTLmV4cHIucHNldWRvcy52aXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiEhKGUub2Zmc2V0V2lkdGh8fGUub2Zmc2V0SGVpZ2h0fHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0sUy5hamF4U2V0dGluZ3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQy5YTUxIdHRwUmVxdWVzdH1jYXRjaChlKXt9fTt2YXIgQnQ9ezA6MjAwLDEyMjM6MjA0fSwkdD1TLmFqYXhTZXR0aW5ncy54aHIoKTt5LmNvcnM9ISEkdCYmIndpdGhDcmVkZW50aWFscyJpbiAkdCx5LmFqYXg9JHQ9ISEkdCxTLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oaSl7dmFyIG8sYTtpZih5LmNvcnN8fCR0JiYhaS5jcm9zc0RvbWFpbilyZXR1cm57c2VuZDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9aS54aHIoKTtpZihyLm9wZW4oaS50eXBlLGkudXJsLGkuYXN5bmMsaS51c2VybmFtZSxpLnBhc3N3b3JkKSxpLnhockZpZWxkcylmb3IobiBpbiBpLnhockZpZWxkcylyW25dPWkueGhyRmllbGRzW25dO2ZvcihuIGluIGkubWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZSYmci5vdmVycmlkZU1pbWVUeXBlKGkubWltZVR5cGUpLGkuY3Jvc3NEb21haW58fGVbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKSxlKXIuc2V0UmVxdWVzdEhlYWRlcihuLGVbbl0pO289ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7byYmKG89YT1yLm9ubG9hZD1yLm9uZXJyb3I9ci5vbmFib3J0PXIub250aW1lb3V0PXIub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsImFib3J0Ij09PWU/ci5hYm9ydCgpOiJlcnJvciI9PT1lPyJudW1iZXIiIT10eXBlb2Ygci5zdGF0dXM/dCgwLCJlcnJvciIpOnQoci5zdGF0dXMsci5zdGF0dXNUZXh0KTp0KEJ0W3Iuc3RhdHVzXXx8ci5zdGF0dXMsci5zdGF0dXNUZXh0LCJ0ZXh0IiE9PShyLnJlc3BvbnNlVHlwZXx8InRleHQiKXx8InN0cmluZyIhPXR5cGVvZiByLnJlc3BvbnNlVGV4dD97YmluYXJ5OnIucmVzcG9uc2V9Ont0ZXh0OnIucmVzcG9uc2VUZXh0fSxyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fSxyLm9ubG9hZD1vKCksYT1yLm9uZXJyb3I9ci5vbnRpbWVvdXQ9bygiZXJyb3IiKSx2b2lkIDAhPT1yLm9uYWJvcnQ/ci5vbmFib3J0PWE6ci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09ci5yZWFkeVN0YXRlJiZDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtvJiZhKCl9KX0sbz1vKCJhYm9ydCIpO3RyeXtyLnNlbmQoaS5oYXNDb250ZW50JiZpLmRhdGF8fG51bGwpfWNhdGNoKGUpe2lmKG8pdGhyb3cgZX19LGFib3J0OmZ1bmN0aW9uKCl7byYmbygpfX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7ZS5jcm9zc0RvbWFpbiYmKGUuY29udGVudHMuc2NyaXB0PSExKX0pLFMuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGUpe3JldHVybiBTLmdsb2JhbEV2YWwoZSksZX19fSksUy5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUuY2FjaGUmJihlLmNhY2hlPSExKSxlLmNyb3NzRG9tYWluJiYoZS50eXBlPSJHRVQiKX0pLFMuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihuKXt2YXIgcixpO2lmKG4uY3Jvc3NEb21haW58fG4uc2NyaXB0QXR0cnMpcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXtyPVMoIjxzY3JpcHQ+IikuYXR0cihuLnNjcmlwdEF0dHJzfHx7fSkucHJvcCh7Y2hhcnNldDpuLnNjcmlwdENoYXJzZXQsc3JjOm4udXJsfSkub24oImxvYWQgZXJyb3IiLGk9ZnVuY3Rpb24oZSl7ci5yZW1vdmUoKSxpPW51bGwsZSYmdCgiZXJyb3IiPT09ZS50eXBlPzQwNDoyMDAsZS50eXBlKX0pLEUuaGVhZC5hcHBlbmRDaGlsZChyWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtpJiZpKCl9fX0pO3ZhciBfdCx6dD1bXSxVdD0vKD0pXD8oPz0mfCQpfFw/XD8vO1MuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT16dC5wb3AoKXx8Uy5leHBhbmRvKyJfIit3dC5ndWlkKys7cmV0dXJuIHRoaXNbZV09ITAsZX19KSxTLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT0hMSE9PWUuanNvbnAmJihVdC50ZXN0KGUudXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIGUuZGF0YSYmMD09PShlLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJlV0LnRlc3QoZS5kYXRhKSYmImRhdGEiKTtpZihhfHwianNvbnAiPT09ZS5kYXRhVHlwZXNbMF0pcmV0dXJuIHI9ZS5qc29ucENhbGxiYWNrPW0oZS5qc29ucENhbGxiYWNrKT9lLmpzb25wQ2FsbGJhY2soKTplLmpzb25wQ2FsbGJhY2ssYT9lW2FdPWVbYV0ucmVwbGFjZShVdCwiJDEiK3IpOiExIT09ZS5qc29ucCYmKGUudXJsKz0oVHQudGVzdChlLnVybCk/IiYiOiI/IikrZS5qc29ucCsiPSIrciksZS5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIG98fFMuZXJyb3IocisiIHdhcyBub3QgY2FsbGVkIiksb1swXX0sZS5kYXRhVHlwZXNbMF09Impzb24iLGk9Q1tyXSxDW3JdPWZ1bmN0aW9uKCl7bz1hcmd1bWVudHN9LG4uYWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09aT9TKEMpLnJlbW92ZVByb3Aocik6Q1tyXT1pLGVbcl0mJihlLmpzb25wQ2FsbGJhY2s9dC5qc29ucENhbGxiYWNrLHp0LnB1c2gocikpLG8mJm0oaSkmJmkob1swXSksbz1pPXZvaWQgMH0pLCJzY3JpcHQifSkseS5jcmVhdGVIVE1MRG9jdW1lbnQ9KChfdD1FLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keSkuaW5uZXJIVE1MPSI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsMj09PV90LmNoaWxkTm9kZXMubGVuZ3RoKSxTLnBhcnNlSFRNTD1mdW5jdGlvbihlLHQsbil7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP1tdOigiYm9vbGVhbiI9PXR5cGVvZiB0JiYobj10LHQ9ITEpLHR8fCh5LmNyZWF0ZUhUTUxEb2N1bWVudD8oKHI9KHQ9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5jcmVhdGVFbGVtZW50KCJiYXNlIikpLmhyZWY9RS5sb2NhdGlvbi5ocmVmLHQuaGVhZC5hcHBlbmRDaGlsZChyKSk6dD1FKSxvPSFuJiZbXSwoaT1OLmV4ZWMoZSkpP1t0LmNyZWF0ZUVsZW1lbnQoaVsxXSldOihpPXhlKFtlXSx0LG8pLG8mJm8ubGVuZ3RoJiZTKG8pLnJlbW92ZSgpLFMubWVyZ2UoW10saS5jaGlsZE5vZGVzKSkpO3ZhciByLGksb30sUy5mbi5sb2FkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT10aGlzLHM9ZS5pbmRleE9mKCIgIik7cmV0dXJuLTE8cyYmKHI9aHQoZS5zbGljZShzKSksZT1lLnNsaWNlKDAscykpLG0odCk/KG49dCx0PXZvaWQgMCk6dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYoaT0iUE9TVCIpLDA8YS5sZW5ndGgmJlMuYWpheCh7dXJsOmUsdHlwZTppfHwiR0VUIixkYXRhVHlwZToiaHRtbCIsZGF0YTp0fSkuZG9uZShmdW5jdGlvbihlKXtvPWFyZ3VtZW50cyxhLmh0bWwocj9TKCI8ZGl2PiIpLmFwcGVuZChTLnBhcnNlSFRNTChlKSkuZmluZChyKTplKX0pLmFsd2F5cyhuJiZmdW5jdGlvbihlLHQpe2EuZWFjaChmdW5jdGlvbigpe24uYXBwbHkodGhpcyxvfHxbZS5yZXNwb25zZVRleHQsdCxlXSl9KX0pLHRoaXN9LFMuZXhwci5wc2V1ZG9zLmFuaW1hdGVkPWZ1bmN0aW9uKHQpe3JldHVybiBTLmdyZXAoUy50aW1lcnMsZnVuY3Rpb24oZSl7cmV0dXJuIHQ9PT1lLmVsZW19KS5sZW5ndGh9LFMub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsPVMuY3NzKGUsInBvc2l0aW9uIiksYz1TKGUpLGY9e307InN0YXRpYyI9PT1sJiYoZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxzPWMub2Zmc2V0KCksbz1TLmNzcyhlLCJ0b3AiKSx1PVMuY3NzKGUsImxlZnQiKSwoImFic29sdXRlIj09PWx8fCJmaXhlZCI9PT1sKSYmLTE8KG8rdSkuaW5kZXhPZigiYXV0byIpPyhhPShyPWMucG9zaXRpb24oKSkudG9wLGk9ci5sZWZ0KTooYT1wYXJzZUZsb2F0KG8pfHwwLGk9cGFyc2VGbG9hdCh1KXx8MCksbSh0KSYmKHQ9dC5jYWxsKGUsbixTLmV4dGVuZCh7fSxzKSkpLG51bGwhPXQudG9wJiYoZi50b3A9dC50b3Atcy50b3ArYSksbnVsbCE9dC5sZWZ0JiYoZi5sZWZ0PXQubGVmdC1zLmxlZnQraSksInVzaW5nImluIHQ/dC51c2luZy5jYWxsKGUsZik6Yy5jc3MoZil9fSxTLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PXQ/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oZSl7Uy5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsdCxlKX0pO3ZhciBlLG4scj10aGlzWzBdO3JldHVybiByP3IuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KGU9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyx7dG9wOmUudG9wK24ucGFnZVlPZmZzZXQsbGVmdDplLmxlZnQrbi5wYWdlWE9mZnNldH0pOnt0b3A6MCxsZWZ0OjB9OnZvaWQgMH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgZSx0LG4scj10aGlzWzBdLGk9e3RvcDowLGxlZnQ6MH07aWYoImZpeGVkIj09PVMuY3NzKHIsInBvc2l0aW9uIikpdD1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Vsc2V7dD10aGlzLm9mZnNldCgpLG49ci5vd25lckRvY3VtZW50LGU9ci5vZmZzZXRQYXJlbnR8fG4uZG9jdW1lbnRFbGVtZW50O3doaWxlKGUmJihlPT09bi5ib2R5fHxlPT09bi5kb2N1bWVudEVsZW1lbnQpJiYic3RhdGljIj09PVMuY3NzKGUsInBvc2l0aW9uIikpZT1lLnBhcmVudE5vZGU7ZSYmZSE9PXImJjE9PT1lLm5vZGVUeXBlJiYoKGk9UyhlKS5vZmZzZXQoKSkudG9wKz1TLmNzcyhlLCJib3JkZXJUb3BXaWR0aCIsITApLGkubGVmdCs9Uy5jc3MoZSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpfXJldHVybnt0b3A6dC50b3AtaS50b3AtUy5jc3MociwibWFyZ2luVG9wIiwhMCksbGVmdDp0LmxlZnQtaS5sZWZ0LVMuY3NzKHIsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShlJiYic3RhdGljIj09PVMuY3NzKGUsInBvc2l0aW9uIikpZT1lLm9mZnNldFBhcmVudDtyZXR1cm4gZXx8cmV9KX19KSxTLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24odCxpKXt2YXIgbz0icGFnZVlPZmZzZXQiPT09aTtTLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKHgoZSk/cj1lOjk9PT1lLm5vZGVUeXBlJiYocj1lLmRlZmF1bHRWaWV3KSx2b2lkIDA9PT1uKXJldHVybiByP3JbaV06ZVt0XTtyP3Iuc2Nyb2xsVG8obz9yLnBhZ2VYT2Zmc2V0Om4sbz9uOnIucGFnZVlPZmZzZXQpOmVbdF09bn0sdCxlLGFyZ3VtZW50cy5sZW5ndGgpfX0pLFMuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4pe1MuY3NzSG9va3Nbbl09RmUoeS5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4gdD1XZShlLG4pLFBlLnRlc3QodCk/UyhlKS5wb3NpdGlvbigpW25dKyJweCI6dH0pfSksUy5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxzKXtTLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6cywiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKHIsbyl7Uy5mbltvXT1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGgmJihyfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxpPXJ8fCghMD09PWV8fCEwPT09dD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHgoZSk/MD09PW8uaW5kZXhPZigib3V0ZXIiKT9lWyJpbm5lciIrYV06ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWUubm9kZVR5cGU/KHI9ZS5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoZS5ib2R5WyJzY3JvbGwiK2FdLHJbInNjcm9sbCIrYV0sZS5ib2R5WyJvZmZzZXQiK2FdLHJbIm9mZnNldCIrYV0sclsiY2xpZW50IithXSkpOnZvaWQgMD09PW4/Uy5jc3MoZSx0LGkpOlMuc3R5bGUoZSx0LG4saSl9LHMsbj9lOnZvaWQgMCxuKX19KX0pLFMuZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGUsdCl7Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUpfX0pLFMuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX0saG92ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodHx8ZSl9fSksUy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsbil7Uy5mbltuXT1mdW5jdGlvbihlLHQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihuLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIobil9fSk7dmFyIFh0PS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZztTLnByb3h5PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKG49ZVt0XSx0PWUsZT1uKSxtKGUpKXJldHVybiByPXMuY2FsbChhcmd1bWVudHMsMiksKGk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0fHx0aGlzLHIuY29uY2F0KHMuY2FsbChhcmd1bWVudHMpKSl9KS5ndWlkPWUuZ3VpZD1lLmd1aWR8fFMuZ3VpZCsrLGl9LFMuaG9sZFJlYWR5PWZ1bmN0aW9uKGUpe2U/Uy5yZWFkeVdhaXQrKzpTLnJlYWR5KCEwKX0sUy5pc0FycmF5PUFycmF5LmlzQXJyYXksUy5wYXJzZUpTT049SlNPTi5wYXJzZSxTLm5vZGVOYW1lPUEsUy5pc0Z1bmN0aW9uPW0sUy5pc1dpbmRvdz14LFMuY2FtZWxDYXNlPVgsUy50eXBlPXcsUy5ub3c9RGF0ZS5ub3csUy5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dmFyIHQ9Uy50eXBlKGUpO3JldHVybigibnVtYmVyIj09PXR8fCJzdHJpbmciPT09dCkmJiFpc05hTihlLXBhcnNlRmxvYXQoZSkpfSxTLnRyaW09ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6KGUrIiIpLnJlcGxhY2UoWHQsIiIpfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gU30pO3ZhciBWdD1DLmpRdWVyeSxHdD1DLiQ7cmV0dXJuIFMubm9Db25mbGljdD1mdW5jdGlvbihlKXtyZXR1cm4gQy4kPT09UyYmKEMuJD1HdCksZSYmQy5qUXVlcnk9PT1TJiYoQy5qUXVlcnk9VnQpLFN9LCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKEMualF1ZXJ5PUMuJD1TKSxTfSk7Cjwvc2NyaXB0Pgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5sZWFmbGV0LXBhbmUsLmxlYWZsZXQtdGlsZSwubGVhZmxldC1tYXJrZXItaWNvbiwubGVhZmxldC1tYXJrZXItc2hhZG93LC5sZWFmbGV0LXRpbGUtY29udGFpbmVyLC5sZWFmbGV0LXBhbmUgPiBzdmcsLmxlYWZsZXQtcGFuZSA+IGNhbnZhcywubGVhZmxldC16b29tLWJveCwubGVhZmxldC1pbWFnZS1sYXllciwubGVhZmxldC1sYXllciB7cG9zaXRpb246IGFic29sdXRlO2xlZnQ6IDA7dG9wOiAwO30ubGVhZmxldC1jb250YWluZXIge292ZXJmbG93OiBoaWRkZW47fS5sZWFmbGV0LXRpbGUsLmxlYWZsZXQtbWFya2VyLWljb24sLmxlYWZsZXQtbWFya2VyLXNoYWRvdyB7LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTstbW96LXVzZXItc2VsZWN0OiBub25lO3VzZXItc2VsZWN0OiBub25lOy13ZWJraXQtdXNlci1kcmFnOiBub25lO30ubGVhZmxldC1zYWZhcmkgLmxlYWZsZXQtdGlsZSB7aW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O30ubGVhZmxldC1zYWZhcmkgLmxlYWZsZXQtdGlsZS1jb250YWluZXIge3dpZHRoOiAxNjAwcHg7aGVpZ2h0OiAxNjAwcHg7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7fS5sZWFmbGV0LW1hcmtlci1pY29uLC5sZWFmbGV0LW1hcmtlci1zaGFkb3cge2Rpc3BsYXk6IGJsb2NrO30ubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtb3ZlcmxheS1wYW5lIHN2ZywubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtbWFya2VyLXBhbmUgaW1nLC5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1zaGFkb3ctcGFuZSBpbWcsLmxlYWZsZXQtY29udGFpbmVyIC5sZWFmbGV0LXRpbGUtcGFuZSBpbWcsLmxlYWZsZXQtY29udGFpbmVyIGltZy5sZWFmbGV0LWltYWdlLWxheWVyIHttYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDttYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7fS5sZWFmbGV0LWNvbnRhaW5lci5sZWFmbGV0LXRvdWNoLXpvb20gey1tcy10b3VjaC1hY3Rpb246IHBhbi14IHBhbi15O3RvdWNoLWFjdGlvbjogcGFuLXggcGFuLXk7fS5sZWFmbGV0LWNvbnRhaW5lci5sZWFmbGV0LXRvdWNoLWRyYWcgey1tcy10b3VjaC1hY3Rpb246IHBpbmNoLXpvb207dG91Y2gtYWN0aW9uOiBub25lO3RvdWNoLWFjdGlvbjogcGluY2gtem9vbTt9LmxlYWZsZXQtY29udGFpbmVyLmxlYWZsZXQtdG91Y2gtZHJhZy5sZWFmbGV0LXRvdWNoLXpvb20gey1tcy10b3VjaC1hY3Rpb246IG5vbmU7dG91Y2gtYWN0aW9uOiBub25lO30ubGVhZmxldC1jb250YWluZXIgey13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7fS5sZWFmbGV0LWNvbnRhaW5lciBhIHstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoNTEsIDE4MSwgMjI5LCAwLjQpO30ubGVhZmxldC10aWxlIHtmaWx0ZXI6IGluaGVyaXQ7dmlzaWJpbGl0eTogaGlkZGVuO30ubGVhZmxldC10aWxlLWxvYWRlZCB7dmlzaWJpbGl0eTogaW5oZXJpdDt9LmxlYWZsZXQtem9vbS1ib3gge3dpZHRoOiAwO2hlaWdodDogMDstbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ym94LXNpemluZzogYm9yZGVyLWJveDt6LWluZGV4OiA4MDA7fS5sZWFmbGV0LW92ZXJsYXktcGFuZSBzdmcgey1tb3otdXNlci1zZWxlY3Q6IG5vbmU7fS5sZWFmbGV0LXBhbmUgeyB6LWluZGV4OiA0MDA7IH0ubGVhZmxldC10aWxlLXBhbmUgeyB6LWluZGV4OiAyMDA7IH0ubGVhZmxldC1vdmVybGF5LXBhbmUgeyB6LWluZGV4OiA0MDA7IH0ubGVhZmxldC1zaGFkb3ctcGFuZSB7IHotaW5kZXg6IDUwMDsgfS5sZWFmbGV0LW1hcmtlci1wYW5lIHsgei1pbmRleDogNjAwOyB9LmxlYWZsZXQtdG9vbHRpcC1wYW5lIHsgei1pbmRleDogNjUwOyB9LmxlYWZsZXQtcG9wdXAtcGFuZSB7IHotaW5kZXg6IDcwMDsgfS5sZWFmbGV0LW1hcC1wYW5lIGNhbnZhcyB7IHotaW5kZXg6IDEwMDsgfS5sZWFmbGV0LW1hcC1wYW5lIHN2ZyB7IHotaW5kZXg6IDIwMDsgfS5sZWFmbGV0LXZtbC1zaGFwZSB7d2lkdGg6IDFweDtoZWlnaHQ6IDFweDt9Lmx2bWwge2JlaGF2aW9yOiB1cmwoI2RlZmF1bHQjVk1MKTtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7cG9zaXRpb246IGFic29sdXRlO30ubGVhZmxldC1jb250cm9sIHtwb3NpdGlvbjogcmVsYXRpdmU7ei1pbmRleDogODAwO3BvaW50ZXItZXZlbnRzOiB2aXNpYmxlUGFpbnRlZDsgcG9pbnRlci1ldmVudHM6IGF1dG87fS5sZWFmbGV0LXRvcCwubGVhZmxldC1ib3R0b20ge3Bvc2l0aW9uOiBhYnNvbHV0ZTt6LWluZGV4OiAxMDAwO3BvaW50ZXItZXZlbnRzOiBub25lO30ubGVhZmxldC10b3Age3RvcDogMDt9LmxlYWZsZXQtcmlnaHQge3JpZ2h0OiAwO30ubGVhZmxldC1ib3R0b20ge2JvdHRvbTogMDt9LmxlYWZsZXQtbGVmdCB7bGVmdDogMDt9LmxlYWZsZXQtY29udHJvbCB7ZmxvYXQ6IGxlZnQ7Y2xlYXI6IGJvdGg7fS5sZWFmbGV0LXJpZ2h0IC5sZWFmbGV0LWNvbnRyb2wge2Zsb2F0OiByaWdodDt9LmxlYWZsZXQtdG9wIC5sZWFmbGV0LWNvbnRyb2wge21hcmdpbi10b3A6IDEwcHg7fS5sZWFmbGV0LWJvdHRvbSAubGVhZmxldC1jb250cm9sIHttYXJnaW4tYm90dG9tOiAxMHB4O30ubGVhZmxldC1sZWZ0IC5sZWFmbGV0LWNvbnRyb2wge21hcmdpbi1sZWZ0OiAxMHB4O30ubGVhZmxldC1yaWdodCAubGVhZmxldC1jb250cm9sIHttYXJnaW4tcmlnaHQ6IDEwcHg7fS5sZWFmbGV0LWZhZGUtYW5pbSAubGVhZmxldC10aWxlIHt3aWxsLWNoYW5nZTogb3BhY2l0eTt9LmxlYWZsZXQtZmFkZS1hbmltIC5sZWFmbGV0LXBvcHVwIHtvcGFjaXR5OiAwOy13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjstbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBsaW5lYXI7LW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjt0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgbGluZWFyO30ubGVhZmxldC1mYWRlLWFuaW0gLmxlYWZsZXQtbWFwLXBhbmUgLmxlYWZsZXQtcG9wdXAge29wYWNpdHk6IDE7fS5sZWFmbGV0LXpvb20tYW5pbWF0ZWQgey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCAwOy1tcy10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7dHJhbnNmb3JtLW9yaWdpbjogMCAwO30ubGVhZmxldC16b29tLWFuaW0gLmxlYWZsZXQtem9vbS1hbmltYXRlZCB7d2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTt9LmxlYWZsZXQtem9vbS1hbmltIC5sZWFmbGV0LXpvb20tYW5pbWF0ZWQgey13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAsMCwwLjI1LDEpOy1tb3otdHJhbnNpdGlvbjogLW1vei10cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAsMCwwLjI1LDEpOy1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSAwLjI1cyBjdWJpYy1iZXppZXIoMCwwLDAuMjUsMSk7dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGN1YmljLWJlemllcigwLDAsMC4yNSwxKTt9LmxlYWZsZXQtem9vbS1hbmltIC5sZWFmbGV0LXRpbGUsLmxlYWZsZXQtcGFuLWFuaW0gLmxlYWZsZXQtdGlsZSB7LXdlYmtpdC10cmFuc2l0aW9uOiBub25lOy1tb3otdHJhbnNpdGlvbjogbm9uZTstby10cmFuc2l0aW9uOiBub25lO3RyYW5zaXRpb246IG5vbmU7fS5sZWFmbGV0LXpvb20tYW5pbSAubGVhZmxldC16b29tLWhpZGUge3Zpc2liaWxpdHk6IGhpZGRlbjt9LmxlYWZsZXQtaW50ZXJhY3RpdmUge2N1cnNvcjogcG9pbnRlcjt9LmxlYWZsZXQtZ3JhYiB7Y3Vyc29yOiAtd2Via2l0LWdyYWI7Y3Vyc29yOiAtbW96LWdyYWI7fS5sZWFmbGV0LWNyb3NzaGFpciwubGVhZmxldC1jcm9zc2hhaXIgLmxlYWZsZXQtaW50ZXJhY3RpdmUge2N1cnNvcjogY3Jvc3NoYWlyO30ubGVhZmxldC1wb3B1cC1wYW5lLC5sZWFmbGV0LWNvbnRyb2wge2N1cnNvcjogYXV0bzt9LmxlYWZsZXQtZHJhZ2dpbmcgLmxlYWZsZXQtZ3JhYiwubGVhZmxldC1kcmFnZ2luZyAubGVhZmxldC1ncmFiIC5sZWFmbGV0LWludGVyYWN0aXZlLC5sZWFmbGV0LWRyYWdnaW5nIC5sZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUge2N1cnNvcjogbW92ZTtjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7Y3Vyc29yOiAtbW96LWdyYWJiaW5nO30ubGVhZmxldC1tYXJrZXItaWNvbiwubGVhZmxldC1tYXJrZXItc2hhZG93LC5sZWFmbGV0LWltYWdlLWxheWVyLC5sZWFmbGV0LXBhbmUgPiBzdmcgcGF0aCwubGVhZmxldC10aWxlLWNvbnRhaW5lciB7cG9pbnRlci1ldmVudHM6IG5vbmU7fS5sZWFmbGV0LW1hcmtlci1pY29uLmxlYWZsZXQtaW50ZXJhY3RpdmUsLmxlYWZsZXQtaW1hZ2UtbGF5ZXIubGVhZmxldC1pbnRlcmFjdGl2ZSwubGVhZmxldC1wYW5lID4gc3ZnIHBhdGgubGVhZmxldC1pbnRlcmFjdGl2ZSB7cG9pbnRlci1ldmVudHM6IHZpc2libGVQYWludGVkOyBwb2ludGVyLWV2ZW50czogYXV0bzt9LmxlYWZsZXQtY29udGFpbmVyIHtiYWNrZ3JvdW5kOiAjZGRkO291dGxpbmU6IDA7fS5sZWFmbGV0LWNvbnRhaW5lciBhIHtjb2xvcjogIzAwNzhBODt9LmxlYWZsZXQtY29udGFpbmVyIGEubGVhZmxldC1hY3RpdmUge291dGxpbmU6IDJweCBzb2xpZCBvcmFuZ2U7fS5sZWFmbGV0LXpvb20tYm94IHtib3JkZXI6IDJweCBkb3R0ZWQgIzM4ZjtiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7fS5sZWFmbGV0LWNvbnRhaW5lciB7Zm9udDogMTJweC8xLjUgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjt9LmxlYWZsZXQtYmFyIHtib3gtc2hhZG93OiAwIDFweCA1cHggcmdiYSgwLDAsMCwwLjY1KTtib3JkZXItcmFkaXVzOiA0cHg7fS5sZWFmbGV0LWJhciBhLC5sZWFmbGV0LWJhciBhOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO2JvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO3dpZHRoOiAyNnB4O2hlaWdodDogMjZweDtsaW5lLWhlaWdodDogMjZweDtkaXNwbGF5OiBibG9jazt0ZXh0LWFsaWduOiBjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOiBub25lO2NvbG9yOiBibGFjazt9LmxlYWZsZXQtYmFyIGEsLmxlYWZsZXQtY29udHJvbC1sYXllcnMtdG9nZ2xlIHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlO2JhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7ZGlzcGxheTogYmxvY2s7fS5sZWFmbGV0LWJhciBhOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0O30ubGVhZmxldC1iYXIgYTpmaXJzdC1jaGlsZCB7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7fS5sZWFmbGV0LWJhciBhOmxhc3QtY2hpbGQge2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O2JvcmRlci1ib3R0b206IG5vbmU7fS5sZWFmbGV0LWJhciBhLmxlYWZsZXQtZGlzYWJsZWQge2N1cnNvcjogZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0O2NvbG9yOiAjYmJiO30ubGVhZmxldC10b3VjaCAubGVhZmxldC1iYXIgYSB7d2lkdGg6IDMwcHg7aGVpZ2h0OiAzMHB4O2xpbmUtaGVpZ2h0OiAzMHB4O30ubGVhZmxldC10b3VjaCAubGVhZmxldC1iYXIgYTpmaXJzdC1jaGlsZCB7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMnB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAycHg7fS5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWJhciBhOmxhc3QtY2hpbGQge2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDJweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMnB4O30ubGVhZmxldC1jb250cm9sLXpvb20taW4sLmxlYWZsZXQtY29udHJvbC16b29tLW91dCB7Zm9udDogYm9sZCAxOHB4ICdMdWNpZGEgQ29uc29sZScsIE1vbmFjbywgbW9ub3NwYWNlO3RleHQtaW5kZW50OiAxcHg7fS5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWNvbnRyb2wtem9vbS1pbiwgLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtY29udHJvbC16b29tLW91dCB7Zm9udC1zaXplOiAyMnB4O30ubGVhZmxldC1jb250cm9sLWxheWVycyB7Ym94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoMCwwLDAsMC40KTtiYWNrZ3JvdW5kOiAjZmZmO2JvcmRlci1yYWRpdXM6IDVweDt9LmxlYWZsZXQtY29udHJvbC1sYXllcnMtdG9nZ2xlIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCb0FBQUFhQ0FRQUFBQURRNFJGQUFBQ2YwbEVRVlI0QVkxVU0zZ2tBUlRlUGR2ZG9UeFhLYytxVGwzYVU1VTZiMktia3ozR3RxM1p3NnppTEdOUHpyWXg3OTQ2VHI2L2VlL1hlQ1E0RDN5a1B0TDV0SG5vNG4wZC9oMyt4ZnVXSEdMWDgxY243cjBpVE56anI3THJseENxUHRrYlRRRUhlcU9yVHk0WXl0M1ZDaS9JT0IwdjdyVkM3cTQ1UTNHcjVLNmp0KzNHbDVuQ29ERDRNdE8rajk2V3U4YXRtaEdxY05HSE9idWY4T00veDNBTXgzOCs0WjJzUHF6Q3hSRksyYUYyZTVKb2w1NlhUTHlnZ0FNVEw1NlhPTW9TMVc0cE95alVjR0dRZFp4VTZxUmg3QjlacCtQZnBPRmxxdDB6eURaY2tQaTF0dG1JcDAzalg4Z3lKOGEvUEcyeXV0cFMvVm9sN3BlWkliWmNLQkFFRWhlRUlBZ0ZiRGt6NUg2WnJrbTJoVldHaVhLaUY0WWN3MFJXS2R0QzE2UTdxZTNYNGlPTXhydW9uemVnSnpXYVhGclU5dXRPU3NMVW1yYzBZamVXWWpDVzRQRE1BREVscEpTU1EwdlF2QTFUbTYvSmxLbnFGczFFR3laaUZDcW5SWlRFSkpKaUtSWXpWWXpKY2syUm02UDRpSCtjbVNZMFl6aW1ZYThsMEV0VE9ERldoY01JTVZxZHNJMnVpVHZLbVRpc0lESEozb2Q1R0lMVmhCQ2FyQ2ZWUm1vNHVUamtocmh6a2lCVjdTc2FxUytUenJ6TTFxcEdHVUZ0MjhwSXlTUUhSNmg3RjZLU3dHV205N2F5K1orWnFNY0VqRVdlYkU3d3hDU1F3cGtoSnFvWkE1aXZDZFpEakplcHVKOUlRakdHVW11WEpkQkZVeWd4VnFWc3hGc0xNYkRlOFpiRFlWQ0dLeHMrVzA4MG1heDFoRkNhckNmVitDMUtBVHdjbnZFOWdSUnVNUDJwcmRiV0dvd20xS0IxeSt6d01NRU5rTTc1NWNKMnlQRHRxaFRJNkVEMU0vODJ5SUR0Qy80ajRCaWpqZU9iZmxwTzlJOU13WFRDc1NYOGpXQUZlSHIwNVdvTFRKNUc4SVFWUy83dndSNm9oaXJZTTdmNkh6WXBvZ2ZTM1IyT0FBQUFBRWxGVGtTdVFtQ0MpO3dpZHRoOiAzNnB4O2hlaWdodDogMzZweDt9LmxlYWZsZXQtcmV0aW5hIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXRvZ2dsZSB7YmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRFFBQUFBMENBUUFBQUJ2Y2ROZ0FBQUVza2xFUVZSNEFXTDRUeWRJaHBaSzFrcFdPbGcwdzNaWFA2RDJzb0J0RzQyamVJNlptUVRIekF4aVRiU0pzWUxqTzlIaFArV09tY3VoY2lWbm1IVlFjSm5wN0RGdlNjb3dab3JhZC8rVi9mVnpNZE1UMmc5Q3Y5Z3VYR3YvN3BZT3JYaDJVK1JSUjNkU2Q5SlJ4NmJJRmMvZWtxSEkyOUpDNnBKNVpFaDF5V2toa2JjRmVTanhneDNMMm0xY2IxQzdiY2V5eEErQ05qVC9JZmZmKy9rRGsydS93LzMzL0llQ01PU2FXWjRnbG9zcVQzRE5uTlpRN0NzNTgvM0NlNUhMNzhpWkgvdktWSWFZbHF6ZmRMdThWaTdkbnZVYkV6YTVJZHQzNnRxdVpGbGRsNk41Wi9QT0xvZjBYTEs2MW1aQ21KU1dqVkY5dEVqVWx1dTc0SVVYdmd0dHVWSUhFN1l4U2thWWhKWmFtN3lpTTlQdjgySllmbDlucHR4WmF4TUpFNFlTUHR5K3ZGMCtZMnVwOWQzd3dpamZqWmJhYnFtLzNiWjllY0tIc2lHbVJmbG5uMU1XNHBqSGY5b0x1ZnluMnozeTFENm44ZzhUWmh4eXppcExOUG5BVXBzT2l1V2ltZzUycHNyVFpZbk9XWU5EVE11V0JXYTB0SmI0cmdxMVV2bXV0cGFZRWJabHdVM0NMSm0vYXlZakhXNS9oN3hXTG45SGgxdmVwRGt5ZjdkRTdNdFQ1TFI0ZTd5WXBIcmtoT1VwRWZzc0JMcTJwUGhBcW9TV0tVa2s3RURxa21LNlJyQ0V6cURqaE5EV05FK1hTTXZrSlJEV2xaVG1DVzBsMFBIUUdSWlk1dDFMODNrVDBZM2wyU0l0azVKQVdIbDJkQ09CbStmUHUzZm81LzN2NjFSTUNPOUp4MkVFWVloYjBybU5RTVgvdm03Z3FPRUpMY1hUR3czQ0F1Uk5leWFQV3dqUjhQUnFLUTFQREEvZHB2K29uOVNob3g1MldGbngwS1k4b25IYXlySnptODdpNWg5eEd3L3Rma2V2MGpHc1FpenFlelVLamsxMmhCTUtKNGtiQ3FHUFZOWHVkeXlyU2hvdkd3NUNneHNSSUN4RjZhUm1TamxCbkhSemc3R3g4ZktxRXViSTJyYWhRWWRSMVlnRElSUU83SnZReUQ1MmhvSVF4MG14YTBPRHRXMklvem4xbGUyaUlSZHp3V2V3ZWR5Wnpld2lkdWVPR3Fsc24xTXZjblFwdVZ3TEdHMy9JUjFoSUt4Q2plbElEWjhsZHFXejI1aldBc25sZEVuSzBaeHJvMTlUR1ZiMmZmSVpFc0lPODlFSUVEdktNUHJ6bUJPUWNLUStycm95ZTZOZ1JSeHFSNFU4RUFrejBDTDZ1U0dPbTZLUUNkV2p2alJpU1AxQlBhbENSUzVpUVlpRUl2eHVCTUpFV2d6U29IQURjVk11TjdJdXFxVGV5VVBxMjJxRmltRnR4RHlCQkpFd055dDZUTTg4YmxGSGFvLzZ0V1dodXVPTTRTQUs0RUk0UW1GSEErU0V5V2xwNEVRb0oxM2NZR3pNdTd5c3pFSUJPbTJyVm1IVU5xd0FJUWFiSVNOTVJzdG1kaE5XY0ZMc1NtKzB0akpIMU1kUnhPNU54MFdETWhDdGdENk9LZ1plbGpKcUpLYzlwbzhqdXNrUjlYTjBZMWxaM21XakxSOUpDTzFqUkRNZDBmcFlDMlZudmpCU0VGZzd3QkVOYzBSOUhGbGIweHZGMStUQkVwRjY4ZCtESFI2SU9XVnYyQkVDdHhvNDZoT0ZVQmQvQVBVNTdXSW9Fd0poSWkyQ2RweVpYMG05M0JaaWNrdE1qMUFTOWRDbHRlVUZBVU5VSUV5Z1JaQ3RpazV6U3hJOU11YlRCSDFHT2lIc2lMSjNPQ29TWmtJTGE5UHhpTjBFYnZoc0FvOHRkQWY5U2VlcGQzNmxHV0htdE5BTlR2NUpkMHo0UVl5ZW8vVUVKcXhLUnBnNUxaeDZidExQc09hRW1kTXl4WWRsYzhMTWFKbmlrRGxoY2xxbVBpUW5URXBMVUlaRXdrUmFnallrRWliUUVyd2hrVEFLQ0xRRWJVZ2t6SlFXYy8wUHN0SEhjZkVkUStVQUFBQUFTVVZPUks1Q1lJST0pO2JhY2tncm91bmQtc2l6ZTogMjZweCAyNnB4O30ubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLWxheWVycy10b2dnbGUge3dpZHRoOiA0NHB4O2hlaWdodDogNDRweDt9LmxlYWZsZXQtY29udHJvbC1sYXllcnMgLmxlYWZsZXQtY29udHJvbC1sYXllcnMtbGlzdCwubGVhZmxldC1jb250cm9sLWxheWVycy1leHBhbmRlZCAubGVhZmxldC1jb250cm9sLWxheWVycy10b2dnbGUge2Rpc3BsYXk6IG5vbmU7fS5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWxpc3Qge2Rpc3BsYXk6IGJsb2NrO3Bvc2l0aW9uOiByZWxhdGl2ZTt9LmxlYWZsZXQtY29udHJvbC1sYXllcnMtZXhwYW5kZWQge3BhZGRpbmc6IDZweCAxMHB4IDZweCA2cHg7Y29sb3I6ICMzMzM7YmFja2dyb3VuZDogI2ZmZjt9LmxlYWZsZXQtY29udHJvbC1sYXllcnMtc2Nyb2xsYmFyIHtvdmVyZmxvdy15OiBzY3JvbGw7b3ZlcmZsb3cteDogaGlkZGVuO3BhZGRpbmctcmlnaHQ6IDVweDt9LmxlYWZsZXQtY29udHJvbC1sYXllcnMtc2VsZWN0b3Ige21hcmdpbi10b3A6IDJweDtwb3NpdGlvbjogcmVsYXRpdmU7dG9wOiAxcHg7fS5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzIGxhYmVsIHtkaXNwbGF5OiBibG9jazt9LmxlYWZsZXQtY29udHJvbC1sYXllcnMtc2VwYXJhdG9yIHtoZWlnaHQ6IDA7Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7bWFyZ2luOiA1cHggLTEwcHggNXB4IC02cHg7fS5sZWFmbGV0LWRlZmF1bHQtaWNvbi1wYXRoIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCa0FBQUFwQ0FZQUFBREFrNExPQUFBRmdVbEVRVlI0QWExWEE1QmpXUlROMm9XMTdkM1lhWnRyMjk2MkhVemJETnBqc3pXMjRtUnQyOHA0N3Y3enEvYlhadHJwL2xXblhyMzM3ajNuUENlODVOY3lwZ1NGZHVnQ3BXNVlvREFNUmFJTXFSaTZhS3E1RTNZcURRTzNxQXdqVldyRDhOY3EvUkJweWtkOG9aVWIva2FKdXRvdzhyMWFQOUlJMFdtTEtMSXNKeXYxdy9rcXc5Q2gyTVlkQisrMTJPbnhlZS9RTXd2ZjQvRGsvTGZwL2k0bnhUWHRPb1E0cFc1QWo3d3BpY2kxQTllcmRBTjJPSDY0eDhPU1A5ajNGdDNiN2FXa1RnL0ZtOTFzaVRyYTBmOW9uNXNRcjlJTmVqSDZDVVVVcGF2akZOcTFCK09hZGh4bW5mYThSZkVtTjhWTkFzUWhQcUY1NXhIa016ejNqU21DaFdVNmY3L1haS05IKzkraEJMT0hZb3p1S1FQeHlNUFVLa3JYL0swdVduZkZhSkdTMVFQUnRac09QdHIzTnNXMHV5aDZOTkNPa1UzWXorYlhiVDNJOEczeEU1RVhMWHRDWGJicXdDTzl6UFFZUFJUWjV2SURYRDdVK3c3ckZERW9VVWY3aWJISVI0eTZiTFZQWHJ6OEpWWkVxbDEzdHJ4d3VlL3VEaXZkM2ZrV1JiUzYvSUEyYklENHVrMFVwRjFOOHFMbGJCbFhzNEVlN0hMVGZWMWo1NEFQdk9EblNmT1dCcXRLVnZqZ0xLekY1WWRFazVld1JrR2xLMGkzM0VvZmZmYzdIVDU2akQ3LzZVK3FIM0N4N1NCTE5udEg1WUlQdk9EbnlmSVhaWVJWRFBxZ0h0THM1QUJIRDNZekx1ZXNwYjd0NzlGWTM0RGpNd3JWcmNUdXdsVDU1WU1Qdk9CblJySjRWWFRkTm5ZdWc1dWNITEJqRXB0MzA3MDFBM1RzK0hFYTczdTZkVDNGTld3ZmxZODZlTUhQaytZdStpNnB6VXBSclc3U05EZzVKSFI0S2FwbU01V3YyRThUZmNiMUhvcXFITUhVK3VXREQ3emc1NG16NS8yQlNuaXppOVQxRGc0UVFYTFRvR05Da2I2dGIxTlUrUUFsR3IxKytlQURyemhuL3U4UTJZWmhRVmxaNStDQU90cWZiaG1hVUNTMWV6TkZWbTJpbURiUG1Qbmc1d216K2d3aCtvSERjZTBlVXRRNk9HREl5UjB1VWhVc29PM3ZmRG1tZ09lekgwbVpONTl4N01CaSsrV0RMMWcvZUVpVTNhdmxpZE82NzFia0xmd2J3NVhWMlA4UHpvMHlkeTR0Mi8wZXUzM3hZU09NT0Q4aFRmNENyQnRHTVNvWGZQTGNoWCtKMHJ1U2VQdzNMWmVLMGp1UEpiWXpyaGtIMGlvN0IzazE2NGhpR3Zhd2hPS01Ma3JRTHlWcFpnOHJIRlc3RTJ1SE9MODg4SUJQbE5aMUZQenN0U0pNNjk0ZldyNlJ3cHZjSks2MCswSENJTFRCelpMRk5kdEF6SmFvaHplNjBUOHFCenloNVp1T2c1ZTd1d1FwcG9mRW1mMisrRFl2bXlTcUdCdUthaWNGMWJsUWpodUhkdkNJTXZwOHdoVFRmWnpJN1JsZHB3dFN6TCtGMSt3a2RaMlRCT1cyZ0lGODhQQlR6RC9ncGVSRUFNRWJ4bkpjYUpITkhycHpqaTBnUUNTNmhka0VlWXQ5REYvMnFQY0VDOFJNMjhId21yM3NkTnlodDAwYnlBdXQyazNndWZXTnRndE9FT0ZHVXdjWFdORGJkTmJwZ0JHeEV2S2tPUXN4aXZKeDMzaW93MFZ3NVM2U1ZUcnBWcTExeXNBMlJwN2dUZlBma3RjNnpodFhCQkMrYWRSTHNoZjZzRzJSZkhQWjVFQWM0c1ZaODN5Q04wMEZrLzRrZ2d1NDBaVHZJRW01ZzI0cXRVNEtqQnJ4L0JUVEg4aWZWQVNBRzdnS3JuV3hKRGNVN3g4WDZFY2N6aG0zbzZZaWN2c0xYV2ZoM0NoMVcwazh4MG5YRiswZkZ4Z3Q0cGh6OFF2eXBpd0NDRktNcVhDbnFYRXhqcTEwYmVIK1VVQTcrbkc2bWRHL1B1MGYzTGdGY0dybDJzMGtOTmpwbW9KOW80QjI5Q01POGRNVDRRNW94OHVpdEY2ZnFzckpPcjhxbndOYlJ6djZoU25HNXdQKzY0QzdoOWxwMzBoS050S2RXanRka2J1UEExOW5KN1R6M3pSL2liZ0FSYmhiNEFsaGF2Y0JlYm1USGNGbDJmdllFblcwb3g5eE14S0JTOGJ0SitLaUVicTl6QTRSdGhRWERoUGEwVDlURWU2OWdXdXB3YzZ1QlVwaHF1WGdmKy9Gcklqd2VIUVM0L3BkdU1lNUVSVU1IVWQ5eHY4WlI5OEN4a1M0RjJuM0VVclVaMTBFWU53N0JXbTl4MUdpUHNzaTNHZ2lHUkRLV1JZWmZYbE9OK2RmTmJNK0dnSXdZZHdBQUFBQVNVVk9SSzVDWUlJPSk7fS5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1jb250cm9sLWF0dHJpYnV0aW9uIHtiYWNrZ3JvdW5kOiAjZmZmO2JhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTttYXJnaW46IDA7fS5sZWFmbGV0LWNvbnRyb2wtYXR0cmlidXRpb24sLmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lIHtwYWRkaW5nOiAwIDVweDtjb2xvcjogIzMzMzt9LmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiBhIHt0ZXh0LWRlY29yYXRpb246IG5vbmU7fS5sZWFmbGV0LWNvbnRyb2wtYXR0cmlidXRpb24gYTpob3ZlciB7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fS5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1jb250cm9sLWF0dHJpYnV0aW9uLC5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1jb250cm9sLXNjYWxlIHtmb250LXNpemU6IDExcHg7fS5sZWFmbGV0LWxlZnQgLmxlYWZsZXQtY29udHJvbC1zY2FsZSB7bWFyZ2luLWxlZnQ6IDVweDt9LmxlYWZsZXQtYm90dG9tIC5sZWFmbGV0LWNvbnRyb2wtc2NhbGUge21hcmdpbi1ib3R0b206IDVweDt9LmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lIHtib3JkZXI6IDJweCBzb2xpZCAjNzc3O2JvcmRlci10b3A6IG5vbmU7bGluZS1oZWlnaHQ6IDEuMTtwYWRkaW5nOiAycHggNXB4IDFweDtmb250LXNpemU6IDExcHg7d2hpdGUtc3BhY2U6IG5vd3JhcDtvdmVyZmxvdzogaGlkZGVuOy1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtib3gtc2l6aW5nOiBib3JkZXItYm94O2JhY2tncm91bmQ6ICNmZmY7YmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO30ubGVhZmxldC1jb250cm9sLXNjYWxlLWxpbmU6bm90KDpmaXJzdC1jaGlsZCkge2JvcmRlci10b3A6IDJweCBzb2xpZCAjNzc3O2JvcmRlci1ib3R0b206IG5vbmU7bWFyZ2luLXRvcDogLTJweDt9LmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkge2JvcmRlci1ib3R0b206IDJweCBzb2xpZCAjNzc3O30ubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLWF0dHJpYnV0aW9uLC5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLC5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWJhciB7Ym94LXNoYWRvdzogbm9uZTt9LmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtY29udHJvbC1sYXllcnMsLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIHtib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsMCwwLDAuMik7YmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDt9LmxlYWZsZXQtcG9wdXAge3Bvc2l0aW9uOiBhYnNvbHV0ZTt0ZXh0LWFsaWduOiBjZW50ZXI7bWFyZ2luLWJvdHRvbTogMjBweDt9LmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyIHtwYWRkaW5nOiAxcHg7dGV4dC1hbGlnbjogbGVmdDtib3JkZXItcmFkaXVzOiAxMnB4O30ubGVhZmxldC1wb3B1cC1jb250ZW50IHttYXJnaW46IDEzcHggMTlweDtsaW5lLWhlaWdodDogMS40O30ubGVhZmxldC1wb3B1cC1jb250ZW50IHAge21hcmdpbjogMThweCAwO30ubGVhZmxldC1wb3B1cC10aXAtY29udGFpbmVyIHt3aWR0aDogNDBweDtoZWlnaHQ6IDIwcHg7cG9zaXRpb246IGFic29sdXRlO2xlZnQ6IDUwJTttYXJnaW4tbGVmdDogLTIwcHg7b3ZlcmZsb3c6IGhpZGRlbjtwb2ludGVyLWV2ZW50czogbm9uZTt9LmxlYWZsZXQtcG9wdXAtdGlwIHt3aWR0aDogMTdweDtoZWlnaHQ6IDE3cHg7cGFkZGluZzogMXB4O21hcmdpbjogLTEwcHggYXV0byAwOy13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOy1tb3otdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOy1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7LW8tdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTt9LmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyLC5sZWFmbGV0LXBvcHVwLXRpcCB7YmFja2dyb3VuZDogd2hpdGU7Y29sb3I6ICMzMzM7Ym94LXNoYWRvdzogMCAzcHggMTRweCByZ2JhKDAsMCwwLDAuNCk7fS5sZWFmbGV0LWNvbnRhaW5lciBhLmxlYWZsZXQtcG9wdXAtY2xvc2UtYnV0dG9uIHtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwO3JpZ2h0OiAwO3BhZGRpbmc6IDRweCA0cHggMCAwO2JvcmRlcjogbm9uZTt0ZXh0LWFsaWduOiBjZW50ZXI7d2lkdGg6IDE4cHg7aGVpZ2h0OiAxNHB4O2ZvbnQ6IDE2cHgvMTRweCBUYWhvbWEsIFZlcmRhbmEsIHNhbnMtc2VyaWY7Y29sb3I6ICNjM2MzYzM7dGV4dC1kZWNvcmF0aW9uOiBub25lO2ZvbnQtd2VpZ2h0OiBib2xkO2JhY2tncm91bmQ6IHRyYW5zcGFyZW50O30ubGVhZmxldC1jb250YWluZXIgYS5sZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbjpob3ZlciB7Y29sb3I6ICM5OTk7fS5sZWFmbGV0LXBvcHVwLXNjcm9sbGVkIHtvdmVyZmxvdzogYXV0bztib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDt9LmxlYWZsZXQtb2xkaWUgLmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyIHt6b29tOiAxO30ubGVhZmxldC1vbGRpZSAubGVhZmxldC1wb3B1cC10aXAge3dpZHRoOiAyNHB4O21hcmdpbjogMCBhdXRvOy1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuTWF0cml4KE0xMT0wLjcwNzEwNjc4LCBNMTI9MC43MDcxMDY3OCwgTTIxPS0wLjcwNzEwNjc4LCBNMjI9MC43MDcxMDY3OCkiO2ZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0Lk1hdHJpeChNMTE9MC43MDcxMDY3OCwgTTEyPTAuNzA3MTA2NzgsIE0yMT0tMC43MDcxMDY3OCwgTTIyPTAuNzA3MTA2NzgpO30ubGVhZmxldC1vbGRpZSAubGVhZmxldC1wb3B1cC10aXAtY29udGFpbmVyIHttYXJnaW4tdG9wOiAtMXB4O30ubGVhZmxldC1vbGRpZSAubGVhZmxldC1jb250cm9sLXpvb20sLmxlYWZsZXQtb2xkaWUgLmxlYWZsZXQtY29udHJvbC1sYXllcnMsLmxlYWZsZXQtb2xkaWUgLmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyLC5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LXBvcHVwLXRpcCB7Ym9yZGVyOiAxcHggc29saWQgIzk5OTt9LmxlYWZsZXQtZGl2LWljb24ge2JhY2tncm91bmQ6ICNmZmY7Ym9yZGVyOiAxcHggc29saWQgIzY2Njt9LmxlYWZsZXQtdG9vbHRpcCB7cG9zaXRpb246IGFic29sdXRlO3BhZGRpbmc6IDZweDtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO2JvcmRlcjogMXB4IHNvbGlkICNmZmY7Ym9yZGVyLXJhZGl1czogM3B4O2NvbG9yOiAjMjIyO3doaXRlLXNwYWNlOiBub3dyYXA7LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTstbW96LXVzZXItc2VsZWN0OiBub25lOy1tcy11c2VyLXNlbGVjdDogbm9uZTt1c2VyLXNlbGVjdDogbm9uZTtwb2ludGVyLWV2ZW50czogbm9uZTtib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLDAsMCwwLjQpO30ubGVhZmxldC10b29sdGlwLmxlYWZsZXQtY2xpY2thYmxlIHtjdXJzb3I6IHBvaW50ZXI7cG9pbnRlci1ldmVudHM6IGF1dG87fS5sZWFmbGV0LXRvb2x0aXAtdG9wOmJlZm9yZSwubGVhZmxldC10b29sdGlwLWJvdHRvbTpiZWZvcmUsLmxlYWZsZXQtdG9vbHRpcC1sZWZ0OmJlZm9yZSwubGVhZmxldC10b29sdGlwLXJpZ2h0OmJlZm9yZSB7cG9zaXRpb246IGFic29sdXRlO3BvaW50ZXItZXZlbnRzOiBub25lO2JvcmRlcjogNnB4IHNvbGlkIHRyYW5zcGFyZW50O2JhY2tncm91bmQ6IHRyYW5zcGFyZW50O2NvbnRlbnQ6ICIiO30ubGVhZmxldC10b29sdGlwLWJvdHRvbSB7bWFyZ2luLXRvcDogNnB4O30ubGVhZmxldC10b29sdGlwLXRvcCB7bWFyZ2luLXRvcDogLTZweDt9LmxlYWZsZXQtdG9vbHRpcC1ib3R0b206YmVmb3JlLC5sZWFmbGV0LXRvb2x0aXAtdG9wOmJlZm9yZSB7bGVmdDogNTAlO21hcmdpbi1sZWZ0OiAtNnB4O30ubGVhZmxldC10b29sdGlwLXRvcDpiZWZvcmUge2JvdHRvbTogMDttYXJnaW4tYm90dG9tOiAtMTJweDtib3JkZXItdG9wLWNvbG9yOiAjZmZmO30ubGVhZmxldC10b29sdGlwLWJvdHRvbTpiZWZvcmUge3RvcDogMDttYXJnaW4tdG9wOiAtMTJweDttYXJnaW4tbGVmdDogLTZweDtib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmO30ubGVhZmxldC10b29sdGlwLWxlZnQge21hcmdpbi1sZWZ0OiAtNnB4O30ubGVhZmxldC10b29sdGlwLXJpZ2h0IHttYXJnaW4tbGVmdDogNnB4O30ubGVhZmxldC10b29sdGlwLWxlZnQ6YmVmb3JlLC5sZWFmbGV0LXRvb2x0aXAtcmlnaHQ6YmVmb3JlIHt0b3A6IDUwJTttYXJnaW4tdG9wOiAtNnB4O30ubGVhZmxldC10b29sdGlwLWxlZnQ6YmVmb3JlIHtyaWdodDogMDttYXJnaW4tcmlnaHQ6IC0xMnB4O2JvcmRlci1sZWZ0LWNvbG9yOiAjZmZmO30ubGVhZmxldC10b29sdGlwLXJpZ2h0OmJlZm9yZSB7bGVmdDogMDttYXJnaW4tbGVmdDogLTEycHg7Ym9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmO308L3N0eWxlPgo8c2NyaXB0Pi8qIEBwcmVzZXJ2ZQogKiBMZWFmbGV0IDEuMy4xK0RldGFjaGVkOiBiYTZmOTdmZmY4NjQ3ZTcyNGU0ZGZlNjZkMmVkN2RhMTFmOTA4OTg5LmJhNmY5N2YsIGEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcy4gaHR0cHM6Ly9sZWFmbGV0anMuY29tCiAqIChjKSAyMDEwLTIwMTcgVmxhZGltaXIgQWdhZm9ua2luLCAoYykgMjAxMC0yMDExIENsb3VkTWFkZQogKi8KIWZ1bmN0aW9uKHQsaSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9pKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLGkpOmkodC5MPXt9KX0odGhpcyxmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0KXt2YXIgaSxlLG4sbztmb3IoZT0xLG49YXJndW1lbnRzLmxlbmd0aDtlPG47ZSsrKXtvPWFyZ3VtZW50c1tlXTtmb3IoaSBpbiBvKXRbaV09b1tpXX1yZXR1cm4gdH1mdW5jdGlvbiBlKHQsaSl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlO2lmKHQuYmluZClyZXR1cm4gdC5iaW5kLmFwcGx5KHQsZS5jYWxsKGFyZ3VtZW50cywxKSk7dmFyIG49ZS5jYWxsKGFyZ3VtZW50cywyKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShpLG4ubGVuZ3RoP24uY29uY2F0KGUuY2FsbChhcmd1bWVudHMpKTphcmd1bWVudHMpfX1mdW5jdGlvbiBuKHQpe3JldHVybiB0Ll9sZWFmbGV0X2lkPXQuX2xlYWZsZXRfaWR8fCsrdGksdC5fbGVhZmxldF9pZH1mdW5jdGlvbiBvKHQsaSxlKXt2YXIgbixvLHMscjtyZXR1cm4gcj1mdW5jdGlvbigpe249ITEsbyYmKHMuYXBwbHkoZSxvKSxvPSExKX0scz1mdW5jdGlvbigpe24/bz1hcmd1bWVudHM6KHQuYXBwbHkoZSxhcmd1bWVudHMpLHNldFRpbWVvdXQocixpKSxuPSEwKX19ZnVuY3Rpb24gcyh0LGksZSl7dmFyIG49aVsxXSxvPWlbMF0scz1uLW87cmV0dXJuIHQ9PT1uJiZlP3Q6KCh0LW8pJXMrcyklcytvfWZ1bmN0aW9uIHIoKXtyZXR1cm4hMX1mdW5jdGlvbiBhKHQsaSl7dmFyIGU9TWF0aC5wb3coMTAsdm9pZCAwPT09aT82OmkpO3JldHVybiBNYXRoLnJvdW5kKHQqZSkvZX1mdW5jdGlvbiBoKHQpe3JldHVybiB0LnRyaW0/dC50cmltKCk6dC5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gaCh0KS5zcGxpdCgvXHMrLyl9ZnVuY3Rpb24gbCh0LGkpe3QuaGFzT3duUHJvcGVydHkoIm9wdGlvbnMiKXx8KHQub3B0aW9ucz10Lm9wdGlvbnM/UXQodC5vcHRpb25zKTp7fSk7Zm9yKHZhciBlIGluIGkpdC5vcHRpb25zW2VdPWlbZV07cmV0dXJuIHQub3B0aW9uc31mdW5jdGlvbiBjKHQsaSxlKXt2YXIgbj1bXTtmb3IodmFyIG8gaW4gdCluLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGU/by50b1VwcGVyQ2FzZSgpOm8pKyI9IitlbmNvZGVVUklDb21wb25lbnQodFtvXSkpO3JldHVybihpJiYtMSE9PWkuaW5kZXhPZigiPyIpPyImIjoiPyIpK24uam9pbigiJiIpfWZ1bmN0aW9uIF8odCxpKXtyZXR1cm4gdC5yZXBsYWNlKGlpLGZ1bmN0aW9uKHQsZSl7dmFyIG49aVtlXTtpZih2b2lkIDA9PT1uKXRocm93IG5ldyBFcnJvcigiTm8gdmFsdWUgcHJvdmlkZWQgZm9yIHZhcmlhYmxlICIrdCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJihuPW4oaSkpLG59KX1mdW5jdGlvbiBkKHQsaSl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXT09PWkpcmV0dXJuIGU7cmV0dXJuLTF9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gd2luZG93WyJ3ZWJraXQiK3RdfHx3aW5kb3dbIm1veiIrdF18fHdpbmRvd1sibXMiK3RdfWZ1bmN0aW9uIG0odCl7dmFyIGk9K25ldyBEYXRlLGU9TWF0aC5tYXgoMCwxNi0oaS1vaSkpO3JldHVybiBvaT1pK2Usd2luZG93LnNldFRpbWVvdXQodCxlKX1mdW5jdGlvbiBmKHQsaSxuKXtpZighbnx8c2khPT1tKXJldHVybiBzaS5jYWxsKHdpbmRvdyxlKHQsaSkpO3QuY2FsbChpKX1mdW5jdGlvbiBnKHQpe3QmJnJpLmNhbGwod2luZG93LHQpfWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24geSh0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEwmJkwmJkwuTWl4aW4pe3Q9ZWkodCk/dDpbdF07Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXT09PUwuTWl4aW4uRXZlbnRzJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0ZWQgaW5jbHVkZSBvZiBMLk1peGluLkV2ZW50czogdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLCBwbGVhc2UgaW5oZXJpdCBmcm9tIEwuRXZlbnRlZCBpbnN0ZWFkLiIsKG5ldyBFcnJvcikuc3RhY2spfX1mdW5jdGlvbiB4KHQsaSxlKXt0aGlzLng9ZT9NYXRoLnJvdW5kKHQpOnQsdGhpcy55PWU/TWF0aC5yb3VuZChpKTppfWZ1bmN0aW9uIHcodCxpLGUpe3JldHVybiB0IGluc3RhbmNlb2YgeD90OmVpKHQpP25ldyB4KHRbMF0sdFsxXSk6dm9pZCAwPT09dHx8bnVsbD09PXQ/dDoib2JqZWN0Ij09dHlwZW9mIHQmJiJ4ImluIHQmJiJ5ImluIHQ/bmV3IHgodC54LHQueSk6bmV3IHgodCxpLGUpfWZ1bmN0aW9uIFAodCxpKXtpZih0KWZvcih2YXIgZT1pP1t0LGldOnQsbj0wLG89ZS5sZW5ndGg7bjxvO24rKyl0aGlzLmV4dGVuZChlW25dKX1mdW5jdGlvbiBiKHQsaSl7cmV0dXJuIXR8fHQgaW5zdGFuY2VvZiBQP3Q6bmV3IFAodCxpKX1mdW5jdGlvbiBUKHQsaSl7aWYodClmb3IodmFyIGU9aT9bdCxpXTp0LG49MCxvPWUubGVuZ3RoO248bztuKyspdGhpcy5leHRlbmQoZVtuXSl9ZnVuY3Rpb24geih0LGkpe3JldHVybiB0IGluc3RhbmNlb2YgVD90Om5ldyBUKHQsaSl9ZnVuY3Rpb24gTSh0LGksZSl7aWYoaXNOYU4odCl8fGlzTmFOKGkpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBMYXRMbmcgb2JqZWN0OiAoIit0KyIsICIraSsiKSIpO3RoaXMubGF0PSt0LHRoaXMubG5nPStpLHZvaWQgMCE9PWUmJih0aGlzLmFsdD0rZSl9ZnVuY3Rpb24gQyh0LGksZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBNP3Q6ZWkodCkmJiJvYmplY3QiIT10eXBlb2YgdFswXT8zPT09dC5sZW5ndGg/bmV3IE0odFswXSx0WzFdLHRbMl0pOjI9PT10Lmxlbmd0aD9uZXcgTSh0WzBdLHRbMV0pOm51bGw6dm9pZCAwPT09dHx8bnVsbD09PXQ/dDoib2JqZWN0Ij09dHlwZW9mIHQmJiJsYXQiaW4gdD9uZXcgTSh0LmxhdCwibG5nImluIHQ/dC5sbmc6dC5sb24sdC5hbHQpOnZvaWQgMD09PWk/bnVsbDpuZXcgTSh0LGksZSl9ZnVuY3Rpb24gWih0LGksZSxuKXtpZihlaSh0KSlyZXR1cm4gdGhpcy5fYT10WzBdLHRoaXMuX2I9dFsxXSx0aGlzLl9jPXRbMl0sdm9pZCh0aGlzLl9kPXRbM10pO3RoaXMuX2E9dCx0aGlzLl9iPWksdGhpcy5fYz1lLHRoaXMuX2Q9bn1mdW5jdGlvbiBTKHQsaSxlLG4pe3JldHVybiBuZXcgWih0LGksZSxuKX1mdW5jdGlvbiBFKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix0KX1mdW5jdGlvbiBrKHQsaSl7dmFyIGUsbixvLHMscixhLGg9IiI7Zm9yKGU9MCxvPXQubGVuZ3RoO2U8bztlKyspe2ZvcihuPTAscz0ocj10W2VdKS5sZW5ndGg7bjxzO24rKylhPXJbbl0saCs9KG4/IkwiOiJNIikrYS54KyIgIithLnk7aCs9aT9YaT8ieiI6IngiOiIifXJldHVybiBofHwiTTAgMCJ9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodCk+PTB9ZnVuY3Rpb24gSSh0LGksZSxuKXtyZXR1cm4idG91Y2hzdGFydCI9PT1pP08odCxlLG4pOiJ0b3VjaG1vdmUiPT09aT9XKHQsZSxuKToidG91Y2hlbmQiPT09aSYmSCh0LGUsbiksdGhpc31mdW5jdGlvbiBCKHQsaSxlKXt2YXIgbj10WyJfbGVhZmxldF8iK2krZV07cmV0dXJuInRvdWNoc3RhcnQiPT09aT90LnJlbW92ZUV2ZW50TGlzdGVuZXIoUWksbiwhMSk6InRvdWNobW92ZSI9PT1pP3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0ZSxuLCExKToidG91Y2hlbmQiPT09aSYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihpZSxuLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZWUsbiwhMSkpLHRoaXN9ZnVuY3Rpb24gTyh0LGksbil7dmFyIG89ZShmdW5jdGlvbih0KXtpZigibW91c2UiIT09dC5wb2ludGVyVHlwZSYmdC5NU1BPSU5URVJfVFlQRV9NT1VTRSYmdC5wb2ludGVyVHlwZSE9PXQuTVNQT0lOVEVSX1RZUEVfTU9VU0Upe2lmKCEobmUuaW5kZXhPZih0LnRhcmdldC50YWdOYW1lKTwwKSlyZXR1cm47JCh0KX1qKHQsaSl9KTt0WyJfbGVhZmxldF90b3VjaHN0YXJ0IituXT1vLHQuYWRkRXZlbnRMaXN0ZW5lcihRaSxvLCExKSxzZXx8KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFFpLFIsITApLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHRlLEQsITApLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGllLE4sITApLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGVlLE4sITApLHNlPSEwKX1mdW5jdGlvbiBSKHQpe29lW3QucG9pbnRlcklkXT10LHJlKyt9ZnVuY3Rpb24gRCh0KXtvZVt0LnBvaW50ZXJJZF0mJihvZVt0LnBvaW50ZXJJZF09dCl9ZnVuY3Rpb24gTih0KXtkZWxldGUgb2VbdC5wb2ludGVySWRdLHJlLS19ZnVuY3Rpb24gaih0LGkpe3QudG91Y2hlcz1bXTtmb3IodmFyIGUgaW4gb2UpdC50b3VjaGVzLnB1c2gob2VbZV0pO3QuY2hhbmdlZFRvdWNoZXM9W3RdLGkodCl9ZnVuY3Rpb24gVyh0LGksZSl7dmFyIG49ZnVuY3Rpb24odCl7KHQucG9pbnRlclR5cGUhPT10Lk1TUE9JTlRFUl9UWVBFX01PVVNFJiYibW91c2UiIT09dC5wb2ludGVyVHlwZXx8MCE9PXQuYnV0dG9ucykmJmoodCxpKX07dFsiX2xlYWZsZXRfdG91Y2htb3ZlIitlXT1uLHQuYWRkRXZlbnRMaXN0ZW5lcih0ZSxuLCExKX1mdW5jdGlvbiBIKHQsaSxlKXt2YXIgbj1mdW5jdGlvbih0KXtqKHQsaSl9O3RbIl9sZWFmbGV0X3RvdWNoZW5kIitlXT1uLHQuYWRkRXZlbnRMaXN0ZW5lcihpZSxuLCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoZWUsbiwhMSl9ZnVuY3Rpb24gRih0LGksZSl7ZnVuY3Rpb24gbih0KXt2YXIgaTtpZihVaSl7aWYoIVBpfHwibW91c2UiPT09dC5wb2ludGVyVHlwZSlyZXR1cm47aT1yZX1lbHNlIGk9dC50b3VjaGVzLmxlbmd0aDtpZighKGk+MSkpe3ZhciBlPURhdGUubm93KCksbj1lLShzfHxlKTtyPXQudG91Y2hlcz90LnRvdWNoZXNbMF06dCxhPW4+MCYmbjw9aCxzPWV9fWZ1bmN0aW9uIG8odCl7aWYoYSYmIXIuY2FuY2VsQnViYmxlKXtpZihVaSl7aWYoIVBpfHwibW91c2UiPT09dC5wb2ludGVyVHlwZSlyZXR1cm47dmFyIGUsbixvPXt9O2ZvcihuIGluIHIpZT1yW25dLG9bbl09ZSYmZS5iaW5kP2UuYmluZChyKTplO3I9b31yLnR5cGU9ImRibGNsaWNrIixpKHIpLHM9bnVsbH19dmFyIHMscixhPSExLGg9MjUwO3JldHVybiB0W3VlK2FlK2VdPW4sdFt1ZStoZStlXT1vLHRbdWUrImRibGNsaWNrIitlXT1pLHQuYWRkRXZlbnRMaXN0ZW5lcihhZSxuLCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoaGUsbywhMSksdC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsaSwhMSksdGhpc31mdW5jdGlvbiBVKHQsaSl7dmFyIGU9dFt1ZSthZStpXSxuPXRbdWUraGUraV0sbz10W3VlKyJkYmxjbGljayIraV07cmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhZSxlLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoaGUsbiwhMSksUGl8fHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLG8sITEpLHRoaXN9ZnVuY3Rpb24gVih0LGksZSxuKXtpZigib2JqZWN0Ij09dHlwZW9mIGkpZm9yKHZhciBvIGluIGkpRyh0LG8saVtvXSxlKTtlbHNlIGZvcih2YXIgcz0wLHI9KGk9dShpKSkubGVuZ3RoO3M8cjtzKyspRyh0LGlbc10sZSxuKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBxKHQsaSxlLG4pe2lmKCJvYmplY3QiPT10eXBlb2YgaSlmb3IodmFyIG8gaW4gaSlLKHQsbyxpW29dLGUpO2Vsc2UgaWYoaSlmb3IodmFyIHM9MCxyPShpPXUoaSkpLmxlbmd0aDtzPHI7cysrKUsodCxpW3NdLGUsbik7ZWxzZXtmb3IodmFyIGEgaW4gdFtsZV0pSyh0LGEsdFtsZV1bYV0pO2RlbGV0ZSB0W2xlXX1yZXR1cm4gdGhpc31mdW5jdGlvbiBHKHQsaSxlLG8pe3ZhciBzPWkrbihlKSsobz8iXyIrbihvKToiIik7aWYodFtsZV0mJnRbbGVdW3NdKXJldHVybiB0aGlzO3ZhciByPWZ1bmN0aW9uKGkpe3JldHVybiBlLmNhbGwob3x8dCxpfHx3aW5kb3cuZXZlbnQpfSxhPXI7VWkmJjA9PT1pLmluZGV4T2YoInRvdWNoIik/SSh0LGkscixzKTohVml8fCJkYmxjbGljayIhPT1pfHwhRnx8VWkmJlNpPyJhZGRFdmVudExpc3RlbmVyImluIHQ/Im1vdXNld2hlZWwiPT09aT90LmFkZEV2ZW50TGlzdGVuZXIoIm9ud2hlZWwiaW4gdD8id2hlZWwiOiJtb3VzZXdoZWVsIixyLCExKToibW91c2VlbnRlciI9PT1pfHwibW91c2VsZWF2ZSI9PT1pPyhyPWZ1bmN0aW9uKGkpe2k9aXx8d2luZG93LmV2ZW50LG90KHQsaSkmJmEoaSl9LHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciI9PT1pPyJtb3VzZW92ZXIiOiJtb3VzZW91dCIsciwhMSkpOigiY2xpY2siPT09aSYmVGkmJihyPWZ1bmN0aW9uKHQpe3N0KHQsYSl9KSx0LmFkZEV2ZW50TGlzdGVuZXIoaSxyLCExKSk6ImF0dGFjaEV2ZW50ImluIHQmJnQuYXR0YWNoRXZlbnQoIm9uIitpLHIpOkYodCxyLHMpLHRbbGVdPXRbbGVdfHx7fSx0W2xlXVtzXT1yfWZ1bmN0aW9uIEsodCxpLGUsbyl7dmFyIHM9aStuKGUpKyhvPyJfIituKG8pOiIiKSxyPXRbbGVdJiZ0W2xlXVtzXTtpZighcilyZXR1cm4gdGhpcztVaSYmMD09PWkuaW5kZXhPZigidG91Y2giKT9CKHQsaSxzKTohVml8fCJkYmxjbGljayIhPT1pfHwhVXx8VWkmJlNpPyJyZW1vdmVFdmVudExpc3RlbmVyImluIHQ/Im1vdXNld2hlZWwiPT09aT90LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9ud2hlZWwiaW4gdD8id2hlZWwiOiJtb3VzZXdoZWVsIixyLCExKTp0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiPT09aT8ibW91c2VvdmVyIjoibW91c2VsZWF2ZSI9PT1pPyJtb3VzZW91dCI6aSxyLCExKToiZGV0YWNoRXZlbnQiaW4gdCYmdC5kZXRhY2hFdmVudCgib24iK2kscik6VSh0LHMpLHRbbGVdW3NdPW51bGx9ZnVuY3Rpb24gWSh0KXtyZXR1cm4gdC5zdG9wUHJvcGFnYXRpb24/dC5zdG9wUHJvcGFnYXRpb24oKTp0Lm9yaWdpbmFsRXZlbnQ/dC5vcmlnaW5hbEV2ZW50Ll9zdG9wcGVkPSEwOnQuY2FuY2VsQnViYmxlPSEwLG50KHQpLHRoaXN9ZnVuY3Rpb24gWCh0KXtyZXR1cm4gRyh0LCJtb3VzZXdoZWVsIixZKSx0aGlzfWZ1bmN0aW9uIEoodCl7cmV0dXJuIFYodCwibW91c2Vkb3duIHRvdWNoc3RhcnQgZGJsY2xpY2siLFkpLEcodCwiY2xpY2siLGV0KSx0aGlzfWZ1bmN0aW9uICQodCl7cmV0dXJuIHQucHJldmVudERlZmF1bHQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQucmV0dXJuVmFsdWU9ITEsdGhpc31mdW5jdGlvbiBRKHQpe3JldHVybiAkKHQpLFkodCksdGhpc31mdW5jdGlvbiB0dCh0LGkpe2lmKCFpKXJldHVybiBuZXcgeCh0LmNsaWVudFgsdC5jbGllbnRZKTt2YXIgZT1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ZS53aWR0aC9pLm9mZnNldFdpZHRofHwxLG89ZS5oZWlnaHQvaS5vZmZzZXRIZWlnaHR8fDE7cmV0dXJuIG5ldyB4KHQuY2xpZW50WC9uLWUubGVmdC1pLmNsaWVudExlZnQsdC5jbGllbnRZL28tZS50b3AtaS5jbGllbnRUb3ApfWZ1bmN0aW9uIGl0KHQpe3JldHVybiBQaT90LndoZWVsRGVsdGFZLzI6dC5kZWx0YVkmJjA9PT10LmRlbHRhTW9kZT8tdC5kZWx0YVkvY2U6dC5kZWx0YVkmJjE9PT10LmRlbHRhTW9kZT8yMCotdC5kZWx0YVk6dC5kZWx0YVkmJjI9PT10LmRlbHRhTW9kZT82MCotdC5kZWx0YVk6dC5kZWx0YVh8fHQuZGVsdGFaPzA6dC53aGVlbERlbHRhPyh0LndoZWVsRGVsdGFZfHx0LndoZWVsRGVsdGEpLzI6dC5kZXRhaWwmJk1hdGguYWJzKHQuZGV0YWlsKTwzMjc2NT8yMCotdC5kZXRhaWw6dC5kZXRhaWw/dC5kZXRhaWwvLTMyNzY1KjYwOjB9ZnVuY3Rpb24gZXQodCl7X2VbdC50eXBlXT0hMH1mdW5jdGlvbiBudCh0KXt2YXIgaT1fZVt0LnR5cGVdO3JldHVybiBfZVt0LnR5cGVdPSExLGl9ZnVuY3Rpb24gb3QodCxpKXt2YXIgZT1pLnJlbGF0ZWRUYXJnZXQ7aWYoIWUpcmV0dXJuITA7dHJ5e2Zvcig7ZSYmZSE9PXQ7KWU9ZS5wYXJlbnROb2RlfWNhdGNoKHQpe3JldHVybiExfXJldHVybiBlIT09dH1mdW5jdGlvbiBzdCh0LGkpe3ZhciBlPXQudGltZVN0YW1wfHx0Lm9yaWdpbmFsRXZlbnQmJnQub3JpZ2luYWxFdmVudC50aW1lU3RhbXAsbj1waSYmZS1waTtuJiZuPjEwMCYmbjw1MDB8fHQudGFyZ2V0Ll9zaW11bGF0ZWRDbGljayYmIXQuX3NpbXVsYXRlZD9RKHQpOihwaT1lLGkodCkpfWZ1bmN0aW9uIHJ0KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTp0fWZ1bmN0aW9uIGF0KHQsaSl7dmFyIGU9dC5zdHlsZVtpXXx8dC5jdXJyZW50U3R5bGUmJnQuY3VycmVudFN0eWxlW2ldO2lmKCghZXx8ImF1dG8iPT09ZSkmJmRvY3VtZW50LmRlZmF1bHRWaWV3KXt2YXIgbj1kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCk7ZT1uP25baV06bnVsbH1yZXR1cm4iYXV0byI9PT1lP251bGw6ZX1mdW5jdGlvbiBodCh0LGksZSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtyZXR1cm4gbi5jbGFzc05hbWU9aXx8IiIsZSYmZS5hcHBlbmRDaGlsZChuKSxufWZ1bmN0aW9uIHV0KHQpe3ZhciBpPXQucGFyZW50Tm9kZTtpJiZpLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIGx0KHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gY3QodCl7dmFyIGk9dC5wYXJlbnROb2RlO2kubGFzdENoaWxkIT09dCYmaS5hcHBlbmRDaGlsZCh0KX1mdW5jdGlvbiBfdCh0KXt2YXIgaT10LnBhcmVudE5vZGU7aS5maXJzdENoaWxkIT09dCYmaS5pbnNlcnRCZWZvcmUodCxpLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGR0KHQsaSl7aWYodm9pZCAwIT09dC5jbGFzc0xpc3QpcmV0dXJuIHQuY2xhc3NMaXN0LmNvbnRhaW5zKGkpO3ZhciBlPWd0KHQpO3JldHVybiBlLmxlbmd0aD4wJiZuZXcgUmVnRXhwKCIoXnxcXHMpIitpKyIoXFxzfCQpIikudGVzdChlKX1mdW5jdGlvbiBwdCh0LGkpe2lmKHZvaWQgMCE9PXQuY2xhc3NMaXN0KWZvcih2YXIgZT11KGkpLG49MCxvPWUubGVuZ3RoO248bztuKyspdC5jbGFzc0xpc3QuYWRkKGVbbl0pO2Vsc2UgaWYoIWR0KHQsaSkpe3ZhciBzPWd0KHQpO2Z0KHQsKHM/cysiICI6IiIpK2kpfX1mdW5jdGlvbiBtdCh0LGkpe3ZvaWQgMCE9PXQuY2xhc3NMaXN0P3QuY2xhc3NMaXN0LnJlbW92ZShpKTpmdCh0LGgoKCIgIitndCh0KSsiICIpLnJlcGxhY2UoIiAiK2krIiAiLCIgIikpKX1mdW5jdGlvbiBmdCh0LGkpe3ZvaWQgMD09PXQuY2xhc3NOYW1lLmJhc2VWYWw/dC5jbGFzc05hbWU9aTp0LmNsYXNzTmFtZS5iYXNlVmFsPWl9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIHZvaWQgMD09PXQuY2xhc3NOYW1lLmJhc2VWYWw/dC5jbGFzc05hbWU6dC5jbGFzc05hbWUuYmFzZVZhbH1mdW5jdGlvbiB2dCh0LGkpeyJvcGFjaXR5ImluIHQuc3R5bGU/dC5zdHlsZS5vcGFjaXR5PWk6ImZpbHRlciJpbiB0LnN0eWxlJiZ5dCh0LGkpfWZ1bmN0aW9uIHl0KHQsaSl7dmFyIGU9ITEsbj0iRFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEiO3RyeXtlPXQuZmlsdGVycy5pdGVtKG4pfWNhdGNoKHQpe2lmKDE9PT1pKXJldHVybn1pPU1hdGgucm91bmQoMTAwKmkpLGU/KGUuRW5hYmxlZD0xMDAhPT1pLGUuT3BhY2l0eT1pKTp0LnN0eWxlLmZpbHRlcis9IiBwcm9naWQ6IituKyIob3BhY2l0eT0iK2krIikifWZ1bmN0aW9uIHh0KHQpe2Zvcih2YXIgaT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUsZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV1pbiBpKXJldHVybiB0W2VdO3JldHVybiExfWZ1bmN0aW9uIHd0KHQsaSxlKXt2YXIgbj1pfHxuZXcgeCgwLDApO3Quc3R5bGVbcGVdPShPaT8idHJhbnNsYXRlKCIrbi54KyJweCwiK24ueSsicHgpIjoidHJhbnNsYXRlM2QoIituLngrInB4LCIrbi55KyJweCwwKSIpKyhlPyIgc2NhbGUoIitlKyIpIjoiIil9ZnVuY3Rpb24gTHQodCxpKXt0Ll9sZWFmbGV0X3Bvcz1pLE5pP3d0KHQsaSk6KHQuc3R5bGUubGVmdD1pLngrInB4Iix0LnN0eWxlLnRvcD1pLnkrInB4Iil9ZnVuY3Rpb24gUHQodCl7cmV0dXJuIHQuX2xlYWZsZXRfcG9zfHxuZXcgeCgwLDApfWZ1bmN0aW9uIGJ0KCl7Vih3aW5kb3csImRyYWdzdGFydCIsJCl9ZnVuY3Rpb24gVHQoKXtxKHdpbmRvdywiZHJhZ3N0YXJ0IiwkKX1mdW5jdGlvbiB6dCh0KXtmb3IoOy0xPT09dC50YWJJbmRleDspdD10LnBhcmVudE5vZGU7dC5zdHlsZSYmKE10KCksdmU9dCx5ZT10LnN0eWxlLm91dGxpbmUsdC5zdHlsZS5vdXRsaW5lPSJub25lIixWKHdpbmRvdywia2V5ZG93biIsTXQpKX1mdW5jdGlvbiBNdCgpe3ZlJiYodmUuc3R5bGUub3V0bGluZT15ZSx2ZT12b2lkIDAseWU9dm9pZCAwLHEod2luZG93LCJrZXlkb3duIixNdCkpfWZ1bmN0aW9uIEN0KHQsaSl7aWYoIWl8fCF0Lmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3ZhciBlPWkqaTtyZXR1cm4gdD1rdCh0LGUpLHQ9U3QodCxlKX1mdW5jdGlvbiBadCh0LGksZSl7cmV0dXJuIE1hdGguc3FydChSdCh0LGksZSwhMCkpfWZ1bmN0aW9uIFN0KHQsaSl7dmFyIGU9dC5sZW5ndGgsbj1uZXcodHlwZW9mIFVpbnQ4QXJyYXkhPXZvaWQgMCsiIj9VaW50OEFycmF5OkFycmF5KShlKTtuWzBdPW5bZS0xXT0xLEV0KHQsbixpLDAsZS0xKTt2YXIgbyxzPVtdO2ZvcihvPTA7bzxlO28rKyluW29dJiZzLnB1c2godFtvXSk7cmV0dXJuIHN9ZnVuY3Rpb24gRXQodCxpLGUsbixvKXt2YXIgcyxyLGEsaD0wO2ZvcihyPW4rMTtyPD1vLTE7cisrKShhPVJ0KHRbcl0sdFtuXSx0W29dLCEwKSk+aCYmKHM9cixoPWEpO2g+ZSYmKGlbc109MSxFdCh0LGksZSxuLHMpLEV0KHQsaSxlLHMsbykpfWZ1bmN0aW9uIGt0KHQsaSl7Zm9yKHZhciBlPVt0WzBdXSxuPTEsbz0wLHM9dC5sZW5ndGg7bjxzO24rKylPdCh0W25dLHRbb10pPmkmJihlLnB1c2godFtuXSksbz1uKTtyZXR1cm4gbzxzLTEmJmUucHVzaCh0W3MtMV0pLGV9ZnVuY3Rpb24gQXQodCxpLGUsbixvKXt2YXIgcyxyLGEsaD1uP1NlOkJ0KHQsZSksdT1CdChpLGUpO2ZvcihTZT11Ozspe2lmKCEoaHx1KSlyZXR1cm5bdCxpXTtpZihoJnUpcmV0dXJuITE7YT1CdChyPUl0KHQsaSxzPWh8fHUsZSxvKSxlKSxzPT09aD8odD1yLGg9YSk6KGk9cix1PWEpfX1mdW5jdGlvbiBJdCh0LGksZSxuLG8pe3ZhciBzLHIsYT1pLngtdC54LGg9aS55LXQueSx1PW4ubWluLGw9bi5tYXg7cmV0dXJuIDgmZT8ocz10LngrYSoobC55LXQueSkvaCxyPWwueSk6NCZlPyhzPXQueCthKih1LnktdC55KS9oLHI9dS55KToyJmU/KHM9bC54LHI9dC55K2gqKGwueC10LngpL2EpOjEmZSYmKHM9dS54LHI9dC55K2gqKHUueC10LngpL2EpLG5ldyB4KHMscixvKX1mdW5jdGlvbiBCdCh0LGkpe3ZhciBlPTA7cmV0dXJuIHQueDxpLm1pbi54P2V8PTE6dC54PmkubWF4LngmJihlfD0yKSx0Lnk8aS5taW4ueT9lfD00OnQueT5pLm1heC55JiYoZXw9OCksZX1mdW5jdGlvbiBPdCh0LGkpe3ZhciBlPWkueC10Lngsbj1pLnktdC55O3JldHVybiBlKmUrbipufWZ1bmN0aW9uIFJ0KHQsaSxlLG4pe3ZhciBvLHM9aS54LHI9aS55LGE9ZS54LXMsaD1lLnktcix1PWEqYStoKmg7cmV0dXJuIHU+MCYmKChvPSgodC54LXMpKmErKHQueS1yKSpoKS91KT4xPyhzPWUueCxyPWUueSk6bz4wJiYocys9YSpvLHIrPWgqbykpLGE9dC54LXMsaD10LnktcixuP2EqYStoKmg6bmV3IHgocyxyKX1mdW5jdGlvbiBEdCh0KXtyZXR1cm4hZWkodFswXSl8fCJvYmplY3QiIT10eXBlb2YgdFswXVswXSYmdm9pZCAwIT09dFswXVswXX1mdW5jdGlvbiBOdCh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJEZXByZWNhdGVkIHVzZSBvZiBfZmxhdCwgcGxlYXNlIHVzZSBMLkxpbmVVdGlsLmlzRmxhdCBpbnN0ZWFkLiIpLER0KHQpfWZ1bmN0aW9uIGp0KHQsaSxlKXt2YXIgbixvLHMscixhLGgsdSxsLGMsXz1bMSw0LDIsOF07Zm9yKG89MCx1PXQubGVuZ3RoO288dTtvKyspdFtvXS5fY29kZT1CdCh0W29dLGkpO2ZvcihyPTA7cjw0O3IrKyl7Zm9yKGw9X1tyXSxuPVtdLG89MCxzPSh1PXQubGVuZ3RoKS0xO288dTtzPW8rKylhPXRbb10saD10W3NdLGEuX2NvZGUmbD9oLl9jb2RlJmx8fCgoYz1JdChoLGEsbCxpLGUpKS5fY29kZT1CdChjLGkpLG4ucHVzaChjKSk6KGguX2NvZGUmbCYmKChjPUl0KGgsYSxsLGksZSkpLl9jb2RlPUJ0KGMsaSksbi5wdXNoKGMpKSxuLnB1c2goYSkpO3Q9bn1yZXR1cm4gdH1mdW5jdGlvbiBXdCh0LGkpe3ZhciBlLG4sbyxzLHI9IkZlYXR1cmUiPT09dC50eXBlP3QuZ2VvbWV0cnk6dCxhPXI/ci5jb29yZGluYXRlczpudWxsLGg9W10sdT1pJiZpLnBvaW50VG9MYXllcixsPWkmJmkuY29vcmRzVG9MYXRMbmd8fEh0O2lmKCFhJiYhcilyZXR1cm4gbnVsbDtzd2l0Y2goci50eXBlKXtjYXNlIlBvaW50IjpyZXR1cm4gZT1sKGEpLHU/dSh0LGUpOm5ldyBYZShlKTtjYXNlIk11bHRpUG9pbnQiOmZvcihvPTAscz1hLmxlbmd0aDtvPHM7bysrKWU9bChhW29dKSxoLnB1c2godT91KHQsZSk6bmV3IFhlKGUpKTtyZXR1cm4gbmV3IHFlKGgpO2Nhc2UiTGluZVN0cmluZyI6Y2FzZSJNdWx0aUxpbmVTdHJpbmciOnJldHVybiBuPUZ0KGEsIkxpbmVTdHJpbmciPT09ci50eXBlPzA6MSxsKSxuZXcgdG4obixpKTtjYXNlIlBvbHlnb24iOmNhc2UiTXVsdGlQb2x5Z29uIjpyZXR1cm4gbj1GdChhLCJQb2x5Z29uIj09PXIudHlwZT8xOjIsbCksbmV3IGVuKG4saSk7Y2FzZSJHZW9tZXRyeUNvbGxlY3Rpb24iOmZvcihvPTAscz1yLmdlb21ldHJpZXMubGVuZ3RoO288cztvKyspe3ZhciBjPVd0KHtnZW9tZXRyeTpyLmdlb21ldHJpZXNbb10sdHlwZToiRmVhdHVyZSIscHJvcGVydGllczp0LnByb3BlcnRpZXN9LGkpO2MmJmgucHVzaChjKX1yZXR1cm4gbmV3IHFlKGgpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIEdlb0pTT04gb2JqZWN0LiIpfX1mdW5jdGlvbiBIdCh0KXtyZXR1cm4gbmV3IE0odFsxXSx0WzBdLHRbMl0pfWZ1bmN0aW9uIEZ0KHQsaSxlKXtmb3IodmFyIG4sbz1bXSxzPTAscj10Lmxlbmd0aDtzPHI7cysrKW49aT9GdCh0W3NdLGktMSxlKTooZXx8SHQpKHRbc10pLG8ucHVzaChuKTtyZXR1cm4gb31mdW5jdGlvbiBVdCh0LGkpe3JldHVybiBpPSJudW1iZXIiPT10eXBlb2YgaT9pOjYsdm9pZCAwIT09dC5hbHQ/W2EodC5sbmcsaSksYSh0LmxhdCxpKSxhKHQuYWx0LGkpXTpbYSh0LmxuZyxpKSxhKHQubGF0LGkpXX1mdW5jdGlvbiBWdCh0LGksZSxuKXtmb3IodmFyIG89W10scz0wLHI9dC5sZW5ndGg7czxyO3MrKylvLnB1c2goaT9WdCh0W3NdLGktMSxlLG4pOlV0KHRbc10sbikpO3JldHVybiFpJiZlJiZvLnB1c2gob1swXSksb31mdW5jdGlvbiBxdCh0LGUpe3JldHVybiB0LmZlYXR1cmU/aSh7fSx0LmZlYXR1cmUse2dlb21ldHJ5OmV9KTpHdChlKX1mdW5jdGlvbiBHdCh0KXtyZXR1cm4iRmVhdHVyZSI9PT10LnR5cGV8fCJGZWF0dXJlQ29sbGVjdGlvbiI9PT10LnR5cGU/dDp7dHlwZToiRmVhdHVyZSIscHJvcGVydGllczp7fSxnZW9tZXRyeTp0fX1mdW5jdGlvbiBLdCh0LGkpe3JldHVybiBuZXcgbm4odCxpKX1mdW5jdGlvbiBZdCh0LGkpe3JldHVybiBuZXcgZG4odCxpKX1mdW5jdGlvbiBYdCh0KXtyZXR1cm4gWWk/bmV3IGZuKHQpOm51bGx9ZnVuY3Rpb24gSnQodCl7cmV0dXJuIFhpfHxKaT9uZXcgeG4odCk6bnVsbH12YXIgJHQ9T2JqZWN0LmZyZWV6ZTtPYmplY3QuZnJlZXplPWZ1bmN0aW9uKHQpe3JldHVybiB0fTt2YXIgUXQ9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gdC5wcm90b3R5cGU9aSxuZXcgdH19KCksdGk9MCxpaT0vXHsgKihbXHdfLV0rKSAqXH0vZyxlaT1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSxuaT0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFBRC9BQ3dBQUFBQUFRQUJBQUFDQURzPSIsb2k9MCxzaT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxwKCJSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKXx8bSxyaT13aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWV8fHAoIkNhbmNlbEFuaW1hdGlvbkZyYW1lIil8fHAoIkNhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZSIpfHxmdW5jdGlvbih0KXt3aW5kb3cuY2xlYXJUaW1lb3V0KHQpfSxhaT0oT2JqZWN0LmZyZWV6ZXx8T2JqZWN0KSh7ZnJlZXplOiR0LGV4dGVuZDppLGNyZWF0ZTpRdCxiaW5kOmUsbGFzdElkOnRpLHN0YW1wOm4sdGhyb3R0bGU6byx3cmFwTnVtOnMsZmFsc2VGbjpyLGZvcm1hdE51bTphLHRyaW06aCxzcGxpdFdvcmRzOnUsc2V0T3B0aW9uczpsLGdldFBhcmFtU3RyaW5nOmMsdGVtcGxhdGU6Xyxpc0FycmF5OmVpLGluZGV4T2Y6ZCxlbXB0eUltYWdlVXJsOm5pLHJlcXVlc3RGbjpzaSxjYW5jZWxGbjpyaSxyZXF1ZXN0QW5pbUZyYW1lOmYsY2FuY2VsQW5pbUZyYW1lOmd9KTt2LmV4dGVuZD1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe3RoaXMuaW5pdGlhbGl6ZSYmdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmNhbGxJbml0SG9va3MoKX0sbj1lLl9fc3VwZXJfXz10aGlzLnByb3RvdHlwZSxvPVF0KG4pO28uY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZT1vO2Zvcih2YXIgcyBpbiB0aGlzKXRoaXMuaGFzT3duUHJvcGVydHkocykmJiJwcm90b3R5cGUiIT09cyYmIl9fc3VwZXJfXyIhPT1zJiYoZVtzXT10aGlzW3NdKTtyZXR1cm4gdC5zdGF0aWNzJiYoaShlLHQuc3RhdGljcyksZGVsZXRlIHQuc3RhdGljcyksdC5pbmNsdWRlcyYmKHkodC5pbmNsdWRlcyksaS5hcHBseShudWxsLFtvXS5jb25jYXQodC5pbmNsdWRlcykpLGRlbGV0ZSB0LmluY2x1ZGVzKSxvLm9wdGlvbnMmJih0Lm9wdGlvbnM9aShRdChvLm9wdGlvbnMpLHQub3B0aW9ucykpLGkobyx0KSxvLl9pbml0SG9va3M9W10sby5jYWxsSW5pdEhvb2tzPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2luaXRIb29rc0NhbGxlZCl7bi5jYWxsSW5pdEhvb2tzJiZuLmNhbGxJbml0SG9va3MuY2FsbCh0aGlzKSx0aGlzLl9pbml0SG9va3NDYWxsZWQ9ITA7Zm9yKHZhciB0PTAsaT1vLl9pbml0SG9va3MubGVuZ3RoO3Q8aTt0Kyspby5faW5pdEhvb2tzW3RdLmNhbGwodGhpcyl9fSxlfSx2LmluY2x1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcy5wcm90b3R5cGUsdCksdGhpc30sdi5tZXJnZU9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcy5wcm90b3R5cGUub3B0aW9ucyx0KSx0aGlzfSx2LmFkZEluaXRIb29rPWZ1bmN0aW9uKHQpe3ZhciBpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXt0aGlzW3RdLmFwcGx5KHRoaXMsaSl9O3JldHVybiB0aGlzLnByb3RvdHlwZS5faW5pdEhvb2tzPXRoaXMucHJvdG90eXBlLl9pbml0SG9va3N8fFtdLHRoaXMucHJvdG90eXBlLl9pbml0SG9va3MucHVzaChlKSx0aGlzfTt2YXIgaGk9e29uOmZ1bmN0aW9uKHQsaSxlKXtpZigib2JqZWN0Ij09dHlwZW9mIHQpZm9yKHZhciBuIGluIHQpdGhpcy5fb24obix0W25dLGkpO2Vsc2UgZm9yKHZhciBvPTAscz0odD11KHQpKS5sZW5ndGg7bzxzO28rKyl0aGlzLl9vbih0W29dLGksZSk7cmV0dXJuIHRoaXN9LG9mZjpmdW5jdGlvbih0LGksZSl7aWYodClpZigib2JqZWN0Ij09dHlwZW9mIHQpZm9yKHZhciBuIGluIHQpdGhpcy5fb2ZmKG4sdFtuXSxpKTtlbHNlIGZvcih2YXIgbz0wLHM9KHQ9dSh0KSkubGVuZ3RoO288cztvKyspdGhpcy5fb2ZmKHRbb10saSxlKTtlbHNlIGRlbGV0ZSB0aGlzLl9ldmVudHM7cmV0dXJuIHRoaXN9LF9vbjpmdW5jdGlvbih0LGksZSl7dGhpcy5fZXZlbnRzPXRoaXMuX2V2ZW50c3x8e307dmFyIG49dGhpcy5fZXZlbnRzW3RdO258fChuPVtdLHRoaXMuX2V2ZW50c1t0XT1uKSxlPT09dGhpcyYmKGU9dm9pZCAwKTtmb3IodmFyIG89e2ZuOmksY3R4OmV9LHM9bixyPTAsYT1zLmxlbmd0aDtyPGE7cisrKWlmKHNbcl0uZm49PT1pJiZzW3JdLmN0eD09PWUpcmV0dXJuO3MucHVzaChvKX0sX29mZjpmdW5jdGlvbih0LGksZSl7dmFyIG4sbyxzO2lmKHRoaXMuX2V2ZW50cyYmKG49dGhpcy5fZXZlbnRzW3RdKSlpZihpKXtpZihlPT09dGhpcyYmKGU9dm9pZCAwKSxuKWZvcihvPTAscz1uLmxlbmd0aDtvPHM7bysrKXt2YXIgYT1uW29dO2lmKGEuY3R4PT09ZSYmYS5mbj09PWkpcmV0dXJuIGEuZm49cix0aGlzLl9maXJpbmdDb3VudCYmKHRoaXMuX2V2ZW50c1t0XT1uPW4uc2xpY2UoKSksdm9pZCBuLnNwbGljZShvLDEpfX1lbHNle2ZvcihvPTAscz1uLmxlbmd0aDtvPHM7bysrKW5bb10uZm49cjtkZWxldGUgdGhpcy5fZXZlbnRzW3RdfX0sZmlyZTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMubGlzdGVucyh0LG4pKXJldHVybiB0aGlzO3ZhciBvPWkoe30sZSx7dHlwZTp0LHRhcmdldDp0aGlzLHNvdXJjZVRhcmdldDplJiZlLnNvdXJjZVRhcmdldHx8dGhpc30pO2lmKHRoaXMuX2V2ZW50cyl7dmFyIHM9dGhpcy5fZXZlbnRzW3RdO2lmKHMpe3RoaXMuX2ZpcmluZ0NvdW50PXRoaXMuX2ZpcmluZ0NvdW50KzF8fDE7Zm9yKHZhciByPTAsYT1zLmxlbmd0aDtyPGE7cisrKXt2YXIgaD1zW3JdO2guZm4uY2FsbChoLmN0eHx8dGhpcyxvKX10aGlzLl9maXJpbmdDb3VudC0tfX1yZXR1cm4gbiYmdGhpcy5fcHJvcGFnYXRlRXZlbnQobyksdGhpc30sbGlzdGVuczpmdW5jdGlvbih0LGkpe3ZhciBlPXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzW3RdO2lmKGUmJmUubGVuZ3RoKXJldHVybiEwO2lmKGkpZm9yKHZhciBuIGluIHRoaXMuX2V2ZW50UGFyZW50cylpZih0aGlzLl9ldmVudFBhcmVudHNbbl0ubGlzdGVucyh0LGkpKXJldHVybiEwO3JldHVybiExfSxvbmNlOmZ1bmN0aW9uKHQsaSxuKXtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2Zvcih2YXIgbyBpbiB0KXRoaXMub25jZShvLHRbb10saSk7cmV0dXJuIHRoaXN9dmFyIHM9ZShmdW5jdGlvbigpe3RoaXMub2ZmKHQsaSxuKS5vZmYodCxzLG4pfSx0aGlzKTtyZXR1cm4gdGhpcy5vbih0LGksbikub24odCxzLG4pfSxhZGRFdmVudFBhcmVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXZlbnRQYXJlbnRzPXRoaXMuX2V2ZW50UGFyZW50c3x8e30sdGhpcy5fZXZlbnRQYXJlbnRzW24odCldPXQsdGhpc30scmVtb3ZlRXZlbnRQYXJlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2V2ZW50UGFyZW50cyYmZGVsZXRlIHRoaXMuX2V2ZW50UGFyZW50c1tuKHQpXSx0aGlzfSxfcHJvcGFnYXRlRXZlbnQ6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuX2V2ZW50UGFyZW50cyl0aGlzLl9ldmVudFBhcmVudHNbZV0uZmlyZSh0LnR5cGUsaSh7bGF5ZXI6dC50YXJnZXQscHJvcGFnYXRlZEZyb206dC50YXJnZXR9LHQpLCEwKX19O2hpLmFkZEV2ZW50TGlzdGVuZXI9aGkub24saGkucmVtb3ZlRXZlbnRMaXN0ZW5lcj1oaS5jbGVhckFsbEV2ZW50TGlzdGVuZXJzPWhpLm9mZixoaS5hZGRPbmVUaW1lRXZlbnRMaXN0ZW5lcj1oaS5vbmNlLGhpLmZpcmVFdmVudD1oaS5maXJlLGhpLmhhc0V2ZW50TGlzdGVuZXJzPWhpLmxpc3RlbnM7dmFyIHVpPXYuZXh0ZW5kKGhpKSxsaT1NYXRoLnRydW5jfHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wP01hdGguZmxvb3IodCk6TWF0aC5jZWlsKHQpfTt4LnByb3RvdHlwZT17Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHgodGhpcy54LHRoaXMueSl9LGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9hZGQodyh0KSl9LF9hZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXN9LHN1YnRyYWN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3N1YnRyYWN0KHcodCkpfSxfc3VidHJhY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXN9LGRpdmlkZUJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2RpdmlkZUJ5KHQpfSxfZGl2aWRlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC89dCx0aGlzLnkvPXQsdGhpc30sbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tdWx0aXBseUJ5KHQpfSxfbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfSxzY2FsZUJ5OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgeCh0aGlzLngqdC54LHRoaXMueSp0LnkpfSx1bnNjYWxlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB4KHRoaXMueC90LngsdGhpcy55L3QueSl9LHJvdW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcm91bmQoKX0sX3JvdW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzfSxmbG9vcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX2Zsb29yKCl9LF9mbG9vcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpc30sY2VpbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX2NlaWwoKX0sX2NlaWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzfSx0cnVuYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3RydW5jKCl9LF90cnVuYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9bGkodGhpcy54KSx0aGlzLnk9bGkodGhpcy55KSx0aGlzfSxkaXN0YW5jZVRvOmZ1bmN0aW9uKHQpe3ZhciBpPSh0PXcodCkpLngtdGhpcy54LGU9dC55LXRoaXMueTtyZXR1cm4gTWF0aC5zcXJ0KGkqaStlKmUpfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dyh0KSkueD09PXRoaXMueCYmdC55PT09dGhpcy55fSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdD13KHQpLE1hdGguYWJzKHQueCk8PU1hdGguYWJzKHRoaXMueCkmJk1hdGguYWJzKHQueSk8PU1hdGguYWJzKHRoaXMueSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlBvaW50KCIrYSh0aGlzLngpKyIsICIrYSh0aGlzLnkpKyIpIn19LFAucHJvdG90eXBlPXtleHRlbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dyh0KSx0aGlzLm1pbnx8dGhpcy5tYXg/KHRoaXMubWluLng9TWF0aC5taW4odC54LHRoaXMubWluLngpLHRoaXMubWF4Lng9TWF0aC5tYXgodC54LHRoaXMubWF4LngpLHRoaXMubWluLnk9TWF0aC5taW4odC55LHRoaXMubWluLnkpLHRoaXMubWF4Lnk9TWF0aC5tYXgodC55LHRoaXMubWF4LnkpKToodGhpcy5taW49dC5jbG9uZSgpLHRoaXMubWF4PXQuY2xvbmUoKSksdGhpc30sZ2V0Q2VudGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgeCgodGhpcy5taW4ueCt0aGlzLm1heC54KS8yLCh0aGlzLm1pbi55K3RoaXMubWF4LnkpLzIsdCl9LGdldEJvdHRvbUxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHgodGhpcy5taW4ueCx0aGlzLm1heC55KX0sZ2V0VG9wUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHgodGhpcy5tYXgueCx0aGlzLm1pbi55KX0sZ2V0VG9wTGVmdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1pbn0sZ2V0Qm90dG9tUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXh9LGdldFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXguc3VidHJhY3QodGhpcy5taW4pfSxjb250YWluczpmdW5jdGlvbih0KXt2YXIgaSxlO3JldHVybih0PSJudW1iZXIiPT10eXBlb2YgdFswXXx8dCBpbnN0YW5jZW9mIHg/dyh0KTpiKHQpKWluc3RhbmNlb2YgUD8oaT10Lm1pbixlPXQubWF4KTppPWU9dCxpLng+PXRoaXMubWluLngmJmUueDw9dGhpcy5tYXgueCYmaS55Pj10aGlzLm1pbi55JiZlLnk8PXRoaXMubWF4Lnl9LGludGVyc2VjdHM6ZnVuY3Rpb24odCl7dD1iKHQpO3ZhciBpPXRoaXMubWluLGU9dGhpcy5tYXgsbj10Lm1pbixvPXQubWF4LHM9by54Pj1pLngmJm4ueDw9ZS54LHI9by55Pj1pLnkmJm4ueTw9ZS55O3JldHVybiBzJiZyfSxvdmVybGFwczpmdW5jdGlvbih0KXt0PWIodCk7dmFyIGk9dGhpcy5taW4sZT10aGlzLm1heCxuPXQubWluLG89dC5tYXgscz1vLng+aS54JiZuLng8ZS54LHI9by55PmkueSYmbi55PGUueTtyZXR1cm4gcyYmcn0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMubWlufHwhdGhpcy5tYXgpfX0sVC5wcm90b3R5cGU9e2V4dGVuZDpmdW5jdGlvbih0KXt2YXIgaSxlLG49dGhpcy5fc291dGhXZXN0LG89dGhpcy5fbm9ydGhFYXN0O2lmKHQgaW5zdGFuY2VvZiBNKWk9dCxlPXQ7ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBUKSlyZXR1cm4gdD90aGlzLmV4dGVuZChDKHQpfHx6KHQpKTp0aGlzO2lmKGk9dC5fc291dGhXZXN0LGU9dC5fbm9ydGhFYXN0LCFpfHwhZSlyZXR1cm4gdGhpc31yZXR1cm4gbnx8bz8obi5sYXQ9TWF0aC5taW4oaS5sYXQsbi5sYXQpLG4ubG5nPU1hdGgubWluKGkubG5nLG4ubG5nKSxvLmxhdD1NYXRoLm1heChlLmxhdCxvLmxhdCksby5sbmc9TWF0aC5tYXgoZS5sbmcsby5sbmcpKToodGhpcy5fc291dGhXZXN0PW5ldyBNKGkubGF0LGkubG5nKSx0aGlzLl9ub3J0aEVhc3Q9bmV3IE0oZS5sYXQsZS5sbmcpKSx0aGlzfSxwYWQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fc291dGhXZXN0LGU9dGhpcy5fbm9ydGhFYXN0LG49TWF0aC5hYnMoaS5sYXQtZS5sYXQpKnQsbz1NYXRoLmFicyhpLmxuZy1lLmxuZykqdDtyZXR1cm4gbmV3IFQobmV3IE0oaS5sYXQtbixpLmxuZy1vKSxuZXcgTShlLmxhdCtuLGUubG5nK28pKX0sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNKCh0aGlzLl9zb3V0aFdlc3QubGF0K3RoaXMuX25vcnRoRWFzdC5sYXQpLzIsKHRoaXMuX3NvdXRoV2VzdC5sbmcrdGhpcy5fbm9ydGhFYXN0LmxuZykvMil9LGdldFNvdXRoV2VzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3R9LGdldE5vcnRoRWFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub3J0aEVhc3R9LGdldE5vcnRoV2VzdDpmdW5jdGlvbigpe3JldHVybiBuZXcgTSh0aGlzLmdldE5vcnRoKCksdGhpcy5nZXRXZXN0KCkpfSxnZXRTb3V0aEVhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE0odGhpcy5nZXRTb3V0aCgpLHRoaXMuZ2V0RWFzdCgpKX0sZ2V0V2VzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubG5nfSxnZXRTb3V0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubGF0fSxnZXRFYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sbmd9LGdldE5vcnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sYXR9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3Q9Im51bWJlciI9PXR5cGVvZiB0WzBdfHx0IGluc3RhbmNlb2YgTXx8ImxhdCJpbiB0P0ModCk6eih0KTt2YXIgaSxlLG49dGhpcy5fc291dGhXZXN0LG89dGhpcy5fbm9ydGhFYXN0O3JldHVybiB0IGluc3RhbmNlb2YgVD8oaT10LmdldFNvdXRoV2VzdCgpLGU9dC5nZXROb3J0aEVhc3QoKSk6aT1lPXQsaS5sYXQ+PW4ubGF0JiZlLmxhdDw9by5sYXQmJmkubG5nPj1uLmxuZyYmZS5sbmc8PW8ubG5nfSxpbnRlcnNlY3RzOmZ1bmN0aW9uKHQpe3Q9eih0KTt2YXIgaT10aGlzLl9zb3V0aFdlc3QsZT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLG89dC5nZXROb3J0aEVhc3QoKSxzPW8ubGF0Pj1pLmxhdCYmbi5sYXQ8PWUubGF0LHI9by5sbmc+PWkubG5nJiZuLmxuZzw9ZS5sbmc7cmV0dXJuIHMmJnJ9LG92ZXJsYXBzOmZ1bmN0aW9uKHQpe3Q9eih0KTt2YXIgaT10aGlzLl9zb3V0aFdlc3QsZT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLG89dC5nZXROb3J0aEVhc3QoKSxzPW8ubGF0PmkubGF0JiZuLmxhdDxlLmxhdCxyPW8ubG5nPmkubG5nJiZuLmxuZzxlLmxuZztyZXR1cm4gcyYmcn0sdG9CQm94U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuZ2V0V2VzdCgpLHRoaXMuZ2V0U291dGgoKSx0aGlzLmdldEVhc3QoKSx0aGlzLmdldE5vcnRoKCldLmpvaW4oIiwiKX0sZXF1YWxzOmZ1bmN0aW9uKHQsaSl7cmV0dXJuISF0JiYodD16KHQpLHRoaXMuX3NvdXRoV2VzdC5lcXVhbHModC5nZXRTb3V0aFdlc3QoKSxpKSYmdGhpcy5fbm9ydGhFYXN0LmVxdWFscyh0LmdldE5vcnRoRWFzdCgpLGkpKX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuX3NvdXRoV2VzdHx8IXRoaXMuX25vcnRoRWFzdCl9fSxNLnByb3RvdHlwZT17ZXF1YWxzOmZ1bmN0aW9uKHQsaSl7cmV0dXJuISF0JiYodD1DKHQpLE1hdGgubWF4KE1hdGguYWJzKHRoaXMubGF0LXQubGF0KSxNYXRoLmFicyh0aGlzLmxuZy10LmxuZykpPD0odm9pZCAwPT09aT8xZS05OmkpKX0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIkxhdExuZygiK2EodGhpcy5sYXQsdCkrIiwgIithKHRoaXMubG5nLHQpKyIpIn0sZGlzdGFuY2VUbzpmdW5jdGlvbih0KXtyZXR1cm4gX2kuZGlzdGFuY2UodGhpcyxDKHQpKX0sd3JhcDpmdW5jdGlvbigpe3JldHVybiBfaS53cmFwTGF0TG5nKHRoaXMpfSx0b0JvdW5kczpmdW5jdGlvbih0KXt2YXIgaT0xODAqdC80MDA3NTAxNyxlPWkvTWF0aC5jb3MoTWF0aC5QSS8xODAqdGhpcy5sYXQpO3JldHVybiB6KFt0aGlzLmxhdC1pLHRoaXMubG5nLWVdLFt0aGlzLmxhdCtpLHRoaXMubG5nK2VdKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE0odGhpcy5sYXQsdGhpcy5sbmcsdGhpcy5hbHQpfX07dmFyIGNpPXtsYXRMbmdUb1BvaW50OmZ1bmN0aW9uKHQsaSl7dmFyIGU9dGhpcy5wcm9qZWN0aW9uLnByb2plY3QodCksbj10aGlzLnNjYWxlKGkpO3JldHVybiB0aGlzLnRyYW5zZm9ybWF0aW9uLl90cmFuc2Zvcm0oZSxuKX0scG9pbnRUb0xhdExuZzpmdW5jdGlvbih0LGkpe3ZhciBlPXRoaXMuc2NhbGUoaSksbj10aGlzLnRyYW5zZm9ybWF0aW9uLnVudHJhbnNmb3JtKHQsZSk7cmV0dXJuIHRoaXMucHJvamVjdGlvbi51bnByb2plY3Qobil9LHByb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvamVjdGlvbi5wcm9qZWN0KHQpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvamVjdGlvbi51bnByb2plY3QodCl9LHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAyNTYqTWF0aC5wb3coMix0KX0sem9vbTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codC8yNTYpL01hdGguTE4yfSxnZXRQcm9qZWN0ZWRCb3VuZHM6ZnVuY3Rpb24odCl7aWYodGhpcy5pbmZpbml0ZSlyZXR1cm4gbnVsbDt2YXIgaT10aGlzLnByb2plY3Rpb24uYm91bmRzLGU9dGhpcy5zY2FsZSh0KTtyZXR1cm4gbmV3IFAodGhpcy50cmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm0oaS5taW4sZSksdGhpcy50cmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm0oaS5tYXgsZSkpfSxpbmZpbml0ZTohMSx3cmFwTGF0TG5nOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMud3JhcExuZz9zKHQubG5nLHRoaXMud3JhcExuZywhMCk6dC5sbmc7cmV0dXJuIG5ldyBNKHRoaXMud3JhcExhdD9zKHQubGF0LHRoaXMud3JhcExhdCwhMCk6dC5sYXQsaSx0LmFsdCl9LHdyYXBMYXRMbmdCb3VuZHM6ZnVuY3Rpb24odCl7dmFyIGk9dC5nZXRDZW50ZXIoKSxlPXRoaXMud3JhcExhdExuZyhpKSxuPWkubGF0LWUubGF0LG89aS5sbmctZS5sbmc7aWYoMD09PW4mJjA9PT1vKXJldHVybiB0O3ZhciBzPXQuZ2V0U291dGhXZXN0KCkscj10LmdldE5vcnRoRWFzdCgpO3JldHVybiBuZXcgVChuZXcgTShzLmxhdC1uLHMubG5nLW8pLG5ldyBNKHIubGF0LW4sci5sbmctbykpfX0sX2k9aSh7fSxjaSx7d3JhcExuZzpbLTE4MCwxODBdLFI6NjM3MWUzLGRpc3RhbmNlOmZ1bmN0aW9uKHQsaSl7dmFyIGU9TWF0aC5QSS8xODAsbj10LmxhdCplLG89aS5sYXQqZSxzPU1hdGguc2luKChpLmxhdC10LmxhdCkqZS8yKSxyPU1hdGguc2luKChpLmxuZy10LmxuZykqZS8yKSxhPXMqcytNYXRoLmNvcyhuKSpNYXRoLmNvcyhvKSpyKnIsaD0yKk1hdGguYXRhbjIoTWF0aC5zcXJ0KGEpLE1hdGguc3FydCgxLWEpKTtyZXR1cm4gdGhpcy5SKmh9fSksZGk9e1I6NjM3ODEzNyxNQVhfTEFUSVRVREU6ODUuMDUxMTI4Nzc5OCxwcm9qZWN0OmZ1bmN0aW9uKHQpe3ZhciBpPU1hdGguUEkvMTgwLGU9dGhpcy5NQVhfTEFUSVRVREUsbj1NYXRoLm1heChNYXRoLm1pbihlLHQubGF0KSwtZSksbz1NYXRoLnNpbihuKmkpO3JldHVybiBuZXcgeCh0aGlzLlIqdC5sbmcqaSx0aGlzLlIqTWF0aC5sb2coKDErbykvKDEtbykpLzIpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCl7dmFyIGk9MTgwL01hdGguUEk7cmV0dXJuIG5ldyBNKCgyKk1hdGguYXRhbihNYXRoLmV4cCh0LnkvdGhpcy5SKSktTWF0aC5QSS8yKSppLHQueCppL3RoaXMuUil9LGJvdW5kczpmdW5jdGlvbigpe3ZhciB0PTYzNzgxMzcqTWF0aC5QSTtyZXR1cm4gbmV3IFAoWy10LC10XSxbdCx0XSl9KCl9O1oucHJvdG90eXBlPXt0cmFuc2Zvcm06ZnVuY3Rpb24odCxpKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtKHQuY2xvbmUoKSxpKX0sX3RyYW5zZm9ybTpmdW5jdGlvbih0LGkpe3JldHVybiBpPWl8fDEsdC54PWkqKHRoaXMuX2EqdC54K3RoaXMuX2IpLHQueT1pKih0aGlzLl9jKnQueSt0aGlzLl9kKSx0fSx1bnRyYW5zZm9ybTpmdW5jdGlvbih0LGkpe3JldHVybiBpPWl8fDEsbmV3IHgoKHQueC9pLXRoaXMuX2IpL3RoaXMuX2EsKHQueS9pLXRoaXMuX2QpL3RoaXMuX2MpfX07dmFyIHBpLG1pLGZpLGdpLHZpPWkoe30sX2kse2NvZGU6IkVQU0c6Mzg1NyIscHJvamVjdGlvbjpkaSx0cmFuc2Zvcm1hdGlvbjpmdW5jdGlvbigpe3ZhciB0PS41LyhNYXRoLlBJKmRpLlIpO3JldHVybiBTKHQsLjUsLXQsLjUpfSgpfSkseWk9aSh7fSx2aSx7Y29kZToiRVBTRzo5MDA5MTMifSkseGk9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLHdpPSJBY3RpdmVYT2JqZWN0ImluIHdpbmRvdyxMaT13aSYmIWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIsUGk9Im1zTGF1bmNoVXJpImluIG5hdmlnYXRvciYmISgiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50KSxiaT1BKCJ3ZWJraXQiKSxUaT1BKCJhbmRyb2lkIiksemk9QSgiYW5kcm9pZCAyIil8fEEoImFuZHJvaWQgMyIpLE1pPXBhcnNlSW50KC9XZWJLaXRcLyhbMC05XSspfCQvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudClbMV0sMTApLENpPVRpJiZBKCJHb29nbGUiKSYmTWk8NTM3JiYhKCJBdWRpb05vZGUiaW4gd2luZG93KSxaaT0hIXdpbmRvdy5vcGVyYSxTaT1BKCJjaHJvbWUiKSxFaT1BKCJnZWNrbyIpJiYhYmkmJiFaaSYmIXdpLGtpPSFTaSYmQSgic2FmYXJpIiksQWk9QSgicGhhbnRvbSIpLElpPSJPVHJhbnNpdGlvbiJpbiB4aSxCaT0wPT09bmF2aWdhdG9yLnBsYXRmb3JtLmluZGV4T2YoIldpbiIpLE9pPXdpJiYidHJhbnNpdGlvbiJpbiB4aSxSaT0iV2ViS2l0Q1NTTWF0cml4ImluIHdpbmRvdyYmIm0xMSJpbiBuZXcgd2luZG93LldlYktpdENTU01hdHJpeCYmIXppLERpPSJNb3pQZXJzcGVjdGl2ZSJpbiB4aSxOaT0hd2luZG93LkxfRElTQUJMRV8zRCYmKE9pfHxSaXx8RGkpJiYhSWkmJiFBaSxqaT0idW5kZWZpbmVkIiE9dHlwZW9mIG9yaWVudGF0aW9ufHxBKCJtb2JpbGUiKSxXaT1qaSYmYmksSGk9amkmJlJpLEZpPSF3aW5kb3cuUG9pbnRlckV2ZW50JiZ3aW5kb3cuTVNQb2ludGVyRXZlbnQsVWk9ISghd2luZG93LlBvaW50ZXJFdmVudCYmIUZpKSxWaT0hd2luZG93LkxfTk9fVE9VQ0gmJihVaXx8Im9udG91Y2hzdGFydCJpbiB3aW5kb3d8fHdpbmRvdy5Eb2N1bWVudFRvdWNoJiZkb2N1bWVudCBpbnN0YW5jZW9mIHdpbmRvdy5Eb2N1bWVudFRvdWNoKSxxaT1qaSYmWmksR2k9amkmJkVpLEtpPSh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8d2luZG93LnNjcmVlbi5kZXZpY2VYRFBJL3dpbmRvdy5zY3JlZW4ubG9naWNhbFhEUEkpPjEsWWk9ISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0LFhpPSEoIWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROU3x8IUUoInN2ZyIpLmNyZWF0ZVNWR1JlY3QpLEppPSFYaSYmZnVuY3Rpb24oKXt0cnl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5pbm5lckhUTUw9Jzx2OnNoYXBlIGFkaj0iMSIvPic7dmFyIGk9dC5maXJzdENoaWxkO3JldHVybiBpLnN0eWxlLmJlaGF2aW9yPSJ1cmwoI2RlZmF1bHQjVk1MKSIsaSYmIm9iamVjdCI9PXR5cGVvZiBpLmFkan1jYXRjaCh0KXtyZXR1cm4hMX19KCksJGk9KE9iamVjdC5mcmVlemV8fE9iamVjdCkoe2llOndpLGllbHQ5OkxpLGVkZ2U6UGksd2Via2l0OmJpLGFuZHJvaWQ6VGksYW5kcm9pZDIzOnppLGFuZHJvaWRTdG9jazpDaSxvcGVyYTpaaSxjaHJvbWU6U2ksZ2Vja286RWksc2FmYXJpOmtpLHBoYW50b206QWksb3BlcmExMjpJaSx3aW46QmksaWUzZDpPaSx3ZWJraXQzZDpSaSxnZWNrbzNkOkRpLGFueTNkOk5pLG1vYmlsZTpqaSxtb2JpbGVXZWJraXQ6V2ksbW9iaWxlV2Via2l0M2Q6SGksbXNQb2ludGVyOkZpLHBvaW50ZXI6VWksdG91Y2g6VmksbW9iaWxlT3BlcmE6cWksbW9iaWxlR2Vja286R2kscmV0aW5hOktpLGNhbnZhczpZaSxzdmc6WGksdm1sOkppfSksUWk9Rmk/Ik1TUG9pbnRlckRvd24iOiJwb2ludGVyZG93biIsdGU9Rmk/Ik1TUG9pbnRlck1vdmUiOiJwb2ludGVybW92ZSIsaWU9Rmk/Ik1TUG9pbnRlclVwIjoicG9pbnRlcnVwIixlZT1GaT8iTVNQb2ludGVyQ2FuY2VsIjoicG9pbnRlcmNhbmNlbCIsbmU9WyJJTlBVVCIsIlNFTEVDVCIsIk9QVElPTiJdLG9lPXt9LHNlPSExLHJlPTAsYWU9Rmk/Ik1TUG9pbnRlckRvd24iOlVpPyJwb2ludGVyZG93biI6InRvdWNoc3RhcnQiLGhlPUZpPyJNU1BvaW50ZXJVcCI6VWk/InBvaW50ZXJ1cCI6InRvdWNoZW5kIix1ZT0iX2xlYWZsZXRfIixsZT0iX2xlYWZsZXRfZXZlbnRzIixjZT1CaSYmU2k/Mip3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzpFaT93aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzoxLF9lPXt9LGRlPShPYmplY3QuZnJlZXplfHxPYmplY3QpKHtvbjpWLG9mZjpxLHN0b3BQcm9wYWdhdGlvbjpZLGRpc2FibGVTY3JvbGxQcm9wYWdhdGlvbjpYLGRpc2FibGVDbGlja1Byb3BhZ2F0aW9uOkoscHJldmVudERlZmF1bHQ6JCxzdG9wOlEsZ2V0TW91c2VQb3NpdGlvbjp0dCxnZXRXaGVlbERlbHRhOml0LGZha2VTdG9wOmV0LHNraXBwZWQ6bnQsaXNFeHRlcm5hbFRhcmdldDpvdCxhZGRMaXN0ZW5lcjpWLHJlbW92ZUxpc3RlbmVyOnF9KSxwZT14dChbInRyYW5zZm9ybSIsIldlYmtpdFRyYW5zZm9ybSIsIk9UcmFuc2Zvcm0iLCJNb3pUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSJdKSxtZT14dChbIndlYmtpdFRyYW5zaXRpb24iLCJ0cmFuc2l0aW9uIiwiT1RyYW5zaXRpb24iLCJNb3pUcmFuc2l0aW9uIiwibXNUcmFuc2l0aW9uIl0pLGZlPSJ3ZWJraXRUcmFuc2l0aW9uIj09PW1lfHwiT1RyYW5zaXRpb24iPT09bWU/bWUrIkVuZCI6InRyYW5zaXRpb25lbmQiO2lmKCJvbnNlbGVjdHN0YXJ0ImluIGRvY3VtZW50KW1pPWZ1bmN0aW9uKCl7Vih3aW5kb3csInNlbGVjdHN0YXJ0IiwkKX0sZmk9ZnVuY3Rpb24oKXtxKHdpbmRvdywic2VsZWN0c3RhcnQiLCQpfTtlbHNle3ZhciBnZT14dChbInVzZXJTZWxlY3QiLCJXZWJraXRVc2VyU2VsZWN0IiwiT1VzZXJTZWxlY3QiLCJNb3pVc2VyU2VsZWN0IiwibXNVc2VyU2VsZWN0Il0pO21pPWZ1bmN0aW9uKCl7aWYoZ2Upe3ZhciB0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZTtnaT10W2dlXSx0W2dlXT0ibm9uZSJ9fSxmaT1mdW5jdGlvbigpe2dlJiYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlW2dlXT1naSxnaT12b2lkIDApfX12YXIgdmUseWUseGU9KE9iamVjdC5mcmVlemV8fE9iamVjdCkoe1RSQU5TRk9STTpwZSxUUkFOU0lUSU9OOm1lLFRSQU5TSVRJT05fRU5EOmZlLGdldDpydCxnZXRTdHlsZTphdCxjcmVhdGU6aHQscmVtb3ZlOnV0LGVtcHR5Omx0LHRvRnJvbnQ6Y3QsdG9CYWNrOl90LGhhc0NsYXNzOmR0LGFkZENsYXNzOnB0LHJlbW92ZUNsYXNzOm10LHNldENsYXNzOmZ0LGdldENsYXNzOmd0LHNldE9wYWNpdHk6dnQsdGVzdFByb3A6eHQsc2V0VHJhbnNmb3JtOnd0LHNldFBvc2l0aW9uOkx0LGdldFBvc2l0aW9uOlB0LGRpc2FibGVUZXh0U2VsZWN0aW9uOm1pLGVuYWJsZVRleHRTZWxlY3Rpb246ZmksZGlzYWJsZUltYWdlRHJhZzpidCxlbmFibGVJbWFnZURyYWc6VHQscHJldmVudE91dGxpbmU6enQscmVzdG9yZU91dGxpbmU6TXR9KSx3ZT11aS5leHRlbmQoe3J1bjpmdW5jdGlvbih0LGksZSxuKXt0aGlzLnN0b3AoKSx0aGlzLl9lbD10LHRoaXMuX2luUHJvZ3Jlc3M9ITAsdGhpcy5fZHVyYXRpb249ZXx8LjI1LHRoaXMuX2Vhc2VPdXRQb3dlcj0xL01hdGgubWF4KG58fC41LC4yKSx0aGlzLl9zdGFydFBvcz1QdCh0KSx0aGlzLl9vZmZzZXQ9aS5zdWJ0cmFjdCh0aGlzLl9zdGFydFBvcyksdGhpcy5fc3RhcnRUaW1lPStuZXcgRGF0ZSx0aGlzLmZpcmUoInN0YXJ0IiksdGhpcy5fYW5pbWF0ZSgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5faW5Qcm9ncmVzcyYmKHRoaXMuX3N0ZXAoITApLHRoaXMuX2NvbXBsZXRlKCkpfSxfYW5pbWF0ZTpmdW5jdGlvbigpe3RoaXMuX2FuaW1JZD1mKHRoaXMuX2FuaW1hdGUsdGhpcyksdGhpcy5fc3RlcCgpfSxfc3RlcDpmdW5jdGlvbih0KXt2YXIgaT0rbmV3IERhdGUtdGhpcy5fc3RhcnRUaW1lLGU9MWUzKnRoaXMuX2R1cmF0aW9uO2k8ZT90aGlzLl9ydW5GcmFtZSh0aGlzLl9lYXNlT3V0KGkvZSksdCk6KHRoaXMuX3J1bkZyYW1lKDEpLHRoaXMuX2NvbXBsZXRlKCkpfSxfcnVuRnJhbWU6ZnVuY3Rpb24odCxpKXt2YXIgZT10aGlzLl9zdGFydFBvcy5hZGQodGhpcy5fb2Zmc2V0Lm11bHRpcGx5QnkodCkpO2kmJmUuX3JvdW5kKCksTHQodGhpcy5fZWwsZSksdGhpcy5maXJlKCJzdGVwIil9LF9jb21wbGV0ZTpmdW5jdGlvbigpe2codGhpcy5fYW5pbUlkKSx0aGlzLl9pblByb2dyZXNzPSExLHRoaXMuZmlyZSgiZW5kIil9LF9lYXNlT3V0OmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCx0aGlzLl9lYXNlT3V0UG93ZXIpfX0pLExlPXVpLmV4dGVuZCh7b3B0aW9uczp7Y3JzOnZpLGNlbnRlcjp2b2lkIDAsem9vbTp2b2lkIDAsbWluWm9vbTp2b2lkIDAsbWF4Wm9vbTp2b2lkIDAsbGF5ZXJzOltdLG1heEJvdW5kczp2b2lkIDAscmVuZGVyZXI6dm9pZCAwLHpvb21BbmltYXRpb246ITAsem9vbUFuaW1hdGlvblRocmVzaG9sZDo0LGZhZGVBbmltYXRpb246ITAsbWFya2VyWm9vbUFuaW1hdGlvbjohMCx0cmFuc2Zvcm0zRExpbWl0OjgzODg2MDgsem9vbVNuYXA6MSx6b29tRGVsdGE6MSx0cmFja1Jlc2l6ZTohMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGkpe2k9bCh0aGlzLGkpLHRoaXMuX2luaXRDb250YWluZXIodCksdGhpcy5faW5pdExheW91dCgpLHRoaXMuX29uUmVzaXplPWUodGhpcy5fb25SZXNpemUsdGhpcyksdGhpcy5faW5pdEV2ZW50cygpLGkubWF4Qm91bmRzJiZ0aGlzLnNldE1heEJvdW5kcyhpLm1heEJvdW5kcyksdm9pZCAwIT09aS56b29tJiYodGhpcy5fem9vbT10aGlzLl9saW1pdFpvb20oaS56b29tKSksaS5jZW50ZXImJnZvaWQgMCE9PWkuem9vbSYmdGhpcy5zZXRWaWV3KEMoaS5jZW50ZXIpLGkuem9vbSx7cmVzZXQ6ITB9KSx0aGlzLl9oYW5kbGVycz1bXSx0aGlzLl9sYXllcnM9e30sdGhpcy5fem9vbUJvdW5kTGF5ZXJzPXt9LHRoaXMuX3NpemVDaGFuZ2VkPSEwLHRoaXMuY2FsbEluaXRIb29rcygpLHRoaXMuX3pvb21BbmltYXRlZD1tZSYmTmkmJiFxaSYmdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24sdGhpcy5fem9vbUFuaW1hdGVkJiYodGhpcy5fY3JlYXRlQW5pbVByb3h5KCksVih0aGlzLl9wcm94eSxmZSx0aGlzLl9jYXRjaFRyYW5zaXRpb25FbmQsdGhpcykpLHRoaXMuX2FkZExheWVycyh0aGlzLm9wdGlvbnMubGF5ZXJzKX0sc2V0VmlldzpmdW5jdGlvbih0LGUsbil7cmV0dXJuIGU9dm9pZCAwPT09ZT90aGlzLl96b29tOnRoaXMuX2xpbWl0Wm9vbShlKSx0PXRoaXMuX2xpbWl0Q2VudGVyKEModCksZSx0aGlzLm9wdGlvbnMubWF4Qm91bmRzKSxuPW58fHt9LHRoaXMuX3N0b3AoKSx0aGlzLl9sb2FkZWQmJiFuLnJlc2V0JiYhMCE9PW4mJih2b2lkIDAhPT1uLmFuaW1hdGUmJihuLnpvb209aSh7YW5pbWF0ZTpuLmFuaW1hdGV9LG4uem9vbSksbi5wYW49aSh7YW5pbWF0ZTpuLmFuaW1hdGUsZHVyYXRpb246bi5kdXJhdGlvbn0sbi5wYW4pKSx0aGlzLl96b29tIT09ZT90aGlzLl90cnlBbmltYXRlZFpvb20mJnRoaXMuX3RyeUFuaW1hdGVkWm9vbSh0LGUsbi56b29tKTp0aGlzLl90cnlBbmltYXRlZFBhbih0LG4ucGFuKSk/KGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLHRoaXMpOih0aGlzLl9yZXNldFZpZXcodCxlKSx0aGlzKX0sc2V0Wm9vbTpmdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLl9sb2FkZWQ/dGhpcy5zZXRWaWV3KHRoaXMuZ2V0Q2VudGVyKCksdCx7em9vbTppfSk6KHRoaXMuX3pvb209dCx0aGlzKX0sem9vbUluOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQ9dHx8KE5pP3RoaXMub3B0aW9ucy56b29tRGVsdGE6MSksdGhpcy5zZXRab29tKHRoaXMuX3pvb20rdCxpKX0sem9vbU91dDpmdW5jdGlvbih0LGkpe3JldHVybiB0PXR8fChOaT90aGlzLm9wdGlvbnMuem9vbURlbHRhOjEpLHRoaXMuc2V0Wm9vbSh0aGlzLl96b29tLXQsaSl9LHNldFpvb21Bcm91bmQ6ZnVuY3Rpb24odCxpLGUpe3ZhciBuPXRoaXMuZ2V0Wm9vbVNjYWxlKGkpLG89dGhpcy5nZXRTaXplKCkuZGl2aWRlQnkoMikscz0odCBpbnN0YW5jZW9mIHg/dDp0aGlzLmxhdExuZ1RvQ29udGFpbmVyUG9pbnQodCkpLnN1YnRyYWN0KG8pLm11bHRpcGx5QnkoMS0xL24pLHI9dGhpcy5jb250YWluZXJQb2ludFRvTGF0TG5nKG8uYWRkKHMpKTtyZXR1cm4gdGhpcy5zZXRWaWV3KHIsaSx7em9vbTplfSl9LF9nZXRCb3VuZHNDZW50ZXJab29tOmZ1bmN0aW9uKHQsaSl7aT1pfHx7fSx0PXQuZ2V0Qm91bmRzP3QuZ2V0Qm91bmRzKCk6eih0KTt2YXIgZT13KGkucGFkZGluZ1RvcExlZnR8fGkucGFkZGluZ3x8WzAsMF0pLG49dyhpLnBhZGRpbmdCb3R0b21SaWdodHx8aS5wYWRkaW5nfHxbMCwwXSksbz10aGlzLmdldEJvdW5kc1pvb20odCwhMSxlLmFkZChuKSk7aWYoKG89Im51bWJlciI9PXR5cGVvZiBpLm1heFpvb20/TWF0aC5taW4oaS5tYXhab29tLG8pOm8pPT09MS8wKXJldHVybntjZW50ZXI6dC5nZXRDZW50ZXIoKSx6b29tOm99O3ZhciBzPW4uc3VidHJhY3QoZSkuZGl2aWRlQnkoMikscj10aGlzLnByb2plY3QodC5nZXRTb3V0aFdlc3QoKSxvKSxhPXRoaXMucHJvamVjdCh0LmdldE5vcnRoRWFzdCgpLG8pO3JldHVybntjZW50ZXI6dGhpcy51bnByb2plY3Qoci5hZGQoYSkuZGl2aWRlQnkoMikuYWRkKHMpLG8pLHpvb206b319LGZpdEJvdW5kczpmdW5jdGlvbih0LGkpe2lmKCEodD16KHQpKS5pc1ZhbGlkKCkpdGhyb3cgbmV3IEVycm9yKCJCb3VuZHMgYXJlIG5vdCB2YWxpZC4iKTt2YXIgZT10aGlzLl9nZXRCb3VuZHNDZW50ZXJab29tKHQsaSk7cmV0dXJuIHRoaXMuc2V0VmlldyhlLmNlbnRlcixlLnpvb20saSl9LGZpdFdvcmxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpdEJvdW5kcyhbWy05MCwtMTgwXSxbOTAsMTgwXV0sdCl9LHBhblRvOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMuc2V0Vmlldyh0LHRoaXMuX3pvb20se3BhbjppfSl9LHBhbkJ5OmZ1bmN0aW9uKHQsaSl7aWYodD13KHQpLnJvdW5kKCksaT1pfHx7fSwhdC54JiYhdC55KXJldHVybiB0aGlzLmZpcmUoIm1vdmVlbmQiKTtpZighMCE9PWkuYW5pbWF0ZSYmIXRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKHQpKXJldHVybiB0aGlzLl9yZXNldFZpZXcodGhpcy51bnByb2plY3QodGhpcy5wcm9qZWN0KHRoaXMuZ2V0Q2VudGVyKCkpLmFkZCh0KSksdGhpcy5nZXRab29tKCkpLHRoaXM7aWYodGhpcy5fcGFuQW5pbXx8KHRoaXMuX3BhbkFuaW09bmV3IHdlLHRoaXMuX3BhbkFuaW0ub24oe3N0ZXA6dGhpcy5fb25QYW5UcmFuc2l0aW9uU3RlcCxlbmQ6dGhpcy5fb25QYW5UcmFuc2l0aW9uRW5kfSx0aGlzKSksaS5ub01vdmVTdGFydHx8dGhpcy5maXJlKCJtb3Zlc3RhcnQiKSwhMSE9PWkuYW5pbWF0ZSl7cHQodGhpcy5fbWFwUGFuZSwibGVhZmxldC1wYW4tYW5pbSIpO3ZhciBlPXRoaXMuX2dldE1hcFBhbmVQb3MoKS5zdWJ0cmFjdCh0KS5yb3VuZCgpO3RoaXMuX3BhbkFuaW0ucnVuKHRoaXMuX21hcFBhbmUsZSxpLmR1cmF0aW9ufHwuMjUsaS5lYXNlTGluZWFyaXR5KX1lbHNlIHRoaXMuX3Jhd1BhbkJ5KHQpLHRoaXMuZmlyZSgibW92ZSIpLmZpcmUoIm1vdmVlbmQiKTtyZXR1cm4gdGhpc30sZmx5VG86ZnVuY3Rpb24odCxpLGUpe2Z1bmN0aW9uIG4odCl7dmFyIGk9KGcqZy1tKm0rKHQ/LTE6MSkqeCp4KnYqdikvKDIqKHQ/ZzptKSp4KnYpLGU9TWF0aC5zcXJ0KGkqaSsxKS1pO3JldHVybiBlPDFlLTk/LTE4Ok1hdGgubG9nKGUpfWZ1bmN0aW9uIG8odCl7cmV0dXJuKE1hdGguZXhwKHQpLU1hdGguZXhwKC10KSkvMn1mdW5jdGlvbiBzKHQpe3JldHVybihNYXRoLmV4cCh0KStNYXRoLmV4cCgtdCkpLzJ9ZnVuY3Rpb24gcih0KXtyZXR1cm4gbyh0KS9zKHQpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIG0qKHModykvcyh3K3kqdCkpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIG0qKHModykqcih3K3kqdCktbyh3KSkveH1mdW5jdGlvbiB1KHQpe3JldHVybiAxLU1hdGgucG93KDEtdCwxLjUpfWZ1bmN0aW9uIGwoKXt2YXIgZT0oRGF0ZS5ub3coKS1MKS9iLG49dShlKSpQO2U8PTE/KHRoaXMuX2ZseVRvRnJhbWU9ZihsLHRoaXMpLHRoaXMuX21vdmUodGhpcy51bnByb2plY3QoYy5hZGQoXy5zdWJ0cmFjdChjKS5tdWx0aXBseUJ5KGgobikvdikpLHApLHRoaXMuZ2V0U2NhbGVab29tKG0vYShuKSxwKSx7Zmx5VG86ITB9KSk6dGhpcy5fbW92ZSh0LGkpLl9tb3ZlRW5kKCEwKX1pZighMT09PShlPWV8fHt9KS5hbmltYXRlfHwhTmkpcmV0dXJuIHRoaXMuc2V0Vmlldyh0LGksZSk7dGhpcy5fc3RvcCgpO3ZhciBjPXRoaXMucHJvamVjdCh0aGlzLmdldENlbnRlcigpKSxfPXRoaXMucHJvamVjdCh0KSxkPXRoaXMuZ2V0U2l6ZSgpLHA9dGhpcy5fem9vbTt0PUModCksaT12b2lkIDA9PT1pP3A6aTt2YXIgbT1NYXRoLm1heChkLngsZC55KSxnPW0qdGhpcy5nZXRab29tU2NhbGUocCxpKSx2PV8uZGlzdGFuY2VUbyhjKXx8MSx5PTEuNDIseD15Knksdz1uKDApLEw9RGF0ZS5ub3coKSxQPShuKDEpLXcpL3ksYj1lLmR1cmF0aW9uPzFlMyplLmR1cmF0aW9uOjFlMypQKi44O3JldHVybiB0aGlzLl9tb3ZlU3RhcnQoITAsZS5ub01vdmVTdGFydCksbC5jYWxsKHRoaXMpLHRoaXN9LGZseVRvQm91bmRzOmZ1bmN0aW9uKHQsaSl7dmFyIGU9dGhpcy5fZ2V0Qm91bmRzQ2VudGVyWm9vbSh0LGkpO3JldHVybiB0aGlzLmZseVRvKGUuY2VudGVyLGUuem9vbSxpKX0sc2V0TWF4Qm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybih0PXoodCkpLmlzVmFsaWQoKT8odGhpcy5vcHRpb25zLm1heEJvdW5kcyYmdGhpcy5vZmYoIm1vdmVlbmQiLHRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcyksdGhpcy5vcHRpb25zLm1heEJvdW5kcz10LHRoaXMuX2xvYWRlZCYmdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKCksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKSk6KHRoaXMub3B0aW9ucy5tYXhCb3VuZHM9bnVsbCx0aGlzLm9mZigibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKSl9LHNldE1pblpvb206ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLm1pblpvb207cmV0dXJuIHRoaXMub3B0aW9ucy5taW5ab29tPXQsdGhpcy5fbG9hZGVkJiZpIT09dCYmKHRoaXMuZmlyZSgiem9vbWxldmVsc2NoYW5nZSIpLHRoaXMuZ2V0Wm9vbSgpPHRoaXMub3B0aW9ucy5taW5ab29tKT90aGlzLnNldFpvb20odCk6dGhpc30sc2V0TWF4Wm9vbTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnMubWF4Wm9vbTtyZXR1cm4gdGhpcy5vcHRpb25zLm1heFpvb209dCx0aGlzLl9sb2FkZWQmJmkhPT10JiYodGhpcy5maXJlKCJ6b29tbGV2ZWxzY2hhbmdlIiksdGhpcy5nZXRab29tKCk+dGhpcy5vcHRpb25zLm1heFpvb20pP3RoaXMuc2V0Wm9vbSh0KTp0aGlzfSxwYW5JbnNpZGVCb3VuZHM6ZnVuY3Rpb24odCxpKXt0aGlzLl9lbmZvcmNpbmdCb3VuZHM9ITA7dmFyIGU9dGhpcy5nZXRDZW50ZXIoKSxuPXRoaXMuX2xpbWl0Q2VudGVyKGUsdGhpcy5fem9vbSx6KHQpKTtyZXR1cm4gZS5lcXVhbHMobil8fHRoaXMucGFuVG8obixpKSx0aGlzLl9lbmZvcmNpbmdCb3VuZHM9ITEsdGhpc30saW52YWxpZGF0ZVNpemU6ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2xvYWRlZClyZXR1cm4gdGhpczt0PWkoe2FuaW1hdGU6ITEscGFuOiEwfSwhMD09PXQ/e2FuaW1hdGU6ITB9OnQpO3ZhciBuPXRoaXMuZ2V0U2l6ZSgpO3RoaXMuX3NpemVDaGFuZ2VkPSEwLHRoaXMuX2xhc3RDZW50ZXI9bnVsbDt2YXIgbz10aGlzLmdldFNpemUoKSxzPW4uZGl2aWRlQnkoMikucm91bmQoKSxyPW8uZGl2aWRlQnkoMikucm91bmQoKSxhPXMuc3VidHJhY3Qocik7cmV0dXJuIGEueHx8YS55Pyh0LmFuaW1hdGUmJnQucGFuP3RoaXMucGFuQnkoYSk6KHQucGFuJiZ0aGlzLl9yYXdQYW5CeShhKSx0aGlzLmZpcmUoIm1vdmUiKSx0LmRlYm91bmNlTW92ZWVuZD8oY2xlYXJUaW1lb3V0KHRoaXMuX3NpemVUaW1lciksdGhpcy5fc2l6ZVRpbWVyPXNldFRpbWVvdXQoZSh0aGlzLmZpcmUsdGhpcywibW92ZWVuZCIpLDIwMCkpOnRoaXMuZmlyZSgibW92ZWVuZCIpKSx0aGlzLmZpcmUoInJlc2l6ZSIse29sZFNpemU6bixuZXdTaXplOm99KSk6dGhpc30sc3RvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldFpvb20odGhpcy5fbGltaXRab29tKHRoaXMuX3pvb20pKSx0aGlzLm9wdGlvbnMuem9vbVNuYXB8fHRoaXMuZmlyZSgidmlld3Jlc2V0IiksdGhpcy5fc3RvcCgpfSxsb2NhdGU6ZnVuY3Rpb24odCl7aWYodD10aGlzLl9sb2NhdGVPcHRpb25zPWkoe3RpbWVvdXQ6MWU0LHdhdGNoOiExfSx0KSwhKCJnZW9sb2NhdGlvbiJpbiBuYXZpZ2F0b3IpKXJldHVybiB0aGlzLl9oYW5kbGVHZW9sb2NhdGlvbkVycm9yKHtjb2RlOjAsbWVzc2FnZToiR2VvbG9jYXRpb24gbm90IHN1cHBvcnRlZC4ifSksdGhpczt2YXIgbj1lKHRoaXMuX2hhbmRsZUdlb2xvY2F0aW9uUmVzcG9uc2UsdGhpcyksbz1lKHRoaXMuX2hhbmRsZUdlb2xvY2F0aW9uRXJyb3IsdGhpcyk7cmV0dXJuIHQud2F0Y2g/dGhpcy5fbG9jYXRpb25XYXRjaElkPW5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKG4sbyx0KTpuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKG4sbyx0KSx0aGlzfSxzdG9wTG9jYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG5hdmlnYXRvci5nZW9sb2NhdGlvbiYmbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2gmJm5hdmlnYXRvci5nZW9sb2NhdGlvbi5jbGVhcldhdGNoKHRoaXMuX2xvY2F0aW9uV2F0Y2hJZCksdGhpcy5fbG9jYXRlT3B0aW9ucyYmKHRoaXMuX2xvY2F0ZU9wdGlvbnMuc2V0Vmlldz0hMSksdGhpc30sX2hhbmRsZUdlb2xvY2F0aW9uRXJyb3I6ZnVuY3Rpb24odCl7dmFyIGk9dC5jb2RlLGU9dC5tZXNzYWdlfHwoMT09PWk/InBlcm1pc3Npb24gZGVuaWVkIjoyPT09aT8icG9zaXRpb24gdW5hdmFpbGFibGUiOiJ0aW1lb3V0Iik7dGhpcy5fbG9jYXRlT3B0aW9ucy5zZXRWaWV3JiYhdGhpcy5fbG9hZGVkJiZ0aGlzLmZpdFdvcmxkKCksdGhpcy5maXJlKCJsb2NhdGlvbmVycm9yIix7Y29kZTppLG1lc3NhZ2U6Ikdlb2xvY2F0aW9uIGVycm9yOiAiK2UrIi4ifSl9LF9oYW5kbGVHZW9sb2NhdGlvblJlc3BvbnNlOmZ1bmN0aW9uKHQpe3ZhciBpPW5ldyBNKHQuY29vcmRzLmxhdGl0dWRlLHQuY29vcmRzLmxvbmdpdHVkZSksZT1pLnRvQm91bmRzKHQuY29vcmRzLmFjY3VyYWN5KSxuPXRoaXMuX2xvY2F0ZU9wdGlvbnM7aWYobi5zZXRWaWV3KXt2YXIgbz10aGlzLmdldEJvdW5kc1pvb20oZSk7dGhpcy5zZXRWaWV3KGksbi5tYXhab29tP01hdGgubWluKG8sbi5tYXhab29tKTpvKX12YXIgcz17bGF0bG5nOmksYm91bmRzOmUsdGltZXN0YW1wOnQudGltZXN0YW1wfTtmb3IodmFyIHIgaW4gdC5jb29yZHMpIm51bWJlciI9PXR5cGVvZiB0LmNvb3Jkc1tyXSYmKHNbcl09dC5jb29yZHNbcl0pO3RoaXMuZmlyZSgibG9jYXRpb25mb3VuZCIscyl9LGFkZEhhbmRsZXI6ZnVuY3Rpb24odCxpKXtpZighaSlyZXR1cm4gdGhpczt2YXIgZT10aGlzW3RdPW5ldyBpKHRoaXMpO3JldHVybiB0aGlzLl9oYW5kbGVycy5wdXNoKGUpLHRoaXMub3B0aW9uc1t0XSYmZS5lbmFibGUoKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtpZih0aGlzLl9pbml0RXZlbnRzKCEwKSx0aGlzLl9jb250YWluZXJJZCE9PXRoaXMuX2NvbnRhaW5lci5fbGVhZmxldF9pZCl0aHJvdyBuZXcgRXJyb3IoIk1hcCBjb250YWluZXIgaXMgYmVpbmcgcmV1c2VkIGJ5IGFub3RoZXIgaW5zdGFuY2UiKTt0cnl7ZGVsZXRlIHRoaXMuX2NvbnRhaW5lci5fbGVhZmxldF9pZCxkZWxldGUgdGhpcy5fY29udGFpbmVySWR9Y2F0Y2godCl7dGhpcy5fY29udGFpbmVyLl9sZWFmbGV0X2lkPXZvaWQgMCx0aGlzLl9jb250YWluZXJJZD12b2lkIDB9dm9pZCAwIT09dGhpcy5fbG9jYXRpb25XYXRjaElkJiZ0aGlzLnN0b3BMb2NhdGUoKSx0aGlzLl9zdG9wKCksdXQodGhpcy5fbWFwUGFuZSksdGhpcy5fY2xlYXJDb250cm9sUG9zJiZ0aGlzLl9jbGVhckNvbnRyb2xQb3MoKSx0aGlzLl9jbGVhckhhbmRsZXJzKCksdGhpcy5fbG9hZGVkJiZ0aGlzLmZpcmUoInVubG9hZCIpO3ZhciB0O2Zvcih0IGluIHRoaXMuX2xheWVycyl0aGlzLl9sYXllcnNbdF0ucmVtb3ZlKCk7Zm9yKHQgaW4gdGhpcy5fcGFuZXMpdXQodGhpcy5fcGFuZXNbdF0pO3JldHVybiB0aGlzLl9sYXllcnM9W10sdGhpcy5fcGFuZXM9W10sZGVsZXRlIHRoaXMuX21hcFBhbmUsZGVsZXRlIHRoaXMuX3JlbmRlcmVyLHRoaXN9LGNyZWF0ZVBhbmU6ZnVuY3Rpb24odCxpKXt2YXIgZT1odCgiZGl2IiwibGVhZmxldC1wYW5lIisodD8iIGxlYWZsZXQtIit0LnJlcGxhY2UoIlBhbmUiLCIiKSsiLXBhbmUiOiIiKSxpfHx0aGlzLl9tYXBQYW5lKTtyZXR1cm4gdCYmKHRoaXMuX3BhbmVzW3RdPWUpLGV9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja0lmTG9hZGVkKCksdGhpcy5fbGFzdENlbnRlciYmIXRoaXMuX21vdmVkKCk/dGhpcy5fbGFzdENlbnRlcjp0aGlzLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkpfSxnZXRab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvb219LGdldEJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0UGl4ZWxCb3VuZHMoKTtyZXR1cm4gbmV3IFQodGhpcy51bnByb2plY3QodC5nZXRCb3R0b21MZWZ0KCkpLHRoaXMudW5wcm9qZWN0KHQuZ2V0VG9wUmlnaHQoKSkpfSxnZXRNaW5ab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMub3B0aW9ucy5taW5ab29tP3RoaXMuX2xheWVyc01pblpvb218fDA6dGhpcy5vcHRpb25zLm1pblpvb219LGdldE1heFpvb206ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zLm1heFpvb20/dm9pZCAwPT09dGhpcy5fbGF5ZXJzTWF4Wm9vbT8xLzA6dGhpcy5fbGF5ZXJzTWF4Wm9vbTp0aGlzLm9wdGlvbnMubWF4Wm9vbX0sZ2V0Qm91bmRzWm9vbTpmdW5jdGlvbih0LGksZSl7dD16KHQpLGU9dyhlfHxbMCwwXSk7dmFyIG49dGhpcy5nZXRab29tKCl8fDAsbz10aGlzLmdldE1pblpvb20oKSxzPXRoaXMuZ2V0TWF4Wm9vbSgpLHI9dC5nZXROb3J0aFdlc3QoKSxhPXQuZ2V0U291dGhFYXN0KCksaD10aGlzLmdldFNpemUoKS5zdWJ0cmFjdChlKSx1PWIodGhpcy5wcm9qZWN0KGEsbiksdGhpcy5wcm9qZWN0KHIsbikpLmdldFNpemUoKSxsPU5pP3RoaXMub3B0aW9ucy56b29tU25hcDoxLGM9aC54L3UueCxfPWgueS91LnksZD1pP01hdGgubWF4KGMsXyk6TWF0aC5taW4oYyxfKTtyZXR1cm4gbj10aGlzLmdldFNjYWxlWm9vbShkLG4pLGwmJihuPU1hdGgucm91bmQobi8obC8xMDApKSoobC8xMDApLG49aT9NYXRoLmNlaWwobi9sKSpsOk1hdGguZmxvb3Iobi9sKSpsKSxNYXRoLm1heChvLE1hdGgubWluKHMsbikpfSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NpemUmJiF0aGlzLl9zaXplQ2hhbmdlZHx8KHRoaXMuX3NpemU9bmV3IHgodGhpcy5fY29udGFpbmVyLmNsaWVudFdpZHRofHwwLHRoaXMuX2NvbnRhaW5lci5jbGllbnRIZWlnaHR8fDApLHRoaXMuX3NpemVDaGFuZ2VkPSExKSx0aGlzLl9zaXplLmNsb25lKCl9LGdldFBpeGVsQm91bmRzOmZ1bmN0aW9uKHQsaSl7dmFyIGU9dGhpcy5fZ2V0VG9wTGVmdFBvaW50KHQsaSk7cmV0dXJuIG5ldyBQKGUsZS5hZGQodGhpcy5nZXRTaXplKCkpKX0sZ2V0UGl4ZWxPcmlnaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tJZkxvYWRlZCgpLHRoaXMuX3BpeGVsT3JpZ2lufSxnZXRQaXhlbFdvcmxkQm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuY3JzLmdldFByb2plY3RlZEJvdW5kcyh2b2lkIDA9PT10P3RoaXMuZ2V0Wm9vbSgpOnQpfSxnZXRQYW5lOmZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90aGlzLl9wYW5lc1t0XTp0fSxnZXRQYW5lczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYW5lc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sZ2V0Wm9vbVNjYWxlOmZ1bmN0aW9uKHQsaSl7dmFyIGU9dGhpcy5vcHRpb25zLmNycztyZXR1cm4gaT12b2lkIDA9PT1pP3RoaXMuX3pvb206aSxlLnNjYWxlKHQpL2Uuc2NhbGUoaSl9LGdldFNjYWxlWm9vbTpmdW5jdGlvbih0LGkpe3ZhciBlPXRoaXMub3B0aW9ucy5jcnM7aT12b2lkIDA9PT1pP3RoaXMuX3pvb206aTt2YXIgbj1lLnpvb20odCplLnNjYWxlKGkpKTtyZXR1cm4gaXNOYU4obik/MS8wOm59LHByb2plY3Q6ZnVuY3Rpb24odCxpKXtyZXR1cm4gaT12b2lkIDA9PT1pP3RoaXMuX3pvb206aSx0aGlzLm9wdGlvbnMuY3JzLmxhdExuZ1RvUG9pbnQoQyh0KSxpKX0sdW5wcm9qZWN0OmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGk9dm9pZCAwPT09aT90aGlzLl96b29tOmksdGhpcy5vcHRpb25zLmNycy5wb2ludFRvTGF0TG5nKHcodCksaSl9LGxheWVyUG9pbnRUb0xhdExuZzpmdW5jdGlvbih0KXt2YXIgaT13KHQpLmFkZCh0aGlzLmdldFBpeGVsT3JpZ2luKCkpO3JldHVybiB0aGlzLnVucHJvamVjdChpKX0sbGF0TG5nVG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnByb2plY3QoQyh0KSkuX3JvdW5kKCkuX3N1YnRyYWN0KHRoaXMuZ2V0UGl4ZWxPcmlnaW4oKSl9LHdyYXBMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5jcnMud3JhcExhdExuZyhDKHQpKX0sd3JhcExhdExuZ0JvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmNycy53cmFwTGF0TG5nQm91bmRzKHoodCkpfSxkaXN0YW5jZTpmdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLm9wdGlvbnMuY3JzLmRpc3RhbmNlKEModCksQyhpKSl9LGNvbnRhaW5lclBvaW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB3KHQpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LGxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB3KHQpLmFkZCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpfSxjb250YWluZXJQb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQodyh0KSk7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKGkpfSxsYXRMbmdUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50KHRoaXMubGF0TG5nVG9MYXllclBvaW50KEModCkpKX0sbW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR0KHQsdGhpcy5fY29udGFpbmVyKX0sbW91c2VFdmVudFRvTGF5ZXJQb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludCh0aGlzLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpKX0sbW91c2VFdmVudFRvTGF0TG5nOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodCkpfSxfaW5pdENvbnRhaW5lcjpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9jb250YWluZXI9cnQodCk7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJNYXAgY29udGFpbmVyIG5vdCBmb3VuZC4iKTtpZihpLl9sZWFmbGV0X2lkKXRocm93IG5ldyBFcnJvcigiTWFwIGNvbnRhaW5lciBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIpO1YoaSwic2Nyb2xsIix0aGlzLl9vblNjcm9sbCx0aGlzKSx0aGlzLl9jb250YWluZXJJZD1uKGkpfSxfaW5pdExheW91dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lcjt0aGlzLl9mYWRlQW5pbWF0ZWQ9dGhpcy5vcHRpb25zLmZhZGVBbmltYXRpb24mJk5pLHB0KHQsImxlYWZsZXQtY29udGFpbmVyIisoVmk/IiBsZWFmbGV0LXRvdWNoIjoiIikrKEtpPyIgbGVhZmxldC1yZXRpbmEiOiIiKSsoTGk/IiBsZWFmbGV0LW9sZGllIjoiIikrKGtpPyIgbGVhZmxldC1zYWZhcmkiOiIiKSsodGhpcy5fZmFkZUFuaW1hdGVkPyIgbGVhZmxldC1mYWRlLWFuaW0iOiIiKSk7dmFyIGk9YXQodCwicG9zaXRpb24iKTsiYWJzb2x1dGUiIT09aSYmInJlbGF0aXZlIiE9PWkmJiJmaXhlZCIhPT1pJiYodC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSx0aGlzLl9pbml0UGFuZXMoKSx0aGlzLl9pbml0Q29udHJvbFBvcyYmdGhpcy5faW5pdENvbnRyb2xQb3MoKX0sX2luaXRQYW5lczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BhbmVzPXt9O3RoaXMuX3BhbmVSZW5kZXJlcnM9e30sdGhpcy5fbWFwUGFuZT10aGlzLmNyZWF0ZVBhbmUoIm1hcFBhbmUiLHRoaXMuX2NvbnRhaW5lciksTHQodGhpcy5fbWFwUGFuZSxuZXcgeCgwLDApKSx0aGlzLmNyZWF0ZVBhbmUoInRpbGVQYW5lIiksdGhpcy5jcmVhdGVQYW5lKCJzaGFkb3dQYW5lIiksdGhpcy5jcmVhdGVQYW5lKCJvdmVybGF5UGFuZSIpLHRoaXMuY3JlYXRlUGFuZSgibWFya2VyUGFuZSIpLHRoaXMuY3JlYXRlUGFuZSgidG9vbHRpcFBhbmUiKSx0aGlzLmNyZWF0ZVBhbmUoInBvcHVwUGFuZSIpLHRoaXMub3B0aW9ucy5tYXJrZXJab29tQW5pbWF0aW9ufHwocHQodC5tYXJrZXJQYW5lLCJsZWFmbGV0LXpvb20taGlkZSIpLHB0KHQuc2hhZG93UGFuZSwibGVhZmxldC16b29tLWhpZGUiKSl9LF9yZXNldFZpZXc6ZnVuY3Rpb24odCxpKXtMdCh0aGlzLl9tYXBQYW5lLG5ldyB4KDAsMCkpO3ZhciBlPSF0aGlzLl9sb2FkZWQ7dGhpcy5fbG9hZGVkPSEwLGk9dGhpcy5fbGltaXRab29tKGkpLHRoaXMuZmlyZSgidmlld3ByZXJlc2V0Iik7dmFyIG49dGhpcy5fem9vbSE9PWk7dGhpcy5fbW92ZVN0YXJ0KG4sITEpLl9tb3ZlKHQsaSkuX21vdmVFbmQobiksdGhpcy5maXJlKCJ2aWV3cmVzZXQiKSxlJiZ0aGlzLmZpcmUoImxvYWQiKX0sX21vdmVTdGFydDpmdW5jdGlvbih0LGkpe3JldHVybiB0JiZ0aGlzLmZpcmUoInpvb21zdGFydCIpLGl8fHRoaXMuZmlyZSgibW92ZXN0YXJ0IiksdGhpc30sX21vdmU6ZnVuY3Rpb24odCxpLGUpe3ZvaWQgMD09PWkmJihpPXRoaXMuX3pvb20pO3ZhciBuPXRoaXMuX3pvb20hPT1pO3JldHVybiB0aGlzLl96b29tPWksdGhpcy5fbGFzdENlbnRlcj10LHRoaXMuX3BpeGVsT3JpZ2luPXRoaXMuX2dldE5ld1BpeGVsT3JpZ2luKHQpLChufHxlJiZlLnBpbmNoKSYmdGhpcy5maXJlKCJ6b29tIixlKSx0aGlzLmZpcmUoIm1vdmUiLGUpfSxfbW92ZUVuZDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdGhpcy5maXJlKCJ6b29tZW5kIiksdGhpcy5maXJlKCJtb3ZlZW5kIil9LF9zdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGcodGhpcy5fZmx5VG9GcmFtZSksdGhpcy5fcGFuQW5pbSYmdGhpcy5fcGFuQW5pbS5zdG9wKCksdGhpc30sX3Jhd1BhbkJ5OmZ1bmN0aW9uKHQpe0x0KHRoaXMuX21hcFBhbmUsdGhpcy5fZ2V0TWFwUGFuZVBvcygpLnN1YnRyYWN0KHQpKX0sX2dldFpvb21TcGFuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TWF4Wm9vbSgpLXRoaXMuZ2V0TWluWm9vbSgpfSxfcGFuSW5zaWRlTWF4Qm91bmRzOmZ1bmN0aW9uKCl7dGhpcy5fZW5mb3JjaW5nQm91bmRzfHx0aGlzLnBhbkluc2lkZUJvdW5kcyh0aGlzLm9wdGlvbnMubWF4Qm91bmRzKX0sX2NoZWNrSWZMb2FkZWQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fbG9hZGVkKXRocm93IG5ldyBFcnJvcigiU2V0IG1hcCBjZW50ZXIgYW5kIHpvb20gZmlyc3QuIil9LF9pbml0RXZlbnRzOmZ1bmN0aW9uKHQpe3RoaXMuX3RhcmdldHM9e30sdGhpcy5fdGFyZ2V0c1tuKHRoaXMuX2NvbnRhaW5lcildPXRoaXM7dmFyIGk9dD9xOlY7aSh0aGlzLl9jb250YWluZXIsImNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZW1vdmUgY29udGV4dG1lbnUga2V5cHJlc3MiLHRoaXMuX2hhbmRsZURPTUV2ZW50LHRoaXMpLHRoaXMub3B0aW9ucy50cmFja1Jlc2l6ZSYmaSh3aW5kb3csInJlc2l6ZSIsdGhpcy5fb25SZXNpemUsdGhpcyksTmkmJnRoaXMub3B0aW9ucy50cmFuc2Zvcm0zRExpbWl0JiYodD90aGlzLm9mZjp0aGlzLm9uKS5jYWxsKHRoaXMsIm1vdmVlbmQiLHRoaXMuX29uTW92ZUVuZCl9LF9vblJlc2l6ZTpmdW5jdGlvbigpe2codGhpcy5fcmVzaXplUmVxdWVzdCksdGhpcy5fcmVzaXplUmVxdWVzdD1mKGZ1bmN0aW9uKCl7dGhpcy5pbnZhbGlkYXRlU2l6ZSh7ZGVib3VuY2VNb3ZlZW5kOiEwfSl9LHRoaXMpfSxfb25TY3JvbGw6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXIuc2Nyb2xsVG9wPTAsdGhpcy5fY29udGFpbmVyLnNjcm9sbExlZnQ9MH0sX29uTW92ZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldE1hcFBhbmVQb3MoKTtNYXRoLm1heChNYXRoLmFicyh0LngpLE1hdGguYWJzKHQueSkpPj10aGlzLm9wdGlvbnMudHJhbnNmb3JtM0RMaW1pdCYmdGhpcy5fcmVzZXRWaWV3KHRoaXMuZ2V0Q2VudGVyKCksdGhpcy5nZXRab29tKCkpfSxfZmluZEV2ZW50VGFyZ2V0czpmdW5jdGlvbih0LGkpe2Zvcih2YXIgZSxvPVtdLHM9Im1vdXNlb3V0Ij09PWl8fCJtb3VzZW92ZXIiPT09aSxyPXQudGFyZ2V0fHx0LnNyY0VsZW1lbnQsYT0hMTtyOyl7aWYoKGU9dGhpcy5fdGFyZ2V0c1tuKHIpXSkmJigiY2xpY2siPT09aXx8InByZWNsaWNrIj09PWkpJiYhdC5fc2ltdWxhdGVkJiZ0aGlzLl9kcmFnZ2FibGVNb3ZlZChlKSl7YT0hMDticmVha31pZihlJiZlLmxpc3RlbnMoaSwhMCkpe2lmKHMmJiFvdChyLHQpKWJyZWFrO2lmKG8ucHVzaChlKSxzKWJyZWFrfWlmKHI9PT10aGlzLl9jb250YWluZXIpYnJlYWs7cj1yLnBhcmVudE5vZGV9cmV0dXJuIG8ubGVuZ3RofHxhfHxzfHwhb3Qocix0KXx8KG89W3RoaXNdKSxvfSxfaGFuZGxlRE9NRXZlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcy5fbG9hZGVkJiYhbnQodCkpe3ZhciBpPXQudHlwZTsibW91c2Vkb3duIiE9PWkmJiJrZXlwcmVzcyIhPT1pfHx6dCh0LnRhcmdldHx8dC5zcmNFbGVtZW50KSx0aGlzLl9maXJlRE9NRXZlbnQodCxpKX19LF9tb3VzZUV2ZW50czpbImNsaWNrIiwiZGJsY2xpY2siLCJtb3VzZW92ZXIiLCJtb3VzZW91dCIsImNvbnRleHRtZW51Il0sX2ZpcmVET01FdmVudDpmdW5jdGlvbih0LGUsbil7aWYoImNsaWNrIj09PXQudHlwZSl7dmFyIG89aSh7fSx0KTtvLnR5cGU9InByZWNsaWNrIix0aGlzLl9maXJlRE9NRXZlbnQobyxvLnR5cGUsbil9aWYoIXQuX3N0b3BwZWQmJihuPShufHxbXSkuY29uY2F0KHRoaXMuX2ZpbmRFdmVudFRhcmdldHModCxlKSkpLmxlbmd0aCl7dmFyIHM9blswXTsiY29udGV4dG1lbnUiPT09ZSYmcy5saXN0ZW5zKGUsITApJiYkKHQpO3ZhciByPXtvcmlnaW5hbEV2ZW50OnR9O2lmKCJrZXlwcmVzcyIhPT10LnR5cGUpe3ZhciBhPXMuZ2V0TGF0TG5nJiYoIXMuX3JhZGl1c3x8cy5fcmFkaXVzPD0xMCk7ci5jb250YWluZXJQb2ludD1hP3RoaXMubGF0TG5nVG9Db250YWluZXJQb2ludChzLmdldExhdExuZygpKTp0aGlzLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLHIubGF5ZXJQb2ludD10aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHIuY29udGFpbmVyUG9pbnQpLHIubGF0bG5nPWE/cy5nZXRMYXRMbmcoKTp0aGlzLmxheWVyUG9pbnRUb0xhdExuZyhyLmxheWVyUG9pbnQpfWZvcih2YXIgaD0wO2g8bi5sZW5ndGg7aCsrKWlmKG5baF0uZmlyZShlLHIsITApLHIub3JpZ2luYWxFdmVudC5fc3RvcHBlZHx8ITE9PT1uW2hdLm9wdGlvbnMuYnViYmxpbmdNb3VzZUV2ZW50cyYmLTEhPT1kKHRoaXMuX21vdXNlRXZlbnRzLGUpKXJldHVybn19LF9kcmFnZ2FibGVNb3ZlZDpmdW5jdGlvbih0KXtyZXR1cm4odD10LmRyYWdnaW5nJiZ0LmRyYWdnaW5nLmVuYWJsZWQoKT90OnRoaXMpLmRyYWdnaW5nJiZ0LmRyYWdnaW5nLm1vdmVkKCl8fHRoaXMuYm94Wm9vbSYmdGhpcy5ib3hab29tLm1vdmVkKCl9LF9jbGVhckhhbmRsZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsaT10aGlzLl9oYW5kbGVycy5sZW5ndGg7dDxpO3QrKyl0aGlzLl9oYW5kbGVyc1t0XS5kaXNhYmxlKCl9LHdoZW5SZWFkeTpmdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLl9sb2FkZWQ/dC5jYWxsKGl8fHRoaXMse3RhcmdldDp0aGlzfSk6dGhpcy5vbigibG9hZCIsdCxpKSx0aGlzfSxfZ2V0TWFwUGFuZVBvczpmdW5jdGlvbigpe3JldHVybiBQdCh0aGlzLl9tYXBQYW5lKXx8bmV3IHgoMCwwKX0sX21vdmVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0TWFwUGFuZVBvcygpO3JldHVybiB0JiYhdC5lcXVhbHMoWzAsMF0pfSxfZ2V0VG9wTGVmdFBvaW50OmZ1bmN0aW9uKHQsaSl7cmV0dXJuKHQmJnZvaWQgMCE9PWk/dGhpcy5fZ2V0TmV3UGl4ZWxPcmlnaW4odCxpKTp0aGlzLmdldFBpeGVsT3JpZ2luKCkpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LF9nZXROZXdQaXhlbE9yaWdpbjpmdW5jdGlvbih0LGkpe3ZhciBlPXRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsaSkuX3N1YnRyYWN0KGUpLl9hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKS5fcm91bmQoKX0sX2xhdExuZ1RvTmV3TGF5ZXJQb2ludDpmdW5jdGlvbih0LGksZSl7dmFyIG49dGhpcy5fZ2V0TmV3UGl4ZWxPcmlnaW4oZSxpKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsaSkuX3N1YnRyYWN0KG4pfSxfbGF0TG5nQm91bmRzVG9OZXdMYXllckJvdW5kczpmdW5jdGlvbih0LGksZSl7dmFyIG49dGhpcy5fZ2V0TmV3UGl4ZWxPcmlnaW4oZSxpKTtyZXR1cm4gYihbdGhpcy5wcm9qZWN0KHQuZ2V0U291dGhXZXN0KCksaSkuX3N1YnRyYWN0KG4pLHRoaXMucHJvamVjdCh0LmdldE5vcnRoV2VzdCgpLGkpLl9zdWJ0cmFjdChuKSx0aGlzLnByb2plY3QodC5nZXRTb3V0aEVhc3QoKSxpKS5fc3VidHJhY3QobiksdGhpcy5wcm9qZWN0KHQuZ2V0Tm9ydGhFYXN0KCksaSkuX3N1YnRyYWN0KG4pXSl9LF9nZXRDZW50ZXJMYXllclBvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQodGhpcy5nZXRTaXplKCkuX2RpdmlkZUJ5KDIpKX0sX2dldENlbnRlck9mZnNldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sYXRMbmdUb0xheWVyUG9pbnQodCkuc3VidHJhY3QodGhpcy5fZ2V0Q2VudGVyTGF5ZXJQb2ludCgpKX0sX2xpbWl0Q2VudGVyOmZ1bmN0aW9uKHQsaSxlKXtpZighZSlyZXR1cm4gdDt2YXIgbj10aGlzLnByb2plY3QodCxpKSxvPXRoaXMuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIpLHM9bmV3IFAobi5zdWJ0cmFjdChvKSxuLmFkZChvKSkscj10aGlzLl9nZXRCb3VuZHNPZmZzZXQocyxlLGkpO3JldHVybiByLnJvdW5kKCkuZXF1YWxzKFswLDBdKT90OnRoaXMudW5wcm9qZWN0KG4uYWRkKHIpLGkpfSxfbGltaXRPZmZzZXQ6ZnVuY3Rpb24odCxpKXtpZighaSlyZXR1cm4gdDt2YXIgZT10aGlzLmdldFBpeGVsQm91bmRzKCksbj1uZXcgUChlLm1pbi5hZGQodCksZS5tYXguYWRkKHQpKTtyZXR1cm4gdC5hZGQodGhpcy5fZ2V0Qm91bmRzT2Zmc2V0KG4saSkpfSxfZ2V0Qm91bmRzT2Zmc2V0OmZ1bmN0aW9uKHQsaSxlKXt2YXIgbj1iKHRoaXMucHJvamVjdChpLmdldE5vcnRoRWFzdCgpLGUpLHRoaXMucHJvamVjdChpLmdldFNvdXRoV2VzdCgpLGUpKSxvPW4ubWluLnN1YnRyYWN0KHQubWluKSxzPW4ubWF4LnN1YnRyYWN0KHQubWF4KTtyZXR1cm4gbmV3IHgodGhpcy5fcmVib3VuZChvLngsLXMueCksdGhpcy5fcmVib3VuZChvLnksLXMueSkpfSxfcmVib3VuZDpmdW5jdGlvbih0LGkpe3JldHVybiB0K2k+MD9NYXRoLnJvdW5kKHQtaSkvMjpNYXRoLm1heCgwLE1hdGguY2VpbCh0KSktTWF0aC5tYXgoMCxNYXRoLmZsb29yKGkpKX0sX2xpbWl0Wm9vbTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLmdldE1pblpvb20oKSxlPXRoaXMuZ2V0TWF4Wm9vbSgpLG49Tmk/dGhpcy5vcHRpb25zLnpvb21TbmFwOjE7cmV0dXJuIG4mJih0PU1hdGgucm91bmQodC9uKSpuKSxNYXRoLm1heChpLE1hdGgubWluKGUsdCkpfSxfb25QYW5UcmFuc2l0aW9uU3RlcDpmdW5jdGlvbigpe3RoaXMuZmlyZSgibW92ZSIpfSxfb25QYW5UcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7bXQodGhpcy5fbWFwUGFuZSwibGVhZmxldC1wYW4tYW5pbSIpLHRoaXMuZmlyZSgibW92ZWVuZCIpfSxfdHJ5QW5pbWF0ZWRQYW46ZnVuY3Rpb24odCxpKXt2YXIgZT10aGlzLl9nZXRDZW50ZXJPZmZzZXQodCkuX3RydW5jKCk7cmV0dXJuISghMCE9PShpJiZpLmFuaW1hdGUpJiYhdGhpcy5nZXRTaXplKCkuY29udGFpbnMoZSkpJiYodGhpcy5wYW5CeShlLGkpLCEwKX0sX2NyZWF0ZUFuaW1Qcm94eTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Byb3h5PWh0KCJkaXYiLCJsZWFmbGV0LXByb3h5IGxlYWZsZXQtem9vbS1hbmltYXRlZCIpO3RoaXMuX3BhbmVzLm1hcFBhbmUuYXBwZW5kQ2hpbGQodCksdGhpcy5vbigiem9vbWFuaW0iLGZ1bmN0aW9uKHQpe3ZhciBpPXBlLGU9dGhpcy5fcHJveHkuc3R5bGVbaV07d3QodGhpcy5fcHJveHksdGhpcy5wcm9qZWN0KHQuY2VudGVyLHQuem9vbSksdGhpcy5nZXRab29tU2NhbGUodC56b29tLDEpKSxlPT09dGhpcy5fcHJveHkuc3R5bGVbaV0mJnRoaXMuX2FuaW1hdGluZ1pvb20mJnRoaXMuX29uWm9vbVRyYW5zaXRpb25FbmQoKX0sdGhpcyksdGhpcy5vbigibG9hZCBtb3ZlZW5kIixmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0Q2VudGVyKCksaT10aGlzLmdldFpvb20oKTt3dCh0aGlzLl9wcm94eSx0aGlzLnByb2plY3QodCxpKSx0aGlzLmdldFpvb21TY2FsZShpLDEpKX0sdGhpcyksdGhpcy5fb24oInVubG9hZCIsdGhpcy5fZGVzdHJveUFuaW1Qcm94eSx0aGlzKX0sX2Rlc3Ryb3lBbmltUHJveHk6ZnVuY3Rpb24oKXt1dCh0aGlzLl9wcm94eSksZGVsZXRlIHRoaXMuX3Byb3h5fSxfY2F0Y2hUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3RoaXMuX2FuaW1hdGluZ1pvb20mJnQucHJvcGVydHlOYW1lLmluZGV4T2YoInRyYW5zZm9ybSIpPj0wJiZ0aGlzLl9vblpvb21UcmFuc2l0aW9uRW5kKCl9LF9ub3RoaW5nVG9BbmltYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKS5sZW5ndGh9LF90cnlBbmltYXRlZFpvb206ZnVuY3Rpb24odCxpLGUpe2lmKHRoaXMuX2FuaW1hdGluZ1pvb20pcmV0dXJuITA7aWYoZT1lfHx7fSwhdGhpcy5fem9vbUFuaW1hdGVkfHwhMT09PWUuYW5pbWF0ZXx8dGhpcy5fbm90aGluZ1RvQW5pbWF0ZSgpfHxNYXRoLmFicyhpLXRoaXMuX3pvb20pPnRoaXMub3B0aW9ucy56b29tQW5pbWF0aW9uVGhyZXNob2xkKXJldHVybiExO3ZhciBuPXRoaXMuZ2V0Wm9vbVNjYWxlKGkpLG89dGhpcy5fZ2V0Q2VudGVyT2Zmc2V0KHQpLl9kaXZpZGVCeSgxLTEvbik7cmV0dXJuISghMCE9PWUuYW5pbWF0ZSYmIXRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKG8pKSYmKGYoZnVuY3Rpb24oKXt0aGlzLl9tb3ZlU3RhcnQoITAsITEpLl9hbmltYXRlWm9vbSh0LGksITApfSx0aGlzKSwhMCl9LF9hbmltYXRlWm9vbTpmdW5jdGlvbih0LGksbixvKXt0aGlzLl9tYXBQYW5lJiYobiYmKHRoaXMuX2FuaW1hdGluZ1pvb209ITAsdGhpcy5fYW5pbWF0ZVRvQ2VudGVyPXQsdGhpcy5fYW5pbWF0ZVRvWm9vbT1pLHB0KHRoaXMuX21hcFBhbmUsImxlYWZsZXQtem9vbS1hbmltIikpLHRoaXMuZmlyZSgiem9vbWFuaW0iLHtjZW50ZXI6dCx6b29tOmksbm9VcGRhdGU6b30pLHNldFRpbWVvdXQoZSh0aGlzLl9vblpvb21UcmFuc2l0aW9uRW5kLHRoaXMpLDI1MCkpfSxfb25ab29tVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2FuaW1hdGluZ1pvb20mJih0aGlzLl9tYXBQYW5lJiZtdCh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXpvb20tYW5pbSIpLHRoaXMuX2FuaW1hdGluZ1pvb209ITEsdGhpcy5fbW92ZSh0aGlzLl9hbmltYXRlVG9DZW50ZXIsdGhpcy5fYW5pbWF0ZVRvWm9vbSksZihmdW5jdGlvbigpe3RoaXMuX21vdmVFbmQoITApfSx0aGlzKSl9fSksUGU9di5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJ0b3ByaWdodCJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7bCh0aGlzLHQpfSxnZXRQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMucG9zaXRpb259LHNldFBvc2l0aW9uOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX21hcDtyZXR1cm4gaSYmaS5yZW1vdmVDb250cm9sKHRoaXMpLHRoaXMub3B0aW9ucy5wb3NpdGlvbj10LGkmJmkuYWRkQ29udHJvbCh0aGlzKSx0aGlzfSxnZXRDb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxhZGRUbzpmdW5jdGlvbih0KXt0aGlzLnJlbW92ZSgpLHRoaXMuX21hcD10O3ZhciBpPXRoaXMuX2NvbnRhaW5lcj10aGlzLm9uQWRkKHQpLGU9dGhpcy5nZXRQb3NpdGlvbigpLG49dC5fY29udHJvbENvcm5lcnNbZV07cmV0dXJuIHB0KGksImxlYWZsZXQtY29udHJvbCIpLC0xIT09ZS5pbmRleE9mKCJib3R0b20iKT9uLmluc2VydEJlZm9yZShpLG4uZmlyc3RDaGlsZCk6bi5hcHBlbmRDaGlsZChpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwPyh1dCh0aGlzLl9jb250YWluZXIpLHRoaXMub25SZW1vdmUmJnRoaXMub25SZW1vdmUodGhpcy5fbWFwKSx0aGlzLl9tYXA9bnVsbCx0aGlzKTp0aGlzfSxfcmVmb2N1c09uTWFwOmZ1bmN0aW9uKHQpe3RoaXMuX21hcCYmdCYmdC5zY3JlZW5YPjAmJnQuc2NyZWVuWT4wJiZ0aGlzLl9tYXAuZ2V0Q29udGFpbmVyKCkuZm9jdXMoKX19KSxiZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFBlKHQpfTtMZS5pbmNsdWRlKHthZGRDb250cm9sOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZFRvKHRoaXMpLHRoaXN9LHJlbW92ZUNvbnRyb2w6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVtb3ZlKCksdGhpc30sX2luaXRDb250cm9sUG9zOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG8pe3ZhciBzPWUrdCsiICIrZStvO2lbdCtvXT1odCgiZGl2IixzLG4pfXZhciBpPXRoaXMuX2NvbnRyb2xDb3JuZXJzPXt9LGU9ImxlYWZsZXQtIixuPXRoaXMuX2NvbnRyb2xDb250YWluZXI9aHQoImRpdiIsZSsiY29udHJvbC1jb250YWluZXIiLHRoaXMuX2NvbnRhaW5lcik7dCgidG9wIiwibGVmdCIpLHQoInRvcCIsInJpZ2h0IiksdCgiYm90dG9tIiwibGVmdCIpLHQoImJvdHRvbSIsInJpZ2h0Iil9LF9jbGVhckNvbnRyb2xQb3M6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fY29udHJvbENvcm5lcnMpdXQodGhpcy5fY29udHJvbENvcm5lcnNbdF0pO3V0KHRoaXMuX2NvbnRyb2xDb250YWluZXIpLGRlbGV0ZSB0aGlzLl9jb250cm9sQ29ybmVycyxkZWxldGUgdGhpcy5fY29udHJvbENvbnRhaW5lcn19KTt2YXIgVGU9UGUuZXh0ZW5kKHtvcHRpb25zOntjb2xsYXBzZWQ6ITAscG9zaXRpb246InRvcHJpZ2h0IixhdXRvWkluZGV4OiEwLGhpZGVTaW5nbGVCYXNlOiExLHNvcnRMYXllcnM6ITEsc29ydEZ1bmN0aW9uOmZ1bmN0aW9uKHQsaSxlLG4pe3JldHVybiBlPG4/LTE6bjxlPzE6MH19LGluaXRpYWxpemU6ZnVuY3Rpb24odCxpLGUpe2wodGhpcyxlKSx0aGlzLl9sYXllckNvbnRyb2xJbnB1dHM9W10sdGhpcy5fbGF5ZXJzPVtdLHRoaXMuX2xhc3RaSW5kZXg9MCx0aGlzLl9oYW5kbGluZ0NsaWNrPSExO2Zvcih2YXIgbiBpbiB0KXRoaXMuX2FkZExheWVyKHRbbl0sbik7Zm9yKG4gaW4gaSl0aGlzLl9hZGRMYXllcihpW25dLG4sITApfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9pbml0TGF5b3V0KCksdGhpcy5fdXBkYXRlKCksdGhpcy5fbWFwPXQsdC5vbigiem9vbWVuZCIsdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycyx0aGlzKTtmb3IodmFyIGk9MDtpPHRoaXMuX2xheWVycy5sZW5ndGg7aSsrKXRoaXMuX2xheWVyc1tpXS5sYXllci5vbigiYWRkIHJlbW92ZSIsdGhpcy5fb25MYXllckNoYW5nZSx0aGlzKTtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gUGUucHJvdG90eXBlLmFkZFRvLmNhbGwodGhpcyx0KSx0aGlzLl9leHBhbmRJZk5vdENvbGxhcHNlZCgpfSxvblJlbW92ZTpmdW5jdGlvbigpe3RoaXMuX21hcC5vZmYoInpvb21lbmQiLHRoaXMuX2NoZWNrRGlzYWJsZWRMYXllcnMsdGhpcyk7Zm9yKHZhciB0PTA7dDx0aGlzLl9sYXllcnMubGVuZ3RoO3QrKyl0aGlzLl9sYXllcnNbdF0ubGF5ZXIub2ZmKCJhZGQgcmVtb3ZlIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpfSxhZGRCYXNlTGF5ZXI6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdGhpcy5fYWRkTGF5ZXIodCxpKSx0aGlzLl9tYXA/dGhpcy5fdXBkYXRlKCk6dGhpc30sYWRkT3ZlcmxheTpmdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLl9hZGRMYXllcih0LGksITApLHRoaXMuX21hcD90aGlzLl91cGRhdGUoKTp0aGlzfSxyZW1vdmVMYXllcjpmdW5jdGlvbih0KXt0Lm9mZigiYWRkIHJlbW92ZSIsdGhpcy5fb25MYXllckNoYW5nZSx0aGlzKTt2YXIgaT10aGlzLl9nZXRMYXllcihuKHQpKTtyZXR1cm4gaSYmdGhpcy5fbGF5ZXJzLnNwbGljZSh0aGlzLl9sYXllcnMuaW5kZXhPZihpKSwxKSx0aGlzLl9tYXA/dGhpcy5fdXBkYXRlKCk6dGhpc30sZXhwYW5kOmZ1bmN0aW9uKCl7cHQodGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIiksdGhpcy5fZm9ybS5zdHlsZS5oZWlnaHQ9bnVsbDt2YXIgdD10aGlzLl9tYXAuZ2V0U2l6ZSgpLnktKHRoaXMuX2NvbnRhaW5lci5vZmZzZXRUb3ArNTApO3JldHVybiB0PHRoaXMuX2Zvcm0uY2xpZW50SGVpZ2h0PyhwdCh0aGlzLl9mb3JtLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNjcm9sbGJhciIpLHRoaXMuX2Zvcm0uc3R5bGUuaGVpZ2h0PXQrInB4Iik6bXQodGhpcy5fZm9ybSwibGVhZmxldC1jb250cm9sLWxheWVycy1zY3JvbGxiYXIiKSx0aGlzLl9jaGVja0Rpc2FibGVkTGF5ZXJzKCksdGhpc30sY29sbGFwc2U6ZnVuY3Rpb24oKXtyZXR1cm4gbXQodGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIiksdGhpc30sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdD0ibGVhZmxldC1jb250cm9sLWxheWVycyIsaT10aGlzLl9jb250YWluZXI9aHQoImRpdiIsdCksZT10aGlzLm9wdGlvbnMuY29sbGFwc2VkO2kuc2V0QXR0cmlidXRlKCJhcmlhLWhhc3BvcHVwIiwhMCksSihpKSxYKGkpO3ZhciBuPXRoaXMuX2Zvcm09aHQoImZvcm0iLHQrIi1saXN0Iik7ZSYmKHRoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuY29sbGFwc2UsdGhpcyksVGl8fFYoaSx7bW91c2VlbnRlcjp0aGlzLmV4cGFuZCxtb3VzZWxlYXZlOnRoaXMuY29sbGFwc2V9LHRoaXMpKTt2YXIgbz10aGlzLl9sYXllcnNMaW5rPWh0KCJhIix0KyItdG9nZ2xlIixpKTtvLmhyZWY9IiMiLG8udGl0bGU9IkxheWVycyIsVmk/KFYobywiY2xpY2siLFEpLFYobywiY2xpY2siLHRoaXMuZXhwYW5kLHRoaXMpKTpWKG8sImZvY3VzIix0aGlzLmV4cGFuZCx0aGlzKSxlfHx0aGlzLmV4cGFuZCgpLHRoaXMuX2Jhc2VMYXllcnNMaXN0PWh0KCJkaXYiLHQrIi1iYXNlIixuKSx0aGlzLl9zZXBhcmF0b3I9aHQoImRpdiIsdCsiLXNlcGFyYXRvciIsbiksdGhpcy5fb3ZlcmxheXNMaXN0PWh0KCJkaXYiLHQrIi1vdmVybGF5cyIsbiksaS5hcHBlbmRDaGlsZChuKX0sX2dldExheWVyOmZ1bmN0aW9uKHQpe2Zvcih2YXIgaT0wO2k8dGhpcy5fbGF5ZXJzLmxlbmd0aDtpKyspaWYodGhpcy5fbGF5ZXJzW2ldJiZuKHRoaXMuX2xheWVyc1tpXS5sYXllcik9PT10KXJldHVybiB0aGlzLl9sYXllcnNbaV19LF9hZGRMYXllcjpmdW5jdGlvbih0LGksbil7dGhpcy5fbWFwJiZ0Lm9uKCJhZGQgcmVtb3ZlIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpLHRoaXMuX2xheWVycy5wdXNoKHtsYXllcjp0LG5hbWU6aSxvdmVybGF5Om59KSx0aGlzLm9wdGlvbnMuc29ydExheWVycyYmdGhpcy5fbGF5ZXJzLnNvcnQoZShmdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLm9wdGlvbnMuc29ydEZ1bmN0aW9uKHQubGF5ZXIsaS5sYXllcix0Lm5hbWUsaS5uYW1lKX0sdGhpcykpLHRoaXMub3B0aW9ucy5hdXRvWkluZGV4JiZ0LnNldFpJbmRleCYmKHRoaXMuX2xhc3RaSW5kZXgrKyx0LnNldFpJbmRleCh0aGlzLl9sYXN0WkluZGV4KSksdGhpcy5fZXhwYW5kSWZOb3RDb2xsYXBzZWQoKX0sX3VwZGF0ZTpmdW5jdGlvbigpe2lmKCF0aGlzLl9jb250YWluZXIpcmV0dXJuIHRoaXM7bHQodGhpcy5fYmFzZUxheWVyc0xpc3QpLGx0KHRoaXMuX292ZXJsYXlzTGlzdCksdGhpcy5fbGF5ZXJDb250cm9sSW5wdXRzPVtdO3ZhciB0LGksZSxuLG89MDtmb3IoZT0wO2U8dGhpcy5fbGF5ZXJzLmxlbmd0aDtlKyspbj10aGlzLl9sYXllcnNbZV0sdGhpcy5fYWRkSXRlbShuKSxpPWl8fG4ub3ZlcmxheSx0PXR8fCFuLm92ZXJsYXksbys9bi5vdmVybGF5PzA6MTtyZXR1cm4gdGhpcy5vcHRpb25zLmhpZGVTaW5nbGVCYXNlJiYodD10JiZvPjEsdGhpcy5fYmFzZUxheWVyc0xpc3Quc3R5bGUuZGlzcGxheT10PyIiOiJub25lIiksdGhpcy5fc2VwYXJhdG9yLnN0eWxlLmRpc3BsYXk9aSYmdD8iIjoibm9uZSIsdGhpc30sX29uTGF5ZXJDaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5faGFuZGxpbmdDbGlja3x8dGhpcy5fdXBkYXRlKCk7dmFyIGk9dGhpcy5fZ2V0TGF5ZXIobih0LnRhcmdldCkpLGU9aS5vdmVybGF5PyJhZGQiPT09dC50eXBlPyJvdmVybGF5YWRkIjoib3ZlcmxheXJlbW92ZSI6ImFkZCI9PT10LnR5cGU/ImJhc2VsYXllcmNoYW5nZSI6bnVsbDtlJiZ0aGlzLl9tYXAuZmlyZShlLGkpfSxfY3JlYXRlUmFkaW9FbGVtZW50OmZ1bmN0aW9uKHQsaSl7dmFyIGU9JzxpbnB1dCB0eXBlPSJyYWRpbyIgY2xhc3M9ImxlYWZsZXQtY29udHJvbC1sYXllcnMtc2VsZWN0b3IiIG5hbWU9IicrdCsnIicrKGk/JyBjaGVja2VkPSJjaGVja2VkIic6IiIpKyIvPiIsbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gbi5pbm5lckhUTUw9ZSxuLmZpcnN0Q2hpbGR9LF9hZGRJdGVtOmZ1bmN0aW9uKHQpe3ZhciBpLGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSxvPXRoaXMuX21hcC5oYXNMYXllcih0LmxheWVyKTt0Lm92ZXJsYXk/KChpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnR5cGU9ImNoZWNrYm94IixpLmNsYXNzTmFtZT0ibGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvciIsaS5kZWZhdWx0Q2hlY2tlZD1vKTppPXRoaXMuX2NyZWF0ZVJhZGlvRWxlbWVudCgibGVhZmxldC1iYXNlLWxheWVycyIsbyksdGhpcy5fbGF5ZXJDb250cm9sSW5wdXRzLnB1c2goaSksaS5sYXllcklkPW4odC5sYXllciksVihpLCJjbGljayIsdGhpcy5fb25JbnB1dENsaWNrLHRoaXMpO3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtzLmlubmVySFRNTD0iICIrdC5uYW1lO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmFwcGVuZENoaWxkKHIpLHIuYXBwZW5kQ2hpbGQoaSksci5hcHBlbmRDaGlsZChzKSwodC5vdmVybGF5P3RoaXMuX292ZXJsYXlzTGlzdDp0aGlzLl9iYXNlTGF5ZXJzTGlzdCkuYXBwZW5kQ2hpbGQoZSksdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycygpLGV9LF9vbklucHV0Q2xpY2s6ZnVuY3Rpb24oKXt2YXIgdCxpLGU9dGhpcy5fbGF5ZXJDb250cm9sSW5wdXRzLG49W10sbz1bXTt0aGlzLl9oYW5kbGluZ0NsaWNrPSEwO2Zvcih2YXIgcz1lLmxlbmd0aC0xO3M+PTA7cy0tKXQ9ZVtzXSxpPXRoaXMuX2dldExheWVyKHQubGF5ZXJJZCkubGF5ZXIsdC5jaGVja2VkP24ucHVzaChpKTp0LmNoZWNrZWR8fG8ucHVzaChpKTtmb3Iocz0wO3M8by5sZW5ndGg7cysrKXRoaXMuX21hcC5oYXNMYXllcihvW3NdKSYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKG9bc10pO2ZvcihzPTA7czxuLmxlbmd0aDtzKyspdGhpcy5fbWFwLmhhc0xheWVyKG5bc10pfHx0aGlzLl9tYXAuYWRkTGF5ZXIobltzXSk7dGhpcy5faGFuZGxpbmdDbGljaz0hMSx0aGlzLl9yZWZvY3VzT25NYXAoKX0sX2NoZWNrRGlzYWJsZWRMYXllcnM6ZnVuY3Rpb24oKXtmb3IodmFyIHQsaSxlPXRoaXMuX2xheWVyQ29udHJvbElucHV0cyxuPXRoaXMuX21hcC5nZXRab29tKCksbz1lLmxlbmd0aC0xO28+PTA7by0tKXQ9ZVtvXSxpPXRoaXMuX2dldExheWVyKHQubGF5ZXJJZCkubGF5ZXIsdC5kaXNhYmxlZD12b2lkIDAhPT1pLm9wdGlvbnMubWluWm9vbSYmbjxpLm9wdGlvbnMubWluWm9vbXx8dm9pZCAwIT09aS5vcHRpb25zLm1heFpvb20mJm4+aS5vcHRpb25zLm1heFpvb219LF9leHBhbmRJZk5vdENvbGxhcHNlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJiF0aGlzLm9wdGlvbnMuY29sbGFwc2VkJiZ0aGlzLmV4cGFuZCgpLHRoaXN9LF9leHBhbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5leHBhbmQoKX0sX2NvbGxhcHNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29sbGFwc2UoKX19KSx6ZT1QZS5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJ0b3BsZWZ0Iix6b29tSW5UZXh0OiIrIix6b29tSW5UaXRsZToiWm9vbSBpbiIsem9vbU91dFRleHQ6IiYjeDIyMTI7Iix6b29tT3V0VGl0bGU6Ilpvb20gb3V0In0sb25BZGQ6ZnVuY3Rpb24odCl7dmFyIGk9ImxlYWZsZXQtY29udHJvbC16b29tIixlPWh0KCJkaXYiLGkrIiBsZWFmbGV0LWJhciIpLG49dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLl96b29tSW5CdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKG4uem9vbUluVGV4dCxuLnpvb21JblRpdGxlLGkrIi1pbiIsZSx0aGlzLl96b29tSW4pLHRoaXMuX3pvb21PdXRCdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKG4uem9vbU91dFRleHQsbi56b29tT3V0VGl0bGUsaSsiLW91dCIsZSx0aGlzLl96b29tT3V0KSx0aGlzLl91cGRhdGVEaXNhYmxlZCgpLHQub24oInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyksZX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWQ9ITAsdGhpcy5fdXBkYXRlRGlzYWJsZWQoKSx0aGlzfSxlbmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fdXBkYXRlRGlzYWJsZWQoKSx0aGlzfSxfem9vbUluOmZ1bmN0aW9uKHQpeyF0aGlzLl9kaXNhYmxlZCYmdGhpcy5fbWFwLl96b29tPHRoaXMuX21hcC5nZXRNYXhab29tKCkmJnRoaXMuX21hcC56b29tSW4odGhpcy5fbWFwLm9wdGlvbnMuem9vbURlbHRhKih0LnNoaWZ0S2V5PzM6MSkpfSxfem9vbU91dDpmdW5jdGlvbih0KXshdGhpcy5fZGlzYWJsZWQmJnRoaXMuX21hcC5fem9vbT50aGlzLl9tYXAuZ2V0TWluWm9vbSgpJiZ0aGlzLl9tYXAuem9vbU91dCh0aGlzLl9tYXAub3B0aW9ucy56b29tRGVsdGEqKHQuc2hpZnRLZXk/MzoxKSl9LF9jcmVhdGVCdXR0b246ZnVuY3Rpb24odCxpLGUsbixvKXt2YXIgcz1odCgiYSIsZSxuKTtyZXR1cm4gcy5pbm5lckhUTUw9dCxzLmhyZWY9IiMiLHMudGl0bGU9aSxzLnNldEF0dHJpYnV0ZSgicm9sZSIsImJ1dHRvbiIpLHMuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixpKSxKKHMpLFYocywiY2xpY2siLFEpLFYocywiY2xpY2siLG8sdGhpcyksVihzLCJjbGljayIsdGhpcy5fcmVmb2N1c09uTWFwLHRoaXMpLHN9LF91cGRhdGVEaXNhYmxlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcCxpPSJsZWFmbGV0LWRpc2FibGVkIjttdCh0aGlzLl96b29tSW5CdXR0b24saSksbXQodGhpcy5fem9vbU91dEJ1dHRvbixpKSwodGhpcy5fZGlzYWJsZWR8fHQuX3pvb209PT10LmdldE1pblpvb20oKSkmJnB0KHRoaXMuX3pvb21PdXRCdXR0b24saSksKHRoaXMuX2Rpc2FibGVkfHx0Ll96b29tPT09dC5nZXRNYXhab29tKCkpJiZwdCh0aGlzLl96b29tSW5CdXR0b24saSl9fSk7TGUubWVyZ2VPcHRpb25zKHt6b29tQ29udHJvbDohMH0pLExlLmFkZEluaXRIb29rKGZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnpvb21Db250cm9sJiYodGhpcy56b29tQ29udHJvbD1uZXcgemUsdGhpcy5hZGRDb250cm9sKHRoaXMuem9vbUNvbnRyb2wpKX0pO3ZhciBNZT1QZS5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJib3R0b21sZWZ0IixtYXhXaWR0aDoxMDAsbWV0cmljOiEwLGltcGVyaWFsOiEwfSxvbkFkZDpmdW5jdGlvbih0KXt2YXIgaT1odCgiZGl2IiwibGVhZmxldC1jb250cm9sLXNjYWxlIiksZT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2FkZFNjYWxlcyhlLCJsZWFmbGV0LWNvbnRyb2wtc2NhbGUtbGluZSIsaSksdC5vbihlLnVwZGF0ZVdoZW5JZGxlPyJtb3ZlZW5kIjoibW92ZSIsdGhpcy5fdXBkYXRlLHRoaXMpLHQud2hlblJlYWR5KHRoaXMuX3VwZGF0ZSx0aGlzKSxpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Lm9mZih0aGlzLm9wdGlvbnMudXBkYXRlV2hlbklkbGU/Im1vdmVlbmQiOiJtb3ZlIix0aGlzLl91cGRhdGUsdGhpcyl9LF9hZGRTY2FsZXM6ZnVuY3Rpb24odCxpLGUpe3QubWV0cmljJiYodGhpcy5fbVNjYWxlPWh0KCJkaXYiLGksZSkpLHQuaW1wZXJpYWwmJih0aGlzLl9pU2NhbGU9aHQoImRpdiIsaSxlKSl9LF91cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsaT10LmdldFNpemUoKS55LzIsZT10LmRpc3RhbmNlKHQuY29udGFpbmVyUG9pbnRUb0xhdExuZyhbMCxpXSksdC5jb250YWluZXJQb2ludFRvTGF0TG5nKFt0aGlzLm9wdGlvbnMubWF4V2lkdGgsaV0pKTt0aGlzLl91cGRhdGVTY2FsZXMoZSl9LF91cGRhdGVTY2FsZXM6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zLm1ldHJpYyYmdCYmdGhpcy5fdXBkYXRlTWV0cmljKHQpLHRoaXMub3B0aW9ucy5pbXBlcmlhbCYmdCYmdGhpcy5fdXBkYXRlSW1wZXJpYWwodCl9LF91cGRhdGVNZXRyaWM6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fZ2V0Um91bmROdW0odCksZT1pPDFlMz9pKyIgbSI6aS8xZTMrIiBrbSI7dGhpcy5fdXBkYXRlU2NhbGUodGhpcy5fbVNjYWxlLGUsaS90KX0sX3VwZGF0ZUltcGVyaWFsOmZ1bmN0aW9uKHQpe3ZhciBpLGUsbixvPTMuMjgwODM5OSp0O28+NTI4MD8oaT1vLzUyODAsZT10aGlzLl9nZXRSb3VuZE51bShpKSx0aGlzLl91cGRhdGVTY2FsZSh0aGlzLl9pU2NhbGUsZSsiIG1pIixlL2kpKToobj10aGlzLl9nZXRSb3VuZE51bShvKSx0aGlzLl91cGRhdGVTY2FsZSh0aGlzLl9pU2NhbGUsbisiIGZ0IixuL28pKX0sX3VwZGF0ZVNjYWxlOmZ1bmN0aW9uKHQsaSxlKXt0LnN0eWxlLndpZHRoPU1hdGgucm91bmQodGhpcy5vcHRpb25zLm1heFdpZHRoKmUpKyJweCIsdC5pbm5lckhUTUw9aX0sX2dldFJvdW5kTnVtOmZ1bmN0aW9uKHQpe3ZhciBpPU1hdGgucG93KDEwLChNYXRoLmZsb29yKHQpKyIiKS5sZW5ndGgtMSksZT10L2k7cmV0dXJuIGU9ZT49MTA/MTA6ZT49NT81OmU+PTM/MzplPj0yPzI6MSxpKmV9fSksQ2U9UGUuZXh0ZW5kKHtvcHRpb25zOntwb3NpdGlvbjoiYm90dG9tcmlnaHQiLHByZWZpeDonPGEgaHJlZj0iaHR0cHM6Ly9sZWFmbGV0anMuY29tIiB0aXRsZT0iQSBKUyBsaWJyYXJ5IGZvciBpbnRlcmFjdGl2ZSBtYXBzIj5MZWFmbGV0PC9hPid9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7bCh0aGlzLHQpLHRoaXMuX2F0dHJpYnV0aW9ucz17fX0sb25BZGQ6ZnVuY3Rpb24odCl7dC5hdHRyaWJ1dGlvbkNvbnRyb2w9dGhpcyx0aGlzLl9jb250YWluZXI9aHQoImRpdiIsImxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiIpLEoodGhpcy5fY29udGFpbmVyKTtmb3IodmFyIGkgaW4gdC5fbGF5ZXJzKXQuX2xheWVyc1tpXS5nZXRBdHRyaWJ1dGlvbiYmdGhpcy5hZGRBdHRyaWJ1dGlvbih0Ll9sYXllcnNbaV0uZ2V0QXR0cmlidXRpb24oKSk7cmV0dXJuIHRoaXMuX3VwZGF0ZSgpLHRoaXMuX2NvbnRhaW5lcn0sc2V0UHJlZml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucHJlZml4PXQsdGhpcy5fdXBkYXRlKCksdGhpc30sYWRkQXR0cmlidXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIHQ/KHRoaXMuX2F0dHJpYnV0aW9uc1t0XXx8KHRoaXMuX2F0dHJpYnV0aW9uc1t0XT0wKSx0aGlzLl9hdHRyaWJ1dGlvbnNbdF0rKyx0aGlzLl91cGRhdGUoKSx0aGlzKTp0aGlzfSxyZW1vdmVBdHRyaWJ1dGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5fYXR0cmlidXRpb25zW3RdJiYodGhpcy5fYXR0cmlidXRpb25zW3RdLS0sdGhpcy5fdXBkYXRlKCkpLHRoaXMpOnRoaXN9LF91cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXApe3ZhciB0PVtdO2Zvcih2YXIgaSBpbiB0aGlzLl9hdHRyaWJ1dGlvbnMpdGhpcy5fYXR0cmlidXRpb25zW2ldJiZ0LnB1c2goaSk7dmFyIGU9W107dGhpcy5vcHRpb25zLnByZWZpeCYmZS5wdXNoKHRoaXMub3B0aW9ucy5wcmVmaXgpLHQubGVuZ3RoJiZlLnB1c2godC5qb2luKCIsICIpKSx0aGlzLl9jb250YWluZXIuaW5uZXJIVE1MPWUuam9pbigiIHwgIil9fX0pO0xlLm1lcmdlT3B0aW9ucyh7YXR0cmlidXRpb25Db250cm9sOiEwfSksTGUuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXR0cmlidXRpb25Db250cm9sJiYobmV3IENlKS5hZGRUbyh0aGlzKX0pO1BlLkxheWVycz1UZSxQZS5ab29tPXplLFBlLlNjYWxlPU1lLFBlLkF0dHJpYnV0aW9uPUNlLGJlLmxheWVycz1mdW5jdGlvbih0LGksZSl7cmV0dXJuIG5ldyBUZSh0LGksZSl9LGJlLnpvb209ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB6ZSh0KX0sYmUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBNZSh0KX0sYmUuYXR0cmlidXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBDZSh0KX07dmFyIFplPXYuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10fSxlbmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5hYmxlZD90aGlzOih0aGlzLl9lbmFibGVkPSEwLHRoaXMuYWRkSG9va3MoKSx0aGlzKX0sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmFibGVkPyh0aGlzLl9lbmFibGVkPSExLHRoaXMucmVtb3ZlSG9va3MoKSx0aGlzKTp0aGlzfSxlbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lbmFibGVkfX0pO1plLmFkZFRvPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQuYWRkSGFuZGxlcihpLHRoaXMpLHRoaXN9O3ZhciBTZSxFZT17RXZlbnRzOmhpfSxrZT1WaT8idG91Y2hzdGFydCBtb3VzZWRvd24iOiJtb3VzZWRvd24iLEFlPXttb3VzZWRvd246Im1vdXNldXAiLHRvdWNoc3RhcnQ6InRvdWNoZW5kIixwb2ludGVyZG93bjoidG91Y2hlbmQiLE1TUG9pbnRlckRvd246InRvdWNoZW5kIn0sSWU9e21vdXNlZG93bjoibW91c2Vtb3ZlIix0b3VjaHN0YXJ0OiJ0b3VjaG1vdmUiLHBvaW50ZXJkb3duOiJ0b3VjaG1vdmUiLE1TUG9pbnRlckRvd246InRvdWNobW92ZSJ9LEJlPXVpLmV4dGVuZCh7b3B0aW9uczp7Y2xpY2tUb2xlcmFuY2U6M30saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGksZSxuKXtsKHRoaXMsbiksdGhpcy5fZWxlbWVudD10LHRoaXMuX2RyYWdTdGFydFRhcmdldD1pfHx0LHRoaXMuX3ByZXZlbnRPdXRsaW5lPWV9LGVuYWJsZTpmdW5jdGlvbigpe3RoaXMuX2VuYWJsZWR8fChWKHRoaXMuX2RyYWdTdGFydFRhcmdldCxrZSx0aGlzLl9vbkRvd24sdGhpcyksdGhpcy5fZW5hYmxlZD0hMCl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVkJiYoQmUuX2RyYWdnaW5nPT09dGhpcyYmdGhpcy5maW5pc2hEcmFnKCkscSh0aGlzLl9kcmFnU3RhcnRUYXJnZXQsa2UsdGhpcy5fb25Eb3duLHRoaXMpLHRoaXMuX2VuYWJsZWQ9ITEsdGhpcy5fbW92ZWQ9ITEpfSxfb25Eb3duOmZ1bmN0aW9uKHQpe2lmKCF0Ll9zaW11bGF0ZWQmJnRoaXMuX2VuYWJsZWQmJih0aGlzLl9tb3ZlZD0hMSwhZHQodGhpcy5fZWxlbWVudCwibGVhZmxldC16b29tLWFuaW0iKSYmIShCZS5fZHJhZ2dpbmd8fHQuc2hpZnRLZXl8fDEhPT10LndoaWNoJiYxIT09dC5idXR0b24mJiF0LnRvdWNoZXN8fChCZS5fZHJhZ2dpbmc9dGhpcyx0aGlzLl9wcmV2ZW50T3V0bGluZSYmenQodGhpcy5fZWxlbWVudCksYnQoKSxtaSgpLHRoaXMuX21vdmluZykpKSl7dGhpcy5maXJlKCJkb3duIik7dmFyIGk9dC50b3VjaGVzP3QudG91Y2hlc1swXTp0O3RoaXMuX3N0YXJ0UG9pbnQ9bmV3IHgoaS5jbGllbnRYLGkuY2xpZW50WSksVihkb2N1bWVudCxJZVt0LnR5cGVdLHRoaXMuX29uTW92ZSx0aGlzKSxWKGRvY3VtZW50LEFlW3QudHlwZV0sdGhpcy5fb25VcCx0aGlzKX19LF9vbk1vdmU6ZnVuY3Rpb24odCl7aWYoIXQuX3NpbXVsYXRlZCYmdGhpcy5fZW5hYmxlZClpZih0LnRvdWNoZXMmJnQudG91Y2hlcy5sZW5ndGg+MSl0aGlzLl9tb3ZlZD0hMDtlbHNle3ZhciBpPXQudG91Y2hlcyYmMT09PXQudG91Y2hlcy5sZW5ndGg/dC50b3VjaGVzWzBdOnQsZT1uZXcgeChpLmNsaWVudFgsaS5jbGllbnRZKS5zdWJ0cmFjdCh0aGlzLl9zdGFydFBvaW50KTsoZS54fHxlLnkpJiYoTWF0aC5hYnMoZS54KStNYXRoLmFicyhlLnkpPHRoaXMub3B0aW9ucy5jbGlja1RvbGVyYW5jZXx8KCQodCksdGhpcy5fbW92ZWR8fCh0aGlzLmZpcmUoImRyYWdzdGFydCIpLHRoaXMuX21vdmVkPSEwLHRoaXMuX3N0YXJ0UG9zPVB0KHRoaXMuX2VsZW1lbnQpLnN1YnRyYWN0KGUpLHB0KGRvY3VtZW50LmJvZHksImxlYWZsZXQtZHJhZ2dpbmciKSx0aGlzLl9sYXN0VGFyZ2V0PXQudGFyZ2V0fHx0LnNyY0VsZW1lbnQsd2luZG93LlNWR0VsZW1lbnRJbnN0YW5jZSYmdGhpcy5fbGFzdFRhcmdldCBpbnN0YW5jZW9mIFNWR0VsZW1lbnRJbnN0YW5jZSYmKHRoaXMuX2xhc3RUYXJnZXQ9dGhpcy5fbGFzdFRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCkscHQodGhpcy5fbGFzdFRhcmdldCwibGVhZmxldC1kcmFnLXRhcmdldCIpKSx0aGlzLl9uZXdQb3M9dGhpcy5fc3RhcnRQb3MuYWRkKGUpLHRoaXMuX21vdmluZz0hMCxnKHRoaXMuX2FuaW1SZXF1ZXN0KSx0aGlzLl9sYXN0RXZlbnQ9dCx0aGlzLl9hbmltUmVxdWVzdD1mKHRoaXMuX3VwZGF0ZVBvc2l0aW9uLHRoaXMsITApKSl9fSxfdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD17b3JpZ2luYWxFdmVudDp0aGlzLl9sYXN0RXZlbnR9O3RoaXMuZmlyZSgicHJlZHJhZyIsdCksTHQodGhpcy5fZWxlbWVudCx0aGlzLl9uZXdQb3MpLHRoaXMuZmlyZSgiZHJhZyIsdCl9LF9vblVwOmZ1bmN0aW9uKHQpeyF0Ll9zaW11bGF0ZWQmJnRoaXMuX2VuYWJsZWQmJnRoaXMuZmluaXNoRHJhZygpfSxmaW5pc2hEcmFnOmZ1bmN0aW9uKCl7bXQoZG9jdW1lbnQuYm9keSwibGVhZmxldC1kcmFnZ2luZyIpLHRoaXMuX2xhc3RUYXJnZXQmJihtdCh0aGlzLl9sYXN0VGFyZ2V0LCJsZWFmbGV0LWRyYWctdGFyZ2V0IiksdGhpcy5fbGFzdFRhcmdldD1udWxsKTtmb3IodmFyIHQgaW4gSWUpcShkb2N1bWVudCxJZVt0XSx0aGlzLl9vbk1vdmUsdGhpcykscShkb2N1bWVudCxBZVt0XSx0aGlzLl9vblVwLHRoaXMpO1R0KCksZmkoKSx0aGlzLl9tb3ZlZCYmdGhpcy5fbW92aW5nJiYoZyh0aGlzLl9hbmltUmVxdWVzdCksdGhpcy5maXJlKCJkcmFnZW5kIix7ZGlzdGFuY2U6dGhpcy5fbmV3UG9zLmRpc3RhbmNlVG8odGhpcy5fc3RhcnRQb3MpfSkpLHRoaXMuX21vdmluZz0hMSxCZS5fZHJhZ2dpbmc9ITF9fSksT2U9KE9iamVjdC5mcmVlemV8fE9iamVjdCkoe3NpbXBsaWZ5OkN0LHBvaW50VG9TZWdtZW50RGlzdGFuY2U6WnQsY2xvc2VzdFBvaW50T25TZWdtZW50OmZ1bmN0aW9uKHQsaSxlKXtyZXR1cm4gUnQodCxpLGUpfSxjbGlwU2VnbWVudDpBdCxfZ2V0RWRnZUludGVyc2VjdGlvbjpJdCxfZ2V0Qml0Q29kZTpCdCxfc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQ6UnQsaXNGbGF0OkR0LF9mbGF0Ok50fSksUmU9KE9iamVjdC5mcmVlemV8fE9iamVjdCkoe2NsaXBQb2x5Z29uOmp0fSksRGU9e3Byb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB4KHQubG5nLHQubGF0KX0sdW5wcm9qZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgTSh0LnksdC54KX0sYm91bmRzOm5ldyBQKFstMTgwLC05MF0sWzE4MCw5MF0pfSxOZT17Ujo2Mzc4MTM3LFJfTUlOT1I6NjM1Njc1Mi4zMTQyNDUxNzksYm91bmRzOm5ldyBQKFstMjAwMzc1MDguMzQyNzksLTE1NDk2NTcwLjczOTcyXSxbMjAwMzc1MDguMzQyNzksMTg3NjQ2NTYuMjMxMzhdKSxwcm9qZWN0OmZ1bmN0aW9uKHQpe3ZhciBpPU1hdGguUEkvMTgwLGU9dGhpcy5SLG49dC5sYXQqaSxvPXRoaXMuUl9NSU5PUi9lLHM9TWF0aC5zcXJ0KDEtbypvKSxyPXMqTWF0aC5zaW4obiksYT1NYXRoLnRhbihNYXRoLlBJLzQtbi8yKS9NYXRoLnBvdygoMS1yKS8oMStyKSxzLzIpO3JldHVybiBuPS1lKk1hdGgubG9nKE1hdGgubWF4KGEsMWUtMTApKSxuZXcgeCh0LmxuZyppKmUsbil9LHVucHJvamVjdDpmdW5jdGlvbih0KXtmb3IodmFyIGksZT0xODAvTWF0aC5QSSxuPXRoaXMuUixvPXRoaXMuUl9NSU5PUi9uLHM9TWF0aC5zcXJ0KDEtbypvKSxyPU1hdGguZXhwKC10LnkvbiksYT1NYXRoLlBJLzItMipNYXRoLmF0YW4ociksaD0wLHU9LjE7aDwxNSYmTWF0aC5hYnModSk+MWUtNztoKyspaT1zKk1hdGguc2luKGEpLGk9TWF0aC5wb3coKDEtaSkvKDEraSkscy8yKSxhKz11PU1hdGguUEkvMi0yKk1hdGguYXRhbihyKmkpLWE7cmV0dXJuIG5ldyBNKGEqZSx0LngqZS9uKX19LGplPShPYmplY3QuZnJlZXplfHxPYmplY3QpKHtMb25MYXQ6RGUsTWVyY2F0b3I6TmUsU3BoZXJpY2FsTWVyY2F0b3I6ZGl9KSxXZT1pKHt9LF9pLHtjb2RlOiJFUFNHOjMzOTUiLHByb2plY3Rpb246TmUsdHJhbnNmb3JtYXRpb246ZnVuY3Rpb24oKXt2YXIgdD0uNS8oTWF0aC5QSSpOZS5SKTtyZXR1cm4gUyh0LC41LC10LC41KX0oKX0pLEhlPWkoe30sX2kse2NvZGU6IkVQU0c6NDMyNiIscHJvamVjdGlvbjpEZSx0cmFuc2Zvcm1hdGlvbjpTKDEvMTgwLDEsLTEvMTgwLC41KX0pLEZlPWkoe30sY2kse3Byb2plY3Rpb246RGUsdHJhbnNmb3JtYXRpb246UygxLDAsLTEsMCksc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDIsdCl9LHpvb206ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4yfSxkaXN0YW5jZTpmdW5jdGlvbih0LGkpe3ZhciBlPWkubG5nLXQubG5nLG49aS5sYXQtdC5sYXQ7cmV0dXJuIE1hdGguc3FydChlKmUrbipuKX0saW5maW5pdGU6ITB9KTtjaS5FYXJ0aD1faSxjaS5FUFNHMzM5NT1XZSxjaS5FUFNHMzg1Nz12aSxjaS5FUFNHOTAwOTEzPXlpLGNpLkVQU0c0MzI2PUhlLGNpLlNpbXBsZT1GZTt2YXIgVWU9dWkuZXh0ZW5kKHtvcHRpb25zOntwYW5lOiJvdmVybGF5UGFuZSIsYXR0cmlidXRpb246bnVsbCxidWJibGluZ01vdXNlRXZlbnRzOiEwfSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gdC5hZGRMYXllcih0aGlzKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW1vdmVGcm9tKHRoaXMuX21hcHx8dGhpcy5fbWFwVG9BZGQpfSxyZW1vdmVGcm9tOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LnJlbW92ZUxheWVyKHRoaXMpLHRoaXN9LGdldFBhbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcC5nZXRQYW5lKHQ/dGhpcy5vcHRpb25zW3RdfHx0OnRoaXMub3B0aW9ucy5wYW5lKX0sYWRkSW50ZXJhY3RpdmVUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcC5fdGFyZ2V0c1tuKHQpXT10aGlzLHRoaXN9LHJlbW92ZUludGVyYWN0aXZlVGFyZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgdGhpcy5fbWFwLl90YXJnZXRzW24odCldLHRoaXN9LGdldEF0dHJpYnV0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGlvbn0sX2xheWVyQWRkOmZ1bmN0aW9uKHQpe3ZhciBpPXQudGFyZ2V0O2lmKGkuaGFzTGF5ZXIodGhpcykpe2lmKHRoaXMuX21hcD1pLHRoaXMuX3pvb21BbmltYXRlZD1pLl96b29tQW5pbWF0ZWQsdGhpcy5nZXRFdmVudHMpe3ZhciBlPXRoaXMuZ2V0RXZlbnRzKCk7aS5vbihlLHRoaXMpLHRoaXMub25jZSgicmVtb3ZlIixmdW5jdGlvbigpe2kub2ZmKGUsdGhpcyl9LHRoaXMpfXRoaXMub25BZGQoaSksdGhpcy5nZXRBdHRyaWJ1dGlvbiYmaS5hdHRyaWJ1dGlvbkNvbnRyb2wmJmkuYXR0cmlidXRpb25Db250cm9sLmFkZEF0dHJpYnV0aW9uKHRoaXMuZ2V0QXR0cmlidXRpb24oKSksdGhpcy5maXJlKCJhZGQiKSxpLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dGhpc30pfX19KTtMZS5pbmNsdWRlKHthZGRMYXllcjpmdW5jdGlvbih0KXtpZighdC5fbGF5ZXJBZGQpdGhyb3cgbmV3IEVycm9yKCJUaGUgcHJvdmlkZWQgb2JqZWN0IGlzIG5vdCBhIExheWVyLiIpO3ZhciBpPW4odCk7cmV0dXJuIHRoaXMuX2xheWVyc1tpXT90aGlzOih0aGlzLl9sYXllcnNbaV09dCx0Ll9tYXBUb0FkZD10aGlzLHQuYmVmb3JlQWRkJiZ0LmJlZm9yZUFkZCh0aGlzKSx0aGlzLndoZW5SZWFkeSh0Ll9sYXllckFkZCx0KSx0aGlzKX0scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7dmFyIGk9bih0KTtyZXR1cm4gdGhpcy5fbGF5ZXJzW2ldPyh0aGlzLl9sb2FkZWQmJnQub25SZW1vdmUodGhpcyksdC5nZXRBdHRyaWJ1dGlvbiYmdGhpcy5hdHRyaWJ1dGlvbkNvbnRyb2wmJnRoaXMuYXR0cmlidXRpb25Db250cm9sLnJlbW92ZUF0dHJpYnV0aW9uKHQuZ2V0QXR0cmlidXRpb24oKSksZGVsZXRlIHRoaXMuX2xheWVyc1tpXSx0aGlzLl9sb2FkZWQmJih0aGlzLmZpcmUoImxheWVycmVtb3ZlIix7bGF5ZXI6dH0pLHQuZmlyZSgicmVtb3ZlIikpLHQuX21hcD10Ll9tYXBUb0FkZD1udWxsLHRoaXMpOnRoaXN9LGhhc0xheWVyOmZ1bmN0aW9uKHQpe3JldHVybiEhdCYmbih0KWluIHRoaXMuX2xheWVyc30sZWFjaExheWVyOmZ1bmN0aW9uKHQsaSl7Zm9yKHZhciBlIGluIHRoaXMuX2xheWVycyl0LmNhbGwoaSx0aGlzLl9sYXllcnNbZV0pO3JldHVybiB0aGlzfSxfYWRkTGF5ZXJzOmZ1bmN0aW9uKHQpe2Zvcih2YXIgaT0wLGU9KHQ9dD9laSh0KT90Olt0XTpbXSkubGVuZ3RoO2k8ZTtpKyspdGhpcy5hZGRMYXllcih0W2ldKX0sX2FkZFpvb21MaW1pdDpmdW5jdGlvbih0KXshaXNOYU4odC5vcHRpb25zLm1heFpvb20pJiZpc05hTih0Lm9wdGlvbnMubWluWm9vbSl8fCh0aGlzLl96b29tQm91bmRMYXllcnNbbih0KV09dCx0aGlzLl91cGRhdGVab29tTGV2ZWxzKCkpfSxfcmVtb3ZlWm9vbUxpbWl0OmZ1bmN0aW9uKHQpe3ZhciBpPW4odCk7dGhpcy5fem9vbUJvdW5kTGF5ZXJzW2ldJiYoZGVsZXRlIHRoaXMuX3pvb21Cb3VuZExheWVyc1tpXSx0aGlzLl91cGRhdGVab29tTGV2ZWxzKCkpfSxfdXBkYXRlWm9vbUxldmVsczpmdW5jdGlvbigpe3ZhciB0PTEvMCxpPS0xLzAsZT10aGlzLl9nZXRab29tU3BhbigpO2Zvcih2YXIgbiBpbiB0aGlzLl96b29tQm91bmRMYXllcnMpe3ZhciBvPXRoaXMuX3pvb21Cb3VuZExheWVyc1tuXS5vcHRpb25zO3Q9dm9pZCAwPT09by5taW5ab29tP3Q6TWF0aC5taW4odCxvLm1pblpvb20pLGk9dm9pZCAwPT09by5tYXhab29tP2k6TWF0aC5tYXgoaSxvLm1heFpvb20pfXRoaXMuX2xheWVyc01heFpvb209aT09PS0xLzA/dm9pZCAwOmksdGhpcy5fbGF5ZXJzTWluWm9vbT10PT09MS8wP3ZvaWQgMDp0LGUhPT10aGlzLl9nZXRab29tU3BhbigpJiZ0aGlzLmZpcmUoInpvb21sZXZlbHNjaGFuZ2UiKSx2b2lkIDA9PT10aGlzLm9wdGlvbnMubWF4Wm9vbSYmdGhpcy5fbGF5ZXJzTWF4Wm9vbSYmdGhpcy5nZXRab29tKCk+dGhpcy5fbGF5ZXJzTWF4Wm9vbSYmdGhpcy5zZXRab29tKHRoaXMuX2xheWVyc01heFpvb20pLHZvaWQgMD09PXRoaXMub3B0aW9ucy5taW5ab29tJiZ0aGlzLl9sYXllcnNNaW5ab29tJiZ0aGlzLmdldFpvb20oKTx0aGlzLl9sYXllcnNNaW5ab29tJiZ0aGlzLnNldFpvb20odGhpcy5fbGF5ZXJzTWluWm9vbSl9fSk7dmFyIFZlPVVlLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGkpe2wodGhpcyxpKSx0aGlzLl9sYXllcnM9e307dmFyIGUsbjtpZih0KWZvcihlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMuYWRkTGF5ZXIodFtlXSl9LGFkZExheWVyOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuZ2V0TGF5ZXJJZCh0KTtyZXR1cm4gdGhpcy5fbGF5ZXJzW2ldPXQsdGhpcy5fbWFwJiZ0aGlzLl9tYXAuYWRkTGF5ZXIodCksdGhpc30scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7dmFyIGk9dCBpbiB0aGlzLl9sYXllcnM/dDp0aGlzLmdldExheWVySWQodCk7cmV0dXJuIHRoaXMuX21hcCYmdGhpcy5fbGF5ZXJzW2ldJiZ0aGlzLl9tYXAucmVtb3ZlTGF5ZXIodGhpcy5fbGF5ZXJzW2ldKSxkZWxldGUgdGhpcy5fbGF5ZXJzW2ldLHRoaXN9LGhhc0xheWVyOmZ1bmN0aW9uKHQpe3JldHVybiEhdCYmKHQgaW4gdGhpcy5fbGF5ZXJzfHx0aGlzLmdldExheWVySWQodClpbiB0aGlzLl9sYXllcnMpfSxjbGVhckxheWVyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2hMYXllcih0aGlzLnJlbW92ZUxheWVyLHRoaXMpfSxpbnZva2U6ZnVuY3Rpb24odCl7dmFyIGksZSxuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmb3IoaSBpbiB0aGlzLl9sYXllcnMpKGU9dGhpcy5fbGF5ZXJzW2ldKVt0XSYmZVt0XS5hcHBseShlLG4pO3JldHVybiB0aGlzfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLmVhY2hMYXllcih0LmFkZExheWVyLHQpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0aGlzLmVhY2hMYXllcih0LnJlbW92ZUxheWVyLHQpfSxlYWNoTGF5ZXI6ZnVuY3Rpb24odCxpKXtmb3IodmFyIGUgaW4gdGhpcy5fbGF5ZXJzKXQuY2FsbChpLHRoaXMuX2xheWVyc1tlXSk7cmV0dXJuIHRoaXN9LGdldExheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXllcnNbdF19LGdldExheWVyczpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hMYXllcih0LnB1c2gsdCksdH0sc2V0WkluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludm9rZSgic2V0WkluZGV4Iix0KX0sZ2V0TGF5ZXJJZDpmdW5jdGlvbih0KXtyZXR1cm4gbih0KX19KSxxZT1WZS5leHRlbmQoe2FkZExheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0xheWVyKHQpP3RoaXM6KHQuYWRkRXZlbnRQYXJlbnQodGhpcyksVmUucHJvdG90eXBlLmFkZExheWVyLmNhbGwodGhpcyx0KSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dH0pKX0scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzTGF5ZXIodCk/KHQgaW4gdGhpcy5fbGF5ZXJzJiYodD10aGlzLl9sYXllcnNbdF0pLHQucmVtb3ZlRXZlbnRQYXJlbnQodGhpcyksVmUucHJvdG90eXBlLnJlbW92ZUxheWVyLmNhbGwodGhpcyx0KSx0aGlzLmZpcmUoImxheWVycmVtb3ZlIix7bGF5ZXI6dH0pKTp0aGlzfSxzZXRTdHlsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZva2UoInNldFN0eWxlIix0KX0sYnJpbmdUb0Zyb250OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW52b2tlKCJicmluZ1RvRnJvbnQiKX0sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnZva2UoImJyaW5nVG9CYWNrIil9LGdldEJvdW5kczpmdW5jdGlvbigpe3ZhciB0PW5ldyBUO2Zvcih2YXIgaSBpbiB0aGlzLl9sYXllcnMpe3ZhciBlPXRoaXMuX2xheWVyc1tpXTt0LmV4dGVuZChlLmdldEJvdW5kcz9lLmdldEJvdW5kcygpOmUuZ2V0TGF0TG5nKCkpfXJldHVybiB0fX0pLEdlPXYuZXh0ZW5kKHtvcHRpb25zOntwb3B1cEFuY2hvcjpbMCwwXSx0b29sdGlwQW5jaG9yOlswLDBdfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2wodGhpcyx0KX0sY3JlYXRlSWNvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY3JlYXRlSWNvbigiaWNvbiIsdCl9LGNyZWF0ZVNoYWRvdzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY3JlYXRlSWNvbigic2hhZG93Iix0KX0sX2NyZWF0ZUljb246ZnVuY3Rpb24odCxpKXt2YXIgZT10aGlzLl9nZXRJY29uVXJsKHQpO2lmKCFlKXtpZigiaWNvbiI9PT10KXRocm93IG5ldyBFcnJvcigiaWNvblVybCBub3Qgc2V0IGluIEljb24gb3B0aW9ucyAoc2VlIHRoZSBkb2NzKS4iKTtyZXR1cm4gbnVsbH12YXIgbj10aGlzLl9jcmVhdGVJbWcoZSxpJiYiSU1HIj09PWkudGFnTmFtZT9pOm51bGwpO3JldHVybiB0aGlzLl9zZXRJY29uU3R5bGVzKG4sdCksbn0sX3NldEljb25TdHlsZXM6ZnVuY3Rpb24odCxpKXt2YXIgZT10aGlzLm9wdGlvbnMsbj1lW2krIlNpemUiXTsibnVtYmVyIj09dHlwZW9mIG4mJihuPVtuLG5dKTt2YXIgbz13KG4pLHM9dygic2hhZG93Ij09PWkmJmUuc2hhZG93QW5jaG9yfHxlLmljb25BbmNob3J8fG8mJm8uZGl2aWRlQnkoMiwhMCkpO3QuY2xhc3NOYW1lPSJsZWFmbGV0LW1hcmtlci0iK2krIiAiKyhlLmNsYXNzTmFtZXx8IiIpLHMmJih0LnN0eWxlLm1hcmdpbkxlZnQ9LXMueCsicHgiLHQuc3R5bGUubWFyZ2luVG9wPS1zLnkrInB4IiksbyYmKHQuc3R5bGUud2lkdGg9by54KyJweCIsdC5zdHlsZS5oZWlnaHQ9by55KyJweCIpfSxfY3JlYXRlSW1nOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGk9aXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIiksaS5zcmM9dCxpfSxfZ2V0SWNvblVybDpmdW5jdGlvbih0KXtyZXR1cm4gS2kmJnRoaXMub3B0aW9uc1t0KyJSZXRpbmFVcmwiXXx8dGhpcy5vcHRpb25zW3QrIlVybCJdfX0pLEtlPUdlLmV4dGVuZCh7b3B0aW9uczp7aWNvblVybDoibWFya2VyLWljb24ucG5nIixpY29uUmV0aW5hVXJsOiJtYXJrZXItaWNvbi0yeC5wbmciLHNoYWRvd1VybDoibWFya2VyLXNoYWRvdy5wbmciLGljb25TaXplOlsyNSw0MV0saWNvbkFuY2hvcjpbMTIsNDFdLHBvcHVwQW5jaG9yOlsxLC0zNF0sdG9vbHRpcEFuY2hvcjpbMTYsLTI4XSxzaGFkb3dTaXplOls0MSw0MV19LF9nZXRJY29uVXJsOmZ1bmN0aW9uKHQpe3JldHVybiBLZS5pbWFnZVBhdGh8fChLZS5pbWFnZVBhdGg9dGhpcy5fZGV0ZWN0SWNvblBhdGgoKSksKHRoaXMub3B0aW9ucy5pbWFnZVBhdGh8fEtlLmltYWdlUGF0aCkrR2UucHJvdG90eXBlLl9nZXRJY29uVXJsLmNhbGwodGhpcyx0KX0sX2RldGVjdEljb25QYXRoOmZ1bmN0aW9uKCl7dmFyIHQ9aHQoImRpdiIsImxlYWZsZXQtZGVmYXVsdC1pY29uLXBhdGgiLGRvY3VtZW50LmJvZHkpLGk9YXQodCwiYmFja2dyb3VuZC1pbWFnZSIpfHxhdCh0LCJiYWNrZ3JvdW5kSW1hZ2UiKTtyZXR1cm4gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxpPW51bGw9PT1pfHwwIT09aS5pbmRleE9mKCJ1cmwiKT8iIjppLnJlcGxhY2UoL151cmxcKFsiJ10/LywiIikucmVwbGFjZSgvbWFya2VyLWljb25cLnBuZ1siJ10/XCkkLywiIil9fSksWWU9WmUuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcmtlcj10fSxhZGRIb29rczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcmtlci5faWNvbjt0aGlzLl9kcmFnZ2FibGV8fCh0aGlzLl9kcmFnZ2FibGU9bmV3IEJlKHQsdCwhMCkpLHRoaXMuX2RyYWdnYWJsZS5vbih7ZHJhZ3N0YXJ0OnRoaXMuX29uRHJhZ1N0YXJ0LHByZWRyYWc6dGhpcy5fb25QcmVEcmFnLGRyYWc6dGhpcy5fb25EcmFnLGRyYWdlbmQ6dGhpcy5fb25EcmFnRW5kfSx0aGlzKS5lbmFibGUoKSxwdCh0LCJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXt0aGlzLl9kcmFnZ2FibGUub2ZmKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQscHJlZHJhZzp0aGlzLl9vblByZURyYWcsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLmRpc2FibGUoKSx0aGlzLl9tYXJrZXIuX2ljb24mJm10KHRoaXMuX21hcmtlci5faWNvbiwibGVhZmxldC1tYXJrZXItZHJhZ2dhYmxlIil9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sX2FkanVzdFBhbjpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9tYXJrZXIsZT1pLl9tYXAsbj10aGlzLl9tYXJrZXIub3B0aW9ucy5hdXRvUGFuU3BlZWQsbz10aGlzLl9tYXJrZXIub3B0aW9ucy5hdXRvUGFuUGFkZGluZyxzPUwuRG9tVXRpbC5nZXRQb3NpdGlvbihpLl9pY29uKSxyPWUuZ2V0UGl4ZWxCb3VuZHMoKSxhPWUuZ2V0UGl4ZWxPcmlnaW4oKSxoPWIoci5taW4uX3N1YnRyYWN0KGEpLmFkZChvKSxyLm1heC5fc3VidHJhY3QoYSkuc3VidHJhY3QobykpO2lmKCFoLmNvbnRhaW5zKHMpKXt2YXIgdT13KChNYXRoLm1heChoLm1heC54LHMueCktaC5tYXgueCkvKHIubWF4LngtaC5tYXgueCktKE1hdGgubWluKGgubWluLngscy54KS1oLm1pbi54KS8oci5taW4ueC1oLm1pbi54KSwoTWF0aC5tYXgoaC5tYXgueSxzLnkpLWgubWF4LnkpLyhyLm1heC55LWgubWF4LnkpLShNYXRoLm1pbihoLm1pbi55LHMueSktaC5taW4ueSkvKHIubWluLnktaC5taW4ueSkpLm11bHRpcGx5Qnkobik7ZS5wYW5CeSh1LHthbmltYXRlOiExfSksdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MuX2FkZCh1KSx0aGlzLl9kcmFnZ2FibGUuX3N0YXJ0UG9zLl9hZGQodSksTC5Eb21VdGlsLnNldFBvc2l0aW9uKGkuX2ljb24sdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MpLHRoaXMuX29uRHJhZyh0KSx0aGlzLl9wYW5SZXF1ZXN0PWYodGhpcy5fYWRqdXN0UGFuLmJpbmQodGhpcyx0KSl9fSxfb25EcmFnU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9vbGRMYXRMbmc9dGhpcy5fbWFya2VyLmdldExhdExuZygpLHRoaXMuX21hcmtlci5jbG9zZVBvcHVwKCkuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiZHJhZ3N0YXJ0Iil9LF9vblByZURyYWc6ZnVuY3Rpb24odCl7dGhpcy5fbWFya2VyLm9wdGlvbnMuYXV0b1BhbiYmKGcodGhpcy5fcGFuUmVxdWVzdCksdGhpcy5fcGFuUmVxdWVzdD1mKHRoaXMuX2FkanVzdFBhbi5iaW5kKHRoaXMsdCkpKX0sX29uRHJhZzpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9tYXJrZXIsZT1pLl9zaGFkb3csbj1QdChpLl9pY29uKSxvPWkuX21hcC5sYXllclBvaW50VG9MYXRMbmcobik7ZSYmTHQoZSxuKSxpLl9sYXRsbmc9byx0LmxhdGxuZz1vLHQub2xkTGF0TG5nPXRoaXMuX29sZExhdExuZyxpLmZpcmUoIm1vdmUiLHQpLmZpcmUoImRyYWciLHQpfSxfb25EcmFnRW5kOmZ1bmN0aW9uKHQpe2codGhpcy5fcGFuUmVxdWVzdCksZGVsZXRlIHRoaXMuX29sZExhdExuZyx0aGlzLl9tYXJrZXIuZmlyZSgibW92ZWVuZCIpLmZpcmUoImRyYWdlbmQiLHQpfX0pLFhlPVVlLmV4dGVuZCh7b3B0aW9uczp7aWNvbjpuZXcgS2UsaW50ZXJhY3RpdmU6ITAsZHJhZ2dhYmxlOiExLGF1dG9QYW46ITEsYXV0b1BhblBhZGRpbmc6WzUwLDUwXSxhdXRvUGFuU3BlZWQ6MTAsa2V5Ym9hcmQ6ITAsdGl0bGU6IiIsYWx0OiIiLHpJbmRleE9mZnNldDowLG9wYWNpdHk6MSxyaXNlT25Ib3ZlcjohMSxyaXNlT2Zmc2V0OjI1MCxwYW5lOiJtYXJrZXJQYW5lIixidWJibGluZ01vdXNlRXZlbnRzOiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsaSl7bCh0aGlzLGkpLHRoaXMuX2xhdGxuZz1DKHQpfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl96b29tQW5pbWF0ZWQ9dGhpcy5fem9vbUFuaW1hdGVkJiZ0Lm9wdGlvbnMubWFya2VyWm9vbUFuaW1hdGlvbix0aGlzLl96b29tQW5pbWF0ZWQmJnQub24oInpvb21hbmltIix0aGlzLl9hbmltYXRlWm9vbSx0aGlzKSx0aGlzLl9pbml0SWNvbigpLHRoaXMudXBkYXRlKCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuZHJhZ2dpbmcmJnRoaXMuZHJhZ2dpbmcuZW5hYmxlZCgpJiYodGhpcy5vcHRpb25zLmRyYWdnYWJsZT0hMCx0aGlzLmRyYWdnaW5nLnJlbW92ZUhvb2tzKCkpLGRlbGV0ZSB0aGlzLmRyYWdnaW5nLHRoaXMuX3pvb21BbmltYXRlZCYmdC5vZmYoInpvb21hbmltIix0aGlzLl9hbmltYXRlWm9vbSx0aGlzKSx0aGlzLl9yZW1vdmVJY29uKCksdGhpcy5fcmVtb3ZlU2hhZG93KCl9LGdldEV2ZW50czpmdW5jdGlvbigpe3JldHVybnt6b29tOnRoaXMudXBkYXRlLHZpZXdyZXNldDp0aGlzLnVwZGF0ZX19LGdldExhdExuZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXRsbmd9LHNldExhdExuZzpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9sYXRsbmc7cmV0dXJuIHRoaXMuX2xhdGxuZz1DKHQpLHRoaXMudXBkYXRlKCksdGhpcy5maXJlKCJtb3ZlIix7b2xkTGF0TG5nOmksbGF0bG5nOnRoaXMuX2xhdGxuZ30pfSxzZXRaSW5kZXhPZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy56SW5kZXhPZmZzZXQ9dCx0aGlzLnVwZGF0ZSgpfSxzZXRJY29uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbj10LHRoaXMuX21hcCYmKHRoaXMuX2luaXRJY29uKCksdGhpcy51cGRhdGUoKSksdGhpcy5fcG9wdXAmJnRoaXMuYmluZFBvcHVwKHRoaXMuX3BvcHVwLHRoaXMuX3BvcHVwLm9wdGlvbnMpLHRoaXN9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWNvbn0sdXBkYXRlOmZ1bmN0aW9uKCl7aWYodGhpcy5faWNvbiYmdGhpcy5fbWFwKXt2YXIgdD10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZykucm91bmQoKTt0aGlzLl9zZXRQb3ModCl9cmV0dXJuIHRoaXN9LF9pbml0SWNvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxpPSJsZWFmbGV0LXpvb20tIisodGhpcy5fem9vbUFuaW1hdGVkPyJhbmltYXRlZCI6ImhpZGUiKSxlPXQuaWNvbi5jcmVhdGVJY29uKHRoaXMuX2ljb24pLG49ITE7ZSE9PXRoaXMuX2ljb24mJih0aGlzLl9pY29uJiZ0aGlzLl9yZW1vdmVJY29uKCksbj0hMCx0LnRpdGxlJiYoZS50aXRsZT10LnRpdGxlKSwiSU1HIj09PWUudGFnTmFtZSYmKGUuYWx0PXQuYWx0fHwiIikpLHB0KGUsaSksdC5rZXlib2FyZCYmKGUudGFiSW5kZXg9IjAiKSx0aGlzLl9pY29uPWUsdC5yaXNlT25Ib3ZlciYmdGhpcy5vbih7bW91c2VvdmVyOnRoaXMuX2JyaW5nVG9Gcm9udCxtb3VzZW91dDp0aGlzLl9yZXNldFpJbmRleH0pO3ZhciBvPXQuaWNvbi5jcmVhdGVTaGFkb3codGhpcy5fc2hhZG93KSxzPSExO28hPT10aGlzLl9zaGFkb3cmJih0aGlzLl9yZW1vdmVTaGFkb3coKSxzPSEwKSxvJiYocHQobyxpKSxvLmFsdD0iIiksdGhpcy5fc2hhZG93PW8sdC5vcGFjaXR5PDEmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKSxuJiZ0aGlzLmdldFBhbmUoKS5hcHBlbmRDaGlsZCh0aGlzLl9pY29uKSx0aGlzLl9pbml0SW50ZXJhY3Rpb24oKSxvJiZzJiZ0aGlzLmdldFBhbmUoInNoYWRvd1BhbmUiKS5hcHBlbmRDaGlsZCh0aGlzLl9zaGFkb3cpfSxfcmVtb3ZlSWNvbjpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5yaXNlT25Ib3ZlciYmdGhpcy5vZmYoe21vdXNlb3Zlcjp0aGlzLl9icmluZ1RvRnJvbnQsbW91c2VvdXQ6dGhpcy5fcmVzZXRaSW5kZXh9KSx1dCh0aGlzLl9pY29uKSx0aGlzLnJlbW92ZUludGVyYWN0aXZlVGFyZ2V0KHRoaXMuX2ljb24pLHRoaXMuX2ljb249bnVsbH0sX3JlbW92ZVNoYWRvdzpmdW5jdGlvbigpe3RoaXMuX3NoYWRvdyYmdXQodGhpcy5fc2hhZG93KSx0aGlzLl9zaGFkb3c9bnVsbH0sX3NldFBvczpmdW5jdGlvbih0KXtMdCh0aGlzLl9pY29uLHQpLHRoaXMuX3NoYWRvdyYmTHQodGhpcy5fc2hhZG93LHQpLHRoaXMuX3pJbmRleD10LnkrdGhpcy5vcHRpb25zLnpJbmRleE9mZnNldCx0aGlzLl9yZXNldFpJbmRleCgpfSxfdXBkYXRlWkluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuX2ljb24uc3R5bGUuekluZGV4PXRoaXMuX3pJbmRleCt0fSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLHQuem9vbSx0LmNlbnRlcikucm91bmQoKTt0aGlzLl9zZXRQb3MoaSl9LF9pbml0SW50ZXJhY3Rpb246ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuaW50ZXJhY3RpdmUmJihwdCh0aGlzLl9pY29uLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5hZGRJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9pY29uKSxZZSkpe3ZhciB0PXRoaXMub3B0aW9ucy5kcmFnZ2FibGU7dGhpcy5kcmFnZ2luZyYmKHQ9dGhpcy5kcmFnZ2luZy5lbmFibGVkKCksdGhpcy5kcmFnZ2luZy5kaXNhYmxlKCkpLHRoaXMuZHJhZ2dpbmc9bmV3IFllKHRoaXMpLHQmJnRoaXMuZHJhZ2dpbmcuZW5hYmxlKCl9fSxzZXRPcGFjaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eT10LHRoaXMuX21hcCYmdGhpcy5fdXBkYXRlT3BhY2l0eSgpLHRoaXN9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLm9wYWNpdHk7dnQodGhpcy5faWNvbix0KSx0aGlzLl9zaGFkb3cmJnZ0KHRoaXMuX3NoYWRvdyx0KX0sX2JyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVpJbmRleCh0aGlzLm9wdGlvbnMucmlzZU9mZnNldCl9LF9yZXNldFpJbmRleDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVpJbmRleCgwKX0sX2dldFBvcHVwQW5jaG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5pY29uLm9wdGlvbnMucG9wdXBBbmNob3J9LF9nZXRUb29sdGlwQW5jaG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5pY29uLm9wdGlvbnMudG9vbHRpcEFuY2hvcn19KSxKZT1VZS5leHRlbmQoe29wdGlvbnM6e3N0cm9rZTohMCxjb2xvcjoiIzMzODhmZiIsd2VpZ2h0OjMsb3BhY2l0eToxLGxpbmVDYXA6InJvdW5kIixsaW5lSm9pbjoicm91bmQiLGRhc2hBcnJheTpudWxsLGRhc2hPZmZzZXQ6bnVsbCxmaWxsOiExLGZpbGxDb2xvcjpudWxsLGZpbGxPcGFjaXR5Oi4yLGZpbGxSdWxlOiJldmVub2RkIixpbnRlcmFjdGl2ZTohMCxidWJibGluZ01vdXNlRXZlbnRzOiEwfSxiZWZvcmVBZGQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyZXI9dC5nZXRSZW5kZXJlcih0aGlzKX0sb25BZGQ6ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlci5faW5pdFBhdGgodGhpcyksdGhpcy5fcmVzZXQoKSx0aGlzLl9yZW5kZXJlci5fYWRkUGF0aCh0aGlzKX0sb25SZW1vdmU6ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlci5fcmVtb3ZlUGF0aCh0aGlzKX0scmVkcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmdGhpcy5fcmVuZGVyZXIuX3VwZGF0ZVBhdGgodGhpcyksdGhpc30sc2V0U3R5bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodGhpcyx0KSx0aGlzLl9yZW5kZXJlciYmdGhpcy5fcmVuZGVyZXIuX3VwZGF0ZVN0eWxlKHRoaXMpLHRoaXN9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJlciYmdGhpcy5fcmVuZGVyZXIuX2JyaW5nVG9Gcm9udCh0aGlzKSx0aGlzfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJlciYmdGhpcy5fcmVuZGVyZXIuX2JyaW5nVG9CYWNrKHRoaXMpLHRoaXN9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGF0aH0sX3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fcHJvamVjdCgpLHRoaXMuX3VwZGF0ZSgpfSxfY2xpY2tUb2xlcmFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5vcHRpb25zLnN0cm9rZT90aGlzLm9wdGlvbnMud2VpZ2h0LzI6MCkrdGhpcy5fcmVuZGVyZXIub3B0aW9ucy50b2xlcmFuY2V9fSksJGU9SmUuZXh0ZW5kKHtvcHRpb25zOntmaWxsOiEwLHJhZGl1czoxMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGkpe2wodGhpcyxpKSx0aGlzLl9sYXRsbmc9Qyh0KSx0aGlzLl9yYWRpdXM9dGhpcy5vcHRpb25zLnJhZGl1c30sc2V0TGF0TG5nOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmc9Qyh0KSx0aGlzLnJlZHJhdygpLHRoaXMuZmlyZSgibW92ZSIse2xhdGxuZzp0aGlzLl9sYXRsbmd9KX0sZ2V0TGF0TG5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhdGxuZ30sc2V0UmFkaXVzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucmFkaXVzPXRoaXMuX3JhZGl1cz10LHRoaXMucmVkcmF3KCl9LGdldFJhZGl1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yYWRpdXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3ZhciBpPXQmJnQucmFkaXVzfHx0aGlzLl9yYWRpdXM7cmV0dXJuIEplLnByb3RvdHlwZS5zZXRTdHlsZS5jYWxsKHRoaXMsdCksdGhpcy5zZXRSYWRpdXMoaSksdGhpc30sX3Byb2plY3Q6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyksdGhpcy5fdXBkYXRlQm91bmRzKCl9LF91cGRhdGVCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9yYWRpdXMsaT10aGlzLl9yYWRpdXNZfHx0LGU9dGhpcy5fY2xpY2tUb2xlcmFuY2UoKSxuPVt0K2UsaStlXTt0aGlzLl9weEJvdW5kcz1uZXcgUCh0aGlzLl9wb2ludC5zdWJ0cmFjdChuKSx0aGlzLl9wb2ludC5hZGQobikpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwJiZ0aGlzLl91cGRhdGVQYXRoKCl9LF91cGRhdGVQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIuX3VwZGF0ZUNpcmNsZSh0aGlzKX0sX2VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGl1cyYmIXRoaXMuX3JlbmRlcmVyLl9ib3VuZHMuaW50ZXJzZWN0cyh0aGlzLl9weEJvdW5kcyl9LF9jb250YWluc1BvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0LmRpc3RhbmNlVG8odGhpcy5fcG9pbnQpPD10aGlzLl9yYWRpdXMrdGhpcy5fY2xpY2tUb2xlcmFuY2UoKX19KSxRZT0kZS5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxlLG4pe2lmKCJudW1iZXIiPT10eXBlb2YgZSYmKGU9aSh7fSxuLHtyYWRpdXM6ZX0pKSxsKHRoaXMsZSksdGhpcy5fbGF0bG5nPUModCksaXNOYU4odGhpcy5vcHRpb25zLnJhZGl1cykpdGhyb3cgbmV3IEVycm9yKCJDaXJjbGUgcmFkaXVzIGNhbm5vdCBiZSBOYU4iKTt0aGlzLl9tUmFkaXVzPXRoaXMub3B0aW9ucy5yYWRpdXN9LHNldFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbVJhZGl1cz10LHRoaXMucmVkcmF3KCl9LGdldFJhZGl1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tUmFkaXVzfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1bdGhpcy5fcmFkaXVzLHRoaXMuX3JhZGl1c1l8fHRoaXMuX3JhZGl1c107cmV0dXJuIG5ldyBUKHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcodGhpcy5fcG9pbnQuc3VidHJhY3QodCkpLHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcodGhpcy5fcG9pbnQuYWRkKHQpKSl9LHNldFN0eWxlOkplLnByb3RvdHlwZS5zZXRTdHlsZSxfcHJvamVjdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2xhdGxuZy5sbmcsaT10aGlzLl9sYXRsbmcubGF0LGU9dGhpcy5fbWFwLG49ZS5vcHRpb25zLmNycztpZihuLmRpc3RhbmNlPT09X2kuZGlzdGFuY2Upe3ZhciBvPU1hdGguUEkvMTgwLHM9dGhpcy5fbVJhZGl1cy9faS5SL28scj1lLnByb2plY3QoW2krcyx0XSksYT1lLnByb2plY3QoW2ktcyx0XSksaD1yLmFkZChhKS5kaXZpZGVCeSgyKSx1PWUudW5wcm9qZWN0KGgpLmxhdCxsPU1hdGguYWNvcygoTWF0aC5jb3MocypvKS1NYXRoLnNpbihpKm8pKk1hdGguc2luKHUqbykpLyhNYXRoLmNvcyhpKm8pKk1hdGguY29zKHUqbykpKS9vOyhpc05hTihsKXx8MD09PWwpJiYobD1zL01hdGguY29zKE1hdGguUEkvMTgwKmkpKSx0aGlzLl9wb2ludD1oLnN1YnRyYWN0KGUuZ2V0UGl4ZWxPcmlnaW4oKSksdGhpcy5fcmFkaXVzPWlzTmFOKGwpPzA6aC54LWUucHJvamVjdChbdSx0LWxdKS54LHRoaXMuX3JhZGl1c1k9aC55LXIueX1lbHNle3ZhciBjPW4udW5wcm9qZWN0KG4ucHJvamVjdCh0aGlzLl9sYXRsbmcpLnN1YnRyYWN0KFt0aGlzLl9tUmFkaXVzLDBdKSk7dGhpcy5fcG9pbnQ9ZS5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKSx0aGlzLl9yYWRpdXM9dGhpcy5fcG9pbnQueC1lLmxhdExuZ1RvTGF5ZXJQb2ludChjKS54fXRoaXMuX3VwZGF0ZUJvdW5kcygpfX0pLHRuPUplLmV4dGVuZCh7b3B0aW9uczp7c21vb3RoRmFjdG9yOjEsbm9DbGlwOiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsaSl7bCh0aGlzLGkpLHRoaXMuX3NldExhdExuZ3ModCl9LGdldExhdExuZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nc30sc2V0TGF0TG5nczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc2V0TGF0TG5ncyh0KSx0aGlzLnJlZHJhdygpfSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2xhdGxuZ3MubGVuZ3RofSxjbG9zZXN0TGF5ZXJQb2ludDpmdW5jdGlvbih0KXtmb3IodmFyIGksZSxuPTEvMCxvPW51bGwscz1SdCxyPTAsYT10aGlzLl9wYXJ0cy5sZW5ndGg7cjxhO3IrKylmb3IodmFyIGg9dGhpcy5fcGFydHNbcl0sdT0xLGw9aC5sZW5ndGg7dTxsO3UrKyl7dmFyIGM9cyh0LGk9aFt1LTFdLGU9aFt1XSwhMCk7YzxuJiYobj1jLG89cyh0LGksZSkpfXJldHVybiBvJiYoby5kaXN0YW5jZT1NYXRoLnNxcnQobikpLG99LGdldENlbnRlcjpmdW5jdGlvbigpe2lmKCF0aGlzLl9tYXApdGhyb3cgbmV3IEVycm9yKCJNdXN0IGFkZCBsYXllciB0byBtYXAgYmVmb3JlIHVzaW5nIGdldENlbnRlcigpIik7dmFyIHQsaSxlLG4sbyxzLHIsYT10aGlzLl9yaW5nc1swXSxoPWEubGVuZ3RoO2lmKCFoKXJldHVybiBudWxsO2Zvcih0PTAsaT0wO3Q8aC0xO3QrKylpKz1hW3RdLmRpc3RhbmNlVG8oYVt0KzFdKS8yO2lmKDA9PT1pKXJldHVybiB0aGlzLl9tYXAubGF5ZXJQb2ludFRvTGF0TG5nKGFbMF0pO2Zvcih0PTAsbj0wO3Q8aC0xO3QrKylpZihvPWFbdF0scz1hW3QrMV0sZT1vLmRpc3RhbmNlVG8ocyksKG4rPWUpPmkpcmV0dXJuIHI9KG4taSkvZSx0aGlzLl9tYXAubGF5ZXJQb2ludFRvTGF0TG5nKFtzLngtcioocy54LW8ueCkscy55LXIqKHMueS1vLnkpXSl9LGdldEJvdW5kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib3VuZHN9LGFkZExhdExuZzpmdW5jdGlvbih0LGkpe3JldHVybiBpPWl8fHRoaXMuX2RlZmF1bHRTaGFwZSgpLHQ9Qyh0KSxpLnB1c2godCksdGhpcy5fYm91bmRzLmV4dGVuZCh0KSx0aGlzLnJlZHJhdygpfSxfc2V0TGF0TG5nczpmdW5jdGlvbih0KXt0aGlzLl9ib3VuZHM9bmV3IFQsdGhpcy5fbGF0bG5ncz10aGlzLl9jb252ZXJ0TGF0TG5ncyh0KX0sX2RlZmF1bHRTaGFwZTpmdW5jdGlvbigpe3JldHVybiBEdCh0aGlzLl9sYXRsbmdzKT90aGlzLl9sYXRsbmdzOnRoaXMuX2xhdGxuZ3NbMF19LF9jb252ZXJ0TGF0TG5nczpmdW5jdGlvbih0KXtmb3IodmFyIGk9W10sZT1EdCh0KSxuPTAsbz10Lmxlbmd0aDtuPG87bisrKWU/KGlbbl09Qyh0W25dKSx0aGlzLl9ib3VuZHMuZXh0ZW5kKGlbbl0pKTppW25dPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHRbbl0pO3JldHVybiBpfSxfcHJvamVjdDpmdW5jdGlvbigpe3ZhciB0PW5ldyBQO3RoaXMuX3JpbmdzPVtdLHRoaXMuX3Byb2plY3RMYXRsbmdzKHRoaXMuX2xhdGxuZ3MsdGhpcy5fcmluZ3MsdCk7dmFyIGk9dGhpcy5fY2xpY2tUb2xlcmFuY2UoKSxlPW5ldyB4KGksaSk7dGhpcy5fYm91bmRzLmlzVmFsaWQoKSYmdC5pc1ZhbGlkKCkmJih0Lm1pbi5fc3VidHJhY3QoZSksdC5tYXguX2FkZChlKSx0aGlzLl9weEJvdW5kcz10KX0sX3Byb2plY3RMYXRsbmdzOmZ1bmN0aW9uKHQsaSxlKXt2YXIgbixvLHM9dFswXWluc3RhbmNlb2YgTSxyPXQubGVuZ3RoO2lmKHMpe2ZvcihvPVtdLG49MDtuPHI7bisrKW9bbl09dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0W25dKSxlLmV4dGVuZChvW25dKTtpLnB1c2gobyl9ZWxzZSBmb3Iobj0wO248cjtuKyspdGhpcy5fcHJvamVjdExhdGxuZ3ModFtuXSxpLGUpfSxfY2xpcFBvaW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlbmRlcmVyLl9ib3VuZHM7aWYodGhpcy5fcGFydHM9W10sdGhpcy5fcHhCb3VuZHMmJnRoaXMuX3B4Qm91bmRzLmludGVyc2VjdHModCkpaWYodGhpcy5vcHRpb25zLm5vQ2xpcCl0aGlzLl9wYXJ0cz10aGlzLl9yaW5ncztlbHNle3ZhciBpLGUsbixvLHMscixhLGg9dGhpcy5fcGFydHM7Zm9yKGk9MCxuPTAsbz10aGlzLl9yaW5ncy5sZW5ndGg7aTxvO2krKylmb3IoZT0wLHM9KGE9dGhpcy5fcmluZ3NbaV0pLmxlbmd0aDtlPHMtMTtlKyspKHI9QXQoYVtlXSxhW2UrMV0sdCxlLCEwKSkmJihoW25dPWhbbl18fFtdLGhbbl0ucHVzaChyWzBdKSxyWzFdPT09YVtlKzFdJiZlIT09cy0yfHwoaFtuXS5wdXNoKHJbMV0pLG4rKykpfX0sX3NpbXBsaWZ5UG9pbnRzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3BhcnRzLGk9dGhpcy5vcHRpb25zLnNtb290aEZhY3RvcixlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRbZV09Q3QodFtlXSxpKX0sX3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMuX21hcCYmKHRoaXMuX2NsaXBQb2ludHMoKSx0aGlzLl9zaW1wbGlmeVBvaW50cygpLHRoaXMuX3VwZGF0ZVBhdGgoKSl9LF91cGRhdGVQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIuX3VwZGF0ZVBvbHkodGhpcyl9LF9jb250YWluc1BvaW50OmZ1bmN0aW9uKHQsaSl7dmFyIGUsbixvLHMscixhLGg9dGhpcy5fY2xpY2tUb2xlcmFuY2UoKTtpZighdGhpcy5fcHhCb3VuZHN8fCF0aGlzLl9weEJvdW5kcy5jb250YWlucyh0KSlyZXR1cm4hMTtmb3IoZT0wLHM9dGhpcy5fcGFydHMubGVuZ3RoO2U8cztlKyspZm9yKG49MCxvPShyPShhPXRoaXMuX3BhcnRzW2VdKS5sZW5ndGgpLTE7bjxyO289bisrKWlmKChpfHwwIT09bikmJlp0KHQsYVtvXSxhW25dKTw9aClyZXR1cm4hMDtyZXR1cm4hMX19KTt0bi5fZmxhdD1OdDt2YXIgZW49dG4uZXh0ZW5kKHtvcHRpb25zOntmaWxsOiEwfSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2xhdGxuZ3MubGVuZ3RofHwhdGhpcy5fbGF0bG5nc1swXS5sZW5ndGh9LGdldENlbnRlcjpmdW5jdGlvbigpe2lmKCF0aGlzLl9tYXApdGhyb3cgbmV3IEVycm9yKCJNdXN0IGFkZCBsYXllciB0byBtYXAgYmVmb3JlIHVzaW5nIGdldENlbnRlcigpIik7dmFyIHQsaSxlLG4sbyxzLHIsYSxoLHU9dGhpcy5fcmluZ3NbMF0sbD11Lmxlbmd0aDtpZighbClyZXR1cm4gbnVsbDtmb3Iocz1yPWE9MCx0PTAsaT1sLTE7dDxsO2k9dCsrKWU9dVt0XSxuPXVbaV0sbz1lLnkqbi54LW4ueSplLngscis9KGUueCtuLngpKm8sYSs9KGUueStuLnkpKm8scys9MypvO3JldHVybiBoPTA9PT1zP3VbMF06W3IvcyxhL3NdLHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcoaCl9LF9jb252ZXJ0TGF0TG5nczpmdW5jdGlvbih0KXt2YXIgaT10bi5wcm90b3R5cGUuX2NvbnZlcnRMYXRMbmdzLmNhbGwodGhpcyx0KSxlPWkubGVuZ3RoO3JldHVybiBlPj0yJiZpWzBdaW5zdGFuY2VvZiBNJiZpWzBdLmVxdWFscyhpW2UtMV0pJiZpLnBvcCgpLGl9LF9zZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3RuLnByb3RvdHlwZS5fc2V0TGF0TG5ncy5jYWxsKHRoaXMsdCksRHQodGhpcy5fbGF0bG5ncykmJih0aGlzLl9sYXRsbmdzPVt0aGlzLl9sYXRsbmdzXSl9LF9kZWZhdWx0U2hhcGU6ZnVuY3Rpb24oKXtyZXR1cm4gRHQodGhpcy5fbGF0bG5nc1swXSk/dGhpcy5fbGF0bG5nc1swXTp0aGlzLl9sYXRsbmdzWzBdWzBdfSxfY2xpcFBvaW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlbmRlcmVyLl9ib3VuZHMsaT10aGlzLm9wdGlvbnMud2VpZ2h0LGU9bmV3IHgoaSxpKTtpZih0PW5ldyBQKHQubWluLnN1YnRyYWN0KGUpLHQubWF4LmFkZChlKSksdGhpcy5fcGFydHM9W10sdGhpcy5fcHhCb3VuZHMmJnRoaXMuX3B4Qm91bmRzLmludGVyc2VjdHModCkpaWYodGhpcy5vcHRpb25zLm5vQ2xpcCl0aGlzLl9wYXJ0cz10aGlzLl9yaW5ncztlbHNlIGZvcih2YXIgbixvPTAscz10aGlzLl9yaW5ncy5sZW5ndGg7bzxzO28rKykobj1qdCh0aGlzLl9yaW5nc1tvXSx0LCEwKSkubGVuZ3RoJiZ0aGlzLl9wYXJ0cy5wdXNoKG4pfSxfdXBkYXRlUGF0aDpmdW5jdGlvbigpe3RoaXMuX3JlbmRlcmVyLl91cGRhdGVQb2x5KHRoaXMsITApfSxfY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgaSxlLG4sbyxzLHIsYSxoLHU9ITE7aWYoIXRoaXMuX3B4Qm91bmRzLmNvbnRhaW5zKHQpKXJldHVybiExO2ZvcihvPTAsYT10aGlzLl9wYXJ0cy5sZW5ndGg7bzxhO28rKylmb3Iocz0wLHI9KGg9KGk9dGhpcy5fcGFydHNbb10pLmxlbmd0aCktMTtzPGg7cj1zKyspZT1pW3NdLG49aVtyXSxlLnk+dC55IT1uLnk+dC55JiZ0Lng8KG4ueC1lLngpKih0LnktZS55KS8obi55LWUueSkrZS54JiYodT0hdSk7cmV0dXJuIHV8fHRuLnByb3RvdHlwZS5fY29udGFpbnNQb2ludC5jYWxsKHRoaXMsdCwhMCl9fSksbm49cWUuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsaSl7bCh0aGlzLGkpLHRoaXMuX2xheWVycz17fSx0JiZ0aGlzLmFkZERhdGEodCl9LGFkZERhdGE6ZnVuY3Rpb24odCl7dmFyIGksZSxuLG89ZWkodCk/dDp0LmZlYXR1cmVzO2lmKG8pe2ZvcihpPTAsZT1vLmxlbmd0aDtpPGU7aSsrKSgobj1vW2ldKS5nZW9tZXRyaWVzfHxuLmdlb21ldHJ5fHxuLmZlYXR1cmVzfHxuLmNvb3JkaW5hdGVzKSYmdGhpcy5hZGREYXRhKG4pO3JldHVybiB0aGlzfXZhciBzPXRoaXMub3B0aW9ucztpZihzLmZpbHRlciYmIXMuZmlsdGVyKHQpKXJldHVybiB0aGlzO3ZhciByPVd0KHQscyk7cmV0dXJuIHI/KHIuZmVhdHVyZT1HdCh0KSxyLmRlZmF1bHRPcHRpb25zPXIub3B0aW9ucyx0aGlzLnJlc2V0U3R5bGUocikscy5vbkVhY2hGZWF0dXJlJiZzLm9uRWFjaEZlYXR1cmUodCxyKSx0aGlzLmFkZExheWVyKHIpKTp0aGlzfSxyZXNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm9wdGlvbnM9aSh7fSx0LmRlZmF1bHRPcHRpb25zKSx0aGlzLl9zZXRMYXllclN0eWxlKHQsdGhpcy5vcHRpb25zLnN0eWxlKSx0aGlzfSxzZXRTdHlsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24oaSl7dGhpcy5fc2V0TGF5ZXJTdHlsZShpLHQpfSx0aGlzKX0sX3NldExheWVyU3R5bGU6ZnVuY3Rpb24odCxpKXsiZnVuY3Rpb24iPT10eXBlb2YgaSYmKGk9aSh0LmZlYXR1cmUpKSx0LnNldFN0eWxlJiZ0LnNldFN0eWxlKGkpfX0pLG9uPXt0b0dlb0pTT046ZnVuY3Rpb24odCl7cmV0dXJuIHF0KHRoaXMse3R5cGU6IlBvaW50Iixjb29yZGluYXRlczpVdCh0aGlzLmdldExhdExuZygpLHQpfSl9fTtYZS5pbmNsdWRlKG9uKSxRZS5pbmNsdWRlKG9uKSwkZS5pbmNsdWRlKG9uKSx0bi5pbmNsdWRlKHt0b0dlb0pTT046ZnVuY3Rpb24odCl7dmFyIGk9IUR0KHRoaXMuX2xhdGxuZ3MpLGU9VnQodGhpcy5fbGF0bG5ncyxpPzE6MCwhMSx0KTtyZXR1cm4gcXQodGhpcyx7dHlwZTooaT8iTXVsdGkiOiIiKSsiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6ZX0pfX0pLGVuLmluY2x1ZGUoe3RvR2VvSlNPTjpmdW5jdGlvbih0KXt2YXIgaT0hRHQodGhpcy5fbGF0bG5ncyksZT1pJiYhRHQodGhpcy5fbGF0bG5nc1swXSksbj1WdCh0aGlzLl9sYXRsbmdzLGU/MjppPzE6MCwhMCx0KTtyZXR1cm4gaXx8KG49W25dKSxxdCh0aGlzLHt0eXBlOihlPyJNdWx0aSI6IiIpKyJQb2x5Z29uIixjb29yZGluYXRlczpufSl9fSksVmUuaW5jbHVkZSh7dG9NdWx0aVBvaW50OmZ1bmN0aW9uKHQpe3ZhciBpPVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihlKXtpLnB1c2goZS50b0dlb0pTT04odCkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpfSkscXQodGhpcyx7dHlwZToiTXVsdGlQb2ludCIsY29vcmRpbmF0ZXM6aX0pfSx0b0dlb0pTT046ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5mZWF0dXJlJiZ0aGlzLmZlYXR1cmUuZ2VvbWV0cnkmJnRoaXMuZmVhdHVyZS5nZW9tZXRyeS50eXBlO2lmKCJNdWx0aVBvaW50Ij09PWkpcmV0dXJuIHRoaXMudG9NdWx0aVBvaW50KHQpO3ZhciBlPSJHZW9tZXRyeUNvbGxlY3Rpb24iPT09aSxuPVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihpKXtpZihpLnRvR2VvSlNPTil7dmFyIG89aS50b0dlb0pTT04odCk7aWYoZSluLnB1c2goby5nZW9tZXRyeSk7ZWxzZXt2YXIgcz1HdChvKTsiRmVhdHVyZUNvbGxlY3Rpb24iPT09cy50eXBlP24ucHVzaC5hcHBseShuLHMuZmVhdHVyZXMpOm4ucHVzaChzKX19fSksZT9xdCh0aGlzLHtnZW9tZXRyaWVzOm4sdHlwZToiR2VvbWV0cnlDb2xsZWN0aW9uIn0pOnt0eXBlOiJGZWF0dXJlQ29sbGVjdGlvbiIsZmVhdHVyZXM6bn19fSk7dmFyIHNuPUt0LHJuPVVlLmV4dGVuZCh7b3B0aW9uczp7b3BhY2l0eToxLGFsdDoiIixpbnRlcmFjdGl2ZTohMSxjcm9zc09yaWdpbjohMSxlcnJvck92ZXJsYXlVcmw6IiIsekluZGV4OjEsY2xhc3NOYW1lOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsaSxlKXt0aGlzLl91cmw9dCx0aGlzLl9ib3VuZHM9eihpKSxsKHRoaXMsZSl9LG9uQWRkOmZ1bmN0aW9uKCl7dGhpcy5faW1hZ2V8fCh0aGlzLl9pbml0SW1hZ2UoKSx0aGlzLm9wdGlvbnMub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCkpLHRoaXMub3B0aW9ucy5pbnRlcmFjdGl2ZSYmKHB0KHRoaXMuX2ltYWdlLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5hZGRJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9pbWFnZSkpLHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2ltYWdlKSx0aGlzLl9yZXNldCgpfSxvblJlbW92ZTpmdW5jdGlvbigpe3V0KHRoaXMuX2ltYWdlKSx0aGlzLm9wdGlvbnMuaW50ZXJhY3RpdmUmJnRoaXMucmVtb3ZlSW50ZXJhY3RpdmVUYXJnZXQodGhpcy5faW1hZ2UpfSxzZXRPcGFjaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eT10LHRoaXMuX2ltYWdlJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCksdGhpc30sc2V0U3R5bGU6ZnVuY3Rpb24odCl7cmV0dXJuIHQub3BhY2l0eSYmdGhpcy5zZXRPcGFjaXR5KHQub3BhY2l0eSksdGhpc30sYnJpbmdUb0Zyb250OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmY3QodGhpcy5faW1hZ2UpLHRoaXN9LGJyaW5nVG9CYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmX3QodGhpcy5faW1hZ2UpLHRoaXN9LHNldFVybDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdXJsPXQsdGhpcy5faW1hZ2UmJih0aGlzLl9pbWFnZS5zcmM9dCksdGhpc30sc2V0Qm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ib3VuZHM9eih0KSx0aGlzLl9tYXAmJnRoaXMuX3Jlc2V0KCksdGhpc30sZ2V0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9e3pvb206dGhpcy5fcmVzZXQsdmlld3Jlc2V0OnRoaXMuX3Jlc2V0fTtyZXR1cm4gdGhpcy5fem9vbUFuaW1hdGVkJiYodC56b29tYW5pbT10aGlzLl9hbmltYXRlWm9vbSksdH0sc2V0WkluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuekluZGV4PXQsdGhpcy5fdXBkYXRlWkluZGV4KCksdGhpc30sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JvdW5kc30sZ2V0RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbWFnZX0sX2luaXRJbWFnZTpmdW5jdGlvbigpe3ZhciB0PSJJTUciPT09dGhpcy5fdXJsLnRhZ05hbWUsaT10aGlzLl9pbWFnZT10P3RoaXMuX3VybDpodCgiaW1nIik7cHQoaSwibGVhZmxldC1pbWFnZS1sYXllciIpLHRoaXMuX3pvb21BbmltYXRlZCYmcHQoaSwibGVhZmxldC16b29tLWFuaW1hdGVkIiksdGhpcy5vcHRpb25zLmNsYXNzTmFtZSYmcHQoaSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lKSxpLm9uc2VsZWN0c3RhcnQ9cixpLm9ubW91c2Vtb3ZlPXIsaS5vbmxvYWQ9ZSh0aGlzLmZpcmUsdGhpcywibG9hZCIpLGkub25lcnJvcj1lKHRoaXMuX292ZXJsYXlPbkVycm9yLHRoaXMsImVycm9yIiksdGhpcy5vcHRpb25zLmNyb3NzT3JpZ2luJiYoaS5jcm9zc09yaWdpbj0iIiksdGhpcy5vcHRpb25zLnpJbmRleCYmdGhpcy5fdXBkYXRlWkluZGV4KCksdD90aGlzLl91cmw9aS5zcmM6KGkuc3JjPXRoaXMuX3VybCxpLmFsdD10aGlzLm9wdGlvbnMuYWx0KX0sX2FuaW1hdGVab29tOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX21hcC5nZXRab29tU2NhbGUodC56b29tKSxlPXRoaXMuX21hcC5fbGF0TG5nQm91bmRzVG9OZXdMYXllckJvdW5kcyh0aGlzLl9ib3VuZHMsdC56b29tLHQuY2VudGVyKS5taW47d3QodGhpcy5faW1hZ2UsZSxpKX0sX3Jlc2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW1hZ2UsaT1uZXcgUCh0aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2JvdW5kcy5nZXROb3J0aFdlc3QoKSksdGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9ib3VuZHMuZ2V0U291dGhFYXN0KCkpKSxlPWkuZ2V0U2l6ZSgpO0x0KHQsaS5taW4pLHQuc3R5bGUud2lkdGg9ZS54KyJweCIsdC5zdHlsZS5oZWlnaHQ9ZS55KyJweCJ9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7dnQodGhpcy5faW1hZ2UsdGhpcy5vcHRpb25zLm9wYWNpdHkpfSxfdXBkYXRlWkluZGV4OmZ1bmN0aW9uKCl7dGhpcy5faW1hZ2UmJnZvaWQgMCE9PXRoaXMub3B0aW9ucy56SW5kZXgmJm51bGwhPT10aGlzLm9wdGlvbnMuekluZGV4JiYodGhpcy5faW1hZ2Uuc3R5bGUuekluZGV4PXRoaXMub3B0aW9ucy56SW5kZXgpfSxfb3ZlcmxheU9uRXJyb3I6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImVycm9yIik7dmFyIHQ9dGhpcy5vcHRpb25zLmVycm9yT3ZlcmxheVVybDt0JiZ0aGlzLl91cmwhPT10JiYodGhpcy5fdXJsPXQsdGhpcy5faW1hZ2Uuc3JjPXQpfX0pLGFuPXJuLmV4dGVuZCh7b3B0aW9uczp7YXV0b3BsYXk6ITAsbG9vcDohMH0sX2luaXRJbWFnZTpmdW5jdGlvbigpe3ZhciB0PSJWSURFTyI9PT10aGlzLl91cmwudGFnTmFtZSxpPXRoaXMuX2ltYWdlPXQ/dGhpcy5fdXJsOmh0KCJ2aWRlbyIpO2lmKHB0KGksImxlYWZsZXQtaW1hZ2UtbGF5ZXIiKSx0aGlzLl96b29tQW5pbWF0ZWQmJnB0KGksImxlYWZsZXQtem9vbS1hbmltYXRlZCIpLGkub25zZWxlY3RzdGFydD1yLGkub25tb3VzZW1vdmU9cixpLm9ubG9hZGVkZGF0YT1lKHRoaXMuZmlyZSx0aGlzLCJsb2FkIiksdCl7Zm9yKHZhciBuPWkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNvdXJjZSIpLG89W10scz0wO3M8bi5sZW5ndGg7cysrKW8ucHVzaChuW3NdLnNyYyk7dGhpcy5fdXJsPW4ubGVuZ3RoPjA/bzpbaS5zcmNdfWVsc2V7ZWkodGhpcy5fdXJsKXx8KHRoaXMuX3VybD1bdGhpcy5fdXJsXSksaS5hdXRvcGxheT0hIXRoaXMub3B0aW9ucy5hdXRvcGxheSxpLmxvb3A9ISF0aGlzLm9wdGlvbnMubG9vcDtmb3IodmFyIGE9MDthPHRoaXMuX3VybC5sZW5ndGg7YSsrKXt2YXIgaD1odCgic291cmNlIik7aC5zcmM9dGhpcy5fdXJsW2FdLGkuYXBwZW5kQ2hpbGQoaCl9fX19KSxobj1VZS5leHRlbmQoe29wdGlvbnM6e29mZnNldDpbMCw3XSxjbGFzc05hbWU6IiIscGFuZToicG9wdXBQYW5lIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGkpe2wodGhpcyx0KSx0aGlzLl9zb3VyY2U9aX0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fem9vbUFuaW1hdGVkPXQuX3pvb21BbmltYXRlZCx0aGlzLl9jb250YWluZXJ8fHRoaXMuX2luaXRMYXlvdXQoKSx0Ll9mYWRlQW5pbWF0ZWQmJnZ0KHRoaXMuX2NvbnRhaW5lciwwKSxjbGVhclRpbWVvdXQodGhpcy5fcmVtb3ZlVGltZW91dCksdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLnVwZGF0ZSgpLHQuX2ZhZGVBbmltYXRlZCYmdnQodGhpcy5fY29udGFpbmVyLDEpLHRoaXMuYnJpbmdUb0Zyb250KCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3QuX2ZhZGVBbmltYXRlZD8odnQodGhpcy5fY29udGFpbmVyLDApLHRoaXMuX3JlbW92ZVRpbWVvdXQ9c2V0VGltZW91dChlKHV0LHZvaWQgMCx0aGlzLl9jb250YWluZXIpLDIwMCkpOnV0KHRoaXMuX2NvbnRhaW5lcil9LGdldExhdExuZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXRsbmd9LHNldExhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGF0bG5nPUModCksdGhpcy5fbWFwJiYodGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9hZGp1c3RQYW4oKSksdGhpc30sZ2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50fSxzZXRDb250ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb250ZW50PXQsdGhpcy51cGRhdGUoKSx0aGlzfSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwJiYodGhpcy5fY29udGFpbmVyLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsdGhpcy5fdXBkYXRlQ29udGVudCgpLHRoaXMuX3VwZGF0ZUxheW91dCgpLHRoaXMuX3VwZGF0ZVBvc2l0aW9uKCksdGhpcy5fY29udGFpbmVyLnN0eWxlLnZpc2liaWxpdHk9IiIsdGhpcy5fYWRqdXN0UGFuKCkpfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17em9vbTp0aGlzLl91cGRhdGVQb3NpdGlvbix2aWV3cmVzZXQ6dGhpcy5fdXBkYXRlUG9zaXRpb259O3JldHVybiB0aGlzLl96b29tQW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX2FuaW1hdGVab29tKSx0fSxpc09wZW46ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX21hcCYmdGhpcy5fbWFwLmhhc0xheWVyKHRoaXMpfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiZjdCh0aGlzLl9jb250YWluZXIpLHRoaXN9LGJyaW5nVG9CYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmX3QodGhpcy5fY29udGFpbmVyKSx0aGlzfSxfdXBkYXRlQ29udGVudDpmdW5jdGlvbigpe2lmKHRoaXMuX2NvbnRlbnQpe3ZhciB0PXRoaXMuX2NvbnRlbnROb2RlLGk9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2NvbnRlbnQ/dGhpcy5fY29udGVudCh0aGlzLl9zb3VyY2V8fHRoaXMpOnRoaXMuX2NvbnRlbnQ7aWYoInN0cmluZyI9PXR5cGVvZiBpKXQuaW5uZXJIVE1MPWk7ZWxzZXtmb3IoO3QuaGFzQ2hpbGROb2RlcygpOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCk7dC5hcHBlbmRDaGlsZChpKX10aGlzLmZpcmUoImNvbnRlbnR1cGRhdGUiKX19LF91cGRhdGVQb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXMuX21hcCl7dmFyIHQ9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpLGk9dyh0aGlzLm9wdGlvbnMub2Zmc2V0KSxlPXRoaXMuX2dldEFuY2hvcigpO3RoaXMuX3pvb21BbmltYXRlZD9MdCh0aGlzLl9jb250YWluZXIsdC5hZGQoZSkpOmk9aS5hZGQodCkuYWRkKGUpO3ZhciBuPXRoaXMuX2NvbnRhaW5lckJvdHRvbT0taS55LG89dGhpcy5fY29udGFpbmVyTGVmdD0tTWF0aC5yb3VuZCh0aGlzLl9jb250YWluZXJXaWR0aC8yKStpLng7dGhpcy5fY29udGFpbmVyLnN0eWxlLmJvdHRvbT1uKyJweCIsdGhpcy5fY29udGFpbmVyLnN0eWxlLmxlZnQ9bysicHgifX0sX2dldEFuY2hvcjpmdW5jdGlvbigpe3JldHVyblswLDBdfX0pLHVuPWhuLmV4dGVuZCh7b3B0aW9uczp7bWF4V2lkdGg6MzAwLG1pbldpZHRoOjUwLG1heEhlaWdodDpudWxsLGF1dG9QYW46ITAsYXV0b1BhblBhZGRpbmdUb3BMZWZ0Om51bGwsYXV0b1BhblBhZGRpbmdCb3R0b21SaWdodDpudWxsLGF1dG9QYW5QYWRkaW5nOls1LDVdLGtlZXBJblZpZXc6ITEsY2xvc2VCdXR0b246ITAsYXV0b0Nsb3NlOiEwLGNsb3NlT25Fc2NhcGVLZXk6ITAsY2xhc3NOYW1lOiIifSxvcGVuT246ZnVuY3Rpb24odCl7cmV0dXJuIHQub3BlblBvcHVwKHRoaXMpLHRoaXN9LG9uQWRkOmZ1bmN0aW9uKHQpe2huLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsdCksdC5maXJlKCJwb3B1cG9wZW4iLHtwb3B1cDp0aGlzfSksdGhpcy5fc291cmNlJiYodGhpcy5fc291cmNlLmZpcmUoInBvcHVwb3BlbiIse3BvcHVwOnRoaXN9LCEwKSx0aGlzLl9zb3VyY2UgaW5zdGFuY2VvZiBKZXx8dGhpcy5fc291cmNlLm9uKCJwcmVjbGljayIsWSkpfSxvblJlbW92ZTpmdW5jdGlvbih0KXtobi5wcm90b3R5cGUub25SZW1vdmUuY2FsbCh0aGlzLHQpLHQuZmlyZSgicG9wdXBjbG9zZSIse3BvcHVwOnRoaXN9KSx0aGlzLl9zb3VyY2UmJih0aGlzLl9zb3VyY2UuZmlyZSgicG9wdXBjbG9zZSIse3BvcHVwOnRoaXN9LCEwKSx0aGlzLl9zb3VyY2UgaW5zdGFuY2VvZiBKZXx8dGhpcy5fc291cmNlLm9mZigicHJlY2xpY2siLFkpKX0sZ2V0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9aG4ucHJvdG90eXBlLmdldEV2ZW50cy5jYWxsKHRoaXMpO3JldHVybih2b2lkIDAhPT10aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrP3RoaXMub3B0aW9ucy5jbG9zZU9uQ2xpY2s6dGhpcy5fbWFwLm9wdGlvbnMuY2xvc2VQb3B1cE9uQ2xpY2spJiYodC5wcmVjbGljaz10aGlzLl9jbG9zZSksdGhpcy5vcHRpb25zLmtlZXBJblZpZXcmJih0Lm1vdmVlbmQ9dGhpcy5fYWRqdXN0UGFuKSx0fSxfY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJnRoaXMuX21hcC5jbG9zZVBvcHVwKHRoaXMpfSxfaW5pdExheW91dDpmdW5jdGlvbigpe3ZhciB0PSJsZWFmbGV0LXBvcHVwIixpPXRoaXMuX2NvbnRhaW5lcj1odCgiZGl2Iix0KyIgIisodGhpcy5vcHRpb25zLmNsYXNzTmFtZXx8IiIpKyIgbGVhZmxldC16b29tLWFuaW1hdGVkIiksZT10aGlzLl93cmFwcGVyPWh0KCJkaXYiLHQrIi1jb250ZW50LXdyYXBwZXIiLGkpO2lmKHRoaXMuX2NvbnRlbnROb2RlPWh0KCJkaXYiLHQrIi1jb250ZW50IixlKSxKKGUpLFgodGhpcy5fY29udGVudE5vZGUpLFYoZSwiY29udGV4dG1lbnUiLFkpLHRoaXMuX3RpcENvbnRhaW5lcj1odCgiZGl2Iix0KyItdGlwLWNvbnRhaW5lciIsaSksdGhpcy5fdGlwPWh0KCJkaXYiLHQrIi10aXAiLHRoaXMuX3RpcENvbnRhaW5lciksdGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uKXt2YXIgbj10aGlzLl9jbG9zZUJ1dHRvbj1odCgiYSIsdCsiLWNsb3NlLWJ1dHRvbiIsaSk7bi5ocmVmPSIjY2xvc2UiLG4uaW5uZXJIVE1MPSImIzIxNTsiLFYobiwiY2xpY2siLHRoaXMuX29uQ2xvc2VCdXR0b25DbGljayx0aGlzKX19LF91cGRhdGVMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250ZW50Tm9kZSxpPXQuc3R5bGU7aS53aWR0aD0iIixpLndoaXRlU3BhY2U9Im5vd3JhcCI7dmFyIGU9dC5vZmZzZXRXaWR0aDtlPU1hdGgubWluKGUsdGhpcy5vcHRpb25zLm1heFdpZHRoKSxlPU1hdGgubWF4KGUsdGhpcy5vcHRpb25zLm1pbldpZHRoKSxpLndpZHRoPWUrMSsicHgiLGkud2hpdGVTcGFjZT0iIixpLmhlaWdodD0iIjt2YXIgbj10Lm9mZnNldEhlaWdodCxvPXRoaXMub3B0aW9ucy5tYXhIZWlnaHQ7byYmbj5vPyhpLmhlaWdodD1vKyJweCIscHQodCwibGVhZmxldC1wb3B1cC1zY3JvbGxlZCIpKTptdCh0LCJsZWFmbGV0LXBvcHVwLXNjcm9sbGVkIiksdGhpcy5fY29udGFpbmVyV2lkdGg9dGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRofSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLHQuem9vbSx0LmNlbnRlciksZT10aGlzLl9nZXRBbmNob3IoKTtMdCh0aGlzLl9jb250YWluZXIsaS5hZGQoZSkpfSxfYWRqdXN0UGFuOmZ1bmN0aW9uKCl7aWYoISghdGhpcy5vcHRpb25zLmF1dG9QYW58fHRoaXMuX21hcC5fcGFuQW5pbSYmdGhpcy5fbWFwLl9wYW5BbmltLl9pblByb2dyZXNzKSl7dmFyIHQ9dGhpcy5fbWFwLGk9cGFyc2VJbnQoYXQodGhpcy5fY29udGFpbmVyLCJtYXJnaW5Cb3R0b20iKSwxMCl8fDAsZT10aGlzLl9jb250YWluZXIub2Zmc2V0SGVpZ2h0K2ksbj10aGlzLl9jb250YWluZXJXaWR0aCxvPW5ldyB4KHRoaXMuX2NvbnRhaW5lckxlZnQsLWUtdGhpcy5fY29udGFpbmVyQm90dG9tKTtvLl9hZGQoUHQodGhpcy5fY29udGFpbmVyKSk7dmFyIHM9dC5sYXllclBvaW50VG9Db250YWluZXJQb2ludChvKSxyPXcodGhpcy5vcHRpb25zLmF1dG9QYW5QYWRkaW5nKSxhPXcodGhpcy5vcHRpb25zLmF1dG9QYW5QYWRkaW5nVG9wTGVmdHx8ciksaD13KHRoaXMub3B0aW9ucy5hdXRvUGFuUGFkZGluZ0JvdHRvbVJpZ2h0fHxyKSx1PXQuZ2V0U2l6ZSgpLGw9MCxjPTA7cy54K24raC54PnUueCYmKGw9cy54K24tdS54K2gueCkscy54LWwtYS54PDAmJihsPXMueC1hLngpLHMueStlK2gueT51LnkmJihjPXMueStlLXUueStoLnkpLHMueS1jLWEueTwwJiYoYz1zLnktYS55KSwobHx8YykmJnQuZmlyZSgiYXV0b3BhbnN0YXJ0IikucGFuQnkoW2wsY10pfX0sX29uQ2xvc2VCdXR0b25DbGljazpmdW5jdGlvbih0KXt0aGlzLl9jbG9zZSgpLFEodCl9LF9nZXRBbmNob3I6ZnVuY3Rpb24oKXtyZXR1cm4gdyh0aGlzLl9zb3VyY2UmJnRoaXMuX3NvdXJjZS5fZ2V0UG9wdXBBbmNob3I/dGhpcy5fc291cmNlLl9nZXRQb3B1cEFuY2hvcigpOlswLDBdKX19KTtMZS5tZXJnZU9wdGlvbnMoe2Nsb3NlUG9wdXBPbkNsaWNrOiEwfSksTGUuaW5jbHVkZSh7b3BlblBvcHVwOmZ1bmN0aW9uKHQsaSxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIHVufHwodD1uZXcgdW4oZSkuc2V0Q29udGVudCh0KSksaSYmdC5zZXRMYXRMbmcoaSksdGhpcy5oYXNMYXllcih0KT90aGlzOih0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAub3B0aW9ucy5hdXRvQ2xvc2UmJnRoaXMuY2xvc2VQb3B1cCgpLHRoaXMuX3BvcHVwPXQsdGhpcy5hZGRMYXllcih0KSl9LGNsb3NlUG9wdXA6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQhPT10aGlzLl9wb3B1cHx8KHQ9dGhpcy5fcG9wdXAsdGhpcy5fcG9wdXA9bnVsbCksdCYmdGhpcy5yZW1vdmVMYXllcih0KSx0aGlzfX0pLFVlLmluY2x1ZGUoe2JpbmRQb3B1cDpmdW5jdGlvbih0LGkpe3JldHVybiB0IGluc3RhbmNlb2YgdW4/KGwodCxpKSx0aGlzLl9wb3B1cD10LHQuX3NvdXJjZT10aGlzKToodGhpcy5fcG9wdXAmJiFpfHwodGhpcy5fcG9wdXA9bmV3IHVuKGksdGhpcykpLHRoaXMuX3BvcHVwLnNldENvbnRlbnQodCkpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZHx8KHRoaXMub24oe2NsaWNrOnRoaXMuX29wZW5Qb3B1cCxrZXlwcmVzczp0aGlzLl9vbktleVByZXNzLHJlbW92ZTp0aGlzLmNsb3NlUG9wdXAsbW92ZTp0aGlzLl9tb3ZlUG9wdXB9KSx0aGlzLl9wb3B1cEhhbmRsZXJzQWRkZWQ9ITApLHRoaXN9LHVuYmluZFBvcHVwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BvcHVwJiYodGhpcy5vZmYoe2NsaWNrOnRoaXMuX29wZW5Qb3B1cCxrZXlwcmVzczp0aGlzLl9vbktleVByZXNzLHJlbW92ZTp0aGlzLmNsb3NlUG9wdXAsbW92ZTp0aGlzLl9tb3ZlUG9wdXB9KSx0aGlzLl9wb3B1cEhhbmRsZXJzQWRkZWQ9ITEsdGhpcy5fcG9wdXA9bnVsbCksdGhpc30sb3BlblBvcHVwOmZ1bmN0aW9uKHQsaSl7aWYodCBpbnN0YW5jZW9mIFVlfHwoaT10LHQ9dGhpcyksdCBpbnN0YW5jZW9mIHFlKWZvcih2YXIgZSBpbiB0aGlzLl9sYXllcnMpe3Q9dGhpcy5fbGF5ZXJzW2VdO2JyZWFrfXJldHVybiBpfHwoaT10LmdldENlbnRlcj90LmdldENlbnRlcigpOnQuZ2V0TGF0TG5nKCkpLHRoaXMuX3BvcHVwJiZ0aGlzLl9tYXAmJih0aGlzLl9wb3B1cC5fc291cmNlPXQsdGhpcy5fcG9wdXAudXBkYXRlKCksdGhpcy5fbWFwLm9wZW5Qb3B1cCh0aGlzLl9wb3B1cCxpKSksdGhpc30sY2xvc2VQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuX2Nsb3NlKCksdGhpc30sdG9nZ2xlUG9wdXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvcHVwJiYodGhpcy5fcG9wdXAuX21hcD90aGlzLmNsb3NlUG9wdXAoKTp0aGlzLm9wZW5Qb3B1cCh0KSksdGhpc30saXNQb3B1cE9wZW46ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX3BvcHVwJiZ0aGlzLl9wb3B1cC5pc09wZW4oKX0sc2V0UG9wdXBDb250ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuc2V0Q29udGVudCh0KSx0aGlzfSxnZXRQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cH0sX29wZW5Qb3B1cDpmdW5jdGlvbih0KXt2YXIgaT10LmxheWVyfHx0LnRhcmdldDt0aGlzLl9wb3B1cCYmdGhpcy5fbWFwJiYoUSh0KSxpIGluc3RhbmNlb2YgSmU/dGhpcy5vcGVuUG9wdXAodC5sYXllcnx8dC50YXJnZXQsdC5sYXRsbmcpOnRoaXMuX21hcC5oYXNMYXllcih0aGlzLl9wb3B1cCkmJnRoaXMuX3BvcHVwLl9zb3VyY2U9PT1pP3RoaXMuY2xvc2VQb3B1cCgpOnRoaXMub3BlblBvcHVwKGksdC5sYXRsbmcpKX0sX21vdmVQb3B1cDpmdW5jdGlvbih0KXt0aGlzLl9wb3B1cC5zZXRMYXRMbmcodC5sYXRsbmcpfSxfb25LZXlQcmVzczpmdW5jdGlvbih0KXsxMz09PXQub3JpZ2luYWxFdmVudC5rZXlDb2RlJiZ0aGlzLl9vcGVuUG9wdXAodCl9fSk7dmFyIGxuPWhuLmV4dGVuZCh7b3B0aW9uczp7cGFuZToidG9vbHRpcFBhbmUiLG9mZnNldDpbMCwwXSxkaXJlY3Rpb246ImF1dG8iLHBlcm1hbmVudDohMSxzdGlja3k6ITEsaW50ZXJhY3RpdmU6ITEsb3BhY2l0eTouOX0sb25BZGQ6ZnVuY3Rpb24odCl7aG4ucHJvdG90eXBlLm9uQWRkLmNhbGwodGhpcyx0KSx0aGlzLnNldE9wYWNpdHkodGhpcy5vcHRpb25zLm9wYWNpdHkpLHQuZmlyZSgidG9vbHRpcG9wZW4iLHt0b29sdGlwOnRoaXN9KSx0aGlzLl9zb3VyY2UmJnRoaXMuX3NvdXJjZS5maXJlKCJ0b29sdGlwb3BlbiIse3Rvb2x0aXA6dGhpc30sITApfSxvblJlbW92ZTpmdW5jdGlvbih0KXtobi5wcm90b3R5cGUub25SZW1vdmUuY2FsbCh0aGlzLHQpLHQuZmlyZSgidG9vbHRpcGNsb3NlIix7dG9vbHRpcDp0aGlzfSksdGhpcy5fc291cmNlJiZ0aGlzLl9zb3VyY2UuZmlyZSgidG9vbHRpcGNsb3NlIix7dG9vbHRpcDp0aGlzfSwhMCl9LGdldEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PWhuLnByb3RvdHlwZS5nZXRFdmVudHMuY2FsbCh0aGlzKTtyZXR1cm4gVmkmJiF0aGlzLm9wdGlvbnMucGVybWFuZW50JiYodC5wcmVjbGljaz10aGlzLl9jbG9zZSksdH0sX2Nsb3NlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwJiZ0aGlzLl9tYXAuY2xvc2VUb29sdGlwKHRoaXMpfSxfaW5pdExheW91dDpmdW5jdGlvbigpe3ZhciB0PSJsZWFmbGV0LXRvb2x0aXAgIisodGhpcy5vcHRpb25zLmNsYXNzTmFtZXx8IiIpKyIgbGVhZmxldC16b29tLSIrKHRoaXMuX3pvb21BbmltYXRlZD8iYW5pbWF0ZWQiOiJoaWRlIik7dGhpcy5fY29udGVudE5vZGU9dGhpcy5fY29udGFpbmVyPWh0KCJkaXYiLHQpfSxfdXBkYXRlTGF5b3V0OmZ1bmN0aW9uKCl7fSxfYWRqdXN0UGFuOmZ1bmN0aW9uKCl7fSxfc2V0UG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fbWFwLGU9dGhpcy5fY29udGFpbmVyLG49aS5sYXRMbmdUb0NvbnRhaW5lclBvaW50KGkuZ2V0Q2VudGVyKCkpLG89aS5sYXllclBvaW50VG9Db250YWluZXJQb2ludCh0KSxzPXRoaXMub3B0aW9ucy5kaXJlY3Rpb24scj1lLm9mZnNldFdpZHRoLGE9ZS5vZmZzZXRIZWlnaHQsaD13KHRoaXMub3B0aW9ucy5vZmZzZXQpLHU9dGhpcy5fZ2V0QW5jaG9yKCk7InRvcCI9PT1zP3Q9dC5hZGQodygtci8yK2gueCwtYStoLnkrdS55LCEwKSk6ImJvdHRvbSI9PT1zP3Q9dC5zdWJ0cmFjdCh3KHIvMi1oLngsLWgueSwhMCkpOiJjZW50ZXIiPT09cz90PXQuc3VidHJhY3QodyhyLzIraC54LGEvMi11LnkraC55LCEwKSk6InJpZ2h0Ij09PXN8fCJhdXRvIj09PXMmJm8ueDxuLng/KHM9InJpZ2h0Iix0PXQuYWRkKHcoaC54K3UueCx1LnktYS8yK2gueSwhMCkpKToocz0ibGVmdCIsdD10LnN1YnRyYWN0KHcocit1LngtaC54LGEvMi11LnktaC55LCEwKSkpLG10KGUsImxlYWZsZXQtdG9vbHRpcC1yaWdodCIpLG10KGUsImxlYWZsZXQtdG9vbHRpcC1sZWZ0IiksbXQoZSwibGVhZmxldC10b29sdGlwLXRvcCIpLG10KGUsImxlYWZsZXQtdG9vbHRpcC1ib3R0b20iKSxwdChlLCJsZWFmbGV0LXRvb2x0aXAtIitzKSxMdChlLHQpfSxfdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyk7dGhpcy5fc2V0UG9zaXRpb24odCl9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl9jb250YWluZXImJnZ0KHRoaXMuX2NvbnRhaW5lcix0KX0sX2FuaW1hdGVab29tOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX21hcC5fbGF0TG5nVG9OZXdMYXllclBvaW50KHRoaXMuX2xhdGxuZyx0Lnpvb20sdC5jZW50ZXIpO3RoaXMuX3NldFBvc2l0aW9uKGkpfSxfZ2V0QW5jaG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHcodGhpcy5fc291cmNlJiZ0aGlzLl9zb3VyY2UuX2dldFRvb2x0aXBBbmNob3ImJiF0aGlzLm9wdGlvbnMuc3RpY2t5P3RoaXMuX3NvdXJjZS5fZ2V0VG9vbHRpcEFuY2hvcigpOlswLDBdKX19KTtMZS5pbmNsdWRlKHtvcGVuVG9vbHRpcDpmdW5jdGlvbih0LGksZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBsbnx8KHQ9bmV3IGxuKGUpLnNldENvbnRlbnQodCkpLGkmJnQuc2V0TGF0TG5nKGkpLHRoaXMuaGFzTGF5ZXIodCk/dGhpczp0aGlzLmFkZExheWVyKHQpfSxjbG9zZVRvb2x0aXA6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnRoaXMucmVtb3ZlTGF5ZXIodCksdGhpc319KSxVZS5pbmNsdWRlKHtiaW5kVG9vbHRpcDpmdW5jdGlvbih0LGkpe3JldHVybiB0IGluc3RhbmNlb2YgbG4/KGwodCxpKSx0aGlzLl90b29sdGlwPXQsdC5fc291cmNlPXRoaXMpOih0aGlzLl90b29sdGlwJiYhaXx8KHRoaXMuX3Rvb2x0aXA9bmV3IGxuKGksdGhpcykpLHRoaXMuX3Rvb2x0aXAuc2V0Q29udGVudCh0KSksdGhpcy5faW5pdFRvb2x0aXBJbnRlcmFjdGlvbnMoKSx0aGlzLl90b29sdGlwLm9wdGlvbnMucGVybWFuZW50JiZ0aGlzLl9tYXAmJnRoaXMuX21hcC5oYXNMYXllcih0aGlzKSYmdGhpcy5vcGVuVG9vbHRpcCgpLHRoaXN9LHVuYmluZFRvb2x0aXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdG9vbHRpcCYmKHRoaXMuX2luaXRUb29sdGlwSW50ZXJhY3Rpb25zKCEwKSx0aGlzLmNsb3NlVG9vbHRpcCgpLHRoaXMuX3Rvb2x0aXA9bnVsbCksdGhpc30sX2luaXRUb29sdGlwSW50ZXJhY3Rpb25zOmZ1bmN0aW9uKHQpe2lmKHR8fCF0aGlzLl90b29sdGlwSGFuZGxlcnNBZGRlZCl7dmFyIGk9dD8ib2ZmIjoib24iLGU9e3JlbW92ZTp0aGlzLmNsb3NlVG9vbHRpcCxtb3ZlOnRoaXMuX21vdmVUb29sdGlwfTt0aGlzLl90b29sdGlwLm9wdGlvbnMucGVybWFuZW50P2UuYWRkPXRoaXMuX29wZW5Ub29sdGlwOihlLm1vdXNlb3Zlcj10aGlzLl9vcGVuVG9vbHRpcCxlLm1vdXNlb3V0PXRoaXMuY2xvc2VUb29sdGlwLHRoaXMuX3Rvb2x0aXAub3B0aW9ucy5zdGlja3kmJihlLm1vdXNlbW92ZT10aGlzLl9tb3ZlVG9vbHRpcCksVmkmJihlLmNsaWNrPXRoaXMuX29wZW5Ub29sdGlwKSksdGhpc1tpXShlKSx0aGlzLl90b29sdGlwSGFuZGxlcnNBZGRlZD0hdH19LG9wZW5Ub29sdGlwOmZ1bmN0aW9uKHQsaSl7aWYodCBpbnN0YW5jZW9mIFVlfHwoaT10LHQ9dGhpcyksdCBpbnN0YW5jZW9mIHFlKWZvcih2YXIgZSBpbiB0aGlzLl9sYXllcnMpe3Q9dGhpcy5fbGF5ZXJzW2VdO2JyZWFrfXJldHVybiBpfHwoaT10LmdldENlbnRlcj90LmdldENlbnRlcigpOnQuZ2V0TGF0TG5nKCkpLHRoaXMuX3Rvb2x0aXAmJnRoaXMuX21hcCYmKHRoaXMuX3Rvb2x0aXAuX3NvdXJjZT10LHRoaXMuX3Rvb2x0aXAudXBkYXRlKCksdGhpcy5fbWFwLm9wZW5Ub29sdGlwKHRoaXMuX3Rvb2x0aXAsaSksdGhpcy5fdG9vbHRpcC5vcHRpb25zLmludGVyYWN0aXZlJiZ0aGlzLl90b29sdGlwLl9jb250YWluZXImJihwdCh0aGlzLl90b29sdGlwLl9jb250YWluZXIsImxlYWZsZXQtY2xpY2thYmxlIiksdGhpcy5hZGRJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl90b29sdGlwLl9jb250YWluZXIpKSksdGhpc30sY2xvc2VUb29sdGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJih0aGlzLl90b29sdGlwLl9jbG9zZSgpLHRoaXMuX3Rvb2x0aXAub3B0aW9ucy5pbnRlcmFjdGl2ZSYmdGhpcy5fdG9vbHRpcC5fY29udGFpbmVyJiYobXQodGhpcy5fdG9vbHRpcC5fY29udGFpbmVyLCJsZWFmbGV0LWNsaWNrYWJsZSIpLHRoaXMucmVtb3ZlSW50ZXJhY3RpdmVUYXJnZXQodGhpcy5fdG9vbHRpcC5fY29udGFpbmVyKSkpLHRoaXN9LHRvZ2dsZVRvb2x0aXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJih0aGlzLl90b29sdGlwLl9tYXA/dGhpcy5jbG9zZVRvb2x0aXAoKTp0aGlzLm9wZW5Ub29sdGlwKHQpKSx0aGlzfSxpc1Rvb2x0aXBPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAuaXNPcGVuKCl9LHNldFRvb2x0aXBDb250ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl90b29sdGlwJiZ0aGlzLl90b29sdGlwLnNldENvbnRlbnQodCksdGhpc30sZ2V0VG9vbHRpcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90b29sdGlwfSxfb3BlblRvb2x0aXA6ZnVuY3Rpb24odCl7dmFyIGk9dC5sYXllcnx8dC50YXJnZXQ7dGhpcy5fdG9vbHRpcCYmdGhpcy5fbWFwJiZ0aGlzLm9wZW5Ub29sdGlwKGksdGhpcy5fdG9vbHRpcC5vcHRpb25zLnN0aWNreT90LmxhdGxuZzp2b2lkIDApfSxfbW92ZVRvb2x0aXA6ZnVuY3Rpb24odCl7dmFyIGksZSxuPXQubGF0bG5nO3RoaXMuX3Rvb2x0aXAub3B0aW9ucy5zdGlja3kmJnQub3JpZ2luYWxFdmVudCYmKGk9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQub3JpZ2luYWxFdmVudCksZT10aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQoaSksbj10aGlzLl9tYXAubGF5ZXJQb2ludFRvTGF0TG5nKGUpKSx0aGlzLl90b29sdGlwLnNldExhdExuZyhuKX19KTt2YXIgY249R2UuZXh0ZW5kKHtvcHRpb25zOntpY29uU2l6ZTpbMTIsMTJdLGh0bWw6ITEsYmdQb3M6bnVsbCxjbGFzc05hbWU6ImxlYWZsZXQtZGl2LWljb24ifSxjcmVhdGVJY29uOmZ1bmN0aW9uKHQpe3ZhciBpPXQmJiJESVYiPT09dC50YWdOYW1lP3Q6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZT10aGlzLm9wdGlvbnM7aWYoaS5pbm5lckhUTUw9ITEhPT1lLmh0bWw/ZS5odG1sOiIiLGUuYmdQb3Mpe3ZhciBuPXcoZS5iZ1Bvcyk7aS5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb249LW4ueCsicHggIistbi55KyJweCJ9cmV0dXJuIHRoaXMuX3NldEljb25TdHlsZXMoaSwiaWNvbiIpLGl9LGNyZWF0ZVNoYWRvdzpmdW5jdGlvbigpe3JldHVybiBudWxsfX0pO0dlLkRlZmF1bHQ9S2U7dmFyIF9uPVVlLmV4dGVuZCh7b3B0aW9uczp7dGlsZVNpemU6MjU2LG9wYWNpdHk6MSx1cGRhdGVXaGVuSWRsZTpqaSx1cGRhdGVXaGVuWm9vbWluZzohMCx1cGRhdGVJbnRlcnZhbDoyMDAsekluZGV4OjEsYm91bmRzOm51bGwsbWluWm9vbTowLG1heFpvb206dm9pZCAwLG1heE5hdGl2ZVpvb206dm9pZCAwLG1pbk5hdGl2ZVpvb206dm9pZCAwLG5vV3JhcDohMSxwYW5lOiJ0aWxlUGFuZSIsY2xhc3NOYW1lOiIiLGtlZXBCdWZmZXI6Mn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXtsKHRoaXMsdCl9LG9uQWRkOmZ1bmN0aW9uKCl7dGhpcy5faW5pdENvbnRhaW5lcigpLHRoaXMuX2xldmVscz17fSx0aGlzLl90aWxlcz17fSx0aGlzLl9yZXNldFZpZXcoKSx0aGlzLl91cGRhdGUoKX0sYmVmb3JlQWRkOmZ1bmN0aW9uKHQpe3QuX2FkZFpvb21MaW1pdCh0aGlzKX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fcmVtb3ZlQWxsVGlsZXMoKSx1dCh0aGlzLl9jb250YWluZXIpLHQuX3JlbW92ZVpvb21MaW1pdCh0aGlzKSx0aGlzLl9jb250YWluZXI9bnVsbCx0aGlzLl90aWxlWm9vbT12b2lkIDB9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJihjdCh0aGlzLl9jb250YWluZXIpLHRoaXMuX3NldEF1dG9aSW5kZXgoTWF0aC5tYXgpKSx0aGlzfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJihfdCh0aGlzLl9jb250YWluZXIpLHRoaXMuX3NldEF1dG9aSW5kZXgoTWF0aC5taW4pKSx0aGlzfSxnZXRDb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxzZXRPcGFjaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eT10LHRoaXMuX3VwZGF0ZU9wYWNpdHkoKSx0aGlzfSxzZXRaSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy56SW5kZXg9dCx0aGlzLl91cGRhdGVaSW5kZXgoKSx0aGlzfSxpc0xvYWRpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9hZGluZ30scmVkcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKHRoaXMuX3JlbW92ZUFsbFRpbGVzKCksdGhpcy5fdXBkYXRlKCkpLHRoaXN9LGdldEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PXt2aWV3cHJlcmVzZXQ6dGhpcy5faW52YWxpZGF0ZUFsbCx2aWV3cmVzZXQ6dGhpcy5fcmVzZXRWaWV3LHpvb206dGhpcy5fcmVzZXRWaWV3LG1vdmVlbmQ6dGhpcy5fb25Nb3ZlRW5kfTtyZXR1cm4gdGhpcy5vcHRpb25zLnVwZGF0ZVdoZW5JZGxlfHwodGhpcy5fb25Nb3ZlfHwodGhpcy5fb25Nb3ZlPW8odGhpcy5fb25Nb3ZlRW5kLHRoaXMub3B0aW9ucy51cGRhdGVJbnRlcnZhbCx0aGlzKSksdC5tb3ZlPXRoaXMuX29uTW92ZSksdGhpcy5fem9vbUFuaW1hdGVkJiYodC56b29tYW5pbT10aGlzLl9hbmltYXRlWm9vbSksdH0sY3JlYXRlVGlsZTpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKX0sZ2V0VGlsZVNpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMudGlsZVNpemU7cmV0dXJuIHQgaW5zdGFuY2VvZiB4P3Q6bmV3IHgodCx0KX0sX3VwZGF0ZVpJbmRleDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lciYmdm9pZCAwIT09dGhpcy5vcHRpb25zLnpJbmRleCYmbnVsbCE9PXRoaXMub3B0aW9ucy56SW5kZXgmJih0aGlzLl9jb250YWluZXIuc3R5bGUuekluZGV4PXRoaXMub3B0aW9ucy56SW5kZXgpfSxfc2V0QXV0b1pJbmRleDpmdW5jdGlvbih0KXtmb3IodmFyIGksZT10aGlzLmdldFBhbmUoKS5jaGlsZHJlbixuPS10KC0xLzAsMS8wKSxvPTAscz1lLmxlbmd0aDtvPHM7bysrKWk9ZVtvXS5zdHlsZS56SW5kZXgsZVtvXSE9PXRoaXMuX2NvbnRhaW5lciYmaSYmKG49dChuLCtpKSk7aXNGaW5pdGUobikmJih0aGlzLm9wdGlvbnMuekluZGV4PW4rdCgtMSwxKSx0aGlzLl91cGRhdGVaSW5kZXgoKSl9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwJiYhTGkpe3Z0KHRoaXMuX2NvbnRhaW5lcix0aGlzLm9wdGlvbnMub3BhY2l0eSk7dmFyIHQ9K25ldyBEYXRlLGk9ITEsZT0hMTtmb3IodmFyIG4gaW4gdGhpcy5fdGlsZXMpe3ZhciBvPXRoaXMuX3RpbGVzW25dO2lmKG8uY3VycmVudCYmby5sb2FkZWQpe3ZhciBzPU1hdGgubWluKDEsKHQtby5sb2FkZWQpLzIwMCk7dnQoby5lbCxzKSxzPDE/aT0hMDooby5hY3RpdmU/ZT0hMDp0aGlzLl9vbk9wYXF1ZVRpbGUobyksby5hY3RpdmU9ITApfX1lJiYhdGhpcy5fbm9QcnVuZSYmdGhpcy5fcHJ1bmVUaWxlcygpLGkmJihnKHRoaXMuX2ZhZGVGcmFtZSksdGhpcy5fZmFkZUZyYW1lPWYodGhpcy5fdXBkYXRlT3BhY2l0eSx0aGlzKSl9fSxfb25PcGFxdWVUaWxlOnIsX2luaXRDb250YWluZXI6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXJ8fCh0aGlzLl9jb250YWluZXI9aHQoImRpdiIsImxlYWZsZXQtbGF5ZXIgIisodGhpcy5vcHRpb25zLmNsYXNzTmFtZXx8IiIpKSx0aGlzLl91cGRhdGVaSW5kZXgoKSx0aGlzLm9wdGlvbnMub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCksdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSl9LF91cGRhdGVMZXZlbHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aWxlWm9vbSxpPXRoaXMub3B0aW9ucy5tYXhab29tO2lmKHZvaWQgMCE9PXQpe2Zvcih2YXIgZSBpbiB0aGlzLl9sZXZlbHMpdGhpcy5fbGV2ZWxzW2VdLmVsLmNoaWxkcmVuLmxlbmd0aHx8ZT09PXQ/KHRoaXMuX2xldmVsc1tlXS5lbC5zdHlsZS56SW5kZXg9aS1NYXRoLmFicyh0LWUpLHRoaXMuX29uVXBkYXRlTGV2ZWwoZSkpOih1dCh0aGlzLl9sZXZlbHNbZV0uZWwpLHRoaXMuX3JlbW92ZVRpbGVzQXRab29tKGUpLHRoaXMuX29uUmVtb3ZlTGV2ZWwoZSksZGVsZXRlIHRoaXMuX2xldmVsc1tlXSk7dmFyIG49dGhpcy5fbGV2ZWxzW3RdLG89dGhpcy5fbWFwO3JldHVybiBufHwoKG49dGhpcy5fbGV2ZWxzW3RdPXt9KS5lbD1odCgiZGl2IiwibGVhZmxldC10aWxlLWNvbnRhaW5lciBsZWFmbGV0LXpvb20tYW5pbWF0ZWQiLHRoaXMuX2NvbnRhaW5lciksbi5lbC5zdHlsZS56SW5kZXg9aSxuLm9yaWdpbj1vLnByb2plY3Qoby51bnByb2plY3Qoby5nZXRQaXhlbE9yaWdpbigpKSx0KS5yb3VuZCgpLG4uem9vbT10LHRoaXMuX3NldFpvb21UcmFuc2Zvcm0obixvLmdldENlbnRlcigpLG8uZ2V0Wm9vbSgpKSxuLmVsLm9mZnNldFdpZHRoLHRoaXMuX29uQ3JlYXRlTGV2ZWwobikpLHRoaXMuX2xldmVsPW4sbn19LF9vblVwZGF0ZUxldmVsOnIsX29uUmVtb3ZlTGV2ZWw6cixfb25DcmVhdGVMZXZlbDpyLF9wcnVuZVRpbGVzOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwKXt2YXIgdCxpLGU9dGhpcy5fbWFwLmdldFpvb20oKTtpZihlPnRoaXMub3B0aW9ucy5tYXhab29tfHxlPHRoaXMub3B0aW9ucy5taW5ab29tKXRoaXMuX3JlbW92ZUFsbFRpbGVzKCk7ZWxzZXtmb3IodCBpbiB0aGlzLl90aWxlcykoaT10aGlzLl90aWxlc1t0XSkucmV0YWluPWkuY3VycmVudDtmb3IodCBpbiB0aGlzLl90aWxlcylpZigoaT10aGlzLl90aWxlc1t0XSkuY3VycmVudCYmIWkuYWN0aXZlKXt2YXIgbj1pLmNvb3Jkczt0aGlzLl9yZXRhaW5QYXJlbnQobi54LG4ueSxuLnosbi56LTUpfHx0aGlzLl9yZXRhaW5DaGlsZHJlbihuLngsbi55LG4ueixuLnorMil9Zm9yKHQgaW4gdGhpcy5fdGlsZXMpdGhpcy5fdGlsZXNbdF0ucmV0YWlufHx0aGlzLl9yZW1vdmVUaWxlKHQpfX19LF9yZW1vdmVUaWxlc0F0Wm9vbTpmdW5jdGlvbih0KXtmb3IodmFyIGkgaW4gdGhpcy5fdGlsZXMpdGhpcy5fdGlsZXNbaV0uY29vcmRzLno9PT10JiZ0aGlzLl9yZW1vdmVUaWxlKGkpfSxfcmVtb3ZlQWxsVGlsZXM6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fdGlsZXMpdGhpcy5fcmVtb3ZlVGlsZSh0KX0sX2ludmFsaWRhdGVBbGw6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fbGV2ZWxzKXV0KHRoaXMuX2xldmVsc1t0XS5lbCksdGhpcy5fb25SZW1vdmVMZXZlbCh0KSxkZWxldGUgdGhpcy5fbGV2ZWxzW3RdO3RoaXMuX3JlbW92ZUFsbFRpbGVzKCksdGhpcy5fdGlsZVpvb209dm9pZCAwfSxfcmV0YWluUGFyZW50OmZ1bmN0aW9uKHQsaSxlLG4pe3ZhciBvPU1hdGguZmxvb3IodC8yKSxzPU1hdGguZmxvb3IoaS8yKSxyPWUtMSxhPW5ldyB4KCtvLCtzKTthLno9K3I7dmFyIGg9dGhpcy5fdGlsZUNvb3Jkc1RvS2V5KGEpLHU9dGhpcy5fdGlsZXNbaF07cmV0dXJuIHUmJnUuYWN0aXZlPyh1LnJldGFpbj0hMCwhMCk6KHUmJnUubG9hZGVkJiYodS5yZXRhaW49ITApLHI+biYmdGhpcy5fcmV0YWluUGFyZW50KG8scyxyLG4pKX0sX3JldGFpbkNoaWxkcmVuOmZ1bmN0aW9uKHQsaSxlLG4pe2Zvcih2YXIgbz0yKnQ7bzwyKnQrMjtvKyspZm9yKHZhciBzPTIqaTtzPDIqaSsyO3MrKyl7dmFyIHI9bmV3IHgobyxzKTtyLno9ZSsxO3ZhciBhPXRoaXMuX3RpbGVDb29yZHNUb0tleShyKSxoPXRoaXMuX3RpbGVzW2FdO2gmJmguYWN0aXZlP2gucmV0YWluPSEwOihoJiZoLmxvYWRlZCYmKGgucmV0YWluPSEwKSxlKzE8biYmdGhpcy5fcmV0YWluQ2hpbGRyZW4obyxzLGUrMSxuKSl9fSxfcmVzZXRWaWV3OmZ1bmN0aW9uKHQpe3ZhciBpPXQmJih0LnBpbmNofHx0LmZseVRvKTt0aGlzLl9zZXRWaWV3KHRoaXMuX21hcC5nZXRDZW50ZXIoKSx0aGlzLl9tYXAuZ2V0Wm9vbSgpLGksaSl9LF9hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt0aGlzLl9zZXRWaWV3KHQuY2VudGVyLHQuem9vbSwhMCx0Lm5vVXBkYXRlKX0sX2NsYW1wWm9vbTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHZvaWQgMCE9PWkubWluTmF0aXZlWm9vbSYmdDxpLm1pbk5hdGl2ZVpvb20/aS5taW5OYXRpdmVab29tOnZvaWQgMCE9PWkubWF4TmF0aXZlWm9vbSYmaS5tYXhOYXRpdmVab29tPHQ/aS5tYXhOYXRpdmVab29tOnR9LF9zZXRWaWV3OmZ1bmN0aW9uKHQsaSxlLG4pe3ZhciBvPXRoaXMuX2NsYW1wWm9vbShNYXRoLnJvdW5kKGkpKTsodm9pZCAwIT09dGhpcy5vcHRpb25zLm1heFpvb20mJm8+dGhpcy5vcHRpb25zLm1heFpvb218fHZvaWQgMCE9PXRoaXMub3B0aW9ucy5taW5ab29tJiZvPHRoaXMub3B0aW9ucy5taW5ab29tKSYmKG89dm9pZCAwKTt2YXIgcz10aGlzLm9wdGlvbnMudXBkYXRlV2hlblpvb21pbmcmJm8hPT10aGlzLl90aWxlWm9vbTtuJiYhc3x8KHRoaXMuX3RpbGVab29tPW8sdGhpcy5fYWJvcnRMb2FkaW5nJiZ0aGlzLl9hYm9ydExvYWRpbmcoKSx0aGlzLl91cGRhdGVMZXZlbHMoKSx0aGlzLl9yZXNldEdyaWQoKSx2b2lkIDAhPT1vJiZ0aGlzLl91cGRhdGUodCksZXx8dGhpcy5fcHJ1bmVUaWxlcygpLHRoaXMuX25vUHJ1bmU9ISFlKSx0aGlzLl9zZXRab29tVHJhbnNmb3Jtcyh0LGkpfSxfc2V0Wm9vbVRyYW5zZm9ybXM6ZnVuY3Rpb24odCxpKXtmb3IodmFyIGUgaW4gdGhpcy5fbGV2ZWxzKXRoaXMuX3NldFpvb21UcmFuc2Zvcm0odGhpcy5fbGV2ZWxzW2VdLHQsaSl9LF9zZXRab29tVHJhbnNmb3JtOmZ1bmN0aW9uKHQsaSxlKXt2YXIgbj10aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKGUsdC56b29tKSxvPXQub3JpZ2luLm11bHRpcGx5Qnkobikuc3VidHJhY3QodGhpcy5fbWFwLl9nZXROZXdQaXhlbE9yaWdpbihpLGUpKS5yb3VuZCgpO05pP3d0KHQuZWwsbyxuKTpMdCh0LmVsLG8pfSxfcmVzZXRHcmlkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGk9dC5vcHRpb25zLmNycyxlPXRoaXMuX3RpbGVTaXplPXRoaXMuZ2V0VGlsZVNpemUoKSxuPXRoaXMuX3RpbGVab29tLG89dGhpcy5fbWFwLmdldFBpeGVsV29ybGRCb3VuZHModGhpcy5fdGlsZVpvb20pO28mJih0aGlzLl9nbG9iYWxUaWxlUmFuZ2U9dGhpcy5fcHhCb3VuZHNUb1RpbGVSYW5nZShvKSksdGhpcy5fd3JhcFg9aS53cmFwTG5nJiYhdGhpcy5vcHRpb25zLm5vV3JhcCYmW01hdGguZmxvb3IodC5wcm9qZWN0KFswLGkud3JhcExuZ1swXV0sbikueC9lLngpLE1hdGguY2VpbCh0LnByb2plY3QoWzAsaS53cmFwTG5nWzFdXSxuKS54L2UueSldLHRoaXMuX3dyYXBZPWkud3JhcExhdCYmIXRoaXMub3B0aW9ucy5ub1dyYXAmJltNYXRoLmZsb29yKHQucHJvamVjdChbaS53cmFwTGF0WzBdLDBdLG4pLnkvZS54KSxNYXRoLmNlaWwodC5wcm9qZWN0KFtpLndyYXBMYXRbMV0sMF0sbikueS9lLnkpXX0sX29uTW92ZUVuZDpmdW5jdGlvbigpe3RoaXMuX21hcCYmIXRoaXMuX21hcC5fYW5pbWF0aW5nWm9vbSYmdGhpcy5fdXBkYXRlKCl9LF9nZXRUaWxlZFBpeGVsQm91bmRzOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX21hcCxlPWkuX2FuaW1hdGluZ1pvb20/TWF0aC5tYXgoaS5fYW5pbWF0ZVRvWm9vbSxpLmdldFpvb20oKSk6aS5nZXRab29tKCksbj1pLmdldFpvb21TY2FsZShlLHRoaXMuX3RpbGVab29tKSxvPWkucHJvamVjdCh0LHRoaXMuX3RpbGVab29tKS5mbG9vcigpLHM9aS5nZXRTaXplKCkuZGl2aWRlQnkoMipuKTtyZXR1cm4gbmV3IFAoby5zdWJ0cmFjdChzKSxvLmFkZChzKSl9LF91cGRhdGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fbWFwO2lmKGkpe3ZhciBlPXRoaXMuX2NsYW1wWm9vbShpLmdldFpvb20oKSk7aWYodm9pZCAwPT09dCYmKHQ9aS5nZXRDZW50ZXIoKSksdm9pZCAwIT09dGhpcy5fdGlsZVpvb20pe3ZhciBuPXRoaXMuX2dldFRpbGVkUGl4ZWxCb3VuZHModCksbz10aGlzLl9weEJvdW5kc1RvVGlsZVJhbmdlKG4pLHM9by5nZXRDZW50ZXIoKSxyPVtdLGE9dGhpcy5vcHRpb25zLmtlZXBCdWZmZXIsaD1uZXcgUChvLmdldEJvdHRvbUxlZnQoKS5zdWJ0cmFjdChbYSwtYV0pLG8uZ2V0VG9wUmlnaHQoKS5hZGQoW2EsLWFdKSk7aWYoIShpc0Zpbml0ZShvLm1pbi54KSYmaXNGaW5pdGUoby5taW4ueSkmJmlzRmluaXRlKG8ubWF4LngpJiZpc0Zpbml0ZShvLm1heC55KSkpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8gbG9hZCBhbiBpbmZpbml0ZSBudW1iZXIgb2YgdGlsZXMiKTtmb3IodmFyIHUgaW4gdGhpcy5fdGlsZXMpe3ZhciBsPXRoaXMuX3RpbGVzW3VdLmNvb3JkcztsLno9PT10aGlzLl90aWxlWm9vbSYmaC5jb250YWlucyhuZXcgeChsLngsbC55KSl8fCh0aGlzLl90aWxlc1t1XS5jdXJyZW50PSExKX1pZihNYXRoLmFicyhlLXRoaXMuX3RpbGVab29tKT4xKXRoaXMuX3NldFZpZXcodCxlKTtlbHNle2Zvcih2YXIgYz1vLm1pbi55O2M8PW8ubWF4Lnk7YysrKWZvcih2YXIgXz1vLm1pbi54O188PW8ubWF4Lng7XysrKXt2YXIgZD1uZXcgeChfLGMpO2lmKGQuej10aGlzLl90aWxlWm9vbSx0aGlzLl9pc1ZhbGlkVGlsZShkKSl7dmFyIHA9dGhpcy5fdGlsZXNbdGhpcy5fdGlsZUNvb3Jkc1RvS2V5KGQpXTtwP3AuY3VycmVudD0hMDpyLnB1c2goZCl9fWlmKHIuc29ydChmdW5jdGlvbih0LGkpe3JldHVybiB0LmRpc3RhbmNlVG8ocyktaS5kaXN0YW5jZVRvKHMpfSksMCE9PXIubGVuZ3RoKXt0aGlzLl9sb2FkaW5nfHwodGhpcy5fbG9hZGluZz0hMCx0aGlzLmZpcmUoImxvYWRpbmciKSk7dmFyIG09ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2ZvcihfPTA7XzxyLmxlbmd0aDtfKyspdGhpcy5fYWRkVGlsZShyW19dLG0pO3RoaXMuX2xldmVsLmVsLmFwcGVuZENoaWxkKG0pfX19fX0sX2lzVmFsaWRUaWxlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX21hcC5vcHRpb25zLmNycztpZighaS5pbmZpbml0ZSl7dmFyIGU9dGhpcy5fZ2xvYmFsVGlsZVJhbmdlO2lmKCFpLndyYXBMbmcmJih0Lng8ZS5taW4ueHx8dC54PmUubWF4LngpfHwhaS53cmFwTGF0JiYodC55PGUubWluLnl8fHQueT5lLm1heC55KSlyZXR1cm4hMX1pZighdGhpcy5vcHRpb25zLmJvdW5kcylyZXR1cm4hMDt2YXIgbj10aGlzLl90aWxlQ29vcmRzVG9Cb3VuZHModCk7cmV0dXJuIHoodGhpcy5vcHRpb25zLmJvdW5kcykub3ZlcmxhcHMobil9LF9rZXlUb0JvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdGlsZUNvb3Jkc1RvQm91bmRzKHRoaXMuX2tleVRvVGlsZUNvb3Jkcyh0KSl9LF90aWxlQ29vcmRzVG9Od1NlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX21hcCxlPXRoaXMuZ2V0VGlsZVNpemUoKSxuPXQuc2NhbGVCeShlKSxvPW4uYWRkKGUpO3JldHVybltpLnVucHJvamVjdChuLHQueiksaS51bnByb2plY3Qobyx0LnopXX0sX3RpbGVDb29yZHNUb0JvdW5kczpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl90aWxlQ29vcmRzVG9Od1NlKHQpLGU9bmV3IFQoaVswXSxpWzFdKTtyZXR1cm4gdGhpcy5vcHRpb25zLm5vV3JhcHx8KGU9dGhpcy5fbWFwLndyYXBMYXRMbmdCb3VuZHMoZSkpLGV9LF90aWxlQ29vcmRzVG9LZXk6ZnVuY3Rpb24odCl7cmV0dXJuIHQueCsiOiIrdC55KyI6Iit0Lnp9LF9rZXlUb1RpbGVDb29yZHM6ZnVuY3Rpb24odCl7dmFyIGk9dC5zcGxpdCgiOiIpLGU9bmV3IHgoK2lbMF0sK2lbMV0pO3JldHVybiBlLno9K2lbMl0sZX0sX3JlbW92ZVRpbGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fdGlsZXNbdF07aSYmKENpfHxpLmVsLnNldEF0dHJpYnV0ZSgic3JjIixuaSksdXQoaS5lbCksZGVsZXRlIHRoaXMuX3RpbGVzW3RdLHRoaXMuZmlyZSgidGlsZXVubG9hZCIse3RpbGU6aS5lbCxjb29yZHM6dGhpcy5fa2V5VG9UaWxlQ29vcmRzKHQpfSkpfSxfaW5pdFRpbGU6ZnVuY3Rpb24odCl7cHQodCwibGVhZmxldC10aWxlIik7dmFyIGk9dGhpcy5nZXRUaWxlU2l6ZSgpO3Quc3R5bGUud2lkdGg9aS54KyJweCIsdC5zdHlsZS5oZWlnaHQ9aS55KyJweCIsdC5vbnNlbGVjdHN0YXJ0PXIsdC5vbm1vdXNlbW92ZT1yLExpJiZ0aGlzLm9wdGlvbnMub3BhY2l0eTwxJiZ2dCh0LHRoaXMub3B0aW9ucy5vcGFjaXR5KSxUaSYmIXppJiYodC5zdHlsZS5XZWJraXRCYWNrZmFjZVZpc2liaWxpdHk9ImhpZGRlbiIpfSxfYWRkVGlsZTpmdW5jdGlvbih0LGkpe3ZhciBuPXRoaXMuX2dldFRpbGVQb3ModCksbz10aGlzLl90aWxlQ29vcmRzVG9LZXkodCkscz10aGlzLmNyZWF0ZVRpbGUodGhpcy5fd3JhcENvb3Jkcyh0KSxlKHRoaXMuX3RpbGVSZWFkeSx0aGlzLHQpKTt0aGlzLl9pbml0VGlsZShzKSx0aGlzLmNyZWF0ZVRpbGUubGVuZ3RoPDImJmYoZSh0aGlzLl90aWxlUmVhZHksdGhpcyx0LG51bGwscykpLEx0KHMsbiksdGhpcy5fdGlsZXNbb109e2VsOnMsY29vcmRzOnQsY3VycmVudDohMH0saS5hcHBlbmRDaGlsZChzKSx0aGlzLmZpcmUoInRpbGVsb2Fkc3RhcnQiLHt0aWxlOnMsY29vcmRzOnR9KX0sX3RpbGVSZWFkeTpmdW5jdGlvbih0LGksbil7aWYodGhpcy5fbWFwKXtpJiZ0aGlzLmZpcmUoInRpbGVlcnJvciIse2Vycm9yOmksdGlsZTpuLGNvb3Jkczp0fSk7dmFyIG89dGhpcy5fdGlsZUNvb3Jkc1RvS2V5KHQpOyhuPXRoaXMuX3RpbGVzW29dKSYmKG4ubG9hZGVkPStuZXcgRGF0ZSx0aGlzLl9tYXAuX2ZhZGVBbmltYXRlZD8odnQobi5lbCwwKSxnKHRoaXMuX2ZhZGVGcmFtZSksdGhpcy5fZmFkZUZyYW1lPWYodGhpcy5fdXBkYXRlT3BhY2l0eSx0aGlzKSk6KG4uYWN0aXZlPSEwLHRoaXMuX3BydW5lVGlsZXMoKSksaXx8KHB0KG4uZWwsImxlYWZsZXQtdGlsZS1sb2FkZWQiKSx0aGlzLmZpcmUoInRpbGVsb2FkIix7dGlsZTpuLmVsLGNvb3Jkczp0fSkpLHRoaXMuX25vVGlsZXNUb0xvYWQoKSYmKHRoaXMuX2xvYWRpbmc9ITEsdGhpcy5maXJlKCJsb2FkIiksTGl8fCF0aGlzLl9tYXAuX2ZhZGVBbmltYXRlZD9mKHRoaXMuX3BydW5lVGlsZXMsdGhpcyk6c2V0VGltZW91dChlKHRoaXMuX3BydW5lVGlsZXMsdGhpcyksMjUwKSkpfX0sX2dldFRpbGVQb3M6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2NhbGVCeSh0aGlzLmdldFRpbGVTaXplKCkpLnN1YnRyYWN0KHRoaXMuX2xldmVsLm9yaWdpbil9LF93cmFwQ29vcmRzOmZ1bmN0aW9uKHQpe3ZhciBpPW5ldyB4KHRoaXMuX3dyYXBYP3ModC54LHRoaXMuX3dyYXBYKTp0LngsdGhpcy5fd3JhcFk/cyh0LnksdGhpcy5fd3JhcFkpOnQueSk7cmV0dXJuIGkuej10LnosaX0sX3B4Qm91bmRzVG9UaWxlUmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5nZXRUaWxlU2l6ZSgpO3JldHVybiBuZXcgUCh0Lm1pbi51bnNjYWxlQnkoaSkuZmxvb3IoKSx0Lm1heC51bnNjYWxlQnkoaSkuY2VpbCgpLnN1YnRyYWN0KFsxLDFdKSl9LF9ub1RpbGVzVG9Mb2FkOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX3RpbGVzKWlmKCF0aGlzLl90aWxlc1t0XS5sb2FkZWQpcmV0dXJuITE7cmV0dXJuITB9fSksZG49X24uZXh0ZW5kKHtvcHRpb25zOnttaW5ab29tOjAsbWF4Wm9vbToxOCxzdWJkb21haW5zOiJhYmMiLGVycm9yVGlsZVVybDoiIix6b29tT2Zmc2V0OjAsdG1zOiExLHpvb21SZXZlcnNlOiExLGRldGVjdFJldGluYTohMSxjcm9zc09yaWdpbjohMX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGkpe3RoaXMuX3VybD10LChpPWwodGhpcyxpKSkuZGV0ZWN0UmV0aW5hJiZLaSYmaS5tYXhab29tPjAmJihpLnRpbGVTaXplPU1hdGguZmxvb3IoaS50aWxlU2l6ZS8yKSxpLnpvb21SZXZlcnNlPyhpLnpvb21PZmZzZXQtLSxpLm1pblpvb20rKyk6KGkuem9vbU9mZnNldCsrLGkubWF4Wm9vbS0tKSxpLm1pblpvb209TWF0aC5tYXgoMCxpLm1pblpvb20pKSwic3RyaW5nIj09dHlwZW9mIGkuc3ViZG9tYWlucyYmKGkuc3ViZG9tYWlucz1pLnN1YmRvbWFpbnMuc3BsaXQoIiIpKSxUaXx8dGhpcy5vbigidGlsZXVubG9hZCIsdGhpcy5fb25UaWxlUmVtb3ZlKX0sc2V0VXJsOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMuX3VybD10LGl8fHRoaXMucmVkcmF3KCksdGhpc30sY3JlYXRlVGlsZTpmdW5jdGlvbih0LGkpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO3JldHVybiBWKG4sImxvYWQiLGUodGhpcy5fdGlsZU9uTG9hZCx0aGlzLGksbikpLFYobiwiZXJyb3IiLGUodGhpcy5fdGlsZU9uRXJyb3IsdGhpcyxpLG4pKSx0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4mJihuLmNyb3NzT3JpZ2luPSIiKSxuLmFsdD0iIixuLnNldEF0dHJpYnV0ZSgicm9sZSIsInByZXNlbnRhdGlvbiIpLG4uc3JjPXRoaXMuZ2V0VGlsZVVybCh0KSxufSxnZXRUaWxlVXJsOmZ1bmN0aW9uKHQpe3ZhciBlPXtyOktpPyJAMngiOiIiLHM6dGhpcy5fZ2V0U3ViZG9tYWluKHQpLHg6dC54LHk6dC55LHo6dGhpcy5fZ2V0Wm9vbUZvclVybCgpfTtpZih0aGlzLl9tYXAmJiF0aGlzLl9tYXAub3B0aW9ucy5jcnMuaW5maW5pdGUpe3ZhciBuPXRoaXMuX2dsb2JhbFRpbGVSYW5nZS5tYXgueS10Lnk7dGhpcy5vcHRpb25zLnRtcyYmKGUueT1uKSxlWyIteSJdPW59cmV0dXJuIF8odGhpcy5fdXJsLGkoZSx0aGlzLm9wdGlvbnMpKX0sX3RpbGVPbkxvYWQ6ZnVuY3Rpb24odCxpKXtMaT9zZXRUaW1lb3V0KGUodCx0aGlzLG51bGwsaSksMCk6dChudWxsLGkpfSxfdGlsZU9uRXJyb3I6ZnVuY3Rpb24odCxpLGUpe3ZhciBuPXRoaXMub3B0aW9ucy5lcnJvclRpbGVVcmw7biYmaS5nZXRBdHRyaWJ1dGUoInNyYyIpIT09biYmKGkuc3JjPW4pLHQoZSxpKX0sX29uVGlsZVJlbW92ZTpmdW5jdGlvbih0KXt0LnRpbGUub25sb2FkPW51bGx9LF9nZXRab29tRm9yVXJsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdGlsZVpvb20saT10aGlzLm9wdGlvbnMubWF4Wm9vbSxlPXRoaXMub3B0aW9ucy56b29tUmV2ZXJzZSxuPXRoaXMub3B0aW9ucy56b29tT2Zmc2V0O3JldHVybiBlJiYodD1pLXQpLHQrbn0sX2dldFN1YmRvbWFpbjpmdW5jdGlvbih0KXt2YXIgaT1NYXRoLmFicyh0LngrdC55KSV0aGlzLm9wdGlvbnMuc3ViZG9tYWlucy5sZW5ndGg7cmV0dXJuIHRoaXMub3B0aW9ucy5zdWJkb21haW5zW2ldfSxfYWJvcnRMb2FkaW5nOmZ1bmN0aW9uKCl7dmFyIHQsaTtmb3IodCBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1t0XS5jb29yZHMueiE9PXRoaXMuX3RpbGVab29tJiYoKGk9dGhpcy5fdGlsZXNbdF0uZWwpLm9ubG9hZD1yLGkub25lcnJvcj1yLGkuY29tcGxldGV8fChpLnNyYz1uaSx1dChpKSxkZWxldGUgdGhpcy5fdGlsZXNbdF0pKX19KSxwbj1kbi5leHRlbmQoe2RlZmF1bHRXbXNQYXJhbXM6e3NlcnZpY2U6IldNUyIscmVxdWVzdDoiR2V0TWFwIixsYXllcnM6IiIsc3R5bGVzOiIiLGZvcm1hdDoiaW1hZ2UvanBlZyIsdHJhbnNwYXJlbnQ6ITEsdmVyc2lvbjoiMS4xLjEifSxvcHRpb25zOntjcnM6bnVsbCx1cHBlcmNhc2U6ITF9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt0aGlzLl91cmw9dDt2YXIgbj1pKHt9LHRoaXMuZGVmYXVsdFdtc1BhcmFtcyk7Zm9yKHZhciBvIGluIGUpbyBpbiB0aGlzLm9wdGlvbnN8fChuW29dPWVbb10pO3ZhciBzPShlPWwodGhpcyxlKSkuZGV0ZWN0UmV0aW5hJiZLaT8yOjEscj10aGlzLmdldFRpbGVTaXplKCk7bi53aWR0aD1yLngqcyxuLmhlaWdodD1yLnkqcyx0aGlzLndtc1BhcmFtcz1ufSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9jcnM9dGhpcy5vcHRpb25zLmNyc3x8dC5vcHRpb25zLmNycyx0aGlzLl93bXNWZXJzaW9uPXBhcnNlRmxvYXQodGhpcy53bXNQYXJhbXMudmVyc2lvbik7dmFyIGk9dGhpcy5fd21zVmVyc2lvbj49MS4zPyJjcnMiOiJzcnMiO3RoaXMud21zUGFyYW1zW2ldPXRoaXMuX2Nycy5jb2RlLGRuLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsdCl9LGdldFRpbGVVcmw6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fdGlsZUNvb3Jkc1RvTndTZSh0KSxlPXRoaXMuX2NycyxuPWIoZS5wcm9qZWN0KGlbMF0pLGUucHJvamVjdChpWzFdKSksbz1uLm1pbixzPW4ubWF4LHI9KHRoaXMuX3dtc1ZlcnNpb24+PTEuMyYmdGhpcy5fY3JzPT09SGU/W28ueSxvLngscy55LHMueF06W28ueCxvLnkscy54LHMueV0pLmpvaW4oIiwiKSxhPUwuVGlsZUxheWVyLnByb3RvdHlwZS5nZXRUaWxlVXJsLmNhbGwodGhpcyx0KTtyZXR1cm4gYStjKHRoaXMud21zUGFyYW1zLGEsdGhpcy5vcHRpb25zLnVwcGVyY2FzZSkrKHRoaXMub3B0aW9ucy51cHBlcmNhc2U/IiZCQk9YPSI6IiZiYm94PSIpK3J9LHNldFBhcmFtczpmdW5jdGlvbih0LGUpe3JldHVybiBpKHRoaXMud21zUGFyYW1zLHQpLGV8fHRoaXMucmVkcmF3KCksdGhpc319KTtkbi5XTVM9cG4sWXQud21zPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIG5ldyBwbih0LGkpfTt2YXIgbW49VWUuZXh0ZW5kKHtvcHRpb25zOntwYWRkaW5nOi4xLHRvbGVyYW5jZTowfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2wodGhpcyx0KSxuKHRoaXMpLHRoaXMuX2xheWVycz10aGlzLl9sYXllcnN8fHt9fSxvbkFkZDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lcnx8KHRoaXMuX2luaXRDb250YWluZXIoKSx0aGlzLl96b29tQW5pbWF0ZWQmJnB0KHRoaXMuX2NvbnRhaW5lciwibGVhZmxldC16b29tLWFuaW1hdGVkIikpLHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fdXBkYXRlKCksdGhpcy5vbigidXBkYXRlIix0aGlzLl91cGRhdGVQYXRocyx0aGlzKX0sb25SZW1vdmU6ZnVuY3Rpb24oKXt0aGlzLm9mZigidXBkYXRlIix0aGlzLl91cGRhdGVQYXRocyx0aGlzKSx0aGlzLl9kZXN0cm95Q29udGFpbmVyKCl9LGdldEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PXt2aWV3cmVzZXQ6dGhpcy5fcmVzZXQsem9vbTp0aGlzLl9vblpvb20sbW92ZWVuZDp0aGlzLl91cGRhdGUsem9vbWVuZDp0aGlzLl9vblpvb21FbmR9O3JldHVybiB0aGlzLl96b29tQW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX29uQW5pbVpvb20pLHR9LF9vbkFuaW1ab29tOmZ1bmN0aW9uKHQpe3RoaXMuX3VwZGF0ZVRyYW5zZm9ybSh0LmNlbnRlcix0Lnpvb20pfSxfb25ab29tOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlVHJhbnNmb3JtKHRoaXMuX21hcC5nZXRDZW50ZXIoKSx0aGlzLl9tYXAuZ2V0Wm9vbSgpKX0sX3VwZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbih0LGkpe3ZhciBlPXRoaXMuX21hcC5nZXRab29tU2NhbGUoaSx0aGlzLl96b29tKSxuPVB0KHRoaXMuX2NvbnRhaW5lciksbz10aGlzLl9tYXAuZ2V0U2l6ZSgpLm11bHRpcGx5QnkoLjUrdGhpcy5vcHRpb25zLnBhZGRpbmcpLHM9dGhpcy5fbWFwLnByb2plY3QodGhpcy5fY2VudGVyLGkpLHI9dGhpcy5fbWFwLnByb2plY3QodCxpKS5zdWJ0cmFjdChzKSxhPW8ubXVsdGlwbHlCeSgtZSkuYWRkKG4pLmFkZChvKS5zdWJ0cmFjdChyKTtOaT93dCh0aGlzLl9jb250YWluZXIsYSxlKTpMdCh0aGlzLl9jb250YWluZXIsYSl9LF9yZXNldDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZSgpLHRoaXMuX3VwZGF0ZVRyYW5zZm9ybSh0aGlzLl9jZW50ZXIsdGhpcy5fem9vbSk7Zm9yKHZhciB0IGluIHRoaXMuX2xheWVycyl0aGlzLl9sYXllcnNbdF0uX3Jlc2V0KCl9LF9vblpvb21FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fbGF5ZXJzKXRoaXMuX2xheWVyc1t0XS5fcHJvamVjdCgpfSxfdXBkYXRlUGF0aHM6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fbGF5ZXJzKXRoaXMuX2xheWVyc1t0XS5fdXBkYXRlKCl9LF91cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMucGFkZGluZyxpPXRoaXMuX21hcC5nZXRTaXplKCksZT10aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQoaS5tdWx0aXBseUJ5KC10KSkucm91bmQoKTt0aGlzLl9ib3VuZHM9bmV3IFAoZSxlLmFkZChpLm11bHRpcGx5QnkoMSsyKnQpKS5yb3VuZCgpKSx0aGlzLl9jZW50ZXI9dGhpcy5fbWFwLmdldENlbnRlcigpLHRoaXMuX3pvb209dGhpcy5fbWFwLmdldFpvb20oKX19KSxmbj1tbi5leHRlbmQoe2dldEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PW1uLnByb3RvdHlwZS5nZXRFdmVudHMuY2FsbCh0aGlzKTtyZXR1cm4gdC52aWV3cHJlcmVzZXQ9dGhpcy5fb25WaWV3UHJlUmVzZXQsdH0sX29uVmlld1ByZVJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fcG9zdHBvbmVVcGRhdGVQYXRocz0hMH0sb25BZGQ6ZnVuY3Rpb24oKXttbi5wcm90b3R5cGUub25BZGQuY2FsbCh0aGlzKSx0aGlzLl9kcmF3KCl9LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO1YodCwibW91c2Vtb3ZlIixvKHRoaXMuX29uTW91c2VNb3ZlLDMyLHRoaXMpLHRoaXMpLFYodCwiY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgY29udGV4dG1lbnUiLHRoaXMuX29uQ2xpY2ssdGhpcyksVih0LCJtb3VzZW91dCIsdGhpcy5faGFuZGxlTW91c2VPdXQsdGhpcyksdGhpcy5fY3R4PXQuZ2V0Q29udGV4dCgiMmQiKX0sX2Rlc3Ryb3lDb250YWluZXI6ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fY3R4LHV0KHRoaXMuX2NvbnRhaW5lcikscSh0aGlzLl9jb250YWluZXIpLGRlbGV0ZSB0aGlzLl9jb250YWluZXJ9LF91cGRhdGVQYXRoczpmdW5jdGlvbigpe2lmKCF0aGlzLl9wb3N0cG9uZVVwZGF0ZVBhdGhzKXt0aGlzLl9yZWRyYXdCb3VuZHM9bnVsbDtmb3IodmFyIHQgaW4gdGhpcy5fbGF5ZXJzKXRoaXMuX2xheWVyc1t0XS5fdXBkYXRlKCk7dGhpcy5fcmVkcmF3KCl9fSxfdXBkYXRlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX21hcC5fYW5pbWF0aW5nWm9vbXx8IXRoaXMuX2JvdW5kcyl7dGhpcy5fZHJhd25MYXllcnM9e30sbW4ucHJvdG90eXBlLl91cGRhdGUuY2FsbCh0aGlzKTt2YXIgdD10aGlzLl9ib3VuZHMsaT10aGlzLl9jb250YWluZXIsZT10LmdldFNpemUoKSxuPUtpPzI6MTtMdChpLHQubWluKSxpLndpZHRoPW4qZS54LGkuaGVpZ2h0PW4qZS55LGkuc3R5bGUud2lkdGg9ZS54KyJweCIsaS5zdHlsZS5oZWlnaHQ9ZS55KyJweCIsS2kmJnRoaXMuX2N0eC5zY2FsZSgyLDIpLHRoaXMuX2N0eC50cmFuc2xhdGUoLXQubWluLngsLXQubWluLnkpLHRoaXMuZmlyZSgidXBkYXRlIil9fSxfcmVzZXQ6ZnVuY3Rpb24oKXttbi5wcm90b3R5cGUuX3Jlc2V0LmNhbGwodGhpcyksdGhpcy5fcG9zdHBvbmVVcGRhdGVQYXRocyYmKHRoaXMuX3Bvc3Rwb25lVXBkYXRlUGF0aHM9ITEsdGhpcy5fdXBkYXRlUGF0aHMoKSl9LF9pbml0UGF0aDpmdW5jdGlvbih0KXt0aGlzLl91cGRhdGVEYXNoQXJyYXkodCksdGhpcy5fbGF5ZXJzW24odCldPXQ7dmFyIGk9dC5fb3JkZXI9e2xheWVyOnQscHJldjp0aGlzLl9kcmF3TGFzdCxuZXh0Om51bGx9O3RoaXMuX2RyYXdMYXN0JiYodGhpcy5fZHJhd0xhc3QubmV4dD1pKSx0aGlzLl9kcmF3TGFzdD1pLHRoaXMuX2RyYXdGaXJzdD10aGlzLl9kcmF3Rmlyc3R8fHRoaXMuX2RyYXdMYXN0fSxfYWRkUGF0aDpmdW5jdGlvbih0KXt0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpfSxfcmVtb3ZlUGF0aDpmdW5jdGlvbih0KXt2YXIgaT10Ll9vcmRlcixlPWkubmV4dCxuPWkucHJldjtlP2UucHJldj1uOnRoaXMuX2RyYXdMYXN0PW4sbj9uLm5leHQ9ZTp0aGlzLl9kcmF3Rmlyc3Q9ZSxkZWxldGUgdC5fb3JkZXIsZGVsZXRlIHRoaXMuX2xheWVyc1tMLnN0YW1wKHQpXSx0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbih0KXt0aGlzLl9leHRlbmRSZWRyYXdCb3VuZHModCksdC5fcHJvamVjdCgpLHQuX3VwZGF0ZSgpLHRoaXMuX3JlcXVlc3RSZWRyYXcodCl9LF91cGRhdGVTdHlsZTpmdW5jdGlvbih0KXt0aGlzLl91cGRhdGVEYXNoQXJyYXkodCksdGhpcy5fcmVxdWVzdFJlZHJhdyh0KX0sX3VwZGF0ZURhc2hBcnJheTpmdW5jdGlvbih0KXtpZih0Lm9wdGlvbnMuZGFzaEFycmF5KXt2YXIgaSxlPXQub3B0aW9ucy5kYXNoQXJyYXkuc3BsaXQoIiwiKSxuPVtdO2ZvcihpPTA7aTxlLmxlbmd0aDtpKyspbi5wdXNoKE51bWJlcihlW2ldKSk7dC5vcHRpb25zLl9kYXNoQXJyYXk9bn19LF9yZXF1ZXN0UmVkcmF3OmZ1bmN0aW9uKHQpe3RoaXMuX21hcCYmKHRoaXMuX2V4dGVuZFJlZHJhd0JvdW5kcyh0KSx0aGlzLl9yZWRyYXdSZXF1ZXN0PXRoaXMuX3JlZHJhd1JlcXVlc3R8fGYodGhpcy5fcmVkcmF3LHRoaXMpKX0sX2V4dGVuZFJlZHJhd0JvdW5kczpmdW5jdGlvbih0KXtpZih0Ll9weEJvdW5kcyl7dmFyIGk9KHQub3B0aW9ucy53ZWlnaHR8fDApKzE7dGhpcy5fcmVkcmF3Qm91bmRzPXRoaXMuX3JlZHJhd0JvdW5kc3x8bmV3IFAsdGhpcy5fcmVkcmF3Qm91bmRzLmV4dGVuZCh0Ll9weEJvdW5kcy5taW4uc3VidHJhY3QoW2ksaV0pKSx0aGlzLl9yZWRyYXdCb3VuZHMuZXh0ZW5kKHQuX3B4Qm91bmRzLm1heC5hZGQoW2ksaV0pKX19LF9yZWRyYXc6ZnVuY3Rpb24oKXt0aGlzLl9yZWRyYXdSZXF1ZXN0PW51bGwsdGhpcy5fcmVkcmF3Qm91bmRzJiYodGhpcy5fcmVkcmF3Qm91bmRzLm1pbi5fZmxvb3IoKSx0aGlzLl9yZWRyYXdCb3VuZHMubWF4Ll9jZWlsKCkpLHRoaXMuX2NsZWFyKCksdGhpcy5fZHJhdygpLHRoaXMuX3JlZHJhd0JvdW5kcz1udWxsfSxfY2xlYXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9yZWRyYXdCb3VuZHM7aWYodCl7dmFyIGk9dC5nZXRTaXplKCk7dGhpcy5fY3R4LmNsZWFyUmVjdCh0Lm1pbi54LHQubWluLnksaS54LGkueSl9ZWxzZSB0aGlzLl9jdHguY2xlYXJSZWN0KDAsMCx0aGlzLl9jb250YWluZXIud2lkdGgsdGhpcy5fY29udGFpbmVyLmhlaWdodCl9LF9kcmF3OmZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLl9yZWRyYXdCb3VuZHM7aWYodGhpcy5fY3R4LnNhdmUoKSxpKXt2YXIgZT1pLmdldFNpemUoKTt0aGlzLl9jdHguYmVnaW5QYXRoKCksdGhpcy5fY3R4LnJlY3QoaS5taW4ueCxpLm1pbi55LGUueCxlLnkpLHRoaXMuX2N0eC5jbGlwKCl9dGhpcy5fZHJhd2luZz0hMDtmb3IodmFyIG49dGhpcy5fZHJhd0ZpcnN0O247bj1uLm5leHQpdD1uLmxheWVyLCghaXx8dC5fcHhCb3VuZHMmJnQuX3B4Qm91bmRzLmludGVyc2VjdHMoaSkpJiZ0Ll91cGRhdGVQYXRoKCk7dGhpcy5fZHJhd2luZz0hMSx0aGlzLl9jdHgucmVzdG9yZSgpfSxfdXBkYXRlUG9seTpmdW5jdGlvbih0LGkpe2lmKHRoaXMuX2RyYXdpbmcpe3ZhciBlLG4sbyxzLHI9dC5fcGFydHMsYT1yLmxlbmd0aCxoPXRoaXMuX2N0eDtpZihhKXtmb3IodGhpcy5fZHJhd25MYXllcnNbdC5fbGVhZmxldF9pZF09dCxoLmJlZ2luUGF0aCgpLGU9MDtlPGE7ZSsrKXtmb3Iobj0wLG89cltlXS5sZW5ndGg7bjxvO24rKylzPXJbZV1bbl0saFtuPyJsaW5lVG8iOiJtb3ZlVG8iXShzLngscy55KTtpJiZoLmNsb3NlUGF0aCgpfXRoaXMuX2ZpbGxTdHJva2UoaCx0KX19fSxfdXBkYXRlQ2lyY2xlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2RyYXdpbmcmJiF0Ll9lbXB0eSgpKXt2YXIgaT10Ll9wb2ludCxlPXRoaXMuX2N0eCxuPU1hdGgubWF4KE1hdGgucm91bmQodC5fcmFkaXVzKSwxKSxvPShNYXRoLm1heChNYXRoLnJvdW5kKHQuX3JhZGl1c1kpLDEpfHxuKS9uO3RoaXMuX2RyYXduTGF5ZXJzW3QuX2xlYWZsZXRfaWRdPXQsMSE9PW8mJihlLnNhdmUoKSxlLnNjYWxlKDEsbykpLGUuYmVnaW5QYXRoKCksZS5hcmMoaS54LGkueS9vLG4sMCwyKk1hdGguUEksITEpLDEhPT1vJiZlLnJlc3RvcmUoKSx0aGlzLl9maWxsU3Ryb2tlKGUsdCl9fSxfZmlsbFN0cm9rZTpmdW5jdGlvbih0LGkpe3ZhciBlPWkub3B0aW9ucztlLmZpbGwmJih0Lmdsb2JhbEFscGhhPWUuZmlsbE9wYWNpdHksdC5maWxsU3R5bGU9ZS5maWxsQ29sb3J8fGUuY29sb3IsdC5maWxsKGUuZmlsbFJ1bGV8fCJldmVub2RkIikpLGUuc3Ryb2tlJiYwIT09ZS53ZWlnaHQmJih0LnNldExpbmVEYXNoJiZ0LnNldExpbmVEYXNoKGkub3B0aW9ucyYmaS5vcHRpb25zLl9kYXNoQXJyYXl8fFtdKSx0Lmdsb2JhbEFscGhhPWUub3BhY2l0eSx0LmxpbmVXaWR0aD1lLndlaWdodCx0LnN0cm9rZVN0eWxlPWUuY29sb3IsdC5saW5lQ2FwPWUubGluZUNhcCx0LmxpbmVKb2luPWUubGluZUpvaW4sdC5zdHJva2UoKSl9LF9vbkNsaWNrOmZ1bmN0aW9uKHQpe2Zvcih2YXIgaSxlLG49dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodCksbz10aGlzLl9kcmF3Rmlyc3Q7bztvPW8ubmV4dCkoaT1vLmxheWVyKS5vcHRpb25zLmludGVyYWN0aXZlJiZpLl9jb250YWluc1BvaW50KG4pJiYhdGhpcy5fbWFwLl9kcmFnZ2FibGVNb3ZlZChpKSYmKGU9aSk7ZSYmKGV0KHQpLHRoaXMuX2ZpcmVFdmVudChbZV0sdCkpfSxfb25Nb3VzZU1vdmU6ZnVuY3Rpb24odCl7aWYodGhpcy5fbWFwJiYhdGhpcy5fbWFwLmRyYWdnaW5nLm1vdmluZygpJiYhdGhpcy5fbWFwLl9hbmltYXRpbmdab29tKXt2YXIgaT10aGlzLl9tYXAubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KTt0aGlzLl9oYW5kbGVNb3VzZUhvdmVyKHQsaSl9fSxfaGFuZGxlTW91c2VPdXQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5faG92ZXJlZExheWVyO2kmJihtdCh0aGlzLl9jb250YWluZXIsImxlYWZsZXQtaW50ZXJhY3RpdmUiKSx0aGlzLl9maXJlRXZlbnQoW2ldLHQsIm1vdXNlb3V0IiksdGhpcy5faG92ZXJlZExheWVyPW51bGwpfSxfaGFuZGxlTW91c2VIb3ZlcjpmdW5jdGlvbih0LGkpe2Zvcih2YXIgZSxuLG89dGhpcy5fZHJhd0ZpcnN0O287bz1vLm5leHQpKGU9by5sYXllcikub3B0aW9ucy5pbnRlcmFjdGl2ZSYmZS5fY29udGFpbnNQb2ludChpKSYmKG49ZSk7biE9PXRoaXMuX2hvdmVyZWRMYXllciYmKHRoaXMuX2hhbmRsZU1vdXNlT3V0KHQpLG4mJihwdCh0aGlzLl9jb250YWluZXIsImxlYWZsZXQtaW50ZXJhY3RpdmUiKSx0aGlzLl9maXJlRXZlbnQoW25dLHQsIm1vdXNlb3ZlciIpLHRoaXMuX2hvdmVyZWRMYXllcj1uKSksdGhpcy5faG92ZXJlZExheWVyJiZ0aGlzLl9maXJlRXZlbnQoW3RoaXMuX2hvdmVyZWRMYXllcl0sdCl9LF9maXJlRXZlbnQ6ZnVuY3Rpb24odCxpLGUpe3RoaXMuX21hcC5fZmlyZURPTUV2ZW50KGksZXx8aS50eXBlLHQpfSxfYnJpbmdUb0Zyb250OmZ1bmN0aW9uKHQpe3ZhciBpPXQuX29yZGVyLGU9aS5uZXh0LG49aS5wcmV2O2UmJihlLnByZXY9bixuP24ubmV4dD1lOmUmJih0aGlzLl9kcmF3Rmlyc3Q9ZSksaS5wcmV2PXRoaXMuX2RyYXdMYXN0LHRoaXMuX2RyYXdMYXN0Lm5leHQ9aSxpLm5leHQ9bnVsbCx0aGlzLl9kcmF3TGFzdD1pLHRoaXMuX3JlcXVlc3RSZWRyYXcodCkpfSxfYnJpbmdUb0JhY2s6ZnVuY3Rpb24odCl7dmFyIGk9dC5fb3JkZXIsZT1pLm5leHQsbj1pLnByZXY7biYmKG4ubmV4dD1lLGU/ZS5wcmV2PW46biYmKHRoaXMuX2RyYXdMYXN0PW4pLGkucHJldj1udWxsLGkubmV4dD10aGlzLl9kcmF3Rmlyc3QsdGhpcy5fZHJhd0ZpcnN0LnByZXY9aSx0aGlzLl9kcmF3Rmlyc3Q9aSx0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpKX19KSxnbj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gZG9jdW1lbnQubmFtZXNwYWNlcy5hZGQoImx2bWwiLCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIpLGZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCI8bHZtbDoiK3QrJyBjbGFzcz0ibHZtbCI+Jyl9fWNhdGNoKHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiPCIrdCsnIHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQuY29tOnZtbCIgY2xhc3M9Imx2bWwiPicpfX19KCksdm49e19pbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dGhpcy5fY29udGFpbmVyPWh0KCJkaXYiLCJsZWFmbGV0LXZtbC1jb250YWluZXIiKX0sX3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMuX21hcC5fYW5pbWF0aW5nWm9vbXx8KG1uLnByb3RvdHlwZS5fdXBkYXRlLmNhbGwodGhpcyksdGhpcy5maXJlKCJ1cGRhdGUiKSl9LF9pbml0UGF0aDpmdW5jdGlvbih0KXt2YXIgaT10Ll9jb250YWluZXI9Z24oInNoYXBlIik7cHQoaSwibGVhZmxldC12bWwtc2hhcGUgIisodGhpcy5vcHRpb25zLmNsYXNzTmFtZXx8IiIpKSxpLmNvb3Jkc2l6ZT0iMSAxIix0Ll9wYXRoPWduKCJwYXRoIiksaS5hcHBlbmRDaGlsZCh0Ll9wYXRoKSx0aGlzLl91cGRhdGVTdHlsZSh0KSx0aGlzLl9sYXllcnNbbih0KV09dH0sX2FkZFBhdGg6ZnVuY3Rpb24odCl7dmFyIGk9dC5fY29udGFpbmVyO3RoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChpKSx0Lm9wdGlvbnMuaW50ZXJhY3RpdmUmJnQuYWRkSW50ZXJhY3RpdmVUYXJnZXQoaSl9LF9yZW1vdmVQYXRoOmZ1bmN0aW9uKHQpe3ZhciBpPXQuX2NvbnRhaW5lcjt1dChpKSx0LnJlbW92ZUludGVyYWN0aXZlVGFyZ2V0KGkpLGRlbGV0ZSB0aGlzLl9sYXllcnNbbih0KV19LF91cGRhdGVTdHlsZTpmdW5jdGlvbih0KXt2YXIgaT10Ll9zdHJva2UsZT10Ll9maWxsLG49dC5vcHRpb25zLG89dC5fY29udGFpbmVyO28uc3Ryb2tlZD0hIW4uc3Ryb2tlLG8uZmlsbGVkPSEhbi5maWxsLG4uc3Ryb2tlPyhpfHwoaT10Ll9zdHJva2U9Z24oInN0cm9rZSIpKSxvLmFwcGVuZENoaWxkKGkpLGkud2VpZ2h0PW4ud2VpZ2h0KyJweCIsaS5jb2xvcj1uLmNvbG9yLGkub3BhY2l0eT1uLm9wYWNpdHksbi5kYXNoQXJyYXk/aS5kYXNoU3R5bGU9ZWkobi5kYXNoQXJyYXkpP24uZGFzaEFycmF5LmpvaW4oIiAiKTpuLmRhc2hBcnJheS5yZXBsYWNlKC8oICosICopL2csIiAiKTppLmRhc2hTdHlsZT0iIixpLmVuZGNhcD1uLmxpbmVDYXAucmVwbGFjZSgiYnV0dCIsImZsYXQiKSxpLmpvaW5zdHlsZT1uLmxpbmVKb2luKTppJiYoby5yZW1vdmVDaGlsZChpKSx0Ll9zdHJva2U9bnVsbCksbi5maWxsPyhlfHwoZT10Ll9maWxsPWduKCJmaWxsIikpLG8uYXBwZW5kQ2hpbGQoZSksZS5jb2xvcj1uLmZpbGxDb2xvcnx8bi5jb2xvcixlLm9wYWNpdHk9bi5maWxsT3BhY2l0eSk6ZSYmKG8ucmVtb3ZlQ2hpbGQoZSksdC5fZmlsbD1udWxsKX0sX3VwZGF0ZUNpcmNsZTpmdW5jdGlvbih0KXt2YXIgaT10Ll9wb2ludC5yb3VuZCgpLGU9TWF0aC5yb3VuZCh0Ll9yYWRpdXMpLG49TWF0aC5yb3VuZCh0Ll9yYWRpdXNZfHxlKTt0aGlzLl9zZXRQYXRoKHQsdC5fZW1wdHkoKT8iTTAgMCI6IkFMICIraS54KyIsIitpLnkrIiAiK2UrIiwiK24rIiAwLDIzNTkyNjAwIil9LF9zZXRQYXRoOmZ1bmN0aW9uKHQsaSl7dC5fcGF0aC52PWl9LF9icmluZ1RvRnJvbnQ6ZnVuY3Rpb24odCl7Y3QodC5fY29udGFpbmVyKX0sX2JyaW5nVG9CYWNrOmZ1bmN0aW9uKHQpe190KHQuX2NvbnRhaW5lcil9fSx5bj1KaT9nbjpFLHhuPW1uLmV4dGVuZCh7Z2V0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9bW4ucHJvdG90eXBlLmdldEV2ZW50cy5jYWxsKHRoaXMpO3JldHVybiB0Lnpvb21zdGFydD10aGlzLl9vblpvb21TdGFydCx0fSxfaW5pdENvbnRhaW5lcjpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lcj15bigic3ZnIiksdGhpcy5fY29udGFpbmVyLnNldEF0dHJpYnV0ZSgicG9pbnRlci1ldmVudHMiLCJub25lIiksdGhpcy5fcm9vdEdyb3VwPXluKCJnIiksdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3Jvb3RHcm91cCl9LF9kZXN0cm95Q29udGFpbmVyOmZ1bmN0aW9uKCl7dXQodGhpcy5fY29udGFpbmVyKSxxKHRoaXMuX2NvbnRhaW5lciksZGVsZXRlIHRoaXMuX2NvbnRhaW5lcixkZWxldGUgdGhpcy5fcm9vdEdyb3VwLGRlbGV0ZSB0aGlzLl9zdmdTaXplfSxfb25ab29tU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGUoKX0sX3VwZGF0ZTpmdW5jdGlvbigpe2lmKCF0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb218fCF0aGlzLl9ib3VuZHMpe21uLnByb3RvdHlwZS5fdXBkYXRlLmNhbGwodGhpcyk7dmFyIHQ9dGhpcy5fYm91bmRzLGk9dC5nZXRTaXplKCksZT10aGlzLl9jb250YWluZXI7dGhpcy5fc3ZnU2l6ZSYmdGhpcy5fc3ZnU2l6ZS5lcXVhbHMoaSl8fCh0aGlzLl9zdmdTaXplPWksZS5zZXRBdHRyaWJ1dGUoIndpZHRoIixpLngpLGUuc2V0QXR0cmlidXRlKCJoZWlnaHQiLGkueSkpLEx0KGUsdC5taW4pLGUuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixbdC5taW4ueCx0Lm1pbi55LGkueCxpLnldLmpvaW4oIiAiKSksdGhpcy5maXJlKCJ1cGRhdGUiKX19LF9pbml0UGF0aDpmdW5jdGlvbih0KXt2YXIgaT10Ll9wYXRoPXluKCJwYXRoIik7dC5vcHRpb25zLmNsYXNzTmFtZSYmcHQoaSx0Lm9wdGlvbnMuY2xhc3NOYW1lKSx0Lm9wdGlvbnMuaW50ZXJhY3RpdmUmJnB0KGksImxlYWZsZXQtaW50ZXJhY3RpdmUiKSx0aGlzLl91cGRhdGVTdHlsZSh0KSx0aGlzLl9sYXllcnNbbih0KV09dH0sX2FkZFBhdGg6ZnVuY3Rpb24odCl7dGhpcy5fcm9vdEdyb3VwfHx0aGlzLl9pbml0Q29udGFpbmVyKCksdGhpcy5fcm9vdEdyb3VwLmFwcGVuZENoaWxkKHQuX3BhdGgpLHQuYWRkSW50ZXJhY3RpdmVUYXJnZXQodC5fcGF0aCl9LF9yZW1vdmVQYXRoOmZ1bmN0aW9uKHQpe3V0KHQuX3BhdGgpLHQucmVtb3ZlSW50ZXJhY3RpdmVUYXJnZXQodC5fcGF0aCksZGVsZXRlIHRoaXMuX2xheWVyc1tuKHQpXX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24odCl7dC5fcHJvamVjdCgpLHQuX3VwZGF0ZSgpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24odCl7dmFyIGk9dC5fcGF0aCxlPXQub3B0aW9ucztpJiYoZS5zdHJva2U/KGkuc2V0QXR0cmlidXRlKCJzdHJva2UiLGUuY29sb3IpLGkuc2V0QXR0cmlidXRlKCJzdHJva2Utb3BhY2l0eSIsZS5vcGFjaXR5KSxpLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIixlLndlaWdodCksaS5zZXRBdHRyaWJ1dGUoInN0cm9rZS1saW5lY2FwIixlLmxpbmVDYXApLGkuc2V0QXR0cmlidXRlKCJzdHJva2UtbGluZWpvaW4iLGUubGluZUpvaW4pLGUuZGFzaEFycmF5P2kuc2V0QXR0cmlidXRlKCJzdHJva2UtZGFzaGFycmF5IixlLmRhc2hBcnJheSk6aS5yZW1vdmVBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiKSxlLmRhc2hPZmZzZXQ/aS5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNob2Zmc2V0IixlLmRhc2hPZmZzZXQpOmkucmVtb3ZlQXR0cmlidXRlKCJzdHJva2UtZGFzaG9mZnNldCIpKTppLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwibm9uZSIpLGUuZmlsbD8oaS5zZXRBdHRyaWJ1dGUoImZpbGwiLGUuZmlsbENvbG9yfHxlLmNvbG9yKSxpLnNldEF0dHJpYnV0ZSgiZmlsbC1vcGFjaXR5IixlLmZpbGxPcGFjaXR5KSxpLnNldEF0dHJpYnV0ZSgiZmlsbC1ydWxlIixlLmZpbGxSdWxlfHwiZXZlbm9kZCIpKTppLnNldEF0dHJpYnV0ZSgiZmlsbCIsIm5vbmUiKSl9LF91cGRhdGVQb2x5OmZ1bmN0aW9uKHQsaSl7dGhpcy5fc2V0UGF0aCh0LGsodC5fcGFydHMsaSkpfSxfdXBkYXRlQ2lyY2xlOmZ1bmN0aW9uKHQpe3ZhciBpPXQuX3BvaW50LGU9TWF0aC5tYXgoTWF0aC5yb3VuZCh0Ll9yYWRpdXMpLDEpLG49ImEiK2UrIiwiKyhNYXRoLm1heChNYXRoLnJvdW5kKHQuX3JhZGl1c1kpLDEpfHxlKSsiIDAgMSwwICIsbz10Ll9lbXB0eSgpPyJNMCAwIjoiTSIrKGkueC1lKSsiLCIraS55K24rMiplKyIsMCAiK24rMiotZSsiLDAgIjt0aGlzLl9zZXRQYXRoKHQsbyl9LF9zZXRQYXRoOmZ1bmN0aW9uKHQsaSl7dC5fcGF0aC5zZXRBdHRyaWJ1dGUoImQiLGkpfSxfYnJpbmdUb0Zyb250OmZ1bmN0aW9uKHQpe2N0KHQuX3BhdGgpfSxfYnJpbmdUb0JhY2s6ZnVuY3Rpb24odCl7X3QodC5fcGF0aCl9fSk7SmkmJnhuLmluY2x1ZGUodm4pLExlLmluY2x1ZGUoe2dldFJlbmRlcmVyOmZ1bmN0aW9uKHQpe3ZhciBpPXQub3B0aW9ucy5yZW5kZXJlcnx8dGhpcy5fZ2V0UGFuZVJlbmRlcmVyKHQub3B0aW9ucy5wYW5lKXx8dGhpcy5vcHRpb25zLnJlbmRlcmVyfHx0aGlzLl9yZW5kZXJlcjtyZXR1cm4gaXx8KGk9dGhpcy5fcmVuZGVyZXI9dGhpcy5vcHRpb25zLnByZWZlckNhbnZhcyYmWHQoKXx8SnQoKSksdGhpcy5oYXNMYXllcihpKXx8dGhpcy5hZGRMYXllcihpKSxpfSxfZ2V0UGFuZVJlbmRlcmVyOmZ1bmN0aW9uKHQpe2lmKCJvdmVybGF5UGFuZSI9PT10fHx2b2lkIDA9PT10KXJldHVybiExO3ZhciBpPXRoaXMuX3BhbmVSZW5kZXJlcnNbdF07cmV0dXJuIHZvaWQgMD09PWkmJihpPXhuJiZKdCh7cGFuZTp0fSl8fGZuJiZYdCh7cGFuZTp0fSksdGhpcy5fcGFuZVJlbmRlcmVyc1t0XT1pKSxpfX0pO3ZhciB3bj1lbi5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxpKXtlbi5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsdGhpcy5fYm91bmRzVG9MYXRMbmdzKHQpLGkpfSxzZXRCb3VuZHM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2V0TGF0TG5ncyh0aGlzLl9ib3VuZHNUb0xhdExuZ3ModCkpfSxfYm91bmRzVG9MYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0PXoodCksW3QuZ2V0U291dGhXZXN0KCksdC5nZXROb3J0aFdlc3QoKSx0LmdldE5vcnRoRWFzdCgpLHQuZ2V0U291dGhFYXN0KCldfX0pO3huLmNyZWF0ZT15bix4bi5wb2ludHNUb1BhdGg9ayxubi5nZW9tZXRyeVRvTGF5ZXI9V3Qsbm4uY29vcmRzVG9MYXRMbmc9SHQsbm4uY29vcmRzVG9MYXRMbmdzPUZ0LG5uLmxhdExuZ1RvQ29vcmRzPVV0LG5uLmxhdExuZ3NUb0Nvb3Jkcz1WdCxubi5nZXRGZWF0dXJlPXF0LG5uLmFzRmVhdHVyZT1HdCxMZS5tZXJnZU9wdGlvbnMoe2JveFpvb206ITB9KTt2YXIgTG49WmUuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcj10Ll9jb250YWluZXIsdGhpcy5fcGFuZT10Ll9wYW5lcy5vdmVybGF5UGFuZSx0aGlzLl9yZXNldFN0YXRlVGltZW91dD0wLHQub24oInVubG9hZCIsdGhpcy5fZGVzdHJveSx0aGlzKX0sYWRkSG9va3M6ZnVuY3Rpb24oKXtWKHRoaXMuX2NvbnRhaW5lciwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXtxKHRoaXMuX2NvbnRhaW5lciwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKX0sbW92ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW92ZWR9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dXQodGhpcy5fcGFuZSksZGVsZXRlIHRoaXMuX3BhbmV9LF9yZXNldFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQ9MCx0aGlzLl9tb3ZlZD0hMX0sX2NsZWFyRGVmZXJyZWRSZXNldFN0YXRlOmZ1bmN0aW9uKCl7MCE9PXRoaXMuX3Jlc2V0U3RhdGVUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc2V0U3RhdGVUaW1lb3V0KSx0aGlzLl9yZXNldFN0YXRlVGltZW91dD0wKX0sX29uTW91c2VEb3duOmZ1bmN0aW9uKHQpe2lmKCF0LnNoaWZ0S2V5fHwxIT09dC53aGljaCYmMSE9PXQuYnV0dG9uKXJldHVybiExO3RoaXMuX2NsZWFyRGVmZXJyZWRSZXNldFN0YXRlKCksdGhpcy5fcmVzZXRTdGF0ZSgpLG1pKCksYnQoKSx0aGlzLl9zdGFydFBvaW50PXRoaXMuX21hcC5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0KSxWKGRvY3VtZW50LHtjb250ZXh0bWVudTpRLG1vdXNlbW92ZTp0aGlzLl9vbk1vdXNlTW92ZSxtb3VzZXVwOnRoaXMuX29uTW91c2VVcCxrZXlkb3duOnRoaXMuX29uS2V5RG93bn0sdGhpcyl9LF9vbk1vdXNlTW92ZTpmdW5jdGlvbih0KXt0aGlzLl9tb3ZlZHx8KHRoaXMuX21vdmVkPSEwLHRoaXMuX2JveD1odCgiZGl2IiwibGVhZmxldC16b29tLWJveCIsdGhpcy5fY29udGFpbmVyKSxwdCh0aGlzLl9jb250YWluZXIsImxlYWZsZXQtY3Jvc3NoYWlyIiksdGhpcy5fbWFwLmZpcmUoImJveHpvb21zdGFydCIpKSx0aGlzLl9wb2ludD10aGlzLl9tYXAubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCk7dmFyIGk9bmV3IFAodGhpcy5fcG9pbnQsdGhpcy5fc3RhcnRQb2ludCksZT1pLmdldFNpemUoKTtMdCh0aGlzLl9ib3gsaS5taW4pLHRoaXMuX2JveC5zdHlsZS53aWR0aD1lLngrInB4Iix0aGlzLl9ib3guc3R5bGUuaGVpZ2h0PWUueSsicHgifSxfZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5fbW92ZWQmJih1dCh0aGlzLl9ib3gpLG10KHRoaXMuX2NvbnRhaW5lciwibGVhZmxldC1jcm9zc2hhaXIiKSksZmkoKSxUdCgpLHEoZG9jdW1lbnQse2NvbnRleHRtZW51OlEsbW91c2Vtb3ZlOnRoaXMuX29uTW91c2VNb3ZlLG1vdXNldXA6dGhpcy5fb25Nb3VzZVVwLGtleWRvd246dGhpcy5fb25LZXlEb3dufSx0aGlzKX0sX29uTW91c2VVcDpmdW5jdGlvbih0KXtpZigoMT09PXQud2hpY2h8fDE9PT10LmJ1dHRvbikmJih0aGlzLl9maW5pc2goKSx0aGlzLl9tb3ZlZCkpe3RoaXMuX2NsZWFyRGVmZXJyZWRSZXNldFN0YXRlKCksdGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQ9c2V0VGltZW91dChlKHRoaXMuX3Jlc2V0U3RhdGUsdGhpcyksMCk7dmFyIGk9bmV3IFQodGhpcy5fbWFwLmNvbnRhaW5lclBvaW50VG9MYXRMbmcodGhpcy5fc3RhcnRQb2ludCksdGhpcy5fbWFwLmNvbnRhaW5lclBvaW50VG9MYXRMbmcodGhpcy5fcG9pbnQpKTt0aGlzLl9tYXAuZml0Qm91bmRzKGkpLmZpcmUoImJveHpvb21lbmQiLHtib3hab29tQm91bmRzOml9KX19LF9vbktleURvd246ZnVuY3Rpb24odCl7Mjc9PT10LmtleUNvZGUmJnRoaXMuX2ZpbmlzaCgpfX0pO0xlLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwiYm94Wm9vbSIsTG4pLExlLm1lcmdlT3B0aW9ucyh7ZG91YmxlQ2xpY2tab29tOiEwfSk7dmFyIFBuPVplLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXt0aGlzLl9tYXAub24oImRibGNsaWNrIix0aGlzLl9vbkRvdWJsZUNsaWNrLHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe3RoaXMuX21hcC5vZmYoImRibGNsaWNrIix0aGlzLl9vbkRvdWJsZUNsaWNrLHRoaXMpfSxfb25Eb3VibGVDbGljazpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9tYXAsZT1pLmdldFpvb20oKSxuPWkub3B0aW9ucy56b29tRGVsdGEsbz10Lm9yaWdpbmFsRXZlbnQuc2hpZnRLZXk/ZS1uOmUrbjsiY2VudGVyIj09PWkub3B0aW9ucy5kb3VibGVDbGlja1pvb20/aS5zZXRab29tKG8pOmkuc2V0Wm9vbUFyb3VuZCh0LmNvbnRhaW5lclBvaW50LG8pfX0pO0xlLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwiZG91YmxlQ2xpY2tab29tIixQbiksTGUubWVyZ2VPcHRpb25zKHtkcmFnZ2luZzohMCxpbmVydGlhOiF6aSxpbmVydGlhRGVjZWxlcmF0aW9uOjM0MDAsaW5lcnRpYU1heFNwZWVkOjEvMCxlYXNlTGluZWFyaXR5Oi4yLHdvcmxkQ29weUp1bXA6ITEsbWF4Qm91bmRzVmlzY29zaXR5OjB9KTt2YXIgYm49WmUuZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe2lmKCF0aGlzLl9kcmFnZ2FibGUpe3ZhciB0PXRoaXMuX21hcDt0aGlzLl9kcmFnZ2FibGU9bmV3IEJlKHQuX21hcFBhbmUsdC5fY29udGFpbmVyKSx0aGlzLl9kcmFnZ2FibGUub24oe2RyYWdzdGFydDp0aGlzLl9vbkRyYWdTdGFydCxkcmFnOnRoaXMuX29uRHJhZyxkcmFnZW5kOnRoaXMuX29uRHJhZ0VuZH0sdGhpcyksdGhpcy5fZHJhZ2dhYmxlLm9uKCJwcmVkcmFnIix0aGlzLl9vblByZURyYWdMaW1pdCx0aGlzKSx0Lm9wdGlvbnMud29ybGRDb3B5SnVtcCYmKHRoaXMuX2RyYWdnYWJsZS5vbigicHJlZHJhZyIsdGhpcy5fb25QcmVEcmFnV3JhcCx0aGlzKSx0Lm9uKCJ6b29tZW5kIix0aGlzLl9vblpvb21FbmQsdGhpcyksdC53aGVuUmVhZHkodGhpcy5fb25ab29tRW5kLHRoaXMpKX1wdCh0aGlzLl9tYXAuX2NvbnRhaW5lciwibGVhZmxldC1ncmFiIGxlYWZsZXQtdG91Y2gtZHJhZyIpLHRoaXMuX2RyYWdnYWJsZS5lbmFibGUoKSx0aGlzLl9wb3NpdGlvbnM9W10sdGhpcy5fdGltZXM9W119LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7bXQodGhpcy5fbWFwLl9jb250YWluZXIsImxlYWZsZXQtZ3JhYiIpLG10KHRoaXMuX21hcC5fY29udGFpbmVyLCJsZWFmbGV0LXRvdWNoLWRyYWciKSx0aGlzLl9kcmFnZ2FibGUuZGlzYWJsZSgpfSxtb3ZlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmFnZ2FibGUmJnRoaXMuX2RyYWdnYWJsZS5fbW92ZWR9LG1vdmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmFnZ2FibGUmJnRoaXMuX2RyYWdnYWJsZS5fbW92aW5nfSxfb25EcmFnU3RhcnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXA7aWYodC5fc3RvcCgpLHRoaXMuX21hcC5vcHRpb25zLm1heEJvdW5kcyYmdGhpcy5fbWFwLm9wdGlvbnMubWF4Qm91bmRzVmlzY29zaXR5KXt2YXIgaT16KHRoaXMuX21hcC5vcHRpb25zLm1heEJvdW5kcyk7dGhpcy5fb2Zmc2V0TGltaXQ9Yih0aGlzLl9tYXAubGF0TG5nVG9Db250YWluZXJQb2ludChpLmdldE5vcnRoV2VzdCgpKS5tdWx0aXBseUJ5KC0xKSx0aGlzLl9tYXAubGF0TG5nVG9Db250YWluZXJQb2ludChpLmdldFNvdXRoRWFzdCgpKS5tdWx0aXBseUJ5KC0xKS5hZGQodGhpcy5fbWFwLmdldFNpemUoKSkpLHRoaXMuX3Zpc2Nvc2l0eT1NYXRoLm1pbigxLE1hdGgubWF4KDAsdGhpcy5fbWFwLm9wdGlvbnMubWF4Qm91bmRzVmlzY29zaXR5KSl9ZWxzZSB0aGlzLl9vZmZzZXRMaW1pdD1udWxsO3QuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiZHJhZ3N0YXJ0IiksdC5vcHRpb25zLmluZXJ0aWEmJih0aGlzLl9wb3NpdGlvbnM9W10sdGhpcy5fdGltZXM9W10pfSxfb25EcmFnOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX21hcC5vcHRpb25zLmluZXJ0aWEpe3ZhciBpPXRoaXMuX2xhc3RUaW1lPStuZXcgRGF0ZSxlPXRoaXMuX2xhc3RQb3M9dGhpcy5fZHJhZ2dhYmxlLl9hYnNQb3N8fHRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zO3RoaXMuX3Bvc2l0aW9ucy5wdXNoKGUpLHRoaXMuX3RpbWVzLnB1c2goaSksdGhpcy5fcHJ1bmVQb3NpdGlvbnMoaSl9dGhpcy5fbWFwLmZpcmUoIm1vdmUiLHQpLmZpcmUoImRyYWciLHQpfSxfcHJ1bmVQb3NpdGlvbnM6ZnVuY3Rpb24odCl7Zm9yKDt0aGlzLl9wb3NpdGlvbnMubGVuZ3RoPjEmJnQtdGhpcy5fdGltZXNbMF0+NTA7KXRoaXMuX3Bvc2l0aW9ucy5zaGlmdCgpLHRoaXMuX3RpbWVzLnNoaWZ0KCl9LF9vblpvb21FbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIpLGk9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludChbMCwwXSk7dGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0PWkuc3VidHJhY3QodCkueCx0aGlzLl93b3JsZFdpZHRoPXRoaXMuX21hcC5nZXRQaXhlbFdvcmxkQm91bmRzKCkuZ2V0U2l6ZSgpLnh9LF92aXNjb3VzTGltaXQ6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdC0odC1pKSp0aGlzLl92aXNjb3NpdHl9LF9vblByZURyYWdMaW1pdDpmdW5jdGlvbigpe2lmKHRoaXMuX3Zpc2Nvc2l0eSYmdGhpcy5fb2Zmc2V0TGltaXQpe3ZhciB0PXRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zLnN1YnRyYWN0KHRoaXMuX2RyYWdnYWJsZS5fc3RhcnRQb3MpLGk9dGhpcy5fb2Zmc2V0TGltaXQ7dC54PGkubWluLngmJih0Lng9dGhpcy5fdmlzY291c0xpbWl0KHQueCxpLm1pbi54KSksdC55PGkubWluLnkmJih0Lnk9dGhpcy5fdmlzY291c0xpbWl0KHQueSxpLm1pbi55KSksdC54PmkubWF4LngmJih0Lng9dGhpcy5fdmlzY291c0xpbWl0KHQueCxpLm1heC54KSksdC55PmkubWF4LnkmJih0Lnk9dGhpcy5fdmlzY291c0xpbWl0KHQueSxpLm1heC55KSksdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3M9dGhpcy5fZHJhZ2dhYmxlLl9zdGFydFBvcy5hZGQodCl9fSxfb25QcmVEcmFnV3JhcDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3dvcmxkV2lkdGgsaT1NYXRoLnJvdW5kKHQvMiksZT10aGlzLl9pbml0aWFsV29ybGRPZmZzZXQsbj10aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy54LG89KG4taStlKSV0K2ktZSxzPShuK2krZSkldC1pLWUscj1NYXRoLmFicyhvK2UpPE1hdGguYWJzKHMrZSk/bzpzO3RoaXMuX2RyYWdnYWJsZS5fYWJzUG9zPXRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zLmNsb25lKCksdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MueD1yfSxfb25EcmFnRW5kOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX21hcCxlPWkub3B0aW9ucyxuPSFlLmluZXJ0aWF8fHRoaXMuX3RpbWVzLmxlbmd0aDwyO2lmKGkuZmlyZSgiZHJhZ2VuZCIsdCksbilpLmZpcmUoIm1vdmVlbmQiKTtlbHNle3RoaXMuX3BydW5lUG9zaXRpb25zKCtuZXcgRGF0ZSk7dmFyIG89dGhpcy5fbGFzdFBvcy5zdWJ0cmFjdCh0aGlzLl9wb3NpdGlvbnNbMF0pLHM9KHRoaXMuX2xhc3RUaW1lLXRoaXMuX3RpbWVzWzBdKS8xZTMscj1lLmVhc2VMaW5lYXJpdHksYT1vLm11bHRpcGx5Qnkoci9zKSxoPWEuZGlzdGFuY2VUbyhbMCwwXSksdT1NYXRoLm1pbihlLmluZXJ0aWFNYXhTcGVlZCxoKSxsPWEubXVsdGlwbHlCeSh1L2gpLGM9dS8oZS5pbmVydGlhRGVjZWxlcmF0aW9uKnIpLF89bC5tdWx0aXBseUJ5KC1jLzIpLnJvdW5kKCk7Xy54fHxfLnk/KF89aS5fbGltaXRPZmZzZXQoXyxpLm9wdGlvbnMubWF4Qm91bmRzKSxmKGZ1bmN0aW9uKCl7aS5wYW5CeShfLHtkdXJhdGlvbjpjLGVhc2VMaW5lYXJpdHk6cixub01vdmVTdGFydDohMCxhbmltYXRlOiEwfSl9KSk6aS5maXJlKCJtb3ZlZW5kIil9fX0pO0xlLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwiZHJhZ2dpbmciLGJuKSxMZS5tZXJnZU9wdGlvbnMoe2tleWJvYXJkOiEwLGtleWJvYXJkUGFuRGVsdGE6ODB9KTt2YXIgVG49WmUuZXh0ZW5kKHtrZXlDb2Rlczp7bGVmdDpbMzddLHJpZ2h0OlszOV0sZG93bjpbNDBdLHVwOlszOF0sem9vbUluOlsxODcsMTA3LDYxLDE3MV0sem9vbU91dDpbMTg5LDEwOSw1NCwxNzNdfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX3NldFBhbkRlbHRhKHQub3B0aW9ucy5rZXlib2FyZFBhbkRlbHRhKSx0aGlzLl9zZXRab29tRGVsdGEodC5vcHRpb25zLnpvb21EZWx0YSl9LGFkZEhvb2tzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLl9jb250YWluZXI7dC50YWJJbmRleDw9MCYmKHQudGFiSW5kZXg9IjAiKSxWKHQse2ZvY3VzOnRoaXMuX29uRm9jdXMsYmx1cjp0aGlzLl9vbkJsdXIsbW91c2Vkb3duOnRoaXMuX29uTW91c2VEb3dufSx0aGlzKSx0aGlzLl9tYXAub24oe2ZvY3VzOnRoaXMuX2FkZEhvb2tzLGJsdXI6dGhpcy5fcmVtb3ZlSG9va3N9LHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe3RoaXMuX3JlbW92ZUhvb2tzKCkscSh0aGlzLl9tYXAuX2NvbnRhaW5lcix7Zm9jdXM6dGhpcy5fb25Gb2N1cyxibHVyOnRoaXMuX29uQmx1cixtb3VzZWRvd246dGhpcy5fb25Nb3VzZURvd259LHRoaXMpLHRoaXMuX21hcC5vZmYoe2ZvY3VzOnRoaXMuX2FkZEhvb2tzLGJsdXI6dGhpcy5fcmVtb3ZlSG9va3N9LHRoaXMpfSxfb25Nb3VzZURvd246ZnVuY3Rpb24oKXtpZighdGhpcy5fZm9jdXNlZCl7dmFyIHQ9ZG9jdW1lbnQuYm9keSxpPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlPXQuc2Nyb2xsVG9wfHxpLnNjcm9sbFRvcCxuPXQuc2Nyb2xsTGVmdHx8aS5zY3JvbGxMZWZ0O3RoaXMuX21hcC5fY29udGFpbmVyLmZvY3VzKCksd2luZG93LnNjcm9sbFRvKG4sZSl9fSxfb25Gb2N1czpmdW5jdGlvbigpe3RoaXMuX2ZvY3VzZWQ9ITAsdGhpcy5fbWFwLmZpcmUoImZvY3VzIil9LF9vbkJsdXI6ZnVuY3Rpb24oKXt0aGlzLl9mb2N1c2VkPSExLHRoaXMuX21hcC5maXJlKCJibHVyIil9LF9zZXRQYW5EZWx0YTpmdW5jdGlvbih0KXt2YXIgaSxlLG49dGhpcy5fcGFuS2V5cz17fSxvPXRoaXMua2V5Q29kZXM7Zm9yKGk9MCxlPW8ubGVmdC5sZW5ndGg7aTxlO2krKyluW28ubGVmdFtpXV09Wy0xKnQsMF07Zm9yKGk9MCxlPW8ucmlnaHQubGVuZ3RoO2k8ZTtpKyspbltvLnJpZ2h0W2ldXT1bdCwwXTtmb3IoaT0wLGU9by5kb3duLmxlbmd0aDtpPGU7aSsrKW5bby5kb3duW2ldXT1bMCx0XTtmb3IoaT0wLGU9by51cC5sZW5ndGg7aTxlO2krKyluW28udXBbaV1dPVswLC0xKnRdfSxfc2V0Wm9vbURlbHRhOmZ1bmN0aW9uKHQpe3ZhciBpLGUsbj10aGlzLl96b29tS2V5cz17fSxvPXRoaXMua2V5Q29kZXM7Zm9yKGk9MCxlPW8uem9vbUluLmxlbmd0aDtpPGU7aSsrKW5bby56b29tSW5baV1dPXQ7Zm9yKGk9MCxlPW8uem9vbU91dC5sZW5ndGg7aTxlO2krKyluW28uem9vbU91dFtpXV09LXR9LF9hZGRIb29rczpmdW5jdGlvbigpe1YoZG9jdW1lbnQsImtleWRvd24iLHRoaXMuX29uS2V5RG93bix0aGlzKX0sX3JlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7cShkb2N1bWVudCwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLHRoaXMpfSxfb25LZXlEb3duOmZ1bmN0aW9uKHQpe2lmKCEodC5hbHRLZXl8fHQuY3RybEtleXx8dC5tZXRhS2V5KSl7dmFyIGksZT10LmtleUNvZGUsbj10aGlzLl9tYXA7aWYoZSBpbiB0aGlzLl9wYW5LZXlzKXtpZihuLl9wYW5BbmltJiZuLl9wYW5BbmltLl9pblByb2dyZXNzKXJldHVybjtpPXRoaXMuX3BhbktleXNbZV0sdC5zaGlmdEtleSYmKGk9dyhpKS5tdWx0aXBseUJ5KDMpKSxuLnBhbkJ5KGkpLG4ub3B0aW9ucy5tYXhCb3VuZHMmJm4ucGFuSW5zaWRlQm91bmRzKG4ub3B0aW9ucy5tYXhCb3VuZHMpfWVsc2UgaWYoZSBpbiB0aGlzLl96b29tS2V5cyluLnNldFpvb20obi5nZXRab29tKCkrKHQuc2hpZnRLZXk/MzoxKSp0aGlzLl96b29tS2V5c1tlXSk7ZWxzZXtpZigyNyE9PWV8fCFuLl9wb3B1cHx8IW4uX3BvcHVwLm9wdGlvbnMuY2xvc2VPbkVzY2FwZUtleSlyZXR1cm47bi5jbG9zZVBvcHVwKCl9USh0KX19fSk7TGUuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJrZXlib2FyZCIsVG4pLExlLm1lcmdlT3B0aW9ucyh7c2Nyb2xsV2hlZWxab29tOiEwLHdoZWVsRGVib3VuY2VUaW1lOjQwLHdoZWVsUHhQZXJab29tTGV2ZWw6NjB9KTt2YXIgem49WmUuZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe1YodGhpcy5fbWFwLl9jb250YWluZXIsIm1vdXNld2hlZWwiLHRoaXMuX29uV2hlZWxTY3JvbGwsdGhpcyksdGhpcy5fZGVsdGE9MH0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXtxKHRoaXMuX21hcC5fY29udGFpbmVyLCJtb3VzZXdoZWVsIix0aGlzLl9vbldoZWVsU2Nyb2xsLHRoaXMpfSxfb25XaGVlbFNjcm9sbDpmdW5jdGlvbih0KXt2YXIgaT1pdCh0KSxuPXRoaXMuX21hcC5vcHRpb25zLndoZWVsRGVib3VuY2VUaW1lO3RoaXMuX2RlbHRhKz1pLHRoaXMuX2xhc3RNb3VzZVBvcz10aGlzLl9tYXAubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCksdGhpcy5fc3RhcnRUaW1lfHwodGhpcy5fc3RhcnRUaW1lPStuZXcgRGF0ZSk7dmFyIG89TWF0aC5tYXgobi0oK25ldyBEYXRlLXRoaXMuX3N0YXJ0VGltZSksMCk7Y2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKSx0aGlzLl90aW1lcj1zZXRUaW1lb3V0KGUodGhpcy5fcGVyZm9ybVpvb20sdGhpcyksbyksUSh0KX0sX3BlcmZvcm1ab29tOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGk9dC5nZXRab29tKCksZT10aGlzLl9tYXAub3B0aW9ucy56b29tU25hcHx8MDt0Ll9zdG9wKCk7dmFyIG49dGhpcy5fZGVsdGEvKDQqdGhpcy5fbWFwLm9wdGlvbnMud2hlZWxQeFBlclpvb21MZXZlbCksbz00Kk1hdGgubG9nKDIvKDErTWF0aC5leHAoLU1hdGguYWJzKG4pKSkpL01hdGguTE4yLHM9ZT9NYXRoLmNlaWwoby9lKSplOm8scj10Ll9saW1pdFpvb20oaSsodGhpcy5fZGVsdGE+MD9zOi1zKSktaTt0aGlzLl9kZWx0YT0wLHRoaXMuX3N0YXJ0VGltZT1udWxsLHImJigiY2VudGVyIj09PXQub3B0aW9ucy5zY3JvbGxXaGVlbFpvb20/dC5zZXRab29tKGkrcik6dC5zZXRab29tQXJvdW5kKHRoaXMuX2xhc3RNb3VzZVBvcyxpK3IpKX19KTtMZS5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsInNjcm9sbFdoZWVsWm9vbSIsem4pLExlLm1lcmdlT3B0aW9ucyh7dGFwOiEwLHRhcFRvbGVyYW5jZToxNX0pO3ZhciBNbj1aZS5leHRlbmQoe2FkZEhvb2tzOmZ1bmN0aW9uKCl7Vih0aGlzLl9tYXAuX2NvbnRhaW5lciwidG91Y2hzdGFydCIsdGhpcy5fb25Eb3duLHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe3EodGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uRG93bix0aGlzKX0sX29uRG93bjpmdW5jdGlvbih0KXtpZih0LnRvdWNoZXMpe2lmKCQodCksdGhpcy5fZmlyZUNsaWNrPSEwLHQudG91Y2hlcy5sZW5ndGg+MSlyZXR1cm4gdGhpcy5fZmlyZUNsaWNrPSExLHZvaWQgY2xlYXJUaW1lb3V0KHRoaXMuX2hvbGRUaW1lb3V0KTt2YXIgaT10LnRvdWNoZXNbMF0sbj1pLnRhcmdldDt0aGlzLl9zdGFydFBvcz10aGlzLl9uZXdQb3M9bmV3IHgoaS5jbGllbnRYLGkuY2xpZW50WSksbi50YWdOYW1lJiYiYSI9PT1uLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmcHQobiwibGVhZmxldC1hY3RpdmUiKSx0aGlzLl9ob2xkVGltZW91dD1zZXRUaW1lb3V0KGUoZnVuY3Rpb24oKXt0aGlzLl9pc1RhcFZhbGlkKCkmJih0aGlzLl9maXJlQ2xpY2s9ITEsdGhpcy5fb25VcCgpLHRoaXMuX3NpbXVsYXRlRXZlbnQoImNvbnRleHRtZW51IixpKSl9LHRoaXMpLDFlMyksdGhpcy5fc2ltdWxhdGVFdmVudCgibW91c2Vkb3duIixpKSxWKGRvY3VtZW50LHt0b3VjaG1vdmU6dGhpcy5fb25Nb3ZlLHRvdWNoZW5kOnRoaXMuX29uVXB9LHRoaXMpfX0sX29uVXA6ZnVuY3Rpb24odCl7aWYoY2xlYXJUaW1lb3V0KHRoaXMuX2hvbGRUaW1lb3V0KSxxKGRvY3VtZW50LHt0b3VjaG1vdmU6dGhpcy5fb25Nb3ZlLHRvdWNoZW5kOnRoaXMuX29uVXB9LHRoaXMpLHRoaXMuX2ZpcmVDbGljayYmdCYmdC5jaGFuZ2VkVG91Y2hlcyl7dmFyIGk9dC5jaGFuZ2VkVG91Y2hlc1swXSxlPWkudGFyZ2V0O2UmJmUudGFnTmFtZSYmImEiPT09ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJm10KGUsImxlYWZsZXQtYWN0aXZlIiksdGhpcy5fc2ltdWxhdGVFdmVudCgibW91c2V1cCIsaSksdGhpcy5faXNUYXBWYWxpZCgpJiZ0aGlzLl9zaW11bGF0ZUV2ZW50KCJjbGljayIsaSl9fSxfaXNUYXBWYWxpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZXdQb3MuZGlzdGFuY2VUbyh0aGlzLl9zdGFydFBvcyk8PXRoaXMuX21hcC5vcHRpb25zLnRhcFRvbGVyYW5jZX0sX29uTW92ZTpmdW5jdGlvbih0KXt2YXIgaT10LnRvdWNoZXNbMF07dGhpcy5fbmV3UG9zPW5ldyB4KGkuY2xpZW50WCxpLmNsaWVudFkpLHRoaXMuX3NpbXVsYXRlRXZlbnQoIm1vdXNlbW92ZSIsaSl9LF9zaW11bGF0ZUV2ZW50OmZ1bmN0aW9uKHQsaSl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7ZS5fc2ltdWxhdGVkPSEwLGkudGFyZ2V0Ll9zaW11bGF0ZWRDbGljaz0hMCxlLmluaXRNb3VzZUV2ZW50KHQsITAsITAsd2luZG93LDEsaS5zY3JlZW5YLGkuc2NyZWVuWSxpLmNsaWVudFgsaS5jbGllbnRZLCExLCExLCExLCExLDAsbnVsbCksaS50YXJnZXQuZGlzcGF0Y2hFdmVudChlKX19KTtWaSYmIVVpJiZMZS5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsInRhcCIsTW4pLExlLm1lcmdlT3B0aW9ucyh7dG91Y2hab29tOlZpJiYhemksYm91bmNlQXRab29tTGltaXRzOiEwfSk7dmFyIENuPVplLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtwdCh0aGlzLl9tYXAuX2NvbnRhaW5lciwibGVhZmxldC10b3VjaC16b29tIiksVih0aGlzLl9tYXAuX2NvbnRhaW5lciwidG91Y2hzdGFydCIsdGhpcy5fb25Ub3VjaFN0YXJ0LHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe210KHRoaXMuX21hcC5fY29udGFpbmVyLCJsZWFmbGV0LXRvdWNoLXpvb20iKSxxKHRoaXMuX21hcC5fY29udGFpbmVyLCJ0b3VjaHN0YXJ0Iix0aGlzLl9vblRvdWNoU3RhcnQsdGhpcyl9LF9vblRvdWNoU3RhcnQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fbWFwO2lmKHQudG91Y2hlcyYmMj09PXQudG91Y2hlcy5sZW5ndGgmJiFpLl9hbmltYXRpbmdab29tJiYhdGhpcy5fem9vbWluZyl7dmFyIGU9aS5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0LnRvdWNoZXNbMF0pLG49aS5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0LnRvdWNoZXNbMV0pO3RoaXMuX2NlbnRlclBvaW50PWkuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKSx0aGlzLl9zdGFydExhdExuZz1pLmNvbnRhaW5lclBvaW50VG9MYXRMbmcodGhpcy5fY2VudGVyUG9pbnQpLCJjZW50ZXIiIT09aS5vcHRpb25zLnRvdWNoWm9vbSYmKHRoaXMuX3BpbmNoU3RhcnRMYXRMbmc9aS5jb250YWluZXJQb2ludFRvTGF0TG5nKGUuYWRkKG4pLl9kaXZpZGVCeSgyKSkpLHRoaXMuX3N0YXJ0RGlzdD1lLmRpc3RhbmNlVG8obiksdGhpcy5fc3RhcnRab29tPWkuZ2V0Wm9vbSgpLHRoaXMuX21vdmVkPSExLHRoaXMuX3pvb21pbmc9ITAsaS5fc3RvcCgpLFYoZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Ub3VjaE1vdmUsdGhpcyksVihkb2N1bWVudCwidG91Y2hlbmQiLHRoaXMuX29uVG91Y2hFbmQsdGhpcyksJCh0KX19LF9vblRvdWNoTW92ZTpmdW5jdGlvbih0KXtpZih0LnRvdWNoZXMmJjI9PT10LnRvdWNoZXMubGVuZ3RoJiZ0aGlzLl96b29taW5nKXt2YXIgaT10aGlzLl9tYXAsbj1pLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1swXSksbz1pLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1sxXSkscz1uLmRpc3RhbmNlVG8obykvdGhpcy5fc3RhcnREaXN0O2lmKHRoaXMuX3pvb209aS5nZXRTY2FsZVpvb20ocyx0aGlzLl9zdGFydFpvb20pLCFpLm9wdGlvbnMuYm91bmNlQXRab29tTGltaXRzJiYodGhpcy5fem9vbTxpLmdldE1pblpvb20oKSYmczwxfHx0aGlzLl96b29tPmkuZ2V0TWF4Wm9vbSgpJiZzPjEpJiYodGhpcy5fem9vbT1pLl9saW1pdFpvb20odGhpcy5fem9vbSkpLCJjZW50ZXIiPT09aS5vcHRpb25zLnRvdWNoWm9vbSl7aWYodGhpcy5fY2VudGVyPXRoaXMuX3N0YXJ0TGF0TG5nLDE9PT1zKXJldHVybn1lbHNle3ZhciByPW4uX2FkZChvKS5fZGl2aWRlQnkoMikuX3N1YnRyYWN0KHRoaXMuX2NlbnRlclBvaW50KTtpZigxPT09cyYmMD09PXIueCYmMD09PXIueSlyZXR1cm47dGhpcy5fY2VudGVyPWkudW5wcm9qZWN0KGkucHJvamVjdCh0aGlzLl9waW5jaFN0YXJ0TGF0TG5nLHRoaXMuX3pvb20pLnN1YnRyYWN0KHIpLHRoaXMuX3pvb20pfXRoaXMuX21vdmVkfHwoaS5fbW92ZVN0YXJ0KCEwLCExKSx0aGlzLl9tb3ZlZD0hMCksZyh0aGlzLl9hbmltUmVxdWVzdCk7dmFyIGE9ZShpLl9tb3ZlLGksdGhpcy5fY2VudGVyLHRoaXMuX3pvb20se3BpbmNoOiEwLHJvdW5kOiExfSk7dGhpcy5fYW5pbVJlcXVlc3Q9ZihhLHRoaXMsITApLCQodCl9fSxfb25Ub3VjaEVuZDpmdW5jdGlvbigpe3RoaXMuX21vdmVkJiZ0aGlzLl96b29taW5nPyh0aGlzLl96b29taW5nPSExLGcodGhpcy5fYW5pbVJlcXVlc3QpLHEoZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Ub3VjaE1vdmUpLHEoZG9jdW1lbnQsInRvdWNoZW5kIix0aGlzLl9vblRvdWNoRW5kKSx0aGlzLl9tYXAub3B0aW9ucy56b29tQW5pbWF0aW9uP3RoaXMuX21hcC5fYW5pbWF0ZVpvb20odGhpcy5fY2VudGVyLHRoaXMuX21hcC5fbGltaXRab29tKHRoaXMuX3pvb20pLCEwLHRoaXMuX21hcC5vcHRpb25zLnpvb21TbmFwKTp0aGlzLl9tYXAuX3Jlc2V0Vmlldyh0aGlzLl9jZW50ZXIsdGhpcy5fbWFwLl9saW1pdFpvb20odGhpcy5fem9vbSkpKTp0aGlzLl96b29taW5nPSExfX0pO0xlLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwidG91Y2hab29tIixDbiksTGUuQm94Wm9vbT1MbixMZS5Eb3VibGVDbGlja1pvb209UG4sTGUuRHJhZz1ibixMZS5LZXlib2FyZD1UbixMZS5TY3JvbGxXaGVlbFpvb209em4sTGUuVGFwPU1uLExlLlRvdWNoWm9vbT1Dbjt2YXIgWm49d2luZG93Lkw7d2luZG93Lkw9dCxPYmplY3QuZnJlZXplPSR0LHQudmVyc2lvbj0iMS4zLjErSEVBRC5iYTZmOTdmIix0Lm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93Lkw9Wm4sdGhpc30sdC5Db250cm9sPVBlLHQuY29udHJvbD1iZSx0LkJyb3dzZXI9JGksdC5FdmVudGVkPXVpLHQuTWl4aW49RWUsdC5VdGlsPWFpLHQuQ2xhc3M9dix0LkhhbmRsZXI9WmUsdC5leHRlbmQ9aSx0LmJpbmQ9ZSx0LnN0YW1wPW4sdC5zZXRPcHRpb25zPWwsdC5Eb21FdmVudD1kZSx0LkRvbVV0aWw9eGUsdC5Qb3NBbmltYXRpb249d2UsdC5EcmFnZ2FibGU9QmUsdC5MaW5lVXRpbD1PZSx0LlBvbHlVdGlsPVJlLHQuUG9pbnQ9eCx0LnBvaW50PXcsdC5Cb3VuZHM9UCx0LmJvdW5kcz1iLHQuVHJhbnNmb3JtYXRpb249Wix0LnRyYW5zZm9ybWF0aW9uPVMsdC5Qcm9qZWN0aW9uPWplLHQuTGF0TG5nPU0sdC5sYXRMbmc9Qyx0LkxhdExuZ0JvdW5kcz1ULHQubGF0TG5nQm91bmRzPXosdC5DUlM9Y2ksdC5HZW9KU09OPW5uLHQuZ2VvSlNPTj1LdCx0Lmdlb0pzb249c24sdC5MYXllcj1VZSx0LkxheWVyR3JvdXA9VmUsdC5sYXllckdyb3VwPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIG5ldyBWZSh0LGkpfSx0LkZlYXR1cmVHcm91cD1xZSx0LmZlYXR1cmVHcm91cD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHFlKHQpfSx0LkltYWdlT3ZlcmxheT1ybix0LmltYWdlT3ZlcmxheT1mdW5jdGlvbih0LGksZSl7cmV0dXJuIG5ldyBybih0LGksZSl9LHQuVmlkZW9PdmVybGF5PWFuLHQudmlkZW9PdmVybGF5PWZ1bmN0aW9uKHQsaSxlKXtyZXR1cm4gbmV3IGFuKHQsaSxlKX0sdC5EaXZPdmVybGF5PWhuLHQuUG9wdXA9dW4sdC5wb3B1cD1mdW5jdGlvbih0LGkpe3JldHVybiBuZXcgdW4odCxpKX0sdC5Ub29sdGlwPWxuLHQudG9vbHRpcD1mdW5jdGlvbih0LGkpe3JldHVybiBuZXcgbG4odCxpKX0sdC5JY29uPUdlLHQuaWNvbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEdlKHQpfSx0LkRpdkljb249Y24sdC5kaXZJY29uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgY24odCl9LHQuTWFya2VyPVhlLHQubWFya2VyPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIG5ldyBYZSh0LGkpfSx0LlRpbGVMYXllcj1kbix0LnRpbGVMYXllcj1ZdCx0LkdyaWRMYXllcj1fbix0LmdyaWRMYXllcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IF9uKHQpfSx0LlNWRz14bix0LnN2Zz1KdCx0LlJlbmRlcmVyPW1uLHQuQ2FudmFzPWZuLHQuY2FudmFzPVh0LHQuUGF0aD1KZSx0LkNpcmNsZU1hcmtlcj0kZSx0LmNpcmNsZU1hcmtlcj1mdW5jdGlvbih0LGkpe3JldHVybiBuZXcgJGUodCxpKX0sdC5DaXJjbGU9UWUsdC5jaXJjbGU9ZnVuY3Rpb24odCxpLGUpe3JldHVybiBuZXcgUWUodCxpLGUpfSx0LlBvbHlsaW5lPXRuLHQucG9seWxpbmU9ZnVuY3Rpb24odCxpKXtyZXR1cm4gbmV3IHRuKHQsaSl9LHQuUG9seWdvbj1lbix0LnBvbHlnb249ZnVuY3Rpb24odCxpKXtyZXR1cm4gbmV3IGVuKHQsaSl9LHQuUmVjdGFuZ2xlPXduLHQucmVjdGFuZ2xlPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIG5ldyB3bih0LGkpfSx0Lk1hcD1MZSx0Lm1hcD1mdW5jdGlvbih0LGkpe3JldHVybiBuZXcgTGUodCxpKX19KTs8L3NjcmlwdD4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KaW1nLmxlYWZsZXQtdGlsZSB7CnBhZGRpbmc6IDA7Cm1hcmdpbjogMDsKYm9yZGVyLXJhZGl1czogMDsKYm9yZGVyOiBub25lOwp9Ci5sZWFmbGV0IC5pbmZvIHsKcGFkZGluZzogNnB4IDhweDsKZm9udDogMTRweC8xNnB4IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CmJhY2tncm91bmQ6IHdoaXRlOwpiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuOCk7CmJveC1zaGFkb3c6IDAgMCAxNXB4IHJnYmEoMCwwLDAsMC4yKTsKYm9yZGVyLXJhZGl1czogNXB4Owp9Ci5sZWFmbGV0IC5sZWdlbmQgewpsaW5lLWhlaWdodDogMThweDsKY29sb3I6ICM1NTU7Cn0KLmxlYWZsZXQgLmxlZ2VuZCBzdmcgdGV4dCB7CmZpbGw6ICM1NTU7Cn0KLmxlYWZsZXQgLmxlZ2VuZCBzdmcgbGluZSB7CnN0cm9rZTogIzU1NTsKfQoubGVhZmxldCAubGVnZW5kIGkgewp3aWR0aDogMThweDsKaGVpZ2h0OiAxOHB4OwptYXJnaW4tcmlnaHQ6IDRweDsKb3BhY2l0eTogMC43OwpkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CnZlcnRpY2FsLWFsaWduOiB0b3A7Cgp6b29tOiAxOwoqZGlzcGxheTogaW5saW5lOwp9Cjwvc3R5bGU+CjxzY3JpcHQ+IWZ1bmN0aW9uKHQscyl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1zKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUocyk6dC5wcm9qND1zKCl9KHRoaXMsZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gayh0LHMpe2lmKHRbc10pcmV0dXJuIHRbc107Zm9yKHZhciBpLGE9T2JqZWN0LmtleXModCksaD1zLnRvTG93ZXJDYXNlKCkucmVwbGFjZShILCIiKSxlPS0xOysrZTxhLmxlbmd0aDspaWYoKGk9YVtlXSkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKEgsIiIpPT09aClyZXR1cm4gdFtpXX1mdW5jdGlvbiBlKHQpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZyIpO3RoaXMudGV4dD10LnRyaW0oKSx0aGlzLmxldmVsPTAsdGhpcy5wbGFjZT0wLHRoaXMucm9vdD1udWxsLHRoaXMuc3RhY2s9W10sdGhpcy5jdXJyZW50T2JqZWN0PW51bGwsdGhpcy5zdGF0ZT1LfWZ1bmN0aW9uIGgodCxzLGkpe0FycmF5LmlzQXJyYXkocykmJihpLnVuc2hpZnQocykscz1udWxsKTt2YXIgYT1zP3t9OnQsaD1pLnJlZHVjZShmdW5jdGlvbih0LHMpe3JldHVybiBuKHMsdCksdH0sYSk7cyYmKHRbc109aCl9ZnVuY3Rpb24gbih0LHMpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLGE9dC5zaGlmdCgpO2lmKCJQQVJBTUVURVIiPT09YSYmKGE9dC5zaGlmdCgpKSwxPT09dC5sZW5ndGgpcmV0dXJuIEFycmF5LmlzQXJyYXkodFswXSk/KHNbYV09e30sdm9pZCBuKHRbMF0sc1thXSkpOnZvaWQoc1thXT10WzBdKTtpZih0Lmxlbmd0aClpZigiVE9XR1M4NCIhPT1hKXtpZigiQVhJUyI9PT1hKXJldHVybiBhIGluIHN8fChzW2FdPVtdKSx2b2lkIHNbYV0ucHVzaCh0KTtzd2l0Y2goQXJyYXkuaXNBcnJheShhKXx8KHNbYV09e30pLGEpe2Nhc2UiVU5JVCI6Y2FzZSJQUklNRU0iOmNhc2UiVkVSVF9EQVRVTSI6cmV0dXJuIHNbYV09e25hbWU6dFswXS50b0xvd2VyQ2FzZSgpLGNvbnZlcnQ6dFsxXX0sdm9pZCgzPT09dC5sZW5ndGgmJm4odFsyXSxzW2FdKSk7Y2FzZSJTUEhFUk9JRCI6Y2FzZSJFTExJUFNPSUQiOnJldHVybiBzW2FdPXtuYW1lOnRbMF0sYTp0WzFdLHJmOnRbMl19LHZvaWQoND09PXQubGVuZ3RoJiZuKHRbM10sc1thXSkpO2Nhc2UiUFJPSkVDVEVEQ1JTIjpjYXNlIlBST0pDUlMiOmNhc2UiR0VPR0NTIjpjYXNlIkdFT0NDUyI6Y2FzZSJQUk9KQ1MiOmNhc2UiTE9DQUxfQ1MiOmNhc2UiR0VPRENSUyI6Y2FzZSJHRU9ERVRJQ0NSUyI6Y2FzZSJHRU9ERVRJQ0RBVFVNIjpjYXNlIkVEQVRVTSI6Y2FzZSJFTkdJTkVFUklOR0RBVFVNIjpjYXNlIlZFUlRfQ1MiOmNhc2UiVkVSVENSUyI6Y2FzZSJWRVJUSUNBTENSUyI6Y2FzZSJDT01QRF9DUyI6Y2FzZSJDT01QT1VORENSUyI6Y2FzZSJFTkdJTkVFUklOR0NSUyI6Y2FzZSJFTkdDUlMiOmNhc2UiRklUVEVEX0NTIjpjYXNlIkxPQ0FMX0RBVFVNIjpjYXNlIkRBVFVNIjpyZXR1cm4gdFswXT1bIm5hbWUiLHRbMF1dLHZvaWQgaChzLGEsdCk7ZGVmYXVsdDpmb3IoaT0tMTsrK2k8dC5sZW5ndGg7KWlmKCFBcnJheS5pc0FycmF5KHRbaV0pKXJldHVybiBuKHQsc1thXSk7cmV0dXJuIGgocyxhLHQpfX1lbHNlIHNbYV09dDtlbHNlIHNbYV09ITB9ZWxzZSBzW3RdPSEwfWZ1bmN0aW9uIHIodCl7cmV0dXJuIHQqaXR9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0KihlLnRvX21ldGVyfHwxKX1pZigiR0VPR0NTIj09PWUudHlwZT9lLnByb2pOYW1lPSJsb25nbGF0IjoiTE9DQUxfQ1MiPT09ZS50eXBlPyhlLnByb2pOYW1lPSJpZGVudGl0eSIsZS5sb2NhbD0hMCk6Im9iamVjdCI9PXR5cGVvZiBlLlBST0pFQ1RJT04/ZS5wcm9qTmFtZT1PYmplY3Qua2V5cyhlLlBST0pFQ1RJT04pWzBdOmUucHJvak5hbWU9ZS5QUk9KRUNUSU9OLGUuQVhJUyl7Zm9yKHZhciBzPSIiLGk9MCxhPWUuQVhJUy5sZW5ndGg7aTxhOysraSl7dmFyIGg9ZS5BWElTW2ldWzBdLnRvTG93ZXJDYXNlKCk7LTEhPT1oLmluZGV4T2YoIm5vcnRoIik/cys9Im4iOi0xIT09aC5pbmRleE9mKCJzb3V0aCIpP3MrPSJzIjotMSE9PWguaW5kZXhPZigiZWFzdCIpP3MrPSJlIjotMSE9PWguaW5kZXhPZigid2VzdCIpJiYocys9InciKX0yPT09cy5sZW5ndGgmJihzKz0idSIpLDM9PT1zLmxlbmd0aCYmKGUuYXhpcz1zKX1lLlVOSVQmJihlLnVuaXRzPWUuVU5JVC5uYW1lLnRvTG93ZXJDYXNlKCksIm1ldHJlIj09PWUudW5pdHMmJihlLnVuaXRzPSJtZXRlciIpLGUuVU5JVC5jb252ZXJ0JiYoIkdFT0dDUyI9PT1lLnR5cGU/ZS5EQVRVTSYmZS5EQVRVTS5TUEhFUk9JRCYmKGUudG9fbWV0ZXI9ZS5VTklULmNvbnZlcnQqZS5EQVRVTS5TUEhFUk9JRC5hKTplLnRvX21ldGVyPWUuVU5JVC5jb252ZXJ0KSk7dmFyIG49ZS5HRU9HQ1M7IkdFT0dDUyI9PT1lLnR5cGUmJihuPWUpLG4mJihuLkRBVFVNP2UuZGF0dW1Db2RlPW4uREFUVU0ubmFtZS50b0xvd2VyQ2FzZSgpOmUuZGF0dW1Db2RlPW4ubmFtZS50b0xvd2VyQ2FzZSgpLCJkXyI9PT1lLmRhdHVtQ29kZS5zbGljZSgwLDIpJiYoZS5kYXR1bUNvZGU9ZS5kYXR1bUNvZGUuc2xpY2UoMikpLCJuZXdfemVhbGFuZF9nZW9kZXRpY19kYXR1bV8xOTQ5IiE9PWUuZGF0dW1Db2RlJiYibmV3X3plYWxhbmRfMTk0OSIhPT1lLmRhdHVtQ29kZXx8KGUuZGF0dW1Db2RlPSJuemdkNDkiKSwid2dzXzE5ODQiIT09ZS5kYXR1bUNvZGUmJiJ3b3JsZF9nZW9kZXRpY19zeXN0ZW1fMTk4NCIhPT1lLmRhdHVtQ29kZXx8KCJNZXJjYXRvcl9BdXhpbGlhcnlfU3BoZXJlIj09PWUuUFJPSkVDVElPTiYmKGUuc3BoZXJlPSEwKSxlLmRhdHVtQ29kZT0id2dzODQiKSwiX2ZlcnJvIj09PWUuZGF0dW1Db2RlLnNsaWNlKC02KSYmKGUuZGF0dW1Db2RlPWUuZGF0dW1Db2RlLnNsaWNlKDAsLTYpKSwiX2pha2FydGEiPT09ZS5kYXR1bUNvZGUuc2xpY2UoLTgpJiYoZS5kYXR1bUNvZGU9ZS5kYXR1bUNvZGUuc2xpY2UoMCwtOCkpLH5lLmRhdHVtQ29kZS5pbmRleE9mKCJiZWxnZSIpJiYoZS5kYXR1bUNvZGU9InJuYjcyIiksbi5EQVRVTSYmbi5EQVRVTS5TUEhFUk9JRCYmKGUuZWxscHM9bi5EQVRVTS5TUEhFUk9JRC5uYW1lLnJlcGxhY2UoIl8xOSIsIiIpLnJlcGxhY2UoL1tDY11sYXJrZVxfMTgvLCJjbHJrIiksImludGVybmF0aW9uYWwiPT09ZS5lbGxwcy50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsMTMpJiYoZS5lbGxwcz0iaW50bCIpLGUuYT1uLkRBVFVNLlNQSEVST0lELmEsZS5yZj1wYXJzZUZsb2F0KG4uREFUVU0uU1BIRVJPSUQucmYsMTApKSxuLkRBVFVNJiZuLkRBVFVNLlRPV0dTODQmJihlLmRhdHVtX3BhcmFtcz1uLkRBVFVNLlRPV0dTODQpLH5lLmRhdHVtQ29kZS5pbmRleE9mKCJvc2diXzE5MzYiKSYmKGUuZGF0dW1Db2RlPSJvc2diMzYiKSx+ZS5kYXR1bUNvZGUuaW5kZXhPZigib3NuaV8xOTUyIikmJihlLmRhdHVtQ29kZT0ib3NuaTUyIiksKH5lLmRhdHVtQ29kZS5pbmRleE9mKCJ0bTY1Iil8fH5lLmRhdHVtQ29kZS5pbmRleE9mKCJnZW9kZXRpY19kYXR1bV9vZl8xOTY1IikpJiYoZS5kYXR1bUNvZGU9ImlyZTY1IiksImNoMTkwMysiPT09ZS5kYXR1bUNvZGUmJihlLmRhdHVtQ29kZT0iY2gxOTAzIiksfmUuZGF0dW1Db2RlLmluZGV4T2YoImlzcmFlbCIpJiYoZS5kYXR1bUNvZGU9ImlzcjkzIikpLGUuYiYmIWlzRmluaXRlKGUuYikmJihlLmI9ZS5hKSxbWyJzdGFuZGFyZF9wYXJhbGxlbF8xIiwiU3RhbmRhcmRfUGFyYWxsZWxfMSJdLFsic3RhbmRhcmRfcGFyYWxsZWxfMiIsIlN0YW5kYXJkX1BhcmFsbGVsXzIiXSxbImZhbHNlX2Vhc3RpbmciLCJGYWxzZV9FYXN0aW5nIl0sWyJmYWxzZV9ub3J0aGluZyIsIkZhbHNlX05vcnRoaW5nIl0sWyJjZW50cmFsX21lcmlkaWFuIiwiQ2VudHJhbF9NZXJpZGlhbiJdLFsibGF0aXR1ZGVfb2Zfb3JpZ2luIiwiTGF0aXR1ZGVfT2ZfT3JpZ2luIl0sWyJsYXRpdHVkZV9vZl9vcmlnaW4iLCJDZW50cmFsX1BhcmFsbGVsIl0sWyJzY2FsZV9mYWN0b3IiLCJTY2FsZV9GYWN0b3IiXSxbImswIiwic2NhbGVfZmFjdG9yIl0sWyJsYXRpdHVkZV9vZl9jZW50ZXIiLCJMYXRpdHVkZV9PZl9DZW50ZXIiXSxbImxhdGl0dWRlX29mX2NlbnRlciIsIkxhdGl0dWRlX29mX2NlbnRlciJdLFsibGF0MCIsImxhdGl0dWRlX29mX2NlbnRlciIscl0sWyJsb25naXR1ZGVfb2ZfY2VudGVyIiwiTG9uZ2l0dWRlX09mX0NlbnRlciJdLFsibG9uZ2l0dWRlX29mX2NlbnRlciIsIkxvbmdpdHVkZV9vZl9jZW50ZXIiXSxbImxvbmdjIiwibG9uZ2l0dWRlX29mX2NlbnRlciIscl0sWyJ4MCIsImZhbHNlX2Vhc3RpbmciLHRdLFsieTAiLCJmYWxzZV9ub3J0aGluZyIsdF0sWyJsb25nMCIsImNlbnRyYWxfbWVyaWRpYW4iLHJdLFsibGF0MCIsImxhdGl0dWRlX29mX29yaWdpbiIscl0sWyJsYXQwIiwic3RhbmRhcmRfcGFyYWxsZWxfMSIscl0sWyJsYXQxIiwic3RhbmRhcmRfcGFyYWxsZWxfMSIscl0sWyJsYXQyIiwic3RhbmRhcmRfcGFyYWxsZWxfMiIscl0sWyJhemltdXRoIiwiQXppbXV0aCJdLFsiYWxwaGEiLCJhemltdXRoIixyXSxbInNyc0NvZGUiLCJuYW1lIl1dLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHM9ZSxhPShpPXQpWzBdLGg9aVsxXSx2b2lkKCEoYSBpbiBzKSYmaCBpbiBzJiYoc1thXT1zW2hdLDM9PT1pLmxlbmd0aCYmKHNbYV09aVsyXShzW2FdKSkpKTt2YXIgcyxpLGEsaH0pLGUubG9uZzB8fCFlLmxvbmdjfHwiQWxiZXJzX0NvbmljX0VxdWFsX0FyZWEiIT09ZS5wcm9qTmFtZSYmIkxhbWJlcnRfQXppbXV0aGFsX0VxdWFsX0FyZWEiIT09ZS5wcm9qTmFtZXx8KGUubG9uZzA9ZS5sb25nYyksZS5sYXRfdHN8fCFlLmxhdDF8fCJTdGVyZW9ncmFwaGljX1NvdXRoX1BvbGUiIT09ZS5wcm9qTmFtZSYmIlBvbGFyIFN0ZXJlb2dyYXBoaWMgKHZhcmlhbnQgQikiIT09ZS5wcm9qTmFtZXx8KGUubGF0MD1yKDA8ZS5sYXQxPzkwOi05MCksZS5sYXRfdHM9ZS5sYXQxKX1mdW5jdGlvbiBsKHQpe3ZhciBzPXRoaXM7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBpPWFyZ3VtZW50c1sxXTsic3RyaW5nIj09dHlwZW9mIGk/IisiPT09aS5jaGFyQXQoMCk/bFt0XT1KKGFyZ3VtZW50c1sxXSk6bFt0XT1hdChhcmd1bWVudHNbMV0pOmxbdF09aX1lbHNlIGlmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0Lm1hcChmdW5jdGlvbih0KXtBcnJheS5pc0FycmF5KHQpP2wuYXBwbHkocyx0KTpsKHQpfSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZih0IGluIGwpcmV0dXJuIGxbdF19ZWxzZSJFUFNHImluIHQ/bFsiRVBTRzoiK3QuRVBTR109dDoiRVNSSSJpbiB0P2xbIkVTUkk6Iit0LkVTUkldPXQ6IklBVTIwMDAiaW4gdD9sWyJJQVUyMDAwOiIrdC5JQVUyMDAwXT10OmNvbnNvbGUubG9nKHQpO3JldHVybn19ZnVuY3Rpb24gRSh0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIHQ7aWYodCBpbiBsKXJldHVybiBsW3RdO2lmKGE9dCxsdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybi0xPGEuaW5kZXhPZih0KX0pKXt2YXIgcz1hdCh0KTtpZihmdW5jdGlvbih0KXt2YXIgcz1rKHQsImF1dGhvcml0eSIpO2lmKHMpe3ZhciBpPWsocywiZXBzZyIpO3JldHVybiBpJiYtMTxNdC5pbmRleE9mKGkpfX0ocykpcmV0dXJuIGxbIkVQU0c6Mzg1NyJdO3ZhciBpPWZ1bmN0aW9uKHQpe3ZhciBzPWsodCwiZXh0ZW5zaW9uIik7aWYocylyZXR1cm4gayhzLCJwcm9qNCIpfShzKTtyZXR1cm4gaT9KKGkpOnN9dmFyIGE7cmV0dXJuIisiPT09dFswXT9KKHQpOnZvaWQgMH1mdW5jdGlvbiB0KHQpe3JldHVybiB0fWZ1bmN0aW9uIHModCxzKXt2YXIgaT1tdC5sZW5ndGg7cmV0dXJuIHQubmFtZXM/KChtdFtpXT10KS5uYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Z0W3QudG9Mb3dlckNhc2UoKV09aX0pLHRoaXMpOihjb25zb2xlLmxvZyhzKSwhMCl9ZnVuY3Rpb24gcSh0LHMpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHEpKXJldHVybiBuZXcgcSh0KTtzPXN8fGZ1bmN0aW9uKHQpe2lmKHQpdGhyb3cgdH07dmFyIGksYSxoLGUsbixyLG8sbCxNLGMsdSxmLG0scCxkLHksXyx4LGcsYix2LHcsQyxQLFMsTj1FKHQpOyJvYmplY3QiPT10eXBlb2YgTiYmKGk9cS5wcm9qZWN0aW9ucy5nZXQoTi5wcm9qTmFtZSkpPyghTi5kYXR1bUNvZGV8fCJub25lIj09PU4uZGF0dW1Db2RlfHwoYT1rKF90LE4uZGF0dW1Db2RlKSkmJihOLmRhdHVtX3BhcmFtcz1hLnRvd2dzODQ/YS50b3dnczg0LnNwbGl0KCIsIik6bnVsbCxOLmVsbHBzPWEuZWxsaXBzZSxOLmRhdHVtTmFtZT1hLmRhdHVtTmFtZT9hLmRhdHVtTmFtZTpOLmRhdHVtQ29kZSksTi5rMD1OLmswfHwxLE4uYXhpcz1OLmF4aXN8fCJlbnUiLE4uZWxscHM9Ti5lbGxwc3x8Indnczg0IixiPU4uYSx2PU4uYix3PU4ucmYsQz1OLmVsbHBzLFA9Ti5zcGhlcmUsYnx8KGI9KFM9KFM9ayhkdCxDKSl8fHl0KS5hLHY9Uy5iLHc9Uy5yZiksdyYmIXYmJih2PSgxLTEvdykqYiksKDA9PT13fHxNYXRoLmFicyhiLXYpPEQpJiYoUD0hMCx2PWIpLG09KGg9e2E6YixiOnYscmY6dyxzcGhlcmU6UH0pLmEscD1oLmIsZD1OLlJfQSx4PSgoeT1tKm0pLShfPXAqcCkpL3ksZz0wLGQ/KHk9KG0qPTEteCooUit4KihMK3gqVCkpKSptLHg9MCk6Zz1NYXRoLnNxcnQoeCksZT17ZXM6eCxlOmcsZXAyOih5LV8pL199LG49Ti5kYXR1bXx8KHI9Ti5kYXR1bUNvZGUsbz1OLmRhdHVtX3BhcmFtcyxsPWguYSxNPWguYixjPWUuZXMsdT1lLmVwMiwoZj17fSkuZGF0dW1fdHlwZT12b2lkIDA9PT1yfHwibm9uZSI9PT1yP0c6QSxvJiYoZi5kYXR1bV9wYXJhbXM9by5tYXAocGFyc2VGbG9hdCksMD09PWYuZGF0dW1fcGFyYW1zWzBdJiYwPT09Zi5kYXR1bV9wYXJhbXNbMV0mJjA9PT1mLmRhdHVtX3BhcmFtc1syXXx8KGYuZGF0dW1fdHlwZT1JKSwzPGYuZGF0dW1fcGFyYW1zLmxlbmd0aCYmKDA9PT1mLmRhdHVtX3BhcmFtc1szXSYmMD09PWYuZGF0dW1fcGFyYW1zWzRdJiYwPT09Zi5kYXR1bV9wYXJhbXNbNV0mJjA9PT1mLmRhdHVtX3BhcmFtc1s2XXx8KGYuZGF0dW1fdHlwZT1PLGYuZGF0dW1fcGFyYW1zWzNdKj1qLGYuZGF0dW1fcGFyYW1zWzRdKj1qLGYuZGF0dW1fcGFyYW1zWzVdKj1qLGYuZGF0dW1fcGFyYW1zWzZdPWYuZGF0dW1fcGFyYW1zWzZdLzFlNisxKSkpLGYuYT1sLGYuYj1NLGYuZXM9YyxmLmVwMj11LGYpLGN0KHRoaXMsTiksY3QodGhpcyxpKSx0aGlzLmE9aC5hLHRoaXMuYj1oLmIsdGhpcy5yZj1oLnJmLHRoaXMuc3BoZXJlPWguc3BoZXJlLHRoaXMuZXM9ZS5lcyx0aGlzLmU9ZS5lLHRoaXMuZXAyPWUuZXAyLHRoaXMuZGF0dW09bix0aGlzLmluaXQoKSxzKG51bGwsdGhpcykpOnModCl9ZnVuY3Rpb24gTSh0LHMsaSl7dmFyIGEsaCxlLG4scj10Lngsbz10LnksbD10Lno/dC56OjA7aWYobzwteiYmLTEuMDAxKno8bylvPS16O2Vsc2UgaWYoejxvJiZvPDEuMDAxKnopbz16O2Vsc2V7aWYobzwteilyZXR1cm57eDotMS8wLHk6LTEvMCx6OnQuen07aWYoejxvKXJldHVybnt4OjEvMCx5OjEvMCx6OnQuen19cmV0dXJuIHI+TWF0aC5QSSYmKHItPTIqTWF0aC5QSSksaD1NYXRoLnNpbihvKSxuPU1hdGguY29zKG8pLGU9aCpoLHt4OigoYT1pL01hdGguc3FydCgxLXMqZSkpK2wpKm4qTWF0aC5jb3MocikseTooYStsKSpuKk1hdGguc2luKHIpLHo6KGEqKDEtcykrbCkqaH19ZnVuY3Rpb24gYyh0LHMsaSxhKXt2YXIgaCxlLG4scixvLGwsTSxjLHUsZixtLHAsZCx5PXQueCxfPXQueSx4PXQuej90Lno6MCxnPU1hdGguc3FydCh5KnkrXypfKSxiPU1hdGguc3FydCh5KnkrXypfK3gqeCk7aWYoZy9pPDFlLTEyKXtpZihwPTAsYi9pPDFlLTEyKXJldHVybiBkPS1hLHt4OnQueCx5OnQueSx6OnQuen19ZWxzZSBwPU1hdGguYXRhbjIoXyx5KTtmb3IoaD14L2IsbD0oZT1nL2IpKigxLXMpKihuPTEvTWF0aC5zcXJ0KDEtcyooMi1zKSplKmUpKSxNPWgqbixtPTA7bSsrLHI9cyoobz1pL01hdGguc3FydCgxLXMqTSpNKSkvKG8rKGQ9ZypsK3gqTS1vKigxLXMqTSpNKSkpLGY9KHU9aCoobj0xL01hdGguc3FydCgxLXIqKDItcikqZSplKSkpKmwtKGM9ZSooMS1yKSpuKSpNLGw9YyxNPXUsMWUtMjQ8ZipmJiZtPDMwOyk7cmV0dXJue3g6cCx5Ok1hdGguYXRhbih1L01hdGguYWJzKGMpKSx6OmR9fWZ1bmN0aW9uIHUodCl7cmV0dXJuIHQ9PT1JfHx0PT09T31mdW5jdGlvbiBpKHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBOdW1iZXIuaXNGaW5pdGUpe2lmKE51bWJlci5pc0Zpbml0ZSh0KSlyZXR1cm47dGhyb3cgbmV3IFR5cGVFcnJvcigiY29vcmRpbmF0ZXMgbXVzdCBiZSBmaW5pdGUgbnVtYmVycyIpfWlmKCJudW1iZXIiIT10eXBlb2YgdHx8dCE9dHx8IWlzRmluaXRlKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImNvb3JkaW5hdGVzIG11c3QgYmUgZmluaXRlIG51bWJlcnMiKX1mdW5jdGlvbiBmKHQscyxpKXt2YXIgYSxoLGU7aWYoQXJyYXkuaXNBcnJheShpKSYmKGk9YnQoaSkpLHZ0KGkpLHQuZGF0dW0mJnMuZGF0dW0mJihlPXMsKChoPXQpLmRhdHVtLmRhdHVtX3R5cGU9PT1JfHxoLmRhdHVtLmRhdHVtX3R5cGU9PT1PKSYmIldHUzg0IiE9PWUuZGF0dW1Db2RlfHwoZS5kYXR1bS5kYXR1bV90eXBlPT09SXx8ZS5kYXR1bS5kYXR1bV90eXBlPT09TykmJiJXR1M4NCIhPT1oLmRhdHVtQ29kZSkmJihpPWYodCxhPW5ldyBxKCJXR1M4NCIpLGkpLHQ9YSksImVudSIhPT10LmF4aXMmJihpPWd0KHQsITEsaSkpLCJsb25nbGF0Ij09PXQucHJvak5hbWUpaT17eDppLngqTix5OmkueSpOLHo6aS56fHwwfTtlbHNlIGlmKHQudG9fbWV0ZXImJihpPXt4OmkueCp0LnRvX21ldGVyLHk6aS55KnQudG9fbWV0ZXIsejppLnp8fDB9KSwhKGk9dC5pbnZlcnNlKGkpKSlyZXR1cm47cmV0dXJuIHQuZnJvbV9ncmVlbndpY2gmJihpLngrPXQuZnJvbV9ncmVlbndpY2gpLGk9eHQodC5kYXR1bSxzLmRhdHVtLGkpLHMuZnJvbV9ncmVlbndpY2gmJihpPXt4OmkueC1zLmZyb21fZ3JlZW53aWNoLHk6aS55LHo6aS56fHwwfSksImxvbmdsYXQiPT09cy5wcm9qTmFtZT9pPXt4OmkueCpCLHk6aS55KkIsejppLnp8fDB9OihpPXMuZm9yd2FyZChpKSxzLnRvX21ldGVyJiYoaT17eDppLngvcy50b19tZXRlcix5OmkueS9zLnRvX21ldGVyLHo6aS56fHwwfSkpLCJlbnUiIT09cy5heGlzP2d0KHMsITAsaSk6aX1mdW5jdGlvbiBtKHMsaSxhKXt2YXIgdCxoLGU7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/KHQ9ZihzLGksYSl8fHt4Ok5hTix5Ok5hTn0sMjxhLmxlbmd0aD92b2lkIDAhPT1zLm5hbWUmJiJnZW9jZW50Ij09PXMubmFtZXx8dm9pZCAwIT09aS5uYW1lJiYiZ2VvY2VudCI9PT1pLm5hbWU/Im51bWJlciI9PXR5cGVvZiB0Lno/W3QueCx0LnksdC56XS5jb25jYXQoYS5zcGxpY2UoMykpOlt0LngsdC55LGFbMl1dLmNvbmNhdChhLnNwbGljZSgzKSk6W3QueCx0LnldLmNvbmNhdChhLnNwbGljZSgyKSk6W3QueCx0LnldKTooaD1mKHMsaSxhKSwyPT09KGU9T2JqZWN0LmtleXMoYSkpLmxlbmd0aHx8ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXMubmFtZSYmImdlb2NlbnQiPT09cy5uYW1lfHx2b2lkIDAhPT1pLm5hbWUmJiJnZW9jZW50Ij09PWkubmFtZSl7aWYoIngiPT09dHx8InkiPT09dHx8InoiPT09dClyZXR1cm59ZWxzZSBpZigieCI9PT10fHwieSI9PT10KXJldHVybjtoW3RdPWFbdF19KSxoKX1mdW5jdGlvbiBwKHQpe3JldHVybiB0IGluc3RhbmNlb2YgcT90OnQub1Byb2o/dC5vUHJvajpxKHQpfWZ1bmN0aW9uIGEocyxpLHQpe3M9cChzKTt2YXIgYSxoPSExO3JldHVybiB2b2lkIDA9PT1pPyhpPXMscz13dCxoPSEwKTp2b2lkIDA9PT1pLngmJiFBcnJheS5pc0FycmF5KGkpfHwodD1pLGk9cyxzPXd0LGg9ITApLGk9cChpKSx0P20ocyxpLHQpOihhPXtmb3J3YXJkOmZ1bmN0aW9uKHQpe3JldHVybiBtKHMsaSx0KX0saW52ZXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbShpLHMsdCl9fSxoJiYoYS5vUHJvaj1pKSxhKX1mdW5jdGlvbiBkKHQscyl7cmV0dXJuIHM9c3x8NSxpPWZ1bmN0aW9uKHQpe3ZhciBzLGksYSxoLGUsbixyPXQubGF0LG89dC5sb24sbD1fKHIpLE09XyhvKTtuPU1hdGguZmxvb3IoKG8rMTgwKS82KSsxLDE4MD09PW8mJihuPTYwKSw1Njw9ciYmcjw2NCYmMzw9byYmbzwxMiYmKG49MzIpLDcyPD1yJiZyPDg0JiYoMDw9byYmbzw5P249MzE6OTw9byYmbzwyMT9uPTMzOjIxPD1vJiZvPDMzP249MzU6MzM8PW8mJm88NDImJihuPTM3KSksZT1fKDYqKG4tMSktMTgwKzMpLHM9NjM3ODEzNy9NYXRoLnNxcnQoMS0uMDA2Njk0MzgqTWF0aC5zaW4obCkqTWF0aC5zaW4obCkpLGk9TWF0aC50YW4obCkqTWF0aC50YW4obCksYT0uMDA2NzM5NDk2NzUyMjY4NDUxKk1hdGguY29zKGwpKk1hdGguY29zKGwpO3ZhciBjPS45OTk2KnMqKChoPU1hdGguY29zKGwpKihNLWUpKSsoMS1pK2EpKmgqaCpoLzYrKDUtMTgqaStpKmkrNzIqYS0uMzkwODkwODExNjMxNTcwMTMpKmgqaCpoKmgqaC8xMjApKzVlNSx1PS45OTk2Kig2Mzc4MTM3KiguOTk4MzI0Mjk4NDUwMzI0MypsLS4wMDI1MTQ2MDcwNjQyMjgxNDQqTWF0aC5zaW4oMipsKSsyNjM5MDQ2NjAyMTI5OTgyZS0yMSpNYXRoLnNpbig0KmwpLTMuNDE4MDQ2MTAxNjk2ODU4ZS05Kk1hdGguc2luKDYqbCkpK3MqTWF0aC50YW4obCkqKGgqaC8yKyg1LWkrOSphKzQqYSphKSpoKmgqaCpoLzI0Kyg2MS01OCppK2kqaSs2MDAqYS0yLjIyNDAzMzkyODI0ODU4ODYpKmgqaCpoKmgqaCpoLzcyMCkpO3JldHVybiByPDAmJih1Kz0xZTcpLHtub3J0aGluZzpNYXRoLnJvdW5kKHUpLGVhc3Rpbmc6TWF0aC5yb3VuZChjKSx6b25lTnVtYmVyOm4sem9uZUxldHRlcjpmdW5jdGlvbih0KXt2YXIgcz0iWiI7cmV0dXJuIHQ8PTg0JiY3Mjw9dD9zPSJYIjp0PDcyJiY2NDw9dD9zPSJXIjp0PDY0JiY1Njw9dD9zPSJWIjp0PDU2JiY0ODw9dD9zPSJVIjp0PDQ4JiY0MDw9dD9zPSJUIjp0PDQwJiYzMjw9dD9zPSJTIjp0PDMyJiYyNDw9dD9zPSJSIjp0PDI0JiYxNjw9dD9zPSJRIjp0PDE2JiY4PD10P3M9IlAiOnQ8OCYmMDw9dD9zPSJOIjp0PDAmJi04PD10P3M9Ik0iOnQ8LTgmJi0xNjw9dD9zPSJMIjp0PC0xNiYmLTI0PD10P3M9IksiOnQ8LTI0JiYtMzI8PXQ/cz0iSiI6dDwtMzImJi00MDw9dD9zPSJIIjp0PC00MCYmLTQ4PD10P3M9IkciOnQ8LTQ4JiYtNTY8PXQ/cz0iRiI6dDwtNTYmJi02NDw9dD9zPSJFIjp0PC02NCYmLTcyPD10P3M9IkQiOnQ8LTcyJiYtODA8PXQmJihzPSJDIiksc30ocil9fSh7bGF0OnRbMV0sbG9uOnRbMF19KSxhPXMsaD0iMDAwMDAiK2kuZWFzdGluZyxlPSIwMDAwMCIraS5ub3J0aGluZyxpLnpvbmVOdW1iZXIraS56b25lTGV0dGVyK2Z1bmN0aW9uKHQscyxpKXt2YXIgYT1iKGkpO3JldHVybiBmdW5jdGlvbih0LHMsaSl7dmFyIGE9aS0xLGg9UHQuY2hhckNvZGVBdChhKSxlPVN0LmNoYXJDb2RlQXQoYSksbj1oK3QtMSxyPWUrcyxvPSExO3JldHVybiBJdDxuJiYobj1uLUl0K050LTEsbz0hMCksKG49PT1rdHx8aDxrdCYma3Q8bnx8KGt0PG58fGg8a3QpJiZvKSYmbisrLChuPT09RXR8fGg8RXQmJkV0PG58fChFdDxufHxoPEV0KSYmbykmJisrbj09PWt0JiZuKyssSXQ8biYmKG49bi1JdCtOdC0xKSxvPXF0PHImJihyPXItcXQrTnQtMSwhMCksKHI9PT1rdHx8ZTxrdCYma3Q8cnx8KGt0PHJ8fGU8a3QpJiZvKSYmcisrLChyPT09RXR8fGU8RXQmJkV0PHJ8fChFdDxyfHxlPEV0KSYmbykmJisrcj09PWt0JiZyKysscXQ8ciYmKHI9ci1xdCtOdC0xKSxTdHJpbmcuZnJvbUNoYXJDb2RlKG4pK1N0cmluZy5mcm9tQ2hhckNvZGUocil9KE1hdGguZmxvb3IodC8xZTUpLE1hdGguZmxvb3Iocy8xZTUpJTIwLGEpfShpLmVhc3RpbmcsaS5ub3J0aGluZyxpLnpvbmVOdW1iZXIpK2guc3Vic3RyKGgubGVuZ3RoLTUsYSkrZS5zdWJzdHIoZS5sZW5ndGgtNSxhKTt2YXIgaSxhLGgsZX1mdW5jdGlvbiB5KHQpe3ZhciBzPWcodih0LnRvVXBwZXJDYXNlKCkpKTtyZXR1cm4gcy5sYXQmJnMubG9uP1tzLmxvbixzLmxhdF06WyhzLmxlZnQrcy5yaWdodCkvMiwocy50b3Arcy5ib3R0b20pLzJdfWZ1bmN0aW9uIF8odCl7cmV0dXJuIHQqKE1hdGguUEkvMTgwKX1mdW5jdGlvbiB4KHQpe3JldHVybiB0L01hdGguUEkqMTgwfWZ1bmN0aW9uIGcodCl7dmFyIHM9dC5ub3J0aGluZyxpPXQuZWFzdGluZyxhPXQuem9uZUxldHRlcixoPXQuem9uZU51bWJlcjtpZihoPDB8fDYwPGgpcmV0dXJuIG51bGw7dmFyIGUsbixyLG8sbCxNLGMsdSxmPSgxLU1hdGguc3FydCguOTkzMzA1NjIpKS8oMStNYXRoLnNxcnQoLjk5MzMwNTYyKSksbT1pLTVlNSxwPXM7YTwiTiImJihwLT0xZTcpLE09NiooaC0xKS0xODArMyx1PShjPXAvLjk5OTYvNjM2NzQ0OS4xNDU5NDUwNTYpKygzKmYvMi0yNypmKmYqZi8zMikqTWF0aC5zaW4oMipjKSsoMjEqZipmLzE2LTU1KmYqZipmKmYvMzIpKk1hdGguc2luKDQqYykrMTUxKmYqZipmLzk2Kk1hdGguc2luKDYqYyksZT02Mzc4MTM3L01hdGguc3FydCgxLS4wMDY2OTQzOCpNYXRoLnNpbih1KSpNYXRoLnNpbih1KSksbj1NYXRoLnRhbih1KSpNYXRoLnRhbih1KSxyPS4wMDY3Mzk0OTY3NTIyNjg0NTEqTWF0aC5jb3ModSkqTWF0aC5jb3ModSksbz02MzM1NDM5LjMyNzIyOTk0L01hdGgucG93KDEtLjAwNjY5NDM4Kk1hdGguc2luKHUpKk1hdGguc2luKHUpLDEuNSksbD1tLyguOTk5NiplKTt2YXIgZCx5PXgoeT11LWUqTWF0aC50YW4odSkvbyoobCpsLzItKDUrMypuKzEwKnItNCpyKnItLjA2MDY1NTQ3MDc3MDQxNjA2KSpsKmwqbCpsLzI0Kyg2MSs5MCpuKzI5OCpyKzQ1Km4qbi0xLjY5ODM1MzE4MTU3MTY0OTctMypyKnIpKmwqbCpsKmwqbCpsLzcyMCkpLF89TSt4KF89KGwtKDErMipuK3IpKmwqbCpsLzYrKDUtMipyKzI4Km4tMypyKnIrLjA1MzkxNTk3NDAxODE0NzYxKzI0Km4qbikqbCpsKmwqbCpsLzEyMCkvTWF0aC5jb3ModSkpO3JldHVybiB0LmFjY3VyYWN5P3t0b3A6KGQ9Zyh7bm9ydGhpbmc6dC5ub3J0aGluZyt0LmFjY3VyYWN5LGVhc3Rpbmc6dC5lYXN0aW5nK3QuYWNjdXJhY3ksem9uZUxldHRlcjp0LnpvbmVMZXR0ZXIsem9uZU51bWJlcjp0LnpvbmVOdW1iZXJ9KSkubGF0LHJpZ2h0OmQubG9uLGJvdHRvbTp5LGxlZnQ6X306e2xhdDp5LGxvbjpffX1mdW5jdGlvbiBiKHQpe3ZhciBzPXQlQ3Q7cmV0dXJuIDA9PT1zJiYocz1DdCksc31mdW5jdGlvbiB2KHQpe2lmKHQmJjA9PT10Lmxlbmd0aCl0aHJvdyJNR1JTUG9pbnQgY292ZXJ0aW5nIGZyb20gbm90aGluZyI7Zm9yKHZhciBzLGk9dC5sZW5ndGgsYT1udWxsLGg9IiIsZT0wOyEvW0EtWl0vLnRlc3Qocz10LmNoYXJBdChlKSk7KXtpZigyPD1lKXRocm93Ik1HUlNQb2ludCBiYWQgY29udmVyc2lvbiBmcm9tOiAiK3Q7aCs9cyxlKyt9dmFyIG49cGFyc2VJbnQoaCwxMCk7aWYoMD09PWV8fGk8ZSszKXRocm93Ik1HUlNQb2ludCBiYWQgY29udmVyc2lvbiBmcm9tOiAiK3Q7dmFyIHI9dC5jaGFyQXQoZSsrKTtpZihyPD0iQSJ8fCJCIj09PXJ8fCJZIj09PXJ8fCJaIjw9cnx8IkkiPT09cnx8Ik8iPT09cil0aHJvdyJNR1JTUG9pbnQgem9uZSBsZXR0ZXIgIityKyIgbm90IGhhbmRsZWQ6ICIrdDthPXQuc3Vic3RyaW5nKGUsZSs9Mik7Zm9yKHZhciBvPWIobiksbD1mdW5jdGlvbih0LHMpe2Zvcih2YXIgaT1QdC5jaGFyQ29kZUF0KHMtMSksYT0xZTUsaD0hMTtpIT09dC5jaGFyQ29kZUF0KDApOyl7aWYoKytpPT09a3QmJmkrKyxpPT09RXQmJmkrKyxJdDxpKXtpZihoKXRocm93IkJhZCBjaGFyYWN0ZXI6ICIrdDtpPU50LGg9ITB9YSs9MWU1fXJldHVybiBhfShhLmNoYXJBdCgwKSxvKSxNPWZ1bmN0aW9uKHQscyl7aWYoIlYiPHQpdGhyb3ciTUdSU1BvaW50IGdpdmVuIGludmFsaWQgTm9ydGhpbmcgIit0O2Zvcih2YXIgaT1TdC5jaGFyQ29kZUF0KHMtMSksYT0wLGg9ITE7aSE9PXQuY2hhckNvZGVBdCgwKTspe2lmKCsraT09PWt0JiZpKyssaT09PUV0JiZpKysscXQ8aSl7aWYoaCl0aHJvdyJCYWQgY2hhcmFjdGVyOiAiK3Q7aT1OdCxoPSEwfWErPTFlNX1yZXR1cm4gYX0oYS5jaGFyQXQoMSksbyk7TTx3KHIpOylNKz0yZTY7dmFyIGM9aS1lO2lmKGMlMiE9MCl0aHJvdyJNR1JTUG9pbnQgaGFzIHRvIGhhdmUgYW4gZXZlbiBudW1iZXIgXG5vZiBkaWdpdHMgYWZ0ZXIgdGhlIHpvbmUgbGV0dGVyIGFuZCB0d28gMTAwa20gbGV0dGVycyAtIGZyb250IFxuaGFsZiBmb3IgZWFzdGluZyBtZXRlcnMsIHNlY29uZCBoYWxmIGZvciBcbm5vcnRoaW5nIG1ldGVycyIrdDt2YXIgdSxmLG0scD1jLzIsZD0wLHk9MDtyZXR1cm4gMDxwJiYodT0xZTUvTWF0aC5wb3coMTAscCksZj10LnN1YnN0cmluZyhlLGUrcCksZD1wYXJzZUZsb2F0KGYpKnUsbT10LnN1YnN0cmluZyhlK3ApLHk9cGFyc2VGbG9hdChtKSp1KSx7ZWFzdGluZzpkK2wsbm9ydGhpbmc6eStNLHpvbmVMZXR0ZXI6cix6b25lTnVtYmVyOm4sYWNjdXJhY3k6dX19ZnVuY3Rpb24gdyh0KXt2YXIgcztzd2l0Y2godCl7Y2FzZSJDIjpzPTExZTU7YnJlYWs7Y2FzZSJEIjpzPTJlNjticmVhaztjYXNlIkUiOnM9MjhlNTticmVhaztjYXNlIkYiOnM9MzdlNTticmVhaztjYXNlIkciOnM9NDZlNTticmVhaztjYXNlIkgiOnM9NTVlNTticmVhaztjYXNlIkoiOnM9NjRlNTticmVhaztjYXNlIksiOnM9NzNlNTticmVhaztjYXNlIkwiOnM9ODJlNTticmVhaztjYXNlIk0iOnM9OTFlNTticmVhaztjYXNlIk4iOnM9MDticmVhaztjYXNlIlAiOnM9OGU1O2JyZWFrO2Nhc2UiUSI6cz0xN2U1O2JyZWFrO2Nhc2UiUiI6cz0yNmU1O2JyZWFrO2Nhc2UiUyI6cz0zNWU1O2JyZWFrO2Nhc2UiVCI6cz00NGU1O2JyZWFrO2Nhc2UiVSI6cz01M2U1O2JyZWFrO2Nhc2UiViI6cz02MmU1O2JyZWFrO2Nhc2UiVyI6cz03ZTY7YnJlYWs7Y2FzZSJYIjpzPTc5ZTU7YnJlYWs7ZGVmYXVsdDpzPS0xfWlmKDA8PXMpcmV0dXJuIHM7dGhyb3ciSW52YWxpZCB6b25lIGxldHRlcjogIit0fWZ1bmN0aW9uIEModCxzLGkpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEMpKXJldHVybiBuZXcgQyh0LHMsaSk7dmFyIGE7QXJyYXkuaXNBcnJheSh0KT8odGhpcy54PXRbMF0sdGhpcy55PXRbMV0sdGhpcy56PXRbMl18fDApOiJvYmplY3QiPT10eXBlb2YgdD8odGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXMuej10Lnp8fDApOiJzdHJpbmciPT10eXBlb2YgdCYmdm9pZCAwPT09cz8oYT10LnNwbGl0KCIsIiksdGhpcy54PXBhcnNlRmxvYXQoYVswXSwxMCksdGhpcy55PXBhcnNlRmxvYXQoYVsxXSwxMCksdGhpcy56PXBhcnNlRmxvYXQoYVsyXSwxMCl8fDApOih0aGlzLng9dCx0aGlzLnk9cyx0aGlzLno9aXx8MCksY29uc29sZS53YXJuKCJwcm9qNC5Qb2ludCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAzLCB1c2UgcHJvajQudG9Qb2ludCIpfWZ1bmN0aW9uIFAodCxzLGksYSl7dmFyIGg7cmV0dXJuIHQ8RD8oYS52YWx1ZT1PcyxoPTApOihoPU1hdGguYXRhbjIocyxpKSxNYXRoLmFicyhoKTw9VT9hLnZhbHVlPU9zOlU8aCYmaDw9eitVPyhhLnZhbHVlPUFzLGgtPXopOnorVTxofHxoPD0tKHorVSk/KGEudmFsdWU9R3MsaD0wPD1oP2gtUTpoK1EpOihhLnZhbHVlPWpzLGgrPXopKSxofWZ1bmN0aW9uIFModCxzKXt2YXIgaT10K3M7cmV0dXJuIGk8LVE/aSs9RjorUTxpJiYoaS09RiksaX12YXIgST0xLE89MixBPTQsRz01LGo9NDg0ODEzNjgxMTA5NTM2ZS0yMCx6PU1hdGguUEkvMixSPS4xNjY2NjY2NjY2NjY2NjY2NixMPS4wNDcyMjIyMjIyMjIyMjIyMixUPS4wMjIxNTYwODQ2NTYwODQ2NTUsRD0xZS0xMCxOPS4wMTc0NTMyOTI1MTk5NDMyOTUsQj01Ny4yOTU3Nzk1MTMwODIzMixVPU1hdGguUEkvNCxGPTIqTWF0aC5QSSxRPTMuMTQxNTkyNjUzNTksVz17Z3JlZW53aWNoOjAsbGlzYm9uOi05LjEzMTkwNjExMTExMSxwYXJpczoyLjMzNzIyOTE2NjY2Nyxib2dvdGE6LTc0LjA4MDkxNjY2NjY2NyxtYWRyaWQ6LTMuNjg3OTM4ODg4ODg5LHJvbWU6MTIuNDUyMzMzMzMzMzMzLGJlcm46Ny40Mzk1ODMzMzMzMzMsamFrYXJ0YToxMDYuODA3NzE5NDQ0NDQ0LGZlcnJvOi0xNy42NjY2NjY2NjY2NjcsYnJ1c3NlbHM6NC4zNjc5NzUsc3RvY2tob2xtOjE4LjA1ODI3Nzc3Nzc3OCxhdGhlbnM6MjMuNzE2MzM3NSxvc2xvOjEwLjcyMjkxNjY2NjY2N30sWD17ZnQ6e3RvX21ldGVyOi4zMDQ4fSwidXMtZnQiOnt0b19tZXRlcjoxMjAwLzM5Mzd9fSxIPS9bXHNfXC1cL1woXCldL2csSj1mdW5jdGlvbih0KXt2YXIgcyxpLGEsaD17fSxlPXQuc3BsaXQoIisiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudHJpbSgpfSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkucmVkdWNlKGZ1bmN0aW9uKHQscyl7dmFyIGk9cy5zcGxpdCgiPSIpO3JldHVybiBpLnB1c2goITApLHRbaVswXS50b0xvd2VyQ2FzZSgpXT1pWzFdLHR9LHt9KSxuPXtwcm9qOiJwcm9qTmFtZSIsZGF0dW06ImRhdHVtQ29kZSIscmY6ZnVuY3Rpb24odCl7aC5yZj1wYXJzZUZsb2F0KHQpfSxsYXRfMDpmdW5jdGlvbih0KXtoLmxhdDA9dCpOfSxsYXRfMTpmdW5jdGlvbih0KXtoLmxhdDE9dCpOfSxsYXRfMjpmdW5jdGlvbih0KXtoLmxhdDI9dCpOfSxsYXRfdHM6ZnVuY3Rpb24odCl7aC5sYXRfdHM9dCpOfSxsb25fMDpmdW5jdGlvbih0KXtoLmxvbmcwPXQqTn0sbG9uXzE6ZnVuY3Rpb24odCl7aC5sb25nMT10Kk59LGxvbl8yOmZ1bmN0aW9uKHQpe2gubG9uZzI9dCpOfSxhbHBoYTpmdW5jdGlvbih0KXtoLmFscGhhPXBhcnNlRmxvYXQodCkqTn0sbG9uYzpmdW5jdGlvbih0KXtoLmxvbmdjPXQqTn0seF8wOmZ1bmN0aW9uKHQpe2gueDA9cGFyc2VGbG9hdCh0KX0seV8wOmZ1bmN0aW9uKHQpe2gueTA9cGFyc2VGbG9hdCh0KX0sa18wOmZ1bmN0aW9uKHQpe2guazA9cGFyc2VGbG9hdCh0KX0sazpmdW5jdGlvbih0KXtoLmswPXBhcnNlRmxvYXQodCl9LGE6ZnVuY3Rpb24odCl7aC5hPXBhcnNlRmxvYXQodCl9LGI6ZnVuY3Rpb24odCl7aC5iPXBhcnNlRmxvYXQodCl9LHJfYTpmdW5jdGlvbigpe2guUl9BPSEwfSx6b25lOmZ1bmN0aW9uKHQpe2guem9uZT1wYXJzZUludCh0LDEwKX0sc291dGg6ZnVuY3Rpb24oKXtoLnV0bVNvdXRoPSEwfSx0b3dnczg0OmZ1bmN0aW9uKHQpe2guZGF0dW1fcGFyYW1zPXQuc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KX0sdG9fbWV0ZXI6ZnVuY3Rpb24odCl7aC50b19tZXRlcj1wYXJzZUZsb2F0KHQpfSx1bml0czpmdW5jdGlvbih0KXtoLnVuaXRzPXQ7dmFyIHM9ayhYLHQpO3MmJihoLnRvX21ldGVyPXMudG9fbWV0ZXIpfSxmcm9tX2dyZWVud2ljaDpmdW5jdGlvbih0KXtoLmZyb21fZ3JlZW53aWNoPXQqTn0scG06ZnVuY3Rpb24odCl7dmFyIHM9ayhXLHQpO2guZnJvbV9ncmVlbndpY2g9KHN8fHBhcnNlRmxvYXQodCkpKk59LG5hZGdyaWRzOmZ1bmN0aW9uKHQpeyJAbnVsbCI9PT10P2guZGF0dW1Db2RlPSJub25lIjpoLm5hZGdyaWRzPXR9LGF4aXM6ZnVuY3Rpb24odCl7Mz09PXQubGVuZ3RoJiYtMSE9PSJld25zdWQiLmluZGV4T2YodC5zdWJzdHIoMCwxKSkmJi0xIT09ImV3bnN1ZCIuaW5kZXhPZih0LnN1YnN0cigxLDEpKSYmLTEhPT0iZXduc3VkIi5pbmRleE9mKHQuc3Vic3RyKDIsMSkpJiYoaC5heGlzPXQpfX07Zm9yKHMgaW4gZSlpPWVbc10scyBpbiBuPyJmdW5jdGlvbiI9PXR5cGVvZihhPW5bc10pP2EoaSk6aFthXT1pOmhbc109aTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGguZGF0dW1Db2RlJiYiV0dTODQiIT09aC5kYXR1bUNvZGUmJihoLmRhdHVtQ29kZT1oLmRhdHVtQ29kZS50b0xvd2VyQ2FzZSgpKSxofSxLPTEsVj0vXHMvLFo9L1tBLVphLXpdLyxZPS9bQS1aYS16ODRdLywkPS9bLFxdXS8sdHQ9L1tcZFwuRVwtXCtdLztlLnByb3RvdHlwZS5yZWFkQ2hhcmljdGVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50ZXh0W3RoaXMucGxhY2UrK107aWYoNCE9PXRoaXMuc3RhdGUpZm9yKDtWLnRlc3QodCk7KXtpZih0aGlzLnBsYWNlPj10aGlzLnRleHQubGVuZ3RoKXJldHVybjt0PXRoaXMudGV4dFt0aGlzLnBsYWNlKytdfXN3aXRjaCh0aGlzLnN0YXRlKXtjYXNlIEs6cmV0dXJuIHRoaXMubmV1dHJhbCh0KTtjYXNlIDI6cmV0dXJuIHRoaXMua2V5d29yZCh0KTtjYXNlIDQ6cmV0dXJuIHRoaXMucXVvdGVkKHQpO2Nhc2UgNTpyZXR1cm4gdGhpcy5hZnRlcnF1b3RlKHQpO2Nhc2UgMzpyZXR1cm4gdGhpcy5udW1iZXIodCk7Y2FzZS0xOnJldHVybn19LGUucHJvdG90eXBlLmFmdGVycXVvdGU9ZnVuY3Rpb24odCl7aWYoJyInPT09dClyZXR1cm4gdGhpcy53b3JkKz0nIicsdm9pZCh0aGlzLnN0YXRlPTQpO2lmKCQudGVzdCh0KSlyZXR1cm4gdGhpcy53b3JkPXRoaXMud29yZC50cmltKCksdm9pZCB0aGlzLmFmdGVySXRlbSh0KTt0aHJvdyBuZXcgRXJyb3IoImhhdm4ndCBoYW5kbGVkIFwiIit0KyciIGluIGFmdGVycXVvdGUgeWV0LCBpbmRleCAnK3RoaXMucGxhY2UpfSxlLnByb3RvdHlwZS5hZnRlckl0ZW09ZnVuY3Rpb24odCl7cmV0dXJuIiwiPT09dD8obnVsbCE9PXRoaXMud29yZCYmdGhpcy5jdXJyZW50T2JqZWN0LnB1c2godGhpcy53b3JkKSx0aGlzLndvcmQ9bnVsbCx2b2lkKHRoaXMuc3RhdGU9SykpOiJdIj09PXQ/KHRoaXMubGV2ZWwtLSxudWxsIT09dGhpcy53b3JkJiYodGhpcy5jdXJyZW50T2JqZWN0LnB1c2godGhpcy53b3JkKSx0aGlzLndvcmQ9bnVsbCksdGhpcy5zdGF0ZT1LLHRoaXMuY3VycmVudE9iamVjdD10aGlzLnN0YWNrLnBvcCgpLHZvaWQodGhpcy5jdXJyZW50T2JqZWN0fHwodGhpcy5zdGF0ZT0tMSkpKTp2b2lkIDB9LGUucHJvdG90eXBlLm51bWJlcj1mdW5jdGlvbih0KXtpZighdHQudGVzdCh0KSl7aWYoJC50ZXN0KHQpKXJldHVybiB0aGlzLndvcmQ9cGFyc2VGbG9hdCh0aGlzLndvcmQpLHZvaWQgdGhpcy5hZnRlckl0ZW0odCk7dGhyb3cgbmV3IEVycm9yKCJoYXZuJ3QgaGFuZGxlZCBcIiIrdCsnIiBpbiBudW1iZXIgeWV0LCBpbmRleCAnK3RoaXMucGxhY2UpfXRoaXMud29yZCs9dH0sZS5wcm90b3R5cGUucXVvdGVkPWZ1bmN0aW9uKHQpeyciJyE9PXQ/dGhpcy53b3JkKz10OnRoaXMuc3RhdGU9NX0sZS5wcm90b3R5cGUua2V5d29yZD1mdW5jdGlvbih0KXtpZihZLnRlc3QodCkpdGhpcy53b3JkKz10O2Vsc2V7aWYoIlsiPT09dCl7dmFyIHM9W107cmV0dXJuIHMucHVzaCh0aGlzLndvcmQpLHRoaXMubGV2ZWwrKyxudWxsPT09dGhpcy5yb290P3RoaXMucm9vdD1zOnRoaXMuY3VycmVudE9iamVjdC5wdXNoKHMpLHRoaXMuc3RhY2sucHVzaCh0aGlzLmN1cnJlbnRPYmplY3QpLHRoaXMuY3VycmVudE9iamVjdD1zLHZvaWQodGhpcy5zdGF0ZT1LKX1pZighJC50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaGF2bid0IGhhbmRsZWQgXCIiK3QrJyIgaW4ga2V5d29yZCB5ZXQsIGluZGV4ICcrdGhpcy5wbGFjZSk7dGhpcy5hZnRlckl0ZW0odCl9fSxlLnByb3RvdHlwZS5uZXV0cmFsPWZ1bmN0aW9uKHQpe2lmKFoudGVzdCh0KSlyZXR1cm4gdGhpcy53b3JkPXQsdm9pZCh0aGlzLnN0YXRlPTIpO2lmKCciJz09PXQpcmV0dXJuIHRoaXMud29yZD0iIix2b2lkKHRoaXMuc3RhdGU9NCk7aWYodHQudGVzdCh0KSlyZXR1cm4gdGhpcy53b3JkPXQsdm9pZCh0aGlzLnN0YXRlPTMpO2lmKCEkLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJoYXZuJ3QgaGFuZGxlZCBcIiIrdCsnIiBpbiBuZXV0cmFsIHlldCwgaW5kZXggJyt0aGlzLnBsYWNlKTt0aGlzLmFmdGVySXRlbSh0KX0sZS5wcm90b3R5cGUub3V0cHV0PWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLnBsYWNlPHRoaXMudGV4dC5sZW5ndGg7KXRoaXMucmVhZENoYXJpY3RlcigpO2lmKC0xPT09dGhpcy5zdGF0ZSlyZXR1cm4gdGhpcy5yb290O3Rocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIHBhcnNlIHN0cmluZyAiJyt0aGlzLnRleHQrJyIuIFN0YXRlIGlzICcrdGhpcy5zdGF0ZSl9O3ZhciBzdCxpdD0uMDE3NDUzMjkyNTE5OTQzMjk1LGF0PWZ1bmN0aW9uKHQpe3ZhciBzPW5ldyBlKHQpLm91dHB1dCgpLGk9cy5zaGlmdCgpLGE9cy5zaGlmdCgpO3MudW5zaGlmdChbIm5hbWUiLGFdKSxzLnVuc2hpZnQoWyJ0eXBlIixpXSk7dmFyIGg9e307cmV0dXJuIG4ocyxoKSxvKGgpLGh9OyhzdD1sKSgiRVBTRzo0MzI2IiwiK3RpdGxlPVdHUyA4NCAobG9uZy9sYXQpICtwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzg0ICtkYXR1bT1XR1M4NCArdW5pdHM9ZGVncmVlcyIpLHN0KCJFUFNHOjQyNjkiLCIrdGl0bGU9TkFEODMgKGxvbmcvbGF0KSArcHJvaj1sb25nbGF0ICthPTYzNzgxMzcuMCArYj02MzU2NzUyLjMxNDE0MDM2ICtlbGxwcz1HUlM4MCArZGF0dW09TkFEODMgK3VuaXRzPWRlZ3JlZXMiKSxzdCgiRVBTRzozODU3IiwiK3RpdGxlPVdHUyA4NCAvIFBzZXVkby1NZXJjYXRvciArcHJvaj1tZXJjICthPTYzNzgxMzcgK2I9NjM3ODEzNyArbGF0X3RzPTAuMCArbG9uXzA9MC4wICt4XzA9MC4wICt5XzA9MCAraz0xLjAgK3VuaXRzPW0gK25hZGdyaWRzPUBudWxsICtub19kZWZzIiksc3QuV0dTODQ9c3RbIkVQU0c6NDMyNiJdLHN0WyJFUFNHOjM3ODUiXT1zdFsiRVBTRzozODU3Il0sc3QuR09PR0xFPXN0WyJFUFNHOjM4NTciXSxzdFsiRVBTRzo5MDA5MTMiXT1zdFsiRVBTRzozODU3Il0sc3RbIkVQU0c6MTAyMTEzIl09c3RbIkVQU0c6Mzg1NyJdO2Z1bmN0aW9uIGh0KHQscyxpKXt2YXIgYT10KnM7cmV0dXJuIGkvTWF0aC5zcXJ0KDEtYSphKX1mdW5jdGlvbiBldCh0KXtyZXR1cm4gdDwwPy0xOjF9ZnVuY3Rpb24gbnQodCl7cmV0dXJuIE1hdGguYWJzKHQpPD1RP3Q6dC1ldCh0KSpGfWZ1bmN0aW9uIHJ0KHQscyxpKXt2YXIgYT10KmksaD0uNSp0LGE9TWF0aC5wb3coKDEtYSkvKDErYSksaCk7cmV0dXJuIE1hdGgudGFuKC41Kih6LXMpKS9hfWZ1bmN0aW9uIG90KHQscyl7Zm9yKHZhciBpLGEsaD0uNSp0LGU9ei0yKk1hdGguYXRhbihzKSxuPTA7bjw9MTU7bisrKWlmKGk9dCpNYXRoLnNpbihlKSxlKz1hPXotMipNYXRoLmF0YW4ocypNYXRoLnBvdygoMS1pKS8oMStpKSxoKSktZSxNYXRoLmFicyhhKTw9MWUtMTApcmV0dXJuIGU7cmV0dXJuLTk5OTl9dmFyIGx0PVsiUFJPSkVDVEVEQ1JTIiwiUFJPSkNSUyIsIkdFT0dDUyIsIkdFT0NDUyIsIlBST0pDUyIsIkxPQ0FMX0NTIiwiR0VPRENSUyIsIkdFT0RFVElDQ1JTIiwiR0VPREVUSUNEQVRVTSIsIkVOR0NSUyIsIkVOR0lORUVSSU5HQ1JTIl0sTXQ9WyIzODU3IiwiOTAwOTEzIiwiMzc4NSIsIjEwMjExMyJdLGN0PWZ1bmN0aW9uKHQscyl7dmFyIGksYTtpZih0PXR8fHt9LCFzKXJldHVybiB0O2ZvcihhIGluIHMpdm9pZCAwIT09KGk9c1thXSkmJih0W2FdPWkpO3JldHVybiB0fSx1dD1be2luaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmIvdGhpcy5hO3RoaXMuZXM9MS10KnQsIngwImluIHRoaXN8fCh0aGlzLngwPTApLCJ5MCJpbiB0aGlzfHwodGhpcy55MD0wKSx0aGlzLmU9TWF0aC5zcXJ0KHRoaXMuZXMpLHRoaXMubGF0X3RzP3RoaXMuc3BoZXJlP3RoaXMuazA9TWF0aC5jb3ModGhpcy5sYXRfdHMpOnRoaXMuazA9aHQodGhpcy5lLE1hdGguc2luKHRoaXMubGF0X3RzKSxNYXRoLmNvcyh0aGlzLmxhdF90cykpOnRoaXMuazB8fCh0aGlzLms/dGhpcy5rMD10aGlzLms6dGhpcy5rMD0xKX0sZm9yd2FyZDpmdW5jdGlvbih0KXt2YXIgcyxpLGEsaCxlPXQueCxuPXQueTtyZXR1cm4gOTA8bipCJiZuKkI8LTkwJiYxODA8ZSpCJiZlKkI8LTE4MHx8TWF0aC5hYnMoTWF0aC5hYnMobikteik8PUQ/bnVsbDooaD10aGlzLnNwaGVyZT8oYT10aGlzLngwK3RoaXMuYSp0aGlzLmswKm50KGUtdGhpcy5sb25nMCksdGhpcy55MCt0aGlzLmEqdGhpcy5rMCpNYXRoLmxvZyhNYXRoLnRhbihVKy41Km4pKSk6KHM9TWF0aC5zaW4obiksaT1ydCh0aGlzLmUsbixzKSxhPXRoaXMueDArdGhpcy5hKnRoaXMuazAqbnQoZS10aGlzLmxvbmcwKSx0aGlzLnkwLXRoaXMuYSp0aGlzLmswKk1hdGgubG9nKGkpKSx0Lng9YSx0Lnk9aCx0KX0saW52ZXJzZTpmdW5jdGlvbih0KXt2YXIgcyxpLGE9dC54LXRoaXMueDAsaD10LnktdGhpcy55MDtpZih0aGlzLnNwaGVyZSlpPXotMipNYXRoLmF0YW4oTWF0aC5leHAoLWgvKHRoaXMuYSp0aGlzLmswKSkpO2Vsc2V7dmFyIGU9TWF0aC5leHAoLWgvKHRoaXMuYSp0aGlzLmswKSk7aWYoLTk5OTk9PT0oaT1vdCh0aGlzLmUsZSkpKXJldHVybiBudWxsfXJldHVybiBzPW50KHRoaXMubG9uZzArYS8odGhpcy5hKnRoaXMuazApKSx0Lng9cyx0Lnk9aSx0fSxuYW1lczpbIk1lcmNhdG9yIiwiUG9wdWxhciBWaXN1YWxpc2F0aW9uIFBzZXVkbyBNZXJjYXRvciIsIk1lcmNhdG9yXzFTUCIsIk1lcmNhdG9yX0F1eGlsaWFyeV9TcGhlcmUiLCJtZXJjIl19LHtpbml0OmZ1bmN0aW9uKCl7fSxmb3J3YXJkOnQsaW52ZXJzZTp0LG5hbWVzOlsibG9uZ2xhdCIsImlkZW50aXR5Il19XSxmdD17fSxtdD1bXSxwdD17c3RhcnQ6ZnVuY3Rpb24oKXt1dC5mb3JFYWNoKHMpfSxhZGQ6cyxnZXQ6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuITE7dmFyIHM9dC50b0xvd2VyQ2FzZSgpO3JldHVybiB2b2lkIDAhPT1mdFtzXSYmbXRbZnRbc11dP210W2Z0W3NdXTp2b2lkIDB9fSxkdD17TUVSSVQ6e2E6NjM3ODEzNyxyZjoyOTguMjU3LGVsbGlwc2VOYW1lOiJNRVJJVCAxOTgzIn0sU0dTODU6e2E6NjM3ODEzNixyZjoyOTguMjU3LGVsbGlwc2VOYW1lOiJTb3ZpZXQgR2VvZGV0aWMgU3lzdGVtIDg1In0sR1JTODA6e2E6NjM3ODEzNyxyZjoyOTguMjU3MjIyMTAxLGVsbGlwc2VOYW1lOiJHUlMgMTk4MChJVUdHLCAxOTgwKSJ9LElBVTc2OnthOjYzNzgxNDAscmY6Mjk4LjI1NyxlbGxpcHNlTmFtZToiSUFVIDE5NzYifSxhaXJ5OnthOjYzNzc1NjMuMzk2LGI6NjM1NjI1Ni45MSxlbGxpcHNlTmFtZToiQWlyeSAxODMwIn0sQVBMNDp7YTo2Mzc4MTM3LHJmOjI5OC4yNSxlbGxpcHNlTmFtZToiQXBwbC4gUGh5c2ljcy4gMTk2NSJ9LE5XTDlEOnthOjYzNzgxNDUscmY6Mjk4LjI1LGVsbGlwc2VOYW1lOiJOYXZhbCBXZWFwb25zIExhYi4sIDE5NjUifSxtb2RfYWlyeTp7YTo2Mzc3MzQwLjE4OSxiOjYzNTYwMzQuNDQ2LGVsbGlwc2VOYW1lOiJNb2RpZmllZCBBaXJ5In0sYW5kcmFlOnthOjYzNzcxMDQuNDMscmY6MzAwLGVsbGlwc2VOYW1lOiJBbmRyYWUgMTg3NiAoRGVuLiwgSWNsbmQuKSJ9LGF1c3RfU0E6e2E6NjM3ODE2MCxyZjoyOTguMjUsZWxsaXBzZU5hbWU6IkF1c3RyYWxpYW4gTmF0bCAmIFMuIEFtZXIuIDE5NjkifSxHUlM2Nzp7YTo2Mzc4MTYwLHJmOjI5OC4yNDcxNjc0MjcsZWxsaXBzZU5hbWU6IkdSUyA2NyhJVUdHIDE5NjcpIn0sYmVzc2VsOnthOjYzNzczOTcuMTU1LHJmOjI5OS4xNTI4MTI4LGVsbGlwc2VOYW1lOiJCZXNzZWwgMTg0MSJ9LGJlc3NfbmFtOnthOjYzNzc0ODMuODY1LHJmOjI5OS4xNTI4MTI4LGVsbGlwc2VOYW1lOiJCZXNzZWwgMTg0MSAoTmFtaWJpYSkifSxjbHJrNjY6e2E6NjM3ODIwNi40LGI6NjM1NjU4My44LGVsbGlwc2VOYW1lOiJDbGFya2UgMTg2NiJ9LGNscms4MDp7YTo2Mzc4MjQ5LjE0NSxyZjoyOTMuNDY2MyxlbGxpcHNlTmFtZToiQ2xhcmtlIDE4ODAgbW9kLiJ9LGNscms1ODp7YTo2Mzc4MjkzLjY0NTIwODc1OSxyZjoyOTQuMjYwNjc2MzY5MjY1NCxlbGxpcHNlTmFtZToiQ2xhcmtlIDE4NTgifSxDUE06e2E6NjM3NTczOC43LHJmOjMzNC4yOSxlbGxpcHNlTmFtZToiQ29tbS4gZGVzIFBvaWRzIGV0IE1lc3VyZXMgMTc5OSJ9LGRlbG1icjp7YTo2Mzc2NDI4LHJmOjMxMS41LGVsbGlwc2VOYW1lOiJEZWxhbWJyZSAxODEwIChCZWxnaXVtKSJ9LGVuZ2VsaXM6e2E6NjM3ODEzNi4wNSxyZjoyOTguMjU2NixlbGxpcHNlTmFtZToiRW5nZWxpcyAxOTg1In0sZXZyc3QzMDp7YTo2Mzc3Mjc2LjM0NSxyZjozMDAuODAxNyxlbGxpcHNlTmFtZToiRXZlcmVzdCAxODMwIn0sZXZyc3Q0ODp7YTo2Mzc3MzA0LjA2MyxyZjozMDAuODAxNyxlbGxpcHNlTmFtZToiRXZlcmVzdCAxOTQ4In0sZXZyc3Q1Njp7YTo2Mzc3MzAxLjI0MyxyZjozMDAuODAxNyxlbGxpcHNlTmFtZToiRXZlcmVzdCAxOTU2In0sZXZyc3Q2OTp7YTo2Mzc3Mjk1LjY2NCxyZjozMDAuODAxNyxlbGxpcHNlTmFtZToiRXZlcmVzdCAxOTY5In0sZXZyc3RTUzp7YTo2Mzc3Mjk4LjU1NixyZjozMDAuODAxNyxlbGxpcHNlTmFtZToiRXZlcmVzdCAoU2FiYWggJiBTYXJhd2FrKSJ9LGZzY2hyNjA6e2E6NjM3ODE2NixyZjoyOTguMyxlbGxpcHNlTmFtZToiRmlzY2hlciAoTWVyY3VyeSBEYXR1bSkgMTk2MCJ9LGZzY2hyNjBtOnthOjYzNzgxNTUscmY6Mjk4LjMsZWxsaXBzZU5hbWU6IkZpc2NoZXIgMTk2MCJ9LGZzY2hyNjg6e2E6NjM3ODE1MCxyZjoyOTguMyxlbGxpcHNlTmFtZToiRmlzY2hlciAxOTY4In0saGVsbWVydDp7YTo2Mzc4MjAwLHJmOjI5OC4zLGVsbGlwc2VOYW1lOiJIZWxtZXJ0IDE5MDYifSxob3VnaDp7YTo2Mzc4MjcwLHJmOjI5NyxlbGxpcHNlTmFtZToiSG91Z2gifSxpbnRsOnthOjYzNzgzODgscmY6Mjk3LGVsbGlwc2VOYW1lOiJJbnRlcm5hdGlvbmFsIDE5MDkgKEhheWZvcmQpIn0sa2F1bGE6e2E6NjM3ODE2MyxyZjoyOTguMjQsZWxsaXBzZU5hbWU6IkthdWxhIDE5NjEifSxsZXJjaDp7YTo2Mzc4MTM5LHJmOjI5OC4yNTcsZWxsaXBzZU5hbWU6IkxlcmNoIDE5NzkifSxtcHJ0czp7YTo2Mzk3MzAwLHJmOjE5MSxlbGxpcHNlTmFtZToiTWF1cGVydGl1cyAxNzM4In0sbmV3X2ludGw6e2E6NjM3ODE1Ny41LGI6NjM1Njc3Mi4yLGVsbGlwc2VOYW1lOiJOZXcgSW50ZXJuYXRpb25hbCAxOTY3In0scGxlc3Npczp7YTo2Mzc2NTIzLHJmOjYzNTU4NjMsZWxsaXBzZU5hbWU6IlBsZXNzaXMgMTgxNyAoRnJhbmNlKSJ9LGtyYXNzOnthOjYzNzgyNDUscmY6Mjk4LjMsZWxsaXBzZU5hbWU6IktyYXNzb3Zza3ksIDE5NDIifSxTRWFzaWE6e2E6NjM3ODE1NSxiOjYzNTY3NzMuMzIwNSxlbGxpcHNlTmFtZToiU291dGhlYXN0IEFzaWEifSx3YWxiZWNrOnthOjYzNzY4OTYsYjo2MzU1ODM0Ljg0NjcsZWxsaXBzZU5hbWU6IldhbGJlY2sifSxXR1M2MDp7YTo2Mzc4MTY1LHJmOjI5OC4zLGVsbGlwc2VOYW1lOiJXR1MgNjAifSxXR1M2Njp7YTo2Mzc4MTQ1LHJmOjI5OC4yNSxlbGxpcHNlTmFtZToiV0dTIDY2In0sV0dTNzp7YTo2Mzc4MTM1LHJmOjI5OC4yNixlbGxpcHNlTmFtZToiV0dTIDcyIn19LHl0PWR0LldHUzg0PXthOjYzNzgxMzcscmY6Mjk4LjI1NzIyMzU2MyxlbGxpcHNlTmFtZToiV0dTIDg0In07ZHQuc3BoZXJlPXthOjYzNzA5OTcsYjo2MzcwOTk3LGVsbGlwc2VOYW1lOiJOb3JtYWwgU3BoZXJlIChyPTYzNzA5OTcpIn07dmFyIF90PXt3Z3M4NDp7dG93Z3M4NDoiMCwwLDAiLGVsbGlwc2U6IldHUzg0IixkYXR1bU5hbWU6IldHUzg0In0sY2gxOTAzOnt0b3dnczg0OiI2NzQuMzc0LDE1LjA1Niw0MDUuMzQ2IixlbGxpcHNlOiJiZXNzZWwiLGRhdHVtTmFtZToic3dpc3MifSxnZ3JzODc6e3Rvd2dzODQ6Ii0xOTkuODcsNzQuNzksMjQ2LjYyIixlbGxpcHNlOiJHUlM4MCIsZGF0dW1OYW1lOiJHcmVla19HZW9kZXRpY19SZWZlcmVuY2VfU3lzdGVtXzE5ODcifSxuYWQ4Mzp7dG93Z3M4NDoiMCwwLDAiLGVsbGlwc2U6IkdSUzgwIixkYXR1bU5hbWU6Ik5vcnRoX0FtZXJpY2FuX0RhdHVtXzE5ODMifSxuYWQyNzp7bmFkZ3JpZHM6IkBjb251cyxAYWxhc2thLEBudHYyXzAuZ3NiLEBudHYxX2Nhbi5kYXQiLGVsbGlwc2U6ImNscms2NiIsZGF0dW1OYW1lOiJOb3J0aF9BbWVyaWNhbl9EYXR1bV8xOTI3In0scG90c2RhbTp7dG93Z3M4NDoiNjA2LjAsMjMuMCw0MTMuMCIsZWxsaXBzZToiYmVzc2VsIixkYXR1bU5hbWU6IlBvdHNkYW0gUmF1ZW5iZXJnIDE5NTAgREhETiJ9LGNhcnRoYWdlOnt0b3dnczg0OiItMjYzLjAsNi4wLDQzMS4wIixlbGxpcHNlOiJjbGFyazgwIixkYXR1bU5hbWU6IkNhcnRoYWdlIDE5MzQgVHVuaXNpYSJ9LGhlcm1hbm5za29nZWw6e3Rvd2dzODQ6IjY1My4wLC0yMTIuMCw0NDkuMCIsZWxsaXBzZToiYmVzc2VsIixkYXR1bU5hbWU6Ikhlcm1hbm5za29nZWwifSxvc25pNTI6e3Rvd2dzODQ6IjQ4Mi41MzAsLTEzMC41OTYsNTY0LjU1NywtMS4wNDIsLTAuMjE0LC0wLjYzMSw4LjE1IixlbGxpcHNlOiJhaXJ5IixkYXR1bU5hbWU6IklyaXNoIE5hdGlvbmFsIn0saXJlNjU6e3Rvd2dzODQ6IjQ4Mi41MzAsLTEzMC41OTYsNTY0LjU1NywtMS4wNDIsLTAuMjE0LC0wLjYzMSw4LjE1IixlbGxpcHNlOiJtb2RfYWlyeSIsZGF0dW1OYW1lOiJJcmVsYW5kIDE5NjUifSxyYXNzYWRpcmFuOnt0b3dnczg0OiItMTMzLjYzLC0xNTcuNSwtMTU4LjYyIixlbGxpcHNlOiJpbnRsIixkYXR1bU5hbWU6IlJhc3NhZGlyYW4ifSxuemdkNDk6e3Rvd2dzODQ6IjU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyIsZWxsaXBzZToiaW50bCIsZGF0dW1OYW1lOiJOZXcgWmVhbGFuZCBHZW9kZXRpYyBEYXR1bSAxOTQ5In0sb3NnYjM2Ont0b3dnczg0OiI0NDYuNDQ4LC0xMjUuMTU3LDU0Mi4wNjAsMC4xNTAyLDAuMjQ3MCwwLjg0MjEsLTIwLjQ4OTQiLGVsbGlwc2U6ImFpcnkiLGRhdHVtTmFtZToiQWlyeSAxODMwIn0sc19qdHNrOnt0b3dnczg0OiI1ODksNzYsNDgwIixlbGxpcHNlOiJiZXNzZWwiLGRhdHVtTmFtZToiUy1KVFNLIChGZXJybykifSxiZWR1YXJhbTp7dG93Z3M4NDoiLTEwNiwtODcsMTg4IixlbGxpcHNlOiJjbHJrODAiLGRhdHVtTmFtZToiQmVkdWFyYW0ifSxndW51bmdfc2VnYXJhOnt0b3dnczg0OiItNDAzLDY4NCw0MSIsZWxsaXBzZToiYmVzc2VsIixkYXR1bU5hbWU6Ikd1bnVuZyBTZWdhcmEgSmFrYXJ0YSJ9LHJuYjcyOnt0b3dnczg0OiIxMDYuODY5LC01Mi4yOTc4LDEwMy43MjQsLTAuMzM2NTcsMC40NTY5NTUsLTEuODQyMTgsMSIsZWxsaXBzZToiaW50bCIsZGF0dW1OYW1lOiJSZXNlYXUgTmF0aW9uYWwgQmVsZ2UgMTk3MiJ9fTtxLnByb2plY3Rpb25zPXB0LHEucHJvamVjdGlvbnMuc3RhcnQoKTt2YXIgeHQ9ZnVuY3Rpb24odCxzLGkpe3JldHVybiBoPXMsKChhPXQpLmRhdHVtX3R5cGUhPT1oLmRhdHVtX3R5cGV8fGEuYSE9PWguYXx8NWUtMTE8TWF0aC5hYnMoYS5lcy1oLmVzKXx8KGEuZGF0dW1fdHlwZT09PUk/YS5kYXR1bV9wYXJhbXNbMF0hPT1oLmRhdHVtX3BhcmFtc1swXXx8YS5kYXR1bV9wYXJhbXNbMV0hPT1oLmRhdHVtX3BhcmFtc1sxXXx8YS5kYXR1bV9wYXJhbXNbMl0hPT1oLmRhdHVtX3BhcmFtc1syXTphLmRhdHVtX3R5cGU9PT1PJiYoYS5kYXR1bV9wYXJhbXNbMF0hPT1oLmRhdHVtX3BhcmFtc1swXXx8YS5kYXR1bV9wYXJhbXNbMV0hPT1oLmRhdHVtX3BhcmFtc1sxXXx8YS5kYXR1bV9wYXJhbXNbMl0hPT1oLmRhdHVtX3BhcmFtc1syXXx8YS5kYXR1bV9wYXJhbXNbM10hPT1oLmRhdHVtX3BhcmFtc1szXXx8YS5kYXR1bV9wYXJhbXNbNF0hPT1oLmRhdHVtX3BhcmFtc1s0XXx8YS5kYXR1bV9wYXJhbXNbNV0hPT1oLmRhdHVtX3BhcmFtc1s1XXx8YS5kYXR1bV9wYXJhbXNbNl0hPT1oLmRhdHVtX3BhcmFtc1s2XSkpKSYmdC5kYXR1bV90eXBlIT09RyYmcy5kYXR1bV90eXBlIT09RyYmKHQuZXMhPT1zLmVzfHx0LmEhPT1zLmF8fHUodC5kYXR1bV90eXBlKXx8dShzLmRhdHVtX3R5cGUpKT8oaT1NKGksdC5lcyx0LmEpLHUodC5kYXR1bV90eXBlKSYmKGk9ZnVuY3Rpb24odCxzLGkpe2lmKHM9PT1JKXJldHVybnt4OnQueCtpWzBdLHk6dC55K2lbMV0sejp0LnoraVsyXX07aWYocz09PU8pe3ZhciBhPWlbMF0saD1pWzFdLGU9aVsyXSxuPWlbM10scj1pWzRdLG89aVs1XSxsPWlbNl07cmV0dXJue3g6bCoodC54LW8qdC55K3IqdC56KSthLHk6bCoobyp0LngrdC55LW4qdC56KStoLHo6bCooLXIqdC54K24qdC55K3QueikrZX19fShpLHQuZGF0dW1fdHlwZSx0LmRhdHVtX3BhcmFtcykpLHUocy5kYXR1bV90eXBlKSYmKGk9ZnVuY3Rpb24odCxzLGkpe2lmKHM9PT1JKXJldHVybnt4OnQueC1pWzBdLHk6dC55LWlbMV0sejp0LnotaVsyXX07aWYocz09PU8pe3ZhciBhPWlbMF0saD1pWzFdLGU9aVsyXSxuPWlbM10scj1pWzRdLG89aVs1XSxsPWlbNl0sTT0odC54LWEpL2wsYz0odC55LWgpL2wsdT0odC56LWUpL2w7cmV0dXJue3g6TStvKmMtcip1LHk6LW8qTStjK24qdSx6OnIqTS1uKmMrdX19fShpLHMuZGF0dW1fdHlwZSxzLmRhdHVtX3BhcmFtcykpLGMoaSxzLmVzLHMuYSxzLmIpKTppO3ZhciBhLGh9LGd0PWZ1bmN0aW9uKHQscyxpKXtmb3IodmFyIGEsaCxlPWkueCxuPWkueSxyPWkuenx8MCxvPXt9LGw9MDtsPDM7bCsrKWlmKCFzfHwyIT09bHx8dm9pZCAwIT09aS56KXN3aXRjaChoPTA9PT1sPyhhPWUsLTEhPT0iZXciLmluZGV4T2YodC5heGlzW2xdKT8ieCI6InkiKToxPT09bD8oYT1uLC0xIT09Im5zIi5pbmRleE9mKHQuYXhpc1tsXSk/InkiOiJ4Iik6KGE9ciwieiIpLHQuYXhpc1tsXSl7Y2FzZSJlIjpjYXNlInciOmNhc2UibiI6Y2FzZSJzIjpvW2hdPWE7YnJlYWs7Y2FzZSJ1Ijp2b2lkIDAhPT1pW2hdJiYoby56PWEpO2JyZWFrO2Nhc2UiZCI6dm9pZCAwIT09aVtoXSYmKG8uej0tYSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4gb30sYnQ9ZnVuY3Rpb24odCl7dmFyIHM9e3g6dFswXSx5OnRbMV19O3JldHVybiAyPHQubGVuZ3RoJiYocy56PXRbMl0pLDM8dC5sZW5ndGgmJihzLm09dFszXSksc30sdnQ9ZnVuY3Rpb24odCl7aSh0LngpLGkodC55KX0sd3Q9cSgiV0dTODQiKSxDdD02LFB0PSJBSlNBSlMiLFN0PSJBRkFGQUYiLE50PTY1LGt0PTczLEV0PTc5LHF0PTg2LEl0PTkwLE90PXtmb3J3YXJkOmQsaW52ZXJzZTpmdW5jdGlvbih0KXt2YXIgcz1nKHYodC50b1VwcGVyQ2FzZSgpKSk7cmV0dXJuIHMubGF0JiZzLmxvbj9bcy5sb24scy5sYXQscy5sb24scy5sYXRdOltzLmxlZnQscy5ib3R0b20scy5yaWdodCxzLnRvcF19LHRvUG9pbnQ6eX07Qy5mcm9tTUdSUz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEMoeSh0KSl9LEMucHJvdG90eXBlLnRvTUdSUz1mdW5jdGlvbih0KXtyZXR1cm4gZChbdGhpcy54LHRoaXMueV0sdCl9O2Z1bmN0aW9uIEF0KHQpe3ZhciBzPVtdO3NbMF09MS10KiguMjUrdCooLjA0Njg3NSt0KiguMDE5NTMxMjUrdCp0cykpKSxzWzFdPXQqKC43NS10KiguMDQ2ODc1K3QqKC4wMTk1MzEyNSt0KnRzKSkpO3ZhciBpPXQqdDtyZXR1cm4gc1syXT1pKiguNDY4NzUtdCooLjAxMzAyMDgzMzMzMzMzMzMzNCsuMDA3MTIwNzY4MjI5MTY2NjY3KnQpKSxpKj10LHNbM109aSooLjM2NDU4MzMzMzMzMzMzMzMtLjAwNTY5NjYxNDU4MzMzMzMzMyp0KSxzWzRdPWkqdCouMzA3NjE3MTg3NSxzfWZ1bmN0aW9uIEd0KHQscyxpLGEpe3JldHVybiBpKj1zLHMqPXMsYVswXSp0LWkqKGFbMV0rcyooYVsyXStzKihhWzNdK3MqYVs0XSkpKX1mdW5jdGlvbiBqdCh0LHMsaSl7Zm9yKHZhciBhPTEvKDEtcyksaD10LGU9MjA7ZTstLWUpe3ZhciBuPU1hdGguc2luKGgpLHI9MS1zKm4qbjtpZihoLT1yPShHdChoLG4sTWF0aC5jb3MoaCksaSktdCkqKHIqTWF0aC5zcXJ0KHIpKSphLE1hdGguYWJzKHIpPEQpcmV0dXJuIGh9cmV0dXJuIGh9ZnVuY3Rpb24genQodCl7dmFyIHM9TWF0aC5leHAodCk7cmV0dXJuKHMtMS9zKS8yfWZ1bmN0aW9uIFJ0KHQscyl7dD1NYXRoLmFicyh0KSxzPU1hdGguYWJzKHMpO3ZhciBpPU1hdGgubWF4KHQscyksYT1NYXRoLm1pbih0LHMpLyhpfHwxKTtyZXR1cm4gaSpNYXRoLnNxcnQoMStNYXRoLnBvdyhhLDIpKX1mdW5jdGlvbiBMdCh0KXt2YXIgcyxpLGEsaD1NYXRoLmFicyh0KTtyZXR1cm4gcz1oKigxK2gvKFJ0KDEsaCkrMSkpLGg9MD09KGE9KGk9MStzKS0xKT9zOnMqTWF0aC5sb2coaSkvYSx0PDA/LWg6aH1mdW5jdGlvbiBUdCh0LHMpe2Zvcih2YXIgaSxhPTIqTWF0aC5jb3MoMipzKSxoPXQubGVuZ3RoLTEsZT10W2hdLG49MDswPD0tLWg7KWk9YSplLW4rdFtoXSxuPWUsZT1pO3JldHVybiBzK2kqTWF0aC5zaW4oMipzKX1mdW5jdGlvbiBEdCh0LHMsaSl7Zm9yKHZhciBhLGgsZSxuLHI9TWF0aC5zaW4ocyksbz1NYXRoLmNvcyhzKSxsPXp0KGkpLE09KGU9aSwoKG49TWF0aC5leHAoZSkpKzEvbikvMiksYz0yKm8qTSx1PS0yKnIqbCxmPXQubGVuZ3RoLTEsbT10W2ZdLHA9MCxkPTAseT0wOzA8PS0tZjspYT1kLGg9cCxtPWMqKGQ9bSktYS11KihwPXkpK3RbZl0seT11KmQtaCtjKnA7cmV0dXJuWyhjPXIqTSkqbS0odT1vKmwpKnksYyp5K3UqbV19ZnVuY3Rpb24gQnQodCxzKXtyZXR1cm4gTWF0aC5wb3coKDEtdCkvKDErdCkscyl9ZnVuY3Rpb24gVXQodCxzLGksYSxoKXtyZXR1cm4gdCpoLXMqTWF0aC5zaW4oMipoKStpKk1hdGguc2luKDQqaCktYSpNYXRoLnNpbig2KmgpfWZ1bmN0aW9uIEZ0KHQpe3JldHVybiAxLS4yNSp0KigxK3QvMTYqKDMrMS4yNSp0KSl9ZnVuY3Rpb24gUXQodCl7cmV0dXJuLjM3NSp0KigxKy4yNSp0KigxKy40Njg3NSp0KSl9ZnVuY3Rpb24gV3QodCl7cmV0dXJuLjA1ODU5Mzc1KnQqdCooMSsuNzUqdCl9ZnVuY3Rpb24gWHQodCl7cmV0dXJuIHQqdCp0KigzNS8zMDcyKX1mdW5jdGlvbiBIdCh0LHMsaSl7dmFyIGE9cyppO3JldHVybiB0L01hdGguc3FydCgxLWEqYSl9ZnVuY3Rpb24gSnQodCl7cmV0dXJuIE1hdGguYWJzKHQpPHo/dDp0LWV0KHQpKk1hdGguUEl9ZnVuY3Rpb24gS3QodCxzLGksYSxoKXtmb3IodmFyIGUsbj10L3Mscj0wO3I8MTU7cisrKWlmKG4rPWU9KHQtKHMqbi1pKk1hdGguc2luKDIqbikrYSpNYXRoLnNpbig0Km4pLWgqTWF0aC5zaW4oNipuKSkpLyhzLTIqaSpNYXRoLmNvcygyKm4pKzQqYSpNYXRoLmNvcyg0Km4pLTYqaCpNYXRoLmNvcyg2Km4pKSxNYXRoLmFicyhlKTw9MWUtMTApcmV0dXJuIG47cmV0dXJuIE5hTn1mdW5jdGlvbiBWdCh0LHMpe3ZhciBpO3JldHVybiAxZS03PHQ/KDEtdCp0KSoocy8oMS0oaT10KnMpKmkpLS41L3QqTWF0aC5sb2coKDEtaSkvKDEraSkpKToyKnN9ZnVuY3Rpb24gWnQodCl7cmV0dXJuIDE8TWF0aC5hYnModCkmJih0PTE8dD8xOi0xKSxNYXRoLmFzaW4odCl9ZnVuY3Rpb24gWXQodCxzKXtyZXR1cm4gdFswXStzKih0WzFdK3MqKHRbMl0rcyp0WzNdKSl9dmFyICR0LHRzPS4wMTA2ODExNTIzNDM3NSxzcz17aW5pdDpmdW5jdGlvbigpe3RoaXMueDA9dm9pZCAwIT09dGhpcy54MD90aGlzLngwOjAsdGhpcy55MD12b2lkIDAhPT10aGlzLnkwP3RoaXMueTA6MCx0aGlzLmxvbmcwPXZvaWQgMCE9PXRoaXMubG9uZzA/dGhpcy5sb25nMDowLHRoaXMubGF0MD12b2lkIDAhPT10aGlzLmxhdDA/dGhpcy5sYXQwOjAsdGhpcy5lcyYmKHRoaXMuZW49QXQodGhpcy5lcyksdGhpcy5tbDA9R3QodGhpcy5sYXQwLE1hdGguc2luKHRoaXMubGF0MCksTWF0aC5jb3ModGhpcy5sYXQwKSx0aGlzLmVuKSl9LGZvcndhcmQ6ZnVuY3Rpb24odCl7dmFyIHM9dC54LGk9dC55LGE9bnQocy10aGlzLmxvbmcwKSxoPU1hdGguc2luKGkpLGU9TWF0aC5jb3MoaSk7aWYodGhpcy5lcyl7dmFyIG49ZSphLHI9TWF0aC5wb3cobiwyKSxvPXRoaXMuZXAyKk1hdGgucG93KGUsMiksbD1NYXRoLnBvdyhvLDIpLE09TWF0aC5hYnMoZSk+RD9NYXRoLnRhbihpKTowLGM9TWF0aC5wb3coTSwyKSx1PU1hdGgucG93KGMsMiksZj0xLXRoaXMuZXMqTWF0aC5wb3coaCwyKTtuLz1NYXRoLnNxcnQoZik7dmFyIG09R3QoaSxoLGUsdGhpcy5lbikscD10aGlzLmEqKHRoaXMuazAqbiooMStyLzYqKDEtYytvK3IvMjAqKDUtMTgqYyt1KzE0Km8tNTgqYypvK3IvNDIqKDYxKzE3OSp1LXUqYy00NzkqYykpKSkpK3RoaXMueDAsZD10aGlzLmEqKHRoaXMuazAqKG0tdGhpcy5tbDAraCphKm4vMiooMStyLzEyKig1LWMrOSpvKzQqbCtyLzMwKig2MSt1LTU4KmMrMjcwKm8tMzMwKmMqbytyLzU2KigxMzg1KzU0Myp1LXUqYy0zMTExKmMpKSkpKSkrdGhpcy55MH1lbHNle3ZhciB5PWUqTWF0aC5zaW4oYSk7aWYoTWF0aC5hYnMoTWF0aC5hYnMoeSktMSk8RClyZXR1cm4gOTM7aWYocD0uNSp0aGlzLmEqdGhpcy5rMCpNYXRoLmxvZygoMSt5KS8oMS15KSkrdGhpcy54MCxkPWUqTWF0aC5jb3MoYSkvTWF0aC5zcXJ0KDEtTWF0aC5wb3coeSwyKSksMTw9KHk9TWF0aC5hYnMoZCkpKXtpZihEPHktMSlyZXR1cm4gOTM7ZD0wfWVsc2UgZD1NYXRoLmFjb3MoZCk7aTwwJiYoZD0tZCksZD10aGlzLmEqdGhpcy5rMCooZC10aGlzLmxhdDApK3RoaXMueTB9cmV0dXJuIHQueD1wLHQueT1kLHR9LGludmVyc2U6ZnVuY3Rpb24odCl7dmFyIHMsaSxhLGgsZSxuLHIsbyxsLE0sYyx1LGYsbSxwLGQseSxfPSh0LngtdGhpcy54MCkqKDEvdGhpcy5hKSx4PSh0LnktdGhpcy55MCkqKDEvdGhpcy5hKTtyZXR1cm4gZj10aGlzLmVzPyhsPXRoaXMubWwwK3gvdGhpcy5rMCxzPWp0KGwsdGhpcy5lcyx0aGlzLmVuKSxNYXRoLmFicyhzKTx6PyhpPU1hdGguc2luKHMpLGE9TWF0aC5jb3MocyksaD1NYXRoLmFicyhhKT5EP01hdGgudGFuKHMpOjAsZT10aGlzLmVwMipNYXRoLnBvdyhhLDIpLG49TWF0aC5wb3coZSwyKSxyPU1hdGgucG93KGgsMiksbz1NYXRoLnBvdyhyLDIpLGw9MS10aGlzLmVzKk1hdGgucG93KGksMiksTT1fKk1hdGguc3FydChsKS90aGlzLmswLHU9cy0obCo9aCkqKGM9TWF0aC5wb3coTSwyKSkvKDEtdGhpcy5lcykqLjUqKDEtYy8xMiooNSszKnItOSplKnIrZS00Km4tYy8zMCooNjErOTAqci0yNTIqZSpyKzQ1Km8rNDYqZS1jLzU2KigxMzg1KzM2MzMqcis0MDk1Km8rMTU3NCpvKnIpKSkpLG50KHRoaXMubG9uZzArTSooMS1jLzYqKDErMipyK2UtYy8yMCooNSsyOCpyKzI0Km8rOCplKnIrNiplLWMvNDIqKDYxKzY2MipyKzEzMjAqbys3MjAqbypyKSkpKS9hKSk6KHU9eipldCh4KSwwKSk6KHA9LjUqKChtPU1hdGguZXhwKF8vdGhpcy5rMCkpLTEvbSksZD10aGlzLmxhdDAreC90aGlzLmswLHk9TWF0aC5jb3MoZCksbD1NYXRoLnNxcnQoKDEtTWF0aC5wb3coeSwyKSkvKDErTWF0aC5wb3cocCwyKSkpLHU9TWF0aC5hc2luKGwpLHg8MCYmKHU9LXUpLDA9PXAmJjA9PT15PzA6bnQoTWF0aC5hdGFuMihwLHkpK3RoaXMubG9uZzApKSx0Lng9Zix0Lnk9dSx0fSxuYW1lczpbIlRyYW5zdmVyc2VfTWVyY2F0b3IiLCJUcmFuc3ZlcnNlIE1lcmNhdG9yIiwidG1lcmMiXX0saXM9e2luaXQ6ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT10aGlzLmVzfHx0aGlzLmVzPD0wKXRocm93IG5ldyBFcnJvcigiaW5jb3JyZWN0IGVsbGlwdGljYWwgdXNhZ2UiKTt0aGlzLngwPXZvaWQgMCE9PXRoaXMueDA/dGhpcy54MDowLHRoaXMueTA9dm9pZCAwIT09dGhpcy55MD90aGlzLnkwOjAsdGhpcy5sb25nMD12b2lkIDAhPT10aGlzLmxvbmcwP3RoaXMubG9uZzA6MCx0aGlzLmxhdDA9dm9pZCAwIT09dGhpcy5sYXQwP3RoaXMubGF0MDowLHRoaXMuY2diPVtdLHRoaXMuY2JnPVtdLHRoaXMudXRnPVtdLHRoaXMuZ3R1PVtdO3ZhciB0PXRoaXMuZXMvKDErTWF0aC5zcXJ0KDEtdGhpcy5lcykpLHM9dC8oMi10KSxpPXM7dGhpcy5jZ2JbMF09cyooMitzKigtMi8zK3MqKHMqKDExNi80NStzKigyNi80NSstMjg1NC82NzUqcykpLTIpKSksdGhpcy5jYmdbMF09cyoocyooMi8zK3MqKDQvMytzKigtODIvNDUrcyooMzIvNDUrNDY0Mi80NzI1KnMpKSkpLTIpLGkqPXMsdGhpcy5jZ2JbMV09aSooNy8zK3MqKHMqKC0yMjcvNDUrcyooMjcwNC8zMTUrMjMyMy85NDUqcykpLTEuNikpLHRoaXMuY2JnWzFdPWkqKDUvMytzKigtMTYvMTUrcyooLTEzLzkrcyooOTA0LzMxNSstMTUyMi85NDUqcykpKSksaSo9cyx0aGlzLmNnYlsyXT1pKig1Ni8xNStzKigtMTM2LzM1K3MqKC0xMjYyLzEwNSs3MzgxNC8yODM1KnMpKSksdGhpcy5jYmdbMl09aSooLTI2LzE1K3MqKDM0LzIxK3MqKDEuNistMTI2ODYvMjgzNSpzKSkpLGkqPXMsdGhpcy5jZ2JbM109aSooNDI3OS82MzArcyooLTMzMi8zNSstMzk5NTcyLzE0MTc1KnMpKSx0aGlzLmNiZ1szXT1pKigxMjM3LzYzMCtzKigtMjQ4MzIvMTQxNzUqcy0yLjQpKSxpKj1zLHRoaXMuY2diWzRdPWkqKDQxNzQvMzE1Ky0xNDQ4MzgvNjIzNypzKSx0aGlzLmNiZ1s0XT1pKigtNzM0LzMxNSsxMDk1OTgvMzExODUqcyksaSo9cyx0aGlzLmNnYls1XT1pKig2MDE2NzYvMjIyNzUpLHRoaXMuY2JnWzVdPWkqKDQ0NDMzNy8xNTU5MjUpLGk9TWF0aC5wb3cocywyKSx0aGlzLlFuPXRoaXMuazAvKDErcykqKDEraSooLjI1K2kqKDEvNjQraS8yNTYpKSksdGhpcy51dGdbMF09cyoocyooMi8zK3MqKC0zNy85NitzKigxLzM2MCtzKig4MS81MTIrLTk2MTk5LzYwNDgwMCpzKSkpKS0uNSksdGhpcy5ndHVbMF09cyooLjUrcyooLTIvMytzKig1LzE2K3MqKDQxLzE4MCtzKigtMTI3LzI4OCs3ODkxLzM3ODAwKnMpKSkpKSx0aGlzLnV0Z1sxXT1pKigtMS80OCtzKigtMS8xNStzKig0MzcvMTQ0MCtzKigtNDYvMTA1KzExMTg3MTEvMzg3MDcyMCpzKSkpKSx0aGlzLmd0dVsxXT1pKigxMy80OCtzKihzKig1NTcvMTQ0MCtzKigyODEvNjMwKy0xOTgzNDMzLzE5MzUzNjAqcykpLS42KSksaSo9cyx0aGlzLnV0Z1syXT1pKigtMTcvNDgwK3MqKDM3Lzg0MCtzKigyMDkvNDQ4MCstNTU2OS85MDcyMCpzKSkpLHRoaXMuZ3R1WzJdPWkqKDYxLzI0MCtzKigtMTAzLzE0MCtzKigxNTA2MS8yNjg4MCsxNjc2MDMvMTgxNDQwKnMpKSksaSo9cyx0aGlzLnV0Z1szXT1pKigtNDM5Ny8xNjEyODArcyooMTEvNTA0KzgzMDI1MS83MjU3NjAwKnMpKSx0aGlzLmd0dVszXT1pKig0OTU2MS8xNjEyODArcyooLTE3OS8xNjgrNjYwMTY2MS83MjU3NjAwKnMpKSxpKj1zLHRoaXMudXRnWzRdPWkqKC00NTgzLzE2MTI4MCsxMDg4NDcvMzk5MTY4MCpzKSx0aGlzLmd0dVs0XT1pKigzNDcyOS84MDY0MCstMzQxODg4OS8xOTk1ODQwKnMpLGkqPXMsdGhpcy51dGdbNV09LS4wMzIzMzA4MzA5NDA4NTY5OCppLHRoaXMuZ3R1WzVdPS42NjUwNjc1MzEwODk2NjY1Kmk7dmFyIGE9VHQodGhpcy5jYmcsdGhpcy5sYXQwKTt0aGlzLlpiPS10aGlzLlFuKihhK2Z1bmN0aW9uKHQscyl7Zm9yKHZhciBpLGE9MipNYXRoLmNvcyhzKSxoPXQubGVuZ3RoLTEsZT10W2hdLG49MDswPD0tLWg7KWk9YSplLW4rdFtoXSxuPWUsZT1pO3JldHVybiBNYXRoLnNpbihzKSppfSh0aGlzLmd0dSwyKmEpKX0sZm9yd2FyZDpmdW5jdGlvbih0KXt2YXIgcz1udCh0LngtdGhpcy5sb25nMCksaT10LnksaT1UdCh0aGlzLmNiZyxpKSxhPU1hdGguc2luKGkpLGg9TWF0aC5jb3MoaSksZT1NYXRoLnNpbihzKSxuPU1hdGguY29zKHMpO2k9TWF0aC5hdGFuMihhLG4qaCkscz1NYXRoLmF0YW4yKGUqaCxSdChhLGgqbikpLHM9THQoTWF0aC50YW4ocykpO3ZhciByLG8sbD1EdCh0aGlzLmd0dSwyKmksMipzKTtyZXR1cm4gaSs9bFswXSxzKz1sWzFdLG89TWF0aC5hYnMocyk8PTIuNjIzMzk1MTYyNzc4PyhyPXRoaXMuYSoodGhpcy5RbipzKSt0aGlzLngwLHRoaXMuYSoodGhpcy5RbippK3RoaXMuWmIpK3RoaXMueTApOnI9MS8wLHQueD1yLHQueT1vLHR9LGludmVyc2U6ZnVuY3Rpb24odCl7dmFyIHMsaSxhLGgsZSxuLHIsbz0odC54LXRoaXMueDApKigxL3RoaXMuYSksbD0odC55LXRoaXMueTApKigxL3RoaXMuYSk7cmV0dXJuIGw9KGwtdGhpcy5aYikvdGhpcy5RbixvLz10aGlzLlFuLHI9TWF0aC5hYnMobyk8PTIuNjIzMzk1MTYyNzc4PyhsKz0ocz1EdCh0aGlzLnV0ZywyKmwsMipvKSlbMF0sbys9c1sxXSxvPU1hdGguYXRhbih6dChvKSksaT1NYXRoLnNpbihsKSxhPU1hdGguY29zKGwpLGg9TWF0aC5zaW4obyksZT1NYXRoLmNvcyhvKSxsPU1hdGguYXRhbjIoaSplLFJ0KGgsZSphKSksbz1NYXRoLmF0YW4yKGgsZSphKSxuPW50KG8rdGhpcy5sb25nMCksVHQodGhpcy5jZ2IsbCkpOm49MS8wLHQueD1uLHQueT1yLHR9LG5hbWVzOlsiRXh0ZW5kZWRfVHJhbnN2ZXJzZV9NZXJjYXRvciIsIkV4dGVuZGVkIFRyYW5zdmVyc2UgTWVyY2F0b3IiLCJldG1lcmMiXX0sYXM9e2luaXQ6ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LHMpe2lmKHZvaWQgMD09PXQpe2lmKCh0PU1hdGguZmxvb3IoMzAqKG50KHMpK01hdGguUEkpL01hdGguUEkpKzEpPDApcmV0dXJuIDA7aWYoNjA8dClyZXR1cm4gNjB9cmV0dXJuIHR9KHRoaXMuem9uZSx0aGlzLmxvbmcwKTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigidW5rbm93biB1dG0gem9uZSIpO3RoaXMubGF0MD0wLHRoaXMubG9uZzA9KDYqTWF0aC5hYnModCktMTgzKSpOLHRoaXMueDA9NWU1LHRoaXMueTA9dGhpcy51dG1Tb3V0aD8xZTc6MCx0aGlzLmswPS45OTk2LGlzLmluaXQuYXBwbHkodGhpcyksdGhpcy5mb3J3YXJkPWlzLmZvcndhcmQsdGhpcy5pbnZlcnNlPWlzLmludmVyc2V9LG5hbWVzOlsiVW5pdmVyc2FsIFRyYW5zdmVyc2UgTWVyY2F0b3IgU3lzdGVtIiwidXRtIl0sZGVwZW5kc09uOiJldG1lcmMifSxocz17aW5pdDpmdW5jdGlvbigpe3ZhciB0PU1hdGguc2luKHRoaXMubGF0MCkscz1NYXRoLmNvcyh0aGlzLmxhdDApO3MqPXMsdGhpcy5yYz1NYXRoLnNxcnQoMS10aGlzLmVzKS8oMS10aGlzLmVzKnQqdCksdGhpcy5DPU1hdGguc3FydCgxK3RoaXMuZXMqcypzLygxLXRoaXMuZXMpKSx0aGlzLnBoaWMwPU1hdGguYXNpbih0L3RoaXMuQyksdGhpcy5yYXRleHA9LjUqdGhpcy5DKnRoaXMuZSx0aGlzLks9TWF0aC50YW4oLjUqdGhpcy5waGljMCtVKS8oTWF0aC5wb3coTWF0aC50YW4oLjUqdGhpcy5sYXQwK1UpLHRoaXMuQykqQnQodGhpcy5lKnQsdGhpcy5yYXRleHApKX0sZm9yd2FyZDpmdW5jdGlvbih0KXt2YXIgcz10LngsaT10Lnk7cmV0dXJuIHQueT0yKk1hdGguYXRhbih0aGlzLksqTWF0aC5wb3coTWF0aC50YW4oLjUqaStVKSx0aGlzLkMpKkJ0KHRoaXMuZSpNYXRoLnNpbihpKSx0aGlzLnJhdGV4cCkpLXosdC54PXRoaXMuQypzLHR9LGludmVyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciBzPXQueC90aGlzLkMsaT10LnksYT1NYXRoLnBvdyhNYXRoLnRhbiguNSppK1UpL3RoaXMuSywxL3RoaXMuQyksaD0yMDswPGgmJihpPTIqTWF0aC5hdGFuKGEqQnQodGhpcy5lKk1hdGguc2luKHQueSksLS41KnRoaXMuZSkpLXosIShNYXRoLmFicyhpLXQueSk8MWUtMTQpKTstLWgpdC55PWk7cmV0dXJuIGg/KHQueD1zLHQueT1pLHQpOm51bGx9LG5hbWVzOlsiZ2F1c3MiXX0sZXM9e2luaXQ6ZnVuY3Rpb24oKXtocy5pbml0LmFwcGx5KHRoaXMpLHRoaXMucmMmJih0aGlzLnNpbmMwPU1hdGguc2luKHRoaXMucGhpYzApLHRoaXMuY29zYzA9TWF0aC5jb3ModGhpcy5waGljMCksdGhpcy5SMj0yKnRoaXMucmMsdGhpcy50aXRsZXx8KHRoaXMudGl0bGU9Ik9ibGlxdWUgU3RlcmVvZ3JhcGhpYyBBbHRlcm5hdGl2ZSIpKX0sZm9yd2FyZDpmdW5jdGlvbih0KXt2YXIgcyxpLGEsaDtyZXR1cm4gdC54PW50KHQueC10aGlzLmxvbmcwKSxocy5mb3J3YXJkLmFwcGx5KHRoaXMsW3RdKSxzPU1hdGguc2luKHQueSksaT1NYXRoLmNvcyh0LnkpLGE9TWF0aC5jb3ModC54KSxoPXRoaXMuazAqdGhpcy5SMi8oMSt0aGlzLnNpbmMwKnMrdGhpcy5jb3NjMCppKmEpLHQueD1oKmkqTWF0aC5zaW4odC54KSx0Lnk9aCoodGhpcy5jb3NjMCpzLXRoaXMuc2luYzAqaSphKSx0Lng9dGhpcy5hKnQueCt0aGlzLngwLHQueT10aGlzLmEqdC55K3RoaXMueTAsdH0saW52ZXJzZTpmdW5jdGlvbih0KXt2YXIgcyxpLGEsaCxlLG47cmV0dXJuIHQueD0odC54LXRoaXMueDApL3RoaXMuYSx0Lnk9KHQueS10aGlzLnkwKS90aGlzLmEsdC54Lz10aGlzLmswLHQueS89dGhpcy5rMCxuPShzPU1hdGguc3FydCh0LngqdC54K3QueSp0LnkpKT8oaT0yKk1hdGguYXRhbjIocyx0aGlzLlIyKSxhPU1hdGguc2luKGkpLGg9TWF0aC5jb3MoaSksZT1NYXRoLmFzaW4oaCp0aGlzLnNpbmMwK3QueSphKnRoaXMuY29zYzAvcyksTWF0aC5hdGFuMih0LngqYSxzKnRoaXMuY29zYzAqaC10LnkqdGhpcy5zaW5jMCphKSk6KGU9dGhpcy5waGljMCwwKSx0Lng9bix0Lnk9ZSxocy5pbnZlcnNlLmFwcGx5KHRoaXMsW3RdKSx0Lng9bnQodC54K3RoaXMubG9uZzApLHR9LG5hbWVzOlsiU3RlcmVvZ3JhcGhpY19Ob3J0aF9Qb2xlIiwiT2JsaXF1ZV9TdGVyZW9ncmFwaGljIiwiUG9sYXJfU3RlcmVvZ3JhcGhpYyIsInN0ZXJlYSIsIk9ibGlxdWUgU3RlcmVvZ3JhcGhpYyBBbHRlcm5hdGl2ZSIsIkRvdWJsZV9TdGVyZW9ncmFwaGljIl19LG5zPXtpbml0OmZ1bmN0aW9uKCl7dGhpcy5jb3NsYXQwPU1hdGguY29zKHRoaXMubGF0MCksdGhpcy5zaW5sYXQwPU1hdGguc2luKHRoaXMubGF0MCksdGhpcy5zcGhlcmU/MT09PXRoaXMuazAmJiFpc05hTih0aGlzLmxhdF90cykmJk1hdGguYWJzKHRoaXMuY29zbGF0MCk8PUQmJih0aGlzLmswPS41KigxK2V0KHRoaXMubGF0MCkqTWF0aC5zaW4odGhpcy5sYXRfdHMpKSk6KE1hdGguYWJzKHRoaXMuY29zbGF0MCk8PUQmJigwPHRoaXMubGF0MD90aGlzLmNvbj0xOnRoaXMuY29uPS0xKSx0aGlzLmNvbnM9TWF0aC5zcXJ0KE1hdGgucG93KDErdGhpcy5lLDErdGhpcy5lKSpNYXRoLnBvdygxLXRoaXMuZSwxLXRoaXMuZSkpLDE9PT10aGlzLmswJiYhaXNOYU4odGhpcy5sYXRfdHMpJiZNYXRoLmFicyh0aGlzLmNvc2xhdDApPD1EJiYodGhpcy5rMD0uNSp0aGlzLmNvbnMqaHQodGhpcy5lLE1hdGguc2luKHRoaXMubGF0X3RzKSxNYXRoLmNvcyh0aGlzLmxhdF90cykpL3J0KHRoaXMuZSx0aGlzLmNvbip0aGlzLmxhdF90cyx0aGlzLmNvbipNYXRoLnNpbih0aGlzLmxhdF90cykpKSx0aGlzLm1zMT1odCh0aGlzLmUsdGhpcy5zaW5sYXQwLHRoaXMuY29zbGF0MCksdGhpcy5YMD0yKk1hdGguYXRhbih0aGlzLnNzZm5fKHRoaXMubGF0MCx0aGlzLnNpbmxhdDAsdGhpcy5lKSkteix0aGlzLmNvc1gwPU1hdGguY29zKHRoaXMuWDApLHRoaXMuc2luWDA9TWF0aC5zaW4odGhpcy5YMCkpfSxmb3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBzLGksYSxoLGUsbixyPXQueCxvPXQueSxsPU1hdGguc2luKG8pLE09TWF0aC5jb3MobyksYz1udChyLXRoaXMubG9uZzApO3JldHVybiBNYXRoLmFicyhNYXRoLmFicyhyLXRoaXMubG9uZzApLU1hdGguUEkpPD1EJiZNYXRoLmFicyhvK3RoaXMubGF0MCk8PUQ/KHQueD1OYU4sdC55PU5hTik6dGhpcy5zcGhlcmU/KHM9Mip0aGlzLmswLygxK3RoaXMuc2lubGF0MCpsK3RoaXMuY29zbGF0MCpNKk1hdGguY29zKGMpKSx0Lng9dGhpcy5hKnMqTSpNYXRoLnNpbihjKSt0aGlzLngwLHQueT10aGlzLmEqcyoodGhpcy5jb3NsYXQwKmwtdGhpcy5zaW5sYXQwKk0qTWF0aC5jb3MoYykpK3RoaXMueTApOihpPTIqTWF0aC5hdGFuKHRoaXMuc3Nmbl8obyxsLHRoaXMuZSkpLXosaD1NYXRoLmNvcyhpKSxhPU1hdGguc2luKGkpLE1hdGguYWJzKHRoaXMuY29zbGF0MCk8PUQ/KGU9cnQodGhpcy5lLG8qdGhpcy5jb24sdGhpcy5jb24qbCksbj0yKnRoaXMuYSp0aGlzLmswKmUvdGhpcy5jb25zLHQueD10aGlzLngwK24qTWF0aC5zaW4oci10aGlzLmxvbmcwKSx0Lnk9dGhpcy55MC10aGlzLmNvbipuKk1hdGguY29zKHItdGhpcy5sb25nMCkpOihNYXRoLmFicyh0aGlzLnNpbmxhdDApPEQ/KHM9Mip0aGlzLmEqdGhpcy5rMC8oMStoKk1hdGguY29zKGMpKSx0Lnk9cyphKToocz0yKnRoaXMuYSp0aGlzLmswKnRoaXMubXMxLyh0aGlzLmNvc1gwKigxK3RoaXMuc2luWDAqYSt0aGlzLmNvc1gwKmgqTWF0aC5jb3MoYykpKSx0Lnk9cyoodGhpcy5jb3NYMCphLXRoaXMuc2luWDAqaCpNYXRoLmNvcyhjKSkrdGhpcy55MCksdC54PXMqaCpNYXRoLnNpbihjKSt0aGlzLngwKSksdH0saW52ZXJzZTpmdW5jdGlvbih0KXt0LngtPXRoaXMueDAsdC55LT10aGlzLnkwO3ZhciBzLGksYSxoPU1hdGguc3FydCh0LngqdC54K3QueSp0LnkpO2lmKHRoaXMuc3BoZXJlKXt2YXIgZT0yKk1hdGguYXRhbihoLygyKnRoaXMuYSp0aGlzLmswKSksbj10aGlzLmxvbmcwLHI9dGhpcy5sYXQwO3JldHVybiBoPD1EfHwocj1NYXRoLmFzaW4oTWF0aC5jb3MoZSkqdGhpcy5zaW5sYXQwK3QueSpNYXRoLnNpbihlKSp0aGlzLmNvc2xhdDAvaCksbj1udChNYXRoLmFicyh0aGlzLmNvc2xhdDApPEQ/MDx0aGlzLmxhdDA/dGhpcy5sb25nMCtNYXRoLmF0YW4yKHQueCwtMSp0LnkpOnRoaXMubG9uZzArTWF0aC5hdGFuMih0LngsdC55KTp0aGlzLmxvbmcwK01hdGguYXRhbjIodC54Kk1hdGguc2luKGUpLGgqdGhpcy5jb3NsYXQwKk1hdGguY29zKGUpLXQueSp0aGlzLnNpbmxhdDAqTWF0aC5zaW4oZSkpKSksdC54PW4sdC55PXIsdH1pZihNYXRoLmFicyh0aGlzLmNvc2xhdDApPD1EKXtpZihoPD1EKXJldHVybiByPXRoaXMubGF0MCxuPXRoaXMubG9uZzAsdC54PW4sdC55PXIsdDt0LngqPXRoaXMuY29uLHQueSo9dGhpcy5jb24scz1oKnRoaXMuY29ucy8oMip0aGlzLmEqdGhpcy5rMCkscj10aGlzLmNvbipvdCh0aGlzLmUscyksbj10aGlzLmNvbipudCh0aGlzLmNvbip0aGlzLmxvbmcwK01hdGguYXRhbjIodC54LC0xKnQueSkpfWVsc2UgaT0yKk1hdGguYXRhbihoKnRoaXMuY29zWDAvKDIqdGhpcy5hKnRoaXMuazAqdGhpcy5tczEpKSxuPXRoaXMubG9uZzAsaDw9RD9hPXRoaXMuWDA6KGE9TWF0aC5hc2luKE1hdGguY29zKGkpKnRoaXMuc2luWDArdC55Kk1hdGguc2luKGkpKnRoaXMuY29zWDAvaCksbj1udCh0aGlzLmxvbmcwK01hdGguYXRhbjIodC54Kk1hdGguc2luKGkpLGgqdGhpcy5jb3NYMCpNYXRoLmNvcyhpKS10LnkqdGhpcy5zaW5YMCpNYXRoLnNpbihpKSkpKSxyPS0xKm90KHRoaXMuZSxNYXRoLnRhbiguNSooeithKSkpO3JldHVybiB0Lng9bix0Lnk9cix0fSxuYW1lczpbInN0ZXJlIiwiU3RlcmVvZ3JhcGhpY19Tb3V0aF9Qb2xlIiwiUG9sYXIgU3RlcmVvZ3JhcGhpYyAodmFyaWFudCBCKSJdLHNzZm5fOmZ1bmN0aW9uKHQscyxpKXtyZXR1cm4gcyo9aSxNYXRoLnRhbiguNSooeit0KSkqTWF0aC5wb3coKDEtcykvKDErcyksLjUqaSl9fSxycz17aW5pdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubGF0MDt0aGlzLmxhbWJkYTA9dGhpcy5sb25nMDt2YXIgcz1NYXRoLnNpbih0KSxpPXRoaXMuYSxhPTEvdGhpcy5yZixoPTIqYS1NYXRoLnBvdyhhLDIpLGU9dGhpcy5lPU1hdGguc3FydChoKTt0aGlzLlI9dGhpcy5rMCppKk1hdGguc3FydCgxLWgpLygxLWgqTWF0aC5wb3cocywyKSksdGhpcy5hbHBoYT1NYXRoLnNxcnQoMStoLygxLWgpKk1hdGgucG93KE1hdGguY29zKHQpLDQpKSx0aGlzLmIwPU1hdGguYXNpbihzL3RoaXMuYWxwaGEpO3ZhciBuPU1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkvNCt0aGlzLmIwLzIpKSxyPU1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkvNCt0LzIpKSxvPU1hdGgubG9nKCgxK2UqcykvKDEtZSpzKSk7dGhpcy5LPW4tdGhpcy5hbHBoYSpyK3RoaXMuYWxwaGEqZS8yKm99LGZvcndhcmQ6ZnVuY3Rpb24odCl7dmFyIHM9TWF0aC5sb2coTWF0aC50YW4oTWF0aC5QSS80LXQueS8yKSksaT10aGlzLmUvMipNYXRoLmxvZygoMSt0aGlzLmUqTWF0aC5zaW4odC55KSkvKDEtdGhpcy5lKk1hdGguc2luKHQueSkpKSxhPS10aGlzLmFscGhhKihzK2kpK3RoaXMuSyxoPTIqKE1hdGguYXRhbihNYXRoLmV4cChhKSktTWF0aC5QSS80KSxlPXRoaXMuYWxwaGEqKHQueC10aGlzLmxhbWJkYTApLG49TWF0aC5hdGFuKE1hdGguc2luKGUpLyhNYXRoLnNpbih0aGlzLmIwKSpNYXRoLnRhbihoKStNYXRoLmNvcyh0aGlzLmIwKSpNYXRoLmNvcyhlKSkpLHI9TWF0aC5hc2luKE1hdGguY29zKHRoaXMuYjApKk1hdGguc2luKGgpLU1hdGguc2luKHRoaXMuYjApKk1hdGguY29zKGgpKk1hdGguY29zKGUpKTtyZXR1cm4gdC55PXRoaXMuUi8yKk1hdGgubG9nKCgxK01hdGguc2luKHIpKS8oMS1NYXRoLnNpbihyKSkpK3RoaXMueTAsdC54PXRoaXMuUipuK3RoaXMueDAsdH0saW52ZXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIHM9dC54LXRoaXMueDAsaT10LnktdGhpcy55MCxhPXMvdGhpcy5SLGg9MiooTWF0aC5hdGFuKE1hdGguZXhwKGkvdGhpcy5SKSktTWF0aC5QSS80KSxlPU1hdGguYXNpbihNYXRoLmNvcyh0aGlzLmIwKSpNYXRoLnNpbihoKStNYXRoLnNpbih0aGlzLmIwKSpNYXRoLmNvcyhoKSpNYXRoLmNvcyhhKSksbj1NYXRoLmF0YW4oTWF0aC5zaW4oYSkvKE1hdGguY29zKHRoaXMuYjApKk1hdGguY29zKGEpLU1hdGguc2luKHRoaXMuYjApKk1hdGgudGFuKGgpKSkscj10aGlzLmxhbWJkYTArbi90aGlzLmFscGhhLG89MCxsPWUsTT0tMWUzLGM9MDsxZS03PE1hdGguYWJzKGwtTSk7KXtpZigyMDwrK2MpcmV0dXJuO289MS90aGlzLmFscGhhKihNYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrZS8yKSktdGhpcy5LKSt0aGlzLmUqTWF0aC5sb2coTWF0aC50YW4oTWF0aC5QSS80K01hdGguYXNpbih0aGlzLmUqTWF0aC5zaW4obCkpLzIpKSxNPWwsbD0yKk1hdGguYXRhbihNYXRoLmV4cChvKSktTWF0aC5QSS8yfXJldHVybiB0Lng9cix0Lnk9bCx0fSxuYW1lczpbInNvbWVyYyJdfSxvcz17aW5pdDpmdW5jdGlvbigpe3RoaXMubm9fb2ZmPXRoaXMubm9fb2ZmfHwhMSx0aGlzLm5vX3JvdD10aGlzLm5vX3JvdHx8ITEsaXNOYU4odGhpcy5rMCkmJih0aGlzLmswPTEpO3ZhciB0PU1hdGguc2luKHRoaXMubGF0MCkscz1NYXRoLmNvcyh0aGlzLmxhdDApLGk9dGhpcy5lKnQ7dGhpcy5ibD1NYXRoLnNxcnQoMSt0aGlzLmVzLygxLXRoaXMuZXMpKk1hdGgucG93KHMsNCkpLHRoaXMuYWw9dGhpcy5hKnRoaXMuYmwqdGhpcy5rMCpNYXRoLnNxcnQoMS10aGlzLmVzKS8oMS1pKmkpO3ZhciBhLGgsZSxuLHIsbyxsLE0sYyx1LGY9cnQodGhpcy5lLHRoaXMubGF0MCx0KSxtPXRoaXMuYmwvcypNYXRoLnNxcnQoKDEtdGhpcy5lcykvKDEtaSppKSk7bSptPDEmJihtPTEpLGlzTmFOKHRoaXMubG9uZ2MpPyhoPXJ0KHRoaXMuZSx0aGlzLmxhdDEsTWF0aC5zaW4odGhpcy5sYXQxKSksZT1ydCh0aGlzLmUsdGhpcy5sYXQyLE1hdGguc2luKHRoaXMubGF0MikpLDA8PXRoaXMubGF0MD90aGlzLmVsPShtK01hdGguc3FydChtKm0tMSkpKk1hdGgucG93KGYsdGhpcy5ibCk6dGhpcy5lbD0obS1NYXRoLnNxcnQobSptLTEpKSpNYXRoLnBvdyhmLHRoaXMuYmwpLG49TWF0aC5wb3coaCx0aGlzLmJsKSxyPU1hdGgucG93KGUsdGhpcy5ibCksbz0uNSooKGE9dGhpcy5lbC9uKS0xL2EpLGw9KHRoaXMuZWwqdGhpcy5lbC1yKm4pLyh0aGlzLmVsKnRoaXMuZWwrcipuKSxNPShyLW4pLyhyK24pLGM9bnQodGhpcy5sb25nMS10aGlzLmxvbmcyKSx0aGlzLmxvbmcwPS41Kih0aGlzLmxvbmcxK3RoaXMubG9uZzIpLU1hdGguYXRhbihsKk1hdGgudGFuKC41KnRoaXMuYmwqYykvTSkvdGhpcy5ibCx0aGlzLmxvbmcwPW50KHRoaXMubG9uZzApLHU9bnQodGhpcy5sb25nMS10aGlzLmxvbmcwKSx0aGlzLmdhbW1hMD1NYXRoLmF0YW4oTWF0aC5zaW4odGhpcy5ibCp1KS9vKSx0aGlzLmFscGhhPU1hdGguYXNpbihtKk1hdGguc2luKHRoaXMuZ2FtbWEwKSkpOihhPTA8PXRoaXMubGF0MD9tK01hdGguc3FydChtKm0tMSk6bS1NYXRoLnNxcnQobSptLTEpLHRoaXMuZWw9YSpNYXRoLnBvdyhmLHRoaXMuYmwpLG89LjUqKGEtMS9hKSx0aGlzLmdhbW1hMD1NYXRoLmFzaW4oTWF0aC5zaW4odGhpcy5hbHBoYSkvbSksdGhpcy5sb25nMD10aGlzLmxvbmdjLU1hdGguYXNpbihvKk1hdGgudGFuKHRoaXMuZ2FtbWEwKSkvdGhpcy5ibCksdGhpcy5ub19vZmY/dGhpcy51Yz0wOjA8PXRoaXMubGF0MD90aGlzLnVjPXRoaXMuYWwvdGhpcy5ibCpNYXRoLmF0YW4yKE1hdGguc3FydChtKm0tMSksTWF0aC5jb3ModGhpcy5hbHBoYSkpOnRoaXMudWM9LTEqdGhpcy5hbC90aGlzLmJsKk1hdGguYXRhbjIoTWF0aC5zcXJ0KG0qbS0xKSxNYXRoLmNvcyh0aGlzLmFscGhhKSl9LGZvcndhcmQ6ZnVuY3Rpb24odCl7dmFyIHMsaSxhLGgsZSxuLHIsbyxsLE09dC54LGM9dC55LHU9bnQoTS10aGlzLmxvbmcwKTtyZXR1cm4gbD1NYXRoLmFicyhNYXRoLmFicyhjKS16KTw9RD8ocz0wPGM/LTE6MSxvPXRoaXMuYWwvdGhpcy5ibCpNYXRoLmxvZyhNYXRoLnRhbihVK3MqdGhpcy5nYW1tYTAqLjUpKSwtMSpzKnoqdGhpcy5hbC90aGlzLmJsKTooaT1ydCh0aGlzLmUsYyxNYXRoLnNpbihjKSksaD0uNSooKGE9dGhpcy5lbC9NYXRoLnBvdyhpLHRoaXMuYmwpKS0xL2EpLGU9LjUqKGErMS9hKSxuPU1hdGguc2luKHRoaXMuYmwqdSkscj0oaCpNYXRoLnNpbih0aGlzLmdhbW1hMCktbipNYXRoLmNvcyh0aGlzLmdhbW1hMCkpL2Usbz1NYXRoLmFicyhNYXRoLmFicyhyKS0xKTw9RD9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk6LjUqdGhpcy5hbCpNYXRoLmxvZygoMS1yKS8oMStyKSkvdGhpcy5ibCxNYXRoLmFicyhNYXRoLmNvcyh0aGlzLmJsKnUpKTw9RD90aGlzLmFsKnRoaXMuYmwqdTp0aGlzLmFsKk1hdGguYXRhbjIoaCpNYXRoLmNvcyh0aGlzLmdhbW1hMCkrbipNYXRoLnNpbih0aGlzLmdhbW1hMCksTWF0aC5jb3ModGhpcy5ibCp1KSkvdGhpcy5ibCksdGhpcy5ub19yb3Q/KHQueD10aGlzLngwK2wsdC55PXRoaXMueTArbyk6KGwtPXRoaXMudWMsdC54PXRoaXMueDArbypNYXRoLmNvcyh0aGlzLmFscGhhKStsKk1hdGguc2luKHRoaXMuYWxwaGEpLHQueT10aGlzLnkwK2wqTWF0aC5jb3ModGhpcy5hbHBoYSktbypNYXRoLnNpbih0aGlzLmFscGhhKSksdH0saW52ZXJzZTpmdW5jdGlvbih0KXt2YXIgcyxpO3RoaXMubm9fcm90PyhpPXQueS10aGlzLnkwLHM9dC54LXRoaXMueDApOihpPSh0LngtdGhpcy54MCkqTWF0aC5jb3ModGhpcy5hbHBoYSktKHQueS10aGlzLnkwKSpNYXRoLnNpbih0aGlzLmFscGhhKSxzPSh0LnktdGhpcy55MCkqTWF0aC5jb3ModGhpcy5hbHBoYSkrKHQueC10aGlzLngwKSpNYXRoLnNpbih0aGlzLmFscGhhKSxzKz10aGlzLnVjKTt2YXIgYT1NYXRoLmV4cCgtMSp0aGlzLmJsKmkvdGhpcy5hbCksaD0uNSooYS0xL2EpLGU9LjUqKGErMS9hKSxuPU1hdGguc2luKHRoaXMuYmwqcy90aGlzLmFsKSxyPShuKk1hdGguY29zKHRoaXMuZ2FtbWEwKStoKk1hdGguc2luKHRoaXMuZ2FtbWEwKSkvZSxvPU1hdGgucG93KHRoaXMuZWwvTWF0aC5zcXJ0KCgxK3IpLygxLXIpKSwxL3RoaXMuYmwpO3JldHVybiBNYXRoLmFicyhyLTEpPEQ/KHQueD10aGlzLmxvbmcwLHQueT16KTpNYXRoLmFicygxK3IpPEQ/KHQueD10aGlzLmxvbmcwLHQueT0tMSp6KToodC55PW90KHRoaXMuZSxvKSx0Lng9bnQodGhpcy5sb25nMC1NYXRoLmF0YW4yKGgqTWF0aC5jb3ModGhpcy5nYW1tYTApLW4qTWF0aC5zaW4odGhpcy5nYW1tYTApLE1hdGguY29zKHRoaXMuYmwqcy90aGlzLmFsKSkvdGhpcy5ibCkpLHR9LG5hbWVzOlsiSG90aW5lX09ibGlxdWVfTWVyY2F0b3IiLCJIb3RpbmUgT2JsaXF1ZSBNZXJjYXRvciIsIkhvdGluZV9PYmxpcXVlX01lcmNhdG9yX0F6aW11dGhfTmF0dXJhbF9PcmlnaW4iLCJIb3RpbmVfT2JsaXF1ZV9NZXJjYXRvcl9BemltdXRoX0NlbnRlciIsIm9tZXJjIl19LGxzPXtpbml0OmZ1bmN0aW9uKCl7dmFyIHQscyxpLGEsaCxlLG4scixvLGw7dGhpcy5sYXQyfHwodGhpcy5sYXQyPXRoaXMubGF0MSksdGhpcy5rMHx8KHRoaXMuazA9MSksdGhpcy54MD10aGlzLngwfHwwLHRoaXMueTA9dGhpcy55MHx8MCxNYXRoLmFicyh0aGlzLmxhdDErdGhpcy5sYXQyKTxEfHwodD10aGlzLmIvdGhpcy5hLHRoaXMuZT1NYXRoLnNxcnQoMS10KnQpLHM9TWF0aC5zaW4odGhpcy5sYXQxKSxpPU1hdGguY29zKHRoaXMubGF0MSksYT1odCh0aGlzLmUscyxpKSxoPXJ0KHRoaXMuZSx0aGlzLmxhdDEscyksZT1NYXRoLnNpbih0aGlzLmxhdDIpLG49TWF0aC5jb3ModGhpcy5sYXQyKSxyPWh0KHRoaXMuZSxlLG4pLG89cnQodGhpcy5lLHRoaXMubGF0MixlKSxsPXJ0KHRoaXMuZSx0aGlzLmxhdDAsTWF0aC5zaW4odGhpcy5sYXQwKSksTWF0aC5hYnModGhpcy5sYXQxLXRoaXMubGF0Mik+RD90aGlzLm5zPU1hdGgubG9nKGEvcikvTWF0aC5sb2coaC9vKTp0aGlzLm5zPXMsaXNOYU4odGhpcy5ucykmJih0aGlzLm5zPXMpLHRoaXMuZjA9YS8odGhpcy5ucypNYXRoLnBvdyhoLHRoaXMubnMpKSx0aGlzLnJoPXRoaXMuYSp0aGlzLmYwKk1hdGgucG93KGwsdGhpcy5ucyksdGhpcy50aXRsZXx8KHRoaXMudGl0bGU9IkxhbWJlcnQgQ29uZm9ybWFsIENvbmljIikpfSxmb3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBzPXQueCxpPXQueTtNYXRoLmFicygyKk1hdGguYWJzKGkpLU1hdGguUEkpPD1EJiYoaT1ldChpKSooei0yKkQpKTt2YXIgYSxoLGU9TWF0aC5hYnMoTWF0aC5hYnMoaSkteik7aWYoRDxlKWE9cnQodGhpcy5lLGksTWF0aC5zaW4oaSkpLGg9dGhpcy5hKnRoaXMuZjAqTWF0aC5wb3coYSx0aGlzLm5zKTtlbHNle2lmKChlPWkqdGhpcy5ucyk8PTApcmV0dXJuIG51bGw7aD0wfXZhciBuPXRoaXMubnMqbnQocy10aGlzLmxvbmcwKTtyZXR1cm4gdC54PXRoaXMuazAqKGgqTWF0aC5zaW4obikpK3RoaXMueDAsdC55PXRoaXMuazAqKHRoaXMucmgtaCpNYXRoLmNvcyhuKSkrdGhpcy55MCx0fSxpbnZlcnNlOmZ1bmN0aW9uKHQpe3ZhciBzLGksYSxoLGU9KHQueC10aGlzLngwKS90aGlzLmswLG49dGhpcy5yaC0odC55LXRoaXMueTApL3RoaXMuazAscj0wPHRoaXMubnM/KHM9TWF0aC5zcXJ0KGUqZStuKm4pLDEpOihzPS1NYXRoLnNxcnQoZSplK24qbiksLTEpLG89MDtpZigwIT09cyYmKG89TWF0aC5hdGFuMihyKmUscipuKSksMCE9PXN8fDA8dGhpcy5ucyl7aWYocj0xL3RoaXMubnMsaT1NYXRoLnBvdyhzLyh0aGlzLmEqdGhpcy5mMCksciksLTk5OTk9PT0oYT1vdCh0aGlzLmUsaSkpKXJldHVybiBudWxsfWVsc2UgYT0tejtyZXR1cm4gaD1udChvL3RoaXMubnMrdGhpcy5sb25nMCksdC54PWgsdC55PWEsdH0sbmFtZXM6WyJMYW1iZXJ0IFRhbmdlbnRpYWwgQ29uZm9ybWFsIENvbmljIFByb2plY3Rpb24iLCJMYW1iZXJ0X0NvbmZvcm1hbF9Db25pYyIsIkxhbWJlcnRfQ29uZm9ybWFsX0NvbmljXzJTUCIsImxjYyJdfSxNcz17aW5pdDpmdW5jdGlvbigpe3RoaXMuYT02Mzc3Mzk3LjE1NSx0aGlzLmVzPS4wMDY2NzQzNzIyMzA2MTQsdGhpcy5lPU1hdGguc3FydCh0aGlzLmVzKSx0aGlzLmxhdDB8fCh0aGlzLmxhdDA9Ljg2MzkzNzk3OTczNzE5MyksdGhpcy5sb25nMHx8KHRoaXMubG9uZzA9LjQzMzQyMzQzMDkxMTkyNTEpLHRoaXMuazB8fCh0aGlzLmswPS45OTk5KSx0aGlzLnM0NT0uNzg1Mzk4MTYzMzk3NDQ4LHRoaXMuczkwPTIqdGhpcy5zNDUsdGhpcy5maTA9dGhpcy5sYXQwLHRoaXMuZTI9dGhpcy5lcyx0aGlzLmU9TWF0aC5zcXJ0KHRoaXMuZTIpLHRoaXMuYWxmYT1NYXRoLnNxcnQoMSt0aGlzLmUyKk1hdGgucG93KE1hdGguY29zKHRoaXMuZmkwKSw0KS8oMS10aGlzLmUyKSksdGhpcy51cT0xLjA0MjE2ODU2MzgwNDc0LHRoaXMudTA9TWF0aC5hc2luKE1hdGguc2luKHRoaXMuZmkwKS90aGlzLmFsZmEpLHRoaXMuZz1NYXRoLnBvdygoMSt0aGlzLmUqTWF0aC5zaW4odGhpcy5maTApKS8oMS10aGlzLmUqTWF0aC5zaW4odGhpcy5maTApKSx0aGlzLmFsZmEqdGhpcy5lLzIpLHRoaXMuaz1NYXRoLnRhbih0aGlzLnUwLzIrdGhpcy5zNDUpL01hdGgucG93KE1hdGgudGFuKHRoaXMuZmkwLzIrdGhpcy5zNDUpLHRoaXMuYWxmYSkqdGhpcy5nLHRoaXMuazE9dGhpcy5rMCx0aGlzLm4wPXRoaXMuYSpNYXRoLnNxcnQoMS10aGlzLmUyKS8oMS10aGlzLmUyKk1hdGgucG93KE1hdGguc2luKHRoaXMuZmkwKSwyKSksdGhpcy5zMD0xLjM3MDA4MzQ2MjgxNTU1LHRoaXMubj1NYXRoLnNpbih0aGlzLnMwKSx0aGlzLnJvMD10aGlzLmsxKnRoaXMubjAvTWF0aC50YW4odGhpcy5zMCksdGhpcy5hZD10aGlzLnM5MC10aGlzLnVxfSxmb3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBzPXQueCxpPXQueSxhPW50KHMtdGhpcy5sb25nMCksaD1NYXRoLnBvdygoMSt0aGlzLmUqTWF0aC5zaW4oaSkpLygxLXRoaXMuZSpNYXRoLnNpbihpKSksdGhpcy5hbGZhKnRoaXMuZS8yKSxlPTIqKE1hdGguYXRhbih0aGlzLmsqTWF0aC5wb3coTWF0aC50YW4oaS8yK3RoaXMuczQ1KSx0aGlzLmFsZmEpL2gpLXRoaXMuczQ1KSxuPS1hKnRoaXMuYWxmYSxyPU1hdGguYXNpbihNYXRoLmNvcyh0aGlzLmFkKSpNYXRoLnNpbihlKStNYXRoLnNpbih0aGlzLmFkKSpNYXRoLmNvcyhlKSpNYXRoLmNvcyhuKSksbz1NYXRoLmFzaW4oTWF0aC5jb3MoZSkqTWF0aC5zaW4obikvTWF0aC5jb3MocikpLGw9dGhpcy5uKm8sTT10aGlzLnJvMCpNYXRoLnBvdyhNYXRoLnRhbih0aGlzLnMwLzIrdGhpcy5zNDUpLHRoaXMubikvTWF0aC5wb3coTWF0aC50YW4oci8yK3RoaXMuczQ1KSx0aGlzLm4pO3JldHVybiB0Lnk9TSpNYXRoLmNvcyhsKSx0Lng9TSpNYXRoLnNpbihsKSx0aGlzLmN6ZWNofHwodC55Kj0tMSx0LngqPS0xKSx0fSxpbnZlcnNlOmZ1bmN0aW9uKHQpe3ZhciBzLGksYSxoLGUsbixyLG89dC54O3QueD10LnksdC55PW8sdGhpcy5jemVjaHx8KHQueSo9LTEsdC54Kj0tMSksZT1NYXRoLnNxcnQodC54KnQueCt0LnkqdC55KSxoPU1hdGguYXRhbjIodC55LHQueCkvTWF0aC5zaW4odGhpcy5zMCksYT0yKihNYXRoLmF0YW4oTWF0aC5wb3codGhpcy5ybzAvZSwxL3RoaXMubikqTWF0aC50YW4odGhpcy5zMC8yK3RoaXMuczQ1KSktdGhpcy5zNDUpLHM9TWF0aC5hc2luKE1hdGguY29zKHRoaXMuYWQpKk1hdGguc2luKGEpLU1hdGguc2luKHRoaXMuYWQpKk1hdGguY29zKGEpKk1hdGguY29zKGgpKSxpPU1hdGguYXNpbihNYXRoLmNvcyhhKSpNYXRoLnNpbihoKS9NYXRoLmNvcyhzKSksdC54PXRoaXMubG9uZzAtaS90aGlzLmFsZmEsbj1zO2Zvcih2YXIgbD1yPTA7dC55PTIqKE1hdGguYXRhbihNYXRoLnBvdyh0aGlzLmssLTEvdGhpcy5hbGZhKSpNYXRoLnBvdyhNYXRoLnRhbihzLzIrdGhpcy5zNDUpLDEvdGhpcy5hbGZhKSpNYXRoLnBvdygoMSt0aGlzLmUqTWF0aC5zaW4obikpLygxLXRoaXMuZSpNYXRoLnNpbihuKSksdGhpcy5lLzIpKS10aGlzLnM0NSksTWF0aC5hYnMobi10LnkpPDFlLTEwJiYocj0xKSxuPXQueSxsKz0xLDA9PT1yJiZsPDE1Oyk7cmV0dXJuIDE1PD1sP251bGw6dH0sbmFtZXM6WyJLcm92YWsiLCJrcm92YWsiXX0sY3M9e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLnNwaGVyZXx8KHRoaXMuZTA9RnQodGhpcy5lcyksdGhpcy5lMT1RdCh0aGlzLmVzKSx0aGlzLmUyPVd0KHRoaXMuZXMpLHRoaXMuZTM9WHQodGhpcy5lcyksdGhpcy5tbDA9dGhpcy5hKlV0KHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsdGhpcy5sYXQwKSl9LGZvcndhcmQ6ZnVuY3Rpb24odCl7dmFyIHMsaSxhLGgsZSxuLHIsbyxsLE09dC54LGM9dC55LE09bnQoTS10aGlzLmxvbmcwKTtyZXR1cm4gbD10aGlzLnNwaGVyZT8obz10aGlzLmEqTWF0aC5hc2luKE1hdGguY29zKGMpKk1hdGguc2luKE0pKSx0aGlzLmEqKE1hdGguYXRhbjIoTWF0aC50YW4oYyksTWF0aC5jb3MoTSkpLXRoaXMubGF0MCkpOihzPU1hdGguc2luKGMpLGk9TWF0aC5jb3MoYyksYT1IdCh0aGlzLmEsdGhpcy5lLHMpLGg9TWF0aC50YW4oYykqTWF0aC50YW4oYyksbz1hKihlPU0qTWF0aC5jb3MoYykpKigxLShuPWUqZSkqaCooMS82LSg4LWgrOCoocj10aGlzLmVzKmkqaS8oMS10aGlzLmVzKSkpKm4vMTIwKSksdGhpcy5hKlV0KHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsYyktdGhpcy5tbDArYSpzL2kqbiooLjUrKDUtaCs2KnIpKm4vMjQpKSx0Lng9byt0aGlzLngwLHQueT1sK3RoaXMueTAsdH0saW52ZXJzZTpmdW5jdGlvbih0KXt0LngtPXRoaXMueDAsdC55LT10aGlzLnkwO3ZhciBzPXQueC90aGlzLmEsaT10LnkvdGhpcy5hO2lmKHRoaXMuc3BoZXJlKXZhciBhPWkrdGhpcy5sYXQwLGg9TWF0aC5hc2luKE1hdGguc2luKGEpKk1hdGguY29zKHMpKSxlPU1hdGguYXRhbjIoTWF0aC50YW4ocyksTWF0aC5jb3MoYSkpO2Vsc2V7dmFyIG49dGhpcy5tbDAvdGhpcy5hK2kscj1LdChuLHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMpO2lmKE1hdGguYWJzKE1hdGguYWJzKHIpLXopPD1EKXJldHVybiB0Lng9dGhpcy5sb25nMCx0Lnk9eixpPDAmJih0LnkqPS0xKSx0O3ZhciBvPUh0KHRoaXMuYSx0aGlzLmUsTWF0aC5zaW4ocikpLGw9bypvKm8vdGhpcy5hL3RoaXMuYSooMS10aGlzLmVzKSxNPU1hdGgucG93KE1hdGgudGFuKHIpLDIpLGM9cyp0aGlzLmEvbyx1PWMqYztoPXItbypNYXRoLnRhbihyKS9sKmMqYyooLjUtKDErMypNKSpjKmMvMjQpLGU9YyooMS11KihNLzMrKDErMypNKSpNKnUvMTUpKS9NYXRoLmNvcyhyKX1yZXR1cm4gdC54PW50KGUrdGhpcy5sb25nMCksdC55PUp0KGgpLHR9LG5hbWVzOlsiQ2Fzc2luaSIsIkNhc3NpbmlfU29sZG5lciIsImNhc3MiXX0sdXM9e2luaXQ6ZnVuY3Rpb24oKXt2YXIgdCxzLGksYSxoPU1hdGguYWJzKHRoaXMubGF0MCk7aWYoTWF0aC5hYnMoaC16KTxEP3RoaXMubW9kZT10aGlzLmxhdDA8MD90aGlzLlNfUE9MRTp0aGlzLk5fUE9MRTpNYXRoLmFicyhoKTxEP3RoaXMubW9kZT10aGlzLkVRVUlUOnRoaXMubW9kZT10aGlzLk9CTElRLDA8dGhpcy5lcylzd2l0Y2godGhpcy5xcD1WdCh0aGlzLmUsMSksdGhpcy5tbWY9LjUvKDEtdGhpcy5lcyksdGhpcy5hcGE9KHM9dGhpcy5lcywoYT1bXSlbMF09LjMzMzMzMzMzMzMzMzMzMzMqcyxpPXMqcyxhWzBdKz0uMTcyMjIyMjIyMjIyMjIyMjIqaSxhWzFdPS4wNjM4ODg4ODg4ODg4ODg4OCppLGkqPXMsYVswXSs9LjEwMjU3OTM2NTA3OTM2NTA4KmksYVsxXSs9LjA2NjQwMjExNjQwMjExNjQqaSxhWzJdPS4wMTY0MTUwMTI5NDIxOTE1NDMqaSxhKSx0aGlzLm1vZGUpe2Nhc2UgdGhpcy5OX1BPTEU6Y2FzZSB0aGlzLlNfUE9MRTp0aGlzLmRkPTE7YnJlYWs7Y2FzZSB0aGlzLkVRVUlUOnRoaXMucnE9TWF0aC5zcXJ0KC41KnRoaXMucXApLHRoaXMuZGQ9MS90aGlzLnJxLHRoaXMueG1mPTEsdGhpcy55bWY9LjUqdGhpcy5xcDticmVhaztjYXNlIHRoaXMuT0JMSVE6dGhpcy5ycT1NYXRoLnNxcnQoLjUqdGhpcy5xcCksdD1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuc2luYjE9VnQodGhpcy5lLHQpL3RoaXMucXAsdGhpcy5jb3NiMT1NYXRoLnNxcnQoMS10aGlzLnNpbmIxKnRoaXMuc2luYjEpLHRoaXMuZGQ9TWF0aC5jb3ModGhpcy5sYXQwKS8oTWF0aC5zcXJ0KDEtdGhpcy5lcyp0KnQpKnRoaXMucnEqdGhpcy5jb3NiMSksdGhpcy55bWY9KHRoaXMueG1mPXRoaXMucnEpL3RoaXMuZGQsdGhpcy54bWYqPXRoaXMuZGR9ZWxzZSB0aGlzLm1vZGU9PT10aGlzLk9CTElRJiYodGhpcy5zaW5waDA9TWF0aC5zaW4odGhpcy5sYXQwKSx0aGlzLmNvc3BoMD1NYXRoLmNvcyh0aGlzLmxhdDApKX0sZm9yd2FyZDpmdW5jdGlvbih0KXt2YXIgcyxpLGEsaCxlLG4scixvLGwsTSxjPXQueCx1PXQueSxjPW50KGMtdGhpcy5sb25nMCk7aWYodGhpcy5zcGhlcmUpe2lmKGU9TWF0aC5zaW4odSksTT1NYXRoLmNvcyh1KSxhPU1hdGguY29zKGMpLHRoaXMubW9kZT09PXRoaXMuT0JMSVF8fHRoaXMubW9kZT09PXRoaXMuRVFVSVQpe2lmKChpPXRoaXMubW9kZT09PXRoaXMuRVFVSVQ/MStNKmE6MSt0aGlzLnNpbnBoMCplK3RoaXMuY29zcGgwKk0qYSk8PUQpcmV0dXJuIG51bGw7cz0oaT1NYXRoLnNxcnQoMi9pKSkqTSpNYXRoLnNpbihjKSxpKj10aGlzLm1vZGU9PT10aGlzLkVRVUlUP2U6dGhpcy5jb3NwaDAqZS10aGlzLnNpbnBoMCpNKmF9ZWxzZSBpZih0aGlzLm1vZGU9PT10aGlzLk5fUE9MRXx8dGhpcy5tb2RlPT09dGhpcy5TX1BPTEUpe2lmKHRoaXMubW9kZT09PXRoaXMuTl9QT0xFJiYoYT0tYSksTWF0aC5hYnModSt0aGlzLmxhdDApPEQpcmV0dXJuIG51bGw7aT1VLS41KnUscz0oaT0yKih0aGlzLm1vZGU9PT10aGlzLlNfUE9MRT9NYXRoLmNvcyhpKTpNYXRoLnNpbihpKSkpKk1hdGguc2luKGMpLGkqPWF9fWVsc2V7c3dpdGNoKGw9bz1yPTAsYT1NYXRoLmNvcyhjKSxoPU1hdGguc2luKGMpLGU9TWF0aC5zaW4odSksbj1WdCh0aGlzLmUsZSksdGhpcy5tb2RlIT09dGhpcy5PQkxJUSYmdGhpcy5tb2RlIT09dGhpcy5FUVVJVHx8KHI9bi90aGlzLnFwLG89TWF0aC5zcXJ0KDEtcipyKSksdGhpcy5tb2RlKXtjYXNlIHRoaXMuT0JMSVE6bD0xK3RoaXMuc2luYjEqcit0aGlzLmNvc2IxKm8qYTticmVhaztjYXNlIHRoaXMuRVFVSVQ6bD0xK28qYTticmVhaztjYXNlIHRoaXMuTl9QT0xFOmw9eit1LG49dGhpcy5xcC1uO2JyZWFrO2Nhc2UgdGhpcy5TX1BPTEU6bD11LXosbj10aGlzLnFwK259aWYoTWF0aC5hYnMobCk8RClyZXR1cm4gbnVsbDtzd2l0Y2godGhpcy5tb2RlKXtjYXNlIHRoaXMuT0JMSVE6Y2FzZSB0aGlzLkVRVUlUOmw9TWF0aC5zcXJ0KDIvbCksaT10aGlzLm1vZGU9PT10aGlzLk9CTElRP3RoaXMueW1mKmwqKHRoaXMuY29zYjEqci10aGlzLnNpbmIxKm8qYSk6KGw9TWF0aC5zcXJ0KDIvKDErbyphKSkpKnIqdGhpcy55bWYscz10aGlzLnhtZipsKm8qaDticmVhaztjYXNlIHRoaXMuTl9QT0xFOmNhc2UgdGhpcy5TX1BPTEU6MDw9bj8ocz0obD1NYXRoLnNxcnQobikpKmgsaT1hKih0aGlzLm1vZGU9PT10aGlzLlNfUE9MRT9sOi1sKSk6cz1pPTB9fXJldHVybiB0Lng9dGhpcy5hKnMrdGhpcy54MCx0Lnk9dGhpcy5hKmkrdGhpcy55MCx0fSxpbnZlcnNlOmZ1bmN0aW9uKHQpe3QueC09dGhpcy54MCx0LnktPXRoaXMueTA7dmFyIHMsaSxhLGgsZSxuLHIsbyxsLE0sYz10LngvdGhpcy5hLHU9dC55L3RoaXMuYTtpZih0aGlzLnNwaGVyZSl7dmFyIGY9MCxtPTAscD1NYXRoLnNxcnQoYypjK3UqdSk7aWYoMTwoaT0uNSpwKSlyZXR1cm4gbnVsbDtzd2l0Y2goaT0yKk1hdGguYXNpbihpKSx0aGlzLm1vZGUhPT10aGlzLk9CTElRJiZ0aGlzLm1vZGUhPT10aGlzLkVRVUlUfHwobT1NYXRoLnNpbihpKSxmPU1hdGguY29zKGkpKSx0aGlzLm1vZGUpe2Nhc2UgdGhpcy5FUVVJVDppPU1hdGguYWJzKHApPD1EPzA6TWF0aC5hc2luKHUqbS9wKSxjKj1tLHU9ZipwO2JyZWFrO2Nhc2UgdGhpcy5PQkxJUTppPU1hdGguYWJzKHApPD1EP3RoaXMubGF0MDpNYXRoLmFzaW4oZip0aGlzLnNpbnBoMCt1Km0qdGhpcy5jb3NwaDAvcCksYyo9bSp0aGlzLmNvc3BoMCx1PShmLU1hdGguc2luKGkpKnRoaXMuc2lucGgwKSpwO2JyZWFrO2Nhc2UgdGhpcy5OX1BPTEU6dT0tdSxpPXotaTticmVhaztjYXNlIHRoaXMuU19QT0xFOmktPXp9cz0wIT09dXx8dGhpcy5tb2RlIT09dGhpcy5FUVVJVCYmdGhpcy5tb2RlIT09dGhpcy5PQkxJUT9NYXRoLmF0YW4yKGMsdSk6MH1lbHNle2lmKHI9MCx0aGlzLm1vZGU9PT10aGlzLk9CTElRfHx0aGlzLm1vZGU9PT10aGlzLkVRVUlUKXtpZihjLz10aGlzLmRkLHUqPXRoaXMuZGQsKG49TWF0aC5zcXJ0KGMqYyt1KnUpKTxEKXJldHVybiB0Lng9dGhpcy5sb25nMCx0Lnk9dGhpcy5sYXQwLHQ7aD0yKk1hdGguYXNpbiguNSpuL3RoaXMucnEpLGE9TWF0aC5jb3MoaCksYyo9aD1NYXRoLnNpbihoKSx1PXRoaXMubW9kZT09PXRoaXMuT0JMSVE/KHI9YSp0aGlzLnNpbmIxK3UqaCp0aGlzLmNvc2IxL24sZT10aGlzLnFwKnIsbip0aGlzLmNvc2IxKmEtdSp0aGlzLnNpbmIxKmgpOihyPXUqaC9uLGU9dGhpcy5xcCpyLG4qYSl9ZWxzZSBpZih0aGlzLm1vZGU9PT10aGlzLk5fUE9MRXx8dGhpcy5tb2RlPT09dGhpcy5TX1BPTEUpe2lmKHRoaXMubW9kZT09PXRoaXMuTl9QT0xFJiYodT0tdSksIShlPWMqYyt1KnUpKXJldHVybiB0Lng9dGhpcy5sb25nMCx0Lnk9dGhpcy5sYXQwLHQ7cj0xLWUvdGhpcy5xcCx0aGlzLm1vZGU9PT10aGlzLlNfUE9MRSYmKHI9LXIpfXM9TWF0aC5hdGFuMihjLHUpLG89TWF0aC5hc2luKHIpLGw9dGhpcy5hcGEsTT1vK28saT1vK2xbMF0qTWF0aC5zaW4oTSkrbFsxXSpNYXRoLnNpbihNK00pK2xbMl0qTWF0aC5zaW4oTStNK00pfXJldHVybiB0Lng9bnQodGhpcy5sb25nMCtzKSx0Lnk9aSx0fSxuYW1lczpbIkxhbWJlcnQgQXppbXV0aGFsIEVxdWFsIEFyZWEiLCJMYW1iZXJ0X0F6aW11dGhhbF9FcXVhbF9BcmVhIiwibGFlYSJdLFNfUE9MRToxLE5fUE9MRToyLEVRVUlUOjMsT0JMSVE6NH0sZnM9e2luaXQ6ZnVuY3Rpb24oKXtNYXRoLmFicyh0aGlzLmxhdDErdGhpcy5sYXQyKTxEfHwodGhpcy50ZW1wPXRoaXMuYi90aGlzLmEsdGhpcy5lcz0xLU1hdGgucG93KHRoaXMudGVtcCwyKSx0aGlzLmUzPU1hdGguc3FydCh0aGlzLmVzKSx0aGlzLnNpbl9wbz1NYXRoLnNpbih0aGlzLmxhdDEpLHRoaXMuY29zX3BvPU1hdGguY29zKHRoaXMubGF0MSksdGhpcy50MT10aGlzLnNpbl9wbyx0aGlzLmNvbj10aGlzLnNpbl9wbyx0aGlzLm1zMT1odCh0aGlzLmUzLHRoaXMuc2luX3BvLHRoaXMuY29zX3BvKSx0aGlzLnFzMT1WdCh0aGlzLmUzLHRoaXMuc2luX3BvLHRoaXMuY29zX3BvKSx0aGlzLnNpbl9wbz1NYXRoLnNpbih0aGlzLmxhdDIpLHRoaXMuY29zX3BvPU1hdGguY29zKHRoaXMubGF0MiksdGhpcy50Mj10aGlzLnNpbl9wbyx0aGlzLm1zMj1odCh0aGlzLmUzLHRoaXMuc2luX3BvLHRoaXMuY29zX3BvKSx0aGlzLnFzMj1WdCh0aGlzLmUzLHRoaXMuc2luX3BvLHRoaXMuY29zX3BvKSx0aGlzLnNpbl9wbz1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuY29zX3BvPU1hdGguY29zKHRoaXMubGF0MCksdGhpcy50Mz10aGlzLnNpbl9wbyx0aGlzLnFzMD1WdCh0aGlzLmUzLHRoaXMuc2luX3BvLHRoaXMuY29zX3BvKSxNYXRoLmFicyh0aGlzLmxhdDEtdGhpcy5sYXQyKT5EP3RoaXMubnMwPSh0aGlzLm1zMSp0aGlzLm1zMS10aGlzLm1zMip0aGlzLm1zMikvKHRoaXMucXMyLXRoaXMucXMxKTp0aGlzLm5zMD10aGlzLmNvbix0aGlzLmM9dGhpcy5tczEqdGhpcy5tczErdGhpcy5uczAqdGhpcy5xczEsdGhpcy5yaD10aGlzLmEqTWF0aC5zcXJ0KHRoaXMuYy10aGlzLm5zMCp0aGlzLnFzMCkvdGhpcy5uczApfSxmb3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBzPXQueCxpPXQueTt0aGlzLnNpbl9waGk9TWF0aC5zaW4oaSksdGhpcy5jb3NfcGhpPU1hdGguY29zKGkpO3ZhciBhPVZ0KHRoaXMuZTMsdGhpcy5zaW5fcGhpLHRoaXMuY29zX3BoaSksaD10aGlzLmEqTWF0aC5zcXJ0KHRoaXMuYy10aGlzLm5zMCphKS90aGlzLm5zMCxlPXRoaXMubnMwKm50KHMtdGhpcy5sb25nMCksbj1oKk1hdGguc2luKGUpK3RoaXMueDAscj10aGlzLnJoLWgqTWF0aC5jb3MoZSkrdGhpcy55MDtyZXR1cm4gdC54PW4sdC55PXIsdH0saW52ZXJzZTpmdW5jdGlvbih0KXt2YXIgcyxpLGEsaCxlLG47cmV0dXJuIHQueC09dGhpcy54MCx0Lnk9dGhpcy5yaC10LnkrdGhpcy55MCxhPTA8PXRoaXMubnMwPyhzPU1hdGguc3FydCh0LngqdC54K3QueSp0LnkpLDEpOihzPS1NYXRoLnNxcnQodC54KnQueCt0LnkqdC55KSwtMSksKGg9MCkhPT1zJiYoaD1NYXRoLmF0YW4yKGEqdC54LGEqdC55KSksYT1zKnRoaXMubnMwL3RoaXMuYSxuPXRoaXMuc3BoZXJlP01hdGguYXNpbigodGhpcy5jLWEqYSkvKDIqdGhpcy5uczApKTooaT0odGhpcy5jLWEqYSkvdGhpcy5uczAsdGhpcy5waGkxeih0aGlzLmUzLGkpKSxlPW50KGgvdGhpcy5uczArdGhpcy5sb25nMCksdC54PWUsdC55PW4sdH0sbmFtZXM6WyJBbGJlcnNfQ29uaWNfRXF1YWxfQXJlYSIsIkFsYmVycyIsImFlYSJdLHBoaTF6OmZ1bmN0aW9uKHQscyl7dmFyIGksYSxoLGUsbj1adCguNSpzKTtpZih0PEQpcmV0dXJuIG47Zm9yKHZhciByPXQqdCxvPTE7bzw9MjU7bysrKWlmKG4rPWU9LjUqKGg9MS0oYT10KihpPU1hdGguc2luKG4pKSkqYSkqaC9NYXRoLmNvcyhuKSoocy8oMS1yKS1pL2grLjUvdCpNYXRoLmxvZygoMS1hKS8oMSthKSkpLE1hdGguYWJzKGUpPD0xZS03KXJldHVybiBuO3JldHVybiBudWxsfX0sbXM9e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLnNpbl9wMTQ9TWF0aC5zaW4odGhpcy5sYXQwKSx0aGlzLmNvc19wMTQ9TWF0aC5jb3ModGhpcy5sYXQwKSx0aGlzLmluZmluaXR5X2Rpc3Q9MWUzKnRoaXMuYSx0aGlzLnJjPTF9LGZvcndhcmQ6ZnVuY3Rpb24odCl7dmFyIHMsaSxhPXQueCxoPXQueSxlPW50KGEtdGhpcy5sb25nMCksbj1NYXRoLnNpbihoKSxyPU1hdGguY29zKGgpLG89TWF0aC5jb3MoZSksbD0wPChzPXRoaXMuc2luX3AxNCpuK3RoaXMuY29zX3AxNCpyKm8pfHxNYXRoLmFicyhzKTw9RD8oaT10aGlzLngwK3RoaXMuYSpyKk1hdGguc2luKGUpL3MsdGhpcy55MCt0aGlzLmEqKHRoaXMuY29zX3AxNCpuLXRoaXMuc2luX3AxNCpyKm8pL3MpOihpPXRoaXMueDArdGhpcy5pbmZpbml0eV9kaXN0KnIqTWF0aC5zaW4oZSksdGhpcy55MCt0aGlzLmluZmluaXR5X2Rpc3QqKHRoaXMuY29zX3AxNCpuLXRoaXMuc2luX3AxNCpyKm8pKTtyZXR1cm4gdC54PWksdC55PWwsdH0saW52ZXJzZTpmdW5jdGlvbih0KXt2YXIgcyxpLGEsaCxlLG47cmV0dXJuIHQueD0odC54LXRoaXMueDApL3RoaXMuYSx0Lnk9KHQueS10aGlzLnkwKS90aGlzLmEsdC54Lz10aGlzLmswLHQueS89dGhpcy5rMCxlPShzPU1hdGguc3FydCh0LngqdC54K3QueSp0LnkpKT8oaD1NYXRoLmF0YW4yKHMsdGhpcy5yYyksaT1NYXRoLnNpbihoKSxhPU1hdGguY29zKGgpLG49WnQoYSp0aGlzLnNpbl9wMTQrdC55KmkqdGhpcy5jb3NfcDE0L3MpLGU9TWF0aC5hdGFuMih0LngqaSxzKnRoaXMuY29zX3AxNCphLXQueSp0aGlzLnNpbl9wMTQqaSksbnQodGhpcy5sb25nMCtlKSk6KG49dGhpcy5waGljMCwwKSx0Lng9ZSx0Lnk9bix0fSxuYW1lczpbImdub20iXX0scHM9e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLnNwaGVyZXx8KHRoaXMuazA9aHQodGhpcy5lLE1hdGguc2luKHRoaXMubGF0X3RzKSxNYXRoLmNvcyh0aGlzLmxhdF90cykpKX0sZm9yd2FyZDpmdW5jdGlvbih0KXt2YXIgcyxpLGEsaD10LngsZT10Lnksbj1udChoLXRoaXMubG9uZzApO3JldHVybiBhPXRoaXMuc3BoZXJlPyhpPXRoaXMueDArdGhpcy5hKm4qTWF0aC5jb3ModGhpcy5sYXRfdHMpLHRoaXMueTArdGhpcy5hKk1hdGguc2luKGUpL01hdGguY29zKHRoaXMubGF0X3RzKSk6KHM9VnQodGhpcy5lLE1hdGguc2luKGUpKSxpPXRoaXMueDArdGhpcy5hKnRoaXMuazAqbix0aGlzLnkwK3RoaXMuYSpzKi41L3RoaXMuazApLHQueD1pLHQueT1hLHR9LGludmVyc2U6ZnVuY3Rpb24odCl7dmFyIHMsaTtyZXR1cm4gdC54LT10aGlzLngwLHQueS09dGhpcy55MCx0aGlzLnNwaGVyZT8ocz1udCh0aGlzLmxvbmcwK3QueC90aGlzLmEvTWF0aC5jb3ModGhpcy5sYXRfdHMpKSxpPU1hdGguYXNpbih0LnkvdGhpcy5hKk1hdGguY29zKHRoaXMubGF0X3RzKSkpOihpPWZ1bmN0aW9uKHQscyl7dmFyIGk9MS0oMS10KnQpLygyKnQpKk1hdGgubG9nKCgxLXQpLygxK3QpKTtpZihNYXRoLmFicyhNYXRoLmFicyhzKS1pKTwxZS02KXJldHVybiBzPDA/LTEqejp6O2Zvcih2YXIgYSxoLGUsbixyPU1hdGguYXNpbiguNSpzKSxvPTA7bzwzMDtvKyspaWYoaD1NYXRoLnNpbihyKSxlPU1hdGguY29zKHIpLG49dCpoLHIrPWE9TWF0aC5wb3coMS1uKm4sMikvKDIqZSkqKHMvKDEtdCp0KS1oLygxLW4qbikrLjUvdCpNYXRoLmxvZygoMS1uKS8oMStuKSkpLE1hdGguYWJzKGEpPD0xZS0xMClyZXR1cm4gcjtyZXR1cm4gTmFOfSh0aGlzLmUsMip0LnkqdGhpcy5rMC90aGlzLmEpLHM9bnQodGhpcy5sb25nMCt0LngvKHRoaXMuYSp0aGlzLmswKSkpLHQueD1zLHQueT1pLHR9LG5hbWVzOlsiY2VhIl19LGRzPXtpbml0OmZ1bmN0aW9uKCl7dGhpcy54MD10aGlzLngwfHwwLHRoaXMueTA9dGhpcy55MHx8MCx0aGlzLmxhdDA9dGhpcy5sYXQwfHwwLHRoaXMubG9uZzA9dGhpcy5sb25nMHx8MCx0aGlzLmxhdF90cz10aGlzLmxhdF90c3x8MCx0aGlzLnRpdGxlPXRoaXMudGl0bGV8fCJFcXVpZGlzdGFudCBDeWxpbmRyaWNhbCAoUGxhdGUgQ2FycmUpIix0aGlzLnJjPU1hdGguY29zKHRoaXMubGF0X3RzKX0sZm9yd2FyZDpmdW5jdGlvbih0KXt2YXIgcz10LngsaT10LnksYT1udChzLXRoaXMubG9uZzApLGg9SnQoaS10aGlzLmxhdDApO3JldHVybiB0Lng9dGhpcy54MCt0aGlzLmEqYSp0aGlzLnJjLHQueT10aGlzLnkwK3RoaXMuYSpoLHR9LGludmVyc2U6ZnVuY3Rpb24odCl7dmFyIHM9dC54LGk9dC55O3JldHVybiB0Lng9bnQodGhpcy5sb25nMCsocy10aGlzLngwKS8odGhpcy5hKnRoaXMucmMpKSx0Lnk9SnQodGhpcy5sYXQwKyhpLXRoaXMueTApL3RoaXMuYSksdH0sbmFtZXM6WyJFcXVpcmVjdGFuZ3VsYXIiLCJFcXVpZGlzdGFudF9DeWxpbmRyaWNhbCIsImVxYyJdfSx5cz17aW5pdDpmdW5jdGlvbigpe3RoaXMudGVtcD10aGlzLmIvdGhpcy5hLHRoaXMuZXM9MS1NYXRoLnBvdyh0aGlzLnRlbXAsMiksdGhpcy5lPU1hdGguc3FydCh0aGlzLmVzKSx0aGlzLmUwPUZ0KHRoaXMuZXMpLHRoaXMuZTE9UXQodGhpcy5lcyksdGhpcy5lMj1XdCh0aGlzLmVzKSx0aGlzLmUzPVh0KHRoaXMuZXMpLHRoaXMubWwwPXRoaXMuYSpVdCh0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLHRoaXMubGF0MCl9LGZvcndhcmQ6ZnVuY3Rpb24odCl7dmFyIHMsaSxhLGg9dC54LGU9dC55LG49bnQoaC10aGlzLmxvbmcwKSxyPW4qTWF0aC5zaW4oZSk7cmV0dXJuIGE9dGhpcy5zcGhlcmU/TWF0aC5hYnMoZSk8PUQ/KGk9dGhpcy5hKm4sLTEqdGhpcy5hKnRoaXMubGF0MCk6KGk9dGhpcy5hKk1hdGguc2luKHIpL01hdGgudGFuKGUpLHRoaXMuYSooSnQoZS10aGlzLmxhdDApKygxLU1hdGguY29zKHIpKS9NYXRoLnRhbihlKSkpOk1hdGguYWJzKGUpPD1EPyhpPXRoaXMuYSpuLC0xKnRoaXMubWwwKTooaT0ocz1IdCh0aGlzLmEsdGhpcy5lLE1hdGguc2luKGUpKS9NYXRoLnRhbihlKSkqTWF0aC5zaW4ociksdGhpcy5hKlV0KHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsZSktdGhpcy5tbDArcyooMS1NYXRoLmNvcyhyKSkpLHQueD1pK3RoaXMueDAsdC55PWErdGhpcy55MCx0fSxpbnZlcnNlOmZ1bmN0aW9uKHQpe3ZhciBzLGksYSxoLGUsbixyLG8sbD10LngtdGhpcy54MCxNPXQueS10aGlzLnkwO2lmKHRoaXMuc3BoZXJlKWlmKE1hdGguYWJzKE0rdGhpcy5hKnRoaXMubGF0MCk8PUQpcz1udChsL3RoaXMuYSt0aGlzLmxvbmcwKSxpPTA7ZWxzZXtmb3IodmFyIGMsdT10aGlzLmxhdDArTS90aGlzLmEsZj1sKmwvdGhpcy5hL3RoaXMuYSt1KnUsbT11LHA9MjA7cDstLXApaWYobSs9YT0tMSoodSoobSooYz1NYXRoLnRhbihtKSkrMSktbS0uNSoobSptK2YpKmMpLygobS11KS9jLTEpLE1hdGguYWJzKGEpPD1EKXtpPW07YnJlYWt9cz1udCh0aGlzLmxvbmcwK01hdGguYXNpbihsKk1hdGgudGFuKG0pL3RoaXMuYSkvTWF0aC5zaW4oaSkpfWVsc2UgaWYoTWF0aC5hYnMoTSt0aGlzLm1sMCk8PUQpaT0wLHM9bnQodGhpcy5sb25nMCtsL3RoaXMuYSk7ZWxzZXtmb3IodT0odGhpcy5tbDArTSkvdGhpcy5hLGY9bCpsL3RoaXMuYS90aGlzLmErdSp1LG09dSxwPTIwO3A7LS1wKWlmKG89dGhpcy5lKk1hdGguc2luKG0pLGg9TWF0aC5zcXJ0KDEtbypvKSpNYXRoLnRhbihtKSxlPXRoaXMuYSpVdCh0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLG0pLG49dGhpcy5lMC0yKnRoaXMuZTEqTWF0aC5jb3MoMiptKSs0KnRoaXMuZTIqTWF0aC5jb3MoNCptKS02KnRoaXMuZTMqTWF0aC5jb3MoNiptKSxtLT1hPSh1KihoKihyPWUvdGhpcy5hKSsxKS1yLS41KmgqKHIqcitmKSkvKHRoaXMuZXMqTWF0aC5zaW4oMiptKSoocipyK2YtMip1KnIpLyg0KmgpKyh1LXIpKihoKm4tMi9NYXRoLnNpbigyKm0pKS1uKSxNYXRoLmFicyhhKTw9RCl7aT1tO2JyZWFrfWg9TWF0aC5zcXJ0KDEtdGhpcy5lcypNYXRoLnBvdyhNYXRoLnNpbihpKSwyKSkqTWF0aC50YW4oaSkscz1udCh0aGlzLmxvbmcwK01hdGguYXNpbihsKmgvdGhpcy5hKS9NYXRoLnNpbihpKSl9cmV0dXJuIHQueD1zLHQueT1pLHR9LG5hbWVzOlsiUG9seWNvbmljIiwicG9seSJdfSxfcz17aW5pdDpmdW5jdGlvbigpe3RoaXMuQT1bXSx0aGlzLkFbMV09LjYzOTkxNzUwNzMsdGhpcy5BWzJdPS0uMTM1ODc5NzYxMyx0aGlzLkFbM109LjA2MzI5NDQwOSx0aGlzLkFbNF09LS4wMjUyNjg1Myx0aGlzLkFbNV09LjAxMTc4NzksdGhpcy5BWzZdPS0uMDA1NTE2MSx0aGlzLkFbN109LjAwMjY5MDYsdGhpcy5BWzhdPS0uMDAxMzMzLHRoaXMuQVs5XT02N2UtNSx0aGlzLkFbMTBdPS0zNGUtNSx0aGlzLkJfcmU9W10sdGhpcy5CX2ltPVtdLHRoaXMuQl9yZVsxXT0uNzU1Nzg1MzIyOCx0aGlzLkJfaW1bMV09MCx0aGlzLkJfcmVbMl09LjI0OTIwNDY0Nix0aGlzLkJfaW1bMl09LjAwMzM3MTUwNyx0aGlzLkJfcmVbM109LS4wMDE1NDE3MzksdGhpcy5CX2ltWzNdPS4wNDEwNTg1Nix0aGlzLkJfcmVbNF09LS4xMDE2MjkwNyx0aGlzLkJfaW1bNF09LjAxNzI3NjA5LHRoaXMuQl9yZVs1XT0tLjI2NjIzNDg5LHRoaXMuQl9pbVs1XT0tLjM2MjQ5MjE4LHRoaXMuQl9yZVs2XT0tLjY4NzA5ODMsdGhpcy5CX2ltWzZdPS0xLjE2NTE5NjcsdGhpcy5DX3JlPVtdLHRoaXMuQ19pbT1bXSx0aGlzLkNfcmVbMV09MS4zMjMxMjcwNDM5LHRoaXMuQ19pbVsxXT0wLHRoaXMuQ19yZVsyXT0tLjU3NzI0NTc4OSx0aGlzLkNfaW1bMl09LS4wMDc4MDk1OTgsdGhpcy5DX3JlWzNdPS41MDgzMDc1MTMsdGhpcy5DX2ltWzNdPS0uMTEyMjA4OTUyLHRoaXMuQ19yZVs0XT0tLjE1MDk0NzYyLHRoaXMuQ19pbVs0XT0uMTgyMDA2MDIsdGhpcy5DX3JlWzVdPTEuMDE0MTgxNzksdGhpcy5DX2ltWzVdPTEuNjQ0OTc2OTYsdGhpcy5DX3JlWzZdPTEuOTY2MDU0OSx0aGlzLkNfaW1bNl09Mi41MTI3NjQ1LHRoaXMuRD1bXSx0aGlzLkRbMV09MS41NjI3MDE0MjQzLHRoaXMuRFsyXT0uNTE4NTQwNjM5OCx0aGlzLkRbM109LS4wMzMzMzA5OCx0aGlzLkRbNF09LS4xMDUyOTA2LHRoaXMuRFs1XT0tLjAzNjg1OTQsdGhpcy5EWzZdPS4wMDczMTcsdGhpcy5EWzddPS4wMTIyLHRoaXMuRFs4XT0uMDAzOTQsdGhpcy5EWzldPS0uMDAxM30sZm9yd2FyZDpmdW5jdGlvbih0KXtmb3IodmFyIHM9dC54LGk9dC55LXRoaXMubGF0MCxhPXMtdGhpcy5sb25nMCxoPWkvaioxZS01LGU9YSxuPTEscj0wLG89MTtvPD0xMDtvKyspbio9aCxyKz10aGlzLkFbb10qbjt2YXIgbCxNPXIsYz1lLHU9MSxmPTAsbT0wLHA9MDtmb3Iobz0xO288PTY7bysrKWw9ZipNK3UqYyx1PXUqTS1mKmMsZj1sLG09bSt0aGlzLkJfcmVbb10qdS10aGlzLkJfaW1bb10qZixwPXArdGhpcy5CX2ltW29dKnUrdGhpcy5CX3JlW29dKmY7cmV0dXJuIHQueD1wKnRoaXMuYSt0aGlzLngwLHQueT1tKnRoaXMuYSt0aGlzLnkwLHR9LGludmVyc2U6ZnVuY3Rpb24odCl7dmFyIHMsaT10LngsYT10LnksaD1pLXRoaXMueDAsZT0oYS10aGlzLnkwKS90aGlzLmEsbj1oL3RoaXMuYSxyPTEsbz0wLGw9MCxNPTA7Zm9yKHk9MTt5PD02O3krKylzPW8qZStyKm4scj1yKmUtbypuLG89cyxsPWwrdGhpcy5DX3JlW3ldKnItdGhpcy5DX2ltW3ldKm8sTT1NK3RoaXMuQ19pbVt5XSpyK3RoaXMuQ19yZVt5XSpvO2Zvcih2YXIgYz0wO2M8dGhpcy5pdGVyYXRpb25zO2MrKyl7Zm9yKHZhciB1LGY9bCxtPU0scD1lLGQ9bix5PTI7eTw9Njt5KyspdT1tKmwrZipNLGY9ZipsLW0qTSxtPXUscCs9KHktMSkqKHRoaXMuQl9yZVt5XSpmLXRoaXMuQl9pbVt5XSptKSxkKz0oeS0xKSoodGhpcy5CX2ltW3ldKmYrdGhpcy5CX3JlW3ldKm0pO2Y9MSxtPTA7dmFyIF89dGhpcy5CX3JlWzFdLHg9dGhpcy5CX2ltWzFdO2Zvcih5PTI7eTw9Njt5KyspdT1tKmwrZipNLGY9ZipsLW0qTSxtPXUsXys9eSoodGhpcy5CX3JlW3ldKmYtdGhpcy5CX2ltW3ldKm0pLHgrPXkqKHRoaXMuQl9pbVt5XSpmK3RoaXMuQl9yZVt5XSptKTt2YXIgZz1fKl8reCp4LGw9KHAqXytkKngpL2csTT0oZCpfLXAqeCkvZ312YXIgYj1sLHY9TSx3PTEsQz0wO2Zvcih5PTE7eTw9OTt5Kyspdyo9YixDKz10aGlzLkRbeV0qdzt2YXIgUD10aGlzLmxhdDArQypqKjFlNSxTPXRoaXMubG9uZzArdjtyZXR1cm4gdC54PVMsdC55PVAsdH0sbmFtZXM6WyJOZXdfWmVhbGFuZF9NYXBfR3JpZCIsIm56bWciXX0seHM9e2luaXQ6ZnVuY3Rpb24oKXt9LGZvcndhcmQ6ZnVuY3Rpb24odCl7dmFyIHM9dC54LGk9dC55LGE9bnQocy10aGlzLmxvbmcwKSxoPXRoaXMueDArdGhpcy5hKmEsZT10aGlzLnkwK3RoaXMuYSpNYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQraS8yLjUpKSoxLjI1O3JldHVybiB0Lng9aCx0Lnk9ZSx0fSxpbnZlcnNlOmZ1bmN0aW9uKHQpe3QueC09dGhpcy54MCx0LnktPXRoaXMueTA7dmFyIHM9bnQodGhpcy5sb25nMCt0LngvdGhpcy5hKSxpPTIuNSooTWF0aC5hdGFuKE1hdGguZXhwKC44KnQueS90aGlzLmEpKS1NYXRoLlBJLzQpO3JldHVybiB0Lng9cyx0Lnk9aSx0fSxuYW1lczpbIk1pbGxlcl9DeWxpbmRyaWNhbCIsIm1pbGwiXX0sZ3M9e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLnNwaGVyZT8odGhpcy5uPTEsdGhpcy5tPTAsdGhpcy5lcz0wLHRoaXMuQ195PU1hdGguc3FydCgodGhpcy5tKzEpL3RoaXMubiksdGhpcy5DX3g9dGhpcy5DX3kvKHRoaXMubSsxKSk6dGhpcy5lbj1BdCh0aGlzLmVzKX0sZm9yd2FyZDpmdW5jdGlvbih0KXt2YXIgcz10LngsaT10Lnkscz1udChzLXRoaXMubG9uZzApO2lmKHRoaXMuc3BoZXJlKXtpZih0aGlzLm0pZm9yKHZhciBhPXRoaXMubipNYXRoLnNpbihpKSxoPTIwO2g7LS1oKXt2YXIgZT0odGhpcy5tKmkrTWF0aC5zaW4oaSktYSkvKHRoaXMubStNYXRoLmNvcyhpKSk7aWYoaS09ZSxNYXRoLmFicyhlKTxEKWJyZWFrfWVsc2UgaT0xIT09dGhpcy5uP01hdGguYXNpbih0aGlzLm4qTWF0aC5zaW4oaSkpOmk7bD10aGlzLmEqdGhpcy5DX3gqcyoodGhpcy5tK01hdGguY29zKGkpKSxvPXRoaXMuYSp0aGlzLkNfeSppfWVsc2UgdmFyIG49TWF0aC5zaW4oaSkscj1NYXRoLmNvcyhpKSxvPXRoaXMuYSpHdChpLG4scix0aGlzLmVuKSxsPXRoaXMuYSpzKnIvTWF0aC5zcXJ0KDEtdGhpcy5lcypuKm4pO3JldHVybiB0Lng9bCx0Lnk9byx0fSxpbnZlcnNlOmZ1bmN0aW9uKHQpe3ZhciBzLGksYSxoO3JldHVybiB0LngtPXRoaXMueDAsYT10LngvdGhpcy5hLHQueS09dGhpcy55MCxzPXQueS90aGlzLmEsdGhpcy5zcGhlcmU/KHMvPXRoaXMuQ195LGEvPXRoaXMuQ194Kih0aGlzLm0rTWF0aC5jb3MocykpLHRoaXMubT9zPVp0KCh0aGlzLm0qcytNYXRoLnNpbihzKSkvdGhpcy5uKToxIT09dGhpcy5uJiYocz1adChNYXRoLnNpbihzKS90aGlzLm4pKSxhPW50KGErdGhpcy5sb25nMCkscz1KdChzKSk6KHM9anQodC55L3RoaXMuYSx0aGlzLmVzLHRoaXMuZW4pLChoPU1hdGguYWJzKHMpKTx6PyhoPU1hdGguc2luKHMpLGk9dGhpcy5sb25nMCt0LngqTWF0aC5zcXJ0KDEtdGhpcy5lcypoKmgpLyh0aGlzLmEqTWF0aC5jb3MocykpLGE9bnQoaSkpOmgtRDx6JiYoYT10aGlzLmxvbmcwKSksdC54PWEsdC55PXMsdH0sbmFtZXM6WyJTaW51c29pZGFsIiwic2ludSJdfSxicz17aW5pdDpmdW5jdGlvbigpe30sZm9yd2FyZDpmdW5jdGlvbih0KXtmb3IodmFyIHM9dC54LGk9dC55LGE9bnQocy10aGlzLmxvbmcwKSxoPWksZT1NYXRoLlBJKk1hdGguc2luKGkpOzspe3ZhciBuPS0oaCtNYXRoLnNpbihoKS1lKS8oMStNYXRoLmNvcyhoKSk7aWYoaCs9bixNYXRoLmFicyhuKTxEKWJyZWFrfWgvPTIsTWF0aC5QSS8yLU1hdGguYWJzKGkpPEQmJihhPTApO3ZhciByPS45MDAzMTYzMTYxNTgqdGhpcy5hKmEqTWF0aC5jb3MoaCkrdGhpcy54MCxvPTEuNDE0MjEzNTYyMzczMSp0aGlzLmEqTWF0aC5zaW4oaCkrdGhpcy55MDtyZXR1cm4gdC54PXIsdC55PW8sdH0saW52ZXJzZTpmdW5jdGlvbih0KXt2YXIgcyxpO3QueC09dGhpcy54MCx0LnktPXRoaXMueTAsaT10LnkvKDEuNDE0MjEzNTYyMzczMSp0aGlzLmEpLC45OTk5OTk5OTk5OTk8TWF0aC5hYnMoaSkmJihpPS45OTk5OTk5OTk5OTkpLHM9TWF0aC5hc2luKGkpO3ZhciBhPW50KHRoaXMubG9uZzArdC54LyguOTAwMzE2MzE2MTU4KnRoaXMuYSpNYXRoLmNvcyhzKSkpO2E8LU1hdGguUEkmJihhPS1NYXRoLlBJKSxhPk1hdGguUEkmJihhPU1hdGguUEkpLGk9KDIqcytNYXRoLnNpbigyKnMpKS9NYXRoLlBJLDE8TWF0aC5hYnMoaSkmJihpPTEpO3ZhciBoPU1hdGguYXNpbihpKTtyZXR1cm4gdC54PWEsdC55PWgsdH0sbmFtZXM6WyJNb2xsd2VpZGUiLCJtb2xsIl19LHZzPXtpbml0OmZ1bmN0aW9uKCl7TWF0aC5hYnModGhpcy5sYXQxK3RoaXMubGF0Mik8RHx8KHRoaXMubGF0Mj10aGlzLmxhdDJ8fHRoaXMubGF0MSx0aGlzLnRlbXA9dGhpcy5iL3RoaXMuYSx0aGlzLmVzPTEtTWF0aC5wb3codGhpcy50ZW1wLDIpLHRoaXMuZT1NYXRoLnNxcnQodGhpcy5lcyksdGhpcy5lMD1GdCh0aGlzLmVzKSx0aGlzLmUxPVF0KHRoaXMuZXMpLHRoaXMuZTI9V3QodGhpcy5lcyksdGhpcy5lMz1YdCh0aGlzLmVzKSx0aGlzLnNpbnBoaT1NYXRoLnNpbih0aGlzLmxhdDEpLHRoaXMuY29zcGhpPU1hdGguY29zKHRoaXMubGF0MSksdGhpcy5tczE9aHQodGhpcy5lLHRoaXMuc2lucGhpLHRoaXMuY29zcGhpKSx0aGlzLm1sMT1VdCh0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLHRoaXMubGF0MSksTWF0aC5hYnModGhpcy5sYXQxLXRoaXMubGF0Mik8RD90aGlzLm5zPXRoaXMuc2lucGhpOih0aGlzLnNpbnBoaT1NYXRoLnNpbih0aGlzLmxhdDIpLHRoaXMuY29zcGhpPU1hdGguY29zKHRoaXMubGF0MiksdGhpcy5tczI9aHQodGhpcy5lLHRoaXMuc2lucGhpLHRoaXMuY29zcGhpKSx0aGlzLm1sMj1VdCh0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLHRoaXMubGF0MiksdGhpcy5ucz0odGhpcy5tczEtdGhpcy5tczIpLyh0aGlzLm1sMi10aGlzLm1sMSkpLHRoaXMuZz10aGlzLm1sMSt0aGlzLm1zMS90aGlzLm5zLHRoaXMubWwwPVV0KHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsdGhpcy5sYXQwKSx0aGlzLnJoPXRoaXMuYSoodGhpcy5nLXRoaXMubWwwKSl9LGZvcndhcmQ6ZnVuY3Rpb24odCl7dmFyIHMsaSxhPXQueCxoPXQueTtpPXRoaXMuc3BoZXJlP3RoaXMuYSoodGhpcy5nLWgpOihzPVV0KHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsaCksdGhpcy5hKih0aGlzLmctcykpO3ZhciBlPXRoaXMubnMqbnQoYS10aGlzLmxvbmcwKSxuPXRoaXMueDAraSpNYXRoLnNpbihlKSxyPXRoaXMueTArdGhpcy5yaC1pKk1hdGguY29zKGUpO3JldHVybiB0Lng9bix0Lnk9cix0fSxpbnZlcnNlOmZ1bmN0aW9uKHQpe3ZhciBzLGk7dC54LT10aGlzLngwLHQueT10aGlzLnJoLXQueSt0aGlzLnkwLHM9MDw9dGhpcy5ucz8oaT1NYXRoLnNxcnQodC54KnQueCt0LnkqdC55KSwxKTooaT0tTWF0aC5zcXJ0KHQueCp0LngrdC55KnQueSksLTEpO3ZhciBhPTA7aWYoMCE9PWkmJihhPU1hdGguYXRhbjIocyp0Lngscyp0LnkpKSx0aGlzLnNwaGVyZSlyZXR1cm4gbj1udCh0aGlzLmxvbmcwK2EvdGhpcy5ucyksZT1KdCh0aGlzLmctaS90aGlzLmEpLHQueD1uLHQueT1lLHQ7dmFyIGg9dGhpcy5nLWkvdGhpcy5hLGU9S3QoaCx0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzKSxuPW50KHRoaXMubG9uZzArYS90aGlzLm5zKTtyZXR1cm4gdC54PW4sdC55PWUsdH0sbmFtZXM6WyJFcXVpZGlzdGFudF9Db25pYyIsImVxZGMiXX0sd3M9e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLlI9dGhpcy5hfSxmb3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBzLGk9dC54LGE9dC55LGg9bnQoaS10aGlzLmxvbmcwKTtNYXRoLmFicyhhKTw9RCYmKHM9dGhpcy54MCt0aGlzLlIqaCxkPXRoaXMueTApO3ZhciBlPVp0KDIqTWF0aC5hYnMoYS9NYXRoLlBJKSk7KE1hdGguYWJzKGgpPD1EfHxNYXRoLmFicyhNYXRoLmFicyhhKS16KTw9RCkmJihzPXRoaXMueDAsZD0wPD1hP3RoaXMueTArTWF0aC5QSSp0aGlzLlIqTWF0aC50YW4oLjUqZSk6dGhpcy55MCtNYXRoLlBJKnRoaXMuUiotTWF0aC50YW4oLjUqZSkpO3ZhciBuPS41Kk1hdGguYWJzKE1hdGguUEkvaC1oL01hdGguUEkpLHI9bipuLG89TWF0aC5zaW4oZSksbD1NYXRoLmNvcyhlKSxNPWwvKG8rbC0xKSxjPU0qTSx1PU0qKDIvby0xKSxmPXUqdSxtPU1hdGguUEkqdGhpcy5SKihuKihNLWYpK01hdGguc3FydChyKihNLWYpKihNLWYpLShmK3IpKihjLWYpKSkvKGYrcik7aDwwJiYobT0tbSkscz10aGlzLngwK207dmFyIHA9citNLG09TWF0aC5QSSp0aGlzLlIqKHUqcC1uKk1hdGguc3FydCgoZityKSooMStyKS1wKnApKS8oZityKSxkPTA8PWE/dGhpcy55MCttOnRoaXMueTAtbTtyZXR1cm4gdC54PXMsdC55PWQsdH0saW52ZXJzZTpmdW5jdGlvbih0KXt2YXIgcyxpLGEsaCxlLG4scixvLGwsTSxjLHU7cmV0dXJuIHQueC09dGhpcy54MCx0LnktPXRoaXMueTAsYz1NYXRoLlBJKnRoaXMuUixlPShhPXQueC9jKSphKyhoPXQueS9jKSpoLGM9MyooaCpoLyhvPS0yKihuPS1NYXRoLmFicyhoKSooMStlKSkrMSsyKmgqaCtlKmUpKygyKihyPW4tMipoKmgrYSphKSpyKnIvby9vL28tOSpuKnIvby9vKS8yNykvKGw9KG4tcipyLzMvbykvbykvKE09MipNYXRoLnNxcnQoLWwvMykpLDE8TWF0aC5hYnMoYykmJihjPTA8PWM/MTotMSksdT1NYXRoLmFjb3MoYykvMyxpPTA8PXQueT8oLU0qTWF0aC5jb3ModStNYXRoLlBJLzMpLXIvMy9vKSpNYXRoLlBJOi0oLU0qTWF0aC5jb3ModStNYXRoLlBJLzMpLXIvMy9vKSpNYXRoLlBJLHM9TWF0aC5hYnMoYSk8RD90aGlzLmxvbmcwOm50KHRoaXMubG9uZzArTWF0aC5QSSooZS0xK01hdGguc3FydCgxKzIqKGEqYS1oKmgpK2UqZSkpLzIvYSksdC54PXMsdC55PWksdH0sbmFtZXM6WyJWYW5fZGVyX0dyaW50ZW5fSSIsIlZhbkRlckdyaW50ZW4iLCJ2YW5kZyJdfSxDcz17aW5pdDpmdW5jdGlvbigpe3RoaXMuc2luX3AxMj1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuY29zX3AxMj1NYXRoLmNvcyh0aGlzLmxhdDApfSxmb3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBzLGksYSxoLGUsbixyLG8sbCxNLGMsdSxmLG0scCxkLHksXyx4LGcsYix2LHc9dC54LEM9dC55LFA9TWF0aC5zaW4odC55KSxTPU1hdGguY29zKHQueSksTj1udCh3LXRoaXMubG9uZzApO3JldHVybiB0aGlzLnNwaGVyZT9NYXRoLmFicyh0aGlzLnNpbl9wMTItMSk8PUQ/KHQueD10aGlzLngwK3RoaXMuYSooei1DKSpNYXRoLnNpbihOKSx0Lnk9dGhpcy55MC10aGlzLmEqKHotQykqTWF0aC5jb3MoTikpOk1hdGguYWJzKHRoaXMuc2luX3AxMisxKTw9RD8odC54PXRoaXMueDArdGhpcy5hKih6K0MpKk1hdGguc2luKE4pLHQueT10aGlzLnkwK3RoaXMuYSooeitDKSpNYXRoLmNvcyhOKSk6KF89dGhpcy5zaW5fcDEyKlArdGhpcy5jb3NfcDEyKlMqTWF0aC5jb3MoTikseT0oZD1NYXRoLmFjb3MoXykpP2QvTWF0aC5zaW4oZCk6MSx0Lng9dGhpcy54MCt0aGlzLmEqeSpTKk1hdGguc2luKE4pLHQueT10aGlzLnkwK3RoaXMuYSp5Kih0aGlzLmNvc19wMTIqUC10aGlzLnNpbl9wMTIqUypNYXRoLmNvcyhOKSkpOihzPUZ0KHRoaXMuZXMpLGk9UXQodGhpcy5lcyksYT1XdCh0aGlzLmVzKSxoPVh0KHRoaXMuZXMpLE1hdGguYWJzKHRoaXMuc2luX3AxMi0xKTw9RD8oZT10aGlzLmEqVXQocyxpLGEsaCx6KSxuPXRoaXMuYSpVdChzLGksYSxoLEMpLHQueD10aGlzLngwKyhlLW4pKk1hdGguc2luKE4pLHQueT10aGlzLnkwLShlLW4pKk1hdGguY29zKE4pKTpNYXRoLmFicyh0aGlzLnNpbl9wMTIrMSk8PUQ/KGU9dGhpcy5hKlV0KHMsaSxhLGgseiksbj10aGlzLmEqVXQocyxpLGEsaCxDKSx0Lng9dGhpcy54MCsoZStuKSpNYXRoLnNpbihOKSx0Lnk9dGhpcy55MCsoZStuKSpNYXRoLmNvcyhOKSk6KHI9UC9TLG89SHQodGhpcy5hLHRoaXMuZSx0aGlzLnNpbl9wMTIpLGw9SHQodGhpcy5hLHRoaXMuZSxQKSxNPU1hdGguYXRhbigoMS10aGlzLmVzKSpyK3RoaXMuZXMqbyp0aGlzLnNpbl9wMTIvKGwqUykpLHg9MD09PShjPU1hdGguYXRhbjIoTWF0aC5zaW4oTiksdGhpcy5jb3NfcDEyKk1hdGgudGFuKE0pLXRoaXMuc2luX3AxMipNYXRoLmNvcyhOKSkpP01hdGguYXNpbih0aGlzLmNvc19wMTIqTWF0aC5zaW4oTSktdGhpcy5zaW5fcDEyKk1hdGguY29zKE0pKTpNYXRoLmFicyhNYXRoLmFicyhjKS1NYXRoLlBJKTw9RD8tTWF0aC5hc2luKHRoaXMuY29zX3AxMipNYXRoLnNpbihNKS10aGlzLnNpbl9wMTIqTWF0aC5jb3MoTSkpOk1hdGguYXNpbihNYXRoLnNpbihOKSpNYXRoLmNvcyhNKS9NYXRoLnNpbihjKSksdT10aGlzLmUqdGhpcy5zaW5fcDEyL01hdGguc3FydCgxLXRoaXMuZXMpLGQ9byp4KigxLShnPXgqeCkqKHA9KGY9dGhpcy5lKnRoaXMuY29zX3AxMipNYXRoLmNvcyhjKS9NYXRoLnNxcnQoMS10aGlzLmVzKSkqZikqKDEtcCkvNisoYj1nKngpLzgqKG09dSpmKSooMS0yKnApKyh2PWIqeCkvMTIwKihwKig0LTcqcCktMyp1KnUqKDEtNypwKSktdip4LzQ4Km0pLHQueD10aGlzLngwK2QqTWF0aC5zaW4oYyksdC55PXRoaXMueTArZCpNYXRoLmNvcyhjKSkpLHR9LGludmVyc2U6ZnVuY3Rpb24odCl7dmFyIHMsaSxhLGgsZSxuLHIsbyxsLE0sYyx1LGYsbSxwLGQseSxfLHgsZyxiLHYsdztpZih0LngtPXRoaXMueDAsdC55LT10aGlzLnkwLHRoaXMuc3BoZXJlKXtpZigocz1NYXRoLnNxcnQodC54KnQueCt0LnkqdC55KSk+Mip6KnRoaXMuYSlyZXR1cm47cmV0dXJuIGk9cy90aGlzLmEsYT1NYXRoLnNpbihpKSxoPU1hdGguY29zKGkpLGU9dGhpcy5sb25nMCxNYXRoLmFicyhzKTw9RD9uPXRoaXMubGF0MDoobj1adChoKnRoaXMuc2luX3AxMit0LnkqYSp0aGlzLmNvc19wMTIvcykscj1NYXRoLmFicyh0aGlzLmxhdDApLXosZT1udChNYXRoLmFicyhyKTw9RD8wPD10aGlzLmxhdDA/dGhpcy5sb25nMCtNYXRoLmF0YW4yKHQueCwtdC55KTp0aGlzLmxvbmcwLU1hdGguYXRhbjIoLXQueCx0LnkpOnRoaXMubG9uZzArTWF0aC5hdGFuMih0LngqYSxzKnRoaXMuY29zX3AxMipoLXQueSp0aGlzLnNpbl9wMTIqYSkpKSx0Lng9ZSx0Lnk9bix0fXJldHVybiBvPUZ0KHRoaXMuZXMpLGw9UXQodGhpcy5lcyksTT1XdCh0aGlzLmVzKSxjPVh0KHRoaXMuZXMpLE1hdGguYWJzKHRoaXMuc2luX3AxMi0xKTw9RD8odT10aGlzLmEqVXQobyxsLE0sYyx6KSxzPU1hdGguc3FydCh0LngqdC54K3QueSp0LnkpLG49S3QoKHUtcykvdGhpcy5hLG8sbCxNLGMpLGU9bnQodGhpcy5sb25nMCtNYXRoLmF0YW4yKHQueCwtMSp0LnkpKSk6TWF0aC5hYnModGhpcy5zaW5fcDEyKzEpPD1EPyh1PXRoaXMuYSpVdChvLGwsTSxjLHopLHM9TWF0aC5zcXJ0KHQueCp0LngrdC55KnQueSksbj1LdCgocy11KS90aGlzLmEsbyxsLE0sYyksZT1udCh0aGlzLmxvbmcwK01hdGguYXRhbjIodC54LHQueSkpKToocz1NYXRoLnNxcnQodC54KnQueCt0LnkqdC55KSxwPU1hdGguYXRhbjIodC54LHQueSksZj1IdCh0aGlzLmEsdGhpcy5lLHRoaXMuc2luX3AxMiksZD1NYXRoLmNvcyhwKSxfPS0oeT10aGlzLmUqdGhpcy5jb3NfcDEyKmQpKnkvKDEtdGhpcy5lcykseD0zKnRoaXMuZXMqKDEtXykqdGhpcy5zaW5fcDEyKnRoaXMuY29zX3AxMipkLygxLXRoaXMuZXMpLHY9MS1fKihiPShnPXMvZiktXyooMStfKSpNYXRoLnBvdyhnLDMpLzYteCooMSszKl8pKk1hdGgucG93KGcsNCkvMjQpKmIvMi1nKmIqYipiLzYsbT1NYXRoLmFzaW4odGhpcy5zaW5fcDEyKk1hdGguY29zKGIpK3RoaXMuY29zX3AxMipNYXRoLnNpbihiKSpkKSxlPW50KHRoaXMubG9uZzArTWF0aC5hc2luKE1hdGguc2luKHApKk1hdGguc2luKGIpL01hdGguY29zKG0pKSksdz1NYXRoLnNpbihtKSxuPU1hdGguYXRhbjIoKHctdGhpcy5lcyp2KnRoaXMuc2luX3AxMikqTWF0aC50YW4obSksdyooMS10aGlzLmVzKSkpLHQueD1lLHQueT1uLHR9LG5hbWVzOlsiQXppbXV0aGFsX0VxdWlkaXN0YW50IiwiYWVxZCJdfSxQcz17aW5pdDpmdW5jdGlvbigpe3RoaXMuc2luX3AxND1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuY29zX3AxND1NYXRoLmNvcyh0aGlzLmxhdDApfSxmb3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBzLGksYSxoPXQueCxlPXQueSxuPW50KGgtdGhpcy5sb25nMCkscj1NYXRoLnNpbihlKSxvPU1hdGguY29zKGUpLGw9TWF0aC5jb3Mobik7cmV0dXJuKDA8KHM9dGhpcy5zaW5fcDE0KnIrdGhpcy5jb3NfcDE0Km8qbCl8fE1hdGguYWJzKHMpPD1EKSYmKGk9dGhpcy5hKm8qTWF0aC5zaW4obiksYT10aGlzLnkwK3RoaXMuYSoodGhpcy5jb3NfcDE0KnItdGhpcy5zaW5fcDE0Km8qbCkpLHQueD1pLHQueT1hLHR9LGludmVyc2U6ZnVuY3Rpb24odCl7dmFyIHMsaSxhLGgsZSxuLHI7cmV0dXJuIHQueC09dGhpcy54MCx0LnktPXRoaXMueTAscz1NYXRoLnNxcnQodC54KnQueCt0LnkqdC55KSxpPVp0KHMvdGhpcy5hKSxhPU1hdGguc2luKGkpLGg9TWF0aC5jb3MoaSksbj10aGlzLmxvbmcwLE1hdGguYWJzKHMpPD1EP3I9dGhpcy5sYXQwOihyPVp0KGgqdGhpcy5zaW5fcDE0K3QueSphKnRoaXMuY29zX3AxNC9zKSxlPU1hdGguYWJzKHRoaXMubGF0MCkteixuPU1hdGguYWJzKGUpPD1EP250KDA8PXRoaXMubGF0MD90aGlzLmxvbmcwK01hdGguYXRhbjIodC54LC10LnkpOnRoaXMubG9uZzAtTWF0aC5hdGFuMigtdC54LHQueSkpOm50KHRoaXMubG9uZzArTWF0aC5hdGFuMih0LngqYSxzKnRoaXMuY29zX3AxNCpoLXQueSp0aGlzLnNpbl9wMTQqYSkpKSx0Lng9bix0Lnk9cix0fSxuYW1lczpbIm9ydGhvIl19LFNzPTEsTnM9Mixrcz0zLEVzPTQscXM9NSxJcz02LE9zPTEsQXM9MixHcz0zLGpzPTQsenM9e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLngwPXRoaXMueDB8fDAsdGhpcy55MD10aGlzLnkwfHwwLHRoaXMubGF0MD10aGlzLmxhdDB8fDAsdGhpcy5sb25nMD10aGlzLmxvbmcwfHwwLHRoaXMubGF0X3RzPXRoaXMubGF0X3RzfHwwLHRoaXMudGl0bGU9dGhpcy50aXRsZXx8IlF1YWRyaWxhdGVyYWxpemVkIFNwaGVyaWNhbCBDdWJlIix0aGlzLmxhdDA+PXotVS8yP3RoaXMuZmFjZT1xczp0aGlzLmxhdDA8PS0oei1VLzIpP3RoaXMuZmFjZT1JczpNYXRoLmFicyh0aGlzLmxvbmcwKTw9VT90aGlzLmZhY2U9U3M6TWF0aC5hYnModGhpcy5sb25nMCk8PXorVT90aGlzLmZhY2U9MDx0aGlzLmxvbmcwP05zOkVzOnRoaXMuZmFjZT1rcywwIT09dGhpcy5lcyYmKHRoaXMub25lX21pbnVzX2Y9MS0odGhpcy5hLXRoaXMuYikvdGhpcy5hLHRoaXMub25lX21pbnVzX2Zfc3F1YXJlZD10aGlzLm9uZV9taW51c19mKnRoaXMub25lX21pbnVzX2YpfSxmb3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBzLGksYSxoLGUsbixyLG8sbCxNLGMsdSxmPXt4OjAseTowfSxtPXt2YWx1ZTowfTtyZXR1cm4gdC54LT10aGlzLmxvbmcwLHM9MCE9PXRoaXMuZXM/TWF0aC5hdGFuKHRoaXMub25lX21pbnVzX2Zfc3F1YXJlZCpNYXRoLnRhbih0LnkpKTp0LnksaT10LngsdGhpcy5mYWNlPT09cXM/KGg9ei1zLGE9VTw9aSYmaTw9eitVPyhtLnZhbHVlPU9zLGkteik6eitVPGl8fGk8PS0oeitVKT8obS52YWx1ZT1BcywwPGk/aS1ROmkrUSk6LSh6K1UpPGkmJmk8PS1VPyhtLnZhbHVlPUdzLGkreik6KG0udmFsdWU9anMsaSkpOnRoaXMuZmFjZT09PUlzPyhoPXorcyxhPVU8PWkmJmk8PXorVT8obS52YWx1ZT1Pcyx6LWkpOmk8VSYmLVU8PWk/KG0udmFsdWU9QXMsLWkpOmk8LVUmJi0oeitVKTw9aT8obS52YWx1ZT1HcywtaS16KToobS52YWx1ZT1qcywwPGk/US1pOi1pLVEpKToodGhpcy5mYWNlPT09TnM/aT1TKGksK3opOnRoaXMuZmFjZT09PWtzP2k9UyhpLCtRKTp0aGlzLmZhY2U9PT1FcyYmKGk9UyhpLC16KSksTT1NYXRoLnNpbihzKSxjPU1hdGguY29zKHMpLHU9TWF0aC5zaW4oaSkscj1jKk1hdGguY29zKGkpLG89Yyp1LGw9TSx0aGlzLmZhY2U9PT1Tcz9hPVAoaD1NYXRoLmFjb3MociksbCxvLG0pOnRoaXMuZmFjZT09PU5zP2E9UChoPU1hdGguYWNvcyhvKSxsLC1yLG0pOnRoaXMuZmFjZT09PWtzP2E9UChoPU1hdGguYWNvcygtciksbCwtbyxtKTp0aGlzLmZhY2U9PT1Fcz9hPVAoaD1NYXRoLmFjb3MoLW8pLGwscixtKTooaD1hPTAsbS52YWx1ZT1PcykpLG49TWF0aC5hdGFuKDEyL1EqKGErTWF0aC5hY29zKE1hdGguc2luKGEpKk1hdGguY29zKFUpKS16KSksZT1NYXRoLnNxcnQoKDEtTWF0aC5jb3MoaCkpLyhNYXRoLmNvcyhuKSpNYXRoLmNvcyhuKSkvKDEtTWF0aC5jb3MoTWF0aC5hdGFuKDEvTWF0aC5jb3MoYSkpKSkpLG0udmFsdWU9PT1Bcz9uKz16Om0udmFsdWU9PT1Hcz9uKz1ROm0udmFsdWU9PT1qcyYmKG4rPTEuNSpRKSxmLng9ZSpNYXRoLmNvcyhuKSxmLnk9ZSpNYXRoLnNpbihuKSxmLng9Zi54KnRoaXMuYSt0aGlzLngwLGYueT1mLnkqdGhpcy5hK3RoaXMueTAsdC54PWYueCx0Lnk9Zi55LHR9LGludmVyc2U6ZnVuY3Rpb24odCl7dmFyIHMsaSxhLGgsZSxuLHIsbyxsLE0sYyx1LGYsbSxwLGQ9e2xhbTowLHBoaTowfSx5PXt2YWx1ZTowfTtyZXR1cm4gdC54PSh0LngtdGhpcy54MCkvdGhpcy5hLHQueT0odC55LXRoaXMueTApL3RoaXMuYSxpPU1hdGguYXRhbihNYXRoLnNxcnQodC54KnQueCt0LnkqdC55KSkscz1NYXRoLmF0YW4yKHQueSx0LngpLDA8PXQueCYmdC54Pj1NYXRoLmFicyh0LnkpP3kudmFsdWU9T3M6MDw9dC55JiZ0Lnk+PU1hdGguYWJzKHQueCk/KHkudmFsdWU9QXMscy09eik6dC54PDAmJi10Lng+PU1hdGguYWJzKHQueSk/KHkudmFsdWU9R3Mscz1zPDA/cytROnMtUSk6KHkudmFsdWU9anMscys9eiksYz1RLzEyKk1hdGgudGFuKHMpLGU9TWF0aC5zaW4oYykvKE1hdGguY29zKGMpLTEvTWF0aC5zcXJ0KDIpKSxuPU1hdGguYXRhbihlKSwocj0xLShhPU1hdGguY29zKHMpKSphKihoPU1hdGgudGFuKGkpKSpoKigxLU1hdGguY29zKE1hdGguYXRhbigxL01hdGguY29zKG4pKSkpKTwtMT9yPS0xOjE8ciYmKHI9MSksdGhpcy5mYWNlPT09cXM/KG89TWF0aC5hY29zKHIpLGQucGhpPXotbyx5LnZhbHVlPT09T3M/ZC5sYW09bit6OnkudmFsdWU9PT1Bcz9kLmxhbT1uPDA/bitROm4tUTp5LnZhbHVlPT09R3M/ZC5sYW09bi16OmQubGFtPW4pOnRoaXMuZmFjZT09PUlzPyhvPU1hdGguYWNvcyhyKSxkLnBoaT1vLXoseS52YWx1ZT09PU9zP2QubGFtPXotbjp5LnZhbHVlPT09QXM/ZC5sYW09LW46eS52YWx1ZT09PUdzP2QubGFtPS1uLXo6ZC5sYW09bjwwPy1uLVE6US1uKTooYz0obD1yKSpsLHU9MTw9KGMrPShNPTE8PWM/MDpNYXRoLnNxcnQoMS1jKSpNYXRoLnNpbihuKSkqTSk/MDpNYXRoLnNxcnQoMS1jKSx5LnZhbHVlPT09QXM/KGM9dSx1PS1NLE09Yyk6eS52YWx1ZT09PUdzPyh1PS11LE09LU0pOnkudmFsdWU9PT1qcyYmKGM9dSx1PU0sTT0tYyksdGhpcy5mYWNlPT09TnM/KGM9bCxsPS11LHU9Yyk6dGhpcy5mYWNlPT09a3M/KGw9LWwsdT0tdSk6dGhpcy5mYWNlPT09RXMmJihjPWwsbD11LHU9LWMpLGQucGhpPU1hdGguYWNvcygtTSkteixkLmxhbT1NYXRoLmF0YW4yKHUsbCksdGhpcy5mYWNlPT09TnM/ZC5sYW09UyhkLmxhbSwteik6dGhpcy5mYWNlPT09a3M/ZC5sYW09UyhkLmxhbSwtUSk6dGhpcy5mYWNlPT09RXMmJihkLmxhbT1TKGQubGFtLCt6KSkpLDAhPT10aGlzLmVzJiYoZj1kLnBoaTwwPzE6MCxtPU1hdGgudGFuKGQucGhpKSxwPXRoaXMuYi9NYXRoLnNxcnQobSptK3RoaXMub25lX21pbnVzX2Zfc3F1YXJlZCksZC5waGk9TWF0aC5hdGFuKE1hdGguc3FydCh0aGlzLmEqdGhpcy5hLXAqcCkvKHRoaXMub25lX21pbnVzX2YqcCkpLGYmJihkLnBoaT0tZC5waGkpKSxkLmxhbSs9dGhpcy5sb25nMCx0Lng9ZC5sYW0sdC55PWQucGhpLHR9LG5hbWVzOlsiUXVhZHJpbGF0ZXJhbGl6ZWQgU3BoZXJpY2FsIEN1YmUiLCJRdWFkcmlsYXRlcmFsaXplZF9TcGhlcmljYWxfQ3ViZSIsInFzYyJdfSxScz1bWzEsMjIxOTllLTIxLC03MTU1MTVlLTEwLDMxMTAzZS0xMF0sWy45OTg2LC00ODIyNDNlLTksLTI0ODk3ZS05LC0xMzMwOWUtMTBdLFsuOTk1NCwtODMxMDNlLTgsLTQ0ODYwNWUtMTAsLTkuODY3MDFlLTddLFsuOTksLS4wMDEzNTM2NCwtNTk2NjFlLTksMzY3NzdlLTEwXSxbLjk4MjIsLS4wMDE2NzQ0MiwtNDQ5NTQ3ZS0xMSwtNTcyNDExZS0xMV0sWy45NzMsLS4wMDIxNDg2OCwtOTAzNTcxZS0xMCwxLjg3MzZlLThdLFsuOTYsLS4wMDMwNTA4NSwtOTAwNzYxZS0xMCwxNjQ5MTdlLTExXSxbLjk0MjcsLS4wMDM4Mjc5MiwtNjUzMzg2ZS0xMCwtMjYxNTRlLTEwXSxbLjkyMTYsLS4wMDQ2Nzc0NiwtMTA0NTdlLTgsNDgxMjQzZS0xMV0sWy44OTYyLC0uMDA1MzYyMjMsLTMyMzgzMWUtMTAsLTU0MzQzMmUtMTFdLFsuODY3OSwtLjAwNjA5MzYzLC0xMTM4OThlLTksMzMyNDg0ZS0xMV0sWy44MzUsLS4wMDY5ODMyNSwtNjQwMjUzZS0xMCw5LjM0OTU5ZS03XSxbLjc5ODYsLS4wMDc1NTMzOCwtNTAwMDA5ZS0xMCw5LjM1MzI0ZS03XSxbLjc1OTcsLS4wMDc5ODMyNCwtMzU5NzFlLTksLTIyNzYyNmUtMTFdLFsuNzE4NiwtLjAwODUxMzY3LC03MDExNDllLTEwLC04NjMwM2UtMTBdLFsuNjczMiwtLjAwOTg2MjA5LC0xOTk1NjllLTksMTkxOTc0ZS0xMF0sWy42MjEzLC0uMDEwNDE4LDg4MzkyM2UtMTAsNjI0MDUxZS0xMV0sWy41NzIyLC0uMDA5MDY2MDEsMTgyZS02LDYyNDA1MWUtMTFdLFsuNTMyMiwtLjAwNjc3Nzk3LDI3NTYwOGUtOSw2MjQwNTFlLTExXV0sTHM9W1stNTIwNDE3ZS0yMywuMDEyNCwxMjE0MzFlLTIzLC04NDUyODRlLTE2XSxbLjA2MiwuMDEyNCwtMS4yNjc5M2UtOSw0LjIyNjQyZS0xMF0sWy4xMjQsLjAxMjQsNS4wNzE3MWUtOSwtMS42MDYwNGUtOV0sWy4xODYsLjAxMjM5OTksLTEuOTAxODllLTgsNi4wMDE1MmUtOV0sWy4yNDgsLjAxMjQwMDIsNy4xMDAzOWUtOCwtMi4yNGUtOF0sWy4zMSwuMDEyMzk5MiwtMi42NDk5N2UtNyw4LjM1OTg2ZS04XSxbLjM3MiwuMDEyNDAyOSw5Ljg4OTgzZS03LC0zLjExOTk0ZS03XSxbLjQzNCwuMDEyMzg5MywtMzY5MDkzZS0xMSwtNC4zNTYyMWUtN10sWy40OTU4LC4wMTIzMTk4LC0xMDIyNTJlLTEwLC0zLjQ1NTIzZS03XSxbLjU1NzEsLjAxMjE5MTYsLTE1NDA4MWUtMTAsLTUuODIyODhlLTddLFsuNjE3NiwuMDExOTkzOCwtMjQxNDI0ZS0xMCwtNS4yNTMyN2UtN10sWy42NzY5LC4wMTE3MTMsLTMyMDIyM2UtMTAsLTUuMTY0MDVlLTddLFsuNzM0NiwuMDExMzU0MSwtMzk3Njg0ZS0xMCwtNi4wOTA1MmUtN10sWy43OTAzLC4wMTA5MTA3LC00ODkwNDJlLTEwLC0xMDQ3MzllLTExXSxbLjg0MzUsLjAxMDM0MzEsLTY0NjE1ZS05LC0xLjQwMzc0ZS05XSxbLjg5MzYsLjAwOTY5Njg2LC02NDYzNmUtOSwtODU0N2UtOV0sWy45Mzk0LC4wMDg0MDk0NywtMTkyODQxZS05LC00MjEwNmUtMTBdLFsuOTc2MSwuMDA2MTY1MjcsLTI1NmUtNiwtNDIxMDZlLTEwXSxbMSwuMDAzMjg5NDcsLTMxOTE1OWUtOSwtNDIxMDZlLTEwXV0sVHM9Qi81LERzPTEvVHMsQnM9e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLngwPXRoaXMueDB8fDAsdGhpcy55MD10aGlzLnkwfHwwLHRoaXMubG9uZzA9dGhpcy5sb25nMHx8MCx0aGlzLmVzPTAsdGhpcy50aXRsZT10aGlzLnRpdGxlfHwiUm9iaW5zb24ifSxmb3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBzPW50KHQueC10aGlzLmxvbmcwKSxpPU1hdGguYWJzKHQueSksYT1NYXRoLmZsb29yKGkqVHMpO2E8MD9hPTA6MTg8PWEmJihhPTE3KTt2YXIgaD17eDpZdChSc1thXSxpPUIqKGktRHMqYSkpKnMseTpZdChMc1thXSxpKX07cmV0dXJuIHQueTwwJiYoaC55PS1oLnkpLGgueD1oLngqdGhpcy5hKi44NDg3K3RoaXMueDAsaC55PWgueSp0aGlzLmEqMS4zNTIzK3RoaXMueTAsaH0saW52ZXJzZTpmdW5jdGlvbih0KXt2YXIgYT17eDoodC54LXRoaXMueDApLyguODQ4Nyp0aGlzLmEpLHk6TWF0aC5hYnModC55LXRoaXMueTApLygxLjM1MjMqdGhpcy5hKX07aWYoMTw9YS55KWEueC89UnNbMThdWzBdLGEueT10Lnk8MD8tejp6O2Vsc2V7dmFyIHM9TWF0aC5mbG9vcigxOCphLnkpO2ZvcihzPDA/cz0wOjE4PD1zJiYocz0xNyk7OylpZihMc1tzXVswXT5hLnkpLS1zO2Vsc2V7aWYoIShMc1tzKzFdWzBdPD1hLnkpKWJyZWFrOysrc312YXIgaD1Mc1tzXSxpPWZ1bmN0aW9uKHQscyxpLGEpe2Zvcih2YXIgaD1zO2E7LS1hKXt2YXIgZT10KGgpO2lmKGgtPWUsTWF0aC5hYnMoZSk8aSlicmVha31yZXR1cm4gaH0oZnVuY3Rpb24odCl7cmV0dXJuKFl0KGgsdCktYS55KS8oaT10LChzPWgpWzFdK2kqKDIqc1syXSszKmkqc1szXSkpO3ZhciBzLGl9LGk9NSooYS55LWhbMF0pLyhMc1tzKzFdWzBdLWhbMF0pLEQsMTAwKTthLngvPVl0KFJzW3NdLGkpLGEueT0oNSpzK2kpKk4sdC55PDAmJihhLnk9LWEueSl9cmV0dXJuIGEueD1udChhLngrdGhpcy5sb25nMCksYX0sbmFtZXM6WyJSb2JpbnNvbiIsInJvYmluIl19LFVzPXtpbml0OmZ1bmN0aW9uKCl7dGhpcy5uYW1lPSJnZW9jZW50In0sZm9yd2FyZDpmdW5jdGlvbih0KXtyZXR1cm4gTSh0LHRoaXMuZXMsdGhpcy5hKX0saW52ZXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gYyh0LHRoaXMuZXMsdGhpcy5hLHRoaXMuYil9LG5hbWVzOlsiR2VvY2VudHJpYyIsImdlb2NlbnRyaWMiLCJnZW9jZW50IiwiR2VvY2VudCJdfTtyZXR1cm4gYS5kZWZhdWx0RGF0dW09IldHUzg0IixhLlByb2o9cSxhLldHUzg0PW5ldyBhLlByb2ooIldHUzg0IiksYS5Qb2ludD1DLGEudG9Qb2ludD1idCxhLmRlZnM9bCxhLnRyYW5zZm9ybT1mLGEubWdycz1PdCxhLnZlcnNpb249IjIuNi4yIiwoJHQ9YSkuUHJvai5wcm9qZWN0aW9ucy5hZGQoc3MpLCR0LlByb2oucHJvamVjdGlvbnMuYWRkKGlzKSwkdC5Qcm9qLnByb2plY3Rpb25zLmFkZChhcyksJHQuUHJvai5wcm9qZWN0aW9ucy5hZGQoZXMpLCR0LlByb2oucHJvamVjdGlvbnMuYWRkKG5zKSwkdC5Qcm9qLnByb2plY3Rpb25zLmFkZChycyksJHQuUHJvai5wcm9qZWN0aW9ucy5hZGQob3MpLCR0LlByb2oucHJvamVjdGlvbnMuYWRkKGxzKSwkdC5Qcm9qLnByb2plY3Rpb25zLmFkZChNcyksJHQuUHJvai5wcm9qZWN0aW9ucy5hZGQoY3MpLCR0LlByb2oucHJvamVjdGlvbnMuYWRkKHVzKSwkdC5Qcm9qLnByb2plY3Rpb25zLmFkZChmcyksJHQuUHJvai5wcm9qZWN0aW9ucy5hZGQobXMpLCR0LlByb2oucHJvamVjdGlvbnMuYWRkKHBzKSwkdC5Qcm9qLnByb2plY3Rpb25zLmFkZChkcyksJHQuUHJvai5wcm9qZWN0aW9ucy5hZGQoeXMpLCR0LlByb2oucHJvamVjdGlvbnMuYWRkKF9zKSwkdC5Qcm9qLnByb2plY3Rpb25zLmFkZCh4cyksJHQuUHJvai5wcm9qZWN0aW9ucy5hZGQoZ3MpLCR0LlByb2oucHJvamVjdGlvbnMuYWRkKGJzKSwkdC5Qcm9qLnByb2plY3Rpb25zLmFkZCh2cyksJHQuUHJvai5wcm9qZWN0aW9ucy5hZGQod3MpLCR0LlByb2oucHJvamVjdGlvbnMuYWRkKENzKSwkdC5Qcm9qLnByb2plY3Rpb25zLmFkZChQcyksJHQuUHJvai5wcm9qZWN0aW9ucy5hZGQoenMpLCR0LlByb2oucHJvamVjdGlvbnMuYWRkKEJzKSwkdC5Qcm9qLnByb2plY3Rpb25zLmFkZChVcyksYX0pOzwvc2NyaXB0Pgo8c2NyaXB0PihmdW5jdGlvbiAoZmFjdG9yeSkgewoJdmFyIEwsIHByb2o0OwoJaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewoJCS8vIEFNRAoJCWRlZmluZShbJ2xlYWZsZXQnLCAncHJvajQnXSwgZmFjdG9yeSk7Cgl9IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gIm9iamVjdCIpIHsKCQkvLyBOb2RlL0NvbW1vbkpTCgkJTCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTsKCQlwcm9qNCA9IHJlcXVpcmUoJ3Byb2o0Jyk7CgkJbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KEwsIHByb2o0KTsKCX0gZWxzZSB7CgkJLy8gQnJvd3NlciBnbG9iYWxzCgkJaWYgKHR5cGVvZiB3aW5kb3cuTCA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHdpbmRvdy5wcm9qNCA9PT0gJ3VuZGVmaW5lZCcpCgkJCXRocm93ICdMZWFmbGV0IGFuZCBwcm9qNCBtdXN0IGJlIGxvYWRlZCBmaXJzdCc7CgkJZmFjdG9yeSh3aW5kb3cuTCwgd2luZG93LnByb2o0KTsKCX0KfShmdW5jdGlvbiAoTCwgcHJvajQpIHsKCWlmIChwcm9qNC5fX2VzTW9kdWxlICYmIHByb2o0LmRlZmF1bHQpIHsKCQkvLyBJZiBwcm9qNCB3YXMgYnVuZGxlZCBhcyBhbiBFUzYgbW9kdWxlLCB1bndyYXAgaXQgdG8gZ2V0CgkJLy8gdG8gdGhlIGFjdHVhbCBtYWluIHByb2o0IG9iamVjdC4KCQkvLyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20va2FydGVuYS9Qcm9qNExlYWZsZXQvcHVsbC8xNDcKCQlwcm9qNCA9IHByb2o0LmRlZmF1bHQ7Cgl9CiAKCUwuUHJvaiA9IHt9OwoKCUwuUHJvai5faXNQcm9qNE9iaiA9IGZ1bmN0aW9uKGEpIHsKCQlyZXR1cm4gKHR5cGVvZiBhLmludmVyc2UgIT09ICd1bmRlZmluZWQnICYmCgkJCXR5cGVvZiBhLmZvcndhcmQgIT09ICd1bmRlZmluZWQnKTsKCX07CgoJTC5Qcm9qLlByb2plY3Rpb24gPSBMLkNsYXNzLmV4dGVuZCh7CgkJaW5pdGlhbGl6ZTogZnVuY3Rpb24oY29kZSwgZGVmLCBib3VuZHMpIHsKCQkJdmFyIGlzUDQgPSBMLlByb2ouX2lzUHJvajRPYmooY29kZSk7CgkJCXRoaXMuX3Byb2ogPSBpc1A0ID8gY29kZSA6IHRoaXMuX3Byb2pGcm9tQ29kZURlZihjb2RlLCBkZWYpOwoJCQl0aGlzLmJvdW5kcyA9IGlzUDQgPyBkZWYgOiBib3VuZHM7CgkJfSwKCgkJcHJvamVjdDogZnVuY3Rpb24gKGxhdGxuZykgewoJCQl2YXIgcG9pbnQgPSB0aGlzLl9wcm9qLmZvcndhcmQoW2xhdGxuZy5sbmcsIGxhdGxuZy5sYXRdKTsKCQkJcmV0dXJuIG5ldyBMLlBvaW50KHBvaW50WzBdLCBwb2ludFsxXSk7CgkJfSwKCgkJdW5wcm9qZWN0OiBmdW5jdGlvbiAocG9pbnQsIHVuYm91bmRlZCkgewoJCQl2YXIgcG9pbnQyID0gdGhpcy5fcHJvai5pbnZlcnNlKFtwb2ludC54LCBwb2ludC55XSk7CgkJCXJldHVybiBuZXcgTC5MYXRMbmcocG9pbnQyWzFdLCBwb2ludDJbMF0sIHVuYm91bmRlZCk7CgkJfSwKCgkJX3Byb2pGcm9tQ29kZURlZjogZnVuY3Rpb24oY29kZSwgZGVmKSB7CgkJCWlmIChkZWYpIHsKCQkJCXByb2o0LmRlZnMoY29kZSwgZGVmKTsKCQkJfSBlbHNlIGlmIChwcm9qNC5kZWZzW2NvZGVdID09PSB1bmRlZmluZWQpIHsKCQkJCXZhciB1cm4gPSBjb2RlLnNwbGl0KCc6Jyk7CgkJCQlpZiAodXJuLmxlbmd0aCA+IDMpIHsKCQkJCQljb2RlID0gdXJuW3Vybi5sZW5ndGggLSAzXSArICc6JyArIHVyblt1cm4ubGVuZ3RoIC0gMV07CgkJCQl9CgkJCQlpZiAocHJvajQuZGVmc1tjb2RlXSA9PT0gdW5kZWZpbmVkKSB7CgkJCQkJdGhyb3cgJ05vIHByb2plY3Rpb24gZGVmaW5pdGlvbiBmb3IgY29kZSAnICsgY29kZTsKCQkJCX0KCQkJfQoKCQkJcmV0dXJuIHByb2o0KGNvZGUpOwoJCX0KCX0pOwoKCUwuUHJvai5DUlMgPSBMLkNsYXNzLmV4dGVuZCh7CgkJaW5jbHVkZXM6IEwuQ1JTLAoKCQlvcHRpb25zOiB7CgkJCXRyYW5zZm9ybWF0aW9uOiBuZXcgTC5UcmFuc2Zvcm1hdGlvbigxLCAwLCAtMSwgMCkKCQl9LAoKCQlpbml0aWFsaXplOiBmdW5jdGlvbihhLCBiLCBjKSB7CgkJCXZhciBjb2RlLAoJCQkgICAgcHJvaiwKCQkJICAgIGRlZiwKCQkJICAgIG9wdGlvbnM7CgoJCQlpZiAoTC5Qcm9qLl9pc1Byb2o0T2JqKGEpKSB7CgkJCQlwcm9qID0gYTsKCQkJCWNvZGUgPSBwcm9qLnNyc0NvZGU7CgkJCQlvcHRpb25zID0gYiB8fCB7fTsKCgkJCQl0aGlzLnByb2plY3Rpb24gPSBuZXcgTC5Qcm9qLlByb2plY3Rpb24ocHJvaiwgb3B0aW9ucy5ib3VuZHMpOwoJCQl9IGVsc2UgewoJCQkJY29kZSA9IGE7CgkJCQlkZWYgPSBiOwoJCQkJb3B0aW9ucyA9IGMgfHwge307CgkJCQl0aGlzLnByb2plY3Rpb24gPSBuZXcgTC5Qcm9qLlByb2plY3Rpb24oY29kZSwgZGVmLCBvcHRpb25zLmJvdW5kcyk7CgkJCX0KCgkJCUwuVXRpbC5zZXRPcHRpb25zKHRoaXMsIG9wdGlvbnMpOwoJCQl0aGlzLmNvZGUgPSBjb2RlOwoJCQl0aGlzLnRyYW5zZm9ybWF0aW9uID0gdGhpcy5vcHRpb25zLnRyYW5zZm9ybWF0aW9uOwoKCQkJaWYgKHRoaXMub3B0aW9ucy5vcmlnaW4pIHsKCQkJCXRoaXMudHJhbnNmb3JtYXRpb24gPQoJCQkJCW5ldyBMLlRyYW5zZm9ybWF0aW9uKDEsIC10aGlzLm9wdGlvbnMub3JpZ2luWzBdLAoJCQkJCQktMSwgdGhpcy5vcHRpb25zLm9yaWdpblsxXSk7CgkJCX0KCgkJCWlmICh0aGlzLm9wdGlvbnMuc2NhbGVzKSB7CgkJCQl0aGlzLl9zY2FsZXMgPSB0aGlzLm9wdGlvbnMuc2NhbGVzOwoJCQl9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5yZXNvbHV0aW9ucykgewoJCQkJdGhpcy5fc2NhbGVzID0gW107CgkJCQlmb3IgKHZhciBpID0gdGhpcy5vcHRpb25zLnJlc29sdXRpb25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJCQkJaWYgKHRoaXMub3B0aW9ucy5yZXNvbHV0aW9uc1tpXSkgewoJCQkJCQl0aGlzLl9zY2FsZXNbaV0gPSAxIC8gdGhpcy5vcHRpb25zLnJlc29sdXRpb25zW2ldOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJdGhpcy5pbmZpbml0ZSA9ICF0aGlzLm9wdGlvbnMuYm91bmRzOwoKCQl9LAoKCQlzY2FsZTogZnVuY3Rpb24oem9vbSkgewoJCQl2YXIgaVpvb20gPSBNYXRoLmZsb29yKHpvb20pLAoJCQkJYmFzZVNjYWxlLAoJCQkJbmV4dFNjYWxlLAoJCQkJc2NhbGVEaWZmLAoJCQkJekRpZmY7CgkJCWlmICh6b29tID09PSBpWm9vbSkgewoJCQkJcmV0dXJuIHRoaXMuX3NjYWxlc1t6b29tXTsKCQkJfSBlbHNlIHsKCQkJCS8vIE5vbi1pbnRlZ2VyIHpvb20sIGludGVycG9sYXRlCgkJCQliYXNlU2NhbGUgPSB0aGlzLl9zY2FsZXNbaVpvb21dOwoJCQkJbmV4dFNjYWxlID0gdGhpcy5fc2NhbGVzW2lab29tICsgMV07CgkJCQlzY2FsZURpZmYgPSBuZXh0U2NhbGUgLSBiYXNlU2NhbGU7CgkJCQl6RGlmZiA9ICh6b29tIC0gaVpvb20pOwoJCQkJcmV0dXJuIGJhc2VTY2FsZSArIHNjYWxlRGlmZiAqIHpEaWZmOwoJCQl9CgkJfSwKCgkJem9vbTogZnVuY3Rpb24oc2NhbGUpIHsKCQkJLy8gRmluZCBjbG9zZXN0IG51bWJlciBpbiB0aGlzLl9zY2FsZXMsIGRvd24KCQkJdmFyIGRvd25TY2FsZSA9IHRoaXMuX2Nsb3Nlc3RFbGVtZW50KHRoaXMuX3NjYWxlcywgc2NhbGUpLAoJCQkJZG93blpvb20gPSB0aGlzLl9zY2FsZXMuaW5kZXhPZihkb3duU2NhbGUpLAoJCQkJbmV4dFNjYWxlLAoJCQkJbmV4dFpvb20sCgkJCQlzY2FsZURpZmY7CgkJCS8vIENoZWNrIGlmIHNjYWxlIGlzIGRvd25TY2FsZSA9PiByZXR1cm4gYXJyYXkgaW5kZXgKCQkJaWYgKHNjYWxlID09PSBkb3duU2NhbGUpIHsKCQkJCXJldHVybiBkb3duWm9vbTsKCQkJfQoJCQlpZiAoZG93blNjYWxlID09PSB1bmRlZmluZWQpIHsKCQkJCXJldHVybiAtSW5maW5pdHk7CgkJCX0KCQkJLy8gSW50ZXJwb2xhdGUKCQkJbmV4dFpvb20gPSBkb3duWm9vbSArIDE7CgkJCW5leHRTY2FsZSA9IHRoaXMuX3NjYWxlc1tuZXh0Wm9vbV07CgkJCWlmIChuZXh0U2NhbGUgPT09IHVuZGVmaW5lZCkgewoJCQkJcmV0dXJuIEluZmluaXR5OwoJCQl9CgkJCXNjYWxlRGlmZiA9IG5leHRTY2FsZSAtIGRvd25TY2FsZTsKCQkJcmV0dXJuIChzY2FsZSAtIGRvd25TY2FsZSkgLyBzY2FsZURpZmYgKyBkb3duWm9vbTsKCQl9LAoKCQlkaXN0YW5jZTogTC5DUlMuRWFydGguZGlzdGFuY2UsCgoJCVI6IEwuQ1JTLkVhcnRoLlIsCgoJCS8qIEdldCB0aGUgY2xvc2VzdCBsb3dlc3QgZWxlbWVudCBpbiBhbiBhcnJheSAqLwoJCV9jbG9zZXN0RWxlbWVudDogZnVuY3Rpb24oYXJyYXksIGVsZW1lbnQpIHsKCQkJdmFyIGxvdzsKCQkJZm9yICh2YXIgaSA9IGFycmF5Lmxlbmd0aDsgaS0tOykgewoJCQkJaWYgKGFycmF5W2ldIDw9IGVsZW1lbnQgJiYgKGxvdyA9PT0gdW5kZWZpbmVkIHx8IGxvdyA8IGFycmF5W2ldKSkgewoJCQkJCWxvdyA9IGFycmF5W2ldOwoJCQkJfQoJCQl9CgkJCXJldHVybiBsb3c7CgkJfQoJfSk7CgoJTC5Qcm9qLkdlb0pTT04gPSBMLkdlb0pTT04uZXh0ZW5kKHsKCQlpbml0aWFsaXplOiBmdW5jdGlvbihnZW9qc29uLCBvcHRpb25zKSB7CgkJCXRoaXMuX2NhbGxMZXZlbCA9IDA7CgkJCUwuR2VvSlNPTi5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIGdlb2pzb24sIG9wdGlvbnMpOwoJCX0sCgoJCWFkZERhdGE6IGZ1bmN0aW9uKGdlb2pzb24pIHsKCQkJdmFyIGNyczsKCgkJCWlmIChnZW9qc29uKSB7CgkJCQlpZiAoZ2VvanNvbi5jcnMgJiYgZ2VvanNvbi5jcnMudHlwZSA9PT0gJ25hbWUnKSB7CgkJCQkJY3JzID0gbmV3IEwuUHJvai5DUlMoZ2VvanNvbi5jcnMucHJvcGVydGllcy5uYW1lKTsKCQkJCX0gZWxzZSBpZiAoZ2VvanNvbi5jcnMgJiYgZ2VvanNvbi5jcnMudHlwZSkgewoJCQkJCWNycyA9IG5ldyBMLlByb2ouQ1JTKGdlb2pzb24uY3JzLnR5cGUgKyAnOicgKyBnZW9qc29uLmNycy5wcm9wZXJ0aWVzLmNvZGUpOwoJCQkJfQoKCQkJCWlmIChjcnMgIT09IHVuZGVmaW5lZCkgewoJCQkJCXRoaXMub3B0aW9ucy5jb29yZHNUb0xhdExuZyA9IGZ1bmN0aW9uKGNvb3JkcykgewoJCQkJCQl2YXIgcG9pbnQgPSBMLnBvaW50KGNvb3Jkc1swXSwgY29vcmRzWzFdKTsKCQkJCQkJcmV0dXJuIGNycy5wcm9qZWN0aW9uLnVucHJvamVjdChwb2ludCk7CgkJCQkJfTsKCQkJCX0KCQkJfQoKCQkJLy8gQmFzZSBjbGFzcycgYWRkRGF0YSBtaWdodCBjYWxsIHVzIHJlY3Vyc2l2ZWx5LCBidXQKCQkJLy8gQ1JTIHNob3VsZG4ndCBiZSBjbGVhcmVkIGluIHRoYXQgY2FzZSwgc2luY2UgQ1JTIGFwcGxpZXMKCQkJLy8gdG8gdGhlIHdob2xlIEdlb0pTT04sIGlubHVkaW5nIHN1Yi1mZWF0dXJlcy4KCQkJdGhpcy5fY2FsbExldmVsKys7CgkJCXRyeSB7CgkJCQlMLkdlb0pTT04ucHJvdG90eXBlLmFkZERhdGEuY2FsbCh0aGlzLCBnZW9qc29uKTsKCQkJfSBmaW5hbGx5IHsKCQkJCXRoaXMuX2NhbGxMZXZlbC0tOwoJCQkJaWYgKHRoaXMuX2NhbGxMZXZlbCA9PT0gMCkgewoJCQkJCWRlbGV0ZSB0aGlzLm9wdGlvbnMuY29vcmRzVG9MYXRMbmc7CgkJCQl9CgkJCX0KCQl9Cgl9KTsKCglMLlByb2ouZ2VvSnNvbiA9IGZ1bmN0aW9uKGdlb2pzb24sIG9wdGlvbnMpIHsKCQlyZXR1cm4gbmV3IEwuUHJvai5HZW9KU09OKGdlb2pzb24sIG9wdGlvbnMpOwoJfTsKCglMLlByb2ouSW1hZ2VPdmVybGF5ID0gTC5JbWFnZU92ZXJsYXkuZXh0ZW5kKHsKCQlpbml0aWFsaXplOiBmdW5jdGlvbiAodXJsLCBib3VuZHMsIG9wdGlvbnMpIHsKCQkJTC5JbWFnZU92ZXJsYXkucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCB1cmwsIG51bGwsIG9wdGlvbnMpOwoJCQl0aGlzLl9wcm9qZWN0ZWRCb3VuZHMgPSBib3VuZHM7CgkJfSwKCgkJLy8gRGFuZ2VyIGFoZWFkOiBPdmVycmlkaW5nIGludGVybmFsIG1ldGhvZHMgaW4gTGVhZmxldC4KCQkvLyBEZWNpZGVkIHRvIGRvIHRoaXMgcmF0aGVyIHRoYW4gbWFraW5nIGEgY29weSBvZiBMLkltYWdlT3ZlcmxheQoJCS8vIGFuZCBkb2luZyB2ZXJ5IHRpbnkgbW9kaWZpY2F0aW9ucyB0byBpdC4KCQkvLyBGdXR1cmUgd2lsbCB0ZWxsIGlmIHRoaXMgd2FzIHdpc2Ugb3Igbm90LgoJCV9hbmltYXRlWm9vbTogZnVuY3Rpb24gKGV2ZW50KSB7CgkJCXZhciBzY2FsZSA9IHRoaXMuX21hcC5nZXRab29tU2NhbGUoZXZlbnQuem9vbSk7CgkJCXZhciBub3J0aFdlc3QgPSBMLnBvaW50KHRoaXMuX3Byb2plY3RlZEJvdW5kcy5taW4ueCwgdGhpcy5fcHJvamVjdGVkQm91bmRzLm1heC55KTsKCQkJdmFyIG9mZnNldCA9IHRoaXMuX3Byb2plY3RlZFRvTmV3TGF5ZXJQb2ludChub3J0aFdlc3QsIGV2ZW50Lnpvb20sIGV2ZW50LmNlbnRlcik7CgoJCQlMLkRvbVV0aWwuc2V0VHJhbnNmb3JtKHRoaXMuX2ltYWdlLCBvZmZzZXQsIHNjYWxlKTsKCQl9LAoKCQlfcmVzZXQ6IGZ1bmN0aW9uICgpIHsKCQkJdmFyIHpvb20gPSB0aGlzLl9tYXAuZ2V0Wm9vbSgpOwoJCQl2YXIgcGl4ZWxPcmlnaW4gPSB0aGlzLl9tYXAuZ2V0UGl4ZWxPcmlnaW4oKTsKCQkJdmFyIGJvdW5kcyA9IEwuYm91bmRzKAoJCQkJdGhpcy5fdHJhbnNmb3JtKHRoaXMuX3Byb2plY3RlZEJvdW5kcy5taW4sIHpvb20pLl9zdWJ0cmFjdChwaXhlbE9yaWdpbiksCgkJCQl0aGlzLl90cmFuc2Zvcm0odGhpcy5fcHJvamVjdGVkQm91bmRzLm1heCwgem9vbSkuX3N1YnRyYWN0KHBpeGVsT3JpZ2luKQoJCQkpOwoJCQl2YXIgc2l6ZSA9IGJvdW5kcy5nZXRTaXplKCk7CgoJCQlMLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5faW1hZ2UsIGJvdW5kcy5taW4pOwoJCQl0aGlzLl9pbWFnZS5zdHlsZS53aWR0aCA9IHNpemUueCArICdweCc7CgkJCXRoaXMuX2ltYWdlLnN0eWxlLmhlaWdodCA9IHNpemUueSArICdweCc7CgkJfSwKCgkJX3Byb2plY3RlZFRvTmV3TGF5ZXJQb2ludDogZnVuY3Rpb24gKHBvaW50LCB6b29tLCBjZW50ZXIpIHsKCQkJdmFyIHZpZXdIYWxmID0gdGhpcy5fbWFwLmdldFNpemUoKS5fZGl2aWRlQnkoMik7CgkJCXZhciBuZXdUb3BMZWZ0ID0gdGhpcy5fbWFwLnByb2plY3QoY2VudGVyLCB6b29tKS5fc3VidHJhY3Qodmlld0hhbGYpLl9yb3VuZCgpOwoJCQl2YXIgdG9wTGVmdCA9IG5ld1RvcExlZnQuYWRkKHRoaXMuX21hcC5fZ2V0TWFwUGFuZVBvcygpKTsKCgkJCXJldHVybiB0aGlzLl90cmFuc2Zvcm0ocG9pbnQsIHpvb20pLl9zdWJ0cmFjdCh0b3BMZWZ0KTsKCQl9LAoKCQlfdHJhbnNmb3JtOiBmdW5jdGlvbiAocG9pbnQsIHpvb20pIHsKCQkJdmFyIGNycyA9IHRoaXMuX21hcC5vcHRpb25zLmNyczsKCQkJdmFyIHRyYW5zZm9ybWF0aW9uID0gY3JzLnRyYW5zZm9ybWF0aW9uOwoJCQl2YXIgc2NhbGUgPSBjcnMuc2NhbGUoem9vbSk7CgoJCQlyZXR1cm4gdHJhbnNmb3JtYXRpb24udHJhbnNmb3JtKHBvaW50LCBzY2FsZSk7CgkJfQoJfSk7CgoJTC5Qcm9qLmltYWdlT3ZlcmxheSA9IGZ1bmN0aW9uICh1cmwsIGJvdW5kcywgb3B0aW9ucykgewoJCXJldHVybiBuZXcgTC5Qcm9qLkltYWdlT3ZlcmxheSh1cmwsIGJvdW5kcywgb3B0aW9ucyk7Cgl9OwoKCXJldHVybiBMLlByb2o7Cn0pKTsKPC9zY3JpcHQ+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LmxlYWZsZXQtdG9vbHRpcC5sZWFmbGV0LXRvb2x0aXAtdGV4dC1vbmx5LAoubGVhZmxldC10b29sdGlwLmxlYWZsZXQtdG9vbHRpcC10ZXh0LW9ubHk6YmVmb3JlLAoubGVhZmxldC10b29sdGlwLmxlYWZsZXQtdG9vbHRpcC10ZXh0LW9ubHk6YWZ0ZXIgewpiYWNrZ3JvdW5kOiBub25lOwpib3JkZXI6IG5vbmU7CmJveC1zaGFkb3c6IG5vbmU7Cn0KLmxlYWZsZXQtdG9vbHRpcC5sZWFmbGV0LXRvb2x0aXAtdGV4dC1vbmx5LmxlYWZsZXQtdG9vbHRpcC1sZWZ0IHsKbWFyZ2luLWxlZnQ6IDVweDsKfQoubGVhZmxldC10b29sdGlwLmxlYWZsZXQtdG9vbHRpcC10ZXh0LW9ubHkubGVhZmxldC10b29sdGlwLXJpZ2h0IHsKbWFyZ2luLWxlZnQ6IC01cHg7Cn0KLmxlYWZsZXQtdG9vbHRpcDphZnRlciB7CmJvcmRlci1yaWdodDogNnB4IHNvbGlkIHRyYW5zcGFyZW50OwoKfQoubGVhZmxldC1wb3B1cC1wYW5lIC5sZWFmbGV0LXBvcHVwLXRpcC1jb250YWluZXIgewoKcG9pbnRlci1ldmVudHM6IGFsbDsKCmN1cnNvcjogcG9pbnRlcjsKfQoKLmxlYWZsZXQtbWFwLXBhbmUgewp6LWluZGV4OiBhdXRvOwp9CgoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtcmlnaHQtcGFuZSBpbWcsCi5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1sZWZ0LXBhbmUgaW1nIHsKbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7Cm1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDsKfQo8L3N0eWxlPgo8c2NyaXB0PihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIraSsiJyIpO3Rocm93IGEuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CiJ1c2Ugc3RyaWN0IjsKCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0c1siZGVmYXVsdCJdID0gdW5kZWZpbmVkOwoKdmFyIF91dGlsID0gcmVxdWlyZSgiLi91dGlsIik7CgpmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KCmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9CgpmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfQoKdmFyIENsdXN0ZXJMYXllclN0b3JlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBDbHVzdGVyTGF5ZXJTdG9yZShncm91cCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENsdXN0ZXJMYXllclN0b3JlKTsKCiAgICB0aGlzLl9sYXllcnMgPSB7fTsKICAgIHRoaXMuX2dyb3VwID0gZ3JvdXA7CiAgfQoKICBfY3JlYXRlQ2xhc3MoQ2x1c3RlckxheWVyU3RvcmUsIFt7CiAgICBrZXk6ICJhZGQiLAogICAgdmFsdWU6IGZ1bmN0aW9uIGFkZChsYXllciwgaWQpIHsKICAgICAgaWYgKHR5cGVvZiBpZCAhPT0gInVuZGVmaW5lZCIgJiYgaWQgIT09IG51bGwpIHsKICAgICAgICBpZiAodGhpcy5fbGF5ZXJzW2lkXSkgewogICAgICAgICAgdGhpcy5fZ3JvdXAucmVtb3ZlTGF5ZXIodGhpcy5fbGF5ZXJzW2lkXSk7CiAgICAgICAgfQoKICAgICAgICB0aGlzLl9sYXllcnNbaWRdID0gbGF5ZXI7CiAgICAgIH0KCiAgICAgIHRoaXMuX2dyb3VwLmFkZExheWVyKGxheWVyKTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJyZW1vdmUiLAogICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZShpZCkgewogICAgICBpZiAodHlwZW9mIGlkID09PSAidW5kZWZpbmVkIiB8fCBpZCA9PT0gbnVsbCkgewogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgaWQgPSAoMCwgX3V0aWwuYXNBcnJheSkoaWQpOwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKykgewogICAgICAgIGlmICh0aGlzLl9sYXllcnNbaWRbaV1dKSB7CiAgICAgICAgICB0aGlzLl9ncm91cC5yZW1vdmVMYXllcih0aGlzLl9sYXllcnNbaWRbaV1dKTsKCiAgICAgICAgICBkZWxldGUgdGhpcy5fbGF5ZXJzW2lkW2ldXTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LCB7CiAgICBrZXk6ICJjbGVhciIsCiAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXIoKSB7CiAgICAgIHRoaXMuX2xheWVycyA9IHt9OwoKICAgICAgdGhpcy5fZ3JvdXAuY2xlYXJMYXllcnMoKTsKICAgIH0KICB9XSk7CgogIHJldHVybiBDbHVzdGVyTGF5ZXJTdG9yZTsKfSgpOwoKZXhwb3J0c1siZGVmYXVsdCJdID0gQ2x1c3RlckxheWVyU3RvcmU7CgoKfSx7Ii4vdXRpbCI6MTd9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKInVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwoKZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9CgpmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfQoKZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH0KCnZhciBDb250cm9sU3RvcmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENvbnRyb2xTdG9yZShtYXApIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb250cm9sU3RvcmUpOwoKICAgIHRoaXMuX2NvbnRyb2xzTm9JZCA9IFtdOwogICAgdGhpcy5fY29udHJvbHNCeUlkID0ge307CiAgICB0aGlzLl9tYXAgPSBtYXA7CiAgfQoKICBfY3JlYXRlQ2xhc3MoQ29udHJvbFN0b3JlLCBbewogICAga2V5OiAiYWRkIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoY29udHJvbCwgaWQsIGh0bWwpIHsKICAgICAgaWYgKHR5cGVvZiBpZCAhPT0gInVuZGVmaW5lZCIgJiYgaWQgIT09IG51bGwpIHsKICAgICAgICBpZiAodGhpcy5fY29udHJvbHNCeUlkW2lkXSkgewogICAgICAgICAgdGhpcy5fbWFwLnJlbW92ZUNvbnRyb2wodGhpcy5fY29udHJvbHNCeUlkW2lkXSk7CiAgICAgICAgfQoKICAgICAgICB0aGlzLl9jb250cm9sc0J5SWRbaWRdID0gY29udHJvbDsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9jb250cm9sc05vSWQucHVzaChjb250cm9sKTsKICAgICAgfQoKICAgICAgdGhpcy5fbWFwLmFkZENvbnRyb2woY29udHJvbCk7CiAgICB9CiAgfSwgewogICAga2V5OiAiZ2V0IiwKICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoaWQpIHsKICAgICAgdmFyIGNvbnRyb2wgPSBudWxsOwoKICAgICAgaWYgKHRoaXMuX2NvbnRyb2xzQnlJZFtpZF0pIHsKICAgICAgICBjb250cm9sID0gdGhpcy5fY29udHJvbHNCeUlkW2lkXTsKICAgICAgfQoKICAgICAgcmV0dXJuIGNvbnRyb2w7CiAgICB9CiAgfSwgewogICAga2V5OiAicmVtb3ZlIiwKICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUoaWQpIHsKICAgICAgaWYgKHRoaXMuX2NvbnRyb2xzQnlJZFtpZF0pIHsKICAgICAgICB2YXIgY29udHJvbCA9IHRoaXMuX2NvbnRyb2xzQnlJZFtpZF07CgogICAgICAgIHRoaXMuX21hcC5yZW1vdmVDb250cm9sKGNvbnRyb2wpOwoKICAgICAgICBkZWxldGUgdGhpcy5fY29udHJvbHNCeUlkW2lkXTsKICAgICAgfQogICAgfQogIH0sIHsKICAgIGtleTogImNsZWFyIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhcigpIHsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jb250cm9sc05vSWQubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgY29udHJvbCA9IHRoaXMuX2NvbnRyb2xzTm9JZFtpXTsKCiAgICAgICAgdGhpcy5fbWFwLnJlbW92ZUNvbnRyb2woY29udHJvbCk7CiAgICAgIH0KCiAgICAgIHRoaXMuX2NvbnRyb2xzTm9JZCA9IFtdOwoKICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX2NvbnRyb2xzQnlJZCkgewogICAgICAgIHZhciBfY29udHJvbCA9IHRoaXMuX2NvbnRyb2xzQnlJZFtrZXldOwoKICAgICAgICB0aGlzLl9tYXAucmVtb3ZlQ29udHJvbChfY29udHJvbCk7CiAgICAgIH0KCiAgICAgIHRoaXMuX2NvbnRyb2xzQnlJZCA9IHt9OwogICAgfQogIH1dKTsKCiAgcmV0dXJuIENvbnRyb2xTdG9yZTsKfSgpOwoKZXhwb3J0c1siZGVmYXVsdCJdID0gQ29udHJvbFN0b3JlOwoKCn0se31dLDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewoidXNlIHN0cmljdCI7CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CiAgdmFsdWU6IHRydWUKfSk7CmV4cG9ydHMuZ2V0Q1JTID0gZ2V0Q1JTOwoKdmFyIF9sZWFmbGV0ID0gcmVxdWlyZSgiLi9nbG9iYWwvbGVhZmxldCIpOwoKdmFyIF9sZWFmbGV0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2xlYWZsZXQpOwoKdmFyIF9wcm9qNGxlYWZsZXQgPSByZXF1aXJlKCIuL2dsb2JhbC9wcm9qNGxlYWZsZXQiKTsKCnZhciBfcHJvajRsZWFmbGV0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb2o0bGVhZmxldCk7CgpmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAiZGVmYXVsdCI6IG9iaiB9OyB9CgovLyBIZWxwZXIgZnVuY3Rpb24gdG8gaW5zdGFuY2lhdGUgYSBJQ1JTIGluc3RhbmNlLgpmdW5jdGlvbiBnZXRDUlMoY3JzT3B0aW9ucykgewogIHZhciBjcnMgPSBfbGVhZmxldDJbImRlZmF1bHQiXS5DUlMuRVBTRzM4NTc7IC8vIERlZmF1bHQgU3BoZXJpY2FsIE1lcmNhdG9yCgogIHN3aXRjaCAoY3JzT3B0aW9ucy5jcnNDbGFzcykgewogICAgY2FzZSAiTC5DUlMuRVBTRzM4NTciOgogICAgICBjcnMgPSBfbGVhZmxldDJbImRlZmF1bHQiXS5DUlMuRVBTRzM4NTc7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgIkwuQ1JTLkVQU0c0MzI2IjoKICAgICAgY3JzID0gX2xlYWZsZXQyWyJkZWZhdWx0Il0uQ1JTLkVQU0c0MzI2OwogICAgICBicmVhazsKCiAgICBjYXNlICJMLkNSUy5FUFNHMzM5NSI6CiAgICAgIGNycyA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLkNSUy5FUFNHMzM5NTsKICAgICAgYnJlYWs7CgogICAgY2FzZSAiTC5DUlMuU2ltcGxlIjoKICAgICAgY3JzID0gX2xlYWZsZXQyWyJkZWZhdWx0Il0uQ1JTLlNpbXBsZTsKICAgICAgYnJlYWs7CgogICAgY2FzZSAiTC5Qcm9qLkNSUyI6CiAgICAgIGlmIChjcnNPcHRpb25zLm9wdGlvbnMgJiYgY3JzT3B0aW9ucy5vcHRpb25zLmJvdW5kcykgewogICAgICAgIGNyc09wdGlvbnMub3B0aW9ucy5ib3VuZHMgPSBfbGVhZmxldDJbImRlZmF1bHQiXS5ib3VuZHMoY3JzT3B0aW9ucy5vcHRpb25zLmJvdW5kcyk7CiAgICAgIH0KCiAgICAgIGlmIChjcnNPcHRpb25zLm9wdGlvbnMgJiYgY3JzT3B0aW9ucy5vcHRpb25zLnRyYW5zZm9ybWF0aW9uKSB7CiAgICAgICAgY3JzT3B0aW9ucy5vcHRpb25zLnRyYW5zZm9ybWF0aW9uID0gbmV3IF9sZWFmbGV0MlsiZGVmYXVsdCJdLlRyYW5zZm9ybWF0aW9uKGNyc09wdGlvbnMub3B0aW9ucy50cmFuc2Zvcm1hdGlvblswXSwgY3JzT3B0aW9ucy5vcHRpb25zLnRyYW5zZm9ybWF0aW9uWzFdLCBjcnNPcHRpb25zLm9wdGlvbnMudHJhbnNmb3JtYXRpb25bMl0sIGNyc09wdGlvbnMub3B0aW9ucy50cmFuc2Zvcm1hdGlvblszXSk7CiAgICAgIH0KCiAgICAgIGNycyA9IG5ldyBfcHJvajRsZWFmbGV0MlsiZGVmYXVsdCJdLkNSUyhjcnNPcHRpb25zLmNvZGUsIGNyc09wdGlvbnMucHJvajRkZWYsIGNyc09wdGlvbnMub3B0aW9ucyk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgIkwuUHJvai5DUlMuVE1TIjoKICAgICAgaWYgKGNyc09wdGlvbnMub3B0aW9ucyAmJiBjcnNPcHRpb25zLm9wdGlvbnMuYm91bmRzKSB7CiAgICAgICAgY3JzT3B0aW9ucy5vcHRpb25zLmJvdW5kcyA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLmJvdW5kcyhjcnNPcHRpb25zLm9wdGlvbnMuYm91bmRzKTsKICAgICAgfQoKICAgICAgaWYgKGNyc09wdGlvbnMub3B0aW9ucyAmJiBjcnNPcHRpb25zLm9wdGlvbnMudHJhbnNmb3JtYXRpb24pIHsKICAgICAgICBjcnNPcHRpb25zLm9wdGlvbnMudHJhbnNmb3JtYXRpb24gPSBfbGVhZmxldDJbImRlZmF1bHQiXS5UcmFuc2Zvcm1hdGlvbihjcnNPcHRpb25zLm9wdGlvbnMudHJhbnNmb3JtYXRpb25bMF0sIGNyc09wdGlvbnMub3B0aW9ucy50cmFuc2Zvcm1hdGlvblsxXSwgY3JzT3B0aW9ucy5vcHRpb25zLnRyYW5zZm9ybWF0aW9uWzJdLCBjcnNPcHRpb25zLm9wdGlvbnMudHJhbnNmb3JtYXRpb25bM10pOwogICAgICB9IC8vIEwuUHJvai5DUlMuVE1TIGlzIGRlcHJlY2F0ZWQgYXMgb2YgTGVhZmxldCAxLngsIGZhbGwgYmFjayB0byBMLlByb2ouQ1JTCiAgICAgIC8vY3JzID0gbmV3IFByb2o0TGVhZmxldC5DUlMuVE1TKGNyc09wdGlvbnMuY29kZSwgY3JzT3B0aW9ucy5wcm9qNGRlZiwgY3JzT3B0aW9ucy5wcm9qZWN0ZWRCb3VuZHMsIGNyc09wdGlvbnMub3B0aW9ucyk7CgoKICAgICAgY3JzID0gbmV3IF9wcm9qNGxlYWZsZXQyWyJkZWZhdWx0Il0uQ1JTKGNyc09wdGlvbnMuY29kZSwgY3JzT3B0aW9ucy5wcm9qNGRlZiwgY3JzT3B0aW9ucy5vcHRpb25zKTsKICAgICAgYnJlYWs7CiAgfQoKICByZXR1cm4gY3JzOwp9CgoKfSx7Ii4vZ2xvYmFsL2xlYWZsZXQiOjEwLCIuL2dsb2JhbC9wcm9qNGxlYWZsZXQiOjExfV0sNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CiJ1c2Ugc3RyaWN0IjsKCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0c1siZGVmYXVsdCJdID0gdW5kZWZpbmVkOwoKdmFyIF91dGlsID0gcmVxdWlyZSgiLi91dGlsIik7CgpmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KCmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9CgpmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfQoKdmFyIERhdGFGcmFtZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gRGF0YUZyYW1lKCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERhdGFGcmFtZSk7CgogICAgdGhpcy5jb2x1bW5zID0gW107CiAgICB0aGlzLmNvbG5hbWVzID0gW107CiAgICB0aGlzLmNvbHN0cmljdCA9IFtdOwogICAgdGhpcy5lZmZlY3RpdmVMZW5ndGggPSAwOwogICAgdGhpcy5jb2xpbmRpY2VzID0ge307CiAgfQoKICBfY3JlYXRlQ2xhc3MoRGF0YUZyYW1lLCBbewogICAga2V5OiAiX3VwZGF0ZUNhY2hlZFByb3BlcnRpZXMiLAogICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGVDYWNoZWRQcm9wZXJ0aWVzKCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgdGhpcy5lZmZlY3RpdmVMZW5ndGggPSAwOwogICAgICB0aGlzLmNvbGluZGljZXMgPSB7fTsKICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbiwgaSkgewogICAgICAgIF90aGlzLmVmZmVjdGl2ZUxlbmd0aCA9IE1hdGgubWF4KF90aGlzLmVmZmVjdGl2ZUxlbmd0aCwgY29sdW1uLmxlbmd0aCk7CiAgICAgICAgX3RoaXMuY29saW5kaWNlc1tfdGhpcy5jb2xuYW1lc1tpXV0gPSBpOwogICAgICB9KTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJfY29sSW5kZXgiLAogICAgdmFsdWU6IGZ1bmN0aW9uIF9jb2xJbmRleChjb2xuYW1lKSB7CiAgICAgIHZhciBpbmRleCA9IHRoaXMuY29saW5kaWNlc1tjb2xuYW1lXTsKICAgICAgaWYgKHR5cGVvZiBpbmRleCA9PT0gInVuZGVmaW5lZCIpIHJldHVybiAtMTsKICAgICAgcmV0dXJuIGluZGV4OwogICAgfQogIH0sIHsKICAgIGtleTogImNvbCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gY29sKG5hbWUsIHZhbHVlcywgc3RyaWN0KSB7CiAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gInN0cmluZyIpIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2x1bW4gbmFtZSBcIiIgKyBuYW1lICsgIlwiIik7CgogICAgICB2YXIgaW5kZXggPSB0aGlzLl9jb2xJbmRleChuYW1lKTsKCiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgaWYgKGluZGV4IDwgMCkgcmV0dXJuIG51bGw7ZWxzZSByZXR1cm4gKDAsIF91dGlsLnJlY3ljbGUpKHRoaXMuY29sdW1uc1tpbmRleF0sIHRoaXMuZWZmZWN0aXZlTGVuZ3RoKTsKICAgICAgfQoKICAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgIGluZGV4ID0gdGhpcy5jb2xuYW1lcy5sZW5ndGg7CiAgICAgICAgdGhpcy5jb2xuYW1lcy5wdXNoKG5hbWUpOwogICAgICB9CgogICAgICB0aGlzLmNvbHVtbnNbaW5kZXhdID0gKDAsIF91dGlsLmFzQXJyYXkpKHZhbHVlcyk7CiAgICAgIHRoaXMuY29sc3RyaWN0W2luZGV4XSA9ICEhc3RyaWN0OyAvLyBUT0RPOiBWYWxpZGF0ZSBzdHJpY3RuZXNzIChlbnN1cmUgbGVuZ3RocyBtYXRjaCB1cCB3aXRoIG90aGVyIHN0cmljdHMpCgogICAgICB0aGlzLl91cGRhdGVDYWNoZWRQcm9wZXJ0aWVzKCk7CgogICAgICByZXR1cm4gdGhpczsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJjYmluZCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gY2JpbmQob2JqLCBzdHJpY3QpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICB2YXIgY29sZGF0YSA9IG9ialtuYW1lXTsKCiAgICAgICAgX3RoaXMyLmNvbChuYW1lLCBjb2xkYXRhKTsKICAgICAgfSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQogIH0sIHsKICAgIGtleTogImdldCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KHJvdywgY29sLCBtaXNzaW5nT0spIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CgogICAgICBpZiAocm93ID4gdGhpcy5lZmZlY3RpdmVMZW5ndGgpIHRocm93IG5ldyBFcnJvcigiUm93IGFyZ3VtZW50IHdhcyBvdXQgb2YgYm91bmRzOiAiICsgcm93ICsgIiA+ICIgKyB0aGlzLmVmZmVjdGl2ZUxlbmd0aCk7CiAgICAgIHZhciBjb2xJbmRleCA9IC0xOwoKICAgICAgaWYgKHR5cGVvZiBjb2wgPT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgdmFyIHJvd0RhdGEgPSB7fTsKICAgICAgICB0aGlzLmNvbG5hbWVzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIGkpIHsKICAgICAgICAgIHJvd0RhdGFbbmFtZV0gPSBfdGhpczMuY29sdW1uc1tpXVtyb3cgJSBfdGhpczMuY29sdW1uc1tpXS5sZW5ndGhdOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiByb3dEYXRhOwogICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2wgPT09ICJzdHJpbmciKSB7CiAgICAgICAgY29sSW5kZXggPSB0aGlzLl9jb2xJbmRleChjb2wpOwogICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2wgPT09ICJudW1iZXIiKSB7CiAgICAgICAgY29sSW5kZXggPSBjb2w7CiAgICAgIH0KCiAgICAgIGlmIChjb2xJbmRleCA8IDAgfHwgY29sSW5kZXggPiB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7CiAgICAgICAgaWYgKG1pc3NpbmdPSykgcmV0dXJuIHZvaWQgMDtlbHNlIHRocm93IG5ldyBFcnJvcigiVW5rbm93biBjb2x1bW4gaW5kZXg6ICIgKyBjb2wpOwogICAgICB9CgogICAgICByZXR1cm4gdGhpcy5jb2x1bW5zW2NvbEluZGV4XVtyb3cgJSB0aGlzLmNvbHVtbnNbY29sSW5kZXhdLmxlbmd0aF07CiAgICB9CiAgfSwgewogICAga2V5OiAibnJvdyIsCiAgICB2YWx1ZTogZnVuY3Rpb24gbnJvdygpIHsKICAgICAgcmV0dXJuIHRoaXMuZWZmZWN0aXZlTGVuZ3RoOwogICAgfQogIH1dKTsKCiAgcmV0dXJuIERhdGFGcmFtZTsKfSgpOwoKZXhwb3J0c1siZGVmYXVsdCJdID0gRGF0YUZyYW1lOwoKCn0seyIuL3V0aWwiOjE3fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CiJ1c2Ugc3RyaWN0IjsKCnZhciBfbGVhZmxldCA9IHJlcXVpcmUoIi4vZ2xvYmFsL2xlYWZsZXQiKTsKCnZhciBfbGVhZmxldDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sZWFmbGV0KTsKCmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICJkZWZhdWx0Ijogb2JqIH07IH0KCi8vIEluIFJNYXJrZG93bidzIHNlbGYtY29udGFpbmVkIG1vZGUsIHdlIGRvbid0IGhhdmUgYSB3YXkgdG8gY2FycnkgYXJvdW5kIHRoZQovLyBpbWFnZXMgdGhhdCBMZWFmbGV0IG5lZWRzIGJ1dCBkb2Vzbid0IGxvYWQgaW50byB0aGUgcGFnZS4gSW5zdGVhZCwgd2UnbGwgdXNlCi8vIHRoZSB1bnBrZyBDRE4uCmlmICh0eXBlb2YgX2xlYWZsZXQyWyJkZWZhdWx0Il0uSWNvbi5EZWZhdWx0LmltYWdlUGF0aCA9PT0gInVuZGVmaW5lZCIpIHsKICBfbGVhZmxldDJbImRlZmF1bHQiXS5JY29uLkRlZmF1bHQuaW1hZ2VQYXRoID0gImh0dHBzOi8vdW5wa2cuY29tL2xlYWZsZXRAMS4zLjEvZGlzdC9pbWFnZXMvIjsKfQoKCn0seyIuL2dsb2JhbC9sZWFmbGV0IjoxMH1dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewoidXNlIHN0cmljdCI7Cgp2YXIgX2xlYWZsZXQgPSByZXF1aXJlKCIuL2dsb2JhbC9sZWFmbGV0Iik7Cgp2YXIgX2xlYWZsZXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbGVhZmxldCk7CgpmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAiZGVmYXVsdCI6IG9iaiB9OyB9CgovLyBhZGQgdGV4eHRzaXplLCB0ZXh0T25seSwgYW5kIHN0eWxlCl9sZWFmbGV0MlsiZGVmYXVsdCJdLlRvb2x0aXAucHJvdG90eXBlLm9wdGlvbnMudGV4dHNpemUgPSAiMTBweCI7Cl9sZWFmbGV0MlsiZGVmYXVsdCJdLlRvb2x0aXAucHJvdG90eXBlLm9wdGlvbnMudGV4dE9ubHkgPSBmYWxzZTsKX2xlYWZsZXQyWyJkZWZhdWx0Il0uVG9vbHRpcC5wcm90b3R5cGUub3B0aW9ucy5zdHlsZSA9IG51bGw7IC8vIGNvcHkgb3JpZ2luYWwgbGF5b3V0IHRvIG5vdCBjb21wbGV0ZWx5IHN0b21wIGl0LgoKdmFyIGluaXRMYXlvdXRPcmlnaW5hbCA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLlRvb2x0aXAucHJvdG90eXBlLl9pbml0TGF5b3V0OwoKX2xlYWZsZXQyWyJkZWZhdWx0Il0uVG9vbHRpcC5wcm90b3R5cGUuX2luaXRMYXlvdXQgPSBmdW5jdGlvbiAoKSB7CiAgaW5pdExheW91dE9yaWdpbmFsLmNhbGwodGhpcyk7CiAgdGhpcy5fY29udGFpbmVyLnN0eWxlLmZvbnRTaXplID0gdGhpcy5vcHRpb25zLnRleHRzaXplOwoKICBpZiAodGhpcy5vcHRpb25zLnRleHRPbmx5KSB7CiAgICBfbGVhZmxldDJbImRlZmF1bHQiXS5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX2NvbnRhaW5lciwgImxlYWZsZXQtdG9vbHRpcC10ZXh0LW9ubHkiKTsKICB9CgogIGlmICh0aGlzLm9wdGlvbnMuc3R5bGUpIHsKICAgIGZvciAodmFyIHByb3BlcnR5IGluIHRoaXMub3B0aW9ucy5zdHlsZSkgewogICAgICB0aGlzLl9jb250YWluZXIuc3R5bGVbcHJvcGVydHldID0gdGhpcy5vcHRpb25zLnN0eWxlW3Byb3BlcnR5XTsKICAgIH0KICB9Cn07CgoKfSx7Ii4vZ2xvYmFsL2xlYWZsZXQiOjEwfV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CiJ1c2Ugc3RyaWN0IjsKCnZhciBfbGVhZmxldCA9IHJlcXVpcmUoIi4vZ2xvYmFsL2xlYWZsZXQiKTsKCnZhciBfbGVhZmxldDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sZWFmbGV0KTsKCmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICJkZWZhdWx0Ijogb2JqIH07IH0KCnZhciBwcm90b2NvbFJlZ2V4ID0gL15cL1wvLzsKCnZhciB1cGdyYWRlX3Byb3RvY29sID0gZnVuY3Rpb24gdXBncmFkZV9wcm90b2NvbCh1cmxUZW1wbGF0ZSkgewogIGlmIChwcm90b2NvbFJlZ2V4LnRlc3QodXJsVGVtcGxhdGUpKSB7CiAgICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAiZmlsZToiKSB7CiAgICAgIC8vIGlmIGluIGEgbG9jYWwgZmlsZSwgc3VwcG9ydCBodHRwCiAgICAgIC8vIGh0dHAgc2hvdWxkIGF1dG8gdXBncmFkZSBpZiBuZWNlc3NhcnkKICAgICAgdXJsVGVtcGxhdGUgPSAiaHR0cDoiICsgdXJsVGVtcGxhdGU7CiAgICB9CiAgfQoKICByZXR1cm4gdXJsVGVtcGxhdGU7Cn07Cgp2YXIgb3JpZ2luYWxMVGlsZUxheWVySW5pdGlhbGl6ZSA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLlRpbGVMYXllci5wcm90b3R5cGUuaW5pdGlhbGl6ZTsKCl9sZWFmbGV0MlsiZGVmYXVsdCJdLlRpbGVMYXllci5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uICh1cmxUZW1wbGF0ZSwgb3B0aW9ucykgewogIHVybFRlbXBsYXRlID0gdXBncmFkZV9wcm90b2NvbCh1cmxUZW1wbGF0ZSk7CiAgb3JpZ2luYWxMVGlsZUxheWVySW5pdGlhbGl6ZS5jYWxsKHRoaXMsIHVybFRlbXBsYXRlLCBvcHRpb25zKTsKfTsKCnZhciBvcmlnaW5hbExUaWxlTGF5ZXJXTVNJbml0aWFsaXplID0gX2xlYWZsZXQyWyJkZWZhdWx0Il0uVGlsZUxheWVyLldNUy5wcm90b3R5cGUuaW5pdGlhbGl6ZTsKCl9sZWFmbGV0MlsiZGVmYXVsdCJdLlRpbGVMYXllci5XTVMucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbiAodXJsVGVtcGxhdGUsIG9wdGlvbnMpIHsKICB1cmxUZW1wbGF0ZSA9IHVwZ3JhZGVfcHJvdG9jb2wodXJsVGVtcGxhdGUpOwogIG9yaWdpbmFsTFRpbGVMYXllcldNU0luaXRpYWxpemUuY2FsbCh0aGlzLCB1cmxUZW1wbGF0ZSwgb3B0aW9ucyk7Cn07CgoKfSx7Ii4vZ2xvYmFsL2xlYWZsZXQiOjEwfV0sODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CihmdW5jdGlvbiAoZ2xvYmFsKXsoZnVuY3Rpb24gKCl7CiJ1c2Ugc3RyaWN0IjsKCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0c1siZGVmYXVsdCJdID0gZ2xvYmFsLkhUTUxXaWRnZXRzOwoKCn0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKfSx7fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CihmdW5jdGlvbiAoZ2xvYmFsKXsoZnVuY3Rpb24gKCl7CiJ1c2Ugc3RyaWN0IjsKCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0c1siZGVmYXVsdCJdID0gZ2xvYmFsLmpRdWVyeTsKCgp9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCn0se31dLDEwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKGZ1bmN0aW9uIChnbG9iYWwpeyhmdW5jdGlvbiAoKXsKInVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzWyJkZWZhdWx0Il0gPSBnbG9iYWwuTDsKCgp9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCn0se31dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKGZ1bmN0aW9uIChnbG9iYWwpeyhmdW5jdGlvbiAoKXsKInVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzWyJkZWZhdWx0Il0gPSBnbG9iYWwuTC5Qcm9qOwoKCn0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKfSx7fV0sMTI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewooZnVuY3Rpb24gKGdsb2JhbCl7KGZ1bmN0aW9uICgpewoidXNlIHN0cmljdCI7CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CiAgdmFsdWU6IHRydWUKfSk7CmV4cG9ydHNbImRlZmF1bHQiXSA9IGdsb2JhbC5TaGlueTsKCgp9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCn0se31dLDEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKInVzZSBzdHJpY3QiOwoKdmFyIF9qcXVlcnkgPSByZXF1aXJlKCIuL2dsb2JhbC9qcXVlcnkiKTsKCnZhciBfanF1ZXJ5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2pxdWVyeSk7Cgp2YXIgX2xlYWZsZXQgPSByZXF1aXJlKCIuL2dsb2JhbC9sZWFmbGV0Iik7Cgp2YXIgX2xlYWZsZXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbGVhZmxldCk7Cgp2YXIgX3NoaW55ID0gcmVxdWlyZSgiLi9nbG9iYWwvc2hpbnkiKTsKCnZhciBfc2hpbnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2hpbnkpOwoKdmFyIF9odG1sd2lkZ2V0cyA9IHJlcXVpcmUoIi4vZ2xvYmFsL2h0bWx3aWRnZXRzIik7Cgp2YXIgX2h0bWx3aWRnZXRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2h0bWx3aWRnZXRzKTsKCnZhciBfdXRpbCA9IHJlcXVpcmUoIi4vdXRpbCIpOwoKdmFyIF9jcnNfdXRpbHMgPSByZXF1aXJlKCIuL2Nyc191dGlscyIpOwoKdmFyIF9jb250cm9sU3RvcmUgPSByZXF1aXJlKCIuL2NvbnRyb2wtc3RvcmUiKTsKCnZhciBfY29udHJvbFN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnRyb2xTdG9yZSk7Cgp2YXIgX2xheWVyTWFuYWdlciA9IHJlcXVpcmUoIi4vbGF5ZXItbWFuYWdlciIpOwoKdmFyIF9sYXllck1hbmFnZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbGF5ZXJNYW5hZ2VyKTsKCnZhciBfbWV0aG9kcyA9IHJlcXVpcmUoIi4vbWV0aG9kcyIpOwoKdmFyIF9tZXRob2RzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21ldGhvZHMpOwoKcmVxdWlyZSgiLi9maXh1cC1kZWZhdWx0LWljb24iKTsKCnJlcXVpcmUoIi4vZml4dXAtZGVmYXVsdC10b29sdGlwIik7CgpyZXF1aXJlKCIuL2ZpeHVwLXVybC1wcm90b2NvbCIpOwoKdmFyIF9kYXRhZnJhbWUgPSByZXF1aXJlKCIuL2RhdGFmcmFtZSIpOwoKdmFyIF9kYXRhZnJhbWUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGF0YWZyYW1lKTsKCnZhciBfY2x1c3RlckxheWVyU3RvcmUgPSByZXF1aXJlKCIuL2NsdXN0ZXItbGF5ZXItc3RvcmUiKTsKCnZhciBfY2x1c3RlckxheWVyU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2x1c3RlckxheWVyU3RvcmUpOwoKZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgImRlZmF1bHQiOiBvYmogfTsgfQoKd2luZG93LkxlYWZsZXRXaWRnZXQgPSB7fTsKd2luZG93LkxlYWZsZXRXaWRnZXQudXRpbHMgPSB7fTsKCnZhciBtZXRob2RzID0gd2luZG93LkxlYWZsZXRXaWRnZXQubWV0aG9kcyA9IF9qcXVlcnkyWyJkZWZhdWx0Il0uZXh0ZW5kKHt9LCBfbWV0aG9kczJbImRlZmF1bHQiXSk7Cgp3aW5kb3cuTGVhZmxldFdpZGdldC5EYXRhRnJhbWUgPSBfZGF0YWZyYW1lMlsiZGVmYXVsdCJdOwp3aW5kb3cuTGVhZmxldFdpZGdldC5DbHVzdGVyTGF5ZXJTdG9yZSA9IF9jbHVzdGVyTGF5ZXJTdG9yZTJbImRlZmF1bHQiXTsKd2luZG93LkxlYWZsZXRXaWRnZXQudXRpbHMuZ2V0Q1JTID0gX2Nyc191dGlscy5nZXRDUlM7IC8vIFNlbmQgdXBkYXRlZCBib3VuZHMgYmFjayB0byBhcHAuIFRha2VzIGEgbGVhZmxldCBldmVudCBvYmplY3QgYXMgaW5wdXQuCgpmdW5jdGlvbiB1cGRhdGVCb3VuZHMobWFwKSB7CiAgdmFyIGlkID0gbWFwLmdldENvbnRhaW5lcigpLmlkOwogIHZhciBib3VuZHMgPSBtYXAuZ2V0Qm91bmRzKCk7CgogIF9zaGlueTJbImRlZmF1bHQiXS5vbklucHV0Q2hhbmdlKGlkICsgIl9ib3VuZHMiLCB7CiAgICBub3J0aDogYm91bmRzLmdldE5vcnRoRWFzdCgpLmxhdCwKICAgIGVhc3Q6IGJvdW5kcy5nZXROb3J0aEVhc3QoKS5sbmcsCiAgICBzb3V0aDogYm91bmRzLmdldFNvdXRoV2VzdCgpLmxhdCwKICAgIHdlc3Q6IGJvdW5kcy5nZXRTb3V0aFdlc3QoKS5sbmcKICB9KTsKCiAgX3NoaW55MlsiZGVmYXVsdCJdLm9uSW5wdXRDaGFuZ2UoaWQgKyAiX2NlbnRlciIsIHsKICAgIGxuZzogbWFwLmdldENlbnRlcigpLmxuZywKICAgIGxhdDogbWFwLmdldENlbnRlcigpLmxhdAogIH0pOwoKICBfc2hpbnkyWyJkZWZhdWx0Il0ub25JbnB1dENoYW5nZShpZCArICJfem9vbSIsIG1hcC5nZXRab29tKCkpOwp9CgpmdW5jdGlvbiBwcmV2ZW50VW5pbnRlbmRlZFpvb21PblNjcm9sbChtYXApIHsKICAvLyBQcmV2ZW50IHVud2FudGVkIHNjcm9sbCBjYXB0dXJpbmcuIFNpbWlsYXIgaW4gcHVycG9zZSB0bwogIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9DbGlmZkNsb3VkL0xlYWZsZXQuU2xlZXAgYnV0IHdpdGggYQogIC8vIGRpZmZlcmVudCBzZXQgb2YgaGV1cmlzdGljcy4KICAvLyBUaGUgYmFzaWMgaWRlYSBpcyB0aGF0IHdoZW4gYSBtb3VzZXdoZWVsL0RPTU1vdXNlU2Nyb2xsCiAgLy8gZXZlbnQgaXMgc2Vlbiwgd2UgZGlzYWJsZSBzY3JvbGwgd2hlZWwgem9vbWluZyB1bnRpbCB0aGUKICAvLyB1c2VyIG1vdmVzIHRoZWlyIG1vdXNlIGN1cnNvciBvciBjbGlja3Mgb24gdGhlIG1hcC4gVGhpcwogIC8vIGlzIHNsaWdodGx5IHRyaWNraWVyIHRoYW4ganVzdCBsaXN0ZW5pbmcgZm9yIG1vdXNlbW92ZSwKICAvLyBiZWNhdXNlIG1vdXNlbW92ZSBpcyBmaXJlZCB3aGVuIHRoZSBwYWdlIGlzIHNjcm9sbGVkLAogIC8vIGV2ZW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBwaHlzaWNhbGx5IG1vdmUgdGhlIG1vdXNlLiBXZQogIC8vIGhhbmRsZSB0aGlzIGJ5IGV4YW1pbmluZyB0aGUgbW91c2Vtb3ZlIGV2ZW50J3Mgc2NyZWVuWAogIC8vIGFuZCBzY3JlZW5ZIHByb3BlcnRpZXM7IGlmIHRoZXkgY2hhbmdlLCB3ZSBrbm93IGl0J3MgYQogIC8vICJ0cnVlIiBtb3ZlLgogIC8vIGxhc3RTY3JlZW4gY2FuIG5ldmVyIGJlIG51bGwsIGJ1dCBpdHMgeCBhbmQgeSBjYW4uCiAgdmFyIGxhc3RTY3JlZW4gPSB7CiAgICB4OiBudWxsLAogICAgeTogbnVsbAogIH07CiAgKDAsIF9qcXVlcnkyWyJkZWZhdWx0Il0pKGRvY3VtZW50KS5vbigibW91c2V3aGVlbCBET01Nb3VzZVNjcm9sbCIsICIqIiwgZnVuY3Rpb24gKGUpIHsKICAgIC8vIERpc2FibGUgem9vbWluZyAodW50aWwgdGhlIG1vdXNlIG1vdmVzIG9yIGNsaWNrKQogICAgbWFwLnNjcm9sbFdoZWVsWm9vbS5kaXNhYmxlKCk7IC8vIEFueSBtb3VzZW1vdmUgZXZlbnRzIGF0IHRoaXMgc2NyZWVuIHBvc2l0aW9uIHdpbGwgYmUgaWdub3JlZC4KCiAgICBsYXN0U2NyZWVuID0gewogICAgICB4OiBlLm9yaWdpbmFsRXZlbnQuc2NyZWVuWCwKICAgICAgeTogZS5vcmlnaW5hbEV2ZW50LnNjcmVlblkKICAgIH07CiAgfSk7CiAgKDAsIF9qcXVlcnkyWyJkZWZhdWx0Il0pKGRvY3VtZW50KS5vbigibW91c2Vtb3ZlIiwgIioiLCBmdW5jdGlvbiAoZSkgewogICAgLy8gRGlkIHRoZSBtb3VzZSByZWFsbHkgbW92ZT8KICAgIGlmIChtYXAub3B0aW9ucy5zY3JvbGxXaGVlbFpvb20pIHsKICAgICAgaWYgKGxhc3RTY3JlZW4ueCAhPT0gbnVsbCAmJiBlLnNjcmVlblggIT09IGxhc3RTY3JlZW4ueCB8fCBlLnNjcmVlblkgIT09IGxhc3RTY3JlZW4ueSkgewogICAgICAgIC8vIEl0IHJlYWxseSBtb3ZlZC4gRW5hYmxlIHpvb21pbmcuCiAgICAgICAgbWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTsKICAgICAgICBsYXN0U2NyZWVuID0gewogICAgICAgICAgeDogbnVsbCwKICAgICAgICAgIHk6IG51bGwKICAgICAgICB9OwogICAgICB9CiAgICB9CiAgfSk7CiAgKDAsIF9qcXVlcnkyWyJkZWZhdWx0Il0pKGRvY3VtZW50KS5vbigibW91c2Vkb3duIiwgIi5sZWFmbGV0IiwgZnVuY3Rpb24gKGUpIHsKICAgIC8vIENsaWNraW5nIGFsd2F5cyBlbmFibGVzIHpvb21pbmcuCiAgICBpZiAobWFwLm9wdGlvbnMuc2Nyb2xsV2hlZWxab29tKSB7CiAgICAgIG1hcC5zY3JvbGxXaGVlbFpvb20uZW5hYmxlKCk7CiAgICAgIGxhc3RTY3JlZW4gPSB7CiAgICAgICAgeDogbnVsbCwKICAgICAgICB5OiBudWxsCiAgICAgIH07CiAgICB9CiAgfSk7Cn0KCl9odG1sd2lkZ2V0czJbImRlZmF1bHQiXS53aWRnZXQoewogIG5hbWU6ICJsZWFmbGV0IiwKICB0eXBlOiAib3V0cHV0IiwKICBmYWN0b3J5OiBmdW5jdGlvbiBmYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICB2YXIgbWFwID0gbnVsbDsKICAgIHJldHVybiB7CiAgICAgIC8vIHdlIG5lZWQgdG8gc3RvcmUgb3VyIG1hcCBpbiBvdXIgcmV0dXJuZWQgb2JqZWN0LgogICAgICBnZXRNYXA6IGZ1bmN0aW9uIGdldE1hcCgpIHsKICAgICAgICByZXR1cm4gbWFwOwogICAgICB9LAogICAgICByZW5kZXJWYWx1ZTogZnVuY3Rpb24gcmVuZGVyVmFsdWUoZGF0YSkgewogICAgICAgIC8vIENyZWF0ZSBhbiBhcHByb3ByaWF0ZSBDUlMgT2JqZWN0IGlmIHNwZWNpZmllZAogICAgICAgIGlmIChkYXRhICYmIGRhdGEub3B0aW9ucyAmJiBkYXRhLm9wdGlvbnMuY3JzKSB7CiAgICAgICAgICBkYXRhLm9wdGlvbnMuY3JzID0gKDAsIF9jcnNfdXRpbHMuZ2V0Q1JTKShkYXRhLm9wdGlvbnMuY3JzKTsKICAgICAgICB9IC8vIEFzIHBlciBodHRwczovL2dpdGh1Yi5jb20vcnN0dWRpby9sZWFmbGV0L3B1bGwvMjk0I2Rpc2N1c3Npb25fcjc5NTg0ODEwCgoKICAgICAgICBpZiAobWFwKSB7CiAgICAgICAgICBtYXAucmVtb3ZlKCk7CgogICAgICAgICAgbWFwID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9KCk7IC8vIHVuZGVmaW5lIG1hcAoKICAgICAgICB9CgogICAgICAgIGlmIChkYXRhLm9wdGlvbnMubWFwRmFjdG9yeSAmJiB0eXBlb2YgZGF0YS5vcHRpb25zLm1hcEZhY3RvcnkgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgIG1hcCA9IGRhdGEub3B0aW9ucy5tYXBGYWN0b3J5KGVsLCBkYXRhLm9wdGlvbnMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBtYXAgPSBfbGVhZmxldDJbImRlZmF1bHQiXS5tYXAoZWwsIGRhdGEub3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICBwcmV2ZW50VW5pbnRlbmRlZFpvb21PblNjcm9sbChtYXApOyAvLyBTdG9yZSBzb21lIHN0YXRlIGluIHRoZSBtYXAgb2JqZWN0CgogICAgICAgIG1hcC5sZWFmbGV0ciA9IHsKICAgICAgICAgIC8vIEhhcyB0aGUgbWFwIGV2ZXIgcmVuZGVyZWQgc3VjY2Vzc2Z1bGx5PwogICAgICAgICAgaGFzUmVuZGVyZWQ6IGZhbHNlLAogICAgICAgICAgLy8gRGF0YSB0byBiZSByZW5kZXJlZCB3aGVuIHJlc2l6ZSBpcyBjYWxsZWQgd2l0aCBhcmVhICE9IDAKICAgICAgICAgIHBlbmRpbmdSZW5kZXJEYXRhOiBudWxsCiAgICAgICAgfTsgLy8gQ2hlY2sgaWYgdGhlIG1hcCBpcyByZW5kZXJlZCBzdGF0aWNhbGx5IChubyBvdXRwdXQgYmluZGluZykKCiAgICAgICAgaWYgKF9odG1sd2lkZ2V0czJbImRlZmF1bHQiXS5zaGlueU1vZGUgJiYgL1xic2hpbnktYm91bmQtb3V0cHV0XGIvLnRlc3QoZWwuY2xhc3NOYW1lKSkgewogICAgICAgICAgbWFwLmlkID0gZWwuaWQ7IC8vIFN0b3JlIHRoZSBtYXAgb24gdGhlIGVsZW1lbnQgc28gd2UgY2FuIGZpbmQgaXQgbGF0ZXIgYnkgSUQKCiAgICAgICAgICAoMCwgX2pxdWVyeTJbImRlZmF1bHQiXSkoZWwpLmRhdGEoImxlYWZsZXQtbWFwIiwgbWFwKTsgLy8gV2hlbiB0aGUgbWFwIGlzIGNsaWNrZWQsIHNlbmQgdGhlIGNvb3JkaW5hdGVzIGJhY2sgdG8gdGhlIGFwcAoKICAgICAgICAgIG1hcC5vbigiY2xpY2siLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBfc2hpbnkyWyJkZWZhdWx0Il0ub25JbnB1dENoYW5nZShtYXAuaWQgKyAiX2NsaWNrIiwgewogICAgICAgICAgICAgIGxhdDogZS5sYXRsbmcubGF0LAogICAgICAgICAgICAgIGxuZzogZS5sYXRsbmcubG5nLAogICAgICAgICAgICAgICIubm9uY2UiOiBNYXRoLnJhbmRvbSgpIC8vIEZvcmNlIHJlYWN0aXZpdHkgaWYgbGF0L2xuZyBoYXNuJ3QgY2hhbmdlZAoKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9KTsKICAgICAgICAgIHZhciBncm91cFRpbWVySWQgPSBudWxsOwogICAgICAgICAgbWFwLm9uKCJtb3ZlZW5kIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgdXBkYXRlQm91bmRzKGUudGFyZ2V0KTsKICAgICAgICAgIH0pLm9uKCJsYXllcmFkZCBsYXllcnJlbW92ZSIsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIC8vIElmIHRoZSBsYXllciB0aGF0J3MgY29taW5nIG9yIGdvaW5nIGlzIGEgZ3JvdXAgd2UgY3JlYXRlZCwgdGVsbAogICAgICAgICAgICAvLyB0aGUgc2VydmVyLgogICAgICAgICAgICBpZiAobWFwLmxheWVyTWFuYWdlci5nZXRHcm91cE5hbWVGcm9tTGF5ZXJHcm91cChlLmxheWVyKSkgewogICAgICAgICAgICAgIC8vIEJ1dCB0byBhdm9pZCBjaGF0dGluZXNzLCBjb2FsZXNjZSBldmVudHMKICAgICAgICAgICAgICBpZiAoZ3JvdXBUaW1lcklkKSB7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZ3JvdXBUaW1lcklkKTsKICAgICAgICAgICAgICAgIGdyb3VwVGltZXJJZCA9IG51bGw7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBncm91cFRpbWVySWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGdyb3VwVGltZXJJZCA9IG51bGw7CgogICAgICAgICAgICAgICAgX3NoaW55MlsiZGVmYXVsdCJdLm9uSW5wdXRDaGFuZ2UobWFwLmlkICsgIl9ncm91cHMiLCBtYXAubGF5ZXJNYW5hZ2VyLmdldFZpc2libGVHcm91cHMoKSk7CiAgICAgICAgICAgICAgfSwgMTAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICB0aGlzLmRvUmVuZGVyVmFsdWUoZGF0YSwgbWFwKTsKICAgICAgfSwKICAgICAgZG9SZW5kZXJWYWx1ZTogZnVuY3Rpb24gZG9SZW5kZXJWYWx1ZShkYXRhLCBtYXApIHsKICAgICAgICAvLyBMZWFmbGV0IGRvZXMgbm90IGJlaGF2ZSB3ZWxsIHdoZW4geW91IHNldCB1cCBhIGJ1bmNoIG9mIGxheWVycyB3aGVuCiAgICAgICAgLy8gdGhlIG1hcCBpcyBub3QgdmlzaWJsZSAod2lkdGgvaGVpZ2h0ID09IDApLiBQb3B1cHMgZ2V0IG1pc2FsaWduZWQKICAgICAgICAvLyByZWxhdGl2ZSB0byB0aGVpciBvd25pbmcgbWFya2VycywgYW5kIHRoZSBmaXRCb3VuZHMgY2FsY3VsYXRpb25zCiAgICAgICAgLy8gYXJlIG9mZi4gVGhlcmVmb3JlIHdlIHdhaXQgdW50aWwgdGhlIG1hcCBpcyBhY3R1YWxseSBzaG93aW5nIHRvCiAgICAgICAgLy8gcmVuZGVyIHRoZSB2YWx1ZSAod2UgcmVseSBvbiB0aGUgcmVzaXplKCkgY2FsbGJhY2sgYmVpbmcgaW52b2tlZAogICAgICAgIC8vIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lKS4KICAgICAgICBpZiAoZWwub2Zmc2V0V2lkdGggPT09IDAgfHwgZWwub2Zmc2V0SGVpZ2h0ID09PSAwKSB7CiAgICAgICAgICBtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEgPSBkYXRhOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbWFwLmxlYWZsZXRyLnBlbmRpbmdSZW5kZXJEYXRhID0gbnVsbDsgLy8gTWVyZ2UgZGF0YSBvcHRpb25zIGludG8gZGVmYXVsdHMKCiAgICAgICAgdmFyIG9wdGlvbnMgPSBfanF1ZXJ5MlsiZGVmYXVsdCJdLmV4dGVuZCh7CiAgICAgICAgICB6b29tVG9MaW1pdHM6ICJhbHdheXMiCiAgICAgICAgfSwgZGF0YS5vcHRpb25zKTsKCiAgICAgICAgaWYgKCFtYXAubGF5ZXJNYW5hZ2VyKSB7CiAgICAgICAgICBtYXAuY29udHJvbHMgPSBuZXcgX2NvbnRyb2xTdG9yZTJbImRlZmF1bHQiXShtYXApOwogICAgICAgICAgbWFwLmxheWVyTWFuYWdlciA9IG5ldyBfbGF5ZXJNYW5hZ2VyMlsiZGVmYXVsdCJdKG1hcCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG1hcC5jb250cm9scy5jbGVhcigpOwogICAgICAgICAgbWFwLmxheWVyTWFuYWdlci5jbGVhcigpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGV4cGxpY2l0VmlldyA9IGZhbHNlOwoKICAgICAgICBpZiAoZGF0YS5zZXRWaWV3KSB7CiAgICAgICAgICBleHBsaWNpdFZpZXcgPSB0cnVlOwogICAgICAgICAgbWFwLnNldFZpZXcuYXBwbHkobWFwLCBkYXRhLnNldFZpZXcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGRhdGEuZml0Qm91bmRzKSB7CiAgICAgICAgICBleHBsaWNpdFZpZXcgPSB0cnVlOwogICAgICAgICAgbWV0aG9kcy5maXRCb3VuZHMuYXBwbHkobWFwLCBkYXRhLmZpdEJvdW5kcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZGF0YS5mbHlUbykgewogICAgICAgICAgaWYgKCFleHBsaWNpdFZpZXcgJiYgIW1hcC5sZWFmbGV0ci5oYXNSZW5kZXJlZCkgewogICAgICAgICAgICAvLyBtdXN0IGJlIGRvbmUgdG8gZ2l2ZSBhIGluaXRpYWwgc3RhcnRpbmcgcG9pbnQKICAgICAgICAgICAgbWFwLmZpdFdvcmxkKCk7CiAgICAgICAgICB9CgogICAgICAgICAgZXhwbGljaXRWaWV3ID0gdHJ1ZTsKICAgICAgICAgIG1hcC5mbHlUby5hcHBseShtYXAsIGRhdGEuZmx5VG8pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGRhdGEuZmx5VG9Cb3VuZHMpIHsKICAgICAgICAgIGlmICghZXhwbGljaXRWaWV3ICYmICFtYXAubGVhZmxldHIuaGFzUmVuZGVyZWQpIHsKICAgICAgICAgICAgLy8gbXVzdCBiZSBkb25lIHRvIGdpdmUgYSBpbml0aWFsIHN0YXJ0aW5nIHBvaW50CiAgICAgICAgICAgIG1hcC5maXRXb3JsZCgpOwogICAgICAgICAgfQoKICAgICAgICAgIGV4cGxpY2l0VmlldyA9IHRydWU7CiAgICAgICAgICBtZXRob2RzLmZseVRvQm91bmRzLmFwcGx5KG1hcCwgZGF0YS5mbHlUb0JvdW5kcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZGF0YS5vcHRpb25zLmNlbnRlcikgewogICAgICAgICAgZXhwbGljaXRWaWV3ID0gdHJ1ZTsKICAgICAgICB9IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgem9vbVRvTGltaXRzIG9wdGlvbiBzYXlzIHRoYXQgdGhlIG1hcCBzaG91bGQgYmUKICAgICAgICAvLyB6b29tZWQgdG8gbWFwIGVsZW1lbnRzLgoKCiAgICAgICAgZnVuY3Rpb24gbmVlZHNab29tKCkgewogICAgICAgICAgcmV0dXJuIG9wdGlvbnMuem9vbVRvTGltaXRzID09PSAiYWx3YXlzIiB8fCBvcHRpb25zLnpvb21Ub0xpbWl0cyA9PT0gImZpcnN0IiAmJiAhbWFwLmxlYWZsZXRyLmhhc1JlbmRlcmVkOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFleHBsaWNpdFZpZXcgJiYgbmVlZHNab29tKCkgJiYgIW1hcC5nZXRab29tKCkpIHsKICAgICAgICAgIGlmIChkYXRhLmxpbWl0cyAmJiAhX2pxdWVyeTJbImRlZmF1bHQiXS5pc0VtcHR5T2JqZWN0KGRhdGEubGltaXRzKSkgewogICAgICAgICAgICAvLyBVc2UgdGhlIG5hdHVyYWwgbGltaXRzIG9mIHdoYXQncyBiZWluZyBkcmF3biBvbiB0aGUgbWFwCiAgICAgICAgICAgIC8vIElmIHRoZSBzaXplIG9mIHRoZSBib3VuZGluZyBib3ggaXMgMCwgbGVhZmxldCBnZXRzIGFsbCB3ZWlyZAogICAgICAgICAgICB2YXIgcGFkID0gMC4wMDY7CgogICAgICAgICAgICBpZiAoZGF0YS5saW1pdHMubGF0WzBdID09PSBkYXRhLmxpbWl0cy5sYXRbMV0pIHsKICAgICAgICAgICAgICBkYXRhLmxpbWl0cy5sYXRbMF0gPSBkYXRhLmxpbWl0cy5sYXRbMF0gLSBwYWQ7CiAgICAgICAgICAgICAgZGF0YS5saW1pdHMubGF0WzFdID0gZGF0YS5saW1pdHMubGF0WzFdICsgcGFkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoZGF0YS5saW1pdHMubG5nWzBdID09PSBkYXRhLmxpbWl0cy5sbmdbMV0pIHsKICAgICAgICAgICAgICBkYXRhLmxpbWl0cy5sbmdbMF0gPSBkYXRhLmxpbWl0cy5sbmdbMF0gLSBwYWQ7CiAgICAgICAgICAgICAgZGF0YS5saW1pdHMubG5nWzFdID0gZGF0YS5saW1pdHMubG5nWzFdICsgcGFkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBtYXAuZml0Qm91bmRzKFtbZGF0YS5saW1pdHMubGF0WzBdLCBkYXRhLmxpbWl0cy5sbmdbMF1dLCBbZGF0YS5saW1pdHMubGF0WzFdLCBkYXRhLmxpbWl0cy5sbmdbMV1dXSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBtYXAuZml0V29ybGQoKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvciAodmFyIGkgPSAwOyBkYXRhLmNhbGxzICYmIGkgPCBkYXRhLmNhbGxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgY2FsbCA9IGRhdGEuY2FsbHNbaV07CiAgICAgICAgICBpZiAobWV0aG9kc1tjYWxsLm1ldGhvZF0pIG1ldGhvZHNbY2FsbC5tZXRob2RdLmFwcGx5KG1hcCwgY2FsbC5hcmdzKTtlbHNlICgwLCBfdXRpbC5sb2cpKCJVbmtub3duIG1ldGhvZCAiICsgY2FsbC5tZXRob2QpOwogICAgICAgIH0KCiAgICAgICAgbWFwLmxlYWZsZXRyLmhhc1JlbmRlcmVkID0gdHJ1ZTsKCiAgICAgICAgaWYgKF9odG1sd2lkZ2V0czJbImRlZmF1bHQiXS5zaGlueU1vZGUpIHsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICB1cGRhdGVCb3VuZHMobWFwKTsKICAgICAgICAgIH0sIDEpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgcmVzaXplOiBmdW5jdGlvbiByZXNpemUod2lkdGgsIGhlaWdodCkgewogICAgICAgIGlmIChtYXApIHsKICAgICAgICAgIG1hcC5pbnZhbGlkYXRlU2l6ZSgpOwoKICAgICAgICAgIGlmIChtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEpIHsKICAgICAgICAgICAgdGhpcy5kb1JlbmRlclZhbHVlKG1hcC5sZWFmbGV0ci5wZW5kaW5nUmVuZGVyRGF0YSwgbWFwKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgfQp9KTsKCmlmIChfaHRtbHdpZGdldHMyWyJkZWZhdWx0Il0uc2hpbnlNb2RlKSB7CiAgX3NoaW55MlsiZGVmYXVsdCJdLmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCJsZWFmbGV0LWNhbGxzIiwgZnVuY3Rpb24gKGRhdGEpIHsKICAgIHZhciBpZCA9IGRhdGEuaWQ7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICB2YXIgbWFwID0gZWwgPyAoMCwgX2pxdWVyeTJbImRlZmF1bHQiXSkoZWwpLmRhdGEoImxlYWZsZXQtbWFwIikgOiBudWxsOwoKICAgIGlmICghbWFwKSB7CiAgICAgICgwLCBfdXRpbC5sb2cpKCJDb3VsZG4ndCBmaW5kIG1hcCB3aXRoIGlkICIgKyBpZCk7CiAgICAgIHJldHVybjsKICAgIH0gLy8gSWYgdGhlIG1hcCBoYXMgbm90IHJlbmRlcmVkLCBzdGFzaCB0aGUgcHJvcG9zZWQgYGxlYWZsZXRQcm94eSgpYCBjYWxscwogICAgLy8gaW4gYHBlbmRpbmdSZW5kZXJEYXRhLmNhbGxzYCB0byBiZSBydW4gb24gZGlzcGxheSB2aWEgYGRvUmVuZGVyVmFsdWUoKWAuCiAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBpZiB0aGUgbWFwIGhhcyBub3QgYmVlbiByZW5kZXJlZC4KICAgIC8vIElmIG5ldyBwZW5kaW5nUmVuZGVyRGF0YSBpcyBzZXQgdmlhIGEgbmV3IGBsZWFmbGV0KClgLCB0aGUgcHJldmlvdXMgY2FsbHMgd2lsbCBiZSBkaXNjYXJkZWQuCgoKICAgIGlmICghbWFwLmxlYWZsZXRyLmhhc1JlbmRlcmVkKSB7CiAgICAgIG1hcC5sZWFmbGV0ci5wZW5kaW5nUmVuZGVyRGF0YS5jYWxscyA9IG1hcC5sZWFmbGV0ci5wZW5kaW5nUmVuZGVyRGF0YS5jYWxscy5jb25jYXQoZGF0YS5jYWxscyk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEuY2FsbHMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGNhbGwgPSBkYXRhLmNhbGxzW2ldOwogICAgICB2YXIgYXJncyA9IGNhbGwuYXJnczsKCiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBjYWxsLmV2YWxzLmxlbmd0aDsgX2krKykgewogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihhcmdzLCBjYWxsLmV2YWxzW19pXSk7CiAgICAgIH0KCiAgICAgIGlmIChjYWxsLmRlcGVuZGVuY2llcykgewogICAgICAgIF9zaGlueTJbImRlZmF1bHQiXS5yZW5kZXJEZXBlbmRlbmNpZXMoY2FsbC5kZXBlbmRlbmNpZXMpOwogICAgICB9CgogICAgICBpZiAobWV0aG9kc1tjYWxsLm1ldGhvZF0pIG1ldGhvZHNbY2FsbC5tZXRob2RdLmFwcGx5KG1hcCwgYXJncyk7ZWxzZSAoMCwgX3V0aWwubG9nKSgiVW5rbm93biBtZXRob2QgIiArIGNhbGwubWV0aG9kKTsKICAgIH0KICB9KTsKfQoKCn0seyIuL2NsdXN0ZXItbGF5ZXItc3RvcmUiOjEsIi4vY29udHJvbC1zdG9yZSI6MiwiLi9jcnNfdXRpbHMiOjMsIi4vZGF0YWZyYW1lIjo0LCIuL2ZpeHVwLWRlZmF1bHQtaWNvbiI6NSwiLi9maXh1cC1kZWZhdWx0LXRvb2x0aXAiOjYsIi4vZml4dXAtdXJsLXByb3RvY29sIjo3LCIuL2dsb2JhbC9odG1sd2lkZ2V0cyI6OCwiLi9nbG9iYWwvanF1ZXJ5Ijo5LCIuL2dsb2JhbC9sZWFmbGV0IjoxMCwiLi9nbG9iYWwvc2hpbnkiOjEyLCIuL2xheWVyLW1hbmFnZXIiOjE0LCIuL21ldGhvZHMiOjE1LCIuL3V0aWwiOjE3fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewooZnVuY3Rpb24gKGdsb2JhbCl7KGZ1bmN0aW9uICgpewoidXNlIHN0cmljdCI7CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CiAgdmFsdWU6IHRydWUKfSk7CmV4cG9ydHNbImRlZmF1bHQiXSA9IHVuZGVmaW5lZDsKCnZhciBfanF1ZXJ5ID0gcmVxdWlyZSgiLi9nbG9iYWwvanF1ZXJ5Iik7Cgp2YXIgX2pxdWVyeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9qcXVlcnkpOwoKdmFyIF9sZWFmbGV0ID0gcmVxdWlyZSgiLi9nbG9iYWwvbGVhZmxldCIpOwoKdmFyIF9sZWFmbGV0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2xlYWZsZXQpOwoKdmFyIF91dGlsID0gcmVxdWlyZSgiLi91dGlsIik7CgpmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAiZGVmYXVsdCI6IG9iaiB9OyB9CgpmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KCmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9CgpmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfQoKdmFyIExheWVyTWFuYWdlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gTGF5ZXJNYW5hZ2VyKG1hcCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExheWVyTWFuYWdlcik7CgogICAgdGhpcy5fbWFwID0gbWFwOyAvLyBCRUdJTiBsYXllciBpbmRpY2VzCiAgICAvLyB7PGdyb3VwbmFtZT46IHs8c3RhbXA+OiBsYXllcn19CgogICAgdGhpcy5fYnlHcm91cCA9IHt9OyAvLyB7PGNhdGVnb3J5TmFtZT46IHs8c3RhbXA+OiBsYXllcn19CgogICAgdGhpcy5fYnlDYXRlZ29yeSA9IHt9OyAvLyB7PGNhdGVnb3J5TmFtZV9sYXllcklkPjogbGF5ZXJ9CgogICAgdGhpcy5fYnlMYXllcklkID0ge307IC8vIHs8c3RhbXA+OiB7CiAgICAvLyAgICAgICAgICAgICAiZ3JvdXAiOiA8Z3JvdXBuYW1lPiwKICAgIC8vICAgICAgICAgICAgICJsYXllcklkIjogPGxheWVySWQ+LAogICAgLy8gICAgICAgICAgICAgImNhdGVnb3J5IjogPGNhdGVnb3J5PiwKICAgIC8vICAgICAgICAgICAgICJjb250YWluZXIiOiA8Y29udGFpbmVyPgogICAgLy8gICAgICAgICAgIH0KICAgIC8vIH0KCiAgICB0aGlzLl9ieVN0YW1wID0ge307IC8vIHs8Y3Jvc3N0YWxrR3JvdXBOYW1lPjogezxrZXk+OiBbPHN0YW1wPiwgPHN0YW1wPiwgLi4uXSwgLi4ufX0KCiAgICB0aGlzLl9ieUNyb3NzdGFsa0dyb3VwID0ge307IC8vIEVORCBsYXllciBpbmRpY2VzCiAgICAvLyB7PGNhdGVnb3J5TmFtZT46IEwubGF5ZXJHcm91cH0KCiAgICB0aGlzLl9jYXRlZ29yeUNvbnRhaW5lcnMgPSB7fTsgLy8gezxncm91cE5hbWU+OiBMLmxheWVyR3JvdXB9CgogICAgdGhpcy5fZ3JvdXBDb250YWluZXJzID0ge307CiAgfQoKICBfY3JlYXRlQ2xhc3MoTGF5ZXJNYW5hZ2VyLCBbewogICAga2V5OiAiYWRkTGF5ZXIiLAogICAgdmFsdWU6IGZ1bmN0aW9uIGFkZExheWVyKGxheWVyLCBjYXRlZ29yeSwgbGF5ZXJJZCwgZ3JvdXAsIGN0R3JvdXAsIGN0S2V5KSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICAvLyBXYXMgYSBncm91cCBwcm92aWRlZD8KICAgICAgdmFyIGhhc0lkID0gdHlwZW9mIGxheWVySWQgPT09ICJzdHJpbmciOwogICAgICB2YXIgZ3JvdXBlZCA9IHR5cGVvZiBncm91cCA9PT0gInN0cmluZyI7CiAgICAgIHZhciBzdGFtcCA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLlV0aWwuc3RhbXAobGF5ZXIpICsgIiI7IC8vIFRoaXMgd2lsbCBiZSB0aGUgZGVmYXVsdCBsYXllciBncm91cCB0byBhZGQgdGhlIGxheWVyIHRvLgogICAgICAvLyBXZSBtYXkgb3ZlcndyaXRlIHRoaXMgbGV0IGJlZm9yZSB1c2luZyBpdCAoaS5lLiBpZiBhIGdyb3VwIGlzIGFzc2lnbmVkKS4KICAgICAgLy8gVGhpcyBvbmUgbGluZXIgY3JlYXRlcyB0aGUgX2NhdGVnb3J5Q29udGFpbmVyc1tjYXRlZ29yeV0gZW50cnkgaWYgaXQKICAgICAgLy8gZG9lc24ndCBhbHJlYWR5IGV4aXN0LgoKICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuX2NhdGVnb3J5Q29udGFpbmVyc1tjYXRlZ29yeV0gPSB0aGlzLl9jYXRlZ29yeUNvbnRhaW5lcnNbY2F0ZWdvcnldIHx8IF9sZWFmbGV0MlsiZGVmYXVsdCJdLmxheWVyR3JvdXAoKS5hZGRUbyh0aGlzLl9tYXApOwoKICAgICAgdmFyIG9sZExheWVyID0gbnVsbDsKCiAgICAgIGlmIChoYXNJZCkgewogICAgICAgIC8vIEZpcnN0LCByZW1vdmUgYW55IGxheWVyIHdpdGggdGhlIHNhbWUgY2F0ZWdvcnkgYW5kIGxheWVySWQKICAgICAgICB2YXIgcHJlZml4ZWRMYXllcklkID0gdGhpcy5fbGF5ZXJJZEtleShjYXRlZ29yeSwgbGF5ZXJJZCk7CgogICAgICAgIG9sZExheWVyID0gdGhpcy5fYnlMYXllcklkW3ByZWZpeGVkTGF5ZXJJZF07CgogICAgICAgIGlmIChvbGRMYXllcikgewogICAgICAgICAgdGhpcy5fcmVtb3ZlTGF5ZXIob2xkTGF5ZXIpOwogICAgICAgIH0gLy8gVXBkYXRlIGxheWVySWQgaW5kZXgKCgogICAgICAgIHRoaXMuX2J5TGF5ZXJJZFtwcmVmaXhlZExheWVySWRdID0gbGF5ZXI7CiAgICAgIH0gLy8gVXBkYXRlIGdyb3VwIGluZGV4CgoKICAgICAgaWYgKGdyb3VwZWQpIHsKICAgICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXSA9IHRoaXMuX2J5R3JvdXBbZ3JvdXBdIHx8IHt9OwogICAgICAgIHRoaXMuX2J5R3JvdXBbZ3JvdXBdW3N0YW1wXSA9IGxheWVyOyAvLyBTaW5jZSBhIGdyb3VwIGlzIGFzc2lnbmVkLCBkb24ndCBhZGQgdGhlIGxheWVyIHRvIHRoZSBjYXRlZ29yeSdzIGxheWVyCiAgICAgICAgLy8gZ3JvdXA7IGluc3RlYWQsIHVzZSB0aGUgZ3JvdXAncyBsYXllciBncm91cC4KICAgICAgICAvLyBUaGlzIG9uZSBsaW5lciBjcmVhdGVzIHRoZSBfZ3JvdXBDb250YWluZXJzW2dyb3VwXSBlbnRyeSBpZiBpdCBkb2Vzbid0CiAgICAgICAgLy8gYWxyZWFkeSBleGlzdC4KCiAgICAgICAgY29udGFpbmVyID0gdGhpcy5nZXRMYXllckdyb3VwKGdyb3VwLCB0cnVlKTsKICAgICAgfSAvLyBVcGRhdGUgY2F0ZWdvcnkgaW5kZXgKCgogICAgICB0aGlzLl9ieUNhdGVnb3J5W2NhdGVnb3J5XSA9IHRoaXMuX2J5Q2F0ZWdvcnlbY2F0ZWdvcnldIHx8IHt9OwogICAgICB0aGlzLl9ieUNhdGVnb3J5W2NhdGVnb3J5XVtzdGFtcF0gPSBsYXllcjsgLy8gVXBkYXRlIHN0YW1wIGluZGV4CgogICAgICB2YXIgbGF5ZXJJbmZvID0gdGhpcy5fYnlTdGFtcFtzdGFtcF0gPSB7CiAgICAgICAgbGF5ZXI6IGxheWVyLAogICAgICAgIGdyb3VwOiBncm91cCwKICAgICAgICBjdEdyb3VwOiBjdEdyb3VwLAogICAgICAgIGN0S2V5OiBjdEtleSwKICAgICAgICBsYXllcklkOiBsYXllcklkLAogICAgICAgIGNhdGVnb3J5OiBjYXRlZ29yeSwKICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lciwKICAgICAgICBoaWRkZW46IGZhbHNlCiAgICAgIH07IC8vIFVwZGF0ZSBjcm9zc3RhbGsgZ3JvdXAgaW5kZXgKCiAgICAgIGlmIChjdEdyb3VwKSB7CiAgICAgICAgaWYgKGxheWVyLnNldFN0eWxlKSB7CiAgICAgICAgICAvLyBOZWVkIHRvIHNhdmUgdGhpcyBpbmZvIHNvIHdlIGtub3cgd2hhdCB0byBzZXQgb3BhY2l0eSB0byBsYXRlcgogICAgICAgICAgbGF5ZXIub3B0aW9ucy5vcmlnT3BhY2l0eSA9IHR5cGVvZiBsYXllci5vcHRpb25zLm9wYWNpdHkgIT09ICJ1bmRlZmluZWQiID8gbGF5ZXIub3B0aW9ucy5vcGFjaXR5IDogMC41OwogICAgICAgICAgbGF5ZXIub3B0aW9ucy5vcmlnRmlsbE9wYWNpdHkgPSB0eXBlb2YgbGF5ZXIub3B0aW9ucy5maWxsT3BhY2l0eSAhPT0gInVuZGVmaW5lZCIgPyBsYXllci5vcHRpb25zLmZpbGxPcGFjaXR5IDogMC4yOwogICAgICAgIH0KCiAgICAgICAgdmFyIGN0ZyA9IHRoaXMuX2J5Q3Jvc3N0YWxrR3JvdXBbY3RHcm91cF07CgogICAgICAgIGlmICghY3RnKSB7CiAgICAgICAgICBjdGcgPSB0aGlzLl9ieUNyb3NzdGFsa0dyb3VwW2N0R3JvdXBdID0ge307CiAgICAgICAgICB2YXIgY3Jvc3N0YWxrID0gZ2xvYmFsLmNyb3NzdGFsazsKCiAgICAgICAgICB2YXIgaGFuZGxlRmlsdGVyID0gZnVuY3Rpb24gaGFuZGxlRmlsdGVyKGUpIHsKICAgICAgICAgICAgaWYgKCFlLnZhbHVlKSB7CiAgICAgICAgICAgICAgdmFyIGdyb3VwS2V5cyA9IE9iamVjdC5rZXlzKGN0Zyk7CgogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXBLZXlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIga2V5ID0gZ3JvdXBLZXlzW2ldOwogICAgICAgICAgICAgICAgdmFyIF9sYXllckluZm8gPSBfdGhpcy5fYnlTdGFtcFtjdGdba2V5XV07CgogICAgICAgICAgICAgICAgX3RoaXMuX3NldFZpc2liaWxpdHkoX2xheWVySW5mbywgdHJ1ZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHZhciBzZWxlY3RlZEtleXMgPSB7fTsKCiAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGUudmFsdWUubGVuZ3RoOyBfaSsrKSB7CiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXNbZS52YWx1ZVtfaV1dID0gdHJ1ZTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHZhciBfZ3JvdXBLZXlzID0gT2JqZWN0LmtleXMoY3RnKTsKCiAgICAgICAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgX2dyb3VwS2V5cy5sZW5ndGg7IF9pMisrKSB7CiAgICAgICAgICAgICAgICB2YXIgX2tleSA9IF9ncm91cEtleXNbX2kyXTsKICAgICAgICAgICAgICAgIHZhciBfbGF5ZXJJbmZvMiA9IF90aGlzLl9ieVN0YW1wW2N0Z1tfa2V5XV07CgogICAgICAgICAgICAgICAgX3RoaXMuX3NldFZpc2liaWxpdHkoX2xheWVySW5mbzIsIHNlbGVjdGVkS2V5c1tfZ3JvdXBLZXlzW19pMl1dKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH07CgogICAgICAgICAgdmFyIGZpbHRlckhhbmRsZSA9IG5ldyBjcm9zc3RhbGsuRmlsdGVySGFuZGxlKGN0R3JvdXApOwogICAgICAgICAgZmlsdGVySGFuZGxlLm9uKCJjaGFuZ2UiLCBoYW5kbGVGaWx0ZXIpOwoKICAgICAgICAgIHZhciBoYW5kbGVTZWxlY3Rpb24gPSBmdW5jdGlvbiBoYW5kbGVTZWxlY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIWUudmFsdWUgfHwgIWUudmFsdWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgdmFyIGdyb3VwS2V5cyA9IE9iamVjdC5rZXlzKGN0Zyk7CgogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXBLZXlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIga2V5ID0gZ3JvdXBLZXlzW2ldOwogICAgICAgICAgICAgICAgdmFyIF9sYXllckluZm8zID0gX3RoaXMuX2J5U3RhbXBbY3RnW2tleV1dOwoKICAgICAgICAgICAgICAgIF90aGlzLl9zZXRPcGFjaXR5KF9sYXllckluZm8zLCAxLjApOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRLZXlzID0ge307CgogICAgICAgICAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGUudmFsdWUubGVuZ3RoOyBfaTMrKykgewogICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzW2UudmFsdWVbX2kzXV0gPSB0cnVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIF9ncm91cEtleXMyID0gT2JqZWN0LmtleXMoY3RnKTsKCiAgICAgICAgICAgICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgX2dyb3VwS2V5czIubGVuZ3RoOyBfaTQrKykgewogICAgICAgICAgICAgICAgdmFyIF9rZXkyID0gX2dyb3VwS2V5czJbX2k0XTsKICAgICAgICAgICAgICAgIHZhciBfbGF5ZXJJbmZvNCA9IF90aGlzLl9ieVN0YW1wW2N0Z1tfa2V5Ml1dOwoKICAgICAgICAgICAgICAgIF90aGlzLl9zZXRPcGFjaXR5KF9sYXllckluZm80LCBzZWxlY3RlZEtleXNbX2dyb3VwS2V5czJbX2k0XV0gPyAxLjAgOiAwLjIpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfTsKCiAgICAgICAgICB2YXIgc2VsSGFuZGxlID0gbmV3IGNyb3NzdGFsay5TZWxlY3Rpb25IYW5kbGUoY3RHcm91cCk7CiAgICAgICAgICBzZWxIYW5kbGUub24oImNoYW5nZSIsIGhhbmRsZVNlbGVjdGlvbik7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaGFuZGxlRmlsdGVyKHsKICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVySGFuZGxlLmZpbHRlcmVkS2V5cwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaGFuZGxlU2VsZWN0aW9uKHsKICAgICAgICAgICAgICB2YWx1ZTogc2VsSGFuZGxlLnZhbHVlCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSwgMTAwKTsKICAgICAgICB9CgogICAgICAgIGlmICghY3RnW2N0S2V5XSkgY3RnW2N0S2V5XSA9IFtdOwogICAgICAgIGN0Z1tjdEtleV0ucHVzaChzdGFtcCk7CiAgICAgIH0gLy8gQWRkIHRvIGNvbnRhaW5lcgoKCiAgICAgIGlmICghbGF5ZXJJbmZvLmhpZGRlbikgY29udGFpbmVyLmFkZExheWVyKGxheWVyKTsKICAgICAgcmV0dXJuIG9sZExheWVyOwogICAgfQogIH0sIHsKICAgIGtleTogImJydXNoIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBicnVzaChib3VuZHMsIGV4dHJhSW5mbykgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKCiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi8KICAgICAgLy8gRm9yIGVhY2ggQ3Jvc3N0YWxrIGdyb3VwLi4uCiAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2J5Q3Jvc3N0YWxrR3JvdXApLmZvckVhY2goZnVuY3Rpb24gKGN0R3JvdXBOYW1lKSB7CiAgICAgICAgdmFyIGN0ZyA9IF90aGlzMi5fYnlDcm9zc3RhbGtHcm91cFtjdEdyb3VwTmFtZV07CiAgICAgICAgdmFyIHNlbGVjdGlvbiA9IFtdOyAvLyAuLi5pdGVyYXRlIG92ZXIgZWFjaCBDcm9zc3RhbGsga2V5IChlYWNoIG9mIHdoaWNoIG1heSBoYXZlIG11bHRpcGxlCiAgICAgICAgLy8gbGF5ZXJzKS4uLgoKICAgICAgICBPYmplY3Qua2V5cyhjdGcpLmZvckVhY2goZnVuY3Rpb24gKGN0S2V5KSB7CiAgICAgICAgICAvLyAuLi5hbmQgZm9yIGVhY2ggbGF5ZXIuLi4KICAgICAgICAgIGN0Z1tjdEtleV0uZm9yRWFjaChmdW5jdGlvbiAoc3RhbXApIHsKICAgICAgICAgICAgdmFyIGxheWVySW5mbyA9IF90aGlzMi5fYnlTdGFtcFtzdGFtcF07IC8vIC4uLmlmIGl0J3Mgc29tZXRoaW5nIHdpdGggYSBwb2ludC4uLgoKICAgICAgICAgICAgaWYgKGxheWVySW5mby5sYXllci5nZXRMYXRMbmcpIHsKICAgICAgICAgICAgICAvLyAuLi4gYW5kIGl0J3MgaW5zaWRlIHRoZSBzZWxlY3Rpb24gYm91bmRzLi4uCiAgICAgICAgICAgICAgLy8gVE9ETzogVXNlIHBpeGVsIGNvbnRhaW5tZW50LCBub3QgbGF0L2xuZyBjb250YWlubWVudAogICAgICAgICAgICAgIGlmIChib3VuZHMuY29udGFpbnMobGF5ZXJJbmZvLmxheWVyLmdldExhdExuZygpKSkgewogICAgICAgICAgICAgICAgLy8gLi4uYWRkIHRoZSBrZXkgdG8gdGhlIHNlbGVjdGlvbi4KICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5wdXNoKGN0S2V5KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIG5ldyBnbG9iYWwuY3Jvc3N0YWxrLlNlbGVjdGlvbkhhbmRsZShjdEdyb3VwTmFtZSkuc2V0KHNlbGVjdGlvbiwgZXh0cmFJbmZvKTsKICAgICAgfSk7CiAgICB9CiAgfSwgewogICAga2V5OiAidW5icnVzaCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gdW5icnVzaChleHRyYUluZm8pIHsKICAgICAgT2JqZWN0LmtleXModGhpcy5fYnlDcm9zc3RhbGtHcm91cCkuZm9yRWFjaChmdW5jdGlvbiAoY3RHcm91cE5hbWUpIHsKICAgICAgICBuZXcgZ2xvYmFsLmNyb3NzdGFsay5TZWxlY3Rpb25IYW5kbGUoY3RHcm91cE5hbWUpLmNsZWFyKGV4dHJhSW5mbyk7CiAgICAgIH0pOwogICAgfQogIH0sIHsKICAgIGtleTogIl9zZXRWaXNpYmlsaXR5IiwKICAgIHZhbHVlOiBmdW5jdGlvbiBfc2V0VmlzaWJpbGl0eShsYXllckluZm8sIHZpc2libGUpIHsKICAgICAgaWYgKGxheWVySW5mby5oaWRkZW4gXiB2aXNpYmxlKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9IGVsc2UgaWYgKHZpc2libGUpIHsKICAgICAgICBsYXllckluZm8uY29udGFpbmVyLmFkZExheWVyKGxheWVySW5mby5sYXllcik7CiAgICAgICAgbGF5ZXJJbmZvLmhpZGRlbiA9IGZhbHNlOwogICAgICB9IGVsc2UgewogICAgICAgIGxheWVySW5mby5jb250YWluZXIucmVtb3ZlTGF5ZXIobGF5ZXJJbmZvLmxheWVyKTsKICAgICAgICBsYXllckluZm8uaGlkZGVuID0gdHJ1ZTsKICAgICAgfQogICAgfQogIH0sIHsKICAgIGtleTogIl9zZXRPcGFjaXR5IiwKICAgIHZhbHVlOiBmdW5jdGlvbiBfc2V0T3BhY2l0eShsYXllckluZm8sIG9wYWNpdHkpIHsKICAgICAgaWYgKGxheWVySW5mby5sYXllci5zZXRPcGFjaXR5KSB7CiAgICAgICAgbGF5ZXJJbmZvLmxheWVyLnNldE9wYWNpdHkob3BhY2l0eSk7CiAgICAgIH0gZWxzZSBpZiAobGF5ZXJJbmZvLmxheWVyLnNldFN0eWxlKSB7CiAgICAgICAgbGF5ZXJJbmZvLmxheWVyLnNldFN0eWxlKHsKICAgICAgICAgIG9wYWNpdHk6IG9wYWNpdHkgKiBsYXllckluZm8ubGF5ZXIub3B0aW9ucy5vcmlnT3BhY2l0eSwKICAgICAgICAgIGZpbGxPcGFjaXR5OiBvcGFjaXR5ICogbGF5ZXJJbmZvLmxheWVyLm9wdGlvbnMub3JpZ0ZpbGxPcGFjaXR5CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KICB9LCB7CiAgICBrZXk6ICJnZXRMYXllciIsCiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TGF5ZXIoY2F0ZWdvcnksIGxheWVySWQpIHsKICAgICAgcmV0dXJuIHRoaXMuX2J5TGF5ZXJJZFt0aGlzLl9sYXllcklkS2V5KGNhdGVnb3J5LCBsYXllcklkKV07CiAgICB9CiAgfSwgewogICAga2V5OiAicmVtb3ZlTGF5ZXIiLAogICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZUxheWVyKGNhdGVnb3J5LCBsYXllcklkcykgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKCiAgICAgIC8vIEZpbmQgbGF5ZXIgaW5mbwogICAgICBfanF1ZXJ5MlsiZGVmYXVsdCJdLmVhY2goKDAsIF91dGlsLmFzQXJyYXkpKGxheWVySWRzKSwgZnVuY3Rpb24gKGksIGxheWVySWQpIHsKICAgICAgICB2YXIgbGF5ZXIgPSBfdGhpczMuX2J5TGF5ZXJJZFtfdGhpczMuX2xheWVySWRLZXkoY2F0ZWdvcnksIGxheWVySWQpXTsKCiAgICAgICAgaWYgKGxheWVyKSB7CiAgICAgICAgICBfdGhpczMuX3JlbW92ZUxheWVyKGxheWVyKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogIH0sIHsKICAgIGtleTogImNsZWFyTGF5ZXJzIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhckxheWVycyhjYXRlZ29yeSkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKCiAgICAgIC8vIEZpbmQgYWxsIGxheWVycyBpbiBfYnlDYXRlZ29yeVtjYXRlZ29yeV0KICAgICAgdmFyIGNhdFRhYmxlID0gdGhpcy5fYnlDYXRlZ29yeVtjYXRlZ29yeV07CgogICAgICBpZiAoIWNhdFRhYmxlKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9IC8vIFJlbW92ZSBhbGwgbGF5ZXJzLiBNYWtlIGNvcHkgb2Yga2V5cyB0byBhdm9pZCBtdXRhdGluZyB0aGUgY29sbGVjdGlvbgogICAgICAvLyBiZWhpbmQgdGhlIGl0ZXJhdG9yIHlvdSdyZSBhY2Nlc3NpbmcuCgoKICAgICAgdmFyIHN0YW1wcyA9IFtdOwoKICAgICAgX2pxdWVyeTJbImRlZmF1bHQiXS5lYWNoKGNhdFRhYmxlLCBmdW5jdGlvbiAoaywgdikgewogICAgICAgIHN0YW1wcy5wdXNoKGspOwogICAgICB9KTsKCiAgICAgIF9qcXVlcnkyWyJkZWZhdWx0Il0uZWFjaChzdGFtcHMsIGZ1bmN0aW9uIChpLCBzdGFtcCkgewogICAgICAgIF90aGlzNC5fcmVtb3ZlTGF5ZXIoc3RhbXApOwogICAgICB9KTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJnZXRMYXllckdyb3VwIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRMYXllckdyb3VwKGdyb3VwLCBlbnN1cmVFeGlzdHMpIHsKICAgICAgdmFyIGcgPSB0aGlzLl9ncm91cENvbnRhaW5lcnNbZ3JvdXBdOwoKICAgICAgaWYgKGVuc3VyZUV4aXN0cyAmJiAhZykgewogICAgICAgIHRoaXMuX2J5R3JvdXBbZ3JvdXBdID0gdGhpcy5fYnlHcm91cFtncm91cF0gfHwge307CiAgICAgICAgZyA9IHRoaXMuX2dyb3VwQ29udGFpbmVyc1tncm91cF0gPSBfbGVhZmxldDJbImRlZmF1bHQiXS5mZWF0dXJlR3JvdXAoKTsKICAgICAgICBnLmdyb3VwbmFtZSA9IGdyb3VwOwogICAgICAgIGcuYWRkVG8odGhpcy5fbWFwKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGc7CiAgICB9CiAgfSwgewogICAga2V5OiAiZ2V0R3JvdXBOYW1lRnJvbUxheWVyR3JvdXAiLAogICAgdmFsdWU6IGZ1bmN0aW9uIGdldEdyb3VwTmFtZUZyb21MYXllckdyb3VwKGxheWVyR3JvdXApIHsKICAgICAgcmV0dXJuIGxheWVyR3JvdXAuZ3JvdXBuYW1lOwogICAgfQogIH0sIHsKICAgIGtleTogImdldFZpc2libGVHcm91cHMiLAogICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpc2libGVHcm91cHMoKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwoKICAgICAgdmFyIHJlc3VsdCA9IFtdOwoKICAgICAgX2pxdWVyeTJbImRlZmF1bHQiXS5lYWNoKHRoaXMuX2dyb3VwQ29udGFpbmVycywgZnVuY3Rpb24gKGssIHYpIHsKICAgICAgICBpZiAoX3RoaXM1Ll9tYXAuaGFzTGF5ZXIodikpIHsKICAgICAgICAgIHJlc3VsdC5wdXNoKGspOwogICAgICAgIH0KICAgICAgfSk7CgogICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogIH0sIHsKICAgIGtleTogImdldEFsbEdyb3VwTmFtZXMiLAogICAgdmFsdWU6IGZ1bmN0aW9uIGdldEFsbEdyb3VwTmFtZXMoKSB7CiAgICAgIHZhciByZXN1bHQgPSBbXTsKCiAgICAgIF9qcXVlcnkyWyJkZWZhdWx0Il0uZWFjaCh0aGlzLl9ncm91cENvbnRhaW5lcnMsIGZ1bmN0aW9uIChrLCB2KSB7CiAgICAgICAgcmVzdWx0LnB1c2goayk7CiAgICAgIH0pOwoKICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJjbGVhckdyb3VwIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhckdyb3VwKGdyb3VwKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwoKICAgICAgLy8gRmluZCBhbGwgbGF5ZXJzIGluIF9ieUdyb3VwW2dyb3VwXQogICAgICB2YXIgZ3JvdXBUYWJsZSA9IHRoaXMuX2J5R3JvdXBbZ3JvdXBdOwoKICAgICAgaWYgKCFncm91cFRhYmxlKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9IC8vIFJlbW92ZSBhbGwgbGF5ZXJzLiBNYWtlIGNvcHkgb2Yga2V5cyB0byBhdm9pZCBtdXRhdGluZyB0aGUgY29sbGVjdGlvbgogICAgICAvLyBiZWhpbmQgdGhlIGl0ZXJhdG9yIHlvdSdyZSBhY2Nlc3NpbmcuCgoKICAgICAgdmFyIHN0YW1wcyA9IFtdOwoKICAgICAgX2pxdWVyeTJbImRlZmF1bHQiXS5lYWNoKGdyb3VwVGFibGUsIGZ1bmN0aW9uIChrLCB2KSB7CiAgICAgICAgc3RhbXBzLnB1c2goayk7CiAgICAgIH0pOwoKICAgICAgX2pxdWVyeTJbImRlZmF1bHQiXS5lYWNoKHN0YW1wcywgZnVuY3Rpb24gKGksIHN0YW1wKSB7CiAgICAgICAgX3RoaXM2Ll9yZW1vdmVMYXllcihzdGFtcCk7CiAgICAgIH0pOwogICAgfQogIH0sIHsKICAgIGtleTogImNsZWFyIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhcigpIHsKICAgICAgZnVuY3Rpb24gY2xlYXJMYXllckdyb3VwKGtleSwgbGF5ZXJHcm91cCkgewogICAgICAgIGxheWVyR3JvdXAuY2xlYXJMYXllcnMoKTsKICAgICAgfSAvLyBDbGVhciBhbGwgaW5kaWNlcyBhbmQgbGF5ZXJHcm91cHMKCgogICAgICB0aGlzLl9ieUdyb3VwID0ge307CiAgICAgIHRoaXMuX2J5Q2F0ZWdvcnkgPSB7fTsKICAgICAgdGhpcy5fYnlMYXllcklkID0ge307CiAgICAgIHRoaXMuX2J5U3RhbXAgPSB7fTsKICAgICAgdGhpcy5fYnlDcm9zc3RhbGtHcm91cCA9IHt9OwoKICAgICAgX2pxdWVyeTJbImRlZmF1bHQiXS5lYWNoKHRoaXMuX2NhdGVnb3J5Q29udGFpbmVycywgY2xlYXJMYXllckdyb3VwKTsKCiAgICAgIHRoaXMuX2NhdGVnb3J5Q29udGFpbmVycyA9IHt9OwoKICAgICAgX2pxdWVyeTJbImRlZmF1bHQiXS5lYWNoKHRoaXMuX2dyb3VwQ29udGFpbmVycywgY2xlYXJMYXllckdyb3VwKTsKCiAgICAgIHRoaXMuX2dyb3VwQ29udGFpbmVycyA9IHt9OwogICAgfQogIH0sIHsKICAgIGtleTogIl9yZW1vdmVMYXllciIsCiAgICB2YWx1ZTogZnVuY3Rpb24gX3JlbW92ZUxheWVyKGxheWVyKSB7CiAgICAgIHZhciBzdGFtcDsKCiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgPT09ICJzdHJpbmciKSB7CiAgICAgICAgc3RhbXAgPSBsYXllcjsKICAgICAgfSBlbHNlIHsKICAgICAgICBzdGFtcCA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLlV0aWwuc3RhbXAobGF5ZXIpOwogICAgICB9CgogICAgICB2YXIgbGF5ZXJJbmZvID0gdGhpcy5fYnlTdGFtcFtzdGFtcF07CgogICAgICBpZiAoIWxheWVySW5mbykgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgbGF5ZXJJbmZvLmNvbnRhaW5lci5yZW1vdmVMYXllcihzdGFtcCk7CgogICAgICBpZiAodHlwZW9mIGxheWVySW5mby5ncm91cCA9PT0gInN0cmluZyIpIHsKICAgICAgICBkZWxldGUgdGhpcy5fYnlHcm91cFtsYXllckluZm8uZ3JvdXBdW3N0YW1wXTsKICAgICAgfQoKICAgICAgaWYgKHR5cGVvZiBsYXllckluZm8ubGF5ZXJJZCA9PT0gInN0cmluZyIpIHsKICAgICAgICBkZWxldGUgdGhpcy5fYnlMYXllcklkW3RoaXMuX2xheWVySWRLZXkobGF5ZXJJbmZvLmNhdGVnb3J5LCBsYXllckluZm8ubGF5ZXJJZCldOwogICAgICB9CgogICAgICBkZWxldGUgdGhpcy5fYnlDYXRlZ29yeVtsYXllckluZm8uY2F0ZWdvcnldW3N0YW1wXTsKICAgICAgZGVsZXRlIHRoaXMuX2J5U3RhbXBbc3RhbXBdOwoKICAgICAgaWYgKGxheWVySW5mby5jdEdyb3VwKSB7CiAgICAgICAgdmFyIGN0R3JvdXAgPSB0aGlzLl9ieUNyb3NzdGFsa0dyb3VwW2xheWVySW5mby5jdEdyb3VwXTsKICAgICAgICB2YXIgbGF5ZXJzRm9yS2V5ID0gY3RHcm91cFtsYXllckluZm8uY3RLZXldOwogICAgICAgIHZhciBpZHggPSBsYXllcnNGb3JLZXkgPyBsYXllcnNGb3JLZXkuaW5kZXhPZihzdGFtcCkgOiAtMTsKCiAgICAgICAgaWYgKGlkeCA+PSAwKSB7CiAgICAgICAgICBpZiAobGF5ZXJzRm9yS2V5Lmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICBkZWxldGUgY3RHcm91cFtsYXllckluZm8uY3RLZXldOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGF5ZXJzRm9yS2V5LnNwbGljZShpZHgsIDEpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sIHsKICAgIGtleTogIl9sYXllcklkS2V5IiwKICAgIHZhbHVlOiBmdW5jdGlvbiBfbGF5ZXJJZEtleShjYXRlZ29yeSwgbGF5ZXJJZCkgewogICAgICByZXR1cm4gY2F0ZWdvcnkgKyAiXG4iICsgbGF5ZXJJZDsKICAgIH0KICB9XSk7CgogIHJldHVybiBMYXllck1hbmFnZXI7Cn0oKTsKCmV4cG9ydHNbImRlZmF1bHQiXSA9IExheWVyTWFuYWdlcjsKCgp9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCn0seyIuL2dsb2JhbC9qcXVlcnkiOjksIi4vZ2xvYmFsL2xlYWZsZXQiOjEwLCIuL3V0aWwiOjE3fV0sMTU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewooZnVuY3Rpb24gKGdsb2JhbCl7KGZ1bmN0aW9uICgpewoidXNlIHN0cmljdCI7CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CiAgdmFsdWU6IHRydWUKfSk7Cgp2YXIgX2pxdWVyeSA9IHJlcXVpcmUoIi4vZ2xvYmFsL2pxdWVyeSIpOwoKdmFyIF9qcXVlcnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfanF1ZXJ5KTsKCnZhciBfbGVhZmxldCA9IHJlcXVpcmUoIi4vZ2xvYmFsL2xlYWZsZXQiKTsKCnZhciBfbGVhZmxldDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sZWFmbGV0KTsKCnZhciBfc2hpbnkgPSByZXF1aXJlKCIuL2dsb2JhbC9zaGlueSIpOwoKdmFyIF9zaGlueTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zaGlueSk7Cgp2YXIgX2h0bWx3aWRnZXRzID0gcmVxdWlyZSgiLi9nbG9iYWwvaHRtbHdpZGdldHMiKTsKCnZhciBfaHRtbHdpZGdldHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaHRtbHdpZGdldHMpOwoKdmFyIF91dGlsID0gcmVxdWlyZSgiLi91dGlsIik7Cgp2YXIgX2Nyc191dGlscyA9IHJlcXVpcmUoIi4vY3JzX3V0aWxzIik7Cgp2YXIgX2RhdGFmcmFtZSA9IHJlcXVpcmUoIi4vZGF0YWZyYW1lIik7Cgp2YXIgX2RhdGFmcmFtZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kYXRhZnJhbWUpOwoKdmFyIF9jbHVzdGVyTGF5ZXJTdG9yZSA9IHJlcXVpcmUoIi4vY2x1c3Rlci1sYXllci1zdG9yZSIpOwoKdmFyIF9jbHVzdGVyTGF5ZXJTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbHVzdGVyTGF5ZXJTdG9yZSk7Cgp2YXIgX21pcG1hcHBlciA9IHJlcXVpcmUoIi4vbWlwbWFwcGVyIik7Cgp2YXIgX21pcG1hcHBlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9taXBtYXBwZXIpOwoKZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgImRlZmF1bHQiOiBvYmogfTsgfQoKdmFyIG1ldGhvZHMgPSB7fTsKZXhwb3J0c1siZGVmYXVsdCJdID0gbWV0aG9kczsKCmZ1bmN0aW9uIG1vdXNlSGFuZGxlcihtYXBJZCwgbGF5ZXJJZCwgZ3JvdXAsIGV2ZW50TmFtZSwgZXh0cmFJbmZvKSB7CiAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7CiAgICBpZiAoIV9odG1sd2lkZ2V0czJbImRlZmF1bHQiXS5zaGlueU1vZGUpIHJldHVybjsKICAgIHZhciBsYXRMbmcgPSBlLnRhcmdldC5nZXRMYXRMbmcgPyBlLnRhcmdldC5nZXRMYXRMbmcoKSA6IGUubGF0bG5nOwoKICAgIGlmIChsYXRMbmcpIHsKICAgICAgLy8gcmV0cmlldmUgb25seSBsYXQsIGxvbiB2YWx1ZXMgdG8gcmVtb3ZlIHByb3RvdHlwZQogICAgICAvLyAgIGFuZCBleHRyYSBwYXJhbWV0ZXJzIGFkZGVkIGJ5IDNyZCBwYXJ0eSBtb2R1bGVzCiAgICAgIC8vIHRoZXNlIG9iamVjdHMgYXJlIGZvciBqc29uIHNlcmlhbGl6YXRpb24sIG5vdCBqYXZhc2NyaXB0CiAgICAgIHZhciBsYXRMbmdWYWwgPSBfbGVhZmxldDJbImRlZmF1bHQiXS5sYXRMbmcobGF0TG5nKTsgLy8gbWFrZSBzdXJlIGl0IGhhcyBjb25zaXN0ZW50IHNoYXBlCgoKICAgICAgbGF0TG5nID0gewogICAgICAgIGxhdDogbGF0TG5nVmFsLmxhdCwKICAgICAgICBsbmc6IGxhdExuZ1ZhbC5sbmcKICAgICAgfTsKICAgIH0KCiAgICB2YXIgZXZlbnRJbmZvID0gX2pxdWVyeTJbImRlZmF1bHQiXS5leHRlbmQoewogICAgICBpZDogbGF5ZXJJZCwKICAgICAgIi5ub25jZSI6IE1hdGgucmFuZG9tKCkgLy8gZm9yY2UgcmVhY3Rpdml0eQoKICAgIH0sIGdyb3VwICE9PSBudWxsID8gewogICAgICBncm91cDogZ3JvdXAKICAgIH0gOiBudWxsLCBsYXRMbmcsIGV4dHJhSW5mbyk7CgogICAgX3NoaW55MlsiZGVmYXVsdCJdLm9uSW5wdXRDaGFuZ2UobWFwSWQgKyAiXyIgKyBldmVudE5hbWUsIGV2ZW50SW5mbyk7CiAgfTsKfQoKbWV0aG9kcy5tb3VzZUhhbmRsZXIgPSBtb3VzZUhhbmRsZXI7CgptZXRob2RzLmNsZWFyR3JvdXAgPSBmdW5jdGlvbiAoZ3JvdXApIHsKICB2YXIgX3RoaXMgPSB0aGlzOwoKICBfanF1ZXJ5MlsiZGVmYXVsdCJdLmVhY2goKDAsIF91dGlsLmFzQXJyYXkpKGdyb3VwKSwgZnVuY3Rpb24gKGksIHYpIHsKICAgIF90aGlzLmxheWVyTWFuYWdlci5jbGVhckdyb3VwKHYpOwogIH0pOwp9OwoKbWV0aG9kcy5zZXRWaWV3ID0gZnVuY3Rpb24gKGNlbnRlciwgem9vbSwgb3B0aW9ucykgewogIHRoaXMuc2V0VmlldyhjZW50ZXIsIHpvb20sIG9wdGlvbnMpOwp9OwoKbWV0aG9kcy5maXRCb3VuZHMgPSBmdW5jdGlvbiAobGF0MSwgbG5nMSwgbGF0MiwgbG5nMiwgb3B0aW9ucykgewogIHRoaXMuZml0Qm91bmRzKFtbbGF0MSwgbG5nMV0sIFtsYXQyLCBsbmcyXV0sIG9wdGlvbnMpOwp9OwoKbWV0aG9kcy5mbHlUbyA9IGZ1bmN0aW9uIChjZW50ZXIsIHpvb20sIG9wdGlvbnMpIHsKICB0aGlzLmZseVRvKGNlbnRlciwgem9vbSwgb3B0aW9ucyk7Cn07CgptZXRob2RzLmZseVRvQm91bmRzID0gZnVuY3Rpb24gKGxhdDEsIGxuZzEsIGxhdDIsIGxuZzIsIG9wdGlvbnMpIHsKICB0aGlzLmZseVRvQm91bmRzKFtbbGF0MSwgbG5nMV0sIFtsYXQyLCBsbmcyXV0sIG9wdGlvbnMpOwp9OwoKbWV0aG9kcy5zZXRNYXhCb3VuZHMgPSBmdW5jdGlvbiAobGF0MSwgbG5nMSwgbGF0MiwgbG5nMikgewogIHRoaXMuc2V0TWF4Qm91bmRzKFtbbGF0MSwgbG5nMV0sIFtsYXQyLCBsbmcyXV0pOwp9OwoKbWV0aG9kcy5hZGRQb3B1cHMgPSBmdW5jdGlvbiAobGF0LCBsbmcsIHBvcHVwLCBsYXllcklkLCBncm91cCwgb3B0aW9ucykgewogIHZhciBfdGhpczIgPSB0aGlzOwoKICB2YXIgZGYgPSBuZXcgX2RhdGFmcmFtZTJbImRlZmF1bHQiXSgpLmNvbCgibGF0IiwgbGF0KS5jb2woImxuZyIsIGxuZykuY29sKCJwb3B1cCIsIHBvcHVwKS5jb2woImxheWVySWQiLCBsYXllcklkKS5jb2woImdyb3VwIiwgZ3JvdXApLmNiaW5kKG9wdGlvbnMpOwoKICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChpKSB7CiAgICBpZiAoX2pxdWVyeTJbImRlZmF1bHQiXS5pc051bWVyaWMoZGYuZ2V0KGksICJsYXQiKSkgJiYgX2pxdWVyeTJbImRlZmF1bHQiXS5pc051bWVyaWMoZGYuZ2V0KGksICJsbmciKSkpIHsKICAgICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgcG9wdXAgPSBfbGVhZmxldDJbImRlZmF1bHQiXS5wb3B1cChkZi5nZXQoaSkpLnNldExhdExuZyhbZGYuZ2V0KGksICJsYXQiKSwgZGYuZ2V0KGksICJsbmciKV0pLnNldENvbnRlbnQoZGYuZ2V0KGksICJwb3B1cCIpKTsKCiAgICAgICAgdmFyIHRoaXNJZCA9IGRmLmdldChpLCAibGF5ZXJJZCIpOwogICAgICAgIHZhciB0aGlzR3JvdXAgPSBkZi5nZXQoaSwgImdyb3VwIik7CiAgICAgICAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIocG9wdXAsICJwb3B1cCIsIHRoaXNJZCwgdGhpc0dyb3VwKTsKICAgICAgfSkuY2FsbChfdGhpczIpOwogICAgfQogIH07CgogIGZvciAodmFyIGkgPSAwOyBpIDwgZGYubnJvdygpOyBpKyspIHsKICAgIF9sb29wKGkpOwogIH0KfTsKCm1ldGhvZHMucmVtb3ZlUG9wdXAgPSBmdW5jdGlvbiAobGF5ZXJJZCkgewogIHRoaXMubGF5ZXJNYW5hZ2VyLnJlbW92ZUxheWVyKCJwb3B1cCIsIGxheWVySWQpOwp9OwoKbWV0aG9kcy5jbGVhclBvcHVwcyA9IGZ1bmN0aW9uICgpIHsKICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygicG9wdXAiKTsKfTsKCm1ldGhvZHMuYWRkVGlsZXMgPSBmdW5jdGlvbiAodXJsVGVtcGxhdGUsIGxheWVySWQsIGdyb3VwLCBvcHRpb25zKSB7CiAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIoX2xlYWZsZXQyWyJkZWZhdWx0Il0udGlsZUxheWVyKHVybFRlbXBsYXRlLCBvcHRpb25zKSwgInRpbGUiLCBsYXllcklkLCBncm91cCk7Cn07CgptZXRob2RzLnJlbW92ZVRpbGVzID0gZnVuY3Rpb24gKGxheWVySWQpIHsKICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigidGlsZSIsIGxheWVySWQpOwp9OwoKbWV0aG9kcy5jbGVhclRpbGVzID0gZnVuY3Rpb24gKCkgewogIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJ0aWxlIik7Cn07CgptZXRob2RzLmFkZFdNU1RpbGVzID0gZnVuY3Rpb24gKGJhc2VVcmwsIGxheWVySWQsIGdyb3VwLCBvcHRpb25zKSB7CiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5jcnMpIHsKICAgIG9wdGlvbnMuY3JzID0gKDAsIF9jcnNfdXRpbHMuZ2V0Q1JTKShvcHRpb25zLmNycyk7CiAgfQoKICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihfbGVhZmxldDJbImRlZmF1bHQiXS50aWxlTGF5ZXIud21zKGJhc2VVcmwsIG9wdGlvbnMpLCAidGlsZSIsIGxheWVySWQsIGdyb3VwKTsKfTsgLy8gR2l2ZW46Ci8vICAge2RhdGE6IFsiYSIsICJiIiwgImMiXSwgaW5kZXg6IFswLCAxLCAwLCAyXX0KLy8gcmV0dXJuczoKLy8gICBbImEiLCAiYiIsICJhIiwgImMiXQoKCmZ1bmN0aW9uIHVucGFja1N0cmluZ3MoaWNvbnNldCkgewogIGlmICghaWNvbnNldCkgewogICAgcmV0dXJuIGljb25zZXQ7CiAgfQoKICBpZiAodHlwZW9mIGljb25zZXQuaW5kZXggPT09ICJ1bmRlZmluZWQiKSB7CiAgICByZXR1cm4gaWNvbnNldDsKICB9CgogIGljb25zZXQuZGF0YSA9ICgwLCBfdXRpbC5hc0FycmF5KShpY29uc2V0LmRhdGEpOwogIGljb25zZXQuaW5kZXggPSAoMCwgX3V0aWwuYXNBcnJheSkoaWNvbnNldC5pbmRleCk7CiAgcmV0dXJuIF9qcXVlcnkyWyJkZWZhdWx0Il0ubWFwKGljb25zZXQuaW5kZXgsIGZ1bmN0aW9uIChlLCBpKSB7CiAgICByZXR1cm4gaWNvbnNldC5kYXRhW2VdOwogIH0pOwp9CgpmdW5jdGlvbiBhZGRNYXJrZXJzKG1hcCwgZGYsIGdyb3VwLCBjbHVzdGVyT3B0aW9ucywgY2x1c3RlcklkLCBtYXJrZXJGdW5jKSB7CiAgKGZ1bmN0aW9uICgpIHsKICAgIHZhciBfdGhpczMgPSB0aGlzOwoKICAgIHZhciBjbHVzdGVyR3JvdXAgPSB0aGlzLmxheWVyTWFuYWdlci5nZXRMYXllcigiY2x1c3RlciIsIGNsdXN0ZXJJZCksCiAgICAgICAgY2x1c3RlciA9IGNsdXN0ZXJPcHRpb25zICE9PSBudWxsOwoKICAgIGlmIChjbHVzdGVyICYmICFjbHVzdGVyR3JvdXApIHsKICAgICAgY2x1c3Rlckdyb3VwID0gX2xlYWZsZXQyWyJkZWZhdWx0Il0ubWFya2VyQ2x1c3Rlckdyb3VwLmxheWVyU3VwcG9ydChjbHVzdGVyT3B0aW9ucyk7CgogICAgICBpZiAoY2x1c3Rlck9wdGlvbnMuZnJlZXplQXRab29tKSB7CiAgICAgICAgdmFyIGZyZWV6ZUF0Wm9vbSA9IGNsdXN0ZXJPcHRpb25zLmZyZWV6ZUF0Wm9vbTsKICAgICAgICBkZWxldGUgY2x1c3Rlck9wdGlvbnMuZnJlZXplQXRab29tOwogICAgICAgIGNsdXN0ZXJHcm91cC5mcmVlemVBdFpvb20oZnJlZXplQXRab29tKTsKICAgICAgfQoKICAgICAgY2x1c3Rlckdyb3VwLmNsdXN0ZXJMYXllclN0b3JlID0gbmV3IF9jbHVzdGVyTGF5ZXJTdG9yZTJbImRlZmF1bHQiXShjbHVzdGVyR3JvdXApOwogICAgfQoKICAgIHZhciBleHRyYUluZm8gPSBjbHVzdGVyID8gewogICAgICBjbHVzdGVySWQ6IGNsdXN0ZXJJZAogICAgfSA6IHt9OwoKICAgIHZhciBfbG9vcDIgPSBmdW5jdGlvbiBfbG9vcDIoaSkgewogICAgICBpZiAoX2pxdWVyeTJbImRlZmF1bHQiXS5pc051bWVyaWMoZGYuZ2V0KGksICJsYXQiKSkgJiYgX2pxdWVyeTJbImRlZmF1bHQiXS5pc051bWVyaWMoZGYuZ2V0KGksICJsbmciKSkpIHsKICAgICAgICAoZnVuY3Rpb24gKCkgewogICAgICAgICAgdmFyIG1hcmtlciA9IG1hcmtlckZ1bmMoZGYsIGkpOwogICAgICAgICAgdmFyIHRoaXNJZCA9IGRmLmdldChpLCAibGF5ZXJJZCIpOwogICAgICAgICAgdmFyIHRoaXNHcm91cCA9IGNsdXN0ZXIgPyBudWxsIDogZGYuZ2V0KGksICJncm91cCIpOwoKICAgICAgICAgIGlmIChjbHVzdGVyKSB7CiAgICAgICAgICAgIGNsdXN0ZXJHcm91cC5jbHVzdGVyTGF5ZXJTdG9yZS5hZGQobWFya2VyLCB0aGlzSWQpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIobWFya2VyLCAibWFya2VyIiwgdGhpc0lkLCB0aGlzR3JvdXAsIGRmLmdldChpLCAiY3RHcm91cCIsIHRydWUpLCBkZi5nZXQoaSwgImN0S2V5IiwgdHJ1ZSkpOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBwb3B1cCA9IGRmLmdldChpLCAicG9wdXAiKTsKICAgICAgICAgIHZhciBwb3B1cE9wdGlvbnMgPSBkZi5nZXQoaSwgInBvcHVwT3B0aW9ucyIpOwoKICAgICAgICAgIGlmIChwb3B1cCAhPT0gbnVsbCkgewogICAgICAgICAgICBpZiAocG9wdXBPcHRpb25zICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgbWFya2VyLmJpbmRQb3B1cChwb3B1cCwgcG9wdXBPcHRpb25zKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBtYXJrZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHZhciBsYWJlbCA9IGRmLmdldChpLCAibGFiZWwiKTsKICAgICAgICAgIHZhciBsYWJlbE9wdGlvbnMgPSBkZi5nZXQoaSwgImxhYmVsT3B0aW9ucyIpOwoKICAgICAgICAgIGlmIChsYWJlbCAhPT0gbnVsbCkgewogICAgICAgICAgICBpZiAobGFiZWxPcHRpb25zICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgaWYgKGxhYmVsT3B0aW9ucy5wZXJtYW5lbnQpIHsKICAgICAgICAgICAgICAgIG1hcmtlci5iaW5kVG9vbHRpcChsYWJlbCwgbGFiZWxPcHRpb25zKS5vcGVuVG9vbHRpcCgpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBtYXJrZXIuYmluZFRvb2x0aXAobGFiZWwsIGxhYmVsT3B0aW9ucyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIG1hcmtlci5iaW5kVG9vbHRpcChsYWJlbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICBtYXJrZXIub24oImNsaWNrIiwgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCAibWFya2VyX2NsaWNrIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgICBtYXJrZXIub24oIm1vdXNlb3ZlciIsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgIm1hcmtlcl9tb3VzZW92ZXIiLCBleHRyYUluZm8pLCB0aGlzKTsKICAgICAgICAgIG1hcmtlci5vbigibW91c2VvdXQiLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsICJtYXJrZXJfbW91c2VvdXQiLCBleHRyYUluZm8pLCB0aGlzKTsKICAgICAgICAgIG1hcmtlci5vbigiZHJhZ2VuZCIsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgIm1hcmtlcl9kcmFnZW5kIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgfSkuY2FsbChfdGhpczMpOwogICAgICB9CiAgICB9OwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGYubnJvdygpOyBpKyspIHsKICAgICAgX2xvb3AyKGkpOwogICAgfQoKICAgIGlmIChjbHVzdGVyKSB7CiAgICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGNsdXN0ZXJHcm91cCwgImNsdXN0ZXIiLCBjbHVzdGVySWQsIGdyb3VwKTsKICAgIH0KICB9KS5jYWxsKG1hcCk7Cn0KCm1ldGhvZHMuYWRkR2VuZXJpY01hcmtlcnMgPSBhZGRNYXJrZXJzOwoKbWV0aG9kcy5hZGRNYXJrZXJzID0gZnVuY3Rpb24gKGxhdCwgbG5nLCBpY29uLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXAsIHBvcHVwT3B0aW9ucywgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCwgbGFiZWwsIGxhYmVsT3B0aW9ucywgY3Jvc3N0YWxrT3B0aW9ucykgewogIHZhciBpY29uZGY7CiAgdmFyIGdldEljb247CgogIGlmIChpY29uKSB7CiAgICAvLyBVbnBhY2sgaWNvbnMKICAgIGljb24uaWNvblVybCA9IHVucGFja1N0cmluZ3MoaWNvbi5pY29uVXJsKTsKICAgIGljb24uaWNvblJldGluYVVybCA9IHVucGFja1N0cmluZ3MoaWNvbi5pY29uUmV0aW5hVXJsKTsKICAgIGljb24uc2hhZG93VXJsID0gdW5wYWNrU3RyaW5ncyhpY29uLnNoYWRvd1VybCk7CiAgICBpY29uLnNoYWRvd1JldGluYVVybCA9IHVucGFja1N0cmluZ3MoaWNvbi5zaGFkb3dSZXRpbmFVcmwpOyAvLyBUaGlzIGNiaW5kcyB0aGUgaWNvbiBVUkxzIGFuZCBhbnkgb3RoZXIgaWNvbiBvcHRpb25zOyB0aGV5J3JlIGFsbAogICAgLy8gcHJlc2VudCBvbiB0aGUgaWNvbiBvYmplY3QuCgogICAgaWNvbmRmID0gbmV3IF9kYXRhZnJhbWUyWyJkZWZhdWx0Il0oKS5jYmluZChpY29uKTsgLy8gQ29uc3RydWN0cyBhbiBpY29uIGZyb20gYSBzcGVjaWZpZWQgcm93IG9mIHRoZSBpY29uIGRhdGFmcmFtZS4KCiAgICBnZXRJY29uID0gZnVuY3Rpb24gZ2V0SWNvbihpKSB7CiAgICAgIHZhciBvcHRzID0gaWNvbmRmLmdldChpKTsKCiAgICAgIGlmICghb3B0cy5pY29uVXJsKSB7CiAgICAgICAgcmV0dXJuIG5ldyBfbGVhZmxldDJbImRlZmF1bHQiXS5JY29uLkRlZmF1bHQoKTsKICAgICAgfSAvLyBDb21wb3NpdGUgb3B0aW9ucyAobGlrZSBwb2ludHMgb3Igc2l6ZXMpIGFyZSBwYXNzZWQgZnJvbSBSIHdpdGggZWFjaAogICAgICAvLyBpbmRpdmlkdWFsIGNvbXBvbmVudCBhcyBpdHMgb3duIG9wdGlvbi4gV2UgbmVlZCB0byBjb21iaW5lIHRoZW0gbm93CiAgICAgIC8vIGludG8gdGhlaXIgY29tcG9zaXRlIGZvcm0uCgoKICAgICAgaWYgKG9wdHMuaWNvbldpZHRoKSB7CiAgICAgICAgb3B0cy5pY29uU2l6ZSA9IFtvcHRzLmljb25XaWR0aCwgb3B0cy5pY29uSGVpZ2h0XTsKICAgICAgfQoKICAgICAgaWYgKG9wdHMuc2hhZG93V2lkdGgpIHsKICAgICAgICBvcHRzLnNoYWRvd1NpemUgPSBbb3B0cy5zaGFkb3dXaWR0aCwgb3B0cy5zaGFkb3dIZWlnaHRdOwogICAgICB9CgogICAgICBpZiAob3B0cy5pY29uQW5jaG9yWCkgewogICAgICAgIG9wdHMuaWNvbkFuY2hvciA9IFtvcHRzLmljb25BbmNob3JYLCBvcHRzLmljb25BbmNob3JZXTsKICAgICAgfQoKICAgICAgaWYgKG9wdHMuc2hhZG93QW5jaG9yWCkgewogICAgICAgIG9wdHMuc2hhZG93QW5jaG9yID0gW29wdHMuc2hhZG93QW5jaG9yWCwgb3B0cy5zaGFkb3dBbmNob3JZXTsKICAgICAgfQoKICAgICAgaWYgKG9wdHMucG9wdXBBbmNob3JYKSB7CiAgICAgICAgb3B0cy5wb3B1cEFuY2hvciA9IFtvcHRzLnBvcHVwQW5jaG9yWCwgb3B0cy5wb3B1cEFuY2hvclldOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IF9sZWFmbGV0MlsiZGVmYXVsdCJdLkljb24ob3B0cyk7CiAgICB9OwogIH0KCiAgaWYgKCEoX2pxdWVyeTJbImRlZmF1bHQiXS5pc0VtcHR5T2JqZWN0KGxhdCkgfHwgX2pxdWVyeTJbImRlZmF1bHQiXS5pc0VtcHR5T2JqZWN0KGxuZykpIHx8IF9qcXVlcnkyWyJkZWZhdWx0Il0uaXNOdW1lcmljKGxhdCkgJiYgX2pxdWVyeTJbImRlZmF1bHQiXS5pc051bWVyaWMobG5nKSkgewogICAgdmFyIGRmID0gbmV3IF9kYXRhZnJhbWUyWyJkZWZhdWx0Il0oKS5jb2woImxhdCIsIGxhdCkuY29sKCJsbmciLCBsbmcpLmNvbCgibGF5ZXJJZCIsIGxheWVySWQpLmNvbCgiZ3JvdXAiLCBncm91cCkuY29sKCJwb3B1cCIsIHBvcHVwKS5jb2woInBvcHVwT3B0aW9ucyIsIHBvcHVwT3B0aW9ucykuY29sKCJsYWJlbCIsIGxhYmVsKS5jb2woImxhYmVsT3B0aW9ucyIsIGxhYmVsT3B0aW9ucykuY2JpbmQob3B0aW9ucykuY2JpbmQoY3Jvc3N0YWxrT3B0aW9ucyB8fCB7fSk7CiAgICBpZiAoaWNvbikgaWNvbmRmLmVmZmVjdGl2ZUxlbmd0aCA9IGRmLm5yb3coKTsKICAgIGFkZE1hcmtlcnModGhpcywgZGYsIGdyb3VwLCBjbHVzdGVyT3B0aW9ucywgY2x1c3RlcklkLCBmdW5jdGlvbiAoZGYsIGkpIHsKICAgICAgdmFyIG9wdGlvbnMgPSBkZi5nZXQoaSk7CiAgICAgIGlmIChpY29uKSBvcHRpb25zLmljb24gPSBnZXRJY29uKGkpOwogICAgICByZXR1cm4gX2xlYWZsZXQyWyJkZWZhdWx0Il0ubWFya2VyKFtkZi5nZXQoaSwgImxhdCIpLCBkZi5nZXQoaSwgImxuZyIpXSwgb3B0aW9ucyk7CiAgICB9KTsKICB9Cn07CgptZXRob2RzLmFkZEF3ZXNvbWVNYXJrZXJzID0gZnVuY3Rpb24gKGxhdCwgbG5nLCBpY29uLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXAsIHBvcHVwT3B0aW9ucywgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCwgbGFiZWwsIGxhYmVsT3B0aW9ucywgY3Jvc3N0YWxrT3B0aW9ucykgewogIHZhciBpY29uZGY7CiAgdmFyIGdldEljb247CgogIGlmIChpY29uKSB7CiAgICAvLyBUaGlzIGNiaW5kcyB0aGUgaWNvbiBVUkxzIGFuZCBhbnkgb3RoZXIgaWNvbiBvcHRpb25zOyB0aGV5J3JlIGFsbAogICAgLy8gcHJlc2VudCBvbiB0aGUgaWNvbiBvYmplY3QuCiAgICBpY29uZGYgPSBuZXcgX2RhdGFmcmFtZTJbImRlZmF1bHQiXSgpLmNiaW5kKGljb24pOyAvLyBDb25zdHJ1Y3RzIGFuIGljb24gZnJvbSBhIHNwZWNpZmllZCByb3cgb2YgdGhlIGljb24gZGF0YWZyYW1lLgoKICAgIGdldEljb24gPSBmdW5jdGlvbiBnZXRJY29uKGkpIHsKICAgICAgdmFyIG9wdHMgPSBpY29uZGYuZ2V0KGkpOwoKICAgICAgaWYgKCFvcHRzKSB7CiAgICAgICAgcmV0dXJuIG5ldyBfbGVhZmxldDJbImRlZmF1bHQiXS5Bd2Vzb21lTWFya2Vycy5pY29uKCk7CiAgICAgIH0KCiAgICAgIGlmIChvcHRzLnNxdWFyZU1hcmtlcikgewogICAgICAgIG9wdHMuY2xhc3NOYW1lID0gImF3ZXNvbWUtbWFya2VyIGF3ZXNvbWUtbWFya2VyLXNxdWFyZSI7CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXcgX2xlYWZsZXQyWyJkZWZhdWx0Il0uQXdlc29tZU1hcmtlcnMuaWNvbihvcHRzKTsKICAgIH07CiAgfQoKICBpZiAoIShfanF1ZXJ5MlsiZGVmYXVsdCJdLmlzRW1wdHlPYmplY3QobGF0KSB8fCBfanF1ZXJ5MlsiZGVmYXVsdCJdLmlzRW1wdHlPYmplY3QobG5nKSkgfHwgX2pxdWVyeTJbImRlZmF1bHQiXS5pc051bWVyaWMobGF0KSAmJiBfanF1ZXJ5MlsiZGVmYXVsdCJdLmlzTnVtZXJpYyhsbmcpKSB7CiAgICB2YXIgZGYgPSBuZXcgX2RhdGFmcmFtZTJbImRlZmF1bHQiXSgpLmNvbCgibGF0IiwgbGF0KS5jb2woImxuZyIsIGxuZykuY29sKCJsYXllcklkIiwgbGF5ZXJJZCkuY29sKCJncm91cCIsIGdyb3VwKS5jb2woInBvcHVwIiwgcG9wdXApLmNvbCgicG9wdXBPcHRpb25zIiwgcG9wdXBPcHRpb25zKS5jb2woImxhYmVsIiwgbGFiZWwpLmNvbCgibGFiZWxPcHRpb25zIiwgbGFiZWxPcHRpb25zKS5jYmluZChvcHRpb25zKS5jYmluZChjcm9zc3RhbGtPcHRpb25zIHx8IHt9KTsKICAgIGlmIChpY29uKSBpY29uZGYuZWZmZWN0aXZlTGVuZ3RoID0gZGYubnJvdygpOwogICAgYWRkTWFya2Vycyh0aGlzLCBkZiwgZ3JvdXAsIGNsdXN0ZXJPcHRpb25zLCBjbHVzdGVySWQsIGZ1bmN0aW9uIChkZiwgaSkgewogICAgICB2YXIgb3B0aW9ucyA9IGRmLmdldChpKTsKICAgICAgaWYgKGljb24pIG9wdGlvbnMuaWNvbiA9IGdldEljb24oaSk7CiAgICAgIHJldHVybiBfbGVhZmxldDJbImRlZmF1bHQiXS5tYXJrZXIoW2RmLmdldChpLCAibGF0IiksIGRmLmdldChpLCAibG5nIildLCBvcHRpb25zKTsKICAgIH0pOwogIH0KfTsKCmZ1bmN0aW9uIGFkZExheWVycyhtYXAsIGNhdGVnb3J5LCBkZiwgbGF5ZXJGdW5jKSB7CiAgdmFyIF9sb29wMyA9IGZ1bmN0aW9uIF9sb29wMyhpKSB7CiAgICAoZnVuY3Rpb24gKCkgewogICAgICB2YXIgbGF5ZXIgPSBsYXllckZ1bmMoZGYsIGkpOwoKICAgICAgaWYgKCFfanF1ZXJ5MlsiZGVmYXVsdCJdLmlzRW1wdHlPYmplY3QobGF5ZXIpKSB7CiAgICAgICAgdmFyIHRoaXNJZCA9IGRmLmdldChpLCAibGF5ZXJJZCIpOwogICAgICAgIHZhciB0aGlzR3JvdXAgPSBkZi5nZXQoaSwgImdyb3VwIik7CiAgICAgICAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIobGF5ZXIsIGNhdGVnb3J5LCB0aGlzSWQsIHRoaXNHcm91cCwgZGYuZ2V0KGksICJjdEdyb3VwIiwgdHJ1ZSksIGRmLmdldChpLCAiY3RLZXkiLCB0cnVlKSk7CgogICAgICAgIGlmIChsYXllci5iaW5kUG9wdXApIHsKICAgICAgICAgIHZhciBwb3B1cCA9IGRmLmdldChpLCAicG9wdXAiKTsKICAgICAgICAgIHZhciBwb3B1cE9wdGlvbnMgPSBkZi5nZXQoaSwgInBvcHVwT3B0aW9ucyIpOwoKICAgICAgICAgIGlmIChwb3B1cCAhPT0gbnVsbCkgewogICAgICAgICAgICBpZiAocG9wdXBPcHRpb25zICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgbGF5ZXIuYmluZFBvcHVwKHBvcHVwLCBwb3B1cE9wdGlvbnMpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGxheWVyLmJpbmRQb3B1cChwb3B1cCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChsYXllci5iaW5kVG9vbHRpcCkgewogICAgICAgICAgdmFyIGxhYmVsID0gZGYuZ2V0KGksICJsYWJlbCIpOwogICAgICAgICAgdmFyIGxhYmVsT3B0aW9ucyA9IGRmLmdldChpLCAibGFiZWxPcHRpb25zIik7CgogICAgICAgICAgaWYgKGxhYmVsICE9PSBudWxsKSB7CiAgICAgICAgICAgIGlmIChsYWJlbE9wdGlvbnMgIT09IG51bGwpIHsKICAgICAgICAgICAgICBsYXllci5iaW5kVG9vbHRpcChsYWJlbCwgbGFiZWxPcHRpb25zKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBsYXllci5iaW5kVG9vbHRpcChsYWJlbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGxheWVyLm9uKCJjbGljayIsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgY2F0ZWdvcnkgKyAiX2NsaWNrIiksIHRoaXMpOwogICAgICAgIGxheWVyLm9uKCJtb3VzZW92ZXIiLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsIGNhdGVnb3J5ICsgIl9tb3VzZW92ZXIiKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oIm1vdXNlb3V0IiwgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCBjYXRlZ29yeSArICJfbW91c2VvdXQiKSwgdGhpcyk7CiAgICAgICAgdmFyIGhpZ2hsaWdodFN0eWxlID0gZGYuZ2V0KGksICJoaWdobGlnaHRPcHRpb25zIik7CgogICAgICAgIGlmICghX2pxdWVyeTJbImRlZmF1bHQiXS5pc0VtcHR5T2JqZWN0KGhpZ2hsaWdodFN0eWxlKSkgewogICAgICAgICAgdmFyIGRlZmF1bHRTdHlsZSA9IHt9OwoKICAgICAgICAgIF9qcXVlcnkyWyJkZWZhdWx0Il0uZWFjaChoaWdobGlnaHRTdHlsZSwgZnVuY3Rpb24gKGssIHYpIHsKICAgICAgICAgICAgaWYgKGsgIT0gImJyaW5nVG9Gcm9udCIgJiYgayAhPSAic2VuZFRvQmFjayIpIHsKICAgICAgICAgICAgICBpZiAoZGYuZ2V0KGksIGspKSB7CiAgICAgICAgICAgICAgICBkZWZhdWx0U3R5bGVba10gPSBkZi5nZXQoaSwgayk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKCiAgICAgICAgICBsYXllci5vbigibW91c2VvdmVyIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgdGhpcy5zZXRTdHlsZShoaWdobGlnaHRTdHlsZSk7CgogICAgICAgICAgICBpZiAoaGlnaGxpZ2h0U3R5bGUuYnJpbmdUb0Zyb250KSB7CiAgICAgICAgICAgICAgdGhpcy5icmluZ1RvRnJvbnQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICBsYXllci5vbigibW91c2VvdXQiLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICB0aGlzLnNldFN0eWxlKGRlZmF1bHRTdHlsZSk7CgogICAgICAgICAgICBpZiAoaGlnaGxpZ2h0U3R5bGUuc2VuZFRvQmFjaykgewogICAgICAgICAgICAgIHRoaXMuYnJpbmdUb0JhY2soKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9CiAgICB9KS5jYWxsKG1hcCk7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZi5ucm93KCk7IGkrKykgewogICAgX2xvb3AzKGkpOwogIH0KfQoKbWV0aG9kcy5hZGRHZW5lcmljTGF5ZXJzID0gYWRkTGF5ZXJzOwoKbWV0aG9kcy5hZGRDaXJjbGVzID0gZnVuY3Rpb24gKGxhdCwgbG5nLCByYWRpdXMsIGxheWVySWQsIGdyb3VwLCBvcHRpb25zLCBwb3B1cCwgcG9wdXBPcHRpb25zLCBsYWJlbCwgbGFiZWxPcHRpb25zLCBoaWdobGlnaHRPcHRpb25zLCBjcm9zc3RhbGtPcHRpb25zKSB7CiAgaWYgKCEoX2pxdWVyeTJbImRlZmF1bHQiXS5pc0VtcHR5T2JqZWN0KGxhdCkgfHwgX2pxdWVyeTJbImRlZmF1bHQiXS5pc0VtcHR5T2JqZWN0KGxuZykpIHx8IF9qcXVlcnkyWyJkZWZhdWx0Il0uaXNOdW1lcmljKGxhdCkgJiYgX2pxdWVyeTJbImRlZmF1bHQiXS5pc051bWVyaWMobG5nKSkgewogICAgdmFyIGRmID0gbmV3IF9kYXRhZnJhbWUyWyJkZWZhdWx0Il0oKS5jb2woImxhdCIsIGxhdCkuY29sKCJsbmciLCBsbmcpLmNvbCgicmFkaXVzIiwgcmFkaXVzKS5jb2woImxheWVySWQiLCBsYXllcklkKS5jb2woImdyb3VwIiwgZ3JvdXApLmNvbCgicG9wdXAiLCBwb3B1cCkuY29sKCJwb3B1cE9wdGlvbnMiLCBwb3B1cE9wdGlvbnMpLmNvbCgibGFiZWwiLCBsYWJlbCkuY29sKCJsYWJlbE9wdGlvbnMiLCBsYWJlbE9wdGlvbnMpLmNvbCgiaGlnaGxpZ2h0T3B0aW9ucyIsIGhpZ2hsaWdodE9wdGlvbnMpLmNiaW5kKG9wdGlvbnMpLmNiaW5kKGNyb3NzdGFsa09wdGlvbnMgfHwge30pOwogICAgYWRkTGF5ZXJzKHRoaXMsICJzaGFwZSIsIGRmLCBmdW5jdGlvbiAoZGYsIGkpIHsKICAgICAgaWYgKF9qcXVlcnkyWyJkZWZhdWx0Il0uaXNOdW1lcmljKGRmLmdldChpLCAibGF0IikpICYmIF9qcXVlcnkyWyJkZWZhdWx0Il0uaXNOdW1lcmljKGRmLmdldChpLCAibG5nIikpICYmIF9qcXVlcnkyWyJkZWZhdWx0Il0uaXNOdW1lcmljKGRmLmdldChpLCAicmFkaXVzIikpKSB7CiAgICAgICAgcmV0dXJuIF9sZWFmbGV0MlsiZGVmYXVsdCJdLmNpcmNsZShbZGYuZ2V0KGksICJsYXQiKSwgZGYuZ2V0KGksICJsbmciKV0sIGRmLmdldChpLCAicmFkaXVzIiksIGRmLmdldChpKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH0pOwogIH0KfTsKCm1ldGhvZHMuYWRkQ2lyY2xlTWFya2VycyA9IGZ1bmN0aW9uIChsYXQsIGxuZywgcmFkaXVzLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCwgcG9wdXAsIHBvcHVwT3B0aW9ucywgbGFiZWwsIGxhYmVsT3B0aW9ucywgY3Jvc3N0YWxrT3B0aW9ucykgewogIGlmICghKF9qcXVlcnkyWyJkZWZhdWx0Il0uaXNFbXB0eU9iamVjdChsYXQpIHx8IF9qcXVlcnkyWyJkZWZhdWx0Il0uaXNFbXB0eU9iamVjdChsbmcpKSB8fCBfanF1ZXJ5MlsiZGVmYXVsdCJdLmlzTnVtZXJpYyhsYXQpICYmIF9qcXVlcnkyWyJkZWZhdWx0Il0uaXNOdW1lcmljKGxuZykpIHsKICAgIHZhciBkZiA9IG5ldyBfZGF0YWZyYW1lMlsiZGVmYXVsdCJdKCkuY29sKCJsYXQiLCBsYXQpLmNvbCgibG5nIiwgbG5nKS5jb2woInJhZGl1cyIsIHJhZGl1cykuY29sKCJsYXllcklkIiwgbGF5ZXJJZCkuY29sKCJncm91cCIsIGdyb3VwKS5jb2woInBvcHVwIiwgcG9wdXApLmNvbCgicG9wdXBPcHRpb25zIiwgcG9wdXBPcHRpb25zKS5jb2woImxhYmVsIiwgbGFiZWwpLmNvbCgibGFiZWxPcHRpb25zIiwgbGFiZWxPcHRpb25zKS5jYmluZChjcm9zc3RhbGtPcHRpb25zIHx8IHt9KS5jYmluZChvcHRpb25zKTsKICAgIGFkZE1hcmtlcnModGhpcywgZGYsIGdyb3VwLCBjbHVzdGVyT3B0aW9ucywgY2x1c3RlcklkLCBmdW5jdGlvbiAoZGYsIGkpIHsKICAgICAgcmV0dXJuIF9sZWFmbGV0MlsiZGVmYXVsdCJdLmNpcmNsZU1hcmtlcihbZGYuZ2V0KGksICJsYXQiKSwgZGYuZ2V0KGksICJsbmciKV0sIGRmLmdldChpKSk7CiAgICB9KTsKICB9Cn07Ci8qCiAqIEBwYXJhbSBsYXQgQXJyYXkgb2YgYXJyYXlzIG9mIGxhdGl0dWRlIGNvb3JkaW5hdGVzIGZvciBwb2x5bGluZXMKICogQHBhcmFtIGxuZyBBcnJheSBvZiBhcnJheXMgb2YgbG9uZ2l0dWRlIGNvb3JkaW5hdGVzIGZvciBwb2x5bGluZXMKICovCgoKbWV0aG9kcy5hZGRQb2x5bGluZXMgPSBmdW5jdGlvbiAocG9seWdvbnMsIGxheWVySWQsIGdyb3VwLCBvcHRpb25zLCBwb3B1cCwgcG9wdXBPcHRpb25zLCBsYWJlbCwgbGFiZWxPcHRpb25zLCBoaWdobGlnaHRPcHRpb25zKSB7CiAgaWYgKHBvbHlnb25zLmxlbmd0aCA+IDApIHsKICAgIHZhciBkZiA9IG5ldyBfZGF0YWZyYW1lMlsiZGVmYXVsdCJdKCkuY29sKCJzaGFwZXMiLCBwb2x5Z29ucykuY29sKCJsYXllcklkIiwgbGF5ZXJJZCkuY29sKCJncm91cCIsIGdyb3VwKS5jb2woInBvcHVwIiwgcG9wdXApLmNvbCgicG9wdXBPcHRpb25zIiwgcG9wdXBPcHRpb25zKS5jb2woImxhYmVsIiwgbGFiZWwpLmNvbCgibGFiZWxPcHRpb25zIiwgbGFiZWxPcHRpb25zKS5jb2woImhpZ2hsaWdodE9wdGlvbnMiLCBoaWdobGlnaHRPcHRpb25zKS5jYmluZChvcHRpb25zKTsKICAgIGFkZExheWVycyh0aGlzLCAic2hhcGUiLCBkZiwgZnVuY3Rpb24gKGRmLCBpKSB7CiAgICAgIHZhciBzaGFwZXMgPSBkZi5nZXQoaSwgInNoYXBlcyIpOwogICAgICBzaGFwZXMgPSBzaGFwZXMubWFwKGZ1bmN0aW9uIChzaGFwZSkgewogICAgICAgIHJldHVybiBfaHRtbHdpZGdldHMyWyJkZWZhdWx0Il0uZGF0YWZyYW1lVG9EMyhzaGFwZVswXSk7CiAgICAgIH0pOwoKICAgICAgaWYgKHNoYXBlcy5sZW5ndGggPiAxKSB7CiAgICAgICAgcmV0dXJuIF9sZWFmbGV0MlsiZGVmYXVsdCJdLnBvbHlsaW5lKHNoYXBlcywgZGYuZ2V0KGkpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gX2xlYWZsZXQyWyJkZWZhdWx0Il0ucG9seWxpbmUoc2hhcGVzWzBdLCBkZi5nZXQoaSkpOwogICAgICB9CiAgICB9KTsKICB9Cn07CgptZXRob2RzLnJlbW92ZU1hcmtlciA9IGZ1bmN0aW9uIChsYXllcklkKSB7CiAgdGhpcy5sYXllck1hbmFnZXIucmVtb3ZlTGF5ZXIoIm1hcmtlciIsIGxheWVySWQpOwp9OwoKbWV0aG9kcy5jbGVhck1hcmtlcnMgPSBmdW5jdGlvbiAoKSB7CiAgdGhpcy5sYXllck1hbmFnZXIuY2xlYXJMYXllcnMoIm1hcmtlciIpOwp9OwoKbWV0aG9kcy5yZW1vdmVNYXJrZXJDbHVzdGVyID0gZnVuY3Rpb24gKGxheWVySWQpIHsKICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigiY2x1c3RlciIsIGxheWVySWQpOwp9OwoKbWV0aG9kcy5yZW1vdmVNYXJrZXJGcm9tQ2x1c3RlciA9IGZ1bmN0aW9uIChsYXllcklkLCBjbHVzdGVySWQpIHsKICB2YXIgY2x1c3RlciA9IHRoaXMubGF5ZXJNYW5hZ2VyLmdldExheWVyKCJjbHVzdGVyIiwgY2x1c3RlcklkKTsKICBpZiAoIWNsdXN0ZXIpIHJldHVybjsKICBjbHVzdGVyLmNsdXN0ZXJMYXllclN0b3JlLnJlbW92ZShsYXllcklkKTsKfTsKCm1ldGhvZHMuY2xlYXJNYXJrZXJDbHVzdGVycyA9IGZ1bmN0aW9uICgpIHsKICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygiY2x1c3RlciIpOwp9OwoKbWV0aG9kcy5yZW1vdmVTaGFwZSA9IGZ1bmN0aW9uIChsYXllcklkKSB7CiAgdGhpcy5sYXllck1hbmFnZXIucmVtb3ZlTGF5ZXIoInNoYXBlIiwgbGF5ZXJJZCk7Cn07CgptZXRob2RzLmNsZWFyU2hhcGVzID0gZnVuY3Rpb24gKCkgewogIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJzaGFwZSIpOwp9OwoKbWV0aG9kcy5hZGRSZWN0YW5nbGVzID0gZnVuY3Rpb24gKGxhdDEsIGxuZzEsIGxhdDIsIGxuZzIsIGxheWVySWQsIGdyb3VwLCBvcHRpb25zLCBwb3B1cCwgcG9wdXBPcHRpb25zLCBsYWJlbCwgbGFiZWxPcHRpb25zLCBoaWdobGlnaHRPcHRpb25zKSB7CiAgdmFyIGRmID0gbmV3IF9kYXRhZnJhbWUyWyJkZWZhdWx0Il0oKS5jb2woImxhdDEiLCBsYXQxKS5jb2woImxuZzEiLCBsbmcxKS5jb2woImxhdDIiLCBsYXQyKS5jb2woImxuZzIiLCBsbmcyKS5jb2woImxheWVySWQiLCBsYXllcklkKS5jb2woImdyb3VwIiwgZ3JvdXApLmNvbCgicG9wdXAiLCBwb3B1cCkuY29sKCJwb3B1cE9wdGlvbnMiLCBwb3B1cE9wdGlvbnMpLmNvbCgibGFiZWwiLCBsYWJlbCkuY29sKCJsYWJlbE9wdGlvbnMiLCBsYWJlbE9wdGlvbnMpLmNvbCgiaGlnaGxpZ2h0T3B0aW9ucyIsIGhpZ2hsaWdodE9wdGlvbnMpLmNiaW5kKG9wdGlvbnMpOwogIGFkZExheWVycyh0aGlzLCAic2hhcGUiLCBkZiwgZnVuY3Rpb24gKGRmLCBpKSB7CiAgICBpZiAoX2pxdWVyeTJbImRlZmF1bHQiXS5pc051bWVyaWMoZGYuZ2V0KGksICJsYXQxIikpICYmIF9qcXVlcnkyWyJkZWZhdWx0Il0uaXNOdW1lcmljKGRmLmdldChpLCAibG5nMSIpKSAmJiBfanF1ZXJ5MlsiZGVmYXVsdCJdLmlzTnVtZXJpYyhkZi5nZXQoaSwgImxhdDIiKSkgJiYgX2pxdWVyeTJbImRlZmF1bHQiXS5pc051bWVyaWMoZGYuZ2V0KGksICJsbmcyIikpKSB7CiAgICAgIHJldHVybiBfbGVhZmxldDJbImRlZmF1bHQiXS5yZWN0YW5nbGUoW1tkZi5nZXQoaSwgImxhdDEiKSwgZGYuZ2V0KGksICJsbmcxIildLCBbZGYuZ2V0KGksICJsYXQyIiksIGRmLmdldChpLCAibG5nMiIpXV0sIGRmLmdldChpKSk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9KTsKfTsKLyoKICogQHBhcmFtIGxhdCBBcnJheSBvZiBhcnJheXMgb2YgbGF0aXR1ZGUgY29vcmRpbmF0ZXMgZm9yIHBvbHlnb25zCiAqIEBwYXJhbSBsbmcgQXJyYXkgb2YgYXJyYXlzIG9mIGxvbmdpdHVkZSBjb29yZGluYXRlcyBmb3IgcG9seWdvbnMKICovCgoKbWV0aG9kcy5hZGRQb2x5Z29ucyA9IGZ1bmN0aW9uIChwb2x5Z29ucywgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMsIHBvcHVwLCBwb3B1cE9wdGlvbnMsIGxhYmVsLCBsYWJlbE9wdGlvbnMsIGhpZ2hsaWdodE9wdGlvbnMpIHsKICBpZiAocG9seWdvbnMubGVuZ3RoID4gMCkgewogICAgdmFyIGRmID0gbmV3IF9kYXRhZnJhbWUyWyJkZWZhdWx0Il0oKS5jb2woInNoYXBlcyIsIHBvbHlnb25zKS5jb2woImxheWVySWQiLCBsYXllcklkKS5jb2woImdyb3VwIiwgZ3JvdXApLmNvbCgicG9wdXAiLCBwb3B1cCkuY29sKCJwb3B1cE9wdGlvbnMiLCBwb3B1cE9wdGlvbnMpLmNvbCgibGFiZWwiLCBsYWJlbCkuY29sKCJsYWJlbE9wdGlvbnMiLCBsYWJlbE9wdGlvbnMpLmNvbCgiaGlnaGxpZ2h0T3B0aW9ucyIsIGhpZ2hsaWdodE9wdGlvbnMpLmNiaW5kKG9wdGlvbnMpOwogICAgYWRkTGF5ZXJzKHRoaXMsICJzaGFwZSIsIGRmLCBmdW5jdGlvbiAoZGYsIGkpIHsKICAgICAgLy8gVGhpcyBjb2RlIHVzZWQgdG8gdXNlIEwubXVsdGlQb2x5Z29uLCBidXQgdGhhdCBjYXVzZWQKICAgICAgLy8gZG91YmxlLWNsaWNrIG9uIGEgbXVsdGlwb2x5Z29uIHRvIGZhaWwgdG8gem9vbSBpbiBvbiB0aGUKICAgICAgLy8gbWFwLiBTdXJwcmlzaW5nbHksIHB1dHRpbmcgYWxsIHRoZSByaW5ncyBpbiBhIHNpbmdsZQogICAgICAvLyBwb2x5Z29uIHNlZW1zIHRvIHN0aWxsIHdvcms7IGNvbXBsaWNhdGVkIG11bHRpcG9seWdvbnMKICAgICAgLy8gYXJlIHN0aWxsIHJlbmRlcmVkIGNvcnJlY3RseS4KICAgICAgdmFyIHNoYXBlcyA9IGRmLmdldChpLCAic2hhcGVzIikubWFwKGZ1bmN0aW9uIChwb2x5Z29uKSB7CiAgICAgICAgcmV0dXJuIHBvbHlnb24ubWFwKF9odG1sd2lkZ2V0czJbImRlZmF1bHQiXS5kYXRhZnJhbWVUb0QzKTsKICAgICAgfSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHZhbCkgewogICAgICAgIHJldHVybiBhY2MuY29uY2F0KHZhbCk7CiAgICAgIH0sIFtdKTsKICAgICAgcmV0dXJuIF9sZWFmbGV0MlsiZGVmYXVsdCJdLnBvbHlnb24oc2hhcGVzLCBkZi5nZXQoaSkpOwogICAgfSk7CiAgfQp9OwoKbWV0aG9kcy5hZGRHZW9KU09OID0gZnVuY3Rpb24gKGRhdGEsIGxheWVySWQsIGdyb3VwLCBzdHlsZSkgewogIC8vIFRoaXMgdGltZSwgc2VsZiBpcyBhY3R1YWxseSBuZWVkZWQgYmVjYXVzZSB0aGUgY2FsbGJhY2tzIGJlbG93IG5lZWQKICAvLyB0byBhY2Nlc3MgYm90aCB0aGUgaW5uZXIgYW5kIG91dGVyIHNlbnNlcyBvZiAidGhpcyIKICB2YXIgc2VsZiA9IHRoaXM7CgogIGlmICh0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIpIHsKICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpOwogIH0KCiAgdmFyIGdsb2JhbFN0eWxlID0gX2pxdWVyeTJbImRlZmF1bHQiXS5leHRlbmQoe30sIHN0eWxlLCBkYXRhLnN0eWxlIHx8IHt9KTsKCiAgdmFyIGdqbGF5ZXIgPSBfbGVhZmxldDJbImRlZmF1bHQiXS5nZW9Kc29uKGRhdGEsIHsKICAgIHN0eWxlOiBmdW5jdGlvbiBzdHlsZShmZWF0dXJlKSB7CiAgICAgIGlmIChmZWF0dXJlLnN0eWxlIHx8IGZlYXR1cmUucHJvcGVydGllcy5zdHlsZSkgewogICAgICAgIHJldHVybiBfanF1ZXJ5MlsiZGVmYXVsdCJdLmV4dGVuZCh7fSwgZ2xvYmFsU3R5bGUsIGZlYXR1cmUuc3R5bGUsIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGdsb2JhbFN0eWxlOwogICAgICB9CiAgICB9LAogICAgb25FYWNoRmVhdHVyZTogZnVuY3Rpb24gb25FYWNoRmVhdHVyZShmZWF0dXJlLCBsYXllcikgewogICAgICB2YXIgZXh0cmFJbmZvID0gewogICAgICAgIGZlYXR1cmVJZDogZmVhdHVyZS5pZCwKICAgICAgICBwcm9wZXJ0aWVzOiBmZWF0dXJlLnByb3BlcnRpZXMKICAgICAgfTsKICAgICAgdmFyIHBvcHVwID0gZmVhdHVyZS5wcm9wZXJ0aWVzID8gZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwIDogbnVsbDsKICAgICAgaWYgKHR5cGVvZiBwb3B1cCAhPT0gInVuZGVmaW5lZCIgJiYgcG9wdXAgIT09IG51bGwpIGxheWVyLmJpbmRQb3B1cChwb3B1cCk7CiAgICAgIGxheWVyLm9uKCJjbGljayIsIG1vdXNlSGFuZGxlcihzZWxmLmlkLCBsYXllcklkLCBncm91cCwgImdlb2pzb25fY2xpY2siLCBleHRyYUluZm8pLCB0aGlzKTsKICAgICAgbGF5ZXIub24oIm1vdXNlb3ZlciIsIG1vdXNlSGFuZGxlcihzZWxmLmlkLCBsYXllcklkLCBncm91cCwgImdlb2pzb25fbW91c2VvdmVyIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgIGxheWVyLm9uKCJtb3VzZW91dCIsIG1vdXNlSGFuZGxlcihzZWxmLmlkLCBsYXllcklkLCBncm91cCwgImdlb2pzb25fbW91c2VvdXQiLCBleHRyYUluZm8pLCB0aGlzKTsKICAgIH0KICB9KTsKCiAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIoZ2psYXllciwgImdlb2pzb24iLCBsYXllcklkLCBncm91cCk7Cn07CgptZXRob2RzLnJlbW92ZUdlb0pTT04gPSBmdW5jdGlvbiAobGF5ZXJJZCkgewogIHRoaXMubGF5ZXJNYW5hZ2VyLnJlbW92ZUxheWVyKCJnZW9qc29uIiwgbGF5ZXJJZCk7Cn07CgptZXRob2RzLmNsZWFyR2VvSlNPTiA9IGZ1bmN0aW9uICgpIHsKICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygiZ2VvanNvbiIpOwp9OwoKbWV0aG9kcy5hZGRUb3BvSlNPTiA9IGZ1bmN0aW9uIChkYXRhLCBsYXllcklkLCBncm91cCwgc3R5bGUpIHsKICAvLyBUaGlzIHRpbWUsIHNlbGYgaXMgYWN0dWFsbHkgbmVlZGVkIGJlY2F1c2UgdGhlIGNhbGxiYWNrcyBiZWxvdyBuZWVkCiAgLy8gdG8gYWNjZXNzIGJvdGggdGhlIGlubmVyIGFuZCBvdXRlciBzZW5zZXMgb2YgInRoaXMiCiAgdmFyIHNlbGYgPSB0aGlzOwoKICBpZiAodHlwZW9mIGRhdGEgPT09ICJzdHJpbmciKSB7CiAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTsKICB9CgogIHZhciBnbG9iYWxTdHlsZSA9IF9qcXVlcnkyWyJkZWZhdWx0Il0uZXh0ZW5kKHt9LCBzdHlsZSwgZGF0YS5zdHlsZSB8fCB7fSk7CgogIHZhciBnamxheWVyID0gX2xlYWZsZXQyWyJkZWZhdWx0Il0uZ2VvSnNvbihudWxsLCB7CiAgICBzdHlsZTogZnVuY3Rpb24gc3R5bGUoZmVhdHVyZSkgewogICAgICBpZiAoZmVhdHVyZS5zdHlsZSB8fCBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGUpIHsKICAgICAgICByZXR1cm4gX2pxdWVyeTJbImRlZmF1bHQiXS5leHRlbmQoe30sIGdsb2JhbFN0eWxlLCBmZWF0dXJlLnN0eWxlLCBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGUpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBnbG9iYWxTdHlsZTsKICAgICAgfQogICAgfSwKICAgIG9uRWFjaEZlYXR1cmU6IGZ1bmN0aW9uIG9uRWFjaEZlYXR1cmUoZmVhdHVyZSwgbGF5ZXIpIHsKICAgICAgdmFyIGV4dHJhSW5mbyA9IHsKICAgICAgICBmZWF0dXJlSWQ6IGZlYXR1cmUuaWQsCiAgICAgICAgcHJvcGVydGllczogZmVhdHVyZS5wcm9wZXJ0aWVzCiAgICAgIH07CiAgICAgIHZhciBwb3B1cCA9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cDsKICAgICAgaWYgKHR5cGVvZiBwb3B1cCAhPT0gInVuZGVmaW5lZCIgJiYgcG9wdXAgIT09IG51bGwpIGxheWVyLmJpbmRQb3B1cChwb3B1cCk7CiAgICAgIGxheWVyLm9uKCJjbGljayIsIG1vdXNlSGFuZGxlcihzZWxmLmlkLCBsYXllcklkLCBncm91cCwgInRvcG9qc29uX2NsaWNrIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgIGxheWVyLm9uKCJtb3VzZW92ZXIiLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9tb3VzZW92ZXIiLCBleHRyYUluZm8pLCB0aGlzKTsKICAgICAgbGF5ZXIub24oIm1vdXNlb3V0IiwgbW91c2VIYW5kbGVyKHNlbGYuaWQsIGxheWVySWQsIGdyb3VwLCAidG9wb2pzb25fbW91c2VvdXQiLCBleHRyYUluZm8pLCB0aGlzKTsKICAgIH0KICB9KTsKCiAgZ2xvYmFsLm9tbml2b3JlLnRvcG9qc29uLnBhcnNlKGRhdGEsIG51bGwsIGdqbGF5ZXIpOwogIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGdqbGF5ZXIsICJ0b3BvanNvbiIsIGxheWVySWQsIGdyb3VwKTsKfTsKCm1ldGhvZHMucmVtb3ZlVG9wb0pTT04gPSBmdW5jdGlvbiAobGF5ZXJJZCkgewogIHRoaXMubGF5ZXJNYW5hZ2VyLnJlbW92ZUxheWVyKCJ0b3BvanNvbiIsIGxheWVySWQpOwp9OwoKbWV0aG9kcy5jbGVhclRvcG9KU09OID0gZnVuY3Rpb24gKCkgewogIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJ0b3BvanNvbiIpOwp9OwoKbWV0aG9kcy5hZGRDb250cm9sID0gZnVuY3Rpb24gKGh0bWwsIHBvc2l0aW9uLCBsYXllcklkLCBjbGFzc2VzKSB7CiAgZnVuY3Rpb24gb25BZGQobWFwKSB7CiAgICB2YXIgZGl2ID0gX2xlYWZsZXQyWyJkZWZhdWx0Il0uRG9tVXRpbC5jcmVhdGUoImRpdiIsIGNsYXNzZXMpOwoKICAgIGlmICh0eXBlb2YgbGF5ZXJJZCAhPT0gInVuZGVmaW5lZCIgJiYgbGF5ZXJJZCAhPT0gbnVsbCkgewogICAgICBkaXYuc2V0QXR0cmlidXRlKCJpZCIsIGxheWVySWQpOwogICAgfQoKICAgIHRoaXMuX2RpdiA9IGRpdjsgLy8gSXQncyBwb3NzaWJsZSBmb3Igd2luZG93LlNoaW55IHRvIGJlIHRydWUgYnV0IFNoaW55LmluaXRpYWxpemVJbnB1dHMgdG8KICAgIC8vIG5vdCBiZSwgd2hlbiBhIHN0YXRpYyBsZWFmbGV0IHdpZGdldCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBzaGlueQogICAgLy8gVUkgZGlyZWN0bHkgKG5vdCB0aHJvdWdoIGxlYWZsZXRPdXRwdXQgb3IgdWlPdXRwdXQpLiBJbiB0aGlzIGNhc2Ugd2UKICAgIC8vIGRvbid0IGRvIHRoZSBub3JtYWwgU2hpbnkgc3R1ZmYgYXMgdGhhdCB3aWxsIGFsbCBoYXBwZW4gd2hlbiBTaGlueQogICAgLy8gaXRzZWxmIGxvYWRzIGFuZCBiaW5kcyB0aGUgZW50aXJlIGRvYy4KCiAgICBpZiAod2luZG93LlNoaW55ICYmIF9zaGlueTJbImRlZmF1bHQiXS5pbml0aWFsaXplSW5wdXRzKSB7CiAgICAgIF9zaGlueTJbImRlZmF1bHQiXS5yZW5kZXJIdG1sKGh0bWwsIHRoaXMuX2Rpdik7CgogICAgICBfc2hpbnkyWyJkZWZhdWx0Il0uaW5pdGlhbGl6ZUlucHV0cyh0aGlzLl9kaXYpOwoKICAgICAgX3NoaW55MlsiZGVmYXVsdCJdLmJpbmRBbGwodGhpcy5fZGl2KTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX2Rpdi5pbm5lckhUTUwgPSBodG1sOwogICAgfQoKICAgIHJldHVybiB0aGlzLl9kaXY7CiAgfQoKICBmdW5jdGlvbiBvblJlbW92ZShtYXApIHsKICAgIGlmICh3aW5kb3cuU2hpbnkgJiYgX3NoaW55MlsiZGVmYXVsdCJdLnVuYmluZEFsbCkgewogICAgICBfc2hpbnkyWyJkZWZhdWx0Il0udW5iaW5kQWxsKHRoaXMuX2Rpdik7CiAgICB9CiAgfQoKICB2YXIgQ29udHJvbCA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLkNvbnRyb2wuZXh0ZW5kKHsKICAgIG9wdGlvbnM6IHsKICAgICAgcG9zaXRpb246IHBvc2l0aW9uCiAgICB9LAogICAgb25BZGQ6IG9uQWRkLAogICAgb25SZW1vdmU6IG9uUmVtb3ZlCiAgfSk7CgogIHRoaXMuY29udHJvbHMuYWRkKG5ldyBDb250cm9sKCksIGxheWVySWQsIGh0bWwpOwp9OwoKbWV0aG9kcy5hZGRDdXN0b21Db250cm9sID0gZnVuY3Rpb24gKGNvbnRyb2wsIGxheWVySWQpIHsKICB0aGlzLmNvbnRyb2xzLmFkZChjb250cm9sLCBsYXllcklkKTsKfTsKCm1ldGhvZHMucmVtb3ZlQ29udHJvbCA9IGZ1bmN0aW9uIChsYXllcklkKSB7CiAgdGhpcy5jb250cm9scy5yZW1vdmUobGF5ZXJJZCk7Cn07CgptZXRob2RzLmdldENvbnRyb2wgPSBmdW5jdGlvbiAobGF5ZXJJZCkgewogIHRoaXMuY29udHJvbHMuZ2V0KGxheWVySWQpOwp9OwoKbWV0aG9kcy5jbGVhckNvbnRyb2xzID0gZnVuY3Rpb24gKCkgewogIHRoaXMuY29udHJvbHMuY2xlYXIoKTsKfTsKCm1ldGhvZHMuYWRkTGVnZW5kID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKICB2YXIgbGVnZW5kID0gX2xlYWZsZXQyWyJkZWZhdWx0Il0uY29udHJvbCh7CiAgICBwb3NpdGlvbjogb3B0aW9ucy5wb3NpdGlvbgogIH0pOwoKICB2YXIgZ3JhZFNwYW47CgogIGxlZ2VuZC5vbkFkZCA9IGZ1bmN0aW9uIChtYXApIHsKICAgIHZhciBkaXYgPSBfbGVhZmxldDJbImRlZmF1bHQiXS5Eb21VdGlsLmNyZWF0ZSgiZGl2Iiwgb3B0aW9ucy5jbGFzc05hbWUpLAogICAgICAgIGNvbG9ycyA9IG9wdGlvbnMuY29sb3JzLAogICAgICAgIGxhYmVscyA9IG9wdGlvbnMubGFiZWxzLAogICAgICAgIGxlZ2VuZEhUTUwgPSAiIjsKCiAgICBpZiAob3B0aW9ucy50eXBlID09PSAibnVtZXJpYyIpIHsKICAgICAgLy8gIyBGb3JtYXR0aW5nIGNvbnN0YW50cy4KICAgICAgdmFyIHNpbmdsZUJpbkhlaWdodCA9IDIwOyAvLyBUaGUgZGlzdGFuY2UgYmV0d2VlbiB0aWNrIG1hcmtzLCBpbiBweAoKICAgICAgdmFyIHZNYXJnaW4gPSA4OyAvLyBJZiAxc3QgdGljayBtYXJrIHN0YXJ0cyBhdCB0b3Agb2YgZ3JhZGllbnQsIGhvdwogICAgICAvLyBtYW55IGV4dHJhIHB4IGFyZSBuZWVkZWQgZm9yIHRoZSB0b3AgaGFsZiBvZiB0aGUKICAgICAgLy8gMXN0IGxhYmVsPyAoZGl0dG8gZm9yIGxhc3QgdGljayBtYXJrL2xhYmVsKQoKICAgICAgdmFyIHRpY2tXaWR0aCA9IDQ7IC8vIEhvdyB3aWRlIHNob3VsZCB0aWNrIG1hcmtzIGJlLCBpbiBweD8KCiAgICAgIHZhciBsYWJlbFBhZGRpbmcgPSA2OyAvLyBIb3cgbXVjaCBkaXN0YW5jZSB0byByZXNlcnZlIGZvciB0aWNrIG1hcms/CiAgICAgIC8vIChNdXN0IGJlID49IHRpY2tXaWR0aCkKICAgICAgLy8gIyBEZXJpdmVkIGZvcm1hdHRpbmcgcGFyYW1ldGVycy4KICAgICAgLy8gV2hhdCdzIHRoZSBoZWlnaHQgb2YgYSBzaW5nbGUgYmluLCBpbiBwZXJjZW50YWdlIChvZiBncmFkaWVudCBoZWlnaHQpPwogICAgICAvLyBJdCBtaWdodCBub3QganVzdCBiZSAxLyhuLTEpLCBpZiB0aGUgZ3JhZGllbnQgZXh0ZW5kcyBwYXN0IHRoZSB0aWNrCiAgICAgIC8vIG1hcmtzICh3aGljaCBjYW4gYmUgdGhlIGNhc2UgZm9yIHByZXR0eSBjdXQgcG9pbnRzKS4KCiAgICAgIHZhciBzaW5nbGVCaW5QY3QgPSAob3B0aW9ucy5leHRyYS5wX24gLSBvcHRpb25zLmV4dHJhLnBfMSkgLyAobGFiZWxzLmxlbmd0aCAtIDEpOyAvLyBFYWNoIGJpbiBpcyBgc2luZ2xlQmluSGVpZ2h0YCBoaWdoLiBIb3cgdGFsbCBpcyB0aGUgZ3JhZGllbnQ/CgogICAgICB2YXIgdG90YWxIZWlnaHQgPSAxIC8gc2luZ2xlQmluUGN0ICogc2luZ2xlQmluSGVpZ2h0ICsgMTsgLy8gSG93IGZhciBzaG91bGQgdGhlIGZpcnN0IHRpY2sgYmUgc2hpZnRlZCBkb3duLCByZWxhdGl2ZSB0byB0aGUgdG9wCiAgICAgIC8vIG9mIHRoZSBncmFkaWVudD8KCiAgICAgIHZhciB0aWNrT2Zmc2V0ID0gc2luZ2xlQmluSGVpZ2h0IC8gc2luZ2xlQmluUGN0ICogb3B0aW9ucy5leHRyYS5wXzE7CiAgICAgIGdyYWRTcGFuID0gKDAsIF9qcXVlcnkyWyJkZWZhdWx0Il0pKCI8c3Bhbi8+IikuY3NzKHsKICAgICAgICAiYmFja2dyb3VuZCI6ICJsaW5lYXItZ3JhZGllbnQoIiArIGNvbG9ycyArICIpIiwKICAgICAgICAib3BhY2l0eSI6IG9wdGlvbnMub3BhY2l0eSwKICAgICAgICAiaGVpZ2h0IjogdG90YWxIZWlnaHQgKyAicHgiLAogICAgICAgICJ3aWR0aCI6ICIxOHB4IiwKICAgICAgICAiZGlzcGxheSI6ICJibG9jayIsCiAgICAgICAgIm1hcmdpbi10b3AiOiB2TWFyZ2luICsgInB4IgogICAgICB9KTsKICAgICAgdmFyIGxlZnREaXYgPSAoMCwgX2pxdWVyeTJbImRlZmF1bHQiXSkoIjxkaXYvPiIpLmNzcygiZmxvYXQiLCAibGVmdCIpLAogICAgICAgICAgcmlnaHREaXYgPSAoMCwgX2pxdWVyeTJbImRlZmF1bHQiXSkoIjxkaXYvPiIpLmNzcygiZmxvYXQiLCAibGVmdCIpOwogICAgICBsZWZ0RGl2LmFwcGVuZChncmFkU3Bhbik7CiAgICAgICgwLCBfanF1ZXJ5MlsiZGVmYXVsdCJdKShkaXYpLmFwcGVuZChsZWZ0RGl2KS5hcHBlbmQocmlnaHREaXYpLmFwcGVuZCgoMCwgX2pxdWVyeTJbImRlZmF1bHQiXSkoIjxicj4iKSk7IC8vIEhhdmUgdG8gYXR0YWNoIHRoZSBkaXYgdG8gdGhlIGJvZHkgYXQgdGhpcyBlYXJseSBwb2ludCwgc28gdGhhdCB0aGUKICAgICAgLy8gc3ZnIHRleHQgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgYWN0dWFsbHkgd29ya3MsIGJlbG93LgoKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOwogICAgICB2YXIgbnMgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOwogICAgICB2YXIgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCAic3ZnIik7CiAgICAgIHJpZ2h0RGl2LmFwcGVuZChzdmcpOwogICAgICB2YXIgZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhucywgImciKTsKICAgICAgKDAsIF9qcXVlcnkyWyJkZWZhdWx0Il0pKGcpLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoMCwgIiArIHZNYXJnaW4gKyAiKSIpOwogICAgICBzdmcuYXBwZW5kQ2hpbGQoZyk7IC8vIG1heCBsYWJlbCB3aWR0aCBuZWVkZWQgdG8gc2V0IHdpZHRoIG9mIHN2ZywgYW5kIHJpZ2h0LWp1c3RpZnkgdGV4dAoKICAgICAgdmFyIG1heExibFdpZHRoID0gMDsgLy8gQ3JlYXRlIHRpY2sgbWFya3MgYW5kIGxhYmVscwoKICAgICAgX2pxdWVyeTJbImRlZmF1bHQiXS5lYWNoKGxhYmVscywgZnVuY3Rpb24gKGksIGxhYmVsKSB7CiAgICAgICAgdmFyIHkgPSB0aWNrT2Zmc2V0ICsgaSAqIHNpbmdsZUJpbkhlaWdodCArIDAuNTsKICAgICAgICB2YXIgdGhpc0xhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCAidGV4dCIpOwogICAgICAgICgwLCBfanF1ZXJ5MlsiZGVmYXVsdCJdKSh0aGlzTGFiZWwpLnRleHQobGFiZWxzW2ldKS5hdHRyKCJ5IiwgeSkuYXR0cigiZHgiLCBsYWJlbFBhZGRpbmcpLmF0dHIoImR5IiwgIjAuNWV4Iik7CiAgICAgICAgZy5hcHBlbmRDaGlsZCh0aGlzTGFiZWwpOwogICAgICAgIG1heExibFdpZHRoID0gTWF0aC5tYXgobWF4TGJsV2lkdGgsIHRoaXNMYWJlbC5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSk7CiAgICAgICAgdmFyIHRoaXNUaWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCAibGluZSIpOwogICAgICAgICgwLCBfanF1ZXJ5MlsiZGVmYXVsdCJdKSh0aGlzVGljaykuYXR0cigieDEiLCAwKS5hdHRyKCJ4MiIsIHRpY2tXaWR0aCkuYXR0cigieTEiLCB5KS5hdHRyKCJ5MiIsIHkpLmF0dHIoInN0cm9rZS13aWR0aCIsIDEpOwogICAgICAgIGcuYXBwZW5kQ2hpbGQodGhpc1RpY2spOwogICAgICB9KTsgLy8gTm93IHRoYXQgd2Uga25vdyB0aGUgbWF4IGxhYmVsIHdpZHRoLCB3ZSBjYW4gcmlnaHQtanVzdGlmeQoKCiAgICAgICgwLCBfanF1ZXJ5MlsiZGVmYXVsdCJdKShzdmcpLmZpbmQoInRleHQiKS5hdHRyKCJkeCIsIGxhYmVsUGFkZGluZyArIG1heExibFdpZHRoKS5hdHRyKCJ0ZXh0LWFuY2hvciIsICJlbmQiKTsgLy8gRmluYWwgc2l6ZSBmb3IgPHN2Zz4KCiAgICAgICgwLCBfanF1ZXJ5MlsiZGVmYXVsdCJdKShzdmcpLmNzcyh7CiAgICAgICAgd2lkdGg6IG1heExibFdpZHRoICsgbGFiZWxQYWRkaW5nICsgInB4IiwKICAgICAgICBoZWlnaHQ6IHRvdGFsSGVpZ2h0ICsgdk1hcmdpbiAqIDIgKyAicHgiCiAgICAgIH0pOwoKICAgICAgaWYgKG9wdGlvbnMubmFfY29sb3IgJiYgX2pxdWVyeTJbImRlZmF1bHQiXS5pbkFycmF5KG9wdGlvbnMubmFfbGFiZWwsIGxhYmVscykgPCAwKSB7CiAgICAgICAgKDAsIF9qcXVlcnkyWyJkZWZhdWx0Il0pKGRpdikuYXBwZW5kKCI8ZGl2PjxpIHN0eWxlPVwiIiArICJiYWNrZ3JvdW5kOiIgKyBvcHRpb25zLm5hX2NvbG9yICsgIjtvcGFjaXR5OiIgKyBvcHRpb25zLm9wYWNpdHkgKyAiO21hcmdpbi1yaWdodDoiICsgbGFiZWxQYWRkaW5nICsgInB4IiArICI7XCI+PC9pPiIgKyBvcHRpb25zLm5hX2xhYmVsICsgIjwvZGl2PiIpOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBpZiAob3B0aW9ucy5uYV9jb2xvciAmJiBfanF1ZXJ5MlsiZGVmYXVsdCJdLmluQXJyYXkob3B0aW9ucy5uYV9sYWJlbCwgbGFiZWxzKSA8IDApIHsKICAgICAgICBjb2xvcnMucHVzaChvcHRpb25zLm5hX2NvbG9yKTsKICAgICAgICBsYWJlbHMucHVzaChvcHRpb25zLm5hX2xhYmVsKTsKICAgICAgfQoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBsZWdlbmRIVE1MICs9ICI8aSBzdHlsZT1cImJhY2tncm91bmQ6IiArIGNvbG9yc1tpXSArICI7b3BhY2l0eToiICsgb3B0aW9ucy5vcGFjaXR5ICsgIlwiPjwvaT4gIiArIGxhYmVsc1tpXSArICI8YnI+IjsKICAgICAgfQoKICAgICAgZGl2LmlubmVySFRNTCA9IGxlZ2VuZEhUTUw7CiAgICB9CgogICAgaWYgKG9wdGlvbnMudGl0bGUpICgwLCBfanF1ZXJ5MlsiZGVmYXVsdCJdKShkaXYpLnByZXBlbmQoIjxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOjNweFwiPjxzdHJvbmc+IiArIG9wdGlvbnMudGl0bGUgKyAiPC9zdHJvbmc+PC9kaXY+Iik7CiAgICByZXR1cm4gZGl2OwogIH07CgogIGlmIChvcHRpb25zLmdyb3VwKSB7CiAgICAvLyBBdXRvIGdlbmVyYXRlIGEgbGF5ZXJJRCBpZiBub3QgcHJvdmlkZWQKICAgIGlmICghb3B0aW9ucy5sYXllcklkKSB7CiAgICAgIG9wdGlvbnMubGF5ZXJJZCA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLlV0aWwuc3RhbXAobGVnZW5kKTsKICAgIH0KCiAgICB2YXIgbWFwID0gdGhpczsKICAgIG1hcC5vbigib3ZlcmxheWFkZCIsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGlmIChlLm5hbWUgPT09IG9wdGlvbnMuZ3JvdXApIHsKICAgICAgICBtYXAuY29udHJvbHMuYWRkKGxlZ2VuZCwgb3B0aW9ucy5sYXllcklkKTsKICAgICAgfQogICAgfSk7CiAgICBtYXAub24oIm92ZXJsYXlyZW1vdmUiLCBmdW5jdGlvbiAoZSkgewogICAgICBpZiAoZS5uYW1lID09PSBvcHRpb25zLmdyb3VwKSB7CiAgICAgICAgbWFwLmNvbnRyb2xzLnJlbW92ZShvcHRpb25zLmxheWVySWQpOwogICAgICB9CiAgICB9KTsKICAgIG1hcC5vbigiZ3JvdXBhZGQiLCBmdW5jdGlvbiAoZSkgewogICAgICBpZiAoZS5uYW1lID09PSBvcHRpb25zLmdyb3VwKSB7CiAgICAgICAgbWFwLmNvbnRyb2xzLmFkZChsZWdlbmQsIG9wdGlvbnMubGF5ZXJJZCk7CiAgICAgIH0KICAgIH0pOwogICAgbWFwLm9uKCJncm91cHJlbW92ZSIsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGlmIChlLm5hbWUgPT09IG9wdGlvbnMuZ3JvdXApIHsKICAgICAgICBtYXAuY29udHJvbHMucmVtb3ZlKG9wdGlvbnMubGF5ZXJJZCk7CiAgICAgIH0KICAgIH0pOwogIH0KCiAgdGhpcy5jb250cm9scy5hZGQobGVnZW5kLCBvcHRpb25zLmxheWVySWQpOwp9OwoKbWV0aG9kcy5hZGRMYXllcnNDb250cm9sID0gZnVuY3Rpb24gKGJhc2VHcm91cHMsIG92ZXJsYXlHcm91cHMsIG9wdGlvbnMpIHsKICB2YXIgX3RoaXM0ID0gdGhpczsKCiAgLy8gT25seSBhbGxvdyBvbmUgbGF5ZXJzIGNvbnRyb2wgYXQgYSB0aW1lCiAgbWV0aG9kcy5yZW1vdmVMYXllcnNDb250cm9sLmNhbGwodGhpcyk7CiAgdmFyIGZpcnN0TGF5ZXIgPSB0cnVlOwogIHZhciBiYXNlID0ge307CgogIF9qcXVlcnkyWyJkZWZhdWx0Il0uZWFjaCgoMCwgX3V0aWwuYXNBcnJheSkoYmFzZUdyb3VwcyksIGZ1bmN0aW9uIChpLCBnKSB7CiAgICB2YXIgbGF5ZXIgPSBfdGhpczQubGF5ZXJNYW5hZ2VyLmdldExheWVyR3JvdXAoZywgdHJ1ZSk7CgogICAgaWYgKGxheWVyKSB7CiAgICAgIGJhc2VbZ10gPSBsYXllcjsgLy8gQ2hlY2sgaWYgPjEgYmFzZSBsYXllcnMgYXJlIHZpc2libGU7IGlmIHNvLCBoaWRlIGFsbCBidXQgdGhlIGZpcnN0IG9uZQoKICAgICAgaWYgKF90aGlzNC5oYXNMYXllcihsYXllcikpIHsKICAgICAgICBpZiAoZmlyc3RMYXllcikgewogICAgICAgICAgZmlyc3RMYXllciA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfdGhpczQucmVtb3ZlTGF5ZXIobGF5ZXIpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0pOwoKICB2YXIgb3ZlcmxheSA9IHt9OwoKICBfanF1ZXJ5MlsiZGVmYXVsdCJdLmVhY2goKDAsIF91dGlsLmFzQXJyYXkpKG92ZXJsYXlHcm91cHMpLCBmdW5jdGlvbiAoaSwgZykgewogICAgdmFyIGxheWVyID0gX3RoaXM0LmxheWVyTWFuYWdlci5nZXRMYXllckdyb3VwKGcsIHRydWUpOwoKICAgIGlmIChsYXllcikgewogICAgICBvdmVybGF5W2ddID0gbGF5ZXI7CiAgICB9CiAgfSk7CgogIHRoaXMuY3VycmVudExheWVyc0NvbnRyb2wgPSBfbGVhZmxldDJbImRlZmF1bHQiXS5jb250cm9sLmxheWVycyhiYXNlLCBvdmVybGF5LCBvcHRpb25zKTsKICB0aGlzLmFkZENvbnRyb2wodGhpcy5jdXJyZW50TGF5ZXJzQ29udHJvbCk7Cn07CgptZXRob2RzLnJlbW92ZUxheWVyc0NvbnRyb2wgPSBmdW5jdGlvbiAoKSB7CiAgaWYgKHRoaXMuY3VycmVudExheWVyc0NvbnRyb2wpIHsKICAgIHRoaXMucmVtb3ZlQ29udHJvbCh0aGlzLmN1cnJlbnRMYXllcnNDb250cm9sKTsKICAgIHRoaXMuY3VycmVudExheWVyc0NvbnRyb2wgPSBudWxsOwogIH0KfTsKCm1ldGhvZHMuYWRkU2NhbGVCYXIgPSBmdW5jdGlvbiAob3B0aW9ucykgewogIC8vIE9ubHkgYWxsb3cgb25lIHNjYWxlIGJhciBhdCBhIHRpbWUKICBtZXRob2RzLnJlbW92ZVNjYWxlQmFyLmNhbGwodGhpcyk7CgogIHZhciBzY2FsZUJhciA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLmNvbnRyb2wuc2NhbGUob3B0aW9ucykuYWRkVG8odGhpcyk7CgogIHRoaXMuY3VycmVudFNjYWxlQmFyID0gc2NhbGVCYXI7Cn07CgptZXRob2RzLnJlbW92ZVNjYWxlQmFyID0gZnVuY3Rpb24gKCkgewogIGlmICh0aGlzLmN1cnJlbnRTY2FsZUJhcikgewogICAgdGhpcy5jdXJyZW50U2NhbGVCYXIucmVtb3ZlKCk7CiAgICB0aGlzLmN1cnJlbnRTY2FsZUJhciA9IG51bGw7CiAgfQp9OwoKbWV0aG9kcy5oaWRlR3JvdXAgPSBmdW5jdGlvbiAoZ3JvdXApIHsKICB2YXIgX3RoaXM1ID0gdGhpczsKCiAgX2pxdWVyeTJbImRlZmF1bHQiXS5lYWNoKCgwLCBfdXRpbC5hc0FycmF5KShncm91cCksIGZ1bmN0aW9uIChpLCBnKSB7CiAgICB2YXIgbGF5ZXIgPSBfdGhpczUubGF5ZXJNYW5hZ2VyLmdldExheWVyR3JvdXAoZywgdHJ1ZSk7CgogICAgaWYgKGxheWVyKSB7CiAgICAgIF90aGlzNS5yZW1vdmVMYXllcihsYXllcik7CiAgICB9CiAgfSk7Cn07CgptZXRob2RzLnNob3dHcm91cCA9IGZ1bmN0aW9uIChncm91cCkgewogIHZhciBfdGhpczYgPSB0aGlzOwoKICBfanF1ZXJ5MlsiZGVmYXVsdCJdLmVhY2goKDAsIF91dGlsLmFzQXJyYXkpKGdyb3VwKSwgZnVuY3Rpb24gKGksIGcpIHsKICAgIHZhciBsYXllciA9IF90aGlzNi5sYXllck1hbmFnZXIuZ2V0TGF5ZXJHcm91cChnLCB0cnVlKTsKCiAgICBpZiAobGF5ZXIpIHsKICAgICAgX3RoaXM2LmFkZExheWVyKGxheWVyKTsKICAgIH0KICB9KTsKfTsKCmZ1bmN0aW9uIHNldHVwU2hvd0hpZGVHcm91cHNPblpvb20obWFwKSB7CiAgaWYgKG1hcC5sZWFmbGV0ci5faGFzSW5pdGlhbGl6ZWRTaG93SGlkZUdyb3VwcykgewogICAgcmV0dXJuOwogIH0KCiAgbWFwLmxlYWZsZXRyLl9oYXNJbml0aWFsaXplZFNob3dIaWRlR3JvdXBzID0gdHJ1ZTsKCiAgZnVuY3Rpb24gc2V0VmlzaWJpbGl0eShsYXllciwgdmlzaWJsZSwgZ3JvdXApIHsKICAgIGlmICh2aXNpYmxlICE9PSBtYXAuaGFzTGF5ZXIobGF5ZXIpKSB7CiAgICAgIGlmICh2aXNpYmxlKSB7CiAgICAgICAgbWFwLmFkZExheWVyKGxheWVyKTsKICAgICAgICBtYXAuZmlyZSgiZ3JvdXBhZGQiLCB7CiAgICAgICAgICAibmFtZSI6IGdyb3VwLAogICAgICAgICAgImxheWVyIjogbGF5ZXIKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBtYXAucmVtb3ZlTGF5ZXIobGF5ZXIpOwogICAgICAgIG1hcC5maXJlKCJncm91cHJlbW92ZSIsIHsKICAgICAgICAgICJuYW1lIjogZ3JvdXAsCiAgICAgICAgICAibGF5ZXIiOiBsYXllcgogICAgICAgIH0pOwogICAgICB9CiAgICB9CiAgfQoKICBmdW5jdGlvbiBzaG93SGlkZUdyb3Vwc09uWm9vbSgpIHsKICAgIGlmICghbWFwLmxheWVyTWFuYWdlcikgcmV0dXJuOwogICAgdmFyIHpvb20gPSBtYXAuZ2V0Wm9vbSgpOwogICAgbWFwLmxheWVyTWFuYWdlci5nZXRBbGxHcm91cE5hbWVzKCkuZm9yRWFjaChmdW5jdGlvbiAoZ3JvdXApIHsKICAgICAgdmFyIGxheWVyID0gbWFwLmxheWVyTWFuYWdlci5nZXRMYXllckdyb3VwKGdyb3VwLCBmYWxzZSk7CgogICAgICBpZiAobGF5ZXIgJiYgdHlwZW9mIGxheWVyLnpvb21MZXZlbHMgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgc2V0VmlzaWJpbGl0eShsYXllciwgbGF5ZXIuem9vbUxldmVscyA9PT0gdHJ1ZSB8fCBsYXllci56b29tTGV2ZWxzLmluZGV4T2Yoem9vbSkgPj0gMCwgZ3JvdXApOwogICAgICB9CiAgICB9KTsKICB9CgogIG1hcC5zaG93SGlkZUdyb3Vwc09uWm9vbSA9IHNob3dIaWRlR3JvdXBzT25ab29tOwogIG1hcC5vbigiem9vbWVuZCIsIHNob3dIaWRlR3JvdXBzT25ab29tKTsKfQoKbWV0aG9kcy5zZXRHcm91cE9wdGlvbnMgPSBmdW5jdGlvbiAoZ3JvdXAsIG9wdGlvbnMpIHsKICB2YXIgX3RoaXM3ID0gdGhpczsKCiAgX2pxdWVyeTJbImRlZmF1bHQiXS5lYWNoKCgwLCBfdXRpbC5hc0FycmF5KShncm91cCksIGZ1bmN0aW9uIChpLCBnKSB7CiAgICB2YXIgbGF5ZXIgPSBfdGhpczcubGF5ZXJNYW5hZ2VyLmdldExheWVyR3JvdXAoZywgdHJ1ZSk7IC8vIFRoaXMgc2xpZ2h0bHkgdG9ydHVyZWQgY2hlY2sgaXMgYmVjYXVzZSAwIGlzIGEgdmFsaWQgdmFsdWUgZm9yIHpvb21MZXZlbHMKCgogICAgaWYgKHR5cGVvZiBvcHRpb25zLnpvb21MZXZlbHMgIT09ICJ1bmRlZmluZWQiICYmIG9wdGlvbnMuem9vbUxldmVscyAhPT0gbnVsbCkgewogICAgICBsYXllci56b29tTGV2ZWxzID0gKDAsIF91dGlsLmFzQXJyYXkpKG9wdGlvbnMuem9vbUxldmVscyk7CiAgICB9CiAgfSk7CgogIHNldHVwU2hvd0hpZGVHcm91cHNPblpvb20odGhpcyk7CiAgdGhpcy5zaG93SGlkZUdyb3Vwc09uWm9vbSgpOwp9OwoKbWV0aG9kcy5hZGRSYXN0ZXJJbWFnZSA9IGZ1bmN0aW9uICh1cmksIGJvdW5kcywgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMpIHsKICAvLyB1cmkgaXMgYSBkYXRhIFVSSSBjb250YWluaW5nIGFuIGltYWdlLiBXZSB3YW50IHRvIHBhaW50IHRoaXMgaW1hZ2UgYXMgYQogIC8vIGxheWVyIGF0ICh0b3AtbGVmdCkgYm91bmRzWzBdIHRvIChib3R0b20tcmlnaHQpIGJvdW5kc1sxXS4KICAvLyBXZSBjYW4ndCBzaW1wbHkgdXNlIEltYWdlT3ZlcmxheSwgYXMgaXQgdXNlcyBiaWxpbmVhciBzY2FsaW5nIHdoaWNoIGxvb2tzCiAgLy8gYXdmdWwgYXMgeW91IHpvb20gaW4gKGFuZCBzb21ldGltZXMgc2hpZnRzIHBvc2l0aW9ucyBvciBkaXNhcHBlYXJzKS4KICAvLyBJbnN0ZWFkLCB3ZSdsbCB1c2UgYSBUaWxlTGF5ZXIuQ2FudmFzIHRvIGRyYXcgcGllY2VzIG9mIHRoZSBpbWFnZS4KICAvLyBGaXJzdCwgc29tZSBoZWxwZXIgZnVuY3Rpb25zLgogIC8vIGRlZ3JlZTJ0aWxlIGNvbnZlcnRzIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFuZCB6b29tIHRvIHggYW5kIHkgdGlsZQogIC8vIG51bWJlcnMuIFRoZSB0aWxlIG51bWJlcnMgcmV0dXJuZWQgY2FuIGJlIG5vbi1pbnRlZ3JhbCwgYXMgdGhlcmUncyBubwogIC8vIHJlYXNvbiB0byBleHBlY3QgdGhhdCB0aGUgbGF0L2xuZyBpbnB1dHMgYXJlIGV4YWN0bHkgb24gdGhlIGJvcmRlciBvZiB0d28KICAvLyB0aWxlcy4KICAvLwogIC8vIFdlJ2xsIHVzZSB0aGlzIHRvIGNvbnZlcnQgdGhlIGJvdW5kcyB3ZSBnb3QgZnJvbSB0aGUgc2VydmVyLCBpbnRvIGNvb3JkcwogIC8vIGluIHRpbGUtc3BhY2UgYXQgYSBnaXZlbiB6b29tIGxldmVsLiBOb3RlIHRoYXQgb25jZSB3ZSBkbyB0aGUgY29udmVyc2lvbiwKICAvLyB3ZSBkb24ndCB0byBkbyBhbnkgbW9yZSB0cmlnb25vbWV0cnkgdG8gY29udmVydCBiZXR3ZWVuIHBpeGVsIGNvb3JkaW5hdGVzCiAgLy8gYW5kIHRpbGUgY29vcmRpbmF0ZXM7IHRoZSBzb3VyY2UgaW1hZ2UgcGl4ZWwgY29vcmRzLCBkZXN0aW5hdGlvbiBjYW52YXMKICAvLyBwaXhlbCBjb29yZHMsIGFuZCB0aWxlIGNvb3JkcyBhbGwgY2FuIGJlIHNjYWxlZCBsaW5lYXJseS4KICBmdW5jdGlvbiBkZWdyZWUydGlsZShsYXQsIGxuZywgem9vbSkgewogICAgLy8gU2VlIGh0dHA6Ly93aWtpLm9wZW5zdHJlZXRtYXAub3JnL3dpa2kvU2xpcHB5X21hcF90aWxlbmFtZXMKICAgIHZhciBsYXRSYWQgPSBsYXQgKiBNYXRoLlBJIC8gMTgwOwogICAgdmFyIG4gPSBNYXRoLnBvdygyLCB6b29tKTsKICAgIHZhciB4ID0gKGxuZyArIDE4MCkgLyAzNjAgKiBuOwogICAgdmFyIHkgPSAoMSAtIE1hdGgubG9nKE1hdGgudGFuKGxhdFJhZCkgKyAxIC8gTWF0aC5jb3MobGF0UmFkKSkgLyBNYXRoLlBJKSAvIDIgKiBuOwogICAgcmV0dXJuIHsKICAgICAgeDogeCwKICAgICAgeTogeQogICAgfTsKICB9IC8vIEdpdmVuIGEgcmFuZ2UgW2Zyb20sdG8pIGFuZCBlaXRoZXIgb25lIG9yIHR3byBudW1iZXJzLCByZXR1cm5zIHRydWUgaWYKICAvLyB0aGVyZSBpcyBhbnkgb3ZlcmxhcCBiZXR3ZWVuIFt4LHgxKSBhbmQgdGhlIHJhbmdlLS1vciBpZiB4MSBpcyBvbWl0dGVkLAogIC8vIHRoZW4gcmV0dXJucyB0cnVlIGlmIHggaXMgd2l0aGluIFtmcm9tLHRvKS4KCgogIGZ1bmN0aW9uIG92ZXJsYXAoZnJvbSwgdG8sIHgsCiAgLyogb3B0aW9uYWwgKi8KICB4MSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgeDEgPSB4OwogICAgcmV0dXJuIHggPCB0byAmJiB4MSA+PSBmcm9tOwogIH0KCiAgZnVuY3Rpb24gZ2V0Q2FudmFzU21vb3RoaW5nUHJvcGVydHkoY3R4KSB7CiAgICB2YXIgY2FuZGlkYXRlcyA9IFsiaW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwgIm1vekltYWdlU21vb3RoaW5nRW5hYmxlZCIsICJ3ZWJraXRJbWFnZVNtb290aGluZ0VuYWJsZWQiLCAibXNJbWFnZVNtb290aGluZ0VuYWJsZWQiXTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbmRpZGF0ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHR5cGVvZiBjdHhbY2FuZGlkYXRlc1tpXV0gIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZXNbaV07CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbnVsbDsKICB9IC8vIE91ciBnZW5lcmFsIHN0cmF0ZWd5IGlzIHRvOgogIC8vIDEuIExvYWQgdGhlIGRhdGEgVVJJIGluIGFuIEltYWdlKCkgb2JqZWN0LCBzbyB3ZSBjYW4gZ2V0IGl0cyBwaXhlbAogIC8vICAgIGRpbWVuc2lvbnMgYW5kIHRoZSB1bmRlcmx5aW5nIGltYWdlIGRhdGEuIChXZSBjb3VsZCBoYXZlIGRvbmUgdGhpcwogIC8vICAgIGJ5IG5vdCBlbmNvZGluZyBhcyBQTkcgYXQgYWxsIGJ1dCBqdXN0IHNlbmQgYW4gYXJyYXkgb2YgUkdCQSB2YWx1ZXMKICAvLyAgICBmcm9tIHRoZSBzZXJ2ZXIsIGJ1dCB0aGF0IHdvdWxkIGluZmxhdGUgdGhlIEpTT04gdG9vIG11Y2guKQogIC8vIDIuIENyZWF0ZSBhIGhpZGRlbiBjYW52YXMgdGhhdCB3ZSB1c2UganVzdCB0byBleHRyYWN0IHRoZSBpbWFnZSBkYXRhCiAgLy8gICAgZnJvbSB0aGUgSW1hZ2UgKHVzaW5nIENvbnRleHQyRC5nZXRJbWFnZURhdGEoKSkuCiAgLy8gMy4gQ3JlYXRlIGEgVGlsZUxheWVyLkNhbnZhcyBhbmQgYWRkIGl0IHRvIHRoZSBtYXAuCiAgLy8gV2Ugd2FudCB0byBzeW5jaHJvbm91c2x5IGNyZWF0ZSBhbmQgYXR0YWNoIHRoZSBUaWxlTGF5ZXIuQ2FudmFzIChzbyBhbgogIC8vIGltbWVkaWF0ZSBjYWxsIHRvIGNsZWFyUmFzdGVycygpIHdpbGwgYmUgcmVzcGVjdGVkLCBmb3IgZXhhbXBsZSksIGJ1dAogIC8vIEltYWdlIGxvYWRzIGl0cyBkYXRhIGFzeW5jaHJvbm91c2x5LiBGb3J0dW5hdGVseSB3ZSBjYW4gcmVzb2x2ZSB0aGlzCiAgLy8gYnkgcHV0dGluZyBUaWxlTGF5ZXIuQ2FudmFzIGludG8gYXN5bmMgbW9kZSwgd2hpY2ggd2lsbCBsZXQgdXMgY3JlYXRlCiAgLy8gYW5kIGF0dGFjaCB0aGUgbGF5ZXIgYnV0IGhhdmUgaXQgd2FpdCB1bnRpbCB0aGUgaW1hZ2UgaXMgbG9hZGVkIGJlZm9yZQogIC8vIGl0IGFjdHVhbGx5IGRyYXdzIGFueXRoaW5nLgogIC8vIFRoZXNlIGFyZSB0aGUgdmFyaWFibGVzIHRoYXQgd2Ugd2lsbCBwb3B1bGF0ZSBvbmNlIHRoZSBpbWFnZSBpcyBsb2FkZWQuCgoKICB2YXIgaW1nRGF0YSA9IG51bGw7IC8vIDFkIHJvdy1tYWpvciBhcnJheSwgZm91ciBbMC0yNTVdIGludGVnZXJzIHBlciBwaXhlbAoKICB2YXIgaW1nRGF0YU1pcE1hcHBlciA9IG51bGw7CiAgdmFyIHcgPSBudWxsOyAvLyBpbWFnZSB3aWR0aCBpbiBwaXhlbHMKCiAgdmFyIGggPSBudWxsOyAvLyBpbWFnZSBoZWlnaHQgaW4gcGl4ZWxzCiAgLy8gV2UnbGwgdXNlIHRoaXMgYXJyYXkgdG8gc3RvcmUgY2FsbGJhY2tzIHRoYXQgbmVlZCB0byBiZSBpbnZva2VkIG9uY2UKICAvLyBpbWdEYXRhLCB3LCBhbmQgaCBoYXZlIGJlZW4gcmVzb2x2ZWQuCgogIHZhciBpbWdEYXRhQ2FsbGJhY2tzID0gW107IC8vIENvbnN1bWVycyBvZiBpbWdEYXRhLCB3LCBhbmQgaCBjYW4gY2FsbCB0aGlzIHRvIGJlIG5vdGlmaWVkIHdoZW4gZGF0YQogIC8vIGlzIGF2YWlsYWJsZS4KCiAgZnVuY3Rpb24gZ2V0SW1hZ2VEYXRhKGNhbGxiYWNrKSB7CiAgICBpZiAoaW1nRGF0YSAhPSBudWxsKSB7CiAgICAgIC8vIE11c3Qgbm90IGludm9rZSB0aGUgY2FsbGJhY2sgaW1tZWRpYXRlbHk7IGl0J3MgdG9vIGNvbmZ1c2luZyBhbmQKICAgICAgLy8gZnJhZ2lsZSB0byBoYXZlIGEgZnVuY3Rpb24gaW52b2tlIHRoZSBjYWxsYmFjayAqZWl0aGVyKiBpbW1lZGlhdGVseQogICAgICAvLyBvciBpbiB0aGUgZnV0dXJlLiBCZXR0ZXIgdG8gYmUgY29uc2lzdGVudCBoZXJlLgogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBjYWxsYmFjayhpbWdEYXRhLCB3LCBoLCBpbWdEYXRhTWlwTWFwcGVyKTsKICAgICAgfSwgMCk7CiAgICB9IGVsc2UgewogICAgICBpbWdEYXRhQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgfQogIH0KCiAgdmFyIGltZyA9IG5ldyBJbWFnZSgpOwoKICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgLy8gU2F2ZSBzaXplCiAgICB3ID0gaW1nLndpZHRoOwogICAgaCA9IGltZy5oZWlnaHQ7IC8vIENyZWF0ZSBhIGR1bW15IGNhbnZhcyB0byBleHRyYWN0IHRoZSBpbWFnZSBkYXRhCgogICAgdmFyIGltZ0RhdGFDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKICAgIGltZ0RhdGFDYW52YXMud2lkdGggPSB3OwogICAgaW1nRGF0YUNhbnZhcy5oZWlnaHQgPSBoOwogICAgaW1nRGF0YUNhbnZhcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWdEYXRhQ2FudmFzKTsKICAgIHZhciBpbWdEYXRhQ3R4ID0gaW1nRGF0YUNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwogICAgaW1nRGF0YUN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwKTsgLy8gU2F2ZSB0aGUgaW1hZ2UgZGF0YS4KCiAgICBpbWdEYXRhID0gaW1nRGF0YUN0eC5nZXRJbWFnZURhdGEoMCwgMCwgdywgaCkuZGF0YTsKICAgIGltZ0RhdGFNaXBNYXBwZXIgPSBuZXcgX21pcG1hcHBlcjJbImRlZmF1bHQiXShpbWcpOyAvLyBEb25lIHdpdGggdGhlIGNhbnZhcywgcmVtb3ZlIGl0IGZyb20gdGhlIHBhZ2Ugc28gaXQgY2FuIGJlIGdjJ2QuCgogICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpbWdEYXRhQ2FudmFzKTsgLy8gQWxlcnQgYW55IGdldEltYWdlRGF0YSBjYWxsZXJzIHdobyBhcmUgd2FpdGluZy4KCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGltZ0RhdGFDYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgaW1nRGF0YUNhbGxiYWNrc1tpXShpbWdEYXRhLCB3LCBoLCBpbWdEYXRhTWlwTWFwcGVyKTsKICAgIH0KCiAgICBpbWdEYXRhQ2FsbGJhY2tzID0gW107CiAgfTsKCiAgaW1nLnNyYyA9IHVyaTsKCiAgdmFyIGNhbnZhc1RpbGVzID0gX2xlYWZsZXQyWyJkZWZhdWx0Il0uZ3JpZExheWVyKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMsIHsKICAgIGRldGVjdFJldGluYTogdHJ1ZSwKICAgIGFzeW5jOiB0cnVlCiAgfSkpOyAvLyBOT1RFOiBUaGUgZG9uZSgpIGZ1bmN0aW9uIE1VU1QgTk9UIGJlIGludm9rZWQgdW50aWwgYWZ0ZXIgdGhlIGN1cnJlbnQKICAvLyB0aWNrOyBkb25lKCkgbG9va3MgaW4gTGVhZmxldCdzIHRpbGUgY2FjaGUgZm9yIHRoZSBjdXJyZW50IHRpbGUsIGFuZAogIC8vIHNpbmNlIGl0J3Mgc3RpbGwgYmVpbmcgY29uc3RydWN0ZWQsIGl0IHdvbid0IGJlIGZvdW5kLgoKCiAgY2FudmFzVGlsZXMuY3JlYXRlVGlsZSA9IGZ1bmN0aW9uICh0aWxlUG9pbnQsIGRvbmUpIHsKICAgIHZhciB6b29tID0gdGlsZVBvaW50Lno7CgogICAgdmFyIGNhbnZhcyA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLkRvbVV0aWwuY3JlYXRlKCJjYW52YXMiKTsKCiAgICB2YXIgZXJyb3I7IC8vIHNldHVwIHRpbGUgd2lkdGggYW5kIGhlaWdodCBhY2NvcmRpbmcgdG8gdGhlIG9wdGlvbnMKCiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0VGlsZVNpemUoKTsKICAgIGNhbnZhcy53aWR0aCA9IHNpemUueDsKICAgIGNhbnZhcy5oZWlnaHQgPSBzaXplLnk7CiAgICBnZXRJbWFnZURhdGEoZnVuY3Rpb24gKGltZ0RhdGEsIHcsIGgsIG1pcG1hcHBlcikgewogICAgICB0cnkgewogICAgICAgIC8vIFRoZSBDb250ZXh0MkQgd2UnbGwgYmVpbmcgZHJhd2luZyBvbnRvLiBJdCdzIGFsd2F5cyAyNTZ4MjU2LgogICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsgLy8gQ29udmVydCBvdXIgaW1hZ2UgZGF0YSdzIHRvcC1sZWZ0IGFuZCBib3R0b20tcmlnaHQgbG9jYXRpb25zIGludG8KICAgICAgICAvLyB4L3kgdGlsZSBjb29yZGluYXRlcy4gVGhpcyBpcyBlc3NlbnRpYWxseSBkb2luZyBhIHNwaGVyaWNhbCBtZXJjYXRvcgogICAgICAgIC8vIHByb2plY3Rpb24sIHRoZW4gbXVsdGlwbHlpbmcgYnkgMl56b29tLgoKICAgICAgICB2YXIgdG9wTGVmdCA9IGRlZ3JlZTJ0aWxlKGJvdW5kc1swXVswXSwgYm91bmRzWzBdWzFdLCB6b29tKTsKICAgICAgICB2YXIgYm90dG9tUmlnaHQgPSBkZWdyZWUydGlsZShib3VuZHNbMV1bMF0sIGJvdW5kc1sxXVsxXSwgem9vbSk7IC8vIFRoZSBzaXplIG9mIHRoZSBpbWFnZSBpbiB4L3kgdGlsZSBjb29yZGluYXRlcy4KCiAgICAgICAgdmFyIGV4dGVudCA9IHsKICAgICAgICAgIHg6IGJvdHRvbVJpZ2h0LnggLSB0b3BMZWZ0LngsCiAgICAgICAgICB5OiBib3R0b21SaWdodC55IC0gdG9wTGVmdC55CiAgICAgICAgfTsgLy8gU2hvcnQgY2lyY3VpdCBpZiB0aWxlIGlzIHRvdGFsbHkgZGlzam9pbnQgZnJvbSBpbWFnZS4KCiAgICAgICAgaWYgKCFvdmVybGFwKHRpbGVQb2ludC54LCB0aWxlUG9pbnQueCArIDEsIHRvcExlZnQueCwgYm90dG9tUmlnaHQueCkpIHJldHVybjsKICAgICAgICBpZiAoIW92ZXJsYXAodGlsZVBvaW50LnksIHRpbGVQb2ludC55ICsgMSwgdG9wTGVmdC55LCBib3R0b21SaWdodC55KSkgcmV0dXJuOyAvLyBUaGUgbGluZWFyIHJlc29sdXRpb24gb2YgdGhlIHRpbGUgd2UncmUgZHJhd2luZyBpcyBhbHdheXMgMjU2cHggcGVyIHRpbGUgdW5pdC4KICAgICAgICAvLyBJZiB0aGUgbGluZWFyIHJlc29sdXRpb24gKGluIGVpdGhlciBkaXJlY3Rpb24pIG9mIHRoZSBpbWFnZSBpcyBsZXNzIHRoYW4gMjU2cHgKICAgICAgICAvLyBwZXIgdGlsZSB1bml0LCB0aGVuIHVzZSBuZWFyZXN0IG5laWdoYm9yOyBvdGhlcndpc2UsIHVzZSB0aGUgY2FudmFzJ3MgYnVpbHQtaW4KICAgICAgICAvLyBzY2FsaW5nLgoKICAgICAgICB2YXIgaW1nUmVzID0gewogICAgICAgICAgeDogdyAvIGV4dGVudC54LAogICAgICAgICAgeTogaCAvIGV4dGVudC55CiAgICAgICAgfTsgLy8gV2UgY2FuIGRvIHRoZSBhY3R1YWwgZHJhd2luZyBpbiBvbmUgb2YgdGhyZWUgd2F5czoKICAgICAgICAvLyAtIENhbGwgZHJhd0ltYWdlKCkuIFRoaXMgaXMgZWFzeSBhbmQgZmFzdCwgYW5kIHJlc3VsdHMgaW4gc21vb3RoCiAgICAgICAgLy8gICBpbnRlcnBvbGF0aW9uIChiaWxpbmVhcj8pLiBUaGlzIGlzIHdoYXQgd2Ugd2FudCB3aGVuIHdlIGFyZQogICAgICAgIC8vICAgcmVkdWNpbmcgdGhlIGltYWdlIGZyb20gaXRzIG5hdGl2ZSBzaXplLgogICAgICAgIC8vIC0gQ2FsbCBkcmF3SW1hZ2UoKSB3aXRoIGltYWdlU21vb3RoaW5nRW5hYmxlZD1mYWxzZS4gVGhpcyBpcyBlYXN5CiAgICAgICAgLy8gICBhbmQgZmFzdCBhbmQgZ2l2ZXMgdXMgbmVhcmVzdC1uZWlnaGJvciBpbnRlcnBvbGF0aW9uLCB3aGljaCBpcyB3aGF0CiAgICAgICAgLy8gICB3ZSB3YW50IHdoZW4gZW5sYXJnaW5nIHRoZSBpbWFnZS4gSG93ZXZlciwgaXQncyB1bnN1cHBvcnRlZCBvbiBtYW55CiAgICAgICAgLy8gICBicm93c2VycyAoaW5jbHVkaW5nIFF0V2Via2l0KS4KICAgICAgICAvLyAtIERvIGEgbWFudWFsIG5lYXJlc3QtbmVpZ2hib3IgaW50ZXJwb2xhdGlvbi4gVGhpcyBpcyB3aGF0IHdlJ2xsIGZhbGwKICAgICAgICAvLyAgIGJhY2sgdG8gd2hlbiBlbmxhcmdpbmcsIGFuZCBpbWFnZVNtb290aGluZ0VuYWJsZWQgaXNuJ3Qgc3VwcG9ydGVkLgogICAgICAgIC8vICAgSW4gdGhlb3J5IGl0J3Mgc2xvd2VyLCBidXQgc3RpbGwgcHJldHR5IGZhc3Qgb24gbXkgbWFjaGluZSwgYW5kIHRoZQogICAgICAgIC8vICAgcmVzdWx0cyBsb29rIHRoZSBzYW1lIEFGQUlDVC4KICAgICAgICAvLyBJcyBpbWFnZVNtb290aGluZ0VuYWJsZWQgc3VwcG9ydGVkPyBJZiBzbywgd2UgY2FuIGxldCBjYW52YXMgZG8KICAgICAgICAvLyBuZWFyZXN0LW5laWdoYm9yIGludGVycG9sYXRpb24gZm9yIHVzLgoKICAgICAgICB2YXIgc21vb3RoaW5nUHJvcGVydHkgPSBnZXRDYW52YXNTbW9vdGhpbmdQcm9wZXJ0eShjdHgpOwoKICAgICAgICBpZiAoc21vb3RoaW5nUHJvcGVydHkgfHwgaW1nUmVzLnggPj0gMjU2ICYmIGltZ1Jlcy55ID49IDI1NikgewogICAgICAgICAgLy8gVXNlIGJ1aWx0LWluIHNjYWxpbmcKICAgICAgICAgIC8vIFR1cm4gb2ZmIGFudGktYWxpYXNpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgICBpZiAoc21vb3RoaW5nUHJvcGVydHkpIHsKICAgICAgICAgICAgY3R4W3Ntb290aGluZ1Byb3BlcnR5XSA9IGltZ1Jlcy54ID49IDI1NiAmJiBpbWdSZXMueSA+PSAyNTY7CiAgICAgICAgICB9IC8vIERvbid0IG5lY2Vzc2FyaWx5IGRyYXcgd2l0aCB0aGUgZnVsbC1zaXplIGltYWdlOyBpZiB3ZSdyZQogICAgICAgICAgLy8gZG93bnNjYWxpbmcsIHVzZSB0aGUgbWlwbWFwcGVyIHRvIGdldCBhIHByZS1kb3duc2NhbGVkIGltYWdlCiAgICAgICAgICAvLyAoc2VlIGNvbW1lbnRzIG9uIE1pcG1hcHBlciBjbGFzcyBmb3Igd2h5IHRoaXMgbWF0dGVycykuCgoKICAgICAgICAgIG1pcG1hcHBlci5nZXRCeVNpemUoZXh0ZW50LnggKiAyNTYsIGV4dGVudC55ICogMjU2LCBmdW5jdGlvbiAobWlwKSB7CiAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgaW1hZ2Ugd2lsbCBnbyBvZmYgdGhlIGVkZ2Ugb2YgdGhlIGNhbnZhcy0tCiAgICAgICAgICAgIC8vIHRoYXQncyBPSywgdGhlIGNhbnZhcyBzaG91bGQgY2xpcCBhcHByb3ByaWF0ZWx5LgogICAgICAgICAgICBjdHguZHJhd0ltYWdlKG1pcCwgLy8gQ29udmVydCBhYnMgdGlsZSBjb29yZHMgdG8gcmVsIHRpbGUgY29vcmRzLCB0aGVuICoyNTYgdG8gY29udmVydAogICAgICAgICAgICAvLyB0byByZWwgcGl4ZWwgY29vcmRzCiAgICAgICAgICAgICh0b3BMZWZ0LnggLSB0aWxlUG9pbnQueCkgKiAyNTYsICh0b3BMZWZ0LnkgLSB0aWxlUG9pbnQueSkgKiAyNTYsIC8vIEFsd2F5cyBkcmF3IHRoZSB3aG9sZSB0aGluZyBhbmQgbGV0IGNhbnZhcyBjbGlwOyBzbyB3ZSBjYW4ganVzdAogICAgICAgICAgICAvLyBjb252ZXJ0IGZyb20gc2l6ZSBpbiB0aWxlIGNvb3JkcyBzdHJhaWdodCB0byBwaXhlbHMKICAgICAgICAgICAgZXh0ZW50LnggKiAyNTYsIGV4dGVudC55ICogMjU2KTsKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBVc2UgbWFudWFsIG5lYXJlc3QtbmVpZ2hib3IgaW50ZXJwb2xhdGlvbgogICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UgaW1hZ2UgcGl4ZWwgY29vcmRpbmF0ZXMgdGhhdCBjb3JyZXNwb25kIHdpdGgKICAgICAgICAgIC8vIHRoZSB0b3AtbGVmdCBhbmQgYm90dG9tLXJpZ2h0IG9mIHRoaXMgdGlsZS4gKElmIHRoZSBzb3VyY2UgaW1hZ2UKICAgICAgICAgIC8vIG9ubHkgcGFydGlhbGx5IG92ZXJsYXBzIHRoZSB0aWxlLCB3ZSB1c2UgbWF4L21pbiB0byBsaW1pdCB0aGUKICAgICAgICAgIC8vIHNvdXJjZVN0YXJ0L0VuZCB0byBvbmx5IHJlZmxlY3QgdGhlIG92ZXJsYXBwaW5nIHBvcnRpb24uKQogICAgICAgICAgdmFyIHNvdXJjZVN0YXJ0ID0gewogICAgICAgICAgICB4OiBNYXRoLm1heCgwLCBNYXRoLmZsb29yKCh0aWxlUG9pbnQueCAtIHRvcExlZnQueCkgKiBpbWdSZXMueCkpLAogICAgICAgICAgICB5OiBNYXRoLm1heCgwLCBNYXRoLmZsb29yKCh0aWxlUG9pbnQueSAtIHRvcExlZnQueSkgKiBpbWdSZXMueSkpCiAgICAgICAgICB9OwogICAgICAgICAgdmFyIHNvdXJjZUVuZCA9IHsKICAgICAgICAgICAgeDogTWF0aC5taW4odywgTWF0aC5jZWlsKCh0aWxlUG9pbnQueCArIDEgLSB0b3BMZWZ0LngpICogaW1nUmVzLngpKSwKICAgICAgICAgICAgeTogTWF0aC5taW4oaCwgTWF0aC5jZWlsKCh0aWxlUG9pbnQueSArIDEgLSB0b3BMZWZ0LnkpICogaW1nUmVzLnkpKQogICAgICAgICAgfTsgLy8gVGhlIHNpemUsIGluIGRlc3QgcGl4ZWxzLCB0aGF0IGVhY2ggc291cmNlIHBpeGVsIHNob3VsZCBvY2N1cHkuCiAgICAgICAgICAvLyBUaGlzIG1pZ2h0IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuIDEgKGUuZy4gaWYgeCBhbmQgeSByZXNvbHV0aW9uCiAgICAgICAgICAvLyBhcmUgdmVyeSBkaWZmZXJlbnQpLgoKICAgICAgICAgIHZhciBwaXhlbFNpemUgPSB7CiAgICAgICAgICAgIHg6IDI1NiAvIGltZ1Jlcy54LAogICAgICAgICAgICB5OiAyNTYgLyBpbWdSZXMueQogICAgICAgICAgfTsgLy8gRm9yIGVhY2ggcGl4ZWwgaW4gdGhlIHNvdXJjZSBpbWFnZSB0aGF0IG92ZXJsYXBzIHRoZSB0aWxlLi4uCgogICAgICAgICAgZm9yICh2YXIgcm93ID0gc291cmNlU3RhcnQueTsgcm93IDwgc291cmNlRW5kLnk7IHJvdysrKSB7CiAgICAgICAgICAgIGZvciAodmFyIGNvbCA9IHNvdXJjZVN0YXJ0Lng7IGNvbCA8IHNvdXJjZUVuZC54OyBjb2wrKykgewogICAgICAgICAgICAgIC8vIC4uLmV4dHJhY3QgdGhlIHBpeGVsIGRhdGEuLi4KICAgICAgICAgICAgICB2YXIgaSA9IChyb3cgKiB3ICsgY29sKSAqIDQ7CiAgICAgICAgICAgICAgdmFyIHIgPSBpbWdEYXRhW2ldOwogICAgICAgICAgICAgIHZhciBnID0gaW1nRGF0YVtpICsgMV07CiAgICAgICAgICAgICAgdmFyIGIgPSBpbWdEYXRhW2kgKyAyXTsKICAgICAgICAgICAgICB2YXIgYSA9IGltZ0RhdGFbaSArIDNdOwogICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmdiYSgiICsgW3IsIGcsIGIsIGEgLyAyNTVdLmpvaW4oIiwiKSArICIpIjsgLy8gLi4uY2FsY3VsYXRlIHRoZSBjb3JyZXNwb25kaW5nIHBpeGVsIGNvb3JkIGluIHRoZSBkZXN0IGltYWdlCiAgICAgICAgICAgICAgLy8gd2hlcmUgaXQgc2hvdWxkIGJlIGRyYXduLi4uCgogICAgICAgICAgICAgIHZhciBwaXhlbFBvcyA9IHsKICAgICAgICAgICAgICAgIHg6IChjb2wgLyBpbWdSZXMueCArIHRvcExlZnQueCAtIHRpbGVQb2ludC54KSAqIDI1NiwKICAgICAgICAgICAgICAgIHk6IChyb3cgLyBpbWdSZXMueSArIHRvcExlZnQueSAtIHRpbGVQb2ludC55KSAqIDI1NgogICAgICAgICAgICAgIH07IC8vIC4uLmFuZCBkcmF3IGEgcmVjdGFuZ2xlIHRoZXJlLgoKICAgICAgICAgICAgICBjdHguZmlsbFJlY3QoTWF0aC5yb3VuZChwaXhlbFBvcy54KSwgTWF0aC5yb3VuZChwaXhlbFBvcy55KSwgLy8gTG9va3MgY3JhenksIGJ1dCB0aGlzIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHJvdW5kaW5nIGZyb20KICAgICAgICAgICAgICAvLyBjYXVzaW5nIG92ZXJsYXAgYmV0d2VlbiB0aGlzIHJlY3QgYW5kIGl0cyBuZWlnaGJvcnMuIFRoZQogICAgICAgICAgICAgIC8vIG1pbnVlbmQgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBuZXh0IHBpeGVsLCB3aGlsZSB0aGUKICAgICAgICAgICAgICAvLyBzdWJ0cmFoZW5kIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBwaXhlbCAodG8gdHVybiBhbgogICAgICAgICAgICAgIC8vIGFic29sdXRlIGNvb3JkaW5hdGUgdG8gYSB3aWR0aC9oZWlnaHQpLiBZZXMsIEkgaGFkIHRvIGxvb2sKICAgICAgICAgICAgICAvLyB1cCBtaW51ZW5kIGFuZCBzdWJ0cmFoZW5kLgogICAgICAgICAgICAgIE1hdGgucm91bmQocGl4ZWxQb3MueCArIHBpeGVsU2l6ZS54KSAtIE1hdGgucm91bmQocGl4ZWxQb3MueCksIE1hdGgucm91bmQocGl4ZWxQb3MueSArIHBpeGVsU2l6ZS55KSAtIE1hdGgucm91bmQocGl4ZWxQb3MueSkpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgZXJyb3IgPSBlOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIGRvbmUoZXJyb3IsIGNhbnZhcyk7CiAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIGNhbnZhczsKICB9OwoKICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihjYW52YXNUaWxlcywgImltYWdlIiwgbGF5ZXJJZCwgZ3JvdXApOwp9OwoKbWV0aG9kcy5yZW1vdmVJbWFnZSA9IGZ1bmN0aW9uIChsYXllcklkKSB7CiAgdGhpcy5sYXllck1hbmFnZXIucmVtb3ZlTGF5ZXIoImltYWdlIiwgbGF5ZXJJZCk7Cn07CgptZXRob2RzLmNsZWFySW1hZ2VzID0gZnVuY3Rpb24gKCkgewogIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJpbWFnZSIpOwp9OwoKbWV0aG9kcy5hZGRNZWFzdXJlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAvLyBpZiBhIG1lYXN1cmVDb250cm9sIGFscmVhZHkgZXhpc3RzLCB0aGVuIHJlbW92ZSBpdCBhbmQKICAvLyAgIHJlcGxhY2Ugd2l0aCBhIG5ldyBvbmUKICBtZXRob2RzLnJlbW92ZU1lYXN1cmUuY2FsbCh0aGlzKTsKICB0aGlzLm1lYXN1cmVDb250cm9sID0gX2xlYWZsZXQyWyJkZWZhdWx0Il0uY29udHJvbC5tZWFzdXJlKG9wdGlvbnMpOwogIHRoaXMuYWRkQ29udHJvbCh0aGlzLm1lYXN1cmVDb250cm9sKTsKfTsKCm1ldGhvZHMucmVtb3ZlTWVhc3VyZSA9IGZ1bmN0aW9uICgpIHsKICBpZiAodGhpcy5tZWFzdXJlQ29udHJvbCkgewogICAgdGhpcy5yZW1vdmVDb250cm9sKHRoaXMubWVhc3VyZUNvbnRyb2wpOwogICAgdGhpcy5tZWFzdXJlQ29udHJvbCA9IG51bGw7CiAgfQp9OwoKbWV0aG9kcy5hZGRTZWxlY3QgPSBmdW5jdGlvbiAoY3RHcm91cCkgewogIHZhciBfdGhpczggPSB0aGlzOwoKICBtZXRob2RzLnJlbW92ZVNlbGVjdC5jYWxsKHRoaXMpOwogIHRoaXMuX3NlbGVjdEJ1dHRvbiA9IF9sZWFmbGV0MlsiZGVmYXVsdCJdLmVhc3lCdXR0b24oewogICAgc3RhdGVzOiBbewogICAgICBzdGF0ZU5hbWU6ICJzZWxlY3QtaW5hY3RpdmUiLAogICAgICBpY29uOiAiaW9uLXFyLXNjYW5uZXIiLAogICAgICB0aXRsZTogIk1ha2UgYSBzZWxlY3Rpb24iLAogICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGJ0biwgbWFwKSB7CiAgICAgICAgYnRuLnN0YXRlKCJzZWxlY3QtYWN0aXZlIik7CiAgICAgICAgX3RoaXM4Ll9sb2NhdGlvbkZpbHRlciA9IG5ldyBfbGVhZmxldDJbImRlZmF1bHQiXS5Mb2NhdGlvbkZpbHRlcjIoKTsKCiAgICAgICAgaWYgKGN0R3JvdXApIHsKICAgICAgICAgIHZhciBzZWxlY3Rpb25IYW5kbGUgPSBuZXcgZ2xvYmFsLmNyb3NzdGFsay5TZWxlY3Rpb25IYW5kbGUoY3RHcm91cCk7CiAgICAgICAgICBzZWxlY3Rpb25IYW5kbGUub24oImNoYW5nZSIsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGlmIChlLnNlbmRlciAhPT0gc2VsZWN0aW9uSGFuZGxlKSB7CiAgICAgICAgICAgICAgaWYgKF90aGlzOC5fbG9jYXRpb25GaWx0ZXIpIHsKICAgICAgICAgICAgICAgIF90aGlzOC5fbG9jYXRpb25GaWx0ZXIuZGlzYWJsZSgpOwoKICAgICAgICAgICAgICAgIGJ0bi5zdGF0ZSgic2VsZWN0LWluYWN0aXZlIik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKCiAgICAgICAgICB2YXIgaGFuZGxlciA9IGZ1bmN0aW9uIGhhbmRsZXIoZSkgewogICAgICAgICAgICBfdGhpczgubGF5ZXJNYW5hZ2VyLmJydXNoKF90aGlzOC5fbG9jYXRpb25GaWx0ZXIuZ2V0Qm91bmRzKCksIHsKICAgICAgICAgICAgICBzZW5kZXI6IHNlbGVjdGlvbkhhbmRsZQogICAgICAgICAgICB9KTsKICAgICAgICAgIH07CgogICAgICAgICAgX3RoaXM4Ll9sb2NhdGlvbkZpbHRlci5vbigiZW5hYmxlZCIsIGhhbmRsZXIpOwoKICAgICAgICAgIF90aGlzOC5fbG9jYXRpb25GaWx0ZXIub24oImNoYW5nZSIsIGhhbmRsZXIpOwoKICAgICAgICAgIF90aGlzOC5fbG9jYXRpb25GaWx0ZXIub24oImRpc2FibGVkIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBzZWxlY3Rpb25IYW5kbGUuY2xvc2UoKTsKICAgICAgICAgICAgX3RoaXM4Ll9sb2NhdGlvbkZpbHRlciA9IG51bGw7CiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIF90aGlzOC5fbG9jYXRpb25GaWx0ZXIuYWRkVG8obWFwKTsKICAgICAgfQogICAgfSwgewogICAgICBzdGF0ZU5hbWU6ICJzZWxlY3QtYWN0aXZlIiwKICAgICAgaWNvbjogImlvbi1jbG9zZS1yb3VuZCIsCiAgICAgIHRpdGxlOiAiRGlzbWlzcyBzZWxlY3Rpb24iLAogICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGJ0biwgbWFwKSB7CiAgICAgICAgYnRuLnN0YXRlKCJzZWxlY3QtaW5hY3RpdmUiKTsKCiAgICAgICAgX3RoaXM4Ll9sb2NhdGlvbkZpbHRlci5kaXNhYmxlKCk7IC8vIElmIGV4cGxpY2l0bHkgZGlzbWlzc2VkLCBjbGVhciB0aGUgY3Jvc3N0YWxrIHNlbGVjdGlvbnMKCgogICAgICAgIF90aGlzOC5sYXllck1hbmFnZXIudW5icnVzaCgpOwogICAgICB9CiAgICB9XQogIH0pOwoKICB0aGlzLl9zZWxlY3RCdXR0b24uYWRkVG8odGhpcyk7Cn07CgptZXRob2RzLnJlbW92ZVNlbGVjdCA9IGZ1bmN0aW9uICgpIHsKICBpZiAodGhpcy5fbG9jYXRpb25GaWx0ZXIpIHsKICAgIHRoaXMuX2xvY2F0aW9uRmlsdGVyLmRpc2FibGUoKTsKICB9CgogIGlmICh0aGlzLl9zZWxlY3RCdXR0b24pIHsKICAgIHRoaXMucmVtb3ZlQ29udHJvbCh0aGlzLl9zZWxlY3RCdXR0b24pOwogICAgdGhpcy5fc2VsZWN0QnV0dG9uID0gbnVsbDsKICB9Cn07CgptZXRob2RzLmNyZWF0ZU1hcFBhbmUgPSBmdW5jdGlvbiAobmFtZSwgekluZGV4KSB7CiAgdGhpcy5jcmVhdGVQYW5lKG5hbWUpOwogIHRoaXMuZ2V0UGFuZShuYW1lKS5zdHlsZS56SW5kZXggPSB6SW5kZXg7Cn07CgoKfSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHt9KQp9LHsiLi9jbHVzdGVyLWxheWVyLXN0b3JlIjoxLCIuL2Nyc191dGlscyI6MywiLi9kYXRhZnJhbWUiOjQsIi4vZ2xvYmFsL2h0bWx3aWRnZXRzIjo4LCIuL2dsb2JhbC9qcXVlcnkiOjksIi4vZ2xvYmFsL2xlYWZsZXQiOjEwLCIuL2dsb2JhbC9zaGlueSI6MTIsIi4vbWlwbWFwcGVyIjoxNiwiLi91dGlsIjoxN31dLDE2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKInVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwoKZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9CgpmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfQoKZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH0KCi8vIFRoaXMgY2xhc3Mgc2ltdWxhdGVzIGEgbWlwbWFwLCB3aGljaCBzaHJpbmtzIGltYWdlcyBieSBwb3dlcnMgb2YgdHdvLiBUaGlzCi8vIHN0ZXB3aXNlIHJlZHVjdGlvbiByZXN1bHRzIGluICJwaXhlbC1wZXJmZWN0IGRvd25zY2FsaW5nIiAod2hlcmUgZXZlcnkKLy8gcGl4ZWwgb2YgdGhlIG9yaWdpbmFsIGltYWdlIGhhcyBzb21lIGNvbnRyaWJ1dGlvbiB0byB0aGUgZG93bnNjYWxlZCBpbWFnZSkKLy8gYXMgb3Bwb3NlZCB0byBhIHNpbmdsZS1zdGVwIGRvd25zY2FsaW5nIHdoaWNoIHdpbGwgZGlzY2FyZCBhIGxvdCBvZiBkYXRhCi8vIChhbmQgd2l0aCBzcGFyc2UgaW1hZ2VzIGF0IHNtYWxsIHNjYWxlcyBjYW4gZ2l2ZSB2ZXJ5IHN1cnByaXNpbmcgcmVzdWx0cykuCnZhciBNaXBtYXBwZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIE1pcG1hcHBlcihpbWcpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNaXBtYXBwZXIpOwoKICAgIHRoaXMuX2xheWVycyA9IFtpbWddOwogIH0gLy8gVGhlIHZhcmlvdXMgZnVuY3Rpb25zIG9uIHRoaXMgY2xhc3MgdGFrZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIEJVVCBNQVkgT1IgTUFZCiAgLy8gTk9UIGFjdHVhbGx5IGJlaGF2ZSBhc3luY2hyb25vdXNseS4KCgogIF9jcmVhdGVDbGFzcyhNaXBtYXBwZXIsIFt7CiAgICBrZXk6ICJnZXRCeVNpemUiLAogICAgdmFsdWU6IGZ1bmN0aW9uIGdldEJ5U2l6ZShkZXNpcmVkV2lkdGgsIGRlc2lyZWRIZWlnaHQsIGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICB2YXIgaSA9IDA7CiAgICAgIHZhciBsYXN0SW1nID0gdGhpcy5fbGF5ZXJzWzBdOwoKICAgICAgdmFyIHRlc3ROZXh0ID0gZnVuY3Rpb24gdGVzdE5leHQoKSB7CiAgICAgICAgX3RoaXMuZ2V0QnlJbmRleChpLCBmdW5jdGlvbiAoaW1nKSB7CiAgICAgICAgICAvLyBJZiBjdXJyZW50IGltYWdlIGlzIGludmFsaWQgKGkuZS4gdG9vIHNtYWxsIHRvIGJlIHJlbmRlcmVkKSBvcgogICAgICAgICAgLy8gaXQncyBzbWFsbGVyIHRoYW4gd2hhdCB3ZSB3YW50ZWQsIHJldHVybiB0aGUgbGFzdCBrbm93biBnb29kIGltYWdlLgogICAgICAgICAgaWYgKCFpbWcgfHwgaW1nLndpZHRoIDwgZGVzaXJlZFdpZHRoIHx8IGltZy5oZWlnaHQgPCBkZXNpcmVkSGVpZ2h0KSB7CiAgICAgICAgICAgIGNhbGxiYWNrKGxhc3RJbWcpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsYXN0SW1nID0gaW1nOwogICAgICAgICAgICBpKys7CiAgICAgICAgICAgIHRlc3ROZXh0KCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfTsKCiAgICAgIHRlc3ROZXh0KCk7CiAgICB9CiAgfSwgewogICAga2V5OiAiZ2V0QnlJbmRleCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QnlJbmRleChpLCBjYWxsYmFjaykgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKCiAgICAgIGlmICh0aGlzLl9sYXllcnNbaV0pIHsKICAgICAgICBjYWxsYmFjayh0aGlzLl9sYXllcnNbaV0pOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdGhpcy5nZXRCeUluZGV4KGkgLSAxLCBmdW5jdGlvbiAocHJldkltZykgewogICAgICAgIGlmICghcHJldkltZykgewogICAgICAgICAgLy8gcHJldkltZyBjb3VsZCBub3QgYmUgY2FsY3VsYXRlZCAodG9vIHNtYWxsLCBwb3NzaWJseSkKICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKHByZXZJbWcud2lkdGggPCAyIHx8IHByZXZJbWcuaGVpZ2h0IDwgMikgewogICAgICAgICAgLy8gQ2FuJ3QgcmVkdWNlIHRoaXMgaW1hZ2UgYW55IGZ1cnRoZXIKICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gLy8gSWYgcmVkdWNlIGV2ZXIgYmVjb21lcyB0cnVseSBhc3luY2hyb25vdXMsIHdlIHNob3VsZCBzdHVmZiBhIHByb21pc2Ugb3IKICAgICAgICAvLyBzb21ldGhpbmcgaW50byB0aGlzLl9sYXllcnNbaV0gYmVmb3JlIGNhbGxpbmcgdGhpcy5yZWR1Y2UoKSwgdG8gcHJldmVudAogICAgICAgIC8vIHJlZHVuZGFudCByZWR1Y2Ugb3BlcmF0aW9ucyBmcm9tIGhhcHBlbmluZy4KCgogICAgICAgIF90aGlzMi5yZWR1Y2UocHJldkltZywgZnVuY3Rpb24gKHJlZHVjZWRJbWcpIHsKICAgICAgICAgIF90aGlzMi5fbGF5ZXJzW2ldID0gcmVkdWNlZEltZzsKICAgICAgICAgIGNhbGxiYWNrKHJlZHVjZWRJbWcpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJyZWR1Y2UiLAogICAgdmFsdWU6IGZ1bmN0aW9uIHJlZHVjZShpbWcsIGNhbGxiYWNrKSB7CiAgICAgIHZhciBpbWdEYXRhQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CiAgICAgIGltZ0RhdGFDYW52YXMud2lkdGggPSBNYXRoLmNlaWwoaW1nLndpZHRoIC8gMik7CiAgICAgIGltZ0RhdGFDYW52YXMuaGVpZ2h0ID0gTWF0aC5jZWlsKGltZy5oZWlnaHQgLyAyKTsKICAgICAgaW1nRGF0YUNhbnZhcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZ0RhdGFDYW52YXMpOwoKICAgICAgdHJ5IHsKICAgICAgICB2YXIgaW1nRGF0YUN0eCA9IGltZ0RhdGFDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICBpbWdEYXRhQ3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aCAvIDIsIGltZy5oZWlnaHQgLyAyKTsKICAgICAgICBjYWxsYmFjayhpbWdEYXRhQ2FudmFzKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGltZ0RhdGFDYW52YXMpOwogICAgICB9CiAgICB9CiAgfV0pOwoKICByZXR1cm4gTWlwbWFwcGVyOwp9KCk7CgpleHBvcnRzWyJkZWZhdWx0Il0gPSBNaXBtYXBwZXI7CgoKfSx7fV0sMTc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewoidXNlIHN0cmljdCI7CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CiAgdmFsdWU6IHRydWUKfSk7CmV4cG9ydHMubG9nID0gbG9nOwpleHBvcnRzLnJlY3ljbGUgPSByZWN5Y2xlOwpleHBvcnRzLmFzQXJyYXkgPSBhc0FycmF5OwoKZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovCiAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS5sb2cpIGNvbnNvbGUubG9nKG1lc3NhZ2UpOwogIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqLwp9CgpmdW5jdGlvbiByZWN5Y2xlKHZhbHVlcywgbGVuZ3RoLCBpblBsYWNlKSB7CiAgaWYgKGxlbmd0aCA9PT0gMCAmJiAhaW5QbGFjZSkgcmV0dXJuIFtdOwoKICBpZiAoISh2YWx1ZXMgaW5zdGFuY2VvZiBBcnJheSkpIHsKICAgIGlmIChpblBsYWNlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQ2FuJ3QgZG8gaW4tcGxhY2UgcmVjeWNsaW5nIG9mIGEgbm9uLUFycmF5IHZhbHVlIik7CiAgICB9CgogICAgdmFsdWVzID0gW3ZhbHVlc107CiAgfQoKICBpZiAodHlwZW9mIGxlbmd0aCA9PT0gInVuZGVmaW5lZCIpIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGg7CiAgdmFyIGRlc3QgPSBpblBsYWNlID8gdmFsdWVzIDogW107CiAgdmFyIG9yaWdMZW5ndGggPSB2YWx1ZXMubGVuZ3RoOwoKICB3aGlsZSAoZGVzdC5sZW5ndGggPCBsZW5ndGgpIHsKICAgIGRlc3QucHVzaCh2YWx1ZXNbZGVzdC5sZW5ndGggJSBvcmlnTGVuZ3RoXSk7CiAgfQoKICBpZiAoZGVzdC5sZW5ndGggPiBsZW5ndGgpIHsKICAgIGRlc3Quc3BsaWNlKGxlbmd0aCwgZGVzdC5sZW5ndGggLSBsZW5ndGgpOwogIH0KCiAgcmV0dXJuIGRlc3Q7Cn0KCmZ1bmN0aW9uIGFzQXJyYXkodmFsdWUpIHsKICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIHZhbHVlO2Vsc2UgcmV0dXJuIFt2YWx1ZV07Cn0KCgp9LHt9XX0se30sWzEzXSk7Cjwvc2NyaXB0Pgo8c2NyaXB0PihmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkgewoJaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewoJCS8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS4KCQlkZWZpbmUoWydsZWFmbGV0J10sIGZhY3RvcnkpOwoJfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKCQkvLyBkZWZpbmUgYSBDb21tb24gSlMgbW9kdWxlIHRoYXQgcmVsaWVzIG9uICdsZWFmbGV0JwoJCW1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKCdsZWFmbGV0JykpOwoJfSBlbHNlIHsKCQkvLyBBc3N1bWUgTGVhZmxldCBpcyBsb2FkZWQgaW50byBnbG9iYWwgb2JqZWN0IEwgYWxyZWFkeQoJCWZhY3RvcnkoTCk7Cgl9Cn0odGhpcywgZnVuY3Rpb24gKEwpIHsKCSd1c2Ugc3RyaWN0JzsKCglMLlRpbGVMYXllci5Qcm92aWRlciA9IEwuVGlsZUxheWVyLmV4dGVuZCh7CgkJaW5pdGlhbGl6ZTogZnVuY3Rpb24gKGFyZywgb3B0aW9ucykgewoJCQl2YXIgcHJvdmlkZXJzID0gTC5UaWxlTGF5ZXIuUHJvdmlkZXIucHJvdmlkZXJzOwoKCQkJdmFyIHBhcnRzID0gYXJnLnNwbGl0KCcuJyk7CgoJCQl2YXIgcHJvdmlkZXJOYW1lID0gcGFydHNbMF07CgkJCXZhciB2YXJpYW50TmFtZSA9IHBhcnRzWzFdOwoKCQkJaWYgKCFwcm92aWRlcnNbcHJvdmlkZXJOYW1lXSkgewoJCQkJdGhyb3cgJ05vIHN1Y2ggcHJvdmlkZXIgKCcgKyBwcm92aWRlck5hbWUgKyAnKSc7CgkJCX0KCgkJCXZhciBwcm92aWRlciA9IHsKCQkJCXVybDogcHJvdmlkZXJzW3Byb3ZpZGVyTmFtZV0udXJsLAoJCQkJb3B0aW9uczogcHJvdmlkZXJzW3Byb3ZpZGVyTmFtZV0ub3B0aW9ucwoJCQl9OwoKCQkJLy8gb3ZlcndyaXRlIHZhbHVlcyBpbiBwcm92aWRlciBmcm9tIHZhcmlhbnQuCgkJCWlmICh2YXJpYW50TmFtZSAmJiAndmFyaWFudHMnIGluIHByb3ZpZGVyc1twcm92aWRlck5hbWVdKSB7CgkJCQlpZiAoISh2YXJpYW50TmFtZSBpbiBwcm92aWRlcnNbcHJvdmlkZXJOYW1lXS52YXJpYW50cykpIHsKCQkJCQl0aHJvdyAnTm8gc3VjaCB2YXJpYW50IG9mICcgKyBwcm92aWRlck5hbWUgKyAnICgnICsgdmFyaWFudE5hbWUgKyAnKSc7CgkJCQl9CgkJCQl2YXIgdmFyaWFudCA9IHByb3ZpZGVyc1twcm92aWRlck5hbWVdLnZhcmlhbnRzW3ZhcmlhbnROYW1lXTsKCQkJCXZhciB2YXJpYW50T3B0aW9uczsKCQkJCWlmICh0eXBlb2YgdmFyaWFudCA9PT0gJ3N0cmluZycpIHsKCQkJCQl2YXJpYW50T3B0aW9ucyA9IHsKCQkJCQkJdmFyaWFudDogdmFyaWFudAoJCQkJCX07CgkJCQl9IGVsc2UgewoJCQkJCXZhcmlhbnRPcHRpb25zID0gdmFyaWFudC5vcHRpb25zOwoJCQkJfQoJCQkJcHJvdmlkZXIgPSB7CgkJCQkJdXJsOiB2YXJpYW50LnVybCB8fCBwcm92aWRlci51cmwsCgkJCQkJb3B0aW9uczogTC5VdGlsLmV4dGVuZCh7fSwgcHJvdmlkZXIub3B0aW9ucywgdmFyaWFudE9wdGlvbnMpCgkJCQl9OwoJCQl9CgoJCQkvLyByZXBsYWNlIGF0dHJpYnV0aW9uIHBsYWNlaG9sZGVycyB3aXRoIHRoZWlyIHZhbHVlcyBmcm9tIHRvcGxldmVsIHByb3ZpZGVyIGF0dHJpYnV0aW9uLAoJCQkvLyByZWN1cnNpdmVseQoJCQl2YXIgYXR0cmlidXRpb25SZXBsYWNlciA9IGZ1bmN0aW9uIChhdHRyKSB7CgkJCQlpZiAoYXR0ci5pbmRleE9mKCd7YXR0cmlidXRpb24uJykgPT09IC0xKSB7CgkJCQkJcmV0dXJuIGF0dHI7CgkJCQl9CgkJCQlyZXR1cm4gYXR0ci5yZXBsYWNlKC9ce2F0dHJpYnV0aW9uLihcdyopXH0vZywKCQkJCQlmdW5jdGlvbiAobWF0Y2gsIGF0dHJpYnV0aW9uTmFtZSkgewoJCQkJCQlyZXR1cm4gYXR0cmlidXRpb25SZXBsYWNlcihwcm92aWRlcnNbYXR0cmlidXRpb25OYW1lXS5vcHRpb25zLmF0dHJpYnV0aW9uKTsKCQkJCQl9CgkJCQkpOwoJCQl9OwoJCQlwcm92aWRlci5vcHRpb25zLmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25SZXBsYWNlcihwcm92aWRlci5vcHRpb25zLmF0dHJpYnV0aW9uKTsKCgkJCS8vIENvbXB1dGUgZmluYWwgb3B0aW9ucyBjb21iaW5pbmcgcHJvdmlkZXIgb3B0aW9ucyB3aXRoIGFueSB1c2VyIG92ZXJyaWRlcwoJCQl2YXIgbGF5ZXJPcHRzID0gTC5VdGlsLmV4dGVuZCh7fSwgcHJvdmlkZXIub3B0aW9ucywgb3B0aW9ucyk7CgkJCUwuVGlsZUxheWVyLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgcHJvdmlkZXIudXJsLCBsYXllck9wdHMpOwoJCX0KCX0pOwoKCS8qKgoJICogRGVmaW5pdGlvbiBvZiBwcm92aWRlcnMuCgkgKiBzZWUgaHR0cDovL2xlYWZsZXRqcy5jb20vcmVmZXJlbmNlLmh0bWwjdGlsZWxheWVyIGZvciBvcHRpb25zIGluIHRoZSBvcHRpb25zIG1hcC4KCSAqLwoKCUwuVGlsZUxheWVyLlByb3ZpZGVyLnByb3ZpZGVycyA9IHsKCQlPcGVuU3RyZWV0TWFwOiB7CgkJCXVybDogJ2h0dHBzOi8vdGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQltYXhab29tOiAxOSwKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0Ij5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMnCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlNYXBuaWs6IHt9LAoJCQkJREU6IHsKCQkJCQl1cmw6ICdodHRwczovL3RpbGUub3BlbnN0cmVldG1hcC5kZS97en0ve3h9L3t5fS5wbmcnLAoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJbWF4Wm9vbTogMTgKCQkJCQl9CgkJCQl9LAoJCQkJQ0g6IHsKCQkJCQl1cmw6ICdodHRwczovL3RpbGUub3NtLmNoL3N3aXR6ZXJsYW5kL3t6fS97eH0ve3l9LnBuZycsCgkJCQkJb3B0aW9uczogewoJCQkJCQltYXhab29tOiAxOCwKCQkJCQkJYm91bmRzOiBbWzQ1LCA1XSwgWzQ4LCAxMV1dCgkJCQkJfQoJCQkJfSwKCQkJCUZyYW5jZTogewoJCQkJCXVybDogJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5mci9vc21mci97en0ve3h9L3t5fS5wbmcnLAoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJbWF4Wm9vbTogMjAsCgkJCQkJCWF0dHJpYnV0aW9uOiAnJmNvcHk7IE9wZW5TdHJlZXRNYXAgRnJhbmNlIHwge2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JwoJCQkJCX0KCQkJCX0sCgkJCQlIT1Q6IHsKCQkJCQl1cmw6ICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAuZnIvaG90L3t6fS97eH0ve3l9LnBuZycsCgkJCQkJb3B0aW9uczogewoJCQkJCQlhdHRyaWJ1dGlvbjoKCQkJCQkJCSd7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0sICcgKwoJCQkJCQkJJ1RpbGVzIHN0eWxlIGJ5IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmhvdG9zbS5vcmcvIiB0YXJnZXQ9Il9ibGFuayI+SHVtYW5pdGFyaWFuIE9wZW5TdHJlZXRNYXAgVGVhbTwvYT4gJyArCgkJCQkJCQknaG9zdGVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vb3BlbnN0cmVldG1hcC5mci8iIHRhcmdldD0iX2JsYW5rIj5PcGVuU3RyZWV0TWFwIEZyYW5jZTwvYT4nCgkJCQkJfQoJCQkJfSwKCQkJCUJaSDogewoJCQkJCXVybDogJ2h0dHBzOi8vdGlsZS5vcGVuc3RyZWV0bWFwLmJ6aC9ici97en0ve3h9L3t5fS5wbmcnLAoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246ICd7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0sIFRpbGVzIGNvdXJ0ZXN5IG9mIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5iemgvIiB0YXJnZXQ9Il9ibGFuayI+QnJldG9uIE9wZW5TdHJlZXRNYXAgVGVhbTwvYT4nLAoJCQkJCQlib3VuZHM6IFtbNDYuMiwgLTUuNV0sIFs1MCwgMC43XV0KCQkJCQl9CgkJCQl9CgkJCX0KCQl9LAoJCU1hcFRpbGVzQVBJOiB7CgkJCXVybDogJ2h0dHBzOi8vbWFwdGlsZXMucC5yYXBpZGFwaS5jb20ve3ZhcmlhbnR9L3t6fS97eH0ve3l9LnBuZz9yYXBpZGFwaS1rZXk9e2FwaWtleX0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHA6Ly93d3cubWFwdGlsZXNhcGkuY29tLyI+TWFwVGlsZXMgQVBJPC9hPiwge2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JywKCQkJCXZhcmlhbnQ6ICdlbi9tYXAvdjEnLAoJCQkJLy8gR2V0IHlvdXIgb3duIE1hcFRpbGVzIEFQSSBhY2Nlc3MgdG9rZW4gaGVyZSA6IGh0dHBzOi8vd3d3Lm1hcHRpbGVzYXBpLmNvbS8KCQkJCS8vIE5CIDogdGhpcyBpcyBhIGRlbW9uc3RyYXRpb24ga2V5IHRoYXQgY29tZXMgd2l0aCBubyBndWFyYW50ZWUgYW5kIG5vdCB0byBiZSB1c2VkIGluIHByb2R1Y3Rpb24KCQkJCWFwaWtleTogJzxpbnNlcnQgeW91ciBhcGkga2V5IGhlcmU+JywKCQkJCW1heFpvb206IDE5CgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlPU01FbmdsaXNoOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnZW4vbWFwL3YxJwoJCQkJCX0KCQkJCX0sCgkJCQlPU01GcmFuY2FpczogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ2ZyL21hcC92MScKCQkJCQl9CgkJCQl9LAoJCQkJT1NNRXNwYWdub2w6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdlcy9tYXAvdjEnCgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQlPcGVuU2VhTWFwOiB7CgkJCXVybDogJ2h0dHBzOi8vdGlsZXMub3BlbnNlYW1hcC5vcmcvc2VhbWFyay97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJ01hcCBkYXRhOiAmY29weTsgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc2VhbWFwLm9yZyI+T3BlblNlYU1hcDwvYT4gY29udHJpYnV0b3JzJwoJCQl9CgkJfSwKCQlPUE5WS2FydGU6IHsKCQkJdXJsOiAnaHR0cHM6Ly90aWxlc2VydmVyLm1lbW9tYXBzLmRlL3RpbGVnZW4ve3p9L3t4fS97eX0ucG5nJywKCQkJb3B0aW9uczogewoJCQkJbWF4Wm9vbTogMTgsCgkJCQlhdHRyaWJ1dGlvbjogJ01hcCA8YSBocmVmPSJodHRwczovL21lbW9tYXBzLmRlLyI+bWVtb21hcHMuZGU8L2E+IDxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzIuMC8iPkNDLUJZLVNBPC9hPiwgbWFwIGRhdGEge2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JwoJCQl9CgkJfSwKCQlPcGVuVG9wb01hcDogewoJCQl1cmw6ICdodHRwczovL3tzfS50aWxlLm9wZW50b3BvbWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQltYXhab29tOiAxNywKCQkJCWF0dHJpYnV0aW9uOiAnTWFwIGRhdGE6IHthdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSwgPGEgaHJlZj0iaHR0cDovL3ZpZXdmaW5kZXJwYW5vcmFtYXMub3JnIj5TUlRNPC9hPiB8IE1hcCBzdHlsZTogJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vb3BlbnRvcG9tYXAub3JnIj5PcGVuVG9wb01hcDwvYT4gKDxhIGhyZWY9Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvIj5DQy1CWS1TQTwvYT4pJwoJCQl9CgkJfSwKCQlPcGVuUmFpbHdheU1hcDogewoJCQl1cmw6ICdodHRwczovL3tzfS50aWxlcy5vcGVucmFpbHdheW1hcC5vcmcvc3RhbmRhcmQve3p9L3t4fS97eX0ucG5nJywKCQkJb3B0aW9uczogewoJCQkJbWF4Wm9vbTogMTksCgkJCQlhdHRyaWJ1dGlvbjogJ01hcCBkYXRhOiB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0gfCBNYXAgc3R5bGU6ICZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5PcGVuUmFpbHdheU1hcC5vcmciPk9wZW5SYWlsd2F5TWFwPC9hPiAoPGEgaHJlZj0iaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzMuMC8iPkNDLUJZLVNBPC9hPiknCgkJCX0KCQl9LAoJCU9wZW5GaXJlTWFwOiB7CgkJCXVybDogJ2h0dHA6Ly9vcGVuZmlyZW1hcC5vcmcvaHl0aWxlcy97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQltYXhab29tOiAxOSwKCQkJCWF0dHJpYnV0aW9uOiAnTWFwIGRhdGE6IHthdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSB8IE1hcCBzdHlsZTogJmNvcHk7IDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmZpcmVtYXAub3JnIj5PcGVuRmlyZU1hcDwvYT4gKDxhIGhyZWY9Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvIj5DQy1CWS1TQTwvYT4pJwoJCQl9CgkJfSwKCQlTYWZlQ2FzdDogewoJCQl1cmw6ICdodHRwczovL3MzLmFtYXpvbmF3cy5jb20vdGU1MTIuc2FmZWNhc3Qub3JnL3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCW1heFpvb206IDE2LAoJCQkJYXR0cmlidXRpb246ICdNYXAgZGF0YToge2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9IHwgTWFwIHN0eWxlOiAmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9ibG9nLnNhZmVjYXN0Lm9yZy9hYm91dC8iPlNhZmVDYXN0PC9hPiAoPGEgaHJlZj0iaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzMuMC8iPkNDLUJZLVNBPC9hPiknCgkJCX0KCQl9LAoJCVN0YWRpYTogewoJCQl1cmw6ICdodHRwczovL3RpbGVzLnN0YWRpYW1hcHMuY29tL3RpbGVzL3t2YXJpYW50fS97en0ve3h9L3t5fXtyfS57ZXh0fScsCgkJCW9wdGlvbnM6IHsKCQkJCW1pblpvb206IDAsCgkJCQltYXhab29tOiAyMCwKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhZGlhbWFwcy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+U3RhZGlhIE1hcHM8L2E+ICcgKwoJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9vcGVubWFwdGlsZXMub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5NYXBUaWxlczwvYT4gJyArCgkJCQkJJ3thdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfScsCgkJCQl2YXJpYW50OiAnYWxpZGFkZV9zbW9vdGgnLAoJCQkJZXh0OiAncG5nJwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJQWxpZGFkZVNtb290aDogJ2FsaWRhZGVfc21vb3RoJywKCQkJCUFsaWRhZGVTbW9vdGhEYXJrOiAnYWxpZGFkZV9zbW9vdGhfZGFyaycsCgkJCQlPU01CcmlnaHQ6ICdvc21fYnJpZ2h0JywKCQkJCU91dGRvb3JzOiAnb3V0ZG9vcnMnLAoJCQkJU3RhbWVuVG9uZXI6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWF0dHJpYnV0aW9uOgoJCQkJCQkJJyZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5zdGFkaWFtYXBzLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5TdGFkaWEgTWFwczwvYT4gJyArCgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YW1lbi5jb20vIiB0YXJnZXQ9Il9ibGFuayI+U3RhbWVuIERlc2lnbjwvYT4gJyArCgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vb3Blbm1hcHRpbGVzLm9yZy8iIHRhcmdldD0iX2JsYW5rIj5PcGVuTWFwVGlsZXM8L2E+ICcgKwoJCQkJCQkJJ3thdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfScsCgkJCQkJCXZhcmlhbnQ6ICdzdGFtZW5fdG9uZXInCgkJCQkJfQoJCQkJfSwKCQkJCVN0YW1lblRvbmVyQmFja2dyb3VuZDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YWRpYW1hcHMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlN0YWRpYSBNYXBzPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhbWVuLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5TdGFtZW4gRGVzaWduPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9vcGVubWFwdGlsZXMub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5NYXBUaWxlczwvYT4gJyArCgkJCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JywKCQkJCQkJdmFyaWFudDogJ3N0YW1lbl90b25lcl9iYWNrZ3JvdW5kJwoJCQkJCX0KCQkJCX0sCgkJCQlTdGFtZW5Ub25lckxpbmVzOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQlhdHRyaWJ1dGlvbjoKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhZGlhbWFwcy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+U3RhZGlhIE1hcHM8L2E+ICcgKwoJCQkJCQkJJyZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5zdGFtZW4uY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlN0YW1lbiBEZXNpZ248L2E+ICcgKwoJCQkJCQkJJyZjb3B5OyA8YSBocmVmPSJodHRwczovL29wZW5tYXB0aWxlcy5vcmcvIiB0YXJnZXQ9Il9ibGFuayI+T3Blbk1hcFRpbGVzPC9hPiAnICsKCQkJCQkJCSd7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJCQl2YXJpYW50OiAnc3RhbWVuX3RvbmVyX2xpbmVzJwoJCQkJCX0KCQkJCX0sCgkJCQlTdGFtZW5Ub25lckxhYmVsczogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YWRpYW1hcHMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlN0YWRpYSBNYXBzPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhbWVuLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5TdGFtZW4gRGVzaWduPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9vcGVubWFwdGlsZXMub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5NYXBUaWxlczwvYT4gJyArCgkJCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JywKCQkJCQkJdmFyaWFudDogJ3N0YW1lbl90b25lcl9sYWJlbHMnCgkJCQkJfQoJCQkJfSwKCQkJCVN0YW1lblRvbmVyTGl0ZTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YWRpYW1hcHMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlN0YWRpYSBNYXBzPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhbWVuLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5TdGFtZW4gRGVzaWduPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9vcGVubWFwdGlsZXMub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5NYXBUaWxlczwvYT4gJyArCgkJCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JywKCQkJCQkJdmFyaWFudDogJ3N0YW1lbl90b25lcl9saXRlJwoJCQkJCX0KCQkJCX0sCgkJCQlTdGFtZW5XYXRlcmNvbG9yOiB7CgkJCQkJdXJsOiAnaHR0cHM6Ly90aWxlcy5zdGFkaWFtYXBzLmNvbS90aWxlcy97dmFyaWFudH0ve3p9L3t4fS97eX0ue2V4dH0nLAoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YWRpYW1hcHMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlN0YWRpYSBNYXBzPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhbWVuLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5TdGFtZW4gRGVzaWduPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9vcGVubWFwdGlsZXMub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5NYXBUaWxlczwvYT4gJyArCgkJCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JywKCQkJCQkJdmFyaWFudDogJ3N0YW1lbl93YXRlcmNvbG9yJywKCQkJCQkJZXh0OiAnanBnJywKCQkJCQkJbWluWm9vbTogMSwKCQkJCQkJbWF4Wm9vbTogMTYKCQkJCQl9CgkJCQl9LAoJCQkJU3RhbWVuVGVycmFpbjogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YWRpYW1hcHMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlN0YWRpYSBNYXBzPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhbWVuLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5TdGFtZW4gRGVzaWduPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9vcGVubWFwdGlsZXMub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5NYXBUaWxlczwvYT4gJyArCgkJCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JywKCQkJCQkJdmFyaWFudDogJ3N0YW1lbl90ZXJyYWluJywKCQkJCQkJbWluWm9vbTogMCwKCQkJCQkJbWF4Wm9vbTogMTgKCQkJCQl9CgkJCQl9LAoJCQkJU3RhbWVuVGVycmFpbkJhY2tncm91bmQ6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWF0dHJpYnV0aW9uOgoJCQkJCQkJJyZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5zdGFkaWFtYXBzLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5TdGFkaWEgTWFwczwvYT4gJyArCgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YW1lbi5jb20vIiB0YXJnZXQ9Il9ibGFuayI+U3RhbWVuIERlc2lnbjwvYT4gJyArCgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vb3Blbm1hcHRpbGVzLm9yZy8iIHRhcmdldD0iX2JsYW5rIj5PcGVuTWFwVGlsZXM8L2E+ICcgKwoJCQkJCQkJJ3thdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfScsCgkJCQkJCXZhcmlhbnQ6ICdzdGFtZW5fdGVycmFpbl9iYWNrZ3JvdW5kJywKCQkJCQkJbWluWm9vbTogMCwKCQkJCQkJbWF4Wm9vbTogMTgKCQkJCQl9CgkJCQl9LAoJCQkJU3RhbWVuVGVycmFpbkxhYmVsczogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YWRpYW1hcHMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlN0YWRpYSBNYXBzPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhbWVuLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5TdGFtZW4gRGVzaWduPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9vcGVubWFwdGlsZXMub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5NYXBUaWxlczwvYT4gJyArCgkJCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JywKCQkJCQkJdmFyaWFudDogJ3N0YW1lbl90ZXJyYWluX2xhYmVscycsCgkJCQkJCW1pblpvb206IDAsCgkJCQkJCW1heFpvb206IDE4CgkJCQkJfQoJCQkJfSwKCQkJCVN0YW1lblRlcnJhaW5MaW5lczogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQknJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YWRpYW1hcHMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlN0YWRpYSBNYXBzPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhbWVuLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5TdGFtZW4gRGVzaWduPC9hPiAnICsKCQkJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9vcGVubWFwdGlsZXMub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5NYXBUaWxlczwvYT4gJyArCgkJCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JywKCQkJCQkJdmFyaWFudDogJ3N0YW1lbl90ZXJyYWluX2xpbmVzJywKCQkJCQkJbWluWm9vbTogMCwKCQkJCQkJbWF4Wm9vbTogMTgKCQkJCQl9CgkJCQl9CgkJCX0KCQl9LAoJCVRodW5kZXJmb3Jlc3Q6IHsKCQkJdXJsOiAnaHR0cHM6Ly97c30udGlsZS50aHVuZGVyZm9yZXN0LmNvbS97dmFyaWFudH0ve3p9L3t4fS97eX0ucG5nP2FwaWtleT17YXBpa2V5fScsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cDovL3d3dy50aHVuZGVyZm9yZXN0LmNvbS8iPlRodW5kZXJmb3Jlc3Q8L2E+LCB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJdmFyaWFudDogJ2N5Y2xlJywKCQkJCWFwaWtleTogJzxpbnNlcnQgeW91ciBhcGkga2V5IGhlcmU+JywKCQkJCW1heFpvb206IDIyCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlPcGVuQ3ljbGVNYXA6ICdjeWNsZScsCgkJCQlUcmFuc3BvcnQ6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICd0cmFuc3BvcnQnCgkJCQkJfQoJCQkJfSwKCQkJCVRyYW5zcG9ydERhcms6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICd0cmFuc3BvcnQtZGFyaycKCQkJCQl9CgkJCQl9LAoJCQkJU3BpbmFsTWFwOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnc3BpbmFsLW1hcCcKCQkJCQl9CgkJCQl9LAoJCQkJTGFuZHNjYXBlOiAnbGFuZHNjYXBlJywKCQkJCU91dGRvb3JzOiAnb3V0ZG9vcnMnLAoJCQkJUGlvbmVlcjogJ3Bpb25lZXInLAoJCQkJTW9iaWxlQXRsYXM6ICdtb2JpbGUtYXRsYXMnLAoJCQkJTmVpZ2hib3VyaG9vZDogJ25laWdoYm91cmhvb2QnCgkJCX0KCQl9LAoJCUN5Y2xPU006IHsKCQkJdXJsOiAnaHR0cHM6Ly97c30udGlsZS1jeWNsb3NtLm9wZW5zdHJlZXRtYXAuZnIvY3ljbG9zbS97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQltYXhab29tOiAyMCwKCQkJCWF0dHJpYnV0aW9uOiAnPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2N5Y2xvc20vY3ljbG9zbS1jYXJ0b2Nzcy1zdHlsZS9yZWxlYXNlcyIgdGl0bGU9IkN5Y2xPU00gLSBPcGVuIEJpY3ljbGUgcmVuZGVyIj5DeWNsT1NNPC9hPiB8IE1hcCBkYXRhOiB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nCgkJCX0KCQl9LAoJCUphd2c6IHsKCQkJdXJsOiAnaHR0cHM6Ly97c30udGlsZS5qYXdnLmlvL3t2YXJpYW50fS97en0ve3h9L3t5fXtyfS5wbmc/YWNjZXNzLXRva2VuPXthY2Nlc3NUb2tlbn0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQknPGEgaHJlZj0iaHR0cDovL2phd2cuaW8iIHRpdGxlPSJUaWxlcyBDb3VydGVzeSBvZiBKYXdnIE1hcHMiIHRhcmdldD0iX2JsYW5rIj4mY29weTsgPGI+SmF3ZzwvYj5NYXBzPC9hPiAnICsKCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JywKCQkJCW1pblpvb206IDAsCgkJCQltYXhab29tOiAyMiwKCQkJCXN1YmRvbWFpbnM6ICdhYmNkJywKCQkJCXZhcmlhbnQ6ICdqYXdnLXRlcnJhaW4nLAoJCQkJLy8gR2V0IHlvdXIgb3duIEphd2cgYWNjZXNzIHRva2VuIGhlcmUgOiBodHRwczovL3d3dy5qYXdnLmlvL2xhYi8KCQkJCS8vIE5CIDogdGhpcyBpcyBhIGRlbW9uc3RyYXRpb24ga2V5IHRoYXQgY29tZXMgd2l0aCBubyBndWFyYW50ZWUKCQkJCWFjY2Vzc1Rva2VuOiAnPGluc2VydCB5b3VyIGFjY2VzcyB0b2tlbiBoZXJlPicsCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlTdHJlZXRzOiAnamF3Zy1zdHJlZXRzJywKCQkJCVRlcnJhaW46ICdqYXdnLXRlcnJhaW4nLAoJCQkJU3Vubnk6ICdqYXdnLXN1bm55JywKCQkJCURhcms6ICdqYXdnLWRhcmsnLAoJCQkJTGlnaHQ6ICdqYXdnLWxpZ2h0JywKCQkJCU1hdHJpeDogJ2phd2ctbWF0cml4JwoJCQl9CgkJfSwKCQlNYXBCb3g6IHsKCQkJdXJsOiAnaHR0cHM6Ly9hcGkubWFwYm94LmNvbS9zdHlsZXMvdjEve2lkfS90aWxlcy97en0ve3h9L3t5fXtyfT9hY2Nlc3NfdG9rZW49e2FjY2Vzc1Rva2VufScsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hYm91dC9tYXBzLyIgdGFyZ2V0PSJfYmxhbmsiPk1hcGJveDwvYT4gJyArCgkJCQkJJ3thdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSAnICsKCQkJCQknPGEgaHJlZj0iaHR0cHM6Ly93d3cubWFwYm94LmNvbS9tYXAtZmVlZGJhY2svIiB0YXJnZXQ9Il9ibGFuayI+SW1wcm92ZSB0aGlzIG1hcDwvYT4nLAoJCQkJdGlsZVNpemU6IDUxMiwKCQkJCW1heFpvb206IDE4LAoJCQkJem9vbU9mZnNldDogLTEsCgkJCQlpZDogJ21hcGJveC9zdHJlZXRzLXYxMScsCgkJCQlhY2Nlc3NUb2tlbjogJzxpbnNlcnQgeW91ciBhY2Nlc3MgdG9rZW4gaGVyZT4nLAoJCQl9CgkJfSwKCQlNYXBUaWxlcjogewoJCQl1cmw6ICdodHRwczovL2FwaS5tYXB0aWxlci5jb20vbWFwcy97dmFyaWFudH0ve3p9L3t4fS97eX17cn0ue2V4dH0/a2V5PXtrZXl9JywKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246CgkJCQkJJzxhIGhyZWY9Imh0dHBzOi8vd3d3Lm1hcHRpbGVyLmNvbS9jb3B5cmlnaHQvIiB0YXJnZXQ9Il9ibGFuayI+JmNvcHk7IE1hcFRpbGVyPC9hPiA8YSBocmVmPSJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQiIHRhcmdldD0iX2JsYW5rIj4mY29weTsgT3BlblN0cmVldE1hcCBjb250cmlidXRvcnM8L2E+JywKCQkJCXZhcmlhbnQ6ICdzdHJlZXRzJywKCQkJCWV4dDogJ3BuZycsCgkJCQlrZXk6ICc8aW5zZXJ0IHlvdXIgTWFwVGlsZXIgQ2xvdWQgQVBJIGtleSBoZXJlPicsCgkJCQl0aWxlU2l6ZTogNTEyLAoJCQkJem9vbU9mZnNldDogLTEsCgkJCQltaW5ab29tOiAwLAoJCQkJbWF4Wm9vbTogMjEKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCVN0cmVldHM6ICdzdHJlZXRzJywKCQkJCUJhc2ljOiAnYmFzaWMnLAoJCQkJQnJpZ2h0OiAnYnJpZ2h0JywKCQkJCVBhc3RlbDogJ3Bhc3RlbCcsCgkJCQlQb3NpdHJvbjogJ3Bvc2l0cm9uJywKCQkJCUh5YnJpZDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ2h5YnJpZCcsCgkJCQkJCWV4dDogJ2pwZycKCQkJCQl9CgkJCQl9LAoJCQkJVG9uZXI6ICd0b25lcicsCgkJCQlUb3BvOiAndG9wbycsCgkJCQlWb3lhZ2VyOiAndm95YWdlcicKCQkJfQoJCX0sCgkJVG9tVG9tOiB7CgkJCXVybDogJ2h0dHBzOi8ve3N9LmFwaS50b210b20uY29tL21hcC8xL3RpbGUve3ZhcmlhbnR9L3tzdHlsZX0ve3p9L3t4fS97eX0ue2V4dH0/a2V5PXthcGlrZXl9JywKCQkJb3B0aW9uczogewoJCQkJdmFyaWFudDogJ2Jhc2ljJywKCQkJCW1heFpvb206IDIyLAoJCQkJYXR0cmlidXRpb246CgkJCQkJJzxhIGhyZWY9Imh0dHBzOi8vdG9tdG9tLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPiZjb3B5OyAgMTk5MiAtICcgKyBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAnIFRvbVRvbS48L2E+ICcsCgkJCQlzdWJkb21haW5zOiAnYWJjZCcsCgkJCQlzdHlsZTogJ21haW4nLAoJCQkJZXh0OiAncG5nJywKCQkJCWFwaWtleTogJzxpbnNlcnQgeW91ciBBUEkga2V5IGhlcmU+JywKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCUJhc2ljOiAnYmFzaWMnLAoJCQkJSHlicmlkOiAnaHlicmlkJywKCQkJCUxhYmVsczogJ2xhYmVscycKCQkJfQoJCX0sCgkJRXNyaTogewoJCQl1cmw6ICdodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL3t2YXJpYW50fS9NYXBTZXJ2ZXIvdGlsZS97en0ve3l9L3t4fScsCgkJCW9wdGlvbnM6IHsKCQkJCXZhcmlhbnQ6ICdXb3JsZF9TdHJlZXRfTWFwJywKCQkJCWF0dHJpYnV0aW9uOiAnVGlsZXMgJmNvcHk7IEVzcmknCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlXb3JsZFN0cmVldE1hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQkne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgJyArCgkJCQkJCQknU291cmNlOiBFc3JpLCBEZUxvcm1lLCBOQVZURVEsIFVTR1MsIEludGVybWFwLCBpUEMsIE5SQ0FOLCBFc3JpIEphcGFuLCBNRVRJLCBFc3JpIENoaW5hIChIb25nIEtvbmcpLCBFc3JpIChUaGFpbGFuZCksIFRvbVRvbSwgMjAxMicKCQkJCQl9CgkJCQl9LAoJCQkJRGVMb3JtZTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwJywKCQkJCQkJbWluWm9vbTogMSwKCQkJCQkJbWF4Wm9vbTogMTEsCgkJCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgQ29weXJpZ2h0OiAmY29weTsyMDEyIERlTG9ybWUnCgkJCQkJfQoJCQkJfSwKCQkJCVdvcmxkVG9wb01hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1dvcmxkX1RvcG9fTWFwJywKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQkne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgJyArCgkJCQkJCQknRXNyaSwgRGVMb3JtZSwgTkFWVEVRLCBUb21Ub20sIEludGVybWFwLCBpUEMsIFVTR1MsIEZBTywgTlBTLCBOUkNBTiwgR2VvQmFzZSwgS2FkYXN0ZXIgTkwsIE9yZG5hbmNlIFN1cnZleSwgRXNyaSBKYXBhbiwgTUVUSSwgRXNyaSBDaGluYSAoSG9uZyBLb25nKSwgYW5kIHRoZSBHSVMgVXNlciBDb21tdW5pdHknCgkJCQkJfQoJCQkJfSwKCQkJCVdvcmxkSW1hZ2VyeTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1dvcmxkX0ltYWdlcnknLAoJCQkJCQlhdHRyaWJ1dGlvbjoKCQkJCQkJCSd7YXR0cmlidXRpb24uRXNyaX0gJm1kYXNoOyAnICsKCQkJCQkJCSdTb3VyY2U6IEVzcmksIGktY3ViZWQsIFVTREEsIFVTR1MsIEFFWCwgR2VvRXllLCBHZXRtYXBwaW5nLCBBZXJvZ3JpZCwgSUdOLCBJR1AsIFVQUi1FR1AsIGFuZCB0aGUgR0lTIFVzZXIgQ29tbXVuaXR5JwoJCQkJCX0KCQkJCX0sCgkJCQlXb3JsZFRlcnJhaW46IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdXb3JsZF9UZXJyYWluX0Jhc2UnLAoJCQkJCQltYXhab29tOiAxMywKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQkne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgJyArCgkJCQkJCQknU291cmNlOiBVU0dTLCBFc3JpLCBUQU5BLCBEZUxvcm1lLCBhbmQgTlBTJwoJCQkJCX0KCQkJCX0sCgkJCQlXb3JsZFNoYWRlZFJlbGllZjogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1dvcmxkX1NoYWRlZF9SZWxpZWYnLAoJCQkJCQltYXhab29tOiAxMywKCQkJCQkJYXR0cmlidXRpb246ICd7YXR0cmlidXRpb24uRXNyaX0gJm1kYXNoOyBTb3VyY2U6IEVzcmknCgkJCQkJfQoJCQkJfSwKCQkJCVdvcmxkUGh5c2ljYWw6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdXb3JsZF9QaHlzaWNhbF9NYXAnLAoJCQkJCQltYXhab29tOiA4LAoJCQkJCQlhdHRyaWJ1dGlvbjogJ3thdHRyaWJ1dGlvbi5Fc3JpfSAmbWRhc2g7IFNvdXJjZTogVVMgTmF0aW9uYWwgUGFyayBTZXJ2aWNlJwoJCQkJCX0KCQkJCX0sCgkJCQlPY2VhbkJhc2VtYXA6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdPY2Vhbi9Xb3JsZF9PY2Vhbl9CYXNlJywKCQkJCQkJbWF4Wm9vbTogMTMsCgkJCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgU291cmNlczogR0VCQ08sIE5PQUEsIENIUywgT1NVLCBVTkgsIENTVU1CLCBOYXRpb25hbCBHZW9ncmFwaGljLCBEZUxvcm1lLCBOQVZURVEsIGFuZCBFc3JpJwoJCQkJCX0KCQkJCX0sCgkJCQlOYXRHZW9Xb3JsZE1hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ05hdEdlb19Xb3JsZF9NYXAnLAoJCQkJCQltYXhab29tOiAxNiwKCQkJCQkJYXR0cmlidXRpb246ICd7YXR0cmlidXRpb24uRXNyaX0gJm1kYXNoOyBOYXRpb25hbCBHZW9ncmFwaGljLCBFc3JpLCBEZUxvcm1lLCBOQVZURVEsIFVORVAtV0NNQywgVVNHUywgTkFTQSwgRVNBLCBNRVRJLCBOUkNBTiwgR0VCQ08sIE5PQUEsIGlQQycKCQkJCQl9CgkJCQl9LAoJCQkJV29ybGRHcmF5Q2FudmFzOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZScsCgkJCQkJCW1heFpvb206IDE2LAoJCQkJCQlhdHRyaWJ1dGlvbjogJ3thdHRyaWJ1dGlvbi5Fc3JpfSAmbWRhc2g7IEVzcmksIERlTG9ybWUsIE5BVlRFUScKCQkJCQl9CgkJCQl9CgkJCX0KCQl9LAoJCU9wZW5XZWF0aGVyTWFwOiB7CgkJCXVybDogJ2h0dHA6Ly97c30udGlsZS5vcGVud2VhdGhlcm1hcC5vcmcvbWFwL3t2YXJpYW50fS97en0ve3h9L3t5fS5wbmc/YXBwaWQ9e2FwaUtleX0nLAoJCQlvcHRpb25zOiB7CgkJCQltYXhab29tOiAxOSwKCQkJCWF0dHJpYnV0aW9uOiAnTWFwIGRhdGEgJmNvcHk7IDxhIGhyZWY9Imh0dHA6Ly9vcGVud2VhdGhlcm1hcC5vcmciPk9wZW5XZWF0aGVyTWFwPC9hPicsCgkJCQlhcGlLZXk6ICc8aW5zZXJ0IHlvdXIgYXBpIGtleSBoZXJlPicsCgkJCQlvcGFjaXR5OiAwLjUKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCUNsb3VkczogJ2Nsb3VkcycsCgkJCQlDbG91ZHNDbGFzc2ljOiAnY2xvdWRzX2NscycsCgkJCQlQcmVjaXBpdGF0aW9uOiAncHJlY2lwaXRhdGlvbicsCgkJCQlQcmVjaXBpdGF0aW9uQ2xhc3NpYzogJ3ByZWNpcGl0YXRpb25fY2xzJywKCQkJCVJhaW46ICdyYWluJywKCQkJCVJhaW5DbGFzc2ljOiAncmFpbl9jbHMnLAoJCQkJUHJlc3N1cmU6ICdwcmVzc3VyZScsCgkJCQlQcmVzc3VyZUNvbnRvdXI6ICdwcmVzc3VyZV9jbnRyJywKCQkJCVdpbmQ6ICd3aW5kJywKCQkJCVRlbXBlcmF0dXJlOiAndGVtcCcsCgkJCQlTbm93OiAnc25vdycKCQkJfQoJCX0sCgkJSEVSRTogewoJCQkvKgoJCQkgKiBIRVJFIG1hcHMsIGZvcm1lcmx5IE5va2lhIG1hcHMuCgkJCSAqIFRoZXNlIGJhc2VtYXBzIGFyZSBmcmVlLCBidXQgeW91IG5lZWQgYW4gYXBpIGlkIGFuZCBhcHAga2V5LiBQbGVhc2Ugc2lnbiB1cCBhdAoJCQkgKiBodHRwczovL2RldmVsb3Blci5oZXJlLmNvbS9wbGFucwoJCQkgKi8KCQkJdXJsOgoJCQkJJ2h0dHBzOi8ve3N9LntiYXNlfS5tYXBzLmFwaS5oZXJlLmNvbS9tYXB0aWxlLzIuMS8nICsKCQkJCSd7dHlwZX0ve21hcElEfS97dmFyaWFudH0ve3p9L3t4fS97eX0ve3NpemV9L3tmb3JtYXR9PycgKwoJCQkJJ2FwcF9pZD17YXBwX2lkfSZhcHBfY29kZT17YXBwX2NvZGV9JmxnPXtsYW5ndWFnZX0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQknTWFwICZjb3B5OyAxOTg3LScgKyBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAnIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXIuaGVyZS5jb20iPkhFUkU8L2E+JywKCQkJCXN1YmRvbWFpbnM6ICcxMjM0JywKCQkJCW1hcElEOiAnbmV3ZXN0JywKCQkJCSdhcHBfaWQnOiAnPGluc2VydCB5b3VyIGFwcF9pZCBoZXJlPicsCgkJCQknYXBwX2NvZGUnOiAnPGluc2VydCB5b3VyIGFwcF9jb2RlIGhlcmU+JywKCQkJCWJhc2U6ICdiYXNlJywKCQkJCXZhcmlhbnQ6ICdub3JtYWwuZGF5JywKCQkJCW1heFpvb206IDIwLAoJCQkJdHlwZTogJ21hcHRpbGUnLAoJCQkJbGFuZ3VhZ2U6ICdlbmcnLAoJCQkJZm9ybWF0OiAncG5nOCcsCgkJCQlzaXplOiAnMjU2JwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJbm9ybWFsRGF5OiAnbm9ybWFsLmRheScsCgkJCQlub3JtYWxEYXlDdXN0b206ICdub3JtYWwuZGF5LmN1c3RvbScsCgkJCQlub3JtYWxEYXlHcmV5OiAnbm9ybWFsLmRheS5ncmV5JywKCQkJCW5vcm1hbERheU1vYmlsZTogJ25vcm1hbC5kYXkubW9iaWxlJywKCQkJCW5vcm1hbERheUdyZXlNb2JpbGU6ICdub3JtYWwuZGF5LmdyZXkubW9iaWxlJywKCQkJCW5vcm1hbERheVRyYW5zaXQ6ICdub3JtYWwuZGF5LnRyYW5zaXQnLAoJCQkJbm9ybWFsRGF5VHJhbnNpdE1vYmlsZTogJ25vcm1hbC5kYXkudHJhbnNpdC5tb2JpbGUnLAoJCQkJbm9ybWFsRGF5VHJhZmZpYzogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ25vcm1hbC50cmFmZmljLmRheScsCgkJCQkJCWJhc2U6ICd0cmFmZmljJywKCQkJCQkJdHlwZTogJ3RyYWZmaWN0aWxlJwoJCQkJCX0KCQkJCX0sCgkJCQlub3JtYWxOaWdodDogJ25vcm1hbC5uaWdodCcsCgkJCQlub3JtYWxOaWdodE1vYmlsZTogJ25vcm1hbC5uaWdodC5tb2JpbGUnLAoJCQkJbm9ybWFsTmlnaHRHcmV5OiAnbm9ybWFsLm5pZ2h0LmdyZXknLAoJCQkJbm9ybWFsTmlnaHRHcmV5TW9iaWxlOiAnbm9ybWFsLm5pZ2h0LmdyZXkubW9iaWxlJywKCQkJCW5vcm1hbE5pZ2h0VHJhbnNpdDogJ25vcm1hbC5uaWdodC50cmFuc2l0JywKCQkJCW5vcm1hbE5pZ2h0VHJhbnNpdE1vYmlsZTogJ25vcm1hbC5uaWdodC50cmFuc2l0Lm1vYmlsZScsCgkJCQlyZWR1Y2VkRGF5OiAncmVkdWNlZC5kYXknLAoJCQkJcmVkdWNlZE5pZ2h0OiAncmVkdWNlZC5uaWdodCcsCgkJCQliYXNpY01hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdHlwZTogJ2Jhc2V0aWxlJwoJCQkJCX0KCQkJCX0sCgkJCQltYXBMYWJlbHM6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXR5cGU6ICdsYWJlbHRpbGUnLAoJCQkJCQlmb3JtYXQ6ICdwbmcnCgkJCQkJfQoJCQkJfSwKCQkJCXRyYWZmaWNGbG93OiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQliYXNlOiAndHJhZmZpYycsCgkJCQkJCXR5cGU6ICdmbG93dGlsZScKCQkJCQl9CgkJCQl9LAoJCQkJY2FybmF2RGF5R3JleTogJ2Nhcm5hdi5kYXkuZ3JleScsCgkJCQloeWJyaWREYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWJhc2U6ICdhZXJpYWwnLAoJCQkJCQl2YXJpYW50OiAnaHlicmlkLmRheScKCQkJCQl9CgkJCQl9LAoJCQkJaHlicmlkRGF5TW9iaWxlOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQliYXNlOiAnYWVyaWFsJywKCQkJCQkJdmFyaWFudDogJ2h5YnJpZC5kYXkubW9iaWxlJwoJCQkJCX0KCQkJCX0sCgkJCQloeWJyaWREYXlUcmFuc2l0OiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQliYXNlOiAnYWVyaWFsJywKCQkJCQkJdmFyaWFudDogJ2h5YnJpZC5kYXkudHJhbnNpdCcKCQkJCQl9CgkJCQl9LAoJCQkJaHlicmlkRGF5R3JleTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ2FlcmlhbCcsCgkJCQkJCXZhcmlhbnQ6ICdoeWJyaWQuZ3JleS5kYXknCgkJCQkJfQoJCQkJfSwKCQkJCWh5YnJpZERheVRyYWZmaWM6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdoeWJyaWQudHJhZmZpYy5kYXknLAoJCQkJCQliYXNlOiAndHJhZmZpYycsCgkJCQkJCXR5cGU6ICd0cmFmZmljdGlsZScKCQkJCQl9CgkJCQl9LAoJCQkJcGVkZXN0cmlhbkRheTogJ3BlZGVzdHJpYW4uZGF5JywKCQkJCXBlZGVzdHJpYW5OaWdodDogJ3BlZGVzdHJpYW4ubmlnaHQnLAoJCQkJc2F0ZWxsaXRlRGF5OiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQliYXNlOiAnYWVyaWFsJywKCQkJCQkJdmFyaWFudDogJ3NhdGVsbGl0ZS5kYXknCgkJCQkJfQoJCQkJfSwKCQkJCXRlcnJhaW5EYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWJhc2U6ICdhZXJpYWwnLAoJCQkJCQl2YXJpYW50OiAndGVycmFpbi5kYXknCgkJCQkJfQoJCQkJfSwKCQkJCXRlcnJhaW5EYXlNb2JpbGU6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWJhc2U6ICdhZXJpYWwnLAoJCQkJCQl2YXJpYW50OiAndGVycmFpbi5kYXkubW9iaWxlJwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgkJSEVSRXYzOiB7CgkJCS8qCgkJCSAqIEhFUkUgbWFwcyBBUEkgVmVyc2lvbiAzLgoJCQkgKiBUaGVzZSBiYXNlbWFwcyBhcmUgZnJlZSwgYnV0IHlvdSBuZWVkIGFuIEFQSSBrZXkuIFBsZWFzZSBzaWduIHVwIGF0CgkJCSAqIGh0dHBzOi8vZGV2ZWxvcGVyLmhlcmUuY29tL3BsYW5zCgkJCSAqIFZlcnNpb24gMyBkZXByZWNhdGVzIHRoZSBhcHBfaWQgYW5kIGFwcF9jb2RlIGFjY2VzcyBpbiBmYXZvciBvZiBhcGlLZXkKCQkJICoKCQkJICogU3VwcG9ydGVkIGFjY2VzcyBtZXRob2RzIGFzIG9mIDIwMTkvMTIvMjE6CgkJCSAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuaGVyZS5jb20vZmFxcyNhY2Nlc3MtY29udHJvbC0xLS1ob3ctZG8teW91LWNvbnRyb2wtYWNjZXNzLXRvLWhlcmUtbG9jYXRpb24tc2VydmljZXMKCQkJICovCgkJCXVybDoKCQkJCSdodHRwczovL3tzfS57YmFzZX0ubWFwcy5scy5oZXJlYXBpLmNvbS9tYXB0aWxlLzIuMS8nICsKCQkJCSd7dHlwZX0ve21hcElEfS97dmFyaWFudH0ve3p9L3t4fS97eX0ve3NpemV9L3tmb3JtYXR9PycgKwoJCQkJJ2FwaUtleT17YXBpS2V5fSZsZz17bGFuZ3VhZ2V9JywKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246CgkJCQkJJ01hcCAmY29weTsgMTk4Ny0nICsgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgJyA8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVyLmhlcmUuY29tIj5IRVJFPC9hPicsCgkJCQlzdWJkb21haW5zOiAnMTIzNCcsCgkJCQltYXBJRDogJ25ld2VzdCcsCgkJCQlhcGlLZXk6ICc8aW5zZXJ0IHlvdXIgYXBpS2V5IGhlcmU+JywKCQkJCWJhc2U6ICdiYXNlJywKCQkJCXZhcmlhbnQ6ICdub3JtYWwuZGF5JywKCQkJCW1heFpvb206IDIwLAoJCQkJdHlwZTogJ21hcHRpbGUnLAoJCQkJbGFuZ3VhZ2U6ICdlbmcnLAoJCQkJZm9ybWF0OiAncG5nOCcsCgkJCQlzaXplOiAnMjU2JwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJbm9ybWFsRGF5OiAnbm9ybWFsLmRheScsCgkJCQlub3JtYWxEYXlDdXN0b206ICdub3JtYWwuZGF5LmN1c3RvbScsCgkJCQlub3JtYWxEYXlHcmV5OiAnbm9ybWFsLmRheS5ncmV5JywKCQkJCW5vcm1hbERheU1vYmlsZTogJ25vcm1hbC5kYXkubW9iaWxlJywKCQkJCW5vcm1hbERheUdyZXlNb2JpbGU6ICdub3JtYWwuZGF5LmdyZXkubW9iaWxlJywKCQkJCW5vcm1hbERheVRyYW5zaXQ6ICdub3JtYWwuZGF5LnRyYW5zaXQnLAoJCQkJbm9ybWFsRGF5VHJhbnNpdE1vYmlsZTogJ25vcm1hbC5kYXkudHJhbnNpdC5tb2JpbGUnLAoJCQkJbm9ybWFsTmlnaHQ6ICdub3JtYWwubmlnaHQnLAoJCQkJbm9ybWFsTmlnaHRNb2JpbGU6ICdub3JtYWwubmlnaHQubW9iaWxlJywKCQkJCW5vcm1hbE5pZ2h0R3JleTogJ25vcm1hbC5uaWdodC5ncmV5JywKCQkJCW5vcm1hbE5pZ2h0R3JleU1vYmlsZTogJ25vcm1hbC5uaWdodC5ncmV5Lm1vYmlsZScsCgkJCQlub3JtYWxOaWdodFRyYW5zaXQ6ICdub3JtYWwubmlnaHQudHJhbnNpdCcsCgkJCQlub3JtYWxOaWdodFRyYW5zaXRNb2JpbGU6ICdub3JtYWwubmlnaHQudHJhbnNpdC5tb2JpbGUnLAoJCQkJcmVkdWNlZERheTogJ3JlZHVjZWQuZGF5JywKCQkJCXJlZHVjZWROaWdodDogJ3JlZHVjZWQubmlnaHQnLAoJCQkJYmFzaWNNYXA6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXR5cGU6ICdiYXNldGlsZScKCQkJCQl9CgkJCQl9LAoJCQkJbWFwTGFiZWxzOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl0eXBlOiAnbGFiZWx0aWxlJywKCQkJCQkJZm9ybWF0OiAncG5nJwoJCQkJCX0KCQkJCX0sCgkJCQl0cmFmZmljRmxvdzogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ3RyYWZmaWMnLAoJCQkJCQl0eXBlOiAnZmxvd3RpbGUnCgkJCQkJfQoJCQkJfSwKCQkJCWNhcm5hdkRheUdyZXk6ICdjYXJuYXYuZGF5LmdyZXknLAoJCQkJaHlicmlkRGF5OiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQliYXNlOiAnYWVyaWFsJywKCQkJCQkJdmFyaWFudDogJ2h5YnJpZC5kYXknCgkJCQkJfQoJCQkJfSwKCQkJCWh5YnJpZERheU1vYmlsZTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ2FlcmlhbCcsCgkJCQkJCXZhcmlhbnQ6ICdoeWJyaWQuZGF5Lm1vYmlsZScKCQkJCQl9CgkJCQl9LAoJCQkJaHlicmlkRGF5VHJhbnNpdDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ2FlcmlhbCcsCgkJCQkJCXZhcmlhbnQ6ICdoeWJyaWQuZGF5LnRyYW5zaXQnCgkJCQkJfQoJCQkJfSwKCQkJCWh5YnJpZERheUdyZXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWJhc2U6ICdhZXJpYWwnLAoJCQkJCQl2YXJpYW50OiAnaHlicmlkLmdyZXkuZGF5JwoJCQkJCX0KCQkJCX0sCgkJCQlwZWRlc3RyaWFuRGF5OiAncGVkZXN0cmlhbi5kYXknLAoJCQkJcGVkZXN0cmlhbk5pZ2h0OiAncGVkZXN0cmlhbi5uaWdodCcsCgkJCQlzYXRlbGxpdGVEYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWJhc2U6ICdhZXJpYWwnLAoJCQkJCQl2YXJpYW50OiAnc2F0ZWxsaXRlLmRheScKCQkJCQl9CgkJCQl9LAoJCQkJdGVycmFpbkRheTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ2FlcmlhbCcsCgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluLmRheScKCQkJCQl9CgkJCQl9LAoJCQkJdGVycmFpbkRheU1vYmlsZTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ2FlcmlhbCcsCgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluLmRheS5tb2JpbGUnCgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQlGcmVlTWFwU0s6IHsKCQkJdXJsOiAnaHR0cHM6Ly97c30uZnJlZW1hcC5zay9UL3t6fS97eH0ve3l9LmpwZWcnLAoJCQlvcHRpb25zOiB7CgkJCQltaW5ab29tOiA4LAoJCQkJbWF4Wm9vbTogMTYsCgkJCQlzdWJkb21haW5zOiAnYWJjZCcsCgkJCQlib3VuZHM6IFtbNDcuMjA0NjQyLCAxNS45OTYwOTNdLCBbNDkuODMwODk2LCAyMi41NzY5MDRdXSwKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCSd7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0sIHZpc3VhbGl6YXRpb24gQ0MtQnktU0EgMi4wIDxhIGhyZWY9Imh0dHA6Ly9mcmVlbWFwLnNrIj5GcmVlbWFwLnNrPC9hPicKCQkJfQoJCX0sCgkJTXRiTWFwOiB7CgkJCXVybDogJ2h0dHA6Ly90aWxlLm10Ym1hcC5jei9tdGJtYXBfdGlsZXMve3p9L3t4fS97eX0ucG5nJywKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246CgkJCQkJJ3thdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSAmYW1wOyBVU0dTJwoJCQl9CgkJfSwKCQlDYXJ0b0RCOiB7CgkJCXVybDogJ2h0dHBzOi8ve3N9LmJhc2VtYXBzLmNhcnRvY2RuLmNvbS97dmFyaWFudH0ve3p9L3t4fS97eX17cn0ucG5nJywKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246ICd7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0gJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vY2FydG8uY29tL2F0dHJpYnV0aW9ucyI+Q0FSVE88L2E+JywKCQkJCXN1YmRvbWFpbnM6ICdhYmNkJywKCQkJCW1heFpvb206IDIwLAoJCQkJdmFyaWFudDogJ2xpZ2h0X2FsbCcKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCVBvc2l0cm9uOiAnbGlnaHRfYWxsJywKCQkJCVBvc2l0cm9uTm9MYWJlbHM6ICdsaWdodF9ub2xhYmVscycsCgkJCQlQb3NpdHJvbk9ubHlMYWJlbHM6ICdsaWdodF9vbmx5X2xhYmVscycsCgkJCQlEYXJrTWF0dGVyOiAnZGFya19hbGwnLAoJCQkJRGFya01hdHRlck5vTGFiZWxzOiAnZGFya19ub2xhYmVscycsCgkJCQlEYXJrTWF0dGVyT25seUxhYmVsczogJ2Rhcmtfb25seV9sYWJlbHMnLAoJCQkJVm95YWdlcjogJ3Jhc3RlcnRpbGVzL3ZveWFnZXInLAoJCQkJVm95YWdlck5vTGFiZWxzOiAncmFzdGVydGlsZXMvdm95YWdlcl9ub2xhYmVscycsCgkJCQlWb3lhZ2VyT25seUxhYmVsczogJ3Jhc3RlcnRpbGVzL3ZveWFnZXJfb25seV9sYWJlbHMnLAoJCQkJVm95YWdlckxhYmVsc1VuZGVyOiAncmFzdGVydGlsZXMvdm95YWdlcl9sYWJlbHNfdW5kZXInCgkJCX0KCQl9LAoJCUhpa2VCaWtlOiB7CgkJCXVybDogJ2h0dHBzOi8vdGlsZXMud21mbGFicy5vcmcve3ZhcmlhbnR9L3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCW1heFpvb206IDE5LAoJCQkJYXR0cmlidXRpb246ICd7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJdmFyaWFudDogJ2hpa2ViaWtlJwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJSGlrZUJpa2U6IHt9LAoJCQkJSGlsbFNoYWRpbmc6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCW1heFpvb206IDE1LAoJCQkJCQl2YXJpYW50OiAnaGlsbHNoYWRpbmcnCgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQlCYXNlbWFwQVQ6IHsKCQkJdXJsOiAnaHR0cHM6Ly9tYXBzbmV1LndpZW4uZ3YuYXQvYmFzZW1hcC97dmFyaWFudH0ve3R5cGV9L2dvb2dsZTM4NTcve3p9L3t5fS97eH0ue2Zvcm1hdH0nLAoJCQlvcHRpb25zOiB7CgkJCQltYXhab29tOiAxOSwKCQkJCWF0dHJpYnV0aW9uOiAnRGF0ZW5xdWVsbGU6IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhc2VtYXAuYXQiPmJhc2VtYXAuYXQ8L2E+JywKCQkJCXR5cGU6ICdub3JtYWwnLAoJCQkJZm9ybWF0OiAncG5nJywKCQkJCWJvdW5kczogW1s0Ni4zNTg3NzAsIDguNzgyMzc5XSwgWzQ5LjAzNzg3MiwgMTcuMTg5NTMyXV0sCgkJCQl2YXJpYW50OiAnZ2VvbGFuZGJhc2VtYXAnCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQliYXNlbWFwOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQltYXhab29tOiAyMCwgLy8gY3VycmVudGx5IG9ubHkgaW4gVmllbm5hCgkJCQkJCXZhcmlhbnQ6ICdnZW9sYW5kYmFzZW1hcCcKCQkJCQl9CgkJCQl9LAoJCQkJZ3JhdTogJ2JtYXBncmF1JywKCQkJCW92ZXJsYXk6ICdibWFwb3ZlcmxheScsCgkJCQl0ZXJyYWluOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnYm1hcGdlbGFlbmRlJywKCQkJCQkJdHlwZTogJ2dyYXUnLAoJCQkJCQlmb3JtYXQ6ICdqcGVnJwoJCQkJCX0KCQkJCX0sCgkJCQlzdXJmYWNlOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnYm1hcG9iZXJmbGFlY2hlJywKCQkJCQkJdHlwZTogJ2dyYXUnLAoJCQkJCQlmb3JtYXQ6ICdqcGVnJwoJCQkJCX0KCQkJCX0sCgkJCQloaWdoZHBpOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnYm1hcGhpZHBpJywKCQkJCQkJZm9ybWF0OiAnanBlZycKCQkJCQl9CgkJCQl9LAoJCQkJb3J0aG9mb3RvOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQltYXhab29tOiAyMCwgLy8gY3VycmVudGx5IG9ubHkgaW4gVmllbm5hCgkJCQkJCXZhcmlhbnQ6ICdibWFwb3J0aG9mb3RvMzBjbScsCgkJCQkJCWZvcm1hdDogJ2pwZWcnCgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQlubG1hcHM6IHsKCQkJdXJsOiAnaHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvYnJ0L2FjaHRlcmdyb25ka2FhcnQvd210cy92Ml8wL3t2YXJpYW50fS9FUFNHOjM4NTcve3p9L3t4fS97eX0ucG5nJywKCQkJb3B0aW9uczogewoJCQkJbWluWm9vbTogNiwKCQkJCW1heFpvb206IDE5LAoJCQkJYm91bmRzOiBbWzUwLjUsIDMuMjVdLCBbNTQsIDcuNl1dLAoJCQkJYXR0cmlidXRpb246ICdLYWFydGdlZ2V2ZW5zICZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5rYWRhc3Rlci5ubCI+S2FkYXN0ZXI8L2E+JwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJJ3N0YW5kYWFyZCc6ICdzdGFuZGFhcmQnLAoJCQkJJ3Bhc3RlbCc6ICdwYXN0ZWwnLAoJCQkJJ2dyaWpzJzogJ2dyaWpzJywKCQkJCSd3YXRlcic6ICd3YXRlcicsCgkJCQknbHVjaHRmb3RvJzogewoJCQkJCSd1cmwnOiAnaHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2x1Y2h0Zm90b3JnYi93bXRzL3YxXzAvQWN0dWVlbF9vcnRobzI1L0VQU0c6Mzg1Ny97en0ve3h9L3t5fS5qcGVnJywKCQkJCX0KCQkJfQoJCX0sCgkJTkFTQUdJQlM6IHsKCQkJdXJsOiAnaHR0cHM6Ly9tYXAxLnZpcy5lYXJ0aGRhdGEubmFzYS5nb3Yvd210cy13ZWJtZXJjL3t2YXJpYW50fS9kZWZhdWx0L3t0aW1lfS97dGlsZW1hdHJpeHNldH17bWF4Wm9vbX0ve3p9L3t5fS97eH0ue2Zvcm1hdH0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQknSW1hZ2VyeSBwcm92aWRlZCBieSBzZXJ2aWNlcyBmcm9tIHRoZSBHbG9iYWwgSW1hZ2VyeSBCcm93c2UgU2VydmljZXMgKEdJQlMpLCBvcGVyYXRlZCBieSB0aGUgTkFTQS9HU0ZDL0VhcnRoIFNjaWVuY2UgRGF0YSBhbmQgSW5mb3JtYXRpb24gU3lzdGVtICcgKwoJCQkJCScoPGEgaHJlZj0iaHR0cHM6Ly9lYXJ0aGRhdGEubmFzYS5nb3YiPkVTRElTPC9hPikgd2l0aCBmdW5kaW5nIHByb3ZpZGVkIGJ5IE5BU0EvSFEuJywKCQkJCWJvdW5kczogW1stODUuMDUxMTI4Nzc3NiwgLTE3OS45OTk5OTk5NzVdLCBbODUuMDUxMTI4Nzc3NiwgMTc5Ljk5OTk5OTk3NV1dLAoJCQkJbWluWm9vbTogMSwKCQkJCW1heFpvb206IDksCgkJCQlmb3JtYXQ6ICdqcGcnLAoJCQkJdGltZTogJycsCgkJCQl0aWxlbWF0cml4c2V0OiAnR29vZ2xlTWFwc0NvbXBhdGlibGVfTGV2ZWwnCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlNb2Rpc1RlcnJhVHJ1ZUNvbG9yQ1I6ICdNT0RJU19UZXJyYV9Db3JyZWN0ZWRSZWZsZWN0YW5jZV9UcnVlQ29sb3InLAoJCQkJTW9kaXNUZXJyYUJhbmRzMzY3Q1I6ICdNT0RJU19UZXJyYV9Db3JyZWN0ZWRSZWZsZWN0YW5jZV9CYW5kczM2NycsCgkJCQlWaWlyc0VhcnRoQXROaWdodDIwMTI6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdWSUlSU19DaXR5TGlnaHRzXzIwMTInLAoJCQkJCQltYXhab29tOiA4CgkJCQkJfQoJCQkJfSwKCQkJCU1vZGlzVGVycmFMU1REYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdNT0RJU19UZXJyYV9MYW5kX1N1cmZhY2VfVGVtcF9EYXknLAoJCQkJCQlmb3JtYXQ6ICdwbmcnLAoJCQkJCQltYXhab29tOiA3LAoJCQkJCQlvcGFjaXR5OiAwLjc1CgkJCQkJfQoJCQkJfSwKCQkJCU1vZGlzVGVycmFTbm93Q292ZXI6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdNT0RJU19UZXJyYV9ORFNJX1Nub3dfQ292ZXInLAoJCQkJCQlmb3JtYXQ6ICdwbmcnLAoJCQkJCQltYXhab29tOiA4LAoJCQkJCQlvcGFjaXR5OiAwLjc1CgkJCQkJfQoJCQkJfSwKCQkJCU1vZGlzVGVycmFBT0Q6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdNT0RJU19UZXJyYV9BZXJvc29sJywKCQkJCQkJZm9ybWF0OiAncG5nJywKCQkJCQkJbWF4Wm9vbTogNiwKCQkJCQkJb3BhY2l0eTogMC43NQoJCQkJCX0KCQkJCX0sCgkJCQlNb2Rpc1RlcnJhQ2hsb3JvcGh5bGw6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdNT0RJU19UZXJyYV9DaGxvcm9waHlsbF9BJywKCQkJCQkJZm9ybWF0OiAncG5nJywKCQkJCQkJbWF4Wm9vbTogNywKCQkJCQkJb3BhY2l0eTogMC43NQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgkJTkxTOiB7CgkJCS8vIE5MUyBtYXBzIGFyZSBjb3B5cmlnaHQgTmF0aW9uYWwgbGlicmFyeSBvZiBTY290bGFuZC4KCQkJLy8gaHR0cDovL21hcHMubmxzLnVrL3Byb2plY3RzL2FwaS9pbmRleC5odG1sCgkJCS8vIFBsZWFzZSBjb250YWN0IE5MUyBmb3IgYW55dGhpbmcgb3RoZXIgdGhhbiBub24tY29tbWVyY2lhbCBsb3cgdm9sdW1lIHVzYWdlCgkJCS8vCgkJCS8vIE1hcCBzb3VyY2VzOiBPcmRuYW5jZSBTdXJ2ZXkgMToxbSB0byAxOjYzSywgMTkyMHMtMTk0MHMKCQkJLy8gICB6MC05ICAtIDE6MW0KCQkJLy8gIHoxMC0xMSAtIHF1YXJ0ZXIgaW5jaCAoMToyNTM0NDApCgkJCS8vICB6MTItMTggLSBvbmUgaW5jaCAoMTo2MzM2MCkKCQkJdXJsOiAnaHR0cHM6Ly9ubHMte3N9LnRpbGVzZXJ2ZXIuY29tL25scy97en0ve3h9L3t5fS5qcGcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJzxhIGhyZWY9Imh0dHA6Ly9nZW8ubmxzLnVrL21hcHMvIj5OYXRpb25hbCBMaWJyYXJ5IG9mIFNjb3RsYW5kIEhpc3RvcmljIE1hcHM8L2E+JywKCQkJCWJvdW5kczogW1s0OS42LCAtMTJdLCBbNjEuNywgM11dLAoJCQkJbWluWm9vbTogMSwKCQkJCW1heFpvb206IDE4LAoJCQkJc3ViZG9tYWluczogJzAxMjMnLAoJCQl9CgkJfSwKCQlKdXN0aWNlTWFwOiB7CgkJCS8vIEp1c3RpY2UgTWFwIChodHRwOi8vd3d3Lmp1c3RpY2VtYXAub3JnLykKCQkJLy8gVmlzdWFsaXplIHJhY2UgYW5kIGluY29tZSBkYXRhIGZvciB5b3VyIGNvbW11bml0eSwgY291bnR5IGFuZCBjb3VudHJ5LgoJCQkvLyBJbmNsdWRlcyB0b29scyBmb3IgZGF0YSBqb3VybmFsaXN0cywgYmxvZ2dlcnMgYW5kIGNvbW11bml0eSBhY3RpdmlzdHMuCgkJCXVybDogJ2h0dHBzOi8vd3d3Lmp1c3RpY2VtYXAub3JnL3RpbGUve3NpemV9L3t2YXJpYW50fS97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJzxhIGhyZWY9Imh0dHA6Ly93d3cuanVzdGljZW1hcC5vcmcvdGVybXMucGhwIj5KdXN0aWNlIE1hcDwvYT4nLAoJCQkJLy8gb25lIG9mICdjb3VudHknLCAndHJhY3QnLCAnYmxvY2snCgkJCQlzaXplOiAnY291bnR5JywKCQkJCS8vIEJvdW5kcyBmb3IgVVNBLCBpbmNsdWRpbmcgQWxhc2thIGFuZCBIYXdhaWkKCQkJCWJvdW5kczogW1sxNCwgLTE4MF0sIFs3MiwgLTU2XV0KCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCWluY29tZTogJ2luY29tZScsCgkJCQlhbWVyaWNhbkluZGlhbjogJ2luZGlhbicsCgkJCQlhc2lhbjogJ2FzaWFuJywKCQkJCWJsYWNrOiAnYmxhY2snLAoJCQkJaGlzcGFuaWM6ICdoaXNwYW5pYycsCgkJCQltdWx0aTogJ211bHRpJywKCQkJCW5vbldoaXRlOiAnbm9ud2hpdGUnLAoJCQkJd2hpdGU6ICd3aGl0ZScsCgkJCQlwbHVyYWxpdHk6ICdwbHVyYWwnCgkJCX0KCQl9LAoJCUdlb3BvcnRhaWxGcmFuY2U6IHsKCQkJdXJsOiAnaHR0cHM6Ly93eHMuaWduLmZyL3thcGlrZXl9L2dlb3BvcnRhaWwvd210cz9SRVFVRVNUPUdldFRpbGUmU0VSVklDRT1XTVRTJlZFUlNJT049MS4wLjAmU1RZTEU9e3N0eWxlfSZUSUxFTUFUUklYU0VUPVBNJkZPUk1BVD17Zm9ybWF0fSZMQVlFUj17dmFyaWFudH0mVElMRU1BVFJJWD17en0mVElMRVJPVz17eX0mVElMRUNPTD17eH0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3d3dy5nZW9wb3J0YWlsLmdvdXYuZnIvIj5HZW9wb3J0YWlsIEZyYW5jZTwvYT4nLAoJCQkJYm91bmRzOiBbWy03NSwgLTE4MF0sIFs4MSwgMTgwXV0sCgkJCQltaW5ab29tOiAyLAoJCQkJbWF4Wm9vbTogMTgsCgkJCQkvLyBHZXQgeW91ciBvd24gZ2VvcG9ydGFpbCBhcGlrZXkgaGVyZSA6IGh0dHA6Ly9wcm9mZXNzaW9ubmVscy5pZ24uZnIvaWduL2NvbnRyYXRzLwoJCQkJLy8gTkIgOiAnY2hvaXNpcmdlb3BvcnRhaWwnIGlzIGEgZGVtb25zdHJhdGlvbiBrZXkgdGhhdCBjb21lcyB3aXRoIG5vIGd1YXJhbnRlZQoJCQkJYXBpa2V5OiAnY2hvaXNpcmdlb3BvcnRhaWwnLAoJCQkJZm9ybWF0OiAnaW1hZ2UvcG5nJywKCQkJCXN0eWxlOiAnbm9ybWFsJywKCQkJCXZhcmlhbnQ6ICdHRU9HUkFQSElDQUxHUklEU1lTVEVNUy5QTEFOSUdOVjInCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlwbGFuOiAnR0VPR1JBUEhJQ0FMR1JJRFNZU1RFTVMuUExBTklHTlYyJywKCQkJCXBhcmNlbHM6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdDQURBU1RSQUxQQVJDRUxTLlBBUkNFTExBSVJFX0VYUFJFU1MnLAoJCQkJCQlzdHlsZTogJ1BDSSB2ZWN0ZXVyJywKCQkJCQkJbWF4Wm9vbTogMjAKCQkJCQl9CgkJCQl9LAoJCQkJb3J0aG9zOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQltYXhab29tOiAxOSwKCQkJCQkJZm9ybWF0OiAnaW1hZ2UvanBlZycsCgkJCQkJCXZhcmlhbnQ6ICdPUlRIT0lNQUdFUlkuT1JUSE9QSE9UT1MnCgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQlPbmVNYXBTRzogewoJCQl1cmw6ICdodHRwczovL21hcHMte3N9Lm9uZW1hcC5zZy92My97dmFyaWFudH0ve3p9L3t4fS97eX0ucG5nJywKCQkJb3B0aW9uczogewoJCQkJdmFyaWFudDogJ0RlZmF1bHQnLAoJCQkJbWluWm9vbTogMTEsCgkJCQltYXhab29tOiAxOCwKCQkJCWJvdW5kczogW1sxLjU2MDczLCAxMDQuMTE0NzVdLCBbMS4xNiwgMTAzLjUwMl1dLAoJCQkJYXR0cmlidXRpb246ICc8aW1nIHNyYz0iaHR0cHM6Ly9kb2NzLm9uZW1hcC5zZy9tYXBzL2ltYWdlcy9vbmVNYXA2NC0wMS5wbmciIHN0eWxlPSJoZWlnaHQ6MjBweDt3aWR0aDoyMHB4OyIvPiBOZXcgT25lTWFwIHwgTWFwIGRhdGEgJmNvcHk7IGNvbnRyaWJ1dG9ycywgPGEgaHJlZj0iaHR0cDovL1NMQS5nb3Yuc2ciPlNpbmdhcG9yZSBMYW5kIEF1dGhvcml0eTwvYT4nCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlEZWZhdWx0OiAnRGVmYXVsdCcsCgkJCQlOaWdodDogJ05pZ2h0JywKCQkJCU9yaWdpbmFsOiAnT3JpZ2luYWwnLAoJCQkJR3JleTogJ0dyZXknLAoJCQkJTGFuZExvdDogJ0xhbmRMb3QnCgkJCX0KCQl9LAoJCVVTR1M6IHsKCQkJdXJsOiAnaHR0cHM6Ly9iYXNlbWFwLm5hdGlvbmFsbWFwLmdvdi9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9VU0dTVG9wby9NYXBTZXJ2ZXIvdGlsZS97en0ve3l9L3t4fScsCgkJCW9wdGlvbnM6IHsKCQkJCW1heFpvb206IDIwLAoJCQkJYXR0cmlidXRpb246ICdUaWxlcyBjb3VydGVzeSBvZiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly91c2dzLmdvdi8iPlUuUy4gR2VvbG9naWNhbCBTdXJ2ZXk8L2E+JwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJVVNUb3BvOiB7fSwKCQkJCVVTSW1hZ2VyeTogewoJCQkJCXVybDogJ2h0dHBzOi8vYmFzZW1hcC5uYXRpb25hbG1hcC5nb3YvYXJjZ2lzL3Jlc3Qvc2VydmljZXMvVVNHU0ltYWdlcnlPbmx5L01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JwoJCQkJfSwKCQkJCVVTSW1hZ2VyeVRvcG86IHsKCQkJCQl1cmw6ICdodHRwczovL2Jhc2VtYXAubmF0aW9uYWxtYXAuZ292L2FyY2dpcy9yZXN0L3NlcnZpY2VzL1VTR1NJbWFnZXJ5VG9wby9NYXBTZXJ2ZXIvdGlsZS97en0ve3l9L3t4fScKCQkJCX0KCQkJfQoJCX0sCgkJV2F5bWFya2VkVHJhaWxzOiB7CgkJCXVybDogJ2h0dHBzOi8vdGlsZS53YXltYXJrZWR0cmFpbHMub3JnL3t2YXJpYW50fS97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQltYXhab29tOiAxOCwKCQkJCWF0dHJpYnV0aW9uOiAnTWFwIGRhdGE6IHthdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSB8IE1hcCBzdHlsZTogJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vd2F5bWFya2VkdHJhaWxzLm9yZyI+d2F5bWFya2VkdHJhaWxzLm9yZzwvYT4gKDxhIGhyZWY9Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvIj5DQy1CWS1TQTwvYT4pJwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJaGlraW5nOiAnaGlraW5nJywKCQkJCWN5Y2xpbmc6ICdjeWNsaW5nJywKCQkJCW10YjogJ210YicsCgkJCQlzbG9wZXM6ICdzbG9wZXMnLAoJCQkJcmlkaW5nOiAncmlkaW5nJywKCQkJCXNrYXRpbmc6ICdza2F0aW5nJwoJCQl9CgkJfSwKCQlPcGVuQUlQOiB7CgkJCXVybDogJ2h0dHBzOi8ve3N9LnRpbGUubWFwcy5vcGVuYWlwLm5ldC9nZW93ZWJjYWNoZS9zZXJ2aWNlL3Rtcy8xLjAuMC9vcGVuYWlwX2Jhc2VtYXBARVBTRyUzQTkwMDkxM0Bwbmcve3p9L3t4fS97eX0ue2V4dH0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJzxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9wZW5haXAubmV0LyI+b3BlbkFJUCBEYXRhPC9hPiAoPGEgaHJlZj0iaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzMuMC8iPkNDLUJZLU5DLVNBPC9hPiknLAoJCQkJZXh0OiAncG5nJywKCQkJCW1pblpvb206IDQsCgkJCQltYXhab29tOiAxNCwKCQkJCXRtczogdHJ1ZSwKCQkJCWRldGVjdFJldGluYTogdHJ1ZSwKCQkJCXN1YmRvbWFpbnM6ICcxMicKCQkJfQoJCX0sCgkJT3BlblNub3dNYXA6IHsKCQkJdXJsOiAnaHR0cHM6Ly90aWxlcy5vcGVuc25vd21hcC5vcmcve3ZhcmlhbnR9L3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCW1pblpvb206IDksCgkJCQltYXhab29tOiAxOCwKCQkJCWF0dHJpYnV0aW9uOiAnTWFwIGRhdGE6IHthdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSAmIE9EYkwsICZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5vcGVuc25vd21hcC5vcmcvaWZyYW1lcy9kYXRhLmh0bWwiPnd3dy5vcGVuc25vd21hcC5vcmc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvIj5DQy1CWS1TQTwvYT4nCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlwaXN0ZXM6ICdwaXN0ZXMnLAoJCQl9CgkJfSwKCQlBenVyZU1hcHM6IHsKCQkJdXJsOiAKCQkJCSdodHRwczovL2F0bGFzLm1pY3Jvc29mdC5jb20vbWFwL3RpbGU/YXBpLXZlcnNpb249e2FwaVZlcnNpb259JysKCQkJCScmdGlsZXNldElkPXt2YXJpYW50fSZ4PXt4fSZ5PXt5fSZ6b29tPXt6fSZsYW5ndWFnZT17bGFuZ3VhZ2V9JysKCQkJCScmc3Vic2NyaXB0aW9uLWtleT17c3Vic2NyaXB0aW9uS2V5fScsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOiAnU2VlIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3Jlc3QvYXBpL21hcHMvcmVuZGVyLXYyL2dldC1tYXAtdGlsZSBmb3IgZGV0YWlscy4nLAoJCQkJYXBpVmVyc2lvbjogJzIuMCcsCgkJCQl2YXJpYW50OiAnbWljcm9zb2Z0LmltYWdlcnknLAoJCQkJc3Vic2NyaXB0aW9uS2V5OiAnPGluc2VydCB5b3VyIHN1YnNjcmlwdGlvbiBrZXkgaGVyZT4nLAoJCQkJbGFuZ3VhZ2U6ICdlbi1VUycsCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlNaWNyb3NvZnRJbWFnZXJ5OiAnbWljcm9zb2Z0LmltYWdlcnknLAoJCQkJTWljcm9zb2Z0QmFzZURhcmtHcmV5OiAnbWljcm9zb2Z0LmJhc2UuZGFya2dyZXknLAoJCQkJTWljcm9zb2Z0QmFzZVJvYWQ6ICdtaWNyb3NvZnQuYmFzZS5yb2FkJywKCQkJCU1pY3Jvc29mdEJhc2VIeWJyaWRSb2FkOiAnbWljcm9zb2Z0LmJhc2UuaHlicmlkLnJvYWQnLAoJCQkJTWljcm9zb2Z0VGVycmFNYWluOiAnbWljcm9zb2Z0LnRlcnJhLm1haW4nLAoJCQkJTWljcm9zb2Z0V2VhdGhlckluZnJhcmVkTWFpbjogewoJCQkJCXVybDogCgkJCQkJJ2h0dHBzOi8vYXRsYXMubWljcm9zb2Z0LmNvbS9tYXAvdGlsZT9hcGktdmVyc2lvbj17YXBpVmVyc2lvbn0nKwoJCQkJCScmdGlsZXNldElkPXt2YXJpYW50fSZ4PXt4fSZ5PXt5fSZ6b29tPXt6fScrCgkJCQkJJyZ0aW1lU3RhbXA9e3RpbWVTdGFtcH0mbGFuZ3VhZ2U9e2xhbmd1YWdlfScgKwoJCQkJCScmc3Vic2NyaXB0aW9uLWtleT17c3Vic2NyaXB0aW9uS2V5fScsCgkJCQkJb3B0aW9uczogewoJCQkJCQl0aW1lU3RhbXA6ICcyMDIxLTA1LTA4VDA5OjAzOjAwWicsCgkJCQkJCWF0dHJpYnV0aW9uOiAnU2VlIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3Jlc3QvYXBpL21hcHMvcmVuZGVyLXYyL2dldC1tYXAtdGlsZSN1cmktcGFyYW1ldGVycyBmb3IgZGV0YWlscy4nLAoJCQkJCQl2YXJpYW50OiAnbWljcm9zb2Z0LndlYXRoZXIuaW5mcmFyZWQubWFpbicsCgkJCQkJfSwKCQkJCX0sCgkJCQlNaWNyb3NvZnRXZWF0aGVyUmFkYXJNYWluOiB7CgkJCQkJdXJsOiAKCQkJCQknaHR0cHM6Ly9hdGxhcy5taWNyb3NvZnQuY29tL21hcC90aWxlP2FwaS12ZXJzaW9uPXthcGlWZXJzaW9ufScrCgkJCQkJJyZ0aWxlc2V0SWQ9e3ZhcmlhbnR9Jng9e3h9Jnk9e3l9Jnpvb209e3p9JysKCQkJCQknJnRpbWVTdGFtcD17dGltZVN0YW1wfSZsYW5ndWFnZT17bGFuZ3VhZ2V9JyArCgkJCQkJJyZzdWJzY3JpcHRpb24ta2V5PXtzdWJzY3JpcHRpb25LZXl9JywKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXRpbWVTdGFtcDogJzIwMjEtMDUtMDhUMDk6MDM6MDBaJywKCQkJCQkJYXR0cmlidXRpb246ICdTZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcmVzdC9hcGkvbWFwcy9yZW5kZXItdjIvZ2V0LW1hcC10aWxlI3VyaS1wYXJhbWV0ZXJzIGZvciBkZXRhaWxzLicsCgkJCQkJCXZhcmlhbnQ6ICdtaWNyb3NvZnQud2VhdGhlci5yYWRhci5tYWluJywKCQkJCQl9LAoJCQkJfQoJCQl9LAoJCX0sCgkJU3dpc3NGZWRlcmFsR2VvcG9ydGFsOiB7CgkJCXVybDogJ2h0dHBzOi8vd210cy5nZW8uYWRtaW4uY2gvMS4wLjAve3ZhcmlhbnR9L2RlZmF1bHQvY3VycmVudC8zODU3L3t6fS97eH0ve3l9LmpwZWcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJyZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5zd2lzc3RvcG8uYWRtaW4uY2gvIj5zd2lzc3RvcG88L2E+JywKCQkJCW1pblpvb206IDIsCgkJCQltYXhab29tOiAxOCwKCQkJCWJvdW5kczogW1s0NS4zOTgxODEsIDUuMTQwMjQyXSwgWzQ4LjIzMDY1MSwgMTEuNDc3NTddXQoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJTmF0aW9uYWxNYXBDb2xvcjogJ2NoLnN3aXNzdG9wby5waXhlbGthcnRlLWZhcmJlJywKCQkJCU5hdGlvbmFsTWFwR3JleTogJ2NoLnN3aXNzdG9wby5waXhlbGthcnRlLWdyYXUnLAoJCQkJU1dJU1NJTUFHRTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ2NoLnN3aXNzdG9wby5zd2lzc2ltYWdlJywKCQkJCQkJbWF4Wm9vbTogMTkKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9OwoKCUwudGlsZUxheWVyLnByb3ZpZGVyID0gZnVuY3Rpb24gKHByb3ZpZGVyLCBvcHRpb25zKSB7CgkJcmV0dXJuIG5ldyBMLlRpbGVMYXllci5Qcm92aWRlcihwcm92aWRlciwgb3B0aW9ucyk7Cgl9OwoKCXJldHVybiBMOwp9KSk7Cjwvc2NyaXB0Pgo8c2NyaXB0PkxlYWZsZXRXaWRnZXQubWV0aG9kcy5hZGRQcm92aWRlclRpbGVzID0gZnVuY3Rpb24ocHJvdmlkZXIsIGxheWVySWQsIGdyb3VwLCBvcHRpb25zKSB7CiAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIoTC50aWxlTGF5ZXIucHJvdmlkZXIocHJvdmlkZXIsIG9wdGlvbnMpLCAidGlsZSIsIGxheWVySWQsIGdyb3VwKTsKfTsKPC9zY3JpcHQ+Cgo8L2hlYWQ+Cjxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsiPgo8ZGl2IGlkPSJodG1sd2lkZ2V0X2NvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibGVhZmxldCBodG1sLXdpZGdldCBodG1sLWZpbGwtaXRlbSIgaWQ9Imh0bWx3aWRnZXQtZDFlMDg5NWZmNGZhNDM3MWRkNWYiIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDo0MDBweDsiPjwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qc29uIiBkYXRhLWZvcj0iaHRtbHdpZGdldC1kMWUwODk1ZmY0ZmE0MzcxZGQ1ZiI+eyJ4Ijp7Im9wdGlvbnMiOnsiY3JzIjp7ImNyc0NsYXNzIjoiTC5DUlMuRVBTRzM4NTciLCJjb2RlIjpudWxsLCJwcm9qNGRlZiI6bnVsbCwicHJvamVjdGVkQm91bmRzIjpudWxsLCJvcHRpb25zIjp7fX19LCJjYWxscyI6W3sibWV0aG9kIjoiYWRkUHJvdmlkZXJUaWxlcyIsImFyZ3MiOlsiQ2FydG9EQi5Qb3NpdHJvbiIsbnVsbCxudWxsLHsiZXJyb3JUaWxlVXJsIjoiIiwibm9XcmFwIjpmYWxzZSwiZGV0ZWN0UmV0aW5hIjpmYWxzZX1dfSx7Im1ldGhvZCI6ImFkZENpcmNsZU1hcmtlcnMiLCJhcmdzIjpbMzYuMDY1Mjc3Nzc3Nzc3OCwtNzkuMDg3MjIyMjIyMjIyMiw1LG51bGwsIk5vIGRhdGEgaW4gd2luZG93Iix7ImludGVyYWN0aXZlIjp0cnVlLCJjbGFzc05hbWUiOiIiLCJzdHJva2UiOnRydWUsImNvbG9yIjoiI0JCQkJCQiIsIndlaWdodCI6MSwib3BhY2l0eSI6MC42LCJmaWxsIjp0cnVlLCJmaWxsQ29sb3IiOiIjQkJCQkJCIiwiZmlsbE9wYWNpdHkiOjAuNX0sbnVsbCxudWxsLCI8ZGl2IHN0eWxlPSdmb250LWZhbWlseTpzeXN0ZW0tdWksc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHg7IG1heC13aWR0aDo1MjhweCc+PGRpdiBzdHlsZT0nZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjRweCc+Q0FURVMgQ1JFRUsgTlIgSElMTFNCT1JPVUdILCBOQzxcL2Rpdj48XC9kaXY+Iix7Im1heFdpZHRoIjo1NTIsIm1pbldpZHRoIjo1MCwiYXV0b1BhbiI6dHJ1ZSwia2VlcEluVmlldyI6ZmFsc2UsImNsb3NlQnV0dG9uIjp0cnVlLCJjbGFzc05hbWUiOiIifSwiQ0FURVMgQ1JFRUsgTlIgSElMTFNCT1JPVUdILCBOQyIseyJpbnRlcmFjdGl2ZSI6ZmFsc2UsInBlcm1hbmVudCI6ZmFsc2UsImRpcmVjdGlvbiI6ImF1dG8iLCJvcGFjaXR5IjoxLCJvZmZzZXQiOlswLDBdLCJ0ZXh0c2l6ZSI6IjEwcHgiLCJ0ZXh0T25seSI6ZmFsc2UsImNsYXNzTmFtZSI6IiIsInN0aWNreSI6dHJ1ZX0sbnVsbF19LHsibWV0aG9kIjoiYWRkQ2lyY2xlTWFya2VycyIsImFyZ3MiOltbMzYuMTk0MTY2NjY2NjY2NywzNi4wOTc5MjgxODgxMjYzLDM2LjA5MzA1NTU1NTU1NTYsMzYuMDU0MDM5ODQ4Nzc0MywzNi4yMTMyMDQxNTE2NzgsMzYuMDQ5ODYxODU3MzY3LDM2LjA3MTgwNjQ1NzU3MzksMzYuMDY1NTU1NTU1NTU1NiwzNi4wNzExMTExMTExMTExXSxbLTc4LjU4MzA1NTU1NTU1NTUsLTc4LjI5OTk5NDg0NDc4ODcsLTc4LjI5NjExMTExMTExMTEsLTc4LjMzOTcxODEyNjQ3NzYxLC03OC4yOTY2NjEzNjAxMzAxLC03OS4xODc1MTQ4Nzg1MzQ4LC03OS4xNjAyOTIwNjU2NTMxLC03OS4xNDQxNjY2NjY2NjY3MSwtNzkuMDk1NTU1NTU1NTU1NTFdLDYsbnVsbCwiSGFzIGRhdGEiLHsiaW50ZXJhY3RpdmUiOnRydWUsImNsYXNzTmFtZSI6IiIsInN0cm9rZSI6dHJ1ZSwiY29sb3IiOiIjMkM3RkI4Iiwid2VpZ2h0IjoxLCJvcGFjaXR5IjoxLCJmaWxsIjp0cnVlLCJmaWxsQ29sb3IiOiIjMkM3RkI4IiwiZmlsbE9wYWNpdHkiOjAuOX0sbnVsbCxudWxsLFsiPGRpdiBzdHlsZT0nZm9udC1mYW1pbHk6c3lzdGVtLXVpLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxMnB4OyBtYXgtd2lkdGg6NTI4cHgnPjxkaXYgc3R5bGU9J2ZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTo0cHgnPlRBUiBSSVZFUiBORUFSIFRBUiBSSVZFUiwgTkM8XC9kaXY+PGltZyBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMG5NUzR3SnlCbGJtTnZaR2x1WnowblZWUkdMVGduSUQ4K0NqeHpkbWNnZUcxc2JuTTlKMmgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5KeUI0Yld4dWN6cDRiR2x1YXowbmFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzk0YkdsdWF5Y2dkMmxrZEdnOUp6VXdOQzR3TUhCMEp5Qm9aV2xuYUhROUp6STFNaTR3TUhCMEp5QjJhV1YzUW05NFBTY3dJREFnTlRBMExqQXdJREkxTWk0d01DYytDanhuSUdOc1lYTnpQU2R6ZG1kc2FYUmxKejRLUEdSbFpuTStDaUFnUEhOMGVXeGxJSFI1Y0dVOUozUmxlSFF2WTNOekp6NDhJVnREUkVGVVFWc0tJQ0FnSUM1emRtZHNhWFJsSUd4cGJtVXNJQzV6ZG1kc2FYUmxJSEJ2Ykhsc2FXNWxMQ0F1YzNabmJHbDBaU0J3YjJ4NVoyOXVMQ0F1YzNabmJHbDBaU0J3WVhSb0xDQXVjM1puYkdsMFpTQnlaV04wTENBdWMzWm5iR2wwWlNCamFYSmpiR1VnZXdvZ0lDQWdJQ0JtYVd4c09pQnViMjVsT3dvZ0lDQWdJQ0J6ZEhKdmEyVTZJQ013TURBd01EQTdDaUFnSUNBZ0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCeWIzVnVaRHNLSUNBZ0lDQWdjM1J5YjJ0bExXeHBibVZxYjJsdU9pQnliM1Z1WkRzS0lDQWdJQ0FnYzNSeWIydGxMVzFwZEdWeWJHbHRhWFE2SURFd0xqQXdPd29nSUNBZ2ZRb2dJQ0FnTG5OMloyeHBkR1VnZEdWNGRDQjdDaUFnSUNBZ0lIZG9hWFJsTFhOd1lXTmxPaUJ3Y21VN0NpQWdJQ0I5Q2lBZ0lDQXVjM1puYkdsMFpTQm5MbWRzZVhCb1ozSnZkWEFnY0dGMGFDQjdDaUFnSUNBZ0lHWnBiR3c2SUdsdWFHVnlhWFE3Q2lBZ0lDQWdJSE4wY205clpUb2dibTl1WlRzS0lDQWdJSDBLSUNCZFhUNDhMM04wZVd4bFBnbzhMMlJsWm5NK0NqeHlaV04wSUhkcFpIUm9QU2N4TURBbEp5Qm9aV2xuYUhROUp6RXdNQ1VuSUhOMGVXeGxQU2R6ZEhKdmEyVTZJRzV2Ym1VN0lHWnBiR3c2SUNOR1JrWkdSa1k3Snk4K0NqeGtaV1p6UGdvZ0lEeGpiR2x3VUdGMGFDQnBaRDBuWTNCTlF6UjNUVWgzTVUxRVVYVk5SRUk0VFVNMGQwMUlkM2xPVkVsMVRVUkJQU2MrQ2lBZ0lDQThjbVZqZENCNFBTY3dMakF3SnlCNVBTY3dMakF3SnlCM2FXUjBhRDBuTlRBMExqQXdKeUJvWldsbmFIUTlKekkxTWk0d01DY2dMejRLSUNBOEwyTnNhWEJRWVhSb1BnbzhMMlJsWm5NK0NqeG5JR05zYVhBdGNHRjBhRDBuZFhKc0tDTmpjRTFETkhkTlNIY3hUVVJSZFUxRVFqaE5RelIzVFVoM2VVNVVTWFZOUkVFOUtTYytDanh5WldOMElIZzlKekF1TURBbklIazlKeTB3TGpBd01EQXdNREF3TURBd01EQXlPQ2NnZDJsa2RHZzlKelV3TkM0d01DY2dhR1ZwWjJoMFBTY3lOVEl1TURBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREV1TURjN0lITjBjbTlyWlRvZ2JtOXVaVHNnWm1sc2JEb2dJMFpHUmtaR1Jqc25JQzgrQ2p3dlp6NEtQR1JsWm5NK0NpQWdQR05zYVhCUVlYUm9JR2xrUFNkamNFMXFWWFZOUkdnNFRrUnJORXhxVlhsbVJFbDVUR3BSZDJaRVJUVk9RelI1VGtFOVBTYytDaUFnSUNBOGNtVmpkQ0I0UFNjeU5TNHdPQ2NnZVQwbk1qSXVOREFuSUhkcFpIUm9QU2MwTnpNdU5EUW5JR2hsYVdkb2REMG5NVGN4TGpnMEp5QXZQZ29nSUR3dlkyeHBjRkJoZEdnK0Nqd3ZaR1ZtY3o0S1BHY2dZMnhwY0Mxd1lYUm9QU2QxY213b0kyTndUV3BWZFUxRWFEaE9SR3MwVEdwVmVXWkVTWGxNYWxGM1prUkZOVTVETkhsT1FUMDlLU2MrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMREUyTWk0Mk15QTBPVGd1TlRJc01UWXlMall6SUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNQzQxTXpzZ2MzUnliMnRsT2lBalJVSkZRa1ZDT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMREV4TXk0eU1pQTBPVGd1TlRJc01URXpMakl5SUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNQzQxTXpzZ2MzUnliMnRsT2lBalJVSkZRa1ZDT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMRFl6TGpneElEUTVPQzQxTWl3Mk15NDRNU0FuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklEQXVOVE03SUhOMGNtOXJaVG9nSTBWQ1JVSkZRanNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284Y0c5c2VXeHBibVVnY0c5cGJuUnpQU2MxTlM0eU5Td3hPVFF1TWpRZ05UVXVNalVzTWpJdU5EQWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBd0xqVXpPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalE1TGpreExERTVOQzR5TkNBeU5Ea3VPVEVzTWpJdU5EQWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBd0xqVXpPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5ORFEwTGpVMkxERTVOQzR5TkNBME5EUXVOVFlzTWpJdU5EQWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBd0xqVXpPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc01UZzNMak0wSURRNU9DNDFNaXd4T0RjdU16UWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBeExqQTNPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc01UTTNMamt6SURRNU9DNDFNaXd4TXpjdU9UTWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBeExqQTNPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc09EZ3VOVEVnTkRrNExqVXlMRGc0TGpVeElDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTVM0d056c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6STFMakE0TERNNUxqRXdJRFE1T0M0MU1pd3pPUzR4TUNBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREV1TURjN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjeE5USXVOVGdzTVRrMExqSTBJREUxTWk0MU9Dd3lNaTQwTUNBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREV1TURjN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjek5EY3VNak1zTVRrMExqSTBJRE0wTnk0eU15d3lNaTQwTUNBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREV1TURjN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjME5pNDJNQ3d4T0RNdU1Ua2dORGd1Tnpjc01UZ3pMamMySURVd0xqa3pMREU0TWk0eU9TQTFNeTR3T1N3eE9EUXVOak1nTlRVdU1qVXNNVGcyTGpReklEVTNMalF5TERFNE5TNHlNU0ExT1M0MU9Dd3hPRFF1TnprZ05qRXVOelFzTVRnMExqYzFJRFl6TGpreExERTRNeTQ1TkNBMk5pNHdOeXd4T0RNdU5URWdOamd1TWpNc01UZ3lMall3SURjd0xqTTVMREU0TXk0eE5TQTNNaTQxTml3eE9EQXVNVFFnTnpRdU56SXNNVFk1TGpBMklEYzJMamc0TERFM015NHdNU0EzT1M0d05Dd3hPREF1TnpJZ09ERXVNakVzTVRneUxqVXhJRGd6TGpNM0xERTRNUzR4TVNBNE5TNDFNeXd4T0RBdU16Y2dPRGN1TnpBc01UYzBMakk1SURnNUxqZzJMREUzTUM0Mk5DQTVNaTR3TWl3eE56SXVNaklnT1RRdU1UZ3NNVGN6TGpBeElEazJMak0xTERFM015NDFNQ0E1T0M0MU1Td3hOelF1T1RrZ01UQXdMalkzTERFM05pNHlOeUF4TURJdU9EUXNNVGMyTGpnMklERXdOUzR3TUN3eE56Y3VORGNnTVRBM0xqRTJMREUzT0M0eE15QXhNRGt1TXpJc01UYzRMalV3SURFeE1TNDBPU3d4T0RBdU5qVWdNVEV6TGpZMUxERTNPUzQyTVNBeE1UVXVPREVzTVRnd0xqRTFJREV4Tnk0NU9Dd3hPREF1TVRRZ01USXdMakUwTERFNE1DNDNNeUF4TWpJdU16QXNNVGd3TGpRNUlERXlOQzQwTml3eE56QXVPRFFnTVRJMkxqWXpMREUyTnk0ek9DQXhNamd1Tnprc01UY3dMalEwSURFek1DNDVOU3d4TnpJdU9ERWdNVE16TGpFeExERTNNeTQzTUNBeE16VXVNamdzTVRjekxqSXhJREV6Tnk0ME5Dd3hOelV1TVRnZ01UTTVMall3TERFM05pNDJOeUF4TkRFdU56Y3NNVGMzTGpNMklERTBNeTQ1TXl3eE56Y3VNallnTVRRMkxqQTVMREUzTmk0ek55QXhORGd1TWpVc01UYzFMalU0SURFMU1DNDBNaXd4TnpjdU5qTWdNVFV5TGpVNExERTNOaTQxTnlBeE5UUXVOelFzTVRjM0xqTTJJREUxTmk0NU1Td3hOemN1TmpZZ01UVTVMakEzTERFM055NDNNaUF4TmpFdU1qTXNNVGMzTGpreElERTJNeTR6T1N3eE56Y3VPVFFnTVRZMUxqVTJMREUzTnk0M05DQXhOamN1TnpJc01UYzNMamsxSURFMk9TNDRPQ3d4TnpndU1qY2dNVGN5TGpBMUxERTNPQzR3TUNBeE56UXVNakVzTVRjM0xqZzJJREUzTmk0ek55d3hOemN1TWpZZ01UYzRMalV6TERFM05pNHpOeUF4T0RBdU56QXNNVGMxTGpRNElERTRNaTQ0Tml3eE5qa3VPRFVnTVRnMUxqQXlMREUzTkM0eU1DQXhPRGN1TVRnc01UYzRMak01SURFNE9TNHpOU3d4TnprdU1UZ2dNVGt4TGpVeExERTNPUzQxTXlBeE9UTXVOamNzTVRnd0xqZ3hJREU1TlM0NE5Dd3hOemt1TmpJZ01UazRMakF3TERFM09TNHdNeUF5TURBdU1UWXNNVGM0TGpjMElESXdNaTR6TWl3eE56a3VNeklnTWpBMExqUTVMREUzT0M0Mk5TQXlNRFl1TmpVc01UYzNMak0ySURJd09DNDRNU3d4TnpZdU5qY2dNakV3TGprNExERTNOUzQ0T0NBeU1UTXVNVFFzTVRjMUxqYzRJREl4TlM0ek1Dd3hOelV1TnpnZ01qRTNMalEyTERFM05pNHlOeUF5TVRrdU5qTXNNVGMyTGprMklESXlNUzQzT1N3eE56WXVOellnTWpJekxqazFMREUzTmk0ME55QXlNall1TVRJc01UYzFMalU0SURJeU9DNHlPQ3d4TnpNdU1ERWdNak13TGpRMExERTNNQzQ0TkNBeU16SXVOakFzTVRjd0xqTTBJREl6TkM0M055d3hOekV1TWpNZ01qTTJMamt6TERFM015NDBNQ0F5TXprdU1Ea3NNVGN6TGpZd0lESTBNUzR5Tml3eE56TXVNREVnTWpRekxqUXlMREUzTXk0d01TQXlORFV1TlRnc01UY3pMalV3SURJME55NDNOQ3d4TnpNdU56QWdNalE1TGpreExERTJOeTR5T0NBeU5USXVNRGNzTXpRdU1UWWdNalUwTGpJekxEVTNMamc0SURJMU5pNHpPU3d4TVRZdU5EZ2dNalU0TGpVMkxERXpPQzQyTWlBeU5qQXVOeklzTVRVeExqYzJJREkyTWk0NE9Dd3hOVGN1TkRrZ01qWTFMakExTERFME9DNDJNQ0F5TmpjdU1qRXNNVEUwTGpNeElESTJPUzR6Tnl3eE1URXVOelFnTWpjeExqVXpMREV5Tnk0Mk5TQXlOek11TnpBc01UQTRMakE0SURJM05TNDROaXd6TUM0eU1TQXlOemd1TURJc056WXVOallnTWpnd0xqRTVMREV3Tmk0Mk1DQXlPREl1TXpVc01USTFMamczSURJNE5DNDFNU3d4TXprdU1qRWdNamcyTGpZM0xERTBPQzR3TVNBeU9EZ3VPRFFzTVRVekxqWTBJREk1TVM0d01Dd3hOVGN1T0RrZ01qa3pMakUyTERFMk1TNDFOU0F5T1RVdU16TXNNVFkxTGpBd0lESTVOeTQwT1N3eE5qVXVOekFnTWprNUxqWTFMREUyTmk0M09DQXpNREV1T0RFc01UWTVMakEySURNd015NDVPQ3d4TmpZdU9EZ2dNekEyTGpFMExERXpOeTQ0TXlBek1EZ3VNekFzTVRJeUxqTXhJRE14TUM0ME5pd3hNekl1TnprZ016RXlMall6TERFME1TNHpPU0F6TVRRdU56a3NNVEk1TGpReklETXhOaTQ1TlN3eE1EQXVOamNnTXpFNUxqRXlMREV5TXk0eU1DQXpNakV1TWpnc01UUXdMalV3SURNeU15NDBOQ3d4TlRFdU1qY2dNekkxTGpZd0xERTFOaTQzTUNBek1qY3VOemNzTVRVNUxqRTNJRE15T1M0NU15d3hOalV1TlRBZ016TXlMakE1TERFMk9DNDVOaUF6TXpRdU1qWXNNVGN3TGpnMElETXpOaTQwTWl3eE56RXVOak1nTXpNNExqVTRMREUyTlM0NE1DQXpOREF1TnpRc01UWTBMamN4SURNME1pNDVNU3d4TmpVdU9Ea2dNelExTGpBM0xERTJOUzQ0TUNBek5EY3VNak1zTVRZM0xqSTRJRE0wT1M0ME1Dd3hOamd1TmpZZ016VXhMalUyTERFM01TNHdNeUF6TlRNdU56SXNNVGN5TGpVeUlETTFOUzQ0T0N3eE56TXVPVEFnTXpVNExqQTFMREUzTXk0NE1DQXpOakF1TWpFc01UYzJMalEzSURNMk1pNHpOeXd4TnpjdU5UQWdNelkwTGpVekxERTNPQzR4TUNBek5qWXVOekFzTVRjNExqY3lJRE0yT0M0NE5pd3hOemt1TURNZ016Y3hMakF5TERFM09TNHlOaUF6TnpNdU1Ua3NNVGM1TGpneklETTNOUzR6TlN3eE9EQXVNREFnTXpjM0xqVXhMREU0TUM0ME5pQXpOemt1Tmpjc01UZ3dMams1SURNNE1TNDROQ3d4T0RBdU5USWdNemcwTGpBd0xERTRNUzQwTlNBek9EWXVNVFlzTVRneExqa3lJRE00T0M0ek15d3hPREl1TlRZZ016a3dMalE1TERFNE1pNDVPQ0F6T1RJdU5qVXNNVGd6TGpFMElETTVOQzQ0TVN3eE9ETXVNalVnTXprMkxqazRMREU0TXk0eE5DQXpPVGt1TVRRc01UZ3pMak00SURRd01TNHpNQ3d4T0RNdU1qa2dOREF6TGpRM0xERTRNeTQyTkNBME1EVXVOak1zTVRnMExqQTNJRFF3Tnk0M09Td3hPRE11T1RJZ05EQTVMamsxTERFM09DNDFNeUEwTVRJdU1USXNNVGd3TGpjd0lEUXhOQzR5T0N3eE9ERXVPVGNnTkRFMkxqUTBMREU0TWk0ek9TQTBNVGd1TmpBc01UZ3lMamcwSURReU1DNDNOeXd4T0RNdU16WWdOREl5TGprekxERTRNeTQwTnlBME1qVXVNRGtzTVRneUxqUTFJRFF5Tnk0eU5pd3hOelV1T0RnZ05ESTVMalF5TERFM05pNDROaUEwTXpFdU5UZ3NNVGM1TGpBeUlEUXpNeTQzTkN3eE9EQXVPVFlnTkRNMUxqa3hMREU0TVM0NE5TQTBNemd1TURjc01UZ3lMall6SURRME1DNHlNeXd4T0RJdU56Y2dORFF5TGpRd0xERTRNeTR6T1NBME5EUXVOVFlzTVRnekxqYzVJRFEwTmk0M01pd3hPRFF1TURRZ05EUTRMamc0TERFNE5DNHhOU0EwTlRFdU1EVXNNVGcwTGpReklEUTFNeTR5TVN3eE9EUXVOamdnTkRVMUxqTTNMREU0TkM0NU1pQTBOVGN1TlRRc01UZzBMalF6SURRMU9TNDNNQ3d4T0RRdU5ETWdORFl4TGpnMkxERTROQzQwTnlBME5qUXVNRElzTVRnMExqVXlJRFEyTmk0eE9Td3hPRFF1TURrZ05EWTRMak0xTERFNE5DNHlOU0EwTnpBdU5URXNNVGcwTGpJMElEUTNNaTQyT0N3eE9EUXVOekVnTkRjMExqZzBMREU0TkM0NE5DQTBOemN1TURBc01UZzFMakUxSUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNUzR3TnpzZ2MzUnliMnRsT2lBalJqZzNOalpFT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p3dlp6NEtQR2NnWTJ4cGNDMXdZWFJvUFNkMWNtd29JMk53VFVNMGQwMUlkekZOUkZGMVRVUkNPRTFETkhkTlNIZDVUbFJKZFUxRVFUMHBKejRLUEM5blBnbzhaR1ZtY3o0S0lDQThZMnhwY0ZCaGRHZ2dhV1E5SjJOd1RXcFZkVTFFYURoT1JHczBUR3BWZVdaRVZYVk9SR2c0VFdwSmRVNUVRVDBuUGdvZ0lDQWdQSEpsWTNRZ2VEMG5NalV1TURnbklIazlKelV1TkRnbklIZHBaSFJvUFNjME56TXVORFFuSUdobGFXZG9kRDBuTVRZdU9USW5JQzgrQ2lBZ1BDOWpiR2x3VUdGMGFENEtQQzlrWldaelBnbzhaeUJqYkdsd0xYQmhkR2c5SjNWeWJDZ2pZM0JOYWxWMVRVUm9PRTVFYXpSTWFsVjVaa1JWZFU1RWFEaE5ha2wxVGtSQlBTa25QZ284ZEdWNGRDQjRQU2N5TmpFdU9EQW5JSGs5SnpFM0xqQTVKeUIwWlhoMExXRnVZMmh2Y2owbmJXbGtaR3hsSnlCemRIbHNaVDBuWm05dWRDMXphWHBsT2lBNExqZ3djSGc3Wm1sc2JEb2dJekZCTVVFeFFUc2dabTl1ZEMxbVlXMXBiSGs2SUNKQmNtbGhiQ0k3SnlCMFpYaDBUR1Z1WjNSb1BTYzBPUzR6TkhCNEp5QnNaVzVuZEdoQlpHcDFjM1E5SjNOd1lXTnBibWRCYm1SSGJIbHdhSE1uUGpBd01EWXdJQ2htZERNdmN5azhMM1JsZUhRK0Nqd3ZaejRLUEdjZ1kyeHBjQzF3WVhSb1BTZDFjbXdvSTJOd1RVTTBkMDFJZHpGTlJGRjFUVVJDT0UxRE5IZE5TSGQ1VGxSSmRVMUVRVDBwSno0S1BIUmxlSFFnZUQwbk1UVXlMalU0SnlCNVBTY3lNRFV1TkRjbklIUmxlSFF0WVc1amFHOXlQU2R0YVdSa2JHVW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEdG1hV3hzT2lBak5FUTBSRFJFT3lCbWIyNTBMV1poYldsc2VUb2dJa0Z5YVdGc0lqc25JSFJsZUhSTVpXNW5kR2c5SnpFMExqRTVjSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytTbUZ1UEM5MFpYaDBQZ284ZEdWNGRDQjRQU2N6TkRjdU1qTW5JSGs5SnpJd05TNDBOeWNnZEdWNGRDMWhibU5vYjNJOUoyMXBaR1JzWlNjZ2MzUjViR1U5SjJadmJuUXRjMmw2WlRvZ09DNDRNSEI0TzJacGJHdzZJQ00wUkRSRU5FUTdJR1p2Ym5RdFptRnRhV3g1T2lBaVFYSnBZV3dpT3ljZ2RHVjRkRXhsYm1kMGFEMG5NVE11Tmpsd2VDY2diR1Z1WjNSb1FXUnFkWE4wUFNkemNHRmphVzVuUVc1a1IyeDVjR2h6Sno1QmNISThMM1JsZUhRK0NqeDBaWGgwSUhnOUp6SXdMakUxSnlCNVBTY3hPVEF1TkRrbklIUmxlSFF0WVc1amFHOXlQU2RsYm1RbklITjBlV3hsUFNkbWIyNTBMWE5wZW1VNklEZ3VPREJ3ZUR0bWFXeHNPaUFqTkVRMFJEUkVPeUJtYjI1MExXWmhiV2xzZVRvZ0lrRnlhV0ZzSWpzbklIUmxlSFJNWlc1bmRHZzlKelF1T0Rsd2VDY2diR1Z1WjNSb1FXUnFkWE4wUFNkemNHRmphVzVuUVc1a1IyeDVjR2h6Sno0d1BDOTBaWGgwUGdvOGRHVjRkQ0I0UFNjeU1DNHhOU2NnZVQwbk1UUXhMakE0SnlCMFpYaDBMV0Z1WTJodmNqMG5aVzVrSnlCemRIbHNaVDBuWm05dWRDMXphWHBsT2lBNExqZ3djSGc3Wm1sc2JEb2dJelJFTkVRMFJEc2dabTl1ZEMxbVlXMXBiSGs2SUNKQmNtbGhiQ0k3SnlCMFpYaDBUR1Z1WjNSb1BTYzVMamM0Y0hnbklHeGxibWQwYUVGa2FuVnpkRDBuYzNCaFkybHVaMEZ1WkVkc2VYQm9jeWMrTlRBOEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpJd0xqRTFKeUI1UFNjNU1TNDJOaWNnZEdWNGRDMWhibU5vYjNJOUoyVnVaQ2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1UUXVOamR3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejR4TURBOEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpJd0xqRTFKeUI1UFNjME1pNHlOU2NnZEdWNGRDMWhibU5vYjNJOUoyVnVaQ2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1UUXVOamR3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejR4TlRBOEwzUmxlSFErQ2p4c2FXNWxJSGd4UFNjeU5Ea3VOekFuSUhreFBTY3lNekl1TkRBbklIZ3lQU2N5TmpNdU5UTW5JSGt5UFNjeU16SXVOREFuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklERXVNRGM3SUhOMGNtOXJaVG9nSTBZNE56WTJSRHNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284ZEdWNGRDQjRQU2N5TnpBdU56UW5JSGs5SnpJek5TNDFOU2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPeUJtYjI1MExXWmhiV2xzZVRvZ0lrRnlhV0ZzSWpzbklIUmxlSFJNWlc1bmRHZzlKelF1T0Rsd2VDY2diR1Z1WjNSb1FXUnFkWE4wUFNkemNHRmphVzVuUVc1a1IyeDVjR2h6Sno0eFBDOTBaWGgwUGdvOEwyYytDand2Wno0S1BDOXpkbWMrJyBzdHlsZT0nd2lkdGg6NTA0cHg7IG1heC13aWR0aDoxMDAlOyBkaXNwbGF5OmJsb2NrJyBhbHQ9J3RpbWUgc2VyaWVzJyAvPjxkaXYgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz48YSBocmVmPSdkYXRhOnRleHQvY3N2O2Jhc2U2NCxJbU52ZG1WeVlXZGxYMmxrSWl3aWNHRnlZVzFsZEdWeUlpd2ljR0Z5WVcxbGRHVnlYMnhoWW1Wc0lpd2lkVzVwZENJc0ltUmhkR1YwYVcxbElpd2llQ0lzSW5raUxDSjZJaXdpZG1Gc2RXVWlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMwek1Td3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREl1TWpFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVE13TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01pNDFNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1qa3NMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d5TGpZMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB5T0N3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxETXVNVFFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxUSTNMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTXk0eE13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFV0TWpZc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3pMakk1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05TMHlOU3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERJdU9EVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEExTFRJMExDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNaTQ1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05TMHlNeXd0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERJdU9UUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEExTFRJeUxDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNaTQ1TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EVXRNakVzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3eUxqUTFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMweU1Dd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREl1TmprS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEU1TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01pNDVOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1UZ3NMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d6TGpJekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB4Tnl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxETXVNelFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxURTJMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTXk0MU9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFV0TVRVc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMweE5Dd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRFF1TmpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEV6TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc05DNDNOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1USXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3cxTGpVMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB4TVN3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEWXVORFVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxURXdMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzT0M0ME1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFV0TURrc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3hNQzQyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05TMHdPQ3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERFeExqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEExTFRBM0xDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNOQzQ1TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EVXRNRFlzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3ekxqa3hDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMwd05Td3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRFF1TURNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEEwTEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc05DNDFOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1ETXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3cxTGpBeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB3TWl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEVXVORE1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxUQXhMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTmk0M01nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFF0TXpBc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzRMamt4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05DMHlPU3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERNdU5EWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEEwTFRJNExDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNeTR6TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EUXRNamNzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3ekxqYzBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TkMweU5pd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRFF1TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EUXRNalVzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3MExqQXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TkMweU5Dd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRFF1TWpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTBMVEl6TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc05DNHhOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURRdE1qSXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3cwTGpJMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOQzB5TVN3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEUXVOREVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMExUSXdMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTkM0NE5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFF0TVRrc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzFMalE0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05DMHhPQ3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERVdU9UWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEEwTFRFM0xDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNOaTQ1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05DMHhOaXd0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERZdU5ESUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEEwTFRFMUxDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNOaTQ1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EUXRNVFFzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3M0xqUXpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TkMweE15d3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRGN1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EUXRNVElzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3NExqRTRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TkMweE1Td3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRGd1TkRFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTBMVEV3TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc09DNDNNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURRdE1Ea3NMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3c1TGpNMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOQzB3T0N3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEa3VPVFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMExUQTNMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTVRFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTBMVEEyTEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01UTXVOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURRdE1EVXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d4TXk0MkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOQzB3TkN3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERTFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TkMwd015d3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREUyTGpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTBMVEF5TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01UZ3VPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURRdE1ERXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d5TUM0ekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNeTB6TVN3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxESXhMamdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBekxUTXdMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTWpFdU53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRE10TWprc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3lNaTQ1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd015MHlPQ3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERJeExqZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF6TFRJM0xDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNVFV1T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ETXRNallzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3eE5pNDNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TXkweU5Td3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREU0TGpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXpMVEkwTEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01qSXVNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURNdE1qTXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d5T0M0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNeTB5TWl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxETXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TXkweU1Td3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRE0yTGpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXpMVEl3TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc05EY3VOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURNdE1Ua3NMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3cyTkM0NUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNeTB4T0N3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEZzNMamNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBekxURTNMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTlRndU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRE10TVRZc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzBOaTQxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd015MHhOU3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERVMUxqSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF6TFRFMExDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNOalV1T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ETXRNVE1zTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3MU1DNHhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TXkweE1pd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREl3TGpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXpMVEV4TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01UZ3VOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURNdE1UQXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d5TUM0NENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNeTB3T1N3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxESXhMamtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBekxUQTRMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTWpJdU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRE10TURjc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3lOaTR4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd015MHdOaXd0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERJNUxqZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF6TFRBMUxDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNelF1TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ETXRNRFFzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3ek9TNDRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TXkwd015d3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRFE0TGpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXpMVEF5TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc05qSXVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURNdE1ERXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3c0TVM0M0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNaTB5T0N3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERXhNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURJdE1qY3NMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d4TlRrS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXlMVEkyTEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc09EQXVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURJdE1qVXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3cyTUM0MENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNaTB5TkN3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEYzJMalVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeUxUSXpMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTnpNdU9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREl0TWpJc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3pPUzR5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01pMHlNU3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERNd0xqSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF5TFRJd0xDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNellLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeUxURTVMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTkRrdU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREl0TVRnc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzNNUzQzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01pMHhOeXd0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERFek1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREl0TVRZc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3hOVFVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeUxURTFMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTWpBdU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREl0TVRRc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3hNeTQ0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01pMHhNeXd0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERFMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNaTB4TWl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERTBMalVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeUxURXhMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTVRRdU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREl0TVRBc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3hNeTQ1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01pMHdPU3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERFMExqRUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF5TFRBNExDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNVFl1TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ESXRNRGNzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3eE55NHlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TWkwd05pd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREUyTGpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXlMVEExTEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01UUXVOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURJdE1EUXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d4TVM0NUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNaTB3TXl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TWkwd01pd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREV3TGpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXlMVEF4TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01UQXVOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURFdE16RXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d4TVM0eUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNUzB6TUN3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERXhMamNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeExUSTVMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTVRFdU53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREV0TWpnc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3hNUzQyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01TMHlOeXd0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERFd0xqZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF4TFRJMkxDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNVEF1TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ERXRNalVzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3NExqYzVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TVMweU5Dd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRGd1TVRFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXhMVEl6TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc09DNDNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TVMweU1pd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRGd1TkRFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXhMVEl4TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc055NDRNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURFdE1qQXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3cyTGpZeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNUzB4T1N3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEY3VPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURFdE1UZ3NMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3c0TGpJMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNUzB4Tnl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEa3VNRFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeExURTJMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTVRNdU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREV0TVRVc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3hOeTQzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01TMHhOQ3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERFeUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNUzB4TXl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERXhMakVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeExURXlMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTVRBdU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREV0TVRFc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzVMalU1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01TMHhNQ3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERrdU5EVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF4TFRBNUxDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNPUzR4T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ERXRNRGdzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3NUxqVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF4TFRBM0xDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNPUzQzTVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ERXRNRFlzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3NUxqVXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TVMwd05Td3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRGt1TlRRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXhMVEEwTEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc09TNDNNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURFdE1ETXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3c1TGpjNUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNUzB3TWl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERXdMakVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeExUQXhMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTVRBdU9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEl0TXpFc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzVMamd5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5TlMweE1pMHpNQ3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERFeExqa0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV5TFRJNUxDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNVEV1TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1USXRNamdzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3eE1DNHlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TWkweU55d3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREV3TGpFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXlMVEkyTEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01UQXVPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRJdE1qVXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d4TWk0ekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNaTB5TkN3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERTBMak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeUxUSXpMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTVRNdU9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEl0TWpJc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3hOQzQzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5TlMweE1pMHlNU3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERFM0xqRUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV5TFRJd0xDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNakF1TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1USXRNVGtzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3eE5pNDNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TWkweE9Dd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMRFl1T1RNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXlMVEUzTEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc05pNDJPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRJdE1UWXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3czTGpJNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNaTB4TlN3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEY3VNamNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeUxURTBMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTnk0NE1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEl0TVRNc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzJMamMzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5TlMweE1pMHhNaXd0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERndU9UUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV5TFRFeExDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNPUzR6TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1USXRNVEFzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3NUxqazVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TWkwd09Td3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREV3TGpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXlMVEE0TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01URXVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRJdE1EY3NMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d4TWk0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNaTB3Tml3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TWkwd05Td3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREUwTGpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXlMVEEwTEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01UVXVNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRJdE1ETXNMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d4Tmk0NUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNaTB3TWl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxERXpMaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeUxUQXhMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTnk0d05Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEV0TXpBc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzJMak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeExUSTVMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTkM0NE9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEV0TWpnc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzJMamNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeExUSTNMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTVRRdU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEV0TWpZc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTd3hPQzQxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5TlMweE1TMHlOU3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERjdU1qZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV4TFRJMExDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNOQzR5TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1URXRNak1zTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3MExqZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV4TFRJeUxDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNNeTQ0TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1URXRNakVzTFRjNExqVTRNekExTlRVMU5UVTFOVFVzTXpZdU1UazBNVFkyTmpZMk5qWTJOeXhPUVN3ekxqUTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TVMweU1Dd3ROemd1TlRnek1EVTFOVFUxTlRVMU5Td3pOaTR4T1RReE5qWTJOalkyTmpZM0xFNUJMREl1TmpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXhMVEU1TEMwM09DNDFPRE13TlRVMU5UVTFOVFUxTERNMkxqRTVOREUyTmpZMk5qWTJOamNzVGtFc01pNDFPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRFdE1UZ3NMVGM0TGpVNE16QTFOVFUxTlRVMU5UVXNNell1TVRrME1UWTJOalkyTmpZMk55eE9RU3d5TGpFMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNUzB4Tnl3dE56Z3VOVGd6TURVMU5UVTFOVFUxTlN3ek5pNHhPVFF4TmpZMk5qWTJOalkzTEU1QkxEQXVPVElLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeExURTJMQzAzT0M0MU9ETXdOVFUxTlRVMU5UVTFMRE0yTGpFNU5ERTJOalkyTmpZMk5qY3NUa0VzTWk0M05Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEV0TVRVc0xUYzRMalU0TXpBMU5UVTFOVFUxTlRVc016WXVNVGswTVRZMk5qWTJOalkyTnl4T1FTdzFMakV4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5TlMweE1TMHhOQ3d0TnpndU5UZ3pNRFUxTlRVMU5UVTFOU3d6Tmk0eE9UUXhOalkyTmpZMk5qWTNMRTVCTERNdU5qSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV4TFRFekxDMDNPQzQxT0RNd05UVTFOVFUxTlRVMUxETTJMakU1TkRFMk5qWTJOalkyTmpjc1RrRXNOQzR5JyBkb3dubG9hZD0nc3RhdGlvbi1VU0dTLTAyMDgxNTAwLmNzdic+RG93bmxvYWQgQ1NWPFwvYT48XC9kaXY+PFwvZGl2PiIsIjxkaXYgc3R5bGU9J2ZvbnQtZmFtaWx5OnN5c3RlbS11aSxzYW5zLXNlcmlmOyBmb250LXNpemU6MTJweDsgbWF4LXdpZHRoOjUyOHB4Jz48ZGl2IHN0eWxlPSdmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206NHB4Jz5UQVIgUklWRVIgQVQgTE9VSVNCVVJHLCBOQzxcL2Rpdj48aW1nIHNyYz0nZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2Ymowbk1TNHdKeUJsYm1OdlpHbHVaejBuVlZSR0xUZ25JRDgrQ2p4emRtY2dlRzFzYm5NOUoyaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabkp5QjRiV3h1Y3pwNGJHbHVhejBuYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRiR2x1YXljZ2QybGtkR2c5SnpVd05DNHdNSEIwSnlCb1pXbG5hSFE5SnpJMU1pNHdNSEIwSnlCMmFXVjNRbTk0UFNjd0lEQWdOVEEwTGpBd0lESTFNaTR3TUNjK0NqeG5JR05zWVhOelBTZHpkbWRzYVhSbEp6NEtQR1JsWm5NK0NpQWdQSE4wZVd4bElIUjVjR1U5SjNSbGVIUXZZM056Sno0OElWdERSRUZVUVZzS0lDQWdJQzV6ZG1kc2FYUmxJR3hwYm1Vc0lDNXpkbWRzYVhSbElIQnZiSGxzYVc1bExDQXVjM1puYkdsMFpTQndiMng1WjI5dUxDQXVjM1puYkdsMFpTQndZWFJvTENBdWMzWm5iR2wwWlNCeVpXTjBMQ0F1YzNabmJHbDBaU0JqYVhKamJHVWdld29nSUNBZ0lDQm1hV3hzT2lCdWIyNWxPd29nSUNBZ0lDQnpkSEp2YTJVNklDTXdNREF3TURBN0NpQWdJQ0FnSUhOMGNtOXJaUzFzYVc1bFkyRndPaUJ5YjNWdVpEc0tJQ0FnSUNBZ2MzUnliMnRsTFd4cGJtVnFiMmx1T2lCeWIzVnVaRHNLSUNBZ0lDQWdjM1J5YjJ0bExXMXBkR1Z5YkdsdGFYUTZJREV3TGpBd093b2dJQ0FnZlFvZ0lDQWdMbk4yWjJ4cGRHVWdkR1Y0ZENCN0NpQWdJQ0FnSUhkb2FYUmxMWE53WVdObE9pQndjbVU3Q2lBZ0lDQjlDaUFnSUNBdWMzWm5iR2wwWlNCbkxtZHNlWEJvWjNKdmRYQWdjR0YwYUNCN0NpQWdJQ0FnSUdacGJHdzZJR2x1YUdWeWFYUTdDaUFnSUNBZ0lITjBjbTlyWlRvZ2JtOXVaVHNLSUNBZ0lIMEtJQ0JkWFQ0OEwzTjBlV3hsUGdvOEwyUmxabk0rQ2p4eVpXTjBJSGRwWkhSb1BTY3hNREFsSnlCb1pXbG5hSFE5SnpFd01DVW5JSE4wZVd4bFBTZHpkSEp2YTJVNklHNXZibVU3SUdacGJHdzZJQ05HUmtaR1JrWTdKeTgrQ2p4a1pXWnpQZ29nSUR4amJHbHdVR0YwYUNCcFpEMG5ZM0JOUXpSM1RVaDNNVTFFVVhWTlJFSTRUVU0wZDAxSWQzbE9WRWwxVFVSQlBTYytDaUFnSUNBOGNtVmpkQ0I0UFNjd0xqQXdKeUI1UFNjd0xqQXdKeUIzYVdSMGFEMG5OVEEwTGpBd0p5Qm9aV2xuYUhROUp6STFNaTR3TUNjZ0x6NEtJQ0E4TDJOc2FYQlFZWFJvUGdvOEwyUmxabk0rQ2p4bklHTnNhWEF0Y0dGMGFEMG5kWEpzS0NOamNFMUROSGROU0hjeFRVUlJkVTFFUWpoTlF6UjNUVWgzZVU1VVNYVk5SRUU5S1NjK0NqeHlaV04wSUhnOUp6QXVNREFuSUhrOUp5MHdMakF3TURBd01EQXdNREF3TURBeU9DY2dkMmxrZEdnOUp6VXdOQzR3TUNjZ2FHVnBaMmgwUFNjeU5USXVNREFuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklERXVNRGM3SUhOMGNtOXJaVG9nYm05dVpUc2dabWxzYkRvZ0kwWkdSa1pHUmpzbklDOCtDand2Wno0S1BHUmxabk0rQ2lBZ1BHTnNhWEJRWVhSb0lHbGtQU2RqY0UxcWEzVlBWR1E0VGtSck5FeHFWWGxtUkVsNVRHcFJkMlpFUlRWT1F6UjVUa0U5UFNjK0NpQWdJQ0E4Y21WamRDQjRQU2N5T1M0NU55Y2dlVDBuTWpJdU5EQW5JSGRwWkhSb1BTYzBOamd1TlRVbklHaGxhV2RvZEQwbk1UY3hMamcwSnlBdlBnb2dJRHd2WTJ4cGNGQmhkR2crQ2p3dlpHVm1jejRLUEdjZ1kyeHBjQzF3WVhSb1BTZDFjbXdvSTJOd1RXcHJkVTlVWkRoT1JHczBUR3BWZVdaRVNYbE1hbEYzWmtSRk5VNUROSGxPUVQwOUtTYytDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekk1TGprM0xERTJNUzQ1TnlBME9UZ3VOVElzTVRZeExqazNJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01DNDFNenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekk1TGprM0xERXdPUzQwTnlBME9UZ3VOVElzTVRBNUxqUTNJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01DNDFNenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekk1TGprM0xEVTJMams0SURRNU9DNDFNaXcxTmk0NU9DQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURBdU5UTTdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3hPRGN1TVRrc01UazBMakkwSURFNE55NHhPU3d5TWk0ME1DQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURBdU5UTTdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3pPRE11TURRc01UazBMakkwSURNNE15NHdOQ3d5TWk0ME1DQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURBdU5UTTdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3lPUzQ1Tnl3eE9EZ3VNakVnTkRrNExqVXlMREU0T0M0eU1TQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3lPUzQ1Tnl3eE16VXVOeklnTkRrNExqVXlMREV6TlM0M01pQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3lPUzQ1Tnl3NE15NHlNeUEwT1RndU5USXNPRE11TWpNZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkZRa1ZDUlVJN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BIQnZiSGxzYVc1bElIQnZhVzUwY3owbk1qa3VPVGNzTXpBdU56TWdORGs0TGpVeUxETXdMamN6SUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNUzR3TnpzZ2MzUnliMnRsT2lBalJVSkZRa1ZDT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpnNUxqZ3dMREU1TkM0eU5DQTRPUzQ0TUN3eU1pNDBNQ0FuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklERXVNRGM3SUhOMGNtOXJaVG9nSTBWQ1JVSkZRanNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284Y0c5c2VXeHBibVVnY0c5cGJuUnpQU2N5T0RRdU5UZ3NNVGswTGpJMElESTROQzQxT0N3eU1pNDBNQ0FuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklERXVNRGM3SUhOMGNtOXJaVG9nSTBWQ1JVSkZRanNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284Y0c5c2VXeHBibVVnY0c5cGJuUnpQU2MwT0RFdU5UQXNNVGswTGpJMElEUTRNUzQxTUN3eU1pNDBNQ0FuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklERXVNRGM3SUhOMGNtOXJaVG9nSTBWQ1JVSkZRanNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284Y0c5c2VXeHBibVVnY0c5cGJuUnpQU2MxTVM0eU55d3hOekF1T0RrZ05UTXVOREVzTVRjekxqUTJJRFUxTGpVMUxERTNOUzQ0TXlBMU55NDJPU3d4TnpJdU1qQWdOVGt1T0RNc01UWXdMakV6SURZeExqazNMREUyT1M0MU9DQTJOQzR4TVN3eE56UXVPRGdnTmpZdU1qVXNNVGMxTGpneklEWTRMak01TERFMU9TNHdPQ0EzTUM0MU5Dd3hOREl1TWpnZ056SXVOamdzTVRReUxqSTRJRGMwTGpneUxERTJOeTQzTkNBM05pNDVOaXd4TnpBdU9Ea2dOemt1TVRBc01UWTNMalE0SURneExqSTBMREV6TlM0M01pQTRNeTR6T0N3eE5qRXVOekVnT0RVdU5USXNNVGN3TGpFd0lEZzNMalkyTERFM01DNDRPU0E0T1M0NE1Dd3hNemt1TkRBZ09URXVPVFFzT0RjdU5ETWdPVFF1TURnc05qa3VOVGdnT1RZdU1qSXNNVFF3TGpRMUlEazRMak0yTERFMk5pNDJOQ0F4TURBdU5UQXNNVGN3TGpNM0lERXdNaTQyTkN3eE56SXVPVGtnTVRBMExqYzRMREUxTXk0MU55QXhNRFl1T1RJc01UQTBMakl5SURFd09TNHdOaXc1T0M0ME5TQXhNVEV1TWpBc01UWXlMak0wSURFeE15NHpOQ3d4TmprdU16SWdNVEUxTGpRNExERTNNaTQwTnlBeE1UY3VOak1zTVRjMUxqZ3pJREV4T1M0M055d3hOemN1TnpJZ01USXhMamt4TERFM09DNHlOQ0F4TWpRdU1EVXNNVGM0TGpjM0lERXlOaTR4T1N3eE56a3VNRE1nTVRJNExqTXpMREUzT1M0d015QXhNekF1TkRjc01UYzVMakk1SURFek1pNDJNU3d4TnprdU1qa2dNVE0wTGpjMUxERTNPUzQyTVNBeE16WXVPRGtzTVRjNUxqWXhJREV6T1M0d015d3hOemt1T0RRZ01UUXhMakUzTERFM09TNDROQ0F4TkRNdU16RXNNVGd3TGpVMUlERTBOUzQwTlN3eE5qa3VOVGdnTVRRM0xqVTVMREV5Tmk0eU55QXhORGt1TnpNc09EWXVPVEFnTVRVeExqZzNMREUxTnk0eU5DQXhOVFF1TURFc01UY3pMalEySURFMU5pNHhOU3d4TnpVdU9ETWdNVFU0TGpJNUxERTNOeTR3TVNBeE5qQXVORE1zTVRjekxqUTJJREUyTWk0MU9Dd3hOalF1TWpJZ01UWTBMamN5TERFM05TNHpOU0F4TmpZdU9EWXNNVGMzTGpjeUlERTJPUzR3TUN3eE56a3VNVE1nTVRjeExqRTBMREUzT1M0eE15QXhOek11TWpnc01UWTVMakExSURFM05TNDBNaXd4TnpjdU1ERWdNVGMzTGpVMkxERTNPUzQyTVNBeE56a3VOekFzTVRnd0xqVTFJREU0TVM0NE5Dd3hPREV1TnpFZ01UZ3pMams0TERFNE1TNDNNU0F4T0RZdU1USXNNVGd4TGpjeElERTRPQzR5Tml3eE9ESXVOakFnTVRrd0xqUXdMREU0TWk0eE9DQXhPVEl1TlRRc01UZ3lMamd6SURFNU5DNDJPQ3d4T0RBdU5UVWdNVGsyTGpneUxERTNOeTQzTWlBeE9UZ3VPVFlzTVRZM0xqYzBJREl3TVM0eE1Dd3hOemt1TVRNZ01qQXpMakkwTERFNE1DNDFOU0F5TURVdU16Z3NNVGMwTGpZMElESXdOeTQxTWl3eE56UXVOalFnTWpBNUxqWTNMREUzT0M0Mk5pQXlNVEV1T0RFc01UZ3dMalUxSURJeE15NDVOU3d4TlRFdU5EY2dNakUyTGpBNUxERXlPQzR4TVNBeU1UZ3VNak1zTVRjeExqUXlJREl5TUM0ek55d3hOelV1T0RNZ01qSXlMalV4TERFNE1DNDFOU0F5TWpRdU5qVXNNVGd4TGpjeElESXlOaTQzT1N3eE9ESXVPRE1nTWpJNExqa3pMREU0TXk0d055QXlNekV1TURjc01UZ3pMakEzSURJek15NHlNU3d4T0RNdU9URWdNak0xTGpNMUxERTRNeTQ1TVNBeU16Y3VORGtzTVRnekxqa3hJREl6T1M0Mk15d3hPRFF1T1RNZ01qUXhMamMzTERFNE5DNDVNeUF5TkRNdU9URXNNVGcxTGpNeklESTBOaTR3TlN3eE9EUXVOVFFnTWpRNExqRTVMREU0TkM0ek15QXlOVEF1TXpNc01UZ3pMakk0SURJMU1pNDBOeXd4T0RRdU56VWdNalUwTGpZeExERTROQzR6TXlBeU5UWXVOellzTVRZeUxqazJJREkxT0M0NU1Dd3hOemN1TkRnZ01qWXhMakEwTERFNE1TNDNNU0F5TmpNdU1UZ3NNVGM1TGpRd0lESTJOUzR6TWl3eE56Z3VORElnTWpZM0xqUTJMREUzTnk0M01pQXlOamt1TmpBc01UYzRMalkySURJM01TNDNOQ3d4T0RFdU1qWWdNamN6TGpnNExERTRNQzQxTlNBeU56WXVNRElzTVRnekxqQTNJREkzT0M0eE5pd3hORFl1TWpJZ01qZ3dMak13TERnNUxqVXpJREk0TWk0ME5Dd3pNQzR5TVNBeU9EUXVOVGdzTlRZdU1Ua2dNamcyTGpjeUxERTBOUzR4TnlBeU9EZ3VPRFlzT1RndU5EVWdNamt4TGpBd0xERXlOaTR5TnlBeU9UTXVNVFFzTVRjekxqazBJREk1TlM0eU9Dd3hOemN1TWpRZ01qazNMalF5TERFM09TNHpOeUF5T1RrdU5UWXNNVGd3TGpjNUlETXdNUzQzTVN3eE9ERXVOekVnTXpBekxqZzFMREU0TWk0ek9TQXpNRFV1T1Rrc01UZ3lMall3SURNd09DNHhNeXd4T0RJdU1UZ2dNekV3TGpJM0xERTRNaTQyTUNBek1USXVOREVzTVRneUxqZ3pJRE14TkM0MU5Td3hPRE11TnpBZ016RTJMalk1TERFNE15NHlPQ0F6TVRndU9ETXNNVGMzTGprMUlETXlNQzQ1Tnl3eE9ESXVNVGdnTXpJekxqRXhMREU0TWk0NE15QXpNalV1TWpVc01UZzBMakV5SURNeU55NHpPU3d4T0RRdU1USWdNekk1TGpVekxERTROQzQ1TXlBek16RXVOamNzTVRnMExqRXlJRE16TXk0NE1Td3hPRE11TWpnZ016TTFMamsxTERFNE5DNHpNeUF6TXpndU1Ea3NNVGcwTGpVMElETTBNQzR5TXl3eE9EUXVPVE1nTXpReUxqTTNMREU0TlM0ek15QXpORFF1TlRFc01UZzFMak16SURNME5pNDJOU3d4TnprdU5qRWdNelE0TGpnd0xERTRNeTQ1TVNBek5UQXVPVFFzTVRneExqQXlJRE0xTXk0d09Dd3hPREV1TlRBZ016VTFMakl5TERFNE1pNDRNeUF6TlRjdU16WXNNVFUxTGpFMElETTFPUzQxTUN3eE1qVXVNaklnTXpZeExqWTBMREUzTkM0ME1TQXpOak11Tnpnc01UZ3dMalUxSURNMk5TNDVNaXd4T0RJdU16a2dNelk0TGpBMkxERTRNaTQ0TXlBek56QXVNakFzTVRnekxqY3dJRE0zTWk0ek5Dd3hPRE11TnpBZ016YzBMalE0TERFNE5DNDVNeUF6TnpZdU5qSXNNVGd4TGpVd0lETTNPQzQzTml3eE9EQXVNRGdnTXpnd0xqa3dMREUzT1M0eE15QXpPRE11TURRc01UYzVMakV6SURNNE5TNHhPQ3d4T0RNdU1qZ2dNemczTGpNeUxERTRNeTR5T0NBek9Ea3VORFlzTVRJNUxqazFJRE01TVM0Mk1Dd3pOQzQ1TXlBek9UTXVOelFzT0RndU56UWdNemsxTGpnNUxERTBOUzR4TnlBek9UZ3VNRE1zTVRZMExqZzFJRFF3TUM0eE55d3hOemN1TnpJZ05EQXlMak14TERFNE1DNDFOU0EwTURRdU5EVXNNVGd4TGpVd0lEUXdOaTQxT1N3eE9ESXVNemtnTkRBNExqY3pMREU0TXk0eU9DQTBNVEF1T0Rjc01UZ3pMamN3SURReE15NHdNU3d4T0RRdU1USWdOREUxTGpFMUxERTROQzR4TWlBME1UY3VNamtzTVRnMExqa3pJRFF4T1M0ME15d3hPRFF1T1RNZ05ESXhMalUzTERFNE5TNHpNeUEwTWpNdU56RXNNVGcxTGpRMklEUXlOUzQ0TlN3eE9EVXVOVGtnTkRJM0xqazVMREU0TlM0NE1DQTBNekF1TVRNc01UZzFMamcxSURRek1pNHlOeXd4T0RVdU9UWWdORE0wTGpReExERTROaTR3TmlBME16WXVOVFVzTVRnMkxqRXhJRFF6T0M0Mk9Td3hPRFl1TURFZ05EUXdMamcwTERFNE5TNDROU0EwTkRJdU9UZ3NNVGcxTGpZNUlEUTBOUzR4TWl3eE9EVXVNek1nTkRRM0xqSTJMREUzT1M0ek55QTBORGt1TkRBc01UZ3hMalV3SURRMU1TNDFOQ3d4T0RRdU9UTWdORFV6TGpZNExERTROUzR6TXlBME5UVXVPRElzTVRnMUxqUTJJRFExTnk0NU5pd3hPRFV1TmprZ05EWXdMakV3TERFNE5TNDROU0EwTmpJdU1qUXNNVGcyTGpBeElEUTJOQzR6T0N3eE9EWXVNVEVnTkRZMkxqVXlMREU0Tmk0eU55QTBOamd1TmpZc01UZzJMak15SURRM01DNDRNQ3d4T0RZdU5ETWdORGN5TGprMExERTROaTQwTXlBME56VXVNRGdzTVRnMkxqUXpJRFEzTnk0eU1pd3hPRFl1TkRNZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkdPRGMyTmtRN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BDOW5QZ284WnlCamJHbHdMWEJoZEdnOUozVnliQ2dqWTNCTlF6UjNUVWgzTVUxRVVYVk5SRUk0VFVNMGQwMUlkM2xPVkVsMVRVUkJQU2tuUGdvOEwyYytDanhrWldaelBnb2dJRHhqYkdsd1VHRjBhQ0JwWkQwblkzQk5hbXQxVDFSa09FNUVhelJNYWxWNVprUlZkVTVFYURoTmFrbDFUa1JCUFNjK0NpQWdJQ0E4Y21WamRDQjRQU2N5T1M0NU55Y2dlVDBuTlM0ME9DY2dkMmxrZEdnOUp6UTJPQzQxTlNjZ2FHVnBaMmgwUFNjeE5pNDVNaWNnTHo0S0lDQThMMk5zYVhCUVlYUm9QZ284TDJSbFpuTStDanhuSUdOc2FYQXRjR0YwYUQwbmRYSnNLQ05qY0UxcWEzVlBWR1E0VGtSck5FeHFWWGxtUkZWMVRrUm9PRTFxU1hWT1JFRTlLU2MrQ2p4MFpYaDBJSGc5SnpJMk5DNHlOU2NnZVQwbk1UY3VNRGtuSUhSbGVIUXRZVzVqYUc5eVBTZHRhV1JrYkdVbklITjBlV3hsUFNkbWIyNTBMWE5wZW1VNklEZ3VPREJ3ZUR0bWFXeHNPaUFqTVVFeFFURkJPeUJtYjI1MExXWmhiV2xzZVRvZ0lrRnlhV0ZzSWpzbklIUmxlSFJNWlc1bmRHZzlKelE1TGpNMGNIZ25JR3hsYm1kMGFFRmthblZ6ZEQwbmMzQmhZMmx1WjBGdVpFZHNlWEJvY3ljK01EQXdOakFnS0daME15OXpLVHd2ZEdWNGRENEtQQzluUGdvOFp5QmpiR2x3TFhCaGRHZzlKM1Z5YkNnalkzQk5RelIzVFVoM01VMUVVWFZOUkVJNFRVTTBkMDFJZDNsT1ZFbDFUVVJCUFNrblBnbzhkR1Y0ZENCNFBTYzRPUzQ0TUNjZ2VUMG5NakExTGpRM0p5QjBaWGgwTFdGdVkyaHZjajBuYldsa1pHeGxKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjeE15NDJPWEI0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5Qa0Z3Y2p3dmRHVjRkRDRLUEhSbGVIUWdlRDBuTWpnMExqVTRKeUI1UFNjeU1EVXVORGNuSUhSbGVIUXRZVzVqYUc5eVBTZHRhV1JrYkdVbklITjBlV3hsUFNkbWIyNTBMWE5wZW1VNklEZ3VPREJ3ZUR0bWFXeHNPaUFqTkVRMFJEUkVPeUJtYjI1MExXWmhiV2xzZVRvZ0lrRnlhV0ZzSWpzbklIUmxlSFJNWlc1bmRHZzlKekV4TGpJMWNIZ25JR3hsYm1kMGFFRmthblZ6ZEQwbmMzQmhZMmx1WjBGdVpFZHNlWEJvY3ljK1NuVnNQQzkwWlhoMFBnbzhkR1Y0ZENCNFBTYzBPREV1TlRBbklIazlKekl3TlM0ME55Y2dkR1Y0ZEMxaGJtTm9iM0k5SjIxcFpHUnNaU2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1UTXVOamx3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejVQWTNROEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpJMUxqQTBKeUI1UFNjeE9URXVNelluSUhSbGVIUXRZVzVqYUc5eVBTZGxibVFuSUhOMGVXeGxQU2RtYjI1MExYTnBlbVU2SURndU9EQndlRHRtYVd4c09pQWpORVEwUkRSRU95Qm1iMjUwTFdaaGJXbHNlVG9nSWtGeWFXRnNJanNuSUhSbGVIUk1aVzVuZEdnOUp6UXVPRGx3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejR3UEM5MFpYaDBQZ284ZEdWNGRDQjRQU2N5TlM0d05DY2dlVDBuTVRNNExqZzNKeUIwWlhoMExXRnVZMmh2Y2owblpXNWtKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjeE9TNDFObkI0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5Qakl3TURBOEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpJMUxqQTBKeUI1UFNjNE5pNHpPQ2NnZEdWNGRDMWhibU5vYjNJOUoyVnVaQ2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1Ua3VOVFp3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejQwTURBd1BDOTBaWGgwUGdvOGRHVjRkQ0I0UFNjeU5TNHdOQ2NnZVQwbk16TXVPRGduSUhSbGVIUXRZVzVqYUc5eVBTZGxibVFuSUhOMGVXeGxQU2RtYjI1MExYTnBlbVU2SURndU9EQndlRHRtYVd4c09pQWpORVEwUkRSRU95Qm1iMjUwTFdaaGJXbHNlVG9nSWtGeWFXRnNJanNuSUhSbGVIUk1aVzVuZEdnOUp6RTVMalUyY0hnbklHeGxibWQwYUVGa2FuVnpkRDBuYzNCaFkybHVaMEZ1WkVkc2VYQm9jeWMrTmpBd01Ed3ZkR1Y0ZEQ0S1BHeHBibVVnZURFOUp6STFNaTR4TlNjZ2VURTlKekl6TWk0ME1DY2dlREk5SnpJMk5TNDVOeWNnZVRJOUp6SXpNaTQwTUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNUzR3TnpzZ2MzUnliMnRsT2lBalJqZzNOalpFT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4MFpYaDBJSGc5SnpJM015NHhPQ2NnZVQwbk1qTTFMalUxSnlCemRIbHNaVDBuWm05dWRDMXphWHBsT2lBNExqZ3djSGc3SUdadmJuUXRabUZ0YVd4NU9pQWlRWEpwWVd3aU95Y2dkR1Y0ZEV4bGJtZDBhRDBuTkM0NE9YQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqRThMM1JsZUhRK0Nqd3ZaejRLUEM5blBnbzhMM04yWno0PScgc3R5bGU9J3dpZHRoOjUwNHB4OyBtYXgtd2lkdGg6MTAwJTsgZGlzcGxheTpibG9jaycgYWx0PSd0aW1lIHNlcmllcycgLz48ZGl2IHN0eWxlPSdtYXJnaW4tdG9wOjZweCc+PGEgaHJlZj0nZGF0YTp0ZXh0L2NzdjtiYXNlNjQsSW1OdmRtVnlZV2RsWDJsa0lpd2ljR0Z5WVcxbGRHVnlJaXdpY0dGeVlXMWxkR1Z5WDJ4aFltVnNJaXdpZFc1cGRDSXNJbVJoZEdWMGFXMWxJaXdpZUNJc0lua2lMQ0o2SWl3aWRtRnNkV1VpQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09TMHlPU3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERZNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdPUzB5T0N3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxEWTRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3T1MweU55d3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRFk0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09TMHlOaXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERZNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdPUzB5TlN3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxEY3lDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3T1MweU5Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRGMwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09TMHlNeXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERnd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdPUzB5TWl3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxEZzBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3T1MweU1Td3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRGt3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09TMHlNQ3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERrMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdPUzB4T1N3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxERXdOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURrdE1UZ3NMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d4TVRBS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTVMVEUzTEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01USTFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3T1MweE5pd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREkxTmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1Ea3RNVFVzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3ek16Y0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEE1TFRFMExDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNVEV3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09TMHhNeXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERrMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdPUzB4TWl3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxEa3dDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3T1MweE1Td3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRGcwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09TMHhNQ3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERnd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdPUzB3T1N3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxEZ3lDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3T1Mwd09Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRGcyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09TMHdOeXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERrd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdPUzB3Tml3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxEa3lDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3T1Mwd05Td3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREV3TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1Ea3RNRFFzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eE1EVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEE1TFRBekxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNVEV3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09TMHdNaXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERFeU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGt0TURFc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3hNalVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBNExUTXhMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTVRVMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdPQzB6TUN3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxERTFOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURndE1qa3NMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d4TnpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTRMVEk0TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01UZzRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3T0MweU55d3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREl5TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EZ3RNallzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eU5UWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEE0TFRJMUxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNamt5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09DMHlOQ3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERRd01Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGd0TWpNc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTdzRPVEFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBNExUSXlMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTVRZME1Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGd0TWpFc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3pOemt3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09DMHlNQ3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERVNE5EQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEE0TFRFNUxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNakl5TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EZ3RNVGdzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eE9EZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEE0TFRFM0xDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNVGc0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09DMHhOaXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERNME5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGd0TVRVc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3pORFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBNExURTBMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTXpFd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdPQzB4TXl3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxESTFOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURndE1USXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d4TWpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTRMVEV4TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01UY3lDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3T0MweE1Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREUzTWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EZ3RNRGtzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eU1EVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEE0TFRBNExDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNakl5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09DMHdOeXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERJNU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGd0TURZc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTdzFNallLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBNExUQTFMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTWpRd01Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGd0TURRc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3hNall3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd09DMHdNeXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERJd05Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGd0TURJc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3lOVFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBNExUQXhMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTWpjMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOeTB6TVN3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxERTJOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURjdE16QXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d6TWpnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTNMVEk1TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01URXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TnkweU9Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREV4TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EY3RNamNzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eE1qVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEzTFRJMkxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNVFF3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd055MHlOU3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERFME9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGN0TWpRc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3hPRGdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBM0xUSXpMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTVRVMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOeTB5TWl3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxERXlOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURjdE1qRXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d4TlRZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTNMVEl3TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01UVTJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TnkweE9Td3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREl3TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EY3RNVGdzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eU16QUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEzTFRFM0xDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNemt4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd055MHhOaXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERFNE9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGN0TVRVc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3hOeklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBM0xURTBMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTWpBMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOeTB4TXl3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxESXhOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURjdE1USXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d5TXpBS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTNMVEV4TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01qRTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TnkweE1Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREl5TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EY3RNRGtzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eU5EZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEzTFRBNExDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNamd6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd055MHdOeXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERNek53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGN0TURZc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTdzBNVGdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBM0xUQTFMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTlRRMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOeTB3TkN3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxESXpOakFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBM0xUQXpMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTXpReU1Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRGN0TURJc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3hOalF3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd055MHdNU3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERVd016QUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEyTFRNd0xDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNOakF5TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EWXRNamtzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3ek56WXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TmkweU9Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREUyTURBS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTJMVEkzTEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01UazJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TmkweU5pd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREk1TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EWXRNalVzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eU5qVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEyTFRJMExDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNelkwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05pMHlNeXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERRd01Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRFl0TWpJc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3pOek1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBMkxUSXhMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTXpNMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOaTB5TUN3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxESTBPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURZdE1Ua3NMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3cwTURrS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTJMVEU0TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc09UWXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TmkweE55d3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREUwT0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EWXRNVFlzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eE16SUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEyTFRFMUxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNVGc0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05pMHhOQ3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERFME9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRFl0TVRNc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3hOREFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBMkxURXlMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTVRFd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOaTB4TVN3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxERXlOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURZdE1UQXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d4TWpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTJMVEE1TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01UWTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3Tmkwd09Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREUyTkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EWXRNRGNzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eE5qUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEyTFRBMkxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNVGsyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05pMHdOU3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERFNU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRFl0TURRc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3lNRFVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBMkxUQXpMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTWpRNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOaTB3TWl3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxESTVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURZdE1ERXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3cwTnpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTFMVE14TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc05qUXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TlMwek1Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREl5T1RBS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTFMVEk1TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01UUXdNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURVdE1qZ3NMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d5T1RJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTFMVEkzTEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc016WTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TlMweU5pd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRFV4TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EVXRNalVzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3MU1UY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEExTFRJMExDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNamt5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05TMHlNeXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERNME5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRFV0TWpJc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTdzNPREFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBMUxUSXhMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTkRBd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOUzB5TUN3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxESTVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURVdE1Ua3NMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d5TURVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTFMVEU0TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01qTXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TlMweE55d3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMREl4TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EVXRNVFlzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eU5EZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEExTFRFMUxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNalE0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05TMHhOQ3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERJME9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRFV0TVRNc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3lPVElLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBMUxURXlMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTXpJNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOUzB4TVN3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxEUXlOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURVdE1UQXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3czTXpBS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTFMVEE1TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc016UTJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TlMwd09Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRE0wTmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EVXRNRGNzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3ME1EQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEExTFRBMkxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNORGt3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05TMHdOU3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERreE5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRFV0TURRc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTdzFOaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBMUxUQXpMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTkRJM0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOUzB3TWl3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxEUTNNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURVdE1ERXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3cxTmpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTBMVE13TEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc01URTRNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURRdE1qa3NMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d6T0RZd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOQzB5T0N3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxESXpOakFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBMExUSTNMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTnpFd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOQzB5Tml3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxESTVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURRdE1qVXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d6TVRrS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTBMVEkwTEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc016RTVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TkMweU15d3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRE15T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EUXRNaklzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3ek1qZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEwTFRJeExDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNelF3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05DMHlNQ3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERNME1Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRFF0TVRrc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3pOVEFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBMExURTRMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTXpVd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM015MHdOQzB4Tnl3dE56Z3VNams1T1RrME9EUTBOemc0Tnl3ek5pNHdPVGM1TWpneE9EZ3hNall6TEU1QkxETTJNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOek10TURRdE1UWXNMVGM0TGpJNU9UazVORGcwTkRjNE9EY3NNell1TURrM09USTRNVGc0TVRJMk15eE9RU3d6T0RBS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjekxUQTBMVEUxTEMwM09DNHlPVGs1T1RRNE5EUTNPRGczTERNMkxqQTVOemt5T0RFNE9ERXlOak1zVGtFc05EQXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TkMweE5Dd3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRFEzTWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EUXRNVE1zTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3Mk1EQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEwTFRFeUxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNOekl3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05DMHhNU3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERrNE5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRFF0TVRBc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3pOREl3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05DMHdPU3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERNeU1EQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEwTFRBNExDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNVE15TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EUXRNRGNzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3MU9EQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEwTFRBMkxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNOamd3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05DMHdOU3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERneU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRFF0TURRc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTd3hPREl3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd05DMHdNeXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERRMU1qQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEEwTFRBeUxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNemcwTUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1EUXRNREVzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eE9EWXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TXkwek1Td3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRFkyTUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1ETXRNekFzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3Mk9UQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEF6TFRJNUxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNVEF4TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1ETXRNamdzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eU1EQXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TXkweU55d3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRGM1TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1ETXRNallzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3Mk5qQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEF6TFRJMUxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNOemd3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd015MHlOQ3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERFM05UQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEF6TFRJekxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNNVGMxTUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1ETXRNaklzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3eE1URXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNNeTB3TXkweU1Td3ROemd1TWprNU9UazBPRFEwTnpnNE55d3pOaTR3T1RjNU1qZ3hPRGd4TWpZekxFNUJMRFEzTWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpNdE1ETXRNakFzTFRjNExqSTVPVGs1TkRnME5EYzRPRGNzTXpZdU1EazNPVEk0TVRnNE1USTJNeXhPUVN3MU1EZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEF6TFRFNUxDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNOekV3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd015MHhPQ3d0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERFd056QUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UY3pMVEF6TFRFM0xDMDNPQzR5T1RrNU9UUTRORFEzT0RnM0xETTJMakE1TnpreU9ERTRPREV5TmpNc1RrRXNOakV3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTXkwd015MHhOaXd0TnpndU1qazVPVGswT0RRME56ZzROeXd6Tmk0d09UYzVNamd4T0RneE1qWXpMRTVCTERRM01nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56TXRNRE10TVRVc0xUYzRMakk1T1RrNU5EZzBORGM0T0Rjc016WXVNRGszT1RJNE1UZzRNVEkyTXl4T1FTdzFOaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGN6TFRBekxURTBMQzAzT0M0eU9UazVPVFE0TkRRM09EZzNMRE0yTGpBNU56a3lPREU0T0RFeU5qTXNUa0VzTmpZdycgZG93bmxvYWQ9J3N0YXRpb24tVVNHUy0wMjA4MTc0MC5jc3YnPkRvd25sb2FkIENTVjxcL2E+PFwvZGl2PjxcL2Rpdj4iLCI8ZGl2IHN0eWxlPSdmb250LWZhbWlseTpzeXN0ZW0tdWksc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHg7IG1heC13aWR0aDo1MjhweCc+PGRpdiBzdHlsZT0nZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjRweCc+VEFSIFIgQVQgVVMgNDAxIEFUIExPVUlTQlVSRywgTkM8XC9kaXY+PGltZyBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMG5NUzR3SnlCbGJtTnZaR2x1WnowblZWUkdMVGduSUQ4K0NqeHpkbWNnZUcxc2JuTTlKMmgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5KeUI0Yld4dWN6cDRiR2x1YXowbmFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzk0YkdsdWF5Y2dkMmxrZEdnOUp6VXdOQzR3TUhCMEp5Qm9aV2xuYUhROUp6STFNaTR3TUhCMEp5QjJhV1YzUW05NFBTY3dJREFnTlRBMExqQXdJREkxTWk0d01DYytDanhuSUdOc1lYTnpQU2R6ZG1kc2FYUmxKejRLUEdSbFpuTStDaUFnUEhOMGVXeGxJSFI1Y0dVOUozUmxlSFF2WTNOekp6NDhJVnREUkVGVVFWc0tJQ0FnSUM1emRtZHNhWFJsSUd4cGJtVXNJQzV6ZG1kc2FYUmxJSEJ2Ykhsc2FXNWxMQ0F1YzNabmJHbDBaU0J3YjJ4NVoyOXVMQ0F1YzNabmJHbDBaU0J3WVhSb0xDQXVjM1puYkdsMFpTQnlaV04wTENBdWMzWm5iR2wwWlNCamFYSmpiR1VnZXdvZ0lDQWdJQ0JtYVd4c09pQnViMjVsT3dvZ0lDQWdJQ0J6ZEhKdmEyVTZJQ013TURBd01EQTdDaUFnSUNBZ0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCeWIzVnVaRHNLSUNBZ0lDQWdjM1J5YjJ0bExXeHBibVZxYjJsdU9pQnliM1Z1WkRzS0lDQWdJQ0FnYzNSeWIydGxMVzFwZEdWeWJHbHRhWFE2SURFd0xqQXdPd29nSUNBZ2ZRb2dJQ0FnTG5OMloyeHBkR1VnZEdWNGRDQjdDaUFnSUNBZ0lIZG9hWFJsTFhOd1lXTmxPaUJ3Y21VN0NpQWdJQ0I5Q2lBZ0lDQXVjM1puYkdsMFpTQm5MbWRzZVhCb1ozSnZkWEFnY0dGMGFDQjdDaUFnSUNBZ0lHWnBiR3c2SUdsdWFHVnlhWFE3Q2lBZ0lDQWdJSE4wY205clpUb2dibTl1WlRzS0lDQWdJSDBLSUNCZFhUNDhMM04wZVd4bFBnbzhMMlJsWm5NK0NqeHlaV04wSUhkcFpIUm9QU2N4TURBbEp5Qm9aV2xuYUhROUp6RXdNQ1VuSUhOMGVXeGxQU2R6ZEhKdmEyVTZJRzV2Ym1VN0lHWnBiR3c2SUNOR1JrWkdSa1k3Snk4K0NqeGtaV1p6UGdvZ0lEeGpiR2x3VUdGMGFDQnBaRDBuWTNCTlF6UjNUVWgzTVUxRVVYVk5SRUk0VFVNMGQwMUlkM2xPVkVsMVRVUkJQU2MrQ2lBZ0lDQThjbVZqZENCNFBTY3dMakF3SnlCNVBTY3dMakF3SnlCM2FXUjBhRDBuTlRBMExqQXdKeUJvWldsbmFIUTlKekkxTWk0d01DY2dMejRLSUNBOEwyTnNhWEJRWVhSb1BnbzhMMlJsWm5NK0NqeG5JR05zYVhBdGNHRjBhRDBuZFhKc0tDTmpjRTFETkhkTlNIY3hUVVJSZFUxRVFqaE5RelIzVFVoM2VVNVVTWFZOUkVFOUtTYytDanh5WldOMElIZzlKekF1TURBbklIazlKeTB3TGpBd01EQXdNREF3TURBd01EQXlPQ2NnZDJsa2RHZzlKelV3TkM0d01DY2dhR1ZwWjJoMFBTY3lOVEl1TURBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREV1TURjN0lITjBjbTlyWlRvZ2JtOXVaVHNnWm1sc2JEb2dJMFpHUmtaR1Jqc25JQzgrQ2p3dlp6NEtQR1JsWm5NK0NpQWdQR05zYVhCUVlYUm9JR2xrUFNkamNFMXFWWFZOUkdnNFRrUnJORXhxVlhsbVJFbDVUR3BSZDJaRVJUVk9RelI1VGtFOVBTYytDaUFnSUNBOGNtVmpkQ0I0UFNjeU5TNHdPQ2NnZVQwbk1qSXVOREFuSUhkcFpIUm9QU2MwTnpNdU5EUW5JR2hsYVdkb2REMG5NVGN4TGpnMEp5QXZQZ29nSUR3dlkyeHBjRkJoZEdnK0Nqd3ZaR1ZtY3o0S1BHY2dZMnhwY0Mxd1lYUm9QU2QxY213b0kyTndUV3BWZFUxRWFEaE9SR3MwVEdwVmVXWkVTWGxNYWxGM1prUkZOVTVETkhsT1FUMDlLU2MrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMREU0TWk0eE1pQTBPVGd1TlRJc01UZ3lMakV5SUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNQzQxTXpzZ2MzUnliMnRsT2lBalJVSkZRa1ZDT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMREV6Tmk0M055QTBPVGd1TlRJc01UTTJMamMzSUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNQzQxTXpzZ2MzUnliMnRsT2lBalJVSkZRa1ZDT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMRGt4TGpReklEUTVPQzQxTWl3NU1TNDBNeUFuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklEQXVOVE03SUhOMGNtOXJaVG9nSTBWQ1JVSkZRanNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284Y0c5c2VXeHBibVVnY0c5cGJuUnpQU2N5TlM0d09DdzBOaTR3T0NBME9UZ3VOVElzTkRZdU1EZ2dKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBd0xqVXpPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NVGcxTGpnMUxERTVOQzR5TkNBeE9EVXVPRFVzTWpJdU5EQWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBd0xqVXpPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5Nemd5TGpBMkxERTVOQzR5TkNBek9ESXVNRFlzTWpJdU5EQWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBd0xqVXpPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc01UVTVMalExSURRNU9DNDFNaXd4TlRrdU5EVWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBeExqQTNPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc01URTBMakV3SURRNU9DNDFNaXd4TVRRdU1UQWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBeExqQTNPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc05qZ3VOelVnTkRrNExqVXlMRFk0TGpjMUlDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTVM0d056c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6STFMakE0TERJekxqUXhJRFE1T0M0MU1pd3lNeTQwTVNBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREV1TURjN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjNU55NHlOQ3d4T1RRdU1qUWdPVGN1TWpRc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpjMExqUTJMREU1TkM0eU5DQXlOelF1TkRZc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTkRnNUxqWTJMREU1TkM0eU5DQTBPRGt1TmpZc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTkRZdU5qQXNNVFk1TGpZMUlEVTVMakkyTERFM01DNDJOeUEzTVM0NU1pd3hOekF1TlRZZ09EUXVOVGdzTVRFekxqUXlJRGszTGpJMExEazRMalk0SURFd09TNDVNQ3d4TWprdU56VWdNVEl5TGpVMkxERTFNeTQwTkNBeE16VXVNakVzTVRZMUxqRXlJREUwTnk0NE55d3hOekF1TmpjZ01UWXdMalV6TERFM015NDNNeUF4TnpNdU1Ua3NNVFEyTGpZMElERTROUzQ0TlN3ek1DNHlNU0F4T1RndU5URXNOek11TWprZ01qRXhMakUzTERFeU9DNDFNQ0F5TWpNdU9ETXNNVFV4TGpnMUlESXpOaTQwT0N3eE5qRXVNemdnTWpRNUxqRTBMREUyTmk0d01pQXlOakV1T0RBc01UY3dMamt3SURJM05DNDBOaXd4TnpNdU56TWdNamczTGpFeUxERTNOaTR4TVNBeU9Ua3VOemdzTVRjNExqRTFJRE14TWk0ME5Dd3hPREF1T0RjZ016STFMakV3TERFNE15NHdNeUF6TXpjdU56VXNNVGcwTGpZeUlETTFNQzQwTVN3eE9EWXVORE1nTXpZekxqQTNMREV5T0M0eE5pQXpOelV1TnpNc09ERXVNaklnTXpnNExqTTVMREV6TWk0NU1pQTBNREV1TURVc01UVXhMakUzSURReE15NDNNU3d4TlRBdU1UVWdOREkyTGpNM0xERTFNeTR6TXlBME16a3VNRElzTVRVNExqYzNJRFExTVM0Mk9Dd3hOVGN1T0RZZ05EWTBMak0wTERFMk15NHpNQ0EwTnpjdU1EQXNNVGN6TGpVeElDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTVM0d056c2djM1J5YjJ0bE9pQWpSamczTmpaRU95QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0Nqd3ZaejRLUEdjZ1kyeHBjQzF3WVhSb1BTZDFjbXdvSTJOd1RVTTBkMDFJZHpGTlJGRjFUVVJDT0UxRE5IZE5TSGQ1VGxSSmRVMUVRVDBwSno0S1BDOW5QZ284WkdWbWN6NEtJQ0E4WTJ4cGNGQmhkR2dnYVdROUoyTndUV3BWZFUxRWFEaE9SR3MwVEdwVmVXWkVWWFZPUkdnNFRXcEpkVTVFUVQwblBnb2dJQ0FnUEhKbFkzUWdlRDBuTWpVdU1EZ25JSGs5SnpVdU5EZ25JSGRwWkhSb1BTYzBOek11TkRRbklHaGxhV2RvZEQwbk1UWXVPVEluSUM4K0NpQWdQQzlqYkdsd1VHRjBhRDRLUEM5a1pXWnpQZ284WnlCamJHbHdMWEJoZEdnOUozVnliQ2dqWTNCTmFsVjFUVVJvT0U1RWF6Uk1hbFY1WmtSVmRVNUVhRGhOYWtsMVRrUkJQU2tuUGdvOGRHVjRkQ0I0UFNjeU5qRXVPREFuSUhrOUp6RTNMakE1SnlCMFpYaDBMV0Z1WTJodmNqMG5iV2xrWkd4bEp5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpGQk1VRXhRVHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2MwT1M0ek5IQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqQXdNRFl3SUNobWRETXZjeWs4TDNSbGVIUStDand2Wno0S1BHY2dZMnhwY0Mxd1lYUm9QU2QxY213b0kyTndUVU0wZDAxSWR6Rk5SRkYxVFVSQ09FMUROSGROU0hkNVRsUkpkVTFFUVQwcEp6NEtQSFJsZUhRZ2VEMG5PVGN1TWpRbklIazlKekl3TlM0ME55Y2dkR1Y0ZEMxaGJtTm9iM0k5SjIxcFpHUnNaU2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1qZ3VPRFJ3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejVOWVhrZ01ERThMM1JsZUhRK0NqeDBaWGgwSUhnOUp6STNOQzQwTmljZ2VUMG5NakExTGpRM0p5QjBaWGgwTFdGdVkyaHZjajBuYldsa1pHeGxKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjeU9DNDROSEI0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5QazFoZVNBeE5Ud3ZkR1Y0ZEQ0S1BIUmxlSFFnZUQwbk5EZzVMalkySnlCNVBTY3lNRFV1TkRjbklIUmxlSFF0WVc1amFHOXlQU2R0YVdSa2JHVW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEdG1hV3hzT2lBak5FUTBSRFJFT3lCbWIyNTBMV1poYldsc2VUb2dJa0Z5YVdGc0lqc25JSFJsZUhSTVpXNW5kR2c5SnpJMkxqUXhjSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytTblZ1SURBeFBDOTBaWGgwUGdvOGRHVjRkQ0I0UFNjeU1DNHhOU2NnZVQwbk1UWXlMall3SnlCMFpYaDBMV0Z1WTJodmNqMG5aVzVrSnlCemRIbHNaVDBuWm05dWRDMXphWHBsT2lBNExqZ3djSGc3Wm1sc2JEb2dJelJFTkVRMFJEc2dabTl1ZEMxbVlXMXBiSGs2SUNKQmNtbGhiQ0k3SnlCMFpYaDBUR1Z1WjNSb1BTYzVMamM0Y0hnbklHeGxibWQwYUVGa2FuVnpkRDBuYzNCaFkybHVaMEZ1WkVkc2VYQm9jeWMrTkRBOEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpJd0xqRTFKeUI1UFNjeE1UY3VNalVuSUhSbGVIUXRZVzVqYUc5eVBTZGxibVFuSUhOMGVXeGxQU2RtYjI1MExYTnBlbVU2SURndU9EQndlRHRtYVd4c09pQWpORVEwUkRSRU95Qm1iMjUwTFdaaGJXbHNlVG9nSWtGeWFXRnNJanNuSUhSbGVIUk1aVzVuZEdnOUp6a3VOemh3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejQ0TUR3dmRHVjRkRDRLUEhSbGVIUWdlRDBuTWpBdU1UVW5JSGs5SnpjeExqa3dKeUIwWlhoMExXRnVZMmh2Y2owblpXNWtKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjeE5DNDJOM0I0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5QakV5TUR3dmRHVjRkRDRLUEhSbGVIUWdlRDBuTWpBdU1UVW5JSGs5SnpJMkxqVTJKeUIwWlhoMExXRnVZMmh2Y2owblpXNWtKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjeE5DNDJOM0I0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5QakUyTUR3dmRHVjRkRDRLUEd4cGJtVWdlREU5SnpJME9TNDNNQ2NnZVRFOUp6SXpNaTQwTUNjZ2VESTlKekkyTXk0MU15Y2dlVEk5SnpJek1pNDBNQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUmpnM05qWkVPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDangwWlhoMElIZzlKekkzTUM0M05DY2dlVDBuTWpNMUxqVTFKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdJR1p2Ym5RdFptRnRhV3g1T2lBaVFYSnBZV3dpT3ljZ2RHVjRkRXhsYm1kMGFEMG5OQzQ0T1hCNEp5QnNaVzVuZEdoQlpHcDFjM1E5SjNOd1lXTnBibWRCYm1SSGJIbHdhSE1uUGpFOEwzUmxlSFErQ2p3dlp6NEtQQzluUGdvOEwzTjJaejQ9JyBzdHlsZT0nd2lkdGg6NTA0cHg7IG1heC13aWR0aDoxMDAlOyBkaXNwbGF5OmJsb2NrJyBhbHQ9J3RpbWUgc2VyaWVzJyAvPjxkaXYgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz48YSBocmVmPSdkYXRhOnRleHQvY3N2O2Jhc2U2NCxJbU52ZG1WeVlXZGxYMmxrSWl3aWNHRnlZVzFsZEdWeUlpd2ljR0Z5WVcxbGRHVnlYMnhoWW1Wc0lpd2lkVzVwZENJc0ltUmhkR1YwYVcxbElpd2llQ0lzSW5raUxDSjZJaXdpZG1Gc2RXVWlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMwek1Td3ROemd1TWprMk1URXhNVEV4TVRFeE1Td3pOaTR3T1RNd05UVTFOVFUxTlRVMkxFNUJMREkzTGpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVE13TEMwM09DNHlPVFl4TVRFeE1URXhNVEV4TERNMkxqQTVNekExTlRVMU5UVTFOVFlzVGtFc016WXVOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1qa3NMVGM0TGpJNU5qRXhNVEV4TVRFeE1URXNNell1TURrek1EVTFOVFUxTlRVMU5peE9RU3cwTVM0MENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB5T0N3dE56Z3VNamsyTVRFeE1URXhNVEV4TVN3ek5pNHdPVE13TlRVMU5UVTFOVFUyTEU1QkxEUXdMallLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxUSTNMQzAzT0M0eU9UWXhNVEV4TVRFeE1URXhMRE0yTGpBNU16QTFOVFUxTlRVMU5UWXNUa0VzTkRVdU5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFV0TWpZc0xUYzRMakk1TmpFeE1URXhNVEV4TVRFc016WXVNRGt6TURVMU5UVTFOVFUxTml4T1FTdzBPQzR5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05TMHlOU3d0TnpndU1qazJNVEV4TVRFeE1URXhNU3d6Tmk0d09UTXdOVFUxTlRVMU5UVTJMRTVCTERRM0xqTUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEExTFRJMExDMDNPQzR5T1RZeE1URXhNVEV4TVRFeExETTJMakE1TXpBMU5UVTFOVFUxTlRZc1RrRXNOak11TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EVXRNak1zTFRjNExqSTVOakV4TVRFeE1URXhNVEVzTXpZdU1Ea3pNRFUxTlRVMU5UVTFOaXhPUVN3eE1Ea0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEExTFRJeUxDMDNPQzR5T1RZeE1URXhNVEV4TVRFeExETTJMakE1TXpBMU5UVTFOVFUxTlRZc1RrRXNOamN1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EVXRNakVzTFRjNExqSTVOakV4TVRFeE1URXhNVEVzTXpZdU1Ea3pNRFUxTlRVMU5UVTFOaXhPUVN3eE5pNHlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMweU1Dd3ROemd1TWprMk1URXhNVEV4TVRFeE1Td3pOaTR3T1RNd05UVTFOVFUxTlRVMkxFNUJMREUzTGpnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEU1TEMwM09DNHlPVFl4TVRFeE1URXhNVEV4TERNMkxqQTVNekExTlRVMU5UVTFOVFlzVGtFc01Ua3VNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1UZ3NMVGM0TGpJNU5qRXhNVEV4TVRFeE1URXNNell1TURrek1EVTFOVFUxTlRVMU5peE9RU3d5TVM0eENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB4Tnl3dE56Z3VNamsyTVRFeE1URXhNVEV4TVN3ek5pNHdPVE13TlRVMU5UVTFOVFUyTEU1QkxESXpMalVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxURTJMQzAzT0M0eU9UWXhNVEV4TVRFeE1URXhMRE0yTGpBNU16QTFOVFUxTlRVMU5UWXNUa0VzTWpVdU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFV0TVRVc0xUYzRMakk1TmpFeE1URXhNVEV4TVRFc016WXVNRGt6TURVMU5UVTFOVFUxTml4T1FTd3lOeTQwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05TMHhOQ3d0TnpndU1qazJNVEV4TVRFeE1URXhNU3d6Tmk0d09UTXdOVFUxTlRVMU5UVTJMRTVCTERJNUxqa0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEExTFRFekxDMDNPQzR5T1RZeE1URXhNVEV4TVRFeExETTJMakE1TXpBMU5UVTFOVFUxTlRZc1RrRXNNelF1TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EVXRNVElzTFRjNExqSTVOakV4TVRFeE1URXhNVEVzTXpZdU1Ea3pNRFUxTlRVMU5UVTFOaXhPUVN3ek9DNHpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMweE1Td3ROemd1TWprMk1URXhNVEV4TVRFeE1Td3pOaTR3T1RNd05UVTFOVFUxTlRVMkxFNUJMRFEyTGpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEV3TEMwM09DNHlPVFl4TVRFeE1URXhNVEV4TERNMkxqQTVNekExTlRVMU5UVTFOVFlzVGtFc05qY3VNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1Ea3NMVGM0TGpJNU5qRXhNVEV4TVRFeE1URXNNell1TURrek1EVTFOVFUxTlRVMU5peE9RU3d4TVRZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEE0TEMwM09DNHlPVFl4TVRFeE1URXhNVEV4TERNMkxqQTVNekExTlRVMU5UVTFOVFlzVGtFc01UVTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMwd055d3ROemd1TWprMk1URXhNVEV4TVRFeE1Td3pOaTR3T1RNd05UVTFOVFUxTlRVMkxFNUJMRFV4TGpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEEyTEMwM09DNHlPVFl4TVRFeE1URXhNVEV4TERNMkxqQTVNekExTlRVMU5UVTFOVFlzVGtFc01qY3VOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1EVXNMVGM0TGpJNU5qRXhNVEV4TVRFeE1URXNNell1TURrek1EVTFOVFUxTlRVMU5peE9RU3d6TUM0eENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB3TkN3dE56Z3VNamsyTVRFeE1URXhNVEV4TVN3ek5pNHdPVE13TlRVMU5UVTFOVFUyTEU1QkxETTFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMwd015d3ROemd1TWprMk1URXhNVEV4TVRFeE1Td3pOaTR3T1RNd05UVTFOVFUxTlRVMkxFNUJMRFExTGpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEF5TEMwM09DNHlPVFl4TVRFeE1URXhNVEV4TERNMkxqQTVNekExTlRVMU5UVTFOVFlzVGtFc05qWXVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1ERXNMVGM0TGpJNU5qRXhNVEV4TVRFeE1URXNNell1TURrek1EVTFOVFUxTlRVMU5peE9RU3c1TXk0MkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOQzB6TUN3dE56Z3VNamsyTVRFeE1URXhNVEV4TVN3ek5pNHdPVE13TlRVMU5UVTFOVFUyTEU1QkxEZ3dMallLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMExUSTVMQzAzT0M0eU9UWXhNVEV4TVRFeE1URXhMRE0yTGpBNU16QTFOVFUxTlRVMU5UWXNUa0VzTXpBdU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFF0TWpnc0xUYzRMakk1TmpFeE1URXhNVEV4TVRFc016WXVNRGt6TURVMU5UVTFOVFUxTml4T1FTd3pNQzR4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05DMHlOeXd0TnpndU1qazJNVEV4TVRFeE1URXhNU3d6Tmk0d09UTXdOVFUxTlRVMU5UVTJMRTVCTERNeCcgZG93bmxvYWQ9J3N0YXRpb24tVVNHUy0wMjA4MTc0Ny5jc3YnPkRvd25sb2FkIENTVjxcL2E+PFwvZGl2PjxcL2Rpdj4iLCI8ZGl2IHN0eWxlPSdmb250LWZhbWlseTpzeXN0ZW0tdWksc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHg7IG1heC13aWR0aDo1MjhweCc+PGRpdiBzdHlsZT0nZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjRweCc+Q0VEQVIgQ1JFRUsgTkVBUiBMT1VJU0JVUkcsIE5DPFwvZGl2PjxpbWcgc3JjPSdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBuTVM0d0p5QmxibU52WkdsdVp6MG5WVlJHTFRnbklEOCtDanh6ZG1jZ2VHMXNibk05SjJoMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSnlCNGJXeHVjenA0YkdsdWF6MG5hSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M5NGJHbHVheWNnZDJsa2RHZzlKelV3TkM0d01IQjBKeUJvWldsbmFIUTlKekkxTWk0d01IQjBKeUIyYVdWM1FtOTRQU2N3SURBZ05UQTBMakF3SURJMU1pNHdNQ2MrQ2p4bklHTnNZWE56UFNkemRtZHNhWFJsSno0S1BHUmxabk0rQ2lBZ1BITjBlV3hsSUhSNWNHVTlKM1JsZUhRdlkzTnpKejQ4SVZ0RFJFRlVRVnNLSUNBZ0lDNXpkbWRzYVhSbElHeHBibVVzSUM1emRtZHNhWFJsSUhCdmJIbHNhVzVsTENBdWMzWm5iR2wwWlNCd2IyeDVaMjl1TENBdWMzWm5iR2wwWlNCd1lYUm9MQ0F1YzNabmJHbDBaU0J5WldOMExDQXVjM1puYkdsMFpTQmphWEpqYkdVZ2V3b2dJQ0FnSUNCbWFXeHNPaUJ1YjI1bE93b2dJQ0FnSUNCemRISnZhMlU2SUNNd01EQXdNREE3Q2lBZ0lDQWdJSE4wY205clpTMXNhVzVsWTJGd09pQnliM1Z1WkRzS0lDQWdJQ0FnYzNSeWIydGxMV3hwYm1WcWIybHVPaUJ5YjNWdVpEc0tJQ0FnSUNBZ2MzUnliMnRsTFcxcGRHVnliR2x0YVhRNklERXdMakF3T3dvZ0lDQWdmUW9nSUNBZ0xuTjJaMnhwZEdVZ2RHVjRkQ0I3Q2lBZ0lDQWdJSGRvYVhSbExYTndZV05sT2lCd2NtVTdDaUFnSUNCOUNpQWdJQ0F1YzNabmJHbDBaU0JuTG1kc2VYQm9aM0p2ZFhBZ2NHRjBhQ0I3Q2lBZ0lDQWdJR1pwYkd3NklHbHVhR1Z5YVhRN0NpQWdJQ0FnSUhOMGNtOXJaVG9nYm05dVpUc0tJQ0FnSUgwS0lDQmRYVDQ4TDNOMGVXeGxQZ284TDJSbFpuTStDanh5WldOMElIZHBaSFJvUFNjeE1EQWxKeUJvWldsbmFIUTlKekV3TUNVbklITjBlV3hsUFNkemRISnZhMlU2SUc1dmJtVTdJR1pwYkd3NklDTkdSa1pHUmtZN0p5OCtDanhrWldaelBnb2dJRHhqYkdsd1VHRjBhQ0JwWkQwblkzQk5RelIzVFVoM01VMUVVWFZOUkVJNFRVTTBkMDFJZDNsT1ZFbDFUVVJCUFNjK0NpQWdJQ0E4Y21WamRDQjRQU2N3TGpBd0p5QjVQU2N3TGpBd0p5QjNhV1IwYUQwbk5UQTBMakF3SnlCb1pXbG5hSFE5SnpJMU1pNHdNQ2NnTHo0S0lDQThMMk5zYVhCUVlYUm9QZ284TDJSbFpuTStDanhuSUdOc2FYQXRjR0YwYUQwbmRYSnNLQ05qY0UxRE5IZE5TSGN4VFVSUmRVMUVRamhOUXpSM1RVaDNlVTVVU1hWTlJFRTlLU2MrQ2p4eVpXTjBJSGc5SnpBdU1EQW5JSGs5Snkwd0xqQXdNREF3TURBd01EQXdNREF5T0NjZ2QybGtkR2c5SnpVd05DNHdNQ2NnYUdWcFoyaDBQU2N5TlRJdU1EQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dibTl1WlRzZ1ptbHNiRG9nSTBaR1JrWkdSanNuSUM4K0Nqd3ZaejRLUEdSbFpuTStDaUFnUEdOc2FYQlFZWFJvSUdsa1BTZGpjRTFxYTNWUFZHUTRUa1JyTkV4cVZYbG1SRWw1VEdwUmQyWkVSVFZPUXpSNVRrRTlQU2MrQ2lBZ0lDQThjbVZqZENCNFBTY3lPUzQ1TnljZ2VUMG5Nakl1TkRBbklIZHBaSFJvUFNjME5qZ3VOVFVuSUdobGFXZG9kRDBuTVRjeExqZzBKeUF2UGdvZ0lEd3ZZMnhwY0ZCaGRHZytDand2WkdWbWN6NEtQR2NnWTJ4cGNDMXdZWFJvUFNkMWNtd29JMk53VFdwcmRVOVVaRGhPUkdzMFRHcFZlV1pFU1hsTWFsRjNaa1JGTlU1RE5IbE9RVDA5S1NjK0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6STVMamszTERFMk55NHdOQ0EwT1RndU5USXNNVFkzTGpBMElDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTUM0MU16c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6STVMamszTERFeU5TNDRNeUEwT1RndU5USXNNVEkxTGpneklDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTUM0MU16c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6STVMamszTERnMExqWXhJRFE1T0M0MU1pdzROQzQyTVNBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREF1TlRNN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjeU9TNDVOeXcwTXk0ME1DQTBPVGd1TlRJc05ETXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTVRnM0xqRTVMREU1TkM0eU5DQXhPRGN1TVRrc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTXpnekxqQTBMREU1TkM0eU5DQXpPRE11TURRc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWprdU9UY3NNVGczTGpZMUlEUTVPQzQxTWl3eE9EY3VOalVnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWprdU9UY3NNVFEyTGpReklEUTVPQzQxTWl3eE5EWXVORE1nSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWprdU9UY3NNVEExTGpJeUlEUTVPQzQxTWl3eE1EVXVNaklnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWprdU9UY3NOalF1TURBZ05EazRMalV5TERZMExqQXdJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekk1TGprM0xESXlMamM1SURRNU9DNDFNaXd5TWk0M09TQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTYzRPUzQ0TUN3eE9UUXVNalFnT0RrdU9EQXNNakl1TkRBZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkZRa1ZDUlVJN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BIQnZiSGxzYVc1bElIQnZhVzUwY3owbk1qZzBMalU0TERFNU5DNHlOQ0F5T0RRdU5UZ3NNakl1TkRBZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkZRa1ZDUlVJN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BIQnZiSGxzYVc1bElIQnZhVzUwY3owbk5EZ3hMalV3TERFNU5DNHlOQ0EwT0RFdU5UQXNNakl1TkRBZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkZRa1ZDUlVJN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BIQnZiSGxzYVc1bElIQnZhVzUwY3owbk5URXVNamNzTXpBdU1qRWdOVE11TkRFc05UUXVPVFFnTlRVdU5UVXNNVFExTGpRMUlEVTNMalk1TERFME5pNDBNeUExT1M0NE15d3hOVE11TXpZZ05qRXVPVGNzTlRRdU9UUWdOalF1TVRFc05UQXVPRElnTmpZdU1qVXNNVFE1TGpRd0lEWTRMak01TERFMk1TNDJNQ0EzTUM0MU5Dd3hOalF1TnpNZ056SXVOamdzTVRZM0xqTTNJRGMwTGpneUxERTJOeTQzTUNBM05pNDVOaXd4TnpJdU1UVWdOemt1TVRBc01UYzBMall6SURneExqSTBMREUzTnk0eE1DQTRNeTR6T0N3eE56Y3VOVGtnT0RVdU5USXNNVGN6TGpZMElEZzNMalkyTERFM05TNDJNU0E0T1M0NE1Dd3hOemN1TlRrZ09URXVPVFFzTVRjNExqSTFJRGswTGpBNExERTNOeTR4TUNBNU5pNHlNaXd4TnpndU56VWdPVGd1TXpZc01UYzVMalF4SURFd01DNDFNQ3d4TnprdU56UWdNVEF5TGpZMExERTRNQzR3TnlBeE1EUXVOemdzTVRnd0xqSXpJREV3Tmk0NU1pd3hPREF1TWpNZ01UQTVMakEyTERFNE1DNHlNeUF4TVRFdU1qQXNNVGd3TGpBM0lERXhNeTR6TkN3eE56a3VOelFnTVRFMUxqUTRMREU0TUM0MU5pQXhNVGN1TmpNc01UZ3dMamN6SURFeE9TNDNOeXd4TnpVdU5qRWdNVEl4TGpreExERTNOeTR5TmlBeE1qUXVNRFVzTVRjNUxqVTNJREV5Tmk0eE9Td3hPREF1TURjZ01USTRMak16TERFNE1DNHlNeUF4TXpBdU5EY3NNVGd3TGpBM0lERXpNaTQyTVN3eE9EQXVPRGtnTVRNMExqYzFMREU0TVM0eU1pQXhNell1T0Rrc01UZ3hMakl5SURFek9TNHdNeXd4T0RFdU1qSWdNVFF4TGpFM0xERTRNUzR6T1NBeE5ETXVNekVzTVRneExqY3hJREUwTlM0ME5Td3hPREl1TURRZ01UUTNMalU1TERFNE1TNDRPQ0F4TkRrdU56TXNNVGd4TGpVMUlERTFNUzQ0Tnl3eE9ERXVOekVnTVRVMExqQXhMREU0TVM0MU5TQXhOVFl1TVRVc01UZ3hMakEySURFMU9DNHlPU3d4T0RJdU1EUWdNVFl3TGpRekxERTNPUzQwTVNBeE5qSXVOVGdzTVRnd0xqUXdJREUyTkM0M01pd3hPREV1T0RnZ01UWTJMamcyTERFNE1pNHpOeUF4TmprdU1EQXNNVGd5TGpVMElERTNNUzR4TkN3eE9ESXVPRGNnTVRjekxqSTRMREU0TWk0NE55QXhOelV1TkRJc01UZ3pMakF6SURFM055NDFOaXd4T0RNdU16WWdNVGM1TGpjd0xERTRNeTR6TmlBeE9ERXVPRFFzTVRnekxqWTVJREU0TXk0NU9Dd3hPRE11TmprZ01UZzJMakV5TERFNE1DNDBNQ0F4T0RndU1qWXNNVGMxTGpRMUlERTVNQzQwTUN3eE56TXVPVGNnTVRreUxqVTBMREUzTmk0ME5DQXhPVFF1Tmpnc01UZ3dMakl6SURFNU5pNDRNaXd4T0RFdU9EZ2dNVGs0TGprMkxERTRNaTQzTUNBeU1ERXVNVEFzTVRnekxqQXpJREl3TXk0eU5Dd3hPRE11TWpBZ01qQTFMak00TERFNE15NHpOaUF5TURjdU5USXNNVGd6TGpBeklESXdPUzQyTnl3eE9ETXVNellnTWpFeExqZ3hMREU0TXk0eU1DQXlNVE11T1RVc01UYzVMalUzSURJeE5pNHdPU3d4TnpVdU5qRWdNakU0TGpJekxERTNPQzR3T1NBeU1qQXVNemNzTVRnd0xqQTNJREl5TWk0MU1Td3hPREF1TnpNZ01qSTBMalkxTERFNE1pNHlNU0F5TWpZdU56a3NNVGd6TGpBeklESXlPQzQ1TXl3eE9ETXVNellnTWpNeExqQTNMREU0TXk0Mk9TQXlNek11TWpFc01UZ3pMamcySURJek5TNHpOU3d4T0RRdU1Ua2dNak0zTGpRNUxERTROQzR6TlNBeU16a3VOak1zTVRnMExqRTVJREkwTVM0M055d3hPRFF1TURJZ01qUXpMamt4TERFNE15NDJPU0F5TkRZdU1EVXNNVGd6TGpnMklESTBPQzR4T1N3eE9EUXVNelVnTWpVd0xqTXpMREU0TkM0MU1pQXlOVEl1TkRjc01UZzBMalk0SURJMU5DNDJNU3d4T0RRdU5qZ2dNalUyTGpjMkxERTROQzQ0TlNBeU5UZ3VPVEFzTVRnMUxqQXhJREkyTVM0d05Dd3hPRFV1TURFZ01qWXpMakU0TERFNE5TNHhPQ0F5TmpVdU16SXNNVGcxTGpBeElESTJOeTQwTml3eE9EVXVNelFnTWpZNUxqWXdMREU0TlM0ek5DQXlOekV1TnpRc01UZzFMalV4SURJM015NDRPQ3d4T0RVdU5qY2dNamMyTGpBeUxERTROUzQxTVNBeU56Z3VNVFlzTVRnekxqZzJJREk0TUM0ek1Dd3hPRFF1T0RVZ01qZ3lMalEwTERFNE5TNHhPQ0F5T0RRdU5UZ3NNVGcxTGpVeElESTROaTQzTWl3eE9EVXVOamNnTWpnNExqZzJMREU0TlM0NE5DQXlPVEV1TURBc01UZzFMamcwSURJNU15NHhOQ3d4T0RRdU5qZ2dNamsxTGpJNExERTROUzR6TkNBeU9UY3VORElzTVRnMUxqRTRJREk1T1M0MU5pd3hPRFV1TURFZ016QXhMamN4TERFNE5TNHpOQ0F6TURNdU9EVXNNVGcxTGpNMElETXdOUzQ1T1N3eE9EQXVOVFlnTXpBNExqRXpMREU0TVM0eU1pQXpNVEF1TWpjc01UWTBMakEzSURNeE1pNDBNU3d4TURndU1Ua2dNekUwTGpVMUxEVTVMakEySURNeE5pNDJPU3d4TVRNdU5EWWdNekU0TGpnekxERTFOQzQyT0NBek1qQXVPVGNzTVRjeExqRTJJRE15TXk0eE1Td3hOelF1TkRZZ016STFMakkxTERFM09TNDBNU0F6TWpjdU16a3NNVGd4TGpBMklETXlPUzQxTXl3eE9ESXVOekFnTXpNeExqWTNMREU0TXk0Mk9TQXpNek11T0RFc01UZzBMakF5SURNek5TNDVOU3d4TnpjdU56WWdNek00TGpBNUxERTRNaTQzTUNBek5EQXVNak1zTVRnekxqTTJJRE0wTWk0ek55d3hPRE11TmprZ016UTBMalV4TERFNE5DNHdNaUF6TkRZdU5qVXNNVGcwTGpFNUlETTBPQzQ0TUN3eE9EUXVNelVnTXpVd0xqazBMREU0TkM0MU1pQXpOVE11TURnc01UZzBMalV5SURNMU5TNHlNaXd4T0RRdU5qZ2dNelUzTGpNMkxERTROQzQ0TlNBek5Ua3VOVEFzTVRnMExqZzFJRE0yTVM0Mk5Dd3hPRFF1TlRJZ016WXpMamM0TERFNE5DNHdNaUF6TmpVdU9USXNNVGcwTGpNMUlETTJPQzR3Tml3eE9EUXVOamdnTXpjd0xqSXdMREU0TkM0NE5TQXpOekl1TXpRc01UZzBMamcxSURNM05DNDBPQ3d4T0RVdU1ERWdNemMyTGpZeUxERTROUzR4T0NBek56Z3VOellzTVRnMUxqTTBJRE00TUM0NU1Dd3hPRFV1TXpRZ016Z3pMakEwTERFNE5TNHpOQ0F6T0RVdU1UZ3NNVGcxTGpZM0lETTROeTR6TWl3eE9EVXVOamNnTXpnNUxqUTJMREU0TlM0Mk55QXpPVEV1TmpBc01UZzFMalkzSURNNU15NDNOQ3d4T0RVdU9EUWdNemsxTGpnNUxERTROUzQ0TkNBek9UZ3VNRE1zTVRnMkxqQTNJRFF3TUM0eE55d3hPRFV1T0RRZ05EQXlMak14TERFNE5TNDROQ0EwTURRdU5EVXNNVGcyTGpBM0lEUXdOaTQxT1N3eE9EWXVNRGNnTkRBNExqY3pMREU0Tmk0eU1pQTBNVEF1T0Rjc01UZzJMak0ySURReE15NHdNU3d4T0RZdU16WWdOREUxTGpFMUxERTROaTQwTXlBME1UY3VNamtzTVRneUxqQTBJRFF4T1M0ME15d3hPRFF1TXpVZ05ESXhMalUzTERFNE5DNDJPQ0EwTWpNdU56RXNNVGcxTGpBeElEUXlOUzQ0TlN3eE9EVXVNelFnTkRJM0xqazVMREU0TlM0Mk55QTBNekF1TVRNc01UZ3lMamN3SURRek1pNHlOeXd4T0RRdU1ESWdORE0wTGpReExERTROQzQyT0NBME16WXVOVFVzTVRnMUxqQXhJRFF6T0M0Mk9Td3hPRFV1TXpRZ05EUXdMamcwTERFNE5TNDJOeUEwTkRJdU9UZ3NNVGcwTGpZNElEUTBOUzR4TWl3eE9EVXVNREVnTkRRM0xqSTJMREUzTmk0eE1TQTBORGt1TkRBc01UYzVMalF4SURRMU1TNDFOQ3d4T0RFdU1EWWdORFV6TGpZNExERTRNaTQzTUNBME5UVXVPRElzTVRnekxqQXpJRFExTnk0NU5pd3hPREl1TnpBZ05EWXdMakV3TERFNE15NHpOaUEwTmpJdU1qUXNNVGd6TGpZNUlEUTJOQzR6T0N3eE1EVXVNaklnTkRZMkxqVXlMREUxTkM0Mk9DQTBOamd1TmpZc01UWXlMamt5SURRM01DNDRNQ3d4TWpFdU56RWdORGN5TGprMExERTFOQzQyT0NBME56VXVNRGdzTVRjeExqRTJJRFEzTnk0eU1pd3hOell1TVRFZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkdPRGMyTmtRN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BDOW5QZ284WnlCamJHbHdMWEJoZEdnOUozVnliQ2dqWTNCTlF6UjNUVWgzTVUxRVVYVk5SRUk0VFVNMGQwMUlkM2xPVkVsMVRVUkJQU2tuUGdvOEwyYytDanhrWldaelBnb2dJRHhqYkdsd1VHRjBhQ0JwWkQwblkzQk5hbXQxVDFSa09FNUVhelJNYWxWNVprUlZkVTVFYURoTmFrbDFUa1JCUFNjK0NpQWdJQ0E4Y21WamRDQjRQU2N5T1M0NU55Y2dlVDBuTlM0ME9DY2dkMmxrZEdnOUp6UTJPQzQxTlNjZ2FHVnBaMmgwUFNjeE5pNDVNaWNnTHo0S0lDQThMMk5zYVhCUVlYUm9QZ284TDJSbFpuTStDanhuSUdOc2FYQXRjR0YwYUQwbmRYSnNLQ05qY0UxcWEzVlBWR1E0VGtSck5FeHFWWGxtUkZWMVRrUm9PRTFxU1hWT1JFRTlLU2MrQ2p4MFpYaDBJSGc5SnpJMk5DNHlOU2NnZVQwbk1UY3VNRGtuSUhSbGVIUXRZVzVqYUc5eVBTZHRhV1JrYkdVbklITjBlV3hsUFNkbWIyNTBMWE5wZW1VNklEZ3VPREJ3ZUR0bWFXeHNPaUFqTVVFeFFURkJPeUJtYjI1MExXWmhiV2xzZVRvZ0lrRnlhV0ZzSWpzbklIUmxlSFJNWlc1bmRHZzlKelE1TGpNMGNIZ25JR3hsYm1kMGFFRmthblZ6ZEQwbmMzQmhZMmx1WjBGdVpFZHNlWEJvY3ljK01EQXdOakFnS0daME15OXpLVHd2ZEdWNGRENEtQQzluUGdvOFp5QmpiR2x3TFhCaGRHZzlKM1Z5YkNnalkzQk5RelIzVFVoM01VMUVVWFZOUkVJNFRVTTBkMDFJZDNsT1ZFbDFUVVJCUFNrblBnbzhkR1Y0ZENCNFBTYzRPUzQ0TUNjZ2VUMG5NakExTGpRM0p5QjBaWGgwTFdGdVkyaHZjajBuYldsa1pHeGxKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjeE15NDJPWEI0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5Qa0Z3Y2p3dmRHVjRkRDRLUEhSbGVIUWdlRDBuTWpnMExqVTRKeUI1UFNjeU1EVXVORGNuSUhSbGVIUXRZVzVqYUc5eVBTZHRhV1JrYkdVbklITjBlV3hsUFNkbWIyNTBMWE5wZW1VNklEZ3VPREJ3ZUR0bWFXeHNPaUFqTkVRMFJEUkVPeUJtYjI1MExXWmhiV2xzZVRvZ0lrRnlhV0ZzSWpzbklIUmxlSFJNWlc1bmRHZzlKekV4TGpJMWNIZ25JR3hsYm1kMGFFRmthblZ6ZEQwbmMzQmhZMmx1WjBGdVpFZHNlWEJvY3ljK1NuVnNQQzkwWlhoMFBnbzhkR1Y0ZENCNFBTYzBPREV1TlRBbklIazlKekl3TlM0ME55Y2dkR1Y0ZEMxaGJtTm9iM0k5SjIxcFpHUnNaU2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1UTXVOamx3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejVQWTNROEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpJMUxqQTBKeUI1UFNjeE9UQXVPREFuSUhSbGVIUXRZVzVqYUc5eVBTZGxibVFuSUhOMGVXeGxQU2RtYjI1MExYTnBlbVU2SURndU9EQndlRHRtYVd4c09pQWpORVEwUkRSRU95Qm1iMjUwTFdaaGJXbHNlVG9nSWtGeWFXRnNJanNuSUhSbGVIUk1aVzVuZEdnOUp6UXVPRGx3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejR3UEM5MFpYaDBQZ284ZEdWNGRDQjRQU2N5TlM0d05DY2dlVDBuTVRRNUxqVTRKeUIwWlhoMExXRnVZMmh2Y2owblpXNWtKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjeE5DNDJOM0I0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5QakkxTUR3dmRHVjRkRDRLUEhSbGVIUWdlRDBuTWpVdU1EUW5JSGs5SnpFd09DNHpOeWNnZEdWNGRDMWhibU5vYjNJOUoyVnVaQ2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1UUXVOamR3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejQxTURBOEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpJMUxqQTBKeUI1UFNjMk55NHhOU2NnZEdWNGRDMWhibU5vYjNJOUoyVnVaQ2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1UUXVOamR3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejQzTlRBOEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpJMUxqQTBKeUI1UFNjeU5TNDVOQ2NnZEdWNGRDMWhibU5vYjNJOUoyVnVaQ2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1Ua3VOVFp3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejR4TURBd1BDOTBaWGgwUGdvOGJHbHVaU0I0TVQwbk1qVXlMakUxSnlCNU1UMG5Nak15TGpRd0p5QjRNajBuTWpZMUxqazNKeUI1TWowbk1qTXlMalF3SnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNOR09EYzJOa1E3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhSbGVIUWdlRDBuTWpjekxqRTRKeUI1UFNjeU16VXVOVFVuSUhOMGVXeGxQU2RtYjI1MExYTnBlbVU2SURndU9EQndlRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2MwTGpnNWNIZ25JR3hsYm1kMGFFRmthblZ6ZEQwbmMzQmhZMmx1WjBGdVpFZHNlWEJvY3ljK01Ud3ZkR1Y0ZEQ0S1BDOW5QZ284TDJjK0Nqd3ZjM1puUGc9PScgc3R5bGU9J3dpZHRoOjUwNHB4OyBtYXgtd2lkdGg6MTAwJTsgZGlzcGxheTpibG9jaycgYWx0PSd0aW1lIHNlcmllcycgLz48ZGl2IHN0eWxlPSdtYXJnaW4tdG9wOjZweCc+PGEgaHJlZj0nZGF0YTp0ZXh0L2NzdjtiYXNlNjQsSW1OdmRtVnlZV2RsWDJsa0lpd2ljR0Z5WVcxbGRHVnlJaXdpY0dGeVlXMWxkR1Z5WDJ4aFltVnNJaXdpZFc1cGRDSXNJbVJoZEdWMGFXMWxJaXdpZUNJc0lua2lMQ0o2SWl3aWRtRnNkV1VpQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09TMHlPU3d0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERjd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPUzB5T0N3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxERXdNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURrdE1qY3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TURBS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjMUxUQTVMVEkyTEMwM09DNHpNemszTVRneE1qWTBOemMyTERNMkxqQTFOREF6T1RnME9EYzNORE1zVGtFc05EQXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T1MweU5Td3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMREUxTUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1Ea3RNalFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU1EQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UYzFMVEE1TFRJekxDMDNPQzR6TXprM01UZ3hNalkwTnpjMkxETTJMakExTkRBek9UZzBPRGMzTkRNc1RrRXNOVEF3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09TMHlNaXd0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERJMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPUzB5TVN3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxESTJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T1MweU1Dd3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMRE13Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09TMHhPU3d0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERJNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPUzB4T0N3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxETXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T1MweE55d3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMRFF3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09TMHhOaXd0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERVd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPUzB4TlN3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxEY3dDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T1MweE5Dd3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMREUyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09TMHhNeXd0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERFNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPUzB4TWl3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxERXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T1MweE1Td3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMREUwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09TMHhNQ3d0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERFMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPUzB3T1N3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxERTRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T1Mwd09Dd3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMREl5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09TMHdOeXd0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERNd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPUzB3Tml3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxERXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T1Mwd05Td3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMREUwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09TMHdOQ3d0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERFMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPUzB3TXl3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxERTRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T1Mwd01pd3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMREl3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09TMHdNU3d0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERNMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPQzB6TVN3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxEY3VOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURndE16QXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3czTGpnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjMUxUQTRMVEk1TEMwM09DNHpNemszTVRneE1qWTBOemMyTERNMkxqQTFOREF6T1RnME9EYzNORE1zVGtFc055NDRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T0MweU9Dd3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMRGd1TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EZ3RNamNzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3NUxqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UYzFMVEE0TFRJMkxDMDNPQzR6TXprM01UZ3hNalkwTnpjMkxETTJMakExTkRBek9UZzBPRGMzTkRNc1RrRXNPUzQyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd09DMHlOU3d0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERFeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdPQzB5TkN3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxERXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3T0MweU15d3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMRGt1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EZ3RNaklzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGd0TWpFc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURndE1qQXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EZ3RNVGtzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGd0TVRnc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURndE1UY3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EZ3RNVFlzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGd0TVRVc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURndE1UUXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EZ3RNVE1zTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGd0TVRJc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURndE1URXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EZ3RNVEFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGd0TURrc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURndE1EZ3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EZ3RNRGNzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGd0TURZc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURndE1EVXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EZ3RNRFFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGd0TURNc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURndE1ESXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EZ3RNREVzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGN0TXpFc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3lNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURjdE16QXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EY3RNamtzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGN0TWpnc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3lOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURjdE1qY3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EY3RNallzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ek1Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGN0TWpVc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzJNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURjdE1qUXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EY3RNak1zTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGN0TWpJc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3pNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURjdE1qRXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cwTUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EY3RNakFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3MU1Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGN0TVRrc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzRNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURjdE1UZ3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TURBS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjMUxUQTNMVEUzTEMwM09DNHpNemszTVRneE1qWTBOemMyTERNMkxqQTFOREF6T1RnME9EYzNORE1zVGtFc01qQXdDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3TnkweE5pd3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMRFExTUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EY3RNVFVzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3M09EQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UYzFMVEEzTFRFMExDMDNPQzR6TXprM01UZ3hNalkwTnpjMkxETTJMakExTkRBek9UZzBPRGMzTkRNc1RrRXNORGd5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd055MHhNeXd0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERFME13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGN0TVRJc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3pPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURjdE1URXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cwTXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EY3RNVEFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGN0TURrc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURjdE1EZ3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EY3RNRGNzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGN0TURZc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURjdE1EVXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EY3RNRFFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRGN0TURNc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURjdE1ESXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EY3RNREVzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TXpBc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1qa3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNamdzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TWpjc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1qWXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNalVzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TWpRc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1qTXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNaklzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TWpFc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1qQXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNVGtzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TVRnc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1UY3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNVFlzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TVRVc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3hPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1UUXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNVE1zTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TVRJc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3lOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1URXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNVEFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TURrc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3lNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1EZ3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNRGNzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TURZc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3lOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1EVXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNRFFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFl0TURNc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3pNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURZdE1ESXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cwTWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EWXRNREVzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TXpFc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzFPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE16QXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3czTXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNamtzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TWpnc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3lOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE1qY3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNallzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TWpVc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3lOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE1qUXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNak1zTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TWpJc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3pNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE1qRXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d6TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNakFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TVRrc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzJPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE1UZ3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3c0TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNVGNzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3M05Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TVRZc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzBOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE1UVXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNVFFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TVRNc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3lOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE1USXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNVEVzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eU9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TVRBc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3lPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE1Ea3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNRGdzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ek1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TURjc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3pNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE1EWXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d6TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNRFVzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TURRc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzFNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURVdE1ETXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d6TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EVXRNRElzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME1Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFV0TURFc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3pOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE16QXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d6TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNamtzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ek53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TWpnc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3pOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE1qY3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d6TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNallzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ek5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TWpVc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3pPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE1qUXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d6T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNak1zTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ek9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TWpJc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTd3pPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE1qRXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cwTVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNakFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TVRrc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzBOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE1UZ3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cwTmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNVGNzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TVRZc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzJNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE1UVXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3czTXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNVFFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TVRNc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzBNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE1USXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cwT0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNVEVzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TVRBc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzBOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE1Ea3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cwTlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNRGdzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3ME5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TURjc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzBOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE1EWXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cwT0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNRFVzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3MU1Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TURRc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzFOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURRdE1ETXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cyTkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1EUXRNRElzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3MU53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRFF0TURFc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzJNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURNdE16RXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3czTXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1ETXRNekFzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3NE5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRE10TWprc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzJNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURNdE1qZ3NMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3cyTkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1ETXRNamNzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3M09Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRE10TWpZc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzVOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURNdE1qVXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d4TWpFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjMUxUQXpMVEkwTEMwM09DNHpNemszTVRneE1qWTBOemMyTERNMkxqQTFOREF6T1RnME9EYzNORE1zVGtFc01USXpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3TXkweU15d3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMREV6T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1TnpVdE1ETXRNaklzTFRjNExqTXpPVGN4T0RFeU5qUTNOellzTXpZdU1EVTBNRE01T0RRNE56YzBNeXhPUVN3eE5UZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UYzFMVEF6TFRJeExDMDNPQzR6TXprM01UZ3hNalkwTnpjMkxETTJMakExTkRBek9UZzBPRGMzTkRNc1RrRXNNak15Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGszTlMwd015MHlNQ3d0TnpndU16TTVOekU0TVRJMk5EYzNOaXd6Tmk0d05UUXdNems0TkRnM056UXpMRTVCTERnek1Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU56VXRNRE10TVRrc0xUYzRMak16T1RjeE9ERXlOalEzTnpZc016WXVNRFUwTURNNU9EUTROemMwTXl4T1FTdzRNRFVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGMxTFRBekxURTRMQzAzT0M0ek16azNNVGd4TWpZME56YzJMRE0yTGpBMU5EQXpPVGcwT0RjM05ETXNUa0VzTWpBNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrM05TMHdNeTB4Tnl3dE56Z3VNek01TnpFNE1USTJORGMzTml3ek5pNHdOVFF3TXprNE5EZzNOelF6TEU1QkxESTFNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVOelV0TURNdE1UWXNMVGM0TGpNek9UY3hPREV5TmpRM056WXNNell1TURVME1ETTVPRFE0TnpjME15eE9RU3d5TlRZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RjMUxUQXpMVEUxTEMwM09DNHpNemszTVRneE1qWTBOemMyTERNMkxqQTFOREF6T1RnME9EYzNORE1zVGtFc09EQTFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazNOUzB3TXkweE5Dd3ROemd1TXpNNU56RTRNVEkyTkRjM05pd3pOaTR3TlRRd016azRORGczTnpRekxFNUJMRGsxTlE9PScgZG93bmxvYWQ9J3N0YXRpb24tVVNHUy0wMjA4MTgwMC5jc3YnPkRvd25sb2FkIENTVjxcL2E+PFwvZGl2PjxcL2Rpdj4iLCI8ZGl2IHN0eWxlPSdmb250LWZhbWlseTpzeXN0ZW0tdWksc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHg7IG1heC13aWR0aDo1MjhweCc+PGRpdiBzdHlsZT0nZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjRweCc+REVWSUxTIENSQURMRSBDIEFUIE5DIDM5IE5SIEtFQVJORVksIE5DPFwvZGl2PjxpbWcgc3JjPSdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBuTVM0d0p5QmxibU52WkdsdVp6MG5WVlJHTFRnbklEOCtDanh6ZG1jZ2VHMXNibk05SjJoMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSnlCNGJXeHVjenA0YkdsdWF6MG5hSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M5NGJHbHVheWNnZDJsa2RHZzlKelV3TkM0d01IQjBKeUJvWldsbmFIUTlKekkxTWk0d01IQjBKeUIyYVdWM1FtOTRQU2N3SURBZ05UQTBMakF3SURJMU1pNHdNQ2MrQ2p4bklHTnNZWE56UFNkemRtZHNhWFJsSno0S1BHUmxabk0rQ2lBZ1BITjBlV3hsSUhSNWNHVTlKM1JsZUhRdlkzTnpKejQ4SVZ0RFJFRlVRVnNLSUNBZ0lDNXpkbWRzYVhSbElHeHBibVVzSUM1emRtZHNhWFJsSUhCdmJIbHNhVzVsTENBdWMzWm5iR2wwWlNCd2IyeDVaMjl1TENBdWMzWm5iR2wwWlNCd1lYUm9MQ0F1YzNabmJHbDBaU0J5WldOMExDQXVjM1puYkdsMFpTQmphWEpqYkdVZ2V3b2dJQ0FnSUNCbWFXeHNPaUJ1YjI1bE93b2dJQ0FnSUNCemRISnZhMlU2SUNNd01EQXdNREE3Q2lBZ0lDQWdJSE4wY205clpTMXNhVzVsWTJGd09pQnliM1Z1WkRzS0lDQWdJQ0FnYzNSeWIydGxMV3hwYm1WcWIybHVPaUJ5YjNWdVpEc0tJQ0FnSUNBZ2MzUnliMnRsTFcxcGRHVnliR2x0YVhRNklERXdMakF3T3dvZ0lDQWdmUW9nSUNBZ0xuTjJaMnhwZEdVZ2RHVjRkQ0I3Q2lBZ0lDQWdJSGRvYVhSbExYTndZV05sT2lCd2NtVTdDaUFnSUNCOUNpQWdJQ0F1YzNabmJHbDBaU0JuTG1kc2VYQm9aM0p2ZFhBZ2NHRjBhQ0I3Q2lBZ0lDQWdJR1pwYkd3NklHbHVhR1Z5YVhRN0NpQWdJQ0FnSUhOMGNtOXJaVG9nYm05dVpUc0tJQ0FnSUgwS0lDQmRYVDQ4TDNOMGVXeGxQZ284TDJSbFpuTStDanh5WldOMElIZHBaSFJvUFNjeE1EQWxKeUJvWldsbmFIUTlKekV3TUNVbklITjBlV3hsUFNkemRISnZhMlU2SUc1dmJtVTdJR1pwYkd3NklDTkdSa1pHUmtZN0p5OCtDanhrWldaelBnb2dJRHhqYkdsd1VHRjBhQ0JwWkQwblkzQk5RelIzVFVoM01VMUVVWFZOUkVJNFRVTTBkMDFJZDNsT1ZFbDFUVVJCUFNjK0NpQWdJQ0E4Y21WamRDQjRQU2N3TGpBd0p5QjVQU2N3TGpBd0p5QjNhV1IwYUQwbk5UQTBMakF3SnlCb1pXbG5hSFE5SnpJMU1pNHdNQ2NnTHo0S0lDQThMMk5zYVhCUVlYUm9QZ284TDJSbFpuTStDanhuSUdOc2FYQXRjR0YwYUQwbmRYSnNLQ05qY0UxRE5IZE5TSGN4VFVSUmRVMUVRamhOUXpSM1RVaDNlVTVVU1hWTlJFRTlLU2MrQ2p4eVpXTjBJSGc5SnpBdU1EQW5JSGs5Snkwd0xqQXdNREF3TURBd01EQXdNREF5T0NjZ2QybGtkR2c5SnpVd05DNHdNQ2NnYUdWcFoyaDBQU2N5TlRJdU1EQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dibTl1WlRzZ1ptbHNiRG9nSTBaR1JrWkdSanNuSUM4K0Nqd3ZaejRLUEdSbFpuTStDaUFnUEdOc2FYQlFZWFJvSUdsa1BTZGpjRTFxUVhWTlZHdzRUa1JyTkV4cVZYbG1SRWw1VEdwUmQyWkVSVFZPUXpSNVRrRTlQU2MrQ2lBZ0lDQThjbVZqZENCNFBTY3lNQzR4T1NjZ2VUMG5Nakl1TkRBbklIZHBaSFJvUFNjME56Z3VNek1uSUdobGFXZG9kRDBuTVRjeExqZzBKeUF2UGdvZ0lEd3ZZMnhwY0ZCaGRHZytDand2WkdWbWN6NEtQR2NnWTJ4cGNDMXdZWFJvUFNkMWNtd29JMk53VFdwQmRVMVViRGhPUkdzMFRHcFZlV1pFU1hsTWFsRjNaa1JGTlU1RE5IbE9RVDA5S1NjK0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6SXdMakU1TERFMk9DNHhNeUEwT1RndU5USXNNVFk0TGpFeklDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTUM0MU16c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6SXdMakU1TERFeU1pNHhOaUEwT1RndU5USXNNVEl5TGpFMklDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTUM0MU16c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6SXdMakU1TERjMkxqRTRJRFE1T0M0MU1pdzNOaTR4T0NBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREF1TlRNN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjeU1DNHhPU3d6TUM0eU1TQTBPVGd1TlRJc016QXVNakVnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTVRFNExqUXhMREU1TkM0eU5DQXhNVGd1TkRFc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTXpFMUxqQTRMREU1TkM0eU5DQXpNVFV1TURnc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpBdU1Ua3NNVGt4TGpFeUlEUTVPQzQxTWl3eE9URXVNVElnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpBdU1Ua3NNVFExTGpFMElEUTVPQzQxTWl3eE5EVXVNVFFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpBdU1Ua3NPVGt1TVRjZ05EazRMalV5TERrNUxqRTNJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekl3TGpFNUxEVXpMakl3SURRNU9DNDFNaXcxTXk0eU1DQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3lNVFl1TnpVc01UazBMakkwSURJeE5pNDNOU3d5TWk0ME1DQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTYzBNVE11TkRFc01UazBMakkwSURReE15NDBNU3d5TWk0ME1DQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTYzBNUzQ1TXl3eE9EVXVPVGNnTkRRdU1USXNNVGcyTGpNMElEUTJMak13TERFNE5pNDBNeUEwT0M0ME9Td3hPRFl1TURJZ05UQXVOamNzTVRnMUxqZ3pJRFV5TGpnMkxERTROQzQ1TVNBMU5TNHdOU3d4T0RVdU1UQWdOVGN1TWpNc01UZzFMak0zSURVNUxqUXlMREU0TlM0eE9TQTJNUzQyTUN3eE9EUXVPRElnTmpNdU56a3NNVGcwTGpneUlEWTFMamszTERFNE5DNDVNU0EyT0M0eE5pd3hPRFV1TkRZZ056QXVNelFzTVRnMUxqTXpJRGN5TGpVekxERTROUzQxTVNBM05DNDNNU3d4T0RVdU1UUWdOell1T1RBc01UZ3pMamMySURjNUxqQTRMREU0TXk0NE5pQTRNUzR5Tnl3eE9ETXVNVElnT0RNdU5EVXNNVGcwTGprMklEZzFMalkwTERFNE5TNHdNQ0E0Tnk0NE1pd3hPRFV1TkRZZ09UQXVNREVzTVRnMUxqQTFJRGt5TGpFNUxERTROQzQyTkNBNU5DNHpPQ3d4T0RVdU1UUWdPVFl1TlRZc01UZzFMalF5SURrNExqYzFMREU0TlM0ek15QXhNREF1T1RNc01UZzFMakUwSURFd015NHhNaXd4T0RVdU1UUWdNVEExTGpNd0xERTRNeTQ0TVNBeE1EY3VORGtzTVRnMUxqQXdJREV3T1M0Mk55d3hPRFV1TkRJZ01URXhMamcyTERFNE5TNDBNaUF4TVRRdU1EUXNNVGcxTGpRMklERXhOaTR5TXl3eE9EVXVNamdnTVRFNExqUXhMREU0TlM0M05DQXhNakF1TmpBc01UZzFMalUySURFeU1pNDNPQ3d4T0RNdU5Ea2dNVEkwTGprM0xERTROQzQxT1NBeE1qY3VNVFlzTVRnMUxqRTBJREV5T1M0ek5Dd3hPRFV1TVRRZ01UTXhMalV6TERFNE5DNDJPQ0F4TXpNdU56RXNNVGcxTGpJNElERXpOUzQ1TUN3eE9EVXVNVGtnTVRNNExqQTRMREU0TlM0eU15QXhOREF1TWpjc01UZzFMakU1SURFME1pNDBOU3d4T0RBdU1qY2dNVFEwTGpZMExERTRNUzQyT1NBeE5EWXVPRElzTVRnekxqazFJREUwT1M0d01Td3hPRFF1TkRFZ01UVXhMakU1TERFNE15NDJOeUF4TlRNdU16Z3NNVFl4TGpnNElERTFOUzQxTml3eE56Z3VPREFnTVRVM0xqYzFMREUzTVM0d015QXhOVGt1T1RNc01UWTNMamsxSURFMk1pNHhNaXd4TnpndU1qQWdNVFkwTGpNd0xERTNPUzQ0TmlBeE5qWXVORGtzTVRneExqTXpJREUyT0M0Mk55d3hPREV1T0RNZ01UY3dMamcyTERFNE1pNHlPU0F4TnpNdU1EUXNNVGd5TGpjeElERTNOUzR5TXl3eE9ETXVNallnTVRjM0xqUXhMREU0TXk0ek1DQXhOemt1TmpBc01UZ3pMalU0SURFNE1TNDNPQ3d4T0RNdU5qTWdNVGd6TGprM0xERTRNeTQyTnlBeE9EWXVNVFVzTVRnekxqZzJJREU0T0M0ek5Dd3hPRE11T1RVZ01Ua3dMalV5TERFNE5DNHhPQ0F4T1RJdU56RXNNVGcwTGpFeklERTVOQzQ0T1N3eE9ETXVPREVnTVRrM0xqQTRMREU0TkM0eU1pQXhPVGt1TWpZc01UZzBMakl5SURJd01TNDBOU3d4T0RRdU5Ua2dNakF6TGpZMExERTROQzQ1TmlBeU1EVXVPRElzTVRnMExqZzNJREl3T0M0d01Td3hPRFF1TnpNZ01qRXdMakU1TERFNE5DNDROeUF5TVRJdU16Z3NNVGcxTGpFMElESXhOQzQxTml3eE9EVXVNVFFnTWpFMkxqYzFMREU0TlM0eE5DQXlNVGd1T1RNc01UZ3dMakV6SURJeU1TNHhNaXd4TVRFdU1USWdNakl6TGpNd0xERXdPQzR6TmlBeU1qVXVORGtzTVRVekxqRTBJREl5Tnk0Mk55d3hOamt1TVRRZ01qSTVMamcyTERFM015NDRNeUF5TXpJdU1EUXNNVGMyTGpBNUlESXpOQzR5TXl3eE56Y3VOemtnTWpNMkxqUXhMREUzT0M0d01pQXlNemd1TmpBc01UYzRMakUxSURJME1DNDNPQ3d4TnprdU1qRWdNalF5TGprM0xERTNPUzQ1TUNBeU5EVXVNVFVzTVRnd0xqRXpJREkwTnk0ek5Dd3hPREF1TkRVZ01qUTVMalV5TERFNE1DNDVOaUF5TlRFdU56RXNNVGMzTGpZMUlESTFNeTQ0T1N3eE56Y3VPVGNnTWpVMkxqQTRMREUzT0M0M01TQXlOVGd1TWpZc01UYzVMall6SURJMk1DNDBOU3d4TnprdU5qTWdNall5TGpZekxERTRNQzR3T1NBeU5qUXVPRElzTVRnd0xqVTBJREkyTnk0d01Dd3hPREV1TURBZ01qWTVMakU1TERFNE1DNDRNaUF5TnpFdU16Y3NNVGd4TGpNeklESTNNeTQxTml3eE9ERXVNek1nTWpjMUxqYzBMREUzT1M0MU15QXlOemN1T1RNc01UYzRMak00SURJNE1DNHhNaXd4TnpndU16UWdNamd5TGpNd0xERTJPQzR6TWlBeU9EUXVORGtzTXpFdU5Ua2dNamcyTGpZM0xETXdMakl4SURJNE9DNDROaXd4TkRBdU1Ea2dNamt4TGpBMExERTFOeTR4TkNBeU9UTXVNak1zTVRVNUxqRXlJREk1TlM0ME1Td3hNekl1TnpNZ01qazNMall3TERFMU1pNDVOaUF5T1RrdU56Z3NNVFl5TGpVeUlETXdNUzQ1Tnl3eE5qVXVOelFnTXpBMExqRTFMREUyTnk0eE55QXpNRFl1TXpRc01UWTNMalF3SURNd09DNDFNaXc0TkM0d01DQXpNVEF1TnpFc01UUTJMalE0SURNeE1pNDRPU3d4TlRrdU5qY2dNekUxTGpBNExERTJOQzR4T0NBek1UY3VNallzTVRZMkxqWTJJRE14T1M0ME5Td3hOamN1T0RFZ016SXhMall6TERFMk9TNHdNU0F6TWpNdU9ESXNNVGN3TGpBeUlETXlOaTR3TUN3eE56QXVORE1nTXpJNExqRTVMREUzTWk0eE15QXpNekF1TXpjc01UY3lMakkzSURNek1pNDFOaXd4TnpJdU5Ua2dNek0wTGpjMExERTNNaTQ0TnlBek16WXVPVE1zTVRjekxqRTBJRE16T1M0eE1Td3hOVGN1T1RjZ016UXhMak13TERFMk5pNHdNaUF6TkRNdU5EZ3NNVGN3TGpBeUlETTBOUzQyTnl3eE56RXVNelVnTXpRM0xqZzFMREUzTVM0M01pQXpOVEF1TURRc01UY3pMall3SURNMU1pNHlNeXd4TnpVdU5UTWdNelUwTGpReExERTNOUzR4TWlBek5UWXVOakFzTVRjMkxqYzRJRE0xT0M0M09Dd3hOemN1TXpjZ016WXdMamszTERFM055NHhPU0F6TmpNdU1UVXNNVGMzTGpZd0lETTJOUzR6TkN3eE56Z3VNemdnTXpZM0xqVXlMREUzT0M0ME9DQXpOamt1TnpFc01UYzRMakl3SURNM01TNDRPU3d4TnprdU5qY2dNemMwTGpBNExERTNPUzQyTnlBek56WXVNallzTVRjNUxqazVJRE0zT0M0ME5Td3hPREF1TmpnZ016Z3dMall6TERFNE1DNDNNeUF6T0RJdU9ESXNNVGd4TGpReUlETTROUzR3TUN3eE9ERXVOakFnTXpnM0xqRTVMREU0TVM0MU1TQXpPRGt1TXpjc01UZ3hMalkxSURNNU1TNDFOaXd4TnpjdU9EZ2dNemt6TGpjMExERTNOeTR3TUNBek9UVXVPVE1zTVRjMExqVTNJRE01T0M0eE1Td3hOekl1TnpnZ05EQXdMak13TERFM055NHpNeUEwTURJdU5EZ3NNVGM0TGpVeUlEUXdOQzQyTnl3eE56a3VOak1nTkRBMkxqZzFMREU0TUM0MU5DQTBNRGt1TURRc01UZ3dMalk0SURReE1TNHlNaXd4T0RFdU1UQWdOREV6TGpReExERTRNUzR6TnlBME1UVXVOVGtzTVRneExqZzRJRFF4Tnk0M09Dd3hPREl1TWprZ05ERTVMamsyTERFNE1pNHpOQ0EwTWpJdU1UVXNNVGd5TGpjeElEUXlOQzR6TXl3eE9ESXVNVEVnTkRJMkxqVXlMREU0TWk0NU9DQTBNamd1TnpFc01UZ3pMak13SURRek1DNDRPU3d4T0RJdU9UZ2dORE16TGpBNExERTRNaTQzTVNBME16VXVNallzTVRneUxqazBJRFF6Tnk0ME5Td3hPRE11TXpVZ05ETTVMall6TERFNE15NDBOQ0EwTkRFdU9ESXNNVGd5TGpReklEUTBOQzR3TUN3eE9ESXVORGdnTkRRMkxqRTVMREU0TXk0eE55QTBORGd1TXpjc01UZ3hMamMwSURRMU1DNDFOaXd4T0RNdU9Ua2dORFV5TGpjMExERTROQzQyT0NBME5UUXVPVE1zTVRnMExqZ3lJRFExTnk0eE1Td3hPRFF1TnpjZ05EVTVMak13TERFNE5DNDRNaUEwTmpFdU5EZ3NNVGcxTGpBMUlEUTJNeTQyTnl3eE9EUXVPVFlnTkRZMUxqZzFMREU0TXk0NU5TQTBOamd1TURRc01UZzFMakExSURRM01DNHlNaXd4T0RVdU1qTWdORGN5TGpReExERTROUzR4TkNBME56UXVOVGtzTVRnMUxqUXlJRFEzTmk0M09Dd3hPRFV1TlRFZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkdPRGMyTmtRN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BDOW5QZ284WnlCamJHbHdMWEJoZEdnOUozVnliQ2dqWTNCTlF6UjNUVWgzTVUxRVVYVk5SRUk0VFVNMGQwMUlkM2xPVkVsMVRVUkJQU2tuUGdvOEwyYytDanhrWldaelBnb2dJRHhqYkdsd1VHRjBhQ0JwWkQwblkzQk5ha0YxVFZSc09FNUVhelJNYWxWNVprUlZkVTVFYURoTmFrbDFUa1JCUFNjK0NpQWdJQ0E4Y21WamRDQjRQU2N5TUM0eE9TY2dlVDBuTlM0ME9DY2dkMmxrZEdnOUp6UTNPQzR6TXljZ2FHVnBaMmgwUFNjeE5pNDVNaWNnTHo0S0lDQThMMk5zYVhCUVlYUm9QZ284TDJSbFpuTStDanhuSUdOc2FYQXRjR0YwYUQwbmRYSnNLQ05qY0UxcVFYVk5WR3c0VGtSck5FeHFWWGxtUkZWMVRrUm9PRTFxU1hWT1JFRTlLU2MrQ2p4MFpYaDBJSGc5SnpJMU9TNHpOaWNnZVQwbk1UY3VNRGtuSUhSbGVIUXRZVzVqYUc5eVBTZHRhV1JrYkdVbklITjBlV3hsUFNkbWIyNTBMWE5wZW1VNklEZ3VPREJ3ZUR0bWFXeHNPaUFqTVVFeFFURkJPeUJtYjI1MExXWmhiV2xzZVRvZ0lrRnlhV0ZzSWpzbklIUmxlSFJNWlc1bmRHZzlKelE1TGpNMGNIZ25JR3hsYm1kMGFFRmthblZ6ZEQwbmMzQmhZMmx1WjBGdVpFZHNlWEJvY3ljK01EQXdOakFnS0daME15OXpLVHd2ZEdWNGRENEtQQzluUGdvOFp5QmpiR2x3TFhCaGRHZzlKM1Z5YkNnalkzQk5RelIzVFVoM01VMUVVWFZOUkVJNFRVTTBkMDFJZDNsT1ZFbDFUVVJCUFNrblBnbzhkR1Y0ZENCNFBTY3lNVFl1TnpVbklIazlKekl3TlM0ME55Y2dkR1Y0ZEMxaGJtTm9iM0k5SjIxcFpHUnNaU2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1UUXVNVGx3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejVLWVc0OEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpReE15NDBNU2NnZVQwbk1qQTFMalEzSnlCMFpYaDBMV0Z1WTJodmNqMG5iV2xrWkd4bEp5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpSRU5FUTBSRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2N4TXk0Mk9YQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBrRndjand2ZEdWNGRENEtQSFJsZUhRZ2VEMG5NVFV1TWpZbklIazlKekU1TkM0eU55Y2dkR1Y0ZEMxaGJtTm9iM0k5SjJWdVpDY2djM1I1YkdVOUoyWnZiblF0YzJsNlpUb2dPQzQ0TUhCNE8yWnBiR3c2SUNNMFJEUkVORVE3SUdadmJuUXRabUZ0YVd4NU9pQWlRWEpwWVd3aU95Y2dkR1Y0ZEV4bGJtZDBhRDBuTkM0NE9YQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqQThMM1JsZUhRK0NqeDBaWGgwSUhnOUp6RTFMakkySnlCNVBTY3hORGd1TWprbklIUmxlSFF0WVc1amFHOXlQU2RsYm1RbklITjBlV3hsUFNkbWIyNTBMWE5wZW1VNklEZ3VPREJ3ZUR0bWFXeHNPaUFqTkVRMFJEUkVPeUJtYjI1MExXWmhiV2xzZVRvZ0lrRnlhV0ZzSWpzbklIUmxlSFJNWlc1bmRHZzlKemt1Tnpod2VDY2diR1Z1WjNSb1FXUnFkWE4wUFNkemNHRmphVzVuUVc1a1IyeDVjR2h6Sno0eE1Ed3ZkR1Y0ZEQ0S1BIUmxlSFFnZUQwbk1UVXVNalluSUhrOUp6RXdNaTR6TWljZ2RHVjRkQzFoYm1Ob2IzSTlKMlZ1WkNjZ2MzUjViR1U5SjJadmJuUXRjMmw2WlRvZ09DNDRNSEI0TzJacGJHdzZJQ00wUkRSRU5FUTdJR1p2Ym5RdFptRnRhV3g1T2lBaVFYSnBZV3dpT3ljZ2RHVjRkRXhsYm1kMGFEMG5PUzQzT0hCNEp5QnNaVzVuZEdoQlpHcDFjM1E5SjNOd1lXTnBibWRCYm1SSGJIbHdhSE1uUGpJd1BDOTBaWGgwUGdvOGRHVjRkQ0I0UFNjeE5TNHlOaWNnZVQwbk5UWXVNelVuSUhSbGVIUXRZVzVqYUc5eVBTZGxibVFuSUhOMGVXeGxQU2RtYjI1MExYTnBlbVU2SURndU9EQndlRHRtYVd4c09pQWpORVEwUkRSRU95Qm1iMjUwTFdaaGJXbHNlVG9nSWtGeWFXRnNJanNuSUhSbGVIUk1aVzVuZEdnOUp6a3VOemh3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejR6TUR3dmRHVjRkRDRLUEd4cGJtVWdlREU5SnpJME55NHlOaWNnZVRFOUp6SXpNaTQwTUNjZ2VESTlKekkyTVM0d09DY2dlVEk5SnpJek1pNDBNQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUmpnM05qWkVPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDangwWlhoMElIZzlKekkyT0M0eU9TY2dlVDBuTWpNMUxqVTFKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdJR1p2Ym5RdFptRnRhV3g1T2lBaVFYSnBZV3dpT3ljZ2RHVjRkRXhsYm1kMGFEMG5OQzQ0T1hCNEp5QnNaVzVuZEdoQlpHcDFjM1E5SjNOd1lXTnBibWRCYm1SSGJIbHdhSE1uUGpFOEwzUmxlSFErQ2p3dlp6NEtQQzluUGdvOEwzTjJaejQ9JyBzdHlsZT0nd2lkdGg6NTA0cHg7IG1heC13aWR0aDoxMDAlOyBkaXNwbGF5OmJsb2NrJyBhbHQ9J3RpbWUgc2VyaWVzJyAvPjxkaXYgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz48YSBocmVmPSdkYXRhOnRleHQvY3N2O2Jhc2U2NCxJbU52ZG1WeVlXZGxYMmxrSWl3aWNHRnlZVzFsZEdWeUlpd2ljR0Z5WVcxbGRHVnlYMnhoWW1Wc0lpd2lkVzVwZENJc0ltUmhkR1YwYVcxbElpd2llQ0lzSW5raUxDSjZJaXdpZG1Gc2RXVWlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TkMwek1Dd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzR5TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1EUXRNamtzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU1qUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEEwTFRJNExDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBMExUSTNMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpJNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdOQzB5Tml3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNHpNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURRdE1qVXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREV1TlRZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQTBMVEkwTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqTTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TkMweU15d3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzR6TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1EUXRNaklzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU16Y0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEEwTFRJeExDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMak00Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd05DMHlNQ3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0ek53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNRFF0TVRrc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXVOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURRdE1UZ3NMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREV1TlRVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQTBMVEUzTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eUxqQTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TkMweE5pd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzQzTXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1EUXRNVFVzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU9EZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEEwTFRFMExDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMamc1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd05DMHhNeXd0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0Mk53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNRFF0TVRJc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXVOamtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBMExURXhMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpjNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdOQzB4TUN3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNDRNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURRdE1Ea3NMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREV1TnpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQTBMVEE0TEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEEwTFRBM0xDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMamMzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd05DMHdOaXd0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0NU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNRFF0TURVc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXVPRE1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBMExUQTBMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpreENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdOQzB3TXl3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNDVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURRdE1ESXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREl1TURFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQTBMVEF4TEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eUxqRXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TXkwek1Td3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNaTR4T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1ETXRNekFzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERJdU1qY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEF6TFRJNUxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3lMak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBekxUSTRMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d5TGpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQXpMVEkzTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eUxqYzBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TXkweU5pd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURNdE1qVXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMRE11T1RrS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQXpMVEkwTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3ekxqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEF6TFRJekxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3pMakEzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd015MHlNaXd0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTWk0NE9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNRE10TWpFc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxESXVNRFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBekxUSXdMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d5TGpBNUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNeTB4T1N3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01pNHdOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURNdE1UZ3NMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREl1TVRFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQXpMVEUzTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eUxqSTJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TXkweE5pd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNaTR5TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1ETXRNVFVzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERJdU5ESUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEF6TFRFMExDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3lMalE1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd015MHhNeXd0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTWk0ME9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNRE10TVRJc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxESXVPREVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBekxURXhMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d5TGpjMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNeTB4TUN3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01pNDNOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURNdE1Ea3NMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREl1T1RRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQXpMVEE0TEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3ekxqQXpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TXkwd055d3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNaTQ1T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1ETXRNRFlzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERNdU1USUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEF6TFRBMUxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3pMalE0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd015MHdOQ3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTXk0ek9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNRE10TURNc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxETXVPREVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBekxUQXlMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3cwTGpJeUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNeTB3TVN3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc05DNHpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TWkweU9Dd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNOQzQxT1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1ESXRNamNzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERVdU5EWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEF5TFRJMkxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTdzNMakl4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd01pMHlOU3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTXk0NU1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNREl0TWpRc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxETXVPVGNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBeUxUSXpMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3cwTGpBekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNaTB5TWl3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc05DNHhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TWkweU1Td3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNOQzR4TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1ESXRNakFzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERRdU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNREl0TVRrc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxEUXVOVGtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBeUxURTRMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3cwTGpneENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNaTB4Tnl3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc05TNHdOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURJdE1UWXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMRFV1TXpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQXlMVEUxTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3MUxqZzJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TWkweE5Dd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNOaTQ0TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1ESXRNVE1zTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERrdU56RUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEF5TFRFeUxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3lNeTR6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd01pMHhNU3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTlM0eE5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNREl0TVRBc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxEVXVNakVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBeUxUQTVMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3cxTGpVeUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNaTB3T0N3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc05pNHlNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURJdE1EY3NMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMRGd1TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1ESXRNRFlzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFeUxqY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEF5TFRBMUxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTdzJMamsyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd01pMHdOQ3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTnk0ek9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNREl0TURNc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXhMakVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBeUxUQXlMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d6TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1ESXRNREVzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERNMExqY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEF4TFRNeExDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTdzBMamsyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd01TMHpNQ3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTWk0M09Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNREV0TWprc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxESXVOemNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBeExUSTRMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d5TGpVeUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNUzB5Tnl3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01pNHhNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURFdE1qWXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREl1TVRNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQXhMVEkxTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eUxqSTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TVMweU5Dd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNaTR5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd01TMHlNeXd0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTWk0ekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNUzB5TWl3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01pNDBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TVMweU1Td3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNaTQxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd01TMHlNQ3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTWk0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNUzB4T1N3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01pNDNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TVMweE9Dd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNaTQ0TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RVdE1ERXRNVGNzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERJdU9UTUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzFMVEF4TFRFMkxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3lMakl4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd01TMHhOU3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTWk0ek1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNREV0TVRRc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxESXVNemtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBeExURXpMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d5TGpRMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNUzB4TWl3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01pNDFPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURFdE1URXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREl1T0RJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMUxUQXhMVEV3TEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eUxqZzFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROUzB3TVMwd09Td3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNaTQ1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd01TMHdPQ3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTXk0eU53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNREV0TURjc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxETXVOellLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBeExUQTJMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3cwTGpjNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5TMHdNUzB3TlN3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc09DNHlOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFV0TURFdE1EUXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREU0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TlMwd01TMHdNeXd0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVRjdU5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EVXRNREV0TURJc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxESXVNemtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcxTFRBeExUQXhMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMExURXlMVE14TEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqTUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV5TFRNd0xDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcwTFRFeUxUSTVMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpNMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5DMHhNaTB5T0N3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNHpPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFF0TVRJdE1qY3NMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREV1TXpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMExURXlMVEkyTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqTTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TWkweU5Td3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzQwTWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1USXRNalFzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EUXRNVEl0TWpNc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXVOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFF0TVRJdE1qSXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREV1TlRrS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMExURXlMVEl4TEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqVXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TWkweU1Dd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzQxTVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1USXRNVGtzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU5UWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV5TFRFNExDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMalU0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TkMweE1pMHhOeXd0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0Mk1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EUXRNVEl0TVRZc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXVOak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcwTFRFeUxURTFMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpZMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5DMHhNaTB4TkN3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNDNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TWkweE15d3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzQzTVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1USXRNVElzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU9ETUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV5TFRFeExDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMamt5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TkMweE1pMHhNQ3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTWk0d01nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EUXRNVEl0TURrc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxESXVNVE1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcwTFRFeUxUQTRMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d5TGpRMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5DMHhNaTB3Tnl3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01pNDRNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFF0TVRJdE1EWXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMRFV1TURRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMExURXlMVEExTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3MExqTTNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TWkwd05Dd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNaTQyT0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1USXRNRE1zTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERZdU16WUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV5TFRBeUxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMall5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TkMweE1pMHdNU3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0ME5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EUXRNVEV0TXpBc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXVOVFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcwTFRFeExUSTVMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d5TGpBMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5DMHhNUzB5T0N3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01pNHpOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFF0TVRFdE1qY3NMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREV1TWprS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMExURXhMVEkyTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqSTRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TVMweU5Td3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzR5T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1URXRNalFzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU1qY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV4TFRJekxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMalFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcwTFRFeExUSXlMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMExURXhMVEl4TEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqTUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV4TFRJd0xDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMalF5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TkMweE1TMHhPU3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0Mk5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EUXRNVEV0TVRnc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXVNakVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcwTFRFeExURTNMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpFM0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5DMHhNUzB4Tml3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNHlOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFF0TVRFdE1UVXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREV1TWpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMExURXhMVEUwTEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqSTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TVMweE15d3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzR5TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1URXRNVElzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU16TUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV4TFRFeExDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMalU1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TkMweE1TMHhNQ3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0ekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5DMHhNUzB3T1N3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNHpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TVMwd09Dd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzR5TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1URXRNRGNzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU1qUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV4TFRBMkxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcwTFRFeExUQTFMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpReENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5DMHhNUzB3TkN3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNHpNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFF0TVRFdE1ETXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREV1TWpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMExURXhMVEF5TEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqTXpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TVMwd01Td3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzR6TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1UQXRNekVzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU56UUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV3TFRNd0xDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMalU0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TkMweE1DMHlPU3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0MkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5DMHhNQzB5T0N3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNHpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TUMweU55d3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzR5TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1UQXRNallzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU1qWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV3TFRJMUxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMakl6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TkMweE1DMHlOQ3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0ek5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EUXRNVEF0TWpNc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXVNemNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcwTFRFd0xUSXlMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpNM0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE5DMHhNQzB5TVN3dE56Z3VNamsyTmpZeE16WXdNVE13TVN3ek5pNHlNVE15TURReE5URTJOemdzVGtFc01TNHlPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPRFF0TVRBdE1qQXNMVGM0TGpJNU5qWTJNVE0yTURFek1ERXNNell1TWpFek1qQTBNVFV4TmpjNExFNUJMREV1TWpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RnMExURXdMVEU1TEMwM09DNHlPVFkyTmpFek5qQXhNekF4TERNMkxqSXhNekl3TkRFMU1UWTNPQ3hPUVN3eExqTXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazROQzB4TUMweE9Dd3ROemd1TWprMk5qWXhNell3TVRNd01Td3pOaTR5TVRNeU1EUXhOVEUyTnpnc1RrRXNNUzR6TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RRdE1UQXRNVGNzTFRjNExqSTVOalkyTVRNMk1ERXpNREVzTXpZdU1qRXpNakEwTVRVeE5qYzRMRTVCTERFdU1UVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZzBMVEV3TFRFMkxDMDNPQzR5T1RZMk5qRXpOakF4TXpBeExETTJMakl4TXpJd05ERTFNVFkzT0N4T1FTd3hMakV4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TkMweE1DMHhOU3d0TnpndU1qazJOall4TXpZd01UTXdNU3d6Tmk0eU1UTXlNRFF4TlRFMk56Z3NUa0VzTVM0d01nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9EUXRNVEF0TVRRc0xUYzRMakk1TmpZMk1UTTJNREV6TURFc016WXVNakV6TWpBME1UVXhOamM0TEU1QkxERXVNRFFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGcwTFRFd0xURXpMQzAzT0M0eU9UWTJOakV6TmpBeE16QXhMRE0yTGpJeE16SXdOREUxTVRZM09DeE9RU3d4TGpFeScgZG93bmxvYWQ9J3N0YXRpb24tVVNHUy0wMjA4MjczMDcwLmNzdic+RG93bmxvYWQgQ1NWPFwvYT48XC9kaXY+PFwvZGl2PiIsIjxkaXYgc3R5bGU9J2ZvbnQtZmFtaWx5OnN5c3RlbS11aSxzYW5zLXNlcmlmOyBmb250LXNpemU6MTJweDsgbWF4LXdpZHRoOjUyOHB4Jz48ZGl2IHN0eWxlPSdmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206NHB4Jz5TRVZFTk1JTEUgQ1JFRUsgVFJJQiBBVCBTUjExMjAgTlIgQlVDS0hPUk4sIE5DPFwvZGl2PjxpbWcgc3JjPSdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBuTVM0d0p5QmxibU52WkdsdVp6MG5WVlJHTFRnbklEOCtDanh6ZG1jZ2VHMXNibk05SjJoMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSnlCNGJXeHVjenA0YkdsdWF6MG5hSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M5NGJHbHVheWNnZDJsa2RHZzlKelV3TkM0d01IQjBKeUJvWldsbmFIUTlKekkxTWk0d01IQjBKeUIyYVdWM1FtOTRQU2N3SURBZ05UQTBMakF3SURJMU1pNHdNQ2MrQ2p4bklHTnNZWE56UFNkemRtZHNhWFJsSno0S1BHUmxabk0rQ2lBZ1BITjBlV3hsSUhSNWNHVTlKM1JsZUhRdlkzTnpKejQ4SVZ0RFJFRlVRVnNLSUNBZ0lDNXpkbWRzYVhSbElHeHBibVVzSUM1emRtZHNhWFJsSUhCdmJIbHNhVzVsTENBdWMzWm5iR2wwWlNCd2IyeDVaMjl1TENBdWMzWm5iR2wwWlNCd1lYUm9MQ0F1YzNabmJHbDBaU0J5WldOMExDQXVjM1puYkdsMFpTQmphWEpqYkdVZ2V3b2dJQ0FnSUNCbWFXeHNPaUJ1YjI1bE93b2dJQ0FnSUNCemRISnZhMlU2SUNNd01EQXdNREE3Q2lBZ0lDQWdJSE4wY205clpTMXNhVzVsWTJGd09pQnliM1Z1WkRzS0lDQWdJQ0FnYzNSeWIydGxMV3hwYm1WcWIybHVPaUJ5YjNWdVpEc0tJQ0FnSUNBZ2MzUnliMnRsTFcxcGRHVnliR2x0YVhRNklERXdMakF3T3dvZ0lDQWdmUW9nSUNBZ0xuTjJaMnhwZEdVZ2RHVjRkQ0I3Q2lBZ0lDQWdJSGRvYVhSbExYTndZV05sT2lCd2NtVTdDaUFnSUNCOUNpQWdJQ0F1YzNabmJHbDBaU0JuTG1kc2VYQm9aM0p2ZFhBZ2NHRjBhQ0I3Q2lBZ0lDQWdJR1pwYkd3NklHbHVhR1Z5YVhRN0NpQWdJQ0FnSUhOMGNtOXJaVG9nYm05dVpUc0tJQ0FnSUgwS0lDQmRYVDQ4TDNOMGVXeGxQZ284TDJSbFpuTStDanh5WldOMElIZHBaSFJvUFNjeE1EQWxKeUJvWldsbmFIUTlKekV3TUNVbklITjBlV3hsUFNkemRISnZhMlU2SUc1dmJtVTdJR1pwYkd3NklDTkdSa1pHUmtZN0p5OCtDanhrWldaelBnb2dJRHhqYkdsd1VHRjBhQ0JwWkQwblkzQk5RelIzVFVoM01VMUVVWFZOUkVJNFRVTTBkMDFJZDNsT1ZFbDFUVVJCUFNjK0NpQWdJQ0E4Y21WamRDQjRQU2N3TGpBd0p5QjVQU2N3TGpBd0p5QjNhV1IwYUQwbk5UQTBMakF3SnlCb1pXbG5hSFE5SnpJMU1pNHdNQ2NnTHo0S0lDQThMMk5zYVhCUVlYUm9QZ284TDJSbFpuTStDanhuSUdOc2FYQXRjR0YwYUQwbmRYSnNLQ05qY0UxRE5IZE5TSGN4VFVSUmRVMUVRamhOUXpSM1RVaDNlVTVVU1hWTlJFRTlLU2MrQ2p4eVpXTjBJSGc5SnpBdU1EQW5JSGs5Snkwd0xqQXdNREF3TURBd01EQXdNREF5T0NjZ2QybGtkR2c5SnpVd05DNHdNQ2NnYUdWcFoyaDBQU2N5TlRJdU1EQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dibTl1WlRzZ1ptbHNiRG9nSTBaR1JrWkdSanNuSUM4K0Nqd3ZaejRLUEdSbFpuTStDaUFnUEdOc2FYQlFZWFJvSUdsa1BTZGpjRTFxUVhWTlZHdzRUa1JyTkV4cVZYbG1SRWw1VEdwUmQyWkVSVFZPUXpSNVRrRTlQU2MrQ2lBZ0lDQThjbVZqZENCNFBTY3lNQzR4T1NjZ2VUMG5Nakl1TkRBbklIZHBaSFJvUFNjME56Z3VNek1uSUdobGFXZG9kRDBuTVRjeExqZzBKeUF2UGdvZ0lEd3ZZMnhwY0ZCaGRHZytDand2WkdWbWN6NEtQR2NnWTJ4cGNDMXdZWFJvUFNkMWNtd29JMk53VFdwQmRVMVViRGhPUkdzMFRHcFZlV1pFU1hsTWFsRjNaa1JGTlU1RE5IbE9RVDA5S1NjK0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6SXdMakU1TERFMk55NDBOU0EwT1RndU5USXNNVFkzTGpRMUlDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTUM0MU16c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6SXdMakU1TERFeU9DNHlOQ0EwT1RndU5USXNNVEk0TGpJMElDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTUM0MU16c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6SXdMakU1TERnNUxqQXpJRFE1T0M0MU1pdzRPUzR3TXlBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREF1TlRNN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjeU1DNHhPU3cwT1M0NE1TQTBPVGd1TlRJc05Ea3VPREVnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTVRNNExqQTRMREU1TkM0eU5DQXhNemd1TURnc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTXpNMUxqZzBMREU1TkM0eU5DQXpNelV1T0RRc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpBdU1Ua3NNVGczTGpBMklEUTVPQzQxTWl3eE9EY3VNRFlnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpBdU1Ua3NNVFEzTGpnMElEUTVPQzQxTWl3eE5EY3VPRFFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpBdU1Ua3NNVEE0TGpZeklEUTVPQzQxTWl3eE1EZ3VOak1nSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpBdU1Ua3NOamt1TkRJZ05EazRMalV5TERZNUxqUXlJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekl3TGpFNUxETXdMakl4SURRNU9DNDFNaXd6TUM0eU1TQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3pPUzQzTlN3eE9UUXVNalFnTXprdU56VXNNakl1TkRBZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkZRa1ZDUlVJN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BIQnZiSGxzYVc1bElIQnZhVzUwY3owbk1qTTJMalF4TERFNU5DNHlOQ0F5TXpZdU5ERXNNakl1TkRBZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkZRa1ZDUlVJN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BIQnZiSGxzYVc1bElIQnZhVzUwY3owbk5ETTFMakkyTERFNU5DNHlOQ0EwTXpVdU1qWXNNakl1TkRBZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkZRa1ZDUlVJN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BIQnZiSGxzYVc1bElIQnZhVzUwY3owbk5ERXVPVE1zTVRZd0xqTTVJRFEwTGpFeUxEa3lMamsxSURRMkxqTXdMRGMzTGpJMklEUTRMalE1TERFME5TNDBPU0ExTUM0Mk55d3hOamd1TWpRZ05USXVPRFlzTVRjNExqUXpJRFUxTGpBMUxERTRNQzR4TmlBMU55NHlNeXd4T0RBdU9EWWdOVGt1TkRJc01UZ3hMamN5SURZeExqWXdMREU0TVM0M01pQTJNeTQzT1N3eE9ERXVOeklnTmpVdU9UY3NNVGd4TGpjeUlEWTRMakUyTERFNE1TNDNNaUEzTUM0ek5Dd3hPREl1TWpjZ056SXVOVE1zTVRneUxqazRJRGMwTGpjeExERTRNUzR3TWlBM05pNDVNQ3d4T0RFdU56SWdOemt1TURnc01UYzJMamcySURneExqSTNMREUzTUM0MU9TQTRNeTQwTlN3eE16WXVNRGdnT0RVdU5qUXNNVFV6TGpNeklEZzNMamd5TERFME15NDVNaUE1TUM0d01Td3hNekl1T1RRZ09USXVNVGtzTVRNNExqUXpJRGswTGpNNExERTFOeTR5TmlBNU5pNDFOaXd4TnpZdU9EWWdPVGd1TnpVc01UYzVMamt5SURFd01DNDVNeXd4T0RFdU1qVWdNVEF6TGpFeUxERTRNaTR5TnlBeE1EVXVNekFzTVRneExqQXlJREV3Tnk0ME9Td3hOell1TURnZ01UQTVMalkzTERFM09DNDBNeUF4TVRFdU9EWXNNekF1TWpFZ01URTBMakEwTERFeE5DNHhNaUF4TVRZdU1qTXNNVE15TGprMElERXhPQzQwTVN3eE5USXVOVFVnTVRJd0xqWXdMREUzTkM0MU1TQXhNakl1Tnpnc01UYzJMakE0SURFeU5DNDVOeXd4TnpNdU56SWdNVEkzTGpFMkxERTJNUzQ1TmlBeE1qa3VNelFzTVRjeUxqRTJJREV6TVM0MU15d3hOelF1TlRFZ01UTXpMamN4TERFMU55NHlOaUF4TXpVdU9UQXNNVFkzTGpRMUlERXpPQzR3T0N3eE56SXVPVFFnTVRRd0xqSTNMREUzTWk0eE5pQXhOREl1TkRVc01USXpMalV6SURFME5DNDJOQ3d4TkRndU5qTWdNVFEyTGpneUxERTJOQzR6TVNBeE5Ea3VNREVzTVRZNUxqQXlJREUxTVM0eE9Td3hOekV1TXpjZ01UVXpMak00TERFM015NDNNaUF4TlRVdU5UWXNNVFl5TGpjMUlERTFOeTQzTlN3eE5qa3VPREFnTVRVNUxqa3pMREUzT1M0eU1TQXhOakl1TVRJc01UZ3hMakU0SURFMk5DNHpNQ3d4TWpJdU56VWdNVFkyTGpRNUxEZzFMakV4SURFMk9DNDJOeXd4TVRjdU1qWWdNVGN3TGpnMkxERTBPQzQyTXlBeE56TXVNRFFzTVRZMkxqWTNJREUzTlM0eU15d3hOekl1T1RRZ01UYzNMalF4TERFM05TNHlPU0F4TnprdU5qQXNNVFk0TGpJMElERTRNUzQzT0N3eE1UQXVNakFnTVRnekxqazNMREV6T1M0eU1pQXhPRFl1TVRVc01UWTRMakkwSURFNE9DNHpOQ3d4TnpRdU5URWdNVGt3TGpVeUxERTNOaTQ0TmlBeE9USXVOekVzTVRjNUxqSXhJREU1TkM0NE9Td3hOemt1TlRNZ01UazNMakE0TERFNE1DNDJNeUF4T1RrdU1qWXNNVGd3TGpVMUlESXdNUzQwTlN3eE56a3VNemNnTWpBekxqWTBMREUzT1M0NU1pQXlNRFV1T0RJc01UZ3hMakkxSURJd09DNHdNU3d4T0RJdU1qY2dNakV3TGpFNUxERTNNUzR6TnlBeU1USXVNemdzT0RVdU1URWdNakUwTGpVMkxERTJNeTQxTXlBeU1UWXVOelVzTVRjMkxqQTRJREl4T0M0NU15d3hOemd1TkRNZ01qSXhMakV5TERFM09TNDNOaUF5TWpNdU16QXNNVGd3TGprMElESXlOUzQwT1N3eE9ESXVORE1nTWpJM0xqWTNMREU0TXk0ek55QXlNamt1T0RZc01UZ3pMalV6SURJek1pNHdOQ3d4T0RNdU56WWdNak0wTGpJekxERTRNeTQyTVNBeU16WXVOREVzTVRnekxqVXpJREl6T0M0Mk1Dd3hPRFF1TVRZZ01qUXdMamM0TERFNE15NHdOaUF5TkRJdU9UY3NNVGd5TGprd0lESTBOUzR4TlN3eE9ETXVOamdnTWpRM0xqTTBMREU0TWk0MU9TQXlORGt1TlRJc01UZ3pMalk0SURJMU1TNDNNU3d4T0RNdU1UUWdNalV6TGpnNUxERTJPUzR3TWlBeU5UWXVNRGdzTVRjMUxqSTVJREkxT0M0eU5pd3hPREF1TVRZZ01qWXdMalExTERFNE1pNDBNeUF5TmpJdU5qTXNNVGd6TGpJeElESTJOQzQ0TWl3eE9ETXVOellnTWpZM0xqQXdMREU0TXk0eE5DQXlOamt1TVRrc01UZ3pMamMySURJM01TNHpOeXd4T0RNdU5UTWdNamN6TGpVMkxERTRNaTQxTVNBeU56VXVOelFzTVRnMExqQXdJREkzTnk0NU15d3hPREl1TURRZ01qZ3dMakV5TERFM055NDJOU0F5T0RJdU16QXNNVGd3TGpjNElESTROQzQwT1N3eE9ESXVPVEFnTWpnMkxqWTNMREU0TkM0d09DQXlPRGd1T0RZc01UZzBMamM0SURJNU1TNHdOQ3d4TnprdU5EVWdNamt6TGpJekxERTJPUzR3TWlBeU9UVXVOREVzTVRJeExqazJJREk1Tnk0Mk1Dd3hOek11TnpJZ01qazVMamM0TERFNE1TNDBPU0F6TURFdU9UY3NNVGcwTGpBd0lETXdOQzR4TlN3eE9EUXVOVFVnTXpBMkxqTTBMREU0TWk0NE1pQXpNRGd1TlRJc01UZzBMall6SURNeE1DNDNNU3d4T0RVdU5UY2dNekV5TGpnNUxERTROUzQ0TUNBek1UVXVNRGdzTVRnMUxqazJJRE14Tnk0eU5pd3hPRFV1T1RZZ016RTVMalExTERFNE5TNDVOaUF6TWpFdU5qTXNNVGcyTGpFeUlETXlNeTQ0TWl3eE9EWXVNRFFnTXpJMkxqQXdMREU0Tmk0eE1pQXpNamd1TVRrc01UZzJMakU1SURNek1DNHpOeXd4T0RZdU1USWdNek15TGpVMkxERTROaTR4TWlBek16UXVOelFzTVRnMkxqRTVJRE16Tmk0NU15d3hPRFl1TVRrZ016TTVMakV4TERFNE5pNDBNeUF6TkRFdU16QXNNVGcyTGpFNUlETTBNeTQwT0N3eE9EWXVNVGtnTXpRMUxqWTNMREU0TlM0Mk5TQXpORGN1T0RVc01UZzFMamN5SURNMU1DNHdOQ3d4T0RVdU9UWWdNelV5TGpJekxERTNOaTR3T0NBek5UUXVOREVzTVRjNExqUXpJRE0xTmk0Mk1Dd3hPRFF1TURnZ016VTRMamM0TERFNE1DNHlNeUF6TmpBdU9UY3NNVGd6TGpJeElETTJNeTR4TlN3eE9EUXVOemdnTXpZMUxqTTBMREU0TkM0NE5pQXpOamN1TlRJc01UZzFMalkxSURNMk9TNDNNU3d4T0RVdU5Ea2dNemN4TGpnNUxERTROUzQwT1NBek56UXVNRGdzTlRNdU56UWdNemMyTGpJMkxEWXhMalU0SURNM09DNDBOU3d6TUM0eU1TQXpPREF1TmpNc01UTTRMalF6SURNNE1pNDRNaXd4TkRRdU56RWdNemcxTGpBd0xERTFOQzR4TWlBek9EY3VNVGtzTVRZeExqazJJRE00T1M0ek55dzJPUzQwTWlBek9URXVOVFlzTVRFeExqYzNJRE01TXk0M05Dd3hOVEV1TnpjZ016azFMamt6TERFMU5pNDBOeUF6T1RndU1URXNNVFkyTGpZM0lEUXdNQzR6TUN3eE56Z3VORE1nTkRBeUxqUTRMREUzT1M0NU1pQTBNRFF1Tmpjc01UZ3hMakV3SURRd05pNDROU3d4TnpFdU16Y2dOREE1TGpBMExERTNPQzQwTXlBME1URXVNaklzTVRnd0xqYzRJRFF4TXk0ME1Td3hPREl1TnpRZ05ERTFMalU1TERFNE15NHpOeUEwTVRjdU56Z3NNVGcwTGpBd0lEUXhPUzQ1Tml3eE9EUXVOemdnTkRJeUxqRTFMREU0TlM0eU5TQTBNalF1TXpNc01UZzFMalF4SURReU5pNDFNaXd4T0RVdU5qVWdOREk0TGpjeExERTROUzQzTWlBME16QXVPRGtzTVRneUxqa3dJRFF6TXk0d09Dd3hPREl1TlRFZ05ETTFMakkyTERFNE15NDNOaUEwTXpjdU5EVXNNVGcxTGpReElEUXpPUzQyTXl3eE9EVXVPRGdnTkRReExqZ3lMREU0TlM0ME9TQTBORFF1TURBc01UZzBMakl6SURRME5pNHhPU3d4T0RVdU9EZ2dORFE0TGpNM0xERTROaTR4TWlBME5UQXVOVFlzTVRnMkxqSTNJRFExTWk0M05Dd3hPRFl1TURRZ05EVTBMamt6TERFNE5TNDJOU0EwTlRjdU1URXNNVGcxTGpFM0lEUTFPUzR6TUN3eE9EVXVNVGNnTkRZeExqUTRMREU0TlM0eU5TQTBOak11Tmpjc01UZ3pMak0zSURRMk5TNDROU3d4T0RRdU1UWWdORFk0TGpBMExERTROUzQxTnlBME56QXVNaklzTVRnMUxqZzRJRFEzTWk0ME1Td3hPRFl1TURRZ05EYzBMalU1TERFNE5pNHhPU0EwTnpZdU56Z3NNVGcyTGpJM0lDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTVM0d056c2djM1J5YjJ0bE9pQWpSamczTmpaRU95QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0Nqd3ZaejRLUEdjZ1kyeHBjQzF3WVhSb1BTZDFjbXdvSTJOd1RVTTBkMDFJZHpGTlJGRjFUVVJDT0UxRE5IZE5TSGQ1VGxSSmRVMUVRVDBwSno0S1BDOW5QZ284WkdWbWN6NEtJQ0E4WTJ4cGNGQmhkR2dnYVdROUoyTndUV3BCZFUxVWJEaE9SR3MwVEdwVmVXWkVWWFZPUkdnNFRXcEpkVTVFUVQwblBnb2dJQ0FnUEhKbFkzUWdlRDBuTWpBdU1Ua25JSGs5SnpVdU5EZ25JSGRwWkhSb1BTYzBOemd1TXpNbklHaGxhV2RvZEQwbk1UWXVPVEluSUM4K0NpQWdQQzlqYkdsd1VHRjBhRDRLUEM5a1pXWnpQZ284WnlCamJHbHdMWEJoZEdnOUozVnliQ2dqWTNCTmFrRjFUVlJzT0U1RWF6Uk1hbFY1WmtSVmRVNUVhRGhOYWtsMVRrUkJQU2tuUGdvOGRHVjRkQ0I0UFNjeU5Ua3VNelluSUhrOUp6RTNMakE1SnlCMFpYaDBMV0Z1WTJodmNqMG5iV2xrWkd4bEp5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpGQk1VRXhRVHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2MwT1M0ek5IQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqQXdNRFl3SUNobWRETXZjeWs4TDNSbGVIUStDand2Wno0S1BHY2dZMnhwY0Mxd1lYUm9QU2QxY213b0kyTndUVU0wZDAxSWR6Rk5SRkYxVFVSQ09FMUROSGROU0hkNVRsUkpkVTFFUVQwcEp6NEtQSFJsZUhRZ2VEMG5Nemt1TnpVbklIazlKekl3TlM0ME55Y2dkR1Y0ZEMxaGJtTm9iM0k5SjIxcFpHUnNaU2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk1UUXVNVGx3ZUNjZ2JHVnVaM1JvUVdScWRYTjBQU2R6Y0dGamFXNW5RVzVrUjJ4NWNHaHpKejVLWVc0OEwzUmxlSFErQ2p4MFpYaDBJSGc5SnpJek5pNDBNU2NnZVQwbk1qQTFMalEzSnlCMFpYaDBMV0Z1WTJodmNqMG5iV2xrWkd4bEp5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpSRU5FUTBSRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2N4TXk0Mk9YQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBrRndjand2ZEdWNGRENEtQSFJsZUhRZ2VEMG5ORE0xTGpJMkp5QjVQU2N5TURVdU5EY25JSFJsZUhRdFlXNWphRzl5UFNkdGFXUmtiR1VuSUhOMGVXeGxQU2RtYjI1MExYTnBlbVU2SURndU9EQndlRHRtYVd4c09pQWpORVEwUkRSRU95Qm1iMjUwTFdaaGJXbHNlVG9nSWtGeWFXRnNJanNuSUhSbGVIUk1aVzVuZEdnOUp6RXhMakkxY0hnbklHeGxibWQwYUVGa2FuVnpkRDBuYzNCaFkybHVaMEZ1WkVkc2VYQm9jeWMrU25Wc1BDOTBaWGgwUGdvOGRHVjRkQ0I0UFNjeE5TNHlOaWNnZVQwbk1Ua3dMakl4SnlCMFpYaDBMV0Z1WTJodmNqMG5aVzVrSnlCemRIbHNaVDBuWm05dWRDMXphWHBsT2lBNExqZ3djSGc3Wm1sc2JEb2dJelJFTkVRMFJEc2dabTl1ZEMxbVlXMXBiSGs2SUNKQmNtbGhiQ0k3SnlCMFpYaDBUR1Z1WjNSb1BTYzBMamc1Y0hnbklHeGxibWQwYUVGa2FuVnpkRDBuYzNCaFkybHVaMEZ1WkVkc2VYQm9jeWMrTUR3dmRHVjRkRDRLUEhSbGVIUWdlRDBuTVRVdU1qWW5JSGs5SnpFMU1DNDVPU2NnZEdWNGRDMWhibU5vYjNJOUoyVnVaQ2NnYzNSNWJHVTlKMlp2Ym5RdGMybDZaVG9nT0M0NE1IQjRPMlpwYkd3NklDTTBSRFJFTkVRN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk5DNDRPWEI0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5QalU4TDNSbGVIUStDangwWlhoMElIZzlKekUxTGpJMkp5QjVQU2N4TVRFdU56Z25JSFJsZUhRdFlXNWphRzl5UFNkbGJtUW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEdG1hV3hzT2lBak5FUTBSRFJFT3lCbWIyNTBMV1poYldsc2VUb2dJa0Z5YVdGc0lqc25JSFJsZUhSTVpXNW5kR2c5SnprdU56aHdlQ2NnYkdWdVozUm9RV1JxZFhOMFBTZHpjR0ZqYVc1blFXNWtSMng1Y0doekp6NHhNRHd2ZEdWNGRENEtQSFJsZUhRZ2VEMG5NVFV1TWpZbklIazlKemN5TGpVM0p5QjBaWGgwTFdGdVkyaHZjajBuWlc1a0p5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpSRU5FUTBSRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2M1TGpjNGNIZ25JR3hsYm1kMGFFRmthblZ6ZEQwbmMzQmhZMmx1WjBGdVpFZHNlWEJvY3ljK01UVThMM1JsZUhRK0NqeDBaWGgwSUhnOUp6RTFMakkySnlCNVBTY3pNeTR6TmljZ2RHVjRkQzFoYm1Ob2IzSTlKMlZ1WkNjZ2MzUjViR1U5SjJadmJuUXRjMmw2WlRvZ09DNDRNSEI0TzJacGJHdzZJQ00wUkRSRU5FUTdJR1p2Ym5RdFptRnRhV3g1T2lBaVFYSnBZV3dpT3ljZ2RHVjRkRXhsYm1kMGFEMG5PUzQzT0hCNEp5QnNaVzVuZEdoQlpHcDFjM1E5SjNOd1lXTnBibWRCYm1SSGJIbHdhSE1uUGpJd1BDOTBaWGgwUGdvOGJHbHVaU0I0TVQwbk1qUTNMakkySnlCNU1UMG5Nak15TGpRd0p5QjRNajBuTWpZeExqQTRKeUI1TWowbk1qTXlMalF3SnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNOR09EYzJOa1E3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhSbGVIUWdlRDBuTWpZNExqSTVKeUI1UFNjeU16VXVOVFVuSUhOMGVXeGxQU2RtYjI1MExYTnBlbVU2SURndU9EQndlRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2MwTGpnNWNIZ25JR3hsYm1kMGFFRmthblZ6ZEQwbmMzQmhZMmx1WjBGdVpFZHNlWEJvY3ljK01Ud3ZkR1Y0ZEQ0S1BDOW5QZ284TDJjK0Nqd3ZjM1puUGc9PScgc3R5bGU9J3dpZHRoOjUwNHB4OyBtYXgtd2lkdGg6MTAwJTsgZGlzcGxheTpibG9jaycgYWx0PSd0aW1lIHNlcmllcycgLz48ZGl2IHN0eWxlPSdtYXJnaW4tdG9wOjZweCc+PGEgaHJlZj0nZGF0YTp0ZXh0L2NzdjtiYXNlNjQsSW1OdmRtVnlZV2RsWDJsa0lpd2ljR0Z5WVcxbGRHVnlJaXdpY0dGeVlXMWxkR1Z5WDJ4aFltVnNJaXdpZFc1cGRDSXNJbVJoZEdWMGFXMWxJaXdpZUNJc0lua2lMQ0o2SWl3aWRtRnNkV1VpQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd055MHlNQ3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0eENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOeTB4T1N3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNHhNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURjdE1UZ3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TVRNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTNMVEUzTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqRTFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TnkweE5pd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzR4T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EY3RNVFVzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU16Y0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEzTFRFMExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMalEzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd055MHhNeXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0eU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRGN0TVRJc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVNalFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBM0xURXhMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpJMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOeTB4TUN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNHhPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURjdE1Ea3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TVRNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTNMVEE0TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqRUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEzTFRBM0xDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMakV5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd055MHdOaXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0eE5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRGN0TURVc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVNellLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBM0xUQTBMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTNMVEF6TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqRTFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3Tnkwd01pd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzR5TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EY3RNREVzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU5ESUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRNd0xDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMalU0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05pMHlPU3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0MU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFl0TWpnc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVNVGNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMkxUSTNMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpFNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOaTB5Tml3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNHlNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURZdE1qVXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TWpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTJMVEkwTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqSTVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TmkweU15d3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzR6T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EWXRNaklzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU5EY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRJeExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMalUxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05pMHlNQ3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0NENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOaTB4T1N3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01TNHhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TmkweE9Dd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURZdE1UY3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TnpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTJMVEUyTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqa3hDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TmkweE5Td3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNUzR4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05pMHhOQ3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTWk0MkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOaTB4TXl3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc015NDVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TmkweE1pd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNOQzQxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05pMHhNU3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzT1M0MkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOaTB4TUN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01UVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRBNUxDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3pMaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMkxUQTRMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3cwTGpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTJMVEEzTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3MUxqUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRBMkxDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTdzJMaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMkxUQTFMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d5TUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EWXRNRFFzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERFMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOaTB3TXl3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01UY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRBeUxDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMkxUQXhMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTFMVE14TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqRTRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TlMwek1Dd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzR5T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EVXRNamtzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU1qa0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEExTFRJNExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMalE1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05TMHlOeXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0NE53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFV0TWpZc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVNemdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMUxUSTFMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d4TGpFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTFMVEkwTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3eExqUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEExTFRJekxDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMakUwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05TMHlNaXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0eE53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFV0TWpFc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVNVGdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMUxUSXdMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpFeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOUzB4T1N3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNHhNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURVdE1UZ3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TURnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTFMVEUzTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqRXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TlMweE5pd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzR4TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EVXRNVFVzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU1USUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEExTFRFMExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMakV5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05TMHhNeXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0eE1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFV0TVRJc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVNVElLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMUxURXhMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpFekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOUzB4TUN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNHhNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURVdE1Ea3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TVRRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTFMVEE0TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqRTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TlMwd055d3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzR4TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EVXRNRFlzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU1UWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEExTFRBMUxDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMakU1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05TMHdOQ3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0ek1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFV0TURNc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVOVFFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMUxUQXlMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpNeUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOUzB3TVN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNHpPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURRdE16QXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TnpFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTBMVEk1TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3eExqY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEwTFRJNExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTdzRMak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMExUSTNMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d5TGpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTBMVEkyTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqazNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TkMweU5Td3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzR5T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EUXRNalFzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU16Z0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEwTFRJekxDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMalV6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05DMHlNaXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0NENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOQzB5TVN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01TNHlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TkMweU1Dd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzQyTkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EUXRNVGtzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU16a0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEwTFRFNExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMalU0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05DMHhOeXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0ME5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFF0TVRZc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVORElLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMExURTFMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTBMVEUwTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqUXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TkMweE15d3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzQwT1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EUXRNVElzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU5Ua0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEwTFRFeExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMamc0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05DMHhNQ3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTVM0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOQzB3T1N3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01pNHpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TkMwd09Dd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzQxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05DMHdOeXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0ME13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFF0TURZc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVOVGNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMExUQTFMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpRekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOQzB3TkN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNDFNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURRdE1ETXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TlRFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTBMVEF5TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqTTNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TkMwd01Td3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzQwTlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ETXRNekVzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU5EUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRNd0xDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMalF5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd015MHlPU3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0ME5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRE10TWpnc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVORGNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBekxUSTNMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpVNUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNeTB5Tml3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNDNPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURNdE1qVXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1T1RNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEkwTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3eExqRUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRJekxDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3hMalFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBekxUSXlMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd015MHlNU3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTVRNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEl3TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3eUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNeTB4T1N3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNDJNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURNdE1UZ3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TnpRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEUzTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqa3hDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TXkweE5pd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzQ1T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ETXRNVFVzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU9ETUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRFMExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMamd5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd015MHhNeXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0NU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRE10TVRJc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxERUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRFeExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3hMak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBekxURXdMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d4TGpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEE1TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3eUxqUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRBNExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTdzJMakVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBekxUQTNMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3c1TGpnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEEyTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3eUxqUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRBMUxDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3hMalVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBekxUQTBMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d4TGpnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEF6TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3eUxqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRBeUxDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTdzBMamtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBekxUQXhMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3c0TGprS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXlMVEk0TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3eE13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TWpjc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEZ3VNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1qWXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TnpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXlMVEkxTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3eENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNaTB5TkN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01pNHlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TWkweU15d3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNeTR4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd01pMHlNaXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTVM0M0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNaTB5TVN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TWpBc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxESXVNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1Ua3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREl1T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ESXRNVGdzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERRdU9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TVRjc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEZ3VNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1UWXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREV1T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ESXRNVFVzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERFdU9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TVRRc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxESXVOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1UTXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMRE11T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ESXRNVElzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERFdU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TVRFc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxERXVPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1UQXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMRE11TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ESXRNRGtzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERFdU53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TURnc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxERXVOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1EY3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREV1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ESXRNRFlzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERRdU5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TURVc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEWXVPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1EUXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMRGt1TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ESXRNRE1zTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERJd0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNaTB3TWl3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01TNHhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TWkwd01Td3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNUzQwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd01TMHpNU3d0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0M053b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREV0TXpBc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVOakVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeExUSTVMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpjMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNUzB5T0N3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNDVNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE1qY3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREV1TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ERXRNallzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERNdU9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREV0TWpVc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEWXVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE1qUXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMRFl1T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ERXRNak1zTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERVdU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREV0TWpJc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEUXVNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE1qRXNMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMRFl1TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ERXRNakFzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERJdU1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREV0TVRrc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxERXVNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE1UZ3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TmpnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXhMVEUzTEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqYzNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TVMweE5pd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNQzQxTWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ERXRNVFVzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERBdU5qRUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF4TFRFMExDMDNPUzR4T0RjMU1UUTROemcxTXpRNExETTJMakEwT1RnMk1UZzFOek0yTnl4T1FTd3dMalk0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd01TMHhNeXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTUM0Mk9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREV0TVRJc0xUYzVMakU0TnpVeE5EZzNPRFV6TkRnc016WXVNRFE1T0RZeE9EVTNNelkzTEU1QkxEQXVOamdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeExURXhMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d3TGpZNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNUzB4TUN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc01DNDJPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE1Ea3NMVGM1TGpFNE56VXhORGczT0RVek5EZ3NNell1TURRNU9EWXhPRFUzTXpZM0xFNUJMREF1TnprS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXhMVEE0TEMwM09TNHhPRGMxTVRRNE56ZzFNelE0TERNMkxqQTBPVGcyTVRnMU56TTJOeXhPUVN3d0xqZzRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TVMwd055d3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNUzR4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd01TMHdOaXd0TnprdU1UZzNOVEUwT0RjNE5UTTBPQ3d6Tmk0d05EazROakU0TlRjek5qY3NUa0VzTWk0MENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNUzB3TlN3dE56a3VNVGczTlRFME9EYzROVE0wT0N3ek5pNHdORGs0TmpFNE5UY3pOamNzVGtFc05TNHpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TVMwd05Dd3ROemt1TVRnM05URTBPRGM0TlRNME9Dd3pOaTR3TkRrNE5qRTROVGN6Tmpjc1RrRXNNVFFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeExUQXpMQzAzT1M0eE9EYzFNVFE0TnpnMU16UTRMRE0yTGpBME9UZzJNVGcxTnpNMk55eE9RU3d4TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ERXRNRElzTFRjNUxqRTROelV4TkRnM09EVXpORGdzTXpZdU1EUTVPRFl4T0RVM016WTNMRTVCTERNdU5BPT0nIGRvd25sb2FkPSdzdGF0aW9uLVVTR1MtMDIwODQ5MDMuY3N2Jz5Eb3dubG9hZCBDU1Y8XC9hPjxcL2Rpdj48XC9kaXY+IiwiPGRpdiBzdHlsZT0nZm9udC1mYW1pbHk6c3lzdGVtLXVpLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxMnB4OyBtYXgtd2lkdGg6NTI4cHgnPjxkaXYgc3R5bGU9J2ZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTo0cHgnPlNFVkVOTUlMRSBDUkVFSyBUUklCIEFUIEktODUgTlIgRUZMQU5ELCBOQzxcL2Rpdj48aW1nIHNyYz0nZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2Ymowbk1TNHdKeUJsYm1OdlpHbHVaejBuVlZSR0xUZ25JRDgrQ2p4emRtY2dlRzFzYm5NOUoyaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabkp5QjRiV3h1Y3pwNGJHbHVhejBuYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRiR2x1YXljZ2QybGtkR2c5SnpVd05DNHdNSEIwSnlCb1pXbG5hSFE5SnpJMU1pNHdNSEIwSnlCMmFXVjNRbTk0UFNjd0lEQWdOVEEwTGpBd0lESTFNaTR3TUNjK0NqeG5JR05zWVhOelBTZHpkbWRzYVhSbEp6NEtQR1JsWm5NK0NpQWdQSE4wZVd4bElIUjVjR1U5SjNSbGVIUXZZM056Sno0OElWdERSRUZVUVZzS0lDQWdJQzV6ZG1kc2FYUmxJR3hwYm1Vc0lDNXpkbWRzYVhSbElIQnZiSGxzYVc1bExDQXVjM1puYkdsMFpTQndiMng1WjI5dUxDQXVjM1puYkdsMFpTQndZWFJvTENBdWMzWm5iR2wwWlNCeVpXTjBMQ0F1YzNabmJHbDBaU0JqYVhKamJHVWdld29nSUNBZ0lDQm1hV3hzT2lCdWIyNWxPd29nSUNBZ0lDQnpkSEp2YTJVNklDTXdNREF3TURBN0NpQWdJQ0FnSUhOMGNtOXJaUzFzYVc1bFkyRndPaUJ5YjNWdVpEc0tJQ0FnSUNBZ2MzUnliMnRsTFd4cGJtVnFiMmx1T2lCeWIzVnVaRHNLSUNBZ0lDQWdjM1J5YjJ0bExXMXBkR1Z5YkdsdGFYUTZJREV3TGpBd093b2dJQ0FnZlFvZ0lDQWdMbk4yWjJ4cGRHVWdkR1Y0ZENCN0NpQWdJQ0FnSUhkb2FYUmxMWE53WVdObE9pQndjbVU3Q2lBZ0lDQjlDaUFnSUNBdWMzWm5iR2wwWlNCbkxtZHNlWEJvWjNKdmRYQWdjR0YwYUNCN0NpQWdJQ0FnSUdacGJHdzZJR2x1YUdWeWFYUTdDaUFnSUNBZ0lITjBjbTlyWlRvZ2JtOXVaVHNLSUNBZ0lIMEtJQ0JkWFQ0OEwzTjBlV3hsUGdvOEwyUmxabk0rQ2p4eVpXTjBJSGRwWkhSb1BTY3hNREFsSnlCb1pXbG5hSFE5SnpFd01DVW5JSE4wZVd4bFBTZHpkSEp2YTJVNklHNXZibVU3SUdacGJHdzZJQ05HUmtaR1JrWTdKeTgrQ2p4a1pXWnpQZ29nSUR4amJHbHdVR0YwYUNCcFpEMG5ZM0JOUXpSM1RVaDNNVTFFVVhWTlJFSTRUVU0wZDAxSWQzbE9WRWwxVFVSQlBTYytDaUFnSUNBOGNtVmpkQ0I0UFNjd0xqQXdKeUI1UFNjd0xqQXdKeUIzYVdSMGFEMG5OVEEwTGpBd0p5Qm9aV2xuYUhROUp6STFNaTR3TUNjZ0x6NEtJQ0E4TDJOc2FYQlFZWFJvUGdvOEwyUmxabk0rQ2p4bklHTnNhWEF0Y0dGMGFEMG5kWEpzS0NOamNFMUROSGROU0hjeFRVUlJkVTFFUWpoTlF6UjNUVWgzZVU1VVNYVk5SRUU5S1NjK0NqeHlaV04wSUhnOUp6QXVNREF3TURBd01EQXdNREF3TURZMEp5QjVQU2N0TUM0d01EQXdNREF3TURBd01EQXdNamduSUhkcFpIUm9QU2MxTURRdU1EQW5JR2hsYVdkb2REMG5NalV5TGpBd0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklHNXZibVU3SUdacGJHdzZJQ05HUmtaR1JrWTdKeUF2UGdvOEwyYytDanhrWldaelBnb2dJRHhqYkdsd1VHRjBhQ0JwWkQwblkzQk5ha2wxVG1wT09FNUVhelJNYWxWNVprUkplVXhxVVhkbVJFVTFUa00wZVU1QlBUMG5QZ29nSUNBZ1BISmxZM1FnZUQwbk1qSXVOak1uSUhrOUp6SXlMalF3SnlCM2FXUjBhRDBuTkRjMUxqZzVKeUJvWldsbmFIUTlKekUzTVM0NE5DY2dMejRLSUNBOEwyTnNhWEJRWVhSb1BnbzhMMlJsWm5NK0NqeG5JR05zYVhBdGNHRjBhRDBuZFhKc0tDTmpjRTFxU1hWT2FrNDRUa1JyTkV4cVZYbG1SRWw1VEdwUmQyWkVSVFZPUXpSNVRrRTlQU2tuUGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjeU1pNDJNeXd4TnpBdU1UWWdORGs0TGpVeUxERTNNQzR4TmlBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREF1TlRNN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjeU1pNDJNeXd4TXpjdU5qRWdORGs0TGpVeUxERXpOeTQyTVNBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREF1TlRNN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjeU1pNDJNeXd4TURVdU1EWWdORGs0TGpVeUxERXdOUzR3TmlBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREF1TlRNN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjeU1pNDJNeXczTWk0MU1pQTBPVGd1TlRJc056SXVOVElnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpJdU5qTXNNemt1T1RjZ05EazRMalV5TERNNUxqazNJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01DNDFNenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekV6T1M0NU1pd3hPVFF1TWpRZ01UTTVMamt5TERJeUxqUXdJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01DNDFNenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKek16Tmk0Mk55d3hPVFF1TWpRZ016TTJMalkzTERJeUxqUXdJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01DNDFNenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekl5TGpZekxERTROaTQwTXlBME9UZ3VOVElzTVRnMkxqUXpJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekl5TGpZekxERTFNeTQ0T0NBME9UZ3VOVElzTVRVekxqZzRJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekl5TGpZekxERXlNUzR6TkNBME9UZ3VOVElzTVRJeExqTTBJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekl5TGpZekxEZzRMamM1SURRNU9DNDFNaXc0T0M0M09TQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3lNaTQyTXl3MU5pNHlOU0EwT1RndU5USXNOVFl1TWpVZ0p5QnpkSGxzWlQwbmMzUnliMnRsTFhkcFpIUm9PaUF4TGpBM095QnpkSEp2YTJVNklDTkZRa1ZDUlVJN0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCaWRYUjBPeWNnTHo0S1BIQnZiSGxzYVc1bElIQnZhVzUwY3owbk1qSXVOak1zTWpNdU56QWdORGs0TGpVeUxESXpMamN3SUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNUzR3TnpzZ2MzUnliMnRsT2lBalJVSkZRa1ZDT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpReUxqQTVMREU1TkM0eU5DQTBNaTR3T1N3eU1pNDBNQ0FuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklERXVNRGM3SUhOMGNtOXJaVG9nSTBWQ1JVSkZRanNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284Y0c5c2VXeHBibVVnY0c5cGJuUnpQU2N5TXpjdU56VXNNVGswTGpJMElESXpOeTQzTlN3eU1pNDBNQ0FuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklERXVNRGM3SUhOMGNtOXJaVG9nSTBWQ1JVSkZRanNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284Y0c5c2VXeHBibVVnY0c5cGJuUnpQU2MwTXpVdU5UZ3NNVGswTGpJMElEUXpOUzQxT0N3eU1pNDBNQ0FuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklERXVNRGM3SUhOMGNtOXJaVG9nSTBWQ1JVSkZRanNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284Y0c5c2VXeHBibVVnY0c5cGJuUnpQU2MwTkM0eU5pd3hPREF1TlRjZ05EWXVORFFzTVRBNExqTXlJRFE0TGpZeExERXlNeTQ1TkNBMU1DNDNPQ3d4TnpjdU16SWdOVEl1T1RZc01UZ3hMakl5SURVMUxqRXpMREU0TWk0MU1pQTFOeTR6TVN3eE9ETXVPRE1nTlRrdU5EZ3NNVGd6TGpneklEWXhMalkxTERFNE5TNHhNeUEyTXk0NE15d3hPRFV1TnpnZ05qWXVNREFzTVRnMUxqYzRJRFk0TGpFNExERTROUzR4TXlBM01DNHpOU3d4T0RVdU1UTWdOekl1TlRJc01UZzBMalE0SURjMExqY3dMREU0TUM0MU55QTNOaTQ0Tnl3eE9ERXVPRGNnTnprdU1EVXNNVGd6TGpFNElEZ3hMakl5TERFM015NDBNU0E0TXk0ek9Td3hOekl1TVRFZ09EVXVOVGNzTVRFMExqZ3pJRGczTGpjMExERTNNQzR4TmlBNE9TNDVNaXd4TWpNdU9UUWdPVEl1TURrc01UWXlMak0xSURrMExqSTJMREUzTmk0d01TQTVOaTQwTkN3eE9EQXVOVGNnT1RndU5qRXNNVGd6TGpFNElERXdNQzQzT1N3eE9ETXVNVGdnTVRBeUxqazJMREU0TXk0eE9DQXhNRFV1TVRNc01UZ3pMakU0SURFd055NHpNU3d4TnprdU1qY2dNVEE1TGpRNExERTRNQzQxTnlBeE1URXVOallzTVRjNExqWXlJREV4TXk0NE15dzFOaTR5TlNBeE1UWXVNREFzTVRjd0xqRTJJREV4T0M0eE9Dd3hOell1TmpjZ01USXdMak0xTERFM09TNHlOeUF4TWpJdU5UTXNNVGd4TGpnM0lERXlOQzQzTUN3eE9ESXVOVElnTVRJMkxqZzNMREUzTWk0M05pQXhNamt1TURVc01UYzJMalkzSURFek1TNHlNaXd4T0RFdU9EY2dNVE16TGpRd0xERTRNQzQxTnlBeE16VXVOVGNzTVRZekxqQXdJREV6Tnk0M05Dd3hOemt1T1RJZ01UTTVMamt5TERFNE1TNHlNaUF4TkRJdU1Ea3NNVGMyTGpZM0lERTBOQzR5Tnl3eE1qVXVPRGtnTVRRMkxqUTBMREUzTWk0eE1TQXhORGd1TmpFc01UYzNMak15SURFMU1DNDNPU3d4T0RBdU5UY2dNVFV5TGprMkxERTRNUzQ0TnlBeE5UVXVNVFFzTVRnekxqRTRJREUxTnk0ek1Td3hPRE11TVRnZ01UVTVMalE0TERFNE15NDRNeUF4TmpFdU5qWXNNVGcwTGpRNElERTJNeTQ0TXl3eE9EUXVORGdnTVRZMkxqQXhMRGMxTGpjM0lERTJPQzR4T0N3eE1EZ3VNeklnTVRjd0xqTTFMREUyTnk0MU5TQXhOekl1TlRNc01UYzNMak15SURFM05DNDNNQ3d4T0RBdU5UY2dNVGMyTGpnNExERTRNUzR5TWlBeE56a3VNRFVzTVRneExqZzNJREU0TVM0eU1pd3hOek11TkRFZ01UZ3pMalF3TERFd01TNDRNU0F4T0RVdU5UY3NNVGMwTGpBMklERTROeTQzTlN3eE56a3VNamNnTVRnNUxqa3lMREU0TVM0eU1pQXhPVEl1TURrc01UZ3hMakl5SURFNU5DNHlOeXd4T0RFdU9EY2dNVGsyTGpRMExERTRNaTQxTWlBeE9UZ3VOaklzTVRnekxqRTRJREl3TUM0M09Td3hPREV1TWpJZ01qQXlMamsyTERFNE1TNDROeUF5TURVdU1UUXNNVGd5TGpVeUlESXdOeTR6TVN3eE9ETXVPRE1nTWpBNUxqUTVMREU0TXk0NE15QXlNVEV1TmpZc01UTTRMamt4SURJeE15NDRNeXd4TkRZdU56SWdNakUyTGpBeExERTNPUzR5TnlBeU1UZ3VNVGdzTVRneUxqVXlJREl5TUM0ek5pd3hPRE11TVRnZ01qSXlMalV6TERFNE15NHhPQ0F5TWpRdU56QXNNVGcwTGpRNElESXlOaTQ0T0N3eE9EUXVORGdnTWpJNUxqQTFMREU0TlM0eE15QXlNekV1TWpNc01UZzFMakV6SURJek15NDBNQ3d4T0RVdU1UTWdNak0xTGpVM0xERTROQzQwT0NBeU16Y3VOelVzTVRnMUxqRXpJREl6T1M0NU1pd3hPRFV1TVRNZ01qUXlMakV3TERFNE5DNDBPQ0F5TkRRdU1qY3NNVGcxTGpFeklESTBOaTQwTkN3eE9EUXVORGdnTWpRNExqWXlMREU0TkM0ME9DQXlOVEF1Tnprc01UZzBMalE0SURJMU1pNDVOeXd4T0RNdU1UZ2dNalUxTGpFMExERTNPUzQ1TWlBeU5UY3VNekVzTVRnMExqUTRJREkxT1M0ME9Td3hPRFF1TkRnZ01qWXhMalkyTERFNE5DNDBPQ0F5TmpNdU9EUXNNVGcwTGpRNElESTJOaTR3TVN3eE9ETXVPRE1nTWpZNExqRTRMREU0TXk0NE15QXlOekF1TXpZc01UZzFMakV6SURJM01pNDFNeXd4T0RNdU9ETWdNamMwTGpjeExERTROUzR4TXlBeU56WXVPRGdzTVRnMUxqYzRJREkzT1M0d05Td3hPRE11T0RNZ01qZ3hMakl6TERFNE5DNDBPQ0F5T0RNdU5EQXNNVGcxTGpjNElESTROUzQxT0N3eE9EVXVOemdnTWpnM0xqYzFMREU0TlM0M09DQXlPRGt1T1RJc01UZzFMamM0SURJNU1pNHhNQ3d4T0RFdU1qSWdNamswTGpJM0xERTRNUzQ0TnlBeU9UWXVORFVzTVRneExqSXlJREk1T0M0Mk1pd3hPRFV1TVRNZ016QXdMamM1TERFNE5TNDNPQ0F6TURJdU9UY3NNVGcxTGpjNElETXdOUzR4TkN3eE9EVXVOemdnTXpBM0xqTXlMREU0TlM0eE15QXpNRGt1TkRrc01UZzFMakV6SURNeE1TNDJOaXd4T0RVdU56Z2dNekV6TGpnMExERTROUzQzT0NBek1UWXVNREVzTVRnMUxqYzRJRE14T0M0eE9Td3hPRFV1TnpnZ016SXdMak0yTERFNE5TNDNPQ0F6TWpJdU5UTXNNVGcxTGpjNElETXlOQzQzTVN3eE9EWXVORE1nTXpJMkxqZzRMREU0Tmk0ME15QXpNamt1TURZc01UZzJMalF6SURNek1TNHlNeXd4T0RZdU5ETWdNek16TGpRd0xERTROaTQwTXlBek16VXVOVGdzTVRnMUxqYzRJRE16Tnk0M05Td3hPRFl1TkRNZ016TTVMamt6TERFNE5pNDBNeUF6TkRJdU1UQXNNVGcxTGpjNElETTBOQzR5Tnl3eE9EVXVOemdnTXpRMkxqUTFMREU0TlM0M09DQXpORGd1TmpJc01UZzJMalF6SURNMU1DNDRNQ3d4T0RZdU5ETWdNelV5TGprM0xERTROQzQwT0NBek5UVXVNVFFzTVRnMUxqYzRJRE0xTnk0ek1pd3hPRFV1TVRNZ016VTVMalE1TERFNE5TNDNPQ0F6TmpFdU5qY3NNVGcxTGpjNElETTJNeTQ0TkN3eE9ETXVPRE1nTXpZMkxqQXhMREU0TlM0M09DQXpOamd1TVRrc01UZzFMakV6SURNM01DNHpOaXd4T0RVdU56Z2dNemN5TGpVMExERTROaTQwTXlBek56UXVOekVzTVRnMkxqUXpJRE0zTmk0NE9Dd3hORE11TkRjZ016YzVMakEyTERFeE5DNDRNeUF6T0RFdU1qTXNNVGd6TGpFNElETTRNeTQwTVN3eE9EVXVNVE1nTXpnMUxqVTRMREU0TlM0M09DQXpPRGN1TnpVc01UZzFMakV6SURNNE9TNDVNeXd6TUM0eU1TQXpPVEl1TVRBc01UVTRMalEwSURNNU5DNHlPQ3d4T0RBdU5UY2dNemsyTGpRMUxERTRNeTR4T0NBek9UZ3VOaklzTVRnMExqUTRJRFF3TUM0NE1Dd3hPRFV1TVRNZ05EQXlMamszTERFNE5DNDBPQ0EwTURVdU1UVXNNVGd4TGpJeUlEUXdOeTR6TWl3eE56TXVOREVnTkRBNUxqUTVMREU0TkM0ME9DQTBNVEV1Tmpjc01UZzFMamM0SURReE15NDROQ3d4T0RVdU56Z2dOREUyTGpBeUxERTROUzQzT0NBME1UZ3VNVGtzTVRnMUxqYzRJRFF5TUM0ek5pd3hPRFV1TnpnZ05ESXlMalUwTERFNE5pNDBNeUEwTWpRdU56RXNNVGcxTGpjNElEUXlOaTQ0T1N3eE9EWXVORE1nTkRJNUxqQTJMREU0Tmk0ME15QTBNekV1TWpNc01UZ3hMamczSURRek15NDBNU3d4TmpNdU1EQWdORE0xTGpVNExERTRNeTQ0TXlBME16Y3VOellzTVRnMUxqYzRJRFF6T1M0NU15d3hPRFl1TkRNZ05EUXlMakV3TERFNE1pNDFNaUEwTkRRdU1qZ3NNVGM1TGpJM0lEUTBOaTQwTlN3eE9EVXVNVE1nTkRRNExqWXpMREU0TlM0M09DQTBOVEF1T0RBc01UZzFMamM0SURRMU1pNDVPQ3d4T0RVdU56Z2dORFUxTGpFMUxERTROaTQwTXlBME5UY3VNeklzTVRnMUxqRXpJRFExT1M0MU1Dd3hPRFV1TnpnZ05EWXhMalkzTERFNE5pNDBNeUEwTmpNdU9EVXNNVGcxTGpjNElEUTJOaTR3TWl3eE9ETXVPRE1nTkRZNExqRTVMREU0TlM0M09DQTBOekF1TXpjc01UZzJMalF6SURRM01pNDFOQ3d4T0RZdU5ETWdORGMwTGpjeUxERTROaTQwTXlBME56WXVPRGtzTVRnMkxqUXpJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUmpnM05qWkVPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDand2Wno0S1BHY2dZMnhwY0Mxd1lYUm9QU2QxY213b0kyTndUVU0wZDAxSWR6Rk5SRkYxVFVSQ09FMUROSGROU0hkNVRsUkpkVTFFUVQwcEp6NEtQQzluUGdvOFpHVm1jejRLSUNBOFkyeHBjRkJoZEdnZ2FXUTlKMk53VFdwSmRVNXFUamhPUkdzMFRHcFZlV1pFVlhWT1JHZzRUV3BKZFU1RVFUMG5QZ29nSUNBZ1BISmxZM1FnZUQwbk1qSXVOak1uSUhrOUp6VXVORGduSUhkcFpIUm9QU2MwTnpVdU9Ea25JR2hsYVdkb2REMG5NVFl1T1RJbklDOCtDaUFnUEM5amJHbHdVR0YwYUQ0S1BDOWtaV1p6UGdvOFp5QmpiR2x3TFhCaGRHZzlKM1Z5YkNnalkzQk5ha2wxVG1wT09FNUVhelJNYWxWNVprUlZkVTVFYURoTmFrbDFUa1JCUFNrblBnbzhkR1Y0ZENCNFBTY3lOakF1TlRnbklIazlKekUzTGpBNUp5QjBaWGgwTFdGdVkyaHZjajBuYldsa1pHeGxKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6RkJNVUV4UVRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjME9TNHpOSEI0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5QakF3TURZd0lDaG1kRE12Y3lrOEwzUmxlSFErQ2p3dlp6NEtQR2NnWTJ4cGNDMXdZWFJvUFNkMWNtd29JMk53VFVNMGQwMUlkekZOUkZGMVRVUkNPRTFETkhkTlNIZDVUbFJKZFUxRVFUMHBKejRLUEhSbGVIUWdlRDBuTkRJdU1Ea25JSGs5SnpJd05TNDBOeWNnZEdWNGRDMWhibU5vYjNJOUoyMXBaR1JzWlNjZ2MzUjViR1U5SjJadmJuUXRjMmw2WlRvZ09DNDRNSEI0TzJacGJHdzZJQ00wUkRSRU5FUTdJR1p2Ym5RdFptRnRhV3g1T2lBaVFYSnBZV3dpT3ljZ2RHVjRkRXhsYm1kMGFEMG5NVFF1TVRsd2VDY2diR1Z1WjNSb1FXUnFkWE4wUFNkemNHRmphVzVuUVc1a1IyeDVjR2h6Sno1S1lXNDhMM1JsZUhRK0NqeDBaWGgwSUhnOUp6SXpOeTQzTlNjZ2VUMG5NakExTGpRM0p5QjBaWGgwTFdGdVkyaHZjajBuYldsa1pHeGxKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjeE15NDJPWEI0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5Qa0Z3Y2p3dmRHVjRkRDRLUEhSbGVIUWdlRDBuTkRNMUxqVTRKeUI1UFNjeU1EVXVORGNuSUhSbGVIUXRZVzVqYUc5eVBTZHRhV1JrYkdVbklITjBlV3hsUFNkbWIyNTBMWE5wZW1VNklEZ3VPREJ3ZUR0bWFXeHNPaUFqTkVRMFJEUkVPeUJtYjI1MExXWmhiV2xzZVRvZ0lrRnlhV0ZzSWpzbklIUmxlSFJNWlc1bmRHZzlKekV4TGpJMWNIZ25JR3hsYm1kMGFFRmthblZ6ZEQwbmMzQmhZMmx1WjBGdVpFZHNlWEJvY3ljK1NuVnNQQzkwWlhoMFBnbzhkR1Y0ZENCNFBTY3hOeTQzTUNjZ2VUMG5NVGc1TGpVNEp5QjBaWGgwTFdGdVkyaHZjajBuWlc1a0p5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpSRU5FUTBSRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2N4TWk0eU1uQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqQXVNRHd2ZEdWNGRENEtQSFJsZUhRZ2VEMG5NVGN1TnpBbklIazlKekUxTnk0d015Y2dkR1Y0ZEMxaGJtTm9iM0k5SjJWdVpDY2djM1I1YkdVOUoyWnZiblF0YzJsNlpUb2dPQzQ0TUhCNE8yWnBiR3c2SUNNMFJEUkVORVE3SUdadmJuUXRabUZ0YVd4NU9pQWlRWEpwWVd3aU95Y2dkR1Y0ZEV4bGJtZDBhRDBuTVRJdU1qSndlQ2NnYkdWdVozUm9RV1JxZFhOMFBTZHpjR0ZqYVc1blFXNWtSMng1Y0doekp6NHdMalU4TDNSbGVIUStDangwWlhoMElIZzlKekUzTGpjd0p5QjVQU2N4TWpRdU5Ea25JSFJsZUhRdFlXNWphRzl5UFNkbGJtUW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEdG1hV3hzT2lBak5FUTBSRFJFT3lCbWIyNTBMV1poYldsc2VUb2dJa0Z5YVdGc0lqc25JSFJsZUhSTVpXNW5kR2c5SnpFeUxqSXljSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytNUzR3UEM5MFpYaDBQZ284ZEdWNGRDQjRQU2N4Tnk0M01DY2dlVDBuT1RFdU9UUW5JSFJsZUhRdFlXNWphRzl5UFNkbGJtUW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEdG1hV3hzT2lBak5FUTBSRFJFT3lCbWIyNTBMV1poYldsc2VUb2dJa0Z5YVdGc0lqc25JSFJsZUhSTVpXNW5kR2c5SnpFeUxqSXljSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytNUzQxUEM5MFpYaDBQZ284ZEdWNGRDQjRQU2N4Tnk0M01DY2dlVDBuTlRrdU5EQW5JSFJsZUhRdFlXNWphRzl5UFNkbGJtUW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEdG1hV3hzT2lBak5FUTBSRFJFT3lCbWIyNTBMV1poYldsc2VUb2dJa0Z5YVdGc0lqc25JSFJsZUhSTVpXNW5kR2c5SnpFeUxqSXljSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytNaTR3UEM5MFpYaDBQZ284ZEdWNGRDQjRQU2N4Tnk0M01DY2dlVDBuTWpZdU9EVW5JSFJsZUhRdFlXNWphRzl5UFNkbGJtUW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEdG1hV3hzT2lBak5FUTBSRFJFT3lCbWIyNTBMV1poYldsc2VUb2dJa0Z5YVdGc0lqc25JSFJsZUhSTVpXNW5kR2c5SnpFeUxqSXljSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytNaTQxUEM5MFpYaDBQZ284YkdsdVpTQjRNVDBuTWpRNExqUTRKeUI1TVQwbk1qTXlMalF3SnlCNE1qMG5Nall5TGpNd0p5QjVNajBuTWpNeUxqUXdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBeExqQTNPeUJ6ZEhKdmEyVTZJQ05HT0RjMk5rUTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSFJsZUhRZ2VEMG5Nalk1TGpVeEp5QjVQU2N5TXpVdU5UVW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEc2dabTl1ZEMxbVlXMXBiSGs2SUNKQmNtbGhiQ0k3SnlCMFpYaDBUR1Z1WjNSb1BTYzBMamc1Y0hnbklHeGxibWQwYUVGa2FuVnpkRDBuYzNCaFkybHVaMEZ1WkVkc2VYQm9jeWMrTVR3dmRHVjRkRDRLUEM5blBnbzhMMmMrQ2p3dmMzWm5QZz09JyBzdHlsZT0nd2lkdGg6NTA0cHg7IG1heC13aWR0aDoxMDAlOyBkaXNwbGF5OmJsb2NrJyBhbHQ9J3RpbWUgc2VyaWVzJyAvPjxkaXYgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz48YSBocmVmPSdkYXRhOnRleHQvY3N2O2Jhc2U2NCxJbU52ZG1WeVlXZGxYMmxrSWl3aWNHRnlZVzFsZEdWeUlpd2ljR0Z5WVcxbGRHVnlYMnhoWW1Wc0lpd2lkVzVwZENJc0ltUmhkR1YwYVcxbElpd2llQ0lzSW5raUxDSjZJaXdpZG1Gc2RXVWlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TnkweU1Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBM0xURTVMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EY3RNVGdzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOeTB4Tnl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEzTFRFMkxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EY3RNVFVzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TnkweE5Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTNMVEV6TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRGN0TVRJc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd055MHhNU3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ESUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEzTFRFd0xDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURjdE1Ea3NMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOeTB3T0N3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNREVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBM0xUQTNMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d01Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRGN0TURZc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd055MHdOU3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1URUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEzTFRBMExDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EY3RNRE1zTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOeTB3TWl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNREVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBM0xUQXhMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d05Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFl0TXpBc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMak0yQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05pMHlPU3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1EY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRJNExDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURZdE1qY3NMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05pMHlOaXd0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ERUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRJMUxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURZdE1qUXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOaTB5TXl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNREVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMkxUSXlMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d01Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFl0TWpFc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05pMHlNQ3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ERUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRFNUxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EWXRNVGdzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRFM0xDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EWXRNVFlzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TmkweE5Td3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTJMVEUwTEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURZdE1UTXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOaTB4TWl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRGtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMkxURXhMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0ME13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFl0TVRBc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3lMalFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMkxUQTVMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d01nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFl0TURnc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05pMHdOeXd0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ESUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRBMkxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EWXRNRFVzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3eExqRUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRBMExDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzQyTmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EWXRNRE1zTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOaTB3TWl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEyTFRBeExDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EVXRNekVzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TlMwek1Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTFMVEk1TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURVdE1qZ3NMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOUzB5Tnl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNREVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMUxUSTJMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d01nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFV0TWpVc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05TMHlOQ3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ETUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEExTFRJekxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURVdE1qSXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05TMHlNU3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ERUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEExTFRJd0xDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EVXRNVGtzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TlMweE9Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMUxURTNMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EVXRNVFlzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TlMweE5Td3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMUxURTBMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EVXRNVE1zTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0NpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOUzB4TWl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEExTFRFeExDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURVdE1UQXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOUzB3T1N3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNREVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMUxUQTRMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d01Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFV0TURjc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05TMHdOaXd0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ERUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEExTFRBMUxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EVXRNRFFzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TlMwd015d3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTFMVEF5TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURVdE1ERXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOQzB6TUN3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNREVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMExUSTVMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d01nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFF0TWpnc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakE0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05DMHlOeXd0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1EY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEwTFRJMkxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EUXRNalVzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TkMweU5Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTBMVEl6TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURRdE1qSXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOQzB5TVN3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRE1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMExUSXdMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d05Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFF0TVRrc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05DMHhPQ3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ESUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEwTFRFM0xDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EUXRNVFlzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TkMweE5Td3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTBMVEUwTEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURRdE1UTXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOQzB4TWl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRE1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBMExURXhMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d013b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFF0TVRBc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05DMHdPU3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRFF0TURnc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakExQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd05DMHdOeXd0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ETUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEEwTFRBMkxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1EUXRNRFVzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TkMwd05Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQTBMVEF6TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURRdE1ESXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBeUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdOQzB3TVN3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRElLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBekxUTXhMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d013b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRE10TXpBc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd015MHlPU3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ESUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRJNExDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ETXRNamNzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TXkweU5pd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEkxTEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURNdE1qUXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNeTB5TXl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBekxUSXlMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0eE1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRE10TWpFc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMall4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd015MHlNQ3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU56TUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRFNUxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ETXRNVGdzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQTBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TXkweE55d3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEUyTEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURNdE1UVXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNeTB4TkN3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRFVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBekxURXpMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d05nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNRE10TVRJc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakEzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd015MHhNU3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1EZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF6TFRFd0xDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ETXRNRGtzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqRXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TXkwd09Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TVRrS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEEzTEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01TNHpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TXkwd05pd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ETXRNRFVzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQTNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TXkwd05Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXpMVEF6TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURNdE1ESXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpFMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNeTB3TVN3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNamtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeUxUSTRMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTVM0eUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNaTB5Tnl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxERXVOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1qWXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNaTB5TlN3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRE1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeUxUSTBMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d05Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TWpNc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakExQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd01pMHlNaXd0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1EVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF5TFRJeExDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ESXRNakFzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQTVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TWkweE9Td3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TVRRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXlMVEU0TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHlNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1UY3NMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGprekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNaTB4Tml3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNVFVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeUxURTFMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d09Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TVRRc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeUxURXpMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0ek5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TVRJc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakE1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd01pMHhNU3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1EY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF5TFRFd0xDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR4TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ESXRNRGtzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqSXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TWkwd09Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXlMVEEzTEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURJdE1EWXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpFeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNaTB3TlN3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNVFVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeUxUQTBMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0eU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREl0TURNc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3lDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TWkwd01pd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TVRJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXlMVEF4TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE16RXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpFeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNUzB6TUN3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRFVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeExUSTVMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d05Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREV0TWpnc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakExQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd01TMHlOeXd0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1EVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF4TFRJMkxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ERXRNalVzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqRTJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TVMweU5Dd3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TXpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXhMVEl6TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNDVOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE1qSXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpJMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNUzB5TVN3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxERXVNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE1qQXNMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpJeUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNUzB4T1N3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE1UZ3NMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNUzB4Tnl3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRGNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeExURTJMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d09Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREV0TVRVc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakF6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd01TMHhOQ3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1ESUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF4TFRFekxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ERXRNVElzTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3d0xqQXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01UazRNaTB3TVMweE1Td3ROemt1TVRZd01qa3lNRFkxTmpVek1Td3pOaTR3TnpFNE1EWTBOVGMxTnpNNUxFNUJMREF1TURFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd4T1RneUxUQXhMVEV3TEMwM09TNHhOakF5T1RJd05qVTJOVE14TERNMkxqQTNNVGd3TmpRMU56VTNNemtzVGtFc01DNHdNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxERTVPREl0TURFdE1Ea3NMVGM1TGpFMk1ESTVNakEyTlRZMU16RXNNell1TURjeE9EQTJORFUzTlRjek9TeE9RU3d3TGpBMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTVRrNE1pMHdNUzB3T0N3dE56a3VNVFl3TWpreU1EWTFOalV6TVN3ek5pNHdOekU0TURZME5UYzFOek01TEU1QkxEQXVNRFFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3hPVGd5TFRBeExUQTNMQzAzT1M0eE5qQXlPVEl3TmpVMk5UTXhMRE0yTGpBM01UZ3dOalExTnpVM016a3NUa0VzTUM0d05nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERFNU9ESXRNREV0TURZc0xUYzVMakUyTURJNU1qQTJOVFkxTXpFc016WXVNRGN4T0RBMk5EVTNOVGN6T1N4T1FTd3dMakE0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNVGs0TWkwd01TMHdOU3d0TnprdU1UWXdNamt5TURZMU5qVXpNU3d6Tmk0d056RTRNRFkwTlRjMU56TTVMRTVCTERBdU1UUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF4TFRBMExDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzQ1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREU1T0RJdE1ERXRNRE1zTFRjNUxqRTJNREk1TWpBMk5UWTFNekVzTXpZdU1EY3hPREEyTkRVM05UY3pPU3hPUVN3eExqSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eE9UZ3lMVEF4TFRBeUxDMDNPUzR4TmpBeU9USXdOalUyTlRNeExETTJMakEzTVRnd05qUTFOelUzTXprc1RrRXNNQzR3T1E9PScgZG93bmxvYWQ9J3N0YXRpb24tVVNHUy0wMjA4NDkwOC5jc3YnPkRvd25sb2FkIENTVjxcL2E+PFwvZGl2PjxcL2Rpdj4iLCI8ZGl2IHN0eWxlPSdmb250LWZhbWlseTpzeXN0ZW0tdWksc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHg7IG1heC13aWR0aDo1MjhweCc+PGRpdiBzdHlsZT0nZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjRweCc+U0VWRU5NSUxFIENSRUVLIE5SIEVGTEFORCwgTkM8XC9kaXY+PGltZyBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMG5NUzR3SnlCbGJtTnZaR2x1WnowblZWUkdMVGduSUQ4K0NqeHpkbWNnZUcxc2JuTTlKMmgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5KeUI0Yld4dWN6cDRiR2x1YXowbmFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzk0YkdsdWF5Y2dkMmxrZEdnOUp6VXdOQzR3TUhCMEp5Qm9aV2xuYUhROUp6STFNaTR3TUhCMEp5QjJhV1YzUW05NFBTY3dJREFnTlRBMExqQXdJREkxTWk0d01DYytDanhuSUdOc1lYTnpQU2R6ZG1kc2FYUmxKejRLUEdSbFpuTStDaUFnUEhOMGVXeGxJSFI1Y0dVOUozUmxlSFF2WTNOekp6NDhJVnREUkVGVVFWc0tJQ0FnSUM1emRtZHNhWFJsSUd4cGJtVXNJQzV6ZG1kc2FYUmxJSEJ2Ykhsc2FXNWxMQ0F1YzNabmJHbDBaU0J3YjJ4NVoyOXVMQ0F1YzNabmJHbDBaU0J3WVhSb0xDQXVjM1puYkdsMFpTQnlaV04wTENBdWMzWm5iR2wwWlNCamFYSmpiR1VnZXdvZ0lDQWdJQ0JtYVd4c09pQnViMjVsT3dvZ0lDQWdJQ0J6ZEhKdmEyVTZJQ013TURBd01EQTdDaUFnSUNBZ0lITjBjbTlyWlMxc2FXNWxZMkZ3T2lCeWIzVnVaRHNLSUNBZ0lDQWdjM1J5YjJ0bExXeHBibVZxYjJsdU9pQnliM1Z1WkRzS0lDQWdJQ0FnYzNSeWIydGxMVzFwZEdWeWJHbHRhWFE2SURFd0xqQXdPd29nSUNBZ2ZRb2dJQ0FnTG5OMloyeHBkR1VnZEdWNGRDQjdDaUFnSUNBZ0lIZG9hWFJsTFhOd1lXTmxPaUJ3Y21VN0NpQWdJQ0I5Q2lBZ0lDQXVjM1puYkdsMFpTQm5MbWRzZVhCb1ozSnZkWEFnY0dGMGFDQjdDaUFnSUNBZ0lHWnBiR3c2SUdsdWFHVnlhWFE3Q2lBZ0lDQWdJSE4wY205clpUb2dibTl1WlRzS0lDQWdJSDBLSUNCZFhUNDhMM04wZVd4bFBnbzhMMlJsWm5NK0NqeHlaV04wSUhkcFpIUm9QU2N4TURBbEp5Qm9aV2xuYUhROUp6RXdNQ1VuSUhOMGVXeGxQU2R6ZEhKdmEyVTZJRzV2Ym1VN0lHWnBiR3c2SUNOR1JrWkdSa1k3Snk4K0NqeGtaV1p6UGdvZ0lEeGpiR2x3VUdGMGFDQnBaRDBuWTNCTlF6UjNUVWgzTVUxRVVYVk5SRUk0VFVNMGQwMUlkM2xPVkVsMVRVUkJQU2MrQ2lBZ0lDQThjbVZqZENCNFBTY3dMakF3SnlCNVBTY3dMakF3SnlCM2FXUjBhRDBuTlRBMExqQXdKeUJvWldsbmFIUTlKekkxTWk0d01DY2dMejRLSUNBOEwyTnNhWEJRWVhSb1BnbzhMMlJsWm5NK0NqeG5JR05zYVhBdGNHRjBhRDBuZFhKc0tDTmpjRTFETkhkTlNIY3hUVVJSZFUxRVFqaE5RelIzVFVoM2VVNVVTWFZOUkVFOUtTYytDanh5WldOMElIZzlKekF1TURBbklIazlKeTB3TGpBd01EQXdNREF3TURBd01EQXlPQ2NnZDJsa2RHZzlKelV3TkM0d01DY2dhR1ZwWjJoMFBTY3lOVEl1TURBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREV1TURjN0lITjBjbTlyWlRvZ2JtOXVaVHNnWm1sc2JEb2dJMFpHUmtaR1Jqc25JQzgrQ2p3dlp6NEtQR1JsWm5NK0NpQWdQR05zYVhCUVlYUm9JR2xrUFNkamNFMXFWWFZOUkdnNFRrUnJORXhxVlhsbVJFbDVUR3BSZDJaRVJUVk9RelI1VGtFOVBTYytDaUFnSUNBOGNtVmpkQ0I0UFNjeU5TNHdPQ2NnZVQwbk1qSXVOREFuSUhkcFpIUm9QU2MwTnpNdU5EUW5JR2hsYVdkb2REMG5NVGN4TGpnMEp5QXZQZ29nSUR3dlkyeHBjRkJoZEdnK0Nqd3ZaR1ZtY3o0S1BHY2dZMnhwY0Mxd1lYUm9QU2QxY213b0kyTndUV3BWZFUxRWFEaE9SR3MwVEdwVmVXWkVTWGxNYWxGM1prUkZOVTVETkhsT1FUMDlLU2MrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMREUyT1M0Mk1TQTBPVGd1TlRJc01UWTVMall4SUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNQzQxTXpzZ2MzUnliMnRsT2lBalJVSkZRa1ZDT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMREV6TlM0Mk1TQTBPVGd1TlRJc01UTTFMall4SUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNQzQxTXpzZ2MzUnliMnRsT2lBalJVSkZRa1ZDT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMREV3TVM0Mk1TQTBPVGd1TlRJc01UQXhMall4SUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNQzQxTXpzZ2MzUnliMnRsT2lBalJVSkZRa1ZDT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p4d2IyeDViR2x1WlNCd2IybHVkSE05SnpJMUxqQTRMRFkzTGpZeElEUTVPQzQxTWl3Mk55NDJNU0FuSUhOMGVXeGxQU2R6ZEhKdmEyVXRkMmxrZEdnNklEQXVOVE03SUhOMGNtOXJaVG9nSTBWQ1JVSkZRanNnYzNSeWIydGxMV3hwYm1WallYQTZJR0oxZEhRN0p5QXZQZ284Y0c5c2VXeHBibVVnY0c5cGJuUnpQU2N5TlM0d09Dd3pNeTQyTVNBME9UZ3VOVElzTXpNdU5qRWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBd0xqVXpPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NVE0yTGpNMkxERTVOQzR5TkNBeE16WXVNellzTWpJdU5EQWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBd0xqVXpPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5Nek0wTGpJMkxERTVOQzR5TkNBek16UXVNallzTWpJdU5EQWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBd0xqVXpPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc01UZzJMall4SURRNU9DNDFNaXd4T0RZdU5qRWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBeExqQTNPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc01UVXlMall4SURRNU9DNDFNaXd4TlRJdU5qRWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBeExqQTNPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc01URTRMall4SURRNU9DNDFNaXd4TVRndU5qRWdKeUJ6ZEhsc1pUMG5jM1J5YjJ0bExYZHBaSFJvT2lBeExqQTNPeUJ6ZEhKdmEyVTZJQ05GUWtWQ1JVSTdJSE4wY205clpTMXNhVzVsWTJGd09pQmlkWFIwT3ljZ0x6NEtQSEJ2Ykhsc2FXNWxJSEJ2YVc1MGN6MG5NalV1TURnc09EUXVOakVnTkRrNExqVXlMRGcwTGpZeElDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTVM0d056c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6STFMakE0TERVd0xqWXhJRFE1T0M0MU1pdzFNQzQyTVNBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREV1TURjN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjek55NDVOU3d4T1RRdU1qUWdNemN1T1RVc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTWpNMExqYzNMREU1TkM0eU5DQXlNelF1Tnpjc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTkRNekxqYzBMREU1TkM0eU5DQTBNek11TnpRc01qSXVOREFnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXhMakEzT3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTkRZdU5qQXNNVGd4TGprMUlEUTRMamMzTERFNE15NDFNeUExTUM0NU15d3hPRE11T0RNZ05UTXVNRGtzTVRnMExqSTNJRFUxTGpJMUxERTROQzQyT0NBMU55NDBNaXd4T0RVdU1qRWdOVGt1TlRnc01UZzFMakUwSURZeExqYzBMREUzT1M0ME1TQTJNeTQ1TVN3eE5qY3VOemdnTmpZdU1EY3NNVFkwTGpJMElEWTRMakl6TERFM05DNDFPQ0EzTUM0ek9Td3hOemt1T1RZZ056SXVOVFlzTVRneUxqRTVJRGMwTGpjeUxERTRNeTQwTkNBM05pNDRPQ3d4T0RRdU5ESWdOemt1TURRc01UZzBMamd3SURneExqSXhMREU0TlM0eE1DQTRNeTR6Tnl3eE9EUXVPVGdnT0RVdU5UTXNNVGcxTGpjMklEZzNMamN3TERFNE5TNDROQ0E0T1M0NE5pd3hPRFV1TmpFZ09USXVNRElzTVRnMExqYzVJRGswTGpFNExERTRNeTR4TmlBNU5pNHpOU3d4T0RNdU9ETWdPVGd1TlRFc01UZzBMalF6SURFd01DNDJOeXd4T0RRdU5qY2dNVEF5TGpnMExERTRNeTQyTkNBeE1EVXVNREFzTVRjd0xqWXpJREV3Tnk0eE5pd3hORGN1TkRRZ01UQTVMak15TERFMk1TNHpNaUF4TVRFdU5Ea3NNVFkyTGpZeUlERXhNeTQyTlN3eE5qa3VPVFVnTVRFMUxqZ3hMREUzTXk0ME9TQXhNVGN1T1Rnc01UYzJMakEzSURFeU1DNHhOQ3d4TnpndU56TWdNVEl5TGpNd0xERTNPUzQyTVNBeE1qUXVORFlzTVRneExqUXdJREV5Tmk0Mk15d3hPREl1TlRBZ01USTRMamM1TERFNE1pNDROU0F4TXpBdU9UVXNNVGd5TGpZMElERXpNeTR4TVN3eE9ESXVOemdnTVRNMUxqSTRMREU0TXk0NU1TQXhNemN1TkRRc01UZzBMalExSURFek9TNDJNQ3d4T0RVdU16SWdNVFF4TGpjM0xERTROUzR5T1NBeE5ETXVPVE1zTVRnMUxqQTJJREUwTmk0d09Td3hPRFV1TWpVZ01UUTRMakkxTERFNE5TNDFNeUF4TlRBdU5ESXNNVGcxTGpjeklERTFNaTQxT0N3eE9EVXVOemtnTVRVMExqYzBMREU0Tmk0d01TQXhOVFl1T1RFc01UZzJMakV3SURFMU9TNHdOeXd4T0RZdU1URWdNVFl4TGpJekxERTROaTR4TkNBeE5qTXVNemtzTVRnMkxqRTJJREUyTlM0MU5pd3hPRFl1TVRFZ01UWTNMamN5TERFNE5pNHdPQ0F4TmprdU9EZ3NNVGcyTGpFd0lERTNNaTR3TlN3eE9EWXVNakVnTVRjMExqSXhMREU0Tmk0eU15QXhOell1TXpjc01UZ3pMakU1SURFM09DNDFNeXd4T0RJdU1UQWdNVGd3TGpjd0xERTROUzQyTWlBeE9ESXVPRFlzTVRnMkxqQTFJREU0TlM0d01pd3hPRFl1TVRJZ01UZzNMakU0TERFNE5pNHhPU0F4T0RrdU16VXNNVGcyTGpJeUlERTVNUzQxTVN3eE9EWXVNRGNnTVRrekxqWTNMREU0TXk0ME5DQXhPVFV1T0RRc01UZzFMakV5SURFNU9DNHdNQ3d4T0RVdU9Ua2dNakF3TGpFMkxERTROaTR4TkNBeU1ESXVNeklzTVRnMkxqRTBJREl3TkM0ME9Td3hPRFl1TWpBZ01qQTJMalkxTERFNE5pNHhPU0F5TURndU9ERXNNVGcyTGpJeklESXhNQzQ1T0N3eE9EWXVNalFnTWpFekxqRTBMREU0Tmk0eU9TQXlNVFV1TXpBc01UZzJMak16SURJeE55NDBOaXd4T0RZdU1UWWdNakU1TGpZekxERTRNeTR3TUNBeU1qRXVOemtzTVRnMUxqTXpJREl5TXk0NU5Td3hPREF1TWpjZ01qSTJMakV5TERFNE1TNHdPQ0F5TWpndU1qZ3NNVGcxTGpJMUlESXpNQzQwTkN3eE5qTXVORGtnTWpNeUxqWXdMREU0TVM0ek1pQXlNelF1Tnpjc01UZzFMalV4SURJek5pNDVNeXd4T0RZdU1ETWdNak01TGpBNUxERTROQzQwTVNBeU5ERXVNallzTVRRM0xqUTBJREkwTXk0ME1pd3hOell1TXpVZ01qUTFMalU0TERFNE15NDNOU0F5TkRjdU56UXNNVGcxTGpZNElESTBPUzQ1TVN3eE9EWXVNVGdnTWpVeUxqQTNMREU0Tmk0ek1TQXlOVFF1TWpNc01UZzJMak0wSURJMU5pNHpPU3d4T0RVdU5EY2dNalU0TGpVMkxERTROQzR5TWlBeU5qQXVOeklzTVRnMkxqTXlJREkyTWk0NE9Dd3hPRFl1TXpnZ01qWTFMakExTERFNE5pNDBNaUF5TmpjdU1qRXNNVGcyTGpReUlESTJPUzR6Tnl3eE9EWXVORE1nTWpjeExqVXpMREU0Tmk0ek15QXlOek11TnpBc01UZzJMalF3SURJM05TNDROaXd4TmprdU1UUWdNamM0TGpBeUxERTROQzQzTWlBeU9EQXVNVGtzTVRnMkxqSXhJREk0TWk0ek5Td3hPRFl1TWpVZ01qZzBMalV4TERFNE5pNHlPQ0F5T0RZdU5qY3NNVGcxTGpnNElESTRPQzQ0TkN3eE9EWXVNak1nTWpreExqQXdMREU0TlM0eU15QXlPVE11TVRZc01UY3hMalV5SURJNU5TNHpNeXd4TkRRdU56a2dNamszTGpRNUxERTBOQzQxTWlBeU9Ua3VOalVzTVRjeUxqSTJJRE13TVM0NE1Td3hOVGd1TVRrZ016QXpMams0TERFMk5DNDVPU0F6TURZdU1UUXNNVEk1TGpRNUlETXdPQzR6TUN3eE5qZ3VORFlnTXpFd0xqUTJMREUzTnk0NE5DQXpNVEl1TmpNc01UZ3dMamt5SURNeE5DNDNPU3d4T0RRdU5EWWdNekUyTGprMUxERTROUzQyTXlBek1Ua3VNVElzTVRnMUxqazFJRE15TVM0eU9Dd3hPRFl1TVRFZ016SXpMalEwTERFNE5pNHlOU0F6TWpVdU5qQXNNVGcyTGpFeElETXlOeTQzTnl3eE9EVXVORGtnTXpJNUxqa3pMREUwTkM0d05DQXpNekl1TURrc01UWTJMakF4SURNek5DNHlOaXd4TnpVdU16a2dNek0yTGpReUxERTNNQzQ0TkNBek16Z3VOVGdzTVRNd0xqVXhJRE0wTUM0M05Dd3hOek11TlRZZ016UXlMamt4TERFNE1TNHlNU0F6TkRVdU1EY3NNVGd6TGpZeklETTBOeTR5TXl3eE9EQXVOVE1nTXpRNUxqUXdMREU0TXk0MU15QXpOVEV1TlRZc01UZzFMakV5SURNMU15NDNNaXd4T0RVdU5EY2dNelUxTGpnNExERTROUzQzTUNBek5UZ3VNRFVzTVRnMUxqYzRJRE0yTUM0eU1Td3hPRFV1TnpnZ016WXlMak0zTERFNE5TNDRNU0F6TmpRdU5UTXNNekF1TWpFZ016WTJMamN3TERFek9TNHlPQ0F6TmpndU9EWXNNVGN4TGpNNElETTNNUzR3TWl3eE9EQXVOVGtnTXpjekxqRTVMREU0TkM0M05DQXpOelV1TXpVc01UZzJMakV3SURNM055NDFNU3d4T0RZdU5ESWdNemM1TGpZM0xERTNOaTQ0T1NBek9ERXVPRFFzTVRVNUxqazJJRE00TkM0d01DdzJOaTR5TlNBek9EWXVNVFlzTVRZeExqWTJJRE00T0M0ek15d3hPREV1T1RNZ016a3dMalE1TERFNE5TNHlNaUF6T1RJdU5qVXNNVGcyTGpBeUlETTVOQzQ0TVN3eE9EWXVNamtnTXprMkxqazRMREU0Tmk0ek9DQXpPVGt1TVRRc01UZzFMamMySURRd01TNHpNQ3d4T0RZdU1qTWdOREF6TGpRM0xERTFOeTQzTVNBME1EVXVOak1zTVRRM0xqUTBJRFF3Tnk0M09Td3hOemN1T0RRZ05EQTVMamsxTERFNE5DNDRNU0EwTVRJdU1USXNNVGcxTGprNElEUXhOQzR5T0N3eE9EWXVNek1nTkRFMkxqUTBMREU0Tmk0ME15QTBNVGd1TmpBc01UZzJMak16SURReU1DNDNOeXd4T0RZdU1qRWdOREl5TGprekxERTROaTR5TUNBME1qVXVNRGtzTVRnMUxqazBJRFF5Tnk0eU5pd3hOemt1TURBZ05ESTVMalF5TERFNE1pNDFNeUEwTXpFdU5UZ3NNVGcxTGpJM0lEUXpNeTQzTkN3eE9EVXVNellnTkRNMUxqa3hMREU0TkM0MU1pQTBNemd1TURjc01UZ3lMak16SURRME1DNHlNeXd4T0RNdU5qTWdORFF5TGpRd0xERTROQzR4TWlBME5EUXVOVFlzTVRnMExqSXlJRFEwTmk0M01pd3hPRFF1TXpnZ05EUTRMamc0TERFNE5DNDFOQ0EwTlRFdU1EVXNNVGcwTGpVMElEUTFNeTR5TVN3eE9EUXVNemdnTkRVMUxqTTNMREU0TkM0eU55QTBOVGN1TlRRc01UZ3pMamsxSURRMU9TNDNNQ3d4TnprdU1EY2dORFl4TGpnMkxERTNPUzQ0TnlBME5qUXVNRElzTVRneUxqTXlJRFEyTmk0eE9Td3hPREl1TWpFZ05EWTRMak0xTERFNE1pNDBNQ0EwTnpBdU5URXNNVGd5TGpZM0lEUTNNaTQyT0N3eE9ERXVPRFlnTkRjMExqZzBMREUzT0M0M015QTBOemN1TURBc01UYzVMakkzSUNjZ2MzUjViR1U5SjNOMGNtOXJaUzEzYVdSMGFEb2dNUzR3TnpzZ2MzUnliMnRsT2lBalJqZzNOalpFT3lCemRISnZhMlV0YkdsdVpXTmhjRG9nWW5WMGREc25JQzgrQ2p3dlp6NEtQR2NnWTJ4cGNDMXdZWFJvUFNkMWNtd29JMk53VFVNMGQwMUlkekZOUkZGMVRVUkNPRTFETkhkTlNIZDVUbFJKZFUxRVFUMHBKejRLUEM5blBnbzhaR1ZtY3o0S0lDQThZMnhwY0ZCaGRHZ2dhV1E5SjJOd1RXcFZkVTFFYURoT1JHczBUR3BWZVdaRVZYVk9SR2c0VFdwSmRVNUVRVDBuUGdvZ0lDQWdQSEpsWTNRZ2VEMG5NalV1TURnbklIazlKelV1TkRnbklIZHBaSFJvUFNjME56TXVORFFuSUdobGFXZG9kRDBuTVRZdU9USW5JQzgrQ2lBZ1BDOWpiR2x3VUdGMGFENEtQQzlrWldaelBnbzhaeUJqYkdsd0xYQmhkR2c5SjNWeWJDZ2pZM0JOYWxWMVRVUm9PRTVFYXpSTWFsVjVaa1JWZFU1RWFEaE5ha2wxVGtSQlBTa25QZ284ZEdWNGRDQjRQU2N5TmpFdU9EQW5JSGs5SnpFM0xqQTVKeUIwWlhoMExXRnVZMmh2Y2owbmJXbGtaR3hsSnlCemRIbHNaVDBuWm05dWRDMXphWHBsT2lBNExqZ3djSGc3Wm1sc2JEb2dJekZCTVVFeFFUc2dabTl1ZEMxbVlXMXBiSGs2SUNKQmNtbGhiQ0k3SnlCMFpYaDBUR1Z1WjNSb1BTYzBPUzR6TkhCNEp5QnNaVzVuZEdoQlpHcDFjM1E5SjNOd1lXTnBibWRCYm1SSGJIbHdhSE1uUGpBd01EWXdJQ2htZERNdmN5azhMM1JsZUhRK0Nqd3ZaejRLUEdjZ1kyeHBjQzF3WVhSb1BTZDFjbXdvSTJOd1RVTTBkMDFJZHpGTlJGRjFUVVJDT0UxRE5IZE5TSGQ1VGxSSmRVMUVRVDBwSno0S1BIUmxlSFFnZUQwbk16Y3VPVFVuSUhrOUp6SXdOUzQwTnljZ2RHVjRkQzFoYm1Ob2IzSTlKMjFwWkdSc1pTY2djM1I1YkdVOUoyWnZiblF0YzJsNlpUb2dPQzQ0TUhCNE8yWnBiR3c2SUNNMFJEUkVORVE3SUdadmJuUXRabUZ0YVd4NU9pQWlRWEpwWVd3aU95Y2dkR1Y0ZEV4bGJtZDBhRDBuTVRNdU5qbHdlQ2NnYkdWdVozUm9RV1JxZFhOMFBTZHpjR0ZqYVc1blFXNWtSMng1Y0doekp6NUJjSEk4TDNSbGVIUStDangwWlhoMElIZzlKekl6TkM0M055Y2dlVDBuTWpBMUxqUTNKeUIwWlhoMExXRnVZMmh2Y2owbmJXbGtaR3hsSnlCemRIbHNaVDBuWm05dWRDMXphWHBsT2lBNExqZ3djSGc3Wm1sc2JEb2dJelJFTkVRMFJEc2dabTl1ZEMxbVlXMXBiSGs2SUNKQmNtbGhiQ0k3SnlCMFpYaDBUR1Z1WjNSb1BTY3hNUzR5TlhCNEp5QnNaVzVuZEdoQlpHcDFjM1E5SjNOd1lXTnBibWRCYm1SSGJIbHdhSE1uUGtwMWJEd3ZkR1Y0ZEQ0S1BIUmxlSFFnZUQwbk5ETXpMamMwSnlCNVBTY3lNRFV1TkRjbklIUmxlSFF0WVc1amFHOXlQU2R0YVdSa2JHVW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEdG1hV3hzT2lBak5FUTBSRFJFT3lCbWIyNTBMV1poYldsc2VUb2dJa0Z5YVdGc0lqc25JSFJsZUhSTVpXNW5kR2c5SnpFekxqWTVjSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytUMk4wUEM5MFpYaDBQZ284ZEdWNGRDQjRQU2N5TUM0eE5TY2dlVDBuTVRnNUxqYzJKeUIwWlhoMExXRnVZMmh2Y2owblpXNWtKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjMExqZzVjSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytNRHd2ZEdWNGRENEtQSFJsZUhRZ2VEMG5NakF1TVRVbklIazlKekUxTlM0M05pY2dkR1Y0ZEMxaGJtTm9iM0k5SjJWdVpDY2djM1I1YkdVOUoyWnZiblF0YzJsNlpUb2dPQzQ0TUhCNE8yWnBiR3c2SUNNMFJEUkVORVE3SUdadmJuUXRabUZ0YVd4NU9pQWlRWEpwWVd3aU95Y2dkR1Y0ZEV4bGJtZDBhRDBuT1M0M09IQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqVXdQQzkwWlhoMFBnbzhkR1Y0ZENCNFBTY3lNQzR4TlNjZ2VUMG5NVEl4TGpjMkp5QjBaWGgwTFdGdVkyaHZjajBuWlc1a0p5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpSRU5FUTBSRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2N4TkM0Mk4zQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqRXdNRHd2ZEdWNGRENEtQSFJsZUhRZ2VEMG5NakF1TVRVbklIazlKemczTGpjMkp5QjBaWGgwTFdGdVkyaHZjajBuWlc1a0p5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpSRU5FUTBSRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2N4TkM0Mk4zQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqRTFNRHd2ZEdWNGRENEtQSFJsZUhRZ2VEMG5NakF1TVRVbklIazlKelV6TGpjMkp5QjBaWGgwTFdGdVkyaHZjajBuWlc1a0p5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpSRU5FUTBSRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2N4TkM0Mk4zQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqSXdNRHd2ZEdWNGRENEtQR3hwYm1VZ2VERTlKekkwT1M0M01DY2dlVEU5SnpJek1pNDBNQ2NnZURJOUp6STJNeTQxTXljZ2VUSTlKekl6TWk0ME1DY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTVM0d056c2djM1J5YjJ0bE9pQWpSamczTmpaRU95QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeDBaWGgwSUhnOUp6STNNQzQzTkNjZ2VUMG5Nak0xTGpVMUp5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk5DNDRPWEI0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5QakU4TDNSbGVIUStDand2Wno0S1BDOW5QZ284TDNOMlp6ND0nIHN0eWxlPSd3aWR0aDo1MDRweDsgbWF4LXdpZHRoOjEwMCU7IGRpc3BsYXk6YmxvY2snIGFsdD0ndGltZSBzZXJpZXMnIC8+PGRpdiBzdHlsZT0nbWFyZ2luLXRvcDo2cHgnPjxhIGhyZWY9J2RhdGE6dGV4dC9jc3Y7YmFzZTY0LEltTnZkbVZ5WVdkbFgybGtJaXdpY0dGeVlXMWxkR1Z5SWl3aWNHRnlZVzFsZEdWeVgyeGhZbVZzSWl3aWRXNXBkQ0lzSW1SaGRHVjBhVzFsSWl3aWVDSXNJbmtpTENKNklpd2lkbUZzZFdVaUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHhNQzB5TVN3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxERXdMamdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRFd0xUSXdMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTVRFdU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNVEF0TVRrc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTdzJMams1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMweE1DMHhPQ3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERVdU9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNVEF0TVRjc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTdzJMaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRFd0xURTJMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTmk0ME9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNVEF0TVRVc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTdzJMak14Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMweE1DMHhOQ3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERrdU9USUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEV3TFRFekxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNVEV1TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1UQXRNVElzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3ekxqa3hDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB4TUMweE1Td3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMRE11TkRVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExURXdMVEV3TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc015NHlPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TVRBdE1Ea3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d6TGpBMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHhNQzB3T0N3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxETXVNRFVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRFd0xUQTNMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTXk0eU9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNVEF0TURZc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3pMalV5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMweE1DMHdOU3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERNdU5qY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEV3TFRBMExDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNOQzR6T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1UQXRNRE1zTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3MkxqTUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEV3TFRBeUxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNeTR3T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1UQXRNREVzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3eExqZzBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3T1Mwek1Dd3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREV1T1RnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTVMVEk1TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc05nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGt0TWpnc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3hNUzR5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd09TMHlOeXd0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERBdU9Ua0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEE1TFRJMkxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNQzQyTVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1Ea3RNalVzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3d0xqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEE1TFRJMExDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNQzQwTVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1Ea3RNak1zTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3d0xqSTNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3T1MweU1pd3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREF1TkRJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTVMVEl4TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01DNDVNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURrdE1qQXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d5TGpZMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdPUzB4T1N3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxERXlMamtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBNUxURTRMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTlRjdU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGt0TVRjc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTdzBNaTQxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd09TMHhOaXd0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERBdU5UY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEE1TFRFMUxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNUzR5TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1Ea3RNVFFzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3d0xqTTFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3T1MweE15d3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREF1TkRnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTVMVEV5TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01DNDROd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURrdE1URXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d5TGpBMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdPUzB4TUN3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEWXVPRGdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBNUxUQTVMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTXpZdU53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGt0TURnc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3hOemNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBNUxUQTNMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTXprdU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGt0TURZc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3hOQzR6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd09TMHdOU3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERBdU1qZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEE1TFRBMExDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNQzQzTlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1Ea3RNRE1zTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3eUxqYzFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3T1Mwd01pd3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMRGd1T0RZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTVMVEF4TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01qSXVOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURndE16RXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3cyT1M0MkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdPQzB6TUN3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxESXpNQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURndE1qa3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d4TGpFNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdPQzB5T0N3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxERXVNaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBNExUSTNMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTVM0eU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGd0TWpZc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3hMak0wQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd09DMHlOU3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERFdU5qZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEE0TFRJMExDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNaTR5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd09DMHlNeXd0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERRdU5UTUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEE0TFRJeUxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNPQzQ1TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EZ3RNakVzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3MExqTTVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3T0MweU1Dd3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMRGN1T1RRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTRMVEU1TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01Ua3VNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURndE1UZ3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3c0TWk0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdPQzB4Tnl3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxESXpMaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBNExURTJMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTVRZdU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGd0TVRVc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3pNQzR6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd09DMHhOQ3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERZeUxqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEE0TFRFekxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNUzQyTlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EZ3RNVElzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3d0xqYzBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3T0MweE1Td3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREF1TlRNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTRMVEV3TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01DNDNOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURndE1Ea3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d3TGprNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdPQzB3T0N3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxERXVORFFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBNExUQTNMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTXk0eE5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGd0TURZc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTdzRMak0zQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd09DMHdOU3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERFeUxqa0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEE0TFRBMExDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNall1TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EZ3RNRE1zTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3NE5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGd0TURJc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3pNUzQ0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd09DMHdNU3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERReExqZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEzTFRNeExDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNakV1TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EY3RNekFzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3Mk1TNDVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TnkweU9Td3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMRFl4TGpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTNMVEk0TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01qSXVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURjdE1qY3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d5TGpBekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOeTB5Tml3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEQXVOVFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBM0xUSTFMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTVM0d09Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGN0TWpRc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3dMalE1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd055MHlNeXd0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERBdU5UTUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEzTFRJeUxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNQzQyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd055MHlNU3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERJdU56a0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEzTFRJd0xDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNalV1TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EY3RNVGtzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3d0xqTXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TnkweE9Dd3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREF1TkRJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTNMVEUzTEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01DNHlOd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURjdE1UWXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d3TGpJNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOeTB4TlN3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEQXVNamtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBM0xURTBMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTUM0ek5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGN0TVRNc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3dMalF6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd055MHhNaXd0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERNdU5USUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEzTFRFeExDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNUzQyT0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EY3RNVEFzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3d0xqUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEzTFRBNUxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNQzQwTlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EY3RNRGdzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3d0xqWXpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3Tnkwd055d3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREV1TXpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTNMVEEyTEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc05DNHlNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURjdE1EVXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d4TlM0eENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOeTB3TkN3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEVTNMallLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBM0xUQXpMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTXk0eU5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRGN0TURJc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3dMamcyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd055MHdNU3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERFdU5qSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEyTFRNd0xDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNOeTQzT0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EWXRNamtzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3ek5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRFl0TWpnc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3lDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TmkweU55d3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMRGd1TVRRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTJMVEkyTEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc09TNHpNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURZdE1qVXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d4TGpnNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOaTB5TkN3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEVXVNekVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBMkxUSXpMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTUM0Mk5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRFl0TWpJc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3dMalF4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd05pMHlNU3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERBdU5EY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEyTFRJd0xDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNQzQxTlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EWXRNVGtzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3d0xqVTJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TmkweE9Dd3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREF1TmpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTJMVEUzTEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01DNDJNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURZdE1UWXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d3TGpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTJMVEUxTEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01DNDJPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURZdE1UUXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d3TGpreENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOaTB4TXl3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxESXVNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURZdE1USXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3cwTGpZMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOaTB4TVN3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEQXVPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURZdE1UQXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d3TGpVNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOaTB3T1N3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEQXVOaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBMkxUQTRMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTUM0M01nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRFl0TURjc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3dMamd6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd05pMHdOaXd0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERFdU5EWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEyTFRBMUxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNOaTQyTXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EWXRNRFFzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3MUxqQXpDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3Tmkwd015d3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREF1TlRZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTJMVEF5TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01DNDJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3Tmkwd01Td3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREF1TnpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTFMVE14TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01DNDNPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURVdE16QXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d3TGpjMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOUzB5T1N3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEQXVOallLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBMUxUSTRMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTUM0Mk9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRFV0TWpjc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3dMamMwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd05TMHlOaXd0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERBdU56WUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEExTFRJMUxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNQzQ0T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EVXRNalFzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3eExqSXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TlMweU15d3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREV1TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EVXRNaklzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3eExqVTVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TlMweU1Td3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREl1TURFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTFMVEl3TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01pNHlPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURVdE1Ua3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d4TGprMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOUzB4T0N3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxERXVPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURVdE1UY3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d6TGpFNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOUzB4Tml3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxETXVPVGNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBMUxURTFMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTlM0Mk13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRFV0TVRRc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTdzFMamcxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd05TMHhNeXd0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERVdU5UUUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEExTFRFeUxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNOaTR3TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EVXRNVEVzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3M0xqWTNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TlMweE1Dd3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREV3TGpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTFMVEE1TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01URXVOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURVdE1EZ3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d4TlM0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOUzB3Tnl3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxERTVMak1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBMUxUQTJMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTWpRdU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRFV0TURVc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3lPUzQwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd05TMHdOQ3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERNM0xqSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEExTFRBekxDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNOVGN1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EVXRNRElzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3eU15NDFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TlMwd01Td3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMRFF1TXpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTBMVE13TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc01pNDROZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURRdE1qa3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3d6TGpJeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOQzB5T0N3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEUXVNRGtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBMExUSTNMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTlM0d09Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRFF0TWpZc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3lMalk0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd05DMHlOU3d0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERFdU5EZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEwTFRJMExDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNUzR4TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EUXRNak1zTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3eExqSTFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TkMweU1pd3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREl1TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EUXRNakVzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3eUxqSXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TkMweU1Dd3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREl1TmpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTBMVEU1TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc015NHlNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURRdE1UZ3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3cwTGpZMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOQzB4Tnl3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEWXVOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURRdE1UWXNMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3c1TGpjNENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOQzB4TlN3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxERTNMamNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBMExURTBMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTXpJdU9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01EUXRNRFF0TVRNc0xUYzVMakUwTkRFMk5qWTJOalkyTmpjc016WXVNRFkxTlRVMU5UVTFOVFUxTml4T1FTd3lOeTQzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF3TkMwd05DMHhNaXd0TnprdU1UUTBNVFkyTmpZMk5qWTJOeXd6Tmk0d05qVTFOVFUxTlRVMU5UVTJMRTVCTERFd0xqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1EQTBMVEEwTFRFeExDMDNPUzR4TkRReE5qWTJOalkyTmpZM0xETTJMakEyTlRVMU5UVTFOVFUxTlRZc1RrRXNNaTR4TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TURRdE1EUXRNVEFzTFRjNUxqRTBOREUyTmpZMk5qWTJOamNzTXpZdU1EWTFOVFUxTlRVMU5UVTFOaXhPUVN3eUxqQTNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXdOQzB3TkMwd09Td3ROemt1TVRRME1UWTJOalkyTmpZMk55d3pOaTR3TmpVMU5UVTFOVFUxTlRVMkxFNUJMREl1T0RVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURBMExUQTBMVEE0TEMwM09TNHhORFF4TmpZMk5qWTJOalkzTERNMkxqQTJOVFUxTlRVMU5UVTFOVFlzVGtFc015NDBOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNRFF0TURRdE1EY3NMVGM1TGpFME5ERTJOalkyTmpZMk5qY3NNell1TURZMU5UVTFOVFUxTlRVMU5peE9RU3cwTGpBNUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBd05DMHdOQzB3Tml3dE56a3VNVFEwTVRZMk5qWTJOalkyTnl3ek5pNHdOalUxTlRVMU5UVTFOVFUyTEU1QkxEUXVOVE1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREEwTFRBMExUQTFMQzAzT1M0eE5EUXhOalkyTmpZMk5qWTNMRE0yTGpBMk5UVTFOVFUxTlRVMU5UWXNUa0VzTmk0NE5nPT0nIGRvd25sb2FkPSdzdGF0aW9uLVVTR1MtMDIwODQ5MDkuY3N2Jz5Eb3dubG9hZCBDU1Y8XC9hPjxcL2Rpdj48XC9kaXY+IiwiPGRpdiBzdHlsZT0nZm9udC1mYW1pbHk6c3lzdGVtLXVpLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxMnB4OyBtYXgtd2lkdGg6NTI4cHgnPjxkaXYgc3R5bGU9J2ZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTo0cHgnPkVOTyBSSVZFUiBBVCBISUxMU0JPUk9VR0gsIE5DPFwvZGl2PjxpbWcgc3JjPSdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBuTVM0d0p5QmxibU52WkdsdVp6MG5WVlJHTFRnbklEOCtDanh6ZG1jZ2VHMXNibk05SjJoMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSnlCNGJXeHVjenA0YkdsdWF6MG5hSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M5NGJHbHVheWNnZDJsa2RHZzlKelV3TkM0d01IQjBKeUJvWldsbmFIUTlKekkxTWk0d01IQjBKeUIyYVdWM1FtOTRQU2N3SURBZ05UQTBMakF3SURJMU1pNHdNQ2MrQ2p4bklHTnNZWE56UFNkemRtZHNhWFJsSno0S1BHUmxabk0rQ2lBZ1BITjBlV3hsSUhSNWNHVTlKM1JsZUhRdlkzTnpKejQ4SVZ0RFJFRlVRVnNLSUNBZ0lDNXpkbWRzYVhSbElHeHBibVVzSUM1emRtZHNhWFJsSUhCdmJIbHNhVzVsTENBdWMzWm5iR2wwWlNCd2IyeDVaMjl1TENBdWMzWm5iR2wwWlNCd1lYUm9MQ0F1YzNabmJHbDBaU0J5WldOMExDQXVjM1puYkdsMFpTQmphWEpqYkdVZ2V3b2dJQ0FnSUNCbWFXeHNPaUJ1YjI1bE93b2dJQ0FnSUNCemRISnZhMlU2SUNNd01EQXdNREE3Q2lBZ0lDQWdJSE4wY205clpTMXNhVzVsWTJGd09pQnliM1Z1WkRzS0lDQWdJQ0FnYzNSeWIydGxMV3hwYm1WcWIybHVPaUJ5YjNWdVpEc0tJQ0FnSUNBZ2MzUnliMnRsTFcxcGRHVnliR2x0YVhRNklERXdMakF3T3dvZ0lDQWdmUW9nSUNBZ0xuTjJaMnhwZEdVZ2RHVjRkQ0I3Q2lBZ0lDQWdJSGRvYVhSbExYTndZV05sT2lCd2NtVTdDaUFnSUNCOUNpQWdJQ0F1YzNabmJHbDBaU0JuTG1kc2VYQm9aM0p2ZFhBZ2NHRjBhQ0I3Q2lBZ0lDQWdJR1pwYkd3NklHbHVhR1Z5YVhRN0NpQWdJQ0FnSUhOMGNtOXJaVG9nYm05dVpUc0tJQ0FnSUgwS0lDQmRYVDQ4TDNOMGVXeGxQZ284TDJSbFpuTStDanh5WldOMElIZHBaSFJvUFNjeE1EQWxKeUJvWldsbmFIUTlKekV3TUNVbklITjBlV3hsUFNkemRISnZhMlU2SUc1dmJtVTdJR1pwYkd3NklDTkdSa1pHUmtZN0p5OCtDanhrWldaelBnb2dJRHhqYkdsd1VHRjBhQ0JwWkQwblkzQk5RelIzVFVoM01VMUVVWFZOUkVJNFRVTTBkMDFJZDNsT1ZFbDFUVVJCUFNjK0NpQWdJQ0E4Y21WamRDQjRQU2N3TGpBd0p5QjVQU2N3TGpBd0p5QjNhV1IwYUQwbk5UQTBMakF3SnlCb1pXbG5hSFE5SnpJMU1pNHdNQ2NnTHo0S0lDQThMMk5zYVhCUVlYUm9QZ284TDJSbFpuTStDanhuSUdOc2FYQXRjR0YwYUQwbmRYSnNLQ05qY0UxRE5IZE5TSGN4VFVSUmRVMUVRamhOUXpSM1RVaDNlVTVVU1hWTlJFRTlLU2MrQ2p4eVpXTjBJSGc5SnpBdU1EQW5JSGs5Snkwd0xqQXdNREF3TURBd01EQXdNREF5T0NjZ2QybGtkR2c5SnpVd05DNHdNQ2NnYUdWcFoyaDBQU2N5TlRJdU1EQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dibTl1WlRzZ1ptbHNiRG9nSTBaR1JrWkdSanNuSUM4K0Nqd3ZaejRLUEdSbFpuTStDaUFnUEdOc2FYQlFZWFJvSUdsa1BTZGpjRTFxVlhWTlJHZzRUa1JyTkV4cVZYbG1SRWw1VEdwUmQyWkVSVFZPUXpSNVRrRTlQU2MrQ2lBZ0lDQThjbVZqZENCNFBTY3lOUzR3T0NjZ2VUMG5Nakl1TkRBbklIZHBaSFJvUFNjME56TXVORFFuSUdobGFXZG9kRDBuTVRjeExqZzBKeUF2UGdvZ0lEd3ZZMnhwY0ZCaGRHZytDand2WkdWbWN6NEtQR2NnWTJ4cGNDMXdZWFJvUFNkMWNtd29JMk53VFdwVmRVMUVhRGhPUkdzMFRHcFZlV1pFU1hsTWFsRjNaa1JGTlU1RE5IbE9RVDA5S1NjK0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6STFMakE0TERFMk9TNDNNaUEwT1RndU5USXNNVFk1TGpjeUlDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTUM0MU16c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6STFMakE0TERFeU5TNDROU0EwT1RndU5USXNNVEkxTGpnMUlDY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTUM0MU16c2djM1J5YjJ0bE9pQWpSVUpGUWtWQ095QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeHdiMng1YkdsdVpTQndiMmx1ZEhNOUp6STFMakE0TERneExqazRJRFE1T0M0MU1pdzRNUzQ1T0NBbklITjBlV3hsUFNkemRISnZhMlV0ZDJsa2RHZzZJREF1TlRNN0lITjBjbTlyWlRvZ0kwVkNSVUpGUWpzZ2MzUnliMnRsTFd4cGJtVmpZWEE2SUdKMWRIUTdKeUF2UGdvOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNjeU5TNHdPQ3d6T0M0eE1TQTBPVGd1TlRJc016Z3VNVEVnSnlCemRIbHNaVDBuYzNSeWIydGxMWGRwWkhSb09pQXdMalV6T3lCemRISnZhMlU2SUNORlFrVkNSVUk3SUhOMGNtOXJaUzFzYVc1bFkyRndPaUJpZFhSME95Y2dMejRLUEhCdmJIbHNhVzVsSUhCdmFXNTBjejBuTlRVdU1qVXNNVGswTGpJMElEVTFMakkxTERJeUxqUXdJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01DNDFNenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekkwT1M0NU1Td3hPVFF1TWpRZ01qUTVMamt4TERJeUxqUXdJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01DNDFNenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKelEwTkM0MU5pd3hPVFF1TWpRZ05EUTBMalUyTERJeUxqUXdJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01DNDFNenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekkxTGpBNExERTVNUzQyTmlBME9UZ3VOVElzTVRreExqWTJJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekkxTGpBNExERTBOeTQzT1NBME9UZ3VOVElzTVRRM0xqYzVJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekkxTGpBNExERXdNeTQ1TVNBME9UZ3VOVElzTVRBekxqa3hJQ2NnYzNSNWJHVTlKM04wY205clpTMTNhV1IwYURvZ01TNHdOenNnYzNSeWIydGxPaUFqUlVKRlFrVkNPeUJ6ZEhKdmEyVXRiR2x1WldOaGNEb2dZblYwZERzbklDOCtDanh3YjJ4NWJHbHVaU0J3YjJsdWRITTlKekkxTGpBNExEWXdMakEwSURRNU9DNDFNaXcyTUM0d05DQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3hOVEl1TlRnc01UazBMakkwSURFMU1pNDFPQ3d5TWk0ME1DQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTY3pORGN1TWpNc01UazBMakkwSURNME55NHlNeXd5TWk0ME1DQW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFZDUlVKRlFqc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhjRzlzZVd4cGJtVWdjRzlwYm5SelBTYzBOaTQyTUN3eE9EVXVNVFlnTkRndU56Y3NNVGcwTGpjM0lEVXdMamt6TERFNE5DNDVNU0ExTXk0d09Td3hPRFF1TVRRZ05UVXVNalVzTVRnMExqVTJJRFUzTGpReUxERTROUzQxTVNBMU9TNDFPQ3d4T0RVdU1EUWdOakV1TnpRc01UZzFMalkwSURZekxqa3hMREU0TkM0eU55QTJOaTR3Tnl3eE9EUXVOVFVnTmpndU1qTXNNVGcwTGpnNUlEY3dMak01TERFNE5DNDJPQ0EzTWk0MU5pd3hPRFV1TURBZ056UXVOeklzTVRnMExqWTBJRGMyTGpnNExERTROQzQwTlNBM09TNHdOQ3d4T0RRdU5qZ2dPREV1TWpFc01UZzBMamMySURnekxqTTNMREU0TkM0MU5pQTROUzQxTXl3eE9EUXVOemNnT0RjdU56QXNNVGM0TGprMElEZzVMamcyTERFM05pNDRNeUE1TWk0d01pd3hOemt1T0RFZ09UUXVNVGdzTVRnd0xqWXdJRGsyTGpNMUxERTRNQzR5TlNBNU9DNDFNU3d4T0RFdU9ETWdNVEF3TGpZM0xERTRNaTR5TnlBeE1ESXVPRFFzTVRneExqZ3pJREV3TlM0d01Dd3hPREl1TXpZZ01UQTNMakUyTERFNE1pNDVOaUF4TURrdU16SXNNVGd6TGpJNElERXhNUzQwT1N3eE9ESXVPRGdnTVRFekxqWTFMREU0TXk0ek15QXhNVFV1T0RFc01UZ3lMalExSURFeE55NDVPQ3d4T0RNdU9UTWdNVEl3TGpFMExERTRNeTQxTkNBeE1qSXVNekFzTVRnekxqTTJJREV5TkM0ME5pd3hOell1T1RJZ01USTJMall6TERFM05DNHhNU0F4TWpndU56a3NNVGM0TGpZM0lERXpNQzQ1TlN3eE9EQXVOakFnTVRNekxqRXhMREU0TWk0eE9DQXhNelV1TWpnc01UZ3lMakF4SURFek55NDBOQ3d4T0RFdU5qWWdNVE01TGpZd0xERTRNUzQyTmlBeE5ERXVOemNzTVRneExqZ3pJREUwTXk0NU15d3hPREl1TWpjZ01UUTJMakE1TERFNE1pNDBOU0F4TkRndU1qVXNNVGd5TGpNMklERTFNQzQwTWl3eE9ESXVOVE1nTVRVeUxqVTRMREU0TWk0NE1DQXhOVFF1TnpRc01UZ3pMakl5SURFMU5pNDVNU3d4T0RNdU1qRWdNVFU1TGpBM0xERTRNeTR4TkNBeE5qRXVNak1zTVRnekxqTXlJREUyTXk0ek9Td3hPRE11TkRrZ01UWTFMalUyTERFNE15NHhOQ0F4TmpjdU56SXNNVGd5TGpnd0lERTJPUzQ0T0N3eE9ESXVORFVnTVRjeUxqQTFMREU0TUM0NU5TQXhOelF1TWpFc01UYzBMak0zSURFM05pNHpOeXd4T0RBdU5qa2dNVGM0TGpVekxERTRNaTR6TmlBeE9EQXVOekFzTVRnekxqQTBJREU0TWk0NE5pd3hPREl1TWpjZ01UZzFMakF5TERFNE1pNHhNQ0F4T0RjdU1UZ3NNVGd5TGpjeElERTRPUzR6TlN3eE9ERXVORGdnTVRreExqVXhMREUzT1M0M015QXhPVE11Tmpjc01UZ3dMalF6SURFNU5TNDROQ3d4T0RFdU16RWdNVGs0TGpBd0xERTRNaTR4T0NBeU1EQXVNVFlzTVRneUxqTTJJREl3TWk0ek1pd3hPREl1T0RBZ01qQTBMalE1TERFNE1TNHpPU0F5TURZdU5qVXNNVGM1TGpZMElESXdPQzQ0TVN3eE56a3VOVFVnTWpFd0xqazRMREU0TUM0M09DQXlNVE11TVRRc01UZ3hMalkySURJeE5TNHpNQ3d4T0RJdU1UQWdNakUzTGpRMkxERTRNUzQ1TWlBeU1Ua3VOak1zTVRnd0xqazFJREl5TVM0M09Td3hPREV1TVRNZ01qSXpMamsxTERFNE1TNDFOeUF5TWpZdU1USXNNVGd3TGpjNElESXlPQzR5T0N3eE56Z3VOellnTWpNd0xqUTBMREUzT0M0ek1pQXlNekl1TmpBc01UYzVMakl3SURJek5DNDNOeXd4T0RBdU5qQWdNak0yTGprekxERTRNaTR3TVNBeU16a3VNRGtzTVRneExqa3lJREkwTVM0eU5pd3hPREV1TkRnZ01qUXpMalF5TERFNE1TNDBPQ0F5TkRVdU5UZ3NNVGd5TGpJM0lESTBOeTQzTkN3eE9ESXVPREFnTWpRNUxqa3hMREUxTnk0M01DQXlOVEl1TURjc056UXVPVFlnTWpVMExqSXpMREUxTkM0ek55QXlOVFl1TXprc01UWTRMakUwSURJMU9DNDFOaXd4TnpNdU1UVWdNall3TGpjeUxERTNOQzQ1T1NBeU5qSXVPRGdzTVRjMUxqZzNJREkyTlM0d05Td3hOekl1TnpFZ01qWTNMakl4TERFM01DNHlOU0F5TmprdU16Y3NNVGMwTGprNUlESTNNUzQxTXl3eE56Y3VNVGdnTWpjekxqY3dMREUwTUM0ek15QXlOelV1T0RZc01UQTVMamc0SURJM09DNHdNaXd4TkRRdU16WWdNamd3TGpFNUxERTJNQzQxTVNBeU9ESXVNelVzTVRZNExqUXhJREk0TkM0MU1Td3hOekl1TURBZ01qZzJMalkzTERFM015NDROU0F5T0RndU9EUXNNVGMwTGprd0lESTVNUzR3TUN3eE56WXVORGdnTWprekxqRTJMREUzTmk0ek1DQXlPVFV1TXpNc01UYzNMak0ySURJNU55NDBPU3d4TnpZdU5EZ2dNams1TGpZMUxERTNOeTR5TnlBek1ERXVPREVzTVRjNExqVXdJRE13TXk0NU9Dd3hOamd1TURZZ016QTJMakUwTERFME9DNDROQ0F6TURndU16QXNNVFkyTGpJeElETXhNQzQwTml3eE56RXVOelFnTXpFeUxqWXpMRE13TGpJeElETXhOQzQzT1N3NE1TNDVPQ0F6TVRZdU9UVXNNVFF4TGpjeklETXhPUzR4TWl3eE5UZ3VORGtnTXpJeExqSTRMREUyTlM0d055QXpNak11TkRRc01UWTVMakl3SURNeU5TNDJNQ3d4TnpFdU5qVWdNekkzTGpjM0xERTNOQzR3TWlBek1qa3VPVE1zTVRjMExqWTBJRE16TWk0d09Td3hOell1TmpVZ016TTBMakkyTERFM05pNDVNaUF6TXpZdU5ESXNNVGMyTGpZMUlETXpPQzQxT0N3eE56RXVOVGNnTXpRd0xqYzBMREUzTkM0Mk5DQXpOREl1T1RFc01UYzJMamd6SURNME5TNHdOeXd4TnpjdU1UZ2dNelEzTGpJekxERTNNeTQwTVNBek5Ea3VOREFzTVRjMExqY3lJRE0xTVM0MU5pd3hOelV1TXpRZ016VXpMamN5TERFM05TNDNPQ0F6TlRVdU9EZ3NNVGMxTGpVeElETTFPQzR3TlN3eE56WXVNVE1nTXpZd0xqSXhMREUzTnk0d01TQXpOakl1TXpjc01UYzNMamc0SURNMk5DNDFNeXd4T0RBdU1UWWdNelkyTGpjd0xERTRNUzR5TWlBek5qZ3VPRFlzTVRnd0xqWTVJRE0zTVM0d01pd3hPREF1TmpBZ016Y3pMakU1TERFNE1TNHlNaUF6TnpVdU16VXNNVGd4TGpVM0lETTNOeTQxTVN3eE9ESXVNVGdnTXpjNUxqWTNMREU0TVM0NU1pQXpPREV1T0RRc01UZ3lMakF4SURNNE5DNHdNQ3d4T0RFdU5EZ2dNemcyTGpFMkxERTRNUzQ0TXlBek9EZ3VNek1zTVRneUxqazFJRE01TUM0ME9Td3hPREl1T0RnZ016a3lMalkxTERFNE1pNHpOaUF6T1RRdU9ERXNNVGd4TGpneklETTVOaTQ1T0N3eE9ESXVNellnTXprNUxqRTBMREU0TWk0ME5TQTBNREV1TXpBc01UZ3lMakU0SURRd015NDBOeXd4T0RNdU1EWWdOREExTGpZekxERTRNaTQ1TWlBME1EY3VOemtzTVRneUxqQXhJRFF3T1M0NU5Td3hPREF1T0RjZ05ERXlMakV5TERFNE1pNDJNaUEwTVRRdU1qZ3NNVGd6TGpJd0lEUXhOaTQwTkN3eE9EUXVOamdnTkRFNExqWXdMREU0TlM0Mk1TQTBNakF1Tnpjc01UZzFMamt3SURReU1pNDVNeXd4T0RVdU5UTWdOREkxTGpBNUxERTRNaTQwTlNBME1qY3VNallzTVRneExqa3lJRFF5T1M0ME1pd3hPREl1TVRnZ05ETXhMalU0TERFNE15NHlNQ0EwTXpNdU56UXNNVGcwTGpNNUlEUXpOUzQ1TVN3eE9EUXVPVFlnTkRNNExqQTNMREU0TkM0NU1TQTBOREF1TWpNc01UZzFMakk0SURRME1pNDBNQ3d4T0RVdU1qWWdORFEwTGpVMkxERTROUzR6TWlBME5EWXVOeklzTVRnMUxqWTFJRFEwT0M0NE9Dd3hPRFV1T1RFZ05EVXhMakExTERFNE5pNHdOQ0EwTlRNdU1qRXNNVGcyTGpFNUlEUTFOUzR6Tnl3eE9EVXVPVEVnTkRVM0xqVTBMREU0TlM0MU9TQTBOVGt1TnpBc01UZzFMamMxSURRMk1TNDROaXd4T0RVdU5EUWdORFkwTGpBeUxERTROQzQxTXlBME5qWXVNVGtzTVRnMExqUTRJRFEyT0M0ek5Td3hPRFF1T0RrZ05EY3dMalV4TERFNE5TNHpNaUEwTnpJdU5qZ3NNVGcyTGpFeElEUTNOQzQ0TkN3eE9EWXVNemtnTkRjM0xqQXdMREU0Tmk0ME15QW5JSE4wZVd4bFBTZHpkSEp2YTJVdGQybGtkR2c2SURFdU1EYzdJSE4wY205clpUb2dJMFk0TnpZMlJEc2djM1J5YjJ0bExXeHBibVZqWVhBNklHSjFkSFE3SnlBdlBnbzhMMmMrQ2p4bklHTnNhWEF0Y0dGMGFEMG5kWEpzS0NOamNFMUROSGROU0hjeFRVUlJkVTFFUWpoTlF6UjNUVWgzZVU1VVNYVk5SRUU5S1NjK0Nqd3ZaejRLUEdSbFpuTStDaUFnUEdOc2FYQlFZWFJvSUdsa1BTZGpjRTFxVlhWTlJHZzRUa1JyTkV4cVZYbG1SRlYxVGtSb09FMXFTWFZPUkVFOUp6NEtJQ0FnSUR4eVpXTjBJSGc5SnpJMUxqQTRKeUI1UFNjMUxqUTRKeUIzYVdSMGFEMG5ORGN6TGpRMEp5Qm9aV2xuYUhROUp6RTJMamt5SnlBdlBnb2dJRHd2WTJ4cGNGQmhkR2crQ2p3dlpHVm1jejRLUEdjZ1kyeHBjQzF3WVhSb1BTZDFjbXdvSTJOd1RXcFZkVTFFYURoT1JHczBUR3BWZVdaRVZYVk9SR2c0VFdwSmRVNUVRVDBwSno0S1BIUmxlSFFnZUQwbk1qWXhMamd3SnlCNVBTY3hOeTR3T1NjZ2RHVjRkQzFoYm1Ob2IzSTlKMjFwWkdSc1pTY2djM1I1YkdVOUoyWnZiblF0YzJsNlpUb2dPQzQ0TUhCNE8yWnBiR3c2SUNNeFFURkJNVUU3SUdadmJuUXRabUZ0YVd4NU9pQWlRWEpwWVd3aU95Y2dkR1Y0ZEV4bGJtZDBhRDBuTkRrdU16UndlQ2NnYkdWdVozUm9RV1JxZFhOMFBTZHpjR0ZqYVc1blFXNWtSMng1Y0doekp6NHdNREEyTUNBb1puUXpMM01wUEM5MFpYaDBQZ284TDJjK0NqeG5JR05zYVhBdGNHRjBhRDBuZFhKc0tDTmpjRTFETkhkTlNIY3hUVVJSZFUxRVFqaE5RelIzVFVoM2VVNVVTWFZOUkVFOUtTYytDangwWlhoMElIZzlKekUxTWk0MU9DY2dlVDBuTWpBMUxqUTNKeUIwWlhoMExXRnVZMmh2Y2owbmJXbGtaR3hsSnlCemRIbHNaVDBuWm05dWRDMXphWHBsT2lBNExqZ3djSGc3Wm1sc2JEb2dJelJFTkVRMFJEc2dabTl1ZEMxbVlXMXBiSGs2SUNKQmNtbGhiQ0k3SnlCMFpYaDBUR1Z1WjNSb1BTY3hOQzR4T1hCNEp5QnNaVzVuZEdoQlpHcDFjM1E5SjNOd1lXTnBibWRCYm1SSGJIbHdhSE1uUGtwaGJqd3ZkR1Y0ZEQ0S1BIUmxlSFFnZUQwbk16UTNMakl6SnlCNVBTY3lNRFV1TkRjbklIUmxlSFF0WVc1amFHOXlQU2R0YVdSa2JHVW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGd1T0RCd2VEdG1hV3hzT2lBak5FUTBSRFJFT3lCbWIyNTBMV1poYldsc2VUb2dJa0Z5YVdGc0lqc25JSFJsZUhSTVpXNW5kR2c5SnpFekxqWTVjSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytRWEJ5UEM5MFpYaDBQZ284ZEdWNGRDQjRQU2N5TUM0eE5TY2dlVDBuTVRrMExqZ3hKeUIwWlhoMExXRnVZMmh2Y2owblpXNWtKeUJ6ZEhsc1pUMG5abTl1ZEMxemFYcGxPaUE0TGpnd2NIZzdabWxzYkRvZ0l6UkVORVEwUkRzZ1ptOXVkQzFtWVcxcGJIazZJQ0pCY21saGJDSTdKeUIwWlhoMFRHVnVaM1JvUFNjMExqZzVjSGduSUd4bGJtZDBhRUZrYW5WemREMG5jM0JoWTJsdVowRnVaRWRzZVhCb2N5YytNRHd2ZEdWNGRENEtQSFJsZUhRZ2VEMG5NakF1TVRVbklIazlKekUxTUM0NU5DY2dkR1Y0ZEMxaGJtTm9iM0k5SjJWdVpDY2djM1I1YkdVOUoyWnZiblF0YzJsNlpUb2dPQzQ0TUhCNE8yWnBiR3c2SUNNMFJEUkVORVE3SUdadmJuUXRabUZ0YVd4NU9pQWlRWEpwWVd3aU95Y2dkR1Y0ZEV4bGJtZDBhRDBuT1M0M09IQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqVXdQQzkwWlhoMFBnbzhkR1Y0ZENCNFBTY3lNQzR4TlNjZ2VUMG5NVEEzTGpBMkp5QjBaWGgwTFdGdVkyaHZjajBuWlc1a0p5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpSRU5FUTBSRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2N4TkM0Mk4zQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqRXdNRHd2ZEdWNGRENEtQSFJsZUhRZ2VEMG5NakF1TVRVbklIazlKell6TGpFNUp5QjBaWGgwTFdGdVkyaHZjajBuWlc1a0p5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN1ptbHNiRG9nSXpSRU5FUTBSRHNnWm05dWRDMW1ZVzFwYkhrNklDSkJjbWxoYkNJN0p5QjBaWGgwVEdWdVozUm9QU2N4TkM0Mk4zQjRKeUJzWlc1bmRHaEJaR3AxYzNROUozTndZV05wYm1kQmJtUkhiSGx3YUhNblBqRTFNRHd2ZEdWNGRENEtQR3hwYm1VZ2VERTlKekkwT1M0M01DY2dlVEU5SnpJek1pNDBNQ2NnZURJOUp6STJNeTQxTXljZ2VUSTlKekl6TWk0ME1DY2djM1I1YkdVOUozTjBjbTlyWlMxM2FXUjBhRG9nTVM0d056c2djM1J5YjJ0bE9pQWpSamczTmpaRU95QnpkSEp2YTJVdGJHbHVaV05oY0RvZ1luVjBkRHNuSUM4K0NqeDBaWGgwSUhnOUp6STNNQzQzTkNjZ2VUMG5Nak0xTGpVMUp5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRMamd3Y0hnN0lHWnZiblF0Wm1GdGFXeDVPaUFpUVhKcFlXd2lPeWNnZEdWNGRFeGxibWQwYUQwbk5DNDRPWEI0SnlCc1pXNW5kR2hCWkdwMWMzUTlKM053WVdOcGJtZEJibVJIYkhsd2FITW5QakU4TDNSbGVIUStDand2Wno0S1BDOW5QZ284TDNOMlp6ND0nIHN0eWxlPSd3aWR0aDo1MDRweDsgbWF4LXdpZHRoOjEwMCU7IGRpc3BsYXk6YmxvY2snIGFsdD0ndGltZSBzZXJpZXMnIC8+PGRpdiBzdHlsZT0nbWFyZ2luLXRvcDo2cHgnPjxhIGhyZWY9J2RhdGE6dGV4dC9jc3Y7YmFzZTY0LEltTnZkbVZ5WVdkbFgybGtJaXdpY0dGeVlXMWxkR1Z5SWl3aWNHRnlZVzFsZEdWeVgyeGhZbVZzSWl3aWRXNXBkQ0lzSW1SaGRHVjBhVzFsSWl3aWVDSXNJbmtpTENKNklpd2lkbUZzZFdVaUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB6TVN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxEVXVPVFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxUTXdMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTmk0d01Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFV0TWprc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTdzJMak15Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05TMHlPQ3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERjdU1qTUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEExTFRJM0xDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNOeTQzTVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EVXRNallzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3NExqRTRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMweU5Td3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRGd1TVRNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEkwTEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc055NHdPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1qTXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3cyTGpjMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB5TWl3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxEWXVPVElLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxUSXhMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTmk0MU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFV0TWpBc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTdzJMakl6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05TMHhPU3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERZdU5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFV0TVRnc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTdzJMalUxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05TMHhOeXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERZdU9EVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEExTFRFMkxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNOeTR5TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EVXRNVFVzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3M0xqSTVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMweE5Dd3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRGN1TWpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEV6TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc055NDJPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1USXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3czTGpZMENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB4TVN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxEZ3VNamtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxURXdMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzT1M0Mk5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFV0TURrc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNQzQ0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05TMHdPQ3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFeExqRUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEExTFRBM0xDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVEF1TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EVXRNRFlzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3MkxqazRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TlMwd05Td3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRFl1TlRZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTFMVEEwTEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc05pNDRPUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURVdE1ETXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3czTGprMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOUzB3TWl3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxEa3VOalFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMUxUQXhMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRBdU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFF0TXpBc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNaTR6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05DMHlPU3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFeENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOQzB5T0N3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxEa3VPVFlLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMExUSTNMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzT1M0NENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOQzB5Tml3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERXdMamdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMExUSTFMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRBdU5Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFF0TWpRc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNQzQyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05DMHlNeXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFeExqSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEEwTFRJeUxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVEF1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EUXRNakVzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE1Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFF0TWpBc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTdzVMamt6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05DMHhPU3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFeExqSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEEwTFRFNExDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVEV1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EUXRNVGNzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFF0TVRZc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNUzR4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05DMHhOU3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFd0xqZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEEwTFRFMExDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVEV1TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EUXRNVE1zTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE1TNDVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TkMweE1pd3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREV5TGpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTBMVEV4TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01USXVOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURRdE1UQXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d4TVM0NUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdOQzB3T1N3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERXpMakVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBMExUQTRMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRVdU53b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRFF0TURjc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hOaTQzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd05DMHdOaXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFM0xqY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEEwTFRBMUxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVGd1TkFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1EUXRNRFFzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE9DNHhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TkMwd015d3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREU0TGpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQTBMVEF5TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01Ua3VNd29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURRdE1ERXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d5TUM0NENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNeTB6TVN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERTJMalVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBekxUTXdMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRZdU9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRE10TWprc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hPUzQwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd015MHlPQ3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERJeUxqa0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF6TFRJM0xDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVGN1TVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ETXRNallzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE5pNDRDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TXkweU5Td3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREUzTGpFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXpMVEkwTEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01Ua3VOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURNdE1qTXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d5TUM0eENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNeTB5TWl3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxESXlMamdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBekxUSXhMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTWpVdU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRE10TWpBc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3pNQzR6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd015MHhPU3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERNM0xqZ0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF6TFRFNExDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNOVFl1T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ETXRNVGNzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE1qVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF6TFRFMkxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVGcwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd015MHhOU3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERJeUxqY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF6TFRFMExDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNamtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBekxURXpMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTkRndU9Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRE10TVRJc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3lOaTQ1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd015MHhNU3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNeTB4TUN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERTJMalFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBekxUQTVMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRjdU13b2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNRE10TURnc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hOaTR6Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd015MHdOeXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFM0xqVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF6TFRBMkxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVGN1TXdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ETXRNRFVzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE9TNHhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TXkwd05Dd3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREl3TGpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXpMVEF6TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01qSXVOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURNdE1ESXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d5Tmk0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNeTB3TVN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxETTFMalVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeUxUSTRMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTlRNdU9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREl0TWpjc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTdzVNeTR5Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01pMHlOaXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERVNExqVUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF5TFRJMUxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVFl1TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ESXRNalFzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE9Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREl0TWpNc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3lOQzQwQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01pMHlNaXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERJeExqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF5TFRJeExDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVGdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeUxUSXdMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRrS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXlMVEU1TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01qRXVNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURJdE1UZ3NMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d5Tmk0NENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNaTB4Tnl3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxEUXlMalVLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeUxURTJMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRNekNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNaTB4TlN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxETTRMamNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeUxURTBMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRBdU1Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREl0TVRNc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNQzQzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01pMHhNaXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFeExqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF5TFRFeExDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVEV1TmdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ESXRNVEFzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE1TNHhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TWkwd09Td3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREV4Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01pMHdPQ3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFeUxqWUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF5TFRBM0xDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVFF1TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ESXRNRFlzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE5TNHlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TWkwd05Td3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREUwTGpjS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXlMVEEwTEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01USXVOQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURJdE1ETXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d4TVM0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNaTB3TWl3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERXlDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TWkwd01Td3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREV5TGpJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXhMVE14TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01URXVNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURFdE16QXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d4TUM0NUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNUzB5T1N3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERXhMalFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeExUSTRMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRJdU5Bb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREV0TWpjc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNeTQ0Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01TMHlOaXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFekxqY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF4TFRJMUxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVEV1TndvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ERXRNalFzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE1DNHhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TVMweU15d3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREV3TGpZS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXhMVEl5TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01UQXVPQW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURFdE1qRXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d4TVM0NENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNUzB5TUN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERXlMamdLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeExURTVMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRNdU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREV0TVRnc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNUzQyQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01TMHhOeXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFd0xqSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF4TFRFMkxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVEF1T1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ERXRNVFVzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE1DNDNDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TVMweE5Dd3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRGt1T0RJS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXhMVEV6TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01UQXVOZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURFdE1USXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d4TWk0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5pMHdNUzB4TVN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERTVMamNLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkyTFRBeExURXdMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRJdU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qWXRNREV0TURrc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNQzQxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5Tmkwd01TMHdPQ3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFd0xqRUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTJMVEF4TFRBM0xDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNPUzQzTVFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ERXRNRFlzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3NUxqTXhDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TVMwd05Td3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRGt1TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpZdE1ERXRNRFFzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3NUxqY3hDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOaTB3TVMwd015d3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRGt1TmpNS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMkxUQXhMVEF5TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc09TNDJNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNall0TURFdE1ERXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d4TUM0eENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNaTB6TVN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERXdMalFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeUxUTXdMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRBdU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEl0TWprc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNQzQxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5TlMweE1pMHlPQ3d0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFd0xqY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV5TFRJM0xDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVEV1TWdvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1USXRNallzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE1TNDBDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TWkweU5Td3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREV4TGpRS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXlMVEkwTEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01URUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV5TFRJekxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVEF1T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1USXRNaklzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3eE1pNDJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TWkweU1Td3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMREUwTGpnS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXlMVEl3TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc01qQUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV5TFRFNUxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVFl1T0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1USXRNVGdzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3NUxqUTJDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TWkweE55d3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRGt1TWpVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXlMVEUyTEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc09DNDRNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRJdE1UVXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3d4TUM0MUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNaTB4TkN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxEa3VORGtLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeUxURXpMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRBS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXlMVEV5TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc09TNDFOUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRJdE1URXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3c1TGpreENpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNaTB4TUN3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxERXdMallLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeUxUQTVMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRFdU1nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEl0TURnc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNQzQzQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5TlMweE1pMHdOeXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFeExqSUtJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV5TFRBMkxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVE1LSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeUxUQTFMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTVRJdU5nb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEl0TURRc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTd3hNeTQxQ2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5TlMweE1pMHdNeXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERFMkxqa0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV5TFRBeUxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNNVFF1TlFvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1USXRNREVzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3M0xqZzFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TVMwek1Dd3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRGd1TURrS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXhMVEk1TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc055NDROZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRFdE1qZ3NMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3czTGprMUNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNUzB5Tnl3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxEZ3VNaklLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeExUSTJMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzT0FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1URXRNalVzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3M0xqVTVDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TVMweU5Dd3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRGN1T1RVS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXhMVEl6TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc055NDNNUW9pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRFdE1qSXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3c0TGpFS0lqRWlMQ0l3TURBMk1DSXNJa1JwYzJOb1lYSm5aU0lzSW1aME15OXpJaXd5TURJMUxURXhMVEl4TEMwM09TNHdPVFUxTlRVMU5UVTFOVFUxTERNMkxqQTNNVEV4TVRFeE1URXhNVEVzVGtFc09DNDBNZ29pTVNJc0lqQXdNRFl3SWl3aVJHbHpZMmhoY21kbElpd2lablF6TDNNaUxESXdNalV0TVRFdE1qQXNMVGM1TGpBNU5UVTFOVFUxTlRVMU5UVXNNell1TURjeE1URXhNVEV4TVRFeE1TeE9RU3cyTGpnMkNpSXhJaXdpTURBd05qQWlMQ0pFYVhOamFHRnlaMlVpTENKbWRETXZjeUlzTWpBeU5TMHhNUzB4T1N3dE56a3VNRGsxTlRVMU5UVTFOVFUxTlN3ek5pNHdOekV4TVRFeE1URXhNVEV4TEU1QkxEY3VOVFFLSWpFaUxDSXdNREEyTUNJc0lrUnBjMk5vWVhKblpTSXNJbVowTXk5eklpd3lNREkxTFRFeExURTRMQzAzT1M0d09UVTFOVFUxTlRVMU5UVTFMRE0yTGpBM01URXhNVEV4TVRFeE1URXNUa0VzTnk0d01Rb2lNU0lzSWpBd01EWXdJaXdpUkdselkyaGhjbWRsSWl3aVpuUXpMM01pTERJd01qVXRNVEV0TVRjc0xUYzVMakE1TlRVMU5UVTFOVFUxTlRVc016WXVNRGN4TVRFeE1URXhNVEV4TVN4T1FTdzRMakE1Q2lJeElpd2lNREF3TmpBaUxDSkVhWE5qYUdGeVoyVWlMQ0ptZERNdmN5SXNNakF5TlMweE1TMHhOaXd0TnprdU1EazFOVFUxTlRVMU5UVTFOU3d6Tmk0d056RXhNVEV4TVRFeE1URXhMRTVCTERndU5UY0tJakVpTENJd01EQTJNQ0lzSWtScGMyTm9ZWEpuWlNJc0ltWjBNeTl6SWl3eU1ESTFMVEV4TFRFMUxDMDNPUzR3T1RVMU5UVTFOVFUxTlRVMUxETTJMakEzTVRFeE1URXhNVEV4TVRFc1RrRXNOeTQyT1FvaU1TSXNJakF3TURZd0lpd2lSR2x6WTJoaGNtZGxJaXdpWm5RekwzTWlMREl3TWpVdE1URXRNVFFzTFRjNUxqQTVOVFUxTlRVMU5UVTFOVFVzTXpZdU1EY3hNVEV4TVRFeE1URXhNU3hPUVN3M0xqZzFDaUl4SWl3aU1EQXdOakFpTENKRWFYTmphR0Z5WjJVaUxDSm1kRE12Y3lJc01qQXlOUzB4TVMweE15d3ROemt1TURrMU5UVTFOVFUxTlRVMU5Td3pOaTR3TnpFeE1URXhNVEV4TVRFeExFNUJMRGN1TkRFPScgZG93bmxvYWQ9J3N0YXRpb24tVVNHUy0wMjA4NTAwMC5jc3YnPkRvd25sb2FkIENTVjxcL2E+PFwvZGl2PjxcL2Rpdj4iXSx7Im1heFdpZHRoIjo1NTIsIm1pbldpZHRoIjo1MCwiYXV0b1BhbiI6dHJ1ZSwia2VlcEluVmlldyI6ZmFsc2UsImNsb3NlQnV0dG9uIjp0cnVlLCJjbGFzc05hbWUiOiIifSxbIlRBUiBSSVZFUiBORUFSIFRBUiBSSVZFUiwgTkMiLCJUQVIgUklWRVIgQVQgTE9VSVNCVVJHLCBOQyIsIlRBUiBSIEFUIFVTIDQwMSBBVCBMT1VJU0JVUkcsIE5DIiwiQ0VEQVIgQ1JFRUsgTkVBUiBMT1VJU0JVUkcsIE5DIiwiREVWSUxTIENSQURMRSBDIEFUIE5DIDM5IE5SIEtFQVJORVksIE5DIiwiU0VWRU5NSUxFIENSRUVLIFRSSUIgQVQgU1IxMTIwIE5SIEJVQ0tIT1JOLCBOQyIsIlNFVkVOTUlMRSBDUkVFSyBUUklCIEFUIEktODUgTlIgRUZMQU5ELCBOQyIsIlNFVkVOTUlMRSBDUkVFSyBOUiBFRkxBTkQsIE5DIiwiRU5PIFJJVkVSIEFUIEhJTExTQk9ST1VHSCwgTkMiXSx7ImludGVyYWN0aXZlIjpmYWxzZSwicGVybWFuZW50IjpmYWxzZSwiZGlyZWN0aW9uIjoiYXV0byIsIm9wYWNpdHkiOjEsIm9mZnNldCI6WzAsMF0sInRleHRzaXplIjoiMTBweCIsInRleHRPbmx5IjpmYWxzZSwiY2xhc3NOYW1lIjoiIiwic3RpY2t5Ijp0cnVlfSxudWxsXX0seyJtZXRob2QiOiJhZGRMZWdlbmQiLCJhcmdzIjpbeyJjb2xvcnMiOlsiIzJDN0ZCOCIsIiNCQkJCQkIiXSwibGFiZWxzIjpbIkhhcyBkYXRhIiwiTm8gZGF0YSBpbiB3aW5kb3ciXSwibmFfY29sb3IiOm51bGwsIm5hX2xhYmVsIjoiTkEiLCJvcGFjaXR5IjowLjksInBvc2l0aW9uIjoiYm90dG9tcmlnaHQiLCJ0eXBlIjoidW5rbm93biIsInRpdGxlIjoiU3RhdGlvbnMiLCJleHRyYSI6bnVsbCwibGF5ZXJJZCI6bnVsbCwiY2xhc3NOYW1lIjoiaW5mbyBsZWdlbmQiLCJncm91cCI6bnVsbH1dfV0sImxpbWl0cyI6eyJsYXQiOlszNi4wNDk4NjE4NTczNjcsMzYuMjEzMjA0MTUxNjc4XSwibG5nIjpbLTc5LjE4NzUxNDg3ODUzNDgsLTc4LjI5NjExMTExMTExMTFdfSwiZml0Qm91bmRzIjpbMzYuMDQ5ODYxODU3MzY3LC03OS4xODc1MTQ4Nzg1MzQ4LDM2LjIxMzIwNDE1MTY3OCwtNzguMjk2MTExMTExMTExMSxbXV19LCJldmFscyI6W10sImpzSG9va3MiOltdfTwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2h0bWx3aWRnZXQtc2l6aW5nIiBkYXRhLWZvcj0iaHRtbHdpZGdldC1kMWUwODk1ZmY0ZmE0MzcxZGQ1ZiI+eyJ2aWV3ZXIiOnsid2lkdGgiOiIxMDAlIiwiaGVpZ2h0Ijo0MDAsInBhZGRpbmciOjAsImZpbGwiOnRydWV9LCJicm93c2VyIjp7IndpZHRoIjoiMTAwJSIsImhlaWdodCI6NDAwLCJwYWRkaW5nIjowLCJmaWxsIjp0cnVlfX08L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==" width="100%" height="520" style="border:1px solid #ddd;"></iframe>

Click any blue marker to open the popup. The Jan–May 2026 streamflow
plot is inline; the "Download CSV" link delivers that gauge's series.

To save the same map to a standalone HTML file:


``` r
edr_save_html(m, "triangle-streamgages.html")
```

## A few things worth knowing about the USGS endpoint

- `daily-edr` only advertises the `locations` query. The other EDR
  verbs (`cube`, `area`, `position`, ...) return HTTP errors. The
  per-station fallback works fine for tens of gauges; for hundreds
  consider pre-filtering aggressively with `bbox =`.
- `datetime` is **not honoured** on `/locations/{id}` requests -- the
  server returns the latest `limit` records regardless. Pass enough
  `limit` to cover your window, then filter client-side.
- The station id format is `"USGS-<NWIS-id>"`. The bare NWIS id
  (`"02087500"`) doesn't work; pass the full `"USGS-..."` form, which
  is what `edr_locations()` returns in its `id` column.
- The 44-column attribute table on `gauges` carries a lot of useful
  metadata (`drainage_area`, `state_name`, `hydrologic_unit_code`,
  `altitude`, ...). Use it to filter or label before mapping.
- Pass `label_col = "monitoring_location_name"` to `edr_map()` so
  popup titles read "BUFFALO CREEK NEAR FALLS, NC" instead of the
  raw `USGS-02087183` id.

## See also

- `vignette("getting-started")` -- same workflow against the Western
  Water Datahub, which advertises `cube` for fast bulk fetches.
- The
  [USGS NWIS parameter code dictionary](https://waterdata.usgs.gov/code-dictionary)
  for picking the right `parameter_code`.
