LỜI CẢM ƠN

   Em xin gửi lời cảm ơn chân thành đến thầy Trần Mạnh Tường đã hướng dẫn, hỗ trợ cho em trong suốt quá trình học tập và thực hiện bài tiểu luận này.

Vì kiến thức bản thân còn nhiều hạn chế nên không thể tránh khỏi những sai sót nên em rất mong nhận được những góp ý từ thầy cũng như các bạn để có thể hoàn thiện hơn kiến thức của mình.Một lần nữa, em xin chân thành cảm ơn!

CHƯƠNG 1. GIỚI THIỆU VỀ NGHIÊN CỨU

1.1. LÝ DO CHỌN ĐỀ TÀI

   Chỉ số VN30 là một chỉ số quan trọng của thị trường chứng khoán Việt Nam, đại diện cho 30 công ty có vốn hóa thị trường lớn nhất và thanh khoản cao nhất trên sàn giao dịch HOSE giúp nhà đầu tư đo lường hiệu suất thị trường, đồng thời cũng là một thước đo quan trọng để đánh giá tình hình kinh tế và tài chính của Việt Nam hỗ trợ các chuyên gia và nhà đầu tư trong việc xác định hướng đầu tư và lựa chọn các cổ phiếu tiềm năng nhằm mang lại lợi nhuận.

   Chỉ số VN30 phản ánh biến động của thị trường và tác động của nhiều yếu tố khác nhau trong đó giá cổ phiếu của các công ty trong rỗ VN30 có tác động trực tiếp đến giá trị của chỉ số. Sự biến động giá cổ phiếu phụ thuộc vào nhiều yếu tố như tình hình doanh nghiệp liên quan đến doanh thu, lợi nhuận,cổ tức, chính sách kinh doanh của công t. Ngoài ra là sự ảnh hưởng của thị trường chung, tình hình kinh tế chính trị trong, ngoài nước và tâm lý nhà đầu tư cũng ảnh hưởng đáng kể đến chỉ số này.

   Tuy nhiên trong khuôn khổ bài nghiên cứu, em chỉ xem xét mô phỏng tác động của giá cổ phiếu các công ty trong rỗ VN30 đến chỉ số VN30 dựa trên mô hình hồi quy tuyến tính đa biến.

1.2. MỤC TIÊU NGHIÊN CỨU

  • Củng cố kiến thức lý thuyết được học.

  • Mô phỏng tác động của giá cổ phiếu các công ty trong rỗ VN30 đến chỉ số VN30.

1.3. DỮ LIỆU VÀ PHẠM VI NGHIÊN CỨU

1.3.1. Dữ liệu nghiên cứu

   Dữ liệu nghiên cứu: Thu thập giá trị chỉ số VN30 và giá đóng cửa theo ngày của các cổ phiếu từ 25/03/2021 đến 21/07/2023 của 30 công ty trong rỗ VN30. (Dựa vào danh mục VN30 kỳ tháng 7/2023 do Sở Giao dịch Chứng khoán TP.HCM đã công bố)

Link dữ liệu : https://docs.google.com/spreadsheets/d/1iZm-UhgufGoNpwA2d9a2iMF6FDGMQ5Gg/edit?usp=sharing&ouid=115122603206656803042&rtpof=true&sd=true

Bảng dữ liệu cụ thể:

library(readxl)
datampnn <- read_excel("D:/mpnn/datampnn.xlsx")
library(DT)
datampnn %>% DT::datatable(datampnn)
  • Nguồn dữ liệu: investing.com

1.3.2. Phạm vi nghiên cứu

Mô phỏng tác động của giá cổ phiếu các công ty trong rỗ VN30 đến chỉ số VN30 trong 1000 ngày.

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

2.1. MÔ HÌNH HỒI QUY TUYẾN TÍNH ĐA BIẾN

   Mô hình hồi quy tuyến tính đa biến có dạng:

\[Y_t = \beta_0 + \beta_1X_{1t} + \beta_2X_{2t} + \dots + \beta_{kt}X_{kt} + u_t\]

Trong đó:

\(Y_t\) là biến phụ thuộc

\(k\) là biến giải thích \(X_{it}\), trong đó \(i=1,2,...,k\)

Trong mô hình hồi quy trên sai số \(\epsilon\) thường được giả định thỏa mãn:

\[ u_t ≈ niid(0,\sigma^2), t=1,2,...,n \]

  • Normally distributed (n): Phân phối chuẩn

  • Independently (i): Độc lập (đồng phương sai bằng không)

  • Identically (i): giống nhau (trung bình và phương sai giống nhau). Trung bình bằng 0 và phương sai bằng \(\sigma^2\)

Do vậy, sai số hồi quy được giả định là nhiễu trắng (white noise) có phân phối chuẩn.

=> Tham số ước lượng OLS \(\beta_{kt}\) là phân phối chuẩn và có thể sử dụng suy diễn thống kê (kiểm định giả thuyết và ước lượng khoảng tin cậy).

Mục tiêu của việc ước lượng hệ số hồi quy là tìm các giá trị \(\beta_0\),\(\beta_1t\), \(\beta_2t\), \(\dots\), \(\beta_kt\) sao cho mô hình hồi quy phù hợp tốt với dữ liệu thực tế nhất. Quá trình này thường được thực hiện bằng phương pháp của bình phương tối thiểu (Ordinary Least Squares - OLS), tìm cách giảm thiểu tổng bình phương của sai số \(u_t\).

Sau khi ước lượng hệ số hồi quy, chúng ta cần kiểm tra tính chính xác của mô hình. Các kiểm định thường được sử dụng bao gồm kiểm định hồi quy, kiểm tra t-Student cho từng hệ số, kiểm tra F-statistic, kiểm tra điều kiện phân phối của sai số,…

Sau khi đã kiểm tra và xác nhận tính chính xác của mô hình, chúng ta có thể sử dụng nó để dự đoán giá trị của biến phụ thuộc dựa trên giá trị của các biến độc lập.

2.2. CƠ SỞ TOÁN CỦA PHƯƠNG PHÁP MONTE CARLO

   Phương pháp Monte Carlo được sử dụng để ước lượng giá trị trung bình \(\mu\) của một biến ngẫu nhiên \(X\). Giả sử quá trình mô phỏng sinh được biến ngẫu nhiên \(X\). Quá trình đó được lặp lại n lần độc lập, sinh ra n biến ngẫu nhiên độc lập, cùng phân phối \(X_1\),\(X_2\),\(\dots\) ,\(X_n\). Ước lượng \(\mu = EX\) thông qua: \[ \mu_n = (1/n) Σ_{i=1}^{n} X_i\]

Giá trị \(\mu_n\) được gọi là ước lượng thử lặp hay ước lượng thử thống kê đối với \(\mu\). Luật yếu các số lớn Khinchin khẳng định:

Nếu \(E|X_1| < \infty\), thì \(\mu_n → ^Pµ\). Như vậy, \(\mu_n\) là một ước lượng vững cho \(\mu\). Mặc khác ta cũng có \(E\mu_n=\mu\) nên \(\mu_n\) cũng là một ước lượng không chệch cho \(\mu\). Do đó nếu chúng ta tiến hành số n lần lặp lại mô phỏng khá lớn thì \(\mu_n\) sẽ rất gần \(\mu\). Điều này cho thấy Luật yếu các số lớn dạng Khinchin là cơ sở toán học cho phương pháp Monte Carlo.

Để đánh giá sai số và tốc độ hội tụ trong ước lượng bằng phương pháp Monte Carlo, xét các kết quả cổ điển trong Lý thuyết xác suất:

Giả sử \(\mu_n\) là ước lượng thử thống kê của \(\mu=E(X)\) sao cho \(Var(X) = {\sigma}^2 < \infty\). Khi đó, có một đánh giá sai số của ước lượng thử thống kê thông qua bất đẳng thức Chebyshev như sau: \[ P(|\mu_n - \mu| \leq {k\sigma}/\sqrt{n} ) \geq 1 - 1/k^2 \] với mọi k > 0

Như vậy, khi đánh giá sai số của ước lượng thử thống kê thông qua bất đẳng thức Chebyshev, ta thấy rằng với xác suất không bé hơn \(1- 1/k^2\), sai số của ước lượng thử thống kê là \(k\sigma/\sqrt{n}\) với k > 0 bất kỳ (chẳng hạn, với k=10, thì với xác suất không bé hơn 0,99, sai số ước lượng thử thống kê là \(10\sigma/\sqrt{n}\))

Giả sử \(Var(X) = {\sigma}^2 < \infty\), Định lý giới hạn trung tâm cho thấy: \[ n^{−1/2}(\mu_n -\mu) → ^D\sigma N(0,1)\]
khi n → \(\infty\).

Ở đây \(→ ^D\) chỉ sự hội tụ theo phân phối. Giới hạn trên có thể biểu diễn dưới dạng sau: \[ \mu_n ≈^D \mu + N(0,1) {\sigma/ \sqrt{n}} \] khi n lớn.

D ở đây ≈ là ký hiệu chỉ sự xấp xỉ theo phân phối. Do đó nếu số lần mô phỏng n là lớn, sai số trong phương pháp Monte Carlo sẽ:

  1. Giảm theo tỷ lệ \(n^{-1/2}\) tức là sai số của ước lượng thử thống kê có dạng \(0(n^{-1/2})\).

  2. Xấp xỉ phân phối chuẩn chính tắc.

  3. Phụ thuộc dữ liệu bài toán chỉ qua phương sai \(\sigma^2 = Var(X)\).

Như vậy, với n đủ lớn sai số của ước lượng thử thống kê có thể được đánh giá qua kết quả sau:

Giả sử \(\mu_n\) là ước lượng thử thống kê của \(\mu=E(X)\), sao cho \(Var(X) = {\sigma}^2 < \infty\). Khi đó với n đủ lớn, ta có thể có một đánh giá sai số của ước lượng thử thống kê \(\mu_n\) đối với \(\mu\) theo quy tắc \(k - \sigma\) sau: \[ P(|\mu_n - \mu|) \leq k\sigma/\sqrt{n} ≈ \phi(k) - \phi(-k) \] trong đó \[ \phi(k) = 1/\sqrt{(2\pi)} \int_{-∞}^{x} e^{{-1/2} t^2}dt \]

2.3. KHOẢNG TIN CẬY CHO PHƯƠNG PHÁP MÔ PHỎNG MONTE CARLO

   Tốc độ hội tụ của phương pháp Monte Carlo dạng \(n^{-1/2}\). Điều này cho thấy nếu yêu cầu độ chính xác thêm 1 con số thì ta phải tăng n lên 100 lần. Vì vậy Phương pháp Monte Carlo thường chỉ được sử dụng khi nó thoả mãn yêu cầu chính xác đến ít nhất 2 hoặc 3 con số có ý nghĩa. Vì có tốc độ hội tụ chậm, nên sai số trong tính toán Monte Carlo cần được tính thông qua khoảng tin cậy. Để xây dựng khoảng tin cậy cho phương pháp Monte Carlo, ta chú ý rằng: với mỗi \(z\) > 0,

Do biến cố \[ lim_{n \to \infty} P(-z \leq {\mu_n - \mu}/ \sqrt{n}\sigma \leq z ) = P(-z \leq N(0,1) \leq z)\] Tương đương với biến cố \[ -z \leq {\mu_n - \mu}/ \sqrt{n}\sigma \leq z \] Nên \[ \mu_n - {\sigma z}/\sqrt{n}\leq \mu \leq \mu_n + {\sigma z}/\sqrt{n}\] Vì vậy nếu \(z\) được chọn: \[ lim_{n \to \infty} P(\mu \in [\mu_n - {\sigma z}/\sqrt{n} , \mu_n + {\sigma z}/\sqrt{n}]) = P(-z \leq N(0,1) \leq z)\] sao cho \(P(-z \leq N(0,1) \leq z) = 1-{\delta}\) (chẳng hạn cho 1 - \(\delta\) = 0.95 thì \(z\)= 1.96), ta có: \[ lim_{n \to \infty} P(\mu \in [\mu_n - {\sigma z}/\sqrt{n} , \mu_n + {\sigma z}/\sqrt{n}]) = 1-\delta\] Nói cách khác, khi n lớn, khoảng \[[\mu_n - {\sigma z}/\sqrt{n} , \mu_n + {\sigma z}/\sqrt{n}])\] là khoảng tin cậy 100%(1-\(\delta\)) cho \(\mu\).

Dĩ nhiên khoảng tin cậy trên không thể tính được trong thực tế vì \(\mu\) chưa biết. Rất may, \(\sigma\) có thể được ước lượng thông qua độ lệch tiêu chuẩn mẫu, được xác định như sau: \[\hat{s_n} = \sqrt{{1/{n-1}}\sum_{i=1}^{n} (X_i - \mu_n)^2} \] Vì vậy khoảng tin cậy cho phương pháp Monte Carlo sẽ là \[[\mu_n - {\hat{s_n} z}/\sqrt{n} , \mu_n + {\hat{s_n}z}/\sqrt{n}])\]

2.4. SINH BIẾN NGẪU NHIÊN

   Các phương pháp sinh ra dãy các biến ngẫu nhiên độc lập \(X_1\),\(X_2\),\(\dots\) ,\(X_n\) với hàm phân phối xác suất chung \(F(x)\) hay hàm mật độ xác suất \(p(x)\) cho trước.

Giả sử rằng tồn tại một biến ngẫu nhiên \(U ∼ Unif(0, 1)\). Trên cơ sở của biến ngẫu nhiên \(U\) có phân phối đều, một số phương pháp sinh các biến ngẫu nhiên có phân phối không đều sau:

  • Phương pháp tra cứu bảng

  • Phương pháp biến đổi ngược

  • Phương pháp hợp thành

  • Phương pháp chập các phân phối

  • Phương pháp chấp nhận và bác bỏ

2.5. CÁC PHÂN PHỐI XÁC SUẤT

   Mô hình xác suất cho phân phối tần suất của một biến số ngẫu nhiên liên tục có liên quan đến sự chọn lựa một đường cong, được gọi là phân phối xác suất hay hàm mật độ xác suất của biến số ngẫu nhiên đó. Nếu phương trình của phân phối xác suất liên tục này được ký hiệu là \(f(x)\), thì xác suất của \(x\) rơi vào khoảng \(a < x < b\) là diện tích bên dưới đường phân phối xác suất \(f(x)\) giữa hai điểm \(a\)\(b\).

Hình 2.1. Phân phối xác suất cho một biến số ngẫu nhiên liên tục
Hình 2.1. Phân phối xác suất cho một biến số ngẫu nhiên liên tục

Khi đó, đồ thị của một phân phối xác suất chuẩn với trung bình \(\mu\) và độ lệch chuẩn \(\sigma\) với trung bình \(\mu\) nằm ở trung tâm của phân phối và phân phối này có tính đối xứng qua trung bình \(\mu\) của nó. Do tổng diện tích nằm dưới phân phối xác suất chuẩn này là bằng với 1, điều này hàm ý rằng diện tích nằm về phía bên phải của \(\mu\) là 0,5 và diện tích nằm ở phía bên trái của \(\mu\) cũng là 0,5. Hình dạng của phân phối này được quyết định bởi \(\sigma\), độ lệch chuẩn của tổng thể. Những giá trị lớn của \(\sigma\) làm giảm đi chiều cao của đường cong và làm tăng bề rộng; các giá trị nhỏ của \(\sigma\) làm tăng chiều cao của đường cong và làm giảm bề rộng.

Hình 2.2.Các phân phối xác suất chuẩn với những giá trị khác nhau của \mu và \sigma
Hình 2.2.Các phân phối xác suất chuẩn với những giá trị khác nhau của \(\mu\)\(\sigma\)

