PHÂN TÍCH TỶ LỆ THẤT NGHIỆP Ở NƯỚC TA NĂM 2020 - 2023

II. Lời cảm ơn

Lời đầu tiên, em xin gửi lời cảm ơn chân thành nhất đến Giảng viên – ThS.Trần Mạnh Tường. Trong quá trình học tập và tìm hiểu bộ môn “Ngôn ngữ lập trình và phân tích dữ liệu”, em đã nhận được sự quan tâm giúp đỡ, hướng dẫn rất tận tình, tâm huyết của thầy. Thầy đã giúp em tích lũy thêm nhiều kiến thức để có cái nhìn sâu sắc và hoàn thiện hơn về bộ môn này. Từ những kiến thức mà thầy truyền tải, chúng em đã dần hiểu được tầm quan trọng của ngôn ngữ lập trình R này mà bấy lâu nay còn nhiều thắc mắc và chưa rõ. Nhận nhiệm vụ của thầy, thông qua bài tiểu luận này em xin trình bày những gì mà em đã tìm hiểu về môn học, và cụ thể hơn ở đây em lựa chọn đề tài “Phân tích tỷ lệ thất nghiệp ở nước ta năm 2020 đến 2023”.

Có lẽ kiến thức là vô hạn mà sự tiếp nhận kiến thức của bản thân mỗi người luôn tồn tại những hạn chế nhất định. Do đó, trong quá trình hoàn thành bài tiểu luận, chắc chắn em không tránh khỏi những thiếu sót. Vì vậy, em rất mong nhận được những đóng góp đến từ thầy để bài tiểu luận của nhóm được hoàn thiện hơn.

Kính chúc thầy sức khỏe, hạnh phúc và thành công trên con đường sự nghiệp giảng dạy của mình.

III. Phần mở đầu

Dân số Việt Nam có những biến đổi nhân khẩu học mạnh mẽ với một số đặc trưng nổi bật: Dân số đang trong thời kỳ cơ cấu dân số vàng, xu hướng già hóa dân số vẫn đang diễn ra nhanh chóng; tốc độ đô thị hóa cao; mức sinh giảm xuống thấp nhất trong giai đoạn 2020-2023; các chương trình chăm sóc sức khoẻ bà mẹ và trẻ em nói riêng và công tác bảo vệ sức khoẻ, nâng cao mức sống cho nhân dân nói chung đạt được những thành công nhất định, tỷ lệ tử vong ở Việt Nam tiếp tục duy trì ở mức thấp, tuổi thọ trung bình cao trong nhiều năm trở lại đây.

3.1 Lí do chọn đề tài

a) Tầm quan trọng:

  • Tỷ lệ thất nghiệp là một chỉ báo kinh tế quan trọng phản ánh tình trạng sức khỏe của nền kinh tế.

  • Tỷ lệ thất nghiệp cao ảnh hưởng đến sự ổn định xã hội và an ninh quốc phòng. Phân tích tỷ lệ thất nghiệp giúp đánh giá hiệu quả của các chính sách kinh tế và xã hội.

b) Tính thực tiễn:

  • Kết quả phân tích tỷ lệ thất nghiệp có thể được sử dụng để đề xuất các giải pháp giảm thiểu thất nghiệp.

  • Các giải pháp này góp phần phát triển kinh tế - xã hội, nâng cao đời sống của người dân.

c) Tính thời sự:

  • Tỷ lệ thất nghiệp là một vấn đề nóng hổi được quan tâm bởi nhiều người.

  • Phân tích tỷ lệ thất nghiệp giúp cung cấp thông tin hữu ích cho các nhà hoạch định chính sách, doanh nghiệp và người lao động.

d) Tính khoa học:

  • Phân tích tỷ lệ thất nghiệp có thể sử dụng nhiều phương pháp khoa học khác nhau.

  • Việc sử dụng các phương pháp khoa học giúp đảm bảo tính chính xác và khách quan của kết quả phân tích.

e) Khả năng áp dụng:

  • Kết quả phân tích tỷ lệ thất nghiệp có thể áp dụng để giải quyết các vấn đề thực tế.

  • Ví dụ, kết quả phân tích có thể được sử dụng để hướng nghiệp cho người lao động, tư vấn cho doanh nghiệp về chiến lược tuyển dụng, v.v.

3.2 Mục tiêu nghiên cứu

  • Phân tích các yếu tố ảnh hưởng đến tỷ lệ thất nghiệp, bao gồm các yếu tố kinh tế, xã hội, nhân khẩu học, v.v.

  • Đánh giá hiệu quả của các chính sách và chương trình hỗ trợ người thất nghiệp.

  • Dự báo xu hướng của tỷ lệ thất nghiệp trong tương lai.

  • Đề xuất các giải pháp phù hợp để giảm thiểu thất nghiệp, bao gồm các giải pháp về phát triển kinh tế, giáo dục đào tạo, an sinh xã hội,

3.3 Phạm vi nghiên cứu

a) Khung thời gian

  • Thời điểm bắt đầu: Qúy I năm 2020

  • Thời điểm kết thúc: 6 tháng đầu năm 2023

b) Phạm vi địa lý:

  • Toàn quốc Việt Nam

  • Phân tích theo khu vực (vùng, miền, tỉnh/thành phố) để so sánh và đánh giá

c) Đối tượng nghiên cứu:

  • Người lao động trong độ tuổi lao động (từ 15 tuổi đến 60 tuổi)

  • Phân tích theo các nhóm đối tượng cụ thể như:

    • Nam giới

    • Nữ giới

    • Người lao động ở khu vực thành thị

    • Người lao động ở khu vực nông thôn

d) Nội dung nghiên cứu:

  • Tỷ lệ thất nghiệp

  • Định nghĩa, phương pháp tính toán

  • Biến động của tỷ lệ thất nghiệp theo thời gian, khu vực, đối tượng

IV. Phân tích tỷ lệ thất nghiệp

4.1 Giới thiệu tổng quan

a) Khái niệm

Tỷ lệ thất nghiệp là tỷ số phần trăm giữa số người thất nghiệp và lực lượng lao động trong một quốc gia, khu vực hoặc nhóm dân số cụ thể.

b) Nội dung

Diễn biến:

  • Tỷ lệ thất nghiệp trong độ tuổi lao động của Việt Nam từ năm 2020 đến 2023 có xu hướng giảm.

  • Năm 2020, tỷ lệ thất nghiệp ở mức cao nhất (2,28%) do ảnh hưởng của đại dịch Covid-19.

  • Năm 2021, tỷ lệ thất nghiệp tăng nhẹ (2,34%) do các đợt bùng phát dịch Covid-19 tiếp tục diễn ra.

  • Năm 2022, tỷ lệ thất nghiệp giảm nhẹ (2,28%) nhờ vào sự phục hồi của kinh tế và các giải pháp hỗ trợ của Chính phủ.

  • Năm 2023, tỷ lệ thất nghiệp dự kiến tiếp tục giảm (2,25%) và có thể trở lại mức trước đại dịch.

Điểm tích cực:

Tỷ lệ thất nghiệp giảm cho thấy sự phục hồi của nền kinh tế sau đại dịch Covid-19. Các giải pháp của Chính phủ như hỗ trợ đào tạo, dạy nghề, tạo việc làm đã phát huy hiệu quả.

Hạn chế:

  • Tỷ lệ thất nghiệp vẫn ở mức cao so với các nước trong khu vực. Nhóm lao động trẻ (15-24 tuổi) có tỷ lệ thất nghiệp cao hơn so với nhóm lao động độ tuổi khác.

  • Tỷ lệ thất nghiệp ở khu vực thành thị cao hơn khu vực nông thôn.

# Tạo dataframe từ vectơ chứa dữ liệu
data <- data.frame(Năm = c("2020", "2021", "2022", "2023"),
                  `Số người thất nghiệp` = c(1270.7, 1488.5, 1100.2, 1083.7))

Lực lượng lao động

head(data)
Năm Số.người.thất.nghiệp
2020 1270.7
2021 1488.5
2022 1100.2
2023 1083.7

Giới thiệu về bộ dữ liệu

library(xlsx)
## Warning: package 'xlsx' was built under R version 4.3.3
dq <- read.xlsx(file.choose(), sheetIndex = 1, header = T)
  • Đọc dữ liệu từ excel và gán vào object dq
is.data.frame(dq)
## [1] TRUE
  • Kiểm tra xem “dq” có phải là data frame hay không, nếu đúng thì TRUE và ngược lại
length(dq)
## [1] 29

cho ra kết quả độ dài, ở đây là số cột của “dq”: 29 cột

names(dq) 
##  [1] "NA."               "Quý.I..năm.2020"   "Quý.II..năm.2020" 
##  [4] "X6.tháng.năm.2020" "Quý.III..năm.2020" "X9.tháng.năm.2020"
##  [7] "Quý.IV.năm.2020"   "Năm.2020"          "Quý.I..năm.2021"  
## [10] "Quý.II..năm.2021"  "X6.tháng.năm.2021" "Quý.III..năm.2021"
## [13] "X9.tháng.năm.2021" "Quý.IV.năm.2021"   "Năm.2021"         
## [16] "Quý.I..năm.2022"   "Quý.II..năm.2022"  "X6.tháng.năm.2022"
## [19] "Quý.III..năm.2022" "X9.tháng.năm.2022" "Quý.IV.năm.2022"  
## [22] "Năm.2022"          "Quý.I..năm.2023"   "Quý.II..năm.2023" 
## [25] "X6.tháng.năm.2023" "Quý.III..năm.2023" "X9.tháng.năm.2023"
## [28] "Quý.IV.năm.2023"   "Năm.2023"
  • Cho ra tên các cột của “dq”

  • Các cột là từng quý của các năm từ 2020-2023

dim(dq) 
## [1] 91 29
  • Bộ dữ liệu này gồm có 91 hàng và 29 cột

Xác định các thông tin của dq

Thực hiện thống kê mô tả datasets này ta được kết quả như sau, ý nghĩa các cột:

  • n_missing: số ô dư liệu trống

  • complete_rate: tỷ lệ ô có dữ liệu

  • mean: trung bình

  • sd: độ lệch chuẩn

  • p0: giá trị nhỏ nhất

  • p25: Phân vị thứ nhất

  • p50: Phân vị thứ hai cũng chính là trung vị

  • p75: phân vị thứ ba

  • p100: giá trị lớn nhất

  • hist: biểu đồ Histogram

library(skimr)
skim(dq)
Data summary
Name dq
Number of rows 91
Number of columns 29
_______________________
Column type frequency:
character 25
numeric 4
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
NA. 0 1.00 4 70 0 25 0
Quý.I..năm.2020 24 0.74 0 16 1 67 0
Quý.II..năm.2020 22 0.76 0 16 1 68 0
X6.tháng.năm.2020 24 0.74 0 16 1 65 0
Quý.III..năm.2020 24 0.74 0 16 1 67 0
X9.tháng.năm.2020 24 0.74 0 16 1 67 0
Quý.IV.năm.2020 24 0.74 0 16 1 67 0
Năm.2020 25 0.73 0 16 1 66 0
Quý.I..năm.2021 24 0.74 0 16 1 67 0
Quý.II..năm.2021 24 0.74 0 16 1 66 0
X6.tháng.năm.2021 24 0.74 0 16 1 65 0
Quý.III..năm.2021 24 0.74 0 16 1 67 0
X9.tháng.năm.2021 24 0.74 0 16 1 67 0
Quý.IV.năm.2021 24 0.74 0 16 1 66 0
Năm.2021 24 0.74 0 16 1 67 0
Quý.I..năm.2022 24 0.74 0 16 1 67 0
Quý.II..năm.2022 24 0.74 0 16 1 64 0
X6.tháng.năm.2022 24 0.74 0 16 1 66 0
Quý.III..năm.2022 24 0.74 0 16 1 67 0
X9.tháng.năm.2022 24 0.74 0 16 1 67 0
Quý.IV.năm.2022 24 0.74 0 16 1 67 0
Năm.2022 24 0.74 0 16 1 67 0
Quý.I..năm.2023 24 0.74 0 16 1 66 0
Quý.II..năm.2023 24 0.74 0 16 1 67 0
X6.tháng.năm.2023 24 0.74 0 16 1 65 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
Quý.III..năm.2023 25 0.73 9703.71 14541.12 1.83 7.45 435.45 19459.93 52416.10 ▇▁▂▁▁
X9.tháng.năm.2023 25 0.73 9687.38 14509.86 1.60 7.23 428.95 19378.57 52318.70 ▇▁▂▁▁
Quý.IV.năm.2023 25 0.73 9728.20 14583.40 1.61 7.41 431.43 19509.57 52529.61 ▇▁▂▁▁
Năm.2023 25 0.73 9697.60 14528.15 1.61 7.27 429.55 19411.36 52371.39 ▇▁▂▁▁

