library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(WDI)
Mô tả về bộ dữ
liệu từ WORLD BANK
Tên indicator: Literacy rate, adult total (% of people ages 15
and above) - Tỷ lệ biết chữ, tổng số người trưởng thành (% số người từ
15 tuổi trở lên)
Code: SE.ADT.LITR.ZS
Gồm 16758 quan sát và 5 biến.
Định nghĩa dài: Tỷ lệ người lớn biết chữ là phần trăm số người từ
15 tuổi trở lên có thể đọc và viết và hiểu một câu nói ngắn gọn, đơn
giản về cuộc sống hàng ngày của họ.
Khái niệm và phương pháp thống kê: Thống kê về mù chữ ở hầu hết
các quốc gia bao gồm dân số từ 15 tuổi trở lên, nhưng một số quốc gia
bao gồm các độ tuổi trẻ hơn hoặc bị giới hạn ở các độ tuổi có xu hướng
làm tăng tỷ lệ biết chữ. Tỷ lệ biết chữ của thanh niên trong độ tuổi
15-24 phản ánh những tiến bộ gần đây trong giáo dục. Nó đo lường kết quả
tích lũy của giáo dục tiểu học trong khoảng 10 năm trước đó bằng cách
chỉ ra tỷ lệ dân số đã học qua hệ thống giáo dục tiểu học và có được các
kỹ năng đọc viết và tính toán cơ bản. Nói chung, khả năng đọc viết cũng
bao gồm khả năng tính toán, khả năng thực hiện các phép tính số học đơn
giản. Dữ liệu về tỷ lệ biết chữ được Viện Thống kê UNESCO tổng hợp dựa
trên các cuộc điều tra dân số quốc gia và khảo sát hộ gia đình, đồng
thời đối với các quốc gia không có dữ liệu về tỷ lệ biết chữ gần đây, sử
dụng Mô hình dự báo tỷ lệ biết chữ theo từng độ tuổi toàn cầu
(GALP).
Mức độ phù hợp với phát triển: Tỷ lệ biết chữ là một chỉ số kết
quả để đánh giá trình độ học vấn. Dữ liệu này có thể dự đoán chất lượng
lực lượng lao động trong tương lai và có thể được sử dụng trong việc đảm
bảo các chính sách về kỹ năng sống cho nam giới và phụ nữ. Nó cũng có
thể được sử dụng như một công cụ đại diện để xem xét tính hiệu quả của
hệ thống giáo dục; tỷ lệ biết đọc biết viết cao cho thấy khả năng của
một hệ thống giáo dục trong việc cung cấp cơ hội cho một lượng lớn dân
số có được kỹ năng đọc viết. Thành tích tích lũy được của giáo dục là
nền tảng cho sự phát triển trí tuệ và phát triển kinh tế xã hội hơn nữa,
mặc dù nó không nhất thiết đảm bảo chất lượng giáo dục. Phụ nữ biết chữ
ngụ ý rằng họ có thể tìm kiếm và sử dụng thông tin để cải thiện sức
khỏe, dinh dưỡng và giáo dục của các thành viên trong gia đình. Phụ nữ
biết chữ cũng được trao quyền để đóng một vai trò có ý nghĩa.
Những hạn chế và ngoại lệ: Trong thực tế, khả năng đọc viết rất
khó đo lường. Việc ước tính tỷ lệ biết chữ đòi hỏi phải thực hiện các
cuộc điều tra dân số hoặc đo đạc khảo sát trong những điều kiện được
kiểm soát. Nhiều quốc gia báo cáo số người biết chữ từ dữ liệu tự báo
cáo. Một số sử dụng dữ liệu về trình độ học vấn làm đại diện nhưng áp
dụng thời gian đi học hoặc mức độ hoàn thành khác nhau. Ant có xu hướng
trong các cuộc khảo sát quốc gia và quốc tế gần đây là sử dụng bài kiểm
tra đọc trực tiếp về kỹ năng đọc viết. Do các định nghĩa và phương pháp
thu thập dữ liệu khác nhau giữa các quốc gia nên dữ liệu cần được sử
dụng một cách thận trọng.
adt <- WDI(indicator = 'SE.ADT.LITR.ZS')
library(DT)
## Warning: package 'DT' was built under R version 4.3.3
datatable(adt)
## Warning in instance$preRenderHook(instance): It seems your data is too big for
## client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html
Phân tích dữ
liệu theo thời gian
- Giả sử chọn nước VIỆT NAM để phân tích.
se <- WDI(indicator = 'SE.ADT.LITR.ZS', country = c('VNM'))
datatable(se)
d <- se %>% select(year,SE.ADT.LITR.ZS)
d <- na.omit(d)
names(d) <- c('year','Phantram')
datatable(d)
Biểu đồ thể
hiện tỷ lệ phần trăm biết chữ giai đoạn 1979 - 1999.
library(dplyr)
d1 <- d %>% filter( year >= 1979 & year <= 1999 )
library(ggplot2)
d1 %>% ggplot(aes(x = year, y = Phantram)) +
geom_line(color = "black") +
geom_point(color = "red") +
labs(title = "Biểu đồ thể hiện tỷ lệ phần trăm biết chữ giai đoạn 1979 - 1999", x = "Năm", y = "Phần trăm")

Nhận xét:
Tỷ lệ biết chữ năm 1979: 83.8%
Tỷ lệ biết chữ năm 1989: 87.6%
Tỷ lệ biết chữ năm 1999: 90.3%
Tỷ lệ biết chữ tăng dần qua các năm trong giai đoạn
1979-1999.
Mức tăng trung bình khoảng 3% mỗi năm.
Sự gia tăng này thể hiện nỗ lực của Đảng và Nhà nước trong việc
xóa mù chữ:
Mở rộng mạng lưới trường học
Nâng cao chất lượng giáo dục
Phổ cập giáo dục cho mọi lứa tuổi
Coi trọng công tác xóa mù chữ
=> Kết luận: Tỷ lệ biết chữ của Việt Nam trong
giai đoạn 1979-1999 có sự gia tăng đáng kể là kết quả của nhiều yếu tố,
bao gồm chính sách giáo dục hiệu quả, nhu cầu học tập cao của người dân,
sự hỗ trợ của các tổ chức xã hội và sự phát triển kinh tế.
Biểu đồ thể
hiện tỷ lệ phần trăm biết chữ giai đoạn 1999 - 2019.
d2 <- d %>% filter( year >= 1999 & year <= 2019)
d2 %>% ggplot(aes(x = year, y = Phantram)) +
geom_line(color = "black") +
geom_point(color = "red") +
labs(title = "Biểu đồ thể hiện tỷ lệ phần trăm biết chữ giai đoạn 1999 - 2019", x = "Năm", y = "Phần trăm")

Nhận xét:
Tỷ lệ biết chữ năm 1999: 90.3%
Tỷ lệ biết chữ năm 2000: 90.1%
Tỷ lệ biết chữ năm 2009: 93.5%
Tỷ lệ biết chữ năm 2019: 95.8%
Sự chênh lệch nhẹ giữa các năm: tốc độ tăng không đồng
đều.
=> Kết luận: Tỷ lệ biết chữ của Việt Nam đã tăng
đáng kể trong giai đoạn 1999-2019, thể hiện sự nỗ lực của Chính phủ
trong việc xóa mù chữ và nâng cao trình độ dân trí.Và tốc độ tăng nhanh
hơn sau năm 2009 cho thấy những chính sách giáo dục hiệu quả và sự quan
tâm của xã hội đối với vấn đề giáo dục.
Mô tả về bộ dữ
liệu từ IMF
Tên bộ dữ liệu: Fiscal Monitor (FM)
Cơ quan Giám sát Tài chính khảo sát và phân tích những diễn biến
mới nhất về tài chính công, cập nhật các tác động tài chính của cuộc
khủng hoảng và các dự báo tài chính trung hạn, đồng thời đánh giá các
chính sách nhằm đưa tài chính công vào một nền tảng bền vững.
Phạm vi tạm thời: Dữ liệu Giám sát Tài chính được trình bày theo
tần suất hàng năm.
Phạm vi địa lý: Cơ sở dữ liệu của Fiscal Monitor bao gồm 115 quốc
gia và một số khu vực tổng hợp.
Phạm vi ngành: Chính phủ nói chung và khu vực công
Tính kịp thời: Cơ sở dữ liệu Giám sát Tài chính được Vụ Tài chính
của IMF cập nhật hai lần một năm.
Phương pháp luận: Cơ quan Giám sát Tài chính khảo sát và phân
tích những diễn biến tài chính công mới nhất, cập nhật các tác động tài
chính của cuộc khủng hoảng và các dự báo tài chính trung hạn, đồng thời
đánh giá các chính sách nhằm đưa tài chính công vào một nền tảng bền
vững.
Dữ liệu và dự báo cụ thể theo quốc gia về các biến số tài chính
chính được dựa trên cơ sở dữ liệu Triển vọng Kinh tế Thế giới tháng 4
năm 2020, trừ khi có quy định khác và do nhân viên IMF tổng hợp. Dữ liệu
lịch sử và các dự báo dựa trên thông tin được thu thập bởi các quan chức
bộ phận quốc gia của IMF trong bối cảnh nhiệm vụ của họ và thông qua
phân tích liên tục của họ về tình hình đang phát triển ở mỗi quốc gia;
chúng được cập nhật liên tục khi có thêm thông tin. Sự phá vỡ cấu trúc
trong dữ liệu có thể được điều chỉnh để tạo ra chuỗi trơn tru thông qua
ghép nối và các kỹ thuật khác. Các ước tính của nhân viên IMF đóng vai
trò là đại diện khi không có thông tin đầy đủ. Do đó, dữ liệu Giám sát
tài chính có thể khác với dữ liệu chính thức ở các nguồn khác, bao gồm
cả Thống kê tài chính quốc tế của IMF.
Việc phân loại quốc gia trong Giám sát tài chính chia thế giới
thành ba nhóm chính: 35 nền kinh tế tiên tiến, 40 nền kinh tế thị trường
mới nổi và thu nhập trung bình, và 40 quốc gia đang phát triển có thu
nhập thấp. Bảy nền kinh tế tiên tiến lớn nhất được đo bằng GDP (Canada,
Pháp, Đức, Ý, Nhật Bản, Vương quốc Anh, Hoa Kỳ) tạo thành nhóm nhỏ của
các nền kinh tế tiên tiến lớn, thường được gọi là Nhóm Bảy (G7). Các
thành viên của khu vực đồng euro cũng được phân biệt thành một nhóm nhỏ.
Dữ liệu tổng hợp trình bày trong các bảng dành cho khu vực đồng euro bao
gồm các thành viên hiện tại trong tất cả các năm, mặc dù số lượng thành
viên đã tăng lên theo thời gian. Dữ liệu của hầu hết các quốc gia thành
viên Liên minh Châu Âu đã được sửa đổi sau khi áp dụng Hệ thống Tài
khoản Quốc gia và Khu vực Châu Âu mới (ESA 2010). Các quốc gia đang phát
triển có thu nhập thấp (LIDC) là các quốc gia có mức thu nhập bình quân
đầu người dưới một ngưỡng nhất định (hiện được đặt ở mức 2.700 USD vào
năm 2016 được đo bằng phương pháp Atlas của Ngân hàng Thế giới), các đặc
điểm cơ cấu phù hợp với trình độ phát triển hạn chế và chuyển đổi cơ
cấu, và các yếu tố bên ngoài. các mối liên kết tài chính chưa đủ chặt
chẽ để được coi là nền kinh tế thị trường mới nổi. Zimbabwe được đưa vào
nhóm. Các nền kinh tế thị trường mới nổi và thu nhập trung bình bao gồm
những nền kinh tế không được phân loại là nền kinh tế tiên tiến hoặc các
nước đang phát triển có thu nhập thấp.
Hầu hết dữ liệu tài chính đề cập đến chính phủ nói chung ở các
nền kinh tế tiên tiến, trong khi đối với các thị trường mới nổi và các
nền kinh tế đang phát triển, dữ liệu thường chỉ đề cập đến chính phủ
trung ương hoặc chính quyền trung ương chịu trách nhiệm về ngân sách (để
biết chi tiết cụ thể, xem Bảng B–D). Tất cả dữ liệu tài chính đều được
tính theo năm dương lịch, ngoại trừ trường hợp của Bangladesh, Ai Cập,
Ethiopia, Haiti, Đặc khu hành chính Hồng Kông, Ấn Độ, Cộng hòa Hồi giáo
Iran, Myanmar, Nepal, Pakistan, Singapore và Thái Lan. đề cập đến năm
tài chính.
Dữ liệu tổng hợp cho các nhóm quốc gia là giá trị trung bình có
trọng số của dữ liệu từng quốc gia, trừ khi có quy định khác. Dữ liệu
được tính trọng số theo GDP danh nghĩa hàng năm được chuyển đổi sang đô
la Mỹ theo tỷ giá hối đoái trung bình trên thị trường tính theo tỷ lệ
trong GDP của nhóm.
Ở nhiều quốc gia, dữ liệu tài chính tuân theo Cẩm nang Thống kê
Tài chính Chính phủ năm 2014 của IMF. Cán cân tài chính tổng thể đề cập
đến cho vay ròng (+) và vay (-) của chính phủ nói chung. Tuy nhiên,
trong một số trường hợp, cán cân tổng thể đề cập đến tổng doanh thu và
viện trợ trừ đi tổng chi tiêu và cho vay ròng.
Dữ liệu tổng nợ tài chính và nợ ròng được báo cáo trong Giám sát
tài chính được lấy từ các nguồn dữ liệu chính thức và ước tính của nhân
viên IMF. Mặc dù chúng tôi nỗ lực điều chỉnh dữ liệu tổng nợ và nợ ròng
với các định nghĩa trong Cẩm nang Thống kê Tài chính Chính phủ của IMF,
do hạn chế về dữ liệu hoặc hoàn cảnh cụ thể của quốc gia, những dữ liệu
này đôi khi có thể đi chệch khỏi các định nghĩa chính thức. Mặc dù mọi
nỗ lực đều được thực hiện để đảm bảo dữ liệu về nợ phù hợp và có thể so
sánh được trên phạm vi quốc tế,
Tên indicator: GGR_G01_GDP_PT
Bộ dữ liệu “Revenue (% of GDP)” (GGR_G01_GDP_PT) thuộc Quỹ Tiền
tệ Quốc tế (IMF) cung cấp thông tin về tỷ lệ doanh thu so với GDP của
một quốc gia, được đo bằng phần trăm.
Ứng dụng:
Phân tích hiệu quả hoạt động của chính phủ trong việc huy động
nguồn thu.
So sánh khả năng tài chính của các quốc gia khác nhau.
Đánh giá tác động của các chính sách thuế và chi tiêu của chính
phủ.
Dự báo xu hướng thu nhập của chính phủ trong tương lai.
library(tidyverse)
library(imf.data)
## Warning: package 'imf.data' was built under R version 4.3.3
tna <- load_datasets('FM')
tn <- tna$get_series(freq = 'A', ref_area = 'VN', indicator = 'GGR_G01_GDP_PT')
names(tn) <- c('Năm','Phantram')
tn <- na.omit(tn)
datatable(tn)
Phân tích dữ
liệu theo thời gian
Biểu đồ thể
hiện tỷ lệ doanh thu so với GDP của nước Việt Nam giai đoạn
1999-2008
tn1 <- tn %>% filter( Năm >= 1999 & Năm <= 2008)
ggplot(data = tn1, aes(x = Năm, y = Phantram)) +
geom_col(fill = "pink", color = "black") +
labs(x = "Năm",y = "Phần trăm") +
ggtitle("Tỷ lệ doanh thu so với GDP của nước Việt Nam giai đoạn 1999-2008") +
theme_minimal() + theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