2.6. NHỮNG THUẬN LỢI VÀ KHÔNG THUẬN LỢI KHI SỬ DỤNG MÔ PHỎNG NGẪU NHIÊN

2.6.1. Thuận lợi

  • Mô phỏng cho phép điều khiển và hiệu chỉnh các thí nghiệm, sao cho mô hình thích hợp nhất với hệ thống cần nghiên cứu.
  • Mô phỏng cho phép rút ngắn thời gian trong giai đoạn nghiên cứu hệ thống thực. Với sự giúp đỡ của máy tính điện tử, việc tiết kiệm thời gian nghiên cứu một hệ thống thực là khả thi.
  • Mô phỏng cho phép thực hiện nhiều phân tích hiệu quả các dữ liệu lớn và phức tạp.
  • Mô phỏng không phá hỏng hệ thống thực khi nghiên cứu nó.
  • Mô phỏng đảm bảo an toàn cho người nghiên cứu hệ thống thực (mô phỏng vụ nổ hạt nhân, mô phỏng các cơn sóng thần, mô phỏng sự hoạt động của núi lửa, …).

2.6.2. Không thuận lợi

  • Mô phỏng một hệ thống phức tạp cần tới một mô hình toán học phức tạp và máy tính hỗ trợ. Điều này không phải lúc nào cũng có trong công tác thực địa.
  • Việc chạy một chương trình máy tính có thể chiếm nhiều thời gian, nếu thuật toán viết ra chưa tối ưu.
  • Nghiệm mô phỏng chỉ là nghiệm xấp xỉ với nghiệm giải tích nên có khả năng xuất hiện sai số đáng kể.

CHƯƠNG 3. XÂY DỰNG MÔ HÌNH NGHIÊN CỨU

3.1. Mô hình hồi quy mẫu

   Trong khuôn bài nghiên cứu, em chỉ xem xét mô phỏng tác động của giá cổ phiếu các công ty trong rỗ VN30 đến chỉ số VN30 dựa trên mô hình hồi quy tuyến tính đa biến. Khi đó mô hình hồi quy mẫu được xây dựng như sau:

\[\hat{VN30} = \hat\beta_0 + \hat\beta_1ACB + \hat\beta_2BCM +\hat\beta_3BID + \hat\beta_4BVH + \hat\beta_5CTG + \hat\beta_6FPT + \hat\beta_7GAS + \hat\beta_8GVR + \hat\beta_9HDB + \hat\beta_{10}HPG + \hat\beta_{11}MBB + \hat\beta_{12}MSN + \hat\beta_{13}MWG + \hat\beta_{14}PLX + \hat\beta_{15}POW + \hat\beta_{16}SAB +\hat\beta_{17}SHB + \hat\beta_{18}SSB + \hat\beta_{19}SSI + \hat\beta_{20}STB + \hat\beta_{21}TCB + \hat\beta_{22}TPB + \hat\beta_{23}VCB + \hat\beta_{24}VHM + \hat\beta_{25}VIB + \hat\beta_{26}VIC +\hat\beta_{27}VJC + \hat\beta_{28}VNM +\hat\beta_{29}VPB + \hat\beta_{30}VRE \]

Trong đó:

  • Biến phụ thuộc là giá trị chỉ số VN30 theo ngà. Đơn vị là điểm.
  • Biến độc lập gồm giá đóng cửa các mã cổ phiếu ACB, BCM, BID, BVH, CTG, FPT, GAS, GVR, HDB, HPG, MBB, MSN, MWG, PLX, POW, SAB, SHB, SSB, SSI, STB, TCB, TPB, VCB, VHM, VIB, VIC, VJC, VNM, VPB và VRE. Đơn vị là đồng.

3.2. Xem xét mối quan hệ giữa các biến độc lập và biến phụ thuộc

library(ggplot2)
library(readxl)
datampnn <- read_excel("D:/mpnn/datampnn.xlsx")
plot(datampnn$VN30 ~ datampnn$ACB,pch=16 )
abline(lm(datampnn$VN30~datampnn$ACB))

plot(datampnn$VN30 ~ datampnn$BCM,pch=16 )
abline(lm(datampnn$VN30~datampnn$BCM))

plot(datampnn$VN30 ~ datampnn$BID,pch=16 )
abline(lm(datampnn$VN30~datampnn$BID))

plot(datampnn$VN30 ~ datampnn$BVH,pch=16 )
abline(lm(datampnn$VN30~datampnn$BVH))

plot(datampnn$VN30 ~ datampnn$CTG,pch=16 )
abline(lm(datampnn$VN30~datampnn$CTG))

plot(datampnn$VN30 ~ datampnn$FPT,pch=16 )
abline(lm(datampnn$VN30~datampnn$FPT))

plot(datampnn$VN30 ~ datampnn$GAS,pch=16 )
abline(lm(datampnn$VN30~datampnn$GAS))

plot(datampnn$VN30 ~ datampnn$GVR,pch=16 )
abline(lm(datampnn$VN30~datampnn$GVR))

plot(datampnn$VN30 ~ datampnn$HDB,pch=16 )
abline(lm(datampnn$VN30~datampnn$HDB))

plot(datampnn$VN30 ~ datampnn$HPG,pch=16 )
abline(lm(datampnn$VN30~datampnn$HPG))

plot(datampnn$VN30 ~ datampnn$MBB,pch=16 )
abline(lm(datampnn$VN30~datampnn$MBB))

plot(datampnn$VN30 ~ datampnn$MSN,pch=16 )
abline(lm(datampnn$VN30~datampnn$MSN))

plot(datampnn$VN30 ~ datampnn$MWG,pch=16 )
abline(lm(datampnn$VN30~datampnn$MWG))

plot(datampnn$VN30 ~ datampnn$PLX,pch=16 )
abline(lm(datampnn$VN30~datampnn$PLX))

plot(datampnn$VN30 ~ datampnn$POW,pch=16 )
abline(lm(datampnn$VN30~datampnn$POW))

plot(datampnn$VN30 ~ datampnn$SAB,pch=16 )
abline(lm(datampnn$VN30~datampnn$SAB))

plot(datampnn$VN30 ~ datampnn$SHB,pch=16 )
abline(lm(datampnn$VN30~datampnn$SHB))

plot(datampnn$VN30 ~ datampnn$SSB,pch=16 )
abline(lm(datampnn$VN30~datampnn$SSB))

plot(datampnn$VN30 ~ datampnn$SSI,pch=16 )
abline(lm(datampnn$VN30~datampnn$SSI))

plot(datampnn$VN30 ~ datampnn$STB,pch=16 )
abline(lm(datampnn$VN30~datampnn$STB))

plot(datampnn$VN30 ~ datampnn$TCB,pch=16 )
abline(lm(datampnn$VN30~datampnn$TCB))

plot(datampnn$VN30 ~ datampnn$TPB,pch=16 )
abline(lm(datampnn$VN30~datampnn$TPB))

plot(datampnn$VN30 ~ datampnn$VCB,pch=16 )
abline(lm(datampnn$VN30~datampnn$VCB))

plot(datampnn$VN30 ~ datampnn$VHM,pch=16 )
abline(lm(datampnn$VN30~datampnn$VHM))

plot(datampnn$VN30 ~ datampnn$VIB,pch=16 )
abline(lm(datampnn$VN30~datampnn$VIB))

plot(datampnn$VN30 ~ datampnn$VIC,pch=16 )
abline(lm(datampnn$VN30~datampnn$VIC))

plot(datampnn$VN30 ~ datampnn$VJC,pch=16 )
abline(lm(datampnn$VN30~datampnn$VJC))

plot(datampnn$VN30 ~ datampnn$VNM,pch=16 )
abline(lm(datampnn$VN30~datampnn$VNM))

plot(datampnn$VN30 ~ datampnn$VPB,pch=16 )
abline(lm(datampnn$VN30~datampnn$VPB))

plot(datampnn$VN30 ~ datampnn$VRE,pch=16 )
abline(lm(datampnn$VN30~datampnn$VRE))

Dựa vào biểu đồ phân tán, ta thấy:

Biến ACB, BVH, CTG, GVR, HDB, HPG, MBB, MSN, MWG, PLX, POW, SHB, SSI, STB, TCB, TPB, VHM, VIB, VIC, VJC, VNM, VPB, VRE có mối quan hệ đồng biến với VN30. Khi đó dự đoán hệ số hồi quy của các biến độc lập nhận giá trị dương.

Biến BCM, BID, FPT, GAS, SAB, SSB, VCB có mối quan hệ nghịch biến với VN30.Khi đó dự đoán hệ số hồi quy của các biến độc lập nhận giá trị âm.

3.3. Ước lượng hệ số mô hình hồi quy

library(stats)
mohinh <- lm(VN30 ~ ACB + BCM + BID + BVH + CTG + FPT + GAS + GVR + HDB + HPG + MBB +   MSN +   MWG +   PLX +   POW +   SAB +   SHB +   SSB +   SSI +   STB +   TCB +   TPB +   VCB +   VHM +   VIB +   VIC +   VJC +   VNM +   VPB +   VRE, data = datampnn)
summary(mohinh)
## 
## Call:
## lm(formula = VN30 ~ ACB + BCM + BID + BVH + CTG + FPT + GAS + 
##     GVR + HDB + HPG + MBB + MSN + MWG + PLX + POW + SAB + SHB + 
##     SSB + SSI + STB + TCB + TPB + VCB + VHM + VIB + VIC + VJC + 
##     VNM + VPB + VRE, data = datampnn)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -25.6828  -3.2313  -0.1022   3.1162  22.2777 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.090e+02  1.387e+01   7.859 2.05e-14 ***
## ACB         -4.032e-05  3.862e-04  -0.104 0.916886    
## BCM         -1.666e-04  7.383e-05  -2.256 0.024471 *  
## BID         -2.755e-04  2.641e-04  -1.043 0.297342    
## BVH         -5.615e-04  1.552e-04  -3.618 0.000324 ***
## CTG          1.664e-03  3.375e-04   4.929 1.10e-06 ***
## FPT          4.509e-04  9.934e-05   4.540 6.93e-06 ***
## GAS          3.207e-04  5.685e-05   5.642 2.69e-08 ***
## GVR          1.892e-03  2.549e-04   7.424 4.35e-13 ***
## HDB          2.418e-03  5.319e-04   4.546 6.74e-06 ***
## HPG          3.831e-03  1.923e-04  19.924  < 2e-16 ***
## MBB          4.421e-03  4.465e-04   9.901  < 2e-16 ***
## MSN          3.868e-04  5.133e-05   7.536 2.00e-13 ***
## MWG          2.674e-03  1.013e-04  26.393  < 2e-16 ***
## PLX         -1.925e-04  1.645e-04  -1.170 0.242525    
## POW          2.701e-03  4.194e-04   6.441 2.60e-10 ***
## SAB          1.394e-04  4.798e-05   2.905 0.003820 ** 
## SHB          1.863e-03  3.841e-04   4.850 1.61e-06 ***
## SSB          5.370e-04  2.233e-04   2.405 0.016524 *  
## SSI         -2.943e-04  1.639e-04  -1.795 0.073193 .  
## STB          1.099e-03  3.312e-04   3.320 0.000961 ***
## TCB          2.581e-03  2.511e-04  10.280  < 2e-16 ***
## TPB          1.368e-04  2.041e-04   0.670 0.502871    
## VCB          3.549e-04  9.691e-05   3.662 0.000274 ***
## VHM          1.243e-03  1.314e-04   9.459  < 2e-16 ***
## VIB          2.978e-03  2.288e-04  13.012  < 2e-16 ***
## VIC          1.310e-03  7.079e-05  18.497  < 2e-16 ***
## VJC          1.712e-04  6.210e-05   2.756 0.006046 ** 
## VNM          2.877e-04  1.291e-04   2.228 0.026312 *  
## VPB          4.822e-03  3.244e-04  14.862  < 2e-16 ***
## VRE         -1.067e-03  3.340e-04  -3.195 0.001479 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.903 on 550 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.9991, Adjusted R-squared:  0.9991 
## F-statistic: 2.046e+04 on 30 and 550 DF,  p-value: < 2.2e-16

Như vậy, mô hình hồi quy có dạng sau:

\[ VN30=109+(−0.00004032)×ACB+(−0.0001666)×BCM+(−0.0002755)×BID+(−0.0005615)×BVH+0.001664×CTG+0.0004509×FPT+0.0003207×GAS+0.001892×GVR+0.002418×HDB+0.003831×HPG+0.004421×MBB+0.0003868×MSN+0.002674×MWG+(−0.0001925)×PLX+0.002701×POW+0.0001394×SAB+0.001863×SHB+0.000537×SSB+(−0.0002943)×SSI+0.001099×STB+0.002581×TCB+0.0001368×TPB+0.0003549×VCB+0.001243×VHM+0.002978×VIB+0.001310×VIC+0.0001712×VJC+0.0002877×VNM+0.004822×VPB+(−0.001067)×VRE \]

Ý nghĩa mô hình:

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu ACB tăng lên 1 đồng thì chỉ số VN30 giảm 0.0001666 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu BCM tăng lên 1 đồng thì chỉ số VN30 giảm 0.00004032 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu BID tăng lên 1 đồng thì chỉ số VN30 giảm 0.0002755 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu BVH tăng lên 1 đồng thì chỉ số VN30 giảm 0.0005615 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu CTG tăng lên 1 đồng thì chỉ số VN30 tăng 0.001664 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu FPT tăng lên 1 đồng thì chỉ số VN30 tăng 0.0004509 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu GAS tăng lên 1 đồng thì chỉ số VN30 tăng 0.0003207 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu GVR tăng lên 1 đồng thì chỉ số VN30 tăng 0.001892 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu HDB tăng lên 1 đồng thì chỉ số VN30 tăng 0.002418 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu HPG tăng lên 1 đồng thì chỉ số VN30 tăng 0.003831 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu MSN tăng lên 1 đồng thì chỉ số VN30 tăng 0.0003868 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu MWG tăng lên 1 đồng thì chỉ số VN30 tăng 0.002674 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu PLX tăng lên 1 đồng thì chỉ số VN30 giảm 0.0001925 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu POW tăng lên 1 đồng thì chỉ số VN30 tăng 0.002701 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu SAB tăng lên 1 đồng thì chỉ số VN30 tăng 0.0001394 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu SHB tăng lên 1 đồng thì chỉ số VN30 tăng 0.001863 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu SSB tăng lên 1 đồng thì chỉ số VN30 tăng 0.000537 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu SSI tăng lên 1 đồng thì chỉ số VN30 giảm 0.0002943 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu STB tăng lên 1 đồng thì chỉ số VN30 tăng 0.0001925 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu TCB tăng lên 1 đồng thì chỉ số VN30 tăng 0.002581 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu TPB tăng lên 1 đồng thì chỉ số VN30 tăng 0.0001368 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu VCB tăng lên 1 đồng thì chỉ số VN30 tăng 0.0003549 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu VHM tăng lên 1 đồng thì chỉ số VN30 tăng 0.001243 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu VIB tăng lên 1 đồng thì chỉ số VN30 tăng 0.002978 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu VIC tăng lên 1 đồng thì chỉ số VN30 tăng 0.001310 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu VJC tăng lên 1 đồng thì chỉ số VN30 tăng 0.0001712 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu VNM tăng lên 1 đồng thì chỉ số VN30 tăng 0.0002877 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu VPB tăng lên 1 đồng thì chỉ số VN30 tăng 0.004822 điểm.

  • Khi các yếu tố khác không thay đổi, giá cổ phiếu VRE tăng lên 1 đồng thì chỉ số VN30 giảm 0.001067 điểm.