4.2 Số người thất nghiệp trong độ tuổi lao động

a) Biểu đồ cột

# Load required library
library(ggplot2)
# Tạo dataframe từ vectơ chứa dữ liệu
data <- data.frame(Nam = c("2020", "2021", "2022", "2023"),
                   So_nguoi_that_nghiep = c(1270.7, 1488.5, 1100.2, 1083.7),
                   So_nguoi_that_nghiep_trong_do_tuoi_lao_dong = c(1233.2, 1428.5, 1079.9, 1065.3))
# Tăng kích thước biểu đồ
options(repr.plot.width = 20, repr.plot.height = 10)
ggplot(data, aes(x = Nam)) +
  geom_col(aes(y = So_nguoi_that_nghiep), fill = "skyblue", alpha = 0.7, position = position_dodge(width = 5)) +
  geom_line(aes(y = So_nguoi_that_nghiep_trong_do_tuoi_lao_dong, group = 1, color = "Số người thất nghiệp trong độ tuổi lao động"), size = 1.5) +
  geom_point(aes(y = So_nguoi_that_nghiep_trong_do_tuoi_lao_dong, color = "Số người thất nghiệp trong độ tuổi lao động"), size = 3) +
  labs(title = "Số người thất nghiệp theo năm và độ tuổi lao động",
       x = "Năm",
       y = "Nghìn người",
       color = "Chú thích") +
  theme_minimal() +
  scale_color_manual(values = c("Số người thất nghiệp trong độ tuổi lao động" = "orange")) +
  guides(color = guide_legend(title = "Loại số liệu")) +  
  theme(text = element_text(size=20))  
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Nhận xét - Thông qua biểu đồ ta nhìn thấy được số người thất nghiệp qua từng năm từ 2020 - 2023, những người này đều trong độ tuổi lao động

  • Ở năm 2021 số người thất nghiệp ở mức cao nhất gần chạm đến 1500 nghìn người

  • Năm 2022 và 2023 thì con số đó đã được giảm xuống và số liệu 2 năm này là tương đối bằng nhau

  • Tính chung năm 2023, cả nước có hơn 1000 nghìn người thất nghiệp trong độ tuổi lao động, giảm 14,6 nghìn người so với năm trước. Tỷ lệ thất nghiệp trong độ tuổi lao động năm 2023 là 2,28%, giảm 0,06 điểm phần trăm so với năm trước.

b) Tỷ lệ phần trăm

# Load required library
library(ggplot2)
# Tạo dataframe từ vectơ chứa dữ liệu
data <- data.frame(Nam = c("2020", "2021", "2022", "2023"),
                   So_nguoi_that_nghiep = c(1270.7, 1488.5, 1100.2, 1083.7),
                   So_thanh_nien_tu_15_den_24_tuoi  = c(444.5, 435.4, 406.1, 437.3))

Phương pháp tính toán:

Tỷ lệ thất nghiệp = (Số người thất nghiệp / Lực lượng lao động) x 100%

# Tạo biến lưu trữ tổng số người thất nghiệp
tong_so_nguoi_that_nghiep <- 33946.27
 

# Tạo biến lưu trữ tổng số thanh niên thất nghiệp
tong_thanh_nien_that_nghiep <- 11891.42
  

# Tính tỷ lệ phần trăm
ty_le_phan_tram <- (tong_thanh_nien_that_nghiep / tong_so_nguoi_that_nghiep) * 100

# In kết quả
print(paste("Tỷ lệ phần trăm thanh niên thất nghiệp:", ty_le_phan_tram, "%"))
## [1] "Tỷ lệ phần trăm thanh niên thất nghiệp: 35.0301226025717 %"

Nhận xét

  • Tỷ lệ 35.0301226025717% là một con số cao và đáng lo ngại. Nó cho thấy rằng hơn 1/3 thanh niên trong độ tuổi lao động không có việc làm.

Tác động:

  • Tỷ lệ thất nghiệp cao có thể dẫn đến nhiều vấn đề xã hội: Ví dụ như bất ổn xã hội, gia tăng tội phạm, và ảnh hưởng đến sức khỏe tinh thần của thanh niên.

  • Tỷ lệ thất nghiệp cao cũng có thể ảnh hưởng đến nền kinh tế: Ví dụ như giảm năng suất lao động và thu hẹp thị trường tiêu dùng.

Nguyên nhân:

  • Có nhiều nguyên nhân dẫn đến tỷ lệ thất nghiệp thanh niên cao: Ví dụ như thiếu kỹ năng, thiếu kinh nghiệm, và sự cạnh tranh cao trong thị trường lao động.

  • Dịch COVID-19 cũng có thể góp phần làm tăng tỷ lệ thất nghiệp thanh niên: Do nhiều doanh nghiệp phải đóng cửa hoặc thu hẹp quy mô hoạt động.

Giải pháp:

  • Cần có nhiều giải pháp để giảm tỷ lệ thất nghiệp thanh niên: Ví dụ như cải thiện hệ thống giáo dục và đào tạo, tạo ra nhiều việc làm hơn, và hỗ trợ khởi nghiệp cho thanh niên.

c) Biểu đồ tròn

# Tạo biểu đồ tròn
pie_data <- c(ty_le_phan_tram, 100 - ty_le_phan_tram)
names(pie_data) <- c("Thanh niên thất nghiệp", "Người khác")
# Vẽ biểu đồ tròn
pie(pie_data, main = "Tỷ lệ phần trăm thanh niên thất nghiệp từ 15 đến 24 tuổi\ntrong tổng số người thất nghiệp trong 4 năm", labels = c(sprintf("%.1f%%", ty_le_phan_tram), sprintf("%.1f%%", 100 - ty_le_phan_tram)))
legend("topright", legend = c("Thanh niên thất nghiệp", "Người khác"), fill = c("lightblue", "lightgreen"))

Nhận xét

Ta có thể thấy rằng số thanh niên thất nghiệp trong độ tuổi từ 15-24 là rất lớn chiếm tới 35%. Điều này là một tín hiệu vô cùng xấu đối với cơ cấu lao động của đất nước. Đây là độ tuổi lao động chính, tạo ra nhiều của cải vật chất nhưng điều đáng tiếc là đất nước chúng ta vẫn chưa thế tạo ra những cơ hội để tận dụng lực lượng này.

4.3 Tỷ lệ thất nghiệp theo giới tính và theo vị trí

a) Tỷ lệ thất nghiệp nam và nữ 2020-2023

# Import gói ggplot2
library(ggplot2)
# Dữ liệu
nam_thanh_thi <- c(3.82, 4.33, 2.82, 2.73)
nu_thanh_thi <- c(2.04, 2.50, 2.04, 2.00)
nam_nong_thon <- c(2.19, 3.15, 2.36, 2.31)
nu_nong_thon <- c(3.27, 3.26, 2.32, 2.24)
years <- c(2020, 2021, 2022, 2023)
# Tạo dataframe từ dữ liệu
data <- data.frame(
  nam_thanh_thi = nam_thanh_thi,
  nu_thanh_thi = nu_thanh_thi,
  nam_nong_thon = nam_nong_thon,
  nu_nong_thon = nu_nong_thon,
  years = years
)
# Tăng kích thước biểu đồ
options(repr.plot.width = 10, repr.plot.height = 10)
# Biểu đồ 1: Nam và Nữ
ggplot(data, aes(x = nam_thanh_thi, y = nu_thanh_thi)) +
  geom_point(aes(color = "Thành thị"), size = 3) +
  geom_point(aes(x = nam_nong_thon, y = nu_nong_thon, color = "Nông thôn"), size = 3) +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  labs(title = "Tỉ lệ thất nghiệp nam và nữ",
       x = "Nam",
       y = "Nữ",
       color = "Loại") +  # Đặt tên cho chú thích
  theme_minimal() +
  theme(text = element_text(size = 12)) +  # Tăng cỡ chữ
  scale_color_manual(values = c("blue", "red"), labels = c("Thành thị", "Nông thôn"))  # Đặt nhãn cho chú thích
## `geom_smooth()` using formula = 'y ~ x'

Nhận xét:

  • Tỷ lệ thất nghiệp của cả nam và nữ đều có xu hướng giảm trong giai đoạn 2020-2023.

  • Tỷ lệ thất nghiệp của nam luôn cao hơn tỷ lệ thất nghiệp của nữ trong giai đoạn này.

Nguyên nhân:

  • Cơ cấu ngành nghề: Nam giới thường làm việc trong các ngành chịu ảnh hưởng nặng nề bởi dịch COVID-19 như du lịch, dịch vụ, sản xuất.

  • Kỹ năng: Nữ giới thường có kỹ năng phù hợp với các ngành ít bị ảnh hưởng bởi dịch COVID-19 như y tế, giáo dục, hành chính.

  • Chăm sóc gia đình: Nữ giới thường gánh vác trách nhiệm chăm sóc gia đình nhiều hơn nam giới, nên có thể ưu tiên các công việc có thời gian linh hoạt hơn.

b) Tỷ lệ thất nghiệp ở thành thị và nông thôn 2020-2023

# Biểu đồ 2: Thành thị và Nông thôn
ggplot(data, aes(x = nam_thanh_thi, y = nam_nong_thon)) +
  geom_point(aes(color = "Nam"), size = 3) +
  geom_point(aes(x = nu_thanh_thi, y = nu_nong_thon, color = "Nữ"), size = 3) +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  labs(title = "Tỉ lệ thất nghiệp thành thị và nông thôn",
       x = "Thành thị",
       y = "Nông thôn",
       color = "Loại") +  # Đặt tên cho chú thích
  theme_minimal() +
  theme(text = element_text(size = 12)) +  # Tăng cỡ chữ
  scale_color_manual(values = c("blue", "red"), labels = c("Nam", "Nữ"))  # Đặt nhãn cho chú thích
## `geom_smooth()` using formula = 'y ~ x'

=> Tỷ lệ thất nghiệp ở Việt Nam có xu hướng giảm trong giai đoạn 2020-2023, tuy nhiên tỷ lệ thất nghiệp ở thành thị cao hơn và khoảng cách tỷ lệ thất nghiệp giữa nam và nữ ở thành thị lớn hơn so với ở nông thôn. Cần có các giải pháp hỗ trợ việc làm cho cả nam và nữ ở thành thị, đặc biệt là nam giới trong các ngành bị ảnh hưởng bởi dịch COVID-19.

Kết luận

  • Như vậy ta có thể thấy rằng sự khác biệt rõ rệt

  • Giữa nam và nữ: số lượng người có giới tính nữ không có việc làm luôn cao hơn nam qua mọi năm, điều này cũng dễ hiểu khi lực lượng lao động là nam chiếm ưu thế bởi sức khỏe, các chế độ như thai sản,… luôn ít hơn so với nữ

  • Giữa thành thị và nông thôn: Việc làm ở thành thị phụ thuộc phần lớn vào tình hình kinh tế và chính trị như đại dịch, suy thoái,.. nên tỷ lệ này luôn bất ổn định theo tình hình đó. Những người ở khu vực nông thôn ít ảnh hưởng bởi yếu tố kể trên và họ cũng có thể có đa dạng công việc hơn

V. Kết luận