Nhận xét:
Tăng trưởng: Tỷ lệ doanh thu so với GDP có xu hướng tăng trong
giai đoạn 1999-2008, từ 15.45% năm 1999 lên 20.93% năm 2008.
Biến động: Tuy nhiên, xu hướng này không đồng đều mà có biến động
theo từng năm.
Tăng trưởng mạnh trong giai đoạn 1999-2003 (từ 15.45% lên
19.64%).
Giảm nhẹ trong giai đoạn 2004-2005 (từ 19.64% xuống
19.29%).
Tăng trở lại và đạt đỉnh cao nhất trong giai đoạn 2006-2008 (từ
19.67% lên 20.93%).
=> Kết luận: Tỷ lệ doanh thu so với GDP của Việt
Nam đã tăng đáng kể trong giai đoạn 1999-2008, phản ánh sự phát triển
kinh tế và hiệu quả thu ngân sách được cải thiện. Tuy nhiên, cần tiếp
tục hoàn thiện hệ thống thuế, tăng cường quản lý thu thuế để đảm bảo
nguồn thu cho ngân sách nhà nước phục vụ cho phát triển kinh tế - xã
hội.
Biểu đồ thể
hiện tỷ lệ doanh thu so với GDP của nước Việt Nam giai đoạn
2009-2018
tn2 <- tn %>% filter( Năm >= 2009 & Năm <= 2018)
ggplot(data = tn2, aes(x = Năm, y = Phantram)) +
geom_col(fill = "pink", color = "black") +
labs(x = "Năm",y = "Phần trăm") +
ggtitle("Tỷ lệ doanh thu so với GDP của nước Việt Nam giai đoạn 2009-2018") +
theme_minimal() + theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

Nhận xét:
Xu hướng chung:
Giai đoạn cụ thể:
2009-2011: Tỷ lệ doanh thu giảm nhẹ do ảnh hưởng của khủng hoảng
kinh tế toàn cầu.
2012-2013: Tỷ lệ doanh thu ổn định do chính phủ thực hiện các
biện pháp thu hút đầu tư, thúc đẩy kinh tế.
2014-2016: Tỷ lệ doanh thu giảm tiếp do giá dầu thô giảm mạnh,
ảnh hưởng đến xuất khẩu và thu ngân sách nhà nước.
2017-2018: Tỷ lệ doanh thu tăng nhẹ do kinh tế vĩ mô ổn định, thu
hút đầu tư nước ngoài gia tăng.
=> Kết luận:
Tỷ lệ doanh thu so với GDP của Việt Nam có xu hướng giảm trong
giai đoạn 2009-2018.
Nhiều yếu tố ảnh hưởng đến tỷ lệ này, bao gồm yếu tố vĩ mô, chính
sách và thể chế.
Cần tiếp tục cải thiện môi trường kinh tế, hoàn thiện hệ thống
pháp luật, và nâng cao hiệu quả quản lý để tăng thu ngân sách nhà
nước.
Biểu đồ thể
hiện tỷ lệ doanh thu so với GDP của nước Việt Nam giai đoạn
2019-2028
tn3 <- tn %>% filter( Năm >= 2019 & Năm <= 2028)
ggplot(data = tn3, aes(x = Năm, y = Phantram)) +
geom_col(fill = "pink", color = "black") +
labs(x = "Năm",y = "Phần trăm") +
ggtitle("Tỷ lệ doanh thu so với GDP của nước Việt Nam giai đoạn 2019-2028") +
theme_minimal() + theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