Dựa vào kết quả ước lượng, ta thấy các biến BCM, BVH, CTG, FPT, GAS, GVR, HDB, HPG, MBB, MSN, MWG, POW, SHB, SSB, STB, TCB, VCB, VHM, VIB, VIC, VJC, VNM, VPB, VRE có hệ số ước lượng có ý nghĩa thống kê và có tác động đáng kể đến biến phụ thuộc VN30. Trong khi đó, các biến ACB, BID và PLX có hệ số không có ý nghĩa thống kê và có thể loại bỏ khỏi mô hình.

Như vậy có thể viết lại mô hình như sau:

\[VN30=109+(−0.0001666)×BCM+(−0.0005615)×BVH+0.001664×CTG+0.0004509×FPT+0.0003207×GAS+0.001892×GVR+0.002418×HDB+0.003831×HPG+0.004421×MBB+0.0003868×MSN+0.002674×MWG+0.002701×POW+0.0001394×SAB+0.001863×SHB+0.000537×SSB+(−0.0002943)×SSI+0.001099×STB+0.002581×TCB+0.0001368×TPB+0.0003549×VCB+0.001243×VHM+0.002978×VIB+0.001310×VIC+0.0001712×VJC+0.0002877×VNM+0.004822×VPB+(−0.001067)×VRE\]

3.4. Kiểm định mô hình.

Dựa vào kết quả mô hình hồi quy mẫu, ta thấy:

Hệ số xác định mô hình $R^2=0.9991 $. Điều này có nghĩa là 99,91% biến động của chỉ số VN30 được giải thích bởi giá các cổ phiếu trong rỗ VN30.

Trị thống kê F-statistic có p-value < 0.05 nên có thể kết luận hàm hồi quy mẫu phù hợp hay có ít nhất một biến độc lập có tác động đến biến phụ thuộc.

CHƯƠNG 4. MÔ PHỎNG CÁC BIẾN VÀ CHẠY MÔ HÌNH NGHIÊN CỨU

Dựa vào dữ liệu mẫu nghiên mẫu, ta tính được trung bình và độ lệch chuẩn của các biến như sau:

library(readxl)
library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
datampnn <- read_excel("D:/mpnn/datampnn.xlsx")
describe(datampnn)
##      vars   n      mean       sd    median   trimmed      mad      min
## VN30    1 582   1287.97   192.05   1284.83   1292.21   293.53   904.77
## ACB     2 582  24751.89  2532.90  24900.00  24728.81  2283.20 17500.00
## BCM     3 582  69009.08 14815.36  74704.00  69858.51 13485.73 33438.00
## BID     4 582  38172.73  5236.50  36700.00  37994.85  6078.66 28500.00
## BVH     5 582  51174.74  4500.92  50500.00  50958.99  4518.96 29797.00
## CTG     6 582  30100.39  4054.69  29450.00  29931.57  3610.13 19800.00
## FPT     7 582  78002.27  7652.08  78737.00  78629.24  5095.70 53458.00
## GAS     8 582 100974.47 11510.43 103186.00 101443.11 12150.65 26882.00
## GVR     9 582  25340.80  8426.92  24422.50  25214.40 12598.39 10000.00
## HDB    10 582  19952.06  2452.92  19680.00  19904.93  2453.70 14000.00
## HPG    11 582  28557.55  8101.92  27185.00  28444.32 10430.09 12100.00
## MBB    12 582  21705.98  3817.48  21917.00  21523.77  3952.61 14150.00
## MSN    13 582 101156.37 18695.84 102000.00 100897.80 23695.65 42569.00
## MWG    14 582  55972.92 12120.44  56202.50  55783.68 15952.03 37700.00
## PLX    15 582  43760.57  8610.57  41680.00  44038.58 10736.99 12393.00
## POW    16 582  13454.41  6858.71  13000.00  12984.08  1482.60  9580.00
## SAB    17 582 163119.32 15755.56 160954.50 162681.97 15931.28 12277.00
## SHB    18 582  14932.63  4070.60  13500.00  14865.76  5189.10  7704.00
## SSB    19 582  29429.00  3540.22  30475.00  30000.82  2186.84 15545.00
## SSI    20 582  27812.48  9019.36  24850.00  27122.75  8599.08 13900.00
## STB    21 582  26140.72  4413.45  26350.00  26265.88  4484.86 14850.00
## TCB    22 582  39824.79 10211.80  38800.00  40033.69 15344.91 19926.00
## TPB    23 582  25411.31  6027.84  23926.00  24785.22  4897.03 17438.00
## VCB    24 582  81805.69  8262.29  79250.00  81012.08  6158.72 62000.00
## VHM    25 582  65178.29 13333.92  65499.50  65600.30 18132.94 22804.00
## VIB    26 582  26460.61  6473.06  26150.00  26058.42  7825.90 17000.00
## VIC    27 582  77346.58 20692.69  77900.00  76112.61 28317.66 50100.00
## VJC    28 582 117969.36 13529.79 120000.00 117922.75 14677.74 92069.00
## VNM    29 582  76448.17  6755.01  76500.00  76491.32  6665.77 16019.00
## VPB    30 582  21192.25  3036.25  20766.50  21224.78  3805.09 14650.00
## VRE    31 581  29299.66  2515.90  29000.00  29168.92  2446.29 22200.00
##            max     range  skew kurtosis     se
## VN30   1572.46    667.69 -0.14    -1.49   7.96
## ACB   54387.00  36887.00  2.57    30.75 104.99
## BCM   97229.00  63791.00 -0.45    -1.13 614.12
## BID   58566.00  30066.00  0.36    -0.97 217.06
## BVH   62649.00  32852.00  0.23     0.23 186.57
## CTG   53809.00  34009.00  0.64     1.95 168.07
## FPT   96050.00  42592.00 -0.88     1.53 317.19
## GAS  130442.00 103560.00 -0.67     1.94 477.12
## GVR   41004.00  31004.00  0.08    -1.37 349.31
## HDB   26800.00  12800.00  0.17    -0.41 101.68
## HPG   43896.00  31796.00  0.10    -1.30 335.84
## MBB   70536.00  56386.00  3.63    44.03 158.24
## MSN  142286.00  99717.00  0.02    -1.04 774.97
## MWG   79582.00  41882.00  0.04    -1.42 502.41
## PLX   60817.00  48424.00 -0.18    -0.82 356.92
## POW  171223.00 161643.00 20.93   478.07 284.30
## SAB  196176.00 183899.00 -1.16    12.85 653.09
## SHB   22859.00  15155.00  0.15    -1.54 168.73
## SSB   35537.00  19992.00 -1.77     3.27 146.75
## SSI   49669.00  35769.00  0.57    -0.93 373.86
## STB   39350.00  24500.00 -0.24    -0.11 182.94
## TCB   58000.00  38074.00 -0.08    -1.49 423.29
## TPB   73626.00  56188.00  1.52     6.09 249.86
## VCB  106500.00  44500.00  0.86     0.21 342.48
## VHM   88722.00  65918.00 -0.20    -1.27 552.71
## VIB   98133.00  81133.00  2.51    24.00 268.32
## VIC  128100.00  78000.00  0.31    -1.10 857.74
## VJC  149000.00  56931.00 -0.06    -0.88 560.83
## VNM   95995.00  79976.00 -1.02    10.22 280.00
## VPB   32850.00  18200.00  0.05    -0.82 125.86
## VRE   36000.00  13800.00  0.39    -0.10 104.38

4.1. Mô phỏng các biến độc lập.

Tiến hành mô phỏng các biến độc lập trong 1000 ngày theo phân phối chuẩn với trung bình và độ lệch chuẩn tính được từ mẫu:

BCM <- rnorm(n = 1000, mean =69009.08, sd = 14815.36 )
BVH <- rnorm(n = 1000, mean =51174.74, sd = 4500.92 )
CTG <- rnorm(n = 1000, mean =30100.39, sd = 4054.69 )
FPT <- rnorm(n = 1000, mean =78002.27, sd = 7652.08 )
GAS <- rnorm(n = 1000, mean =100974.47, sd = 11510.43 )
GVR <- rnorm(n = 1000, mean =25340.80, sd = 8426.92 )
HDB <- rnorm(n = 1000, mean =19952.06, sd = 2452.92 )
HPG <- rnorm(n = 1000, mean =28557.55, sd = 8101.92 )
MBB <- rnorm(n = 1000, mean =21705.98, sd = 3817.48 )
MSN <- rnorm(n = 1000, mean =101156.37, sd = 18695.84 )
MWG <- rnorm(n = 1000, mean =55972.92, sd = 12120.44 )
POW <- rnorm(n = 1000, mean =13454.41, sd = 6858.71 )
SAB <- rnorm(n = 1000, mean =163119.32, sd = 15755.56 )
SHB <- rnorm(n = 1000, mean =14932.63, sd = 4070.60 )
SSB <- rnorm(n = 1000, mean =29429.00, sd = 3540.22 )
SSI <- rnorm(n = 1000, mean =27812.48, sd = 9019.36 )
STB <- rnorm(n = 1000, mean =26140.72, sd = 4413.45 )
TCB <- rnorm(n = 1000, mean =39824.79, sd = 10211.80 )
TPB <- rnorm(n = 1000, mean =25411.31, sd = 6027.84 )
VCB <- rnorm(n = 1000, mean =81805.69, sd = 8262.29 )
VHM <- rnorm(n = 1000, mean =65178.29, sd = 13333.92 )
VIB <- rnorm(n = 1000, mean =26460.61, sd = 6473.06 )
VIC <- rnorm(n = 1000, mean =77346.58, sd = 20692.69 )
VJC <- rnorm(n = 1000, mean =117969.36, sd = 13529.79 )
VNM <- rnorm(n = 1000, mean =76448.17, sd = 6755.01 )
VPB <- rnorm(n = 1000, mean =21192.25, sd = 21192.25 )
VRE <- rnorm(n = 1000, mean =29299.66, sd = 2515.90 )

4.2. Mô phỏng biến phụ thuộc (Giá trị chỉ số VN30)

VN30 = 109-0.0001666*BCM-0.0005615*BVH+0.001664*CTG+0.0004509*FPT+0.0003207*GAS+0.001892*GVR+0.002418*HDB+0.003831*HPG+0.004421*MBB+0.0003868*MSN+0.002674*MWG+0.002701*POW+0.0001394*SAB+0.001863*SHB+0.000537*SSB-0.0002943*SSI+0.001099*STB+0.002581*TCB+0.0001368*TPB+0.0003549*VCB+0.001243*VHM+0.002978*VIB+0.001310*VIC+0.0001712*VJC+0.0002877*VNM+0.004822*VPB-0.001067*VRE
VN30 <- data.frame(VN30)

4.3. Thống kê mô tả

library(psych)
describe(VN30)
##      vars    n   mean     sd  median trimmed    mad    min    max  range  skew
## VN30    1 1000 1305.1 128.32 1312.06 1305.66 124.51 789.93 1682.5 892.57 -0.12
##      kurtosis   se
## VN30     0.17 4.06

Từ kết quả thống kê mô tả mô phỏng chỉ số VN30 cho thấy:

Giá trị chỉ số VN30 trung bình là 1314.29 điểm

Giá trị chỉ số VN30 nhỏ nhất là 956.06 điểm

Giá trị chỉ số VN30 lớn nhất là 1715.7 điểm

Độ lệch chuẩn thể hiện mức độ biến động và phân tán của dữ liệu. Độ lệch chuẩn của VN30 là 123.23

Độ lệch (Skewness)và độ nhọn (Kurtosis) có giá trị gần bằng 0 cho thấy dữ liệu có phân phối gần chuẩn.

4.4. Mô phỏng biểu đồ chỉ số VN30

Trực quan hóa dữ liệu bằng biểu đồ histogram

library(ggplot2)
library(scales)
## 
## Attaching package: 'scales'
## The following objects are masked from 'package:psych':
## 
##     alpha, rescale
ggplot(data = VN30, aes(x = VN30)) + 
  geom_histogram ( fill = "blue", col = "white") +
  labs(x = "Số điểm",
       y = "Số ngày", 
       title = "Biểu đồ mô phỏng giá trị chỉ số VN30") +
  scale_x_continuous(labels = comma)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

4.5 Kết luận

   Kết quả mô phỏng chỉ số VN30 trong 1000 ngày cho thấy chỉ số có xu hướng tăng trưởng trong dài hạn từ 1.200 điểm lên đến 1.800 điểm. Tuy nhiên, trong quá khứ ta thấy chỉ số VN30 từng dao động từ 1.100 điểm đến 2.000 điểm, và có những giai đoạn giảm sâu do ảnh hưởng của các yếu tố vĩ mô và thị trường. Điều này có thể giải thích do nghiên cứu chỉ dựa trên các biến số trong quá khứ, không xem xét được các yếu tố ngoại lai như chính sách, sự kiện, tin đồn… có ảnh hưởng đến giá trị của các cổ phiếu trong rổ VN30.

PHỤ LỤC

Danh mục VN30 kỳ tháng 7/2023 do Sở Giao dịch Chứng khoán TP.HCM đã công bố:

library(readxl)
danhsachcongty <- read_excel("D:/mpnn/congtyVN30.xlsx")
library(DT)
danhsachcongty %>% DT::datatable(danhsachcongty)

TÀI LIỆU THAM KHẢO

[1] Trần Lộc Hùng và Trần Mạnh Tường (2017). Giáo trình Mô phỏng ngẫu nhiên, NXB Trường Đại học Tài chính – Marketing, TP.HCM.