5.1 Kết quả

  • Tỷ lệ thất nghiệp có xu hướng tăng nhẹ từ năm 2020 đến năm 2021, sau đó giảm nhẹ trong năm 2022 và 2023 (6 tháng đầu năm).

  • So với các năm trước, tỷ lệ thất nghiệp năm 2020-2023 vẫn ở mức cao.

  • Có sự khác biệt về tỷ lệ thất nghiệp giữa các khu vực:

  • Khu vực thành thị: Tỷ lệ thất nghiệp cao hơn so với khu vực nông thôn.

  • Giữa các nhóm lao động: Tỷ lệ thất nghiệp cao hơn ở nhóm lao động trẻ, có trình độ học vấn thấp và ở các ngành nghề bị ảnh hưởng bởi dịch COVID-19.

5.2 Nguyên nhân

  • Dịch COVID-19: Ảnh hưởng tiêu cực đến thị trường lao động, khiến nhiều doanh nghiệp phải thu hẹp hoạt động, cắt giảm nhân sự.

  • Cơ cấu kinh tế: Chuyển dịch sang các ngành dịch vụ và công nghiệp, đòi hỏi lao động có kỹ năng cao hơn.

  • Nhu cầu lao động: Không đồng đều giữa các ngành nghề và khu vực.

5.3 Giải pháp

a) Giải pháp về phía Chính phủ:

  • Tăng cường đầu tư cho phát triển kinh tế.

  • Phát triển các ngành kinh tế có tiềm năng, tạo ra nhiều việc làm.

  • Cải thiện môi trường đầu tư kinh doanh, thu hút đầu tư trong và ngoài nước.

  • Mở rộng các chương trình hỗ trợ việc làm cho người lao động thất nghiệp.

  • Hỗ trợ người lao động khởi nghiệp, tạo dựng việc làm.

b) Giải pháp về phía doanh nghiệp:

  • Mở rộng sản xuất kinh doanh, tạo ra nhiều việc làm.

  • Tận dụng cơ hội từ các Hiệp định thương mại tự do.

  • Đầu tư vào khoa học công nghệ, nâng cao năng suất lao động.

  • Thực hiện các chế độ phúc lợi cho người lao động.

  • Tạo môi trường làm việc tốt cho người lao động.

  • Đảm bảo an toàn lao động.

  • Coi trọng đời sống tinh thần của người lao động.

c) Giải pháp về phía người lao động:

  • Nâng cao trình độ chuyên môn và kỹ năng nghề nghiệp.

  • Tham gia các khóa đào tạo, học nghề.

  • Tự học tập và rèn luyện kỹ năng.

  • Khởi nghiệp, tự tạo việc làm

5.4 Kết luận

  • Tỷ lệ thất nghiệp là một vấn đề cần được quan tâm và giải quyết.

  • Cần có sự chung tay của chính phủ, doanh nghiệp, và xã hội để giảm tỷ lệ thất nghiệp và tạo ra nhiều việc làm hơn cho người lao động.

  • Ngoài ra:

  • Tác động của dịch COVID-19: Dịch COVID-19 đã ảnh hưởng đến thị trường lao động một cách nghiêm trọng. Nhiều doanh nghiệp phải đóng cửa hoặc thu hẹp hoạt động, dẫn đến việc cắt giảm nhân sự. Điều này khiến cho tỷ lệ thất nghiệp tăng cao.

  • Chuyển đổi cơ cấu kinh tế: Cơ cấu kinh tế Việt Nam đang chuyển dịch từ nông nghiệp sang công nghiệp và dịch vụ. Điều này đòi hỏi lao động phải có kỹ năng cao hơn để đáp ứng nhu cầu của thị trường lao động. Nhu cầu lao động không đồng đều: Nhu cầu lao động giữa các ngành nghề và khu vực không đồng đều. Một số ngành nghề thiếu lao động trong khi một số ngành nghề khác lại có dư thừa lao động.

  • Để giải quyết vấn đề thất nghiệp:

  • Chính phủ cần có những chính sách hỗ trợ doanh nghiệp: Giúp doanh nghiệp duy trì hoạt động, tạo việc làm cho người lao động.

  • Cần tăng cường đào tạo nghề: Nâng cao kỹ năng cho lao động, đáp ứng nhu cầu thị trường.

  • Cần tăng cường giới thiệu việc làm: Kết nối người lao động với các cơ hội việc làm phù hợp.

VI. Tài liệu tham khảo

  1. Trần Mạnh Tường. Data manipulation và Data Visualization.
  2. Tổng cục Thống kê Việt Nam: https://www.gso.gov.vn/
