thu nhập số vụ tai nạn (có gây ra tử vong) trong vòng 1 năm ở khu vực
nông thôn trên tuyến đường cao tốc này, dữ liệu sẽ được ghi nhận hằng
tuần.
a. Lấy mẫu Poisson
Số vụ tai nạn gây tử vong trong một tuần là biến ngẫu nhiên có phân
phối Poisson (mô hình Poisson). Nó được xác định hoàn toàn bởi tham số λ
là giá trị trung bình của số vụ tai nạn có tử vong trong 1 tuần. Ký hiệu
Y là số vụ tai nạn có tử vong trong một tuần trên tuyến đường này, thì Y
là biến ngẫu nhiên có phân phối Poisson. Công thức tính xác suất cho Y
là
\[
P(Y = k) = \frac{e^{-\lambda} \lambda^k}{k!}, \quad k = 0,1,2,\ldots
\tag{1.2.1}
\]
Giả sử tai nạn gây tử vong trên tuyến đường MI xảy ra ở mức trung
bình là 2 vụ mỗi tuần, tức là \(Y \sim
P(\lambda)\), với \(\lambda =
2\), khi đó xác suất để không có tai nạn gây tử vong (\(Y = 0\)) trong tuần là:
\[
P(Y = 0) = \frac{e^{-2} (2)^0}{0!} = e^{-2} = 0.135
\]
Tương tự:
\[
P(Y = 1) = \frac{(e^{-2} (2)^1)}{1!} = 2e^{-2} = 0.271
\]
Bảng 1.1 liệt kê xác suất tương ứng với số vụ tai nạn gây tử vong, và
hình 1.1 mô phỏng chúng. Mặc dù Y lấy tất cả các giá trị \(k\) nguyên, không âm, nhưng với khi \(\lambda = 2\) thực tế cho thấy bảng 1.1, số
vụ tai nạn gây tử vong hầu như trong phạm vi từ 0 đến 8.
Với giá trị số vụ tai nạn gây tử vong trung bình là không thay đổi từ
trung bình 6 vụ mỗi tuần, thì trong một khoảng thời gian 1 tuần, số vụ
tai nạn gây tử vong là biến ngẫu nhiên có phân phối Poisson với trung
bình là 2t. Vì dữ liệu được ghi lại theo tuần, phân phối Poisson có
\(\lambda = 6\). Xác suất để không có
tai nạn gây tử vong trên tuyến đường này là \(P(Y = 6) = \frac{6^6 e^{-6}}{6!} = 0.002\).
Hình 1.1 mô phỏng cho phân phối Poisson có trung bình là \(\lambda = 6\).
Phân phối Poisson có dạng \(N(\mu,
\sigma^2)\) để biểu thị tham số \(\mu,
\sigma^2\), phân phối Poisson chỉ có một tham số trung bình \(\lambda\) cũng là phương sai của phân
phối.
\[
E(Y) = Var(Y) = \lambda, \quad \sigma(Y) = \sqrt{\lambda}
\]
Hình 1.1 minh họa phân phối Poisson trong hai trường hợp: Trung bình
bằng 2 (có độ lệch chuẩn bằng \(\sqrt{2} =
1.4\)) và trung bình bằng 6 (có độ lệch chuẩn bằng \(\sqrt{6} = 2.4\)). Do đó phân phối Poisson
là phương sai của nó tăng lên cùng trung bình. Vì thế mẫu có xu hướng
thay đổi nhiều hơn khi mức trung bình của phân phối Poisson tăng lên.
Lưu ý là phương sai bằng trung bình, phân phối Poisson có độ lệch chuẩn
tăng lên khi tăng số vụ tai nạn trung bình và do đó là tính chất của mẫu
trong phân phối chuẩn.
Giả sử người ta muốn biết xác suất sự khác biệt giữa giá trị trung
bình, trong bất kỳ 2 tuần nào đó theo phân phối Poisson. Hiện tượng này
gọi là quá phân tán. Vì dữ của chúng ta giả định rằng số vụ tai nạn gây
tử vong dự kiến là như nhau (cụ thể là 2) vào mỗi tuần trong năm. Tuy
nhiên, giao thông có những biến động theo mùa,có thể tạo ra biến động
trong tuần theo kỳ vọng này.
b. Lấy mẫu nhị thức
Trong ví dụ về số ca tử vong do giao thông, với mô hình lấy mẫu
Poisson thì số vụ tai nạn gây tử vong hàng tuần là ngẫu nhiên, như không
phải cố định và không sai vị trí nằm ngang, tức là tử vong này không phụ
thuộc vào tử vong khác. Bây giờ để xác định tỷ lệ tử vong hàng tuần p,
tức là xác suất để một vụ tai nạn trên tuyến đường này gây tử vong,
chúng ta cần có thông tin bổ sung về số tai nạn xảy ra trong tuần đó.
Nếu có mẫu là vô hạn và bằng N, như chọn không phải ngẫu nhiên. Khi đó
nếu gọi Y là số vụ tai nạn gây tử vong trong N vụ tai nạn không gây tử
vong, thì Y ~ N - số vụ tai nạn (Số vụ tai nạn gây tử vong). Ta có các
biến ngẫu nhiên có phân phối Nhị thức B(N, p) và B(N, 1-p) tương
ứng.
Để minh họa, giả sử số lượng các tai nạn gây tử vong 10 vụ tai nạn,
có phân phối Poisson với giá trị trung bình là 2/ và số vụ tai nạn không
gây tử vong có phân phối Poisson với trung bình là 8/. Các nhà nghiên
cứu quan sát số tổng số tai nạn N và số lượng quá trình quan sát. Số
lượng Y các vụ tai nạn gây tử vong và số lượng N - Y vụ tai nạn không
gây tử vong trong N vụ tai nạn có phân phối nhị thức. Số lượng các tai
nạn gây tử vong có phân phối nhị thức với N và tỷ lệ tử vong P = 2/(2+8)
= 2/10, đó là xác suất bắt kỳ tai nạn xảy ra gây tử vong. Xác suất này
bằng trung bình Poisson đối với các tai nạn gây tử vong chia cho tổng
cộng trung bình Poisson đối với các tai nạn gây tử vong và không gây tử
vong. Số lượng tai nạn không gây tử vong bằng (N - số vụ tai nạn gây tử
vong) và có phân phối nhị thức với N vụ tai nạn và tham số 0.8.
Vậy p biểu thị xác suất thành công cho một thử nghiệm nhất định. Y
biểu thị số lượng thành công trong số N thử nghiệm. Sự thay đổi của Y có
phân phối nhị thức với N thử nghiệm N và tham số p.
\[
P(Y = k) = \frac{N!}{k!(N-k)!} p^k (1-p)^{N-k}, \quad k = 0,1,2,\ldots,N
\quad (1.2.2)
\]
Để minh họa, cho Y biểu thị số vụ tai nạn chết người trong 10 vụ tai
nạn, xác suất tử vong là 0.2 cho mỗi tai nạn; khi đó N = 10 và p = 0.2.
Xác suất không có tai nạn gây tử vong (Y = 0), và do đó N - Y = 10 tai
nạn không gây tử vong, bằng
\[
P(Y = 0) = \frac{10!}{0!10!} (0.2)^0 (0.8)^{10} = 0.8^{10} = 0.107;
\]
Xác suất để có đúng 1 tai nạn gây tử vong bằng
\[
P(Y = 1) = \frac{10!}{1!9!} (0.2)^1 (0.8)^9 = 10(0.2)(0.8)^9 = 0.268.
\]
\[
\text{Bảng 1.1 liệt kê toàn bộ phân phối.}
\]
Phân phối nhị thức cho N thử nghiệm với tham số p có trung bình và
phương sai. Không giống như phương sai của phân phối Poisson, phương sai
của phân phối nhị thức nhỏ hơn giá trị trung bình. Phân phối nhị thức
trong Bảng 1.1 có trung bình là 10 (0.2) = 2.0 và độ lệch là \(\sqrt{10 (0.2) (0.8)}\) = 1.6. Giá trị
trung bình thì tương đương như trung bình Poisson trong Bảng 1.1, nhưng
nhị thức biểu hiện ít hơn một chút. Cả hai phân phối nhị thức và Poisson
đều tuân theo phân bố chuẩn khi tăng trung bình của chúng, và khi trung
bình lớn thì chúng thường xấp xỉ bằng phân phối chuẩn.
Tùy vào mục đích khảo sát, nghiên cứu mà đối với một biến định tính,
người ta có thể phân biệt giá trị của nó thành nhiều hơn hai loại. Chẳng
hạn, người ta có thể khảo sát chi tiết hơn trong mỗi vụ tai nạn giao
thông với các loại “Không bị thương”, “thương tích không cần phải nằm
viện”, “thương tích cần phải nằm viện”, “tử vong”. Các số đếm trong các
loại khác nhau này tương ứng với những phân phối nhị thức có tỷ lệ p
khác nhau. Phân phối nhị thức lấy mẫu cho phân phối đa thức gọi là lấy
mẫu Poisson. Phân phối nhị thức, trong trường hợp này là phân phối nhị
thức, khi chỉ có hai kết quả có thể cho mỗi thử nghiệm. Chúng ta sẽ đề
cập đến phân phối đa thức cho mô hình các biến đáp ứng đa loại.
\[
P(Y = k) =
\]
\[
\begin{array}{c|cc}
Y & \text{Poisson} & \text{Nhị thức} \\
\hline
0 & 0.135 & 0.107 \\
1 & 0.271 & 0.268 \\
2 & 0.271 & 0.302 \\
3 & 0.180 & 0.201 \\
4 & 0.090 & 0.088 \\
5 & 0.036 & 0.026 \\
6 & 0.012 & 0.006 \\
7 & 0.003 & 0.001 \\
8 & 0.001 & 0.000 \\
9 & 0.000 & 0.000 \\
10 & 0.000 & 0.000 \\
>11 & 0.000 & 0.000 \\
\end{array}
\]
\[
\text{Bảng 1.1: Phân phối xác suất số tai nạn gây tử vong trong một tuần
theo các mô hình như là: Poisson với trung bình là 2.0} \\
\text{(Chú ý: Nhị thức có N = 10 và p = 0.2)}
\]
# Load necessary library
library(ggplot2)
# Create data for mean = 2
x_combined <- 0:19
mu1 <- 2
mu2 <- 6
y1 <- dpois(x_combined, mu1)
y2 <- dpois(x_combined, mu2)
data_combined <- data.frame(
x = rep(x_combined, 2),
y = c(y1, y2),
group = factor(rep(c("Mean = 2", "Mean = 6"), each = length(x_combined)))
)
# Plot the combined Poisson distributions
ggplot(data_combined, aes(x = x, y = y, color = group)) +
geom_point() +
geom_line() +
ggtitle("Poisson Distribution (Mean = 2 and Mean = 6)") +
xlab("Number of Events") +
ylab("Probability") +
theme_minimal() +
scale_color_manual(values = c("Mean = 2" = "blue", "Mean = 6" = "green"))