LS0tDQp0aXRsZTogIsSQ4buAIFTDgEkgOiBNw5QgUEjhu45ORyBDw4FDIFnhur5VIFThu5AgVMOBQyDEkOG7mE5HIMSQ4bq+TiBDSOG7iCBT4buQIFZOMzAiDQphdXRob3I6ICJI4buTIER1eSBRdWFuZyINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IGZhbHNlDQogICAgICBkZl9wcmludDogcGFnZWQNCiAgICAgIGhpZ2hsaWdodDoga2F0ZQ0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQoNCi0tLQ0KDQoNCg0KDQojICoqTOG7nEkgQ+G6ok0gxqBOKioNCg0KJmVuc3A7JmVuc3A7JmVuc3A7RW0geGluIGfhu61pIGzhu51pIGPhuqNtIMahbiBjaMOibiB0aMOgbmggxJHhur9uIHRo4bqneSBUcuG6p24gTeG6oW5oIFTGsOG7nW5nIMSRw6MgaMaw4bubbmcgZOG6q24sIGjhu5cgdHLhu6MgY2hvIGVtIHRyb25nIHN14buRdCBxdcOhIHRyw6xuaCBo4buNYyB04bqtcCB2w6AgdGjhu7FjIGhp4buHbiBiw6BpIHRp4buDdSBsdeG6rW4gbsOgeS4NCg0KVsOsIGtp4bq/biB0aOG7qWMgYuG6o24gdGjDom4gY8OybiBuaGnhu4F1IGjhuqFuIGNo4bq/IG7Dqm4ga2jDtG5nIHRo4buDIHRyw6FuaCBraOG7j2kgbmjhu69uZyBzYWkgc8OzdCBuw6puIGVtIHLhuqV0IG1vbmcgbmjhuq1uIMSRxrDhu6NjIG5o4buvbmcgZ8OzcCDDvSB04burIHRo4bqneSBjxaluZyBuaMawIGPDoWMgYuG6oW4gxJHhu4MgY8OzIHRo4buDIGhvw6BuIHRoaeG7h24gaMahbiBraeG6v24gdGjhu6ljIGPhu6dhIG3DrG5oLk3hu5l0IGzhuqduIG7hu69hLCBlbSB4aW4gY2jDom4gdGjDoG5oIGPhuqNtIMahbiENCg0KIyAqKkNIxq/GoE5HIDEuIEdJ4buaSSBUSEnhu4ZVIFbhu4AgTkdIScOKTiBD4buoVSoqDQoNCiMjIDEuMS4gTMOdIERPIENI4buMTiDEkOG7gCBUw4BJDQoNCiZlbnNwOyZlbnNwOyZlbnNwO0No4buJIHPhu5EgVk4zMCBsw6AgbeG7mXQgY2jhu4kgc+G7kSBxdWFuIHRy4buNbmcgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIFZp4buHdCBOYW0sIMSR4bqhaSBkaeG7h24gY2hvIDMwIGPDtG5nIHR5IGPDsyB24buRbiBow7NhIHRo4buLIHRyxrDhu51uZyBs4bubbiBuaOG6pXQgdsOgIHRoYW5oIGtob+G6o24gY2FvIG5o4bqldCB0csOqbiBzw6BuIGdpYW8gZOG7i2NoIEhPU0UgZ2nDunAgbmjDoCDEkeG6p3UgdMawIMSRbyBsxrDhu51uZyBoaeG7h3Ugc3XhuqV0IHRo4buLIHRyxrDhu51uZywgxJHhu5NuZyB0aOG7nWkgY8WpbmcgbMOgIG3hu5l0IHRoxrDhu5tjIMSRbyBxdWFuIHRy4buNbmcgxJHhu4MgxJHDoW5oIGdpw6EgdMOsbmggaMOsbmgga2luaCB04bq/IHbDoCB0w6BpIGNow61uaCBj4bunYSBWaeG7h3QgTmFtIGjhu5cgdHLhu6MgY8OhYyBjaHV5w6puIGdpYSB2w6AgbmjDoCDEkeG6p3UgdMawIHRyb25nIHZp4buHYyB4w6FjIMSR4buLbmggaMaw4bubbmcgxJHhuqd1IHTGsCB2w6AgbOG7sWEgY2jhu41uIGPDoWMgY+G7lSBwaGnhur91IHRp4buBbSBuxINuZyBuaOG6sW0gbWFuZyBs4bqhaSBs4bujaSBuaHXhuq1uLg0KDQomZW5zcDsmZW5zcDsmZW5zcDtDaOG7iSBz4buRIFZOMzAgcGjhuqNuIMOhbmggYmnhur9uIMSR4buZbmcgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIHbDoCB0w6FjIMSR4buZbmcgY+G7p2Egbmhp4buBdSB54bq/dSB04buRIGtow6FjIG5oYXUgdHJvbmcgxJHDsyBnacOhIGPhu5UgcGhp4bq/dSBj4bunYSBjw6FjIGPDtG5nIHR5IHRyb25nIHLhu5cgVk4zMCBjw7MgdMOhYyDEkeG7mW5nIHRy4buxYyB0aeG6v3AgxJHhur9uIGdpw6EgdHLhu4sgY+G7p2EgY2jhu4kgc+G7kS4gU+G7sSBiaeG6v24gxJHhu5luZyBnacOhIGPhu5UgcGhp4bq/dSBwaOG7pSB0aHXhu5ljIHbDoG8gbmhp4buBdSB54bq/dSB04buRIG5oxrAgdMOsbmggaMOsbmggZG9hbmggbmdoaeG7h3AgbGnDqm4gcXVhbiDEkeG6v24gZG9hbmggdGh1LCBs4bujaSBuaHXhuq1uLGPhu5UgdOG7qWMsIGNow61uaCBzw6FjaCBraW5oIGRvYW5oIGPhu6dhIGPDtG5nIHQuIE5nb8OgaSByYSBsw6Agc+G7sSDhuqNuaCBoxrDhu59uZyBj4bunYSB0aOG7iyB0csaw4budbmcgY2h1bmcsIHTDrG5oIGjDrG5oIGtpbmggdOG6vyBjaMOtbmggdHLhu4sgdHJvbmcsIG5nb8OgaSBuxrDhu5tjIHbDoCB0w6JtIGzDvSBuaMOgIMSR4bqndSB0xrAgY8Wpbmcg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIGNo4buJIHPhu5EgbsOgeS4NCg0KJmVuc3A7JmVuc3A7JmVuc3A7VHV5IG5oacOqbiB0cm9uZyBraHXDtG4ga2jhu5UgYsOgaSBuZ2hpw6puIGPhu6l1LCBlbSBjaOG7iSB4ZW0geMOpdCBtw7QgcGjhu49uZyB0w6FjIMSR4buZbmcgY+G7p2EgZ2nDoSBj4buVIHBoaeG6v3UgY8OhYyBjw7RuZyB0eSB0cm9uZyBy4buXIFZOMzAgxJHhur9uIGNo4buJIHPhu5EgVk4zMCBk4buxYSB0csOqbiBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggxJFhIGJp4bq/bi4gDQoNCiMjIDEuMi4gTeG7pEMgVEnDilUgTkdIScOKTiBD4buoVQ0KDQotIEPhu6duZyBj4buRIGtp4bq/biB0aOG7qWMgbMO9IHRodXnhur90IMSRxrDhu6NjIGjhu41jLg0KDQotIE3DtCBwaOG7j25nIHTDoWMgxJHhu5luZyBj4bunYSBnacOhIGPhu5UgcGhp4bq/dSBjw6FjIGPDtG5nIHR5IHRyb25nIHLhu5cgVk4zMCDEkeG6v24gY2jhu4kgc+G7kSBWTjMwLg0KDQojIyAxLjMuIEThu64gTEnhu4ZVIFbDgCBQSOG6oE0gVkkgTkdIScOKTiBD4buoVQ0KDQojIyMgMS4zLjEuIEThu68gbGnhu4d1IG5naGnDqm4gY+G7qXUNCg0KJmVuc3A7JmVuc3A7JmVuc3A7ROG7ryBsaeG7h3UgbmdoacOqbiBj4bupdTogVGh1IHRo4bqtcCBnacOhIHRy4buLIGNo4buJIHPhu5EgVk4zMCB2w6AgZ2nDoSDEkcOzbmcgY+G7rWEgdGhlbyBuZ8OgeSBj4bunYSBjw6FjIGPhu5UgcGhp4bq/dSB04burIDI1LzAzLzIwMjEgxJHhur9uIDIxLzA3LzIwMjMgY+G7p2EgMzAgY8O0bmcgdHkgdHJvbmcgcuG7lyBWTjMwLiAoROG7sWEgdsOgbyBkYW5oIG3hu6VjIFZOMzAga+G7syB0aMOhbmcgNy8yMDIzIGRvIFPhu58gR2lhbyBk4buLY2ggQ2jhu6luZyBraG/DoW4gVFAuSENNIMSRw6MgY8O0bmcgYuG7kSkNCg0KTGluayBk4buvIGxp4buHdSA6IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFpWm0tVWhndWZHb05wd0EyZDlhMmlNRjZGREdNUTVHZy9lZGl0P3VzcD1zaGFyaW5nJm91aWQ9MTE1MTIyNjAzMjA2NjU2ODAzMDQyJnJ0cG9mPXRydWUmc2Q9dHJ1ZQ0KDQoNCkLhuqNuZyBk4buvIGxp4buHdSBj4bulIHRo4buDOg0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHhsKQ0KZGF0YW1wbm4gPC0gcmVhZF9leGNlbCgiRDovbXBubi9kYXRhbXBubi54bHN4IikNCmxpYnJhcnkoRFQpDQpkYXRhbXBubiAlPiUgRFQ6OmRhdGF0YWJsZShkYXRhbXBubikNCmBgYA0KDQoqIE5ndeG7k24gZOG7ryBsaeG7h3U6IGludmVzdGluZy5jb20NCg0KIyMjIDEuMy4yLiBQaOG6oW0gdmkgbmdoacOqbiBj4bupdQ0KDQpNw7QgcGjhu49uZyB0w6FjIMSR4buZbmcgY+G7p2EgZ2nDoSBj4buVIHBoaeG6v3UgY8OhYyBjw7RuZyB0eSB0cm9uZyBy4buXIFZOMzAgxJHhur9uIGNo4buJIHPhu5EgVk4zMCB0cm9uZyAxMDAwIG5nw6B5Lg0KDQojICoqQ0jGr8agTkcgMi4gQ8agIFPhu54gTMOdIFRIVVnhur5UKioNCg0KIyMgMi4xLiBNw5QgSMOMTkggSOG7kkkgUVVZIFRVWeG6vk4gVMONTkggxJBBIEJJ4bq+TiANCg0KJmVuc3A7JmVuc3A7JmVuc3A7TcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIMSRYSBiaeG6v24gY8OzIGThuqFuZzoNCg0KJCRZX3QgPSBcYmV0YV8wICsgXGJldGFfMVhfezF0fSArIFxiZXRhXzJYX3sydH0gKyBcZG90cyArIFxiZXRhX3trdH1YX3trdH0gKyB1X3QkJA0KDQpUcm9uZyDEkcOzOg0KDQokWV90JCBsw6AgYmnhur9uIHBo4bulIHRodeG7mWMgDQoNCiRrJCBsw6AgYmnhur9uIGdp4bqjaSB0aMOtY2ggJFhfe2l0fSQsIHRyb25nIMSRw7MgJGk9MSwyLC4uLixrJA0KDQpUcm9uZyBtw7QgaMOsbmggaOG7k2kgcXV5IHRyw6puIHNhaSBz4buRICRcZXBzaWxvbiQgdGjGsOG7nW5nIMSRxrDhu6NjIGdp4bqjIMSR4buLbmggdGjhu49hIG3Do246DQoNCiQkIHVfdCDiiYggbmlpZCgwLFxzaWdtYV4yKSwgdD0xLDIsLi4uLG4gICQkDQoNCi0gTm9ybWFsbHkgZGlzdHJpYnV0ZWQgKG4pOiBQaMOibiBwaOG7kWkgY2h14bqpbg0KDQotIEluZGVwZW5kZW50bHkgKGkpOiDEkOG7mWMgbOG6rXAgKMSR4buTbmcgcGjGsMahbmcgc2FpIGLhurFuZyBraMO0bmcpDQoNCi0gSWRlbnRpY2FsbHkgKGkpOiBnaeG7kW5nIG5oYXUgKHRydW5nIGLDrG5oIHbDoCBwaMawxqFuZyBzYWkgZ2nhu5FuZyBuaGF1KS4gVHJ1bmcNCmLDrG5oIGLhurFuZyAwIHbDoCBwaMawxqFuZyBzYWkgYuG6sW5nICRcc2lnbWFeMiQNCg0KRG8gduG6rXksIHNhaSBz4buRIGjhu5NpIHF1eSDEkcaw4bujYyBnaeG6oyDEkeG7i25oIGzDoCBuaGnhu4V1IHRy4bqvbmcgKHdoaXRlIG5vaXNlKSBjw7MgcGjDom4gcGjhu5FpDQpjaHXhuqluLg0KDQo9PiBUaGFtIHPhu5EgxrDhu5tjIGzGsOG7o25nIE9MUyAkXGJldGFfe2t0fSQgbMOgIHBow6JuIHBo4buRaSBjaHXhuqluIHbDoCBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgc3V5IGRp4buFbiB0aOG7kW5nIGvDqiAoa2nhu4NtIMSR4buLbmggZ2nhuqMgdGh1eeG6v3QgdsOgIMaw4bubYyBsxrDhu6NuZyBraG/huqNuZyB0aW4gY+G6rXkpLg0KDQpN4bulYyB0acOqdSBj4bunYSB2aeG7h2MgxrDhu5tjIGzGsOG7o25nIGjhu4cgc+G7kSBo4buTaSBxdXkgbMOgIHTDrG0gY8OhYyBnacOhIHRy4buLICRcYmV0YV8wJCwkXGJldGFfMXQkLCAkXGJldGFfMnQkLCAkXGRvdHMkLCAkXGJldGFfa3QkIHNhbyBjaG8gbcO0IGjDrG5oIGjhu5NpIHF1eSBwaMO5IGjhu6NwIHThu5F0IHbhu5tpIGThu68gbGnhu4d1IHRo4buxYyB04bq/IG5o4bqldC4gUXXDoSB0csOsbmggbsOgeSB0aMaw4budbmcgxJHGsOG7o2MgdGjhu7FjIGhp4buHbiBi4bqxbmcgcGjGsMahbmcgcGjDoXAgY+G7p2EgYsOsbmggcGjGsMahbmcgdOG7kWkgdGhp4buDdSAoT3JkaW5hcnkgTGVhc3QgU3F1YXJlcyAtIE9MUyksIHTDrG0gY8OhY2ggZ2nhuqNtIHRoaeG7g3UgdOG7lW5nIGLDrG5oIHBoxrDGoW5nIGPhu6dhIHNhaSBz4buRICR1X3QkLg0KDQpTYXUga2hpIMaw4bubYyBsxrDhu6NuZyBo4buHIHPhu5EgaOG7k2kgcXV5LCBjaMO6bmcgdGEgY+G6p24ga2nhu4NtIHRyYSB0w61uaCBjaMOtbmggeMOhYyBj4bunYSBtw7QgaMOsbmguIEPDoWMga2nhu4NtIMSR4buLbmggdGjGsOG7nW5nIMSRxrDhu6NjIHPhu60gZOG7pW5nIGJhbyBn4buTbSBraeG7g20gxJHhu4tuaCBo4buTaSBxdXksIGtp4buDbSB0cmEgdC1TdHVkZW50IGNobyB04burbmcgaOG7hyBz4buRLCBraeG7g20gdHJhIEYtc3RhdGlzdGljLCBraeG7g20gdHJhIMSRaeG7gXUga2nhu4duIHBow6JuIHBo4buRaSBj4bunYSBzYWkgc+G7kSwuLi4NCg0KU2F1IGtoaSDEkcOjIGtp4buDbSB0cmEgdsOgIHjDoWMgbmjhuq1uIHTDrW5oIGNow61uaCB4w6FjIGPhu6dhIG3DtCBow6xuaCwgY2jDum5nIHRhIGPDsyB0aOG7gyBz4butIGThu6VuZyBuw7MgxJHhu4MgZOG7sSDEkW/DoW4gZ2nDoSB0cuG7iyBj4bunYSBiaeG6v24gcGjhu6UgdGh14buZYyBk4buxYSB0csOqbiBnacOhIHRy4buLIGPhu6dhIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KIyMgMi4yLiBDxqAgU+G7niBUT8OBTiBD4bumQSBQSMavxqBORyBQSMOBUCBNT05URSBDQVJMTw0KDQomZW5zcDsmZW5zcDsmZW5zcDtQaMawxqFuZyBwaMOhcCBNb250ZSBDYXJsbyDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyDGsOG7m2MgbMaw4bujbmcgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCAkXG11JCBj4bunYSBt4buZdCBiaeG6v24gbmfhuqt1IG5oacOqbiAkWCQuIEdp4bqjIHPhu60gcXXDoSB0csOsbmggbcO0IHBo4buPbmcgc2luaCDEkcaw4bujYyBiaeG6v24gbmfhuqt1IG5oacOqbiAkWCQuIFF1w6EgdHLDrG5oIMSRw7MgxJHGsOG7o2MgbOG6t3AgbOG6oWkgbiBs4bqnbiDEkeG7mWMgbOG6rXAsIHNpbmggcmEgbiBiaeG6v24gbmfhuqt1IG5oacOqbiDEkeG7mWMgbOG6rXAsIGPDuW5nIHBow6JuIHBo4buRaSAkWF8xJCwkWF8yJCwkXGRvdHMkICwkWF9uJC4gxq/hu5tjIGzGsOG7o25nICRcbXUgPSBFWCQgdGjDtG5nIHF1YToNCiQkIFxtdV9uID0gKDEvbikgzqNfe2k9MX1ee259IFhfaSQkDQoNCkdpw6EgdHLhu4sgJFxtdV9uJCDEkcaw4bujYyBn4buNaSBsw6AgxrDhu5tjIGzGsOG7o25nIHRo4butIGzhurdwIGhheSDGsOG7m2MgbMaw4bujbmcgdGjhu60gdGjhu5FuZyBrw6ogxJHhu5FpIHbhu5tpICRcbXUkLiBMdeG6rXQgeeG6v3UgY8OhYyBz4buRIGzhu5tuIEtoaW5jaGluIGto4bqzbmcgxJHhu4tuaDoNCg0KTuG6v3UgJEV8WF8xfCA8IFxpbmZ0eSQsIHRow6wgJFxtdV9uIOKGkiBeUMK1JC4gTmjGsCB24bqteSwgJFxtdV9uJCBsw6AgbeG7mXQgxrDhu5tjIGzGsOG7o25nIHbhu69uZyBjaG8gJFxtdSQuIE3hurdjIGtow6FjIHRhIGPFqW5nIGPDsyAkRVxtdV9uPVxtdSQgbsOqbiAkXG11X24kIGPFqW5nIGzDoCBt4buZdCDGsOG7m2MgbMaw4bujbmcga2jDtG5nIGNo4buHY2ggY2hvICRcbXUkLiBEbyDEkcOzIG7hur91IGNow7puZyB0YSB0aeG6v24gaMOgbmggc+G7kSBuIGzhuqduIGzhurdwIGzhuqFpIG3DtCBwaOG7j25nIGtow6EgbOG7m24gdGjDrCAkXG11X24kIHPhur0gcuG6pXQgZ+G6p24gJFxtdSQuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IEx14bqtdCB54bq/dSBjw6FjIHPhu5EgbOG7m24gZOG6oW5nIEtoaW5jaGluIGzDoCBjxqEgc+G7nyB0b8OhbiBo4buNYyBjaG8gcGjGsMahbmcgcGjDoXAgTW9udGUgQ2FybG8uIA0KDQrEkOG7gyDEkcOhbmggZ2nDoSBzYWkgc+G7kSB2w6AgdOG7kWMgxJHhu5kgaOG7mWkgdOG7pSB0cm9uZyDGsOG7m2MgbMaw4bujbmcgYuG6sW5nIHBoxrDGoW5nIHBow6FwIE1vbnRlIENhcmxvLCB4w6l0IGPDoWMga+G6v3QgcXXhuqMgY+G7lSDEkWnhu4NuIHRyb25nIEzDvSB0aHV54bq/dCB4w6FjIHN14bqldDogDQoNCkdp4bqjIHPhu60gJFxtdV9uJCBsw6AgxrDhu5tjIGzGsOG7o25nIHRo4butIHRo4buRbmcga8OqIGPhu6dhICRcbXU9RShYKSQgc2FvIGNobyAkVmFyKFgpID0ge1xzaWdtYX1eMiA8IFxpbmZ0eSQuIEtoaSDEkcOzLCBjw7MgbeG7mXQgxJHDoW5oIGdpw6Egc2FpIHPhu5EgY+G7p2EgxrDhu5tjIGzGsOG7o25nIHRo4butIHRo4buRbmcga8OqIHRow7RuZyBxdWEgYuG6pXQgxJHhurNuZyB0aOG7qWMgQ2hlYnlzaGV2IG5oxrAgc2F1OiANCiQkIFAofFxtdV9uIC0gXG11fCBcbGVxIHtrXHNpZ21hfS9cc3FydHtufSApIFxnZXEgMSAtIDEva14yICQkIA0KduG7m2kgbeG7jWkgayA+IDANCg0KTmjGsCB24bqteSwga2hpIMSRw6FuaCBnacOhIHNhaSBz4buRIGPhu6dhIMaw4bubYyBsxrDhu6NuZyB0aOG7rSB0aOG7kW5nIGvDqiB0aMO0bmcgcXVhIGLhuqV0IMSR4bqzbmcgdGjhu6ljIENoZWJ5c2hldiwgdGEgdGjhuqV5IHLhurFuZyB24bubaSB4w6FjIHN14bqldCBraMO0bmcgYsOpIGjGoW4gJDEtIDEva14yJCwgc2FpIHPhu5EgY+G7p2EgxrDhu5tjIGzGsOG7o25nIHRo4butIHRo4buRbmcga8OqIGzDoCAka1xzaWdtYS9cc3FydHtufSQgduG7m2kgayA+IDAgYuG6pXQga+G7syAoY2jhurNuZyBo4bqhbiwgduG7m2kgaz0xMCwgdGjDrCB24bubaSB4w6FjIHN14bqldCBraMO0bmcgYsOpIGjGoW4gMCw5OSwgc2FpIHPhu5EgxrDhu5tjIGzGsOG7o25nIHRo4butIHRo4buRbmcga8OqIGzDoCAkMTBcc2lnbWEvXHNxcnR7bn0kKQ0KDQpHaeG6oyBz4butICRWYXIoWCkgPSB7XHNpZ21hfV4yIDwgXGluZnR5JCwgxJDhu4tuaCBsw70gZ2nhu5tpIGjhuqFuIHRydW5nIHTDom0gY2hvIHRo4bqleTogDQokJCBuXnviiJIxLzJ9KFxtdV9uIC1cbXUpIOKGkiBeRFxzaWdtYSBOKDAsMSkkJCAgDQpraGkgbiDihpIgJFxpbmZ0eSQuIA0KDQrhu54gxJHDonkgJOKGkiBeRCQgY2jhu4kgc+G7sSBo4buZaSB04bulIHRoZW8gcGjDom4gcGjhu5FpLiBHaeG7m2kgaOG6oW4gdHLDqm4gY8OzIHRo4buDIGJp4buDdSBkaeG7hW4gZMaw4bubaSBk4bqhbmcgc2F1OiANCiQkIFxtdV9uIOKJiF5EIFxtdSArIE4oMCwxKSB7XHNpZ21hLyBcc3FydHtufX0gICAkJCBraGkgbiBs4bubbi4gDQoNCkQg4bufIMSRw6J5IOKJiCBsw6Aga8O9IGhp4buHdSBjaOG7iSBz4buxIHjhuqVwIHjhu4kgdGhlbyBwaMOibiBwaOG7kWkuIERvIMSRw7MgbuG6v3Ugc+G7kSBs4bqnbiBtw7QgcGjhu49uZyBuIGzDoCBs4bubbiwgc2FpIHPhu5EgdHJvbmcgcGjGsMahbmcgcGjDoXAgTW9udGUgQ2FybG8gc+G6vTogDQoNCjEuIEdp4bqjbSB0aGVvIHThu7cgbOG7hyAkbl57LTEvMn0kIHThu6ljIGzDoCBzYWkgc+G7kSBj4bunYSDGsOG7m2MgbMaw4bujbmcgdGjhu60gdGjhu5FuZyBrw6ogY8OzIGThuqFuZyAkMChuXnstMS8yfSkkLiANCg0KMi4gWOG6pXAgeOG7iSBwaMOibiBwaOG7kWkgY2h14bqpbiBjaMOtbmggdOG6r2MuIA0KDQozLiBQaOG7pSB0aHXhu5ljIGThu68gbGnhu4d1IGLDoGkgdG/DoW4gY2jhu4kgcXVhIHBoxrDGoW5nIHNhaSAkXHNpZ21hXjIgPSBWYXIoWCkkLiANCg0KTmjGsCB24bqteSwgduG7m2kgbiDEkeG7pyBs4bubbiBzYWkgc+G7kSBj4bunYSDGsOG7m2MgbMaw4bujbmcgdGjhu60gdGjhu5FuZyBrw6ogY8OzIHRo4buDIMSRxrDhu6NjIMSRw6FuaCBnacOhIHF1YSBr4bq/dCBxdeG6oyBzYXU6IA0KDQpHaeG6oyBz4butICRcbXVfbiQgbMOgIMaw4bubYyBsxrDhu6NuZyB0aOG7rSB0aOG7kW5nIGvDqiBj4bunYSAkXG11PUUoWCkkLCBzYW8gY2hvICRWYXIoWCkgPSB7XHNpZ21hfV4yIDwgXGluZnR5JC4gS2hpIMSRw7MgduG7m2kgbiDEkeG7pyBs4bubbiwgdGEgY8OzIHRo4buDIGPDsyBt4buZdCDEkcOhbmggZ2nDoSBzYWkgc+G7kSBj4bunYSDGsOG7m2MgbMaw4bujbmcgdGjhu60gdGjhu5FuZyBrw6ogJFxtdV9uJCDEkeG7kWkgduG7m2kgJFxtdSQgdGhlbyBxdXkgdOG6r2MgJGsgLSBcc2lnbWEkIHNhdToNCiQkIFAofFxtdV9uIC0gXG11fCkgXGxlcSBrXHNpZ21hL1xzcXJ0e259IOKJiCBccGhpKGspIC0gXHBoaSgtaykgJCQNCnRyb25nIMSRw7MNCiQkIFxwaGkoaykgPSAxL1xzcXJ0eygyXHBpKX0gXGludF97LeKInn1ee3h9IGVee3stMS8yfSB0XjJ9ZHQgJCQNCg0KIyMgMi4zLiBLSE/huqJORyBUSU4gQ+G6rFkgQ0hPIFBIxq/GoE5HIFBIw4FQIE3DlCBQSOG7jk5HIE1PTlRFIENBUkxPDQoNCiZlbnNwOyZlbnNwOyZlbnNwO1Thu5FjIMSR4buZIGjhu5lpIHThu6UgY+G7p2EgcGjGsMahbmcgcGjDoXAgTW9udGUgQ2FybG8gZOG6oW5nICRuXnstMS8yfSQuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IG7hur91IHnDqnUgY+G6p3UgxJHhu5kgY2jDrW5oIHjDoWMgdGjDqm0gMSBjb24gc+G7kSB0aMOsIHRhIHBo4bqjaSB0xINuZyBuIGzDqm4gMTAwIGzhuqduLiBWw6wgduG6rXkgUGjGsMahbmcgcGjDoXAgTW9udGUgQ2FybG8gdGjGsOG7nW5nIGNo4buJIMSRxrDhu6NjIHPhu60gZOG7pW5nIGtoaSBuw7MgdGhv4bqjIG3Do24gecOqdSBj4bqndSBjaMOtbmggeMOhYyDEkeG6v24gw610IG5o4bqldCAyIGhv4bq3YyAzIGNvbiBz4buRIGPDsyDDvSBuZ2jEqWEuIFbDrCBjw7MgdOG7kWMgxJHhu5kgaOG7mWkgdOG7pSBjaOG6rW0sIG7Dqm4gc2FpIHPhu5EgdHJvbmcgdMOtbmggdG/DoW4gTW9udGUgQ2FybG8gY+G6p24gxJHGsOG7o2MgdMOtbmggdGjDtG5nIHF1YSBraG/huqNuZyB0aW4gY+G6rXkuIMSQ4buDIHjDonkgZOG7sW5nIGtob+G6o25nIHRpbiBj4bqteSBjaG8gcGjGsMahbmcgcGjDoXAgTW9udGUgQ2FybG8sIHRhIGNow7ogw70gcuG6sW5nOiB24bubaSBt4buXaSAkeiQgPiAwLA0KDQpEbyBiaeG6v24gY+G7kSANCiQkIGxpbV97biBcdG8gXGluZnR5fSBQKC16IFxsZXEge1xtdV9uIC0gXG11fS8gXHNxcnR7bn1cc2lnbWEgXGxlcSB6ICkgID0gUCgteiBcbGVxIE4oMCwxKSBcbGVxIHopJCQNClTGsMahbmcgxJHGsMahbmcgduG7m2kgYmnhur9uIGPhu5ENCiQkIC16IFxsZXEge1xtdV9uIC0gXG11fS8gXHNxcnR7bn1cc2lnbWEgXGxlcSB6ICQkIA0KTsOqbg0KJCQgXG11X24gLSB7XHNpZ21hIHp9L1xzcXJ0e259XGxlcSBcbXUgXGxlcSBcbXVfbiArIHtcc2lnbWEgen0vXHNxcnR7bn0kJA0KVsOsIHbhuq15IG7hur91ICR6JCDEkcaw4bujYyBjaOG7jW46IA0KJCQgbGltX3tuIFx0byBcaW5mdHl9IFAoXG11IFxpbiBbXG11X24gLSB7XHNpZ21hIHp9L1xzcXJ0e259ICwgXG11X24gKyB7XHNpZ21hIHp9L1xzcXJ0e259XSkgPSBQKC16IFxsZXEgTigwLDEpIFxsZXEgeikkJA0Kc2FvIGNobyAkUCgteiBcbGVxIE4oMCwxKSBcbGVxIHopID0gMS17XGRlbHRhfSQgKGNo4bqzbmcgaOG6oW4gY2hvIDEgLSAkXGRlbHRhJCA9IDAuOTUgdGjDrCAkeiQ9IDEuOTYpLCB0YSBjw7M6DQokJCBsaW1fe24gXHRvIFxpbmZ0eX0gUChcbXUgXGluIFtcbXVfbiAtIHtcc2lnbWEgen0vXHNxcnR7bn0gLCBcbXVfbiArIHtcc2lnbWEgen0vXHNxcnR7bn1dKSA9IDEtXGRlbHRhJCQNCk7Ds2kgY8OhY2gga2jDoWMsIGtoaSBuIGzhu5tuLCBraG/huqNuZw0KJCRbXG11X24gLSB7XHNpZ21hIHp9L1xzcXJ0e259ICwgXG11X24gKyB7XHNpZ21hIHp9L1xzcXJ0e259XSkkJA0KbMOgIGtob+G6o25nIHRpbiBj4bqteSAxMDAlKDEtJFxkZWx0YSQpIGNobyAkXG11JC4NCg0KRMSpIG5oacOqbiBraG/huqNuZyB0aW4gY+G6rXkgdHLDqm4ga2jDtG5nIHRo4buDIHTDrW5oIMSRxrDhu6NjIHRyb25nIHRo4buxYyB04bq/IHbDrCAkXG11JCBjaMawYSBiaeG6v3QuIFLhuqV0IG1heSwgJFxzaWdtYSQgY8OzIHRo4buDIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyB0aMO0bmcgcXVhIMSR4buZIGzhu4djaCB0acOqdSBjaHXhuqluIG3huqt1LCDEkcaw4bujYyB4w6FjIMSR4buLbmggbmjGsCBzYXU6DQokJFxoYXR7c19ufSA9IFxzcXJ0e3sxL3tuLTF9fVxzdW1fe2k9MX1ee259IChYX2kgLSBcbXVfbileMn0gJCQNClbDrCB24bqteSBraG/huqNuZyB0aW4gY+G6rXkgY2hvIHBoxrDGoW5nIHBow6FwIE1vbnRlIENhcmxvIHPhur0gbMOgDQokJFtcbXVfbiAtIHtcaGF0e3Nfbn0gen0vXHNxcnR7bn0gLCBcbXVfbiArIHtcaGF0e3Nfbn16fS9cc3FydHtufV0pJCQNCg0KIyMgMi40LiBTSU5IIEJJ4bq+TiBOR+G6qlUgTkhJw4pOIA0KDQomZW5zcDsmZW5zcDsmZW5zcDtDw6FjIHBoxrDGoW5nIHBow6FwIHNpbmggcmEgZMOjeSBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puIMSR4buZYyBs4bqtcCAkWF8xJCwkWF8yJCwkXGRvdHMkICwkWF9uJCB24bubaSBow6BtIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCBjaHVuZyAkRih4KSQgaGF5IGjDoG0gbeG6rXQgxJHhu5kgeMOhYyBzdeG6pXQgJHAoeCkkIGNobyB0csaw4bubYy4NCg0KR2nhuqMgc+G7rSBy4bqxbmcgdOG7k24gdOG6oWkgbeG7mXQgYmnhur9uIG5n4bqrdSBuaGnDqm4gJFUg4oi8IFVuaWYoMCwgMSkkLiBUcsOqbiBjxqEgc+G7nyBj4bunYSBiaeG6v24gbmfhuqt1IG5oacOqbiAkVSQgY8OzIHBow6JuIHBo4buRaSDEkeG7gXUsIG3hu5l0IHPhu5EgcGjGsMahbmcgcGjDoXAgc2luaCBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puIGPDsyBwaMOibiBwaOG7kWkga2jDtG5nIMSR4buBdSBzYXU6DQoNCi0gUGjGsMahbmcgcGjDoXAgdHJhIGPhu6l1IGLhuqNuZw0KDQotIFBoxrDGoW5nIHBow6FwIGJp4bq/biDEkeG7lWkgbmfGsOG7o2MNCg0KLSBQaMawxqFuZyBwaMOhcCBo4bujcCB0aMOgbmgNCg0KLSBQaMawxqFuZyBwaMOhcCBjaOG6rXAgY8OhYyBwaMOibiBwaOG7kWkgDQoNCi0gUGjGsMahbmcgcGjDoXAgY2jhuqVwIG5o4bqtbiB2w6AgYsOhYyBi4buPDQoNCiMjIDIuNS4gQ8OBQyBQSMOCTiBQSOG7kEkgWMOBQyBTVeG6pFQNCg0KJmVuc3A7JmVuc3A7JmVuc3A7TcO0IGjDrG5oIHjDoWMgc3XhuqV0IGNobyBwaMOibiBwaOG7kWkgdOG6p24gc3XhuqV0IGPhu6dhIG3hu5l0IGJp4bq/biBz4buRIG5n4bqrdSBuaGnDqm4gbGnDqm4gdOG7pWMgY8OzIGxpw6puIHF1YW4gxJHhur9uIHPhu7EgY2jhu41uIGzhu7FhIG3hu5l0IMSRxrDhu51uZyBjb25nLCDEkcaw4bujYyBn4buNaSBsw6AgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IGhheSBow6BtIG3huq10IMSR4buZIHjDoWMgc3XhuqV0IGPhu6dhIGJp4bq/biBz4buRIG5n4bqrdSBuaGnDqm4gxJHDsy4gTuG6v3UgcGjGsMahbmcgdHLDrG5oIGPhu6dhIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCBsacOqbiB04bulYyBuw6B5IMSRxrDhu6NjIGvDvSBoaeG7h3UgbMOgICRmKHgpJCwgdGjDrCB4w6FjIHN14bqldCBj4bunYSAkeCQgcsahaSB2w6BvIGtob+G6o25nICRhIDwgeCA8IGIkIGzDoCBkaeG7h24gdMOtY2ggYsOqbiBkxrDhu5tpIMSRxrDhu51uZyBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgJGYoeCkkIGdp4buvYSBoYWkgxJFp4buDbSAkYSQgdsOgICRiJC4gDQoNCiFbSMOsbmggMi4xLiBQaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgY2hvIG3hu5l0IGJp4bq/biBz4buRIG5n4bqrdSBuaGnDqm4gbGnDqm4gdOG7pWNdKEQ6L21wbm4vcGhhbnBob2l4YWNzdWF0LnBuZykNCg0KDQpLaGkgxJHDsywgxJHhu5MgdGjhu4sgY+G7p2EgbeG7mXQgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IGNodeG6qW4gduG7m2kgdHJ1bmcgYsOsbmggJFxtdSQgdsOgIMSR4buZIGzhu4djaCBjaHXhuqluICRcc2lnbWEkIHbhu5tpIHRydW5nIGLDrG5oICRcbXUkIG7hurFtIOG7nyB0cnVuZyB0w6JtIGPhu6dhIHBow6JuIHBo4buRaSB2w6AgcGjDom4gcGjhu5FpIG7DoHkgY8OzIHTDrW5oIMSR4buRaSB44bupbmcgcXVhIHRydW5nIGLDrG5oICRcbXUkIGPhu6dhIG7Dsy4gRG8gdOG7lW5nIGRp4buHbiB0w61jaCBu4bqxbSBkxrDhu5tpIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCBjaHXhuqluIG7DoHkgbMOgIGLhurFuZyB24bubaSAxLCDEkWnhu4F1IG7DoHkgaMOgbSDDvSBy4bqxbmcgZGnhu4duIHTDrWNoIG7hurFtIHbhu4EgcGjDrWEgYsOqbiBwaOG6o2kgY+G7p2EgJFxtdSQgbMOgIDAsNSB2w6AgZGnhu4duIHTDrWNoIG7hurFtIOG7nyBwaMOtYSBiw6puIHRyw6FpIGPhu6dhICRcbXUkIGPFqW5nIGzDoCAwLDUuIEjDrG5oIGThuqFuZyBj4bunYSBwaMOibiBwaOG7kWkgbsOgeSDEkcaw4bujYyBxdXnhur90IMSR4buLbmggYuG7n2kgJFxzaWdtYSQsIMSR4buZIGzhu4djaCBjaHXhuqluIGPhu6dhIHThu5VuZyB0aOG7gy4gTmjhu69uZyBnacOhIHRy4buLIGzhu5tuIGPhu6dhICRcc2lnbWEkIGzDoG0gZ2nhuqNtIMSRaSBjaGnhu4F1IGNhbyBj4bunYSDEkcaw4budbmcgY29uZyB2w6AgbMOgbSB0xINuZyBi4buBIHLhu5luZzsgY8OhYyBnacOhIHRy4buLIG5o4buPIGPhu6dhICRcc2lnbWEkIGzDoG0gdMSDbmcgY2hp4buBdSBjYW8gY+G7p2EgxJHGsOG7nW5nIGNvbmcgdsOgIGzDoG0gZ2nhuqNtIGLhu4EgcuG7mW5nLiANCg0KIVtIw6xuaCAyLjIuQ8OhYyBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgY2h14bqpbiB24bubaSBuaOG7r25nIGdpw6EgdHLhu4sga2jDoWMgbmhhdSBj4bunYSAkXG11JCB2w6AgJFxzaWdtYSRdKEQ6L21wbm4vaGluaGRhbmdraGFjbmhhdS5wbmcpDQoNCiMjIDIuNi4gTkjhu65ORyBUSFXhuqxOIEzhu6JJIFbDgCBLSMOUTkcgVEhV4bqsTiBM4buiSSBLSEkgU+G7rCBE4bukTkcgTcOUIFBI4buOTkcgTkfhuqpVIE5IScOKTg0KDQojIyMgMi42LjEuIFRodeG6rW4gbOG7o2kNCg0KLSBNw7QgcGjhu49uZyBjaG8gcGjDqXAgxJFp4buBdSBraGnhu4NuIHbDoCBoaeG7h3UgY2jhu4luaCBjw6FjIHRow60gbmdoaeG7h20sIHNhbyBjaG8gbcO0IGjDrG5oIHRow61jaCBo4bujcCBuaOG6pXQgduG7m2kgaOG7hyB0aOG7kW5nIGPhuqduIG5naGnDqm4gY+G7qXUuDQotIE3DtCBwaOG7j25nIGNobyBwaMOpcCByw7p0IG5n4bqvbiB0aOG7nWkgZ2lhbiB0cm9uZyBnaWFpIMSRb+G6oW4gbmdoacOqbiBj4bupdSBo4buHIHRo4buRbmcgdGjhu7FjLiBW4bubaSBz4buxIGdpw7pwIMSR4buhIGPhu6dhIG3DoXkgdMOtbmggxJFp4buHbiB04butLCB2aeG7h2MgdGnhur90IGtp4buHbSB0aOG7nWkgZ2lhbiBuZ2hpw6puIGPhu6l1IG3hu5l0IGjhu4cgdGjhu5FuZyB0aOG7sWMgbMOgIGto4bqjIHRoaS4NCi0gTcO0IHBo4buPbmcgY2hvIHBow6lwIHRo4buxYyBoaeG7h24gbmhp4buBdSBwaMOibiB0w61jaCBoaeG7h3UgcXXhuqMgY8OhYyBk4buvIGxp4buHdSBs4bubbiB2w6AgcGjhu6ljIHThuqFwLg0KLSBNw7QgcGjhu49uZyBraMO0bmcgcGjDoSBo4buPbmcgaOG7hyB0aOG7kW5nIHRo4buxYyBraGkgbmdoacOqbiBj4bupdSBuw7MuDQotIE3DtCBwaOG7j25nIMSR4bqjbSBi4bqjbyBhbiB0b8OgbiBjaG8gbmfGsOG7nWkgbmdoacOqbiBj4bupdSBo4buHIHRo4buRbmcgdGjhu7FjIChtw7QgcGjhu49uZyB24bulIG7hu5UgaOG6oXQgbmjDom4sIG3DtCBwaOG7j25nIGPDoWMgY8ahbiBzw7NuZyB0aOG6p24sIG3DtCBwaOG7j25nIHPhu7EgaG/huqF0IMSR4buZbmcgY+G7p2EgbsO6aSBs4butYSwgLi4uKS4NCg0KIyMjIDIuNi4yLiBLaMO0bmcgdGh14bqtbiBs4bujaQ0KDQotIE3DtCBwaOG7j25nIG3hu5l0IGjhu4cgdGjhu5FuZyBwaOG7qWMgdOG6oXAgY+G6p24gdOG7m2kgbeG7mXQgbcO0IGjDrG5oIHRvw6FuIGjhu41jIHBo4bupYyB04bqhcCB2w6AgbcOheSB0w61uaCBo4buXIHRy4bujLiDEkGnhu4F1IG7DoHkga2jDtG5nIHBo4bqjaSBsw7pjIG7DoG8gY8WpbmcgY8OzIHRyb25nIGPDtG5nIHTDoWMgdGjhu7FjIMSR4buLYS4NCi0gVmnhu4djIGNo4bqheSBt4buZdCBjaMawxqFuZyB0csOsbmggbcOheSB0w61uaCBjw7MgdGjhu4MgY2hp4bq/bSBuaGnhu4F1IHRo4budaSBnaWFuLCBu4bq/dSB0aHXhuq10IHRvw6FuIHZp4bq/dCByYSBjaMawYSB04buRaSDGsHUuDQotIE5naGnhu4dtIG3DtCBwaOG7j25nIGNo4buJIGzDoCBuZ2hp4buHbSB44bqlcCB44buJIHbhu5tpIG5naGnhu4dtIGdp4bqjaSB0w61jaCBuw6puIGPDsyBraOG6oyBuxINuZyB4deG6pXQgaGnhu4duIHNhaSBz4buRIMSRw6FuZyBr4buDLg0KDQojICoqQ0jGr8agTkcgMy4gWMOCWSBE4buwTkcgTcOUIEjDjE5IIE5HSEnDik4gQ+G7qFUqKg0KDQojIyAzLjEuIE3DtCBow6xuaCBo4buTaSBxdXkgbeG6q3UNCg0KJmVuc3A7JmVuc3A7JmVuc3A7VHJvbmcga2h1w7RuIGLDoGkgbmdoacOqbiBj4bupdSwgZW0gY2jhu4kgeGVtIHjDqXQgbcO0IHBo4buPbmcgdMOhYyDEkeG7mW5nIGPhu6dhIGdpw6EgY+G7lSBwaGnhur91IGPDoWMgY8O0bmcgdHkgdHJvbmcgcuG7lyBWTjMwIMSR4bq/biBjaOG7iSBz4buRIFZOMzAgZOG7sWEgdHLDqm4gbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIMSRYSBiaeG6v24uIEtoaSDEkcOzIG3DtCBow6xuaCBo4buTaSBxdXkgbeG6q3UgxJHGsOG7o2MgeMOieSBk4buxbmcgbmjGsCBzYXU6DQoNCiQkXGhhdHtWTjMwfSA9IFxoYXRcYmV0YV8wICsgXGhhdFxiZXRhXzFBQ0IgKyBcaGF0XGJldGFfMkJDTSArXGhhdFxiZXRhXzNCSUQgKyBcaGF0XGJldGFfNEJWSCArIFxoYXRcYmV0YV81Q1RHICsgXGhhdFxiZXRhXzZGUFQgKyBcaGF0XGJldGFfN0dBUyArIFxoYXRcYmV0YV84R1ZSICsgXGhhdFxiZXRhXzlIREIgKyBcaGF0XGJldGFfezEwfUhQRyArIFxoYXRcYmV0YV97MTF9TUJCICsgXGhhdFxiZXRhX3sxMn1NU04gKyBcaGF0XGJldGFfezEzfU1XRyArIFxoYXRcYmV0YV97MTR9UExYICsgXGhhdFxiZXRhX3sxNX1QT1cgKyBcaGF0XGJldGFfezE2fVNBQiArXGhhdFxiZXRhX3sxN31TSEIgKyBcaGF0XGJldGFfezE4fVNTQiArIFxoYXRcYmV0YV97MTl9U1NJICsgXGhhdFxiZXRhX3syMH1TVEIgKyBcaGF0XGJldGFfezIxfVRDQiArIFxoYXRcYmV0YV97MjJ9VFBCICsgXGhhdFxiZXRhX3syM31WQ0IgKyBcaGF0XGJldGFfezI0fVZITSArIFxoYXRcYmV0YV97MjV9VklCICsgXGhhdFxiZXRhX3syNn1WSUMgK1xoYXRcYmV0YV97Mjd9VkpDICsgXGhhdFxiZXRhX3syOH1WTk0gK1xoYXRcYmV0YV97Mjl9VlBCICsgXGhhdFxiZXRhX3szMH1WUkUgJCQNCg0KVHJvbmcgxJHDszoNCg0KLSBCaeG6v24gcGjhu6UgdGh14buZYyBsw6AgZ2nDoSB0cuG7iyBjaOG7iSBz4buRIFZOMzAgdGhlbyBuZ8OgLiDEkMahbiB24buLIGzDoCDEkWnhu4NtLg0KLSBCaeG6v24gxJHhu5ljIGzhuq1wIGfhu5NtIGdpw6EgxJHDs25nIGPhu61hIGPDoWMgbcOjIGPhu5UgcGhp4bq/dSBBQ0IsIEJDTSwJQklELAlCVkgsCUNURywJRlBULAlHQVMsCUdWUiwJSERCLAlIUEcsCU1CQiwJTVNOLAlNV0csCVBMWCwJUE9XLAlTQUIsCVNIQiwJU1NCLAlTU0ksCVNUQiwJVENCLAlUUEIsCVZDQiwJVkhNLAlWSUIsCVZJQywJVkpDLAlWTk0sCVZQQiB2w6AJVlJFLiDEkMahbiB24buLIGzDoCDEkeG7k25nLg0KDQoNCiMjIDMuMi4gWGVtIHjDqXQgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXAgdsOgIGJp4bq/biBwaOG7pSB0aHXhu5ljDQoNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShyZWFkeGwpDQpkYXRhbXBubiA8LSByZWFkX2V4Y2VsKCJEOi9tcG5uL2RhdGFtcG5uLnhsc3giKQ0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kQUNCLHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRBQ0IpKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRCQ00scGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJEJDTSkpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJEJJRCxwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kQklEKSkNCg0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kQlZILHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRCVkgpKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRDVEcscGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJENURykpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJEZQVCxwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kRlBUKSkNCg0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kR0FTLHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRHQVMpKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRHVlIscGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJEdWUikpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJEhEQixwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kSERCKSkNCg0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kSFBHLHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRIUEcpKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRNQkIscGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJE1CQikpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJE1TTixwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kTVNOKSkNCg0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kTVdHLHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRNV0cpKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRQTFgscGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJFBMWCkpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJFBPVyxwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kUE9XKSkNCg0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kU0FCLHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRTQUIpKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRTSEIscGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJFNIQikpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJFNTQixwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kU1NCKSkNCg0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kU1NJLHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRTU0kpKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRTVEIscGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJFNUQikpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJFRDQixwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kVENCKSkNCg0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kVFBCLHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRUUEIpKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRWQ0IscGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJFZDQikpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJFZITSxwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kVkhNKSkNCg0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kVklCLHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRWSUIpKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRWSUMscGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJFZJQykpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJFZKQyxwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kVkpDKSkNCg0KcGxvdChkYXRhbXBubiRWTjMwIH4gZGF0YW1wbm4kVk5NLHBjaD0xNiApDQphYmxpbmUobG0oZGF0YW1wbm4kVk4zMH5kYXRhbXBubiRWTk0pKQ0KDQpwbG90KGRhdGFtcG5uJFZOMzAgfiBkYXRhbXBubiRWUEIscGNoPTE2ICkNCmFibGluZShsbShkYXRhbXBubiRWTjMwfmRhdGFtcG5uJFZQQikpDQoNCnBsb3QoZGF0YW1wbm4kVk4zMCB+IGRhdGFtcG5uJFZSRSxwY2g9MTYgKQ0KYWJsaW5lKGxtKGRhdGFtcG5uJFZOMzB+ZGF0YW1wbm4kVlJFKSkNCg0KYGBgDQoNCkThu7FhIHbDoG8gYmnhu4N1IMSR4buTIHBow6JuIHTDoW4sIHRhIHRo4bqleToNCg0KQmnhur9uIEFDQiwgQlZILCBDVEcsIEdWUiwgSERCLCBIUEcsIE1CQiwgTVNOLCBNV0csIFBMWCwgUE9XLCBTSEIsIFNTSSwgU1RCLCBUQ0IsIFRQQiwgVkhNLAlWSUIsIFZJQywJVkpDLCBWTk0sIFZQQiwgVlJFIGPDsyBt4buRaSBxdWFuIGjhu4cgxJHhu5NuZyBiaeG6v24gduG7m2kgVk4zMC4gS2hpIMSRw7MgZOG7sSDEkW/DoW4gaOG7hyBz4buRIGjhu5NpIHF1eSBj4bunYSBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXAgbmjhuq1uIGdpw6EgdHLhu4sgZMawxqFuZy4NCg0KQmnhur9uIEJDTSwgQklELCBGUFQsIEdBUywgU0FCLCBTU0IsIFZDQiBjw7MgbeG7kWkgcXVhbiBo4buHIG5naOG7i2NoIGJp4bq/biB24bubaSBWTjMwLktoaSDEkcOzIGThu7EgxJFvw6FuIGjhu4cgc+G7kSBo4buTaSBxdXkgY+G7p2EgY8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wIG5o4bqtbiBnacOhIHRy4buLIMOibS4NCg0KIyMgMy4zLiDGr+G7m2MgbMaw4bujbmcgaOG7hyBz4buRIG3DtCBow6xuaCBo4buTaSBxdXkNCg0KYGBge3J9DQpsaWJyYXJ5KHN0YXRzKQ0KbW9oaW5oIDwtIGxtKFZOMzAgfiBBQ0IgKyBCQ00gKyBCSUQgKyBCVkggKyBDVEcgKyBGUFQgKyBHQVMgKyBHVlIgKyBIREIgKyBIUEcgKyBNQkIgKwlNU04gKwlNV0cgKwlQTFggKwlQT1cgKwlTQUIgKwlTSEIgKwlTU0IgKwlTU0kgKwlTVEIgKwlUQ0IgKwlUUEIgKwlWQ0IgKwlWSE0gKwlWSUIgKwlWSUMgKwlWSkMgKwlWTk0gKwlWUEIgKwlWUkUsIGRhdGEgPSBkYXRhbXBubikNCnN1bW1hcnkobW9oaW5oKQ0KYGBgDQpOaMawIHbhuq15LCBtw7QgaMOsbmggaOG7k2kgcXV5IGPDsyBk4bqhbmcgc2F1Og0KDQokJCBWTjMwPTEwOSso4oiSMC4wMDAwNDAzMinDl0FDQiso4oiSMC4wMDAxNjY2KcOXQkNNKyjiiJIwLjAwMDI3NTUpw5dCSUQrKOKIkjAuMDAwNTYxNSnDl0JWSCswLjAwMTY2NMOXQ1RHKzAuMDAwNDUwOcOXRlBUKzAuMDAwMzIwN8OXR0FTKzAuMDAxODkyw5dHVlIrMC4wMDI0MTjDl0hEQiswLjAwMzgzMcOXSFBHKzAuMDA0NDIxw5dNQkIrMC4wMDAzODY4w5dNU04rMC4wMDI2NzTDl01XRyso4oiSMC4wMDAxOTI1KcOXUExYKzAuMDAyNzAxw5dQT1crMC4wMDAxMzk0w5dTQUIrMC4wMDE4NjPDl1NIQiswLjAwMDUzN8OXU1NCKyjiiJIwLjAwMDI5NDMpw5dTU0krMC4wMDEwOTnDl1NUQiswLjAwMjU4McOXVENCKzAuMDAwMTM2OMOXVFBCKzAuMDAwMzU0OcOXVkNCKzAuMDAxMjQzw5dWSE0rMC4wMDI5NzjDl1ZJQiswLjAwMTMxMMOXVklDKzAuMDAwMTcxMsOXVkpDKzAuMDAwMjg3N8OXVk5NKzAuMDA0ODIyw5dWUEIrKOKIkjAuMDAxMDY3KcOXVlJFICQkDQoNCsOdIG5naMSpYSBtw7QgaMOsbmg6DQoNCi0gS2hpIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgdGhheSDEkeG7lWksIGdpw6EgY+G7lSBwaGnhur91IEFDQiB0xINuZyBsw6puIDEgxJHhu5NuZyB0aMOsIGNo4buJIHPhu5EgVk4zMCBnaeG6o20gMC4wMDAxNjY2IMSRaeG7g20uDQoNCi0gS2hpIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgdGhheSDEkeG7lWksIGdpw6EgY+G7lSBwaGnhur91IEJDTSB0xINuZyBsw6puIDEgxJHhu5NuZyB0aMOsIGNo4buJIHPhu5EgVk4zMCBnaeG6o20gMC4wMDAwNDAzMiDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBCSUQgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgZ2nhuqNtIDAuMDAwMjc1NSDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBCVkggdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgZ2nhuqNtIDAuMDAwNTYxNSDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBDVEcgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgdMSDbmcgMC4wMDE2NjQgxJFp4buDbS4NCg0KLSBLaGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaSwgZ2nDoSBj4buVIHBoaeG6v3UgRlBUIHTEg25nIGzDqm4gMSDEkeG7k25nIHRow6wgY2jhu4kgc+G7kSBWTjMwIHTEg25nIDAuMDAwNDUwOSDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBHQVMgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgdMSDbmcgMC4wMDAzMjA3IMSRaeG7g20uDQoNCi0gS2hpIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgdGhheSDEkeG7lWksIGdpw6EgY+G7lSBwaGnhur91IEdWUiB0xINuZyBsw6puIDEgxJHhu5NuZyB0aMOsIGNo4buJIHPhu5EgVk4zMCB0xINuZyAwLjAwMTg5MiDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBIREIgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgdMSDbmcgMC4wMDI0MTggxJFp4buDbS4NCg0KLSBLaGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaSwgZ2nDoSBj4buVIHBoaeG6v3UgSFBHIHTEg25nIGzDqm4gMSDEkeG7k25nIHRow6wgY2jhu4kgc+G7kSBWTjMwIHTEg25nIDAuMDAzODMxIMSRaeG7g20uDQoNCi0gS2hpIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgdGhheSDEkeG7lWksIGdpw6EgY+G7lSBwaGnhur91IE1TTiB0xINuZyBsw6puIDEgxJHhu5NuZyB0aMOsIGNo4buJIHPhu5EgVk4zMCB0xINuZyAwLjAwMDM4NjggxJFp4buDbS4NCg0KLSBLaGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaSwgZ2nDoSBj4buVIHBoaeG6v3UgTVdHIHTEg25nIGzDqm4gMSDEkeG7k25nIHRow6wgY2jhu4kgc+G7kSBWTjMwIHTEg25nIDAuMDAyNjc0IMSRaeG7g20uDQoNCi0gS2hpIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgdGhheSDEkeG7lWksIGdpw6EgY+G7lSBwaGnhur91IFBMWCB0xINuZyBsw6puIDEgxJHhu5NuZyB0aMOsIGNo4buJIHPhu5EgVk4zMCBnaeG6o20gMC4wMDAxOTI1IMSRaeG7g20uDQoNCi0gS2hpIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgdGhheSDEkeG7lWksIGdpw6EgY+G7lSBwaGnhur91IFBPVyB0xINuZyBsw6puIDEgxJHhu5NuZyB0aMOsIGNo4buJIHPhu5EgVk4zMCB0xINuZyAwLjAwMjcwMSDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBTQUIgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgdMSDbmcgMC4wMDAxMzk0IMSRaeG7g20uDQoNCi0gS2hpIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgdGhheSDEkeG7lWksIGdpw6EgY+G7lSBwaGnhur91IFNIQiB0xINuZyBsw6puIDEgxJHhu5NuZyB0aMOsIGNo4buJIHPhu5EgVk4zMCB0xINuZyAwLjAwMTg2MyDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBTU0IgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgdMSDbmcgMC4wMDA1MzcgxJFp4buDbS4NCg0KLSBLaGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaSwgZ2nDoSBj4buVIHBoaeG6v3UgU1NJIHTEg25nIGzDqm4gMSDEkeG7k25nIHRow6wgY2jhu4kgc+G7kSBWTjMwIGdp4bqjbSAwLjAwMDI5NDMgxJFp4buDbS4NCg0KLSBLaGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaSwgZ2nDoSBj4buVIHBoaeG6v3UgU1RCIHTEg25nIGzDqm4gMSDEkeG7k25nIHRow6wgY2jhu4kgc+G7kSBWTjMwIHTEg25nIDAuMDAwMTkyNSDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBUQ0IgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgdMSDbmcgMC4wMDI1ODEgxJFp4buDbS4NCg0KLSBLaGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaSwgZ2nDoSBj4buVIHBoaeG6v3UgVFBCIHTEg25nIGzDqm4gMSDEkeG7k25nIHRow6wgY2jhu4kgc+G7kSBWTjMwIHTEg25nIDAuMDAwMTM2OCDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBWQ0IgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgdMSDbmcgMC4wMDAzNTQ5IMSRaeG7g20uDQoNCi0gS2hpIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgdGhheSDEkeG7lWksIGdpw6EgY+G7lSBwaGnhur91IFZITSB0xINuZyBsw6puIDEgxJHhu5NuZyB0aMOsIGNo4buJIHPhu5EgVk4zMCB0xINuZyAwLjAwMTI0MyDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBWSUIgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgdMSDbmcgMC4wMDI5NzggxJFp4buDbS4NCg0KLSBLaGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaSwgZ2nDoSBj4buVIHBoaeG6v3UgVklDIHTEg25nIGzDqm4gMSDEkeG7k25nIHRow6wgY2jhu4kgc+G7kSBWTjMwIHTEg25nIDAuMDAxMzEwIMSRaeG7g20uDQoNCi0gS2hpIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgdGhheSDEkeG7lWksIGdpw6EgY+G7lSBwaGnhur91IFZKQyB0xINuZyBsw6puIDEgxJHhu5NuZyB0aMOsIGNo4buJIHPhu5EgVk4zMCB0xINuZyAwLjAwMDE3MTIgxJFp4buDbS4NCg0KLSBLaGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaSwgZ2nDoSBj4buVIHBoaeG6v3UgVk5NIHTEg25nIGzDqm4gMSDEkeG7k25nIHRow6wgY2jhu4kgc+G7kSBWTjMwIHTEg25nIDAuMDAwMjg3NyDEkWnhu4NtLg0KDQotIEtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIHRoYXkgxJHhu5VpLCBnacOhIGPhu5UgcGhp4bq/dSBWUEIgdMSDbmcgbMOqbiAxIMSR4buTbmcgdGjDrCBjaOG7iSBz4buRIFZOMzAgdMSDbmcgMC4wMDQ4MjIgxJFp4buDbS4NCg0KLSBLaGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyB0aGF5IMSR4buVaSwgZ2nDoSBj4buVIHBoaeG6v3UgVlJFIHTEg25nIGzDqm4gMSDEkeG7k25nIHRow6wgY2jhu4kgc+G7kSBWTjMwIGdp4bqjbSAwLjAwMTA2NyDEkWnhu4NtLg0KDQpE4buxYSB2w6BvIGvhur90IHF14bqjIMaw4bubYyBsxrDhu6NuZywgdGEgdGjhuqV5IGPDoWMgYmnhur9uIEJDTSwgQlZILCBDVEcsIEZQVCwgR0FTLCBHVlIsIEhEQiwgSFBHLCBNQkIsIE1TTiwgTVdHLCBQT1csIFNIQiwgU1NCLCBTVEIsIFRDQiwgVkNCLCBWSE0sIFZJQiwgVklDLCBWSkMsIFZOTSwgVlBCLCBWUkUgY8OzIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiB2w6AgY8OzIHTDoWMgxJHhu5luZyDEkcOhbmcga+G7gyDEkeG6v24gYmnhur9uIHBo4bulIHRodeG7mWMgVk4zMC4gVHJvbmcga2hpIMSRw7MsIGPDoWMgYmnhur9uIEFDQiwgQklEIHbDoCBQTFggY8OzIGjhu4cgc+G7kSBraMO0bmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiB2w6AgY8OzIHRo4buDIGxv4bqhaSBi4buPIGto4buPaSBtw7QgaMOsbmguDQoNCk5oxrAgduG6rXkgY8OzIHRo4buDIHZp4bq/dCBs4bqhaSBtw7QgaMOsbmggbmjGsCBzYXU6DQoNCiQkVk4zMD0xMDkrKOKIkjAuMDAwMTY2NinDl0JDTSso4oiSMC4wMDA1NjE1KcOXQlZIKzAuMDAxNjY0w5dDVEcrMC4wMDA0NTA5w5dGUFQrMC4wMDAzMjA3w5dHQVMrMC4wMDE4OTLDl0dWUiswLjAwMjQxOMOXSERCKzAuMDAzODMxw5dIUEcrMC4wMDQ0MjHDl01CQiswLjAwMDM4NjjDl01TTiswLjAwMjY3NMOXTVdHKzAuMDAyNzAxw5dQT1crMC4wMDAxMzk0w5dTQUIrMC4wMDE4NjPDl1NIQiswLjAwMDUzN8OXU1NCKyjiiJIwLjAwMDI5NDMpw5dTU0krMC4wMDEwOTnDl1NUQiswLjAwMjU4McOXVENCKzAuMDAwMTM2OMOXVFBCKzAuMDAwMzU0OcOXVkNCKzAuMDAxMjQzw5dWSE0rMC4wMDI5NzjDl1ZJQiswLjAwMTMxMMOXVklDKzAuMDAwMTcxMsOXVkpDKzAuMDAwMjg3N8OXVk5NKzAuMDA0ODIyw5dWUEIrKOKIkjAuMDAxMDY3KcOXVlJFJCQNCg0KDQojIyAzLjQuIEtp4buDbSDEkeG7i25oIG3DtCBow6xuaC4NCg0KROG7sWEgdsOgbyBr4bq/dCBxdeG6oyBtw7QgaMOsbmggaOG7k2kgcXV5IG3huqt1LCB0YSB0aOG6pXk6DQoNCkjhu4cgc+G7kSB4w6FjIMSR4buLbmggbcO0IGjDrG5oICRSXjI9MC45OTkxICQuIMSQaeG7gXUgbsOgeSBjw7MgbmdoxKlhIGzDoCA5OSw5MSUgYmnhur9uIMSR4buZbmcgY+G7p2EgY2jhu4kgc+G7kSBWTjMwIMSRxrDhu6NjIGdp4bqjaSB0aMOtY2ggYuG7n2kgZ2nDoSBjw6FjIGPhu5UgcGhp4bq/dSB0cm9uZyBy4buXIFZOMzAuDQoNClRy4buLIHRo4buRbmcga8OqIEYtc3RhdGlzdGljIGPDsyAgcC12YWx1ZSA8IDAuMDUgbsOqbiBjw7MgdGjhu4Mga+G6v3QgbHXhuq1uIGjDoG0gaOG7k2kgcXV5IG3huqt1IHBow7kgaOG7o3AgaGF5IGPDsyDDrXQgbmjhuqV0IG3hu5l0IGJp4bq/biDEkeG7mWMgbOG6rXAgY8OzIHTDoWMgxJHhu5luZyDEkeG6v24gYmnhur9uIHBo4bulIHRodeG7mWMuIA0KDQojICoqQ0jGr8agTkcgNC4gTcOUIFBI4buOTkcgQ8OBQyBCSeG6vk4gVsOAIENI4bqgWSBNw5QgSMOMTkggTkdIScOKTiBD4buoVSoqDQoNCkThu7FhIHbDoG8gZOG7ryBsaeG7h3UgbeG6q3UgbmdoacOqbiBt4bqrdSwgdGEgdMOtbmggxJHGsOG7o2MgdHJ1bmcgYsOsbmggdsOgIMSR4buZIGzhu4djaCBjaHXhuqluIGPhu6dhIGPDoWMgYmnhur9uIG5oxrAgc2F1Og0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeShwc3ljaCkNCmRhdGFtcG5uIDwtIHJlYWRfZXhjZWwoIkQ6L21wbm4vZGF0YW1wbm4ueGxzeCIpDQpkZXNjcmliZShkYXRhbXBubikNCmBgYA0KDQojIyA0LjEuIE3DtCBwaOG7j25nIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KVGnhur9uIGjDoG5oIG3DtCBwaOG7j25nIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcCB0cm9uZyAxMDAwIG5nw6B5IHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4gduG7m2kgdHJ1bmcgYsOsbmggdsOgIMSR4buZIGzhu4djaCBjaHXhuqluIHTDrW5oIMSRxrDhu6NjIHThu6sgbeG6q3U6IA0KDQpgYGB7cn0NCkJDTSA8LSBybm9ybShuID0gMTAwMCwgbWVhbiA9NjkwMDkuMDgsIHNkID0gMTQ4MTUuMzYgKQ0KQlZIIDwtIHJub3JtKG4gPSAxMDAwLCBtZWFuID01MTE3NC43NCwgc2QgPSA0NTAwLjkyICkNCkNURyA8LSBybm9ybShuID0gMTAwMCwgbWVhbiA9MzAxMDAuMzksIHNkID0gNDA1NC42OSApDQpGUFQgPC0gcm5vcm0obiA9IDEwMDAsIG1lYW4gPTc4MDAyLjI3LCBzZCA9IDc2NTIuMDggKQ0KR0FTIDwtIHJub3JtKG4gPSAxMDAwLCBtZWFuID0xMDA5NzQuNDcsIHNkID0gMTE1MTAuNDMgKQ0KR1ZSIDwtIHJub3JtKG4gPSAxMDAwLCBtZWFuID0yNTM0MC44MCwgc2QgPSA4NDI2LjkyICkNCkhEQiA8LSBybm9ybShuID0gMTAwMCwgbWVhbiA9MTk5NTIuMDYsIHNkID0gMjQ1Mi45MiApDQpIUEcgPC0gcm5vcm0obiA9IDEwMDAsIG1lYW4gPTI4NTU3LjU1LCBzZCA9IDgxMDEuOTIgKQ0KTUJCIDwtIHJub3JtKG4gPSAxMDAwLCBtZWFuID0yMTcwNS45OCwgc2QgPSAzODE3LjQ4ICkNCk1TTiA8LSBybm9ybShuID0gMTAwMCwgbWVhbiA9MTAxMTU2LjM3LCBzZCA9IDE4Njk1Ljg0ICkNCk1XRyA8LSBybm9ybShuID0gMTAwMCwgbWVhbiA9NTU5NzIuOTIsIHNkID0gMTIxMjAuNDQgKQ0KUE9XIDwtIHJub3JtKG4gPSAxMDAwLCBtZWFuID0xMzQ1NC40MSwgc2QgPSA2ODU4LjcxICkNClNBQiA8LSBybm9ybShuID0gMTAwMCwgbWVhbiA9MTYzMTE5LjMyLCBzZCA9IDE1NzU1LjU2ICkNClNIQiA8LSBybm9ybShuID0gMTAwMCwgbWVhbiA9MTQ5MzIuNjMsIHNkID0gNDA3MC42MCApDQpTU0IgPC0gcm5vcm0obiA9IDEwMDAsIG1lYW4gPTI5NDI5LjAwLCBzZCA9IDM1NDAuMjIgKQ0KU1NJIDwtIHJub3JtKG4gPSAxMDAwLCBtZWFuID0yNzgxMi40OCwgc2QgPSA5MDE5LjM2ICkNClNUQiA8LSBybm9ybShuID0gMTAwMCwgbWVhbiA9MjYxNDAuNzIsIHNkID0gNDQxMy40NSApDQpUQ0IgPC0gcm5vcm0obiA9IDEwMDAsIG1lYW4gPTM5ODI0Ljc5LCBzZCA9IDEwMjExLjgwICkNClRQQiA8LSBybm9ybShuID0gMTAwMCwgbWVhbiA9MjU0MTEuMzEsIHNkID0gNjAyNy44NCApDQpWQ0IgPC0gcm5vcm0obiA9IDEwMDAsIG1lYW4gPTgxODA1LjY5LCBzZCA9IDgyNjIuMjkgKQ0KVkhNIDwtIHJub3JtKG4gPSAxMDAwLCBtZWFuID02NTE3OC4yOSwgc2QgPSAxMzMzMy45MiApDQpWSUIgPC0gcm5vcm0obiA9IDEwMDAsIG1lYW4gPTI2NDYwLjYxLCBzZCA9IDY0NzMuMDYgKQ0KVklDIDwtIHJub3JtKG4gPSAxMDAwLCBtZWFuID03NzM0Ni41OCwgc2QgPSAyMDY5Mi42OSApDQpWSkMgPC0gcm5vcm0obiA9IDEwMDAsIG1lYW4gPTExNzk2OS4zNiwgc2QgPSAxMzUyOS43OSApDQpWTk0gPC0gcm5vcm0obiA9IDEwMDAsIG1lYW4gPTc2NDQ4LjE3LCBzZCA9IDY3NTUuMDEgKQ0KVlBCIDwtIHJub3JtKG4gPSAxMDAwLCBtZWFuID0yMTE5Mi4yNSwgc2QgPSAyMTE5Mi4yNSApDQpWUkUgPC0gcm5vcm0obiA9IDEwMDAsIG1lYW4gPTI5Mjk5LjY2LCBzZCA9IDI1MTUuOTAgKQ0KYGBgDQoNCiMjIDQuMi4gTcO0IHBo4buPbmcgYmnhur9uIHBo4bulIHRodeG7mWMgKEdpw6EgdHLhu4sgY2jhu4kgc+G7kSBWTjMwKQ0KDQpgYGB7cn0NClZOMzAgPSAxMDktMC4wMDAxNjY2KkJDTS0wLjAwMDU2MTUqQlZIKzAuMDAxNjY0KkNURyswLjAwMDQ1MDkqRlBUKzAuMDAwMzIwNypHQVMrMC4wMDE4OTIqR1ZSKzAuMDAyNDE4KkhEQiswLjAwMzgzMSpIUEcrMC4wMDQ0MjEqTUJCKzAuMDAwMzg2OCpNU04rMC4wMDI2NzQqTVdHKzAuMDAyNzAxKlBPVyswLjAwMDEzOTQqU0FCKzAuMDAxODYzKlNIQiswLjAwMDUzNypTU0ItMC4wMDAyOTQzKlNTSSswLjAwMTA5OSpTVEIrMC4wMDI1ODEqVENCKzAuMDAwMTM2OCpUUEIrMC4wMDAzNTQ5KlZDQiswLjAwMTI0MypWSE0rMC4wMDI5NzgqVklCKzAuMDAxMzEwKlZJQyswLjAwMDE3MTIqVkpDKzAuMDAwMjg3NypWTk0rMC4wMDQ4MjIqVlBCLTAuMDAxMDY3KlZSRQ0KVk4zMCA8LSBkYXRhLmZyYW1lKFZOMzApDQpgYGANCg0KIyMgNC4zLiBUaOG7kW5nIGvDqiBtw7QgdOG6ow0KDQpgYGB7cn0NCmxpYnJhcnkocHN5Y2gpDQpkZXNjcmliZShWTjMwKQ0KYGBgDQoNClThu6sga+G6v3QgcXXhuqMgdGjhu5FuZyBrw6ogbcO0IHThuqMgbcO0IHBo4buPbmcgY2jhu4kgc+G7kSBWTjMwIGNobyB0aOG6pXk6DQogIA0KR2nDoSB0cuG7iyBjaOG7iSBz4buRIFZOMzAgdHJ1bmcgYsOsbmggbMOgIDEzMTQuMjkgxJFp4buDbSANCg0KR2nDoSB0cuG7iyBjaOG7iSBz4buRIFZOMzAgbmjhu48gbmjhuqV0IGzDoCA5NTYuMDYgxJFp4buDbQ0KDQpHacOhIHRy4buLIGNo4buJIHPhu5EgVk4zMCBs4bubbiBuaOG6pXQgbMOgIDE3MTUuNyDEkWnhu4NtDQoNCsSQ4buZIGzhu4djaCBjaHXhuqluIHRo4buDIGhp4buHbiBt4bupYyDEkeG7mSBiaeG6v24gxJHhu5luZyB2w6AgcGjDom4gdMOhbiBj4bunYSBk4buvIGxp4buHdS4gxJDhu5kgbOG7h2NoIGNodeG6qW4gY+G7p2EgVk4zMCBsw6AgMTIzLjIzDQoNCsSQ4buZIGzhu4djaCAoU2tld25lc3MpdsOgIMSR4buZIG5o4buNbiAoS3VydG9zaXMpIGPDsyBnacOhIHRy4buLIGfhuqduIGLhurFuZyAwIGNobyB0aOG6pXkNCmThu68gbGnhu4d1IGPDsyBwaMOibiBwaOG7kWkgZ+G6p24gY2h14bqpbi4NCg0KIyMgNC40LiBNw7QgcGjhu49uZyBiaeG7g3UgxJHhu5MgY2jhu4kgc+G7kSBWTjMwDQoNClRy4buxYyBxdWFuIGjDs2EgZOG7ryBsaeG7h3UgYuG6sW5nIGJp4buDdSDEkeG7kyBoaXN0b2dyYW0NCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHNjYWxlcykNCmdncGxvdChkYXRhID0gVk4zMCwgYWVzKHggPSBWTjMwKSkgKyANCiAgZ2VvbV9oaXN0b2dyYW0gKCBmaWxsID0gImJsdWUiLCBjb2wgPSAid2hpdGUiKSArDQogIGxhYnMoeCA9ICJT4buRIMSRaeG7g20iLA0KICAgICAgIHkgPSAiU+G7kSBuZ8OgeSIsIA0KICAgICAgIHRpdGxlID0gIkJp4buDdSDEkeG7kyBtw7QgcGjhu49uZyBnacOhIHRy4buLIGNo4buJIHPhu5EgVk4zMCIpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKGxhYmVscyA9IGNvbW1hKQ0KYGBgDQoNCg0KIyMgNC41IEvhur90IGx14bqtbiANCg0KJmVuc3A7JmVuc3A7JmVuc3A7S+G6v3QgcXXhuqMgbcO0IHBo4buPbmcgY2jhu4kgc+G7kSBWTjMwIHRyb25nIDEwMDAgbmfDoHkgY2hvIHRo4bqleSBjaOG7iSBz4buRIGPDsyB4dSBoxrDhu5tuZyB0xINuZyB0csaw4bufbmcgdHJvbmcgZMOgaSBo4bqhbiB04burIDEuMjAwIMSRaeG7g20gbMOqbiDEkeG6v24gMS44MDAgxJFp4buDbS4gVHV5IG5oacOqbiwgdHJvbmcgcXXDoSBraOG7qSB0YSB0aOG6pXkgY2jhu4kgc+G7kSBWTjMwIHThu6tuZyBkYW8gxJHhu5luZyB04burIDEuMTAwIMSRaeG7g20gxJHhur9uIDIuMDAwIMSRaeG7g20sIHbDoCBjw7Mgbmjhu69uZyBnaWFpIMSRb+G6oW4gZ2nhuqNtIHPDonUgZG8g4bqjbmggaMaw4bufbmcgY+G7p2EgY8OhYyB54bq/dSB04buRIHbEqSBtw7QgdsOgIHRo4buLIHRyxrDhu51uZy4gxJBp4buBdSBuw6B5IGPDsyB0aOG7gyBnaeG6o2kgdGjDrWNoIGRvIG5naGnDqm4gY+G7qXUgY2jhu4kgZOG7sWEgdHLDqm4gY8OhYyBiaeG6v24gc+G7kSB0cm9uZyBxdcOhIGto4bupLCBraMO0bmcgeGVtIHjDqXQgxJHGsOG7o2MgY8OhYyB54bq/dSB04buRIG5nb+G6oWkgbGFpIG5oxrAgY2jDrW5oIHPDoWNoLCBz4buxIGtp4buHbiwgdGluIMSR4buTbuKApiBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIGdpw6EgdHLhu4sgY+G7p2EgY8OhYyBj4buVIHBoaeG6v3UgdHJvbmcgcuG7lSBWTjMwLg0KDQojICoqUEjhu6QgTOG7pEMqKg0KDQpEYW5oIG3hu6VjIFZOMzAga+G7syB0aMOhbmcgNy8yMDIzIGRvIFPhu58gR2lhbyBk4buLY2ggQ2jhu6luZyBraG/DoW4gVFAuSENNIMSRw6MgY8O0bmcgYuG7kToNCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWR4bCkNCmRhbmhzYWNoY29uZ3R5IDwtIHJlYWRfZXhjZWwoIkQ6L21wbm4vY29uZ3R5Vk4zMC54bHN4IikNCmxpYnJhcnkoRFQpDQpkYW5oc2FjaGNvbmd0eSAlPiUgRFQ6OmRhdGF0YWJsZShkYW5oc2FjaGNvbmd0eSkNCmBgYA0KDQojICoqVMOASSBMSeG7hlUgVEhBTSBLSOG6ok8qKg0KDQpbMV0gVHLhuqduIEzhu5ljIEjDuW5nIHbDoCBUcuG6p24gTeG6oW5oIFTGsOG7nW5nICgyMDE3KS4gKkdpw6FvIHRyw6xuaCBNw7QgcGjhu49uZyBuZ+G6q3Ugbmhpw6puLCBOWEIgVHLGsOG7nW5nIMSQ4bqhaSBo4buNYyBUw6BpIGNow61uaCDigJMgTWFya2V0aW5nLCBUUC5IQ00uKg==