Nhận xét:
Xu hướng chung:
Tỷ lệ doanh thu so với GDP của Việt Nam có xu hướng giảm trong
giai đoạn 2019-2023, từ 19.41% năm 2019 xuống 18.39% năm 2023.
Tuy nhiên, dự kiến tỷ lệ này sẽ tăng nhẹ trong giai đoạn
2024-2028, đạt 19.43% vào năm 2028.
Phân tích giai đoạn:
2019: Tỷ lệ doanh thu đạt 19.41%, cao nhất trong giai
đoạn.
2020-2023:
2020: Giảm xuống 18.39% do ảnh hưởng của đại dịch
COVID-19.
2021: Tăng nhẹ lên 18.71%.
2022: Tăng tiếp tục lên 19.03%.
2023: Giảm nhẹ xuống 18.39%.
2024-2028: Dự kiến tăng nhẹ, đạt 19.43% vào năm 2028.
=> Kết luận:
Tỷ lệ doanh thu so với GDP của Việt Nam có xu hướng giảm trong
giai đoạn 2019-2023 do ảnh hưởng của nhiều yếu tố.
Dự kiến tỷ lệ này sẽ tăng nhẹ trong giai đoạn 2024-2028.
Cần tiếp tục thực hiện các giải pháp để nâng cao hiệu quả thu
thuế, cắt giảm chi tiêu, phát triển kinh tế, từ đó gia tăng nguồn thu
cho ngân sách nhà nước.
Các yếu tố
ảnh hưởng.
Yếu tố vĩ mô:
Tăng trưởng kinh tế: Tăng trưởng GDP cao trong giai đoạn này
(trung bình 7.5%/năm) là yếu tố chính thúc đẩy tăng trưởng doanh
thu.
Cải cách thuế: Việc cải cách hệ thống thuế, đơn giản hóa thủ tục
hành chính, tăng cường quản lý thu thuế đã góp phần nâng cao hiệu quả
thu ngân sách.
Mở rộng hội nhập kinh tế: Việt Nam gia nhập WTO năm 2007, thúc
đẩy xuất khẩu, thu hút đầu tư nước ngoài, từ đó gia tăng nguồn thu cho
ngân sách.
Yếu tố vi mô:
Nâng cao thu nhập: Thu nhập bình quân đầu người của Việt Nam tăng
đáng kể trong giai đoạn này, dẫn đến tăng thu thuế thu nhập cá
nhân.
Mở rộng hoạt động kinh tế: Nền kinh tế tư nhân phát triển mạnh
mẽ, đóng góp lớn vào nguồn thu thuế. Chống tham nhũng: Nỗ lực chống tham
nhũng, thất thu thuế giúp cải thiện hiệu quả thu ngân sách.
Yếu tố thể chế:
LS0tDQp0aXRsZTogIk5ISeG7hk0gVuG7pCA2Ig0KYXV0aG9yOiAiVHLhuqduIE5o4bqtdCBMaW5oIg0KZGF0ZTogIlwiYHIgZm9ybWF0KFN5cy50aW1lKCksICclSDolTTolUywgJWQgLSAlbSAtICVZJylgXCIiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50OiANCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdG9jX2Zsb2F0X3BsYWNlbWVudDogcmlnaHQNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQpgYGAge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoV0RJKQ0KYGBgDQoNCiMgKipNw7QgdOG6oyB24buBIGLhu5kgZOG7ryBsaeG7h3UgdOG7qyBXT1JMRCBCQU5LKioNCg0KKiBUw6puIGluZGljYXRvcjogTGl0ZXJhY3kgcmF0ZSwgYWR1bHQgdG90YWwgKCUgb2YgcGVvcGxlIGFnZXMgMTUgYW5kIGFib3ZlKSAtIFThu7cgbOG7hyBiaeG6v3QgY2jhu68sIHThu5VuZyBz4buRIG5nxrDhu51pIHRyxrDhu59uZyB0aMOgbmggKCUgc+G7kSBuZ8aw4budaSB04burIDE1IHR14buVaSB0cuG7nyBsw6puKQ0KDQoqIENvZGU6IFNFLkFEVC5MSVRSLlpTDQoNCiogR+G7k20gMTY3NTggcXVhbiBzw6F0IHbDoCA1IGJp4bq/bi4NCg0KKiDEkOG7i25oIG5naMSpYSBkw6BpOiBU4bu3IGzhu4cgbmfGsOG7nWkgbOG7m24gYmnhur90IGNo4buvIGzDoCBwaOG6p24gdHLEg20gc+G7kSBuZ8aw4budaSB04burIDE1IHR14buVaSB0cuG7nyBsw6puIGPDsyB0aOG7gyDEkeG7jWMgdsOgIHZp4bq/dCB2w6AgaGnhu4N1IG3hu5l0IGPDonUgbsOzaSBuZ+G6r24gZ+G7jW4sIMSRxqFuIGdp4bqjbiB24buBIGN14buZYyBz4buRbmcgaMOgbmcgbmfDoHkgY+G7p2EgaOG7jS4NCg0KKiBLaMOhaSBuaeG7h20gdsOgIHBoxrDGoW5nIHBow6FwIHRo4buRbmcga8OqOiBUaOG7kW5nIGvDqiB24buBIG3DuSBjaOG7ryDhu58gaOG6p3UgaOG6v3QgY8OhYyBxdeG7kWMgZ2lhIGJhbyBn4buTbSBkw6JuIHPhu5EgdOG7qyAxNSB0deG7lWkgdHLhu58gbMOqbiwgbmjGsG5nIG3hu5l0IHPhu5EgcXXhu5FjIGdpYSBiYW8gZ+G7k20gY8OhYyDEkeG7mSB0deG7lWkgdHLhursgaMahbiBob+G6t2MgYuG7iyBnaeG7m2kgaOG6oW4g4bufIGPDoWMgxJHhu5kgdHXhu5VpIGPDsyB4dSBoxrDhu5tuZyBsw6BtIHTEg25nIHThu7cgbOG7hyBiaeG6v3QgY2jhu68uIFThu7cgbOG7hyBiaeG6v3QgY2jhu68gY+G7p2EgdGhhbmggbmnDqm4gdHJvbmcgxJHhu5kgdHXhu5VpIDE1LTI0IHBo4bqjbiDDoW5oIG5o4buvbmcgdGnhur9uIGLhu5kgZ+G6p24gxJHDonkgdHJvbmcgZ2nDoW8gZOG7pWMuIE7DsyDEkW8gbMaw4budbmcga+G6v3QgcXXhuqMgdMOtY2ggbMWpeSBj4bunYSBnacOhbyBk4bulYyB0aeG7g3UgaOG7jWMgdHJvbmcga2hv4bqjbmcgMTAgbsSDbSB0csaw4bubYyDEkcOzIGLhurFuZyBjw6FjaCBjaOG7iSByYSB04bu3IGzhu4cgZMOibiBz4buRIMSRw6MgaOG7jWMgcXVhIGjhu4cgdGjhu5FuZyBnacOhbyBk4bulYyB0aeG7g3UgaOG7jWMgdsOgIGPDsyDEkcaw4bujYyBjw6FjIGvhu7kgbsSDbmcgxJHhu41jIHZp4bq/dCB2w6AgdMOtbmggdG/DoW4gY8ahIGLhuqNuLiBOw7NpIGNodW5nLCBraOG6oyBuxINuZyDEkeG7jWMgdmnhur90IGPFqW5nIGJhbyBn4buTbSBraOG6oyBuxINuZyB0w61uaCB0b8Ohbiwga2jhuqMgbsSDbmcgdGjhu7FjIGhp4buHbiBjw6FjIHBow6lwIHTDrW5oIHPhu5EgaOG7jWMgxJHGoW4gZ2nhuqNuLiBE4buvIGxp4buHdSB24buBIHThu7cgbOG7hyBiaeG6v3QgY2jhu68gxJHGsOG7o2MgVmnhu4duIFRo4buRbmcga8OqIFVORVNDTyB04buVbmcgaOG7o3AgZOG7sWEgdHLDqm4gY8OhYyBjdeG7mWMgxJFp4buBdSB0cmEgZMOibiBz4buRIHF14buRYyBnaWEgdsOgIGto4bqjbyBzw6F0IGjhu5kgZ2lhIMSRw6xuaCwgxJHhu5NuZyB0aOG7nWkgxJHhu5FpIHbhu5tpIGPDoWMgcXXhu5FjIGdpYSBraMO0bmcgY8OzIGThu68gbGnhu4d1IHbhu4EgdOG7tyBs4buHIGJp4bq/dCBjaOG7ryBn4bqnbiDEkcOieSwgc+G7rSBk4bulbmcgTcO0IGjDrG5oIGThu7EgYsOhbyB04bu3IGzhu4cgYmnhur90IGNo4buvIHRoZW8gdOG7q25nIMSR4buZIHR14buVaSB0b8OgbiBj4bqndSAoR0FMUCkuDQoNCiogTeG7qWMgxJHhu5kgcGjDuSBo4bujcCB24bubaSBwaMOhdCB0cmnhu4NuOiBU4bu3IGzhu4cgYmnhur90IGNo4buvIGzDoCBt4buZdCBjaOG7iSBz4buRIGvhur90IHF14bqjIMSR4buDIMSRw6FuaCBnacOhIHRyw6xuaCDEkeG7mSBo4buNYyB24bqlbi4gROG7ryBsaeG7h3UgbsOgeSBjw7MgdGjhu4MgZOG7sSDEkW/DoW4gY2jhuqV0IGzGsOG7o25nIGzhu7FjIGzGsOG7o25nIGxhbyDEkeG7mW5nIHRyb25nIHTGsMahbmcgbGFpIHbDoCBjw7MgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdHJvbmcgdmnhu4djIMSR4bqjbSBi4bqjbyBjw6FjIGNow61uaCBzw6FjaCB24buBIGvhu7kgbsSDbmcgc+G7kW5nIGNobyBuYW0gZ2nhu5tpIHbDoCBwaOG7pSBu4buvLiBOw7MgY8WpbmcgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIG5oxrAgbeG7mXQgY8O0bmcgY+G7pSDEkeG6oWkgZGnhu4duIMSR4buDIHhlbSB4w6l0IHTDrW5oIGhp4buHdSBxdeG6oyBj4bunYSBo4buHIHRo4buRbmcgZ2nDoW8gZOG7pWM7IHThu7cgbOG7hyBiaeG6v3QgxJHhu41jIGJp4bq/dCB2aeG6v3QgY2FvIGNobyB0aOG6pXkga2jhuqMgbsSDbmcgY+G7p2EgbeG7mXQgaOG7hyB0aOG7kW5nIGdpw6FvIGThu6VjIHRyb25nIHZp4buHYyBjdW5nIGPhuqVwIGPGoSBo4buZaSBjaG8gbeG7mXQgbMaw4bujbmcgbOG7m24gZMOibiBz4buRIGPDsyDEkcaw4bujYyBr4bu5IG7Eg25nIMSR4buNYyB2aeG6v3QuIFRow6BuaCB0w61jaCB0w61jaCBsxal5IMSRxrDhu6NjIGPhu6dhIGdpw6FvIGThu6VjIGzDoCBu4buBbiB04bqjbmcgY2hvIHPhu7EgcGjDoXQgdHJp4buDbiB0csOtIHR14buHIHbDoCBwaMOhdCB0cmnhu4NuIGtpbmggdOG6vyB4w6MgaOG7mWkgaMahbiBu4buvYSwgbeG6t2MgZMO5IG7DsyBraMO0bmcgbmjhuqV0IHRoaeG6v3QgxJHhuqNtIGLhuqNvIGNo4bqldCBsxrDhu6NuZyBnacOhbyBk4bulYy4gUGjhu6UgbuG7ryBiaeG6v3QgY2jhu68gbmfhu6Ugw70gcuG6sW5nIGjhu40gY8OzIHRo4buDIHTDrG0ga2nhur9tIHbDoCBz4butIGThu6VuZyB0aMO0bmcgdGluIMSR4buDIGPhuqNpIHRoaeG7h24gc+G7qWMga2jhu49lLCBkaW5oIGTGsOG7oW5nIHbDoCBnacOhbyBk4bulYyBj4bunYSBjw6FjIHRow6BuaCB2acOqbiB0cm9uZyBnaWEgxJHDrG5oLiBQaOG7pSBu4buvIGJp4bq/dCBjaOG7ryBjxaluZyDEkcaw4bujYyB0cmFvIHF1eeG7gW4gxJHhu4MgxJHDs25nIG3hu5l0IHZhaSB0csOyIGPDsyDDvSBuZ2jEqWEuDQoNCiogTmjhu69uZyBo4bqhbiBjaOG6vyB2w6Agbmdv4bqhaSBs4buHOiBUcm9uZyB0aOG7sWMgdOG6vywga2jhuqMgbsSDbmcgxJHhu41jIHZp4bq/dCBy4bqldCBraMOzIMSRbyBsxrDhu51uZy4gVmnhu4djIMaw4bubYyB0w61uaCB04bu3IGzhu4cgYmnhur90IGNo4buvIMSRw7JpIGjhu49pIHBo4bqjaSB0aOG7sWMgaGnhu4duIGPDoWMgY3Xhu5ljIMSRaeG7gXUgdHJhIGTDom4gc+G7kSBob+G6t2MgxJFvIMSR4bqhYyBraOG6o28gc8OhdCB0cm9uZyBuaOG7r25nIMSRaeG7gXUga2nhu4duIMSRxrDhu6NjIGtp4buDbSBzb8OhdC4gTmhp4buBdSBxdeG7kWMgZ2lhIGLDoW8gY8OhbyBz4buRIG5nxrDhu51pIGJp4bq/dCBjaOG7ryB04burIGThu68gbGnhu4d1IHThu7EgYsOhbyBjw6FvLiBN4buZdCBz4buRIHPhu60gZOG7pW5nIGThu68gbGnhu4d1IHbhu4EgdHLDrG5oIMSR4buZIGjhu41jIHbhuqVuIGzDoG0gxJHhuqFpIGRp4buHbiBuaMawbmcgw6FwIGThu6VuZyB0aOG7nWkgZ2lhbiDEkWkgaOG7jWMgaG/hurdjIG3hu6ljIMSR4buZIGhvw6BuIHRow6BuaCBraMOhYyBuaGF1LiBBbnQgY8OzIHh1IGjGsOG7m25nIHRyb25nIGPDoWMgY3Xhu5ljIGto4bqjbyBzw6F0IHF14buRYyBnaWEgdsOgIHF14buRYyB04bq/IGfhuqduIMSRw6J5IGzDoCBz4butIGThu6VuZyBiw6BpIGtp4buDbSB0cmEgxJHhu41jIHRy4buxYyB0aeG6v3AgduG7gSBr4bu5IG7Eg25nIMSR4buNYyB2aeG6v3QuIERvIGPDoWMgxJHhu4tuaCBuZ2jEqWEgdsOgIHBoxrDGoW5nIHBow6FwIHRodSB0aOG6rXAgZOG7ryBsaeG7h3Uga2jDoWMgbmhhdSBnaeG7r2EgY8OhYyBxdeG7kWMgZ2lhIG7Dqm4gZOG7ryBsaeG7h3UgY+G6p24gxJHGsOG7o2Mgc+G7rSBk4bulbmcgbeG7mXQgY8OhY2ggdGjhuq1uIHRy4buNbmcuDQoNCmBgYCB7cn0NCmFkdCA8LSBXREkoaW5kaWNhdG9yID0gJ1NFLkFEVC5MSVRSLlpTJykNCmxpYnJhcnkoRFQpDQpkYXRhdGFibGUoYWR0KQ0KYGBgDQoNCiMjICoqUGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdGhlbyB0aOG7nWkgZ2lhbioqDQoNCiogR2nhuqMgc+G7rSBjaOG7jW4gbsaw4bubYyBWSeG7hlQgTkFNIMSR4buDIHBow6JuIHTDrWNoLg0KDQpgYGAge3J9DQpzZSA8LSBXREkoaW5kaWNhdG9yID0gJ1NFLkFEVC5MSVRSLlpTJywgY291bnRyeSA9IGMoJ1ZOTScpKQ0KZGF0YXRhYmxlKHNlKQ0KYGBgDQoNCmBgYCB7cn0NCmQgPC0gc2UgJT4lIHNlbGVjdCh5ZWFyLFNFLkFEVC5MSVRSLlpTKQ0KZCA8LSBuYS5vbWl0KGQpDQpuYW1lcyhkKSA8LSBjKCd5ZWFyJywnUGhhbnRyYW0nKQ0KZGF0YXRhYmxlKGQpDQpgYGANCg0KIyMjICoqQmnhu4N1IMSR4buTIHRo4buDIGhp4buHbiB04bu3IGzhu4cgcGjhuqduIHRyxINtIGJp4bq/dCBjaOG7ryBnaWFpIMSRb+G6oW4gMTk3OSAtIDE5OTkuKioNCg0KYGBgIHtyfQ0KbGlicmFyeShkcGx5cikNCmQxIDwtIGQgJT4lIGZpbHRlciggeWVhciA+PSAxOTc5ICYgeWVhciA8PSAxOTk5ICkNCmxpYnJhcnkoZ2dwbG90MikNCmQxICU+JSBnZ3Bsb3QoYWVzKHggPSB5ZWFyLCB5ID0gUGhhbnRyYW0pKSArDQogIGdlb21fbGluZShjb2xvciA9ICJibGFjayIpICsNCiAgZ2VvbV9wb2ludChjb2xvciA9ICJyZWQiKSArDQogIGxhYnModGl0bGUgPSAiQmnhu4N1IMSR4buTIHRo4buDIGhp4buHbiB04bu3IGzhu4cgcGjhuqduIHRyxINtIGJp4bq/dCBjaOG7ryBnaWFpIMSRb+G6oW4gMTk3OSAtIDE5OTkiLCB4ID0gIk7Eg20iLCB5ID0gIlBo4bqnbiB0csSDbSIpDQpgYGANCg0KKipOaOG6rW4geMOpdDoqKg0KICANCiogVOG7tyBs4buHIGJp4bq/dCBjaOG7ryBuxINtIDE5Nzk6IDgzLjglDQogIA0KKiBU4bu3IGzhu4cgYmnhur90IGNo4buvIG7Eg20gMTk4OTogODcuNiUNCiAgDQoqIFThu7cgbOG7hyBiaeG6v3QgY2jhu68gbsSDbSAxOTk5OiA5MC4zJQ0KICANCiogVOG7tyBs4buHIGJp4bq/dCBjaOG7ryB0xINuZyBk4bqnbiBxdWEgY8OhYyBuxINtIHRyb25nIGdpYWkgxJFv4bqhbiAxOTc5LTE5OTkuDQogIA0KKiBN4bupYyB0xINuZyB0cnVuZyBiw6xuaCBraG/huqNuZyAzJSBt4buXaSBuxINtLg0KICANCiogU+G7sSBnaWEgdMSDbmcgbsOgeSB0aOG7gyBoaeG7h24gbuG7lyBs4buxYyBj4bunYSDEkOG6o25nIHbDoCBOaMOgIG7GsOG7m2MgdHJvbmcgdmnhu4djIHjDs2EgbcO5IGNo4buvOg0KICANCiAgKiBN4bufIHLhu5luZyBt4bqhbmcgbMaw4bubaSB0csaw4budbmcgaOG7jWMNCiAgICANCiAgKiBOw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIGdpw6FvIGThu6VjDQogICAgIA0KICAqIFBo4buVIGPhuq1wIGdpw6FvIGThu6VjIGNobyBt4buNaSBs4bupYSB0deG7lWkNCiAgICANCiAgKiBDb2kgdHLhu41uZyBjw7RuZyB0w6FjIHjDs2EgbcO5IGNo4buvDQoNCioqPT4gS+G6v3QgbHXhuq1uOioqIFThu7cgbOG7hyBiaeG6v3QgY2jhu68gY+G7p2EgVmnhu4d0IE5hbSB0cm9uZyBnaWFpIMSRb+G6oW4gMTk3OS0xOTk5IGPDsyBz4buxIGdpYSB0xINuZyDEkcOhbmcga+G7gyBsw6Aga+G6v3QgcXXhuqMgY+G7p2Egbmhp4buBdSB54bq/dSB04buRLCBiYW8gZ+G7k20gY2jDrW5oIHPDoWNoIGdpw6FvIGThu6VjIGhp4buHdSBxdeG6oywgbmh1IGPhuqd1IGjhu41jIHThuq1wIGNhbyBj4bunYSBuZ8aw4budaSBkw6JuLCBz4buxIGjhu5cgdHLhu6MgY+G7p2EgY8OhYyB04buVIGNo4bupYyB4w6MgaOG7mWkgdsOgIHPhu7EgcGjDoXQgdHJp4buDbiBraW5oIHThur8uDQoNCiMjIyAqKkJp4buDdSDEkeG7kyB0aOG7gyBoaeG7h24gdOG7tyBs4buHIHBo4bqnbiB0csSDbSBiaeG6v3QgY2jhu68gZ2lhaSDEkW/huqFuIDE5OTkgLSAyMDE5LioqDQoNCmBgYCB7cn0NCmQyIDwtIGQgJT4lIGZpbHRlciggeWVhciA+PSAxOTk5ICYgeWVhciA8PSAyMDE5KQ0KZDIgJT4lIGdncGxvdChhZXMoeCA9IHllYXIsIHkgPSBQaGFudHJhbSkpICsNCiAgZ2VvbV9saW5lKGNvbG9yID0gImJsYWNrIikgKw0KICBnZW9tX3BvaW50KGNvbG9yID0gInJlZCIpICsNCiAgbGFicyh0aXRsZSA9ICJCaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIHThu7cgbOG7hyBwaOG6p24gdHLEg20gYmnhur90IGNo4buvIGdpYWkgxJFv4bqhbiAxOTk5IC0gMjAxOSIsIHggPSAiTsSDbSIsIHkgPSAiUGjhuqduIHRyxINtIikNCmBgYA0KDQoqKk5o4bqtbiB4w6l0OioqDQoNCiogVOG7tyBs4buHIGJp4bq/dCBjaOG7ryBuxINtIDE5OTk6IDkwLjMlDQogIA0KKiBU4bu3IGzhu4cgYmnhur90IGNo4buvIG7Eg20gMjAwMDogOTAuMSUNCiAgDQoqIFThu7cgbOG7hyBiaeG6v3QgY2jhu68gbsSDbSAyMDA5OiA5My41JQ0KICANCiogVOG7tyBs4buHIGJp4bq/dCBjaOG7ryBuxINtIDIwMTk6IDk1LjglDQogIA0KKiBT4buxIGNow6puaCBs4buHY2ggbmjhurkgZ2nhu69hIGPDoWMgbsSDbTogdOG7kWMgxJHhu5kgdMSDbmcga2jDtG5nIMSR4buTbmcgxJHhu4F1Lg0KDQoqKj0+IEvhur90IGx14bqtbjoqKiBU4bu3IGzhu4cgYmnhur90IGNo4buvIGPhu6dhIFZp4buHdCBOYW0gxJHDoyB0xINuZyDEkcOhbmcga+G7gyB0cm9uZyBnaWFpIMSRb+G6oW4gMTk5OS0yMDE5LCB0aOG7gyBoaeG7h24gc+G7sSBu4buXIGzhu7FjIGPhu6dhIENow61uaCBwaOG7pyB0cm9uZyB2aeG7h2MgeMOzYSBtw7kgY2jhu68gdsOgIG7Dom5nIGNhbyB0csOsbmggxJHhu5kgZMOibiB0csOtLlbDoCB04buRYyDEkeG7mSB0xINuZyBuaGFuaCBoxqFuIHNhdSBuxINtIDIwMDkgY2hvIHRo4bqleSBuaOG7r25nIGNow61uaCBzw6FjaCBnacOhbyBk4bulYyBoaeG7h3UgcXXhuqMgdsOgIHPhu7EgcXVhbiB0w6JtIGPhu6dhIHjDoyBo4buZaSDEkeG7kWkgduG7m2kgduG6pW4gxJHhu4EgZ2nDoW8gZOG7pWMuDQoNCiMjICoqQ8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nLioqDQoNCiogQ2jDrW5oIHPDoWNoIGdpw6FvIGThu6VjOg0KICANCiAgICAqIENow61uaCBzw6FjaCB4w7NhIG3DuSBjaOG7rzogTmjDoCBuxrDhu5tjIMSR4buBIHJhIG5oaeG7gXUgY2jDrW5oIHPDoWNoIGtodXnhur9uIGtow61jaCB4w7NhIG3DuSBjaOG7rywgdOG6rXAgdHJ1bmcgdsOgbyBjw6FjIMSR4buRaSB0xrDhu6NuZyBuaMawIHBo4bulIG7hu68sIG5nxrDhu51pIGdpw6AsIG5nxrDhu51pIGTDom4gdOG7mWMgdGhp4buDdSBz4buRLg0KICAgIA0KICAgICogTeG7nyBy4buZbmcgbeG6oW5nIGzGsOG7m2kgdHLGsOG7nW5nIGjhu41jOiBT4buRIGzGsOG7o25nIHRyxrDhu51uZyBo4buNYyDEkcaw4bujYyBt4bufIHLhu5luZywgxJHhurdjIGJp4buHdCBsw6Ag4bufIGtodSB24buxYyBuw7RuZyB0aMO0biwgbWnhu4FuIG7DumkuDQogICAgDQogICAgKiBOw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIGdpw6FvIGThu6VjOiBOw6JuZyBjYW8gdHLDrG5oIMSR4buZIGdpw6FvIHZpw6puLCBj4bqjaSB0aGnhu4duIGPGoSBz4bufIHbhuq10IGNo4bqldCB0csaw4budbmcgaOG7jWMsIMSR4buVaSBt4bubaSBwaMawxqFuZyBwaMOhcCBnaeG6o25nIGThuqF5Lg0KICANCiogTmh1IGPhuqd1IGjhu41jIHThuq1wOg0KICAgDQogICAgKiBOaHUgY+G6p3UgaOG7jWMgdOG6rXAgY+G7p2EgbmfGsOG7nWkgZMOibiBuZ8OgeSBjw6BuZyB0xINuZyBjYW8gZG8gbmjhuq1uIHRo4bupYyDEkcaw4bujYyB04bqnbSBxdWFuIHRy4buNbmcgY+G7p2EgZ2nDoW8gZOG7pWMgxJHhu5FpIHbhu5tpIHPhu7EgcGjDoXQgdHJp4buDbiBi4bqjbiB0aMOibiB2w6AgeMOjIGjhu5lpLg0KICAgICANCiAgICAqIENoYSBt4bq5IHF1YW4gdMOibSBoxqFuIMSR4bq/biB2aeG7h2MgY2hvIGNvbiBjw6FpIGjhu41jIHThuq1wLg0KICAgIA0KKiBWYWkgdHLDsiBj4bunYSBjw6FjIHThu5UgY2jhu6ljIHjDoyBo4buZaToNCiAgDQogICAgKiBDw6FjIHThu5UgY2jhu6ljIHjDoyBo4buZaSBuaMawIEjhu5lpIENo4buvIHRo4bqtcCDEkeG7jywgxJBvw6BuIFRoYW5oIG5pw6puLCBI4buZaSBQaOG7pSBu4buvIHTDrWNoIGPhu7FjIHRoYW0gZ2lhIHbDoG8gY8O0bmcgdMOhYyB4w7NhIG3DuSBjaOG7ry4NCiAgICANCiAgICAqIE3huqFuaCBk4bqhbiDEkcOzbmcgZ8OzcCBraW5oIHBow60sIGjhu5cgdHLhu6MgY2hvIGPDoWMgaG/huqF0IMSR4buZbmcgZ2nDoW8gZOG7pWMuDQogICAgDQoqIOG6om5oIGjGsOG7n25nIGPhu6dhIGtpbmggdOG6vzoNCiAgDQogICAgKiBLaW5oIHThur8gcGjDoXQgdHJp4buDbiB04bqhbyDEkWnhu4F1IGtp4buHbiBjaG8gdmnhu4djIMSR4bqndSB0xrAgdsOgbyBnacOhbyBk4bulYywgbsOibmcgY2FvIGNo4bqldCBsxrDhu6NuZyBnacOhbyBk4bulYy4NCg0KICAgICogTsOibmcgY2FvIMSR4budaSBz4buRbmcgbmfGsOG7nWkgZMOibiwgdOG6oW8gxJFp4buBdSBraeG7h24gY2hvIHZp4buHYyBo4buNYyB04bqtcC4NCg0KIyAqKk3DtCB04bqjIHbhu4EgYuG7mSBk4buvIGxp4buHdSB04burIElNRioqDQoNCiogVMOqbiBi4buZIGThu68gbGnhu4d1OiBGaXNjYWwgTW9uaXRvciAoRk0pDQoNCiAgKiBDxqEgcXVhbiBHacOhbSBzw6F0IFTDoGkgY2jDrW5oIGto4bqjbyBzw6F0IHbDoCBwaMOibiB0w61jaCBuaOG7r25nIGRp4buFbiBiaeG6v24gbeG7m2kgbmjhuqV0IHbhu4EgdMOgaSBjaMOtbmggY8O0bmcsIGPhuq1wIG5o4bqtdCBjw6FjIHTDoWMgxJHhu5luZyB0w6BpIGNow61uaCBj4bunYSBjdeG7mWMga2jhu6duZyBob+G6o25nIHbDoCBjw6FjIGThu7EgYsOhbyB0w6BpIGNow61uaCB0cnVuZyBo4bqhbiwgxJHhu5NuZyB0aOG7nWkgxJHDoW5oIGdpw6EgY8OhYyBjaMOtbmggc8OhY2ggbmjhurFtIMSRxrBhIHTDoGkgY2jDrW5oIGPDtG5nIHbDoG8gbeG7mXQgbuG7gW4gdOG6o25nIGLhu4FuIHbhu69uZy4NCiAgDQogICogUGjhuqFtIHZpIHThuqFtIHRo4budaTogROG7ryBsaeG7h3UgR2nDoW0gc8OhdCBUw6BpIGNow61uaCDEkcaw4bujYyB0csOsbmggYsOgeSB0aGVvIHThuqduIHN14bqldCBow6BuZyBuxINtLg0KICANCiAgKiBQaOG6oW0gdmkgxJHhu4thIGzDvTogQ8ahIHPhu58gZOG7ryBsaeG7h3UgY+G7p2EgRmlzY2FsIE1vbml0b3IgYmFvIGfhu5NtIDExNSBxdeG7kWMgZ2lhIHbDoCBt4buZdCBz4buRIGtodSB24buxYyB04buVbmcgaOG7o3AuDQogIA0KICAqIFBo4bqhbSB2aSBuZ8Ogbmg6IENow61uaCBwaOG7pyBuw7NpIGNodW5nIHbDoCBraHUgduG7sWMgY8O0bmcNCiAgDQogICogVMOtbmgga+G7i3AgdGjhu51pOiBDxqEgc+G7nyBk4buvIGxp4buHdSBHacOhbSBzw6F0IFTDoGkgY2jDrW5oIMSRxrDhu6NjIFbhu6UgVMOgaSBjaMOtbmggY+G7p2EgSU1GIGPhuq1wIG5o4bqtdCBoYWkgbOG6p24gbeG7mXQgbsSDbS4NCiAgDQogICogUGjGsMahbmcgcGjDoXAgbHXhuq1uOiBDxqEgcXVhbiBHacOhbSBzw6F0IFTDoGkgY2jDrW5oIGto4bqjbyBzw6F0IHbDoCBwaMOibiB0w61jaCBuaOG7r25nIGRp4buFbiBiaeG6v24gdMOgaSBjaMOtbmggY8O0bmcgbeG7m2kgbmjhuqV0LCBj4bqtcCBuaOG6rXQgY8OhYyB0w6FjIMSR4buZbmcgdMOgaSBjaMOtbmggY+G7p2EgY3Xhu5ljIGto4bunbmcgaG/huqNuZyB2w6AgY8OhYyBk4buxIGLDoW8gdMOgaSBjaMOtbmggdHJ1bmcgaOG6oW4sIMSR4buTbmcgdGjhu51pIMSRw6FuaCBnacOhIGPDoWMgY2jDrW5oIHPDoWNoIG5o4bqxbSDEkcawYSB0w6BpIGNow61uaCBjw7RuZyB2w6BvIG3hu5l0IG7hu4FuIHThuqNuZyBi4buBbiB24buvbmcuDQogIA0KICAqIEThu68gbGnhu4d1IHbDoCBk4buxIGLDoW8gY+G7pSB0aOG7gyB0aGVvIHF14buRYyBnaWEgduG7gSBjw6FjIGJp4bq/biBz4buRIHTDoGkgY2jDrW5oIGNow61uaCDEkcaw4bujYyBk4buxYSB0csOqbiBjxqEgc+G7nyBk4buvIGxp4buHdSBUcmnhu4NuIHbhu41uZyBLaW5oIHThur8gVGjhur8gZ2nhu5tpIHRow6FuZyA0IG7Eg20gMjAyMCwgdHLhu6sga2hpIGPDsyBxdXkgxJHhu4tuaCBraMOhYyB2w6AgZG8gbmjDom4gdmnDqm4gSU1GIHThu5VuZyBo4bujcC4gROG7ryBsaeG7h3UgbOG7i2NoIHPhu60gdsOgIGPDoWMgZOG7sSBiw6FvIGThu7FhIHRyw6puIHRow7RuZyB0aW4gxJHGsOG7o2MgdGh1IHRo4bqtcCBi4bufaSBjw6FjIHF1YW4gY2jhu6ljIGLhu5kgcGjhuq1uIHF14buRYyBnaWEgY+G7p2EgSU1GIHRyb25nIGLhu5FpIGPhuqNuaCBuaGnhu4dtIHbhu6UgY+G7p2EgaOG7jSB2w6AgdGjDtG5nIHF1YSBwaMOibiB0w61jaCBsacOqbiB04bulYyBj4bunYSBo4buNIHbhu4EgdMOsbmggaMOsbmggxJFhbmcgcGjDoXQgdHJp4buDbiDhu58gbeG7l2kgcXXhu5FjIGdpYTsgY2jDum5nIMSRxrDhu6NjIGPhuq1wIG5o4bqtdCBsacOqbiB04bulYyBraGkgY8OzIHRow6ptIHRow7RuZyB0aW4uIFPhu7EgcGjDoSB24buhIGPhuqV1IHRyw7pjIHRyb25nIGThu68gbGnhu4d1IGPDsyB0aOG7gyDEkcaw4bujYyDEkWnhu4F1IGNo4buJbmggxJHhu4MgdOG6oW8gcmEgY2h14buXaSB0csahbiB0cnUgdGjDtG5nIHF1YSBnaMOpcCBu4buRaSB2w6AgY8OhYyBr4bu5IHRodeG6rXQga2jDoWMuIEPDoWMgxrDhu5tjIHTDrW5oIGPhu6dhIG5ow6JuIHZpw6puIElNRiDEkcOzbmcgdmFpIHRyw7IgbMOgIMSR4bqhaSBkaeG7h24ga2hpIGtow7RuZyBjw7MgdGjDtG5nIHRpbiDEkeG6p3kgxJHhu6cuIERvIMSRw7MsIGThu68gbGnhu4d1IEdpw6FtIHPDoXQgdMOgaSBjaMOtbmggY8OzIHRo4buDIGtow6FjIHbhu5tpIGThu68gbGnhu4d1IGNow61uaCB0aOG7qWMg4bufIGPDoWMgbmd14buTbiBraMOhYywgYmFvIGfhu5NtIGPhuqMgVGjhu5FuZyBrw6ogdMOgaSBjaMOtbmggcXXhu5FjIHThur8gY+G7p2EgSU1GLg0KICANCiAgKiBWaeG7h2MgcGjDom4gbG/huqFpIHF14buRYyBnaWEgdHJvbmcgR2nDoW0gc8OhdCB0w6BpIGNow61uaCBjaGlhIHRo4bq/IGdp4bubaSB0aMOgbmggYmEgbmjDs20gY2jDrW5oOiAzNSBu4buBbiBraW5oIHThur8gdGnDqm4gdGnhur9uLCA0MCBu4buBbiBraW5oIHThur8gdGjhu4sgdHLGsOG7nW5nIG3hu5tpIG7hu5VpIHbDoCB0aHUgbmjhuq1wIHRydW5nIGLDrG5oLCB2w6AgNDAgcXXhu5FjIGdpYSDEkWFuZyBwaMOhdCB0cmnhu4NuIGPDsyB0aHUgbmjhuq1wIHRo4bqlcC4gQuG6o3kgbuG7gW4ga2luaCB04bq/IHRpw6puIHRp4bq/biBs4bubbiBuaOG6pXQgxJHGsOG7o2MgxJFvIGLhurFuZyBHRFAgKENhbmFkYSwgUGjDoXAsIMSQ4bupYywgw50sIE5o4bqtdCBC4bqjbiwgVsawxqFuZyBxdeG7kWMgQW5oLCBIb2EgS+G7sykgdOG6oW8gdGjDoG5oIG5ow7NtIG5o4buPIGPhu6dhIGPDoWMgbuG7gW4ga2luaCB04bq/IHRpw6puIHRp4bq/biBs4bubbiwgdGjGsOG7nW5nIMSRxrDhu6NjIGfhu41pIGzDoCBOaMOzbSBC4bqjeSAoRzcpLiBDw6FjIHRow6BuaCB2acOqbiBj4bunYSBraHUgduG7sWMgxJHhu5NuZyBldXJvIGPFqW5nIMSRxrDhu6NjIHBow6JuIGJp4buHdCB0aMOgbmggbeG7mXQgbmjDs20gbmjhu48uIEThu68gbGnhu4d1IHThu5VuZyBo4bujcCB0csOsbmggYsOgeSB0cm9uZyBjw6FjIGLhuqNuZyBkw6BuaCBjaG8ga2h1IHbhu7FjIMSR4buTbmcgZXVybyBiYW8gZ+G7k20gY8OhYyB0aMOgbmggdmnDqm4gaGnhu4duIHThuqFpIHRyb25nIHThuqV0IGPhuqMgY8OhYyBuxINtLCBt4bq3YyBkw7kgc+G7kSBsxrDhu6NuZyB0aMOgbmggdmnDqm4gxJHDoyB0xINuZyBsw6puIHRoZW8gdGjhu51pIGdpYW4uIEThu68gbGnhu4d1IGPhu6dhIGjhuqd1IGjhur90IGPDoWMgcXXhu5FjIGdpYSB0aMOgbmggdmnDqm4gTGnDqm4gbWluaCBDaMOidSDDgnUgxJHDoyDEkcaw4bujYyBz4butYSDEkeG7lWkgc2F1IGtoaSDDoXAgZOG7pW5nIEjhu4cgdGjhu5FuZyBUw6BpIGtob+G6o24gUXXhu5FjIGdpYSB2w6AgS2h1IHbhu7FjIENow6J1IMOCdSBt4bubaSAoRVNBIDIwMTApLiBDw6FjIHF14buRYyBnaWEgxJFhbmcgcGjDoXQgdHJp4buDbiBjw7MgdGh1IG5o4bqtcCB0aOG6pXAgKExJREMpIGzDoCBjw6FjIHF14buRYyBnaWEgY8OzIG3hu6ljIHRodSBuaOG6rXAgYsOsbmggcXXDom4gxJHhuqd1IG5nxrDhu51pIGTGsOG7m2kgbeG7mXQgbmfGsOG7oW5nIG5o4bqldCDEkeG7i25oIChoaeG7h24gxJHGsOG7o2MgxJHhurd0IOG7nyBt4bupYyAyLjcwMCBVU0QgdsOgbyBuxINtIDIwMTYgxJHGsOG7o2MgxJFvIGLhurFuZyBwaMawxqFuZyBwaMOhcCBBdGxhcyBj4bunYSBOZ8OibiBow6BuZyBUaOG6vyBnaeG7m2kpLCBjw6FjIMSR4bq3YyDEkWnhu4NtIGPGoSBj4bqldSBwaMO5IGjhu6NwIHbhu5tpIHRyw6xuaCDEkeG7mSBwaMOhdCB0cmnhu4NuIGjhuqFuIGNo4bq/IHbDoCBjaHV54buDbiDEkeG7lWkgY8ahIGPhuqV1LCB2w6AgY8OhYyB54bq/dSB04buRIGLDqm4gbmdvw6BpLiBjw6FjIG3hu5FpIGxpw6puIGvhur90IHTDoGkgY2jDrW5oIGNoxrBhIMSR4bunIGNo4bq3dCBjaOG6vSDEkeG7gyDEkcaw4bujYyBjb2kgbMOgIG7hu4FuIGtpbmggdOG6vyB0aOG7iyB0csaw4budbmcgbeG7m2kgbuG7lWkuIFppbWJhYndlIMSRxrDhu6NjIMSRxrBhIHbDoG8gbmjDs20uIEPDoWMgbuG7gW4ga2luaCB04bq/IHRo4buLIHRyxrDhu51uZyBt4bubaSBu4buVaSB2w6AgdGh1IG5o4bqtcCB0cnVuZyBiw6xuaCBiYW8gZ+G7k20gbmjhu69uZyBu4buBbiBraW5oIHThur8ga2jDtG5nIMSRxrDhu6NjIHBow6JuIGxv4bqhaSBsw6AgbuG7gW4ga2luaCB04bq/IHRpw6puIHRp4bq/biBob+G6t2MgY8OhYyBuxrDhu5tjIMSRYW5nIHBow6F0IHRyaeG7g24gY8OzIHRodSBuaOG6rXAgdGjhuqVwLg0KICANCiAgKiBI4bqndSBo4bq/dCBk4buvIGxp4buHdSB0w6BpIGNow61uaCDEkeG7gSBj4bqtcCDEkeG6v24gY2jDrW5oIHBo4bunIG7Ds2kgY2h1bmcg4bufIGPDoWMgbuG7gW4ga2luaCB04bq/IHRpw6puIHRp4bq/biwgdHJvbmcga2hpIMSR4buRaSB24bubaSBjw6FjIHRo4buLIHRyxrDhu51uZyBt4bubaSBu4buVaSB2w6AgY8OhYyBu4buBbiBraW5oIHThur8gxJFhbmcgcGjDoXQgdHJp4buDbiwgZOG7ryBsaeG7h3UgdGjGsOG7nW5nIGNo4buJIMSR4buBIGPhuq1wIMSR4bq/biBjaMOtbmggcGjhu6cgdHJ1bmcgxrDGoW5nIGhv4bq3YyBjaMOtbmggcXV54buBbiB0cnVuZyDGsMahbmcgY2jhu4t1IHRyw6FjaCBuaGnhu4dtIHbhu4EgbmfDom4gc8OhY2ggKMSR4buDIGJp4bq/dCBjaGkgdGnhur90IGPhu6UgdGjhu4MsIHhlbSBC4bqjbmcgQuKAk0QpLiBU4bqldCBj4bqjIGThu68gbGnhu4d1IHTDoGkgY2jDrW5oIMSR4buBdSDEkcaw4bujYyB0w61uaCB0aGVvIG7Eg20gZMawxqFuZyBs4buLY2gsIG5nb+G6oWkgdHLhu6sgdHLGsOG7nW5nIGjhu6NwIGPhu6dhIEJhbmdsYWRlc2gsIEFpIEPhuq1wLCBFdGhpb3BpYSwgSGFpdGksIMSQ4bq3YyBraHUgaMOgbmggY2jDrW5oIEjhu5NuZyBLw7RuZywg4bqkbiDEkOG7mSwgQ+G7mW5nIGjDsmEgSOG7k2kgZ2nDoW8gSXJhbiwgTXlhbm1hciwgTmVwYWwsIFBha2lzdGFuLCBTaW5nYXBvcmUgdsOgIFRow6FpIExhbi4gxJHhu4EgY+G6rXAgxJHhur9uIG7Eg20gdMOgaSBjaMOtbmguDQogIA0KICAqIEThu68gbGnhu4d1IHThu5VuZyBo4bujcCBjaG8gY8OhYyBuaMOzbSBxdeG7kWMgZ2lhIGzDoCBnacOhIHRy4buLIHRydW5nIGLDrG5oIGPDsyB0cuG7jW5nIHPhu5EgY+G7p2EgZOG7ryBsaeG7h3UgdOG7q25nIHF14buRYyBnaWEsIHRy4burIGtoaSBjw7MgcXV5IMSR4buLbmgga2jDoWMuIEThu68gbGnhu4d1IMSRxrDhu6NjIHTDrW5oIHRy4buNbmcgc+G7kSB0aGVvIEdEUCBkYW5oIG5naMSpYSBow6BuZyBuxINtIMSRxrDhu6NjIGNodXnhu4NuIMSR4buVaSBzYW5nIMSRw7QgbGEgTeG7uSB0aGVvIHThu7cgZ2nDoSBo4buRaSDEkW/DoWkgdHJ1bmcgYsOsbmggdHLDqm4gdGjhu4sgdHLGsOG7nW5nIHTDrW5oIHRoZW8gdOG7tyBs4buHIHRyb25nIEdEUCBj4bunYSBuaMOzbS4NCiAgDQogICog4bueIG5oaeG7gXUgcXXhu5FjIGdpYSwgZOG7ryBsaeG7h3UgdMOgaSBjaMOtbmggdHXDom4gdGhlbyBD4bqpbSBuYW5nIFRo4buRbmcga8OqIFTDoGkgY2jDrW5oIENow61uaCBwaOG7pyBuxINtIDIwMTQgY+G7p2EgSU1GLiBDw6FuIGPDom4gdMOgaSBjaMOtbmggdOG7lW5nIHRo4buDIMSR4buBIGPhuq1wIMSR4bq/biBjaG8gdmF5IHLDsm5nICgrKSB2w6AgdmF5ICgtKSBj4bunYSBjaMOtbmggcGjhu6cgbsOzaSBjaHVuZy4gVHV5IG5oacOqbiwgdHJvbmcgbeG7mXQgc+G7kSB0csaw4budbmcgaOG7o3AsIGPDoW4gY8OibiB04buVbmcgdGjhu4MgxJHhu4EgY+G6rXAgxJHhur9uIHThu5VuZyBkb2FuaCB0aHUgdsOgIHZp4buHbiB0cuG7oyB0cuG7qyDEkWkgdOG7lW5nIGNoaSB0acOqdSB2w6AgY2hvIHZheSByw7JuZy4NCiAgDQogICogROG7ryBsaeG7h3UgdOG7lW5nIG7hu6MgdMOgaSBjaMOtbmggdsOgIG7hu6MgcsOybmcgxJHGsOG7o2MgYsOhbyBjw6FvIHRyb25nIEdpw6FtIHPDoXQgdMOgaSBjaMOtbmggxJHGsOG7o2MgbOG6pXkgdOG7qyBjw6FjIG5ndeG7k24gZOG7ryBsaeG7h3UgY2jDrW5oIHRo4bupYyB2w6AgxrDhu5tjIHTDrW5oIGPhu6dhIG5ow6JuIHZpw6puIElNRi4gTeG6t2MgZMO5IGNow7puZyB0w7RpIG7hu5cgbOG7sWMgxJFp4buBdSBjaOG7iW5oIGThu68gbGnhu4d1IHThu5VuZyBu4bujIHbDoCBu4bujIHLDsm5nIHbhu5tpIGPDoWMgxJHhu4tuaCBuZ2jEqWEgdHJvbmcgQ+G6qW0gbmFuZyBUaOG7kW5nIGvDqiBUw6BpIGNow61uaCBDaMOtbmggcGjhu6cgY+G7p2EgSU1GLCBkbyBo4bqhbiBjaOG6vyB24buBIGThu68gbGnhu4d1IGhv4bq3YyBob8OgbiBj4bqjbmggY+G7pSB0aOG7gyBj4bunYSBxdeG7kWMgZ2lhLCBuaOG7r25nIGThu68gbGnhu4d1IG7DoHkgxJHDtGkga2hpIGPDsyB0aOG7gyDEkWkgY2jhu4djaCBraOG7j2kgY8OhYyDEkeG7i25oIG5naMSpYSBjaMOtbmggdGjhu6ljLiBN4bq3YyBkw7kgbeG7jWkgbuG7lyBs4buxYyDEkeG7gXUgxJHGsOG7o2MgdGjhu7FjIGhp4buHbiDEkeG7gyDEkeG6o20gYuG6o28gZOG7ryBsaeG7h3UgduG7gSBu4bujIHBow7kgaOG7o3AgdsOgIGPDsyB0aOG7gyBzbyBzw6FuaCDEkcaw4bujYyB0csOqbiBwaOG6oW0gdmkgcXXhu5FjIHThur8sDQoNCiogVMOqbiBpbmRpY2F0b3I6ICoqR0dSX0cwMV9HRFBfUFQqKg0KDQoqIELhu5kgZOG7ryBsaeG7h3UgIlJldmVudWUgKCUgb2YgR0RQKSIgKEdHUl9HMDFfR0RQX1BUKSB0aHXhu5ljIFF14bu5IFRp4buBbiB04buHIFF14buRYyB04bq/IChJTUYpIGN1bmcgY+G6pXAgdGjDtG5nIHRpbiB24buBIHThu7cgbOG7hyBkb2FuaCB0aHUgc28gduG7m2kgR0RQIGPhu6dhIG3hu5l0IHF14buRYyBnaWEsIMSRxrDhu6NjIMSRbyBi4bqxbmcgcGjhuqduIHRyxINtLg0KDQoqIOG7qG5nIGThu6VuZzoNCg0KICAqIFBow6JuIHTDrWNoIGhp4buHdSBxdeG6oyBob+G6oXQgxJHhu5luZyBj4bunYSBjaMOtbmggcGjhu6cgdHJvbmcgdmnhu4djIGh1eSDEkeG7mW5nIG5ndeG7k24gdGh1Lg0KICANCiAgKiBTbyBzw6FuaCBraOG6oyBuxINuZyB0w6BpIGNow61uaCBj4bunYSBjw6FjIHF14buRYyBnaWEga2jDoWMgbmhhdS4NCiAgDQogICogxJDDoW5oIGdpw6EgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgY2jDrW5oIHPDoWNoIHRodeG6vyB2w6AgY2hpIHRpw6p1IGPhu6dhIGNow61uaCBwaOG7py4NCiAgDQogICogROG7sSBiw6FvIHh1IGjGsOG7m25nIHRodSBuaOG6rXAgY+G7p2EgY2jDrW5oIHBo4bunIHRyb25nIHTGsMahbmcgbGFpLg0KDQpgYGAge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoaW1mLmRhdGEpDQpgYGANCg0KYGBgIHtyfQ0KdG5hIDwtIGxvYWRfZGF0YXNldHMoJ0ZNJykNCnRuIDwtIHRuYSRnZXRfc2VyaWVzKGZyZXEgPSAnQScsIHJlZl9hcmVhID0gJ1ZOJywgaW5kaWNhdG9yID0gJ0dHUl9HMDFfR0RQX1BUJykNCm5hbWVzKHRuKSA8LSBjKCdOxINtJywnUGhhbnRyYW0nKQ0KdG4gPC0gbmEub21pdCh0bikNCmRhdGF0YWJsZSh0bikNCmBgYA0KDQojIyAqKlBow6JuIHTDrWNoIGThu68gbGnhu4d1IHRoZW8gdGjhu51pIGdpYW4qKg0KDQojIyMgKipCaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIHThu7cgbOG7hyBkb2FuaCB0aHUgc28gduG7m2kgR0RQIGPhu6dhIG7GsOG7m2MgVmnhu4d0IE5hbSBnaWFpIMSRb+G6oW4gMTk5OS0yMDA4KioNCg0KYGBgIHtyfQ0KdG4xIDwtIHRuICU+JSBmaWx0ZXIoIE7Eg20gPj0gMTk5OSAmIE7Eg20gPD0gMjAwOCkNCmdncGxvdChkYXRhID0gdG4xLCBhZXMoeCA9IE7Eg20sIHkgPSBQaGFudHJhbSkpICsNCiAgZ2VvbV9jb2woZmlsbCA9ICJwaW5rIiwgY29sb3IgPSAiYmxhY2siKSArDQogIGxhYnMoeCA9ICJOxINtIix5ID0gIlBo4bqnbiB0csSDbSIpICsNCiAgZ2d0aXRsZSgiVOG7tyBs4buHIGRvYW5oIHRodSBzbyB24bubaSBHRFAgY+G7p2Egbsaw4bubYyBWaeG7h3QgTmFtIGdpYWkgxJFv4bqhbiAxOTk5LTIwMDgiKSArDQogIHRoZW1lX21pbmltYWwoKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpDQpgYGANCg0KKiAqKk5o4bqtbiB4w6l0OioqDQoNCiAgKiBUxINuZyB0csaw4bufbmc6IFThu7cgbOG7hyBkb2FuaCB0aHUgc28gduG7m2kgR0RQIGPDsyB4dSBoxrDhu5tuZyB0xINuZyB0cm9uZyBnaWFpIMSRb+G6oW4gMTk5OS0yMDA4LCB04burIDE1LjQ1JSBuxINtIDE5OTkgbMOqbiAyMC45MyUgbsSDbSAyMDA4Lg0KICANCiAgKiBCaeG6v24gxJHhu5luZzogVHV5IG5oacOqbiwgeHUgaMaw4bubbmcgbsOgeSBraMO0bmcgxJHhu5NuZyDEkeG7gXUgbcOgIGPDsyBiaeG6v24gxJHhu5luZyB0aGVvIHThu6tuZyBuxINtLg0KICANCiAgICAqIFTEg25nIHRyxrDhu59uZyBt4bqhbmggdHJvbmcgZ2lhaSDEkW/huqFuIDE5OTktMjAwMyAodOG7qyAxNS40NSUgbMOqbiAxOS42NCUpLg0KICAgIA0KICAgICogR2nhuqNtIG5o4bq5IHRyb25nIGdpYWkgxJFv4bqhbiAyMDA0LTIwMDUgKHThu6sgMTkuNjQlIHh14buRbmcgMTkuMjklKS4NCiAgICANCiAgICAqIFTEg25nIHRy4bufIGzhuqFpIHbDoCDEkeG6oXQgxJHhu4luaCBjYW8gbmjhuqV0IHRyb25nIGdpYWkgxJFv4bqhbiAyMDA2LTIwMDggKHThu6sgMTkuNjclIGzDqm4gMjAuOTMlKS4NCg0KKio9PiBL4bq/dCBsdeG6rW46KiogVOG7tyBs4buHIGRvYW5oIHRodSBzbyB24bubaSBHRFAgY+G7p2EgVmnhu4d0IE5hbSDEkcOjIHTEg25nIMSRw6FuZyBr4buDIHRyb25nIGdpYWkgxJFv4bqhbiAxOTk5LTIwMDgsIHBo4bqjbiDDoW5oIHPhu7EgcGjDoXQgdHJp4buDbiBraW5oIHThur8gdsOgIGhp4buHdSBxdeG6oyB0aHUgbmfDom4gc8OhY2ggxJHGsOG7o2MgY+G6o2kgdGhp4buHbi4gVHV5IG5oacOqbiwgY+G6p24gdGnhur9wIHThu6VjIGhvw6BuIHRoaeG7h24gaOG7hyB0aOG7kW5nIHRodeG6vywgdMSDbmcgY8aw4budbmcgcXXhuqNuIGzDvSB0aHUgdGh14bq/IMSR4buDIMSR4bqjbSBi4bqjbyBuZ3Xhu5NuIHRodSBjaG8gbmfDom4gc8OhY2ggbmjDoCBuxrDhu5tjIHBo4bulYyB24bulIGNobyBwaMOhdCB0cmnhu4NuIGtpbmggdOG6vyAtIHjDoyBo4buZaS4NCg0KIyMjICoqQmnhu4N1IMSR4buTIHRo4buDIGhp4buHbiB04bu3IGzhu4cgZG9hbmggdGh1IHNvIHbhu5tpIEdEUCBj4bunYSBuxrDhu5tjIFZp4buHdCBOYW0gZ2lhaSDEkW/huqFuIDIwMDktMjAxOCoqDQoNCmBgYCB7cn0NCnRuMiA8LSB0biAlPiUgZmlsdGVyKCBOxINtID49IDIwMDkgJiBOxINtIDw9IDIwMTgpDQpnZ3Bsb3QoZGF0YSA9IHRuMiwgYWVzKHggPSBOxINtLCB5ID0gUGhhbnRyYW0pKSArDQogIGdlb21fY29sKGZpbGwgPSAicGluayIsIGNvbG9yID0gImJsYWNrIikgKw0KICBsYWJzKHggPSAiTsSDbSIseSA9ICJQaOG6p24gdHLEg20iKSArDQogIGdndGl0bGUoIlThu7cgbOG7hyBkb2FuaCB0aHUgc28gduG7m2kgR0RQIGPhu6dhIG7GsOG7m2MgVmnhu4d0IE5hbSBnaWFpIMSRb+G6oW4gMjAwOS0yMDE4IikgKw0KICB0aGVtZV9taW5pbWFsKCkgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIGhqdXN0PTEpKQ0KYGBgDQoNCioqTmjhuq1uIHjDqXQ6KioNCg0KICogWHUgaMaw4bubbmcgY2h1bmc6DQogDQogICAqIFThu7cgbOG7hyBkb2FuaCB0aHUgc28gduG7m2kgR0RQIGPhu6dhIFZp4buHdCBOYW0gY8OzIHh1IGjGsOG7m25nIGdp4bqjbSB0cm9uZyBnaWFpIMSRb+G6oW4gMjAwOS0yMDE4Lg0KICAgDQogICAqIE3hu6ljIGdp4bqjbSBuaOG6uSB04burIG7Eg20gMjAwOSAoMjAuMTUlKSDEkeG6v24gbsSDbSAyMDE4ICgxOS40NiUpLg0KICAgDQogKiBHaWFpIMSRb+G6oW4gY+G7pSB0aOG7gzoNCiANCiAgICogMjAwOS0yMDExOiBU4bu3IGzhu4cgZG9hbmggdGh1IGdp4bqjbSBuaOG6uSBkbyDhuqNuaCBoxrDhu59uZyBj4bunYSBraOG7p25nIGhv4bqjbmcga2luaCB04bq/IHRvw6BuIGPhuqd1Lg0KICAgDQogICAqIDIwMTItMjAxMzogVOG7tyBs4buHIGRvYW5oIHRodSDhu5VuIMSR4buLbmggZG8gY2jDrW5oIHBo4bunIHRo4buxYyBoaeG7h24gY8OhYyBiaeG7h24gcGjDoXAgdGh1IGjDunQgxJHhuqd1IHTGsCwgdGjDumMgxJHhuql5IGtpbmggdOG6vy4NCiAgIA0KICAgKiAyMDE0LTIwMTY6IFThu7cgbOG7hyBkb2FuaCB0aHUgZ2nhuqNtIHRp4bq/cCBkbyBnacOhIGThuqd1IHRow7QgZ2nhuqNtIG3huqFuaCwg4bqjbmggaMaw4bufbmcgxJHhur9uIHh14bqldCBraOG6qXUgdsOgIHRodSBuZ8OibiBzw6FjaCBuaMOgIG7GsOG7m2MuDQogICANCiAgICogMjAxNy0yMDE4OiBU4bu3IGzhu4cgZG9hbmggdGh1IHTEg25nIG5o4bq5IGRvIGtpbmggdOG6vyB2xKkgbcO0IOG7lW4gxJHhu4tuaCwgdGh1IGjDunQgxJHhuqd1IHTGsCBuxrDhu5tjIG5nb8OgaSBnaWEgdMSDbmcuDQoNCioqPT4gS+G6v3QgbHXhuq1uOioqDQoNCiogVOG7tyBs4buHIGRvYW5oIHRodSBzbyB24bubaSBHRFAgY+G7p2EgVmnhu4d0IE5hbSBjw7MgeHUgaMaw4bubbmcgZ2nhuqNtIHRyb25nIGdpYWkgxJFv4bqhbiAyMDA5LTIwMTguDQoNCiogTmhp4buBdSB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biB04bu3IGzhu4cgbsOgeSwgYmFvIGfhu5NtIHnhur91IHThu5EgdsSpIG3DtCwgY2jDrW5oIHPDoWNoIHbDoCB0aOG7gyBjaOG6vy4NCg0KKiBD4bqnbiB0aeG6v3AgdOG7pWMgY+G6o2kgdGhp4buHbiBtw7RpIHRyxrDhu51uZyBraW5oIHThur8sIGhvw6BuIHRoaeG7h24gaOG7hyB0aOG7kW5nIHBow6FwIGx14bqtdCwgdsOgIG7Dom5nIGNhbyBoaeG7h3UgcXXhuqMgcXXhuqNuIGzDvSDEkeG7gyB0xINuZyB0aHUgbmfDom4gc8OhY2ggbmjDoCBuxrDhu5tjLg0KDQojIyMgKipCaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIHThu7cgbOG7hyBkb2FuaCB0aHUgc28gduG7m2kgR0RQIGPhu6dhIG7GsOG7m2MgVmnhu4d0IE5hbSBnaWFpIMSRb+G6oW4gMjAxOS0yMDI4KioNCg0KYGBgIHtyfQ0KdG4zIDwtIHRuICU+JSBmaWx0ZXIoIE7Eg20gPj0gMjAxOSAmIE7Eg20gPD0gMjAyOCkNCmdncGxvdChkYXRhID0gdG4zLCBhZXMoeCA9IE7Eg20sIHkgPSBQaGFudHJhbSkpICsNCiAgZ2VvbV9jb2woZmlsbCA9ICJwaW5rIiwgY29sb3IgPSAiYmxhY2siKSArDQogIGxhYnMoeCA9ICJOxINtIix5ID0gIlBo4bqnbiB0csSDbSIpICsNCiAgZ2d0aXRsZSgiVOG7tyBs4buHIGRvYW5oIHRodSBzbyB24bubaSBHRFAgY+G7p2Egbsaw4bubYyBWaeG7h3QgTmFtIGdpYWkgxJFv4bqhbiAyMDE5LTIwMjgiKSArDQogIHRoZW1lX21pbmltYWwoKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSkpDQpgYGANCg0KKipOaOG6rW4geMOpdDoqKg0KDQoqIFh1IGjGsOG7m25nIGNodW5nOg0KIA0KICAqIFThu7cgbOG7hyBkb2FuaCB0aHUgc28gduG7m2kgR0RQIGPhu6dhIFZp4buHdCBOYW0gY8OzIHh1IGjGsOG7m25nIGdp4bqjbSB0cm9uZyBnaWFpIMSRb+G6oW4gMjAxOS0yMDIzLCB04burIDE5LjQxJSBuxINtIDIwMTkgeHXhu5FuZyAxOC4zOSUgbsSDbSAyMDIzLg0KICAgDQogICogVHV5IG5oacOqbiwgZOG7sSBraeG6v24gdOG7tyBs4buHIG7DoHkgc+G6vSB0xINuZyBuaOG6uSB0cm9uZyBnaWFpIMSRb+G6oW4gMjAyNC0yMDI4LCDEkeG6oXQgMTkuNDMlIHbDoG8gbsSDbSAyMDI4Lg0KICAgDQoqIFBow6JuIHTDrWNoIGdpYWkgxJFv4bqhbjoNCiANCiAgKiAyMDE5OiBU4bu3IGzhu4cgZG9hbmggdGh1IMSR4bqhdCAxOS40MSUsIGNhbyBuaOG6pXQgdHJvbmcgZ2lhaSDEkW/huqFuLg0KICAgDQogICogMjAyMC0yMDIzOg0KICAgDQogICAgKiAyMDIwOiBHaeG6o20geHXhu5FuZyAxOC4zOSUgZG8g4bqjbmggaMaw4bufbmcgY+G7p2EgxJHhuqFpIGThu4tjaCBDT1ZJRC0xOS4NCiAgICAgDQogICAgKiAyMDIxOiBUxINuZyBuaOG6uSBsw6puIDE4LjcxJS4NCiAgICANCiAgICAqIDIwMjI6IFTEg25nIHRp4bq/cCB04bulYyBsw6puIDE5LjAzJS4NCiAgICAgDQogICAgKiAyMDIzOiBHaeG6o20gbmjhurkgeHXhu5FuZyAxOC4zOSUuDQogICAgIA0KICAqIDIwMjQtMjAyODogROG7sSBraeG6v24gdMSDbmcgbmjhurksIMSR4bqhdCAxOS40MyUgdsOgbyBuxINtIDIwMjguDQoNCioqPT4gS+G6v3QgbHXhuq1uOioqDQoNCiogVOG7tyBs4buHIGRvYW5oIHRodSBzbyB24bubaSBHRFAgY+G7p2EgVmnhu4d0IE5hbSBjw7MgeHUgaMaw4bubbmcgZ2nhuqNtIHRyb25nIGdpYWkgxJFv4bqhbiAyMDE5LTIwMjMgZG8g4bqjbmggaMaw4bufbmcgY+G7p2Egbmhp4buBdSB54bq/dSB04buRLg0KDQoqIEThu7Ega2nhur9uIHThu7cgbOG7hyBuw6B5IHPhur0gdMSDbmcgbmjhurkgdHJvbmcgZ2lhaSDEkW/huqFuIDIwMjQtMjAyOC4NCg0KKiBD4bqnbiB0aeG6v3AgdOG7pWMgdGjhu7FjIGhp4buHbiBjw6FjIGdp4bqjaSBwaMOhcCDEkeG7gyBuw6JuZyBjYW8gaGnhu4d1IHF14bqjIHRodSB0aHXhur8sIGPhuq90IGdp4bqjbSBjaGkgdGnDqnUsIHBow6F0IHRyaeG7g24ga2luaCB04bq/LCB04burIMSRw7MgZ2lhIHTEg25nIG5ndeG7k24gdGh1IGNobyBuZ8OibiBzw6FjaCBuaMOgIG7GsOG7m2MuDQoNCiMjICoqQ8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nLioqDQoNCiogWeG6v3UgdOG7kSB2xKkgbcO0Og0KDQogICogVMSDbmcgdHLGsOG7n25nIGtpbmggdOG6vzogVMSDbmcgdHLGsOG7n25nIEdEUCBjYW8gdHJvbmcgZ2lhaSDEkW/huqFuIG7DoHkgKHRydW5nIGLDrG5oIDcuNSUvbsSDbSkgbMOgIHnhur91IHThu5EgY2jDrW5oIHRow7pjIMSR4bqpeSB0xINuZyB0csaw4bufbmcgZG9hbmggdGh1Lg0KICANCiAgKiBD4bqjaSBjw6FjaCB0aHXhur86IFZp4buHYyBj4bqjaSBjw6FjaCBo4buHIHRo4buRbmcgdGh14bq/LCDEkcahbiBnaeG6o24gaMOzYSB0aOG7pyB04bulYyBow6BuaCBjaMOtbmgsIHTEg25nIGPGsOG7nW5nIHF14bqjbiBsw70gdGh1IHRodeG6vyDEkcOjIGfDs3AgcGjhuqduIG7Dom5nIGNhbyBoaeG7h3UgcXXhuqMgdGh1IG5nw6JuIHPDoWNoLg0KICANCiAgKiBN4bufIHLhu5luZyBo4buZaSBuaOG6rXAga2luaCB04bq/OiBWaeG7h3QgTmFtIGdpYSBuaOG6rXAgV1RPIG7Eg20gMjAwNywgdGjDumMgxJHhuql5IHh14bqldCBraOG6qXUsIHRodSBow7p0IMSR4bqndSB0xrAgbsaw4bubYyBuZ2/DoGksIHThu6sgxJHDsyBnaWEgdMSDbmcgbmd14buTbiB0aHUgY2hvIG5nw6JuIHPDoWNoLg0KICANCiogWeG6v3UgdOG7kSB2aSBtw7Q6DQoNCiAgKiBOw6JuZyBjYW8gdGh1IG5o4bqtcDogVGh1IG5o4bqtcCBiw6xuaCBxdcOibiDEkeG6p3UgbmfGsOG7nWkgY+G7p2EgVmnhu4d0IE5hbSB0xINuZyDEkcOhbmcga+G7gyB0cm9uZyBnaWFpIMSRb+G6oW4gbsOgeSwgZOG6q24gxJHhur9uIHTEg25nIHRodSB0aHXhur8gdGh1IG5o4bqtcCBjw6EgbmjDom4uDQogIA0KICAqIE3hu58gcuG7mW5nIGhv4bqhdCDEkeG7mW5nIGtpbmggdOG6vzogTuG7gW4ga2luaCB04bq/IHTGsCBuaMOibiBwaMOhdCB0cmnhu4NuIG3huqFuaCBt4bq9LCDEkcOzbmcgZ8OzcCBs4bubbiB2w6BvIG5ndeG7k24gdGh1IHRodeG6vy4NCkNo4buRbmcgdGhhbSBuaMWpbmc6IE7hu5cgbOG7sWMgY2jhu5FuZyB0aGFtIG5oxaluZywgdGjhuqV0IHRodSB0aHXhur8gZ2nDunAgY+G6o2kgdGhp4buHbiBoaeG7h3UgcXXhuqMgdGh1IG5nw6JuIHPDoWNoLg0KDQoqIFnhur91IHThu5EgdGjhu4MgY2jhur86DQoNCiAgKiBI4buHIHRo4buRbmcgcGjDoXAgbHXhuq10OiBI4buHIHRo4buRbmcgcGjDoXAgbHXhuq10IGhvw6BuIHRoaeG7h24gdOG6oW8gbcO0aSB0csaw4budbmcgdGh14bqtbiBs4bujaSBjaG8gaG/huqF0IMSR4buZbmcga2luaCB04bq/IHbDoCB0aHUgdGh14bq/Lg0KICANCiAgKiBN4bupYyDEkeG7mSB0aGFtIG5oxaluZzogVGhhbSBuaMWpbmcgY2FvIOG6o25oIGjGsOG7n25nIMSR4bq/biBoaeG7h3UgcXXhuqMgdGh1IHRodeG6vy4=