Chương 1: Tổng quan đề tài nghiên cứu

1.1. Đặt vấn đề

Trong xã hội hiện nay, giấc ngủ đóng vai trò quan trọng trong việc duy trì sức khỏe tổng thể và chất lượng cuộc sống. Tuy nhiên, nhiều người đang phải đối mặt với tình trạng thiếu ngủ hoặc giấc ngủ không chất lượng do áp lực công việc, lối sống bận rộn, căng thẳng, thói quen sinh hoạt không lành mạnh và các yếu tố môi trường. Điều này không chỉ ảnh hưởng đến sức khỏe thể chất mà còn gây ra những tác động tiêu cực đến tinh thần và hiệu suất làm việc hàng ngày.

1.2. Mục tiêu nghiên cứu

1.2.1. Mục tiêu chung

Phân tích trạng thái giấc ngủ thông qua sức khỏe và lối sống dựa trên dữ liệu khảo sát của 374 cá nhân.

1.2.2. Mục tiêu cụ thể

  • Khám phá và đánh giá các yếu tố liên quan về lối sống và giấc ngủ.

  • Các yếu tố liên quan đến lối sống: Nghề nghiệp, Mức độ hoạt động thể chất, Mức độ căng thẳng, số bước chân…

  • Các yếu tố liên quan đến giấc ngủ: Rối loạn giấc ngủ, Thời gian ngủ trung bình, Chất lượng giấc ngủ…

  • Sử dụng biểu đồ để minh họa các thông tin quan trọng và xu hướng.

  • Xác định các yếu tố tác động đến giấc ngủ, cụ thể là các biểu hiện của rối loạn giấc ngủ.

  • Phân tích sự tác động của thời gian ngủ, chất lượng giấc ngủ và mức độ căng thẳng đến trạng thái giấc ngủ.

1.3. Phương pháp nghiên cứu

Nghiên cứu sử dụng phương pháp hồi quy để phân tích dữ liệu khảo sát từ mẫu dữ liệu về giấc ngủ và thói quen sinh hoạt. Chúng tôi sử dụng phương pháp này nhằm xác định mức độ ảnh hưởng của từng yếu tố đến trạng thái giấc ngủ của từng cá nhân. Ngoài ra, còn sử dụng các phân tích khác như: thống kê mô tả, ước lượng tỷ lệ Relative Risk, Odds Ratio.

1.4. Ý nghĩa của đề tài

Kết quả nghiên cứu giúp hiểu rõ hơn về mối quan hệ phức tập giữa giấc ngủ và các yếu tố lối sống, thấy được tầm quan trong của giấc ngủ đối với cuộc sống tinh thần và thể chất để từ đó đưa ra các chiến lược cải thiện chất lượng và trạng thái giấc ngủ cho cộng đồng nhằm giảm thiểu các vấn đề liên quan đến sức khỏe và đạt hiệu suất trong công việc hàng ngày.

Chương 2: Tổng quan bộ dữ liệu Sức khỏe và Lối sống khi ngủ

2.1.Giới thiệu

Sleep Health and Lifestyle Dataset là một bộ dữ liệu có giá trị cung cấp thông tin chi tiết về giấc ngủ và thói quen sinh hoạt của 374 người. Bộ dữ liệu này được thu thập với mục đích nghiên cứu nhằm giúp hiểu rõ hơn về mối liên hệ giữa giấc ngủ và sức khỏe tổng thể.

2.2.Mô tả bộ dữ liệu

Bộ dữ liệu chứa 374 quan sát trên 13 biến.

  • Person ID: Mã định danh duy nhất cho mỗi người tham gia.

  • Gender: Giới tính, được phân loại thành “Male” (Nam) và “Female” (Nữ).

  • Age: Tuổi, đo bằng đơn vị theo năm

  • Occupation: Nghề nghiệp của nhóm người tham gia.

\[\begin{array}{|l|l|} \hline \text{Software Engineer} & \text{Kỹ sư phần mềm} \\ \hline \text{Doctor} & \text{Bác sĩ} \\ \hline \text{Sales Representative} & \text{Đại diện kinh doanh} \\ \hline \text{Teacher} & \text{Giáo viên} \\ \hline \text{Nurse} & \text{Y tá} \\ \hline \text{Engineer} & \text{Kỹ sư} \\ \hline \text{Accountant} & \text{Nhân viên kế toán} \\ \hline \text{Scientist} & \text{Nhà khoa học} \\ \hline \text{Lawyer} & \text{Luật sư} \\ \hline \text{Salesperson} & \text{Nhân viên bán hàng} \\ \hline \text{Manager} & \text{Nhà quản lý} \\ \hline \end{array}\]
  • Sleep Duration: Thời gian ngủ của người tham gia mỗi đêm, được đo bằng đơn vị giờ.

  • Quality of Sleep: Chất lượng giấc ngủ của người tham gia, được đánh giá trên thang điểm từ 1 đến 10, với 1 là “rất tệ” và 10 là “rất tốt”.

  • Physical Activity Level: Mức độ hoạt động thể chất của người tham gia, được đo bằng số phút hoạt động thể chất trung bình mỗi ngày.

  • Stress Level: Mức độ căng thẳng của người tham gia, được đánh giá trên thang điểm từ 1 đến 10, với 1 là “không căng thẳng” và 10 là “cực kỳ căng thẳng”

  • Blood Pressure: Huyết áp của người tham gia, được đo bằng đơn vị mmHg (milimet thủy ngân).

  • Heart Rate: Nhịp tim (số lần tim đập trong 1 phút)

  • Daily Steps: Số bước chân được hằng ngày

  • Sleep Disorder: Rối loạn giới ngủ có 3 biểu hiện với:

“None” là không bị rối loạn giấc ngủ (Bình thường).

“Sleep Apnea” Chứng ngưng thở khi ngủ. Giải thích thêm đây là một tình trạng y khoa mà trong đó người bệnh có những đợt ngưng thở đột ngột hoặc hô hấp không đều khi đang ngủ, gây ra các vấn đề về giấc ngủ và sức khỏe tổng thể.

“insomnia” chứng mất ngủ, đây thuật ngữ dùng để chỉ tình trạng khó ngủ hoặc không thể ngủ được, gây ảnh hưởng đến chất lượng cuộc sống và sức khỏe của người mắc phải.

Chương 3: Phân tích các yếu tố tác động đến Trạng thái giấc ngủ

3.1.Cấu trúc dữ liệu và thống kê mô tả

library(readxl)
Sleep_health_and_lifestyle_dataset <- read_excel("C:/Users/admin/Downloads/Sleep_health_and_lifestyle_dataset.xlsx")
View(Sleep_health_and_lifestyle_dataset)
a <- Sleep_health_and_lifestyle_dataset
library(DT)
library(tidyverse)
names(a) <- c('ID','Giới tính','Tuổi','Nghề nghiệp','Thời gian ngủ','Chất lượng giấc ngủ','Mức độ thể chất','Mức độ căng thẳng','Chỉ số BMI','Huyết áp','Nhịp tim','Số bước chân','Trạng thái giấc ngủ')
a$`Giới tính` <- recode(a$`Giới tính`,"Male"="Nam","Female"="Nữ")
a$`Trạng thái giấc ngủ` <- recode(a$`Trạng thái giấc ngủ`,"None"="Bình thường","Sleep Apnea"="Chứng ngưng thở khi ngủ","Insomnia"="chứng mất ngủ")
a$`Nghề nghiệp` <- recode(a$`Nghề nghiệp`,"Software Engineer"="Kỹ sư phần mềm","Doctor"="Bác sĩ","Sales Representative"="Đại diện kinh doanh","Teacher"="Giáo viên","Nurse"="Y tá","Engineer"="Kỹ sư","Accountant"="Nhân viên kế toán","Scientist"="Nhà khoa học","Lawyer"="Luật sư","Salesperson"="Nhân viên bán hàng","Manager"="Nhà quản lý")
a$`Chỉ số BMI` <- recode(a$`Chỉ số BMI`,"Normal"="Bình thường","Normal Weight"="Cân đối","Obese"="Béo phì","Overweight"="Quá trọng lượng")
datatable(a)
summary(a)
##        ID          Giới tính              Tuổi       Nghề nghiệp       
##  Min.   :  1.00   Length:374         Min.   :27.00   Length:374        
##  1st Qu.: 94.25   Class :character   1st Qu.:35.25   Class :character  
##  Median :187.50   Mode  :character   Median :43.00   Mode  :character  
##  Mean   :187.50                      Mean   :42.18                     
##  3rd Qu.:280.75                      3rd Qu.:50.00                     
##  Max.   :374.00                      Max.   :59.00                     
##  Thời gian ngủ   Chất lượng giấc ngủ Mức độ thể chất Mức độ căng thẳng
##  Min.   :5.800   Min.   :4.000       Min.   :30.00   Min.   :3.000    
##  1st Qu.:6.400   1st Qu.:6.000       1st Qu.:45.00   1st Qu.:4.000    
##  Median :7.200   Median :7.000       Median :60.00   Median :5.000    
##  Mean   :7.132   Mean   :7.313       Mean   :59.17   Mean   :5.385    
##  3rd Qu.:7.800   3rd Qu.:8.000       3rd Qu.:75.00   3rd Qu.:7.000    
##  Max.   :8.500   Max.   :9.000       Max.   :90.00   Max.   :8.000    
##   Chỉ số BMI          Huyết áp            Nhịp tim      Số bước chân  
##  Length:374         Length:374         Min.   :65.00   Min.   : 3000  
##  Class :character   Class :character   1st Qu.:68.00   1st Qu.: 5600  
##  Mode  :character   Mode  :character   Median :70.00   Median : 7000  
##                                        Mean   :70.17   Mean   : 6817  
##                                        3rd Qu.:72.00   3rd Qu.: 8000  
##                                        Max.   :86.00   Max.   :10000  
##  Trạng thái giấc ngủ
##  Length:374         
##  Class :character   
##  Mode  :character   
##                     
##                     
## 

Nhận xét:

  • Tuổi: Người tham gia có độ tuổi từ 27 đến 59, với tuổi trung bình là 43.

  • Thời Gian Ngủ: Trung bình người tham gia ngủ khoảng 7.13 giờ, với thời gian ngủ ít nhất là 5.8 giờ và nhiều nhất là 8.5 giờ.

  • Chất Lượng Giấc Ngủ: Điểm chất lượng giấc ngủ trung bình là 7.31 trên 9, cho thấy chất lượng giấc ngủ rất tốt của trong nhóm số người tham gia.

  • Mức Độ Hoạt Động Thể Chất của nhóm người tham gia dao động từ 30 đến 90 phút mỗi ngày, với trung bình là 59.17 phút.

  • Mức Độ Stress: Thang điểm đánh giá mức độ căng thẳng của nhóm người dao động từ 3 đến 8, với trung bình là 5.38, cho thấy mức độ stress vừa phải trong số người tham gia.

  • Nhịp Tim: Nhịp tim trung bình là 70.17 nhịp/phút, với dao động từ 65 đến 86 nhịp/phút.

  • Số Bước Đi Hàng Ngày: Người tham gia đi từ 3,000 đến 10,000 bước mỗi ngày, trung bình khoảng 6,817 bước.

  • Nhìn chung, bộ dữ liệu cho thấy một quần thể có sự cân bằng tốt về thời gian ngủ và chất lượng giấc ngủ, mức độ hoạt động thể chất tốt và mức độ stress vừa phải.

3.2. Phân tích đơn biến

3.2.1.Biến nghề nghiệp

3.2.1.1. Bảng tần số và tần suất của biến Nghề nghiệp

table(a$`Nghề nghiệp`)
## 
##              Bác sĩ Đại diện kinh doanh           Giáo viên               Kỹ sư 
##                  71                   2                  40                  63 
##      Kỹ sư phần mềm             Luật sư        Nhà khoa học         Nhà quản lý 
##                   4                  47                   4                   1 
##  Nhân viên bán hàng   Nhân viên kế toán                Y tá 
##                  32                  37                  73
prop.table(table(a$`Nghề nghiệp`))
## 
##              Bác sĩ Đại diện kinh doanh           Giáo viên               Kỹ sư 
##         0.189839572         0.005347594         0.106951872         0.168449198 
##      Kỹ sư phần mềm             Luật sư        Nhà khoa học         Nhà quản lý 
##         0.010695187         0.125668449         0.010695187         0.002673797 
##  Nhân viên bán hàng   Nhân viên kế toán                Y tá 
##         0.085561497         0.098930481         0.195187166

3.2.1.2. Biểu đồ tròn của biến Nghề nghiệp

library(ggplot2)
s <- as.data.frame(table(a$`Nghề nghiệp`))
colnames(s) <- c("Nghề nghiệp","Count")
s$Percentage <- (s$Count / sum(s$Count)) * 100
ggplot(s, aes(x = "", y = Percentage, fill = `Nghề nghiệp`)) +
  geom_bar(width = 1, stat = "identity") +
  coord_polar("y") +
  labs(title = "Tỷ lệ cơ cấu nghề nghiệp", x = "", y = "") +
  theme_void() + 
  theme(legend.title = element_blank()) + 
  geom_text(aes(label = paste(round(Percentage, 2), "%")), 
            position = position_stack(vjust = 0.5), size = 3)

Nhận xét: Biểu đồ tròn mô tả cơ cấu nghề nghiệp của nhóm người tham gia khảo sát, với 11 ngành nghề được thể hiện. Nhìn chung, cơ cấu nghề nghiệp khá đa dạng, tuy nhiên một số ngành nổi bật với tỷ lệ cao hơn. Nhóm nhân viên y tế (bác sĩ, y tá) chiếm tỷ lệ cao nhất chiếm 38.5%. Tiếp theo là nhân viên văn phòng (nhân viên kế toán, bán hàng) với tỷ lệ 18.45%. Nhóm giáo dục (giáo viên) chiếm 10.7%. Nhóm kỹ thuật (kỹ sư, kỹ sư phần mềm) chiếm 17.91%. Các ngành nghề khác chiếm 14.44%.

3.2.2.Biến Thời gian giấc ngủ

3.2.2.1. Bảng tần số và tần suất của biến Thời gian giấc ngủ

table(a$`Thời gian ngủ`)
## 
## 5.8 5.9   6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 
##   2   4  31  25  12  13   9  26  20   5   5   3  19  36  14   5   5  10  24  28 
## 7.9   8 8.1 8.2 8.3 8.4 8.5 
##   7  13  15  11   5  14  13
prop.table(table(a$`Thời gian ngủ`))
## 
##         5.8         5.9           6         6.1         6.2         6.3 
## 0.005347594 0.010695187 0.082887701 0.066844920 0.032085561 0.034759358 
##         6.4         6.5         6.6         6.7         6.8         6.9 
## 0.024064171 0.069518717 0.053475936 0.013368984 0.013368984 0.008021390 
##         7.1         7.2         7.3         7.4         7.5         7.6 
## 0.050802139 0.096256684 0.037433155 0.013368984 0.013368984 0.026737968 
##         7.7         7.8         7.9           8         8.1         8.2 
## 0.064171123 0.074866310 0.018716578 0.034759358 0.040106952 0.029411765 
##         8.3         8.4         8.5 
## 0.013368984 0.037433155 0.034759358

Với kết quả của bảng tần số trên, nhóm tôi sẽ phân thành 4 nhóm thời gian giấc ngủ như sau:

  • Nhóm Ngủ ít: Thời gian ngủ dưới 6 giờ.

  • Nhóm ngủ tương đối: Thời gian ngủ 6 đến 7 giờ.

  • Nhóm ngủ tốt: Thời gian ngủ 7 đến 8 giờ.

  • Nhóm ngủ nhiều: Thời gian ngủ trên 8 giờ.

TS <- cut(a$`Thời gian ngủ`, 
                   breaks = c(0, 6,7,8, Inf), 
                   labels = c("Ngủ Ít","Ngủ Tương đối","Ngủ Tốt", "Ngủ Nhiều"))
table(TS)
## TS
##        Ngủ Ít Ngủ Tương đối       Ngủ Tốt     Ngủ Nhiều 
##            37           118           161            58
prop.table(table(TS))
## TS
##        Ngủ Ít Ngủ Tương đối       Ngủ Tốt     Ngủ Nhiều 
##    0.09893048    0.31550802    0.43048128    0.15508021

3.2.2.2. Đồ thị của biến Thời gian giấc ngủ

ggplot(data=a,aes(x= TS))+
  geom_bar(fill="Magenta")+
  labs(x="Các nhóm giờ ngủ",y="Số người", title="Đồ thị Thời gian ngủ trung bình")+
  geom_text(stat="count",aes(label=after_stat(count)),vjust=-0.5) 

Nhận xét: Với kết quả của bảng tần số và độ thị của thời gian giấc ngủ trung bình cho thấy số lượng người có số giờ ngủ trung bình là nhiều nhất có 161 người chiếm 43.05% , tiếp theo là số lượng người ngủ có số giờ tương đối có 118 người chiếm 31.55%, số lượng người có số giờ ngủ ít là 37 người chiếm tỷ lệ ít nhất 9.9% và số lượng người có số ngủ nhiều là 58 người chiếm tỷ lệ 15.5%. Phần lớn nhóm tham gia khảo sát có số giờ ngủ cực kỳ tốt chiếm 90.1% có thời gian ngủ trên 6 tiếng.

3.2.3. Biến chất lượng giấc ngủ

3.2.3.1. Bảng tần số và tần suất biến Chất lượng giấc ngủ

table(a$`Chất lượng giấc ngủ`)
## 
##   4   5   6   7   8   9 
##   5   7 105  77 109  71
prop.table(table(a$`Chất lượng giấc ngủ`))
## 
##          4          5          6          7          8          9 
## 0.01336898 0.01871658 0.28074866 0.20588235 0.29144385 0.18983957

Với kết quả của bảng tần số về chất lượng giấc ngủ, nhóm tôi sẽ phân thành 3 nhóm chất lượng giấc ngủ như sau:

  • Nhóm chất lượng giấc ngủ Bình thường: Thang điểm đánh giá ở dưới mức 6.

  • Nhóm chất lượng ngủ giấc Tốt: Thang điểm đánh giá ở mức 6 đến 8.

  • Nhóm chất lượng giấc Rất tốt: Thang điểm đánh giá ở trên mức 8.

QS <- cut(a$`Chất lượng giấc ngủ`, 
                   breaks = c(0,6,8, Inf), 
                   labels = c("Bình thường","Tốt","Rất tốt"))
table(QS)
## QS
## Bình thường         Tốt     Rất tốt 
##         117         186          71
prop.table(table(QS))
## QS
## Bình thường         Tốt     Rất tốt 
##   0.3128342   0.4973262   0.1898396

3.2.3.2. Đồ thị của biến Chất lượng giấc ngủ

ggplot(data=a,aes(x= QS))+
  geom_bar(fill="Orange Red")+
  labs(x="Các nhóm chất lượng giấc ngủ",y="Số người", title="Đồ thị Chất lượng giấc ngủ")+
  geom_text(stat="count",aes(label=after_stat(count)),vjust=-0.5) 

Nhận xét: Với kết quả của bảng tần số và đồ thị về chất lượng giấc ngủ, ta có thể thấy nhóm có chất lượng giấc ngủ được đánh giá tốt có số người nhiều nhất là 186 người chiếm tỷ lệ 49.73%. Kế đến là nhóm đánh giá chất lượng giấc ngủ bình thường có 117 người chiếm 31.28%. Và ít nhất là nhóm người có chất lượng giấc ngủ rất tốt là 71 người chiếm 18.98%. Như vậy ta thấy nhóm người tham gia khảo sát có chất lượng giấc ngủ khá tốt.

3.2.4. Biến Mức độ căng thẳng

3.2.4.1. Bảng tần số và tần suất Biến Mức độ căng thẳng

Stress Level: Mức độ căng thẳng của người tham gia, được đánh giá trên thang điểm từ 1 đến 10, với 1 là “không căng thẳng” và 10 là “cực kỳ căng thẳng”

table(a$`Mức độ căng thẳng`)
## 
##  3  4  5  6  7  8 
## 71 70 67 46 50 70
prop.table(table(a$`Mức độ căng thẳng`))
## 
##         3         4         5         6         7         8 
## 0.1898396 0.1871658 0.1791444 0.1229947 0.1336898 0.1871658

Với kết quả của bảng tần số về Mức độ căng thẳng, nhóm tôi sẽ phân thành 3 nhóm Mức độ căng thẳng như sau:

  • Nhóm có mức căng thẳng Bình thường: Thang điểm đánh giá ở dưới mức 4.

  • Nhóm có mức căng thẳng nhẹ: Thang điểm đánh giá ở dưới mức 4 đến 6.

  • Nhóm có mức căng thẳng nặng: Thang điểm đánh giá ở trên mức 6.

SL <- cut(a$`Mức độ căng thẳng`, 
                   breaks = c(0,4,6, Inf), 
                   labels = c("Bình thường","Nhẹ","Nặng"))
table(SL)
## SL
## Bình thường         Nhẹ        Nặng 
##         141         113         120
prop.table(table(SL))
## SL
## Bình thường         Nhẹ        Nặng 
##   0.3770053   0.3021390   0.3208556

3.2.4.2. Đồ thị Biến Mức độ căng thẳng

ggplot(data=a,aes(x= SL))+
  geom_bar(fill="Aquamarine")+
  labs(x="Các nhóm mức căng thẳng",y="Số người", title="Đồ thị Mức độ căng thẳng")+
  geom_text(stat="count",aes(label=after_stat(count)),vjust=-0.5) 

Nhận xét: Bảng tần số và đồ thị cho thấy có 141 người tham gia khảo sát có mực độ căng thẳng bình thường chiếm tỷ lệ cao nhất là 37.7%. Kế đến nhóm người mức độ căng thẳng nặng có 120 người chiếm tỷ lệ 32.08% Và cuối cùng là nhóm người mức độ căng thẳng nhẹ có 113 người chiếm tỷ lệ ít nhất là 30.21%. Nhìn chung thì mức độ căng thẳng của các nhóm phân chia khá đều nhau chênh lệch nhau không nhiều.

3.2.5. Biến Trạng thái giấc ngủ

3.2.5.1. Bảng tần số và tần suất Biến Trạng thái giấc ngủ

table(a$`Trạng thái giấc ngủ`)
## 
##             Bình thường           chứng mất ngủ Chứng ngưng thở khi ngủ 
##                     219                      77                      78
prop.table(table(a$`Trạng thái giấc ngủ`))
## 
##             Bình thường           chứng mất ngủ Chứng ngưng thở khi ngủ 
##               0.5855615               0.2058824               0.2085561

3.2.5.2. Đồ thị Biến Trạng thái giấc ngủ

ggplot(data=a,aes(x= a$`Trạng thái giấc ngủ`))+
  geom_bar(fill="Light Salmon")+
  labs(x="Các loại trạng thái của giấc ngủ",y="Số người", title="Đồ thị trạng thái giấc ngủ")+
  geom_text(stat="count",aes(label=after_stat(count)),vjust=-0.5)
## Warning: Use of `` a$`Trạng thái giấc ngủ` `` is discouraged.
## ℹ Use `Trạng thái giấc ngủ` instead.
## Use of `` a$`Trạng thái giấc ngủ` `` is discouraged.
## ℹ Use `Trạng thái giấc ngủ` instead.

Nhận xét: ta thấy được tỷ lệ số người ngủ được bình thường chiếm 58.55% và tỷ lệ nhóm người có trạng thái giấc ngủ bất thường là 41.45%, trong đó:

  • Chứng mất ngủ: chiếm tỷ lệ 20.58%.

  • Chứng ngưng thở khi ngủ: Chiếm tỷ lệ 20.85%.

3.3. Phân tích 2 biến

3.3.1. Phân tích Trạng thái giấc ngủ và Thời gian giấc ngủ

3.3.1.1. Dồ thị của trạng thái giấc ngủ và thời gian ngủ

library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.3.3
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(epiR)
## Warning: package 'epiR' was built under R version 4.3.3
## Loading required package: survival
## Package epiR 2.0.75 is loaded
## Type help(epi.about) for summary information
## Type browseVignettes(package = 'epiR') to learn how to use epiR for applied epidemiological analyses
## 
table(TS,a$`Trạng thái giấc ngủ`)
##                
## TS              Bình thường chứng mất ngủ Chứng ngưng thở khi ngủ
##   Ngủ Ít                 17             2                      18
##   Ngủ Tương đối          29            67                      22
##   Ngủ Tốt               138             7                      16
##   Ngủ Nhiều              35             1                      22
t <- table(TS,a$`Trạng thái giấc ngủ`)
ts <- as.data.frame(t)
colnames(ts) <- c("Type", "tt", "count")

ggplot(ts, aes(x = tt, y = count, fill = tt)) +
  geom_bar(stat = "identity", position = position_dodge()) +
  geom_text(aes(label = count), vjust = 1, size = 4, position = position_dodge(1)) +
  facet_wrap(~ Type, scales = "free_y", nrow = 2) +
  labs(title = "Đồ thị trạng thái giấc ngủ và thời gian ngủ",
       x = "Tình trạng giấc ngủ",
       y = "Số lượng người",
       fill = "Tình trạng giấc ngủ") +
  theme_minimal()

3.3.1.2. Bảng ngẫu nhiên của trạng thái giấc ngủ và thời gian ngủ

addmargins(t)
##                
## TS              Bình thường chứng mất ngủ Chứng ngưng thở khi ngủ Sum
##   Ngủ Ít                 17             2                      18  37
##   Ngủ Tương đối          29            67                      22 118
##   Ngủ Tốt               138             7                      16 161
##   Ngủ Nhiều              35             1                      22  58
##   Sum                   219            77                      78 374
prop.table(addmargins(t))
##                
## TS               Bình thường chứng mất ngủ Chứng ngưng thở khi ngủ          Sum
##   Ngủ Ít        0.0113636364  0.0013368984            0.0120320856 0.0247326203
##   Ngủ Tương đối 0.0193850267  0.0447860963            0.0147058824 0.0788770053
##   Ngủ Tốt       0.0922459893  0.0046791444            0.0106951872 0.1076203209
##   Ngủ Nhiều     0.0233957219  0.0006684492            0.0147058824 0.0387700535
##   Sum           0.1463903743  0.0514705882            0.0521390374 0.2500000000

Nhận xét: Thời gian giấc ngủ ảnh hưởng đến Trạng thái giấc ngủ

  • Trong nhóm có thời gian ngủ ít: Tỷ lệ nhóm ngủ ít mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm 54.05% và còn lại thì 45.95% nhóm ngủ ít có trạng thái giấc ngủ bình thường

  • Trong nhóm có thời gian ngủ tương đối: Tỷ lệ nhóm ngủ Bình thường mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm rất cao là 75.4% và còn lại thì 24.6% nhóm ngủ Bình thường có trạng thái giấc ngủ bình thường

  • Trong nhóm có thời gian ngủ tốt: Tỷ lệ nhóm ngủ tốt mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm rất thấp là 14.3% và 85.7% là tỷ lệ của nhóm có thời ngủ tốt mà không bị mắc các rối loạn giấc ngủ (trạng thái bình thường)

  • Trong nhóm có thời gian ngủ nhiều: Tỷ lệ nhóm ngủ nhiều mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm khá cao là 60.3% và 39.7% là tỷ lệ của nhóm có thời ngủ nhiều mà không bị mắc các rối loạn giấc ngủ (trạng thái bình thường)

như vậy, nhìn chung ta có thể thấy việc dành cho thời gian ngủ ít hoặc quá nhiều cũng dẫn đến việc bị mắc các chứng rối loạn giấc ngủ khá cao (chưa xét các yếu tố khác như Nghề nghiệp, chất lượng giấc ngủ và mức độ căng thẳng) cụ thể là ngủ ít hơn 6 tiếng và nhiều hơn 8 tiếng.

3.3.1.3. Ước lượng tỷ lệ Relative Risk giữa trạng thái giấc ngủ và thời gian ngủ

Trong phần này nhóm tôi chọn Trạng thái bình thường khi ngủ là tỷ lệ “thành công” của biến phụ thuộc (Trạng thái giấc ngủ) tương ứng với từng biểu hiện của biến độc lập (Thời gian ngủ).

a$TS <- TS
BTS <- table(a[a$`Trạng thái giấc ngủ` == "Bình thường", ]$TS)
BTS
## 
##        Ngủ Ít Ngủ Tương đối       Ngủ Tốt     Ngủ Nhiều 
##            17            29           138            35
prop.test(BTS["Ngủ Tốt"], sum(BTS), p = 0.5)
## 
##  1-sample proportions test with continuity correction
## 
## data:  BTS["Ngủ Tốt"] out of sum(BTS), null probability 0.5
## X-squared = 14.32, df = 1, p-value = 0.0001542
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.5621463 0.6934822
## sample estimates:
##        p 
## 0.630137

Nhận xét:Ta nhận thấy trong nhóm có thời gian ngủ tốt thì trạng thái bình thường khi ngủ chiếm 63%

Ta Uớc lượng tỷ lệ Relative Risk giữa (chứng mất ngủ, chứng ngưng thở khi ngủ) của các nhóm có số giờ ngủ tốt và số giờ ngủ nhiều.

  • Từ bảng tần suất, chúng ta tính \(\frac{π_1}{π_2}\), phân số này gọi là Rủi ro tương đối (Relative risk) giữa 2 biểu hiện của chứng mất ngủchứng ngưng thở khi ngủ của biến Trạng thái giấc ngủ.
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.3
library(epitools)
## 
## Attaching package: 'epitools'
## The following object is masked from 'package:survival':
## 
##     ratetable
x <- matrix(c(7, 16,
              1, 22),
             nrow = 2,
             byrow = TRUE,
             dimnames = list(c("ngủ tốt", "ngủ nhiều"),
                             c("Chứng mất ngủ", "chứng ngưng thở khi ngủ")))
epitab(x, method = 'riskratio', rev = 'c')
## Warning in chisq.test(xx, correct = correction): Chi-squared approximation may
## be incorrect
## $tab
##           chứng ngưng thở khi ngủ        p0 Chứng mất ngủ         p1 riskratio
## ngủ tốt                        16 0.6956522             7 0.30434783 1.0000000
## ngủ nhiều                      22 0.9565217             1 0.04347826 0.1428571
##                lower    upper    p.value
## ngủ tốt           NA       NA         NA
## ngủ nhiều 0.01906481 1.070462 0.04697704
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Nhận xét: Kết quả cho thấy Tỷ lệ chứng mất ngủ trong nhóm có số giờ ngủ tốt là 30.43% và Tỷ lệ của chứng mất ngủ trong nhóm ngủ nhiều là 4.34%. Tỷ lệ Relative Risk của chứng mất ngủ giữa 2 nhóm, Tỷ lệ chứng mất ngủ của nhóm ngủ nhiều (2) và chứng mất ngủ ở nhóm ngủ tốt (1) là 0.1428 lần, nghĩa là (2) gấp 0.1428 lần (1). Với độ tin cậy 95% thì khoảng ước lượng tỷ lệ Relative Risk từ 0.01906481 đến 1.070462. Với P_value = 0.04697704 nhỏ hơn mức ý nghĩa 5% thì kết quả này có ý nghĩa thống kê.

3.3.1.4. Ước lượng tỷ lệ Odds Ratio giữa trạng thái giấc ngủ và thời gian ngủ

Ta sẽ ước lượng tỷ lệ Odds Ratio giữa (chứng mất ngủ, chứng ngưng thở khi ngủ) của nhóm có số giờ ngủ tốt và nhóm có số giờ ngủ nhiều

OddsRatio(x)
## [1] 9.625

Nhận xét: Với kết quả này ta có tỷ lệ 2 nhóm

Nhóm 1 (Nhóm có số giờ ngủ tốt): Tỷ lệ giữa chứng mất ngủ và chứng ngưng thở khi ngủ trong nhóm có số giờ ngủ tốt là 0.4375, nghĩa là chứng mất ngủ gấp chứng ngưng thở khi ngủ trong nhóm có số giờ ngủ tốt là 0.4375 lần

Nhóm 2 (Nhóm có số giờ ngủ nhiều): Tỷ lệ giữa chứng mất ngủ và chứng ngưng thở khi ngủ trong nhóm có số giờ ngủ nhiều là 0.045, nghĩa là chứng mất ngủ gấp chứng ngưng thở khi ngủ trong nhóm có số giờ ngủ nhiều là 0.045 lần

Vậy chỉ số OddsRatio là 9.625 có thể hiểu là tỷ lệ giữa nhóm 1 gấp nhóm 2 là 9.625 lần.

3.3.2. Phân tích Trạng thái giấc ngủ và Chất lượng giấc ngủ

3.3.2.1. Bảng ngẫu nhiên của trạng thái giấc ngủ và chất lượng giấc ngủ

addmargins(table(QS,a$`Trạng thái giấc ngủ`))
##              
## QS            Bình thường chứng mất ngủ Chứng ngưng thở khi ngủ Sum
##   Bình thường          40            37                      40 117
##   Tốt                 141            39                       6 186
##   Rất tốt              38             1                      32  71
##   Sum                 219            77                      78 374
prop.table(addmargins(table(QS,a$`Trạng thái giấc ngủ`)))
##              
## QS             Bình thường chứng mất ngủ Chứng ngưng thở khi ngủ          Sum
##   Bình thường 0.0267379679  0.0247326203            0.0267379679 0.0782085561
##   Tốt         0.0942513369  0.0260695187            0.0040106952 0.1243315508
##   Rất tốt     0.0254010695  0.0006684492            0.0213903743 0.0474598930
##   Sum         0.1463903743  0.0514705882            0.0521390374 0.2500000000