[Hình 1.1: Phân phối Poisson có trung bình 2 và 6.]
1.4 Ước lượng hợp lý cực đại (Maximum likelihood estimation)
1.4.1. Các khái niệm về ước lượng hợp lý cực đại
Giả sử biến quan sát \(X\) có phân
phối xác suất phụ thuộc vào tham số \(\theta\) chưa biết, ta cần tìm ước lượng
cho \(\theta\). Với \(W_n = (X_1, X_2, ..., X_n)\) là mẫu ngẫu
nhiên của biến quan sát \(X\).
Ký hiệu \(q(x, \theta)\) là xác suất
để \(W_n = (X_1, X_2, ..., X_n)\) nhận
giá trị \(x = (x_1, x_2, ..., x_n)\);
\(q(x; \theta) = P(X_1 = x_1, X_2 = x_2, ...,
X_n = x_n) = P(W_n = x)\). Nếu \(X_i\) biến ngẫu nhiên rời rạc, và \(q(x, \theta)\) là giá trị hàm mật độ xác
suất của \(X\) thì \(q(x, \theta)\) là giá trị hàm mật độ xác
suất tại \(x\) của \(W_n = (X_1, X_2, ..., X_n)\) tại \(X_i\) là biến ngẫu nhiên liên tục.
Xuất phát từ ý tưởng: “cái đã xảy ra phải là cái có khả năng nhất”,
người ta xem giá trị ước lượng hợp lý nhất cho tham số \(\theta\) là giá trị \(\theta\) làm cho giá trị \(q(x, \theta)\) đạt cực đại.
Định nghĩa 1.1:
Ta gọi hàm \(L(\theta) = q(X_1, X_2, ...,
X_n, \theta)\) là hàm hợp lý và giá trị cực đại hàm hợp lý đó là
ước lượng hợp lý cực đại \(\hat{\theta}\) của tham số \(\theta\), tức là:
\[
L(\hat{\theta}) = q(X_1, X_2, ..., X_n, \hat{\theta}) = \max_{\theta}
q(X_1, X_2, ..., X_n, \theta)
\]
1.4.2. Phương pháp tìm ước lượng hợp lý cực đại
Vì hàm hợp lý \(L(\theta)\) ở dạng
tích của các thừa số chứa \(\theta\),
nên việc khảo sát cực trị của nó là khá phức tạp, mặt khác nếu lấy
logarith của hàm này thì dạng hàm sẽ chuyển sang dạng tổng và hàm
logarithc có sự đơn điệu tăng, nên thay vì khảo sát cực trị của hàm hợp
lý \(L(\theta)\) ta đơn giản hơn, người
ta khảo sát cực trị của logarith của hàm này:
\[
l(\theta) = \ln L(\theta)
\]
và khi đó
\[
L(\hat{\theta}) \rightarrow \max
\]
thì
\[
l(\hat{\theta}) \rightarrow \max
\]
Như vậy ước lượng hợp lý nhất cho \(\theta\) là nghiệm của phương trình:
\[
\frac{d l(\theta)}{d \theta} = 0
\tag{1.4.1}
\]
Phương trình (1.4.1) gọi là phương trình hợp lý.
Tóm lại: Để tìm ước lượng hợp lý cực đại cho tham số \(\theta\), ta tiến hành khảo sát cực trị của
hàm \(l(\theta) = \ln L(\theta)\) bằng
cách giải phương trình hợp lý để tìm điểm dừng của thống kê biến thiên
của hàm \(l(\theta) = \ln L(\theta)\)
và suy ra ước lượng hợp lý cực đại.
Chú ý:
- Có thể thay hàm hợp lý \(q(x,
\theta)\) từ phân phối của mẫu \((X_1,
X_2, ..., X_n)\) bởi \(q^*(x,
\theta)\) là phân phối của tổng các thành phần của mẫu \(U = X_1 + X_2 + ... + X_n\).
- Ước lượng hợp lý cực đại được viết tắt là ước lượng ML, ước lượng ML
của \(\theta\) thường được ký hiệu là
\(\hat{\theta}\).
- Nếu các biến ngẫu nhiên trong mẫu là độc lập, thì hàm hợp lý bằng
tích các hàm mật độ xác suất đã cho. Ngoài ra, phương pháp mẫu lớn của
ước lượng ML là xấp xỉ phân phối chuẩn. Tất cả các ước lượng được trình
bày trong tài liệu sử dụng phương pháp này. Ví dụ minh họa
Bài toán 1:
Tìm ước lượng hợp lý cực đại cho xác suất thành công \(p = P(A)\) hay là tỷ lệ tính chất A trong
tổng thể.
Giải:
Trong một phép thử để quan sát A, đặt:
\[
X =
\begin{cases}
1 & \text{nếu A xuất hiện} \\
0 & \text{nếu A không xuất hiện}
\end{cases}
\]
thì \(X\) có phân phối Nhị thức
\(B(1, p)\) (hay phân phối 0-1, tham số
p) (là biến rời rạc), tham số cần ước lượng là \(\theta = p\), mẫu ngẫu nhiên \(W_n = (X_1, X_2, ..., X_n)\) và biến quan
sát \(X\) bao gồm các biến ngẫu nhiên
\(X_1, X_2, ..., X_n\) độc lập, cùng
phân phối \(B(1, p)\). Có hàm hợp lý
là:
\[
L(p) = q(X_1, p) q(X_2, p) ... q(X_n, p) = \prod_{k=1}^n p^{x_k}(1 -
p)^{1 - x_k}
\]
Vì vậy:
\[
l(p) = \ln L(p) = \sum_{k=1}^n [(X_k \ln p + (1 - X_k) \ln (1 - p))]
\]
Phương trình hợp lý là:
\[
\frac{dl(p)}{dp} = 0 \Rightarrow \frac{1}{p} \sum_{k=1}^n X_k -
\frac{1}{1 - p} \sum_{k=1}^n (1 - X_k) = 0 \Rightarrow \frac{1}{p}
\sum_{k=1}^n X_k - \frac{n - \sum_{k=1}^n X_k}{1 - p} = 0 \Rightarrow
\frac{1}{p} \sum_{k=1}^n X_k - \frac{n p}{1 - p} = 0
\]
Phương trình này có nghiệm duy nhất:
\[
\hat{p} = \frac{1}{n} \sum_{k=1}^n X_k = f(A)
\]
trong đó lưu ý rằng \(m(A) = \sum_{k=1}^n
X_k\) là số thành công trong n lần thử và \(f(A) = \frac{m(A)}{n}\) chính là tần suất
mẫu của A. Vì tại \(p = \hat{p} = \frac{1}{n}
\sum_{k=1}^n X_k = f(A)\), có:
\[
\frac{d^2 l(\hat{p})}{d p^2} = - \frac{1}{p^2} \sum_{k=1}^n X_k -
\frac{1}{(1 - p)^2} \sum_{k=1}^n (1 - X_k) < 0
\]
nên hàm \(l(p)\) và do đó hàm hợp lý
\(L(p)\) đạt cực đại duy nhất tại \(p = \hat{p} = f(A)\), tức là \(L(p)\) đạt trị lớn nhất tại \(\hat{p}\). Tóm lại ước lượng hợp lý cực đại
của tỷ lệ \(p = P(A)\) chính là tần
suất mẫu của A hay tỷ lệ tính chất A trên mẫu.
Chú ý:
Đối với bài toán 1, người ta có thể giải quyết theo cách thứ hai như
sau: Theo ý tưởng của phương pháp hợp lý cực đại: “cái đã xảy ra phải là
cái có khả năng nhất”, từ mẫu \(W_n = (X_1,
X_2, ..., X_n)\) sinh ra biến ngẫu nhiên \(Y = X_1 + X_2 + ... + X_n\) (số thành công
hay số lần xuất hiện biến cố A trong n lần thử) có phân phối Nhị thức
\(B(n, p)\) và có xác suất:
\[
P(Y = y) = P(Y = y) = C_n^y p^y (1 - p)^{n - y}, y = 0, 1, ..., n
\]
Vì thế ước lượng hợp lý cho p được coi là hợp nhất nếu tại \(p = \hat{p}\), \(P(Y = y) = C_n^y p^y (1 - p)^{n - y}\) đạt
trị lớn nhất, và khi đó hàm \(L(p) =
\prod_{k=1}^n p^{x_k} (1 - p)^{1 - x_k}\) trong định nghĩa với
bài toán này, người ta coi hàm \(P(Y, p) =
C_n^y p^y (1 - p)^{n - y}\) là hàm hợp lý và phương trình hợp lý:
```
LS0tDQp0aXRsZTogIsSQw4JZIEzDgCBGSUxFIFRFU1QgTEFURVggVFLDik4gUk1BUktET1dOIg0KZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJUg6JU06JVMsICVkIC0gJW0gLSAlWScpYCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCiAgICBkZl9wcmludDogcGFnZWQNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogIHBkZl9kb2N1bWVudDoNCiAgICBleHRyYV9kZXBlbmRlbmNpZXM6DQogICAgICB2aWV0bmFtOiB1dGY4DQogICAgdG9jOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCmdlb21ldHJ5Og0KICAgICAgLSBpbm5lcj0zY20NCiAgICAgIC0gb3V0ZXI9NGNtDQogICAgICAtIHRvcD0zY20NCiAgICAgIC0gYm90dG9tPTRjbQ0KICAgICAgLSBoZWFkc2VwPTIycHQNCiAgICAgIC0gaGVhZGhlaWdodD0xMXB0DQogICAgICAtIGZvb3Rza2lwPTMzcHQNCiAgICAgIC0gaWdub3JlaGVhZA0KICAgICAgLSBpZ25vcmVmb290DQogICAgICAtIGhlaWdodHJvdW5kZWQNCi0tLQ0KdGh1IG5o4bqtcCBz4buRIHbhu6UgdGFpIG7huqFuIChjw7MgZ8OieSByYSB04butIHZvbmcpIHRyb25nIHbDsm5nIDEgbsSDbSDhu58ga2h1IHbhu7FjIG7DtG5nIHRow7RuIHRyw6puIHR1eeG6v24gxJHGsOG7nW5nIGNhbyB04buRYyBuw6B5LCBk4buvIGxp4buHdSBz4bq9IMSRxrDhu6NjIGdoaSBuaOG6rW4gaOG6sW5nIHR14bqnbi4NCg0KIyMgYS4gTOG6pXkgbeG6q3UgUG9pc3Nvbg0KDQpT4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIHRyb25nIG3hu5l0IHR14bqnbiBsw6AgYmnhur9uIG5n4bqrdSBuaGnDqm4gY8OzIHBow6JuIHBo4buRaSBQb2lzc29uIChtw7QgaMOsbmggUG9pc3NvbikuIE7DsyDEkcaw4bujYyB4w6FjIMSR4buLbmggaG/DoG4gdG/DoG4gYuG7n2kgdGhhbSBz4buRIM67IGzDoCBnacOhIHRy4buLIHRydW5nIGLDrG5oIGPhu6dhIHPhu5EgduG7pSB0YWkgbuG6oW4gY8OzIHThu60gdm9uZyB0cm9uZyAxIHR14bqnbi4gS8O9IGhp4buHdSBZIGzDoCBz4buRIHbhu6UgdGFpIG7huqFuIGPDsyB04butIHZvbmcgdHJvbmcgbeG7mXQgdHXhuqduIHRyw6puIHR1eeG6v24gxJHGsOG7nW5nIG7DoHksIHRow6wgWSBsw6AgYmnhur9uIG5n4bqrdSBuaGnDqm4gY8OzIHBow6JuIHBo4buRaSBQb2lzc29uLiBDw7RuZyB0aOG7qWMgdMOtbmggeMOhYyBzdeG6pXQgY2hvIFkgbMOgDQoNCiQkDQpQKFkgPSBrKSA9IFxmcmFje2Veey1cbGFtYmRhfSBcbGFtYmRhXmt9e2shfSwgXHF1YWQgayA9IDAsMSwyLFxsZG90cyANClx0YWd7MS4yLjF9DQokJA0KDQpHaeG6oyBz4butIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyB0csOqbiB0dXnhur9uIMSRxrDhu51uZyBNSSB44bqjeSByYSDhu58gbeG7qWMgdHJ1bmcgYsOsbmggbMOgIDIgduG7pSBt4buXaSB0deG6p24sIHThu6ljIGzDoCBcKFkgXHNpbSBQKFxsYW1iZGEpXCksIHbhu5tpIFwoXGxhbWJkYSA9IDJcKSwga2hpIMSRw7MgeMOhYyBzdeG6pXQgxJHhu4Mga2jDtG5nIGPDsyB0YWkgbuG6oW4gZ8OieSB04butIHZvbmcgKFwoWSA9IDBcKSkgdHJvbmcgdHXhuqduIGzDoDoNCg0KJCQNClAoWSA9IDApID0gXGZyYWN7ZV57LTJ9ICgyKV4wfXswIX0gPSBlXnstMn0gPSAwLjEzNQ0KJCQNCg0KVMawxqFuZyB04buxOg0KDQokJA0KUChZID0gMSkgPSBcZnJhY3soZV57LTJ9ICgyKV4xKX17MSF9ID0gMmVeey0yfSA9IDAuMjcxDQokJA0KDQpC4bqjbmcgMS4xIGxp4buHdCBrw6ogeMOhYyBzdeG6pXQgdMawxqFuZyDhu6luZyB24bubaSBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nLCB2w6AgaMOsbmggMS4xIG3DtCBwaOG7j25nIGNow7puZy4gTeG6t2MgZMO5IFkgbOG6pXkgdOG6pXQgY+G6oyBjw6FjIGdpw6EgdHLhu4sgXChrXCkgbmd1ecOqbiwga2jDtG5nIMOibSwgbmjGsG5nIHbhu5tpIGtoaSBcKFxsYW1iZGEgPSAyXCkgdGjhu7FjIHThur8gY2hvIHRo4bqleSBi4bqjbmcgMS4xLCBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIGjhuqd1IG5oxrAgdHJvbmcgcGjhuqFtIHZpIHThu6sgMCDEkeG6v24gOC4NCg0KVuG7m2kgZ2nDoSB0cuG7iyBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIHRydW5nIGLDrG5oIGzDoCBraMO0bmcgdGhheSDEkeG7lWkgdOG7qyB0cnVuZyBiw6xuaCA2IHbhu6UgbeG7l2kgdHXhuqduLCB0aMOsIHRyb25nIG3hu5l0IGtob+G6o25nIHRo4budaSBnaWFuIDEgdHXhuqduLCBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIGzDoCBiaeG6v24gbmfhuqt1IG5oacOqbiBjw7MgcGjDom4gcGjhu5FpIFBvaXNzb24gduG7m2kgdHJ1bmcgYsOsbmggbMOgIDJ0LiBWw6wgZOG7ryBsaeG7h3UgxJHGsOG7o2MgZ2hpIGzhuqFpIHRoZW8gdHXhuqduLCBwaMOibiBwaOG7kWkgUG9pc3NvbiBjw7MgXChcbGFtYmRhID0gNlwpLiBYw6FjIHN14bqldCDEkeG7gyBraMO0bmcgY8OzIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyB0csOqbiB0dXnhur9uIMSRxrDhu51uZyBuw6B5IGzDoCBcKFAoWSA9IDYpID0gXGZyYWN7Nl42IGVeey02fX17NiF9ID0gMC4wMDJcKS4gSMOsbmggMS4xIG3DtCBwaOG7j25nIGNobyBwaMOibiBwaOG7kWkgUG9pc3NvbiBjw7MgdHJ1bmcgYsOsbmggbMOgIFwoXGxhbWJkYSA9IDZcKS4NCg0KUGjDom4gcGjhu5FpIFBvaXNzb24gY8OzIGThuqFuZyBcKE4oXG11LCBcc2lnbWFeMilcKSDEkeG7gyBiaeG7g3UgdGjhu4sgdGhhbSBz4buRIFwoXG11LCBcc2lnbWFeMlwpLCBwaMOibiBwaOG7kWkgUG9pc3NvbiBjaOG7iSBjw7MgbeG7mXQgdGhhbSBz4buRIHRydW5nIGLDrG5oIFwoXGxhbWJkYVwpIGPFqW5nIGzDoCBwaMawxqFuZyBzYWkgY+G7p2EgcGjDom4gcGjhu5FpLg0KDQokJA0KRShZKSA9IFZhcihZKSA9IFxsYW1iZGEsIFxxdWFkIFxzaWdtYShZKSA9IFxzcXJ0e1xsYW1iZGF9DQokJA0KDQpIw6xuaCAxLjEgbWluaCBo4buNYSBwaMOibiBwaOG7kWkgUG9pc3NvbiB0cm9uZyBoYWkgdHLGsOG7nW5nIGjhu6NwOiBUcnVuZyBiw6xuaCBi4bqxbmcgMiAoY8OzIMSR4buZIGzhu4djaCBjaHXhuqluIGLhurFuZyBcKFxzcXJ0ezJ9ID0gMS40XCkpIHbDoCB0cnVuZyBiw6xuaCBi4bqxbmcgNiAoY8OzIMSR4buZIGzhu4djaCBjaHXhuqluIGLhurFuZyBcKFxzcXJ0ezZ9ID0gMi40XCkpLiBEbyDEkcOzIHBow6JuIHBo4buRaSBQb2lzc29uIGzDoCBwaMawxqFuZyBzYWkgY+G7p2EgbsOzIHTEg25nIGzDqm4gY8O5bmcgdHJ1bmcgYsOsbmguIFbDrCB0aOG6vyBt4bqrdSBjw7MgeHUgaMaw4bubbmcgdGhheSDEkeG7lWkgbmhp4buBdSBoxqFuIGtoaSBt4bupYyB0cnVuZyBiw6xuaCBj4bunYSBwaMOibiBwaOG7kWkgUG9pc3NvbiB0xINuZyBsw6puLiBMxrB1IMO9IGzDoCBwaMawxqFuZyBzYWkgYuG6sW5nIHRydW5nIGLDrG5oLCBwaMOibiBwaOG7kWkgUG9pc3NvbiBjw7MgxJHhu5kgbOG7h2NoIGNodeG6qW4gdMSDbmcgbMOqbiBraGkgdMSDbmcgc+G7kSB24bulIHRhaSBu4bqhbiB0cnVuZyBiw6xuaCB2w6AgZG8gxJHDsyBsw6AgdMOtbmggY2jhuqV0IGPhu6dhIG3huqt1IHRyb25nIHBow6JuIHBo4buRaSBjaHXhuqluLg0KDQpHaeG6oyBz4butIG5nxrDhu51pIHRhIG114buRbiBiaeG6v3QgeMOhYyBzdeG6pXQgc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmgsIHRyb25nIGLhuqV0IGvhu7MgMiB0deG6p24gbsOgbyDEkcOzIHRoZW8gcGjDom4gcGjhu5FpIFBvaXNzb24uIEhp4buHbiB0xrDhu6NuZyBuw6B5IGfhu41pIGzDoCBxdcOhIHBow6JuIHTDoW4uIFbDrCBk4buvIGPhu6dhIGNow7puZyB0YSBnaeG6oyDEkeG7i25oIHLhurFuZyBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIGThu7Ega2nhur9uIGzDoCBuaMawIG5oYXUgKGPhu6UgdGjhu4MgbMOgIDIpIHbDoG8gbeG7l2kgdHXhuqduIHRyb25nIG7Eg20uIFR1eSBuaGnDqm4sIGdpYW8gdGjDtG5nIGPDsyBuaOG7r25nIGJp4bq/biDEkeG7mW5nIHRoZW8gbcO5YSxjw7MgdGjhu4MgdOG6oW8gcmEgYmnhur9uIMSR4buZbmcgdHJvbmcgdHXhuqduIHRoZW8ga+G7syB24buNbmcgbsOgeS4NCg0KIyMgYi4gTOG6pXkgbeG6q3Ugbmjhu4sgdGjhu6ljDQoNClRyb25nIHbDrSBk4bulIHbhu4Egc+G7kSBjYSB04butIHZvbmcgZG8gZ2lhbyB0aMO0bmcsIHbhu5tpIG3DtCBow6xuaCBs4bqleSBt4bqrdSBQb2lzc29uIHRow6wgc+G7kSB24bulIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyBow6BuZyB0deG6p24gbMOgIG5n4bqrdSBuaGnDqm4sIG5oxrAga2jDtG5nIHBo4bqjaSBj4buRIMSR4buLbmggdsOgIGtow7RuZyBzYWkgduG7iyB0csOtIG7hurFtIG5nYW5nLCB04bupYyBsw6AgdOG7rSB2b25nIG7DoHkga2jDtG5nIHBo4bulIHRodeG7mWMgdsOgbyB04butIHZvbmcga2jDoWMuIELDonkgZ2nhu50gxJHhu4MgeMOhYyDEkeG7i25oIHThu7cgbOG7hyB04butIHZvbmcgaMOgbmcgdHXhuqduIHAsIHThu6ljIGzDoCB4w6FjIHN14bqldCDEkeG7gyBt4buZdCB24bulIHRhaSBu4bqhbiB0csOqbiB0dXnhur9uIMSRxrDhu51uZyBuw6B5IGfDonkgdOG7rSB2b25nLCBjaMO6bmcgdGEgY+G6p24gY8OzIHRow7RuZyB0aW4gYuG7lSBzdW5nIHbhu4Egc+G7kSB0YWkgbuG6oW4geOG6o3kgcmEgdHJvbmcgdHXhuqduIMSRw7MuIE7hur91IGPDsyBt4bqrdSBsw6AgdsO0IGjhuqFuIHbDoCBi4bqxbmcgTiwgbmjGsCBjaOG7jW4ga2jDtG5nIHBo4bqjaSBuZ+G6q3Ugbmhpw6puLiBLaGkgxJHDsyBu4bq/dSBn4buNaSBZIGzDoCBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIHRyb25nIE4gduG7pSB0YWkgbuG6oW4ga2jDtG5nIGfDonkgdOG7rSB2b25nLCB0aMOsIFkgfiBOIC0gc+G7kSB24bulIHRhaSBu4bqhbiAoU+G7kSB24bulIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZykuIFRhIGPDsyBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puIGPDsyBwaMOibiBwaOG7kWkgTmjhu4sgdGjhu6ljIEIoTiwgcCkgdsOgIEIoTiwgMS1wKSB0xrDGoW5nIOG7qW5nLg0KDQrEkOG7gyBtaW5oIGjhu41hLCBnaeG6oyBz4butIHPhu5EgbMaw4bujbmcgY8OhYyB0YWkgbuG6oW4gZ8OieSB04butIHZvbmcgMTAgduG7pSB0YWkgbuG6oW4sIGPDsyBwaMOibiBwaOG7kWkgUG9pc3NvbiB24bubaSBnacOhIHRy4buLIHRydW5nIGLDrG5oIGzDoCAyLyB2w6Agc+G7kSB24bulIHRhaSBu4bqhbiBraMO0bmcgZ8OieSB04butIHZvbmcgY8OzIHBow6JuIHBo4buRaSBQb2lzc29uIHbhu5tpIHRydW5nIGLDrG5oIGzDoCA4Ly4gQ8OhYyBuaMOgIG5naGnDqm4gY+G7qXUgcXVhbiBzw6F0IHPhu5EgdOG7lW5nIHPhu5EgdGFpIG7huqFuIE4gdsOgIHPhu5EgbMaw4bujbmcgcXXDoSB0csOsbmggcXVhbiBzw6F0LiBT4buRIGzGsOG7o25nIFkgY8OhYyB24bulIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyB2w6Agc+G7kSBsxrDhu6NuZyBOIC0gWSB24bulIHRhaSBu4bqhbiBraMO0bmcgZ8OieSB04butIHZvbmcgdHJvbmcgTiB24bulIHRhaSBu4bqhbiBjw7MgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYy4gU+G7kSBsxrDhu6NuZyBjw6FjIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyBjw7MgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB24bubaSBOIHbDoCB04bu3IGzhu4cgdOG7rSB2b25nIFAgPSAyLygyKzgpID0gMi8xMCwgxJHDsyBsw6AgeMOhYyBzdeG6pXQgYuG6r3Qga+G7syB0YWkgbuG6oW4geOG6o3kgcmEgZ8OieSB04butIHZvbmcuIFjDoWMgc3XhuqV0IG7DoHkgYuG6sW5nIHRydW5nIGLDrG5oIFBvaXNzb24gxJHhu5FpIHbhu5tpIGPDoWMgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIGNoaWEgY2hvIHThu5VuZyBj4buZbmcgdHJ1bmcgYsOsbmggUG9pc3NvbiDEkeG7kWkgduG7m2kgY8OhYyB0YWkgbuG6oW4gZ8OieSB04butIHZvbmcgdsOgIGtow7RuZyBnw6J5IHThu60gdm9uZy4gU+G7kSBsxrDhu6NuZyB0YWkgbuG6oW4ga2jDtG5nIGfDonkgdOG7rSB2b25nIGLhurFuZyAoTiAtIHPhu5EgduG7pSB0YWkgbuG6oW4gZ8OieSB04butIHZvbmcpIHbDoCBjw7MgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB24bubaSBOIHbhu6UgdGFpIG7huqFuIHbDoCB0aGFtIHPhu5EgMC44Lg0KDQpW4bqteSBwIGJp4buDdSB0aOG7iyB4w6FjIHN14bqldCB0aMOgbmggY8O0bmcgY2hvIG3hu5l0IHRo4butIG5naGnhu4dtIG5o4bqldCDEkeG7i25oLiBZIGJp4buDdSB0aOG7iyBz4buRIGzGsOG7o25nIHRow6BuaCBjw7RuZyB0cm9uZyBz4buRIE4gdGjhu60gbmdoaeG7h20uIFPhu7EgdGhheSDEkeG7lWkgY+G7p2EgWSBjw7MgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB24bubaSBOIHRo4butIG5naGnhu4dtIE4gdsOgIHRoYW0gc+G7kSBwLg0KDQpcWw0KUChZID0gaykgPSBcZnJhY3tOIX17ayEoTi1rKSF9IHBeayAoMS1wKV57Ti1rfSwgXHF1YWQgayA9IDAsMSwyLFxsZG90cyxOIFxxdWFkICgxLjIuMikNClxdDQoNCsSQ4buDIG1pbmggaOG7jWEsIGNobyBZIGJp4buDdSB0aOG7iyBz4buRIHbhu6UgdGFpIG7huqFuIGNo4bq/dCBuZ8aw4budaSB0cm9uZyAxMCB24bulIHRhaSBu4bqhbiwgeMOhYyBzdeG6pXQgdOG7rSB2b25nIGzDoCAwLjIgY2hvIG3hu5dpIHRhaSBu4bqhbjsga2hpIMSRw7MgTiA9IDEwIHbDoCBwID0gMC4yLiBYw6FjIHN14bqldCBraMO0bmcgY8OzIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyAoWSA9IDApLCB2w6AgZG8gxJHDsyBOIC0gWSA9IDEwIHRhaSBu4bqhbiBraMO0bmcgZ8OieSB04butIHZvbmcsIGLhurFuZw0KDQpcWw0KUChZID0gMCkgPSBcZnJhY3sxMCF9ezAhMTAhfSAoMC4yKV4wICgwLjgpXnsxMH0gPSAwLjheezEwfSA9IDAuMTA3Ow0KXF0NCg0KWMOhYyBzdeG6pXQgxJHhu4MgY8OzIMSRw7puZyAxIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyBi4bqxbmcNCg0KXFsNClAoWSA9IDEpID0gXGZyYWN7MTAhfXsxITkhfSAoMC4yKV4xICgwLjgpXjkgPSAxMCgwLjIpKDAuOCleOSA9IDAuMjY4Lg0KXF0NCg0KXFsNClx0ZXh0e0LhuqNuZyAxLjEgbGnhu4d0IGvDqiB0b8OgbiBi4buZIHBow6JuIHBo4buRaS59DQpcXQ0KDQpQaMOibiBwaOG7kWkgbmjhu4sgdGjhu6ljIGNobyBOIHRo4butIG5naGnhu4dtIHbhu5tpIHRoYW0gc+G7kSBwIGPDsyB0cnVuZyBiw6xuaCB2w6AgcGjGsMahbmcgc2FpLg0KS2jDtG5nIGdp4buRbmcgbmjGsCBwaMawxqFuZyBzYWkgY+G7p2EgcGjDom4gcGjhu5FpIFBvaXNzb24sIHBoxrDGoW5nIHNhaSBj4bunYSBwaMOibiBwaOG7kWkgbmjhu4sgdGjhu6ljIG5o4buPIGjGoW4gZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaC4gUGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB0cm9uZyBC4bqjbmcgMS4xIGPDsyB0cnVuZyBiw6xuaCBsw6AgMTAgKDAuMikgPSAyLjAgdsOgIMSR4buZIGzhu4djaCBsw6AgXChcc3FydHsxMCAoMC4yKSAoMC44KX1cKSA9IDEuNi4gR2nDoSB0cuG7iyB0cnVuZyBiw6xuaCB0aMOsIHTGsMahbmcgxJHGsMahbmcgbmjGsCB0cnVuZyBiw6xuaCBQb2lzc29uIHRyb25nIELhuqNuZyAxLjEsIG5oxrBuZyBuaOG7iyB0aOG7qWMgYmnhu4N1IGhp4buHbiDDrXQgaMahbiBt4buZdCBjaMO6dC4gQ+G6oyBoYWkgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB2w6AgUG9pc3NvbiDEkeG7gXUgdHXDom4gdGhlbyBwaMOibiBi4buRIGNodeG6qW4ga2hpIHTEg25nIHRydW5nIGLDrG5oIGPhu6dhIGNow7puZywgdsOgIGtoaSB0cnVuZyBiw6xuaCBs4bubbiB0aMOsIGNow7puZyB0aMaw4budbmcgeOG6pXAgeOG7iSBi4bqxbmcgcGjDom4gcGjhu5FpIGNodeG6qW4uDQoNClTDuXkgdsOgbyBt4bulYyDEkcOtY2gga2jhuqNvIHPDoXQsIG5naGnDqm4gY+G7qXUgbcOgIMSR4buRaSB24bubaSBt4buZdCBiaeG6v24gxJHhu4tuaCB0w61uaCwgbmfGsOG7nWkgdGEgY8OzIHRo4buDIHBow6JuIGJp4buHdCBnacOhIHRy4buLIGPhu6dhIG7DsyB0aMOgbmggbmhp4buBdSBoxqFuIGhhaSBsb+G6oWkuIENo4bqzbmcgaOG6oW4sIG5nxrDhu51pIHRhIGPDsyB0aOG7gyBraOG6o28gc8OhdCBjaGkgdGnhur90IGjGoW4gdHJvbmcgbeG7l2kgduG7pSB0YWkgbuG6oW4gZ2lhbyB0aMO0bmcgduG7m2kgY8OhYyBsb+G6oWkgIktow7RuZyBi4buLIHRoxrDGoW5nIiwgInRoxrDGoW5nIHTDrWNoIGtow7RuZyBj4bqnbiBwaOG6o2kgbuG6sW0gdmnhu4duIiwgInRoxrDGoW5nIHTDrWNoIGPhuqduIHBo4bqjaSBu4bqxbSB2aeG7h24iLCAidOG7rSB2b25nIi4gQ8OhYyBz4buRIMSR4bq/bSB0cm9uZyBjw6FjIGxv4bqhaSBraMOhYyBuaGF1IG7DoHkgdMawxqFuZyDhu6luZyB24bubaSBuaOG7r25nIHBow6JuIHBo4buRaSBuaOG7iyB0aOG7qWMgY8OzIHThu7cgbOG7hyBwIGtow6FjIG5oYXUuIFBow6JuIHBo4buRaSBuaOG7iyB0aOG7qWMgbOG6pXkgbeG6q3UgY2hvIHBow6JuIHBo4buRaSDEkWEgdGjhu6ljIGfhu41pIGzDoCBs4bqleSBt4bqrdSBQb2lzc29uLiBQaMOibiBwaOG7kWkgbmjhu4sgdGjhu6ljLCB0cm9uZyB0csaw4budbmcgaOG7o3AgbsOgeSBsw6AgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYywga2hpIGNo4buJIGPDsyBoYWkga+G6v3QgcXXhuqMgY8OzIHRo4buDIGNobyBt4buXaSB0aOG7rSBuZ2hp4buHbS4gQ2jDum5nIHRhIHPhur0gxJHhu4EgY+G6rXAgxJHhur9uIHBow6JuIHBo4buRaSDEkWEgdGjhu6ljIGNobyBtw7QgaMOsbmggY8OhYyBiaeG6v24gxJHDoXAg4bupbmcgxJFhIGxv4bqhaS4NCg0KXFsNClAoWSA9IGspID0gDQpcXQ0KDQpcWw0KXGJlZ2lue2FycmF5fXtjfGNjfQ0KWSAmIFx0ZXh0e1BvaXNzb259ICYgXHRleHR7Tmjhu4sgdGjhu6ljfSBcXA0KXGhsaW5lDQowICYgMC4xMzUgJiAwLjEwNyBcXA0KMSAmIDAuMjcxICYgMC4yNjggXFwNCjIgJiAwLjI3MSAmIDAuMzAyIFxcDQozICYgMC4xODAgJiAwLjIwMSBcXA0KNCAmIDAuMDkwICYgMC4wODggXFwNCjUgJiAwLjAzNiAmIDAuMDI2IFxcDQo2ICYgMC4wMTIgJiAwLjAwNiBcXA0KNyAmIDAuMDAzICYgMC4wMDEgXFwNCjggJiAwLjAwMSAmIDAuMDAwIFxcDQo5ICYgMC4wMDAgJiAwLjAwMCBcXA0KMTAgJiAwLjAwMCAmIDAuMDAwIFxcDQo+MTEgJiAwLjAwMCAmIDAuMDAwIFxcDQpcZW5ke2FycmF5fQ0KXF0NCg0KXFsNClx0ZXh0e0LhuqNuZyAxLjE6IFBow6JuIHBo4buRaSB4w6FjIHN14bqldCBz4buRIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyB0cm9uZyBt4buZdCB0deG6p24gdGhlbyBjw6FjIG3DtCBow6xuaCBuaMawIGzDoDogUG9pc3NvbiB24bubaSB0cnVuZyBiw6xuaCBsw6AgMi4wfSBcXA0KXHRleHR7KENow7ogw706IE5o4buLIHRo4bupYyBjw7MgTiA9IDEwIHbDoCBwID0gMC4yKX0NClxdDQpgYGB7cn0NCiMgTG9hZCBuZWNlc3NhcnkgbGlicmFyeQ0KbGlicmFyeShnZ3Bsb3QyKQ0KDQojIENyZWF0ZSBkYXRhIGZvciBtZWFuID0gMg0KeF9jb21iaW5lZCA8LSAwOjE5DQptdTEgPC0gMg0KbXUyIDwtIDYNCnkxIDwtIGRwb2lzKHhfY29tYmluZWQsIG11MSkNCnkyIDwtIGRwb2lzKHhfY29tYmluZWQsIG11MikNCmRhdGFfY29tYmluZWQgPC0gZGF0YS5mcmFtZSgNCiAgeCA9IHJlcCh4X2NvbWJpbmVkLCAyKSwNCiAgeSA9IGMoeTEsIHkyKSwNCiAgZ3JvdXAgPSBmYWN0b3IocmVwKGMoIk1lYW4gPSAyIiwgIk1lYW4gPSA2IiksIGVhY2ggPSBsZW5ndGgoeF9jb21iaW5lZCkpKQ0KKQ0KDQojIFBsb3QgdGhlIGNvbWJpbmVkIFBvaXNzb24gZGlzdHJpYnV0aW9ucw0KZ2dwbG90KGRhdGFfY29tYmluZWQsIGFlcyh4ID0geCwgeSA9IHksIGNvbG9yID0gZ3JvdXApKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdlb21fbGluZSgpICsNCiAgZ2d0aXRsZSgiUG9pc3NvbiBEaXN0cmlidXRpb24gKE1lYW4gPSAyIGFuZCBNZWFuID0gNikiKSArDQogIHhsYWIoIk51bWJlciBvZiBFdmVudHMiKSArDQogIHlsYWIoIlByb2JhYmlsaXR5IikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiTWVhbiA9IDIiID0gImJsdWUiLCAiTWVhbiA9IDYiID0gImdyZWVuIikpDQoNCg0KYGBgDQoNCiFbSMOsbmggMS4xOiBQaMOibiBwaOG7kWkgUG9pc3NvbiBjw7MgdHJ1bmcgYsOsbmggMiB2w6AgNi5dDQoNCiMgMS40IMav4bubYyBsxrDhu6NuZyBo4bujcCBsw70gY+G7sWMgxJHhuqFpIChNYXhpbXVtIGxpa2VsaWhvb2QgZXN0aW1hdGlvbikNCg0KIyMgMS40LjEuIEPDoWMga2jDoWkgbmnhu4dtIHbhu4EgxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBj4buxYyDEkeG6oWkNCg0KR2nhuqMgc+G7rSBiaeG6v24gcXVhbiBzw6F0ICRYJCBjw7MgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IHBo4bulIHRodeG7mWMgdsOgbyB0aGFtIHPhu5EgJFx0aGV0YSQgY2jGsGEgYmnhur90LCB0YSBj4bqnbiB0w6xtIMaw4bubYyBsxrDhu6NuZyBjaG8gJFx0aGV0YSQuIFbhu5tpICRXX24gPSAoWF8xLCBYXzIsIC4uLiwgWF9uKSQgbMOgIG3huqt1IG5n4bqrdSBuaGnDqm4gY+G7p2EgYmnhur9uIHF1YW4gc8OhdCAkWCQuDQoNCkvDvSBoaeG7h3UgJHEoeCwgXHRoZXRhKSQgbMOgIHjDoWMgc3XhuqV0IMSR4buDICRXX24gPSAoWF8xLCBYXzIsIC4uLiwgWF9uKSQgbmjhuq1uIGdpw6EgdHLhu4sgJHggPSAoeF8xLCB4XzIsIC4uLiwgeF9uKSQ7ICRxKHg7IFx0aGV0YSkgPSBQKFhfMSA9IHhfMSwgWF8yID0geF8yLCAuLi4sIFhfbiA9IHhfbikgPSBQKFdfbiA9IHgpJC4gTuG6v3UgJFhfaSQgYmnhur9uIG5n4bqrdSBuaGnDqm4gcuG7nWkgcuG6oWMsIHbDoCAkcSh4LCBcdGhldGEpJCBsw6AgZ2nDoSB0cuG7iyBow6BtIG3huq10IMSR4buZIHjDoWMgc3XhuqV0IGPhu6dhICRYJCB0aMOsICRxKHgsIFx0aGV0YSkkIGzDoCBnacOhIHRy4buLIGjDoG0gbeG6rXQgxJHhu5kgeMOhYyBzdeG6pXQgdOG6oWkgJHgkIGPhu6dhICRXX24gPSAoWF8xLCBYXzIsIC4uLiwgWF9uKSQgdOG6oWkgJFhfaSQgbMOgIGJp4bq/biBuZ+G6q3Ugbmhpw6puIGxpw6puIHThu6VjLg0KDQpYdeG6pXQgcGjDoXQgdOG7qyDDvSB0xrDhu59uZzogImPDoWkgxJHDoyB44bqjeSByYSBwaOG6o2kgbMOgIGPDoWkgY8OzIGto4bqjIG7Eg25nIG5o4bqldCIsIG5nxrDhu51pIHRhIHhlbSBnacOhIHRy4buLIMaw4bubYyBsxrDhu6NuZyBo4bujcCBsw70gbmjhuqV0IGNobyB0aGFtIHPhu5EgJFx0aGV0YSQgbMOgIGdpw6EgdHLhu4sgJFx0aGV0YSQgbMOgbSBjaG8gZ2nDoSB0cuG7iyAkcSh4LCBcdGhldGEpJCDEkeG6oXQgY+G7sWMgxJHhuqFpLg0KDQogxJDhu4tuaCBuZ2jEqWEgMS4xOg0KDQpUYSBn4buNaSBow6BtICRMKFx0aGV0YSkgPSBxKFhfMSwgWF8yLCAuLi4sIFhfbiwgXHRoZXRhKSQgbMOgIGjDoG0gaOG7o3AgbMO9IHbDoCBnacOhIHRy4buLIGPhu7FjIMSR4bqhaSBow6BtIGjhu6NwIGzDvSDEkcOzIGzDoCDGsOG7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSAkXGhhdHtcdGhldGF9JCBj4bunYSB0aGFtIHPhu5EgJFx0aGV0YSQsIHThu6ljIGzDoDoNCg0KJCQNCkwoXGhhdHtcdGhldGF9KSA9IHEoWF8xLCBYXzIsIC4uLiwgWF9uLCBcaGF0e1x0aGV0YX0pID0gXG1heF97XHRoZXRhfSBxKFhfMSwgWF8yLCAuLi4sIFhfbiwgXHRoZXRhKQ0KJCQNCg0KIyMgMS40LjIuIFBoxrDGoW5nIHBow6FwIHTDrG0gxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBj4buxYyDEkeG6oWkNCg0KVsOsIGjDoG0gaOG7o3AgbMO9ICRMKFx0aGV0YSkkIOG7nyBk4bqhbmcgdMOtY2ggY+G7p2EgY8OhYyB0aOG7q2Egc+G7kSBjaOG7qWEgJFx0aGV0YSQsIG7Dqm4gdmnhu4djIGto4bqjbyBzw6F0IGPhu7FjIHRy4buLIGPhu6dhIG7DsyBsw6Aga2jDoSBwaOG7qWMgdOG6oXAsIG3hurd0IGtow6FjIG7hur91IGzhuqV5IGxvZ2FyaXRoIGPhu6dhIGjDoG0gbsOgeSB0aMOsIGThuqFuZyBow6BtIHPhur0gY2h1eeG7g24gc2FuZyBk4bqhbmcgdOG7lW5nIHbDoCBow6BtIGxvZ2FyaXRoYyBjw7Mgc+G7sSDEkcahbiDEkWnhu4d1IHTEg25nLCBuw6puIHRoYXkgdsOsIGto4bqjbyBzw6F0IGPhu7FjIHRy4buLIGPhu6dhIGjDoG0gaOG7o3AgbMO9ICRMKFx0aGV0YSkkIHRhIMSRxqFuIGdp4bqjbiBoxqFuLCBuZ8aw4budaSB0YSBraOG6o28gc8OhdCBj4buxYyB0cuG7iyBj4bunYSBsb2dhcml0aCBj4bunYSBow6BtIG7DoHk6IA0KDQokJA0KbChcdGhldGEpID0gXGxuIEwoXHRoZXRhKQ0KJCQNCg0KdsOgIGtoaSDEkcOzDQoNCiQkDQpMKFxoYXR7XHRoZXRhfSkgXHJpZ2h0YXJyb3cgXG1heA0KJCQNCg0KdGjDrA0KDQokJA0KbChcaGF0e1x0aGV0YX0pIFxyaWdodGFycm93IFxtYXgNCiQkDQoNCk5oxrAgduG6rXkgxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBuaOG6pXQgY2hvICRcdGhldGEkIGzDoCBuZ2hp4buHbSBj4bunYSBwaMawxqFuZyB0csOsbmg6DQoNCiQkDQpcZnJhY3tkIGwoXHRoZXRhKX17ZCBcdGhldGF9ID0gMA0KXHRhZ3sxLjQuMX0NCiQkDQoNClBoxrDGoW5nIHRyw6xuaCAoMS40LjEpIGfhu41pIGzDoCBwaMawxqFuZyB0csOsbmggaOG7o3AgbMO9Lg0KDQpUw7NtIGzhuqFpOiDEkOG7gyB0w6xtIMaw4bubYyBsxrDhu6NuZyBo4bujcCBsw70gY+G7sWMgxJHhuqFpIGNobyB0aGFtIHPhu5EgJFx0aGV0YSQsIHRhIHRp4bq/biBow6BuaCBraOG6o28gc8OhdCBj4buxYyB0cuG7iyBj4bunYSBow6BtICRsKFx0aGV0YSkgPSBcbG4gTChcdGhldGEpJCBi4bqxbmcgY8OhY2ggZ2nhuqNpIHBoxrDGoW5nIHRyw6xuaCBo4bujcCBsw70gxJHhu4MgdMOsbSDEkWnhu4NtIGThu6tuZyBj4bunYSB0aOG7kW5nIGvDqiBiaeG6v24gdGhpw6puIGPhu6dhIGjDoG0gJGwoXHRoZXRhKSA9IFxsbiBMKFx0aGV0YSkkIHbDoCBzdXkgcmEgxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBj4buxYyDEkeG6oWkuDQoNCiBDaMO6IMO9Og0KDQotIEPDsyB0aOG7gyB0aGF5IGjDoG0gaOG7o3AgbMO9ICRxKHgsIFx0aGV0YSkkIHThu6sgcGjDom4gcGjhu5FpIGPhu6dhIG3huqt1ICQoWF8xLCBYXzIsIC4uLiwgWF9uKSQgYuG7n2kgJHFeKih4LCBcdGhldGEpJCBsw6AgcGjDom4gcGjhu5FpIGPhu6dhIHThu5VuZyBjw6FjIHRow6BuaCBwaOG6p24gY+G7p2EgbeG6q3UgJFUgPSBYXzEgKyBYXzIgKyAuLi4gKyBYX24kLg0KLSDGr+G7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSDEkcaw4bujYyB2aeG6v3QgdOG6r3QgbMOgIMaw4bubYyBsxrDhu6NuZyBNTCwgxrDhu5tjIGzGsOG7o25nIE1MIGPhu6dhICRcdGhldGEkIHRoxrDhu51uZyDEkcaw4bujYyBrw70gaGnhu4d1IGzDoCAkXGhhdHtcdGhldGF9JC4NCi0gTuG6v3UgY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiB0cm9uZyBt4bqrdSBsw6AgxJHhu5ljIGzhuq1wLCB0aMOsIGjDoG0gaOG7o3AgbMO9IGLhurFuZyB0w61jaCBjw6FjIGjDoG0gbeG6rXQgxJHhu5kgeMOhYyBzdeG6pXQgxJHDoyBjaG8uIE5nb8OgaSByYSwgcGjGsMahbmcgcGjDoXAgbeG6q3UgbOG7m24gY+G7p2EgxrDhu5tjIGzGsOG7o25nIE1MIGzDoCB44bqlcCB44buJIHBow6JuIHBo4buRaSBjaHXhuqluLiBU4bqldCBj4bqjIGPDoWMgxrDhu5tjIGzGsOG7o25nIMSRxrDhu6NjIHRyw6xuaCBiw6B5IHRyb25nIHTDoGkgbGnhu4d1IHPhu60gZOG7pW5nIHBoxrDGoW5nIHBow6FwIG7DoHkuDQogVsOtIGThu6UgbWluaCBo4buNYQ0KDQogQsOgaSB0b8OhbiAxOiANCg0KVMOsbSDGsOG7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSBjaG8geMOhYyBzdeG6pXQgdGjDoG5oIGPDtG5nICRwID0gUChBKSQgaGF5IGzDoCB04bu3IGzhu4cgdMOtbmggY2jhuqV0IEEgdHJvbmcgdOG7lW5nIHRo4buDLg0KDQpHaeG6o2k6DQoNClRyb25nIG3hu5l0IHBow6lwIHRo4butIMSR4buDIHF1YW4gc8OhdCBBLCDEkeG6t3Q6DQoNCiQkDQpYID0NClxiZWdpbntjYXNlc30gDQoxICYgXHRleHR7buG6v3UgQSB4deG6pXQgaGnhu4dufSBcXA0KMCAmIFx0ZXh0e27hur91IEEga2jDtG5nIHh14bqldCBoaeG7h259IA0KXGVuZHtjYXNlc30NCiQkDQoNCnRow6wgJFgkIGPDsyBwaMOibiBwaOG7kWkgTmjhu4sgdGjhu6ljICRCKDEsIHApJCAoaGF5IHBow6JuIHBo4buRaSAwLTEsIHRoYW0gc+G7kSBwKSAobMOgIGJp4bq/biBy4budaSBy4bqhYyksIHRoYW0gc+G7kSBj4bqnbiDGsOG7m2MgbMaw4bujbmcgbMOgICRcdGhldGEgPSBwJCwgbeG6q3Ugbmfhuqt1IG5oacOqbiAkV19uID0gKFhfMSwgWF8yLCAuLi4sIFhfbikkIHbDoCBiaeG6v24gcXVhbiBzw6F0ICRYJCBiYW8gZ+G7k20gY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiAkWF8xLCBYXzIsIC4uLiwgWF9uJCDEkeG7mWMgbOG6rXAsIGPDuW5nIHBow6JuIHBo4buRaSAkQigxLCBwKSQuIEPDsyBow6BtIGjhu6NwIGzDvSBsw6A6DQoNCiQkDQpMKHApID0gcShYXzEsIHApIHEoWF8yLCBwKSAuLi4gcShYX24sIHApID0gXHByb2Rfe2s9MX1ebiBwXnt4X2t9KDEgLSBwKV57MSAtIHhfa30NCiQkDQoNClbDrCB24bqteToNCg0KJCQNCmwocCkgPSBcbG4gTChwKSA9IFxzdW1fe2s9MX1ebiBbKFhfayBcbG4gcCArICgxIC0gWF9rKSBcbG4gKDEgLSBwKSldDQokJA0KDQpQaMawxqFuZyB0csOsbmggaOG7o3AgbMO9IGzDoDoNCg0KJCQNClxmcmFje2RsKHApfXtkcH0gPSAwIFxSaWdodGFycm93IFxmcmFjezF9e3B9IFxzdW1fe2s9MX1ebiBYX2sgLSBcZnJhY3sxfXsxIC0gcH0gXHN1bV97az0xfV5uICgxIC0gWF9rKSA9IDAgXFJpZ2h0YXJyb3cgXGZyYWN7MX17cH0gXHN1bV97az0xfV5uIFhfayAtIFxmcmFje24gLSBcc3VtX3trPTF9Xm4gWF9rfXsxIC0gcH0gPSAwIFxSaWdodGFycm93IFxmcmFjezF9e3B9IFxzdW1fe2s9MX1ebiBYX2sgLSBcZnJhY3tuIHB9ezEgLSBwfSA9IDANCiQkDQoNClBoxrDGoW5nIHRyw6xuaCBuw6B5IGPDsyBuZ2hp4buHbSBkdXkgbmjhuqV0Og0KDQokJA0KXGhhdHtwfSA9IFxmcmFjezF9e259IFxzdW1fe2s9MX1ebiBYX2sgPSBmKEEpDQokJA0KDQp0cm9uZyDEkcOzIGzGsHUgw70gcuG6sW5nICRtKEEpID0gXHN1bV97az0xfV5uIFhfayQgbMOgIHPhu5EgdGjDoG5oIGPDtG5nIHRyb25nIG4gbOG6p24gdGjhu60gdsOgICRmKEEpID0gXGZyYWN7bShBKX17bn0kIGNow61uaCBsw6AgdOG6p24gc3XhuqV0IG3huqt1IGPhu6dhIEEuIFbDrCB04bqhaSAkcCA9IFxoYXR7cH0gPSBcZnJhY3sxfXtufSBcc3VtX3trPTF9Xm4gWF9rID0gZihBKSQsIGPDszoNCg0KJCQNClxmcmFje2ReMiBsKFxoYXR7cH0pfXtkIHBeMn0gPSAtIFxmcmFjezF9e3BeMn0gXHN1bV97az0xfV5uIFhfayAtIFxmcmFjezF9eygxIC0gcCleMn0gXHN1bV97az0xfV5uICgxIC0gWF9rKSA8IDANCiQkDQoNCm7Dqm4gaMOgbSAkbChwKSQgdsOgIGRvIMSRw7MgaMOgbSBo4bujcCBsw70gJEwocCkkIMSR4bqhdCBj4buxYyDEkeG6oWkgZHV5IG5o4bqldCB04bqhaSAkcCA9IFxoYXR7cH0gPSBmKEEpJCwgdOG7qWMgbMOgICRMKHApJCDEkeG6oXQgdHLhu4sgbOG7m24gbmjhuqV0IHThuqFpICRcaGF0e3B9JC4gVMOzbSBs4bqhaSDGsOG7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSBj4bunYSB04bu3IGzhu4cgJHAgPSBQKEEpJCBjaMOtbmggbMOgIHThuqduIHN14bqldCBt4bqrdSBj4bunYSBBIGhheSB04bu3IGzhu4cgdMOtbmggY2jhuqV0IEEgdHLDqm4gbeG6q3UuDQoNCkNow7ogw706DQoNCsSQ4buRaSB24bubaSBiw6BpIHRvw6FuIDEsIG5nxrDhu51pIHRhIGPDsyB0aOG7gyBnaeG6o2kgcXV54bq/dCB0aGVvIGPDoWNoIHRo4bupIGhhaSBuaMawIHNhdTogVGhlbyDDvSB0xrDhu59uZyBj4bunYSBwaMawxqFuZyBwaMOhcCBo4bujcCBsw70gY+G7sWMgxJHhuqFpOiAiY8OhaSDEkcOjIHjhuqN5IHJhIHBo4bqjaSBsw6AgY8OhaSBjw7Mga2jhuqMgbsSDbmcgbmjhuqV0IiwgdOG7qyBt4bqrdSAkV19uID0gKFhfMSwgWF8yLCAuLi4sIFhfbikkIHNpbmggcmEgYmnhur9uIG5n4bqrdSBuaGnDqm4gJFkgPSBYXzEgKyBYXzIgKyAuLi4gKyBYX24kIChz4buRIHRow6BuaCBjw7RuZyBoYXkgc+G7kSBs4bqnbiB4deG6pXQgaGnhu4duIGJp4bq/biBj4buRIEEgdHJvbmcgbiBs4bqnbiB0aOG7rSkgY8OzIHBow6JuIHBo4buRaSBOaOG7iyB0aOG7qWMgJEIobiwgcCkkIHbDoCBjw7MgeMOhYyBzdeG6pXQ6DQoNCiQkDQpQKFkgPSB5KSA9IFAoWSA9IHkpID0gQ19uXnkgcF55ICgxIC0gcClee24gLSB5fSwgeSA9IDAsIDEsIC4uLiwgbg0KJCQNCg0KVsOsIHRo4bq/IMaw4bubYyBsxrDhu6NuZyBo4bujcCBsw70gY2hvIHAgxJHGsOG7o2MgY29pIGzDoCBo4bujcCBuaOG6pXQgbuG6v3UgdOG6oWkgJHAgPSBcaGF0e3B9JCwgJFAoWSA9IHkpID0gQ19uXnkgcF55ICgxIC0gcClee24gLSB5fSQgxJHhuqF0IHRy4buLIGzhu5tuIG5o4bqldCwgdsOgIGtoaSDEkcOzIGjDoG0gJEwocCkgPSBccHJvZF97az0xfV5uIHBee3hfa30gKDEgLSBwKV57MSAtIHhfa30kIHRyb25nIMSR4buLbmggbmdoxKlhIHbhu5tpIGLDoGkgdG/DoW4gbsOgeSwgbmfGsOG7nWkgdGEgY29pIGjDoG0gJFAoWSwgcCkgPSBDX25eeSBwXnkgKDEgLSBwKV57biAtIHl9JCBsw6AgaMOgbSBo4bujcCBsw70gdsOgIHBoxrDGoW5nIHRyw6xuaCBo4bujcCBsw706DQpgYGANCg==