LS0tDQp0aXRsZTogIlRJ4buCVSBMVeG6rE4iDQphdXRob3I6ICJOZ3V54buFbiBEaeG7hW0gUXXhu7NuaCINCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVIOiVNOiVTLCAlZCAtICVtIC0gJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBkZl9wcmludDoga2FibGUNCiAgICBoaWdobGlnaHQ6IHRhbmdvDQogICAgY29kZV9mb2xkaW5nOiBzaG93DQogIHdvcmRfZG9jdW1lbnQ6DQogICAgdG9jOiB0cnVlDQogICAgdG9jX2RlcHRoOiAnMScNCiAgcGRmX2RvY3VtZW50Og0KICAgIGV4dHJhX2RlcGVuZGVuY2llczoNCiAgICAgIHZpZXRuYW06IHV0ZjgNCiAgICB0b2M6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldCgNCiAgY2xhc3Muc291cmNlID0gIm51bWJlckxpbmVzIGxpbmVBbmNob3JzIiwgDQogIGNsYXNzLm91dHB1dCA9IGMoIm51bWJlckxpbmVzIGxpbmVBbmNob3JzIGNodW5rb3V0IikgDQopDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHNjYWxlcykNCmxpYnJhcnkoRFQpDQoNCmBgYA0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQpkaXYuc291cmNlQ29kZSBwcmUuY2h1bmtvdXQgew0KICBiYWNrZ3JvdW5kOiB3aGl0ZTsNCn0NCmBgYA0KIA0KDQojIFBIw4JOIFTDjUNIIFThu7YgTOG7hiBUSOG6pFQgTkdISeG7hlAg4bueIE7Gr+G7mkMgVEEgTsSCTSAyMDIwIC0gMjAyMw0KDQojIEkuIEZJTEUgREFUQQ0KDQpodHRwczovL2RyaXZlLmdvb2dsZS5jb20vZHJpdmUvZm9sZGVycy8xc1RHbUpNV1JIdFZpM25HRUF1aTJ1U1V1Mld6bkNuS0YNCg0KIyBJSS4gTOG7nWkgY+G6o20gxqFuDQoNCkzhu51pIMSR4bqndSB0acOqbiwgZW0geGluIGfhu61pIGzhu51pIGPhuqNtIMahbiBjaMOibiB0aMOgbmggbmjhuqV0IMSR4bq/biBHaeG6o25nIHZpw6puIOKAkyBUaFMuVHLhuqduIE3huqFuaCBUxrDhu51uZy4gVHJvbmcgcXXDoSB0csOsbmggaOG7jWMgdOG6rXAgdsOgIHTDrG0gaGnhu4N1IGLhu5kgbcO0biDigJxOZ8O0biBuZ+G7ryBs4bqtcCB0csOsbmggdsOgIHBow6JuIHTDrWNoIGThu68gbGnhu4d14oCdLCBlbSDEkcOjIG5o4bqtbiDEkcaw4bujYyBz4buxIHF1YW4gdMOibSBnacO6cCDEkeG7oSwgaMaw4bubbmcgZOG6q24gcuG6pXQgdOG6rW4gdMOsbmgsIHTDom0gaHV54bq/dCBj4bunYSB0aOG6p3kuIFRo4bqneSDEkcOjIGdpw7pwIGVtIHTDrWNoIGzFqXkgdGjDqm0gbmhp4buBdSBraeG6v24gdGjhu6ljIMSR4buDIGPDsyBjw6FpIG5ow6xuIHPDonUgc+G6r2MgdsOgIGhvw6BuIHRoaeG7h24gaMahbiB24buBIGLhu5kgbcO0biBuw6B5LiBU4burIG5o4buvbmcga2nhur9uIHRo4bupYyBtw6AgdGjhuqd5IHRydXnhu4FuIHThuqNpLCBjaMO6bmcgZW0gxJHDoyBk4bqnbiBoaeG7g3UgxJHGsOG7o2MgdOG6p20gcXVhbiB0cuG7jW5nIGPhu6dhIG5nw7RuIG5n4buvIGzhuq1wIHRyw6xuaCBSIG7DoHkgbcOgIGLhuqV5IGzDonUgbmF5IGPDsm4gbmhp4buBdSB0aOG6r2MgbeG6r2MgdsOgIGNoxrBhIHLDtS4gTmjhuq1uIG5oaeG7h20gduG7pSBj4bunYSB0aOG6p3ksIHRow7RuZyBxdWEgYsOgaSB0aeG7g3UgbHXhuq1uIG7DoHkgZW0geGluIHRyw6xuaCBiw6B5IG5o4buvbmcgZ8OsIG3DoCBlbSDEkcOjIHTDrG0gaGnhu4N1IHbhu4EgbcO0biBo4buNYywgdsOgIGPhu6UgdGjhu4MgaMahbiDhu58gxJHDonkgZW0gbOG7sWEgY2jhu41uIMSR4buBIHTDoGkg4oCcUGjDom4gdMOtY2ggdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCDhu58gbsaw4bubYyB0YSBuxINtIDIwMjAgxJHhur9uIDIwMjPigJ0uDQoNCkPDsyBs4bq9IGtp4bq/biB0aOG7qWMgbMOgIHbDtCBo4bqhbiBtw6Agc+G7sSB0aeG6v3Agbmjhuq1uIGtp4bq/biB0aOG7qWMgY+G7p2EgYuG6o24gdGjDom4gbeG7l2kgbmfGsOG7nWkgbHXDtG4gdOG7k24gdOG6oWkgbmjhu69uZyBo4bqhbiBjaOG6vyBuaOG6pXQgxJHhu4tuaC4gRG8gxJHDsywgdHJvbmcgcXXDoSB0csOsbmggaG/DoG4gdGjDoG5oIGLDoGkgdGnhu4N1IGx14bqtbiwgY2jhuq9jIGNo4bqvbiBlbSBraMO0bmcgdHLDoW5oIGto4buPaSBuaOG7r25nIHRoaeG6v3Ugc8OzdC4gVsOsIHbhuq15LCBlbSBy4bqldCBtb25nIG5o4bqtbiDEkcaw4bujYyBuaOG7r25nIMSRw7NuZyBnw7NwIMSR4bq/biB04burIHRo4bqneSDEkeG7gyBiw6BpIHRp4buDdSBsdeG6rW4gY+G7p2EgbmjDs20gxJHGsOG7o2MgaG/DoG4gdGhp4buHbiBoxqFuLg0KDQpLw61uaCBjaMO6YyB0aOG6p3kgc+G7qWMga2jhu49lLCBo4bqhbmggcGjDumMgdsOgIHRow6BuaCBjw7RuZyB0csOqbiBjb24gxJHGsOG7nW5nIHPhu7EgbmdoaeG7h3AgZ2nhuqNuZyBk4bqheSBj4bunYSBtw6xuaC4NCg0KIyBJSUkuIFBo4bqnbiBt4bufIMSR4bqndQ0KDQpEw6JuIHPhu5EgVmnhu4d0IE5hbSBjw7Mgbmjhu69uZyBiaeG6v24gxJHhu5VpIG5ow6JuIGto4bqpdSBo4buNYyBt4bqhbmggbeG6vSB24bubaSBt4buZdCBz4buRIMSR4bq3YyB0csawbmcgbuG7lWkgYuG6rXQ6IETDom4gc+G7kSDEkWFuZyB0cm9uZyB0aOG7nWkga+G7syBjxqEgY+G6pXUgZMOibiBz4buRIHbDoG5nLCB4dSBoxrDhu5tuZyBnacOgIGjDs2EgZMOibiBz4buRIHbhuqtuIMSRYW5nIGRp4buFbiByYSBuaGFuaCBjaMOzbmc7IHThu5FjIMSR4buZIMSRw7QgdGjhu4sgaMOzYSBjYW87IG3hu6ljIHNpbmggZ2nhuqNtIHh14buRbmcgdGjhuqVwIG5o4bqldCB0cm9uZyBnaWFpIMSRb+G6oW4gMjAyMC0yMDIzOyBjw6FjIGNoxrDGoW5nIHRyw6xuaCBjaMSDbSBzw7NjIHPhu6ljIGtob+G6uyBiw6AgbeG6uSB2w6AgdHLhursgZW0gbsOzaSByacOqbmcgdsOgIGPDtG5nIHTDoWMgYuG6o28gduG7hyBz4bupYyBraG/hurssIG7Dom5nIGNhbyBt4bupYyBz4buRbmcgY2hvIG5ow6JuIGTDom4gbsOzaSBjaHVuZyDEkeG6oXQgxJHGsOG7o2Mgbmjhu69uZyB0aMOgbmggY8O0bmcgbmjhuqV0IMSR4buLbmgsIHThu7cgbOG7hyB04butIHZvbmcg4bufIFZp4buHdCBOYW0gdGnhur9wIHThu6VjIGR1eSB0csOsIOG7nyBt4bupYyB0aOG6pXAsIHR14buVaSB0aOG7jSB0cnVuZyBiw6xuaCBjYW8gdHJvbmcgbmhp4buBdSBuxINtIHRy4bufIGzhuqFpIMSRw6J5Lg0KDQoNCiMjIDMuMSBMw60gZG8gY2jhu41uIMSR4buBIHTDoGkNCg0KIyMjIGEpIFThuqdtIHF1YW4gdHLhu41uZzoNCg0KLSAgIFThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgbMOgIG3hu5l0IGNo4buJIGLDoW8ga2luaCB04bq/IHF1YW4gdHLhu41uZyBwaOG6o24gw6FuaCB0w6xuaCB0cuG6oW5nIHPhu6ljIGto4buPZSBj4bunYSBu4buBbiBraW5oIHThur8uDQoNCi0gICBU4bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGNhbyDhuqNuaCBoxrDhu59uZyDEkeG6v24gc+G7sSDhu5VuIMSR4buLbmggeMOjIGjhu5lpIHbDoCBhbiBuaW5oIHF14buRYyBwaMOybmcuDQpQaMOibiB0w61jaCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGdpw7pwIMSRw6FuaCBnacOhIGhp4buHdSBxdeG6oyBj4bunYSBjw6FjIGNow61uaCBzw6FjaCBraW5oIHThur8gdsOgIHjDoyBo4buZaS4NCg0KIyMjIGIpIFTDrW5oIHRo4buxYyB0aeG7hW46DQoNCi0gICBL4bq/dCBxdeG6oyBwaMOibiB0w61jaCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGPDsyB0aOG7gyDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyDEkeG7gSB4deG6pXQgY8OhYyBnaeG6o2kgcGjDoXAgZ2nhuqNtIHRoaeG7g3UgdGjhuqV0IG5naGnhu4dwLg0KDQotICAgQ8OhYyBnaeG6o2kgcGjDoXAgbsOgeSBnw7NwIHBo4bqnbiBwaMOhdCB0cmnhu4NuIGtpbmggdOG6vyAtIHjDoyBo4buZaSwgbsOibmcgY2FvIMSR4budaSBz4buRbmcgY+G7p2EgbmfGsOG7nWkgZMOibi4NCg0KIyMjIGMpIFTDrW5oIHRo4budaSBz4buxOg0KDQotICAgVOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBsw6AgbeG7mXQgduG6pW4gxJHhu4EgbsOzbmcgaOG7lWkgxJHGsOG7o2MgcXVhbiB0w6JtIGLhu59pIG5oaeG7gXUgbmfGsOG7nWkuDQoNCi0gICBQaMOibiB0w61jaCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGdpw7pwIGN1bmcgY+G6pXAgdGjDtG5nIHRpbiBo4buvdSDDrWNoIGNobyBjw6FjIG5ow6AgaG/huqFjaCDEkeG7i25oIGNow61uaCBzw6FjaCwgZG9hbmggbmdoaeG7h3AgdsOgIG5nxrDhu51pIGxhbyDEkeG7mW5nLg0KDQojIyMgZCkgVMOtbmgga2hvYSBo4buNYzoNCg0KLSAgIFBow6JuIHTDrWNoIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgY8OzIHRo4buDIHPhu60gZOG7pW5nIG5oaeG7gXUgcGjGsMahbmcgcGjDoXAga2hvYSBo4buNYyBraMOhYyBuaGF1Lg0KDQotICAgVmnhu4djIHPhu60gZOG7pW5nIGPDoWMgcGjGsMahbmcgcGjDoXAga2hvYSBo4buNYyBnacO6cCDEkeG6o20gYuG6o28gdMOtbmggY2jDrW5oIHjDoWMgdsOgIGtow6FjaCBxdWFuIGPhu6dhIGvhur90IHF14bqjIHBow6JuIHTDrWNoLg0KDQojIyMgZSkgS2jhuqMgbsSDbmcgw6FwIGThu6VuZzoNCg0KLSAgIEvhur90IHF14bqjIHBow6JuIHTDrWNoIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgY8OzIHRo4buDIMOhcCBk4bulbmcgxJHhu4MgZ2nhuqNpIHF1eeG6v3QgY8OhYyB24bqlbiDEkeG7gSB0aOG7sWMgdOG6vy4NCg0KLSAgIFbDrSBk4bulLCBr4bq/dCBxdeG6oyBwaMOibiB0w61jaCBjw7MgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgaMaw4bubbmcgbmdoaeG7h3AgY2hvIG5nxrDhu51pIGxhbyDEkeG7mW5nLCB0xrAgduG6pW4gY2hvIGRvYW5oIG5naGnhu4dwIHbhu4EgY2hp4bq/biBsxrDhu6NjIHR1eeG7g24gZOG7pW5nLCB2LnYuDQoNCiMjIDMuMiBN4bulYyB0acOqdSBuZ2hpw6puIGPhu6l1DQoNCi0gICBQaMOibiB0w61jaCBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AsIGJhbyBn4buTbSBjw6FjIHnhur91IHThu5Ega2luaCB04bq/LCB4w6MgaOG7mWksIG5ow6JuIGto4bqpdSBo4buNYywgdi52Lg0KDQotICAgxJDDoW5oIGdpw6EgaGnhu4d1IHF14bqjIGPhu6dhIGPDoWMgY2jDrW5oIHPDoWNoIHbDoCBjaMawxqFuZyB0csOsbmggaOG7lyB0cuG7oyBuZ8aw4budaSB0aOG6pXQgbmdoaeG7h3AuDQoNCi0gICBE4buxIGLDoW8geHUgaMaw4bubbmcgY+G7p2EgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB0cm9uZyB0xrDGoW5nIGxhaS4NCg0KLSAgIMSQ4buBIHh14bqldCBjw6FjIGdp4bqjaSBwaMOhcCBwaMO5IGjhu6NwIMSR4buDIGdp4bqjbSB0aGnhu4N1IHRo4bqldCBuZ2hp4buHcCwgYmFvIGfhu5NtIGPDoWMgZ2nhuqNpIHBow6FwIHbhu4EgcGjDoXQgdHJp4buDbiBraW5oIHThur8sIGdpw6FvIGThu6VjIMSRw6BvIHThuqFvLCBhbiBzaW5oIHjDoyBo4buZaSwgDQoNCiMjIDMuMyBQaOG6oW0gdmkgbmdoacOqbiBj4bupdQ0KDQojIyMgYSkgS2h1bmcgdGjhu51pIGdpYW4NCg0KLSAgIFRo4budaSDEkWnhu4NtIGLhuq90IMSR4bqndTogUcO6eSBJIG7Eg20gMjAyMA0KDQotICAgVGjhu51pIMSRaeG7g20ga+G6v3QgdGjDumM6IDYgdGjDoW5nIMSR4bqndSBuxINtIDIwMjMNCg0KIyMjIGIpIFBo4bqhbSB2aSDEkeG7i2EgbMO9Og0KDQotICAgVG/DoG4gcXXhu5FjIFZp4buHdCBOYW0NCg0KLSAgIFBow6JuIHTDrWNoIHRoZW8ga2h1IHbhu7FjICh2w7luZywgbWnhu4FuLCB04buJbmgvdGjDoG5oIHBo4buRKSDEkeG7gyBzbyBzw6FuaCB2w6AgxJHDoW5oIGdpw6ENCg0KIyMjIGMpIMSQ4buRaSB0xrDhu6NuZyBuZ2hpw6puIGPhu6l1Og0KDQotICAgTmfGsOG7nWkgbGFvIMSR4buZbmcgdHJvbmcgxJHhu5kgdHXhu5VpIGxhbyDEkeG7mW5nICh04burIDE1IHR14buVaSDEkeG6v24gNjAgdHXhu5VpKQ0KDQotICAgUGjDom4gdMOtY2ggdGhlbyBjw6FjIG5ow7NtIMSR4buRaSB0xrDhu6NuZyBj4bulIHRo4buDIG5oxrA6DQogICAgDQogICAgKyAgIE5hbSBnaeG7m2kNCiAgICANCiAgICArICAgTuG7ryBnaeG7m2kNCiAgICANCiAgICArICAgTmfGsOG7nWkgbGFvIMSR4buZbmcg4bufIGtodSB24buxYyB0aMOgbmggdGjhu4sNCiAgICANCiAgICArICAgTmfGsOG7nWkgbGFvIMSR4buZbmcg4bufIGtodSB24buxYyBuw7RuZyB0aMO0bg0KICAgIA0KIyMjIGQpIE7hu5lpIGR1bmcgbmdoacOqbiBj4bupdToNCg0KLSAgIFThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3ANCg0KLSAgIMSQ4buLbmggbmdoxKlhLCBwaMawxqFuZyBwaMOhcCB0w61uaCB0b8Ohbg0KDQotICAgQmnhur9uIMSR4buZbmcgY+G7p2EgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB0aGVvIHRo4budaSBnaWFuLCBraHUgduG7sWMsIMSR4buRaSB0xrDhu6NuZw0KDQoNCiMgSVYuIFBow6JuIHTDrWNoIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3ANCg0KIyMgNC4xIEdp4bubaSB0aGnhu4d1IHThu5VuZyBxdWFuDQoNCiMjIyBhKSBLaMOhaSBuaeG7h20NCg0KVOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBsw6AgdOG7tyBz4buRIHBo4bqnbiB0csSDbSBnaeG7r2Egc+G7kSBuZ8aw4budaSB0aOG6pXQgbmdoaeG7h3AgdsOgIGzhu7FjIGzGsOG7o25nIGxhbyDEkeG7mW5nIHRyb25nIG3hu5l0IHF14buRYyBnaWEsIGtodSB24buxYyBob+G6t2MgbmjDs20gZMOibiBz4buRIGPhu6UgdGjhu4MuDQoNCiMjIyBiKSBO4buZaSBkdW5nDQoNCioqRGnhu4VuIGJp4bq/bjoqKg0KDQotIFThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgdHJvbmcgxJHhu5kgdHXhu5VpIGxhbyDEkeG7mW5nIGPhu6dhIFZp4buHdCBOYW0gdOG7qyBuxINtIDIwMjAgxJHhur9uIDIwMjMgY8OzIHh1IGjGsOG7m25nIGdp4bqjbS4NCg0KLSBOxINtIDIwMjAsIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3Ag4bufIG3hu6ljIGNhbyBuaOG6pXQgKDIsMjglKSBkbyDhuqNuaCBoxrDhu59uZyBj4bunYSDEkeG6oWkgZOG7i2NoIENvdmlkLTE5Lg0KDQotICAgTsSDbSAyMDIxLCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHTEg25nIG5o4bq5ICgyLDM0JSkgZG8gY8OhYyDEkeG7o3QgYsO5bmcgcGjDoXQgZOG7i2NoIENvdmlkLTE5IHRp4bq/cCB04bulYyBkaeG7hW4gcmEuDQoNCi0gICBOxINtIDIwMjIsIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgZ2nhuqNtIG5o4bq5ICgyLDI4JSkgbmjhu50gdsOgbyBz4buxIHBo4bulYyBo4buTaSBj4bunYSBraW5oIHThur8gdsOgIGPDoWMgZ2nhuqNpIHBow6FwIGjhu5cgdHLhu6MgY+G7p2EgQ2jDrW5oIHBo4bunLg0KDQotICAgTsSDbSAyMDIzLCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGThu7Ega2nhur9uIHRp4bq/cCB04bulYyBnaeG6o20gKDIsMjUlKSB2w6AgY8OzIHRo4buDIHRy4bufIGzhuqFpIG3hu6ljIHRyxrDhu5tjIMSR4bqhaSBk4buLY2guDQoNCioqxJBp4buDbSB0w61jaCBj4buxYzoqKg0KDQpU4bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGdp4bqjbSBjaG8gdGjhuqV5IHPhu7EgcGjhu6VjIGjhu5NpIGPhu6dhIG7hu4FuIGtpbmggdOG6vyBzYXUgxJHhuqFpIGThu4tjaCBDb3ZpZC0xOS4NCkPDoWMgZ2nhuqNpIHBow6FwIGPhu6dhIENow61uaCBwaOG7pyBuaMawIGjhu5cgdHLhu6MgxJHDoG8gdOG6oW8sIGThuqF5IG5naOG7gSwgdOG6oW8gdmnhu4djIGzDoG0gxJHDoyBwaMOhdCBodXkgaGnhu4d1IHF14bqjLg0KDQoqKkjhuqFuIGNo4bq/OioqDQoNCi0gICBU4bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHbhuqtuIOG7nyBt4bupYyBjYW8gc28gduG7m2kgY8OhYyBuxrDhu5tjIHRyb25nIGtodSB24buxYy4NCk5ow7NtIGxhbyDEkeG7mW5nIHRy4bq7ICgxNS0yNCB0deG7lWkpIGPDsyB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGNhbyBoxqFuIHNvIHbhu5tpIG5ow7NtIGxhbyDEkeG7mW5nIMSR4buZIHR14buVaSBraMOhYy4NCg0KLSAgIFThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3Ag4bufIGtodSB24buxYyB0aMOgbmggdGjhu4sgY2FvIGjGoW4ga2h1IHbhu7FjIG7DtG5nIHRow7RuLg0KYGBge3J9DQojIFThuqFvIGRhdGFmcmFtZSB04burIHZlY3TGoSBjaOG7qWEgZOG7ryBsaeG7h3UNCmRhdGEgPC0gZGF0YS5mcmFtZShOxINtID0gYygiMjAyMCIsICIyMDIxIiwgIjIwMjIiLCAiMjAyMyIpLA0KICAgICAgICAgICAgICAgICAgYFPhu5EgbmfGsOG7nWkgdGjhuqV0IG5naGnhu4dwYCA9IGMoMTI3MC43LCAxNDg4LjUsIDExMDAuMiwgMTA4My43KSkNCmBgYA0KDQoqKkzhu7FjIGzGsOG7o25nIGxhbyDEkeG7mW5nKioNCg0KYGBge3J9DQpoZWFkKGRhdGEpDQpgYGANCioqR2nhu5tpIHRoaeG7h3UgduG7gSBi4buZIGThu68gbGnhu4d1ICoqDQoNCmBgYHtyfSANCmxpYnJhcnkoeGxzeCkNCmRxIDwtIHJlYWQueGxzeChmaWxlLmNob29zZSgpLCBzaGVldEluZGV4ID0gMSwgaGVhZGVyID0gVCkNCg0KYGBgDQoNCi0gICDEkOG7jWMgZOG7ryBsaeG7h3UgdOG7qyBleGNlbCB2w6AgZ8OhbiB2w6BvIG9iamVjdCBkcQ0KDQpgYGB7cn0gDQppcy5kYXRhLmZyYW1lKGRxKQ0KYGBgDQotICAgS2nhu4NtIHRyYSB4ZW0gImRxIiBjw7MgcGjhuqNpIGzDoCBkYXRhIGZyYW1lIGhheSBraMO0bmcsIG7hur91IMSRw7puZyB0aMOsIFRSVUUgdsOgIG5nxrDhu6NjIGzhuqFpDQoNCmBgYHtyLCBlY2hvPVRSVUUgfQ0KbGVuZ3RoKGRxKQ0KYGBgDQpjaG8gcmEga+G6v3QgcXXhuqMgxJHhu5kgZMOgaSwg4bufIMSRw6J5IGzDoCBz4buRIGPhu5l0IGPhu6dhICJkcSI6ICoqMjkgY+G7mXQqKg0KDQpgYGB7ciwgZWNobz1UUlVFIH0NCm5hbWVzKGRxKSANCmBgYA0KLSAgIENobyByYSB0w6puIGPDoWMgY+G7mXQgY+G7p2EgImRxIg0KDQotICAgQ8OhYyBj4buZdCBsw6AgdOG7q25nIHF1w70gY+G7p2EgY8OhYyBuxINtIHThu6sgMjAyMC0yMDIzDQoNCmBgYHtyLCBlY2hvPVRSVUUgfQ0KZGltKGRxKSANCmBgYA0KDQotICAgQuG7mSBk4buvIGxp4buHdSBuw6B5IGfhu5NtIGPDsyA5MSBow6BuZyB2w6AgMjkgY+G7mXQNCg0KKipYw6FjIMSR4buLbmggY8OhYyB0aMO0bmcgdGluIGPhu6dhIGRxKioNCg0KVGjhu7FjIGhp4buHbiB0aOG7kW5nIGvDqiBtw7QgdOG6oyBkYXRhc2V0cyBuw6B5IHRhIMSRxrDhu6NjIGvhur90IHF14bqjIG5oxrAgc2F1LCDDvSBuZ2jEqWEgY8OhYyBj4buZdDoNCg0KLSBuX21pc3Npbmc6IHPhu5Egw7QgZMawIGxp4buHdSB0cuG7kW5nDQoNCi0gY29tcGxldGVfcmF0ZTogdOG7tyBs4buHIMO0IGPDsyBk4buvIGxp4buHdQ0KDQotIG1lYW46IHRydW5nIGLDrG5oDQoNCi0gc2Q6IMSR4buZIGzhu4djaCBjaHXhuqluDQoNCi0gcDA6IGdpw6EgdHLhu4sgbmjhu48gbmjhuqV0DQoNCi0gcDI1OiBQaMOibiB24buLIHRo4bupIG5o4bqldA0KDQotIHA1MDogUGjDom4gduG7iyB0aOG7qSBoYWkgY8WpbmcgY2jDrW5oIGzDoCB0cnVuZyB24buLDQoNCi0gcDc1OiBwaMOibiB24buLIHRo4bupIGJhDQoNCi0gcDEwMDogZ2nDoSB0cuG7iyBs4bubbiBuaOG6pXQNCg0KLSBoaXN0OiBiaeG7g3UgxJHhu5MgSGlzdG9ncmFtDQoNCmBgYHtyfQ0KbGlicmFyeShza2ltcikNCnNraW0oZHEpDQpgYGANCg0KDQojIyA0LjIgU+G7kSBuZ8aw4budaSB0aOG6pXQgbmdoaeG7h3AgdHJvbmcgxJHhu5kgdHXhu5VpIGxhbyDEkeG7mW5nDQoNCiMjIyBhKSBCaeG7g3UgxJHhu5MgY+G7mXQNCmBgYHtyfQ0KIyBMb2FkIHJlcXVpcmVkIGxpYnJhcnkNCmxpYnJhcnkoZ2dwbG90MikNCmBgYA0KDQpgYGB7cn0NCiMgVOG6oW8gZGF0YWZyYW1lIHThu6sgdmVjdMahIGNo4bupYSBk4buvIGxp4buHdQ0KZGF0YSA8LSBkYXRhLmZyYW1lKE5hbSA9IGMoIjIwMjAiLCAiMjAyMSIsICIyMDIyIiwgIjIwMjMiKSwNCiAgICAgICAgICAgICAgICAgICBTb19uZ3VvaV90aGF0X25naGllcCA9IGMoMTI3MC43LCAxNDg4LjUsIDExMDAuMiwgMTA4My43KSwNCiAgICAgICAgICAgICAgICAgICBTb19uZ3VvaV90aGF0X25naGllcF90cm9uZ19kb190dW9pX2xhb19kb25nID0gYygxMjMzLjIsIDE0MjguNSwgMTA3OS45LCAxMDY1LjMpKQ0KYGBgDQoNCmBgYHtyfQ0KIyBUxINuZyBrw61jaCB0aMaw4bubYyBiaeG7g3UgxJHhu5MNCm9wdGlvbnMocmVwci5wbG90LndpZHRoID0gMjAsIHJlcHIucGxvdC5oZWlnaHQgPSAxMCkNCg0KYGBgDQoNCmBgYHtyfQ0KDQpnZ3Bsb3QoZGF0YSwgYWVzKHggPSBOYW0pKSArDQogIGdlb21fY29sKGFlcyh5ID0gU29fbmd1b2lfdGhhdF9uZ2hpZXApLCBmaWxsID0gInNreWJsdWUiLCBhbHBoYSA9IDAuNywgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDUpKSArDQogIGdlb21fbGluZShhZXMoeSA9IFNvX25ndW9pX3RoYXRfbmdoaWVwX3Ryb25nX2RvX3R1b2lfbGFvX2RvbmcsIGdyb3VwID0gMSwgY29sb3IgPSAiU+G7kSBuZ8aw4budaSB0aOG6pXQgbmdoaeG7h3AgdHJvbmcgxJHhu5kgdHXhu5VpIGxhbyDEkeG7mW5nIiksIHNpemUgPSAxLjUpICsNCiAgZ2VvbV9wb2ludChhZXMoeSA9IFNvX25ndW9pX3RoYXRfbmdoaWVwX3Ryb25nX2RvX3R1b2lfbGFvX2RvbmcsIGNvbG9yID0gIlPhu5EgbmfGsOG7nWkgdGjhuqV0IG5naGnhu4dwIHRyb25nIMSR4buZIHR14buVaSBsYW8gxJHhu5luZyIpLCBzaXplID0gMykgKw0KICBsYWJzKHRpdGxlID0gIlPhu5EgbmfGsOG7nWkgdGjhuqV0IG5naGnhu4dwIHRoZW8gbsSDbSB2w6AgxJHhu5kgdHXhu5VpIGxhbyDEkeG7mW5nIiwNCiAgICAgICB4ID0gIk7Eg20iLA0KICAgICAgIHkgPSAiTmdow6xuIG5nxrDhu51pIiwNCiAgICAgICBjb2xvciA9ICJDaMO6IHRow61jaCIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoIlPhu5EgbmfGsOG7nWkgdGjhuqV0IG5naGnhu4dwIHRyb25nIMSR4buZIHR14buVaSBsYW8gxJHhu5luZyIgPSAib3JhbmdlIikpICsNCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKHRpdGxlID0gIkxv4bqhaSBz4buRIGxp4buHdSIpKSArICANCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplPTIwKSkgIA0KDQpgYGANCg0KKipOaOG6rW4geMOpdCoqDQotICAgVGjDtG5nIHF1YSBiaeG7g3UgxJHhu5MgdGEgbmjDrG4gdGjhuqV5IMSRxrDhu6NjIHPhu5EgbmfGsOG7nWkgdGjhuqV0IG5naGnhu4dwIHF1YSB04burbmcgbsSDbSB04burIDIwMjAgLSAyMDIzLCBuaOG7r25nIG5nxrDhu51pIG7DoHkgxJHhu4F1IHRyb25nIMSR4buZIHR14buVaSBsYW8gxJHhu5luZw0KDQotICAgIOG7niBuxINtIDIwMjEgc+G7kSBuZ8aw4budaSB0aOG6pXQgbmdoaeG7h3Ag4bufIG3hu6ljIGNhbyBuaOG6pXQgZ+G6p24gY2jhuqFtIMSR4bq/biAxNTAwIG5naMOsbiBuZ8aw4budaQ0KDQotICAgTsSDbSAyMDIyIHbDoCAyMDIzIHRow6wgY29uIHPhu5EgxJHDsyDEkcOjIMSRxrDhu6NjIGdp4bqjbSB4deG7kW5nIHbDoCBz4buRIGxp4buHdSAyIG7Eg20gbsOgeSBsw6AgdMawxqFuZyDEkeG7kWkgYuG6sW5nIG5oYXUNCg0KLSAgIFTDrW5oIGNodW5nIG7Eg20gMjAyMywgY+G6oyBuxrDhu5tjIGPDsyBoxqFuIDEwMDAgbmdow6xuIG5nxrDhu51pIHRo4bqldCBuZ2hp4buHcCB0cm9uZyDEkeG7mSB0deG7lWkgbGFvIMSR4buZbmcsIGdp4bqjbSAxNCw2IG5naMOsbiBuZ8aw4budaSBzbyB24bubaSBuxINtIHRyxrDhu5tjLiBU4bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHRyb25nIMSR4buZIHR14buVaSBsYW8gxJHhu5luZyBuxINtIDIwMjMgbMOgIDIsMjglLCBnaeG6o20gMCwwNiDEkWnhu4NtIHBo4bqnbiB0csSDbSBzbyB24bubaSBuxINtIHRyxrDhu5tjLg0KDQojIyMgYikgVOG7tyBs4buHIHBo4bqnbiB0csSDbQ0KDQpgYGB7cn0NCiMgTG9hZCByZXF1aXJlZCBsaWJyYXJ5DQpsaWJyYXJ5KGdncGxvdDIpDQpgYGANCg0KYGBge3J9DQojIFThuqFvIGRhdGFmcmFtZSB04burIHZlY3TGoSBjaOG7qWEgZOG7ryBsaeG7h3UNCmRhdGEgPC0gZGF0YS5mcmFtZShOYW0gPSBjKCIyMDIwIiwgIjIwMjEiLCAiMjAyMiIsICIyMDIzIiksDQogICAgICAgICAgICAgICAgICAgU29fbmd1b2lfdGhhdF9uZ2hpZXAgPSBjKDEyNzAuNywgMTQ4OC41LCAxMTAwLjIsIDEwODMuNyksDQogICAgICAgICAgICAgICAgICAgU29fdGhhbmhfbmllbl90dV8xNV9kZW5fMjRfdHVvaSAgPSBjKDQ0NC41LCA0MzUuNCwgNDA2LjEsIDQzNy4zKSkNCmBgYA0KDQoqKlBoxrDGoW5nIHBow6FwIHTDrW5oIHRvw6FuOioqDQoNClThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgPSAoU+G7kSBuZ8aw4budaSB0aOG6pXQgbmdoaeG7h3AgLyBM4buxYyBsxrDhu6NuZyBsYW8gxJHhu5luZykgeCAxMDAlDQoNCg0KYGBge3J9DQojIFThuqFvIGJp4bq/biBsxrB1IHRy4buvIHThu5VuZyBz4buRIG5nxrDhu51pIHRo4bqldCBuZ2hp4buHcA0KdG9uZ19zb19uZ3VvaV90aGF0X25naGllcCA8LSAzMzk0Ni4yNw0KIA0KDQojIFThuqFvIGJp4bq/biBsxrB1IHRy4buvIHThu5VuZyBz4buRIHRoYW5oIG5pw6puIHRo4bqldCBuZ2hp4buHcA0KdG9uZ190aGFuaF9uaWVuX3RoYXRfbmdoaWVwIDwtIDExODkxLjQyDQogIA0KDQojIFTDrW5oIHThu7cgbOG7hyBwaOG6p24gdHLEg20NCnR5X2xlX3BoYW5fdHJhbSA8LSAodG9uZ190aGFuaF9uaWVuX3RoYXRfbmdoaWVwIC8gdG9uZ19zb19uZ3VvaV90aGF0X25naGllcCkgKiAxMDANCg0KIyBJbiBr4bq/dCBxdeG6ow0KcHJpbnQocGFzdGUoIlThu7cgbOG7hyBwaOG6p24gdHLEg20gdGhhbmggbmnDqm4gdGjhuqV0IG5naGnhu4dwOiIsIHR5X2xlX3BoYW5fdHJhbSwgIiUiKSkNCg0KYGBgDQoqKk5o4bqtbiB4w6l0KioNCg0KLSAgIFThu7cgbOG7hyAzNS4wMzAxMjI2MDI1NzE3JSBsw6AgbeG7mXQgY29uIHPhu5EgY2FvIHbDoCDEkcOhbmcgbG8gbmfhuqFpLiBOw7MgY2hvIHRo4bqleSBy4bqxbmcgaMahbiAxLzMgdGhhbmggbmnDqm4gdHJvbmcgxJHhu5kgdHXhu5VpIGxhbyDEkeG7mW5nIGtow7RuZyBjw7Mgdmnhu4djIGzDoG0uDQoNCioqVMOhYyDEkeG7mW5nOioqDQoNCi0gICBU4bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGNhbyBjw7MgdGjhu4MgZOG6q24gxJHhur9uIG5oaeG7gXUgduG6pW4gxJHhu4EgeMOjIGjhu5lpOiBWw60gZOG7pSBuaMawIGLhuqV0IOG7lW4geMOjIGjhu5lpLCBnaWEgdMSDbmcgdOG7mWkgcGjhuqFtLCB2w6Ag4bqjbmggaMaw4bufbmcgxJHhur9uIHPhu6ljIGto4buPZSB0aW5oIHRo4bqnbiBj4bunYSB0aGFuaCBuacOqbi4NCg0KLSAgIFThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgY2FvIGPFqW5nIGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24gbuG7gW4ga2luaCB04bq/OiBWw60gZOG7pSBuaMawIGdp4bqjbSBuxINuZyBzdeG6pXQgbGFvIMSR4buZbmcgdsOgIHRodSBo4bq5cCB0aOG7iyB0csaw4budbmcgdGnDqnUgZMO5bmcuDQoNCioqTmd1ecOqbiBuaMOibjoqKg0KDQotICAgQ8OzIG5oaeG7gXUgbmd1ecOqbiBuaMOibiBk4bqrbiDEkeG6v24gdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB0aGFuaCBuacOqbiBjYW86IFbDrSBk4bulIG5oxrAgdGhp4bq/dSBr4bu5IG7Eg25nLCB0aGnhur91IGtpbmggbmdoaeG7h20sIHbDoCBz4buxIGPhuqFuaCB0cmFuaCBjYW8gdHJvbmcgdGjhu4sgdHLGsOG7nW5nIGxhbyDEkeG7mW5nLg0KDQotICAgROG7i2NoIENPVklELTE5IGPFqW5nIGPDsyB0aOG7gyBnw7NwIHBo4bqnbiBsw6BtIHTEg25nIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgdGhhbmggbmnDqm46IERvIG5oaeG7gXUgZG9hbmggbmdoaeG7h3AgcGjhuqNpIMSRw7NuZyBj4butYSBob+G6t2MgdGh1IGjhurlwIHF1eSBtw7QgaG/huqF0IMSR4buZbmcuDQoNCioqR2nhuqNpIHBow6FwOioqDQoNCi0gICBD4bqnbiBjw7Mgbmhp4buBdSBnaeG6o2kgcGjDoXAgxJHhu4MgZ2nhuqNtIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgdGhhbmggbmnDqm46IFbDrSBk4bulIG5oxrAgY+G6o2kgdGhp4buHbiBo4buHIHRo4buRbmcgZ2nDoW8gZOG7pWMgdsOgIMSRw6BvIHThuqFvLCB04bqhbyByYSBuaGnhu4F1IHZp4buHYyBsw6BtIGjGoW4sIHbDoCBo4buXIHRy4bujIGto4bufaSBuZ2hp4buHcCBjaG8gdGhhbmggbmnDqm4uDQoNCiMjIyBjKSBCaeG7g3UgxJHhu5MgdHLDsm4NCg0KYGBge3J9DQojIFThuqFvIGJp4buDdSDEkeG7kyB0csOybg0KcGllX2RhdGEgPC0gYyh0eV9sZV9waGFuX3RyYW0sIDEwMCAtIHR5X2xlX3BoYW5fdHJhbSkNCm5hbWVzKHBpZV9kYXRhKSA8LSBjKCJUaGFuaCBuacOqbiB0aOG6pXQgbmdoaeG7h3AiLCAiTmfGsOG7nWkga2jDoWMiKQ0KYGBgDQoNCmBgYHtyfQ0KIyBW4bq9IGJp4buDdSDEkeG7kyB0csOybg0KcGllKHBpZV9kYXRhLCBtYWluID0gIlThu7cgbOG7hyBwaOG6p24gdHLEg20gdGhhbmggbmnDqm4gdGjhuqV0IG5naGnhu4dwIHThu6sgMTUgxJHhur9uIDI0IHR14buVaVxudHJvbmcgdOG7lW5nIHPhu5EgbmfGsOG7nWkgdGjhuqV0IG5naGnhu4dwIHRyb25nIDQgbsSDbSIsIGxhYmVscyA9IGMoc3ByaW50ZigiJS4xZiUlIiwgdHlfbGVfcGhhbl90cmFtKSwgc3ByaW50ZigiJS4xZiUlIiwgMTAwIC0gdHlfbGVfcGhhbl90cmFtKSkpDQpsZWdlbmQoInRvcHJpZ2h0IiwgbGVnZW5kID0gYygiVGhhbmggbmnDqm4gdGjhuqV0IG5naGnhu4dwIiwgIk5nxrDhu51pIGtow6FjIiksIGZpbGwgPSBjKCJsaWdodGJsdWUiLCAibGlnaHRncmVlbiIpKQ0KYGBgDQoNCioqTmjhuq1uIHjDqXQgKioNCg0KIFRhIGPDsyB0aOG7gyB0aOG6pXkgcuG6sW5nIHPhu5EgdGhhbmggbmnDqm4gdGjhuqV0IG5naGnhu4dwIHRyb25nIMSR4buZIHR14buVaSB04burIDE1LTI0IGzDoCBy4bqldCBs4bubbiBjaGnhur9tIHThu5tpIDM1JS4gxJBp4buBdSBuw6B5IGzDoCBt4buZdCB0w61uIGhp4buHdSB2w7QgY8O5bmcgeOG6pXUgxJHhu5FpIHbhu5tpIGPGoSBj4bqldSBsYW8gxJHhu5luZyBj4bunYSDEkeG6pXQgbsaw4bubYy4gxJDDonkgbMOgIMSR4buZIHR14buVaSBsYW8gxJHhu5luZyBjaMOtbmgsIHThuqFvIHJhIG5oaeG7gXUgY+G7p2EgY+G6o2kgduG6rXQgY2jhuqV0IG5oxrBuZyDEkWnhu4F1IMSRw6FuZyB0aeG6v2MgbMOgIMSR4bqldCBuxrDhu5tjIGNow7puZyB0YSB24bqrbiBjaMawYSB0aOG6vyB04bqhbyByYSBuaOG7r25nIGPGoSBo4buZaSDEkeG7gyB04bqtbiBk4bulbmcgbOG7sWMgbMaw4bujbmcgbsOgeS4NCg0KIyMgNC4zIFThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgdGhlbyBnaeG7m2kgdMOtbmggdsOgIHRoZW8gduG7iyB0csOtDQoNCiMjIyBhKSBU4bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIG5hbSB2w6AgbuG7ryAyMDIwLTIwMjMNCg0KYGBge3J9DQojIEltcG9ydCBnw7NpIGdncGxvdDINCmxpYnJhcnkoZ2dwbG90MikNCmBgYA0KDQpgYGB7cn0NCiMgROG7ryBsaeG7h3UNCm5hbV90aGFuaF90aGkgPC0gYygzLjgyLCA0LjMzLCAyLjgyLCAyLjczKQ0KbnVfdGhhbmhfdGhpIDwtIGMoMi4wNCwgMi41MCwgMi4wNCwgMi4wMCkNCm5hbV9ub25nX3Rob24gPC0gYygyLjE5LCAzLjE1LCAyLjM2LCAyLjMxKQ0KbnVfbm9uZ190aG9uIDwtIGMoMy4yNywgMy4yNiwgMi4zMiwgMi4yNCkNCnllYXJzIDwtIGMoMjAyMCwgMjAyMSwgMjAyMiwgMjAyMykNCmBgYA0KDQpgYGB7cn0NCiMgVOG6oW8gZGF0YWZyYW1lIHThu6sgZOG7ryBsaeG7h3UNCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgbmFtX3RoYW5oX3RoaSA9IG5hbV90aGFuaF90aGksDQogIG51X3RoYW5oX3RoaSA9IG51X3RoYW5oX3RoaSwNCiAgbmFtX25vbmdfdGhvbiA9IG5hbV9ub25nX3Rob24sDQogIG51X25vbmdfdGhvbiA9IG51X25vbmdfdGhvbiwNCiAgeWVhcnMgPSB5ZWFycw0KKQ0KYGBgDQoNCmBgYHtyfQ0KIyBUxINuZyBrw61jaCB0aMaw4bubYyBiaeG7g3UgxJHhu5MNCm9wdGlvbnMocmVwci5wbG90LndpZHRoID0gMTAsIHJlcHIucGxvdC5oZWlnaHQgPSAxMCkNCiMgQmnhu4N1IMSR4buTIDE6IE5hbSB2w6AgTuG7rw0KZ2dwbG90KGRhdGEsIGFlcyh4ID0gbmFtX3RoYW5oX3RoaSwgeSA9IG51X3RoYW5oX3RoaSkpICsNCiAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSAiVGjDoG5oIHRo4buLIiksIHNpemUgPSAzKSArDQogIGdlb21fcG9pbnQoYWVzKHggPSBuYW1fbm9uZ190aG9uLCB5ID0gbnVfbm9uZ190aG9uLCBjb2xvciA9ICJOw7RuZyB0aMO0biIpLCBzaXplID0gMykgKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IEZBTFNFLCBjb2xvciA9ICJibGFjayIpICsNCiAgbGFicyh0aXRsZSA9ICJU4buJIGzhu4cgdGjhuqV0IG5naGnhu4dwIG5hbSB2w6AgbuG7ryIsDQogICAgICAgeCA9ICJOYW0iLA0KICAgICAgIHkgPSAiTuG7ryIsDQogICAgICAgY29sb3IgPSAiTG/huqFpIikgKyAgIyDEkOG6t3QgdMOqbiBjaG8gY2jDuiB0aMOtY2gNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpKSArICAjIFTEg25nIGPhu6EgY2jhu68NCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoImJsdWUiLCAicmVkIiksIGxhYmVscyA9IGMoIlRow6BuaCB0aOG7iyIsICJOw7RuZyB0aMO0biIpKSAgIyDEkOG6t3QgbmjDo24gY2hvIGNow7ogdGjDrWNoDQpgYGANCg0KKipOaOG6rW4geMOpdDoqKg0KDQotICAgVOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBj4bunYSBj4bqjIG5hbSB2w6AgbuG7ryDEkeG7gXUgY8OzIHh1IGjGsOG7m25nIGdp4bqjbSB0cm9uZyBnaWFpIMSRb+G6oW4gMjAyMC0yMDIzLg0KDQotICAgVOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBj4bunYSBuYW0gbHXDtG4gY2FvIGjGoW4gdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBj4bunYSBu4buvIHRyb25nIGdpYWkgxJFv4bqhbiBuw6B5Lg0KDQoqKk5ndXnDqm4gbmjDom46KioNCg0KLSAgIEPGoSBj4bqldSBuZ8Ogbmggbmdo4buBOiBOYW0gZ2nhu5tpIHRoxrDhu51uZyBsw6BtIHZp4buHYyB0cm9uZyBjw6FjIG5nw6BuaCBjaOG7i3Ug4bqjbmggaMaw4bufbmcgbuG6t25nIG7hu4EgYuG7n2kgZOG7i2NoIENPVklELTE5IG5oxrAgZHUgbOG7i2NoLCBk4buLY2ggduG7pSwgc+G6o24geHXhuqV0Lg0KDQotICAgS+G7uSBuxINuZzogTuG7ryBnaeG7m2kgdGjGsOG7nW5nIGPDsyBr4bu5IG7Eg25nIHBow7kgaOG7o3AgduG7m2kgY8OhYyBuZ8Ogbmggw610IGLhu4sg4bqjbmggaMaw4bufbmcgYuG7n2kgZOG7i2NoIENPVklELTE5IG5oxrAgeSB04bq/LCBnacOhbyBk4bulYywgaMOgbmggY2jDrW5oLg0KDQotICAgQ2jEg20gc8OzYyBnaWEgxJHDrG5oOiBO4buvIGdp4bubaSB0aMaw4budbmcgZ8OhbmggdsOhYyB0csOhY2ggbmhp4buHbSBjaMSDbSBzw7NjIGdpYSDEkcOsbmggbmhp4buBdSBoxqFuIG5hbSBnaeG7m2ksIG7Dqm4gY8OzIHRo4buDIMawdSB0acOqbiBjw6FjIGPDtG5nIHZp4buHYyBjw7MgdGjhu51pIGdpYW4gbGluaCBob+G6oXQgaMahbi4NCg0KDQojIyMgYikgVOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCDhu58gdGjDoG5oIHRo4buLIHbDoCBuw7RuZyB0aMO0biAyMDIwLTIwMjMNCmBgYHtyfQ0KDQojIEJp4buDdSDEkeG7kyAyOiBUaMOgbmggdGjhu4sgdsOgIE7DtG5nIHRow7RuDQpnZ3Bsb3QoZGF0YSwgYWVzKHggPSBuYW1fdGhhbmhfdGhpLCB5ID0gbmFtX25vbmdfdGhvbikpICsNCiAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSAiTmFtIiksIHNpemUgPSAzKSArDQogIGdlb21fcG9pbnQoYWVzKHggPSBudV90aGFuaF90aGksIHkgPSBudV9ub25nX3Rob24sIGNvbG9yID0gIk7hu68iKSwgc2l6ZSA9IDMpICsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBGQUxTRSwgY29sb3IgPSAiYmxhY2siKSArDQogIGxhYnModGl0bGUgPSAiVOG7iSBs4buHIHRo4bqldCBuZ2hp4buHcCB0aMOgbmggdGjhu4sgdsOgIG7DtG5nIHRow7RuIiwNCiAgICAgICB4ID0gIlRow6BuaCB0aOG7iyIsDQogICAgICAgeSA9ICJOw7RuZyB0aMO0biIsDQogICAgICAgY29sb3IgPSAiTG/huqFpIikgKyAgIyDEkOG6t3QgdMOqbiBjaG8gY2jDuiB0aMOtY2gNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpKSArICAjIFTEg25nIGPhu6EgY2jhu68NCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoImJsdWUiLCAicmVkIiksIGxhYmVscyA9IGMoIk5hbSIsICJO4buvIikpICAjIMSQ4bq3dCBuaMOjbiBjaG8gY2jDuiB0aMOtY2gNCmBgYA0KDQoNCj0+ICAgIFThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3Ag4bufIFZp4buHdCBOYW0gY8OzIHh1IGjGsOG7m25nIGdp4bqjbSB0cm9uZyBnaWFpIMSRb+G6oW4gMjAyMC0yMDIzLCB0dXkgbmhpw6puIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3Ag4bufIHRow6BuaCB0aOG7iyBjYW8gaMahbiB2w6Aga2hv4bqjbmcgY8OhY2ggdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBnaeG7r2EgbmFtIHbDoCBu4buvIOG7nyB0aMOgbmggdGjhu4sgbOG7m24gaMahbiBzbyB24bubaSDhu58gbsO0bmcgdGjDtG4uDQpD4bqnbiBjw7MgY8OhYyBnaeG6o2kgcGjDoXAgaOG7lyB0cuG7oyB2aeG7h2MgbMOgbSBjaG8gY+G6oyBuYW0gdsOgIG7hu68g4bufIHRow6BuaCB0aOG7iywgxJHhurdjIGJp4buHdCBsw6AgbmFtIGdp4bubaSB0cm9uZyBjw6FjIG5nw6BuaCBi4buLIOG6o25oIGjGsOG7n25nIGLhu59pIGThu4tjaCBDT1ZJRC0xOS4NCg0KKipL4bq/dCBsdeG6rW4qKg0KDQotICAgIE5oxrAgduG6rXkgdGEgY8OzIHRo4buDIHRo4bqleSBy4bqxbmcgc+G7sSBraMOhYyBiaeG7h3QgcsO1IHLhu4d0DQoNCi0gICBHaeG7r2EgbmFtIHbDoCBu4buvOiBz4buRIGzGsOG7o25nIG5nxrDhu51pIGPDsyBnaeG7m2kgdMOtbmggbuG7ryBraMO0bmcgY8OzIHZp4buHYyBsw6BtIGx1w7RuIGNhbyBoxqFuIG5hbSBxdWEgbeG7jWkgbsSDbSwgxJFp4buBdSBuw6B5IGPFqW5nIGThu4UgaGnhu4N1IGtoaSBs4buxYyBsxrDhu6NuZyBsYW8gxJHhu5luZyBsw6AgbmFtIGNoaeG6v20gxrB1IHRo4bq/IGLhu59pIHPhu6ljIGto4buPZSwgY8OhYyBjaOG6vyDEkeG7mSBuaMawIHRoYWkgc+G6o24sLi4uIGx1w7RuIMOtdCBoxqFuIHNvIHbhu5tpIG7hu68NCg0KLSAgIEdp4buvYSB0aMOgbmggdGjhu4sgdsOgIG7DtG5nIHRow7RuOiBWaeG7h2MgbMOgbSDhu58gdGjDoG5oIHRo4buLIHBo4bulIHRodeG7mWMgcGjhuqduIGzhu5tuIHbDoG8gdMOsbmggaMOsbmgga2luaCB04bq/IHbDoCBjaMOtbmggdHLhu4sgbmjGsCDEkeG6oWkgZOG7i2NoLCBzdXkgdGhvw6FpLC4uIG7Dqm4gdOG7tyBs4buHIG7DoHkgbHXDtG4gYuG6pXQg4buVbiDEkeG7i25oIHRoZW8gdMOsbmggaMOsbmggxJHDsy4gTmjhu69uZyBuZ8aw4budaSDhu58ga2h1IHbhu7FjIG7DtG5nIHRow7RuIMOtdCDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIGvhu4MgdHLDqm4gdsOgIGjhu40gY8WpbmcgY8OzIHRo4buDIGPDsyDEkWEgZOG6oW5nIGPDtG5nIHZp4buHYyBoxqFuDQoNCiMgVi4gS+G6v3QgbHXhuq1uDQoNCiMjIDUuMSBL4bq/dCBxdeG6ow0KLSAgIFThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgY8OzIHh1IGjGsOG7m25nIHTEg25nIG5o4bq5IHThu6sgbsSDbSAyMDIwIMSR4bq/biBuxINtIDIwMjEsIHNhdSDEkcOzIGdp4bqjbSBuaOG6uSB0cm9uZyBuxINtIDIwMjIgdsOgIDIwMjMgKDYgdGjDoW5nIMSR4bqndSBuxINtKS4NCg0KLSAgIFNvIHbhu5tpIGPDoWMgbsSDbSB0csaw4bubYywgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBuxINtIDIwMjAtMjAyMyB24bqrbiDhu58gbeG7qWMgY2FvLg0KDQotICAgQ8OzIHPhu7Ega2jDoWMgYmnhu4d0IHbhu4EgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBnaeG7r2EgY8OhYyBraHUgduG7sWM6DQoNCi0gICBLaHUgduG7sWMgdGjDoG5oIHRo4buLOiBU4bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGNhbyBoxqFuIHNvIHbhu5tpIGtodSB24buxYyBuw7RuZyB0aMO0bi4NCg0KLSAgIEdp4buvYSBjw6FjIG5ow7NtIGxhbyDEkeG7mW5nOiBU4bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGNhbyBoxqFuIOG7nyBuaMOzbSBsYW8gxJHhu5luZyB0cuG6uywgY8OzIHRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiB0aOG6pXAgdsOgIOG7nyBjw6FjIG5nw6BuaCBuZ2jhu4EgYuG7iyDhuqNuaCBoxrDhu59uZyBi4bufaSBk4buLY2ggQ09WSUQtMTkuDQoNCiMjIDUuMiBOZ3V5w6puIG5ow6JuDQoNCi0gICBE4buLY2ggQ09WSUQtMTk6IOG6om5oIGjGsOG7n25nIHRpw6p1IGPhu7FjIMSR4bq/biB0aOG7iyB0csaw4budbmcgbGFvIMSR4buZbmcsIGtoaeG6v24gbmhp4buBdSBkb2FuaCBuZ2hp4buHcCBwaOG6o2kgdGh1IGjhurlwIGhv4bqhdCDEkeG7mW5nLCBj4bqvdCBnaeG6o20gbmjDom4gc+G7sS4NCg0KLSAgIEPGoSBj4bqldSBraW5oIHThur86IENodXnhu4NuIGThu4tjaCBzYW5nIGPDoWMgbmfDoG5oIGThu4tjaCB24bulIHbDoCBjw7RuZyBuZ2hp4buHcCwgxJHDsmkgaOG7j2kgbGFvIMSR4buZbmcgY8OzIGvhu7kgbsSDbmcgY2FvIGjGoW4uDQoNCi0gICBOaHUgY+G6p3UgbGFvIMSR4buZbmc6IEtow7RuZyDEkeG7k25nIMSR4buBdSBnaeG7r2EgY8OhYyBuZ8Ogbmggbmdo4buBIHbDoCBraHUgduG7sWMuDQoNCiMjIDUuMyBHaeG6o2kgcGjDoXANCg0KIyMjIGEpIEdp4bqjaSBwaMOhcCB24buBIHBow61hIENow61uaCBwaOG7pzoNCg0KLSAgIFTEg25nIGPGsOG7nW5nIMSR4bqndSB0xrAgY2hvIHBow6F0IHRyaeG7g24ga2luaCB04bq/Lg0KDQotICAgUGjDoXQgdHJp4buDbiBjw6FjIG5nw6BuaCBraW5oIHThur8gY8OzIHRp4buBbSBuxINuZywgdOG6oW8gcmEgbmhp4buBdSB2aeG7h2MgbMOgbS4NCg0KLSAgIEPhuqNpIHRoaeG7h24gbcO0aSB0csaw4budbmcgxJHhuqd1IHTGsCBraW5oIGRvYW5oLCB0aHUgaMO6dCDEkeG6p3UgdMawIHRyb25nIHbDoCBuZ2/DoGkgbsaw4bubYy4NCg0KLSAgIE3hu58gcuG7mW5nIGPDoWMgY2jGsMahbmcgdHLDrG5oIGjhu5cgdHLhu6Mgdmnhu4djIGzDoG0gY2hvIG5nxrDhu51pIGxhbyDEkeG7mW5nIHRo4bqldCBuZ2hp4buHcC4NCg0KLSAgIEjhu5cgdHLhu6MgbmfGsOG7nWkgbGFvIMSR4buZbmcga2jhu59pIG5naGnhu4dwLCB04bqhbyBk4buxbmcgdmnhu4djIGzDoG0uDQoNCiMjIyBiKSBHaeG6o2kgcGjDoXAgduG7gSBwaMOtYSBkb2FuaCBuZ2hp4buHcDoNCg0KLSAgIE3hu58gcuG7mW5nIHPhuqNuIHh14bqldCBraW5oIGRvYW5oLCB04bqhbyByYSBuaGnhu4F1IHZp4buHYyBsw6BtLg0KDQotICAgVOG6rW4gZOG7pW5nIGPGoSBo4buZaSB04burIGPDoWMgSGnhu4dwIMSR4buLbmggdGjGsMahbmcgbeG6oWkgdOG7sSBkby4NCg0KLSAgIMSQ4bqndSB0xrAgdsOgbyBraG9hIGjhu41jIGPDtG5nIG5naOG7hywgbsOibmcgY2FvIG7Eg25nIHN14bqldCBsYW8gxJHhu5luZy4NCg0KLSAgIFRo4buxYyBoaeG7h24gY8OhYyBjaOG6vyDEkeG7mSBwaMO6YyBs4bujaSBjaG8gbmfGsOG7nWkgbGFvIMSR4buZbmcuDQoNCi0gICBU4bqhbyBtw7RpIHRyxrDhu51uZyBsw6BtIHZp4buHYyB04buRdCBjaG8gbmfGsOG7nWkgbGFvIMSR4buZbmcuDQoNCi0gICDEkOG6o20gYuG6o28gYW4gdG/DoG4gbGFvIMSR4buZbmcuDQoNCi0gICBDb2kgdHLhu41uZyDEkeG7nWkgc+G7kW5nIHRpbmggdGjhuqduIGPhu6dhIG5nxrDhu51pIGxhbyDEkeG7mW5nLg0KDQojIyMgYykgR2nhuqNpIHBow6FwIHbhu4EgcGjDrWEgbmfGsOG7nWkgbGFvIMSR4buZbmc6DQoNCi0gICBOw6JuZyBjYW8gdHLDrG5oIMSR4buZIGNodXnDqm4gbcO0biB2w6Aga+G7uSBuxINuZyBuZ2jhu4EgbmdoaeG7h3AuDQoNCi0gICBUaGFtIGdpYSBjw6FjIGtow7NhIMSRw6BvIHThuqFvLCBo4buNYyBuZ2jhu4EuDQoNCi0gICBU4buxIGjhu41jIHThuq1wIHbDoCByw6huIGx1eeG7h24ga+G7uSBuxINuZy4NCg0KLSAgIEto4bufaSBuZ2hp4buHcCwgdOG7sSB04bqhbyB2aeG7h2MgbMOgbQ0KDQojIyA1LjQgS+G6v3QgbHXhuq1uDQoNCi0gICBU4bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIGzDoCBt4buZdCB24bqlbiDEkeG7gSBj4bqnbiDEkcaw4bujYyBxdWFuIHTDom0gdsOgIGdp4bqjaSBxdXnhur90Lg0KDQotICAgQ+G6p24gY8OzIHPhu7EgY2h1bmcgdGF5IGPhu6dhIGNow61uaCBwaOG7pywgZG9hbmggbmdoaeG7h3AsIHbDoCB4w6MgaOG7mWkgxJHhu4MgZ2nhuqNtIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgdsOgIHThuqFvIHJhIG5oaeG7gXUgdmnhu4djIGzDoG0gaMahbiBjaG8gbmfGsOG7nWkgbGFvIMSR4buZbmcuDQoNCi0gICBOZ2/DoGkgcmE6DQoNCi0gICBUw6FjIMSR4buZbmcgY+G7p2EgZOG7i2NoIENPVklELTE5OiBE4buLY2ggQ09WSUQtMTkgxJHDoyDhuqNuaCBoxrDhu59uZyDEkeG6v24gdGjhu4sgdHLGsOG7nW5nIGxhbyDEkeG7mW5nIG3hu5l0IGPDoWNoIG5naGnDqm0gdHLhu41uZy4gTmhp4buBdSBkb2FuaCBuZ2hp4buHcCBwaOG6o2kgxJHDs25nIGPhu61hIGhv4bq3YyB0aHUgaOG6uXAgaG/huqF0IMSR4buZbmcsIGThuqtuIMSR4bq/biB2aeG7h2MgY+G6r3QgZ2nhuqNtIG5ow6JuIHPhu7EuIMSQaeG7gXUgbsOgeSBraGnhur9uIGNobyB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHTEg25nIGNhby4NCg0KLSAgIENodXnhu4NuIMSR4buVaSBjxqEgY+G6pXUga2luaCB04bq/OiBDxqEgY+G6pXUga2luaCB04bq/IFZp4buHdCBOYW0gxJFhbmcgY2h1eeG7g24gZOG7i2NoIHThu6sgbsO0bmcgbmdoaeG7h3Agc2FuZyBjw7RuZyBuZ2hp4buHcCB2w6AgZOG7i2NoIHbhu6UuIMSQaeG7gXUgbsOgeSDEkcOyaSBo4buPaSBsYW8gxJHhu5luZyBwaOG6o2kgY8OzIGvhu7kgbsSDbmcgY2FvIGjGoW4gxJHhu4MgxJHDoXAg4bupbmcgbmh1IGPhuqd1IGPhu6dhIHRo4buLIHRyxrDhu51uZyBsYW8gxJHhu5luZy4NCk5odSBj4bqndSBsYW8gxJHhu5luZyBraMO0bmcgxJHhu5NuZyDEkeG7gXU6IE5odSBj4bqndSBsYW8gxJHhu5luZyBnaeG7r2EgY8OhYyBuZ8Ogbmggbmdo4buBIHbDoCBraHUgduG7sWMga2jDtG5nIMSR4buTbmcgxJHhu4F1LiBN4buZdCBz4buRIG5nw6BuaCBuZ2jhu4EgdGhp4bq/dSBsYW8gxJHhu5luZyB0cm9uZyBraGkgbeG7mXQgc+G7kSBuZ8Ogbmggbmdo4buBIGtow6FjIGzhuqFpIGPDsyBkxrAgdGjhu6thIGxhbyDEkeG7mW5nLg0KDQotICAgxJDhu4MgZ2nhuqNpIHF1eeG6v3QgduG6pW4gxJHhu4EgdGjhuqV0IG5naGnhu4dwOg0KDQotICAgQ2jDrW5oIHBo4bunIGPhuqduIGPDsyBuaOG7r25nIGNow61uaCBzw6FjaCBo4buXIHRy4bujIGRvYW5oIG5naGnhu4dwOiBHacO6cCBkb2FuaCBuZ2hp4buHcCBkdXkgdHLDrCBob+G6oXQgxJHhu5luZywgdOG6oW8gdmnhu4djIGzDoG0gY2hvIG5nxrDhu51pIGxhbyDEkeG7mW5nLg0KDQotICAgQ+G6p24gdMSDbmcgY8aw4budbmcgxJHDoG8gdOG6oW8gbmdo4buBOiBOw6JuZyBjYW8ga+G7uSBuxINuZyBjaG8gbGFvIMSR4buZbmcsIMSRw6FwIOG7qW5nIG5odSBj4bqndSB0aOG7iyB0csaw4budbmcuDQoNCi0gICBD4bqnbiB0xINuZyBjxrDhu51uZyBnaeG7m2kgdGhp4buHdSB2aeG7h2MgbMOgbTogS+G6v3QgbuG7kWkgbmfGsOG7nWkgbGFvIMSR4buZbmcgduG7m2kgY8OhYyBjxqEgaOG7mWkgdmnhu4djIGzDoG0gcGjDuSBo4bujcC4NCg0KIyBWSS4gVMOgaSBsaeG7h3UgdGhhbSBraOG6o28NCg0KMSkgICAgVHLhuqduIE3huqFuaCBUxrDhu51uZy4gRGF0YSBtYW5pcHVsYXRpb24gdsOgIERhdGEgVmlzdWFsaXphdGlvbi4NCiAgICAgIC0gICBodHRwczovL3JwdWJzLmNvbS90bXQvMTEzODExNQ0KICAgICAgLSAgIGh0dHBzOi8vcnB1YnMuY29tL3RtdC8xMTQwNDM3DQoNCjIpICAgIFThu5VuZyBj4bulYyBUaOG7kW5nIGvDqiBWaeG7h3QgTmFtOiBodHRwczovL3d3dy5nc28uZ292LnZuLw0K