Nhận xét: Chất lượng giấc ngủ ảnh hưởng đến Trạng thái giấc ngủ

  • Trong nhóm có chất lượng giấc ngủ bình thường: Tỷ lệ nhóm có chất lượng giấc ngủ bình thường mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm 65.82% và còn lại thì 34.18% có trạng thái giấc ngủ bình thường

  • Trong nhóm có chất lượng giấc ngủ tốt: Tỷ lệ nhóm chất lượng giấc ngủ tốt mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm khá thấp là 24.19% và 75.81% nhóm trạng thái giấc ngủ bình thường khi có chất lượng tốt.

  • Trong nhóm có chất lượng giấc ngủ rất tốt: Tỷ lệ nhóm có chất lượng giấc ngủ rất tốt mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm 46.5% và tỷ lệ của nhóm có chất lượng tốt mà không bị mắc các rối loạn giấc ngủ (trạng thái bình thường) chiếm 53.5%

3.3.2.2. Đồ thị của trạng thái giấc ngủ và chất lượng giấc ngủ

a %>% ggplot(aes(x=QS,y=after_stat(count)))+
  geom_bar(fill="darkblue")+
  geom_text(stat="count",aes(label=after_stat(count)),color="red",vjust=-.5)+
  facet_grid(. ~ a$`Trạng thái giấc ngủ`)+
  labs(x="Chất lượng giấc ngủ",y="Số người")

3.3.2.3. Ước lượng tỷ lệ Relative Risk giữa trạng thái giấc ngủ và chất lượng giấc ngủ

Trong phần này nhóm tôi chọn Trạng thái bình thường khi ngủ là tỷ lệ “thành công” của biến phụ thuộc (Trạng thái giấc ngủ) tương ứng với từng biểu hiện của biến độc lập (Chất lượng giấc ngủ).

a$QS <- QS
BQS <- table(a[a$`Trạng thái giấc ngủ` == "Bình thường", ]$QS)
BQS
## 
## Bình thường         Tốt     Rất tốt 
##          40         141          38
prop.test(BQS["Tốt"], sum(BQS), p = 0.7)
## 
##  1-sample proportions test with continuity correction
## 
## data:  BQS["Tốt"] out of sum(BQS), null probability 0.7
## X-squared = 3.0276, df = 1, p-value = 0.08186
## alternative hypothesis: true p is not equal to 0.7
## 95 percent confidence interval:
##  0.5761030 0.7064323
## sample estimates:
##         p 
## 0.6438356

Nhận xét:Ta nhận thấy trong nhóm có chất lượng giấc ngủ tốt thì trạng thái bình thường khi ngủ chiếm 64.38%

  • Ta ước lượng tỷ lệ Relative Risk giữa (chứng mất ngủ, chứng ngưng thở khi ngủ) của nhóm có chất lượng giấc ngủ tốt và nhóm có chất lượng giấc ngủ rất tốt

  • Từ bảng tần suất, chúng ta tính \(\frac{π_1}{π_2}\), phân số này gọi là Rủi ro tương đối (Relative risk) giữa 2 biểu hiện của chứng mất ngủchứng ngưng thở khi ngủ của biến Trạng thái giấc ngủ.

y <- matrix(c(39, 6,
              1, 32),
             nrow = 2,
             byrow = TRUE,
             dimnames = list(c("tốt", "rất tốt"),
                             c("Chứng mất ngủ", "chứng ngưng thở khi ngủ")))
epitab(y, method = 'riskratio', rev = 'c')
## $tab
##         chứng ngưng thở khi ngủ        p0 Chứng mất ngủ         p1  riskratio
## tốt                           6 0.1333333            39 0.86666667 1.00000000
## rất tốt                      32 0.9696970             1 0.03030303 0.03496503
##               lower     upper      p.value
## tốt              NA        NA           NA
## rất tốt 0.005057691 0.2417217 1.188504e-14
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Nhận xét: Kết quả cho thấy Tỷ lệ của chứng mất ngủ trong nhóm có chất lượng giấc ngủ tốt chiếm 86.67% và Tỷ lệ của chứng mất ngủ trong nhóm chất lượng giấc ngủ rất tốt là 3.03%. tỷ lệ Relative Risk giữa 2 nhóm có chất lượng giấc ngủ tốt (1) và nhóm chất lượng giấc ngủ rất tốt (2) là 0.0349 lần, nghĩa là (2) gấp 0.0349 lần (1). Với độ tin cậy 95% thì khoảng ước lượng tỷ lệ Relative Risk từ 0.005057691 đến 0.2417217. Với P_value = 1.188504e-14 nhỏ hơn mức ý nghĩa 5% thì kết quả này có ý nghĩa thống kê.

3.3.2.4. Ước lượng tỷ lệ Odds Ratio giữa trạng thái giấc ngủ và chất lượng giấc ngủ

Ta ước lượng tỷ lệ Oddsratio giữa (chứng mất ngủ, chứng ngưng thở khi ngủ) của nhóm có chất lượng giấc ngủ tốt và nhóm có chất lượng giấc ngủ rất tốt

OddsRatio(y)
## [1] 208

Nhận xét: Với kết quả này ta có tỷ lệ 2 nhóm

Nhóm 1 (Nhóm có chất lượng giấc ngủ tốt): Tỷ lệ giữa chứng mất ngủ và chứng ngưng thở khi ngủ trong nhóm có chất lượng giấc ngủ tốt là 6.5, nghĩa là chứng mất ngủ gấp chứng ngưng thở khi ngủ trong nhóm có chất lượng giấc ngủ tốt 6.5 lần

Nhóm 2 (Nhóm có chất lượng giấc ngủ rất tốt): Tỷ lệ giữa chứng mất ngủ và chứng ngưng thở khi ngủ trong nhóm có chất lượng giấc ngủ rất tốt là 0.03125, nghĩa là chứng mất ngủ gấp chứng ngưng thở khi ngủ trong nhóm có chất lượng giấc ngủ rất tốt là 0.03125 lần

Vậy chỉ số OddsRatio là 208 có thể hiểu là tỷ lệ giữa nhóm 1 gấp nhóm 2 là 208 lần.

3.3.3. Phân tích Trạng thái giấc ngủ và Mức độ căng thẳng

3.3.3.1. Bảng ngẫu nhiên của trạng thái giấc ngủ và Mức độ căng thẳng

addmargins(table(SL,a$`Trạng thái giấc ngủ`))
##              
## SL            Bình thường chứng mất ngủ Chứng ngưng thở khi ngủ Sum
##   Bình thường          83            25                      33 141
##   Nhẹ                 100             8                       5 113
##   Nặng                 36            44                      40 120
##   Sum                 219            77                      78 374
prop.table(addmargins(table(SL,a$`Trạng thái giấc ngủ`)))
##              
## SL            Bình thường chứng mất ngủ Chứng ngưng thở khi ngủ         Sum
##   Bình thường 0.055481283   0.016711230             0.022058824 0.094251337
##   Nhẹ         0.066844920   0.005347594             0.003342246 0.075534759
##   Nặng        0.024064171   0.029411765             0.026737968 0.080213904
##   Sum         0.146390374   0.051470588             0.052139037 0.250000000

Nhận xét: Mức độ căng thẳng ảnh hưởng đến Trạng thái giấc ngủ

  • Trong nhóm có Mức độ căng thẳng bình thường: Tỷ lệ nhóm có mức độ căng thẳng bình thường mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm 41.14% và còn lại thì 58.86% trạng thái giấc ngủ bình thường trong nhóm có Mức độ căng thẳng bình thường.

  • Trong nhóm có Mức độ căng thẳng nhẹ: Tỷ lệ nhóm có Mức độ căng thẳng nhẹ mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm khá thấp là 11.5% và 88.5% nhóm trạng thái giấc ngủ bình thường khi có căng thẳng nhẹ.

  • Trong nhóm có Mức độ căng thẳng nặng: Tỷ lệ nhóm có Mức độ căng thẳng nặng mắc các rối loạn giấc ngủ (Chứng mất ngủ, Chứng ngưng thở khi ngủ) chiếm 70% và tỷ lệ của nhóm có trạng thái không bị mắc các rối loạn giấc ngủ (trạng thái bình thường khi ngủ) chiếm 30%.

3.3.3.2. Đồ thị của Trạng thái giấc ngủ và Mức độ căng thẳng

a %>% ggplot(aes(x=SL,y=after_stat(count)))+
  geom_bar(fill="skyblue")+
  geom_text(stat="count",aes(label=after_stat(count)),color="red",vjust=-.5)+
  facet_grid(. ~ a$`Trạng thái giấc ngủ`)+
  labs(x="Mức độ căng thẳng",y="Số người")

3.3.3.3. Ước lượng tỷ lệ Relative Risk giữa trạng thái giấc ngủ và mức độ căng thẳng

Trong phần này nhóm tôi chọn Trạng thái bình thường khi ngủ là tỷ lệ “thành công” của biến phụ thuộc (Trạng thái giấc ngủ) tương ứng với từng biểu hiện của biến độc lập (Mức độ căng thẳng).

a$SL <- SL
BSL <- table(a[a$`Trạng thái giấc ngủ` == "Bình thường", ]$SL)
BSL
## 
## Bình thường         Nhẹ        Nặng 
##          83         100          36
prop.test(BSL["Nhẹ"], sum(BSL), p = 0.7)
## 
##  1-sample proportions test with continuity correction
## 
## data:  BSL["Nhẹ"] out of sum(BSL), null probability 0.7
## X-squared = 60.618, df = 1, p-value = 6.928e-15
## alternative hypothesis: true p is not equal to 0.7
## 95 percent confidence interval:
##  0.3897468 0.5250420
## sample estimates:
##        p 
## 0.456621

Nhận xét:Ta nhận thấy trong nhóm có mức độ căng thẳng nhẹ thì trạng thái bình thường khi ngủ chiếm 45.66%.

  • Ta ước lượng tỷ lệ Relative Risk giữa (Bình thường khi ngủ, chứng mất ngủ) của nhóm có căng thẳng nhẹ và nhóm có căng thẳng nặng

  • Từ bảng tần suất, chúng ta tính \(\frac{π_1}{π_2}\), phân số này gọi là Rủi ro tương đối (Relative risk) giữa 2 biểu hiện của chứng mất ngủBình thường khi ngủ của biến Trạng thái giấc ngủ.

z <- matrix(c(100, 8,
              36, 44),
             nrow = 2,
             byrow = TRUE,
             dimnames = list(c("Căng thẳng nhẹ", "Căng thẳng nặng"),
                             c("Bình thường khi ngủ","Chứng mất ngủ")))
epitab(z, method = 'riskratio', rev = 'c')
## $tab
##                 Chứng mất ngủ         p0 Bình thường khi ngủ        p1
## Căng thẳng nhẹ              8 0.07407407                 100 0.9259259
## Căng thẳng nặng            44 0.55000000                  36 0.4500000
##                 riskratio     lower     upper      p.value
## Căng thẳng nhẹ      1.000        NA        NA           NA
## Căng thẳng nặng     0.486 0.3792316 0.6228278 3.162864e-13
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Nhận xét: Kết quả cho thấy Tỷ lệ của Bình thường khi ngủ trong nhóm có căng thẳng nhẹ chiếm 92.59% và Tỷ lệ của Bình thường khi ngủ trong nhóm căng thẳng nặng là 45%. Tỷ lệ Relative Risk giữa 2 nhóm có căng thẳng nhẹ (1) và nhóm căng thẳng nặng (2) là 0.486 lần, nghĩa là (2) gấp 0.486 lần (1). Với độ tin cậy 95% thì khoảng ước lượng tỷ lệ Relative Risk từ 0.3792316 đến 0.6228278. Với P_value = 3.162864e-13 nhỏ hơn mức ý nghĩa 5% thì kết quả này có ý nghĩa thống kê.

3.3.3.4. Ước lượng tỷ lệ Odds Ratio giữa trạng thái giấc ngủ và Mức độ căng thẳng

Ta ước lượng tỷ lệ Oddsratio giữa (Bình thường khi ngủ, chứng mất ngủ) của nhóm có căng thẳng nhẹ và nhóm có căng thẳng nặng

OddsRatio(z)
## [1] 15.27778

Nhận xét: Với kết quả này ta có hiểu là ta phải tính tỷ lệ 2 nhóm

Nhóm 1 (Nhóm có mức căng thẳng nhẹ): Tỷ lệ giữa Bình thường khi ngủ và chứng mất ngủ trong nhóm căng thẳng nhẹ là 12.5, nghĩa là Bình thường khi ngủ gấp chứng mất ngủ trong nhóm căng thăng nhẹ 12.5 lần

Nhóm 2 (Nhóm có mức căng thẳng nặng): Tỷ lệ giữa Bình thường khi ngủ và chứng mất ngủ trong nhóm có mức căng thẳng nặng là 0.81, nghĩa là Bình thường khi ngủ gấp chứng mất ngủ trong nhóm có mức căng nặng là 0.81 lần

Vậy chỉ số OddsRatio là 15.27778 có thể hiểu là tỷ lệ giữa nhóm 1 gấp nhóm 2 là 15.27778 lần.

3.4. Thống kê suy diễn

3.4.1.Kiểm định tính độc lập của Thời gian giấc ngủ và trạng thái giấc ngủ.

Đặt giả thuyết \(H_0\) là biến thời gian giấc ngủ và biến trạng thái giấc ngủ độc lập với nhau

chisq.test(table(TS,a$`Trạng thái giấc ngủ`))
## 
##  Pearson's Chi-squared test
## 
## data:  table(TS, a$`Trạng thái giấc ngủ`)
## X-squared = 185.74, df = 6, p-value < 2.2e-16

Kết quả kiểm định cho ta thấy giá trị p−value là 2.2e−16 nhỏ hơn 0.05 , nên bác bỏ giả thuyết \(H_0\) nghĩa là thời gian giấc ngủ và biến trạng thái giấc ngủ độc lập có liên quan với nhau.

3.4.2.Kiểm định tính độc lập của Chất lượng giấc ngủ và trạng thái giấc ngủ.

Đặt giả thuyết \(H_0\) là biến Chất lượng giấc ngủ và biến trạng thái giấc ngủ độc lập với nhau

chisq.test(table(QS,a$`Trạng thái giấc ngủ`))
## 
##  Pearson's Chi-squared test
## 
## data:  table(QS, a$`Trạng thái giấc ngủ`)
## X-squared = 98.897, df = 4, p-value < 2.2e-16

Kết quả kiểm định cho ta thấy giá trị p−value là 2.2e−16 nhỏ hơn 0.05 , nên bác bỏ giả thuyết \(H_0\) nghĩa là Chất lượng giấc ngủ và biến trạng thái giấc ngủ độc lập có liên quan với nhau.

3.4.3.Kiểm định tính độc lập của Mức độ căng thẳng và trạng thái giấc ngủ.

Đặt giả thuyết \(H_0\) là biến Mức độ căng thẳng và biến trạng thái giấc ngủ độc lập với nhau

chisq.test(table(SL,a$`Trạng thái giấc ngủ`))
## 
##  Pearson's Chi-squared test
## 
## data:  table(SL, a$`Trạng thái giấc ngủ`)
## X-squared = 83.679, df = 4, p-value < 2.2e-16

Kết quả kiểm định cho ta thấy giá trị p−value là 2.2e−16 nhỏ hơn 0.05 , nên bác bỏ giả thuyết \(H_0\) nghĩa là Mức độ căng thẳng và biến trạng thái giấc ngủ độc lập có liên quan với nhau.

Chương 4: Mô hình hồi quy

4.1. Mô hình xác suất tuyến tính

Mô hình xác suất tuyến tính (Linear Probability Model - LPM) là một dạng của mô hình hồi quy dùng để ước lượng xác suất của một sự kiện. Trong mô hình này, biến phụ thuộc là biến nhị phân (dạng 0 hoặc 1), ví dụ như khả năng xảy ra một sự kiện. Mô hình tuyến tính giả định rằng mối quan hệ giữa biến phụ thuộc và các biến độc lập có thể được mô tả bằng một hàm tuyến tính. Công thức cơ bản của mô hình xác suất tuyến tính là:

\[ \hat{\pi}= \beta_0+\beta_1 \cdot x_1 + \beta_2 \cdot x_2+...+\beta_k \cdot x_k \] Trong đó:

  • \(\hat{\pi}\) là xác suất của biến phụ thuộc \(Y\) bằng 1, điều kiện cho các biến độc lập \(x_1,x_2,...x_k\).

  • \(\beta_0\) là hệ số chặn

  • \(\beta_1,\beta_2,...\beta_k\) là các hệ số hồi quy của các biến độc lập.

Lưu ý: Hạn chế của mô hình này là kết quả dự đoán có thể không nằm trong khoảng [0, 1], điều này có thể gây ra những vấn đề về ý nghĩa của xác suất. Để khắc phục điều này, các mô hình như hồi quy logistic (Logistic Regression) hoặc hồi quy Probit thường được sử dụng vì chúng đảm bảo xác suất dự đoán nằm trong khoảng [0, 1].

4.1.1. Mô hình xác suất tuyến tính của Trạng thái giấc ngủ theo Thời gian ngủ

a$tt1 <- ifelse(a$`Trạng thái giấc ngủ` %in% c("Bình thường"), 1, 0)
a$ts1 <- relevel(as.factor(a$TS), ref = "Ngủ Ít")
OLTS <- lm(tt1 ~ ts1, data = a)
summary(OLTS)
## 
## Call:
## lm(formula = tt1 ~ ts1, data = a)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.8571 -0.2458  0.1429  0.1429  0.7542 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       0.45946    0.06872   6.686 8.49e-11 ***
## ts1Ngủ Tương đối -0.21370    0.07876  -2.713  0.00698 ** 
## ts1Ngủ Tốt        0.39768    0.07621   5.218 3.02e-07 ***
## ts1Ngủ Nhiều      0.14399    0.08795   1.637  0.10246    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.418 on 370 degrees of freedom
## Multiple R-squared:  0.2876, Adjusted R-squared:  0.2819 
## F-statistic:  49.8 on 3 and 370 DF,  p-value: < 2.2e-16

Hàm hồi quy: \(\hat{\pi}= 0.45946-0.21370\times\text{Ngủ tương đối} + 0.39768\times\text{Ngủ Tốt}+0.14399\times\text{Ngủ Nhiều}\)

  • Hệ số chặn là 0.45946 cho thấy nếu không có sự ảnh hưởng bởi yếu tố thời gian giấc ngủ thì xác suất của việc trạng thái bình thường khi ngủ là 0.45946

  • Hệ số của nhóm ngủ tương đối: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tương đối chênh lệch thấp hơn 0.2137 so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ tốt: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tốt chênh lệch cao hơn 0.39768 so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ nhiều: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ nhiều chênh lệch cao hơn 0.14399 so với nhóm có thời gian ngủ ít.

4.1.2. Mô hình xác suất tuyến tính của Trạng thái giấc ngủ theo Chất lượng giấc ngủ

a$tt1 <- ifelse(a$`Trạng thái giấc ngủ` %in% c("Bình thường"), 1, 0)
a$qs1 <- relevel(as.factor(a$QS), ref = "Tốt")
OLQS <- lm(tt1 ~ qs1, data = a)
summary(OLQS)
## 
## Call:
## lm(formula = tt1 ~ qs1, data = a)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.7581 -0.3419  0.2419  0.2419  0.6581 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     0.75806    0.03364  22.533  < 2e-16 ***
## qs1Bình thường -0.41618    0.05414  -7.687 1.36e-13 ***
## qs1Rất tốt     -0.22285    0.06401  -3.482 0.000557 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4588 on 371 degrees of freedom
## Multiple R-squared:  0.1395, Adjusted R-squared:  0.1349 
## F-statistic: 30.08 on 2 and 371 DF,  p-value: 7.856e-13

Hàm hồi quy: \(\hat{\pi}= 0.75806-0.41618\times\text{Bình thường} -0.22285\times\text{Rất tốt}\)

  • Hệ số chặn là 0.75806 cho thấy nếu không có sự ảnh hưởng bởi yếu tố chất lượng giấc ngủ thì xác suất của việc trạng thái bình thường khi ngủ là 0.75806

  • Hệ số của nhóm chất lượng giấc ngủ bình thường: Ta thấy xác suất của trạng thái giấc ngủ bình thường có chất lượng giấc ngủ bình thường chênh lệch thấp hơn 0.41618 so với nhóm có chất lượng giấc ngủ tốt.

  • Hệ số của nhóm chất lượng giấc ngủ rất tốt: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có chất lượng giấc ngủ rất tốt chênh lệch thấp hơn 0.22285 so với nhóm có chất lượng giấc ngủ tốt.

4.1.3. Mô hình xác suất tuyến tính của Trạng thái giấc ngủ theo Mức độ căng thẳng

a$tt1 <- ifelse(a$`Trạng thái giấc ngủ` %in% c("Bình thường"), 1, 0)
a$sl1 <- relevel(as.factor(a$SL), ref = "Bình thường")
OLSL <- lm(tt1 ~ sl1, data = a)
summary(OLSL)
## 
## Call:
## lm(formula = tt1 ~ sl1, data = a)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.8850 -0.3000  0.1150  0.4113  0.7000 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.58865    0.03680  15.995  < 2e-16 ***
## sl1Nhẹ       0.29630    0.05517   5.370 1.39e-07 ***
## sl1Nặng     -0.28865    0.05427  -5.318 1.81e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.437 on 371 degrees of freedom
## Multiple R-squared:  0.2194, Adjusted R-squared:  0.2152 
## F-statistic: 52.15 on 2 and 371 DF,  p-value: < 2.2e-16

Hàm hồi quy: \(\hat{\pi}= 0.58865+0.29630\times\text{Nhẹ} -0.28865\times\text{Nặng}\)

  • Hệ số chặn là 0.58865 cho thấy nếu không có sự ảnh hưởng bởi yếu tố mức độ căng thẳng thì xác suất của việc trạng thái bình thường khi ngủ là 0.58865

  • Hệ số của nhóm mức độ căng thẳng nhẹ: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm mức độ căng thẳng nhẹ chênh lệch cao hơn 0.2963 so với nhóm mức độ căng thẳng bình thường (không căng thẳng).

  • Hệ số của nhóm mức độ căng thẳng nặng: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm mức độ căng thẳng nặng chênh lệch thấp hơn 0.28865 so với nhóm mức độ căng thẳng bình thường (không căng thẳng).

4.1.4. Mô hình xác suất tuyến tính đa biến

lm_tt <-  glm(tt1~ ts1+qs1+sl1, data = a)
summary(lm_tt)
## 
## Call:
## glm(formula = tt1 ~ ts1 + qs1 + sl1, data = a)
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       0.41565    0.10656   3.901 0.000114 ***
## ts1Ngủ Tương đối -0.19398    0.07869  -2.465 0.014152 *  
## ts1Ngủ Tốt        0.46119    0.11442   4.031 6.77e-05 ***
## ts1Ngủ Nhiều      0.83387    0.16655   5.007 8.63e-07 ***
## qs1Bình thường    0.43352    0.12637   3.430 0.000671 ***
## qs1Rất tốt       -0.64608    0.12255  -5.272 2.31e-07 ***
## sl1Nhẹ            0.05074    0.06429   0.789 0.430441    
## sl1Nặng          -0.38971    0.13212  -2.950 0.003385 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.1555535)
## 
##     Null deviance: 90.762  on 373  degrees of freedom
## Residual deviance: 56.933  on 366  degrees of freedom
## AIC: 375.35
## 
## Number of Fisher Scoring iterations: 2

Hàm hồi quy: \(\hat{\pi}= 0.41565 -0.19398\times\text{Ngủ Tương đối} + 0.46119\times\text{Ngủ Tốt} + 0.83387\times\text{Ngủ Nhiều} +0.43352\times\text{Bình thường} -0.64608\times\text{Rất tốt}+0.05074\times\text{Nhẹ} -0.38971\times\text{Nặng}\)

  • Hệ số chặn là 0.41565 cho thấy nếu không có sự ảnh hưởng bởi yếu tố khác thì xác suất của việc trạng thái bình thường khi ngủ là 0.41565

  • Hệ số của nhóm ngủ tương đối: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tương đối chênh lệch thấp hơn 0.19398 so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ tốt: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tốt chênh lệch cao hơn 0.46119 so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ nhiều: Ta thấy xác suất của trạng thái ngủ giấc bình thường trong nhóm có thời gian ngủ nhiều chênh lệch cao hơn 0.83387 so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm chất lượng giấc ngủ bình thường: Ta thấy xác suất của trạng thái giấc ngủ bình thường có chất lượng giấc ngủ bình thường chênh lệch cao hơn 0.43352 so với nhóm có chất lượng giấc ngủ tốt.

  • Hệ số của nhóm chất lượng giấc ngủ rất tốt: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có chất lượng giấc ngủ rất tốt chênh lệch thấp hơn 0.64608 so với nhóm có chất lượng giấc ngủ tốt.

  • Hệ số của nhóm mức độ căng thẳng nhẹ: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm mức độ căng thẳng nhẹ chênh lệch thấp hơn 0.05074 so với nhóm mức độ căng thẳng bình thường (không căng thẳng).

  • Hệ số của nhóm mức độ căng thẳng nặng: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm mức độ căng thẳng nặng chênh lệch thấp hơn 0.38971 so với nhóm mức độ căng thẳng bình thường (không căng thẳng).

4.2. Mô hình hồi quy Logit

Mô hình hồi quy Logit, hay còn gọi là Logistic Regression, là một phương pháp phân tích thống kê được sử dụng để ước lượng xác suất xảy ra của một sự kiện nhị phân (ví dụ: có hoặc không, thành công hoặc thất bại). Mô hình này đảm bảo rằng xác suất ước lượng sẽ nằm trong khoảng từ 0 đến 1, khắc phục hạn chế của mô hình xác suất tuyến tính trên.

Khi hàm liên kết có dạng \(g(\mu)=\operatorname{logit}(\mu)=\log \left(\frac{\mu}{1-\mu}\right)\), mô hình hồi quy \[ \log \left(\frac{\mu}{1-\mu}\right)=\log \left(\frac{\pi}{1-\pi}\right)=\operatorname{logit}(\pi)=\beta_0+\beta_1 \cdot x_1 + \beta_2 \cdot x_2+...+\beta_k \cdot x_k \] Được gọi là mô hình logit.

Với \(\pi\) là xác suất để biến phụ thuộc nhận giá trị “thành công”. Lưu ý: \(Y\) là biến nhị phân thì \(E(Y)=\pi\) với \(\pi=P(Y=\text{"Thành công"})\)

4.2.1. Mô hình Logit của Trạng thái giấc ngủ theo Thời gian ngủ

logitts <- glm(tt1 ~ ts1, data = a, family = binomial(link = 'logit'))
summary(logitts)
## 
## Call:
## glm(formula = tt1 ~ ts1, family = binomial(link = "logit"), data = a)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.1625     0.3299  -0.493   0.6223    
## ts1Ngủ Tương đối  -0.9588     0.3931  -2.439   0.0147 *  
## ts1Ngủ Tốt         1.9543     0.3994   4.893 9.95e-07 ***
## ts1Ngủ Nhiều       0.5824     0.4253   1.369   0.1709    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 507.47  on 373  degrees of freedom
## Residual deviance: 392.61  on 370  degrees of freedom
## AIC: 400.61
## 
## Number of Fisher Scoring iterations: 4

Hàm hồi quy: \(\log\left(\frac{\pi}{1-\pi}\right)=\operatorname{logit}(\pi)= -0.1625 -0.9588\times\text{Ngủ Tương đối} +1.9543\times\text{Ngủ Tốt}+0.5824\times\text{Ngủ Nhiều}\)

  • Hệ số chặn là -0.1625 cho thấy nếu không có sự ảnh hưởng bởi yếu tố khác thì xác suất của việc trạng thái bình thường khi ngủ là \(\frac{e^{(-0.1625)}}{1+e^{(-0.1625)}}\).

  • Hệ số của nhóm ngủ tương đối là -0.9588: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tương đối chênh lệch thấp hơn \(\frac{e^{(-0.9588)}}{1+e^{(-0.9588)}}\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ tốt là 1.9543: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tốt chênh lệch cao hơn \(\frac{e^{(1.9543)}}{1+e^{(1.9543)}}\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ nhiều là 0.5824: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ nhiều chênh lệch cao hơn \(\frac{e^{(0.5824)}}{1+e^{(0.5824)}}\) so với nhóm có thời gian ngủ ít.

4.2.2. Mô hình Logit của Trạng thái giấc ngủ theo Chất lượng giấc ngủ

logitqs <- glm(tt1 ~ qs1, data = a, family = binomial(link = 'logit'))
summary(logitqs)
## 
## Call:
## glm(formula = tt1 ~ qs1, family = binomial(link = "logit"), data = a)
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      1.1421     0.1712   6.671 2.55e-11 ***
## qs1Bình thường  -1.7970     0.2594  -6.927 4.30e-12 ***
## qs1Rất tốt      -1.0010     0.2931  -3.415 0.000638 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 507.47  on 373  degrees of freedom
## Residual deviance: 454.19  on 371  degrees of freedom
## AIC: 460.19
## 
## Number of Fisher Scoring iterations: 4

Hàm hồi quy:\(\log\left(\frac{\pi}{1-\pi}\right) = 1.1421-1.7970\times\text{Bình thường} -1.0010\times\text{Rất tốt}\)

  • Hệ số chặn là 1.1421: cho thấy nếu không có sự ảnh hưởng bởi yếu tố chất lượng giấc ngủ thì xác suất của việc trạng thái bình thường khi ngủ là \(\frac{e^{(1.1421)}}{1+e^{(1.1421)}}\)

  • Hệ số của nhóm chất lượng giấc ngủ bình thường là -1.7970: Ta thấy xác suất của trạng thái giấc ngủ bình thường có chất lượng giấc ngủ bình thường chênh lệch thấp hơn \(\frac{e^{(-1.7970)}}{1+e^{(-1.7970)}}\) so với nhóm có chất lượng giấc ngủ tốt.

  • Hệ số của nhóm chất lượng giấc ngủ rất tốt là -1.0010: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có chất lượng giấc ngủ rất tốt chênh lệch thấp hơn \(\frac{e^{(-1.0010)}}{1+e^{(-1.0010)}}\) so với nhóm có chất lượng giấc ngủ tốt.

4.2.3. Mô hình Logit của Trạng thái giấc ngủ theo Mức độ căng thẳng

logitsl <- glm(tt1 ~ sl1, data = a, family = binomial(link = 'logit'))
summary(logitsl)
## 
## Call:
## glm(formula = tt1 ~ sl1, family = binomial(link = "logit"), data = a)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   0.3584     0.1711   2.094   0.0362 *  
## sl1Nhẹ        1.6818     0.3409   4.934 8.08e-07 ***
## sl1Nặng      -1.2057     0.2626  -4.591 4.41e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 507.47  on 373  degrees of freedom
## Residual deviance: 418.29  on 371  degrees of freedom
## AIC: 424.29
## 
## Number of Fisher Scoring iterations: 4

Hàm hồi quy:\(\log\left(\frac{\pi}{1-\pi}\right) = 0.3584+1.6818\times\text{Nhẹ} -1.2057\times\text{Nặng}\)

  • Hệ số chặn là 0.3584: cho thấy nếu không có sự ảnh hưởng bởi yếu tố mức độ căng thẳng thì xác suất của việc trạng thái bình thường khi ngủ là \(\frac{e^{(0.3584)}}{1+e^{(0.3584)}}\)

  • Hệ số của nhóm mức độ căng thẳng nhẹ là 1.6818: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm mức độ căng thẳng nhẹ chênh lệch cao hơn \(\frac{e^{(1.6818)}}{1+e^{(1.6818)}}\) so với nhóm mức độ căng thẳng bình thường (không căng thẳng).

  • Hệ số của nhóm mức độ căng thẳng nặng là -1.2057: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm mức độ căng thẳng nặng chênh lệch thấp hơn \(\frac{e^{(-1.2057)}}{1+e^{(-1.2057)}}\) so với nhóm mức độ căng thẳng bình thường (không căng thẳng).

4.2.4. Mô hình Logit đa biến

lg_tt <- glm(`tt1` ~ `ts1`+`qs1`+`sl1`, data = a, family = binomial(link = 'logit'))
summary(lg_tt)
## 
## Call:
## glm(formula = tt1 ~ ts1 + qs1 + sl1, family = binomial(link = "logit"), 
##     data = a)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.5447     0.6321  -0.862 0.388828    
## ts1Ngủ Tương đối  -0.9361     0.4231  -2.213 0.026928 *  
## ts1Ngủ Tốt         2.7097     0.7233   3.747 0.000179 ***
## ts1Ngủ Nhiều       4.3335     1.0141   4.273 1.93e-05 ***
## qs1Bình thường    16.6273   620.7859   0.027 0.978632    
## qs1Rất tốt        -3.3689     0.7984  -4.220 2.45e-05 ***
## sl1Nhẹ             0.2607     0.5328   0.489 0.624608    
## sl1Nặng          -16.2450   620.7859  -0.026 0.979123    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 507.47  on 373  degrees of freedom
## Residual deviance: 346.76  on 366  degrees of freedom
## AIC: 362.76
## 
## Number of Fisher Scoring iterations: 15

Hàm hồi quy: \(\log\left(\frac{\pi}{1-\pi}\right) = -0.5447-0.9361\times\text{Ngủ Tương đối} + 2.7097\times\text{Ngủ Tốt} + 4.3335\times\text{Ngủ Nhiều}+16.6273\times\text{Bình thường} -3.3689\times\text{Rất tốt}+0.2607\times\text{Nhẹ}-16.2450\times\text{Nặng}\)

  • Hệ số chặn là -0.5447: cho thấy nếu không có sự ảnh hưởng bởi yếu tố mức độ căng thẳng thì xác suất của việc trạng thái bình thường khi ngủ là \(\frac{e^{(-0.5447)}}{1+e^{(-0.5447)}}\).

  • Hệ số của nhóm ngủ tương đối là -0.9361: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tương đối chênh lệch thấp hơn \(\frac{e^{(-0.9361)}}{1+e^{(-0.9361)}}\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ tốt là 2.7097: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tốt chênh lệch cao hơn \(\frac{e^{(2.7097)}}{1+e^{(2.7097)}}\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ nhiều là 4.3335: Ta thấy xác suất của trạng thái ngủ giấc bình thường trong nhóm có thời gian ngủ nhiều chênh lệch cao hơn \(\frac{e^{(4.333)}}{1+e^{(4.333)}}\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm chất lượng giấc ngủ bình thường là 16.6273: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có chất lượng giấc ngủ bình thường chênh lệch cao hơn \(\frac{e^{(16.6273)}}{1+e^{(16.6273)}}\) so với nhóm có chất lượng giấc ngủ tốt.

  • Hệ số của nhóm chất lượng giấc ngủ rất tốt là -3.3689: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có chất lượng giấc ngủ rất tốt chênh lệch thấp hơn \(\frac{e^{(-3.3689)}}{1+e^{(-3.3689)}}\) so với nhóm có chất lượng giấc ngủ tốt.

  • Hệ số của nhóm mức căng thẳng nhẹ là 0.2607: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có mức căng thẳng nhẹ chênh lệch cao hơn \(\frac{e^{(0.2607)}}{1+e^{(0.2607)}}\) so với nhóm có mức căng thẳng bình thường (không căng thẳng).

  • Hệ số của nhóm mức căng thẳng nặng là -16.2450: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có mức căng thẳng nặng chênh lệch thấp hơn \(\frac{e^{(-16.2450)}}{1+e^{(-16.2450)}}\) so với nhóm có mức căng thẳng bình thường (không căng thẳng).

4.3. Mô hình hồi quy probit

Mô hình hồi quy Probit sử dụng để ước lượng xác suất của một sự kiện nhị phân, tương tự như mô hình hồi quy Logit. Sự khác biệt chính giữa hai mô hình này nằm ở hàm liên kết (link function) mà chúng sử dụng để chuyển đổi xác suất thành một hàm tuyến tính của các biến độc lập.

Khi hàm liên kết có dạng: \(g(\mu)=g(\pi)=\operatorname{probit}(\pi)=\Phi^{-1}(\pi)\). Với \(\Phi(t)=\frac{1}{\sqrt{2 \pi}} \int_{-\infty}^t e^{-\frac{t^2}{2}}dt\)

hoặc có thể viết lại như sau:

\[ \pi(x)=\Phi(\beta_0+\beta_1 \cdot x_1 + \beta_2 \cdot x_2+...+\beta_k \cdot x_k) \] Trong đó: \(\Phi\) là hàm phân phối chuẩn tích lũy (CDF) của phân phối chuẩn (Gaussian distribution).

4.3.1. Mô hình hồi quy probit của Trạng thái giấc ngủ theo thời gian giấc ngủ

probitts <- glm(tt1 ~ ts1, data = a, family = binomial(link = 'probit'))
summary(probitts)
## 
## Call:
## glm(formula = tt1 ~ ts1, family = binomial(link = "probit"), 
##     data = a)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.1018     0.2064  -0.493   0.6219    
## ts1Ngủ Tương đối  -0.5861     0.2418  -2.424   0.0153 *  
## ts1Ngủ Tốt         1.1694     0.2399   4.874 1.09e-06 ***
## ts1Ngủ Nhiều       0.3641     0.2653   1.372   0.1700    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 507.47  on 373  degrees of freedom
## Residual deviance: 392.61  on 370  degrees of freedom
## AIC: 400.61
## 
## Number of Fisher Scoring iterations: 4

Hàm hồi quy:\(\pi(x)=\Phi(-0.1018-0.5861\times\text{Ngủ tương đối} + 1.1694\times\text{Ngủ Tốt} + 0.3641\times \text{Ngủ Nhiều})\)

  • Hệ số chặn là -0.1018: cho thấy nếu không có sự ảnh hưởng bởi yếu tố thời gian giấc ngủ thì xác suất của việc trạng thái bình thường khi ngủ là \(\Phi(-0.1018)\).

  • Hệ số của nhóm ngủ tương đối là -0.5861: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tương đối chênh lệch thấp hơn \(\Phi(-0.5861)\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ tốt là 1.1694: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tốt chênh lệch cao hơn \(\Phi(1.1694)\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ nhiều là 0.3641: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ nhiều chênh lệch cao hơn \(\Phi(0.3641)\) so với nhóm có thời gian ngủ ít.

4.3.2. Mô hình hồi quy probit của Trạng thái giấc ngủ theo chất lượng giấc ngủ

probitqs <- glm(tt1 ~ qs1, data = a, family = binomial(link = 'probit'))
summary(probitqs)
## 
## Call:
## glm(formula = tt1 ~ qs1, family = binomial(link = "probit"), 
##     data = a)
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      0.7001     0.1006   6.961 3.37e-12 ***
## qs1Bình thường  -1.1074     0.1561  -7.093 1.31e-12 ***
## qs1Rất tốt      -0.6117     0.1797  -3.404 0.000665 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 507.47  on 373  degrees of freedom
## Residual deviance: 454.19  on 371  degrees of freedom
## AIC: 460.19
## 
## Number of Fisher Scoring iterations: 4

Hàm hồi quy: \(\pi(x)= \Phi(0.7001-1.1074\times\text{Bình thường} -0.6117\times\text{Rất tốt})\)

  • Hệ số chặn là 0.7001: cho thấy nếu không có sự ảnh hưởng bởi yếu tố chất lượng giấc ngủ thì xác suất của việc trạng thái bình thường khi ngủ là \(\Phi(0.7001)\)

  • Hệ số của nhóm chất lượng giấc ngủ bình thường là -1.1074: Ta thấy xác suất của trạng thái giấc ngủ bình thường có chất lượng giấc ngủ bình thường chênh lệch thấp hơn \(\Phi(-1.1074)\) so với nhóm có chất lượng giấc ngủ tốt.

  • Hệ số của nhóm chất lượng giấc ngủ rất tốt là -0.6117: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có chất lượng giấc ngủ rất tốt chênh lệch thấp hơn \(\Phi(-0.6117)\) so với nhóm có chất lượng giấc ngủ tốt.

4.3.3. Mô hình hồi quy probit của Trạng thái giấc ngủ theo mức độ căng thẳng

probitsl <- glm(tt1 ~ sl1, data = a, family = binomial(link = 'probit'))
summary(probitsl)
## 
## Call:
## glm(formula = tt1 ~ sl1, family = binomial(link = "probit"), 
##     data = a)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   0.2241     0.1065   2.104   0.0354 *  
## sl1Nhẹ        0.9761     0.1877   5.199 2.00e-07 ***
## sl1Nặng      -0.7485     0.1607  -4.658 3.19e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 507.47  on 373  degrees of freedom
## Residual deviance: 418.29  on 371  degrees of freedom
## AIC: 424.29
## 
## Number of Fisher Scoring iterations: 4

Hàm hồi quy:\(\pi(x)=\Phi(0.2241+0.9761\times\text{Nhẹ} -0.7485\times\text{Nặng})\)

  • Hệ số chặn là 0.2241: cho thấy nếu không có sự ảnh hưởng bởi yếu tố mức độ căng thẳng thì xác suất của việc trạng thái bình thường khi ngủ là \(\Phi(0.2241)\)

  • Hệ số của nhóm mức độ căng thẳng nhẹ là 0.9761: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm mức độ căng thẳng nhẹ chênh lệch cao hơn \(\Phi(0.9761)\) so với nhóm mức độ căng thẳng bình thường (không căng thẳng).

  • Hệ số của nhóm mức độ căng thẳng nặng là 0.7485: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm mức độ căng thẳng nặng chênh lệch thấp hơn \(\Phi(-0.7485)\) so với nhóm mức độ căng thẳng bình thường (không căng thẳng).

4.3.4. Mô hình hồi quy probit đa biến

pb_tt <-  glm(tt1 ~ ts1 + qs1 + sl1, data = a, family = binomial(link = 'probit'))
summary(pb_tt)
## 
## Call:
## glm(formula = tt1 ~ ts1 + qs1 + sl1, family = binomial(link = "probit"), 
##     data = a)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.31561    0.37069  -0.851 0.394529    
## ts1Ngủ Tương đối  -0.57269    0.25893  -2.212 0.026983 *  
## ts1Ngủ Tốt         1.60713    0.41603   3.863 0.000112 ***
## ts1Ngủ Nhiều       2.60573    0.59025   4.415 1.01e-05 ***
## qs1Bình thường     5.93264  154.94942   0.038 0.969458    
## qs1Rất tốt        -2.02783    0.45249  -4.481 7.41e-06 ***
## sl1Nhẹ             0.08802    0.28048   0.314 0.753661    
## sl1Nặng           -5.71882  154.94937  -0.037 0.970559    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 507.47  on 373  degrees of freedom
## Residual deviance: 346.90  on 366  degrees of freedom
## AIC: 362.9
## 
## Number of Fisher Scoring iterations: 15

Hàm hồi quy: \(\pi(x)=\Phi(-0.31561-0.57269\times\text{Ngủ Tương đối} + 1.60713\times\text{Ngủ Tốt} + 2.60573\times\text{Ngủ Nhiều} +5.93264\times\text{Bình thường}-2.02783\times\text{Rất tốt}+0.08802\times\text{Rất tốt}-5.71882\times\text{Rất tốt})\)

  • Hệ số chặn là -0.31561 cho thấy nếu không có sự ảnh hưởng bởi yếu tố khác thì xác suất của việc trạng thái bình thường khi ngủ là \(\Phi(-0.31561)\)

  • Hệ số của nhóm ngủ tương đối là -0.57269: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tương đối chênh lệch thấp hơn \(\Phi(-0.57269)\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ tốt là 1.60713: Ta thấy xác suất của trạng thái giấc ngủ bình thường trong nhóm có thời gian ngủ tốt chênh lệch cao hơn \(\Phi(1.60713)\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm ngủ nhiều là 2.60573: Ta thấy xác suất của trạng thái ngủ giấc bình thường trong nhóm có thời gian ngủ nhiều chênh lệch cao hơn \(\Phi(2.60573)\) so với nhóm có thời gian ngủ ít.

  • Hệ số của nhóm chất lượng giấc ngủ bình thường là 5.93264: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có chất lượng giấc ngủ bình thường chênh lệch cao hơn \(\Phi(5.93264)\) so với nhóm có chất lượng giấc ngủ tốt.

  • Hệ số của nhóm chất lượng giấc ngủ rất tốt là -2.02783: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có chất lượng giấc ngủ rất tốt chênh lệch thấp hơn \(\Phi(-2.02783)\) so với nhóm có chất lượng giấc ngủ tốt.

  • Hệ số của nhóm mức căng thẳng nhẹ là 0.08802: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có mức căng thẳng nhẹ chênh lệch cao hơn \(\Phi(0.08802)\) so với nhóm có mức căng thẳng bình thường (không căng thẳng).

  • Hệ số của nhóm mức căng thẳng nặng là -5.71882: Ta thấy xác suất của trạng thái giấc ngủ bình thường của nhóm có mức căng thẳng nặng chênh lệch thấp hơn \(\Phi(-5.71882)\) so với nhóm có mức căng thẳng bình thường (không căng thẳng).

4.4. Đánh giá mô hình

Các tiêu chí được sử dụng để đánh giá mô hình là: chỉ số AIC, hệ số Brier Score. Theo đó, các tiêu chí càng nhỏ thì mô hình càng tốt.

4.4.1.Chỉ số AIC

Chỉ số AIC (Akaike Information Criterion) là một thước đo được sử dụng trong thống kê để đánh giá và so sánh các mô hình thống kê khác nhau. AIC giúp lựa chọn mô hình tốt nhất từ một tập hợp các mô hình được thử nghiệm bằng cách cân nhắc giữa độ khớp của mô hình với dữ liệu và độ phức tạp của mô hình. AIC được tính bằng công thức sau:

\[ AIC=2k-2log(L) \] - trong đó: k là số biến của mô hình, \(L\) là giá trị cực đại của hàm hợp lý.

  • Giá trị AIC nhỏ hơn cho thấy mô hình tốt hơn, với điều kiện là các mô hình được so sánh phải dùng chung một tập dữ liệu. AIC là một công cụ hữu ích để cân nhắc giữa độ phức tạp của mô hình và độ khớp của mô hình đó với dữ liệu.

4.4.1.1. Lựa chọn mô hình tốt nhất của trạng thái giấc ngủ theo thời gian giấc ngủ

AIC(OLTS)
## [1] 414.9287
AIC(logitts)
## [1] 400.6123
AIC(probitts)
## [1] 400.6123

Nhận xét: Mô hình tốt nhất của trạng thái giấc ngủ theo thời gian giấc ngủ là mô hình Logistic với mô hình Probit khi cả hai đều có chỉ số 400.6123

4.4.1.2. Lựa chọn mô hình tốt nhất của trạng thái giấc ngủ theo chất lượng giấc ngủ

AIC(OLQS)
## [1] 483.581
AIC(logitqs)
## [1] 460.1947
AIC(probitqs)
## [1] 460.1947

Nhận xét: Mô hình tốt nhất của trạng thái giấc ngủ theo chất lượng giấc ngủ là mô hình Logistic với mô hình Probit khi cả hai đều có chỉ số 460.1947

4.4.1.3. Lựa chọn mô hình tốt nhất của trạng thái giấc ngủ theo mức độ căng thẳng

AIC(OLSL)
## [1] 447.126
AIC(logitsl)
## [1] 424.2857
AIC(probitsl)
## [1] 424.2857

Nhận xét: Mô hình tốt nhất của trạng thái giấc ngủ theo mức độ căng thẳng là mô hình Logistic với mô hình Probit khi cả hai đều có chỉ số 424.2857

4.4.1.4. Lựa chọn mô hình tốt nhất của các mô hình đa biến

AIC(lm_tt)
## [1] 375.353
AIC(lg_tt)
## [1] 362.7643
AIC(pb_tt)
## [1] 362.9005

Nhận xét: Mô hình tốt nhất của các mô hình đa biến là mô hình Logistic khi có chỉ số 362.7643

4.4.2.Chỉ số Brier Score

Chỉ số Brier Score là một thước đo để đánh giá độ chính xác của các dự đoán xác suất, thường được sử dụng trong các bài toán phân loại nhị phân và đa lớp. Chỉ số này đo lường sự khác biệt giữa các giá trị xác suất dự đoán và các giá trị thực tế. Chỉ số Brier Score dùng để đánh giá mô hình hồi quy logistic, được tính như sau: \[ B=\frac{1}{n}\sum_{i=1}^n(\hat{\pi}-o_i)^2 \] trong đó: \(\hat{\pi}\)\(o_i\) lần lượt là giá trị xác suất quan sát được và giá trị xác suất tính ra từ mô hình.

Giá trị của Brier Score càng nhỏ nghĩa là chênh lệch giữa xác suất thực tế và xác suất tính từ mô hình càng nhỏ, nghĩa là mô hình càng tốt.

BrierScore(logitts)
## [1] 0.1728761
BrierScore(logitqs)
## [1] 0.2088226
BrierScore(logitsl)
## [1] 0.1894285
BrierScore(lg_tt)
## [1] 0.150239

Nhận xét: Chỉ số Brier Score càng nhỏ càng tốt.

  • Ta thấy được chỉ số Brier Score tốt nhất là mô hình logistic đa biến (0.150239).

  • Xét theo đơn biến thì mô hình Logistic Trạng thái giấc ngủ - Thời gian ngủ là tốt nhất (0.1728761)

4.4.3. Ma trận nhầm lẫn - Confusion matrix

Ma trận nhầm lẫn (Confusion Matrix) trình bày các kết quả phân loại dựa trên các giá trị thực tế và giá trị dự đoán của mô hình.

library(glmnet)
## Warning: package 'glmnet' was built under R version 4.3.3
## Loading required package: Matrix
## 
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
## 
##     expand, pack, unpack
## Loaded glmnet 4.1-8
library(caret)
## Warning: package 'caret' was built under R version 4.3.3
## Loading required package: lattice
## 
## Attaching package: 'caret'
## The following objects are masked from 'package:DescTools':
## 
##     MAE, RMSE
## The following object is masked from 'package:survival':
## 
##     cluster
## The following object is masked from 'package:purrr':
## 
##     lift
library(pROC)
## Warning: package 'pROC' was built under R version 4.3.3
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
predict_lg <- predict.glm(lg_tt, newdata = a, type= "response")
roc_curve_logit <- roc(a$tt1, predict_lg)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
predicted_lg <- ifelse(predict_lg>0.5,"1","0")
confusion_matrix_lg <- table(predicted = predicted_lg, actual= a$`tt1`)
addmargins(confusion_matrix_lg)
##          actual
## predicted   0   1 Sum
##       0   119  45 164
##       1    36 174 210
##       Sum 155 219 374
confusionMatrix(table(predicted = predicted_lg, actual= a$`tt1`))
## Confusion Matrix and Statistics
## 
##          actual
## predicted   0   1
##         0 119  45
##         1  36 174
##                                           
##                Accuracy : 0.7834          
##                  95% CI : (0.7382, 0.8241)
##     No Information Rate : 0.5856          
##     P-Value [Acc > NIR] : 4.991e-16       
##                                           
##                   Kappa : 0.5575          
##                                           
##  Mcnemar's Test P-Value : 0.3741          
##                                           
##             Sensitivity : 0.7677          
##             Specificity : 0.7945          
##          Pos Pred Value : 0.7256          
##          Neg Pred Value : 0.8286          
##              Prevalence : 0.4144          
##          Detection Rate : 0.3182          
##    Detection Prevalence : 0.4385          
##       Balanced Accuracy : 0.7811          
##                                           
##        'Positive' Class : 0               
## 

Kết quả: Từ kết quả ma trận nhầm lẫn của ba mô hình xác suất tuyến tính, logit và probit chúng tôi nhận thấy kết quả tương đồng với nhau. Cả ba ma trận nhầm lẫn điều chỉ ra có 119 người mô hình dự đoán đúng là người có triệu chứng rối loạn giấc ngủ, tuy nhiên có 36 người mô hình dự đoán sai đối với người có triệu chứng trong giấc ngủ và khoảng 45 người mô hình dự đoán sai người có trạng thái giấc ngủ bình thường. Số lần mô hình dự đoán đúng ở người có trạng thái giấc ngủ bình thường là 174 người đạt cao nhất.

  • Kết quả cũng chỉ ra tỷ lệ mô hình dự đoán đúng là 78.34% giao động khoảng 73.89% đến 82.22%

  • Kappa đo lường sự đồng thuận giữa dự đoán và thực tế, hiệu chỉnh cho sự đồng thuận ngẫu nhiên. Giá trị 0.5575 cho thấy mức độ đồng thuận vừa phải.

  • Mô hình nhận diện chính xác 76.77% các trường hợp thực tế là Trạng thái bình trường của giấc ngủ.

  • Mô hình nhận diện chính xác 79.45% các trường hợp thực tế là Triệu chứng rối loạn giấc ngủ.

Chương 5: Kết luận

5.1. Kết luận

Bộ dữ liệu Sleep Health and Lifestyle Dataset đã cung cấp một bức tranh toàn cảnh về mối quan hệ phức tạp giữa giấc ngủ và lối sống của con người. Qua việc phân tích chi tiết 374 người, nghiên cứu đã xác định được một số yếu tố quan trọng ảnh hưởng đến chất lượng và thời lượng giấc ngủ, bao gồm tuổi tác, giới tính, nghề nghiệp, mức độ căng thẳng và hoạt động thể chất. Đặc biệt, nghiên cứu này đã làm rõ mối liên hệ chặt chẽ giữa thời gian giấc ngủ, chất lượng giấc ngủ và mức độ căng thẳng ảnh hưởng đến trạng thái giấc ngủ. Với kết quả nghiên cứu này không chỉ nhấn mạnh tầm quan trọng của giấc ngủ đối với sức khỏe tổng thể mà còn cung cấp cơ sở khoa học để phát triển các biện pháp can thiệp hiệu quả, giúp điều trị các rối loạn giấc ngủ như mất ngủ và ngưng thở khi ngủ, từ đó cải thiện chất lượng cuộc sống của mọi người. Phân tích bộ dữ liệu.

Kết quả nghiên cứu:

  • Cơ cấu nghề nghiệp khá đa dạng, tuy nhiên một số ngành nổi bật với tỷ lệ cao hơn. Nhóm nhân viên y tế (bác sĩ, y tá) chiếm tỷ lệ cao nhất chiếm 38.5%. Tiếp theo là nhân viên văn phòng (nhân viên kế toán, bán hàng) với tỷ lệ 18.45%. Nhóm giáo dục (giáo viên) chiếm 10.7%. Nhóm kỹ thuật (kỹ sư, kỹ sư phần mềm) chiếm 17.91%. Các ngành nghề khác chiếm 14.44%.

  • Thời gian giấc ngủ trung bình cho thấy số lượng người có số giờ ngủ trung bình là nhiều nhất có 161 người chiếm 43.05% , tiếp theo là số lượng người ngủ có số giờ tương đối có 118 người chiếm 31.55%, số lượng người có số giờ ngủ ít là 37 người chiếm tỷ lệ ít nhất 9.9% và số lượng người có số ngủ nhiều là 58 người chiếm tỷ lệ 15.5%. Phần lớn nhóm tham gia khảo sát có số giờ ngủ cực kỳ tốt chiếm 90.1% có thời gian ngủ trên 6 tiếng.

  • Chất lượng giấc ngủ, ta có thể thấy nhóm có chất lượng giấc ngủ được đánh giá tốt có số người nhiều nhất là 186 người chiếm tỷ lệ 49.73%. Kế đến là nhóm đánh giá chất lượng giấc ngủ bình thường có 117 người chiếm 31.28%. Và ít nhất là nhóm người có chất lượng giấc ngủ rất tốt là 71 người chiếm 18.98%.

  • Mức độ căng thẳng, ta thấy nhóm người có mức độ căng thẳng bình thường có 141 người chiếm tỷ lệ cao nhất là 37.7%. Kế đến nhóm người mức độ căng thẳng nặng có 120 người chiếm tỷ lệ 32.08% Và cuối cùng là nhóm người mức độ căng thẳng nhẹ có 113 người chiếm tỷ lệ ít nhất là 30.21%. Nhìn chung thì mức độ căng thẳng của các nhóm phân chia khá đều nhau chênh lệch nhau không nhiều.

  • Trạng thái giấc ngủ, ta thấy được tỷ lệ số người ngủ được bình thường có 219 người chiếm 58.55% và tỷ lệ nhóm người có trạng thái giấc ngủ bất thường có 155 người là 41.45%, trong đó, chứng mất ngủ có 77 người chiếm 20.58% và chứng ngưng thở khi ngủ có 78 người chiếm 20.85%

  • Thời gian giấc ngủ ảnh hưởng đến Trạng thái giấc ngủ, ta có thể thấy việc dành cho thời gian ngủ ít hoặc quá nhiều cũng dẫn đến việc bị mắc các chứng rối loạn giấc ngủ khá cao (chưa xét các yếu tố khác như Nghề nghiệp, chất lượng giấc ngủ và mức độ căng thẳng) cụ thể là ngủ ít hơn 6 tiếng và nhiều hơn 8 tiếng.

  • Chất lượng giấc ngủ ảnh hưởng đến Trạng thái giấc ngủ, tỷ lệ mắc các rối loạn giấc ngủ như chứng mất ngủ và chứng ngưng thở khi ngủ giữa các nhóm chất lượng giấc ngủ khác nhau cho thấy sự khác biệt đáng kể. Trong nhóm có chất lượng giấc ngủ bình thường, 65.82% mắc các rối loạn giấc ngủ, trong khi 34.18% có trạng thái giấc ngủ bình thường. Đối với nhóm có chất lượng giấc ngủ tốt, tỷ lệ mắc các rối loạn chỉ là 24.19%, và 75.81% duy trì giấc ngủ bình thường. Ngược lại, trong nhóm có chất lượng giấc ngủ rất tốt, tỷ lệ mắc các rối loạn giấc ngủ là 46.5%, với 53.5% có giấc ngủ bình thường.

  • Mức độ căng thẳng ảnh hưởng đến Trạng thái giấc ngủ, các nhóm cho thấy sự khác biệt rõ rệt. Trong nhóm có mức độ căng thẳng bình thường, 41.14% mắc các rối loạn giấc ngủ, còn 58.86% duy trì trạng thái giấc ngủ bình thường. Trong nhóm có mức độ căng thẳng nhẹ, chỉ 11.5% mắc rối loạn giấc ngủ, và 88.5% có giấc ngủ bình thường. Ngược lại, trong nhóm có mức độ căng thẳng nặng, tỷ lệ mắc rối loạn giấc ngủ lên đến 70%, trong khi 30% duy trì giấc ngủ bình thường.

Phân tích các mô hình

  • Mô hình tốt nhất của trạng thái giấc ngủ theo thời gian giấc ngủ là mô hình Logistic với mô hình Probit khi cả hai đều có chỉ số 400.6123

  • Mô hình tốt nhất của trạng thái giấc ngủ theo chất lượng giấc ngủ là mô hình Logistic với mô hình Probit khi cả hai đều có chỉ số 460.1947

  • Mô hình tốt nhất của trạng thái giấc ngủ theo mức độ căng thẳng là mô hình Logistic với mô hình Probit khi cả hai đều có chỉ số 424.2857

  • Chỉ số Brier Score càng thấp cho thấy mô hình dự đoán càng chính xác. Trong nghiên cứu, mô hình logistic đa biến đạt chỉ số Brier Score tốt nhất là 0.150239, cho thấy hiệu suất dự đoán tốt nhất. Xét theo từng biến, mô hình logistic dựa trên trạng thái giấc ngủ và thời gian ngủ có chỉ số Brier Score là 0.1728761, là mô hình đơn biến tốt nhất.

  • Kết quả từ ma trận nhầm lẫn của ba mô hình xác suất tuyến tính, logit và probit cho thấy sự tương đồng giữa các mô hình. Cả ba đều dự đoán chính xác 119 trường hợp có triệu chứng rối loạn giấc ngủ, nhưng có 36 trường hợp bị dự đoán sai là người có triệu chứng và khoảng 45 trường hợp bị dự đoán sai là người có trạng thái giấc ngủ bình thường. Số lần dự đoán đúng trạng thái giấc ngủ bình thường là cao nhất với 174 trường hợp. Tỷ lệ dự đoán đúng của các mô hình đạt 78.34%, dao động từ 73.89% đến 82.22%. Chỉ số Kappa là 0.5575, cho thấy mức độ đồng thuận vừa phải giữa dự đoán và thực tế. Mô hình nhận diện chính xác 76.77% các trường hợp trạng thái giấc ngủ bình thường và 79.45% các trường hợp triệu chứng rối loạn giấc ngủ.

5.2. Một số khuyến nghị

5.2.1. Hạn chế

Bộ dữ liệu cung cấp cơ hội đáng kể để khám phá mối quan hệ giữa giấc ngủ và lối sống, nhưng cũng phải đối mặt với những hạn chế rõ rệt. Đầu tiên, chất lượng dữ liệu là vấn đề then chốt, với một số lượng quan sát hạn chế không thể phản ánh đầy đủ các biến thể về giấc ngủ. Thứ hai, sự dựa vào báo cáo tự nguyện có thể dẫn đến sai số do sự không chính xác trong ghi nhớ hoặc sự từ chối tiết lộ thông tin cá nhân. Sự đại diện mẫu dữ liệu không phải của toàn bộ dân số cũng là một rào cản lớn, hạn chế tính tổng quát của kết quả. Cuối cùng, việc thiếu các biến quan trọng có thể làm suy giảm khả năng phân tích chi tiết và tìm hiểu các mối liên hệ phức tạp, dẫn đến những kết luận hạn chế về tính chính xác của nghiên cứu.

5.2.2. Hướng nghiên cứu tiếp theo

Để khắc phục các hạn chế hiện tại của việc phân tích bộ dữ liệu Sleep Health and Lifestyle Dataset và cung cấp kết quả chính xác hơn, hướng nghiên cứu tiếp theo nên tập trung vào một số điểm sau:

  • Tăng cường phương pháp thu thập dữ liệu: Để đảm bảo tính đầy đủ và chính xác, nên sử dụng các thiết bị theo dõi giấc ngủ và lối sống tự động thay vì chỉ dựa vào báo cáo tự nguyện của người tham gia. Điều này sẽ giúp giảm thiểu sai lệch do không nhớ chính xác hoặc không muốn tiết lộ thông tin thực tế.

  • Tích hợp thêm các biến quan trọng khác: Nên thu thập thêm dữ liệu về các biến như mức độ stress, tình trạng sức khỏe tổng quát, và các yếu tố môi trường. Điều này sẽ cho phép phân tích tác động riêng lẻ của từng yếu tố và giúp hiểu rõ hơn về mối quan hệ giữa giấc ngủ và lối sống.

  • Sử dụng các phương pháp phân tích nhân quả: Để tìm hiểu rõ hơn về mối quan hệ giữa giấc ngủ và lối sống, nghiên cứu nên sử dụng các phương pháp phân tích nhân quả thay vì chỉ dừng lại ở việc xác định các mối tương quan. Điều này sẽ giúp xác định được các nguyên nhân và hệ quả cụ thể trong mối quan hệ này.

Nghiên cứu theo nhóm đối tượng cụ thể: Phân tích dữ liệu dựa trên các nhóm đối tượng cụ thể như người làm việc theo ca, sinh viên, người cao tuổi, v.v. sẽ giúp hiểu rõ hơn về các nhu cầu và thách thức đặc thù của từng nhóm. Điều này cũng sẽ giúp đưa ra các giải pháp cụ thể và hiệu quả hơn cho từng nhóm đối tượng.

LS0tDQp0aXRsZTogIlBIw4JOIFTDjUNIIFRS4bqgTkcgVEjDgUkgR0nhuqRDIE5H4bumIFFVQSBT4buoQyBLSOG7jkUgVsOAIEzhu5BJIFPhu5BORyAiDQphdXRob3I6ICJMw6ogTmd1eeG7hW4gUXXhu5FjIFRo4bqvbmcsIEh14buzbmggVHLhu41uZyBQaMO6YywgQ2jDonUgQSBLaeG7h3QiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclSDolTTolUywgJWQgLSAlbSAtICVZJylgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGRmX3ByaW50OiBwYWdlZA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogIHBkZl9kb2N1bWVudDoNCiAgICBleHRyYV9kZXBlbmRlbmNpZXM6DQogICAgICB2aWV0bmFtOiB1dGY4DQogICAgdG9jOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KZ2VvbWV0cnk6DQogICAgICAtIGlubmVyPTNjbQ0KICAgICAgLSBvdXRlcj00Y20NCiAgICAgIC0gdG9wPTNjbQ0KICAgICAgLSBib3R0b209NGNtDQogICAgICAtIGhlYWRzZXA9MjJwdA0KICAgICAgLSBoZWFkaGVpZ2h0PTExcHQNCiAgICAgIC0gZm9vdHNraXA9MzNwdA0KICAgICAgLSBpZ25vcmVoZWFkDQogICAgICAtIGlnbm9yZWZvb3QNCiAgICAgIC0gaGVpZ2h0cm91bmRlZA0KZWRpdG9yX29wdGlvbnM6IA0KICBtYXJrZG93bjogDQogICAgd3JhcDogNzINCi0tLQ0KDQpgYGB7Y3NzLGVjaG8gPSBGQUxTRX0NCmgxIHsNCiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogIGZvbnQtc2l6ZTogMzJweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQNCiAgfQ0KDQpoMiB7DQogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICBmb250LXNpemU6IDI4cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KIA0KfQ0KDQpoMyB7DQogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICBmb250LXNpemU6IDI0cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICANCn0NCg0KaDQge2ZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICBmb250LXNpemU6IDIwcHg7DQogIA0KDQpib2R5IHsNCiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogIGZvbnQtc2l6ZTogMThweDsNCiAgDQp9DQpwOm5vdChoMSk6bm90KGgyKTpub3QoaDMpOm5vdChoNCk6bm90KGg1KSB7DQogIHRleHQtaW5kZW50OiAyZW07fQ0KcCB7DQogIHRleHQtYWxpZ246IGp1c3RpZnk7DQogIH0NCi50b2NpZnktaGVhZGVyIHsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQoNCmBgYA0KIyBDaMawxqFuZyAxOiBU4buVbmcgcXVhbiDEkeG7gSB0w6BpIG5naGnDqm4gY+G7qXUNCiMjIDEuMS4gxJDhurd0IHbhuqVuIMSR4buBDQoNClRyb25nIHjDoyBo4buZaSBoaeG7h24gbmF5LCBnaeG6pWMgbmfhu6cgxJHDs25nIHZhaSB0csOyIHF1YW4gdHLhu41uZyB0cm9uZyB2aeG7h2MgZHV5IHRyw6wgc+G7qWMga2jhu49lIHThu5VuZyB0aOG7gyB2w6AgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcuIFR1eSBuaGnDqm4sIG5oaeG7gXUgbmfGsOG7nWkgxJFhbmcgcGjhuqNpIMSR4buRaSBt4bq3dCB24bubaSB0w6xuaCB0cuG6oW5nIHRoaeG6v3Ugbmfhu6cgaG/hurdjIGdp4bqlYyBuZ+G7pyBraMO0bmcgY2jhuqV0IGzGsOG7o25nIGRvIMOhcCBs4buxYyBjw7RuZyB2aeG7h2MsIGzhu5FpIHPhu5FuZyBi4bqtbiBy4buZbiwgY8SDbmcgdGjhurNuZywgdGjDs2kgcXVlbiBzaW5oIGhv4bqhdCBraMO0bmcgbMOgbmggbeG6oW5oIHbDoCBjw6FjIHnhur91IHThu5EgbcO0aSB0csaw4budbmcuIMSQaeG7gXUgbsOgeSBraMO0bmcgY2jhu4kg4bqjbmggaMaw4bufbmcgxJHhur9uIHPhu6ljIGto4buPZSB0aOG7gyBjaOG6pXQgbcOgIGPDsm4gZ8OieSByYSBuaOG7r25nIHTDoWMgxJHhu5luZyB0acOqdSBj4buxYyDEkeG6v24gdGluaCB0aOG6p24gdsOgIGhp4buHdSBzdeG6pXQgbMOgbSB2aeG7h2MgaMOgbmcgbmfDoHkuDQoNCiMjIDEuMi4gTeG7pWMgdGnDqnUgbmdoacOqbiBj4bupdQ0KDQojIyMgMS4yLjEuIE3hu6VjIHRpw6p1IGNodW5nDQoNClBow6JuIHTDrWNoIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHRow7RuZyBxdWEgc+G7qWMga2jhu49lIHbDoCBs4buRaSBz4buRbmcgZOG7sWEgdHLDqm4gZOG7ryBsaeG7h3Uga2jhuqNvIHPDoXQgY+G7p2EgMzc0IGPDoSBuaMOibi4NCg0KIyMjIDEuMi4yLiBN4bulYyB0acOqdSBj4bulIHRo4buDDQoNCi0gS2jDoW0gcGjDoSB2w6AgxJHDoW5oIGdpw6EgY8OhYyB54bq/dSB04buRIGxpw6puIHF1YW4gduG7gSBs4buRaSBz4buRbmcgdsOgIGdp4bqlYyBuZ+G7py4NCg0KLSBDw6FjIHnhur91IHThu5EgbGnDqm4gcXVhbiDEkeG6v24gbOG7kWkgc+G7kW5nOiBOZ2jhu4EgbmdoaeG7h3AsIE3hu6ljIMSR4buZIGhv4bqhdCDEkeG7mW5nIHRo4buDIGNo4bqldCwgTeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZywgc+G7kSBixrDhu5tjIGNow6Ju4oCmDQoNCi0gQ8OhYyB54bq/dSB04buRIGxpw6puIHF1YW4gxJHhur9uIGdp4bqlYyBuZ+G7pzogUuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pywgVGjhu51pIGdpYW4gbmfhu6cgdHJ1bmcgYsOsbmgsIENo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6figKYNCg0KLSBT4butIGThu6VuZyBiaeG7g3UgxJHhu5MgxJHhu4MgbWluaCBo4buNYSBjw6FjIHRow7RuZyB0aW4gcXVhbiB0cuG7jW5nIHbDoCB4dSBoxrDhu5tuZy4NCg0KLSBYw6FjIMSR4buLbmggY8OhYyB54bq/dSB04buRIHTDoWMgxJHhu5luZyDEkeG6v24gZ2nhuqVjIG5n4bunLCBj4bulIHRo4buDIGzDoCBjw6FjIGJp4buDdSBoaeG7h24gY+G7p2EgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7py4NCg0KLSBQaMOibiB0w61jaCBz4buxIHTDoWMgxJHhu5luZyBj4bunYSB0aOG7nWkgZ2lhbiBuZ+G7pywgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB2w6AgbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyDEkeG6v24gdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cuDQoNCiMjIDEuMy4gUGjGsMahbmcgcGjDoXAgbmdoacOqbiBj4bupdQ0KICANCiAgTmdoacOqbiBj4bupdSBz4butIGThu6VuZyBwaMawxqFuZyBwaMOhcCBo4buTaSBxdXkgxJHhu4MgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3Uga2jhuqNvIHPDoXQgdOG7qyBt4bqrdSBk4buvIGxp4buHdSB24buBIGdp4bqlYyBuZ+G7pyB2w6AgdGjDs2kgcXVlbiBzaW5oIGhv4bqhdC4gQ2jDum5nIHTDtGkgc+G7rSBk4bulbmcgcGjGsMahbmcgcGjDoXAgbsOgeSBuaOG6sW0geMOhYyDEkeG7i25oIG3hu6ljIMSR4buZIOG6o25oIGjGsOG7n25nIGPhu6dhIHThu6tuZyB54bq/dSB04buRIMSR4bq/biB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBj4bunYSB04burbmcgY8OhIG5ow6JuLiBOZ2/DoGkgcmEsIGPDsm4gc+G7rSBk4bulbmcgY8OhYyBwaMOibiB0w61jaCBraMOhYyBuaMawOiB0aOG7kW5nIGvDqiBtw7QgdOG6oywgxrDhu5tjIGzGsOG7o25nIHThu7cgbOG7hyBSZWxhdGl2ZSBSaXNrLCBPZGRzIFJhdGlvLg0KDQojIyAxLjQuIMOdIG5naMSpYSBj4bunYSDEkeG7gSB0w6BpDQogIA0KICBL4bq/dCBxdeG6oyBuZ2hpw6puIGPhu6l1IGdpw7pwIGhp4buDdSByw7UgaMahbiB24buBIG3hu5FpIHF1YW4gaOG7hyBwaOG7qWMgdOG6rXAgZ2nhu69hIGdp4bqlYyBuZ+G7pyB2w6AgY8OhYyB54bq/dSB04buRIGzhu5FpIHPhu5FuZywgdGjhuqV5IMSRxrDhu6NjIHThuqdtIHF1YW4gdHJvbmcgY+G7p2EgZ2nhuqVjIG5n4bunIMSR4buRaSB24bubaSBjdeG7mWMgc+G7kW5nIHRpbmggdGjhuqduIHbDoCB0aOG7gyBjaOG6pXQgxJHhu4MgdOG7qyDEkcOzIMSRxrBhIHJhIGPDoWMgY2hp4bq/biBsxrDhu6NjIGPhuqNpIHRoaeG7h24gY2jhuqV0IGzGsOG7o25nIHbDoCB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBjaG8gY+G7mW5nIMSR4buTbmcgbmjhurFtIGdp4bqjbSB0aGnhu4N1IGPDoWMgduG6pW4gxJHhu4EgbGnDqm4gcXVhbiDEkeG6v24gc+G7qWMga2jhu49lIHbDoCDEkeG6oXQgaGnhu4d1IHN14bqldCB0cm9uZyBjw7RuZyB2aeG7h2MgaMOgbmcgbmfDoHkuDQoNCiMgQ2jGsMahbmcgMjogVOG7lW5nIHF1YW4gYuG7mSBk4buvIGxp4buHdSBT4bupYyBraOG7j2UgdsOgIEzhu5FpIHPhu5FuZyBraGkgbmfhu6cNCg0KIyMgMi4xLkdp4bubaSB0aGnhu4d1DQoNClNsZWVwIEhlYWx0aCBhbmQgTGlmZXN0eWxlIERhdGFzZXQgbMOgIG3hu5l0IGLhu5kgZOG7ryBsaeG7h3UgY8OzIGdpw6EgdHLhu4sgY3VuZyBj4bqlcCB0aMO0bmcgdGluIGNoaSB0aeG6v3QgduG7gSBnaeG6pWMgbmfhu6cgdsOgIHRow7NpIHF1ZW4gc2luaCBob+G6oXQgY+G7p2EgMzc0IG5nxrDhu51pLiBC4buZIGThu68gbGnhu4d1IG7DoHkgxJHGsOG7o2MgdGh1IHRo4bqtcCB24bubaSBt4bulYyDEkcOtY2ggbmdoacOqbiBj4bupdSBuaOG6sW0gZ2nDunAgaGnhu4N1IHLDtSBoxqFuIHbhu4EgbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgZ2nhuqVjIG5n4bunIHbDoCBz4bupYyBraOG7j2UgdOG7lW5nIHRo4buDLg0KDQojIyAyLjIuTcO0IHThuqMgYuG7mSBk4buvIGxp4buHdQ0KDQpC4buZIGThu68gbGnhu4d1IGNo4bupYSAzNzQgcXVhbiBzw6F0IHRyw6puIDEzIGJp4bq/bi4NCg0KLSBQZXJzb24gSUQ6IE3DoyDEkeG7i25oIGRhbmggZHV5IG5o4bqldCBjaG8gbeG7l2kgbmfGsOG7nWkgdGhhbSBnaWEuDQoNCi0gR2VuZGVyOiBHaeG7m2kgdMOtbmgsICDEkcaw4bujYyBwaMOibiBsb+G6oWkgdGjDoG5oICJNYWxlIiAoTmFtKSB2w6AgIkZlbWFsZSIgKE7hu68pLg0KDQotIEFnZTogVHXhu5VpLCDEkW8gYuG6sW5nIMSRxqFuIHbhu4sgdGhlbyBuxINtDQoNCi0gT2NjdXBhdGlvbjogTmdo4buBIG5naGnhu4dwIGPhu6dhIG5ow7NtIG5nxrDhu51pIHRoYW0gZ2lhLiAgDQoNClxiZWdpbnthcnJheX17fGx8bHx9DQpcaGxpbmUNClx0ZXh0e1NvZnR3YXJlIEVuZ2luZWVyfSAmIFx0ZXh0e0vhu7kgc8awIHBo4bqnbiBt4buBbX0gXFwNClxobGluZQ0KXHRleHR7RG9jdG9yfSAmIFx0ZXh0e0LDoWMgc8SpfSBcXA0KXGhsaW5lDQpcdGV4dHtTYWxlcyBSZXByZXNlbnRhdGl2ZX0gJiBcdGV4dHvEkOG6oWkgZGnhu4duIGtpbmggZG9hbmh9IFxcDQpcaGxpbmUNClx0ZXh0e1RlYWNoZXJ9ICYgXHRleHR7R2nDoW8gdmnDqm59IFxcDQpcaGxpbmUNClx0ZXh0e051cnNlfSAmIFx0ZXh0e1kgdMOhfSBcXA0KXGhsaW5lDQpcdGV4dHtFbmdpbmVlcn0gJiBcdGV4dHtL4bu5IHPGsH0gXFwNClxobGluZQ0KXHRleHR7QWNjb3VudGFudH0gJiBcdGV4dHtOaMOibiB2acOqbiBr4bq/IHRvw6FufSBcXA0KXGhsaW5lDQpcdGV4dHtTY2llbnRpc3R9ICYgXHRleHR7TmjDoCBraG9hIGjhu41jfSBcXA0KXGhsaW5lDQpcdGV4dHtMYXd5ZXJ9ICYgXHRleHR7THXhuq10IHPGsH0gXFwNClxobGluZQ0KXHRleHR7U2FsZXNwZXJzb259ICYgXHRleHR7TmjDom4gdmnDqm4gYsOhbiBow6BuZ30gXFwNClxobGluZQ0KXHRleHR7TWFuYWdlcn0gJiBcdGV4dHtOaMOgIHF14bqjbiBsw719IFxcDQpcaGxpbmUNClxlbmR7YXJyYXl9DQoNCi0gU2xlZXAgRHVyYXRpb246IFRo4budaSBnaWFuIG5n4bunIGPhu6dhIG5nxrDhu51pIHRoYW0gZ2lhIG3hu5dpIMSRw6ptLCDEkcaw4bujYyDEkW8gYuG6sW5nIMSRxqFuIHbhu4sgZ2nhu50uDQoNCi0gUXVhbGl0eSBvZiBTbGVlcDogIENo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgY+G7p2EgbmfGsOG7nWkgdGhhbSBnaWEsIMSRxrDhu6NjIMSRw6FuaCBnacOhIHRyw6puIHRoYW5nIMSRaeG7g20gdOG7qyAxIMSR4bq/biAxMCwgduG7m2kgMSBsw6AgInLhuqV0IHThu4ciIHbDoCAxMCBsw6AgInLhuqV0IHThu5F0Ii4NCg0KLSBQaHlzaWNhbCBBY3Rpdml0eSBMZXZlbDogTeG7qWMgxJHhu5kgaG/huqF0IMSR4buZbmcgdGjhu4MgY2jhuqV0IGPhu6dhIG5nxrDhu51pIHRoYW0gZ2lhLCDEkcaw4bujYyDEkW8gYuG6sW5nIHPhu5EgcGjDunQgaG/huqF0IMSR4buZbmcgdGjhu4MgY2jhuqV0IHRydW5nIGLDrG5oIG3hu5dpIG5nw6B5Lg0KDQotIFN0cmVzcyBMZXZlbDogTeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBj4bunYSBuZ8aw4budaSB0aGFtIGdpYSwgxJHGsOG7o2MgxJHDoW5oIGdpw6EgdHLDqm4gdGhhbmcgxJFp4buDbSB04burIDEgxJHhur9uIDEwLCB24bubaSAxIGzDoCAia2jDtG5nIGPEg25nIHRo4bqzbmciIHbDoCAxMCBsw6AgImPhu7FjIGvhu7MgY8SDbmcgdGjhurNuZyAiDQoNCi0gQmxvb2QgUHJlc3N1cmU6IEh1eeG6v3Qgw6FwIGPhu6dhIG5nxrDhu51pIHRoYW0gZ2lhLCDEkcaw4bujYyDEkW8gYuG6sW5nIMSRxqFuIHbhu4sgbW1IZyAobWlsaW1ldCB0aOG7p3kgbmfDom4pLg0KDQotIEhlYXJ0IFJhdGU6IE5o4buLcCB0aW0gKHPhu5EgbOG6p24gdGltIMSR4bqtcCB0cm9uZyAxIHBow7p0KQ0KDQotIERhaWx5IFN0ZXBzOiBT4buRIGLGsOG7m2MgY2jDom4gxJHGsOG7o2MgaOG6sW5nIG5nw6B5IA0KDQotIFNsZWVwIERpc29yZGVyOiBS4buRaSBsb+G6oW4gZ2nhu5tpIG5n4bunIGPDsyAzIGJp4buDdSBoaeG7h24gduG7m2k6IA0KDQoiTm9uZSIgbMOgIGtow7RuZyBi4buLIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cgKELDrG5oIHRoxrDhu51uZykuDQoNCiJTbGVlcCBBcG5lYSIgQ2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunLiBHaeG6o2kgdGjDrWNoIHRow6ptIMSRw6J5IGzDoCBt4buZdCB0w6xuaCB0cuG6oW5nIHkga2hvYSBtw6AgdHJvbmcgxJHDsyBuZ8aw4budaSBi4buHbmggY8OzIG5o4buvbmcgxJHhu6N0IG5nxrBuZyB0aOG7nyDEkeG7mXQgbmfhu5l0IGhv4bq3YyBow7QgaOG6pXAga2jDtG5nIMSR4buBdSBraGkgxJFhbmcgbmfhu6csIGfDonkgcmEgY8OhYyB24bqlbiDEkeG7gSB24buBIGdp4bqlYyBuZ+G7pyB2w6Agc+G7qWMga2jhu49lIHThu5VuZyB0aOG7gy4NCg0KImluc29tbmlhIiBjaOG7qW5nIG3huqV0IG5n4bunLCDEkcOieSB0aHXhuq10IG5n4buvIGTDuW5nIMSR4buDIGNo4buJIHTDrG5oIHRy4bqhbmcga2jDsyBuZ+G7pyBob+G6t2Mga2jDtG5nIHRo4buDIG5n4bunIMSRxrDhu6NjLCBnw6J5IOG6o25oIGjGsOG7n25nIMSR4bq/biBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB2w6Agc+G7qWMga2jhu49lIGPhu6dhIG5nxrDhu51pIG3huq9jIHBo4bqjaS4NCg0KIyBDaMawxqFuZyAzOiBQaMOibiB0w61jaCBjw6FjIHnhur91IHThu5EgdMOhYyDEkeG7mW5nIMSR4bq/biBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pw0KDQojIyAzLjEuQ+G6pXUgdHLDumMgZOG7ryBsaeG7h3UgdsOgIHRo4buRbmcga8OqIG3DtCB04bqjDQoNCmBgYHtyIGVjaG89VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcGFnZWQucHJpbnQ9RkFMU0V9DQpsaWJyYXJ5KHJlYWR4bCkNClNsZWVwX2hlYWx0aF9hbmRfbGlmZXN0eWxlX2RhdGFzZXQgPC0gcmVhZF9leGNlbCgiQzovVXNlcnMvYWRtaW4vRG93bmxvYWRzL1NsZWVwX2hlYWx0aF9hbmRfbGlmZXN0eWxlX2RhdGFzZXQueGxzeCIpDQpWaWV3KFNsZWVwX2hlYWx0aF9hbmRfbGlmZXN0eWxlX2RhdGFzZXQpDQphIDwtIFNsZWVwX2hlYWx0aF9hbmRfbGlmZXN0eWxlX2RhdGFzZXQNCmBgYA0KDQpgYGB7ciBlY2hvPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIHBhZ2VkLnByaW50PUZBTFNFfQ0KbGlicmFyeShEVCkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbmFtZXMoYSkgPC0gYygnSUQnLCdHaeG7m2kgdMOtbmgnLCdUdeG7lWknLCdOZ2jhu4EgbmdoaeG7h3AnLCdUaOG7nWkgZ2lhbiBuZ+G7pycsJ0No4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cnLCdN4bupYyDEkeG7mSB0aOG7gyBjaOG6pXQnLCdN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nJywnQ2jhu4kgc+G7kSBCTUknLCdIdXnhur90IMOhcCcsJ05o4buLcCB0aW0nLCdT4buRIGLGsOG7m2MgY2jDom4nLCdUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pycpDQphJGBHaeG7m2kgdMOtbmhgIDwtIHJlY29kZShhJGBHaeG7m2kgdMOtbmhgLCJNYWxlIj0iTmFtIiwiRmVtYWxlIj0iTuG7ryIpDQphJGBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7p2AgPC0gcmVjb2RlKGEkYFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunYCwiTm9uZSI9IkLDrG5oIHRoxrDhu51uZyIsIlNsZWVwIEFwbmVhIj0iQ2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunIiwiSW5zb21uaWEiPSJjaOG7qW5nIG3huqV0IG5n4bunIikNCmEkYE5naOG7gSBuZ2hp4buHcGAgPC0gcmVjb2RlKGEkYE5naOG7gSBuZ2hp4buHcGAsIlNvZnR3YXJlIEVuZ2luZWVyIj0iS+G7uSBzxrAgcGjhuqduIG3hu4FtIiwiRG9jdG9yIj0iQsOhYyBzxKkiLCJTYWxlcyBSZXByZXNlbnRhdGl2ZSI9IsSQ4bqhaSBkaeG7h24ga2luaCBkb2FuaCIsIlRlYWNoZXIiPSJHacOhbyB2acOqbiIsIk51cnNlIj0iWSB0w6EiLCJFbmdpbmVlciI9Ikvhu7kgc8awIiwiQWNjb3VudGFudCI9Ik5ow6JuIHZpw6puIGvhur8gdG/DoW4iLCJTY2llbnRpc3QiPSJOaMOgIGtob2EgaOG7jWMiLCJMYXd5ZXIiPSJMdeG6rXQgc8awIiwiU2FsZXNwZXJzb24iPSJOaMOibiB2acOqbiBiw6FuIGjDoG5nIiwiTWFuYWdlciI9Ik5ow6AgcXXhuqNuIGzDvSIpDQphJGBDaOG7iSBz4buRIEJNSWAgPC0gcmVjb2RlKGEkYENo4buJIHPhu5EgQk1JYCwiTm9ybWFsIj0iQsOsbmggdGjGsOG7nW5nIiwiTm9ybWFsIFdlaWdodCI9IkPDom4gxJHhu5FpIiwiT2Jlc2UiPSJCw6lvIHBow6wiLCJPdmVyd2VpZ2h0Ij0iUXXDoSB0cuG7jW5nIGzGsOG7o25nIikNCmBgYA0KYGBge3J9DQpkYXRhdGFibGUoYSkNCmBgYA0KDQpgYGB7ciBlY2hvPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIHBhZ2VkLnByaW50PUZBTFNFfQ0Kc3VtbWFyeShhKQ0KYGBgDQoqKk5o4bqtbiB4w6l0Kio6IA0KDQotIFR14buVaTogTmfGsOG7nWkgdGhhbSBnaWEgY8OzIMSR4buZIHR14buVaSB04burIDI3IMSR4bq/biA1OSwgduG7m2kgdHXhu5VpIHRydW5nIGLDrG5oIGzDoCA0My4gDQoNCi0gVGjhu51pIEdpYW4gTmfhu6c6IFRydW5nIGLDrG5oIG5nxrDhu51pIHRoYW0gZ2lhIG5n4bunIGtob+G6o25nIDcuMTMgZ2nhu50sIHbhu5tpIHRo4budaSBnaWFuIG5n4bunIMOtdCBuaOG6pXQgbMOgIDUuOCBnaeG7nSB2w6Agbmhp4buBdSBuaOG6pXQgbMOgIDguNSBnaeG7nS4gDQoNCi0gQ2jhuqV0IEzGsOG7o25nIEdp4bqlYyBOZ+G7pzogxJBp4buDbSBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHRydW5nIGLDrG5oIGzDoCA3LjMxIHRyw6puIDksIGNobyB0aOG6pXkgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBy4bqldCB04buRdCBj4bunYSB0cm9uZyBuaMOzbSBz4buRIG5nxrDhu51pIHRoYW0gZ2lhLiANCg0KLSBN4bupYyDEkOG7mSBIb+G6oXQgxJDhu5luZyBUaOG7gyBDaOG6pXQgY+G7p2EgbmjDs20gbmfGsOG7nWkgdGhhbSBnaWEgZGFvIMSR4buZbmcgdOG7qyAzMCDEkeG6v24gOTAgcGjDunQgbeG7l2kgbmfDoHksIHbhu5tpIHRydW5nIGLDrG5oIGzDoCA1OS4xNyBwaMO6dC4gDQoNCi0gTeG7qWMgxJDhu5kgU3RyZXNzOiBUaGFuZyDEkWnhu4NtIMSRw6FuaCBnacOhIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgY+G7p2EgbmjDs20gbmfGsOG7nWkgZGFvIMSR4buZbmcgdOG7qyAzIMSR4bq/biA4LCB24bubaSB0cnVuZyBiw6xuaCBsw6AgNS4zOCwgY2hvIHRo4bqleSBt4bupYyDEkeG7mSBzdHJlc3MgduG7q2EgcGjhuqNpIHRyb25nIHPhu5EgbmfGsOG7nWkgdGhhbSBnaWEuIA0KDQotIE5o4buLcCBUaW06IE5o4buLcCB0aW0gdHJ1bmcgYsOsbmggbMOgIDcwLjE3IG5o4buLcC9waMO6dCwgduG7m2kgZGFvIMSR4buZbmcgdOG7qyA2NSDEkeG6v24gODYgbmjhu4twL3Bow7p0LiANCg0KLSBT4buRIELGsOG7m2MgxJBpIEjDoG5nIE5nw6B5OiBOZ8aw4budaSB0aGFtIGdpYSDEkWkgdOG7qyAzLDAwMCDEkeG6v24gMTAsMDAwIGLGsOG7m2MgbeG7l2kgbmfDoHksIHRydW5nIGLDrG5oIGtob+G6o25nIDYsODE3IGLGsOG7m2MuIA0KDQotIE5ow6xuIGNodW5nLCBi4buZIGThu68gbGnhu4d1IGNobyB0aOG6pXkgbeG7mXQgcXXhuqduIHRo4buDIGPDsyBz4buxIGPDom4gYuG6sW5nIHThu5F0IHbhu4EgdGjhu51pIGdpYW4gbmfhu6cgdsOgIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6csIG3hu6ljIMSR4buZIGhv4bqhdCDEkeG7mW5nIHRo4buDIGNo4bqldCB04buRdCB2w6AgbeG7qWMgxJHhu5kgc3RyZXNzIHbhu6thIHBo4bqjaS4NCg0KIyMgMy4yLiBQaMOibiB0w61jaCDEkcahbiBiaeG6v24NCg0KIyMjIDMuMi4xLkJp4bq/biBuZ2jhu4EgbmdoaeG7h3ANCg0KIyMjIyAzLjIuMS4xLiBC4bqjbmcgdOG6p24gc+G7kSB2w6AgdOG6p24gc3XhuqV0IGPhu6dhIGJp4bq/biBOZ2jhu4EgbmdoaeG7h3ANCg0KYGBge3J9DQp0YWJsZShhJGBOZ2jhu4EgbmdoaeG7h3BgKQ0KcHJvcC50YWJsZSh0YWJsZShhJGBOZ2jhu4EgbmdoaeG7h3BgKSkNCmBgYA0KDQojIyMjIDMuMi4xLjIuIEJp4buDdSDEkeG7kyB0csOybiBj4bunYSBiaeG6v24gTmdo4buBIG5naGnhu4dwDQoNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KcyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKGEkYE5naOG7gSBuZ2hp4buHcGApKQ0KY29sbmFtZXMocykgPC0gYygiTmdo4buBIG5naGnhu4dwIiwiQ291bnQiKQ0KcyRQZXJjZW50YWdlIDwtIChzJENvdW50IC8gc3VtKHMkQ291bnQpKSAqIDEwMA0KZ2dwbG90KHMsIGFlcyh4ID0gIiIsIHkgPSBQZXJjZW50YWdlLCBmaWxsID0gYE5naOG7gSBuZ2hp4buHcGApKSArDQogIGdlb21fYmFyKHdpZHRoID0gMSwgc3RhdCA9ICJpZGVudGl0eSIpICsNCiAgY29vcmRfcG9sYXIoInkiKSArDQogIGxhYnModGl0bGUgPSAiVOG7tyBs4buHIGPGoSBj4bqldSBuZ2jhu4EgbmdoaeG7h3AiLCB4ID0gIiIsIHkgPSAiIikgKw0KICB0aGVtZV92b2lkKCkgKyANCiAgdGhlbWUobGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpKSArIA0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUocm91bmQoUGVyY2VudGFnZSwgMiksICIlIikpLCANCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLCBzaXplID0gMykNCmBgYA0KDQoqKk5o4bqtbiB4w6l0Kio6IEJp4buDdSDEkeG7kyB0csOybiBtw7QgdOG6oyBjxqEgY+G6pXUgbmdo4buBIG5naGnhu4dwIGPhu6dhIG5ow7NtIG5nxrDhu51pIHRoYW0gZ2lhIGto4bqjbyBzw6F0LCB24bubaSAxMSBuZ8Ogbmggbmdo4buBIMSRxrDhu6NjIHRo4buDIGhp4buHbi4gTmjDrG4gY2h1bmcsIGPGoSBj4bqldSBuZ2jhu4EgbmdoaeG7h3Aga2jDoSDEkWEgZOG6oW5nLCB0dXkgbmhpw6puIG3hu5l0IHPhu5EgbmfDoG5oIG7hu5VpIGLhuq10IHbhu5tpIHThu7cgbOG7hyBjYW8gaMahbi4gTmjDs20gbmjDom4gdmnDqm4geSB04bq/IChiw6FjIHPEqSwgeSB0w6EpIGNoaeG6v20gdOG7tyBs4buHIGNhbyBuaOG6pXQgY2hp4bq/bSAzOC41JS4gVGnhur9wIHRoZW8gbMOgIG5ow6JuIHZpw6puIHbEg24gcGjDsm5nIChuaMOibiB2acOqbiBr4bq/IHRvw6FuLCBiw6FuIGjDoG5nKSB24bubaSB04bu3IGzhu4cgMTguNDUlLiBOaMOzbSBnacOhbyBk4bulYyAoZ2nDoW8gdmnDqm4pIGNoaeG6v20gMTAuNyUuIE5ow7NtIGvhu7kgdGh14bqtdCAoa+G7uSBzxrAsIGvhu7kgc8awIHBo4bqnbiBt4buBbSkgY2hp4bq/bSAxNy45MSUuIEPDoWMgbmfDoG5oIG5naOG7gSBraMOhYyBjaGnhur9tIDE0LjQ0JS4NCg0KIyMjIDMuMi4yLkJp4bq/biBUaOG7nWkgZ2lhbiBnaeG6pWMgbmfhu6cgDQoNCiMjIyMgMy4yLjIuMS4gQuG6o25nIHThuqduIHPhu5EgdsOgIHThuqduIHN14bqldCBj4bunYSBiaeG6v24gVGjhu51pIGdpYW4gZ2nhuqVjIG5n4bunDQoNCmBgYHtyfQ0KdGFibGUoYSRgVGjhu51pIGdpYW4gbmfhu6dgKQ0KcHJvcC50YWJsZSh0YWJsZShhJGBUaOG7nWkgZ2lhbiBuZ+G7p2ApKQ0KYGBgDQpW4bubaSBr4bq/dCBxdeG6oyBj4bunYSBi4bqjbmcgdOG6p24gc+G7kSB0csOqbiwgbmjDs20gdMO0aSBz4bq9IHBow6JuIHRow6BuaCA0IG5ow7NtIHRo4budaSBnaWFuIGdp4bqlYyBuZ+G7pyBuaMawIHNhdToNCg0KLSBOaMOzbSBOZ+G7pyDDrXQ6IFRo4budaSBnaWFuIG5n4bunIGTGsOG7m2kgNiBnaeG7nS4NCg0KLSBOaMOzbSBuZ+G7pyB0xrDGoW5nIMSR4buRaTogVGjhu51pIGdpYW4gbmfhu6cgNiDEkeG6v24gNyBnaeG7nS4NCg0KLSBOaMOzbSBuZ+G7pyB04buRdDogVGjhu51pIGdpYW4gbmfhu6cgNyDEkeG6v24gOCBnaeG7nS4NCg0KLSBOaMOzbSBuZ+G7pyBuaGnhu4F1OiBUaOG7nWkgZ2lhbiBuZ+G7pyB0csOqbiA4IGdp4budLg0KDQpgYGB7cn0NClRTIDwtIGN1dChhJGBUaOG7nWkgZ2lhbiBuZ+G7p2AsIA0KICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IGMoMCwgNiw3LDgsIEluZiksIA0KICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIk5n4bunIMONdCIsIk5n4bunIFTGsMahbmcgxJHhu5FpIiwiTmfhu6cgVOG7kXQiLCAiTmfhu6cgTmhp4buBdSIpKQ0KdGFibGUoVFMpDQpwcm9wLnRhYmxlKHRhYmxlKFRTKSkNCmBgYA0KDQojIyMjIDMuMi4yLjIuIMSQ4buTIHRo4buLIGPhu6dhIGJp4bq/biBUaOG7nWkgZ2lhbiBnaeG6pWMgbmfhu6cNCg0KYGBge3J9DQpnZ3Bsb3QoZGF0YT1hLGFlcyh4PSBUUykpKw0KICBnZW9tX2JhcihmaWxsPSJNYWdlbnRhIikrDQogIGxhYnMoeD0iQ8OhYyBuaMOzbSBnaeG7nSBuZ+G7pyIseT0iU+G7kSBuZ8aw4budaSIsIHRpdGxlPSLEkOG7kyB0aOG7iyBUaOG7nWkgZ2lhbiBuZ+G7pyB0cnVuZyBiw6xuaCIpKw0KICBnZW9tX3RleHQoc3RhdD0iY291bnQiLGFlcyhsYWJlbD1hZnRlcl9zdGF0KGNvdW50KSksdmp1c3Q9LTAuNSkgDQpgYGANCg0KKipOaOG6rW4geMOpdCoqOiAgVuG7m2kga+G6v3QgcXXhuqMgY+G7p2EgYuG6o25nIHThuqduIHPhu5EgdsOgIMSR4buZIHRo4buLIGPhu6dhIHRo4budaSBnaWFuIGdp4bqlYyBuZ+G7pyB0cnVuZyBiw6xuaCBjaG8gdGjhuqV5IHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgY8OzIHPhu5EgZ2nhu50gbmfhu6cgdHJ1bmcgYsOsbmggbMOgIG5oaeG7gXUgbmjhuqV0IGPDsyAxNjEgbmfGsOG7nWkgY2hp4bq/bSA0My4wNSUgLCB0aeG6v3AgdGhlbyBsw6Agc+G7kSBsxrDhu6NuZyBuZ8aw4budaSBuZ+G7pyBjw7Mgc+G7kSBnaeG7nSB0xrDGoW5nIMSR4buRaSBjw7MgMTE4IG5nxrDhu51pIGNoaeG6v20gMzEuNTUlLCBz4buRIGzGsOG7o25nIG5nxrDhu51pIGPDsyBz4buRIGdp4budIG5n4bunIMOtdCBsw6AgMzcgbmfGsOG7nWkgY2hp4bq/bSB04bu3IGzhu4cgw610IG5o4bqldCA5LjklIHbDoCBz4buRIGzGsOG7o25nIG5nxrDhu51pIGPDsyBz4buRIG5n4bunIG5oaeG7gXUgbMOgIDU4IG5nxrDhu51pIGNoaeG6v20gdOG7tyBs4buHIDE1LjUlLiBQaOG6p24gbOG7m24gbmjDs20gdGhhbSBnaWEga2jhuqNvIHPDoXQgY8OzIHPhu5EgZ2nhu50gbmfhu6cgY+G7sWMga+G7syB04buRdCBjaGnhur9tIDkwLjElIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyB0csOqbiA2IHRp4bq/bmcuDQoNCiMjIyAzLjIuMy4gQmnhur9uIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgDQoNCiMjIyMgMy4yLjMuMS4gQuG6o25nIHThuqduIHPhu5EgdsOgIHThuqduIHN14bqldCBiaeG6v24gQ2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pw0KYGBge3J9DQp0YWJsZShhJGBDaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunYCkNCnByb3AudGFibGUodGFibGUoYSRgQ2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7p2ApKQ0KYGBgDQoNClbhu5tpIGvhur90IHF14bqjIGPhu6dhIGLhuqNuZyB04bqnbiBz4buRIHbhu4EgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pywgbmjDs20gdMO0aSBz4bq9IHBow6JuIHRow6BuaCAzIG5ow7NtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgbmjGsCBzYXU6DQoNCi0gTmjDs20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBCw6xuaCB0aMaw4budbmc6IFRoYW5nIMSRaeG7g20gxJHDoW5oIGdpw6Eg4bufIGTGsOG7m2kgbeG7qWMgNi4NCg0KLSBOaMOzbSBjaOG6pXQgbMaw4bujbmcgbmfhu6cgZ2nhuqVjIFThu5F0OiBUaGFuZyDEkWnhu4NtIMSRw6FuaCBnacOhIOG7nyBt4bupYyA2IMSR4bq/biA4Lg0KDQotIE5ow7NtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgUuG6pXQgdOG7kXQ6IFRoYW5nIMSRaeG7g20gxJHDoW5oIGdpw6Eg4bufIHRyw6puIG3hu6ljIDguDQoNCmBgYHtyfQ0KUVMgPC0gY3V0KGEkYENo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6dgLCANCiAgICAgICAgICAgICAgICAgICBicmVha3MgPSBjKDAsNiw4LCBJbmYpLCANCiAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJCw6xuaCB0aMaw4budbmciLCJU4buRdCIsIlLhuqV0IHThu5F0IikpDQp0YWJsZShRUykNCnByb3AudGFibGUodGFibGUoUVMpKQ0KYGBgDQojIyMjIDMuMi4zLjIuIMSQ4buTIHRo4buLIGPhu6dhIGJp4bq/biBDaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunDQoNCmBgYHtyfQ0KZ2dwbG90KGRhdGE9YSxhZXMoeD0gUVMpKSsNCiAgZ2VvbV9iYXIoZmlsbD0iT3JhbmdlIFJlZCIpKw0KICBsYWJzKHg9IkPDoWMgbmjDs20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyIseT0iU+G7kSBuZ8aw4budaSIsIHRpdGxlPSLEkOG7kyB0aOG7iyBDaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIikrDQogIGdlb21fdGV4dChzdGF0PSJjb3VudCIsYWVzKGxhYmVsPWFmdGVyX3N0YXQoY291bnQpKSx2anVzdD0tMC41KSANCmBgYA0KDQoqKk5o4bqtbiB4w6l0Kio6IFbhu5tpIGvhur90IHF14bqjIGPhu6dhIGLhuqNuZyB04bqnbiBz4buRIHbDoCDEkeG7kyB0aOG7iyB24buBIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6csIHRhIGPDsyB0aOG7gyB0aOG6pXkgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgxJHGsOG7o2MgxJHDoW5oIGdpw6EgdOG7kXQgY8OzIHPhu5EgbmfGsOG7nWkgbmhp4buBdSBuaOG6pXQgbMOgIDE4NiBuZ8aw4budaSBjaGnhur9tIHThu7cgbOG7hyA0OS43MyUuIEvhur8gxJHhur9uIGzDoCBuaMOzbSDEkcOhbmggZ2nDoSBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBjw7MgMTE3IG5nxrDhu51pIGNoaeG6v20gMzEuMjglLiBWw6Agw610IG5o4bqldCBsw6AgbmjDs20gbmfGsOG7nWkgY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgcuG6pXQgdOG7kXQgbMOgIDcxIG5nxrDhu51pIGNoaeG6v20gMTguOTglLiBOaMawIHbhuq15IHRhIHRo4bqleSBuaMOzbSBuZ8aw4budaSB0aGFtIGdpYSBraOG6o28gc8OhdCBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBraMOhIHThu5F0Lg0KDQojIyMgMy4yLjQuIEJp4bq/biBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIA0KDQojIyMjIDMuMi40LjEuIELhuqNuZyB04bqnbiBz4buRIHbDoCB04bqnbiBzdeG6pXQgQmnhur9uIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcNCg0KU3RyZXNzIExldmVsOiBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIGPhu6dhIG5nxrDhu51pIHRoYW0gZ2lhLCDEkcaw4bujYyDEkcOhbmggZ2nDoSB0csOqbiB0aGFuZyDEkWnhu4NtIHThu6sgMSDEkeG6v24gMTAsIHbhu5tpIDEgbMOgICJraMO0bmcgY8SDbmcgdGjhurNuZyIgdsOgIDEwIGzDoCAiY+G7sWMga+G7syBjxINuZyB0aOG6s25nIg0KYGBge3J9DQp0YWJsZShhJGBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nYCkNCnByb3AudGFibGUodGFibGUoYSRgTeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZ2ApKQ0KYGBgDQpW4bubaSBr4bq/dCBxdeG6oyBj4bunYSBi4bqjbmcgdOG6p24gc+G7kSB24buBIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcsIG5ow7NtIHTDtGkgc+G6vSBwaMOibiB0aMOgbmggMyBuaMOzbSBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIG5oxrAgc2F1Og0KDQotIE5ow7NtIGPDsyBt4bupYyBjxINuZyB0aOG6s25nIELDrG5oIHRoxrDhu51uZzogVGhhbmcgxJFp4buDbSDEkcOhbmggZ2nDoSDhu58gZMaw4bubaSBt4bupYyA0Lg0KDQotIE5ow7NtIGPDsyBt4bupYyBjxINuZyB0aOG6s25nIG5o4bq5OiBUaGFuZyDEkWnhu4NtIMSRw6FuaCBnacOhIOG7nyBkxrDhu5tpIG3hu6ljIDQgxJHhur9uIDYuDQoNCi0gTmjDs20gY8OzIG3hu6ljIGPEg25nIHRo4bqzbmcgbuG6t25nOiBUaGFuZyDEkWnhu4NtIMSRw6FuaCBnacOhIOG7nyB0csOqbiBt4bupYyA2Lg0KDQpgYGB7cn0NClNMIDwtIGN1dChhJGBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nYCwgDQogICAgICAgICAgICAgICAgICAgYnJlYWtzID0gYygwLDQsNiwgSW5mKSwgDQogICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQsOsbmggdGjGsOG7nW5nIiwiTmjhurkiLCJO4bq3bmciKSkNCnRhYmxlKFNMKQ0KcHJvcC50YWJsZSh0YWJsZShTTCkpDQpgYGANCiMjIyMgMy4yLjQuMi4gxJDhu5MgdGjhu4sgQmnhur9uIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcNCg0KYGBge3J9DQpnZ3Bsb3QoZGF0YT1hLGFlcyh4PSBTTCkpKw0KICBnZW9tX2JhcihmaWxsPSJBcXVhbWFyaW5lIikrDQogIGxhYnMoeD0iQ8OhYyBuaMOzbSBt4bupYyBjxINuZyB0aOG6s25nIix5PSJT4buRIG5nxrDhu51pIiwgdGl0bGU9IsSQ4buTIHRo4buLIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmciKSsNCiAgZ2VvbV90ZXh0KHN0YXQ9ImNvdW50IixhZXMobGFiZWw9YWZ0ZXJfc3RhdChjb3VudCkpLHZqdXN0PS0wLjUpIA0KYGBgDQoNCioqTmjhuq1uIHjDqXQqKjogQuG6o25nIHThuqduIHPhu5EgdsOgIMSR4buTIHRo4buLIGNobyB0aOG6pXkgY8OzIDE0MSBuZ8aw4budaSB0aGFtIGdpYSBraOG6o28gc8OhdCBjw7MgbeG7sWMgxJHhu5kgY8SDbmcgdGjhurNuZyBiw6xuaCB0aMaw4budbmcgY2hp4bq/bSB04bu3IGzhu4cgY2FvIG5o4bqldCBsw6AgMzcuNyUuIEvhur8gxJHhur9uIG5ow7NtIG5nxrDhu51pIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbuG6t25nIGPDsyAxMjAgbmfGsOG7nWkgY2hp4bq/bSB04bu3IGzhu4cgMzIuMDglIFbDoCBjdeG7kWkgY8O5bmcgbMOgIG5ow7NtIG5nxrDhu51pIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbmjhurkgY8OzIDExMyBuZ8aw4budaSBjaGnhur9tIHThu7cgbOG7hyDDrXQgbmjhuqV0IGzDoCAzMC4yMSUuIE5ow6xuIGNodW5nIHRow6wgbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBj4bunYSBjw6FjIG5ow7NtIHBow6JuIGNoaWEga2jDoSDEkeG7gXUgbmhhdSBjaMOqbmggbOG7h2NoIG5oYXUga2jDtG5nIG5oaeG7gXUuDQoNCiMjIyAzLjIuNS4gQmnhur9uIFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunDQoNCiMjIyMgMy4yLjUuMS4gQuG6o25nIHThuqduIHPhu5EgdsOgIHThuqduIHN14bqldCBCaeG6v24gVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cNCg0KYGBge3J9DQp0YWJsZShhJGBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7p2ApDQpwcm9wLnRhYmxlKHRhYmxlKGEkYFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunYCkpDQpgYGANCiMjIyMgMy4yLjUuMi4gxJDhu5MgdGjhu4sgQmnhur9uIFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunDQoNCmBgYHtyfQ0KZ2dwbG90KGRhdGE9YSxhZXMoeD0gYSRgVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6dgKSkrDQogIGdlb21fYmFyKGZpbGw9IkxpZ2h0IFNhbG1vbiIpKw0KICBsYWJzKHg9IkPDoWMgbG/huqFpIHRy4bqhbmcgdGjDoWkgY+G7p2EgZ2nhuqVjIG5n4bunIix5PSJT4buRIG5nxrDhu51pIiwgdGl0bGU9IsSQ4buTIHRo4buLIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIikrDQogIGdlb21fdGV4dChzdGF0PSJjb3VudCIsYWVzKGxhYmVsPWFmdGVyX3N0YXQoY291bnQpKSx2anVzdD0tMC41KQ0KYGBgDQoNCioqTmjhuq1uIHjDqXQqKjogdGEgdGjhuqV5IMSRxrDhu6NjIHThu7cgbOG7hyBz4buRIG5nxrDhu51pIG5n4bunIMSRxrDhu6NjIGLDrG5oIHRoxrDhu51uZyBjaGnhur9tIDU4LjU1JSB2w6AgdOG7tyBs4buHIG5ow7NtIG5nxrDhu51pIGPDsyB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBi4bqldCB0aMaw4budbmcgbMOgIDQxLjQ1JSwgdHJvbmcgxJHDszoNCg0KLSBDaOG7qW5nIG3huqV0IG5n4bunOiBjaGnhur9tIHThu7cgbOG7hyAyMC41OCUuDQoNCi0gQ2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunOiBDaGnhur9tIHThu7cgbOG7hyAyMC44NSUuDQoNCiMjIDMuMy4gUGjDom4gdMOtY2ggMiBiaeG6v24NCg0KIyMjIDMuMy4xLiBQaMOibiB0w61jaCBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB2w6AgVGjhu51pIGdpYW4gZ2nhuqVjIG5n4bunDQoNCiMjIyMgMy4zLjEuMS4gROG7kyB0aOG7iyBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB2w6AgdGjhu51pIGdpYW4gbmfhu6cNCg0KYGBge3J9DQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpsaWJyYXJ5KGVwaVIpDQp0YWJsZShUUyxhJGBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7p2ApDQp0IDwtIHRhYmxlKFRTLGEkYFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunYCkNCnRzIDwtIGFzLmRhdGEuZnJhbWUodCkNCmNvbG5hbWVzKHRzKSA8LSBjKCJUeXBlIiwgInR0IiwgImNvdW50IikNCg0KZ2dwbG90KHRzLCBhZXMoeCA9IHR0LCB5ID0gY291bnQsIGZpbGwgPSB0dCkpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoKSkgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gY291bnQpLCB2anVzdCA9IDEsIHNpemUgPSA0LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKDEpKSArDQogIGZhY2V0X3dyYXAofiBUeXBlLCBzY2FsZXMgPSAiZnJlZV95IiwgbnJvdyA9IDIpICsNCiAgbGFicyh0aXRsZSA9ICLEkOG7kyB0aOG7iyB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB2w6AgdGjhu51pIGdpYW4gbmfhu6ciLA0KICAgICAgIHggPSAiVMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6ciLA0KICAgICAgIHkgPSAiU+G7kSBsxrDhu6NuZyBuZ8aw4budaSIsDQogICAgICAgZmlsbCA9ICJUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyIpICsNCiAgdGhlbWVfbWluaW1hbCgpDQpgYGANCg0KIyMjIyAzLjMuMS4yLiBC4bqjbmcgbmfhuqt1IG5oacOqbiBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB2w6AgdGjhu51pIGdpYW4gbmfhu6cNCmBgYHtyfQ0KYWRkbWFyZ2lucyh0KQ0KcHJvcC50YWJsZShhZGRtYXJnaW5zKHQpKQ0KYGBgDQoNCioqTmjhuq1uIHjDqXQqKjogVGjhu51pIGdpYW4gZ2nhuqVjIG5n4bunIOG6o25oIGjGsOG7n25nIMSR4bq/biBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pw0KDQotICoqVHJvbmcgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIMOtdCoqOiBU4bu3IGzhu4cgbmjDs20gbmfhu6cgw610IG3huq9jIGPDoWMgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyAoQ2jhu6luZyBt4bqldCBuZ+G7pywgQ2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunKSBjaGnhur9tIDU0LjA1JSB2w6AgY8OybiBs4bqhaSB0aMOsIDQ1Ljk1JSBuaMOzbSBuZ+G7pyDDrXQgY8OzIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZw0KDQotICoqVHJvbmcgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIHTGsMahbmcgxJHhu5FpKio6IFThu7cgbOG7hyBuaMOzbSBuZ+G7pyBCw6xuaCB0aMaw4budbmcgbeG6r2MgY8OhYyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunIChDaOG7qW5nIG3huqV0IG5n4bunLCBDaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cpIGNoaeG6v20gcuG6pXQgY2FvIGzDoCA3NS40JSB2w6AgY8OybiBs4bqhaSB0aMOsIDI0LjYlIG5ow7NtIG5n4bunIELDrG5oIHRoxrDhu51uZyBjw7MgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nDQoNCi0gKipUcm9uZyBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgdOG7kXQqKjogVOG7tyBs4buHIG5ow7NtIG5n4bunIHThu5F0IG3huq9jIGPDoWMgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyAoQ2jhu6luZyBt4bqldCBuZ+G7pywgQ2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunKSBjaGnhur9tIHLhuqV0IHRo4bqlcCBsw6AgMTQuMyUgdsOgIDg1LjclIGzDoCB04bu3IGzhu4cgY+G7p2EgbmjDs20gY8OzIHRo4budaSBuZ+G7pyB04buRdCBtw6Aga2jDtG5nIGLhu4sgbeG6r2MgY8OhYyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunICh0cuG6oW5nIHRow6FpIGLDrG5oIHRoxrDhu51uZykNCg0KLSAqKlRyb25nIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyBuaGnhu4F1Kio6IFThu7cgbOG7hyBuaMOzbSBuZ+G7pyBuaGnhu4F1IG3huq9jIGPDoWMgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyAoQ2jhu6luZyBt4bqldCBuZ+G7pywgQ2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunKSBjaGnhur9tIGtow6EgY2FvIGzDoCA2MC4zJSB2w6AgMzkuNyUgbMOgIHThu7cgbOG7hyBj4bunYSBuaMOzbSBjw7MgdGjhu51pIG5n4bunIG5oaeG7gXUgbcOgIGtow7RuZyBi4buLIG3huq9jIGPDoWMgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyAodHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcpDQoNCm5oxrAgduG6rXksIG5ow6xuIGNodW5nIHRhIGPDsyB0aOG7gyB0aOG6pXkgdmnhu4djIGTDoG5oIGNobyB0aOG7nWkgZ2lhbiBuZ+G7pyDDrXQgaG/hurdjIHF1w6Egbmhp4buBdSBjxaluZyBk4bqrbiDEkeG6v24gdmnhu4djIGLhu4sgbeG6r2MgY8OhYyBjaOG7qW5nIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cga2jDoSBjYW8gKGNoxrBhIHjDqXQgY8OhYyB54bq/dSB04buRIGtow6FjIG5oxrAgTmdo4buBIG5naGnhu4dwLCBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHbDoCBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nKSBj4bulIHRo4buDIGzDoCBuZ+G7pyDDrXQgaMahbiA2IHRp4bq/bmcgdsOgIG5oaeG7gXUgaMahbiA4IHRp4bq/bmcuDQoNCiMjIyMgMy4zLjEuMy4gxq/hu5tjIGzGsOG7o25nIHThu7cgbOG7hyBSZWxhdGl2ZSBSaXNrIGdp4buvYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB2w6AgdGjhu51pIGdpYW4gbmfhu6cNCg0KIFRyb25nIHBo4bqnbiBuw6B5IG5ow7NtIHTDtGkgY2jhu41uICoqVHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcga2hpIG5n4bunKiogbMOgIHThu7cgbOG7hyDigJx0aMOgbmggY8O0bmfigJ0gY+G7p2EgYmnhur9uIHBo4bulIHRodeG7mWMgKCoqVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cqKikgdMawxqFuZyDhu6luZyB24bubaSB04burbmcgYmnhu4N1IGhp4buHbiBj4bunYSBiaeG6v24gxJHhu5ljIGzhuq1wICgqKlRo4budaSBnaWFuIG5n4bunKiopLiANCiANCmBgYHtyfQ0KYSRUUyA8LSBUUw0KQlRTIDwtIHRhYmxlKGFbYSRgVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6dgID09ICJCw6xuaCB0aMaw4budbmciLCBdJFRTKQ0KQlRTDQpwcm9wLnRlc3QoQlRTWyJOZ+G7pyBU4buRdCJdLCBzdW0oQlRTKSwgcCA9IDAuNSkNCmBgYA0KKipOaOG6rW4geMOpdCoqOlRhIG5o4bqtbiB0aOG6pXkgdHJvbmcgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIHThu5F0IHRow6wgdHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcga2hpIG5n4bunIGNoaeG6v20gNjMlDQoNClRhIFXhu5tjIGzGsOG7o25nIHThu7cgbOG7hyBSZWxhdGl2ZSBSaXNrIGdp4buvYSAoKipjaOG7qW5nIG3huqV0IG5n4bunLCBjaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cqKikgY+G7p2EgY8OhYyBuaMOzbSBjw7Mgc+G7kSBnaeG7nSBuZ+G7pyAqKnThu5F0KiogdsOgIHPhu5EgZ2nhu50gbmfhu6cgKipuaGnhu4F1KiouDQoNCi0gVOG7qyBi4bqjbmcgdOG6p24gc3XhuqV0LCBjaMO6bmcgdGEgdMOtbmggJFxmcmFje8+AXzF9e8+AXzJ9JCwgcGjDom4gc+G7kSBuw6B5IGfhu41pIGzDoCBS4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmVsYXRpdmUgcmlzaykgZ2nhu69hIDIgYmnhu4N1IGhp4buHbiBj4bunYSAqKmNo4bupbmcgbeG6pXQgbmfhu6cqKiB2w6AgKipjaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cqKiBj4bunYSBiaeG6v24gKipUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyoqLg0KYGBge3J9DQpsaWJyYXJ5KERlc2NUb29scykNCmxpYnJhcnkoZXBpdG9vbHMpDQp4IDwtIG1hdHJpeChjKDcsIDE2LA0KICAgICAgICAgICAgICAxLCAyMiksDQogICAgICAgICAgICAgbnJvdyA9IDIsDQogICAgICAgICAgICAgYnlyb3cgPSBUUlVFLA0KICAgICAgICAgICAgIGRpbW5hbWVzID0gbGlzdChjKCJuZ+G7pyB04buRdCIsICJuZ+G7pyBuaGnhu4F1IiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkNo4bupbmcgbeG6pXQgbmfhu6ciLCAiY2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunIikpKQ0KZXBpdGFiKHgsIG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAnYycpDQpgYGANCioqTmjhuq1uIHjDqXQqKjogS+G6v3QgcXXhuqMgY2hvIHRo4bqleSBU4bu3IGzhu4cgY2jhu6luZyBt4bqldCBuZ+G7pyB0cm9uZyBuaMOzbSBjw7Mgc+G7kSBnaeG7nSBuZ+G7pyB04buRdCBsw6AgMzAuNDMlIHbDoCBU4bu3IGzhu4cgY+G7p2EgY2jhu6luZyBt4bqldCBuZ+G7pyB0cm9uZyBuaMOzbSBuZ+G7pyBuaGnhu4F1IGzDoCA0LjM0JS4gVOG7tyBs4buHIFJlbGF0aXZlIFJpc2sgY+G7p2EgY2jhu6luZyBt4bqldCBuZ+G7pyBnaeG7r2EgMiBuaMOzbSwgVOG7tyBs4buHIGNo4bupbmcgbeG6pXQgbmfhu6cgY+G7p2EgbmjDs20gbmfhu6cgbmhp4buBdSAoMikgdsOgIGNo4bupbmcgbeG6pXQgbmfhu6cg4bufIG5ow7NtIG5n4bunIHThu5F0ICgxKSBsw6AgMC4xNDI4IGzhuqduLCBuZ2jEqWEgbMOgICgyKSBn4bqlcCAwLjE0MjggbOG6p24gKDEpLiBW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlIHRow6wga2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIHThu7cgbOG7hyBSZWxhdGl2ZSBSaXNrIHThu6sgMC4wMTkwNjQ4MSDEkeG6v24gMS4wNzA0NjIuIFbhu5tpIFBfdmFsdWUgPSAwLjA0Njk3NzA0IG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhIDUlIHRow6wga+G6v3QgcXXhuqMgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLg0KDQojIyMjIDMuMy4xLjQuIMav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgT2RkcyBSYXRpbyBnaeG7r2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdsOgIHRo4budaSBnaWFuIG5n4bunDQoNClRhIHPhur0gxrDhu5tjIGzGsOG7o25nIHThu7cgbOG7hyBPZGRzIFJhdGlvIGdp4buvYSAoKipjaOG7qW5nIG3huqV0IG5n4bunLCBjaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cqKikgY+G7p2EgbmjDs20gY8OzIHPhu5EgZ2nhu50gbmfhu6cgKip04buRdCoqIHbDoCBuaMOzbSBjw7Mgc+G7kSBnaeG7nSBuZ+G7pyAqKm5oaeG7gXUqKg0KDQpgYGB7cn0NCk9kZHNSYXRpbyh4KQ0KYGBgDQoqKk5o4bqtbiB4w6l0Kio6IFbhu5tpIGvhur90IHF14bqjIG7DoHkgdGEgY8OzIHThu7cgbOG7hyAyIG5ow7NtDQoNCk5ow7NtIDEgKE5ow7NtIGPDsyBz4buRIGdp4budICoqbmfhu6cgdOG7kXQqKik6IFThu7cgbOG7hyBnaeG7r2EgY2jhu6luZyBt4bqldCBuZ+G7pyB2w6AgY2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunIHRyb25nIG5ow7NtIGPDsyBz4buRIGdp4budICoqbmfhu6cgdOG7kXQqKiBsw6AgMC40Mzc1LCBuZ2jEqWEgbMOgIGNo4bupbmcgbeG6pXQgbmfhu6cgZ+G6pXAgY2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunIHRyb25nIG5ow7NtIGPDsyBz4buRIGdp4budIG5n4bunIHThu5F0IGzDoCAwLjQzNzUgbOG6p24gDQoNCk5ow7NtIDIgKE5ow7NtIGPDsyBz4buRIGdp4budICoqbmfhu6cgbmhp4buBdSoqKTogVOG7tyBs4buHIGdp4buvYSBjaOG7qW5nIG3huqV0IG5n4bunIHbDoCBjaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cgdHJvbmcgbmjDs20gY8OzIHPhu5EgZ2nhu50gKipuZ+G7pyBuaGnhu4F1KiogbMOgIDAuMDQ1LCBuZ2jEqWEgbMOgIGNo4bupbmcgbeG6pXQgbmfhu6cgZ+G6pXAgY2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunIHRyb25nIG5ow7NtIGPDsyBz4buRIGdp4budICoqbmfhu6cgbmhp4buBdSoqIGzDoCAwLjA0NSBs4bqnbg0KDQpW4bqteSBjaOG7iSBz4buRIE9kZHNSYXRpbyBsw6AgOS42MjUgY8OzIHRo4buDIGhp4buDdSBsw6AgdOG7tyBs4buHIGdp4buvYSBuaMOzbSAxIGfhuqVwIG5ow7NtIDIgbMOgIDkuNjI1IGzhuqduLg0KDQojIyMgMy4zLjIuIFBow6JuIHTDrWNoIFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHbDoCBDaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunDQoNCiMjIyMgMy4zLjIuMS4gQuG6o25nIG5n4bqrdSBuaGnDqm4gY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdsOgIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cNCmBgYHtyfQ0KYWRkbWFyZ2lucyh0YWJsZShRUyxhJGBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7p2ApKQ0KcHJvcC50YWJsZShhZGRtYXJnaW5zKHRhYmxlKFFTLGEkYFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunYCkpKQ0KYGBgDQoNCioqTmjhuq1uIHjDqXQqKjogQ2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyDhuqNuaCBoxrDhu59uZyDEkeG6v24gVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cNCg0KLSAqKlRyb25nIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyoqOiBU4bu3IGzhu4cgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIG3huq9jIGPDoWMgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyAoQ2jhu6luZyBt4bqldCBuZ+G7pywgQ2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunKSBjaGnhur9tIDY1LjgyJSB2w6AgY8OybiBs4bqhaSB0aMOsIDM0LjE4JSBjw7MgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nDQoNCi0gKipUcm9uZyBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB04buRdCoqOiBU4bu3IGzhu4cgbmjDs20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB04buRdCBt4bqvYyBjw6FjIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cgKENo4bupbmcgbeG6pXQgbmfhu6csIENo4bupbmcgbmfGsG5nIHRo4bufIGtoaSBuZ+G7pykgY2hp4bq/bSBraMOhIHRo4bqlcCBsw6AgMjQuMTklIHbDoCA3NS44MSUgbmjDs20gdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGtoaSBjw7MgY2jhuqV0IGzGsOG7o25nIHThu5F0Lg0KDQotICoqVHJvbmcgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgcuG6pXQgdOG7kXQqKjogVOG7tyBs4buHIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHLhuqV0IHThu5F0IG3huq9jIGPDoWMgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyAoQ2jhu6luZyBt4bqldCBuZ+G7pywgQ2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunKSBjaGnhur9tIDQ2LjUlIHbDoCB04bu3IGzhu4cgY+G7p2EgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyB04buRdCBtw6Aga2jDtG5nIGLhu4sgbeG6r2MgY8OhYyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunICh0cuG6oW5nIHRow6FpIGLDrG5oIHRoxrDhu51uZykgY2hp4bq/bSA1My41JQ0KDQojIyMjIDMuMy4yLjIuIMSQ4buTIHRo4buLIGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHbDoCBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunDQpgYGB7cn0NCmEgJT4lIGdncGxvdChhZXMoeD1RUyx5PWFmdGVyX3N0YXQoY291bnQpKSkrDQogIGdlb21fYmFyKGZpbGw9ImRhcmtibHVlIikrDQogIGdlb21fdGV4dChzdGF0PSJjb3VudCIsYWVzKGxhYmVsPWFmdGVyX3N0YXQoY291bnQpKSxjb2xvcj0icmVkIix2anVzdD0tLjUpKw0KICBmYWNldF9ncmlkKC4gfiBhJGBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7p2ApKw0KICBsYWJzKHg9IkNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6ciLHk9IlPhu5EgbmfGsOG7nWkiKQ0KYGBgDQoNCiMjIyMgMy4zLjIuMy4gxq/hu5tjIGzGsOG7o25nIHThu7cgbOG7hyBSZWxhdGl2ZSBSaXNrIGdp4buvYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB2w6AgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pw0KDQpUcm9uZyBwaOG6p24gbsOgeSBuaMOzbSB0w7RpIGNo4buNbiAqKlRy4bqhbmcgdGjDoWkgYsOsbmggdGjGsOG7nW5nIGtoaSBuZ+G7pyoqIGzDoCB04bu3IGzhu4cg4oCcdGjDoG5oIGPDtG5n4oCdIGPhu6dhIGJp4bq/biBwaOG7pSB0aHXhu5ljICgqKlRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunKiopIHTGsMahbmcg4bupbmcgduG7m2kgdOG7q25nIGJp4buDdSBoaeG7h24gY+G7p2EgYmnhur9uIMSR4buZYyBs4bqtcCAoKipDaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunKiopLg0KDQpgYGB7cn0NCmEkUVMgPC0gUVMNCkJRUyA8LSB0YWJsZShhW2EkYFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunYCA9PSAiQsOsbmggdGjGsOG7nW5nIiwgXSRRUykNCkJRUw0KcHJvcC50ZXN0KEJRU1siVOG7kXQiXSwgc3VtKEJRUyksIHAgPSAwLjcpDQpgYGANCg0KKipOaOG6rW4geMOpdCoqOlRhIG5o4bqtbiB0aOG6pXkgdHJvbmcgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgdOG7kXQgdGjDrCB0cuG6oW5nIHRow6FpIGLDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cgY2hp4bq/bSA2NC4zOCUNCg0KLSBUYSDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIFJlbGF0aXZlIFJpc2sgZ2nhu69hICgqKmNo4bupbmcgbeG6pXQgbmfhu6csIGNo4bupbmcgbmfGsG5nIHRo4bufIGtoaSBuZ+G7pyoqKSBj4bunYSBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyAqKnThu5F0KiogdsOgIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunICoqcuG6pXQgdOG7kXQqKg0KDQotIFThu6sgYuG6o25nIHThuqduIHN14bqldCwgY2jDum5nIHRhIHTDrW5oICRcZnJhY3vPgF8xfXvPgF8yfSQsIHBow6JuIHPhu5EgbsOgeSBn4buNaSBsw6AgUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgKFJlbGF0aXZlIHJpc2spIGdp4buvYSAyIGJp4buDdSBoaeG7h24gY+G7p2EgKipjaOG7qW5nIG3huqV0IG5n4bunKiogdsOgICoqY2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunKiogY+G7p2EgYmnhur9uICoqVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cqKi4NCg0KYGBge3J9DQp5IDwtIG1hdHJpeChjKDM5LCA2LA0KICAgICAgICAgICAgICAxLCAzMiksDQogICAgICAgICAgICAgbnJvdyA9IDIsDQogICAgICAgICAgICAgYnlyb3cgPSBUUlVFLA0KICAgICAgICAgICAgIGRpbW5hbWVzID0gbGlzdChjKCJ04buRdCIsICJy4bqldCB04buRdCIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJDaOG7qW5nIG3huqV0IG5n4bunIiwgImNo4bupbmcgbmfGsG5nIHRo4bufIGtoaSBuZ+G7pyIpKSkNCmVwaXRhYih5LCBtZXRob2QgPSAncmlza3JhdGlvJywgcmV2ID0gJ2MnKQ0KYGBgDQoNCioqTmjhuq1uIHjDqXQqKjogS+G6v3QgcXXhuqMgY2hvIHRo4bqleSBU4bu3IGzhu4cgY+G7p2EgY2jhu6luZyBt4bqldCBuZ+G7pyB0cm9uZyBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyAqKnThu5F0KiogY2hp4bq/bSA4Ni42NyUgdsOgIFThu7cgbOG7hyBj4bunYSBjaOG7qW5nIG3huqV0IG5n4bunIHRyb25nIG5ow7NtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgKipy4bqldCB04buRdCoqIGzDoCAzLjAzJS4gdOG7tyBs4buHIFJlbGF0aXZlIFJpc2sgZ2nhu69hIDIgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgKip04buRdCoqICgxKSB2w6AgIG5ow7NtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgKipy4bqldCB04buRdCoqICgyKSBsw6AgMC4wMzQ5IGzhuqduLCBuZ2jEqWEgbMOgICgyKSBn4bqlcCAwLjAzNDkgbOG6p24gKDEpLiBW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlIHRow6wga2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIHThu7cgbOG7hyBSZWxhdGl2ZSBSaXNrIHThu6sgMC4wMDUwNTc2OTEgxJHhur9uIDAuMjQxNzIxNy4gVuG7m2kgUF92YWx1ZSA9IDEuMTg4NTA0ZS0xNCBuaOG7jyBoxqFuIG3hu6ljIMO9IG5naMSpYSA1JSB0aMOsIGvhur90IHF14bqjIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqi4NCg0KIyMjIyAzLjMuMi40LiDGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIE9kZHMgUmF0aW8gZ2nhu69hIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHbDoCBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunDQoNClRhIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgT2Rkc3JhdGlvIGdp4buvYSAoKipjaOG7qW5nIG3huqV0IG5n4bunLCBjaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cqKikgY+G7p2EgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgKip04buRdCoqIHbDoCBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyAqKnLhuqV0IHThu5F0KioNCmBgYHtyfQ0KT2Rkc1JhdGlvKHkpDQpgYGANCioqTmjhuq1uIHjDqXQqKjogVuG7m2kga+G6v3QgcXXhuqMgbsOgeSB0YSBjw7MgdOG7tyBs4buHIDIgbmjDs20NCg0KTmjDs20gMSAoTmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgKip04buRdCoqKTogVOG7tyBs4buHIGdp4buvYSBjaOG7qW5nIG3huqV0IG5n4bunIHbDoCBjaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cgdHJvbmcgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgKip04buRdCoqIGzDoCA2LjUsIG5naMSpYSBsw6AgY2jhu6luZyBt4bqldCBuZ+G7pyBn4bqlcCBjaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cgdHJvbmcgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgKip04buRdCoqICA2LjUgbOG6p24NCg0KTmjDs20gMiAoTmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgKipy4bqldCB04buRdCoqKTogVOG7tyBs4buHIGdp4buvYSBjaOG7qW5nIG3huqV0IG5n4bunIHbDoCBjaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cgdHJvbmcgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgKipy4bqldCB04buRdCoqIGzDoCAwLjAzMTI1LCBuZ2jEqWEgbMOgIGNo4bupbmcgbeG6pXQgbmfhu6cgZ+G6pXAgY2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunIHRyb25nIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunICoqcuG6pXQgdOG7kXQqKiBsw6AgMC4wMzEyNSBs4bqnbg0KDQpW4bqteSBjaOG7iSBz4buRIE9kZHNSYXRpbyBsw6AgMjA4IGPDsyB0aOG7gyBoaeG7g3UgbMOgIHThu7cgbOG7hyBnaeG7r2EgbmjDs20gMSBn4bqlcCBuaMOzbSAyIGzDoCAyMDggbOG6p24uDQoNCiMjIyAzLjMuMy4gUGjDom4gdMOtY2ggVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdsOgIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcNCg0KIyMjIyAzLjMuMy4xLiBC4bqjbmcgbmfhuqt1IG5oacOqbiBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB2w6AgTeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZw0KYGBge3J9DQphZGRtYXJnaW5zKHRhYmxlKFNMLGEkYFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunYCkpDQpwcm9wLnRhYmxlKGFkZG1hcmdpbnModGFibGUoU0wsYSRgVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6dgKSkpDQpgYGANCg0KKipOaOG6rW4geMOpdCoqOiBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIOG6o25oIGjGsOG7n25nIMSR4bq/biBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pw0KDQotICoqVHJvbmcgbmjDs20gY8OzIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgYsOsbmggdGjGsOG7nW5nKio6IFThu7cgbOG7hyBuaMOzbSBjw7MgbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBiw6xuaCB0aMaw4budbmcgbeG6r2MgY8OhYyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunIChDaOG7qW5nIG3huqV0IG5n4bunLCBDaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cpIGNoaeG6v20gNDEuMTQlIHbDoCBjw7JuIGzhuqFpIHRow6wgNTguODYlIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyB0cm9uZyBuaMOzbSBjw7MgTeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBiw6xuaCB0aMaw4budbmcuDQoNCi0gKipUcm9uZyBuaMOzbSBjw7MgTeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBuaOG6uSoqOiBU4bu3IGzhu4cgbmjDs20gY8OzIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbmjhurkgbeG6r2MgY8OhYyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunIChDaOG7qW5nIG3huqV0IG5n4bunLCBDaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cpIGNoaeG6v20ga2jDoSB0aOG6pXAgbMOgIDExLjUlIHbDoCA4OC41JSBuaMOzbSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcga2hpIGPDsyBjxINuZyB0aOG6s25nIG5o4bq5Lg0KDQotICoqVHJvbmcgbmjDs20gY8OzIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbuG6t25nKio6IFThu7cgbOG7hyBuaMOzbSBjw7MgTeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBu4bq3bmcgbeG6r2MgY8OhYyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunIChDaOG7qW5nIG3huqV0IG5n4bunLCBDaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cpIGNoaeG6v20gNzAlIHbDoCB04bu3IGzhu4cgY+G7p2EgbmjDs20gY8OzIHRy4bqhbmcgdGjDoWkga2jDtG5nIGLhu4sgbeG6r2MgY8OhYyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunICh0cuG6oW5nIHRow6FpIGLDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cpIGNoaeG6v20gMzAlLg0KDQoNCiMjIyMgMy4zLjMuMi4gxJDhu5MgdGjhu4sgY+G7p2EgVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdsOgIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcNCg0KYGBge3J9DQphICU+JSBnZ3Bsb3QoYWVzKHg9U0wseT1hZnRlcl9zdGF0KGNvdW50KSkpKw0KICBnZW9tX2JhcihmaWxsPSJza3libHVlIikrDQogIGdlb21fdGV4dChzdGF0PSJjb3VudCIsYWVzKGxhYmVsPWFmdGVyX3N0YXQoY291bnQpKSxjb2xvcj0icmVkIix2anVzdD0tLjUpKw0KICBmYWNldF9ncmlkKC4gfiBhJGBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7p2ApKw0KICBsYWJzKHg9Ik3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmciLHk9IlPhu5EgbmfGsOG7nWkiKQ0KYGBgDQoNCiMjIyMgMy4zLjMuMy4gxq/hu5tjIGzGsOG7o25nIHThu7cgbOG7hyBSZWxhdGl2ZSBSaXNrIGdp4buvYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB2w6AgbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZw0KDQpUcm9uZyBwaOG6p24gbsOgeSBuaMOzbSB0w7RpIGNo4buNbiAqKlRy4bqhbmcgdGjDoWkgYsOsbmggdGjGsOG7nW5nIGtoaSBuZ+G7pyoqIGzDoCB04bu3IGzhu4cg4oCcdGjDoG5oIGPDtG5n4oCdIGPhu6dhIGJp4bq/biBwaOG7pSB0aHXhu5ljICgqKlRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunKiopIHTGsMahbmcg4bupbmcgduG7m2kgdOG7q25nIGJp4buDdSBoaeG7h24gY+G7p2EgYmnhur9uIMSR4buZYyBs4bqtcCAoKipN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nKiopLg0KDQpgYGB7cn0NCmEkU0wgPC0gU0wNCkJTTCA8LSB0YWJsZShhW2EkYFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunYCA9PSAiQsOsbmggdGjGsOG7nW5nIiwgXSRTTCkNCkJTTA0KcHJvcC50ZXN0KEJTTFsiTmjhurkiXSwgc3VtKEJTTCksIHAgPSAwLjcpDQpgYGANCg0KKipOaOG6rW4geMOpdCoqOlRhIG5o4bqtbiB0aOG6pXkgdHJvbmcgbmjDs20gY8OzIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbmjhurkgdGjDrCB0cuG6oW5nIHRow6FpIGLDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cgY2hp4bq/bSA0NS42NiUuDQoNCi0gVGEgxrDhu5tjIGzGsOG7o25nIHThu7cgbOG7hyBSZWxhdGl2ZSBSaXNrIGdp4buvYSAoKipCw6xuaCB0aMaw4budbmcga2hpIG5n4bunLCBjaOG7qW5nIG3huqV0IG5n4bunKiopIGPhu6dhIG5ow7NtIGPDsyBjxINuZyB0aOG6s25nICoqbmjhurkqKiB2w6AgbmjDs20gY8OzIGPEg25nIHRo4bqzbmcgKipu4bq3bmcqKg0KDQotIFThu6sgYuG6o25nIHThuqduIHN14bqldCwgY2jDum5nIHRhIHTDrW5oICRcZnJhY3vPgF8xfXvPgF8yfSQsIHBow6JuIHPhu5EgbsOgeSBn4buNaSBsw6AgUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgKFJlbGF0aXZlIHJpc2spIGdp4buvYSAyIGJp4buDdSBoaeG7h24gY+G7p2EgKipjaOG7qW5nIG3huqV0IG5n4bunKiogdsOgICoqQsOsbmggdGjGsOG7nW5nIGtoaSBuZ+G7pyoqIGPhu6dhIGJp4bq/biAqKlRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunKiouDQoNCmBgYHtyfQ0KeiA8LSBtYXRyaXgoYygxMDAsIDgsDQogICAgICAgICAgICAgIDM2LCA0NCksDQogICAgICAgICAgICAgbnJvdyA9IDIsDQogICAgICAgICAgICAgYnlyb3cgPSBUUlVFLA0KICAgICAgICAgICAgIGRpbW5hbWVzID0gbGlzdChjKCJDxINuZyB0aOG6s25nIG5o4bq5IiwgIkPEg25nIHRo4bqzbmcgbuG6t25nIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkLDrG5oIHRoxrDhu51uZyBraGkgbmfhu6ciLCJDaOG7qW5nIG3huqV0IG5n4bunIikpKQ0KZXBpdGFiKHosIG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAnYycpDQpgYGANCg0KKipOaOG6rW4geMOpdCoqOiBL4bq/dCBxdeG6oyBjaG8gdGjhuqV5IFThu7cgbOG7hyBj4bunYSBCw6xuaCB0aMaw4budbmcga2hpIG5n4bunIHRyb25nIG5ow7NtIGPDsyBjxINuZyB0aOG6s25nICoqbmjhurkqKiBjaGnhur9tIDkyLjU5JSB2w6AgVOG7tyBs4buHIGPhu6dhIELDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cgdHJvbmcgbmjDs20gY8SDbmcgdGjhurNuZyAqKm7hurduZyoqIGzDoCA0NSUuIFThu7cgbOG7hyBSZWxhdGl2ZSBSaXNrIGdp4buvYSAyIG5ow7NtIGPDsyBjxINuZyB0aOG6s25nICoqbmjhurkqKiAoMSkgdsOgIG5ow7NtIGPEg25nIHRo4bqzbmcgKipu4bq3bmcqKiAoMikgbMOgIDAuNDg2IGzhuqduLCBuZ2jEqWEgbMOgICgyKSBn4bqlcCAwLjQ4NiBs4bqnbiAoMSkuIFbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSUgdGjDrCBraG/huqNuZyDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIFJlbGF0aXZlIFJpc2sgdOG7qyAwLjM3OTIzMTYgxJHhur9uIDAuNjIyODI3OC4gVuG7m2kgUF92YWx1ZSA9IDMuMTYyODY0ZS0xMyBuaOG7jyBoxqFuIG3hu6ljIMO9IG5naMSpYSA1JSB0aMOsIGvhur90IHF14bqjIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqi4NCg0KIyMjIyAzLjMuMy40LiDGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIE9kZHMgUmF0aW8gZ2nhu69hIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHbDoCBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nDQoNClRhIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgT2Rkc3JhdGlvIGdp4buvYSAoKipCw6xuaCB0aMaw4budbmcga2hpIG5n4bunLCBjaOG7qW5nIG3huqV0IG5n4bunKiopIGPhu6dhIG5ow7NtIGPDsyBjxINuZyB0aOG6s25nICoqbmjhurkqKiB2w6AgbmjDs20gY8OzIGPEg25nIHRo4bqzbmcgKipu4bq3bmcqKg0KYGBge3J9DQpPZGRzUmF0aW8oeikNCmBgYA0KKipOaOG6rW4geMOpdCoqOiBW4bubaSBr4bq/dCBxdeG6oyBuw6B5IHRhIGPDsyBoaeG7g3UgbMOgIHRhIHBo4bqjaSB0w61uaCB04bu3IGzhu4cgMiBuaMOzbQ0KDQpOaMOzbSAxIChOaMOzbSBjw7MgbeG7qWMgY8SDbmcgdGjhurNuZyAqKm5o4bq5KiopOiBU4bu3IGzhu4cgZ2nhu69hIELDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cgdsOgIGNo4bupbmcgbeG6pXQgbmfhu6cgdHJvbmcgbmjDs20gY8SDbmcgdGjhurNuZyAqKm5o4bq5KiogbMOgIDEyLjUsIG5naMSpYSBsw6AgQsOsbmggdGjGsOG7nW5nIGtoaSBuZ+G7pyBn4bqlcCBjaOG7qW5nIG3huqV0IG5n4bunIHRyb25nIG5ow7NtIGPEg25nIHRoxINuZyAqKm5o4bq5KiogIDEyLjUgbOG6p24NCg0KTmjDs20gMiAoTmjDs20gY8OzIG3hu6ljIGPEg25nIHRo4bqzbmcgKipu4bq3bmcqKik6IFThu7cgbOG7hyBnaeG7r2EgQsOsbmggdGjGsOG7nW5nIGtoaSBuZ+G7pyB2w6AgY2jhu6luZyBt4bqldCBuZ+G7pyB0cm9uZyBuaMOzbSBjw7MgbeG7qWMgY8SDbmcgdGjhurNuZyAqKm7hurduZyoqIGzDoCAwLjgxLCBuZ2jEqWEgbMOgIELDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cgZ+G6pXAgY2jhu6luZyBt4bqldCBuZ+G7pyB0cm9uZyBuaMOzbSBjw7MgbeG7qWMgY8SDbmcgKipu4bq3bmcqKiBsw6AgMC44MSBs4bqnbg0KDQpW4bqteSBjaOG7iSBz4buRIE9kZHNSYXRpbyBsw6AgMTUuMjc3NzggY8OzIHRo4buDIGhp4buDdSBsw6AgdOG7tyBs4buHIGdp4buvYSBuaMOzbSAxIGfhuqVwIG5ow7NtIDIgbMOgIDE1LjI3Nzc4IGzhuqduLg0KDQojIyAzLjQuIFRo4buRbmcga8OqIHN1eSBkaeG7hW4NCg0KIyMjIDMuNC4xLktp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCBj4bunYSBUaOG7nWkgZ2lhbiBnaeG6pWMgbmfhu6cgdsOgIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunLg0KDQrEkOG6t3QgZ2nhuqMgdGh1eeG6v3QgJEhfMCQgbMOgIGJp4bq/biB0aOG7nWkgZ2lhbiBnaeG6pWMgbmfhu6cgdsOgIGJp4bq/biB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdQ0KDQpgYGB7cn0NCmNoaXNxLnRlc3QodGFibGUoVFMsYSRgVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6dgKSkNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGEgdGjhuqV5IGdpw6EgdHLhu4sgcOKIknZhbHVlIGzDoCAyLjJl4oiSMTYgbmjhu48gaMahbiAwLjA1ICwgbsOqbiBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQgbmdoxKlhIGzDoCB0aOG7nWkgZ2lhbiBnaeG6pWMgbmfhu6cgdsOgIGJp4bq/biB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyDEkeG7mWMgbOG6rXAgY8OzIGxpw6puIHF1YW4gduG7m2kgbmhhdS4NCg0KIyMjIDMuNC4yLktp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCBj4bunYSBDaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHbDoCB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7py4NCg0KxJDhurd0IGdp4bqjIHRodXnhur90ICRIXzAkIGzDoCBiaeG6v24gQ2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB2w6AgYmnhur9uIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIMSR4buZYyBs4bqtcCB24bubaSBuaGF1DQpgYGB7cn0NCmNoaXNxLnRlc3QodGFibGUoUVMsYSRgVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6dgKSkNCmBgYA0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRhIHRo4bqleSBnacOhIHRy4buLIHDiiJJ2YWx1ZSBsw6AgMi4yZeKIkjE2IG5o4buPIGjGoW4gMC4wNSAsIG7Dqm4gYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkIG5naMSpYSBsw6AgQ2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB2w6AgYmnhur9uIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIMSR4buZYyBs4bqtcCBjw7MgbGnDqm4gcXVhbiB24bubaSBuaGF1Lg0KDQojIyMgMy40LjMuS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGPhu6dhIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgdsOgIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunLg0KDQrEkOG6t3QgZ2nhuqMgdGh1eeG6v3QgJEhfMCQgbMOgIGJp4bq/biBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIHbDoCBiaeG6v24gdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUNCmBgYHtyfQ0KY2hpc3EudGVzdCh0YWJsZShTTCxhJGBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7p2ApKQ0KYGBgDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGEgdGjhuqV5IGdpw6EgdHLhu4sgcOKIknZhbHVlIGzDoCAyLjJl4oiSMTYgbmjhu48gaMahbiAwLjA1ICwgbsOqbiBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQgbmdoxKlhIGzDoCBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIHbDoCBiaeG6v24gdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgxJHhu5ljIGzhuq1wIGPDsyBsacOqbiBxdWFuIHbhu5tpIG5oYXUuDQoNCiMgQ2jGsMahbmcgNDogTcO0IGjDrG5oIGjhu5NpIHF1eQ0KDQojIyA0LjEuIE3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oDQoNCk3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIChMaW5lYXIgUHJvYmFiaWxpdHkgTW9kZWwgLSBMUE0pIGzDoCBt4buZdCBk4bqhbmcgY+G7p2EgbcO0IGjDrG5oIGjhu5NpIHF1eSBkw7luZyDEkeG7gyDGsOG7m2MgbMaw4bujbmcgeMOhYyBzdeG6pXQgY+G7p2EgbeG7mXQgc+G7sSBraeG7h24uIFRyb25nIG3DtCBow6xuaCBuw6B5LCBiaeG6v24gcGjhu6UgdGh14buZYyBsw6AgYmnhur9uIG5o4buLIHBow6JuIChk4bqhbmcgMCBob+G6t2MgMSksIHbDrSBk4bulIG5oxrAga2jhuqMgbsSDbmcgeOG6o3kgcmEgbeG7mXQgc+G7sSBraeG7h24uIE3DtCBow6xuaCB0dXnhur9uIHTDrW5oIGdp4bqjIMSR4buLbmggcuG6sW5nIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgYmnhur9uIHBo4bulIHRodeG7mWMgdsOgIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcCBjw7MgdGjhu4MgxJHGsOG7o2MgbcO0IHThuqMgYuG6sW5nIG3hu5l0IGjDoG0gdHV54bq/biB0w61uaC4gQ8O0bmcgdGjhu6ljIGPGoSBi4bqjbiBj4bunYSBtw7QgaMOsbmggeMOhYyBzdeG6pXQgdHV54bq/biB0w61uaCBsw6A6DQoNCiQkDQpcaGF0e1xwaX09IFxiZXRhXzArXGJldGFfMSBcY2RvdCB4XzEgKyBcYmV0YV8yIFxjZG90IHhfMisuLi4rXGJldGFfayBcY2RvdCB4X2sNCiQkDQoqKlRyb25nIMSRw7MqKjoNCg0KLSAkXGhhdHtccGl9JCBsw6AgeMOhYyBzdeG6pXQgY+G7p2EgYmnhur9uIHBo4bulIHRodeG7mWMgJFkkIGLhurFuZyAxLCDEkWnhu4F1IGtp4buHbiBjaG8gY8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wICR4XzEseF8yLC4uLnhfayQuDQoNCi0gJFxiZXRhXzAkIGzDoCBo4buHIHPhu5EgY2jhurduDQoNCi0gJFxiZXRhXzEsXGJldGFfMiwuLi5cYmV0YV9rJCBsw6AgY8OhYyBo4buHIHPhu5EgaOG7k2kgcXV5IGPhu6dhIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KKipMxrB1IMO9Kio6IEjhuqFuIGNo4bq/IGPhu6dhIG3DtCBow6xuaCBuw6B5IGzDoCBr4bq/dCBxdeG6oyBk4buxIMSRb8OhbiBjw7MgdGjhu4Mga2jDtG5nIG7hurFtIHRyb25nIGtob+G6o25nIFswLCAxXSwgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyBnw6J5IHJhIG5o4buvbmcgduG6pW4gxJHhu4EgduG7gSDDvSBuZ2jEqWEgY+G7p2EgeMOhYyBzdeG6pXQuIMSQ4buDIGto4bqvYyBwaOG7pWMgxJFp4buBdSBuw6B5LCBjw6FjIG3DtCBow6xuaCBuaMawIGjhu5NpIHF1eSBsb2dpc3RpYyAoTG9naXN0aWMgUmVncmVzc2lvbikgaG/hurdjIGjhu5NpIHF1eSBQcm9iaXQgdGjGsOG7nW5nIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbDrCBjaMO6bmcgxJHhuqNtIGLhuqNvIHjDoWMgc3XhuqV0IGThu7EgxJFvw6FuIG7hurFtIHRyb25nIGtob+G6o25nIFswLCAxXS4NCg0KIyMjIDQuMS4xLiBNw7QgaMOsbmggeMOhYyBzdeG6pXQgdHV54bq/biB0w61uaCBj4bunYSBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB0aGVvIFRo4budaSBnaWFuIG5n4bunDQoNCmBgYHtyfQ0KYSR0dDEgPC0gaWZlbHNlKGEkYFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunYCAlaW4lIGMoIkLDrG5oIHRoxrDhu51uZyIpLCAxLCAwKQ0KYSR0czEgPC0gcmVsZXZlbChhcy5mYWN0b3IoYSRUUyksIHJlZiA9ICJOZ+G7pyDDjXQiKQ0KT0xUUyA8LSBsbSh0dDEgfiB0czEsIGRhdGEgPSBhKQ0Kc3VtbWFyeShPTFRTKQ0KYGBgDQoqKkjDoG0gaOG7k2kgcXV5Kio6ICRcaGF0e1xwaX09IDAuNDU5NDYtMC4yMTM3MFx0aW1lc1x0ZXh0e05n4bunIHTGsMahbmcgxJHhu5FpfSArIDAuMzk3NjhcdGltZXNcdGV4dHtOZ+G7pyBU4buRdH0rMC4xNDM5OVx0aW1lc1x0ZXh0e05n4bunIE5oaeG7gXV9JA0KDQotIEjhu4cgc+G7kSBjaOG6t24gbMOgIDAuNDU5NDYgY2hvIHRo4bqleSBu4bq/dSBraMO0bmcgY8OzIHPhu7Eg4bqjbmggaMaw4bufbmcgYuG7n2kgeeG6v3UgdOG7kSB0aOG7nWkgZ2lhbiBnaeG6pWMgbmfhu6cgdGjDrCB4w6FjIHN14bqldCBj4bunYSB2aeG7h2MgdHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcga2hpIG5n4bunIGzDoCAwLjQ1OTQ2DQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIG5n4bunIHTGsMahbmcgxJHhu5FpOiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIHRyb25nIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyB0xrDGoW5nIMSR4buRaSBjaMOqbmggbOG7h2NoIHRo4bqlcCBoxqFuIDAuMjEzNyBzbyB24bubaSBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgw610LiANCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbmfhu6cgdOG7kXQ6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgdHJvbmcgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIHThu5F0IGNow6puaCBs4buHY2ggY2FvIGjGoW4gMC4zOTc2OCBzbyB24bubaSBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgw610Lg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBuZ+G7pyBuaGnhu4F1OiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIHRyb25nIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyBuaGnhu4F1IGNow6puaCBs4buHY2ggY2FvIGjGoW4gMC4xNDM5OSBzbyB24bubaSBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgw610Lg0KDQojIyMgNC4xLjIuIE3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIGPhu6dhIFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHRoZW8gQ2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pw0KYGBge3J9DQphJHR0MSA8LSBpZmVsc2UoYSRgVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6dgICVpbiUgYygiQsOsbmggdGjGsOG7nW5nIiksIDEsIDApDQphJHFzMSA8LSByZWxldmVsKGFzLmZhY3RvcihhJFFTKSwgcmVmID0gIlThu5F0IikNCk9MUVMgPC0gbG0odHQxIH4gcXMxLCBkYXRhID0gYSkNCnN1bW1hcnkoT0xRUykNCmBgYA0KDQoqKkjDoG0gaOG7k2kgcXV5Kio6ICRcaGF0e1xwaX09IDAuNzU4MDYtMC40MTYxOFx0aW1lc1x0ZXh0e0LDrG5oIHRoxrDhu51uZ30gLTAuMjIyODVcdGltZXNcdGV4dHtS4bqldCB04buRdH0kDQoNCi0gSOG7hyBz4buRIGNo4bq3biBsw6AgMC43NTgwNiBjaG8gdGjhuqV5IG7hur91IGtow7RuZyBjw7Mgc+G7sSDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgdGjDrCB4w6FjIHN14bqldCBj4bunYSB2aeG7h2MgdHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcga2hpIG5n4bunIGzDoCAwLjc1ODA2DQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nOiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBjaMOqbmggbOG7h2NoIHRo4bqlcCBoxqFuIDAuNDE2MTggc28gduG7m2kgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgdOG7kXQuIA0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHLhuqV0IHThu5F0OiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGPhu6dhIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHLhuqV0IHThu5F0IGNow6puaCBs4buHY2ggdGjhuqVwIGjGoW4gMC4yMjI4NSBzbyB24bubaSBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB04buRdC4NCg0KIyMjIDQuMS4zLiBNw7QgaMOsbmggeMOhYyBzdeG6pXQgdHV54bq/biB0w61uaCBj4bunYSBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB0aGVvIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcNCmBgYHtyfQ0KYSR0dDEgPC0gaWZlbHNlKGEkYFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunYCAlaW4lIGMoIkLDrG5oIHRoxrDhu51uZyIpLCAxLCAwKQ0KYSRzbDEgPC0gcmVsZXZlbChhcy5mYWN0b3IoYSRTTCksIHJlZiA9ICJCw6xuaCB0aMaw4budbmciKQ0KT0xTTCA8LSBsbSh0dDEgfiBzbDEsIGRhdGEgPSBhKQ0Kc3VtbWFyeShPTFNMKQ0KYGBgDQoqKkjDoG0gaOG7k2kgcXV5Kio6ICRcaGF0e1xwaX09IDAuNTg4NjUrMC4yOTYzMFx0aW1lc1x0ZXh0e05o4bq5fSAtMC4yODg2NVx0aW1lc1x0ZXh0e07hurduZ30kDQoNCi0gSOG7hyBz4buRIGNo4bq3biBsw6AgMC41ODg2NSBjaG8gdGjhuqV5IG7hur91IGtow7RuZyBjw7Mgc+G7sSDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgdGjDrCB4w6FjIHN14bqldCBj4bunYSB2aeG7h2MgdHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcga2hpIG5n4bunIGzDoCAwLjU4ODY1DQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbmjhurk6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgdHJvbmcgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBuaOG6uSBjaMOqbmggbOG7h2NoIGNhbyBoxqFuIDAuMjk2MyBzbyB24bubaSBuaMOzbSBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIGLDrG5oIHRoxrDhu51uZyAoa2jDtG5nIGPEg25nIHRo4bqzbmcpLiANCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBu4bq3bmc6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY+G7p2EgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBu4bq3bmcgY2jDqm5oIGzhu4djaCB0aOG6pXAgaMahbiAwLjI4ODY1IHNvIHbhu5tpIG5ow7NtIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgYsOsbmggdGjGsOG7nW5nIChraMO0bmcgY8SDbmcgdGjhurNuZykuDQoNCiMjIyA0LjEuNC4gTcO0IGjDrG5oIHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmggxJFhIGJp4bq/bg0KDQpgYGB7cn0NCmxtX3R0IDwtICBnbG0odHQxfiB0czErcXMxK3NsMSwgZGF0YSA9IGEpDQpzdW1tYXJ5KGxtX3R0KQ0KYGBgDQoNCioqSMOgbSBo4buTaSBxdXkqKjogJFxoYXR7XHBpfT0gMC40MTU2NSAtMC4xOTM5OFx0aW1lc1x0ZXh0e05n4bunIFTGsMahbmcgxJHhu5FpfSArIDAuNDYxMTlcdGltZXNcdGV4dHtOZ+G7pyBU4buRdH0gKyAwLjgzMzg3XHRpbWVzXHRleHR7Tmfhu6cgTmhp4buBdX0gKzAuNDMzNTJcdGltZXNcdGV4dHtCw6xuaCB0aMaw4budbmd9IC0wLjY0NjA4XHRpbWVzXHRleHR7UuG6pXQgdOG7kXR9KzAuMDUwNzRcdGltZXNcdGV4dHtOaOG6uX0gLTAuMzg5NzFcdGltZXNcdGV4dHtO4bq3bmd9JA0KDQotIEjhu4cgc+G7kSBjaOG6t24gbMOgIDAuNDE1NjUgY2hvIHRo4bqleSBu4bq/dSBraMO0bmcgY8OzIHPhu7Eg4bqjbmggaMaw4bufbmcgYuG7n2kgeeG6v3UgdOG7kSBraMOhYyB0aMOsIHjDoWMgc3XhuqV0IGPhu6dhIHZp4buHYyB0cuG6oW5nIHRow6FpIGLDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cgbMOgIDAuNDE1NjUNCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbmfhu6cgdMawxqFuZyDEkeG7kWk6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgdHJvbmcgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIHTGsMahbmcgxJHhu5FpIGNow6puaCBs4buHY2ggdGjhuqVwIGjGoW4gMC4xOTM5OCBzbyB24bubaSBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgw610LiANCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbmfhu6cgdOG7kXQ6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgdHJvbmcgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIHThu5F0IGNow6puaCBs4buHY2ggY2FvIGjGoW4gMC40NjExOSBzbyB24bubaSBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgw610Lg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBuZ+G7pyBuaGnhu4F1OiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBuZ+G7pyBnaeG6pWMgYsOsbmggdGjGsOG7nW5nIHRyb25nIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyBuaGnhu4F1IGNow6puaCBs4buHY2ggY2FvIGjGoW4gMC44MzM4NyBzbyB24bubaSBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgw610Lg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZzogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY2jDqm5oIGzhu4djaCBjYW8gaMahbiAwLjQzMzUyIHNvIHbhu5tpIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHThu5F0LiANCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBy4bqldCB04buRdDogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBj4bunYSBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBy4bqldCB04buRdCBjaMOqbmggbOG7h2NoIHRo4bqlcCBoxqFuIDAuNjQ2MDggc28gduG7m2kgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgdOG7kXQuDQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbmjhurk6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY+G7p2EgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBuaOG6uSBjaMOqbmggbOG7h2NoIHRo4bqlcCBoxqFuIDAuMDUwNzQgc28gduG7m2kgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBiw6xuaCB0aMaw4budbmcgKGtow7RuZyBjxINuZyB0aOG6s25nKS4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBu4bq3bmc6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY+G7p2EgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBu4bq3bmcgY2jDqm5oIGzhu4djaCB0aOG6pXAgaMahbiAwLjM4OTcxIHNvIHbhu5tpIG5ow7NtIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgYsOsbmggdGjGsOG7nW5nIChraMO0bmcgY8SDbmcgdGjhurNuZykuDQoNCiMjIDQuMi4gTcO0IGjDrG5oIGjhu5NpIHF1eSBMb2dpdA0KDQpNw7QgaMOsbmggaOG7k2kgcXV5IExvZ2l0LCBoYXkgY8OybiBn4buNaSBsw6AgTG9naXN0aWMgUmVncmVzc2lvbiwgbMOgIG3hu5l0IHBoxrDGoW5nIHBow6FwIHBow6JuIHTDrWNoIHRo4buRbmcga8OqIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMaw4bubYyBsxrDhu6NuZyB4w6FjIHN14bqldCB44bqjeSByYSBj4bunYSBt4buZdCBz4buxIGtp4buHbiBuaOG7iyBwaMOibiAodsOtIGThu6U6IGPDsyBob+G6t2Mga2jDtG5nLCB0aMOgbmggY8O0bmcgaG/hurdjIHRo4bqldCBi4bqhaSkuIE3DtCBow6xuaCBuw6B5IMSR4bqjbSBi4bqjbyBy4bqxbmcgeMOhYyBzdeG6pXQgxrDhu5tjIGzGsOG7o25nIHPhur0gbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyAwIMSR4bq/biAxLCBraOG6r2MgcGjhu6VjIGjhuqFuIGNo4bq/IGPhu6dhIG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIHRyw6puLg0KDQpLaGkgaMOgbSBsacOqbiBrw6rMgXQgY8OzIGThuqFuZyAkZyhcbXUpPVxvcGVyYXRvcm5hbWV7bG9naXR9KFxtdSk9XGxvZyBcbGVmdChcZnJhY3tcbXV9ezEtXG11fVxyaWdodCkkLCBtw7QgaMOsbmggaMO0zIBpIHF1eSAkJA0KXGxvZyBcbGVmdChcZnJhY3tcbXV9ezEtXG11fVxyaWdodCk9XGxvZyBcbGVmdChcZnJhY3tccGl9ezEtXHBpfVxyaWdodCk9XG9wZXJhdG9ybmFtZXtsb2dpdH0oXHBpKT1cYmV0YV8wK1xiZXRhXzEgXGNkb3QgeF8xICsgXGJldGFfMiBcY2RvdCB4XzIrLi4uK1xiZXRhX2sgXGNkb3QgeF9rDQokJCDEkMaw4bujYyBn4buNaSBsw6AgbcO0IGhpzIBuaCBsb2dpdC4NCg0KVuG7m2kgJFxwaSQgbMOgIHjDoWMgc3XhuqV0IMSR4buDIGJp4bq/biBwaHXMoyB0aHXhu5ljIG5ow6LMo24gZ2nDoSB0cuG7iyAidGjDoG5oIGPDtG5nIi4gTMawdSDDvTogJFkkIGxhzIAgYmnDqsyBbiBuaOG7iyBwaMOibiB0aMOsICRFKFkpPVxwaSQgduG7m2kgJFxwaT1QKFk9XHRleHR7IlRow6BuaCBjw7RuZyJ9KSQNCg0KIyMjIDQuMi4xLiBNw7QgaMOsbmggTG9naXQgY+G7p2EgVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdGhlbyBUaOG7nWkgZ2lhbiBuZ+G7pw0KDQpgYGB7cn0NCmxvZ2l0dHMgPC0gZ2xtKHR0MSB+IHRzMSwgZGF0YSA9IGEsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAnbG9naXQnKSkNCnN1bW1hcnkobG9naXR0cykNCmBgYA0KKipIw6BtIGjhu5NpIHF1eSoqOiAkXGxvZ1xsZWZ0KFxmcmFje1xwaX17MS1ccGl9XHJpZ2h0KT1cb3BlcmF0b3JuYW1le2xvZ2l0fShccGkpPSAtMC4xNjI1IC0wLjk1ODhcdGltZXNcdGV4dHtOZ+G7pyBUxrDGoW5nIMSR4buRaX0gKzEuOTU0M1x0aW1lc1x0ZXh0e05n4bunIFThu5F0fSswLjU4MjRcdGltZXNcdGV4dHtOZ+G7pyBOaGnhu4F1fSQgDQoNCi0gSOG7hyBz4buRIGNo4bq3biBsw6AgLTAuMTYyNSBjaG8gdGjhuqV5IG7hur91IGtow7RuZyBjw7Mgc+G7sSDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIGtow6FjIHRow6wgeMOhYyBzdeG6pXQgY+G7p2Egdmnhu4djIHRy4bqhbmcgdGjDoWkgYsOsbmggdGjGsOG7nW5nIGtoaSBuZ+G7pyBsw6AgJFxmcmFje2VeeygtMC4xNjI1KX19ezErZV57KC0wLjE2MjUpfX0kLg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBuZ+G7pyB0xrDGoW5nIMSR4buRaSBsw6AgLTAuOTU4ODogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyB0cm9uZyBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgdMawxqFuZyDEkeG7kWkgY2jDqm5oIGzhu4djaCB0aOG6pXAgaMahbiAkXGZyYWN7ZV57KC0wLjk1ODgpfX17MStlXnsoLTAuOTU4OCl9fSQgc28gduG7m2kgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIMOtdC4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbmfhu6cgdOG7kXQgbMOgIDEuOTU0MzogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyB0cm9uZyBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgdOG7kXQgY2jDqm5oIGzhu4djaCBjYW8gaMahbiAkXGZyYWN7ZV57KDEuOTU0Myl9fXsxK2VeeygxLjk1NDMpfX0kIHNvIHbhu5tpIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyDDrXQuDQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIG5n4bunIG5oaeG7gXUgbMOgIDAuNTgyNDogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyB0cm9uZyBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgbmhp4buBdSBjaMOqbmggbOG7h2NoIGNhbyBoxqFuICRcZnJhY3tlXnsoMC41ODI0KX19ezErZV57KDAuNTgyNCl9fSQgc28gduG7m2kgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIMOtdC4NCg0KIyMjIDQuMi4yLiBNw7QgaMOsbmggTG9naXQgY+G7p2EgVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdGhlbyBDaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIA0KYGBge3J9DQpsb2dpdHFzIDwtIGdsbSh0dDEgfiBxczEsIGRhdGEgPSBhLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gJ2xvZ2l0JykpDQpzdW1tYXJ5KGxvZ2l0cXMpDQpgYGANCg0KKipIw6BtIGjhu5NpIHF1eSoqOiRcbG9nXGxlZnQoXGZyYWN7XHBpfXsxLVxwaX1ccmlnaHQpID0gMS4xNDIxLTEuNzk3MFx0aW1lc1x0ZXh0e0LDrG5oIHRoxrDhu51uZ30gLTEuMDAxMFx0aW1lc1x0ZXh0e1LhuqV0IHThu5F0fSQNCg0KLSBI4buHIHPhu5EgY2jhurduIGzDoCAxLjE0MjE6IGNobyB0aOG6pXkgbuG6v3Uga2jDtG5nIGPDsyBz4buxIOG6o25oIGjGsOG7n25nIGLhu59pIHnhur91IHThu5EgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB0aMOsIHjDoWMgc3XhuqV0IGPhu6dhIHZp4buHYyB0cuG6oW5nIHRow6FpIGLDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cgbMOgICRcZnJhY3tlXnsoMS4xNDIxKX19ezErZV57KDEuMTQyMSl9fSQNCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgbMOgIC0xLjc5NzA6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGNow6puaCBs4buHY2ggdGjhuqVwIGjGoW4gJFxmcmFje2VeeygtMS43OTcwKX19ezErZV57KC0xLjc5NzApfX0kIHNvIHbhu5tpIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHThu5F0Lg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHLhuqV0IHThu5F0IGzDoCAtMS4wMDEwOiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGPhu6dhIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHLhuqV0IHThu5F0IGNow6puaCBs4buHY2ggdGjhuqVwIGjGoW4gJFxmcmFje2VeeygtMS4wMDEwKX19ezErZV57KC0xLjAwMTApfX0kIHNvIHbhu5tpIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHThu5F0Lg0KDQojIyMgNC4yLjMuIE3DtCBow6xuaCBMb2dpdCBj4bunYSBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB0aGVvIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcNCmBgYHtyfQ0KbG9naXRzbCA8LSBnbG0odHQxIH4gc2wxLCBkYXRhID0gYSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICdsb2dpdCcpKQ0Kc3VtbWFyeShsb2dpdHNsKQ0KYGBgDQoNCioqSMOgbSBo4buTaSBxdXkqKjokXGxvZ1xsZWZ0KFxmcmFje1xwaX17MS1ccGl9XHJpZ2h0KSA9IDAuMzU4NCsxLjY4MThcdGltZXNcdGV4dHtOaOG6uX0gLTEuMjA1N1x0aW1lc1x0ZXh0e07hurduZ30kDQoNCi0gSOG7hyBz4buRIGNo4bq3biBsw6AgMC4zNTg0OiBjaG8gdGjhuqV5IG7hur91IGtow7RuZyBjw7Mgc+G7sSDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgdGjDrCB4w6FjIHN14bqldCBj4bunYSB2aeG7h2MgdHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcga2hpIG5n4bunIGzDoCAkXGZyYWN7ZV57KDAuMzU4NCl9fXsxK2VeeygwLjM1ODQpfX0kDQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbmjhurkgbMOgIDEuNjgxODogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyB0cm9uZyBuaMOzbSBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIG5o4bq5IGNow6puaCBs4buHY2ggY2FvIGjGoW4gJFxmcmFje2VeeygxLjY4MTgpfX17MStlXnsoMS42ODE4KX19JCBzbyB24bubaSBuaMOzbSBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIGLDrG5oIHRoxrDhu51uZyAoa2jDtG5nIGPEg25nIHRo4bqzbmcpLg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIG7hurduZyBsw6AgLTEuMjA1NzogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBj4bunYSBuaMOzbSBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIG7hurduZyBjaMOqbmggbOG7h2NoIHRo4bqlcCBoxqFuICRcZnJhY3tlXnsoLTEuMjA1Nyl9fXsxK2VeeygtMS4yMDU3KX19JCBzbyB24bubaSBuaMOzbSBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIGLDrG5oIHRoxrDhu51uZyAoa2jDtG5nIGPEg25nIHRo4bqzbmcpLg0KDQojIyMgNC4yLjQuIE3DtCBow6xuaCBMb2dpdCDEkWEgYmnhur9uDQpgYGB7cn0NCmxnX3R0IDwtIGdsbShgdHQxYCB+IGB0czFgK2BxczFgK2BzbDFgLCBkYXRhID0gYSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICdsb2dpdCcpKQ0Kc3VtbWFyeShsZ190dCkNCmBgYA0KDQoqKkjDoG0gaOG7k2kgcXV5Kio6ICRcbG9nXGxlZnQoXGZyYWN7XHBpfXsxLVxwaX1ccmlnaHQpID0gLTAuNTQ0Ny0wLjkzNjFcdGltZXNcdGV4dHtOZ+G7pyBUxrDGoW5nIMSR4buRaX0gKyAyLjcwOTdcdGltZXNcdGV4dHtOZ+G7pyBU4buRdH0gKyA0LjMzMzVcdGltZXNcdGV4dHtOZ+G7pyBOaGnhu4F1fSsxNi42MjczXHRpbWVzXHRleHR7QsOsbmggdGjGsOG7nW5nfSAtMy4zNjg5XHRpbWVzXHRleHR7UuG6pXQgdOG7kXR9KzAuMjYwN1x0aW1lc1x0ZXh0e05o4bq5fS0xNi4yNDUwXHRpbWVzXHRleHR7TuG6t25nfSQNCg0KLSBI4buHIHPhu5EgY2jhurduIGzDoCAtMC41NDQ3OiBjaG8gdGjhuqV5IG7hur91IGtow7RuZyBjw7Mgc+G7sSDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgdGjDrCB4w6FjIHN14bqldCBj4bunYSB2aeG7h2MgdHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcga2hpIG5n4bunIGzDoCAkXGZyYWN7ZV57KC0wLjU0NDcpfX17MStlXnsoLTAuNTQ0Nyl9fSQuDQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIG5n4bunIHTGsMahbmcgxJHhu5FpIGzDoCAtMC45MzYxOiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIHRyb25nIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyB0xrDGoW5nIMSR4buRaSBjaMOqbmggbOG7h2NoIHRo4bqlcCBoxqFuICRcZnJhY3tlXnsoLTAuOTM2MSl9fXsxK2VeeygtMC45MzYxKX19JCBzbyB24bubaSBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgw610Lg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBuZ+G7pyB04buRdCBsw6AgMi43MDk3OiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIHRyb25nIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyB04buRdCBjaMOqbmggbOG7h2NoIGNhbyBoxqFuICRcZnJhY3tlXnsoMi43MDk3KX19ezErZV57KDIuNzA5Nyl9fSQgc28gduG7m2kgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIMOtdC4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbmfhu6cgbmhp4buBdSBsw6AgNC4zMzM1OiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBuZ+G7pyBnaeG6pWMgYsOsbmggdGjGsOG7nW5nIHRyb25nIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyBuaGnhu4F1IGNow6puaCBs4buHY2ggY2FvIGjGoW4gJFxmcmFje2Veeyg0LjMzMyl9fXsxK2Veeyg0LjMzMyl9fSQgc28gduG7m2kgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIMOtdC4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgbMOgIDE2LjYyNzM6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY+G7p2EgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGNow6puaCBs4buHY2ggY2FvIGjGoW4gJFxmcmFje2VeeygxNi42MjczKX19ezErZV57KDE2LjYyNzMpfX0kIHNvIHbhu5tpIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHThu5F0Lg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHLhuqV0IHThu5F0IGzDoCAtMy4zNjg5OiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGPhu6dhIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHLhuqV0IHThu5F0IGNow6puaCBs4buHY2ggdGjhuqVwIGjGoW4gJFxmcmFje2VeeygtMy4zNjg5KX19ezErZV57KC0zLjM2ODkpfX0kIHNvIHbhu5tpIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHThu5F0Lg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBt4bupYyBjxINuZyB0aOG6s25nIG5o4bq5IGzDoCAwLjI2MDc6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY+G7p2EgbmjDs20gY8OzIG3hu6ljIGPEg25nIHRo4bqzbmcgbmjhurkgY2jDqm5oIGzhu4djaCBjYW8gaMahbiAkXGZyYWN7ZV57KDAuMjYwNyl9fXsxK2VeeygwLjI2MDcpfX0kIHNvIHbhu5tpIG5ow7NtIGPDsyBt4bupYyBjxINuZyB0aOG6s25nIGLDrG5oIHRoxrDhu51uZyAoa2jDtG5nIGPEg25nIHRo4bqzbmcpLg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBt4bupYyBjxINuZyB0aOG6s25nIG7hurduZyBsw6AgLTE2LjI0NTA6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY+G7p2EgbmjDs20gY8OzIG3hu6ljIGPEg25nIHRo4bqzbmcgbuG6t25nIGNow6puaCBs4buHY2ggdGjhuqVwIGjGoW4gJFxmcmFje2VeeygtMTYuMjQ1MCl9fXsxK2VeeygtMTYuMjQ1MCl9fSQgc28gduG7m2kgbmjDs20gY8OzIG3hu6ljIGPEg25nIHRo4bqzbmcgYsOsbmggdGjGsOG7nW5nIChraMO0bmcgY8SDbmcgdGjhurNuZykuDQoNCiMjIDQuMy4gTcO0IGjDrG5oIGjhu5NpIHF1eSBwcm9iaXQNCg0KTcO0IGjDrG5oIGjhu5NpIHF1eSBQcm9iaXQgc+G7rSBk4bulbmcgxJHhu4MgxrDhu5tjIGzGsOG7o25nIHjDoWMgc3XhuqV0IGPhu6dhIG3hu5l0IHPhu7Ega2nhu4duIG5o4buLIHBow6JuLCB0xrDGoW5nIHThu7EgbmjGsCBtw7QgaMOsbmggaOG7k2kgcXV5IExvZ2l0LiBT4buxIGtow6FjIGJp4buHdCBjaMOtbmggZ2nhu69hIGhhaSBtw7QgaMOsbmggbsOgeSBu4bqxbSDhu58gaMOgbSBsacOqbiBr4bq/dCAobGluayBmdW5jdGlvbikgbcOgIGNow7puZyBz4butIGThu6VuZyDEkeG7gyBjaHV54buDbiDEkeG7lWkgeMOhYyBzdeG6pXQgdGjDoG5oIG3hu5l0IGjDoG0gdHV54bq/biB0w61uaCBj4bunYSBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXAuDQoNCioqS2hpIGjDoG0gbGnDqm4ga8OqzIF0IGPDsyBk4bqhbmcqKjogJGcoXG11KT1nKFxwaSk9XG9wZXJhdG9ybmFtZXtwcm9iaXR9KFxwaSk9XFBoaV57LTF9KFxwaSkkLiBWxqHMgWkgJFxQaGkodCk9XGZyYWN7MX17XHNxcnR7MiBccGl9fSBcaW50X3stXGluZnR5fV50IGVeey1cZnJhY3t0XjJ9ezJ9fWR0JA0KDQpob8SDzKNjIGPDsyB0aMOqzIkgdmnDqsyBdCBs4bqhaSBuaMawIHNhdToNCg0KJCQNClxwaSh4KT1cUGhpKFxiZXRhXzArXGJldGFfMSBcY2RvdCB4XzEgKyBcYmV0YV8yIFxjZG90IHhfMisuLi4rXGJldGFfayBcY2RvdCB4X2spDQokJA0KKipUcm9uZyDEkcOzKio6ICRcUGhpJCBsw6AgaMOgbSBwaMOibiBwaOG7kWkgY2h14bqpbiB0w61jaCBsxal5IChDREYpIGPhu6dhIHBow6JuIHBo4buRaSBjaHXhuqluIChHYXVzc2lhbiBkaXN0cmlidXRpb24pLg0KDQojIyMgNC4zLjEuIE3DtCBow6xuaCBo4buTaSBxdXkgcHJvYml0IGPhu6dhIFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHRoZW8gdGjhu51pIGdpYW4gZ2nhuqVjIG5n4bunDQpgYGB7cn0NCnByb2JpdHRzIDwtIGdsbSh0dDEgfiB0czEsIGRhdGEgPSBhLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gJ3Byb2JpdCcpKQ0Kc3VtbWFyeShwcm9iaXR0cykNCmBgYA0KDQoqKkjDoG0gaOG7k2kgcXV5Kio6JFxwaSh4KT1cUGhpKC0wLjEwMTgtMC41ODYxXHRpbWVzXHRleHR7Tmfhu6cgdMawxqFuZyDEkeG7kWl9ICsgMS4xNjk0XHRpbWVzXHRleHR7Tmfhu6cgVOG7kXR9ICsgMC4zNjQxXHRpbWVzIFx0ZXh0e05n4bunIE5oaeG7gXV9KSQNCg0KLSBI4buHIHPhu5EgY2jhurduIGzDoCAtMC4xMDE4OiBjaG8gdGjhuqV5IG7hur91IGtow7RuZyBjw7Mgc+G7sSDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIHRo4budaSBnaWFuIGdp4bqlYyBuZ+G7pyB0aMOsIHjDoWMgc3XhuqV0IGPhu6dhIHZp4buHYyB0cuG6oW5nIHRow6FpIGLDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cgbMOgICRcUGhpKC0wLjEwMTgpJC4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbmfhu6cgdMawxqFuZyDEkeG7kWkgbMOgIC0wLjU4NjE6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgdHJvbmcgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIHTGsMahbmcgxJHhu5FpIGNow6puaCBs4buHY2ggdGjhuqVwIGjGoW4gJFxQaGkoLTAuNTg2MSkkIHNvIHbhu5tpIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyDDrXQuDQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIG5n4bunIHThu5F0IGzDoCAxLjE2OTQ6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgdHJvbmcgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIHThu5F0IGNow6puaCBs4buHY2ggY2FvIGjGoW4gJFxQaGkoMS4xNjk0KSQgc28gduG7m2kgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIMOtdC4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbmfhu6cgbmhp4buBdSBsw6AgMC4zNjQxOiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIHRyb25nIG5ow7NtIGPDsyB0aOG7nWkgZ2lhbiBuZ+G7pyBuaGnhu4F1IGNow6puaCBs4buHY2ggY2FvIGjGoW4gJFxQaGkoMC4zNjQxKSQgc28gduG7m2kgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIMOtdC4NCg0KIyMjIDQuMy4yLiBNw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBj4bunYSBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB0aGVvIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cNCmBgYHtyfQ0KcHJvYml0cXMgPC0gZ2xtKHR0MSB+IHFzMSwgZGF0YSA9IGEsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAncHJvYml0JykpDQpzdW1tYXJ5KHByb2JpdHFzKQ0KYGBgDQoNCioqSMOgbSBo4buTaSBxdXkqKjogJFxwaSh4KT0gXFBoaSgwLjcwMDEtMS4xMDc0XHRpbWVzXHRleHR7QsOsbmggdGjGsOG7nW5nfSAtMC42MTE3XHRpbWVzXHRleHR7UuG6pXQgdOG7kXR9KSQNCg0KLSBI4buHIHPhu5EgY2jhurduIGzDoCAwLjcwMDE6IGNobyB0aOG6pXkgbuG6v3Uga2jDtG5nIGPDsyBz4buxIOG6o25oIGjGsOG7n25nIGLhu59pIHnhur91IHThu5EgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB0aMOsIHjDoWMgc3XhuqV0IGPhu6dhIHZp4buHYyB0cuG6oW5nIHRow6FpIGLDrG5oIHRoxrDhu51uZyBraGkgbmfhu6cgbMOgICRcUGhpKDAuNzAwMSkkDQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGzDoCAtMS4xMDc0OiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBjaMOqbmggbOG7h2NoIHRo4bqlcCBoxqFuICRcUGhpKC0xLjEwNzQpJCBzbyB24bubaSBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB04buRdC4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBy4bqldCB04buRdCBsw6AgLTAuNjExNzogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBj4bunYSBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBy4bqldCB04buRdCBjaMOqbmggbOG7h2NoIHRo4bqlcCBoxqFuICRcUGhpKC0wLjYxMTcpJCBzbyB24bubaSBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB04buRdC4NCg0KIyMjIDQuMy4zLiBNw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBj4bunYSBUcuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB0aGVvIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcNCmBgYHtyfQ0KcHJvYml0c2wgPC0gZ2xtKHR0MSB+IHNsMSwgZGF0YSA9IGEsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAncHJvYml0JykpDQpzdW1tYXJ5KHByb2JpdHNsKQ0KYGBgDQoNCioqSMOgbSBo4buTaSBxdXkqKjokXHBpKHgpPVxQaGkoMC4yMjQxKzAuOTc2MVx0aW1lc1x0ZXh0e05o4bq5fSAtMC43NDg1XHRpbWVzXHRleHR7TuG6t25nfSkkDQoNCi0gSOG7hyBz4buRIGNo4bq3biBsw6AgMC4yMjQxOiBjaG8gdGjhuqV5IG7hur91IGtow7RuZyBjw7Mgc+G7sSDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgdGjDrCB4w6FjIHN14bqldCBj4bunYSB2aeG7h2MgdHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcga2hpIG5n4bunIGzDoCAkXFBoaSgwLjIyNDEpJA0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIG5o4bq5IGzDoCAwLjk3NjE6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgdHJvbmcgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBuaOG6uSBjaMOqbmggbOG7h2NoIGNhbyBoxqFuICRcUGhpKDAuOTc2MSkkIHNvIHbhu5tpIG5ow7NtIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgYsOsbmggdGjGsOG7nW5nIChraMO0bmcgY8SDbmcgdGjhurNuZykuDQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbuG6t25nIGzDoCAwLjc0ODU6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY+G7p2EgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBu4bq3bmcgY2jDqm5oIGzhu4djaCB0aOG6pXAgaMahbiAkXFBoaSgtMC43NDg1KSQgc28gduG7m2kgbmjDs20gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBiw6xuaCB0aMaw4budbmcgKGtow7RuZyBjxINuZyB0aOG6s25nKS4NCg0KIyMjIDQuMy40LiBNw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCDEkWEgYmnhur9uDQpgYGB7cn0NCnBiX3R0IDwtICBnbG0odHQxIH4gdHMxICsgcXMxICsgc2wxLCBkYXRhID0gYSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICdwcm9iaXQnKSkNCnN1bW1hcnkocGJfdHQpDQpgYGANCg0KKipIw6BtIGjhu5NpIHF1eSoqOiAkXHBpKHgpPVxQaGkoLTAuMzE1NjEtMC41NzI2OVx0aW1lc1x0ZXh0e05n4bunIFTGsMahbmcgxJHhu5FpfSArIDEuNjA3MTNcdGltZXNcdGV4dHtOZ+G7pyBU4buRdH0gKyAyLjYwNTczXHRpbWVzXHRleHR7Tmfhu6cgTmhp4buBdX0gKzUuOTMyNjRcdGltZXNcdGV4dHtCw6xuaCB0aMaw4budbmd9LTIuMDI3ODNcdGltZXNcdGV4dHtS4bqldCB04buRdH0rMC4wODgwMlx0aW1lc1x0ZXh0e1LhuqV0IHThu5F0fS01LjcxODgyXHRpbWVzXHRleHR7UuG6pXQgdOG7kXR9KSQNCg0KLSBI4buHIHPhu5EgY2jhurduIGzDoCAtMC4zMTU2MSBjaG8gdGjhuqV5IG7hur91IGtow7RuZyBjw7Mgc+G7sSDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIGtow6FjIHRow6wgeMOhYyBzdeG6pXQgY+G7p2Egdmnhu4djIHRy4bqhbmcgdGjDoWkgYsOsbmggdGjGsOG7nW5nIGtoaSBuZ+G7pyBsw6AgJFxQaGkoLTAuMzE1NjEpJA0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBuZ+G7pyB0xrDGoW5nIMSR4buRaSBsw6AgLTAuNTcyNjk6IFRhIHRo4bqleSB4w6FjIHN14bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgdHJvbmcgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIHTGsMahbmcgxJHhu5FpIGNow6puaCBs4buHY2ggdGjhuqVwIGjGoW4gJFxQaGkoLTAuNTcyNjkpJCBzbyB24bubaSBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgw610Lg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBuZ+G7pyB04buRdCBsw6AgMS42MDcxMzogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyB0cm9uZyBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgdOG7kXQgY2jDqm5oIGzhu4djaCBjYW8gaMahbiAkXFBoaSgxLjYwNzEzKSQgc28gduG7m2kgbmjDs20gY8OzIHRo4budaSBnaWFuIG5n4bunIMOtdC4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbmfhu6cgbmhp4buBdSBsw6AgMi42MDU3MzogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgbmfhu6cgZ2nhuqVjIGLDrG5oIHRoxrDhu51uZyB0cm9uZyBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgbmhp4buBdSBjaMOqbmggbOG7h2NoIGNhbyBoxqFuICRcUGhpKDIuNjA1NzMpJCBzbyB24bubaSBuaMOzbSBjw7MgdGjhu51pIGdpYW4gbmfhu6cgw610Lg0KDQotIEjhu4cgc+G7kSBj4bunYSBuaMOzbSBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBsw6AgNS45MzI2NDogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBj4bunYSBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY2jDqm5oIGzhu4djaCBjYW8gaMahbiAkXFBoaSg1LjkzMjY0KSQgc28gduG7m2kgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgdOG7kXQuDQoNCi0gSOG7hyBz4buRIGPhu6dhIG5ow7NtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgcuG6pXQgdOG7kXQgbMOgIC0yLjAyNzgzOiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGPhu6dhIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHLhuqV0IHThu5F0IGNow6puaCBs4buHY2ggdGjhuqVwIGjGoW4gJFxQaGkoLTIuMDI3ODMpJCBzbyB24bubaSBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB04buRdC4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbeG7qWMgY8SDbmcgdGjhurNuZyBuaOG6uSBsw6AgMC4wODgwMjogVGEgdGjhuqV5IHjDoWMgc3XhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZyBj4bunYSBuaMOzbSBjw7MgbeG7qWMgY8SDbmcgdGjhurNuZyBuaOG6uSBjaMOqbmggbOG7h2NoIGNhbyBoxqFuICRcUGhpKDAuMDg4MDIpJCBzbyB24bubaSBuaMOzbSBjw7MgbeG7qWMgY8SDbmcgdGjhurNuZyBiw6xuaCB0aMaw4budbmcgKGtow7RuZyBjxINuZyB0aOG6s25nKS4NCg0KLSBI4buHIHPhu5EgY+G7p2EgbmjDs20gbeG7qWMgY8SDbmcgdGjhurNuZyBu4bq3bmcgbMOgIC01LjcxODgyOiBUYSB0aOG6pXkgeMOhYyBzdeG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIGPhu6dhIG5ow7NtIGPDsyBt4bupYyBjxINuZyB0aOG6s25nIG7hurduZyBjaMOqbmggbOG7h2NoIHRo4bqlcCBoxqFuICRcUGhpKC01LjcxODgyKSQgc28gduG7m2kgbmjDs20gY8OzIG3hu6ljIGPEg25nIHRo4bqzbmcgYsOsbmggdGjGsOG7nW5nIChraMO0bmcgY8SDbmcgdGjhurNuZykuDQoNCiMjIDQuNC4gxJDDoW5oIGdpw6EgbcO0IGjDrG5oDQoNCkPDoWMgdGnDqnUgY2jDrSDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyDEkcOhbmggZ2nDoSBtw7QgaMOsbmggbMOgOiBjaOG7iSBz4buRIEFJQywgaOG7hyBz4buRIEJyaWVyIFNjb3JlLiBUaGVvIMSRw7MsIGPDoWMgdGnDqnUgY2jDrSBjw6BuZyBuaOG7jyB0aMOsIG3DtCBow6xuaCBjw6BuZyB04buRdC4NCg0KIyMjIDQuNC4xLkNo4buJIHPhu5EgQUlDDQoNCkNo4buJIHPhu5EgQUlDIChBa2Fpa2UgSW5mb3JtYXRpb24gQ3JpdGVyaW9uKSBsw6AgbeG7mXQgdGjGsOG7m2MgxJFvIMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIHRo4buRbmcga8OqIMSR4buDIMSRw6FuaCBnacOhIHbDoCBzbyBzw6FuaCBjw6FjIG3DtCBow6xuaCB0aOG7kW5nIGvDqiBraMOhYyBuaGF1LiBBSUMgZ2nDunAgbOG7sWEgY2jhu41uIG3DtCBow6xuaCB04buRdCBuaOG6pXQgdOG7qyBt4buZdCB04bqtcCBo4bujcCBjw6FjIG3DtCBow6xuaCDEkcaw4bujYyB0aOG7rSBuZ2hp4buHbSBi4bqxbmcgY8OhY2ggY8OibiBuaOG6r2MgZ2nhu69hIMSR4buZIGto4bubcCBj4bunYSBtw7QgaMOsbmggduG7m2kgZOG7ryBsaeG7h3UgdsOgIMSR4buZIHBo4bupYyB04bqhcCBj4bunYSBtw7QgaMOsbmguIEFJQyDEkcaw4bujYyB0w61uaCBi4bqxbmcgY8O0bmcgdGjhu6ljIHNhdToNCg0KJCQNCkFJQz0yay0ybG9nKEwpDQokJA0KLSB0cm9uZyDEkcOzOiBrIGzDoCBz4buRIGJp4bq/biBj4bunYSBtw7QgaMOsbmgsICRMJCBsw6AgZ2nDoSB0cuG7iyBj4buxYyDEkeG6oWkgY+G7p2EgaMOgbSBo4bujcCBsw70uDQoNCi0gR2nDoSB0cuG7iyBBSUMgbmjhu48gaMahbiBjaG8gdGjhuqV5IG3DtCBow6xuaCB04buRdCBoxqFuLCB24bubaSDEkWnhu4F1IGtp4buHbiBsw6AgY8OhYyBtw7QgaMOsbmggxJHGsOG7o2Mgc28gc8OhbmggcGjhuqNpIGTDuW5nIGNodW5nIG3hu5l0IHThuq1wIGThu68gbGnhu4d1LiBBSUMgbMOgIG3hu5l0IGPDtG5nIGPhu6UgaOG7r3Ugw61jaCDEkeG7gyBjw6JuIG5o4bqvYyBnaeG7r2EgxJHhu5kgcGjhu6ljIHThuqFwIGPhu6dhIG3DtCBow6xuaCB2w6AgxJHhu5kga2jhu5twIGPhu6dhIG3DtCBow6xuaCDEkcOzIHbhu5tpIGThu68gbGnhu4d1Lg0KDQojIyMjIDQuNC4xLjEuIEzhu7FhIGNo4buNbiBtw7QgaMOsbmggdOG7kXQgbmjhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHRoZW8gdGjhu51pIGdpYW4gZ2nhuqVjIG5n4bunDQpgYGB7cn0NCkFJQyhPTFRTKQ0KQUlDKGxvZ2l0dHMpDQpBSUMocHJvYml0dHMpDQpgYGANCioqTmjhuq1uIHjDqXQqKjogTcO0IGjDrG5oIHThu5F0IG5o4bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB0aGVvIHRo4budaSBnaWFuIGdp4bqlYyBuZ+G7pyBsw6AgbcO0IGjDrG5oIExvZ2lzdGljIHbhu5tpIG3DtCBow6xuaCBQcm9iaXQgIGtoaSBj4bqjIGhhaSDEkeG7gXUgY8OzIGNo4buJIHPhu5EgNDAwLjYxMjMNCg0KIyMjIyA0LjQuMS4yLiBM4buxYSBjaOG7jW4gbcO0IGjDrG5oIHThu5F0IG5o4bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB0aGVvIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cNCmBgYHtyfQ0KQUlDKE9MUVMpDQpBSUMobG9naXRxcykNCkFJQyhwcm9iaXRxcykNCmBgYA0KKipOaOG6rW4geMOpdCoqOiBNw7QgaMOsbmggdOG7kXQgbmjhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHRoZW8gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBsw6AgbcO0IGjDrG5oIExvZ2lzdGljIHbhu5tpIG3DtCBow6xuaCBQcm9iaXQgIGtoaSBj4bqjIGhhaSDEkeG7gXUgY8OzIGNo4buJIHPhu5EgNDYwLjE5NDcNCg0KIyMjIyA0LjQuMS4zLiBM4buxYSBjaOG7jW4gbcO0IGjDrG5oIHThu5F0IG5o4bqldCBj4bunYSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyB0aGVvIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcNCmBgYHtyfQ0KQUlDKE9MU0wpDQpBSUMobG9naXRzbCkNCkFJQyhwcm9iaXRzbCkNCmBgYA0KKipOaOG6rW4geMOpdCoqOiBNw7QgaMOsbmggdOG7kXQgbmjhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHRoZW8gbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBsw6AgbcO0IGjDrG5oIExvZ2lzdGljIHbhu5tpIG3DtCBow6xuaCBQcm9iaXQgIGtoaSBj4bqjIGhhaSDEkeG7gXUgY8OzIGNo4buJIHPhu5EgNDI0LjI4NTcNCg0KIyMjIyA0LjQuMS40LiBM4buxYSBjaOG7jW4gbcO0IGjDrG5oIHThu5F0IG5o4bqldCBj4bunYSBjw6FjIG3DtCBow6xuaCDEkWEgYmnhur9uDQpgYGB7cn0NCkFJQyhsbV90dCkNCkFJQyhsZ190dCkNCkFJQyhwYl90dCkNCmBgYA0KKipOaOG6rW4geMOpdCoqOiBNw7QgaMOsbmggdOG7kXQgbmjhuqV0IGPhu6dhIGPDoWMgbcO0IGjDrG5oIMSRYSBiaeG6v24gbMOgIG3DtCBow6xuaCBMb2dpc3RpYyBraGkgY8OzIGNo4buJIHPhu5EgMzYyLjc2NDMNCg0KIyMjIDQuNC4yLkNo4buJIHPhu5EgQnJpZXIgU2NvcmUNCg0KQ2jhu4kgc+G7kSBCcmllciBTY29yZSBsw6AgbeG7mXQgdGjGsOG7m2MgxJFvIMSR4buDIMSRw6FuaCBnacOhIMSR4buZIGNow61uaCB4w6FjIGPhu6dhIGPDoWMgZOG7sSDEkW/DoW4geMOhYyBzdeG6pXQsIHRoxrDhu51uZyDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBjw6FjIGLDoGkgdG/DoW4gcGjDom4gbG/huqFpIG5o4buLIHBow6JuIHbDoCDEkWEgbOG7m3AuIENo4buJIHPhu5EgbsOgeSDEkW8gbMaw4budbmcgc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIGPDoWMgZ2nDoSB0cuG7iyB4w6FjIHN14bqldCBk4buxIMSRb8OhbiB2w6AgY8OhYyBnacOhIHRy4buLIHRo4buxYyB04bq/LiBDaOG7iSBz4buRIEJyaWVyIFNjb3JlIGTDuW5nIMSR4buDIMSRw6FuaCBnacOhIG3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMsIMSRxrDhu6NjIHTDrW5oIG5oxrAgc2F1Og0KJCQNCkI9XGZyYWN7MX17bn1cc3VtX3tpPTF9Xm4oXGhhdHtccGl9LW9faSleMg0KJCQNCnRyb25nIMSRw7M6ICRcaGF0e1xwaX0kIHbDoCAkb19pJCBs4bqnbiBsxrDhu6N0IGzDoCBnacOhIHRy4buLIHjDoWMgc3XhuqV0IHF1YW4gc8OhdCDEkcaw4bujYyB2w6AgZ2nDoSB0cuG7iyB4w6FjIHN14bqldCB0w61uaCByYSB04burIG3DtCBow6xuaC4NCg0KR2nDoSB0cuG7iyBj4bunYSBCcmllciBTY29yZSBjw6BuZyBuaOG7jyBuZ2jEqWEgbMOgIGNow6puaCBs4buHY2ggZ2nhu69hIHjDoWMgc3XhuqV0IHRo4buxYyB04bq/IHbDoCB4w6FjIHN14bqldCB0w61uaCB04burIG3DtCBow6xuaCBjw6BuZyBuaOG7jywgbmdoxKlhIGzDoCBtw7QgaMOsbmggY8OgbmcgdOG7kXQuDQoNCmBgYHtyfQ0KQnJpZXJTY29yZShsb2dpdHRzKQ0KQnJpZXJTY29yZShsb2dpdHFzKQ0KQnJpZXJTY29yZShsb2dpdHNsKQ0KQnJpZXJTY29yZShsZ190dCkNCmBgYA0KKipOaOG6rW4geMOpdCoqOiBDaOG7iSBz4buRIEJyaWVyIFNjb3JlIGPDoG5nIG5o4buPIGPDoG5nIHThu5F0Lg0KDQotIFRhIHRo4bqleSDEkcaw4bujYyBjaOG7iSBz4buRIEJyaWVyIFNjb3JlIHThu5F0IG5o4bqldCBsw6AgbcO0IGjDrG5oIGxvZ2lzdGljICoqxJFhIGJp4bq/bioqICgqMC4xNTAyMzkqKS4gDQoNCi0gWMOpdCB0aGVvIMSRxqFuIGJp4bq/biB0aMOsIG3DtCBow6xuaCBMb2dpc3RpYyAqKlRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIC0gVGjhu51pIGdpYW4gbmfhu6cqKiBsw6AgdOG7kXQgbmjhuqV0ICgqMC4xNzI4NzYxKikNCg0KIyMjIDQuNC4zLiBNYSB0cuG6rW4gbmjhuqdtIGzhuqtuIC0gQ29uZnVzaW9uIG1hdHJpeA0KDQpNYSB0cuG6rW4gbmjhuqdtIGzhuqtuIChDb25mdXNpb24gTWF0cml4KSB0csOsbmggYsOgeSBjw6FjIGvhur90IHF14bqjIHBow6JuIGxv4bqhaSBk4buxYSB0csOqbiBjw6FjIGdpw6EgdHLhu4sgdGjhu7FjIHThur8gdsOgIGdpw6EgdHLhu4sgZOG7sSDEkW/DoW4gY+G7p2EgbcO0IGjDrG5oLg0KDQpgYGB7cn0NCmxpYnJhcnkoZ2xtbmV0KQ0KbGlicmFyeShjYXJldCkNCmxpYnJhcnkocFJPQykNCnByZWRpY3RfbGcgPC0gcHJlZGljdC5nbG0obGdfdHQsIG5ld2RhdGEgPSBhLCB0eXBlPSAicmVzcG9uc2UiKQ0Kcm9jX2N1cnZlX2xvZ2l0IDwtIHJvYyhhJHR0MSwgcHJlZGljdF9sZykNCnByZWRpY3RlZF9sZyA8LSBpZmVsc2UocHJlZGljdF9sZz4wLjUsIjEiLCIwIikNCmNvbmZ1c2lvbl9tYXRyaXhfbGcgPC0gdGFibGUocHJlZGljdGVkID0gcHJlZGljdGVkX2xnLCBhY3R1YWw9IGEkYHR0MWApDQphZGRtYXJnaW5zKGNvbmZ1c2lvbl9tYXRyaXhfbGcpDQpjb25mdXNpb25NYXRyaXgodGFibGUocHJlZGljdGVkID0gcHJlZGljdGVkX2xnLCBhY3R1YWw9IGEkYHR0MWApKQ0KYGBgDQoNCioqS+G6v3QgcXXhuqMqKjogVOG7qyBr4bq/dCBxdeG6oyBtYSB0cuG6rW4gbmjhuqdtIGzhuqtuIGPhu6dhIGJhIG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oLCBsb2dpdCB2w6AgcHJvYml0IGNow7puZyB0w7RpIG5o4bqtbiB0aOG6pXkga+G6v3QgcXXhuqMgdMawxqFuZyDEkeG7k25nIHbhu5tpIG5oYXUuIEPhuqMgYmEgbWEgdHLhuq1uIG5o4bqnbSBs4bqrbiDEkWnhu4F1IGNo4buJIHJhIGPDsyAxMTkgbmfGsOG7nWkgbcO0IGjDrG5oIGThu7EgxJFvw6FuIMSRw7puZyBsw6AgbmfGsOG7nWkgY8OzIHRyaeG7h3UgY2jhu6luZyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunLCB0dXkgbmhpw6puIGPDsyAzNiBuZ8aw4budaSBtw7QgaMOsbmggZOG7sSDEkW/DoW4gc2FpIMSR4buRaSB24bubaSBuZ8aw4budaSBjw7MgdHJp4buHdSBjaOG7qW5nIHRyb25nIGdp4bqlYyBuZ+G7pyB2w6Aga2hv4bqjbmcgNDUgbmfGsOG7nWkgbcO0IGjDrG5oIGThu7EgxJFvw6FuIHNhaSBuZ8aw4budaSBjw7MgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nLiBT4buRIGzhuqduIG3DtCBow6xuaCBk4buxIMSRb8OhbiDEkcO6bmcg4bufIG5nxrDhu51pIGPDsyB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgbMOgIDE3NCBuZ8aw4budaSDEkeG6oXQgY2FvIG5o4bqldC4gDQoNCi0gS+G6v3QgcXXhuqMgY8WpbmcgY2jhu4kgcmEgdOG7tyBs4buHIG3DtCBow6xuaCBk4buxIMSRb8OhbiDEkcO6bmcgbMOgIDc4LjM0JSBnaWFvIMSR4buZbmcga2hv4bqjbmcgNzMuODklIMSR4bq/biA4Mi4yMiUNCg0KLSBLYXBwYSDEkW8gbMaw4budbmcgc+G7sSDEkeG7k25nIHRodeG6rW4gZ2nhu69hIGThu7EgxJFvw6FuIHbDoCB0aOG7sWMgdOG6vywgaGnhu4d1IGNo4buJbmggY2hvIHPhu7EgxJHhu5NuZyB0aHXhuq1uIG5n4bqrdSBuaGnDqm4uIEdpw6EgdHLhu4sgMC41NTc1IGNobyB0aOG6pXkgbeG7qWMgxJHhu5kgxJHhu5NuZyB0aHXhuq1uIHbhu6thIHBo4bqjaS4NCg0KLSBNw7QgaMOsbmggbmjhuq1uIGRp4buHbiBjaMOtbmggeMOhYyA3Ni43NyUgY8OhYyB0csaw4budbmcgaOG7o3AgdGjhu7FjIHThur8gbMOgIFRy4bqhbmcgdGjDoWkgYsOsbmggdHLGsOG7nW5nIGPhu6dhIGdp4bqlYyBuZ+G7py4NCg0KLSBNw7QgaMOsbmggbmjhuq1uIGRp4buHbiBjaMOtbmggeMOhYyA3OS40NSUgY8OhYyB0csaw4budbmcgaOG7o3AgdGjhu7FjIHThur8gbMOgIFRyaeG7h3UgY2jhu6luZyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunLg0KDQojIENoxrDGoW5nIDU6IEvhur90IGx14bqtbg0KDQojIyA1LjEuIEvhur90IGx14bqtbg0KDQpC4buZIGThu68gbGnhu4d1IFNsZWVwIEhlYWx0aCBhbmQgTGlmZXN0eWxlIERhdGFzZXQgxJHDoyBjdW5nIGPhuqVwIG3hu5l0IGLhu6ljIHRyYW5oIHRvw6BuIGPhuqNuaCB24buBIG3hu5FpIHF1YW4gaOG7hyBwaOG7qWMgdOG6oXAgZ2nhu69hIGdp4bqlYyBuZ+G7pyB2w6AgbOG7kWkgc+G7kW5nIGPhu6dhIGNvbiBuZ8aw4budaS4gUXVhIHZp4buHYyBwaMOibiB0w61jaCBjaGkgdGnhur90IDM3NCBuZ8aw4budaSwgbmdoacOqbiBj4bupdSDEkcOjIHjDoWMgxJHhu4tuaCDEkcaw4bujYyBt4buZdCBz4buRIHnhur91IHThu5EgcXVhbiB0cuG7jW5nIOG6o25oIGjGsOG7n25nIMSR4bq/biBjaOG6pXQgbMaw4bujbmcgdsOgIHRo4budaSBsxrDhu6NuZyBnaeG6pWMgbmfhu6csIGJhbyBn4buTbSB0deG7lWkgdMOhYywgZ2nhu5tpIHTDrW5oLCBuZ2jhu4EgbmdoaeG7h3AsIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgdsOgIGhv4bqhdCDEkeG7mW5nIHRo4buDIGNo4bqldC4gxJDhurdjIGJp4buHdCwgbmdoacOqbiBj4bupdSBuw6B5IMSRw6MgbMOgbSByw7UgbeG7kWkgbGnDqm4gaOG7hyBjaOG6t3QgY2jhur0gZ2nhu69hIHRo4budaSBnaWFuIGdp4bqlYyBuZ+G7pywgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyB2w6AgbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyDhuqNuaCBoxrDhu59uZyDEkeG6v24gdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cuIFbhu5tpIGvhur90IHF14bqjIG5naGnDqm4gY+G7qXUgbsOgeSBraMO0bmcgY2jhu4kgbmjhuqVuIG3huqFuaCB04bqnbSBxdWFuIHRy4buNbmcgY+G7p2EgZ2nhuqVjIG5n4bunIMSR4buRaSB24bubaSBz4bupYyBraOG7j2UgdOG7lW5nIHRo4buDIG3DoCBjw7JuIGN1bmcgY+G6pXAgY8ahIHPhu58ga2hvYSBo4buNYyDEkeG7gyBwaMOhdCB0cmnhu4NuIGPDoWMgYmnhu4duIHBow6FwIGNhbiB0aGnhu4dwIGhp4buHdSBxdeG6oywgZ2nDunAgxJFp4buBdSB0cuG7iyBjw6FjIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cgbmjGsCBt4bqldCBuZ+G7pyB2w6AgbmfGsG5nIHRo4bufIGtoaSBuZ+G7pywgdOG7qyDEkcOzIGPhuqNpIHRoaeG7h24gY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY+G7p2EgbeG7jWkgbmfGsOG7nWkuDQpQaMOibiB0w61jaCBi4buZIGThu68gbGnhu4d1Lg0KDQoqKkvhur90IHF14bqjIG5naGnDqm4gY+G7qXUqKjoNCg0KLSBDxqEgY+G6pXUgbmdo4buBIG5naGnhu4dwIGtow6EgxJFhIGThuqFuZywgdHV5IG5oacOqbiBt4buZdCBz4buRIG5nw6BuaCBu4buVaSBi4bqtdCB24bubaSB04bu3IGzhu4cgY2FvIGjGoW4uIE5ow7NtIG5ow6JuIHZpw6puIHkgdOG6vyAoYsOhYyBzxKksIHkgdMOhKSBjaGnhur9tIHThu7cgbOG7hyBjYW8gbmjhuqV0IGNoaeG6v20gMzguNSUuIFRp4bq/cCB0aGVvIGzDoCBuaMOibiB2acOqbiB2xINuIHBow7JuZyAobmjDom4gdmnDqm4ga+G6vyB0b8OhbiwgYsOhbiBow6BuZykgduG7m2kgdOG7tyBs4buHIDE4LjQ1JS4gTmjDs20gZ2nDoW8gZOG7pWMgKGdpw6FvIHZpw6puKSBjaGnhur9tIDEwLjclLiBOaMOzbSBr4bu5IHRodeG6rXQgKGvhu7kgc8awLCBr4bu5IHPGsCBwaOG6p24gbeG7gW0pIGNoaeG6v20gMTcuOTElLiBDw6FjIG5nw6BuaCBuZ2jhu4Ega2jDoWMgY2hp4bq/bSAxNC40NCUuDQoNCi0gVGjhu51pIGdpYW4gZ2nhuqVjIG5n4bunIHRydW5nIGLDrG5oIGNobyB0aOG6pXkgc+G7kSBsxrDhu6NuZyBuZ8aw4budaSBjw7Mgc+G7kSBnaeG7nSBuZ+G7pyB0cnVuZyBiw6xuaCBsw6Agbmhp4buBdSBuaOG6pXQgY8OzIDE2MSBuZ8aw4budaSBjaGnhur9tIDQzLjA1JSAsIHRp4bq/cCB0aGVvIGzDoCBz4buRIGzGsOG7o25nIG5nxrDhu51pIG5n4bunIGPDsyBz4buRIGdp4budIHTGsMahbmcgxJHhu5FpIGPDsyAxMTggbmfGsOG7nWkgY2hp4bq/bSAzMS41NSUsIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgY8OzIHPhu5EgZ2nhu50gbmfhu6cgw610IGzDoCAzNyBuZ8aw4budaSBjaGnhur9tIHThu7cgbOG7hyDDrXQgbmjhuqV0IDkuOSUgdsOgIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgY8OzIHPhu5Egbmfhu6cgbmhp4buBdSBsw6AgNTggbmfGsOG7nWkgY2hp4bq/bSB04bu3IGzhu4cgMTUuNSUuIFBo4bqnbiBs4bubbiBuaMOzbSB0aGFtIGdpYSBraOG6o28gc8OhdCBjw7Mgc+G7kSBnaeG7nSBuZ+G7pyBj4buxYyBr4buzIHThu5F0IGNoaeG6v20gOTAuMSUgY8OzIHRo4budaSBnaWFuIG5n4bunIHRyw6puIDYgdGnhur9uZy4NCg0KLSBDaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunLCB0YSBjw7MgdGjhu4MgdGjhuqV5IG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIMSRxrDhu6NjIMSRw6FuaCBnacOhIHThu5F0IGPDsyBz4buRIG5nxrDhu51pIG5oaeG7gXUgbmjhuqV0IGzDoCAxODYgbmfGsOG7nWkgY2hp4bq/bSB04bu3IGzhu4cgNDkuNzMlLiBL4bq/IMSR4bq/biBsw6AgbmjDs20gxJHDoW5oIGdpw6EgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgY8OzIDExNyBuZ8aw4budaSBjaGnhur9tIDMxLjI4JS4gVsOgIMOtdCBuaOG6pXQgbMOgIG5ow7NtIG5nxrDhu51pIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHLhuqV0IHThu5F0IGzDoCA3MSBuZ8aw4budaSBjaGnhur9tIDE4Ljk4JS4NCg0KLSBN4bupYyDEkeG7mSBjxINuZyB0aOG6s25nLCB0YSB0aOG6pXkgbmjDs20gbmfGsOG7nWkgY8OzIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgYsOsbmggdGjGsOG7nW5nIGPDsyAxNDEgbmfGsOG7nWkgY2hp4bq/bSB04bu3IGzhu4cgY2FvIG5o4bqldCBsw6AgMzcuNyUuIEvhur8gxJHhur9uIG5ow7NtIG5nxrDhu51pIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbuG6t25nIGPDsyAxMjAgbmfGsOG7nWkgY2hp4bq/bSB04bu3IGzhu4cgMzIuMDglIFbDoCBjdeG7kWkgY8O5bmcgbMOgIG5ow7NtIG5nxrDhu51pIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbmjhurkgY8OzIDExMyBuZ8aw4budaSBjaGnhur9tIHThu7cgbOG7hyDDrXQgbmjhuqV0IGzDoCAzMC4yMSUuIE5ow6xuIGNodW5nIHRow6wgbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBj4bunYSBjw6FjIG5ow7NtIHBow6JuIGNoaWEga2jDoSDEkeG7gXUgbmhhdSBjaMOqbmggbOG7h2NoIG5oYXUga2jDtG5nIG5oaeG7gXUuDQoNCi0gVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6csIHRhIHRo4bqleSDEkcaw4bujYyB04bu3IGzhu4cgc+G7kSBuZ8aw4budaSBuZ+G7pyDEkcaw4bujYyBiw6xuaCB0aMaw4budbmcgY8OzIDIxOSBuZ8aw4budaSBjaGnhur9tIDU4LjU1JSB2w6AgdOG7tyBs4buHIG5ow7NtIG5nxrDhu51pIGPDsyB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBi4bqldCB0aMaw4budbmcgY8OzIDE1NSBuZ8aw4budaSBsw6AgNDEuNDUlLCB0cm9uZyDEkcOzLCBjaOG7qW5nIG3huqV0IG5n4bunIGPDsyA3NyBuZ8aw4budaSBjaGnhur9tIDIwLjU4JSB2w6AgY2jhu6luZyBuZ8awbmcgdGjhu58ga2hpIG5n4bunIGPDsyA3OCBuZ8aw4budaSBjaGnhur9tIDIwLjg1JQ0KDQotIFRo4budaSBnaWFuIGdp4bqlYyBuZ+G7pyDhuqNuaCBoxrDhu59uZyDEkeG6v24gVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6csIHRhIGPDsyB0aOG7gyB0aOG6pXkgdmnhu4djIGTDoG5oIGNobyB0aOG7nWkgZ2lhbiBuZ+G7pyDDrXQgaG/hurdjIHF1w6Egbmhp4buBdSBjxaluZyBk4bqrbiDEkeG6v24gdmnhu4djIGLhu4sgbeG6r2MgY8OhYyBjaOG7qW5nIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cga2jDoSBjYW8gKGNoxrBhIHjDqXQgY8OhYyB54bq/dSB04buRIGtow6FjIG5oxrAgTmdo4buBIG5naGnhu4dwLCBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHbDoCBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nKSBj4bulIHRo4buDIGzDoCBuZ+G7pyDDrXQgaMahbiA2IHRp4bq/bmcgdsOgIG5oaeG7gXUgaMahbiA4IHRp4bq/bmcuDQoNCi0gQ2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyDhuqNuaCBoxrDhu59uZyDEkeG6v24gVHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6csIHThu7cgbOG7hyBt4bqvYyBjw6FjIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cgbmjGsCBjaOG7qW5nIG3huqV0IG5n4bunIHbDoCBjaOG7qW5nIG5nxrBuZyB0aOG7nyBraGkgbmfhu6cgZ2nhu69hIGPDoWMgbmjDs20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBraMOhYyBuaGF1IGNobyB0aOG6pXkgc+G7sSBraMOhYyBiaeG7h3QgxJHDoW5nIGvhu4MuIFRyb25nIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZywgNjUuODIlIG3huq9jIGPDoWMgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pywgdHJvbmcga2hpIDM0LjE4JSBjw7MgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nLiDEkOG7kWkgduG7m2kgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgdOG7kXQsIHThu7cgbOG7hyBt4bqvYyBjw6FjIHLhu5FpIGxv4bqhbiBjaOG7iSBsw6AgMjQuMTklLCB2w6AgNzUuODElIGR1eSB0csOsIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcuIE5nxrDhu6NjIGzhuqFpLCB0cm9uZyBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBy4bqldCB04buRdCwgdOG7tyBs4buHIG3huq9jIGPDoWMgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyBsw6AgNDYuNSUsIHbhu5tpIDUzLjUlIGPDsyBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nLg0KDQotIE3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcg4bqjbmggaMaw4bufbmcgxJHhur9uIFRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunLCBjw6FjIG5ow7NtIGNobyB0aOG6pXkgc+G7sSBraMOhYyBiaeG7h3QgcsO1IHLhu4d0LiBUcm9uZyBuaMOzbSBjw7MgbeG7qWMgxJHhu5kgY8SDbmcgdGjhurNuZyBiw6xuaCB0aMaw4budbmcsIDQxLjE0JSBt4bqvYyBjw6FjIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6csIGPDsm4gNTguODYlIGR1eSB0csOsIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZy4gVHJvbmcgbmjDs20gY8OzIG3hu6ljIMSR4buZIGPEg25nIHRo4bqzbmcgbmjhurksIGNo4buJIDExLjUlIG3huq9jIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6csIHbDoCA4OC41JSBjw7MgZ2nhuqVjIG5n4bunIGLDrG5oIHRoxrDhu51uZy4gTmfGsOG7o2MgbOG6oWksIHRyb25nIG5ow7NtIGPDsyBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIG7hurduZywgdOG7tyBs4buHIG3huq9jIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cgbMOqbiDEkeG6v24gNzAlLCB0cm9uZyBraGkgMzAlIGR1eSB0csOsIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcuDQoNCioqUGjDom4gdMOtY2ggY8OhYyBtw7QgaMOsbmgqKg0KDQotIE3DtCBow6xuaCB04buRdCBuaOG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdGhlbyB0aOG7nWkgZ2lhbiBnaeG6pWMgbmfhu6cgbMOgIG3DtCBow6xuaCBMb2dpc3RpYyB24bubaSBtw7QgaMOsbmggUHJvYml0IGtoaSBj4bqjIGhhaSDEkeG7gXUgY8OzIGNo4buJIHPhu5EgNDAwLjYxMjMNCg0KLSBNw7QgaMOsbmggdOG7kXQgbmjhuqV0IGPhu6dhIHRy4bqhbmcgdGjDoWkgZ2nhuqVjIG5n4bunIHRoZW8gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBsw6AgbcO0IGjDrG5oIExvZ2lzdGljIHbhu5tpIG3DtCBow6xuaCBQcm9iaXQga2hpIGPhuqMgaGFpIMSR4buBdSBjw7MgY2jhu4kgc+G7kSA0NjAuMTk0Nw0KDQotIE3DtCBow6xuaCB04buRdCBuaOG6pXQgY+G7p2EgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdGhlbyBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIGzDoCBtw7QgaMOsbmggTG9naXN0aWMgduG7m2kgbcO0IGjDrG5oIFByb2JpdCBraGkgY+G6oyBoYWkgxJHhu4F1IGPDsyBjaOG7iSBz4buRIDQyNC4yODU3DQoNCi0gQ2jhu4kgc+G7kSBCcmllciBTY29yZSBjw6BuZyB0aOG6pXAgY2hvIHRo4bqleSBtw7QgaMOsbmggZOG7sSDEkW/DoW4gY8OgbmcgY2jDrW5oIHjDoWMuIFRyb25nIG5naGnDqm4gY+G7qXUsIG3DtCBow6xuaCBsb2dpc3RpYyDEkWEgYmnhur9uIMSR4bqhdCBjaOG7iSBz4buRIEJyaWVyIFNjb3JlIHThu5F0IG5o4bqldCBsw6AgMC4xNTAyMzksIGNobyB0aOG6pXkgaGnhu4d1IHN14bqldCBk4buxIMSRb8OhbiB04buRdCBuaOG6pXQuIFjDqXQgdGhlbyB04burbmcgYmnhur9uLCBtw7QgaMOsbmggbG9naXN0aWMgZOG7sWEgdHLDqm4gdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdsOgIHRo4budaSBnaWFuIG5n4bunIGPDsyBjaOG7iSBz4buRIEJyaWVyIFNjb3JlIGzDoCAwLjE3Mjg3NjEsIGzDoCBtw7QgaMOsbmggxJHGoW4gYmnhur9uIHThu5F0IG5o4bqldC4NCg0KLSBL4bq/dCBxdeG6oyB04burIG1hIHRy4bqtbiBuaOG6p20gbOG6q24gY+G7p2EgYmEgbcO0IGjDrG5oIHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmgsIGxvZ2l0IHbDoCBwcm9iaXQgY2hvIHRo4bqleSBz4buxIHTGsMahbmcgxJHhu5NuZyBnaeG7r2EgY8OhYyBtw7QgaMOsbmguIEPhuqMgYmEgxJHhu4F1IGThu7EgxJFvw6FuIGNow61uaCB4w6FjIDExOSB0csaw4budbmcgaOG7o3AgY8OzIHRyaeG7h3UgY2jhu6luZyBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunLCBuaMawbmcgY8OzIDM2IHRyxrDhu51uZyBo4bujcCBi4buLIGThu7EgxJFvw6FuIHNhaSBsw6AgbmfGsOG7nWkgY8OzIHRyaeG7h3UgY2jhu6luZyB2w6Aga2hv4bqjbmcgNDUgdHLGsOG7nW5nIGjhu6NwIGLhu4sgZOG7sSDEkW/DoW4gc2FpIGzDoCBuZ8aw4budaSBjw7MgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nLiBT4buRIGzhuqduIGThu7EgxJFvw6FuIMSRw7puZyB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBiw6xuaCB0aMaw4budbmcgbMOgIGNhbyBuaOG6pXQgduG7m2kgMTc0IHRyxrDhu51uZyBo4bujcC4gVOG7tyBs4buHIGThu7EgxJFvw6FuIMSRw7puZyBj4bunYSBjw6FjIG3DtCBow6xuaCDEkeG6oXQgNzguMzQlLCBkYW8gxJHhu5luZyB04burIDczLjg5JSDEkeG6v24gODIuMjIlLiBDaOG7iSBz4buRIEthcHBhIGzDoCAwLjU1NzUsIGNobyB0aOG6pXkgbeG7qWMgxJHhu5kgxJHhu5NuZyB0aHXhuq1uIHbhu6thIHBo4bqjaSBnaeG7r2EgZOG7sSDEkW/DoW4gdsOgIHRo4buxYyB04bq/LiBNw7QgaMOsbmggbmjhuq1uIGRp4buHbiBjaMOtbmggeMOhYyA3Ni43NyUgY8OhYyB0csaw4budbmcgaOG7o3AgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgYsOsbmggdGjGsOG7nW5nIHbDoCA3OS40NSUgY8OhYyB0csaw4budbmcgaOG7o3AgdHJp4buHdSBjaOG7qW5nIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cuDQoNCiMjIDUuMi4gTeG7mXQgc+G7kSBraHV54bq/biBuZ2jhu4sNCg0KIyMjIDUuMi4xLiBI4bqhbiBjaOG6vw0KCQ0KQuG7mSBk4buvIGxp4buHdSBjdW5nIGPhuqVwIGPGoSBo4buZaSDEkcOhbmcga+G7gyDEkeG7gyBraMOhbSBwaMOhIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgZ2nhuqVjIG5n4bunIHbDoCBs4buRaSBz4buRbmcsIG5oxrBuZyBjxaluZyBwaOG6o2kgxJHhu5FpIG3hurd0IHbhu5tpIG5o4buvbmcgaOG6oW4gY2jhur8gcsO1IHLhu4d0LiDEkOG6p3UgdGnDqm4sIGNo4bqldCBsxrDhu6NuZyBk4buvIGxp4buHdSBsw6AgduG6pW4gxJHhu4EgdGhlbiBjaOG7kXQsIHbhu5tpIG3hu5l0IHPhu5EgbMaw4bujbmcgcXVhbiBzw6F0IGjhuqFuIGNo4bq/IGtow7RuZyB0aOG7gyBwaOG6o24gw6FuaCDEkeG6p3kgxJHhu6cgY8OhYyBiaeG6v24gdGjhu4MgduG7gSBnaeG6pWMgbmfhu6cuIFRo4bupIGhhaSwgc+G7sSBk4buxYSB2w6BvIGLDoW8gY8OhbyB04buxIG5ndXnhu4duIGPDsyB0aOG7gyBk4bqrbiDEkeG6v24gc2FpIHPhu5EgZG8gc+G7sSBraMO0bmcgY2jDrW5oIHjDoWMgdHJvbmcgZ2hpIG5o4bubIGhv4bq3YyBz4buxIHThu6sgY2jhu5FpIHRp4bq/dCBs4buZIHRow7RuZyB0aW4gY8OhIG5ow6JuLiBT4buxIMSR4bqhaSBkaeG7h24gbeG6q3UgZOG7ryBsaeG7h3Uga2jDtG5nIHBo4bqjaSBj4bunYSB0b8OgbiBi4buZIGTDom4gc+G7kSBjxaluZyBsw6AgbeG7mXQgcsOgbyBj4bqjbiBs4bubbiwgaOG6oW4gY2jhur8gdMOtbmggdOG7lW5nIHF1w6F0IGPhu6dhIGvhur90IHF14bqjLiBDdeG7kWkgY8O5bmcsIHZp4buHYyB0aGnhur91IGPDoWMgYmnhur9uIHF1YW4gdHLhu41uZyBjw7MgdGjhu4MgbMOgbSBzdXkgZ2nhuqNtIGto4bqjIG7Eg25nIHBow6JuIHTDrWNoIGNoaSB0aeG6v3QgdsOgIHTDrG0gaGnhu4N1IGPDoWMgbeG7kWkgbGnDqm4gaOG7hyBwaOG7qWMgdOG6oXAsIGThuqtuIMSR4bq/biBuaOG7r25nIGvhur90IGx14bqtbiBo4bqhbiBjaOG6vyB24buBIHTDrW5oIGNow61uaCB4w6FjIGPhu6dhIG5naGnDqm4gY+G7qXUuDQoNCiMjIyA1LjIuMi4gSMaw4bubbmcgbmdoacOqbiBj4bupdSB0aeG6v3AgdGhlbw0KCQ0KxJDhu4Mga2jhuq9jIHBo4bulYyBjw6FjIGjhuqFuIGNo4bq/IGhp4buHbiB04bqhaSBj4bunYSB2aeG7h2MgcGjDom4gdMOtY2ggYuG7mSBk4buvIGxp4buHdSBTbGVlcCBIZWFsdGggYW5kIExpZmVzdHlsZSBEYXRhc2V0IHbDoCBjdW5nIGPhuqVwIGvhur90IHF14bqjIGNow61uaCB4w6FjIGjGoW4sIGjGsOG7m25nIG5naGnDqm4gY+G7qXUgdGnhur9wIHRoZW8gbsOqbiB04bqtcCB0cnVuZyB2w6BvIG3hu5l0IHPhu5EgxJFp4buDbSBzYXU6DQoNCi0gVMSDbmcgY8aw4budbmcgcGjGsMahbmcgcGjDoXAgdGh1IHRo4bqtcCBk4buvIGxp4buHdTogxJDhu4MgxJHhuqNtIGLhuqNvIHTDrW5oIMSR4bqneSDEkeG7pyB2w6AgY2jDrW5oIHjDoWMsIG7Dqm4gc+G7rSBk4bulbmcgY8OhYyB0aGnhur90IGLhu4sgdGhlbyBkw7VpIGdp4bqlYyBuZ+G7pyB2w6AgbOG7kWkgc+G7kW5nIHThu7EgxJHhu5luZyB0aGF5IHbDrCBjaOG7iSBk4buxYSB2w6BvIGLDoW8gY8OhbyB04buxIG5ndXnhu4duIGPhu6dhIG5nxrDhu51pIHRoYW0gZ2lhLiDEkGnhu4F1IG7DoHkgc+G6vSBnacO6cCBnaeG6o20gdGhp4buDdSBzYWkgbOG7h2NoIGRvIGtow7RuZyBuaOG7myBjaMOtbmggeMOhYyBob+G6t2Mga2jDtG5nIG114buRbiB0aeG6v3QgbOG7mSB0aMO0bmcgdGluIHRo4buxYyB04bq/Lg0KDQotIFTDrWNoIGjhu6NwIHRow6ptIGPDoWMgYmnhur9uIHF1YW4gdHLhu41uZyBraMOhYzogTsOqbiB0aHUgdGjhuq1wIHRow6ptIGThu68gbGnhu4d1IHbhu4EgY8OhYyBiaeG6v24gbmjGsCBt4bupYyDEkeG7mSBzdHJlc3MsIHTDrG5oIHRy4bqhbmcgc+G7qWMga2jhu49lIHThu5VuZyBxdcOhdCwgdsOgIGPDoWMgeeG6v3UgdOG7kSBtw7RpIHRyxrDhu51uZy4gxJBp4buBdSBuw6B5IHPhur0gY2hvIHBow6lwIHBow6JuIHTDrWNoIHTDoWMgxJHhu5luZyByacOqbmcgbOG6uyBj4bunYSB04burbmcgeeG6v3UgdOG7kSB2w6AgZ2nDunAgaGnhu4N1IHLDtSBoxqFuIHbhu4EgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBnaeG6pWMgbmfhu6cgdsOgIGzhu5FpIHPhu5FuZy4NCg0KLSBT4butIGThu6VuZyBjw6FjIHBoxrDGoW5nIHBow6FwIHBow6JuIHTDrWNoIG5ow6JuIHF14bqjOiDEkOG7gyB0w6xtIGhp4buDdSByw7UgaMahbiB24buBIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgZ2nhuqVjIG5n4bunIHbDoCBs4buRaSBz4buRbmcsIG5naGnDqm4gY+G7qXUgbsOqbiBz4butIGThu6VuZyBjw6FjIHBoxrDGoW5nIHBow6FwIHBow6JuIHTDrWNoIG5ow6JuIHF14bqjIHRoYXkgdsOsIGNo4buJIGThu6tuZyBs4bqhaSDhu58gdmnhu4djIHjDoWMgxJHhu4tuaCBjw6FjIG3hu5FpIHTGsMahbmcgcXVhbi4gxJBp4buBdSBuw6B5IHPhur0gZ2nDunAgeMOhYyDEkeG7i25oIMSRxrDhu6NjIGPDoWMgbmd1ecOqbiBuaMOibiB2w6AgaOG7hyBxdeG6oyBj4bulIHRo4buDIHRyb25nIG3hu5FpIHF1YW4gaOG7hyBuw6B5Lg0KDQpOZ2hpw6puIGPhu6l1IHRoZW8gbmjDs20gxJHhu5FpIHTGsOG7o25nIGPhu6UgdGjhu4M6IFBow6JuIHTDrWNoIGThu68gbGnhu4d1IGThu7FhIHRyw6puIGPDoWMgbmjDs20gxJHhu5FpIHTGsOG7o25nIGPhu6UgdGjhu4MgbmjGsCBuZ8aw4budaSBsw6BtIHZp4buHYyB0aGVvIGNhLCBzaW5oIHZpw6puLCBuZ8aw4budaSBjYW8gdHXhu5VpLCB2LnYuIHPhur0gZ2nDunAgaGnhu4N1IHLDtSBoxqFuIHbhu4EgY8OhYyBuaHUgY+G6p3UgdsOgIHRow6FjaCB0aOG7qWMgxJHhurdjIHRow7kgY+G7p2EgdOG7q25nIG5ow7NtLiDEkGnhu4F1IG7DoHkgY8Wpbmcgc+G6vSBnacO6cCDEkcawYSByYSBjw6FjIGdp4bqjaSBwaMOhcCBj4bulIHRo4buDIHbDoCBoaeG7h3UgcXXhuqMgaMahbiBjaG8gdOG7q25nIG5ow7NtIMSR4buRaSB0xrDhu6NuZy4NCg0K