LỜI CẢM ƠN

Em xin chân thành cảm ơn Thầy TS.Nguyễn Tuấn Duy vì sự hỗ trợ tận tình và những chỉ dẫn quý báu trong quá trình em thực hiện tiểu luận môn Các mô hình ngẫu nhiên. Sự hướng dẫn và phản hồi từ Thầy không chỉ giúp em làm rõ các khái niệm phức tạp mà còn giúp em phát triển kỹ năng nghiên cứu và phân tích dữ liệu.

Thầy đã luôn sẵn sàng dành thời gian quý báu để giải đáp các thắc mắc và cung cấp những gợi ý có giá trị, điều này đã góp phần lớn vào việc hoàn thiện tiểu luận này. Sự nhiệt tình và sự chuyên môn của Thầy đã tạo động lực cho em trong suốt quá trình học tập và nghiên cứu.

Em rất biết ơn những kiến thức và kinh nghiệm mà Thầy đã chia sẻ, và em cảm thấy may mắn khi có cơ hội học hỏi từ một người có sự am hiểu sâu rộng về lĩnh vực này. Những chỉ dẫn và lời khuyên của Thầy đã giúp em hiểu sâu hơn về các mô hình ngẫu nhiên và áp dụng chúng một cách hiệu quả hơn trong nghiên cứu của mình.

Một lần nữa, em xin chân thành cảm ơn Thầy vì tất cả sự hỗ trợ và sự động viên. Em xin chúc Thầy sức khỏe, thành công và luôn giữ vững niềm đam mê trong công tác giảng dạy và nghiên cứu.

LỜI CAM ĐOAN

Em xin cam đoan rằng tiểu luận này được thực hiện hoàn toàn dựa trên sự nghiên cứu và công sức của bản thân em. Tất cả các thông tin, số liệu, và kết quả trong tiểu luận đều được thu thập từ các nguồn tài liệu chính thống và đáng tin cậy. Em đã thực hiện việc trích dẫn và tham khảo đầy đủ theo quy định của trường. Em cam kết rằng tiểu luận này không sao chép từ bất kỳ nguồn tài liệu nào mà không có sự trích dẫn rõ ràng, và em chịu trách nhiệm hoàn toàn về tính chính xác của nội dung trình bày.

CHƯƠNG 1 GIỚI THIỆU

1.1 Đặt vấn đề

Trong bối cảnh toàn cầu hóa ngày càng gia tăng, nền kinh tế của mỗi quốc gia đã có sự phát triển mạnh mẽ và hội nhập sâu rộng với nền kinh tế thế giới. Sự gia tăng liên kết thương mại và đầu tư giữa các quốc gia đã làm cho các nền kinh tế trở nên phụ thuộc lẫn nhau nhiều hơn bao giờ hết. Các mối quan hệ thương mại song phương và đa phương, cùng với sự gia tăng vốn đầu tư trực tiếp nước ngoài (FDI) và vốn đầu tư gián tiếp, đã trở thành những kênh quan trọng trong việc truyền dẫn các cú sốc giữa các thị trường chứng khoán (TTCK) (Chinn và Forbes, 2004; Moore và Wang, 2014). Điều này đặc biệt đúng trong trường hợp của TTCK Việt Nam (VNI) và TTCK Hàn Quốc (KOSPI), hai thị trường chứng khoán đang ngày càng gắn bó chặt chẽ với nền kinh tế toàn cầu.

Việc hiểu biết cấu trúc phụ thuộc giữa các TTCK không chỉ có vai trò quan trọng đối với các nhà đầu tư trong việc đa dạng hóa danh mục đầu tư quốc tế và quản lý rủi ro mà còn có ý nghĩa thiết thực đối với các nhà hoạch định chính sách trong việc định giá tài sản và xây dựng chiến lược quản lý rủi ro. Tuy nhiên, việc mô hình hóa sự phụ thuộc giữa các chuỗi lợi suất chứng khoán gặp nhiều thách thức. Truyền thống sử dụng hệ số tương quan tuyến tính Pearson để đo lường mối quan hệ phụ thuộc giữa các TTCK đã bộc lộ hạn chế, đặc biệt là khi các thị trường đối mặt với những cú sốc lớn hoặc trong các tình huống không bình thường. Hệ số Pearson chỉ phản ánh mức độ trung bình của độ lệch chuẩn và không thể giải thích chính xác sự phụ thuộc phi tuyến (Jeon & Furstenberg, 1990; King & Wadhwani, 1990; Zivot & Wang, 2006).

Trong khi các mô hình như VAR và VECM cung cấp những cái nhìn có giá trị, chúng lại giả định mối tương quan tuyến tính không đổi theo thời gian, và do đó không phản ánh chính xác sự phụ thuộc giữa các thị trường trong những giai đoạn biến động mạnh. Các nghiên cứu gần đây đã chuyển sang sử dụng tương quan có điều kiện, chẳng hạn như các mô hình GARCH đa biến, để xem xét sự biến động theo thời gian của các chuỗi lợi suất (Thuan, 2011; Ceilik, 2012; Gupta và Guidi, 2012; Wang, 2013). Tuy nhiên, những mô hình này vẫn chưa hoàn toàn khắc phục được vấn đề về sự bất đối xứng và đặc điểm đuôi dày của phân phối xác suất.

Phương pháp copula, dựa trên định lý Sklar (1959), đã nổi lên như một công cụ mạnh mẽ trong việc khắc phục các nhược điểm của các phương pháp truyền thống. Copula cho phép mô tả mối quan hệ phụ thuộc giữa các chuỗi lợi suất mà không yêu cầu giả định phân phối chuẩn, đồng thời có khả năng mô hình hóa sự phụ thuộc trong các điều kiện thị trường bình thường và cực đoan. Các nghiên cứu gần đây đã áp dụng copula có điều kiện, đặc biệt là GARCH-copula, để xem xét mối quan hệ phụ thuộc giữa các TTCK phát triển và các TTCK mới nổi (Ning, 2010; Wang et al., 2011; Aloui et al., 2011).

Tuy nhiên, việc nghiên cứu sự phụ thuộc giữa TTCK Việt Nam (VNI) và TTCK Hàn Quốc (KOSPI) vẫn còn hạn chế, mặc dù hai thị trường này ngày càng có sự liên kết chặt chẽ do sự gia tăng của đầu tư và giao thương quốc tế. Việt Nam với độ mở nền kinh tế rất cao đã hội nhập sâu rộng với kinh tế toàn cầu, trong khi KOSPI cũng là một thị trường chứng khoán quan trọng ở khu vực Đông Á. Việc hiểu biết đúng về cấu trúc phụ thuộc giữa VNI và KOSPI là hết sức cần thiết để nắm bắt sự tương quan và sự lây lan của các cú sốc giữa hai thị trường này.

Xuất phát từ tính cần thiết và ưu nhược điểm của các phương pháp đo lường hiện có, tiểu luận này sẽ nghiên cứu chủ đề “Nghiên cứu phản ứng của thị trường chứng khoán Việt Nam đối với biến động của thị trường chứng khoán Hàn Quốc bằng phương pháp copula có điều kiện”. Mục tiêu là xác định mức độ phụ thuộc và sự lây lan giữa hai TTCK này trong các điều kiện thị trường bình thường và cực đoan, qua đó cung cấp cái nhìn sâu sắc và hữu ích cho các nhà đầu tư và nhà hoạch định chính sách.

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

1.2.1 Mục tiêu tổng quát

Nghiên cứu này nhằm mục đích phân tích cấu trúc phụ thuộc giữa thị trường chứng khoán Việt Nam (VN-Index) và thị trường chứng khoán Hàn Quốc (KOSPI) bằng phương pháp copula có điều kiện nhằm đánh giá mức độ phản ứng của TTCK Việt Nam khi TTCK Hàn Quốc biến động trong giai đoạn 2018-2024. Qua đó, đề xuất hàm ý chính sách giúp các nhà đầu tư cũng như các nhà quản lý giảm thiểu rủi ro khi thị trường biến động mạnh.

1.2.2 Mục tiêu cụ thể

  • Đánh giá cấu trúc phụ thuộc giữa TTCK Việt Nam (VNI) và TTCK Hàn Quốc (KOSPI) bằng phương pháp copula có điều kiện.

  • So sánh sự khác biệt trong cấu trúc phụ thuộc giữa VNI và KOSPI trước, trong và sau các giai đoạn biến động lớn như đại dịch Covid-19, chiến tranh Nga-Ukraina

  • Kiểm định mức độ tác động của biến động từ KOSPI đến VNI trong các tình huống thị trường khác nhau.

  • Đưa ra kiến nghị cho nhà đầu tư và tổ chức quản lý về cách quản lý danh mục đầu tư, rủi ro và cơ hội đầu tư dựa trên phân tích cấu trúc phụ thuộc.

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

Đối tượng nghiên cứu trong bài tiểu luận này là tỷ suất lợi nhuận của thị trường chứng khoán Việt Nam (VN-Index) và Của thị trường chứng khoán Hàn Quốc (KOSPI)

1.4 Phạm vi nghiên cứu

Phạm vi không gian

Bài tiểu luận này nghiên cứu mức độ phản ứng của TTCK Việt Nam khi TTCK Hàn Quốc biến động thông qua tỷ suất lợi nhuận của VN-Index và KOSPI.

Phạm vi thời gian

Phạm vi thời gian để xem xét mức độ phản ứng của TTCK Việt Nam đối với biến động của TTCK Hàn Quốc là 6 năm 6 tháng, từ 31/01/2018 đến 31/07/2024.

1.5 Kết cấu đề tài

Chương 1 : Giới thiệu

Giới thiệu bối cảnh nghiên cứu và lý do tại sao việc phân tích sự phụ thuộc giữa VNINDEX và KOSPI là quan trọng. Sự kết nối giữa hai thị trường chứng khoán này có ảnh hưởng sâu rộng đến các quyết định đầu tư và quản lý rủi ro trong môi trường toàn cầu hóa. Mục tiêu của nghiên cứu là phân tích cấu trúc phụ thuộc giữa VNINDEX và KOSPI bằng phương pháp copula có điều kiện, nhằm hiểu rõ hơn về sự liên kết này và cách nó thay đổi theo thời gian và điều kiện thị trường. Các câu hỏi nghiên cứu tập trung vào việc xác định mối quan hệ phụ thuộc giữa hai chỉ số trong các giai đoạn thị trường khác nhau và sự thay đổi của nó trong các điều kiện thị trường cụ thể. Nghiên cứu sử dụng phương pháp copula có điều kiện để phân tích dữ liệu tỷ suất lợi nhuận hàng ngày của VNINDEX và KOSPI, với mong muốn cung cấp cái nhìn sâu sắc về mối liên kết giữa hai thị trường này.

Chương 2 : Cơ sở lý luận và tổng quan nghiên cứu

Trình bày các cơ sở lý luận liên quan đến sự phụ thuộc giữa các thị trường chứng khoán, bao gồm các lý thuyết tài chính cơ bản và các mô hình như GARCH và copula. Mô hình copula được giải thích chi tiết, với các loại copula phổ biến như Gaussian, t Student, và Joe Clayton, cùng với ứng dụng của chúng trong phân tích sự phụ thuộc. Tổng quan nghiên cứu trước đây được tóm tắt để làm rõ những phát hiện quan trọng về sự phụ thuộc giữa các thị trường chứng khoán quốc tế, cũng như các nghiên cứu trước đây liên quan đến VNINDEX và KOSPI. Chương này cung cấp cái nhìn tổng quan về các phương pháp và kết quả nghiên cứu trước đây, giúp xác định khoảng trống nghiên cứu và lý do cần thiết cho nghiên cứu hiện tại.

Chương 3 : Dữ liệu và phương pháp nghiên cứu

Chương này mô tả dữ liệu được sử dụng trong nghiên cứu, bao gồm tỷ suất lợi nhuận hàng ngày của VNINDEX và KOSPI từ đầu năm 2018 đến đầu tháng 7 năm 2024. Các bước tiền xử lý dữ liệu được trình bày, bao gồm kiểm tra chất lượng dữ liệu và chuẩn bị dữ liệu cho phân tích. Phương pháp nghiên cứu được giải thích chi tiết, với trọng tâm là việc áp dụng phương pháp copula có điều kiện để phân tích sự phụ thuộc giữa hai thị trường. Các loại copula được sử dụng và lý do chọn lựa chúng được nêu rõ, cùng với cách thức mô hình hóa và phân tích dữ liệu để đạt được các mục tiêu nghiên cứu.

Chương 4 : Kết quả nghiên cứu

Chương này trình bày các kết quả phân tích sự phụ thuộc giữa VNINDEX và KOSPI, dựa trên mô hình copula có điều kiện. Các kết quả cho thấy sự phụ thuộc giữa hai chỉ số trong các giai đoạn khác nhau của thị trường và các điều kiện thị trường cụ thể. Phân tích sự thay đổi của sự phụ thuộc theo thời gian và điều kiện thị trường được trình bày một cách rõ ràng, giúp làm rõ mối liên kết giữa VNINDEX và KOSPI trong các giai đoạn thị trường biến động và ổn định.

Chương 5 : Kết luận và chính sách hàm ý

Chương này tóm tắt các phát hiện chính từ nghiên cứu, làm nổi bật những điểm quan trọng về cấu trúc phụ thuộc giữa VNINDEX và KOSPI. Các kết luận chính về cách thức và điều kiện mà sự phụ thuộc này thay đổi được trình bày. Dựa trên các kết quả nghiên cứu, chương cũng đưa ra các khuyến nghị cho nhà đầu tư và các nhà quản lý rủi ro, nhằm hỗ trợ trong việc đưa ra quyết định đầu tư và quản lý rủi ro hiệu quả hơn trong bối cảnh sự phụ thuộc giữa các thị trường chứng khoán quốc tế.

CHƯƠNG 2 CƠ SỞ LÝ LUẬN VÀ TỔNG QUAN NGHIÊN CỨU

2.1 Một số lý thuyết kinh tế liên quan

2.2.1 Khái niệm về thị trường chứng khoán

Theo cách hiểu truyền thống, thị trường chứng khoán (TTCK) là nơi diễn ra hoạt động phát hành và mua bán các chứng khoán đã được phát hành. Giống như bất kỳ thị trường nào khác, TTCK bao gồm các yếu tố cơ bản như: các chủ thể tham gia giao dịch; các loại hàng hóa giao dịch; các phương thức giao dịch; các cơ quan quản lý và giám sát; các nguyên tắc vận hành và sự tác động của quy luật thị trường.

Trên TTCK, vốn dài hạn được luân chuyển giữa các chủ thể thông qua hai giai đoạn trong hai phần khác nhau của thị trường. Giai đoạn đầu tiên diễn ra khi các nhà đầu tư chuyển giao quyền sở hữu vốn cho các tổ chức phát hành chứng khoán, thông qua cơ chế góp vốn hoặc cho vay, và nhận lại các giấy tờ có giá như cổ phiếu, trái phiếu, hoặc chứng chỉ quỹ. Hoạt động này xảy ra trên thị trường sơ cấp (hay còn gọi là thị trường cấp một).

Giai đoạn thứ hai là khi các nhà đầu tư sở hữu chứng khoán chuyển nhượng quyền sở hữu cho nhà đầu tư khác thông qua mua bán hoặc tặng cho, với việc thực hiện thông qua hợp đồng mua bán hoặc hợp đồng tặng cho chứng khoán. Việc tặng cho chứng khoán được thực hiện theo quy định của pháp luật dân sự, trong khi việc mua bán chứng khoán giữa các nhà đầu tư thường được thực hiện thông qua các tổ chức trung gian trên TTCK. Hoạt động mua bán lại các chứng khoán đã phát hành diễn ra trên thị trường thứ cấp (hay còn gọi là thị trường cấp hai).

Trong nền kinh tế hiện đại, TTCK không chỉ là nơi diễn ra các giao dịch mua bán chứng khoán trung và dài hạn, mà còn là nơi thực hiện các giao dịch ở cả thị trường sơ cấp, nơi nhà đầu tư mua chứng khoán lần đầu từ tổ chức phát hành, và thị trường thứ cấp, nơi mua bán lại các chứng khoán đã được phát hành trước đó. Như vậy, về bản chất, TTCK là nơi trao đổi, mua bán và chuyển nhượng các loại chứng khoán, làm thay đổi chủ thể nắm giữ chứng khoán.

2.1.2 Đặc điểm của thị trường chứng khoán

Đặc điểm của thị trường chứng khoán (TTCK) không chỉ phản ánh bản chất của nó mà còn giúp phân biệt nó với các loại thị trường khác trong nền kinh tế. Là một phần quan trọng trong hệ thống thị trường của nền kinh tế mở, TTCK mang những đặc điểm cơ bản sau:

Đầu tiên, TTCK giao dịch các chứng khoán và dịch vụ liên quan đến chứng khoán. Những chứng khoán này là hàng hóa đặc biệt, đại diện cho việc chuyển giao vốn đầu tư dài hạn từ các tổ chức và cá nhân có nguồn vốn dư thừa đến các tổ chức cần vốn như doanh nghiệp, chính phủ và các cơ quan địa phương. Các dịch vụ chứng khoán, bao gồm các hoạt động của tổ chức kinh doanh chứng khoán, được thực hiện theo yêu cầu của khách hàng nhằm nhận phí dịch vụ. Những dịch vụ này hỗ trợ các nhà đầu tư và tổ chức phát hành thông qua các tổ chức trung gian và cơ quan quản lý.

Thứ hai, TTCK có tính rủi ro cao và ảnh hưởng dây chuyền. Tính rủi ro của thị trường này thể hiện rõ ở việc các nhà đầu tư phải đối mặt với nhiều yếu tố rủi ro, như sự phá sản của tổ chức phát hành, tình trạng lạm phát, giảm giá chứng khoán, hoặc thông tin thị trường không minh bạch. Những yếu tố này có thể tác động đáng kể đến quyền lợi của các nhà đầu tư, tổ chức phát hành và các tổ chức trung gian.

Thứ ba, TTCK rất nhạy cảm với các biến động về kinh tế, chính trị, xã hội, quân sự và an ninh trong nước cũng như trên toàn cầu.

Cuối cùng, TTCK hoạt động theo các nguyên tắc đặc thù như nguyên tắc công khai, nguyên tắc giao dịch qua trung gian và nguyên tắc bảo vệ quyền lợi của nhà đầu tư.

2.1.3 Tổng quan về thị trường chứng khoán Việt Nam

Thị trường chứng khoán (TTCK) Việt Nam đã trải qua hơn 25 năm phát triển, đối mặt với nhiều thăng trầm nhưng vẫn khẳng định được tầm quan trọng to lớn. Ban đầu, TTCK Việt Nam có quy mô rất khiêm tốn, chỉ với hai mã cổ phiếu của Công ty Cổ phần Cơ điện lạnh (REE) và Công ty Cổ phần SAM Holdings (SAM), với tần suất giao dịch chỉ hai phiên mỗi tuần. Tuy nhiên, sự ra đời của Trung tâm Giao dịch Chứng khoán Hà Nội vào ngày 8/3/2005 đã đánh dấu một bước ngoặt lớn. Vào tháng 1/2006, việc niêm yết cổ phiếu của Vinamilk đã làm giá trị vốn hóa của HOSE tăng gấp đôi trong ngày. Năm đó, 74 doanh nghiệp mới đã niêm yết trên HOSE, giúp giá trị vốn hóa thị trường tăng từ 7.400 tỷ đồng lên 148.000 tỷ đồng, và chỉ số VN-Index lên mức 752 điểm, tăng 144% trong một năm. Đỉnh cao là vào ngày 12/3/2007, khi VN-Index đạt mức 1.170,69 điểm, cao hơn khoảng 3,9 lần so với đầu năm 2006. Tuy nhiên, TTCK Việt Nam cũng không tránh khỏi tác động của khủng hoảng kinh tế toàn cầu, khiến VN-Index giảm 66% vào cuối năm 2008.

Sau giai đoạn khủng hoảng, thị trường đã hồi phục và trải qua nhiều thay đổi quan trọng. Đặc biệt, vào ngày 6/2/2012, chỉ số VN30 được ra mắt, bao gồm 30 cổ phiếu có giá trị vốn hóa lớn trên HOSE, đánh dấu một bước tiến theo tiêu chuẩn quốc tế và tăng tính thanh khoản và minh bạch của thị trường. Năm 2017, TTCK Việt Nam tiếp tục đổi mới với sự ra đời của chứng khoán phái sinh, cùng với sự xuất hiện của hàng loạt con số “lập đỉnh”. VN-Index tăng 48% lên 984 điểm, vốn hóa thị trường tăng hơn 70%, tỷ lệ vốn hóa trên GDP lần đầu tiên vượt 50%, và tổng giá trị danh mục của nhà đầu tư nước ngoài đạt hơn 31 tỷ USD. Năm 2023, TTCK Việt Nam đạt tổng vốn hóa hơn 240 tỷ USD, tương đương 56,4% GDP, chỉ số VN-Index chốt ở 1.129,93 điểm, với khoảng 1900 công ty niêm yết. Cấu trúc thị trường tiếp tục được hoàn thiện, với việc áp dụng công nghệ số vào hệ thống giao dịch, tăng cường hiệu suất và an toàn, cùng với các quy định công bố thông tin chặt chẽ giúp cải thiện tính minh bạch và tăng niềm tin cho nhà đầu tư. Sự xuất hiện của các sản phẩm mới như chứng khoán phái sinh, ETF và trái phiếu cũng đã giúp TTCK Việt Nam trở thành kênh huy động vốn trung và dài hạn quan trọng cho các doanh nghiệp và nền kinh tế.

2.1.4 Tổng quan về thị trường chứng khoán Hàn Quốc

Thị trường chứng khoán Hàn Quốc, với tên gọi chính thức là Sở Giao dịch Chứng khoán Hàn Quốc (KRX), là một trong những thị trường chứng khoán lớn và phát triển mạnh mẽ nhất ở châu Á. KRX được thành lập vào năm 1956, và từ đó đã chứng kiến sự tăng trưởng ấn tượng, trở thành trung tâm tài chính quan trọng không chỉ trong khu vực mà còn trên toàn cầu.

Thị trường chứng khoán Hàn Quốc được đặc trưng bởi sự đa dạng hóa về sản phẩm và dịch vụ tài chính. Không chỉ giới hạn trong việc giao dịch cổ phiếu, KRX còn cung cấp các sản phẩm phái sinh như hợp đồng tương lai, quyền chọn và các quỹ giao dịch hoán đổi (ETF). Sự phong phú này tạo điều kiện thuận lợi cho các nhà đầu tư với nhiều chiến lược và mục tiêu khác nhau.

Về quy mô, KRX đã có những bước tiến lớn kể từ khi thành lập. Vào cuối năm 2023, tổng giá trị vốn hóa thị trường của KRX đạt hơn 1,6 nghìn tỷ USD, xếp hạng là một trong những thị trường lớn nhất thế giới. Chỉ số KOSPI, chỉ số chính của thị trường chứng khoán Hàn Quốc, đã liên tục phá vỡ các kỷ lục, phản ánh sự tăng trưởng mạnh mẽ của nền kinh tế Hàn Quốc. Trong thập kỷ qua, KOSPI đã tăng trưởng ấn tượng, đặc biệt là nhờ vào sự phát triển của các công ty công nghệ hàng đầu như Samsung, SK Hynix và LG.

Sự phát triển của thị trường chứng khoán Hàn Quốc cũng được hỗ trợ bởi chính sách kinh tế và tài chính của chính phủ. Hàn Quốc đã thực hiện nhiều cải cách nhằm nâng cao tính minh bạch, bảo vệ quyền lợi của nhà đầu tư và tăng cường tính thanh khoản của thị trường. Các biện pháp này bao gồm việc cải thiện quy trình niêm yết, tăng cường giám sát và áp dụng các công nghệ tiên tiến vào hệ thống giao dịch.

Một điểm nổi bật khác của thị trường chứng khoán Hàn Quốc là sự tham gia tích cực của các nhà đầu tư nước ngoài. Tính đến năm 2023, nhà đầu tư nước ngoài sở hữu khoảng 30% tổng giá trị vốn hóa thị trường. Điều này chứng tỏ sự hấp dẫn và tin tưởng của các nhà đầu tư quốc tế vào thị trường chứng khoán Hàn Quốc.

Tuy nhiên, thị trường chứng khoán Hàn Quốc cũng không tránh khỏi những thách thức. Biến động kinh tế toàn cầu, căng thẳng địa chính trị và các yếu tố rủi ro nội tại luôn ảnh hưởng đến sự ổn định của thị trường. Đặc biệt, khủng hoảng tài chính toàn cầu năm 2008 và đại dịch COVID-19 đã có những tác động tiêu cực đáng kể, nhưng thị trường đã cho thấy khả năng phục hồi mạnh mẽ nhờ vào sự linh hoạt và khả năng thích ứng của các doanh nghiệp và nhà đầu tư.

Tóm lại, thị trường chứng khoán Hàn Quốc đã phát triển vượt bậc trong hơn nửa thế kỷ qua, trở thành một trong những thị trường quan trọng nhất trên thế giới. Với sự hỗ trợ từ chính phủ, sự tham gia tích cực của nhà đầu tư nước ngoài và khả năng đa dạng hóa sản phẩm, KRX tiếp tục đóng vai trò then chốt trong việc huy động vốn và thúc đẩy sự phát triển của nền kinh tế Hàn Quốc.

2.1.5 Một số khái niệm liên quan

Sự biến động (Volatility) của thị trường chứng khoán, theo Gregoriou (2009), đề cập đến phạm vi biến động giá trong một khoảng thời gian nhất định. Độ biến động liên quan đến mức độ không chắc chắn và rủi ro của thị trường, được xem như thước đo thống kê về sự phân tán lợi nhuận của bất kỳ tài sản nào. Về mặt thống kê, biến động được xác định là độ lệch chuẩn của lợi nhuận theo tần suất ngày, tháng, hoặc năm của một cổ phiếu trong một khoảng thời gian cụ thể. Điều này cho thấy phạm vi mà giá của cổ phiếu có thể tăng hoặc giảm. Nếu giá của một cổ phiếu biến động nhanh chóng trong một thời gian ngắn, chạm mức cao và thấp mới, nó được xem là có độ biến động cao.

Sự phụ thuộc (Dependence) được Santos (1970) định nghĩa là tình huống trong đó nền kinh tế của một hoặc nhiều quốc gia chịu ảnh hưởng từ các nước phát triển hoặc đang phát triển, bao gồm cả các chiều hướng tích cực và tiêu cực. Khái niệm này cho phép chúng ta nhìn nhận nền kinh tế nội địa như một phần của nền kinh tế toàn cầu. Trong các nghiên cứu hiện đại, thuật ngữ sự phụ thuộc giữa các thị trường tài chính thừa kế và mở rộng khái niệm của Santos (1970).

Sự phụ thuộc lẫn nhau (Interdependence/Co-movement) giữa các thị trường tài chính có nghĩa là sự biến động của một thị trường (hoặc một nhóm thị trường) ở một mức độ nào đó sẽ ảnh hưởng đến sự biến động của một thị trường (hoặc nhóm thị trường) khác ở mức độ tương ứng.

Baur (2013) đã sử dụng các thuật ngữ mô tả sự phụ thuộc giữa các thị trường là mức độ phụ thuộc (degree of dependence) và cấu trúc phụ thuộc (structure of dependence). Mức độ phụ thuộc giữa hai thị trường thường được đo bằng hệ số tương quan giữa các chỉ số đại diện cho hai thị trường đó. Còn cấu trúc phụ thuộc của hai thị trường được mô tả bởi hàm phân phối xác suất đồng thời của hai chuỗi lợi nhuận của các chỉ số đại diện cho hai thị trường đó.

2.1.6 Cấu trúc phụ thuộc

Cấu trúc phụ thuộc (structure of dependence) là một khái niệm quan trọng trong lĩnh vực tài chính và kinh tế, dùng để mô tả mối quan hệ giữa hai hay nhiều biến số kinh tế, tài chính hoặc thị trường trong một khoảng thời gian. Cấu trúc phụ thuộc không chỉ đo lường sự tương quan mà còn cung cấp thông tin về cách thức và mức độ mà các biến số này tương tác với nhau trong các tình huống khác nhau.

Mức độ phụ thuộc là mức độ mà các biến số tương tác hoặc phụ thuộc lẫn nhau. Thông thường, mức độ phụ thuộc được đo lường bằng hệ số tương quan, chẳng hạn như hệ số tương quan Pearson. Hệ số này dao động từ -1 đến 1, trong đó 1 đại diện cho sự tương quan hoàn hảo cùng chiều, -1 đại diện cho sự tương quan hoàn hảo ngược chiều, và 0 đại diện cho không có sự tương quan. Tuy nhiên, hệ số tương quan Pearson chỉ đo lường sự phụ thuộc tuyến tính và không phản ánh đầy đủ mối quan hệ phi tuyến.

Hình dạng phụ thuộc mô tả cách mà sự phụ thuộc thay đổi theo các điều kiện thị trường khác nhau, đặc biệt trong các tình huống cực đoan như khủng hoảng tài chính. Ví dụ, các mô hình Copula thường được sử dụng để mô hình hóa sự phụ thuộc phi tuyến và bắt các đặc tính như sự phụ thuộc ở đuôi (tail dependence), khi các biến số có xu hướng cùng tăng hoặc giảm mạnh trong các sự kiện cực đoan.

Cấu trúc phụ thuộc có nhiều ứng dụng quan trọng trong lĩnh vực tài chính và kinh tế. Nó giúp các nhà đầu tư và nhà quản lý rủi ro hiểu rõ hơn về mối quan hệ giữa các tài sản trong danh mục đầu tư của họ. Điều này đặc biệt hữu ích trong việc đa dạng hóa danh mục đầu tư và quản lý rủi ro, vì nó cung cấp cái nhìn sâu hơn về cách các tài sản có thể phản ứng trong các điều kiện thị trường khác nhau.Trong lĩnh vực quản lý rủi ro, cấu trúc phụ thuộc giúp xác định và mô hình hóa rủi ro hệ thống, khi các tài sản hoặc thị trường có thể cùng giảm giá mạnh trong các sự kiện khủng hoảng. Điều này giúp các tổ chức tài chính chuẩn bị tốt hơn cho các tình huống bất ngờ và giảm thiểu thiệt hại tiềm tàng.

Các mô hình Copula là công cụ phổ biến để phân tích cấu trúc phụ thuộc phi tuyến. Chúng cho phép các nhà phân tích tài chính mô hình hóa mối quan hệ giữa các biến số theo nhiều cách khác nhau, không chỉ giới hạn ở sự phụ thuộc tuyến tính. Copula cung cấp cái nhìn chi tiết hơn về sự phụ thuộc, đặc biệt là trong các tình huống cực đoan. Ngoài ra, các phương pháp thống kê khác như độ lệch chuẩn, phương sai và các mô hình phân phối xác suất đồng thời cũng được sử dụng để đo lường và phân tích cấu trúc phụ thuộc. Những công cụ này giúp các nhà nghiên cứu và chuyên gia tài chính hiểu rõ hơn về mức độ và hình dạng của sự phụ thuộc giữa các thị trường và tài sản khác nhau.

2.2 Lý thuyết về phương pháp Copula có điều kiện

2.2.1 Tổng quan về phương pháp Copula

Thông qua nhiều nghiên cứu, có bốn phương pháp thống kê chính để phân tích mối tương quan giữa các thị trường chứng khoán (TTCK): tương quan tuyến tính, tương quan có điều kiện, phương pháp giá trị cực trị (EVT), và phương pháp copula.

Đầu tiên, hệ số tương quan tuyến tính là một thước đo phổ biến do giả định về tính chuẩn tắc và sự đơn giản trong tính toán. Tuy nhiên, hệ số này dựa trên giả định rằng các biến ngẫu nhiên có phân phối chuẩn, trong khi thực tế, các chuỗi lợi suất chứng khoán thường có phân phối với đuôi dày và bất đối xứng. Vì vậy, việc sử dụng hệ số tương quan tuyến tính để giải thích mối quan hệ biến động giữa các TTCK có thể dẫn đến sai lệch.

Thứ hai, phương pháp tương quan có điều kiện, đặc biệt là các mô hình GARCH đa biến, được sử dụng để xem xét mối tương quan có tính đến sự biến động của giá chứng khoán theo thời gian. Điều này khác với tương quan tuyến tính Pearson, vốn không thể mô tả sự biến động này. Tuy nhiên, một hạn chế của mô hình GARCH đa biến là phần lớn các nghiên cứu trước đây giả định phân phối xác suất của các chuỗi lợi suất là phân phối chuẩn hoặc phân phối Student-t, do đó không thể phản ánh sự dao động bất đối xứng và đặc tính đuôi dày của phân phối xác suất.

Thứ ba, phương pháp EVT có ưu điểm trong việc mô hình hóa các đặc điểm đuôi dày của hàm phân phối xác suất của các chuỗi lợi suất tài chính, do đó có thể xem xét sự phụ thuộc bất đối xứng khi thị trường cùng sụp đổ hoặc bùng nổ. Tuy nhiên, vì EVT chỉ mô tả phần đuôi của phân phối, nên không thể mô tả mối quan hệ phụ thuộc trong điều kiện thị trường bình thường và không chỉ rõ cấu trúc phụ thuộc giữa các tài sản tài chính.

Cuối cùng, phương pháp copula, đặc biệt là copula có điều kiện, nổi bật nhờ khả năng mô tả chính xác mối quan hệ và cấu trúc phụ thuộc giữa các tài sản tài chính. Hàm copula cho phép mô tả cấu trúc phụ thuộc giữa các chuỗi lợi suất một cách riêng biệt mà không cần giả định rằng phân phối xác suất của các chuỗi lợi suất là phân phối chuẩn hoặc có cùng dạng phân phối. Hàm copula có khả năng mô tả sự phụ thuộc tuyến tính, phi tuyến, đối xứng, bất đối xứng, và đuôi. Hơn nữa, bằng cách chọn hàm copula phù hợp nhất với dữ liệu đầu vào, giá trị rủi ro của danh mục hai thị trường sẽ được xác định chính xác hơn so với phương pháp tính VaR truyền thống.

2.2.2 Các họ hàm cơ bản của Copula

  • Copula họ Elip

Trong kinh tế học, copula là một công cụ quan trọng dùng để mô hình hóa mối quan hệ giữa các biến ngẫu nhiên có phân phối khác nhau. Họ elip, bao gồm các copula như copula Gaussian và copula t-Student, đóng một vai trò quan trọng trong việc phân tích sự phụ thuộc giữa các biến. Copula Gaussian, dựa trên phân phối chuẩn đa biến, thường được sử dụng vì tính toán dễ dàng và khả năng mô hình hóa mối quan hệ tuyến tính. Ngược lại, copula t-Student, dựa trên phân phối t-Student đa biến, cho phép mô hình hóa mối quan hệ mạnh mẽ hơn và xử lý các hiện tượng ngoại lai tốt hơn. Trong thực tiễn kinh tế, copula giúp đánh giá rủi ro tài chính bằng cách mô hình hóa mối quan hệ giữa các tài sản, hỗ trợ đánh giá danh mục đầu tư để tối ưu hóa lợi nhuận và giảm thiểu rủi ro, cũng như dự đoán và phân tích các hiện tượng kinh tế. Mặc dù copula có tính linh hoạt cao và khả năng mô hình hóa các mối quan hệ phi tuyến tính, việc tính toán có thể trở nên phức tạp và yêu cầu dữ liệu đủ lớn để ước lượng chính xác các tham số. Hai copula quan trọngnhất của họ này là copula chuẩn (Gauss) và copula Student-t. Theo đồ thị hàm mật độxác suất, hai copula này gần nhau ở phần trung tâm và trở nên gần nhau hơn ở phần đuôi khi bậc tự do của t-copula tăng lên. Ta có thể đánh giá ý nghĩa của Copula họ Elip thông qua các biểu đồ bên dưới dựa trên dữ liệu được mô phỏng từ hàm Copula tương ứng.

library(knitr)
library(copula)
library(ggplot2)
library(plotly)
library(gridExtra)
library(VC2copula)
library(VineCopula)
library(gridGraphics)
library(png)
library(Cairo)


#Tạo hàm vẽ biểu đồ
scatter_plot <- function(random_data, cl) {
  ggplot(data.frame(random_data), aes(random_data[,1], random_data[,2])) +
    geom_point(alpha = 0.5, col = cl) +
    theme_minimal() +
    labs(x = "u", y = "v")
} #for scatter

persp_plot <- function(copula_obj, file_name, cl) {
  png(file_name)
  persp(copula_obj, dCopula, 
        xlab = 'u', ylab = 'v', col = cl, ltheta = 120,  
        ticktype = "detailed", cex.axis = 0.8)
  dev.off()
  rasterGrob(readPNG(file_name),interpolate = TRUE)
}# for pdf

set.seed(123)
#Mô phỏng copula gauss với p=0.8
cop_nor <- normalCopula(param = 0.8, dim = 2)
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_nor <- rCopula(copula = cop_nor,n = 7600)
#Mô phỏng copula với p=0.8
cop_std <- tCopula(param = 0.8, dim = 2, df = 1)
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_std <- rCopula(copula = cop_std,n = 7600)
#Vẽ biểu đồ 
png('nors.png') #Lưu ảnh biểu đồ
scatter_plot(random_nor, '#99FFCC')
dev.off()
## png 
##   2
nors <- rasterGrob(readPNG('nors.png'), interpolate = TRUE) #Chuyển ảnh sang dạng Grob

png('stds.png')
scatter_plot(random_std, '#CCFF33')
dev.off()
## png 
##   2
stds <- rasterGrob(readPNG('stds.png'), interpolate = TRUE)
nor_per <- persp_plot(cop_nor, 'norp.png', '#99FFCC')
std_per <- persp_plot(cop_std, 'stdp.png', '#CCFF33')

legend <- legendGrob(
  labels = c("Gauss", "Student"), pch = 15,
  gp = gpar(col = c('#99FFCC', '#CCFF33'), fill = c('#99FFCC', '#CCFF33'))
)

grid.arrange(nors, nor_per, stds, std_per, legend, ncol = 3, 
             layout_matrix = rbind(c(1, 2, 5), c(3, 4, 5)),
             widths = c(2, 2, 1), 
             top = textGrob("Hình 1: Biểu đồ phân tán và phối cảnh PDF của Copula họ Elip", 
                            gp = gpar(fontsize = 15, font = 2))
)

  • Copula họ Archimedean

Các hàm copula trong họ Archimedean bao gồm nhiều loại như Copula Clayton, Gumbel và Joe, mỗi loại thể hiện một kiểu phụ thuộc đặc trưng giữa các biến ngẫu nhiên. Copula Clayton nổi bật với sự phụ thuộc mạnh mẽ ở phần đuôi dưới của phân phối, làm cho nó thích hợp trong việc mô hình hóa mối quan hệ giảm giá mạnh giữa các biến, đặc biệt hữu ích trong các tình huống thị trường giảm. Ngược lại, Copula Gumbel thể hiện sự phụ thuộc mạnh mẽ ở phần đuôi trên, lý tưởng khi một biến tăng giá có thể kéo theo biến khác cũng tăng giá, thường được áp dụng trong thị trường có xu hướng tăng. Copula Joe, tương tự như Gumbel, cũng tập trung vào phần đuôi trên, mô tả mối quan hệ mạnh mẽ khi các biến cùng tăng giá. Các copula khác như Frank, Rot-Clayton, và các copula phức tạp như BB1, BB6, BB7, BB8, kết hợp đặc điểm của nhiều copula cơ bản, cho phép mô hình hóa các mối quan hệ phức tạp và đa dạng hơn giữa các biến ngẫu nhiên trong tài chính, từ đó giúp hiểu rõ hơn về sự tương tác và rủi ro trong môi trường tài chính biến động.

Để đánh giá trực quan ý nghĩa của từng loại copula, em sẽ tiến hành vẽ biểu đồ dựa trên dữ liệu được mô phỏng cho mỗi loại copula tương ứng như sau :

set.seed(123)
#Mô phỏng copula clayton với p=4
cop_clay <- claytonCopula(param = 4, dim = 2)
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_clay <- rCopula(copula = cop_clay,n = 7600)
#Mô phỏng copula gumbel với p=5
cop_gum <- gumbelCopula(param = 5, dim = 2)
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_gum <- rCopula(copula = cop_gum,n = 7600)

#Vẽ biểu đồ 
png('clays.png')
scatter_plot(random_clay,'#CC6633')
dev.off()
## png 
##   2
clays <- rasterGrob(readPNG('clays.png'), interpolate = TRUE)

png('gums.png')
scatter_plot(random_gum,'#FF6699')
dev.off()
## png 
##   2
gums <- rasterGrob(readPNG('gums.png'), interpolate = TRUE)
clayp <- persp_plot(cop_clay,'clayp.png','#CC6633')

gump <- persp_plot(cop_gum,'gump.png','#FF6699')


legend <- legendGrob(
  labels = c("Clayton", "Gumbel"), pch = 15,
  gp = gpar(col = c('#CC6633', '#FF6699'), fill = c('#CC6633', '#FF6699'))
)

grid.arrange(clays, clayp, gums, gump, legend, ncol = 3, 
             layout_matrix = rbind(c(1, 2, 5), c(3, 4, 5)),
             widths = c(2, 2, 1), 
             top = textGrob("Hình 2: Biểu đồ phân tán và PDF của Copula Clayton và Gumbel", 
                            gp = gpar(fontsize = 15, font = 2))
)

set.seed(123)
#Mô phỏng copula survival gumbel
cop_surgum <- VC2copula::surGumbelCopula(param = 5)
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_surgum <- rCopula(copula = cop_surgum,n = 7600)
#Mô phỏng copula survival clayton  với p=4
cop_surclay <- VC2copula::surClaytonCopula(param = 4)
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_surclay <- rCopula(copula = cop_surclay,n = 7600)
png('surclays.png')
scatter_plot(random_surclay,'#9966FF')
dev.off()
## png 
##   2
surclays <- rasterGrob(readPNG('surclays.png'), interpolate = TRUE)

png('surgums.png')
scatter_plot(random_surgum,'#FF3300')
dev.off()
## png 
##   2
surgums <- rasterGrob(readPNG('surgums.png'), interpolate = TRUE)
surclayp <- persp_plot(cop_surclay, "surclayp.png","#9966FF")
surgump <- persp_plot(cop_surgum, "surgump.png","#FF3300")

legend <- legendGrob(labels = c("Survival Clayton","Survival Gumbel"), pch = 15,
                     gp = gpar(col = c('#9966FF','#FF3300'), fill = c('#9966FF','#FF3300' )))

grid.arrange(surclays, surclayp,surgums, surgump, legend, ncol = 3,
             layout_matrix = rbind(c(1,2,5),c(3,4,5)),
             widths = c(2,2,1),
             top = textGrob("Hình 3: Biểu đồ phân tán và PDF của Copula Sur Clayton và Gumbel", 
                            gp = gpar(fontsize = 15, font = 2))
)

set.seed(123)
#Mô phỏng copula Frank
cop_frank <- frankCopula(param = 9.2)
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_frank <- rCopula(copula = cop_frank,n = 7600)
#Mô phỏng copula survival clayton  với p=4
cop_joe <- joeCopula(param = 3)
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_joe <- rCopula(copula = cop_joe,n = 7600)
png('franks.png')
scatter_plot(random_frank,'#FFCCFF')
dev.off()
## png 
##   2
franks <- rasterGrob(readPNG('franks.png'), interpolate = TRUE)

png('joes.png')
scatter_plot(random_joe,'#FFCC66')
dev.off()
## png 
##   2
joes <- rasterGrob(readPNG('joes.png'), interpolate = TRUE)
frankp <- persp_plot(cop_frank, "frankp.png","#FFCCFF")
joep <- persp_plot(cop_joe, "joep.png","#FFCC66")

legend <- legendGrob(labels = c("Franl","Joe"), pch = 15,
                     gp = gpar(col = c('#FFCCFF','#FFCC66'), fill = c('#FFCCFF','#FFCC66')))

grid.arrange(franks, frankp,joes, joep, legend, ncol = 3,
             layout_matrix = rbind(c(1,2,5),c(3,4,5)),
             widths = c(2,2,1),
             top = textGrob("Hình 4: Biểu đồ phân tán và  PDF của Copula Frank và Joe", 
                            gp = gpar(fontsize = 15, font = 2))
)

set.seed(123)
#Mô phỏng copula BB1
cop_bb1 <- VC2copula::BB1Copula(param = c(2,1.7))
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_bb1 <- rCopula(copula = cop_bb1,n = 7600)
#Mô phỏng copula BB6
cop_bb6 <- VC2copula::BB6Copula(param = c(2,4.5))
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_bb6 <- rCopula(copula = cop_bb6,n = 7600)
png('bb1s.png')
scatter_plot(random_bb1,'#00EE00')
dev.off()
## png 
##   2
bb1s <- rasterGrob(readPNG('bb1s.png'), interpolate = TRUE)

png('bb6s.png')
scatter_plot(random_bb6,'#6666CC')
dev.off()
## png 
##   2
bb6s <- rasterGrob(readPNG('bb6s.png'), interpolate = TRUE)
bb1p <- persp_plot(cop_bb1, "bb1p.png","#00EE00")
bb6p <- persp_plot(cop_bb6, "bb6p.png","#6666CC")

legend <- legendGrob(labels = c("BB1","BB6"), pch = 15,
                     gp = gpar(col = c('#00EE00','#6666CC'), fill = c('#00EE00','#6666CC')))

grid.arrange(bb1s, bb1p,bb6s, bb6p, legend, ncol = 3,
             layout_matrix = rbind(c(1,2,5),c(3,4,5)),
             widths = c(2,2,1),
             top = textGrob("Hình 5: Biểu đồ phân tán và  PDF của Copula BB1 và BB6", 
                            gp = gpar(fontsize = 15, font = 2))
)

set.seed(123)
#Mô phỏng copula BB7
cop_bb7 <- VC2copula::BB7Copula(param = c(2,4.5))
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_bb7 <- rCopula(copula = cop_bb7,n = 7600)
#Mô phỏng copula BB8
cop_bb8 <- VC2copula::BB8Copula(param = c(4,0.8))
#Mô phỏng 7600 quan sát ngẫu nhiên dựa trên copula có sẵn
random_bb8 <- rCopula(copula = cop_bb8,n = 7600)
png('bb7s.png')
scatter_plot(random_bb7,'#FF0000')
dev.off()
## png 
##   2
bb7s <- rasterGrob(readPNG('bb7s.png'), interpolate = TRUE)

png('bb8s.png')
scatter_plot(random_bb8,'#0000DD')
dev.off()
## png 
##   2
bb8s <- rasterGrob(readPNG('bb8s.png'), interpolate = TRUE)
bb7p <- persp_plot(cop_bb7, "bb7p.png","#FF0000")
bb8p <- persp_plot(cop_bb8, "bb8p.png","#0000DD")

legend <- legendGrob(labels = c("BB7","BB8"), pch = 15,
                     gp = gpar(col = c('#FF0000','#0000DD'), fill = c('#FF0000','#0000DD')))

grid.arrange(bb7s, bb7p,bb8s, bb8p, legend, ncol = 3,
             layout_matrix = rbind(c(1,2,5),c(3,4,5)),
             widths = c(2,2,1),
             top = textGrob("Hình 6: Biểu đồ phân tán và  PDF của Copula BB7 và BB8", 
                            gp = gpar(fontsize = 15, font = 2))
)

2.2.3 Phụ thuộc đuôi

Cấu trúc phụ thuộc đuôi (tail dependence) là một khái niệm quan trọng trong phân tích thống kê và tài chính, dùng để đo lường mức độ mà các biến ngẫu nhiên có xu hướng đạt các giá trị cực đoan đồng thời. Điều này đặc biệt hữu ích khi nghiên cứu các sự kiện xảy ra ở các phần đuôi của phân phối, chẳng hạn như cùng tăng mạnh hoặc giảm mạnh. Phụ thuộc đuôi giúp các nhà phân tích và nhà đầu tư hiểu rõ hơn về các rủi ro cực đoan, bao gồm khả năng xảy ra đồng thời các sự kiện tài chính bất thường như sự sụt giảm đồng loạt của các tài sản trong danh mục đầu tư.

Có hai loại phụ thuộc đuôi chính:

  1. Phụ thuộc đuôi trên (Upper Tail Dependence):
    • Khái niệm: Đo lường mức độ mà các biến ngẫu nhiên có xu hướng đạt các giá trị cực đại đồng thời. Điều này rất quan trọng trong các kịch bản tài chính, chẳng hạn như khi thị trường tăng giá mạnh và các tài sản tài chính đồng thời đạt các mức cao kỷ lục.
    • Định nghĩa: Hệ số phụ thuộc đuôi trên, ký hiệu là \(\lambda_U\), được định nghĩa là: \[ \lambda_U = \lim_{u \to 1} P\left(Z_1 > F_1^{-1}(u) \mid Z_2 > F_2^{-1}(u)\right) \] Trong đó, \(Z_1\)\(Z_2\) là các biến ngẫu nhiên liên tục, và \(F_1\)\(F_2\) là các hàm phân phối biên tương ứng.
  2. Phụ thuộc đuôi dưới (Lower Tail Dependence):
    • Khái niệm: Đo lường mức độ mà các biến ngẫu nhiên có xu hướng đạt các giá trị cực tiểu đồng thời. Điều này đặc biệt quan trọng trong việc quản lý rủi ro tài chính, vì sự sụt giảm đồng loạt của giá trị tài sản có thể dẫn đến thua lỗ lớn cho nhà đầu tư.
    • Định nghĩa: Hệ số phụ thuộc đuôi dưới, ký hiệu là \(\lambda_L\), được định nghĩa là: \[ \lambda_L = \lim_{u \to 1} P\left(Z_1 < F_1^{-1}(u) \mid Z_2 < F_2^{-1}(u)\right) \]

Các hệ số phụ thuộc đuôi cung cấp thông tin về sự đồng vận động của các biến ngẫu nhiên tại các phần đuôi của phân phối. Một hệ số \(\lambda_U\) hoặc \(\lambda_L\) bằng 0 cho thấy không có phụ thuộc đuôi, trong khi giá trị trong khoảng \((0,1]\) chỉ ra mức độ phụ thuộc đuôi tồn tại. Sự phụ thuộc đuôi là một thuộc tính quan trọng của copula, vì nó là bất biến dưới các phép biến đổi tăng nghiêm ngặt của các biến ngẫu nhiên, có nghĩa là ngay cả khi các biến ngẫu nhiên được biến đổi theo cách không làm thay đổi thứ tự của chúng, sự phụ thuộc đuôi vẫn không thay đổi. Hiểu biết về cấu trúc phụ thuộc đuôi cung cấp một công cụ mạnh mẽ để phân tích và quản lý rủi ro trong các tình huống tài chính cực đoan, từ đó giúp các nhà đầu tư và nhà phân tích dự đoán và chuẩn bị cho các sự kiện đồng thời cực đoan một cách hiệu quả hơn.

2.2.4 Tương quan có điều kiện

Tương quan có điều kiện là một công cụ quan trọng trong phân tích tài chính, đặc biệt khi xem xét mối quan hệ giữa các chuỗi lợi suất chứng khoán trong các giai đoạn biến động thị trường. Mô hình hóa mối tương quan này gặp khó khăn do sự khác biệt giữa phân phối chuẩn và phân phối bất đối xứng với đuôi dày. Để khắc phục vấn đề này, các mô hình GARCH và các biến thể của chúng, chẳng hạn như DCC-GARCH và EGARCH, được sử dụng để nắm bắt sự biến động và mối tương quan thay đổi theo thời gian.

Mô hình GARCH, phát triển từ mô hình ARCH, cung cấp cách tiếp cận để dự đoán độ biến động của chuỗi thời gian tài chính. Tuy nhiên, một hạn chế lớn của mô hình GARCH là giả định rằng các cú sốc có phân phối chuẩn, điều này không phản ánh chính xác thực tế thị trường. Để giải quyết vấn đề này, mô hình VECH (Varying Error Correlation Heteroskedasticity) được phát triển để mô tả phương sai có điều kiện, nhưng nó gặp phải vấn đề về số lượng tham số lớn. Mô hình BEKK (Baba, Engle, Kraft, & Kroner) đã cải thiện một số nhược điểm của VECH bằng cách cung cấp cách tiếp cận hiệu quả hơn để xác định ma trận hiệp phương sai. Để giảm số lượng tham số chưa biết, mô hình nhân tố ARCH được đề xuất, giả định rằng sự đồng chuyển động được thúc đẩy bởi một lượng nhỏ các yếu tố phổ biến.

Một sự phát triển quan trọng trong mô hình hóa tương quan có điều kiện là mô hình DCC-GARCH (Dynamic Conditional Correlation), được giới thiệu bởi Engle vào năm 2002. Mô hình này cho phép nắm bắt sự động trong cả tương quan có điều kiện và phương sai có điều kiện, cung cấp một cách tiếp cận mạnh mẽ để phân tích mối quan hệ giữa các thị trường tài chính trong thời gian thực. Bằng cách kết hợp mô hình GARCH với phương pháp phân tích ma trận hiệp phương sai, DCC-GARCH giúp nhận diện và dự đoán sự thay đổi trong mối tương quan giữa các thị trường.

Trong bối cảnh phân tích mối liên hệ giữa TTCK Việt Nam (VNI) và TTCK Hàn Quốc (KOSPI), các nghiên cứu đã sử dụng mô hình GARCH đa biến để phân tích sự tương quan có điều kiện giữa hai thị trường. Các kết quả cho thấy rằng mối liên hệ giữa VNI và KOSPI có thể thay đổi đáng kể trong các giai đoạn khủng hoảng tài chính. Ví dụ, trong cuộc khủng hoảng tài chính toàn cầu năm 2008, mối tương quan giữa hai thị trường này có thể tăng lên do sự lây lan của khủng hoảng. Các mô hình như DCC-GARCH cung cấp cái nhìn sâu sắc về sự biến động này, cho thấy rằng mối tương quan có thể gia tăng trong thời kỳ khủng hoảng và giảm khi tình hình ổn định hơn.

Tóm lại, việc sử dụng mô hình tương quan có điều kiện là cần thiết để hiểu rõ hơn về mối liên hệ giữa các thị trường chứng khoán trong các giai đoạn biến động. Đối với TTCK Việt Nam và Hàn Quốc, các mô hình như DCC-GARCH và EGARCH giúp nắm bắt sự biến động và mối tương quan thay đổi theo thời gian, cung cấp thông tin quan trọng cho việc quản lý rủi ro và ra quyết định đầu tư.

2.3 Các nghiên cứu trước đó

Trong nghiên cứu sự phụ thuộc giữa các thị trường chứng khoán toàn cầu, nhiều phương pháp và mô hình đã được áp dụng để hiểu rõ hơn về cách thức mà biến động giá cả có thể lan tỏa giữa các thị trường khác nhau. Những nghiên cứu này không chỉ giúp chúng ta nhận diện các yếu tố ảnh hưởng đến sự tương quan giữa các thị trường, mà còn cung cấp cái nhìn sâu sắc về cách thức và điều kiện mà sự phụ thuộc có thể thay đổi theo thời gian. Dưới đây là tổng hợp một số nghiên cứu tiêu biểu về sự phụ thuộc giữa các thị trường chứng khoán, được thực hiện bằng nhiều phương pháp khác nhau, từ GARCH đa biến đến các mô hình copula.

Hamao, Masulis, và Ng (1990) là một trong những nghiên cứu đầu tiên áp dụng mô hình GARCH đa biến để phân tích sự phụ thuộc lẫn nhau giữa ba thị trường chứng khoán lớn: Tokyo, London và New York. Nghiên cứu này đã chỉ ra sự lan tỏa biến động giá từ New York đến Tokyo, từ London đến Tokyo, và từ New York đến London, cho thấy sự liên kết mạnh mẽ giữa các thị trường trong các giai đoạn biến động cao.

Tiếp theo, Longin và Solnik (1995) mở rộng nghiên cứu của mình bằng cách kiểm tra mối tương quan có điều kiện không đổi giữa nhiều thị trường chứng khoán quốc tế như Hoa Kỳ, Canada, Nhật Bản, Đức, Anh, Pháp và Thụy Điển trong giai đoạn 1960–1990. Họ phát hiện rằng mối tương quan giữa các thị trường có xu hướng gia tăng trong các giai đoạn biến động cao của thị trường Hoa Kỳ, nhấn mạnh tầm quan trọng của thị trường Hoa Kỳ trong việc ảnh hưởng đến các thị trường khác.

Xu và Hamori (2012) đã tập trung vào mối liên kết động giữa các quốc gia BRIC và Hoa Kỳ, sử dụng mô hình AR(k)-EGARCH(p,q) để phân tích sự truyền dẫn giá cổ phiếu quốc tế. Kết quả của nghiên cứu cho thấy sự suy yếu trong sự truyền dẫn này trong giai đoạn khủng hoảng tài chính Hoa Kỳ 2008–09, cho thấy sự tác động mạnh mẽ của các sự kiện tài chính lớn đến mối liên kết giữa các thị trường.

Gupta và Guidi (2012) đã nghiên cứu mối quan hệ giữa thị trường chứng khoán Ấn Độ và ba thị trường phát triển của châu Á bằng các phương pháp đồng tích hợp Engle-Granger và mô hình DCC-GARCH. Kết quả nghiên cứu cho thấy có sự mối quan hệ ngắn hạn trong các giai đoạn khủng hoảng nhưng không có mối quan hệ dài hạn mạnh mẽ giữa các thị trường này.

Karanasos và các cộng sự (2014) đã áp dụng mô hình AR-DCC-FIAPARCH để phân tích tám chỉ số lợi suất theo ngày của các thị trường chứng khoán lớn từ năm 1988 đến 2010. Kết quả cho thấy sự tồn tại của các mối tương quan thay đổi theo thời gian và sự lan tỏa biến động, đặc biệt trong các cuộc khủng hoảng tài chính năm 1997 và 2008.

Rockinger và Jondeau (2001) đã sử dụng họ Plackett copula để nghiên cứu sự phụ thuộc giữa các chỉ số chứng khoán châu Âu, bao gồm CAC40 (Pháp), DAX (Đức), Nikkei 225 (Nhật Bản) và S&P500 (Hoa Kỳ). Kết quả cho thấy sự phụ thuộc mạnh mẽ giữa các thị trường chứng khoán châu Âu và thấp hơn ở các chỉ số S&P500 và Nikkei 225 kể từ những năm 90.

Basher và các cộng sự (2014) đã nghiên cứu sự phụ thuộc của phân phối lợi nhuận hai biến trên các thị trường chứng khoán ở các nước Vùng vịnh Ả Rập bằng các loại cấu trúc phụ thuộc khác nhau từ họ Copula, bao gồm Gaussian, t Student và Joe Clayton. Nghiên cứu cho thấy sự phụ thuộc có điều kiện có xu hướng không hoàn toàn đối xứng, với sự phụ thuộc đuôi dưới lớn hơn so với đuôi trên.

Boudt và Swanson (2015) áp dụng mô hình copula có điều kiện để phân tích sự phụ thuộc giữa các thị trường chứng khoán quốc tế trong các giai đoạn biến động khác nhau. Kết quả nghiên cứu cho thấy sự phụ thuộc có điều kiện có thể thay đổi theo thời gian và điều kiện thị trường, đặc biệt trong các thời kỳ khủng hoảng, cung cấp cái nhìn sâu sắc về sự kết nối toàn cầu của các thị trường chứng khoán.

Zhang và Chan (2018) đã sử dụng phương pháp copula để phân tích sự phụ thuộc giữa thị trường chứng khoán châu Á và thị trường chứng khoán Mỹ trong giai đoạn 2000–2016. Nghiên cứu chỉ ra rằng sự phụ thuộc có điều kiện gia tăng trong các giai đoạn khủng hoảng toàn cầu, với sự khác biệt rõ rệt giữa các loại copula được sử dụng.

Aloui và Khediri (2015) đã áp dụng phương pháp copula để đánh giá sự phụ thuộc giữa các thị trường chứng khoán của các nền kinh tế mới nổi và các nền kinh tế phát triển trong giai đoạn 2000–2013. Kết quả cho thấy sự phụ thuộc đuôi dưới chiếm ưu thế so với sự phụ thuộc đuôi trên, đặc biệt trong các thời kỳ biến động cao.

Choi và Hammoudeh (2011) đã sử dụng mô hình copula để phân tích mối liên kết giữa thị trường chứng khoán các nước Trung Đông và Bắc Phi với thị trường chứng khoán quốc tế trong giai đoạn 1995–2008. Nghiên cứu cho thấy sự phụ thuộc có điều kiện gia tăng trong các giai đoạn khủng hoảng và sự khác biệt giữa các khu vực địa lý.

Degiannakis và Chatzigeorgiou (2019) áp dụng phương pháp copula để phân tích sự phụ thuộc giữa các thị trường chứng khoán của các quốc gia phát triển và đang phát triển trong giai đoạn 2004–2016. Kết quả nghiên cứu chỉ ra rằng sự phụ thuộc có điều kiện có sự khác biệt giữa các nhóm quốc gia, với mối liên kết chặt chẽ hơn trong các thời kỳ biến động cao và khủng hoảng.

2.4 Tóm tắt các nghiên cứu trước đó

Tác giả Năm Phương pháp Đối tượng nghiên cứu Kết quả chính
Hamao, Masulis, và Ng 1990 GARCH đa biến Thị trường chứng khoán Tokyo, London, New York Lan tỏa biến động từ New York đến Tokyo, London đến Tokyo, và New York đến London.
Longin và Solnik 1995 GARCH(1,1) đa biến Thị trường chứng khoán Hoa Kỳ, Canada, Nhật Bản, Đức, Anh, Pháp, Thụy Điển Mối tương quan giữa các thị trường gia tăng trong các giai đoạn biến động cao của thị trường Hoa Kỳ.
Xu & Hamori 2012 AR(k)-EGARCH(p,q) Các nước BRIC (Brazil, Nga, Ấn Độ, Trung Quốc) và Hoa Kỳ Sự truyền dẫn giá cổ phiếu quốc tế suy yếu trong giai đoạn khủng hoảng tài chính Hoa Kỳ 2008–09.
Gupta & Guidi 2012 Đồng tích hợp Engle-Granger, DCC-GARCH Thị trường chứng khoán Ấn Độ, Hồng Kông, Nhật Bản, Singapore Mối quan hệ ngắn hạn trong giai đoạn khủng hoảng nhưng không có mối quan hệ dài hạn mạnh mẽ giữa các thị trường này.
Karanasos et al. 2014 AR-DCC-FIAPARCH Các chỉ số lợi suất của các thị trường Anh, Mỹ, Đức, Pháp, Nhật Bản, Singapore, Hồng Kông, Canada từ năm 1988 đến 2010 Mối tương quan thay đổi theo thời gian, mạnh mẽ hơn trong các cuộc khủng hoảng tài chính năm 1997 và 2008.
Rockinger & Jondeau 2001 Plackett copula Các chỉ số chứng khoán châu Âu: CAC40 (Pháp), DAX (Đức), Nikkei 225 (Nhật Bản), S&P500 (Hoa Kỳ) Sự phụ thuộc mạnh giữa các thị trường chứng khoán châu Âu và thấp hơn ở S&P500 và Nikkei 225 kể từ những năm 90.
Basher et al. 2014 Gaussian, t Student, Joe Clayton copula Các thị trường chứng khoán ở các nước Vùng vịnh Ả Rập trong giai đoạn 2004–2013 Sự phụ thuộc có điều kiện không hoàn toàn đối xứng, với sự phụ thuộc đuôi dưới lớn hơn đáng kể so với sự phụ thuộc đuôi trên.
Boudt & Swanson 2015 Copula có điều kiện Các thị trường chứng khoán quốc tế trong các giai đoạn biến động khác nhau Sự phụ thuộc có điều kiện thay đổi theo thời gian và điều kiện thị trường, đặc biệt trong các thời kỳ khủng hoảng.
Zhang & Chan 2018 Copula Thị trường chứng khoán châu Á và thị trường chứng khoán Mỹ trong giai đoạn 2000–2016 Sự phụ thuộc có điều kiện gia tăng trong các giai đoạn khủng hoảng toàn cầu, với sự khác biệt giữa các loại copula.
Aloui & Khediri 2015 Copula Các thị trường chứng khoán của các nền kinh tế mới nổi và các nền kinh tế phát triển trong giai đoạn 2000–2013 Sự phụ thuộc đuôi dưới chiếm ưu thế so với đuôi trên, đặc biệt trong các thời kỳ biến động cao.
Choi & Hammoudeh 2011 Copula Các thị trường chứng khoán Trung Đông và Bắc Phi với thị trường chứng khoán quốc tế trong giai đoạn 1995–2008 Sự phụ thuộc có điều kiện gia tăng trong các giai đoạn khủng hoảng và sự khác biệt giữa các khu vực địa lý.
Degiannakis & Chatzigeorgiou 2019 Copula Các thị trường chứng khoán của các quốc gia phát triển và đang phát triển trong giai đoạn 2004–2016 Sự phụ thuộc có điều kiện có sự khác biệt giữa các nhóm quốc gia, với mối liên kết chặt chẽ hơn trong các thời kỳ biến động cao và khủng hoảng.

CHƯƠNG 3 DỮ LIỆU VÀ PHƯƠNG PHÁP NGHIÊN CỨU

3.1 Dữ liệu nghiên cứu

Dữ liệu nghiên cứu được sử dụng trong bài tiểu luận là hai chuỗi tỷ suất lợi nhuận của thị trường chứng khoán Việt Nam, đại diện bởi chỉ số VNINDEX, và thị trường chứng khoán Hàn Quốc, đại diện bởi chỉ số KOSPI. Giai đoạn nghiên cứu kéo dài từ ngày 31 tháng 1 năm 2018 đến ngày 31 tháng 7 năm 2024.

Nghiên cứu được thiết kế để đo lường mức độ tác động của các cú sốc kinh tế, chia thành bốn giai đoạn chính:

  • Giai đoạn trước các cú sốc kinh tế: Từ đầu năm 2018 đến cuối năm 2019.
  • Giai đoạn trong dịch Covid-19: Từ đầu năm 2020 đến cuối năm 2021.
  • Giai đoạn xung đột Nga-Ukraine: Từ đầu năm 2022 đến tháng 2 năm 2023.
  • Giai đoạn sau cú sốc: Từ tháng 3 năm 2023 đến đầu tháng 7 năm 2024.

Giá của hai chỉ số chứng khoán được thu thập từ trang web investing.com. Tỷ suất lợi nhuận được tính theo công thức \(R_t = \ln(P_t) - \ln(P_{t-1})\), với \(P_t\) là giá chỉ số chứng khoán tại thời điểm \(t\).

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

3.2.1 Mô hình phân phối biên có điều kiện của chuỗi lợi suất

Trong nghiên cứu này, mô hình Glosten-Jagannathan-Runkle GARCH (GJR-GARCH(r,m)) với lợi nhuận trung bình theo quy trình tự hồi quy ARMA(p,q) được sử dụng để mô hình hóa mỗi chuỗi lợi suất. Mô hình này, được đề xuất bởi Engle & Ng (1993) và Glosten & cộng sự (1993), là một mở rộng của mô hình GARCH truyền thống, cho phép trung bình có điều kiện phụ thuộc trực tiếp vào phương sai có điều kiện. Mô hình GJR-GARCH có khả năng phản ánh hiệu ứng đòn bẩy, thể hiện sự biến động hay mức độ phản ứng khác biệt của lợi suất đối với các cú sốc âm và cú sốc dương trước đó.

Để nắm bắt đặc tính đuôi dày và bất đối xứng của hàm phân phối xác suất của các chuỗi lợi suất, nghiên cứu này không giả định rằng phần dư của mô hình có phân phối chuẩn hay phân phối Student-t. Thay vào đó, nghiên cứu sử dụng các phân phối bổ sung như phân phối Skewed Student-t, phân phối lỗi tổng quát GED, và phân phối lệch Skewed GED. Những phân phối này giúp nắm bắt các đặc điểm đặc trưng của phân phối xác suất các chuỗi tài sản tài chính.

Gọi \(r_t\)\(\sigma_t^2\) lần lượt đại diện cho lợi suất chứng khoán và phương sai có điều kiện tại thời điểm \(t\). Mô hình biên cho mỗi chuỗi lợi suất ARMA(p,q)-GJR-GARCH(r,m) có dạng như sau:

Mô hình trung bình ARMA(p,q): \[ r_t = c + \sum_{i=1}^{p} \phi_i r_{t-i} + \sum_{i=1}^{q} \theta_i \epsilon_{t-i} + \epsilon_t \]

Mô hình phương sai có điều kiện GJR-GARCH(r,m): \[ \sigma_t^2 = \omega + \sum_{i=1}^{r} \alpha_i \epsilon_{t-i}^2 + \sum_{i=1}^{m} \beta_i \sigma_{t-i}^2 + \gamma \sum_{i=1}^{s} \epsilon_{t-i}^2 \cdot s_{t-i} \]

Trong đó, \(\gamma\) thể hiện hiệu ứng đòn bẩy; \(s_{t-i} = 1\) khi \(\epsilon_{t-i} < 0\)\(s_{t-i} = 0\) trong trường hợp ngược lại; \(\epsilon_t\) đại diện cho sai số. Các phần dư chuẩn hóa của mỗi chuỗi lợi suất \(z_t\) tuân theo các dạng phân phối như Skewed Student-t, phân phối GED hoặc phân phối sGED.

Dựa trên nghiên cứu của Tsay (2010), quy trình xác định mô hình ARMA(p,q)-GJR-GARCH(r,m) tối ưu cho mỗi chuỗi lợi suất bao gồm bốn bước chính:

1.Xác định Mô Hình Trung Bình: Xác định mô hình ARMA(p,q) tối ưu cho giá trị trung bình và kiểm tra các phần dư ước lượng để xác định sự hiện diện của hiệu ứng ARCH. Nếu có sự hiện diện của hiệu ứng ARCH, mô hình GJR-GARCH sẽ được chỉ định.

2.Ước Lượng Mô Hình GJR-GARCH: Xây dựng và ước lượng mô hình GJR-GARCH cho các chuỗi phần dư.

3.Kiểm Tra Độ Phù Hợp Mô Hình: Đánh giá độ phù hợp của mô hình trung bình và mô hình phương sai có điều kiện đã chọn.

4.Chẩn Đoán và Lựa Chọn Mô Hình:

  • Xem xét các bậc p, q của mô hình ARMA với bậc tối đa là 5, dựa trên phương pháp ước lượng hợp lý cực đại (MLE) và tiêu chuẩn thông tin AIC và BIC.
  • Kiểm tra tính phân phối chuẩn của phần dư bằng kiểm định Jarque-Bera.
  • Kiểm tra tính dừng của chuỗi phần dư bằng kiểm định Augmented Dickey-Fuller (ADF) và kiểm định Kwiatkowski-Phillips-Schmidt-Shin (KPSS).
  • Kiểm tra sự hiện diện của tự tương quan trong chuỗi phần dư và bình phương phần dư bằng kiểm định Ljung-Box Q và Q2.
  • Kiểm tra hiệu ứng ARCH bằng kiểm định Lagrange Multiplier (LM) của Engle (1982).

Nếu kiểm định LM chỉ ra sự hiện diện của hiệu ứng ARCH, mô hình ARMA không phù hợp và mô hình GARCH sẽ được áp dụng. Mô hình ARMA(p,q)-GJR-GARCH(r,m) với phân phối phù hợp nhất sẽ được lựa chọn dựa vào các tiêu chuẩn thông tin AIC, BIC, SIC, và HQIC. Cuối cùng, tham số của mô hình ARMA(p,q)-GJR-GARCH(r,m) với phân phối biên phù hợp sẽ được ước lượng.

3.2.2 Kiểm định tính phù hợp của mô hình phân phối biên

Sau khi chọn mô hình ARMA(p,q)-GJR-GARCH(r,m) với phân phối biên phù hợp cho chuỗi phần dư của chuỗi lợi suất, bước tiếp theo là trích xuất phần dư chuẩn hóa \(z_t\) theo điều kiện \(\Omega_{t-i}\). Để kiểm tra tính phù hợp của mô hình phân phối biên, thực hiện chuyển đổi chuỗi phần dư chuẩn hóa \(z_t\) sang giá trị tích phân xác suất \(u_t\) bằng cách sử dụng hàm phân phối biên thực nghiệm \(F\).

Cụ thể, giá trị tích phân xác suất \(u_t\) được tính theo công thức: \[ u_t = F(z_t | \Omega_{t-i}) \] với \(F(z_t | \Omega_{t-i})\) là hàm phân phối thực nghiệm được đề xuất bởi Genest & cộng sự (1995). Ước lượng phi tham số của hàm \(F\) được xác định như sau: \[ \hat{F}(Z_t) = \frac{1}{T} \sum_{t=1}^{T} \mathbb{I}(Z_t \leq z_t) \] Trong đó \(\mathbb{I}\) là hàm chỉ số (indicator function) và \(T\) đại diện cho kích thước mẫu.

Để kiểm tra giả định rằng các biến \(u_t\) là độc lập và phân phối đồng nhất trên khoảng \([0,1]\), sử dụng các kiểm định thống kê sau:

  1. Kiểm định Kolmogorov-Smirnov (K-S): \[ KS_t = \sqrt{\frac{T}{2} \int_{0}^{1} \left(F_T(u) - u\right)^2 \, du} \] Trong đó \(F_T(u)\) là hàm phân phối thực nghiệm của \(u_t\)\(T\) là kích thước mẫu.

  2. Kiểm định Cramer-von Mises (Cv-M): \[ CvM_t = \frac{1}{T} \sum_{t=1}^{T} \left(F_T(u_t) - u_t\right)^2 \] Trong đó \(F_T(u_t)\) là hàm phân phối thực nghiệm và \(u_t\) là giá trị tích phân xác suất.

Nếu các kiểm định này cho thấy giả định về sự độc lập và phân phối đồng nhất của các biến \(u_t\) là hợp lệ, các biến \(u_t\) có thể được sử dụng làm đầu vào cho mô hình copula để phân tích mối quan hệ phụ thuộc giữa các biến. Mô hình copula và các tính chất của chúng sẽ được trình bày chi tiết trong phần tiếp theo của bài viết.

3.2.3 Ước lượng các tham số cho mô hình Copula

Ước lượng tham số cho mô hình copula được thực hiện bằng phương pháp suy luận cận biên (IFM - Inference for Margins). Phương pháp này cho phép phân tách việc ước lượng tham số của hàm phân phối biên và tham số của copula, đặc biệt hữu ích cho các mô hình điều kiện phức tạp hơn. Quá trình IFM bao gồm:

  1. Ước lượng tham số của hàm phân phối biên: Tối đa hóa hàm log-likelihood của các phân phối biên bằng phương pháp MLE hoặc phương pháp moments.
  2. Ước lượng tham số của copula: Dựa trên các giá trị tích phân xác suất từ các phân phối biên đã ước lượng, tối đa hóa hàm log-likelihood của copula.

Phương pháp IFM giúp xử lý các mô hình điều kiện phức tạp bằng cách ước lượng riêng biệt cho các thành phần của copula và phân phối biên, từ đó cung cấp cái nhìn sâu sắc hơn về các mối quan hệ phụ thuộc trong dữ liệu.

Bước 1: Ước Lượng Tham Số của Hàm Phân Phối Biên : Trước tiên, các tham số của hàm phân phối biên cho từng biến độc lập được ước lượng. Các phương pháp phổ biến để thực hiện điều này bao gồm:

  • Ước lượng Hợp lý Cực đại (MLE - Maximum Likelihood Estimation): Phương pháp này tối ưu hóa hàm log-likelihood để tìm các tham số của phân phối biên. Đối với mỗi biến độc lập, hàm log-likelihood được tối đa hóa như sau: \[ \hat{\theta}^1 = \arg\max_{\theta_1} \sum_{t=1}^{T} \log f_1(z_{1t} \mid \Omega_{t-1}, \theta_1) \] \[ \hat{\theta}^2 = \arg\max_{\theta_2} \sum_{t=1}^{T} \log f_2(z_{2t} \mid \Omega_{t-1}, \theta_2) \] Trong đó, \(f_1\)\(f_2\) là hàm mật độ xác suất (PDF) của các phân phối biên, và \(\theta_1\)\(\theta_2\) là các tham số của hàm phân phối biên.

  • Phương pháp Moments: Đây là phương pháp thay thế nếu cần ước lượng các tham số dựa trên các môoments của phân phối.

Sau khi ước lượng các tham số của phân phối biên, chúng ta thu được các giá trị \(\hat{\theta}^1\)\(\hat{\theta}^2\) cho các phân phối biên tương ứng.

Bước 2: Ước Lượng Tham Số của Copula : Sau khi ước lượng các tham số của hàm phân phối biên, chúng ta chuyển sang ước lượng tham số của copula. Hàm copula mô tả mối quan hệ phụ thuộc giữa các biến độc lập.

Để thực hiện ước lượng tham số của copula, chúng ta sử dụng các giá trị tích phân xác suất \(F_1\)\(F_2\) đã được tính từ hàm phân phối biên. Hàm log-likelihood của copula được tối đa hóa như sau: \[ \hat{\theta}^c = \arg\max_{\theta_c} \sum_{t=1}^{T} \log c\left(F_1(z_{1t} \mid \Omega_{t-1}; \hat{\theta}^1), F_2(z_{2t} \mid \Omega_{t-1}; \hat{\theta}^2); \theta_c\right) \] Trong đó, \(c\) là hàm mật độ xác suất của copula, \(\hat{\theta}^1\)\(\hat{\theta}^2\) là các tham số của phân phối biên đã ước lượng trước đó, và \(\theta_c\) là các tham số của copula cần ước lượng.

3.2.4 Lựa chọn mô hình phù hợp

Sau khi ước lượng tham số, các mô hình copula cần được đánh giá để xác định mô hình nào phù hợp nhất với dữ liệu. Các phương pháp đánh giá sự phù hợp bao gồm:

  • Kiểm Định Sự Phù Hợp: Sử dụng các kiểm định thống kê để đánh giá mức độ phù hợp của mô hình copula với dữ liệu thực tế. Các kiểm định phổ biến bao gồm:

    • Kiểm định Anderson-Darling (A-D): Đo lường sự khác biệt giữa phân phối thực tế và phân phối dự đoán của mô hình copula.
    • Kiểm định Cramer-von Mises (Cv-M): Đánh giá mức độ phù hợp dựa trên sự khác biệt giữa hàm phân phối tích lũy thực tế và mô hình.
    • Kiểm định Kolmogorov-Smirnov (K-S): So sánh phân phối thực tế với phân phối dự đoán của mô hình copula.

    Các giá trị của các kiểm định này được tính toán bằng cách so sánh phân phối thực tế với phân phối được dự đoán từ mô hình copula. Ví dụ: \[ \text{K-S} = \max_{t} \left| U_t - F_t \right| \] \[ \text{Cv-M} = \frac{1}{T} \sum_{t=1}^{T} \left( U_t - F_t \right)^2 \] Trong đó, \(U_t\) là giá trị thực tế và \(F_t\) là giá trị dự đoán từ mô hình.

  • Tiêu Chuẩn Thông Tin: Sử dụng các tiêu chuẩn thông tin để chọn mô hình copula tốt nhất:

    • Akaike Information Criterion (AIC): Đo lường sự mất mát thông tin khi sử dụng mô hình và ưu tiên mô hình có giá trị AIC thấp hơn. AIC được tính bằng: \[ \text{AIC} = -2 \cdot \text{log-likelihood} + 2 \cdot k \] Trong đó, \(k\) là số lượng tham số trong mô hình.
    • Bayesian Information Criterion (BIC): Tương tự như AIC nhưng có điều chỉnh thêm để tránh overfitting bằng cách ưa thích các mô hình đơn giản hơn. BIC được tính bằng: \[ \text{BIC} = -2 \cdot \text{log-likelihood} + \log(T) \cdot k \] Trong đó, \(T\) là kích thước mẫu và \(k\) là số lượng tham số trong mô hình.

Dựa trên các kết quả từ các kiểm định sự phù hợp và tiêu chuẩn thông tin, chọn mô hình copula có giá trị p cao nhất từ các kiểm định hoặc có giá trị AIC/BIC thấp nhất. Mô hình copula phù hợp nhất sẽ là mô hình có sự phù hợp tốt nhất với dữ liệu

CHƯƠNG 4 KẾT QUẢ NGHIÊN CỨU

library(xlsx)
library(quantmod)
library(tidyverse)
library(xts)
library(xlsx) 
library(PerformanceAnalytics)
library(forecast)
library(rugarch)
library(goftest)
library(VineCopula)
library(tseries)
library(FinTS)
library(ggplot2)
library(corrplot)
library(ggcorrplot)
vni <- read.xlsx("D:/mohinhngaunhien/dulieuvni.xlsx",1)
VNI <- xts(vni[,-1], order.by = vni$Date) #Khai báo dữ liệu chuỗi thời gian, sắp xếp theo thời gian

kospi <- read.xlsx("D:/mohinhngaunhien/dulieukospi.xlsx",1) 
kospi <- xts(kospi[,-1],order.by = kospi$Date)

dt <- merge.xts(kospi,VNI,join = 'inner') # Kết quả sẽ là một đối tượng thời gian mới chứa các giá trị của cả sti và VNI tại các thời điểm chung, và được gán vào biến dt.
library(PerformanceAnalytics) #Để có thể sử dụng lệnh CalculateReturns 
rt <- CalculateReturns(dt,method = 'log') #Tính tỷ suất lợi nhuận theo công thức logt - logt-1
rt <- rt[-1]

4.1 Thống kê mô tả

library(moments)
rt_df <- as.data.frame(rt)
a <- rt_df %>% summarise(Min = min(VNI),
                         Max = max(VNI),
                         Mean = mean(VNI),
                         StDev = sd(VNI),
                         Skewness = skewness(VNI),
                         Kurtosis = kurtosis(VNI))
b <- rt_df %>% summarise(Min = min(kospi),
                         Max = max(kospi),
                         Mean = mean(kospi),
                         StDev = sd(kospi),
                         Skewness = skewness(kospi),
                         Kurtosis = kurtosis(kospi))
library(kableExtra)
m <- rbind(a,b)
rownames(m) <- c('VNI','kospi')
kable(m, format = 'pandoc', caption = 'Bảng 2: Thống kê mô tả chuỗi TSLN', table.attr = "style='width:100%;'") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Bảng 2: Thống kê mô tả chuỗi TSLN
Min Max Mean StDev Skewness Kurtosis
VNI -0.0690762 0.0486002 7.71e-05 0.0128990 -0.9279462 6.695129
kospi -0.0876698 0.0825127 4.93e-05 0.0117041 -0.1601537 9.342062

Bảng trên trình bày các thống kê mô tả của chuỗi tỷ suất lợi nhuận (TSLN) cho hai chỉ số VNI và KOSPI. Đối với chỉ số VNI, giá trị nhỏ nhất (Min) của TSLN là -0.0690762, trong khi giá trị lớn nhất (Max) đạt 0.0486002. Điều này cho thấy mức độ biến động của VNI là tương đối cao, với một phạm vi dao động rộng. Giá trị trung bình (Mean) của VNI là 7.71e-05, rất gần với 0, điều này cho thấy trung bình lợi nhuận của VNI là không đáng kể qua thời gian, một đặc điểm thường thấy ở các chuỗi dữ liệu tài chính. Độ lệch chuẩn (StDev) của VNI là 0.0128990, cho thấy mức độ phân tán của lợi nhuận xung quanh giá trị trung bình là khá lớn. Về độ lệch (Skewness), VNI có giá trị -0.9279462, cho thấy phân phối của lợi nhuận có đuôi dài hơn ở phía âm, tức là có khả năng xảy ra các giá trị giảm mạnh nhiều hơn so với tăng mạnh. Độ nhọn (Kurtosis) của VNI là 6.695129, vượt quá 3 (kurtosis của phân phối chuẩn), chỉ ra rằng phân phối của lợi nhuận VNI có đuôi dày, tức là có nhiều ngoại lệ hơn, phản ánh sự bất thường hoặc rủi ro cao trong dữ liệu.

Đối với chỉ số KOSPI, giá trị nhỏ nhất của TSLN là -0.0876698 và giá trị lớn nhất là 0.0825127, cũng thể hiện mức độ biến động cao tương tự như VNI. Tuy nhiên, giá trị trung bình của KOSPI là 4.93e-05, thấp hơn so với VNI, cho thấy lợi nhuận trung bình của KOSPI cũng không đáng kể qua thời gian. Độ lệch chuẩn của KOSPI là 0.0117041, thấp hơn một chút so với VNI, cho thấy mức độ phân tán của lợi nhuận KOSPI quanh giá trị trung bình cũng thấp hơn. Độ lệch của KOSPI là -0.1601537, cho thấy phân phối lợi nhuận của KOSPI ít lệch về phía âm hơn so với VNI. Tuy nhiên, độ nhọn của KOSPI là 9.342062, cao hơn đáng kể so với VNI, chỉ ra rằng KOSPI có nhiều ngoại lệ hơn, với rủi ro cao hơn liên quan đến những biến động cực đoan trong chuỗi lợi nhuận.

Tóm lại, cả hai chỉ số đều cho thấy sự biến động đáng kể, nhưng VNI có độ lệch âm mạnh hơn, trong khi KOSPI có độ nhọn cao hơn, chỉ ra mức độ rủi ro khác nhau trong hai thị trường này.

Để trực quan hóa rõ hơn sự phân bố và nhận diện các đặc điểm khác biệt giữa hai chuỗi TSLN này, chúng ta sẽ tiến hành xây dựng biểu đồ hộp (boxplot). Biểu đồ hộp không chỉ cung cấp thêm thông tin về trung vị, khoảng tứ phân vị mà còn giúp dễ dàng nhận ra các giá trị ngoại lệ (outliers) trong chuỗi dữ liệu, từ đó làm rõ hơn những đặc điểm mà các chỉ số thống kê mô tả có thể chưa thể hiện được hết.

pivot_longer(rt_df, cols = everything(), names_to = "TSLN", values_to = "Value") %>% ggplot(aes(x = TSLN, y = Value)) +
  geom_boxplot(fill = "red", color = "black") +
  theme_minimal() +
  labs(title = "Hình 7: Biểu đồ hộp của TSLN VNI và kospi",
       x = "Chỉ số",
       y = "Tỷ suất sinh lợi")

Nhìn chung, cả hai chuỗi TSLN của KOSPI và VNINDEX đều có phân bố tập trung xung quanh giá trị trung vị, với hộp (box) của cả hai chỉ số tương đối ngắn, cho thấy mức độ biến động trong một khoảng giới hạn. Tuy nhiên, chúng ta cũng dễ dàng nhận thấy sự hiện diện của nhiều điểm ngoại lệ (outliers) ở cả hai phía của biểu đồ hộp, đặc biệt là ở phía dưới của mỗi hộp. Điều này cho thấy rằng, trong giai đoạn nghiên cứu, đã có những biến động lớn và bất thường về tỷ suất sinh lợi của cả hai chỉ số.

So sánh giữa hai chỉ số, VNINDEX có một dải phân bố rộng hơn một chút so với KOSPI, điều này có thể được giải thích bằng việc thị trường chứng khoán Việt Nam thường có những biến động lớn hơn so với thị trường Hàn Quốc. Tuy nhiên, KOSPI lại có nhiều outliers hơn về phía trên, chỉ ra rằng có nhiều ngày mà TSLN của KOSPI tăng đột biến hơn so với VNINDEX.

Tóm lại, biểu đồ hộp cho thấy sự biến động lớn và tồn tại nhiều giá trị ngoại lệ trong TSLN của cả hai chỉ số, với một số khác biệt nhất định về mức độ phân tán và số lượng outliers giữa hai thị trường. Điều này có thể gợi ý về những đặc điểm và hành vi khác nhau giữa hai thị trường chứng khoán trong giai đoạn được nghiên cứu.

Các kiểm định

#Kiểm định tính dừng
adf_vni <- adf.test(rt$VNI)
adf_kospi <- adf.test(rt$kospi)
#Kiểm định phân phối chuẩn
jq_vni <- jarque.bera.test(rt$VNI)
jq_kospi <- jarque.bera.test(rt$kospi)
# Ước lượng và trích xuất phần dư từ mô hình ARMA tối ưu
arima_VNI <- autoarfima(rt$VNI,ar.max = 2, ma.max = 2, criterion = 'AIC', method = "full")

arima_kospi <- autoarfima(rt$kospi,ar.max = 2, ma.max = 2, criterion = 'AIC', method = "full")

re_VNI <- arima_VNI$fit@fit$residuals
re_kospi <- arima_kospi$fit@fit$residuals
#Kiểm định tương quan chuỗi bậc 2 cho phần dư
lj_vni <- Box.test(re_VNI,type = 'Ljung-Box', lag = 2)
lj_kospi <- Box.test(re_kospi,type = 'Ljung-Box', lag = 2)

#Kiểm định tương quan chuỗi bậc 2 cho phần dư bình phương
lj_vni2 <- Box.test(re_VNI^2,type = 'Ljung-Box', lag = 2)
lj_kospi2 <- Box.test(re_kospi^2,type = 'Ljung-Box', lag = 2)

#Kiểm định hiệu ứng ARCH
ar_vni <- ArchTest(re_VNI, lags = 2)
ar_kospi <- ArchTest(re_kospi, lags = 2)

#Trình bày kết quả
test_result <- data.frame(Test = c("ADF","J-B","Q(2)","Q(2)^2", "ARCH(2)"),
                          P_value_VNI = c(adf_vni$p.value, jq_vni$p.value, lj_vni$p.value, lj_vni2$p.value, ar_vni$p.value),
                          P_value_kospi = c(adf_kospi$p.value, jq_kospi$p.value, lj_kospi$p.value, lj_kospi2$p.value, ar_kospi$p.value))
kable(test_result, 
      caption = "Bảng 3: Kết quả các kiểm định", 
      label = 'Ghi chú: Q (2) and Q2 (2) lần lượt là kiểm định Ljung-Box Q2 cho tương quan chuỗi bậc 2 của phần dư và bình phương phần dư của lợi suất', 
      format = 'pandoc') %>% kable_styling(
        bootstrap_options = c("striped", "hover", "condensed"), 
        full_width = F)
Bảng 3: Kết quả các kiểm định
Test P_value_VNI P_value_kospi
ADF 0.0100000 0.0100000
J-B 0.0000000 0.0000000
Q(2) 0.9996737 0.5823746
Q(2)^2 0.0000000 0.0000000
ARCH(2) 0.0000000 0.0000000

Các kết quả trên cho thấy rằng cả hai chuỗi TSLN của VNI và KOSPI đều là chuỗi ổn định nhưng không tuân theo phân phối chuẩn. Cả hai chuỗi không có tự tương quan theo giá trị TSLN nhưng có tự tương quan theo phương sai, đồng thời tồn tại hiện tượng ARCH. Những đặc điểm này cần được xem xét kỹ lưỡng khi lựa chọn và xây dựng các mô hình phân tích và dự báo cho hai chuỗi thời gian này, đặc biệt là các mô hình GARCH để xử lý sự biến động không đều qua thời gian.Cụ thể như sau :

  • Kiểm định ADF (Augmented Dickey-Fuller):

Giá trị p-value cho cả hai chỉ số VNI và KOSPI đều bằng 0.0100, nhỏ hơn mức ý nghĩa 0.05. Điều này cho thấy chuỗi TSLN của cả hai chỉ số đều không có đơn vị gốc, tức là cả hai chuỗi đều là ổn định (stationary). Điều này là quan trọng đối với việc áp dụng các mô hình thời gian như ARMA-GARCH.

  • Kiểm định J-B (Jarque-Bera):

Giá trị p-value cho cả VNI và KOSPI đều bằng 0.0000, nhỏ hơn nhiều so với mức ý nghĩa 0.05, cho thấy chúng ta bác bỏ giả thuyết về phân phối chuẩn của hai chuỗi TSLN. Điều này ngụ ý rằng chuỗi lợi nhuận của cả hai thị trường đều không tuân theo phân phối chuẩn, một đặc điểm thường thấy trong các chuỗi tài chính với sự hiện diện của skewness và kurtosis lớn.

  • Kiểm định Q(2):

P-value của kiểm định Q(2) cho VNI là 0.9996737 và cho KOSPI là 0.5823746. Cả hai giá trị này đều lớn hơn 0.05, cho thấy rằng không có bằng chứng để bác bỏ giả thuyết rằng các giá trị TSLN không có tự tương quan đến độ trễ 2 (tức là chuỗi không có sự phụ thuộc theo chu kỳ).

  • Kiểm định Q(2)^2:

P-value cho kiểm định Q(2)^2 đều bằng 0.0000 cho cả hai chỉ số, rất nhỏ hơn 0.05. Điều này cho thấy rằng chuỗi phương sai của cả VNI và KOSPI có tự tương quan đến độ trễ 2, tức là có sự phụ thuộc về phương sai có điều kiện, một dấu hiệu của hiệu ứng ARCH/GARCH.

  • Kiểm định ARCH(2):

Cả hai chuỗi VNI và KOSPI đều có giá trị p-value bằng 0.0000 cho kiểm định ARCH(2), nhỏ hơn mức ý nghĩa 0.05. Điều này cho thấy rằng tồn tại hiện tượng ARCH (ARCH effect) trong chuỗi, tức là phương sai của các chuỗi lợi nhuận biến đổi theo thời gian, một đặc điểm điển hình trong các chuỗi thời gian tài chính.

4.2 Hệ số tương quan

# HỆ SỐ TƯƠNG QUAN
pearson <- cor(rt$VNI,rt$kospi, method="pearson")
spearman <- cor(rt$VNI,rt$kospi, method="spearman")
kendall <- cor(rt$VNI,rt$kospi, method="kendall")

#Trình bày kết quả
relat <- data.frame('Tương quan' = 'VNI-kospi',
                    Pearson = pearson[1,1],
                    spearman = spearman[1,1],
                    Kendall = kendall[1,1])
kable(relat, 
      col.names = c("Phương pháp", "Pearson", "Spearman","Kendall"),
      caption = "Bảng 4: Kết quả hệ số tương quan",
      format = 'pandoc',
      align = c("l", "c", "c")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Bảng 4: Kết quả hệ số tương quan
Phương pháp Pearson Spearman Kendall
VNI-kospi 0.3058383 0.2878419 0.19853

Bảng 4 trình bày kết quả hệ số tương quan giữa tỷ suất sinh lợi của chỉ số VNINDEX và KOSPI theo ba phương pháp khác nhau: Pearson, Spearman và Kendall. Cụ thể, hệ số tương quan Pearson là 0.3058, cho thấy mức độ liên kết tuyến tính giữa tỷ suất sinh lợi của VNINDEX và KOSPI là yếu. Giá trị này gần bằng 0, phản ánh rằng mặc dù có một số mức độ tương quan giữa hai chỉ số, mối liên hệ tuyến tính giữa chúng không đủ mạnh để cho thấy sự liên kết rõ ràng.

Hệ số tương quan Spearman đạt 0.2878, chỉ ra mức độ tương quan đồng biến giữa tỷ suất sinh lợi của hai chỉ số. Giá trị này thấp hơn một chút so với hệ số Pearson, cho thấy mối liên hệ đồng biến giữa VNINDEX và KOSPI không mạnh mẽ và có thể có sự khác biệt trong thứ tự xếp hạng của các tỷ suất sinh lợi.

Hệ số tương quan Kendall, với giá trị 0.1985, cung cấp một cái nhìn về mối liên hệ đồng biến giữa tỷ suất sinh lợi của VNINDEX và KOSPI qua các cặp xếp hạng. Giá trị này là thấp nhất trong ba hệ số, cho thấy mức độ đồng biến giữa hai chỉ số là yếu nhất.

Tổng quan, tất cả ba hệ số tương quan đều cho thấy rằng mối liên hệ giữa tỷ suất sinh lợi của VNINDEX và KOSPI là yếu, dù dưới các phương pháp đo lường khác nhau. Mặc dù có một mức độ liên kết đồng biến nhất định, các hệ số này cho thấy sự tương quan giữa tỷ suất sinh lợi của hai chỉ số không đủ mạnh để khẳng định một mối liên hệ rõ ràng và đồng nhất.

par(mfrow = c(1,2))

corr <- cor(rt)
ggcorrplot(corr, hc.order = TRUE,
           outline.col = "red",
           ggtheme = ggplot2::theme_gray,
           colors = c("#6D9EC1", "red", "yellow"),
           lab = TRUE, lab_col = 'black',title = 'Hình 8: Trực quan hóa hệ số tương quan với phương pháp Pearson')

Kết luận:

Mối quan hệ giữa VNI và KOSPI: Dựa trên ma trận tương quan, có thể kết luận rằng hai chỉ số này có mối quan hệ tương quan dương vừa phải. Điều này gợi ý rằng thị trường chứng khoán Việt Nam (VNI) và thị trường chứng khoán Hàn Quốc (KOSPI) có xu hướng cùng biến động theo cùng một chiều hướng. Mối quan hệ này có thể do nhiều yếu tố gây ra, chẳng hạn như các yếu tố kinh tế toàn cầu, các sự kiện địa chính trị, hay các dòng tiền đầu tư xuyên biên giới. Việc hiểu rõ mối quan hệ này có thể giúp các nhà đầu tư, nhà phân tích đưa ra các quyết định đầu tư hiệu quả hơn.

chart.Correlation(rt, histogram=TRUE, pch=19)

Đồ thị quan hệ giữa chỉ số KOSPI (Hàn Quốc) và chỉ số VNI (Việt Nam) cung cấp cái nhìn tổng quan về mối quan hệ giữa hai thị trường chứng khoán này. Đồ thị được chia thành ba phần chính: hai biểu đồ tần suất (histogram) và một biểu đồ phân tán (scatter plot). Các biểu đồ tần suất hiển thị phân phối tần suất của lợi nhuận hàng ngày cho cả KOSPI và VNI, minh họa sự phân bố của các giá trị lợi nhuận xung quanh một giá trị trung bình. Biểu đồ phân tán cho thấy mối quan hệ giữa lợi nhuận hàng ngày của KOSPI và VNI, với mỗi điểm trên đồ thị đại diện cho một cặp giá trị lợi nhuận tương ứng của hai chỉ số. Đường hồi quy màu đỏ trên biểu đồ này thể hiện xu hướng chung của mối quan hệ giữa hai chỉ số.

Phân tích mối quan hệ này dựa trên hệ số tương quan Pearson, với giá trị “0.31” kèm theo ba dấu sao (***) chỉ ra mối tương quan dương vừa phải giữa KOSPI và VNI. Điều này nghĩa là khi KOSPI tăng, VNI cũng có xu hướng tăng theo và ngược lại. Biểu đồ phân tán cho thấy các điểm dữ liệu phân tán xung quanh đường hồi quy với độ nghiêng dương nhẹ, củng cố kết luận về mối tương quan dương. Tuy nhiên, sự phân tán của các điểm dữ liệu cho thấy mối quan hệ này không hoàn hảo, ngụ ý rằng còn có những yếu tố khác ngoài KOSPI ảnh hưởng đến diễn biến của VNI. Các histogram cho thấy sự phân bố lợi nhuận của cả hai chỉ số tương đối đối xứng quanh giá trị trung bình, chỉ ra rằng sự biến động của cả KOSPI và VNI khá ngẫu nhiên.

4.3 Phân tích biến động chuỗi tỷ suất sinh lợi

par(mfrow = c(1,2))
vni1 <- CalculateReturns(vni, method = 'log')

ggplot(vni, aes(x = Date, y= vni1$Price))+
  geom_line(color = "purple")+
  labs(title = "Hình 9: Biến động theo ngày của TSLN VNINDEX",x = "Ngày", y="Tỷ suất sinh lợi")+
  theme(plot.title = element_text(hjust = 0.5))

kospi <- read.xlsx("D:/mohinhngaunhien/dulieukospi.xlsx",1) 
kospi1 <- CalculateReturns(kospi, method = 'log')
ggplot(kospi, aes(x = Date, y= kospi1$Price))+
  geom_line(color = "green")+
  labs(title = "Hình 10: Biến động theo ngày của TSLN kospi",x = "Ngày", y="Tỷ suất sinh lợi")+
  theme(plot.title = element_text(hjust = 0.5))

Nhận xét tổng quan :

  • VNI :

Biểu đồ tỷ suất sinh lợi của chỉ số VN-Index trong giai đoạn từ năm 2018 đến năm 2024 thể hiện sự biến động mạnh mẽ và liên tục của thị trường chứng khoán Việt Nam. Đường biểu diễn trên biểu đồ cho thấy không có xu hướng rõ ràng, điều này ngụ ý rằng thị trường không có sự tăng trưởng ổn định trong suốt thời gian này. Các biến động ngắn hạn xuất hiện thường xuyên, với tỷ suất sinh lợi dao động từ dương sang âm trong khoảng thời gian ngắn, cho thấy thị trường rất nhạy cảm với các tin tức và sự kiện. Biểu đồ cũng phản ánh nhiều đỉnh và đáy khác nhau, thể hiện các giai đoạn tăng trưởng và giảm điểm của thị trường, cùng với sự thay đổi về độ biến động theo thời gian. Điều này cho thấy, không có một chu kỳ biến động rõ ràng nào được thể hiện trên biểu đồ. Đối với nhà đầu tư, sự biến động mạnh của tỷ suất sinh lợi đồng nghĩa với rủi ro cao, nhưng đồng thời cũng tạo ra nhiều cơ hội sinh lời nếu biết nắm bắt thời cơ. Nhà đầu tư cần phân tích kỹ lưỡng các yếu tố cơ bản và kỹ thuật của thị trường trước khi đưa ra quyết định đầu tư. Đối với nhà quản lý và nhà hoạch định chính sách, biểu đồ này cung cấp thông tin quan trọng để đánh giá hiệu quả hoạt động của thị trường, lập kế hoạch đầu tư, và điều chỉnh các chính sách kinh tế nhằm ổn định thị trường.

  • KOSPI :

Biểu đồ biến động tỷ suất sinh lợi hàng ngày của chỉ số KOSPI trong giai đoạn từ năm 2018 đến năm 2024 cho thấy thị trường chứng khoán Hàn Quốc đã trải qua một giai đoạn đầy biến động, chịu ảnh hưởng mạnh mẽ từ nhiều yếu tố khác nhau. Đường biểu diễn tỷ suất sinh lợi không cho thấy một xu hướng tăng trưởng dài hạn rõ ràng, mà thay vào đó là những dao động mạnh mẽ và liên tục, phản ánh sự nhạy cảm của thị trường đối với các sự kiện và tin tức xảy ra trong giai đoạn này. Biểu đồ cũng không thể hiện một chu kỳ biến động rõ ràng nào, như chu kỳ kinh tế hoặc thị trường, khiến cho việc dự đoán và lập kế hoạch đầu tư trở nên phức tạp hơn.

Với sự biến động mạnh mẽ này, đầu tư vào KOSPI trong giai đoạn 2018-2024 đi kèm với rủi ro cao, nhưng đồng thời cũng tạo ra nhiều cơ hội sinh lời cho những nhà đầu tư có khả năng nắm bắt thời cơ. Tuy nhiên, để đưa ra quyết định đầu tư hiệu quả, nhà đầu tư cần phải phân tích kỹ lưỡng các yếu tố cơ bản và kỹ thuật của thị trường. Các yếu tố vĩ mô như lãi suất, tỷ giá hối đoái, tăng trưởng GDP, và chính sách tiền tệ đóng vai trò quan trọng trong việc định hình xu hướng của thị trường, trong khi các yếu tố vi mô như kết quả kinh doanh của doanh nghiệp và tâm lý nhà đầu tư cũng góp phần không nhỏ vào sự biến động này.

Biểu đồ này còn có ý nghĩa quan trọng đối với các nhà quản lý và nhà hoạch định chính sách. Nó cung cấp một công cụ để đánh giá hiệu quả hoạt động của thị trường chứng khoán Hàn Quốc, từ đó giúp các nhà quản lý quỹ lập kế hoạch đầu tư phù hợp. Đồng thời, nó cũng cho phép các nhà hoạch định chính sách đánh giá tác động của các chính sách kinh tế và điều chỉnh chúng để ổn định thị trường. Để có được một phân tích toàn diện hơn, cần phải kết hợp biểu đồ này với các chỉ số kỹ thuật khác, cũng như các thông tin về nền kinh tế Hàn Quốc và các yếu tố cơ bản của doanh nghiệp niêm yết trên KOSPI.

rt %>% ggplot(aes(VNI, kospi)) +
  geom_point(col = 'blue',shape = TRUE) + 
  geom_smooth(method = 'lm',se = T, col = 'green') + #thêm đường hồi quy với phương pháp hồi quy tuyến tính  
  labs(title = 'Hình 11: Biểu đồ Scatter TSLN của kospi và VNI', x = 'VNI', y = 'kospi')

Dựa trên biểu đồ scatter, tỷ suất sinh lợi (TSLN) của hai chỉ số KOSPI và VN-Index (VNI) cho thấy có một mối quan hệ dương giữa chúng, được thể hiện qua độ dốc dương của đường hồi quy. Điều này có nghĩa là khi TSLN của một chỉ số tăng, chỉ số còn lại cũng có xu hướng tăng theo. Tuy nhiên, mối quan hệ này không hoàn toàn chặt chẽ, thể hiện qua sự phân tán rộng của các điểm dữ liệu xung quanh đường hồi quy. Điều này cho thấy rằng mặc dù có xu hướng cùng tăng hoặc giảm, KOSPI và VNI vẫn có những thời điểm diễn biến khác biệt, chịu ảnh hưởng từ các yếu tố khác nhau.

Độ biến động của cả hai chỉ số cũng khá lớn, với các giai đoạn tăng trưởng và giảm điểm mạnh. Điều này cho thấy cả hai thị trường đều trải qua những biến động đáng kể trong giai đoạn 2018-2024, nhưng mức độ biến động có thể không đồng nhất trong từng thời kỳ. Sự không đồng nhất này tạo ra cơ hội nhưng cũng tiềm ẩn rủi ro, đặc biệt khi thị trường này có thể ảnh hưởng lẫn nhau trong các thời điểm khó khăn.

Việc nhà đầu tư có thể sử dụng thông tin về mối quan hệ này để đa dạng hóa danh mục đầu tư giữa hai thị trường là một chiến lược tiềm năng. Mặc dù có mối quan hệ dương, nhưng sự khác biệt trong biến động có thể giúp giảm thiểu rủi ro tổng thể cho danh mục. Tuy nhiên, nhà đầu tư cũng cần lưu ý rằng mối quan hệ này chỉ phản ánh trong quá khứ và có thể thay đổi do các yếu tố kinh tế vĩ mô và vi mô, cũng như tâm lý thị trường. Do đó, trước khi đưa ra quyết định đầu tư, việc kết hợp biểu đồ này với các phân tích kỹ thuật, cơ bản và các yếu tố định lượng khác là rất quan trọng.

4.4 Ước lượng cấu trúc phụ thuộc của VNI và KOSPI

4.4.1 Xác định mô hình phân phối biên

Để ước lượng chính xác các tham số của mô hình copula, trước tiên cần xác định mô hình phân phối biên tối ưu nhất để mô tả đặc điểm biến động của từng chuỗi lợi suất chứng khoán. Các phân phối biên này, được xây dựng dựa trên sai số chuẩn hóa của mỗi chuỗi lợi suất, sẽ là đầu vào quan trọng cho mô hình copula hai biến. Mô hình biên tổng quát áp dụng là ARMA(p,q)-GJR-GARCH(r,m), trong đó độ trễ p và q của mô hình ARMA(p,q) được lựa chọn dựa trên việc tối thiểu hóa tiêu chuẩn thông tin AIC, thông qua phương pháp ước lượng hợp lý cực đại (MLE). Mô hình này tối ưu hóa việc xác định độ trễ và bước nhảy của chuỗi dữ liệu. Hiệu ứng ARCH, được xác nhận qua kiểm định Lagrange Multiplier (LM), xuất hiện ở tất cả các chuỗi lợi suất, làm nổi bật sự cần thiết của việc sử dụng mô hình GARCH. Để tìm ra mô hình biên phù hợp nhất, một tập hợp gồm 20 mô hình khác nhau, với các kết hợp tham số r, m và độ trễ p, q tối đa là 2, được đánh giá. Đồng thời, 5 dạng hàm phân phối của chuỗi phần dư cũng được kiểm định cho mỗi chuỗi lợi suất, bao gồm: phân phối chuẩn (Normal), Student-t, Skewed Student-t, phân phối lỗi tổng quát (GED), và phân phối lỗi tổng quát lệch (sGED). Cuối cùng, mô hình phân phối biên tối ưu cho mỗi chuỗi lợi suất được xác định dựa trên giá trị nhỏ nhất của các tiêu chuẩn thông tin AIC, BIC, SIC, và HQIC, đảm bảo tính khoa học và sự chính xác cao nhất trong việc mô hình hóa các chuỗi dữ liệu tài chính.

#Setup garch(1,1) and estimate for VNI coef
#Norm
spec_VNI_ugarch11_norm <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(1,1), include.mean = TRUE),
  distribution.model = "norm")

VNI_garch11_norm <- ugarchfit(spec = spec_VNI_ugarch11_norm, data = rt$VNI)

#Std
spec_VNI_ugarch11_std <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "std")

VNI_garch11_std <- ugarchfit(spec = spec_VNI_ugarch11_std, data = rt$VNI)

#Sstd
spec_VNI_ugarch11_sstd <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "sstd")

VNI_garch11_sstd <- ugarchfit(spec = spec_VNI_ugarch11_sstd, data = rt$VNI)

#ged
spec_VNI_ugarch11_ged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "ged")

VNI_garch11_ged <- ugarchfit(spec = spec_VNI_ugarch11_ged, data = rt$VNI)

#Sged
spec_VNI_ugarch11_sged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "sged")

VNI_garch11_sged <- ugarchfit(spec = spec_VNI_ugarch11_sged, data = rt$VNI)

#Setup garch(1,2) and estimate for VNI coef
#norm
spec_VNI_ugarch12_norm <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(1,1), include.mean = TRUE),
  distribution.model = "norm")

VNI_garch12_norm <- ugarchfit(spec = spec_VNI_ugarch12_norm, data = rt$VNI)

#std
spec_VNI_ugarch12_std <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "std")

VNI_garch12_std <- ugarchfit(spec = spec_VNI_ugarch12_std, data = rt$VNI)

#sstd
spec_VNI_ugarch12_sstd <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "sstd")

VNI_garch12_sstd <- ugarchfit(spec = spec_VNI_ugarch12_sstd, data = rt$VNI)

#ged
spec_VNI_ugarch12_ged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "ged")

VNI_garch12_ged <- ugarchfit(spec = spec_VNI_ugarch12_ged, data = rt$VNI)

#sged
spec_VNI_ugarch12_sged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "sged")

VNI_garch12_sged <- ugarchfit(spec = spec_VNI_ugarch12_sged, data = rt$VNI)

#Setup garch(2,1) and estimate for VNI coef
#norm
spec_VNI_ugarch21_norm <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(1,1), include.mean = TRUE),
  distribution.model = "norm")

VNI_garch21_norm <- ugarchfit(spec = spec_VNI_ugarch21_norm, data = rt$VNI)

#std
spec_VNI_ugarch21_std <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "std")

VNI_garch21_std <- ugarchfit(spec = spec_VNI_ugarch21_std, data = rt$VNI)

#sstd
spec_VNI_ugarch21_sstd <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "sstd")

VNI_garch21_sstd <- ugarchfit(spec = spec_VNI_ugarch21_sstd, data = rt$VNI)

#ged
spec_VNI_ugarch21_ged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "ged")

VNI_garch21_ged <- ugarchfit(spec = spec_VNI_ugarch21_ged, data = rt$VNI)

#sged
spec_VNI_ugarch21_sged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "sged")

VNI_garch21_sged <- ugarchfit(spec = spec_VNI_ugarch21_sged, data = rt$VNI)

#Setup garch(2,2) and estimate for VNI coef
#norm
spec_VNI_ugarch22_norm <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(1,1), include.mean = TRUE),
  distribution.model = "norm")

VNI_garch22_norm <- ugarchfit(spec = spec_VNI_ugarch22_norm, data = rt$VNI)

#std
spec_VNI_ugarch22_std <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "std")

VNI_garch22_std <- ugarchfit(spec = spec_VNI_ugarch22_std, data = rt$VNI)

#sstd
spec_VNI_ugarch22_sstd <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "sstd")

VNI_garch22_sstd <- ugarchfit(spec = spec_VNI_ugarch22_sstd, data = rt$VNI)

#ged
spec_VNI_ugarch22_ged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "ged")

VNI_garch22_ged <- ugarchfit(spec = spec_VNI_ugarch22_ged, data = rt$VNI)

#sged
spec_VNI_ugarch22_sged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
  distribution.model = "sged")

VNI_garch22_sged <- ugarchfit(spec = spec_VNI_ugarch22_sged, data = rt$VNI)

#Setup garch(1,1) and estimate for kospi coef
#norm
spec_kospi_ugarch11_norm <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "norm")

kospi_garch11_norm <- ugarchfit(spec = spec_kospi_ugarch11_norm, data = rt$kospi)

#std
spec_kospi_ugarch11_std <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "std")

kospi_garch11_std <- ugarchfit(spec = spec_kospi_ugarch11_std, data = rt$kospi)

#sstd
spec_kospi_ugarch11_sstd <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "sstd")

kospi_garch11_sstd <- ugarchfit(spec = spec_kospi_ugarch11_sstd, data = rt$kospi)

#ged
spec_kospi_ugarch11_ged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "ged")

kospi_garch11_ged <- ugarchfit(spec = spec_kospi_ugarch11_ged, data = rt$kospi)

#sged
spec_kospi_ugarch11_sged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "sged")

kospi_garch11_sged <- ugarchfit(spec = spec_kospi_ugarch11_sged, data = rt$kospi)

#Setup garch(1,2) and estimate for STI coef
#norm
spec_kospi_ugarch12_norm <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "norm")

kospi_garch12_norm <- ugarchfit(spec = spec_kospi_ugarch12_norm, data = rt$kospi)

#std
spec_kospi_ugarch12_std <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "std")

kospi_garch12_std <- ugarchfit(spec = spec_kospi_ugarch12_std, data = rt$kospi)

#sstd
spec_kospi_ugarch12_sstd <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "sstd")

kospi_garch12_sstd <- ugarchfit(spec = spec_kospi_ugarch12_sstd, data = rt$kospi)

#ged
spec_kospi_ugarch12_ged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "ged")

kospi_garch12_ged <- ugarchfit(spec = spec_kospi_ugarch12_ged, data = rt$kospi)

#sged
spec_kospi_ugarch12_sged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "sged")

kospi_garch12_sged <- ugarchfit(spec = spec_kospi_ugarch12_sged, data = rt$kospi)

#Setup garch(2,1) and estimate for STI coef
#norm
spec_kospi_ugarch21_norm <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "norm")

kospi_garch21_norm <- ugarchfit(spec = spec_kospi_ugarch21_norm, data = rt$kospi)

#std
spec_kospi_ugarch21_std <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "std")

kospi_garch21_std <- ugarchfit(spec = spec_kospi_ugarch21_std, data = rt$kospi)

#sstd
spec_kospi_ugarch21_sstd <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "sstd")

kospi_garch21_sstd <- ugarchfit(spec = spec_kospi_ugarch21_sstd, data = rt$kospi)

#ged
spec_kospi_ugarch21_ged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "ged")

kospi_garch21_ged <- ugarchfit(spec = spec_kospi_ugarch21_ged, data = rt$kospi)

#sged
spec_kospi_ugarch21_sged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "sged")

kospi_garch21_sged <- ugarchfit(spec = spec_kospi_ugarch21_sged, data = rt$kospi)

#Setup garch(2,2) and estimate for kospi coef
#norm
spec_kospi_ugarch22_norm <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "norm")

kospi_garch22_norm <- ugarchfit(spec = spec_kospi_ugarch22_norm, data = rt$kospi)

#std
spec_kospi_ugarch22_std <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "std")

kospi_garch22_std <- ugarchfit(spec = spec_kospi_ugarch22_std, data = rt$kospi)

#sstd
spec_kospi_ugarch22_sstd <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "sstd")

kospi_garch22_sstd <- ugarchfit(spec = spec_kospi_ugarch22_sstd, data = rt$kospi)

#ged
spec_kospi_ugarch22_ged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "ged")

kospi_garch22_ged <- ugarchfit(spec = spec_kospi_ugarch22_ged, data = rt$kospi)

#sged
spec_kospi_ugarch22_sged <- ugarchspec(
  variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)),
  mean.model = list(armaOrder = c(0, 2), include.mean = TRUE),
  distribution.model = "sged")

kospi_garch22_sged <- ugarchfit(spec = spec_kospi_ugarch22_sged, data = rt$kospi)

#Choose optimization model for vni coef
VNI.model.list <- list(garch11n = VNI_garch11_norm, garch11t = VNI_garch11_std, garch11st = VNI_garch11_sstd, 
                       garch11g = VNI_garch11_ged, garch11sg = VNI_garch11_sged, 
                       garch12n = VNI_garch12_norm, garch12t = VNI_garch12_std, garch12st = VNI_garch12_sstd, 
                       garch12g = VNI_garch12_ged, garch12sg = VNI_garch12_sged,
                       garch21n = VNI_garch21_norm, garch21t = VNI_garch21_std, garch21st = VNI_garch21_sstd, 
                       garch21g = VNI_garch21_ged, garch21sg = VNI_garch21_sged,
                       garch22n = VNI_garch22_norm, garch22t = VNI_garch22_std, garch22st = VNI_garch22_sstd, 
                       garch22g = VNI_garch22_ged, garch22sg = VNI_garch22_sged
) 

VNI.info.mat <- sapply(VNI.model.list, infocriteria)

rownames(VNI.info.mat) <- rownames(infocriteria(VNI_garch11_norm))

VNI.inds <- which(VNI.info.mat == min(VNI.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.VNI <- colnames(VNI.info.mat)[VNI.inds[,2]]


#Choose optimization model for kospi coef
kospi.model.list <- list(garch11n = kospi_garch11_norm, garch11t = kospi_garch11_std, garch11st = kospi_garch11_sstd, 
                         garch11g = kospi_garch11_ged, garch11sg = kospi_garch11_sged, 
                         garch12n = kospi_garch12_norm, garch12t = kospi_garch12_std, garch12st = kospi_garch12_sstd, 
                         garch12g = kospi_garch12_ged, garch12sg = kospi_garch12_sged,
                         garch21n = kospi_garch21_norm, garch21t = kospi_garch21_std, garch21st = kospi_garch21_sstd, 
                         garch21g = kospi_garch21_ged, garch21sg = kospi_garch21_sged,
                         garch22n = kospi_garch22_norm, garch22t = kospi_garch22_std, garch22st = kospi_garch22_sstd, 
                         garch22g = kospi_garch22_ged, garch22sg = kospi_garch22_sged
)

kospi.info.mat <- sapply(kospi.model.list, infocriteria)

rownames(kospi.info.mat) <- rownames(infocriteria(kospi_garch11_norm))

kospi.inds <- which(kospi.info.mat == min(kospi.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.kospi <- colnames(kospi.info.mat)[kospi.inds[,2]]

#Trình bày kết quả
mar_model <- data.frame(
  rate = c("VNI", "kospi"),
  Format = c("ARMA(1,1)-GJR-GARCH(1,1)-Skewed Student t", "ARMA(0,2)-GJR-GARCH(1,1)-Student t"))

# Render the table
kable(mar_model, col.names = c("Tỷ suất sinh lợi", "Dạng mô hình phân phối biên"), 
      caption = "Bảng 5: Mô hình phân phối biên tối ưu", format = "pandoc", 
      table.attr = "style='width:100%;'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Bảng 5: Mô hình phân phối biên tối ưu
Tỷ suất sinh lợi Dạng mô hình phân phối biên
VNI ARMA(1,1)-GJR-GARCH(1,1)-Skewed Student t
kospi ARMA(0,2)-GJR-GARCH(1,1)-Student t

Bảng mô hình phân phối biên tối ưu cho tỷ suất sinh lợi của VN-Index và KOSPI cung cấp cái nhìn sâu sắc về cách hai chỉ số này biến động và chịu ảnh hưởng của các yếu tố khác nhau. Mô hình ARMA(p,q) kết hợp với GJR-GARCH(p,q) được sử dụng để mô tả sự phụ thuộc của tỷ suất sinh lợi vào các giá trị quá khứ cũng như sự thay đổi theo thời gian của biến động. Đối với VN-Index, mô hình ARMA(1,1)-GJR-GARCH(1,1)-Skewed Student t được lựa chọn, cho thấy tỷ suất sinh lợi của chỉ số này không chỉ phụ thuộc vào giá trị trong quá khứ mà còn có tính bất đối xứng trong biến động. Việc sử dụng phân phối Skewed Student t, với đặc tính đuôi dày và độ lệch, phản ánh khả năng cao của các biến động lớn, điều này phù hợp với tính chất của dữ liệu tài chính.

Ngược lại, mô hình ARMA(0,2)-GJR-GARCH(1,1)-Student t được xác định là phù hợp nhất cho KOSPI. Điều này cho thấy tỷ suất sinh lợi của KOSPI chịu ảnh hưởng chủ yếu từ các giá trị lỗi trong quá khứ, và giống như VN-Index, nó cũng có sự biến động theo thời gian với hiệu ứng bất đối xứng. Phân phối Student t, nổi tiếng với đặc tính đuôi dày, chỉ ra rằng KOSPI cũng có khả năng cao xảy ra các biến động lớn, làm nổi bật tầm quan trọng của việc quản lý rủi ro khi đầu tư vào thị trường này.

Các mô hình này không chỉ giúp hiểu rõ hơn về hành vi của VN-Index và KOSPI mà còn cung cấp công cụ dự báo hữu ích cho tương lai. Chúng hỗ trợ các nhà đầu tư trong việc đưa ra các quyết định đầu tư có căn cứ hơn và quản lý rủi ro hiệu quả hơn. Tuy nhiên, việc áp dụng các mô hình này đòi hỏi kiến thức chuyên sâu về tài chính và thống kê, do tính phức tạp và những giả định cơ bản mà chúng dựa trên. Ngoài ra, cần lưu ý rằng hiệu quả của các mô hình có thể thay đổi theo thời gian, do đó việc đánh giá và cập nhật định kỳ là cần thiết.

Tóm lại, bảng mô hình phân phối biên tối ưu này cung cấp thông tin quan trọng cho việc phân tích và dự báo tỷ suất sinh lợi của VN-Index và KOSPI, nhưng cũng cần được kết hợp với các phân tích kỹ thuật, cơ bản, và các yếu tố định lượng cũng như định tính khác để đưa ra những quyết định đầu tư toàn diện hơn.

Kết quả được trình bày chi tiết như sau :

#Trình bày kết quả

extract_garch_results <- function(fit) {
  coef <- coef(fit)
  se <- fit@fit$se.coef
  pvalues <- 2 * (1 - pnorm(abs(fit@fit$tval))) # tính giá trị p từ giá trị t
  results <- cbind(coef, se, pvalues)
  colnames(results) <- c("Estimate", "Std. Error", "Pr(>|z|)")
  return(results)
}

fit1 <- extract_garch_results(VNI_garch11_sstd)
fit2 <- extract_garch_results(kospi_garch11_std)

kable(as.data.frame(fit1), 
      caption = "Bảng 6: Kết quả mô hình ARMA(1,1)-GJR-Garch(1,1)-Skewed Student của biến VNI", 
      format = 'pandoc') %>% kable_styling(
        bootstrap_options = c("striped", "hover", "condensed"), 
        full_width = F)
Bảng 6: Kết quả mô hình ARMA(1,1)-GJR-Garch(1,1)-Skewed Student của biến VNI
Estimate Std. Error Pr(>|z|)
mu 0.0001517 0.0003793 0.6892566
ar1 0.9354074 0.0412495 0.0000000
ma1 -0.9092130 0.0496657 0.0000000
omega 0.0000105 0.0000003 0.0000000
alpha1 0.0146239 0.0113830 0.1988914
beta1 0.8004336 0.0178943 0.0000000
gamma1 0.2438585 0.0463731 0.0000001
skew 0.8226449 0.0295430 0.0000000
shape 4.2687133 0.4330202 0.0000000

Mô hình ARMA(1,1)-GJR-Garch(1,1)-Skewed Student được ước lượng cho biến VNI cung cấp một số thông tin đáng chú ý về động thái của tỷ suất lợi nhuận. Tham số mu (0.0001517) có giá trị nhỏ và không có ý nghĩa thống kê với giá trị p là 0.6892566, cho thấy trung bình tỷ suất lợi nhuận hàng ngày không đáng kể. Tham số ar1 (0.9354074) có giá trị dương cao và có ý nghĩa thống kê mạnh mẽ (p < 0.001), cho thấy tác động lớn của giá trị quá khứ của tỷ suất lợi nhuận đến giá trị hiện tại. Tham số ma1 (-0.9092130) cũng có ý nghĩa thống kê cao (p < 0.001), phản ánh sự điều chỉnh mạnh của sai số dự đoán trong mô hình.

Trong phần mô hình GJR-Garch, omega (0.0000105) có giá trị nhỏ nhưng có ý nghĩa thống kê cao (p < 0.001), cho thấy biến động ngẫu nhiên (độ chênh lệch) cơ bản của tỷ suất lợi nhuận. Tham số alpha1 (0.0146239) tuy có giá trị dương nhưng không có ý nghĩa thống kê (p = 0.1988914), điều này có thể chỉ ra rằng các cú sốc tiêu cực không có tác động mạnh mẽ đến biến động trong mô hình này. Tham số beta1 (0.8004336) có ý nghĩa thống kê cao (p < 0.001), cho thấy sự phụ thuộc lớn của biến động hiện tại vào biến động quá khứ. Tham số gamma1 (0.2438585) có giá trị dương và ý nghĩa thống kê cao (p < 0.001), phản ánh tác động không đối xứng của các cú sốc tiêu cực, tức là biến động gia tăng khi thị trường giảm điểm.

Cuối cùng, các tham số phân phối của phần dư, bao gồm skew (0.8226449) và shape (4.2687133), đều có ý nghĩa thống kê cao (p < 0.001). Tham số skew cho thấy độ bất đối xứng trong phân phối phần dư, trong khi shape chỉ ra sự dày của đuôi phân phối. Cả hai đều cho thấy rằng phân phối phần dư không phải là phân phối chuẩn, mà bị lệch và có đuôi dài hơn, phù hợp với dữ liệu tài chính thường thấy.

kable(as.data.frame(fit2), 
  caption = "Bảng 7: Kết quả mô hình ARMA(0,2)-GJR-Garch(1,1)-Student của biến kospi", 
  format = 'pandoc') %>% kable_styling(
            bootstrap_options = c("striped", "hover", "condensed"), 
            full_width = F)
Bảng 7: Kết quả mô hình ARMA(0,2)-GJR-Garch(1,1)-Student của biến kospi
Estimate Std. Error Pr(>|z|)
mu 0.0002089 0.0002484 0.4003240
ma1 0.0047348 0.0264466 0.8579131
ma2 0.0355580 0.0262546 0.1756232
omega 0.0000101 0.0000003 0.0000000
alpha1 0.0319720 0.0113061 0.0046863
beta1 0.7889288 0.0175536 0.0000000
gamma1 0.1838222 0.0383813 0.0000017
shape 8.5670833 1.5186577 0.0000000

Kết quả từ mô hình ARMA(0,2)-GJR-Garch(1,1)-Student cho biến KOSPI cung cấp các thông tin quan trọng về động thái và biến động của tỷ suất lợi nhuận. Tham số mu (0.0002089) có giá trị nhỏ và không có ý nghĩa thống kê với giá trị p là 0.4003240, cho thấy trung bình tỷ suất lợi nhuận hàng ngày không có sự khác biệt đáng kể.

Các tham số ma1 (0.0047348) và ma2 (0.0355580) đều không có ý nghĩa thống kê với các giá trị p lần lượt là 0.8579131 và 0.1756232, chỉ ra rằng các sai số dự đoán từ hai lag trước đó không ảnh hưởng nhiều đến tỷ suất lợi nhuận hiện tại.

Trong mô hình GJR-Garch, omega (0.0000101) có giá trị nhỏ và ý nghĩa thống kê cao (p < 0.001), cho thấy biến động cơ bản của tỷ suất lợi nhuận là thấp. Tham số alpha1 (0.0319720) có giá trị dương và có ý nghĩa thống kê cao (p = 0.0046863), cho thấy các cú sốc tiêu cực có tác động đáng kể đến biến động của tỷ suất lợi nhuận. Tham số beta1 (0.7889288) cũng có ý nghĩa thống kê cao (p < 0.001), cho thấy sự phụ thuộc mạnh của biến động hiện tại vào biến động quá khứ. Tham số gamma1 (0.1838222) với giá trị p rất nhỏ (p = 0.0000017) cho thấy sự tồn tại của sự không đối xứng trong phản ứng của thị trường đối với cú sốc tiêu cực.

Cuối cùng, tham số shape (8.5670833) có giá trị dương và ý nghĩa thống kê cao (p < 0.001), cho thấy phân phối của phần dư có đuôi dài hơn so với phân phối chuẩn, chỉ ra rằng tỷ suất lợi nhuận có sự xuất hiện của các cú sốc lớn hơn và không đều.

4.4.2 Kiểm định tính phù hợp của mô hình phân phối biên

Sau khi lựa chọn mô hình phân phối biên phù hợp nhất cho từng chuỗi lợi suất, chúng ta tiến hành trích xuất phần dư chuẩn hóa \(z_{1t}|\Omega_{t−i}, z_{2t}|\Omega_{t−i}\) nhằm loại bỏ các yếu tố ảnh hưởng đã được mô hình hóa trước đó. Những phần dư chuẩn hóa này sau đó được chuyển đổi thành các giá trị tích phân xác suất thông qua hàm phân phối thực nghiệm \(F\), như được đề xuất bởi Genest và cộng sự (1995). Quá trình chuyển đổi này không chỉ giúp đảm bảo tính đồng nhất và độc lập của các biến ngẫu nhiên \(u_t\)\(v_t\) trên khoảng [0,1], mà còn là một bước chuẩn bị quan trọng để đưa dữ liệu vào mô hình copula. Bằng cách giả định rằng các biến này tuân theo phân phối đồng nhất, chúng ta có thể kiểm tra mức độ phù hợp của mô hình phân phối biên thông qua các kiểm định thống kê như Anderson-Darling, Cramer-von Mises (Cv-M), và Kolmogorov-Smirnov (K-S). Kết quả của những kiểm định này, được trình bày trong Bảng 7, cung cấp cái nhìn sâu sắc về khả năng của mô hình trong việc mô tả chính xác phân phối biên của các chuỗi lợi suất, từ đó tạo nền tảng vững chắc cho các phân tích copula tiếp theo.

#Kiểm định tính phù hợp của mô hình phân phối biên
# make probability integration for residual of vni
VNI.res <- residuals(VNI_garch11_sstd)/sigma(VNI_garch11_sstd) #standarded resid

a <- fitdist(distribution = "sstd", VNI.res, control = list()) #fit distribution for this resid

u <- pdist(distribution = "sstd", q = VNI.res, mu = a$pars['mu'] , sigma = a$pars['sigma'],
           skew = a$pars['skew'], shape = a$pars['shape']) # make probability integration

# make probability integration for residual of kospi
kospi.res <- residuals(kospi_garch11_std)/sigma(kospi_garch11_std) #standarđ resid

b <- fitdist(distribution = "std", kospi.res, control = list()) #fit distribution for this resid

v <- pdist(distribution = "std", q = kospi.res, mu = b$pars['mu'] , sigma = b$pars['sigma'],
           skew = b$pars['skew'], shape = b$pars['shape']) # make probability integration


#test with Anderson-Darling
library(goftest)
ad_vni <- ad.test(u, "punif")
ad_kospi <- ad.test(v, "punif")


#Kiểm định Cramer-von Mises
cvm_vni <- cvm.test(u, "punif")
cvm_kospi <- cvm.test(v, "punif")


# Kiem dinh ks-test
ks_vni <- ks.test(u, "punif")
ks_kospi <- ks.test(v, "punif")

#Trình bày kết quả
test <- data.frame(test = c('P_value VNI' ,'P_value kospi'),
                   AD = c(ad_vni$p.value, ad_kospi$p.value),
                   CVM = c(cvm_vni$p.value, cvm_kospi$p.value),
                   KS = c(ks_vni$p.value,ks_kospi$p.value))
library(knitr)
library(kableExtra)
kable(test, 
      caption = "Bảng 8: Kết quả các kiểm định cho mô hình phân phối biên", col.names = c("Các kiểm định","Anderson-Darling", "Cramer-von Mises","Kolmogorov-Smirnov"), 
      format = 'pandoc') %>% kable_styling(
        bootstrap_options = c("striped", "hover", "condensed"), 
        full_width = F)
Bảng 8: Kết quả các kiểm định cho mô hình phân phối biên
Các kiểm định Anderson-Darling Cramer-von Mises Kolmogorov-Smirnov
P_value VNI 0.6772034 0.5887576 0.2347707
P_value kospi 0.1375867 0.2242250 0.1401939

Kết quả kiểm định từ ba phương pháp Anderson-Darling, Cramer-von Mises và Kolmogorov-Smirnov đều cho thấy rằng mô hình phân phối biên được áp dụng cho tỷ suất lợi nhuận của VNI và KOSPI đều phù hợp với dữ liệu thực tế. Cụ thể, đối với VNI, các p-value lần lượt là 0.6772034, 0.5887576, và 0.2347707, tất cả đều lớn hơn mức ý nghĩa 0.05. Điều này cho thấy rằng không có bằng chứng để bác bỏ giả thuyết không, tức là mô hình phân phối biên được lựa chọn đã mô tả chính xác phân phối của tỷ suất lợi nhuận VNI. Tương tự, đối với KOSPI, mặc dù các p-value của kiểm định có thấp hơn (0.1375867, 0.2242250, và 0.1401939), nhưng vẫn vượt mức 0.05, khẳng định rằng mô hình phân phối biên cho KOSPI cũng là phù hợp.

Những kết quả này không chỉ củng cố độ tin cậy của mô hình phân phối biên trong việc phản ánh đặc điểm của tỷ suất lợi nhuận, mà còn cho thấy rằng các mô hình đã được lựa chọn cẩn thận và phù hợp với từng thị trường chứng khoán khác nhau. Từ đó, có thể kết luận rằng việc sử dụng các mô hình này trong phân tích sâu hơn là hợp lý và sẽ mang lại những kết quả có ý nghĩa thống kê và thực tiễn. Những kiểm định này đóng vai trò quan trọng trong việc xác nhận độ tin cậy của mô hình, góp phần tăng cường độ chính xác và tính thuyết phục của các phân tích và kết luận tiếp theo liên quan đến hành vi của các thị trường tài chính này.

4.4.3 Ước lượng tham sô của mô hình Copula

Sự phụ thuộc giữa TTCK Việt Nam đối với TTCK Hàn Quốc trong điều kiện biến động bình thường

Việc lựa chọn mô hình copula phù hợp là rất quan trọng trong việc mô tả chính xác mối quan hệ phụ thuộc giữa hai chỉ số chứng khoán, đặc biệt là trong các tình huống thị trường cực đoan. Để đánh giá và so sánh hiệu quả của các mô hình copula khác nhau, chúng ta đã ước lượng các tham số cho copula thuộc họ Elip, bao gồm copula Gaussian và copula Student. Bảng 9 dưới đây trình bày kết quả ước lượng cho các mô hình copula này, cho phép chúng ta đánh giá mức độ phụ thuộc giữa chỉ số VNI và KOSPI, cùng khả năng của các mô hình trong việc phản ánh sự phụ thuộc đuôi, điều này rất quan trọng trong việc phân tích rủi ro và biến động thị trường.

#Ước lượng tham số mô hình copula

#Ước lượng
library(VineCopula)
gau <- BiCopEst(u,v,family = 1, method = "mle", se = T, max.df = 10)
stu <- BiCopEst(u,v,family = 2, method = "mle", se = T, max.df = 10)
#Trình bày kết quả

est <- data.frame(mqh = c('VNI-kospi' ,'VNI-kospi'),
                  Copula = c('Gauss', 'Student'),
                  Thamso = c(gau$par, stu$par),
                  Thamso2 = c(gau$par2, stu$par2),
                  duoi = c(gau$taildep$lower,stu$taildep$lower))

kable(est, 
      caption = "Bảng 9: Kết quả ước lượng Copula họ Elip", col.names = c("Chỉ số","Copula", "Par","Par2", "Phụ thuộc đuôi"), 
      format = 'pandoc') %>% kable_styling(
        bootstrap_options = c("striped", "hover", "condensed"), 
        full_width = F)
Bảng 9: Kết quả ước lượng Copula họ Elip
Chỉ số Copula Par Par2 Phụ thuộc đuôi
VNI-kospi Gauss 0.2773312 0 0.0000000
VNI-kospi Student 0.2781933 10 0.0299104

Kết quả ước lượng copula từ họ Elip cho thấy mối quan hệ phụ thuộc giữa chỉ số VNI và KOSPI được mô hình hóa bằng hai loại copula: Gaussian và Student. Với copula Gaussian, tham số phụ thuộc ước lượng là 0.2773312, thể hiện mức độ phụ thuộc tuyến tính vừa phải giữa hai chỉ số. Tuy nhiên, copula này không có khả năng mô tả phụ thuộc đuôi, với giá trị phụ thuộc đuôi bằng 0, nghĩa là không thể phản ánh chính xác mối quan hệ trong các tình huống cực trị, như khi thị trường trải qua các biến động lớn cùng chiều. Điều này có thể dẫn đến việc đánh giá thiếu chính xác rủi ro trong các trường hợp cực đoan. Ngược lại, copula Student ước lượng tham số phụ thuộc gần tương tự (0.2781933), nhưng với tham số tự do Par2 là 10, cho phép mô hình này linh hoạt hơn trong việc mô tả mối quan hệ phụ thuộc giữa hai biến. Đặc biệt, copula Student có khả năng nắm bắt phụ thuộc đuôi, với giá trị 0.0299104, cho thấy khả năng xảy ra đồng biến động lớn giữa VNI và KOSPI, mặc dù mức độ này không quá cao. Nhìn chung, trong khi copula Gaussian chỉ mô tả được mối quan hệ tuyến tính và thiếu khả năng đánh giá rủi ro trong các tình huống thị trường cực đoan, copula Student với khả năng nắm bắt phụ thuộc đuôi dù nhẹ vẫn cung cấp một mô hình phù hợp hơn để mô phỏng các kịch bản rủi ro khi hai thị trường có thể cùng trải qua các biến động lớn.

Hình ảnh sau đây minh họa hàm mật độ xác suất (PDF) của hai loại Copula Elip đặc trưng: Gaussian và Student-t. Hình ảnh này không chỉ giúp chúng ta trực quan hóa cấu trúc phụ thuộc của dữ liệu mà còn làm nổi bật các điểm khác biệt trong cách mỗi mô hình phản ánh mối quan hệ giữa các biến. Bằng cách so sánh hình dạng của hai hàm mật độ này, chúng ta có thể hiểu rõ hơn về mức độ phụ thuộc và cấu trúc của dữ liệu, từ đó chọn lựa mô hình phù hợp nhất cho các phân tích tiếp theo.

library(copula)
library(grid)
library(gridExtra)
library(ggplot2)
set.seed(123)
#Mô phỏng copula gauss
cop_nor <- normalCopula(param = gau$par, dim = 2)

#Mô phỏng copula student
cop_std <- tCopula(param = stu$par, dim = 2, df = 1)

nor_per <- persp_plot(cop_nor, 'norp.png', 'pink')
std_per <- persp_plot(cop_std, 'stdp.png', 'red')

legend <- legendGrob(
  labels = c("Gauss", "Student"), pch = 15,
  gp = gpar(col = c('pink', 'red'), fill = c('pink', 'red'))
)

grid.arrange( nor_per, std_per, legend, ncol = 3, 
              layout_matrix = rbind(c(1, 2, 3)),
              widths = c(2, 2, 1), 
              top = textGrob("Hình 12: Phối cảnh PDF của Copula họ Elip được ước lượng", 
                             gp = gpar(fontsize = 15, font = 2))
)

Sự phụ thuộc giữa TTCK Việt Nam đối với TTCK Singapore trong điều kiện biến động cực biên

Việc lựa chọn mô hình Copula phù hợp là bước quan trọng trong việc nắm bắt chính xác sự phụ thuộc giữa các chỉ số chứng khoán. Để đạt được điều này, chúng ta đã ước lượng các tham số của mô hình Copula Student-t, một lựa chọn phù hợp để mô tả mối quan hệ giữa chỉ số VNI và KOSPI. Bảng 10 dưới đây cung cấp các thông số chi tiết của mô hình, bao gồm tham số phụ thuộc, tham số tự do, phụ thuộc đuôi, hệ số Kendall, và các chỉ số thông tin AIC và BIC. Kết quả này sẽ giúp chúng ta đánh giá và hiểu rõ hơn về mức độ phụ thuộc và khả năng mô hình trong việc phản ánh các tình huống cực trị.

#Lựa chọn và ước lượng
opt_cop <- BiCopSelect(u,v,selectioncrit = "AIC",method = "mle")
est_opt_cop <- BiCopEst(u,v,family = opt_cop$family,method = "mle",max.df = 30)

#Trình bày kết quả
est_opt_cop_dt <- data.frame(mqh = c('VNI-kospi'),
                             Copula = est_opt_cop$familyname,
                             Thamso = est_opt_cop$par,
                             Thamso2 = est_opt_cop$par2,
                             duoiduoi = est_opt_cop$taildep$lower,
                             duoitren = est_opt_cop$taildep$upper,
                             tau = est_opt_cop$tau,
                             aic = est_opt_cop$AIC,
                             bic = est_opt_cop$BIC)

kable(est_opt_cop_dt, 
      caption = "Bảng 10: Kết quả ước lượng mô hình Copula tối ưu", col.names = c("Chỉ số","Copula", "Par","Par2", "Đuôi dưới", "Đuôi trên","Hệ số Kendall", "AIC","BIC"), 
      format = 'pandoc') %>% kable_styling(
        bootstrap_options = c("striped", "hover", "condensed"), 
        full_width = F)
Bảng 10: Kết quả ước lượng mô hình Copula tối ưu
Chỉ số Copula Par Par2 Đuôi dưới Đuôi trên Hệ số Kendall AIC BIC
VNI-kospi t 0.2786179 10.55951 0.0259256 0.0259256 0.1797526 -134.3436 -123.649

Kết quả ước lượng mô hình Copula tối ưu được trình bày trong Bảng 10 cho thấy rằng Copula Student-t là lựa chọn chính xác nhất để mô hình hóa sự phụ thuộc giữa chỉ số VNI và KOSPI. Cụ thể, tham số phụ thuộc (Par) của Copula Student-t được ước lượng là 0.2786179, chỉ ra mức độ phụ thuộc vừa phải giữa hai chỉ số. Điều này cho thấy sự liên kết không quá mạnh nhưng vẫn đủ để phản ánh mối quan hệ đáng kể giữa VNI và KOSPI. Tham số tự do (Par2) có giá trị 10.55951, cho phép mô hình này nắm bắt tốt các sự kiện cực trị nhờ vào khả năng mô tả các đuôi phân phối dày, điều mà các mô hình khác có thể không làm được.

Đối với phụ thuộc đuôi, cả đuôi dưới và đuôi trên đều có giá trị là 0.0259256, cho thấy một mức độ phụ thuộc nhẹ trong các tình huống cực trị. Mặc dù mức độ phụ thuộc không cao, nhưng nó vẫn cung cấp thông tin quan trọng về sự đồng biến động trong các điều kiện bất thường. Hệ số Kendall (τ) của mô hình là 0.1797526, phản ánh một mức độ phụ thuộc trung bình giữa hai chỉ số.

Các chỉ số AIC (-134.3436) và BIC (-123.649) cho thấy mô hình Copula Student-t không chỉ phù hợp về mặt lý thuyết mà còn có hiệu suất tốt trong việc mô tả dữ liệu, với các giá trị này chứng tỏ rằng mô hình này có khả năng mô tả dữ liệu tốt mà không gặp phải hiện tượng quá khớp. Tổng quan, các kết quả này khẳng định rằng Copula Student-t là mô hình tối ưu, cung cấp cái nhìn chính xác và chi tiết về mối quan hệ phụ thuộc giữa VNI và KOSPI, đặc biệt trong các tình huống thị trường cực đoan.

Hình 13 này thể hiện hàm mật độ xác suất (PDF) của mô hình Copula BB7 trong không gian ba chiều. Mô hình BB7 là một trong những mô hình Copula tiên tiến, được thiết kế để mô hình hóa các cấu trúc phụ thuộc phức tạp hơn so với các mô hình Copula truyền thống như Gaussian hay Student-t. Hình 13 sẽ cung cấp một cái nhìn trực quan về cách phân bố xác suất của các cặp giá trị \((u, v)\) theo mô hình này. Đồ thị này không chỉ giúp chúng ta hiểu rõ hơn về hình dạng và sự tập trung của hàm mật độ mà còn cho thấy khả năng của mô hình trong việc mô phỏng các đuôi phân phối và sự phụ thuộc trong các tình huống cực đoan.

# Nạp các gói cần thiết
library(VC2copula)
library(copula)

# Giả sử est_opt_cop là một danh sách với các tham số đã ước lượng
est_opt_cop <- list(par = 1.5, par2 = 0.7)

# Tạo đối tượng BB7Copula
copula_obj <- VC2copula::BB7Copula(param = c(est_opt_cop$par, est_opt_cop$par2))

# Vẽ đồ thị 3D của PDF của BB7 Copula
# Thiết lập kích thước của thiết bị đồ họa
par(mfrow = c(1, 1), mar = c(5, 5, 4, 2) + 0.1)

# Vẽ đồ thị với các tùy chọn bổ sung
persp(copula_obj, dCopula, 
      xlab = 'u', ylab = 'v', zlab = 'density', col = 'blue', ltheta = 120,  
      ticktype = "detailed", cex.axis = 0.8,  
      main = 'Hình 13: Phối cảnh PDF của mô hình BB7 Copula')

So sánh mức độ phản ứng của TTCK Việt Nam đối với sự biến động TTCK Hàn Quốc qua các giai đoạn

Trước khi trình bày bảng phân phối biên tối ưu cho các giai đoạn khác nhau của chỉ số VNI và KOSPI, cần nên biết việc lựa chọn mô hình phù hợp là rất quan trọng để phản ánh chính xác các đặc điểm biến động của thị trường trong từng giai đoạn cụ thể. Bảng dưới đây tổng hợp các mô hình được áp dụng cho các giai đoạn trước cú sốc kinh tế, trong giai đoạn Covid-19, trong thời kỳ xung đột Nga-Ukraine, và sau cú sốc, với mục tiêu cung cấp cái nhìn toàn diện về cách thức biến động của chỉ số được mô hình hóa qua từng thời kỳ. Cụ thể được thể hiện qua bẩng sau đây :

#Trích xuất dữ liệu
truoc <- rt["2018-02-01/2019-12-30"]
covid <- rt["2020-01-02/2021-12-30"]
xung_dot <- rt["2022-02-24/2023-02-21"]
sau <- rt["2023-03-02/2024-07-31"]
library(arfima)
#Estimate arma
arma1vni <- autoarfima(truoc$VNI, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma1kospi <- autoarfima(truoc$kospi, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma2vni <- autoarfima(covid$VNI, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma2kospi <- autoarfima(covid$kospi, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma3vni <- autoarfima(xung_dot$VNI, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma3kospi <- autoarfima(xung_dot$kospi, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma4vni <- autoarfima(sau$VNI, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")
arma4kospi <- autoarfima(sau$kospi, ar.max = 2, ma.max = 2,criterion = 'AIC', method = "full")

arma1vni <- c(2,0)
arma1kospi <- c(0,0)
arma2kospi <- c(0,2)
arma2vni <- c(2,2)
arma3kospi <- c(2,2)
arma3vni <- c(2,2)
arma4kospi <- c(1,0)
arma4vni <- c(2,2)

#Setup garch and estimate for VNI coef

fit_gjrgarch <- function(data, amorder, garchoder, dis) {
  spec <- ugarchspec(
    variance.model = list(model = "gjrGARCH", garchOrder = garchoder),
    mean.model = list(armaOrder = amorder, include.mean = TRUE),
    distribution.model = dis)
  ugarchfit(spec = spec, data = data)
}
#Giai đoạn trước cho VNI
garch11_nor_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "norm")
garch11_std_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "std")
garch11_sstd_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "sstd")
garch11_ged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "ged")
garch11_sged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,1), "sged")
garch22_nor_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "norm")
garch22_std_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "std")
garch22_sstd_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "sstd")
garch22_ged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "ged")
garch22_sged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,2), "sged")
garch12_nor_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "norm")
garch12_std_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "std")
garch12_sstd_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "sstd")
garch12_ged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "ged")
garch12_sged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(1,2), "sged")
garch21_nor_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "norm")
garch21_std_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "std")
garch21_sstd_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "sstd")
garch21_ged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "ged")
garch21_sged_vni1 <- fit_gjrgarch(truoc$VNI, arma1vni, c(2,1), "sged")
#Giai đoạn Covid cho VNI
garch11_nor_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,1), "norm")
garch11_std_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,1), "std")
garch11_sstd_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,1), "sstd")

garch11_ged_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,1), "ged")

garch11_sged_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,1), "sged")
garch22_nor_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,2), "norm")
garch22_std_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,2), "std")
garch22_sstd_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,2), "sstd")
garch22_ged_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,2), "ged")
garch22_sged_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,2), "sged")
garch12_nor_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,2), "norm")
garch12_std_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,2), "std")
garch12_sstd_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,2), "sstd")
garch12_ged_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,2), "ged")
garch12_sged_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(1,2), "sged")
garch21_nor_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,1), "norm")
garch21_std_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,1), "std")
garch21_sstd_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,1), "sstd")
garch21_ged_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,1), "ged")
garch21_sged_vni2 <- fit_gjrgarch(covid$VNI, arma2vni, c(2,1), "sged")
#Giai đoạn xung đột
garch11_nor_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,1), "norm")
garch11_std_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,1), "std")
garch11_sstd_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,1), "sstd")
garch11_ged_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,1), "ged")
garch11_sged_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,1), "sged")
garch22_nor_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,2), "norm")
garch22_std_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,2), "std")
garch22_sstd_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,2), "sstd")
garch22_ged_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,2), "ged")
garch22_sged_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,2), "sged")
garch12_nor_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,2), "norm")
garch12_std_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,2), "std")
garch12_sstd_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,2), "sstd")
garch12_ged_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,2), "ged")
garch12_sged_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(1,2), "sged")
garch21_nor_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,1), "norm")
garch21_std_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,1), "std")
garch21_sstd_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,1), "sstd")
garch21_ged_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,1), "ged")
garch21_sged_vni3 <- fit_gjrgarch(xung_dot$VNI, arma3vni, c(2,1), "sged")
#Giai đoạn sau cú sốc 
garch11_nor_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,1), "norm")
garch11_std_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,1), "std")
garch11_sstd_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,1), "sstd")
garch11_ged_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,1), "ged")
garch11_sged_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,1), "sged")
garch22_nor_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,2), "norm")
garch22_std_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,2), "std")
garch22_sstd_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,2), "sstd")
garch22_ged_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,2), "ged")
garch22_sged_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,2), "sged")
garch12_nor_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,2), "norm")
garch12_std_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,2), "std")
garch12_sstd_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,2), "sstd")
garch12_ged_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,2), "ged")
garch12_sged_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(1,2), "sged")
garch21_nor_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,1), "norm")
garch21_std_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,1), "std")
garch21_sstd_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,1), "sstd")
garch21_ged_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,1), "ged")
garch21_sged_vni4 <- fit_gjrgarch(sau$VNI, arma4vni, c(2,1), "sged")
#Cho kospi giai đoạn trước
garch11_nor_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,1), "norm")
garch11_std_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,1), "std")
garch11_sstd_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,1), "sstd")
garch11_ged_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,1), "ged")
garch11_sged_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,1), "sged")
garch22_nor_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,2), "norm")
garch22_std_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,2), "std")
garch22_sstd_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,2), "sstd")
garch22_ged_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,2), "ged")
garch22_sged_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,2), "sged")
garch12_nor_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,2), "norm")
garch12_std_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,2), "std")
garch12_sstd_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,2), "sstd")
garch12_ged_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,2), "ged")
garch12_sged_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(1,2), "sged")
garch21_nor_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,1), "norm")
garch21_std_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,1), "std")
garch21_sstd_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,1), "sstd")
garch21_ged_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,1), "ged")
garch21_sged_kospi1 <- fit_gjrgarch(truoc$kospi, arma1kospi, c(2,1), "sged")
#Giai đoạn covid
garch11_nor_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,1), "norm")
garch11_std_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,1), "std")
garch11_sstd_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,1), "sstd")
garch11_ged_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,1), "ged")
garch11_sged_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,1), "sged")
garch22_nor_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(2,2), "norm")
garch22_std_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(2,2), "std")
garch22_sstd_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(2,2), "sstd")
garch22_ged_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(2,2), "ged")
garch22_sged_kospi2<- fit_gjrgarch(covid$kospi, arma2kospi, c(2,2), "sged")
garch12_nor_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,2), "norm")
garch12_std_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,2), "std")
garch12_sstd_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,2), "sstd")
garch12_ged_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,2), "ged")
garch12_sged_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(1,2), "sged")
garch21_nor_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(2,1), "norm")
garch21_std_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(2,1), "std")
garch21_sstd_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(2,1), "sstd")
garch21_ged_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(2,1), "ged")
garch21_sged_kospi2 <- fit_gjrgarch(covid$kospi, arma2kospi, c(2,1), "sged")
#Giai đoạn xung đột
garch11_nor_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,1), "norm")
garch11_std_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,1), "std")
garch11_sstd_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,1), "sstd")
garch11_ged_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,1), "ged")
garch11_sged_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,1), "sged")
garch22_nor_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,2), "norm")
garch22_std_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,2), "std")
garch22_sstd_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,2), "sstd")
garch22_ged_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,2), "ged")
garch22_sged_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,2), "sged")
garch12_nor_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,2), "norm")
garch12_std_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,2), "std")
garch12_sstd_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,2), "sstd")
garch12_ged_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,2), "ged")
garch12_sged_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(1,2), "sged")
garch21_nor_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,1), "norm")
garch21_std_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,1), "std")
garch21_sstd_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,1), "sstd")
garch21_ged_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,1), "ged")
garch21_sged_kospi3 <- fit_gjrgarch(xung_dot$kospi, arma3kospi, c(2,1), "sged")
#Giai đoạn sau
garch11_nor_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,1), "norm")
garch11_std_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,1), "std")
garch11_sstd_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,1), "sstd")
garch11_ged_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,1), "ged")
garch11_sged_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,1), "sged")
garch22_nor_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,2), "norm")
garch22_std_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,2), "std")
garch22_sstd_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,2), "sstd")
garch22_ged_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,2), "ged")
garch22_sged_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,2), "sged")
garch12_nor_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,2), "norm")
garch12_std_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,2), "std")
garch12_sstd_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,2), "sstd")
garch12_ged_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,2), "ged")
garch12_sged_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(1,2), "sged")
garch21_nor_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,1), "norm")
garch21_std_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,1), "std")
garch21_sstd_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,1), "sstd")
garch21_ged_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,1), "ged")
garch21_sged_kospi4 <- fit_gjrgarch(sau$kospi, arma4kospi, c(2,1), "sged")


#Chọn mô hình tối ưu
vni1.model.list <- list(garch11n = garch11_nor_vni1, garch11t = garch11_std_vni1, garch11st = garch11_sstd_vni1, 
                        garch11g = garch11_ged_vni1, garch11sg = garch11_sged_vni1, 
                        garch12n = garch12_nor_vni1, garch12t = garch12_std_vni1, garch12st = garch12_sstd_vni1, 
                        garch12g = garch12_ged_vni1, garch12sg = garch12_sged_vni1,
                        garch21n = garch21_nor_vni1, garch21t = garch21_std_vni1, garch21st = garch21_sstd_vni1, 
                        garch21g = garch21_ged_vni1, garch21sg = garch21_sged_vni1,
                        garch22n = garch22_nor_vni1, garch22t = garch22_std_vni1, garch22st = garch22_sstd_vni1, 
                        garch22g = garch22_ged_vni1, garch22sg = garch22_sged_vni1
)

vni1.info.mat <- sapply(vni1.model.list, infocriteria)

rownames(vni1.info.mat) <- rownames(infocriteria(garch11_nor_vni1))

vni1.inds <- which(vni1.info.mat == min(vni1.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.vni1 <- colnames(vni1.info.mat)[vni1.inds[,2]]

vni2.model.list <- list(garch11n = garch11_nor_vni2, garch11t = garch11_std_vni2, garch11st = garch11_sstd_vni2, 
                        garch11sg = garch11_sged_vni2, 
                        garch12n = garch12_nor_vni2, garch12t = garch12_std_vni2, garch12st = garch12_sstd_vni2, 
                        garch12g = garch12_ged_vni2, garch12sg = garch12_sged_vni2,
                        garch21n = garch21_nor_vni2, garch21t = garch21_std_vni2, garch21st = garch21_sstd_vni2, 
                        garch21g = garch21_ged_vni2, garch21sg = garch21_sged_vni2,
                        garch22n = garch22_nor_vni2, garch22t = garch22_std_vni2, garch22st = garch22_sstd_vni2, 
                        garch22g = garch22_ged_vni2, garch22sg = garch22_sged_vni2
)

vni2.info.mat <- sapply(vni2.model.list, infocriteria)

rownames(vni2.info.mat) <- rownames(infocriteria(garch11_nor_vni2))

vni2.inds <- which(vni2.info.mat == min(vni2.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.vni2 <- colnames(vni2.info.mat)[vni2.inds[,2]]

vni3.model.list <- list(garch11n = garch11_nor_vni3,  garch11st = garch11_sstd_vni3, 
                        garch11g = garch11_ged_vni3, garch11sg = garch11_sged_vni3, 
                        garch12n = garch12_nor_vni3, garch12t = garch12_std_vni3, garch12st = garch12_sstd_vni3, 
                        garch12g = garch12_ged_vni3, garch12sg = garch12_sged_vni3,
                        garch21n = garch21_nor_vni3, garch21t = garch21_std_vni3, garch21st = garch21_sstd_vni3, 
                        garch21g = garch21_ged_vni3, garch21sg = garch21_sged_vni3,
                        garch22n = garch22_nor_vni3, garch22t = garch22_std_vni3, garch22st = garch22_sstd_vni3, 
                        garch22g = garch22_ged_vni3, garch22sg = garch22_sged_vni3
)

vni3.info.mat <- sapply(vni3.model.list, infocriteria)

rownames(vni3.info.mat) <- rownames(infocriteria(garch11_nor_vni3))

vni3.inds <- which(vni3.info.mat == min(vni3.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.vni3 <- colnames(vni3.info.mat)[vni3.inds[,2]]

vni4.model.list <- list(garch11n = garch11_nor_vni4, garch11t = garch11_std_vni4, garch11st = garch11_sstd_vni4, 
                        garch11g = garch11_ged_vni4, garch11sg = garch11_sged_vni4, 
                        garch12n = garch12_nor_vni4, garch12t = garch12_std_vni4, garch12st = garch12_sstd_vni4, 
                        garch12g = garch12_ged_vni4, garch12sg = garch12_sged_vni4
)

vni4.info.mat <- sapply(vni4.model.list, infocriteria)

rownames(vni4.info.mat) <- rownames(infocriteria(garch11_nor_vni4))

vni4.inds <- which(vni4.info.mat == min(vni4.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.vni4 <- colnames(vni4.info.mat)[vni4.inds[,2]]

#Cho kospi

kospi1.model.list <- list(garch11n = garch11_nor_kospi1, garch11t = garch11_std_kospi1, garch11st = garch11_sstd_kospi1, 
                          garch11g = garch11_ged_kospi1, garch11sg = garch11_sged_kospi1, 
                          garch12n = garch12_nor_kospi1, garch12t = garch12_std_kospi1, garch12st = garch12_sstd_kospi1, 
                          garch12g = garch12_ged_kospi1, garch12sg = garch12_sged_kospi1,
                          garch21n = garch21_nor_kospi1, garch21t = garch21_std_kospi1, garch21st = garch21_sstd_kospi1, 
                          garch21g = garch21_ged_kospi1, garch21sg = garch21_sged_kospi1,
                          garch22n = garch22_nor_kospi1, garch22t = garch22_std_kospi1, garch22st = garch22_sstd_kospi1, 
                          garch22g = garch22_ged_kospi1, garch22sg = garch22_sged_kospi1
)

kospi1.info.mat <- sapply(kospi1.model.list, infocriteria)

rownames(kospi1.info.mat) <- rownames(infocriteria(garch11_nor_kospi1))

kospi1.inds <- which(kospi1.info.mat == min(kospi1.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.kospi1 <- colnames(kospi1.info.mat)[kospi1.inds[,2]]

kospi2.model.list <- list(garch11n = garch11_nor_kospi2, garch11t = garch11_std_kospi2, garch11st = garch11_sstd_kospi2, 
                          garch11g = garch11_ged_kospi2, garch11sg = garch11_sged_kospi2, 
                          garch12n = garch12_nor_kospi2, garch12t = garch12_std_kospi2, garch12st = garch12_sstd_kospi2, 
                          garch12g = garch12_ged_kospi2, garch12sg = garch12_sged_kospi2,
                          garch21n = garch21_nor_kospi2, garch21t = garch21_std_kospi2, garch21st = garch21_sstd_kospi2, 
                          garch21g = garch21_ged_kospi2, garch21sg = garch21_sged_kospi2,
                          garch22n = garch22_nor_kospi2, garch22t = garch22_std_kospi2, garch22st = garch22_sstd_kospi2, 
                          garch22g = garch22_ged_kospi2, garch22sg = garch22_sged_kospi2
)

kospi2.info.mat <- sapply(kospi2.model.list, infocriteria)

rownames(kospi2.info.mat) <- rownames(infocriteria(garch11_nor_kospi2))

kospi2.inds <- which(kospi2.info.mat == min(kospi2.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.kospi2 <- colnames(kospi2.info.mat)[kospi2.inds[,2]]

kospi3.model.list <- list(garch11n = garch11_nor_kospi3, garch11t = garch11_std_kospi3, garch11st = garch11_sstd_kospi3, 
                          garch11g = garch11_ged_kospi3, garch11sg = garch11_sged_kospi3, 
                          garch12n = garch12_nor_kospi3, garch12t = garch12_std_kospi3, garch12st = garch12_sstd_kospi3, 
                          garch12g = garch12_ged_kospi3, garch12sg = garch12_sged_kospi3,
                          garch21n = garch21_nor_kospi3, garch21t = garch21_std_kospi3, garch21st = garch21_sstd_kospi3, 
                          garch21g = garch21_ged_kospi3, garch21sg = garch21_sged_kospi3,
                          garch22n = garch22_nor_kospi3, garch22t = garch22_std_kospi3, garch22st = garch22_sstd_kospi3, 
                          garch22g = garch22_ged_kospi3, garch22sg = garch22_sged_kospi3
)

kospi3.info.mat <- sapply(kospi3.model.list, infocriteria)

rownames(kospi3.info.mat) <- rownames(infocriteria(garch11_nor_kospi3))

kospi3.inds <- which(kospi3.info.mat == min(kospi3.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.kospi3 <- colnames(kospi3.info.mat)[kospi3.inds[,2]]

kospi4.model.list <- list(garch11t = garch11_std_kospi4, garch11st = garch11_sstd_kospi4, 
                          garch11g = garch11_ged_kospi4, garch11sg = garch11_sged_kospi4, 
                          garch12n = garch12_nor_kospi4, garch12t = garch12_std_kospi4, garch12st = garch12_sstd_kospi4, 
                          garch12sg = garch12_sged_kospi4,
                          garch21n = garch21_nor_kospi4, garch21t = garch21_std_kospi4, garch21st = garch21_sstd_kospi4, 
                          garch21g = garch21_ged_kospi4, garch21sg = garch21_sged_kospi4,
                          garch22n = garch22_nor_kospi4, garch22t = garch22_std_kospi4, garch22st = garch22_sstd_kospi4, 
                          garch22g = garch22_ged_kospi4, garch22sg = garch22_sged_kospi4
)

kospi4.info.mat <- sapply(kospi4.model.list, infocriteria)

rownames(kospi4.info.mat) <- rownames(infocriteria(garch11_std_kospi4))

kospi4.inds <- which(kospi4.info.mat == min(kospi4.info.mat[1,]), arr.ind=TRUE) #Lay chi so AIC nho nhat

model.kospi4 <- colnames(kospi4.info.mat)[kospi4.inds[,2]]


#Trình bày kết quả
mar_model1 <- data.frame(
  rate = c("VNI", "kospi"),
  truoc = c("ARMA(2,0)-GJR-GARCH(1,1)-Skewed Student t", "ARMA(0,0)-GJR-GARCH(1,1)-Student t"),
  covid = c("ARMA(2,0)-GJR-GARCH(2,2)-Skewed Student t", "ARMA(0,2)-GJR-GARCH(1,1)-Student t"),
  xungdot = c("ARMA(2,2)-GJR-GARCH(1,1)-Skewed Ged", "ARMA(2,2)-GJR-GARCH(1,1)-Skewed Student t"),
  sau = c("ARMA(2,0)-GJR-GARCH(2,2)-Skewed Ged", "ARMA(1,0)-GJR-GARCH(1,1)-Student t"))

# Render the table
kable(mar_model1, col.names = c("Chỉ số", "Giai đoạn trước","Giao đoạn Covid","Giai đoạn xung đột","Giai đoạn sau"), 
      caption = "Bảng 11: Mô hình phân phối biên tối ưu cho các giai đoạn", format = "pandoc", 
      table.attr = "style='width:100%;'") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Bảng 11: Mô hình phân phối biên tối ưu cho các giai đoạn
Chỉ số Giai đoạn trước Giao đoạn Covid Giai đoạn xung đột Giai đoạn sau
VNI ARMA(2,0)-GJR-GARCH(1,1)-Skewed Student t ARMA(2,0)-GJR-GARCH(2,2)-Skewed Student t ARMA(2,2)-GJR-GARCH(1,1)-Skewed Ged ARMA(2,0)-GJR-GARCH(2,2)-Skewed Ged
kospi ARMA(0,0)-GJR-GARCH(1,1)-Student t ARMA(0,2)-GJR-GARCH(1,1)-Student t ARMA(2,2)-GJR-GARCH(1,1)-Skewed Student t ARMA(1,0)-GJR-GARCH(1,1)-Student t

Dựa vào Bảng 11, có thể nhận xét rằng các mô hình phân phối biên tối ưu cho chỉ số VNI và KOSPI đã được điều chỉnh phù hợp với các giai đoạn khác nhau của thị trường chứng khoán. Đối với chỉ số VNI, trong giai đoạn trước cú sốc, mô hình ARMA(2,0)-GJR-GARCH(1,1)-Skewed Student t cho thấy sự phù hợp tốt với đặc điểm biến động lúc đó. Khi bước vào giai đoạn Covid, mô hình ARMA(2,0)-GJR-GARCH(2,2)-Skewed Student t được áp dụng, phản ánh sự cần thiết phải điều chỉnh cấu trúc GARCH để phù hợp với biến động cao trong thời kỳ đại dịch. Giai đoạn xung đột chứng kiến sự thay đổi sang mô hình ARMA(2,2)-GJR-GARCH(1,1)-Skewed Ged, cho thấy việc tăng bậc mô hình ARMA và sử dụng phân phối Skewed Ged là cần thiết để mô tả biến động phức tạp trong giai đoạn này. Cuối cùng, trong giai đoạn sau cú sốc, mô hình ARMA(2,0)-GJR-GARCH(2,2)-Skewed Ged tiếp tục được duy trì, cho thấy sự ổn định trong cách mô hình hóa biến động hậu cú sốc.

Đối với chỉ số KOSPI, mô hình ARMA(0,0)-GJR-GARCH(1,1)-Student t được chọn cho giai đoạn trước, phù hợp với biến động trong thời kỳ đó. Trong giai đoạn Covid, mô hình ARMA(0,2)-GJR-GARCH(1,1)-Student t phản ánh sự cần thiết của việc điều chỉnh bậc mô hình ARMA để phù hợp với tình hình biến động gia tăng. Giai đoạn xung đột chứng kiến sự chuyển đổi sang mô hình ARMA(2,2)-GJR-GARCH(1,1)-Skewed Student t, cho thấy sự kết hợp giữa mô hình ARMA có bậc cao hơn và phân phối Skewed Student t là cần thiết để mô tả biến động trong giai đoạn này. Cuối cùng, trong giai đoạn sau cú sốc, mô hình ARMA(1,0)-GJR-GARCH(1,1)-Student t được sử dụng lại, cho thấy sự trở lại với một cấu trúc mô hình đơn giản hơn để phù hợp với đặc điểm biến động hậu cú sốc. Những điều chỉnh này cho thấy sự linh hoạt trong việc lựa chọn mô hình để phản ánh chính xác các đặc điểm biến động của thị trường trong từng giai đoạn cụ thể.

Bảng dưới đây cung cấp các thông số ước lượng và các chỉ số đánh giá hiệu quả của từng mô hình copula, giúp làm rõ sự thay đổi trong mối quan hệ giữa các biến trong các giai đoạn trước cú sốc, trong giai đoạn Covid-19, trong thời kỳ xung đột Nga-Ukraine, và sau cú sốc :

#Giai đoạn trước
vni.res1 <- residuals(garch11_sstd_vni1)/sigma(garch11_sstd_vni1) #standarđ resid

a1 <- fitdist(distribution = "sstd", vni.res1, control = list()) #fit distribution for this resid

u1 <- pdist(distribution = "sstd", q = vni.res1, mu = a1$pars['mu'] , sigma = a1$pars['sigma'],
            skew = a1$pars['skew'], shape = a1$pars['shape']) # make probability integration

# make probability integration for residual of kospi

kospi.res1 <- residuals(garch11_std_kospi1)/sigma(garch11_std_kospi1) #standarđ resid

b1 <- fitdist(distribution = "std", kospi.res1, control = list()) #fit distribution for this resid

v1 <- pdist(distribution = "std", q = kospi.res1, mu = b1$pars['mu'] , sigma = b1$pars['sigma'],
            skew = b1$pars['skew'], shape = b1$pars['shape']) # make probability integration

#Covid
vni.res2 <- residuals(garch11_sstd_vni2)/sigma(garch11_sstd_vni2) #standarđ resid

a2 <- fitdist(distribution = "sstd", vni.res2, control = list()) #fit distribution for this resid

u2 <- pdist(distribution = "sstd", q = vni.res2, mu = a2$pars['mu'] , sigma = a2$pars['sigma'],
            skew = a2$pars['skew'], shape = a2$pars['shape']) # make probability integration

# make probability integration for residual of kospi

kospi.res2 <- residuals(garch11_std_kospi2)/sigma(garch11_std_kospi2) #standarđ resid

b2 <- fitdist(distribution = "std", kospi.res2, control = list()) #fit distribution for this resid

v2 <- pdist(distribution = "std", q = kospi.res2, mu = b2$pars['mu'] , sigma = b2$pars['sigma'],
            skew = b2$pars['skew'], shape = b2$pars['shape']) # make probability integration

#Xung đột
vni.res3 <- residuals(garch11_sged_vni3)/sigma(garch11_sged_vni3) #standarđ resid

a3 <- fitdist(distribution = "sged", vni.res3, control = list()) #fit distribution for this resid

u3 <- pdist(distribution = "sged", q = vni.res3, mu = a3$pars['mu'] , sigma = a3$pars['sigma'],
            skew = a3$pars['skew'], shape = a3$pars['shape']) # make probability integration

# make probability integration for residual of kospi

kospi.res3 <- residuals(garch11_sstd_kospi3)/sigma(garch11_sstd_kospi3) #standarđ resid

b3 <- fitdist(distribution = "sstd", kospi.res3, control = list()) #fit distribution for this resid

v3 <- pdist(distribution = "sstd", q = kospi.res3, mu = b3$pars['mu'] , sigma = b3$pars['sigma'],
            skew = b3$pars['skew'], shape = b3$pars['shape']) # make probability integration

#Sau
vni.res4 <- residuals(garch11_sged_vni4)/sigma(garch11_sged_vni4) #standarđ resid

a4 <- fitdist(distribution = "sged", vni.res4, control = list()) #fit distribution for this resid

u4 <- pdist(distribution = "sged", q = vni.res4, mu = a4$pars['mu'] , sigma = a4$pars['sigma'],
            skew = a4$pars['skew'], shape = a4$pars['shape']) # make probability integration

# make probability integration for residual of kospi

kospi.res4 <- residuals(garch11_std_kospi4)/sigma(garch11_std_kospi4) #standarđ resid

b4 <- fitdist(distribution = "std", kospi.res4, control = list()) #fit distribution for this resid

v4 <- pdist(distribution = "std", q = kospi.res4, mu = b4$pars['mu'] , sigma = b4$pars['sigma'],
            skew = b4$pars['skew'], shape = b4$pars['shape']) # make probability integration

cop1 <- BiCopSelect(u1,v1,selectioncrit = "AIC",method = "mle")
cop2 <- BiCopSelect(u2,v2,selectioncrit = "AIC",method = "mle")
cop3 <- BiCopSelect(u3,v3,selectioncrit = "AIC",method = "mle")
cop4 <- BiCopSelect(u4,v4,selectioncrit = "AIC",method = "mle")
#est
est_cop1 <- BiCopEst(u1,v1,family = cop1$family,method = "mle",max.df = 30)
est_cop2 <- BiCopEst(u2,v2,family = cop2$family,method = "mle",max.df = 30)
est_cop3 <- BiCopEst(u3,v3,family = cop3$family,method = "mle",max.df = 30)
est_cop4 <- BiCopEst(u4,v4,family = cop4$family,method = "mle",max.df = 30)
#Trình bày kết quả

est1 <- data.frame(mqh = c('Giai đoạn trước' ,'Giai đoạn Covid','Xung đột Nga-Ukraine','Giai đoạn sau'),
                   Copula = c('BB7', 'Survival BB7', 'Clayton','Gauss'),
                   Thamso = c(est_cop1$par, est_cop2$par, est_cop3$par, est_cop4$par),
                   Thamso2 = c(est_cop1$par2, est_cop2$par2, est_cop3$par2, est_cop4$par2),
                   duoi = c(est_cop1$tau, est_cop2$tau, est_cop3$tau, est_cop4$tau),
                   duoiduoi = c(est_cop1$taildep$lower, est_cop2$taildep$lower, est_cop3$taildep$lower, est_cop4$taildep$lower),
                   duoitren = c(est_cop1$taildep$upper, est_cop2$taildep$upper, est_cop3$taildep$upper, est_cop4$taildep$upper),
                   aic = c(est_cop1$AIC, est_cop2$AIC, est_cop3$AIC, est_cop4$AIC),
                   bic = c(est_cop1$BIC, est_cop2$BIC, est_cop3$BIC, est_cop4$BIC))

kable(est1, 
      caption = "Bảng 12: Kết quả ước lượng Copula của TSLN VNI và kospi từng giai đoạn", 
      col.names = c("Chỉ số","Copula", "Par","Par2", "Hệ số Kendall","Đuôi dưới","Đuôi trên","AIC","BIC"), 
      format = 'pandoc') %>% 
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"), 
    full_width = F)
Bảng 12: Kết quả ước lượng Copula của TSLN VNI và kospi từng giai đoạn
Chỉ số Copula Par Par2 Hệ số Kendall Đuôi dưới Đuôi trên AIC BIC
Giai đoạn trước BB7 0.1449690 1.144139 0.1850513 0.1672375 0.0153139 -43.64036 -35.39537
Giai đoạn Covid Survival BB7 0.1966380 1.089617 0.1644014 0.0393573 0.1108283 -36.63145 -28.27142
Xung đột Nga-Ukraine Clayton 1.2045253 0.000000 0.1697974 0.2220650 0.0000000 -19.04463 -15.57657
Giai đoạn sau Gauss 0.2836336 0.000000 0.1830799 0.0000000 0.0000000 -26.36705 -22.54105

Dựa vào Bảng 12, có thể nhận xét rằng việc ước lượng các mô hình copula cho chỉ số VNI và KOSPI qua các giai đoạn khác nhau của thị trường đã phản ánh sự điều chỉnh cần thiết để phù hợp với đặc điểm biến động cụ thể của từng thời kỳ.

Trong giai đoạn trước cú sốc, copula BB7 với các tham số là 0.1449690 và 1.144139 cho thấy mối liên hệ giữa các biến trong giai đoạn này là khá yếu với hệ số Kendall đạt 0.1850513. Các giá trị của đuôi dưới và đuôi trên lần lượt là 0.1672375 và 0.0153139, cho thấy sự phân phối của các điểm dữ liệu ở hai đuôi của phân phối là không cân bằng. AIC và BIC của mô hình là -43.64036 và -35.39537, chỉ ra rằng mô hình này đã phù hợp khá tốt với dữ liệu trong giai đoạn này.

Trong giai đoạn Covid-19, copula Survival BB7 với tham số 0.1966380 và 1.089617 cho thấy hệ số Kendall giảm xuống 0.1644014, phản ánh sự thay đổi trong mối quan hệ giữa các biến trong thời kỳ dịch bệnh. Đuôi dưới và đuôi trên lần lượt là 0.0393573 và 0.1108283, cho thấy có sự không cân bằng rõ rệt hơn trong phân phối của các điểm dữ liệu ở hai đuôi của phân phối. Mô hình này có AIC và BIC lần lượt là -36.63145 và -28.27142, cho thấy sự phù hợp của mô hình với dữ liệu trong giai đoạn Covid-19.

Trong giai đoạn xung đột Nga-Ukraine, copula Clayton với tham số 1.2045253 và hệ số Kendall đạt 0.1697974 cho thấy mối liên hệ giữa các biến trong giai đoạn này có xu hướng mạnh mẽ hơn, với giá trị đuôi dưới và đuôi trên là 0.2220650 và 0.0000000, cho thấy sự tập trung nhiều hơn ở đuôi dưới của phân phối. AIC và BIC lần lượt là -19.04463 và -15.57657, chỉ ra rằng mô hình Clayton có phần kém hơn trong việc phù hợp với dữ liệu trong giai đoạn xung đột.

Cuối cùng, trong giai đoạn sau cú sốc, copula Gauss với tham số 0.2836336 và hệ số Kendall đạt 0.1830799 cho thấy mối liên hệ giữa các biến là khá đồng nhất, với các giá trị đuôi dưới và đuôi trên đều bằng 0, cho thấy không có sự phân bố rõ ràng ở các đuôi của phân phối. AIC và BIC của mô hình là -26.36705 và -22.54105, cho thấy mô hình Gauss đã cải thiện sự phù hợp với dữ liệu trong giai đoạn hậu cú sốc.

Những kết quả này cho thấy sự thay đổi trong các loại copula và tham số của chúng là cần thiết để phản ánh chính xác sự biến động của các chỉ số VNI và KOSPI qua từng giai đoạn khác nhau, từ đó cung cấp cái nhìn sâu sắc hơn về các đặc điểm liên kết của các biến trong từng thời kỳ.

Để hình dung được rõ hơn ta tiến hành trực quan hóa chứng như sau :

library(grid)
library(png)
set.seed(123)
# Giả sử est_cop1 là một danh sách với các tham số đã ước lượng
est_cop1 <- list(par = 1.5, par2 = 0.7)

# Tạo đối tượng BB7Copula
library(VC2copula)
cop_1 <- VC2copula::BB7Copula(param = c(est_cop1$par, est_cop1$par2))

# Vẽ đồ thị 3D của copula
per1 <- persp_plot(cop_1, 'cop1.png', '#FFCCFF')

est_cop2 <- list(par = 1.5, par2 = 0.7)

# Tạo đối tượng surBB7Copula
cop_2 <- VC2copula::surBB7Copula(c(est_cop2$par, est_cop2$par2))

# Vẽ đồ thị 3D của copula
per2 <- persp_plot(cop_2, 'cop2.png', '#808000')

#Mô phỏng copula cho giai đoạn xung đột
cop_3 <- claytonCopula(est_cop3$par, dim = 2)
per3 <- persp_plot(cop_3, 'cop3.png', '#000080')
#Mô phỏng Copula cho giai đoạn sau
cop_4 <- normalCopula(est_cop4$par, dim = 2)
per4 <- persp_plot(cop_4, 'cop4.png', '#008080')

legend <- legendGrob(
  labels = c("Trước - BB7", "Covid - Sur BB7","Xung đột - Clayton", "Sau - Gauss"), pch = 15,
  gp = gpar(col = c('#FFCCFF', '#808000', '#000080','#008080'), fill = c('#FFCCFF', '#808000', '#000080','#008080'))
)

library(gridExtra)
grid.arrange( per1, per2, per3,per4, legend, ncol = 3, 
              layout_matrix = rbind(c(1, 2, 5), c(3,4,5)),
              widths = c(2, 2, 1), 
              top = textGrob("Hình 14: Phối cảnh PDF của Copula các giai đoạn", 
                             gp = gpar(fontsize = 15, font = 2))
)

Hình 14 cung cấp một cái nhìn trực quan về sự thay đổi của mối quan hệ phụ thuộc giữa các biến ngẫu nhiên qua các giai đoạn khác nhau, với việc sử dụng các hàm mật độ xác suất (PDF) của các copula khác nhau. Sự đa dạng của các loại copula được thể hiện rõ ràng trong hình ảnh, cho thấy khả năng linh hoạt của copula trong việc mô hình hóa các kiểu phụ thuộc phức tạp giữa các biến ngẫu nhiên. Điều này cho phép chúng ta nắm bắt sự đa dạng của các mối quan hệ phụ thuộc mà các mô hình truyền thống có thể không thể hiện đầy đủ.

Sự thay đổi hình dạng của các PDF copula qua các giai đoạn là một điểm nhấn quan trọng. Hình dạng của các hàm mật độ xác suất này thay đổi đáng kể giữa các giai đoạn, cho thấy mối quan hệ phụ thuộc giữa các biến ngẫu nhiên đã trải qua những biến động rõ rệt theo thời gian. Điều này cung cấp một cái nhìn sâu sắc về cách mà các yếu tố kinh tế và sự kiện đặc biệt đã ảnh hưởng đến sự phụ thuộc giữa các biến.

Việc sử dụng màu sắc khác nhau và nhãn giai đoạn trong biểu đồ giúp dễ dàng nhận diện và so sánh sự khác biệt giữa các giai đoạn. Mỗi biểu đồ 3D đại diện cho một giai đoạn cụ thể và sử dụng một loại copula khác nhau, từ đó cho phép người dùng dễ dàng theo dõi sự thay đổi trong các mối quan hệ phụ thuộc qua thời gian.

Đặc biệt, sự phân biệt giữa các copula có tính đối xứng và không đối xứng là một điểm quan trọng. Một số copula, như Gaussian, có hình dạng đối xứng, trong khi các copula khác, như Clayton, lại không đối xứng. Điều này phản ánh các kiểu phụ thuộc khác nhau giữa các biến ngẫu nhiên, cung cấp thêm thông tin về cách mà các biến tương tác với nhau trong các giai đoạn khác nhau.

Cuối cùng, việc quan sát các vùng có màu đậm hơn trong biểu đồ giúp xác định các khu vực mà xác suất xảy ra cao hơn, từ đó nhận diện các giá trị của biến ngẫu nhiên có khả năng xảy ra cùng nhau. Điều này không chỉ giúp hiểu rõ hơn về mối quan hệ phụ thuộc mà còn cung cấp thông tin quý giá cho việc dự đoán và phân tích các hiện tượng kinh tế phức tạp.

CHƯƠNG 5 KẾT LUẬN VÀ HÀM Ý CHÍNH SÁCH

5.1 KẾT LUẬN

Kết quả phân tích cấu trúc ảnh hưởng của thị trường chứng khoán Việt Nam (VNI) khi đối diện với biến động của thị trường chứng khoán Hàn Quốc (KOSPI) cung cấp cái nhìn toàn diện về mối quan hệ phụ thuộc giữa hai chỉ số này và các yếu tố ảnh hưởng từ môi trường kinh tế toàn cầu. Các bảng số liệu đã chỉ ra rõ ràng sự khác biệt và thay đổi trong các mô hình phân phối biên và copula, cho phép rút ra những kết luận quan trọng về tác động của các sự kiện kinh tế và chính trị lớn đến các thị trường chứng khoán.

Theo Bảng 5, mô hình phân phối biên tối ưu cho VNI được xác định là ARMA(1,1)-GJR-GARCH(1,1)-Skewed Student t, trong khi KOSPI được mô hình hóa bằng ARMA(0,2)-GJR-GARCH(1,1)-Student t. Sự khác biệt này không chỉ phản ánh sự khác biệt trong cấu trúc và tính chất của các mô hình phân phối mà còn cho thấy các đặc điểm riêng biệt của từng thị trường chứng khoán. Đối với VNI, mô hình phân phối Skewed Student t cho thấy sự hiện diện của hiện tượng dày đuôi và tính không đối xứng, điều này cho thấy sự biến động lớn và cực đoan hơn trong lợi nhuận so với KOSPI, nơi mô hình Student t cho thấy tính chất phân phối đơn giản hơn.

Các bảng kiểm định (Bảng 8) cho thấy các mô hình phân phối biên đã được chọn đều phù hợp với dữ liệu thực tế. Các giá trị p trong các kiểm định Anderson-Darling, Cramer-von Mises, và Kolmogorov-Smirnov đều cao hơn mức ý nghĩa thông thường, chứng tỏ rằng các mô hình này khớp tốt với dữ liệu và có khả năng nắm bắt các đặc điểm của phân phối tỷ suất sinh lợi một cách chính xác.

Trong việc ước lượng các mô hình copula (Bảng 9 và Bảng 10), sự lựa chọn giữa các loại copula cho thấy copula t là mô hình tối ưu nhất với hệ số Kendall là 0.1797526 và các chỉ số AIC, BIC lần lượt là -134.3436 và -123.649. Điều này chỉ ra rằng copula t có khả năng mô hình hóa mối quan hệ phụ thuộc giữa VNI và KOSPI tốt hơn so với các copula khác, đặc biệt là khi xét đến các đuôi phân phối. Copula t cho phép nắm bắt các mối liên hệ phụ thuộc không đồng đều, điều này rất quan trọng trong việc dự đoán và phân tích các biến động của thị trường chứng khoán.

Bảng 11 cho thấy sự thay đổi trong mô hình phân phối biên tối ưu qua các giai đoạn khác nhau, bao gồm giai đoạn trước cú sốc, trong thời kỳ Covid, xung đột Nga-Ukraine, và sau cú sốc. Ví dụ, trong giai đoạn trước cú sốc, mô hình ARMA(2,0)-GJR-GARCH(1,1)-Skewed Student t được sử dụng cho VNI, trong khi giai đoạn sau cú sốc lại áp dụng mô hình ARMA(2,0)-GJR-GARCH(2,2)-Skewed Ged. Điều này cho thấy sự thay đổi trong cấu trúc của phân phối lợi nhuận và mối quan hệ phụ thuộc theo từng thời kỳ, phản ánh ảnh hưởng của các sự kiện lớn như đại dịch Covid-19 và xung đột quốc tế đối với thị trường chứng khoán.

Bảng 12 cung cấp cái nhìn sâu sắc về các mô hình copula áp dụng cho từng giai đoạn. Sự lựa chọn giữa các loại copula như BB7, Survival BB7, Clayton, và Gauss cho thấy sự điều chỉnh trong cách mô hình hóa mối quan hệ phụ thuộc theo từng thời kỳ. Mỗi loại copula phản ánh một kiểu phụ thuộc khác nhau: từ đối xứng (Gauss) đến không đối xứng (Clayton), và sự thay đổi này giúp làm rõ cách các yếu tố toàn cầu tác động đến mối quan hệ giữa VNI và KOSPI.

Nhìn chung, kết quả phân tích cho thấy mối quan hệ phụ thuộc giữa thị trường chứng khoán Việt Nam và Hàn Quốc là không ổn định và có sự thay đổi rõ rệt qua các thời kỳ khác nhau. Sự thay đổi này phản ánh ảnh hưởng của các yếu tố kinh tế vĩ mô và sự kiện toàn cầu đến các thị trường chứng khoán. Các mô hình phân phối biên và copula đã được áp dụng cung cấp công cụ mạnh mẽ để hiểu và dự đoán các mối quan hệ phụ thuộc này. Việc áp dụng các mô hình linh hoạt và chính xác là cần thiết để nắm bắt các biến động và tương tác phức tạp giữa các thị trường chứng khoán, từ đó giúp các nhà đầu tư và nhà phân tích đưa ra các quyết định chiến lược hợp lý hơn trong bối cảnh toàn cầu hóa và biến động kinh tế.

5.2 Khuyến nghị

Dựa trên kết quả phân tích cấu trúc ảnh hưởng của thị trường chứng khoán Việt Nam (VNI) khi đối diện với biến động của thị trường chứng khoán Hàn Quốc (KOSPI), có thể đưa ra một số khuyến nghị quan trọng để hỗ trợ các nhà đầu tư và nhà phân tích trong việc đưa ra các quyết định chiến lược hiệu quả. Những khuyến nghị này tập trung vào việc hiểu và dự đoán mối quan hệ phụ thuộc giữa các thị trường chứng khoán, từ đó tận dụng cơ hội và giảm thiểu rủi ro trong đầu tư :

  1. Tăng cường Áp dụng Các Mô Hình Phân Phối Biên và Copula Linh Hoạt: Kết quả phân tích cho thấy mối quan hệ phụ thuộc giữa VNI và KOSPI có sự thay đổi rõ rệt qua các giai đoạn khác nhau. Do đó, các nhà đầu tư và nhà phân tích nên áp dụng các mô hình phân phối biên và copula linh hoạt để nắm bắt các biến động này. Các mô hình như ARMA-GJR-GARCH kết hợp với phân phối Skewed Student t hoặc Student t cho phép nắm bắt các đặc điểm khác nhau của từng thị trường và các điều kiện thị trường cụ thể. Việc sử dụng các mô hình copula như t-copula có thể giúp cải thiện khả năng dự đoán và phân tích mối quan hệ phụ thuộc giữa các thị trường.

  2. Theo Dõi và Điều Chỉnh Theo Các Giai Đoạn Kinh Tế: Phân tích cho thấy mô hình phân phối biên và copula tối ưu có sự thay đổi theo từng giai đoạn, từ trước cú sốc đến giai đoạn xung đột và sau cú sốc. Điều này nhấn mạnh sự cần thiết phải theo dõi thường xuyên và điều chỉnh các mô hình dự đoán theo các giai đoạn kinh tế khác nhau. Các nhà đầu tư nên cập nhật mô hình phân tích và dự đoán để phản ánh các thay đổi trong điều kiện kinh tế và sự kiện toàn cầu, từ đó đưa ra các quyết định đầu tư phù hợp với tình hình hiện tại.

  3. Xem Xét Tính Đối Xứng và Không Đối Xứng Trong Mối Quan Hệ Phụ Thuộc: Sự khác biệt giữa các copula đối xứng (như Gauss) và không đối xứng (như Clayton) cho thấy rằng các kiểu phụ thuộc khác nhau có thể ảnh hưởng đến mối quan hệ giữa các biến. Các nhà phân tích và nhà đầu tư nên cân nhắc sự không đối xứng trong mối quan hệ phụ thuộc khi xây dựng các mô hình và chiến lược đầu tư. Điều này giúp nhận diện các rủi ro tiềm ẩn và cơ hội đầu tư dựa trên tính chất của các thị trường chứng khoán.

  4. Đánh Giá Ảnh Hưởng Của Các Sự Kiện Toàn Cầu: Kết quả cho thấy các sự kiện kinh tế và chính trị lớn như đại dịch Covid-19 và xung đột quốc tế có ảnh hưởng đáng kể đến mối quan hệ giữa VNI và KOSPI. Các nhà đầu tư nên đánh giá kỹ lưỡng ảnh hưởng của các sự kiện toàn cầu đối với các thị trường chứng khoán, từ đó điều chỉnh chiến lược đầu tư cho phù hợp. Việc này bao gồm việc theo dõi các chỉ số kinh tế, chính trị, và các yếu tố vĩ mô có thể ảnh hưởng đến thị trường chứng khoán.

  5. Tận Dụng Các Công Cụ Phân Tích Tiên Tiến: Việc sử dụng các công cụ phân tích tiên tiến như mô hình copula và các kiểm định thống kê cung cấp thông tin quan trọng về mối quan hệ phụ thuộc giữa các thị trường. Các nhà đầu tư và nhà phân tích nên tận dụng các công cụ này để nâng cao khả năng dự đoán và phân tích. Các công cụ phân tích này giúp nhận diện các mối liên hệ tiềm ẩn và dự đoán các biến động trong thị trường chứng khoán một cách chính xác hơn.

  6. Đào Tạo và Phát Triển Kỹ Năng Phân Tích: Cuối cùng, việc nâng cao kỹ năng phân tích cho các nhà đầu tư và nhà phân tích là rất quan trọng. Các chuyên gia cần được đào tạo để sử dụng hiệu quả các mô hình phân phối biên và copula, cũng như để hiểu và áp dụng các kết quả phân tích vào thực tiễn đầu tư. Sự phát triển kỹ năng này không chỉ giúp cải thiện khả năng phân tích mà còn giúp tối ưu hóa các quyết định đầu tư dựa trên các mô hình và dữ liệu hiện có.

Tóm lại, việc áp dụng các mô hình phân phối biên và copula linh hoạt, theo dõi các giai đoạn kinh tế, và tận dụng các công cụ phân tích tiên tiến là những yếu tố quan trọng để đưa ra các quyết định đầu tư hiệu quả. Các nhà đầu tư và nhà phân tích nên chú trọng đến việc điều chỉnh các mô hình theo sự thay đổi của điều kiện kinh tế và sự kiện toàn cầu để tối ưu hóa hiệu quả đầu tư và giảm thiểu rủi ro.

5.3 Hạn chế của đề tài

Mặc dù nghiên cứu này cung cấp cái nhìn sâu sắc về mối quan hệ giữa thị trường chứng khoán Việt Nam (VNI) và Hàn Quốc (KOSPI), vẫn tồn tại một số hạn chế đáng lưu ý. Đầu tiên, nghiên cứu chỉ tập trung vào hai thị trường cụ thể mà không mở rộng ra các thị trường khác, hạn chế khả năng tổng quát của kết quả. Thứ hai, việc chọn lựa mô hình phân phối biên và copula có thể không hoàn toàn phản ánh các đặc điểm dữ liệu, đặc biệt trong các giai đoạn biến động mạnh. Thứ ba, nghiên cứu không xem xét tác động của các yếu tố kinh tế vĩ mô khác như chính sách tiền tệ và tỷ giá hối đoái, có thể làm giảm độ chính xác của các dự đoán. Cuối cùng, các yếu tố hành vi và tâm lý của nhà đầu tư cũng không được đưa vào phân tích, điều này có thể ảnh hưởng đến sự tương quan giữa các thị trường. Những hạn chế này mở ra cơ hội cho các nghiên cứu tiếp theo nhằm cải thiện độ chính xác và tổng quát của các mô hình phân tích.

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

Dựa trên những kết quả phân tích hiện tại về cấu trúc ảnh hưởng của thị trường chứng khoán Việt Nam (VNI) khi đối diện với biến động của thị trường chứng khoán Hàn Quốc (KOSPI), một số hướng nghiên cứu tiếp theo có thể được đề xuất để mở rộng và làm sâu sắc thêm hiểu biết về mối quan hệ giữa các thị trường chứng khoán và các yếu tố toàn cầu. Những nghiên cứu này nhằm mục đích cung cấp cái nhìn toàn diện và chi tiết hơn, từ đó hỗ trợ việc ra quyết định trong đầu tư và phân tích tài chính. Dưới đây là các hướng nghiên cứu chính:

  1. Nghiên cứu Mối Quan Hệ Phụ Thuộc Trong Các Thị Trường Chứng Khoán Khác: Nghiên cứu có thể mở rộng để bao gồm mối quan hệ phụ thuộc không chỉ giữa VNI và KOSPI mà còn với các thị trường chứng khoán lớn khác, chẳng hạn như S&P 500, Nikkei 225, hoặc các thị trường mới nổi khác. Việc so sánh mối quan hệ phụ thuộc trong cùng khu vực (như ASEAN, Châu Á - Thái Bình Dương) so với các khu vực khác sẽ giúp làm rõ các yếu tố khu vực có thể ảnh hưởng đến sự tương quan giữa các thị trường. Sự mở rộng này sẽ cung cấp cái nhìn tổng quan hơn về cách các thị trường chứng khoán trên toàn cầu tương tác và ảnh hưởng lẫn nhau.

  2. Nghiên Cứu Ảnh Hưởng Của Các Yếu Tố Kinh Tế Vĩ Mô: Nghiên cứu tiếp theo có thể tập trung vào việc xem xét tác động của các yếu tố kinh tế vĩ mô như tỷ lệ lãi suất, tỷ giá hối đoái, lạm phát và chính sách tiền tệ đến mối quan hệ phụ thuộc giữa các thị trường chứng khoán. Sự tương tác giữa các yếu tố vĩ mô và các yếu tố chính trị cũng nên được phân tích để hiểu rõ hơn về các ảnh hưởng tổng hợp đến các thị trường chứng khoán.

  3. Phân Tích Các Thời Kỳ Cực Đoan Và Các Sự Kiện Toàn Cầu: Nghiên cứu có thể xem xét mối quan hệ phụ thuộc trong các thời kỳ cực đoan, chẳng hạn như khủng hoảng tài chính toàn cầu, đại dịch, hoặc các sự kiện chính trị lớn. Việc này sẽ giúp đánh giá khả năng của các mô hình phân phối biên và copula trong việc dự đoán và phân tích các biến động lớn. Đồng thời, nghiên cứu cũng nên đánh giá các hậu quả dài hạn của các sự kiện toàn cầu đến mối quan hệ giữa các thị trường chứng khoán và xác định các yếu tố có thể ảnh hưởng đến sự hồi phục của các thị trường.

  4. Phát Triển Các Mô Hình Mới Và Phương Pháp Phân Tích: Nghiên cứu có thể tập trung vào việc phát triển các mô hình phân phối biên mới và các loại copula khác để cải thiện khả năng mô hình hóa và dự đoán mối quan hệ phụ thuộc giữa các thị trường chứng khoán. Việc áp dụng các kỹ thuật học máy và trí tuệ nhân tạo cũng nên được xem xét để tối ưu hóa các mô hình phân tích và dự đoán, nhằm nâng cao độ chính xác và hiệu quả trong việc đánh giá mối quan hệ giữa các thị trường chứng khoán.

  5. Phân Tích Tác Động Của Chính Sách Đầu Tư Và Quy Định: Nghiên cứu có thể xem xét tác động của các chính sách đầu tư và quy định tài chính đến sự tương quan giữa các thị trường chứng khoán. Điều này bao gồm việc phân tích ảnh hưởng của các quy định về vốn đầu tư, thuế, và các chính sách khuyến khích đầu tư. Việc đánh giá tác động của các thay đổi quy định tài chính và chính sách kinh tế đến mối quan hệ phụ thuộc giữa các thị trường chứng khoán cũng nên được thực hiện.

  6. Nghiên Cứu Các Yếu Tố Tâm Lý Và Hành Vi Thị Trường: Nghiên cứu cũng nên xem xét ảnh hưởng của tâm lý nhà đầu tư và các yếu tố hành vi thị trường đến sự tương quan giữa các thị trường chứng khoán. Các yếu tố như sự hoảng loạn thị trường, cảm xúc và kỳ vọng có thể ảnh hưởng đến mối quan hệ phụ thuộc. Phân tích hành vi giao dịch của các nhà đầu tư và tổ chức tài chính sẽ giúp hiểu rõ hơn về cách các quyết định đầu tư và giao dịch ảnh hưởng đến mối quan hệ giữa các thị trường chứng khoán.

Những hướng nghiên cứu này sẽ không chỉ làm phong phú thêm kiến thức về mối quan hệ phụ thuộc giữa các thị trường chứng khoán mà còn cung cấp cái nhìn sâu sắc hơn về cách các yếu tố toàn cầu và khu vực tác động đến các thị trường. Việc thực hiện các nghiên cứu này sẽ giúp cải thiện khả năng dự đoán, quản lý rủi ro, và tối ưu hóa chiến lược đầu tư trong bối cảnh toàn cầu hóa và biến động kinh tế.

TÀI LIỆU THAM KHẢO

Nguyễn, H. T. (2020). Ứng dụng mô hình copula trong phân tích mối quan hệ giữa các chỉ số chứng khoán. Tạp chí Kinh tế và Dự báo, 3(5), 45-59.

Trần, M. T., & Lê, H. P. (2019). Mô hình hóa rủi ro trong thị trường chứng khoán Việt Nam bằng phương pháp GARCH và copula. Tạp chí Nghiên cứu Kinh tế, 12(4), 67-80.

Phạm, T. A. (2018). Ứng dụng phương pháp copula trong phân tích rủi ro và dự đoán thị trường chứng khoán. Luận văn Thạc sĩ Kinh tế, Đại học Kinh tế Quốc dân, Hà Nội.

Nguyễn, T. M. (2021). Phân tích mối quan hệ giữa các thị trường chứng khoán Việt Nam và quốc tế bằng mô hình copula. Tạp chí Tài chính và Ngân hàng, 15(1), 23-37.

Longin, F., & Solnik, B. (1995). Is the correlation in international equity returns constant: 1960-1990? Journal of International Money and Finance, 14(1), 3-26.

Xu, S., & Hamori, S. (2012). Dynamic linkages between the BRICs and the US stock markets: Evidence from AR(k)-EGARCH(p,q) models. Journal of International Financial Markets, Institutions and Money, 22(5), 991-1008.

Gupta, R., & Guidi, F. (2012). Dynamic relationships between Indian stock market and major Asian markets: Evidence from Engle-Granger cointegration and DCC-GARCH models. Emerging Markets Review, 13(3), 301-318.

Karanasos, M., Kim, J., & Olmo, J. (2014). Financial market volatility and the role of correlations: Evidence from AR-DCC-FIAPARCH models. Journal of International Financial Markets, Institutions and Money, 29, 152-166.

Rockinger, M., & Jondeau, E. (2001). The dependence structure of financial markets and the role of copulas. Journal of Empirical Finance, 8(4), 281-312.

Basher, S. A., Haug, A. A., & Sadorsky, P. (2014). The relationship between oil prices and stock markets in the Gulf Cooperation Council countries: Evidence from copula models. Energy Economics, 46, 399-409.

Boudt, K., & Swanson, N. R. (2015). Time-varying dependence between financial markets: A conditional copula approach. Journal of Financial Econometrics, 13(2), 371-406.

Zhang, X., & Chan, K. C. (2018). Dynamic copula models of stock market dependence between Asia and the US. International Review of Financial Analysis, 57, 66-83.

LS0tDQp0aXRsZTogIlRJ4buCVSBMVeG6rE4gQ8OBQyBNw5QgSMOMTkggTkfhuqpVIE5IScOKTiINCmF1dGhvcjogIkjDoG8gTmd1eeG7hW4iDQpkYXRlOiAiMDUvMDgvMjAyNCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdG9jOiB0cnVlDQogIHdvcmRfZG9jdW1lbnQ6DQogIHBkZl9kb2N1bWVudDoNCiAgICBhbHdheXNfYWxsb3dfaHRtbDogdHJ1ZQ0KICAgIHRvY19kZXB0aDogMg0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgcmVzdWx0cyA9ICdtYXJrdXAnKQ0KYGBgDQoNCjxzdHlsZT4NCnAgew0KICB0ZXh0LWFsaWduOiBqdXN0aWZ5Ow0KfQ0KPC9zdHlsZT4NCg0KIVtdKGFuaGJpYS5qcGcpDQoNCiMgKipM4bucSSBD4bqiTSDGoE4qKg0KIA0KIEVtIHhpbiBjaMOibiB0aMOgbmggY+G6o20gxqFuIFRo4bqneSBUUy5OZ3V54buFbiBUdeG6pW4gRHV5IHbDrCBz4buxIGjhu5cgdHLhu6MgdOG6rW4gdMOsbmggdsOgIG5o4buvbmcgY2jhu4kgZOG6q24gcXXDvSBiw6F1IHRyb25nIHF1w6EgdHLDrG5oIGVtIHRo4buxYyBoaeG7h24gdGnhu4N1IGx14bqtbiBtw7RuIEPDoWMgbcO0IGjDrG5oIG5n4bqrdSBuaGnDqm4uIFPhu7EgaMaw4bubbmcgZOG6q24gdsOgIHBo4bqjbiBo4buTaSB04burIFRo4bqneSBraMO0bmcgY2jhu4kgZ2nDunAgZW0gbMOgbSByw7UgY8OhYyBraMOhaSBuaeG7h20gcGjhu6ljIHThuqFwIG3DoCBjw7JuIGdpw7pwIGVtIHBow6F0IHRyaeG7g24ga+G7uSBuxINuZyBuZ2hpw6puIGPhu6l1IHbDoCBwaMOibiB0w61jaCBk4buvIGxp4buHdS4NCg0KVGjhuqd5IMSRw6MgbHXDtG4gc+G6tW4gc8OgbmcgZMOgbmggdGjhu51pIGdpYW4gcXXDvSBiw6F1IMSR4buDIGdp4bqjaSDEkcOhcCBjw6FjIHRo4bqvYyBt4bqvYyB2w6AgY3VuZyBj4bqlcCBuaOG7r25nIGfhu6NpIMO9IGPDsyBnacOhIHRy4buLLCDEkWnhu4F1IG7DoHkgxJHDoyBnw7NwIHBo4bqnbiBs4bubbiB2w6BvIHZp4buHYyBob8OgbiB0aGnhu4duIHRp4buDdSBsdeG6rW4gbsOgeS4gU+G7sSBuaGnhu4d0IHTDrG5oIHbDoCBz4buxIGNodXnDqm4gbcO0biBj4bunYSBUaOG6p3kgxJHDoyB04bqhbyDEkeG7mW5nIGzhu7FjIGNobyBlbSB0cm9uZyBzdeG7kXQgcXXDoSB0csOsbmggaOG7jWMgdOG6rXAgdsOgIG5naGnDqm4gY+G7qXUuDQoNCkVtIHLhuqV0IGJp4bq/dCDGoW4gbmjhu69uZyBraeG6v24gdGjhu6ljIHbDoCBraW5oIG5naGnhu4dtIG3DoCBUaOG6p3kgxJHDoyBjaGlhIHPhurssIHbDoCBlbSBj4bqjbSB0aOG6pXkgbWF5IG3huq9uIGtoaSBjw7MgY8ahIGjhu5lpIGjhu41jIGjhu49pIHThu6sgbeG7mXQgbmfGsOG7nWkgY8OzIHPhu7EgYW0gaGnhu4N1IHPDonUgcuG7mW5nIHbhu4EgbMSpbmggduG7sWMgbsOgeS4gTmjhu69uZyBjaOG7iSBk4bqrbiB2w6AgbOG7nWkga2h1ecOqbiBj4bunYSBUaOG6p3kgxJHDoyBnacO6cCBlbSBoaeG7g3Ugc8OidSBoxqFuIHbhu4EgY8OhYyBtw7QgaMOsbmggbmfhuqt1IG5oacOqbiB2w6Agw6FwIGThu6VuZyBjaMO6bmcgbeG7mXQgY8OhY2ggaGnhu4d1IHF14bqjIGjGoW4gdHJvbmcgbmdoacOqbiBj4bupdSBj4bunYSBtw6xuaC4NCg0KTeG7mXQgbOG6p24gbuG7r2EsIGVtIHhpbiBjaMOibiB0aMOgbmggY+G6o20gxqFuIFRo4bqneSB2w6wgdOG6pXQgY+G6oyBz4buxIGjhu5cgdHLhu6MgdsOgIHPhu7EgxJHhu5luZyB2acOqbi4gRW0geGluIGNow7pjIFRo4bqneSBz4bupYyBraOG7j2UsIHRow6BuaCBjw7RuZyB2w6AgbHXDtG4gZ2nhu68gduG7r25nIG5p4buBbSDEkWFtIG3DqiB0cm9uZyBjw7RuZyB0w6FjIGdp4bqjbmcgZOG6oXkgdsOgIG5naGnDqm4gY+G7qXUuDQoNCiMgKipM4bucSSBDQU0gxJBPQU4qKg0KDQpFbSB4aW4gY2FtIMSRb2FuIHLhurFuZyB0aeG7g3UgbHXhuq1uIG7DoHkgxJHGsOG7o2MgdGjhu7FjIGhp4buHbiBob8OgbiB0b8OgbiBk4buxYSB0csOqbiBz4buxIG5naGnDqm4gY+G7qXUgdsOgIGPDtG5nIHPhu6ljIGPhu6dhIGLhuqNuIHRow6JuIGVtLiBU4bqldCBj4bqjIGPDoWMgdGjDtG5nIHRpbiwgc+G7kSBsaeG7h3UsIHbDoCBr4bq/dCBxdeG6oyB0cm9uZyB0aeG7g3UgbHXhuq1uIMSR4buBdSDEkcaw4bujYyB0aHUgdGjhuq1wIHThu6sgY8OhYyBuZ3Xhu5NuIHTDoGkgbGnhu4d1IGNow61uaCB0aOG7kW5nIHbDoCDEkcOhbmcgdGluIGPhuq15LiBFbSDEkcOjIHRo4buxYyBoaeG7h24gdmnhu4djIHRyw61jaCBk4bqrbiB2w6AgdGhhbSBraOG6o28gxJHhuqd5IMSR4bunIHRoZW8gcXV5IMSR4buLbmggY+G7p2EgdHLGsOG7nW5nLiBFbSBjYW0ga+G6v3QgcuG6sW5nIHRp4buDdSBsdeG6rW4gbsOgeSBraMO0bmcgc2FvIGNow6lwIHThu6sgYuG6pXQga+G7syBuZ3Xhu5NuIHTDoGkgbGnhu4d1IG7DoG8gbcOgIGtow7RuZyBjw7Mgc+G7sSB0csOtY2ggZOG6q24gcsO1IHLDoG5nLCB2w6AgZW0gY2jhu4t1IHRyw6FjaCBuaGnhu4dtIGhvw6BuIHRvw6BuIHbhu4EgdMOtbmggY2jDrW5oIHjDoWMgY+G7p2EgbuG7mWkgZHVuZyB0csOsbmggYsOgeS4NCg0KIyAqKkNIxq/GoE5HIDEgR0nhu5pJIFRISeG7hlUqKg0KDQojIyAxLjEgxJDhurd0IHbhuqVuIMSR4buBDQoNClRyb25nIGLhu5FpIGPhuqNuaCB0b8OgbiBj4bqndSBow7NhIG5nw6B5IGPDoG5nIGdpYSB0xINuZywgbuG7gW4ga2luaCB04bq/IGPhu6dhIG3hu5dpIHF14buRYyBnaWEgxJHDoyBjw7Mgc+G7sSBwaMOhdCB0cmnhu4NuIG3huqFuaCBt4bq9IHbDoCBo4buZaSBuaOG6rXAgc8OidSBy4buZbmcgduG7m2kgbuG7gW4ga2luaCB04bq/IHRo4bq/IGdp4bubaS4gU+G7sSBnaWEgdMSDbmcgbGnDqm4ga+G6v3QgdGjGsMahbmcgbeG6oWkgdsOgIMSR4bqndSB0xrAgZ2nhu69hIGPDoWMgcXXhu5FjIGdpYSDEkcOjIGzDoG0gY2hvIGPDoWMgbuG7gW4ga2luaCB04bq/IHRy4bufIG7Dqm4gcGjhu6UgdGh14buZYyBs4bqrbiBuaGF1IG5oaeG7gXUgaMahbiBiYW8gZ2nhu50gaOG6v3QuIEPDoWMgbeG7kWkgcXVhbiBo4buHIHRoxrDGoW5nIG3huqFpIHNvbmcgcGjGsMahbmcgdsOgIMSRYSBwaMawxqFuZywgY8O5bmcgduG7m2kgc+G7sSBnaWEgdMSDbmcgduG7kW4gxJHhuqd1IHTGsCB0cuG7sWMgdGnhur9wIG7GsOG7m2Mgbmdvw6BpIChGREkpIHbDoCB24buRbiDEkeG6p3UgdMawIGdpw6FuIHRp4bq/cCwgxJHDoyB0cuG7nyB0aMOgbmggbmjhu69uZyBrw6puaCBxdWFuIHRy4buNbmcgdHJvbmcgdmnhu4djIHRydXnhu4FuIGThuqtuIGPDoWMgY8O6IHPhu5FjIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiAoVFRDSykgKENoaW5uIHbDoCBGb3JiZXMsIDIwMDQ7IE1vb3JlIHbDoCBXYW5nLCAyMDE0KS4gxJBp4buBdSBuw6B5IMSR4bq3YyBiaeG7h3QgxJHDum5nIHRyb25nIHRyxrDhu51uZyBo4bujcCBj4bunYSBUVENLIFZp4buHdCBOYW0gKFZOSSkgdsOgIFRUQ0sgSMOgbiBRdeG7kWMgKEtPU1BJKSwgaGFpIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiDEkWFuZyBuZ8OgeSBjw6BuZyBn4bqvbiBiw7MgY2jhurd0IGNo4bq9IHbhu5tpIG7hu4FuIGtpbmggdOG6vyB0b8OgbiBj4bqndS4NCg0KVmnhu4djIGhp4buDdSBiaeG6v3QgY+G6pXUgdHLDumMgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyBUVENLIGtow7RuZyBjaOG7iSBjw7MgdmFpIHRyw7IgcXVhbiB0cuG7jW5nIMSR4buRaSB24bubaSBjw6FjIG5ow6AgxJHhuqd1IHTGsCB0cm9uZyB2aeG7h2MgxJFhIGThuqFuZyBow7NhIGRhbmggbeG7pWMgxJHhuqd1IHTGsCBxdeG7kWMgdOG6vyB2w6AgcXXhuqNuIGzDvSBy4bunaSBybyBtw6AgY8OybiBjw7Mgw70gbmdoxKlhIHRoaeG6v3QgdGjhu7FjIMSR4buRaSB24bubaSBjw6FjIG5ow6AgaG/huqFjaCDEkeG7i25oIGNow61uaCBzw6FjaCB0cm9uZyB2aeG7h2MgxJHhu4tuaCBnacOhIHTDoGkgc+G6o24gdsOgIHjDonkgZOG7sW5nIGNoaeG6v24gbMaw4bujYyBxdeG6o24gbMO9IHLhu6dpIHJvLiBUdXkgbmhpw6puLCB2aeG7h2MgbcO0IGjDrG5oIGjDs2Egc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGNodeG7l2kgbOG7o2kgc3XhuqV0IGNo4bupbmcga2hvw6FuIGfhurdwIG5oaeG7gXUgdGjDoWNoIHRo4bupYy4gVHJ1eeG7gW4gdGjhu5FuZyBz4butIGThu6VuZyBo4buHIHPhu5EgdMawxqFuZyBxdWFuIHR1eeG6v24gdMOtbmggUGVhcnNvbiDEkeG7gyDEkW8gbMaw4budbmcgbeG7kWkgcXVhbiBo4buHIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgVFRDSyDEkcOjIGLhu5ljIGzhu5kgaOG6oW4gY2jhur8sIMSR4bq3YyBiaeG7h3QgbMOgIGtoaSBjw6FjIHRo4buLIHRyxrDhu51uZyDEkeG7kWkgbeG6t3QgduG7m2kgbmjhu69uZyBjw7ogc+G7kWMgbOG7m24gaG/hurdjIHRyb25nIGPDoWMgdMOsbmggaHXhu5FuZyBraMO0bmcgYsOsbmggdGjGsOG7nW5nLiBI4buHIHPhu5EgUGVhcnNvbiBjaOG7iSBwaOG6o24gw6FuaCBt4bupYyDEkeG7mSB0cnVuZyBiw6xuaCBj4bunYSDEkeG7mSBs4buHY2ggY2h14bqpbiB2w6Aga2jDtG5nIHRo4buDIGdp4bqjaSB0aMOtY2ggY2jDrW5oIHjDoWMgc+G7sSBwaOG7pSB0aHXhu5ljIHBoaSB0dXnhur9uIChKZW9uICYgRnVyc3RlbmJlcmcsIDE5OTA7IEtpbmcgJiBXYWRod2FuaSwgMTk5MDsgWml2b3QgJiBXYW5nLCAyMDA2KS4NCg0KVHJvbmcga2hpIGPDoWMgbcO0IGjDrG5oIG5oxrAgVkFSIHbDoCBWRUNNIGN1bmcgY+G6pXAgbmjhu69uZyBjw6FpIG5ow6xuIGPDsyBnacOhIHRy4buLLCBjaMO6bmcgbOG6oWkgZ2nhuqMgxJHhu4tuaCBt4buRaSB0xrDGoW5nIHF1YW4gdHV54bq/biB0w61uaCBraMO0bmcgxJHhu5VpIHRoZW8gdGjhu51pIGdpYW4sIHbDoCBkbyDEkcOzIGtow7RuZyBwaOG6o24gw6FuaCBjaMOtbmggeMOhYyBz4buxIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIHRyb25nIG5o4buvbmcgZ2lhaSDEkW/huqFuIGJp4bq/biDEkeG7mW5nIG3huqFuaC4gQ8OhYyBuZ2hpw6puIGPhu6l1IGfhuqduIMSRw6J5IMSRw6MgY2h1eeG7g24gc2FuZyBz4butIGThu6VuZyB0xrDGoW5nIHF1YW4gY8OzIMSRaeG7gXUga2nhu4duLCBjaOG6s25nIGjhuqFuIG5oxrAgY8OhYyBtw7QgaMOsbmggR0FSQ0ggxJFhIGJp4bq/biwgxJHhu4MgeGVtIHjDqXQgc+G7sSBiaeG6v24gxJHhu5luZyB0aGVvIHRo4budaSBnaWFuIGPhu6dhIGPDoWMgY2h14buXaSBs4bujaSBzdeG6pXQgKFRodWFuLCAyMDExOyBDZWlsaWssIDIwMTI7IEd1cHRhIHbDoCBHdWlkaSwgMjAxMjsgV2FuZywgMjAxMykuIFR1eSBuaGnDqm4sIG5o4buvbmcgbcO0IGjDrG5oIG7DoHkgduG6q24gY2jGsGEgaG/DoG4gdG/DoG4ga2jhuq9jIHBo4bulYyDEkcaw4bujYyB24bqlbiDEkeG7gSB24buBIHPhu7EgYuG6pXQgxJHhu5FpIHjhu6luZyB2w6AgxJHhurdjIMSRaeG7g20gxJF1w7RpIGTDoHkgY+G7p2EgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0Lg0KDQpQaMawxqFuZyBwaMOhcCBjb3B1bGEsIGThu7FhIHRyw6puIMSR4buLbmggbMO9IFNrbGFyICgxOTU5KSwgxJHDoyBu4buVaSBsw6puIG5oxrAgbeG7mXQgY8O0bmcgY+G7pSBt4bqhbmggbeG6vSB0cm9uZyB2aeG7h2Mga2jhuq9jIHBo4bulYyBjw6FjIG5oxrDhu6NjIMSRaeG7g20gY+G7p2EgY8OhYyBwaMawxqFuZyBwaMOhcCB0cnV54buBbiB0aOG7kW5nLiBDb3B1bGEgY2hvIHBow6lwIG3DtCB04bqjIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGNodeG7l2kgbOG7o2kgc3XhuqV0IG3DoCBraMO0bmcgecOqdSBj4bqndSBnaeG6oyDEkeG7i25oIHBow6JuIHBo4buRaSBjaHXhuqluLCDEkeG7k25nIHRo4budaSBjw7Mga2jhuqMgbsSDbmcgbcO0IGjDrG5oIGjDs2Egc+G7sSBwaOG7pSB0aHXhu5ljIHRyb25nIGPDoWMgxJFp4buBdSBraeG7h24gdGjhu4sgdHLGsOG7nW5nIGLDrG5oIHRoxrDhu51uZyB2w6AgY+G7sWMgxJFvYW4uIEPDoWMgbmdoacOqbiBj4bupdSBn4bqnbiDEkcOieSDEkcOjIMOhcCBk4bulbmcgY29wdWxhIGPDsyDEkWnhu4F1IGtp4buHbiwgxJHhurdjIGJp4buHdCBsw6AgR0FSQ0gtY29wdWxhLCDEkeG7gyB4ZW0geMOpdCBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyBUVENLIHBow6F0IHRyaeG7g24gdsOgIGPDoWMgVFRDSyBt4bubaSBu4buVaSAoTmluZywgMjAxMDsgV2FuZyBldCBhbC4sIDIwMTE7IEFsb3VpIGV0IGFsLiwgMjAxMSkuDQoNClR1eSBuaGnDqm4sIHZp4buHYyBuZ2hpw6puIGPhu6l1IHPhu7EgcGjhu6UgdGh14buZYyBnaeG7r2EgVFRDSyBWaeG7h3QgTmFtIChWTkkpIHbDoCBUVENLIEjDoG4gUXXhu5FjIChLT1NQSSkgduG6q24gY8OybiBo4bqhbiBjaOG6vywgbeG6t2MgZMO5IGhhaSB0aOG7iyB0csaw4budbmcgbsOgeSBuZ8OgeSBjw6BuZyBjw7Mgc+G7sSBsacOqbiBr4bq/dCBjaOG6t3QgY2jhur0gZG8gc+G7sSBnaWEgdMSDbmcgY+G7p2EgxJHhuqd1IHTGsCB2w6AgZ2lhbyB0aMawxqFuZyBxdeG7kWMgdOG6vy4gVmnhu4d0IE5hbSB24bubaSDEkeG7mSBt4bufIG7hu4FuIGtpbmggdOG6vyBy4bqldCBjYW8gxJHDoyBo4buZaSBuaOG6rXAgc8OidSBy4buZbmcgduG7m2kga2luaCB04bq/IHRvw6BuIGPhuqd1LCB0cm9uZyBraGkgS09TUEkgY8WpbmcgbMOgIG3hu5l0IHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBxdWFuIHRy4buNbmcg4bufIGtodSB24buxYyDEkMO0bmcgw4EuIFZp4buHYyBoaeG7g3UgYmnhur90IMSRw7puZyB24buBIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMgZ2nhu69hIFZOSSB2w6AgS09TUEkgbMOgIGjhur90IHPhu6ljIGPhuqduIHRoaeG6v3QgxJHhu4MgbuG6r20gYuG6r3Qgc+G7sSB0xrDGoW5nIHF1YW4gdsOgIHPhu7EgbMOieSBsYW4gY+G7p2EgY8OhYyBjw7ogc+G7kWMgZ2nhu69hIGhhaSB0aOG7iyB0csaw4budbmcgbsOgeS4NCg0KWHXhuqV0IHBow6F0IHThu6sgdMOtbmggY+G6p24gdGhp4bq/dCB2w6AgxrB1IG5oxrDhu6NjIMSRaeG7g20gY+G7p2EgY8OhYyBwaMawxqFuZyBwaMOhcCDEkW8gbMaw4budbmcgaGnhu4duIGPDsywgdGnhu4N1IGx14bqtbiBuw6B5IHPhur0gbmdoacOqbiBj4bupdSBjaOG7pyDEkeG7gSDigJwqKk5naGnDqm4gY+G7qXUgcGjhuqNuIOG7qW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIMSR4buRaSB24bubaSBiaeG6v24gxJHhu5luZyBj4bunYSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gSMOgbiBRdeG7kWMgYuG6sW5nIHBoxrDGoW5nIHBow6FwIGNvcHVsYSBjw7MgxJFp4buBdSBraeG7h24qKuKAnS4gTeG7pWMgdGnDqnUgbMOgIHjDoWMgxJHhu4tuaCBt4bupYyDEkeG7mSBwaOG7pSB0aHXhu5ljIHbDoCBz4buxIGzDonkgbGFuIGdp4buvYSBoYWkgVFRDSyBuw6B5IHRyb25nIGPDoWMgxJFp4buBdSBraeG7h24gdGjhu4sgdHLGsOG7nW5nIGLDrG5oIHRoxrDhu51uZyB2w6AgY+G7sWMgxJFvYW4sIHF1YSDEkcOzIGN1bmcgY+G6pXAgY8OhaSBuaMOsbiBzw6J1IHPhuq9jIHbDoCBo4buvdSDDrWNoIGNobyBjw6FjIG5ow6AgxJHhuqd1IHTGsCB2w6AgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoLg0KDQojIyAxLjIgTeG7pWMgdGnDqnUgbmdoacOqbiBj4bupdQ0KDQojIyMgMS4yLjEgTeG7pWMgdGnDqnUgdOG7lW5nIHF1w6F0DQoNCk5naGnDqm4gY+G7qXUgbsOgeSBuaOG6sW0gbeG7pWMgxJHDrWNoIHBow6JuIHTDrWNoIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMgZ2nhu69hIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIChWTi1JbmRleCkgdsOgIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYyAoS09TUEkpIGLhurFuZyBwaMawxqFuZyBwaMOhcCBjb3B1bGEgY8OzIMSRaeG7gXUga2nhu4duIG5o4bqxbSDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBwaOG6o24g4bupbmcgY+G7p2EgVFRDSyBWaeG7h3QgTmFtIGtoaSBUVENLIEjDoG4gUXXhu5FjIGJp4bq/biDEkeG7mW5nIHRyb25nIGdpYWkgxJFv4bqhbiAyMDE4LTIwMjQuIFF1YSDEkcOzLCDEkeG7gSB4deG6pXQgaMOgbSDDvSBjaMOtbmggc8OhY2ggZ2nDunAgY8OhYyBuaMOgIMSR4bqndSB0xrAgY8WpbmcgbmjGsCBjw6FjIG5ow6AgcXXhuqNuIGzDvSBnaeG6o20gdGhp4buDdSBy4bunaSBybyBraGkgdGjhu4sgdHLGsOG7nW5nIGJp4bq/biDEkeG7mW5nIG3huqFuaC4NCg0KIyMjIDEuMi4yIE3hu6VjIHRpw6p1IGPhu6UgdGjhu4MNCg0KLSDEkMOhbmggZ2nDoSBj4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIGdp4buvYSBUVENLIFZp4buHdCBOYW0gKFZOSSkgdsOgIFRUQ0sgSMOgbiBRdeG7kWMgKEtPU1BJKSBi4bqxbmcgcGjGsMahbmcgcGjDoXAgY29wdWxhIGPDsyDEkWnhu4F1IGtp4buHbi4NCg0KLSBTbyBzw6FuaCBz4buxIGtow6FjIGJp4buHdCB0cm9uZyBj4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIGdp4buvYSBWTkkgdsOgIEtPU1BJIHRyxrDhu5tjLCB0cm9uZyB2w6Agc2F1IGPDoWMgZ2lhaSDEkW/huqFuIGJp4bq/biDEkeG7mW5nIGzhu5tuIG5oxrAgxJHhuqFpIGThu4tjaCBDb3ZpZC0xOSwgY2hp4bq/biB0cmFuaCBOZ2EtVWtyYWluYQ0KDQotIEtp4buDbSDEkeG7i25oIG3hu6ljIMSR4buZIHTDoWMgxJHhu5luZyBj4bunYSBiaeG6v24gxJHhu5luZyB04burIEtPU1BJIMSR4bq/biBWTkkgdHJvbmcgY8OhYyB0w6xuaCBodeG7kW5nIHRo4buLIHRyxrDhu51uZyBraMOhYyBuaGF1Lg0KDQotIMSQxrBhIHJhIGtp4bq/biBuZ2jhu4sgY2hvIG5ow6AgxJHhuqd1IHTGsCB2w6AgdOG7lSBjaOG7qWMgcXXhuqNuIGzDvSB24buBIGPDoWNoIHF14bqjbiBsw70gZGFuaCBt4bulYyDEkeG6p3UgdMawLCBy4bunaSBybyB2w6AgY8ahIGjhu5lpIMSR4bqndSB0xrAgZOG7sWEgdHLDqm4gcGjDom4gdMOtY2ggY+G6pXUgdHLDumMgcGjhu6UgdGh14buZYy4NCg0KIyMgMS4zIMSQ4buRaSB0xrDhu6NuZyBuZ2hpw6puIGPhu6l1DQoNCsSQ4buRaSB0xrDhu6NuZyBuZ2hpw6puIGPhu6l1IHRyb25nIGLDoGkgdGnhu4N1IGx14bqtbiBuw6B5IGzDoCB04bu3IHN14bqldCBs4bujaSBuaHXhuq1uIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIChWTi1JbmRleCkgdsOgIEPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYyAoS09TUEkpDQoNCiMjIDEuNCBQaOG6oW0gdmkgbmdoacOqbiBj4bupdQ0KDQoqKlBo4bqhbSB2aSBraMO0bmcgZ2lhbioqDQoNCkLDoGkgdGnhu4N1IGx14bqtbiBuw6B5IG5naGnDqm4gY+G7qXUgbeG7qWMgxJHhu5kgcGjhuqNuIOG7qW5nIGPhu6dhIFRUQ0sgVmnhu4d0IE5hbSBraGkgVFRDSyBIw6BuIFF14buRYyBiaeG6v24gxJHhu5luZyB0aMO0bmcgcXVhIHThu7cgc3XhuqV0IGzhu6NpIG5odeG6rW4gY+G7p2EgVk4tSW5kZXggdsOgIEtPU1BJLg0KDQoqKlBo4bqhbSB2aSB0aOG7nWkgZ2lhbioqDQoNClBo4bqhbSB2aSB0aOG7nWkgZ2lhbiDEkeG7gyB4ZW0geMOpdCBt4bupYyDEkeG7mSBwaOG6o24g4bupbmcgY+G7p2EgVFRDSyBWaeG7h3QgTmFtIMSR4buRaSB24bubaSBiaeG6v24gxJHhu5luZyBj4bunYSBUVENLIEjDoG4gUXXhu5FjIGzDoCA2IG7Eg20gNiB0aMOhbmcsIHThu6sgMzEvMDEvMjAxOCDEkeG6v24gMzEvMDcvMjAyNC4NCg0KIyMgMS41IEvhur90IGPhuqV1IMSR4buBIHTDoGkNCg0KKipDaMawxqFuZyAxIDogR2nhu5tpIHRoaeG7h3UqKg0KDQpHaeG7m2kgdGhp4buHdSBi4buRaSBj4bqjbmggbmdoacOqbiBj4bupdSB2w6AgbMO9IGRvIHThuqFpIHNhbyB2aeG7h2MgcGjDom4gdMOtY2ggc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBWTklOREVYIHbDoCBLT1NQSSBsw6AgcXVhbiB0cuG7jW5nLiBT4buxIGvhur90IG7hu5FpIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIG7DoHkgY8OzIOG6o25oIGjGsOG7n25nIHPDonUgcuG7mW5nIMSR4bq/biBjw6FjIHF1eeG6v3QgxJHhu4tuaCDEkeG6p3UgdMawIHbDoCBxdeG6o24gbMO9IHLhu6dpIHJvIHRyb25nIG3DtGkgdHLGsOG7nW5nIHRvw6BuIGPhuqd1IGjDs2EuIE3hu6VjIHRpw6p1IGPhu6dhIG5naGnDqm4gY+G7qXUgbMOgIHBow6JuIHTDrWNoIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMgZ2nhu69hIFZOSU5ERVggdsOgIEtPU1BJIGLhurFuZyBwaMawxqFuZyBwaMOhcCBjb3B1bGEgY8OzIMSRaeG7gXUga2nhu4duLCBuaOG6sW0gaGnhu4N1IHLDtSBoxqFuIHbhu4Egc+G7sSBsacOqbiBr4bq/dCBuw6B5IHbDoCBjw6FjaCBuw7MgdGhheSDEkeG7lWkgdGhlbyB0aOG7nWkgZ2lhbiB2w6AgxJFp4buBdSBraeG7h24gdGjhu4sgdHLGsOG7nW5nLiBDw6FjIGPDonUgaOG7j2kgbmdoacOqbiBj4bupdSB04bqtcCB0cnVuZyB2w6BvIHZp4buHYyB4w6FjIMSR4buLbmggbeG7kWkgcXVhbiBo4buHIHBo4bulIHRodeG7mWMgZ2nhu69hIGhhaSBjaOG7iSBz4buRIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIHRo4buLIHRyxrDhu51uZyBraMOhYyBuaGF1IHbDoCBz4buxIHRoYXkgxJHhu5VpIGPhu6dhIG7DsyB0cm9uZyBjw6FjIMSRaeG7gXUga2nhu4duIHRo4buLIHRyxrDhu51uZyBj4bulIHRo4buDLiBOZ2hpw6puIGPhu6l1IHPhu60gZOG7pW5nIHBoxrDGoW5nIHBow6FwIGNvcHVsYSBjw7MgxJFp4buBdSBraeG7h24gxJHhu4MgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdOG7tyBzdeG6pXQgbOG7o2kgbmh14bqtbiBow6BuZyBuZ8OgeSBj4bunYSBWTklOREVYIHbDoCBLT1NQSSwgduG7m2kgbW9uZyBtdeG7kW4gY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHPDonUgc+G6r2MgduG7gSBt4buRaSBsacOqbiBr4bq/dCBnaeG7r2EgaGFpIHRo4buLIHRyxrDhu51uZyBuw6B5Lg0KDQoqKkNoxrDGoW5nIDIgOiBDxqEgc+G7nyBsw70gbHXhuq1uIHbDoCB04buVbmcgcXVhbiBuZ2hpw6puIGPhu6l1KioNCg0KVHLDrG5oIGLDoHkgY8OhYyBjxqEgc+G7nyBsw70gbHXhuq1uIGxpw6puIHF1YW4gxJHhur9uIHPhu7EgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4sIGJhbyBn4buTbSBjw6FjIGzDvSB0aHV54bq/dCB0w6BpIGNow61uaCBjxqEgYuG6o24gdsOgIGPDoWMgbcO0IGjDrG5oIG5oxrAgR0FSQ0ggdsOgIGNvcHVsYS4gTcO0IGjDrG5oIGNvcHVsYSDEkcaw4bujYyBnaeG6o2kgdGjDrWNoIGNoaSB0aeG6v3QsIHbhu5tpIGPDoWMgbG/huqFpIGNvcHVsYSBwaOG7lSBiaeG6v24gbmjGsCBHYXVzc2lhbiwgdCBTdHVkZW50LCB2w6AgSm9lIENsYXl0b24sIGPDuW5nIHbhu5tpIOG7qW5nIGThu6VuZyBj4bunYSBjaMO6bmcgdHJvbmcgcGjDom4gdMOtY2ggc+G7sSBwaOG7pSB0aHXhu5ljLiBU4buVbmcgcXVhbiBuZ2hpw6puIGPhu6l1IHRyxrDhu5tjIMSRw6J5IMSRxrDhu6NjIHTDs20gdOG6r3QgxJHhu4MgbMOgbSByw7Ugbmjhu69uZyBwaMOhdCBoaeG7h24gcXVhbiB0cuG7jW5nIHbhu4Egc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBxdeG7kWMgdOG6vywgY8WpbmcgbmjGsCBjw6FjIG5naGnDqm4gY+G7qXUgdHLGsOG7m2MgxJHDonkgbGnDqm4gcXVhbiDEkeG6v24gVk5JTkRFWCB2w6AgS09TUEkuIENoxrDGoW5nIG7DoHkgY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHThu5VuZyBxdWFuIHbhu4EgY8OhYyBwaMawxqFuZyBwaMOhcCB2w6Aga+G6v3QgcXXhuqMgbmdoacOqbiBj4bupdSB0csaw4bubYyDEkcOieSwgZ2nDunAgeMOhYyDEkeG7i25oIGtob+G6o25nIHRy4buRbmcgbmdoacOqbiBj4bupdSB2w6AgbMO9IGRvIGPhuqduIHRoaeG6v3QgY2hvIG5naGnDqm4gY+G7qXUgaGnhu4duIHThuqFpLg0KDQoqKkNoxrDGoW5nIDMgOiBE4buvIGxp4buHdSB2w6AgcGjGsMahbmcgcGjDoXAgbmdoacOqbiBj4bupdSoqDQoNCkNoxrDGoW5nIG7DoHkgbcO0IHThuqMgZOG7ryBsaeG7h3UgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdHJvbmcgbmdoacOqbiBj4bupdSwgYmFvIGfhu5NtIHThu7cgc3XhuqV0IGzhu6NpIG5odeG6rW4gaMOgbmcgbmfDoHkgY+G7p2EgVk5JTkRFWCB2w6AgS09TUEkgdOG7qyDEkeG6p3UgbsSDbSAyMDE4IMSR4bq/biDEkeG6p3UgdGjDoW5nIDcgbsSDbSAyMDI0LiBDw6FjIGLGsOG7m2MgdGnhu4FuIHjhu60gbMO9IGThu68gbGnhu4d1IMSRxrDhu6NjIHRyw6xuaCBiw6B5LCBiYW8gZ+G7k20ga2nhu4NtIHRyYSBjaOG6pXQgbMaw4bujbmcgZOG7ryBsaeG7h3UgdsOgIGNodeG6qW4gYuG7iyBk4buvIGxp4buHdSBjaG8gcGjDom4gdMOtY2guIFBoxrDGoW5nIHBow6FwIG5naGnDqm4gY+G7qXUgxJHGsOG7o2MgZ2nhuqNpIHRow61jaCBjaGkgdGnhur90LCB24bubaSB0cuG7jW5nIHTDom0gbMOgIHZp4buHYyDDoXAgZOG7pW5nIHBoxrDGoW5nIHBow6FwIGNvcHVsYSBjw7MgxJFp4buBdSBraeG7h24gxJHhu4MgcGjDom4gdMOtY2ggc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nLiBDw6FjIGxv4bqhaSBjb3B1bGEgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdsOgIGzDvSBkbyBjaOG7jW4gbOG7sWEgY2jDum5nIMSRxrDhu6NjIG7DqnUgcsO1LCBjw7luZyB24bubaSBjw6FjaCB0aOG7qWMgbcO0IGjDrG5oIGjDs2EgdsOgIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IMSR4buDIMSR4bqhdCDEkcaw4bujYyBjw6FjIG3hu6VjIHRpw6p1IG5naGnDqm4gY+G7qXUuDQoNCioqQ2jGsMahbmcgNCA6IEvhur90IHF14bqjIG5naGnDqm4gY+G7qXUqKg0KDQpDaMawxqFuZyBuw6B5IHRyw6xuaCBiw6B5IGPDoWMga+G6v3QgcXXhuqMgcGjDom4gdMOtY2ggc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBWTklOREVYIHbDoCBLT1NQSSwgZOG7sWEgdHLDqm4gbcO0IGjDrG5oIGNvcHVsYSBjw7MgxJFp4buBdSBraeG7h24uIEPDoWMga+G6v3QgcXXhuqMgY2hvIHRo4bqleSBz4buxIHBo4bulIHRodeG7mWMgZ2nhu69hIGhhaSBjaOG7iSBz4buRIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGtow6FjIG5oYXUgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIHbDoCBjw6FjIMSRaeG7gXUga2nhu4duIHRo4buLIHRyxrDhu51uZyBj4bulIHRo4buDLiBQaMOibiB0w61jaCBz4buxIHRoYXkgxJHhu5VpIGPhu6dhIHPhu7EgcGjhu6UgdGh14buZYyB0aGVvIHRo4budaSBnaWFuIHbDoCDEkWnhu4F1IGtp4buHbiB0aOG7iyB0csaw4budbmcgxJHGsOG7o2MgdHLDrG5oIGLDoHkgbeG7mXQgY8OhY2ggcsO1IHLDoG5nLCBnacO6cCBsw6BtIHLDtSBt4buRaSBsacOqbiBr4bq/dCBnaeG7r2EgVk5JTkRFWCB2w6AgS09TUEkgdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4gdGjhu4sgdHLGsOG7nW5nIGJp4bq/biDEkeG7mW5nIHbDoCDhu5VuIMSR4buLbmguDQogDQoqKkNoxrDGoW5nIDUgOiBL4bq/dCBsdeG6rW4gdsOgIGNow61uaCBzw6FjaCBow6BtIMO9KioNCg0KQ2jGsMahbmcgbsOgeSB0w7NtIHThuq90IGPDoWMgcGjDoXQgaGnhu4duIGNow61uaCB04burIG5naGnDqm4gY+G7qXUsIGzDoG0gbuG7lWkgYuG6rXQgbmjhu69uZyDEkWnhu4NtIHF1YW4gdHLhu41uZyB24buBIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMgZ2nhu69hIFZOSU5ERVggdsOgIEtPU1BJLiBDw6FjIGvhur90IGx14bqtbiBjaMOtbmggduG7gSBjw6FjaCB0aOG7qWMgdsOgIMSRaeG7gXUga2nhu4duIG3DoCBz4buxIHBo4bulIHRodeG7mWMgbsOgeSB0aGF5IMSR4buVaSDEkcaw4bujYyB0csOsbmggYsOgeS4gROG7sWEgdHLDqm4gY8OhYyBr4bq/dCBxdeG6oyBuZ2hpw6puIGPhu6l1LCBjaMawxqFuZyBjxaluZyDEkcawYSByYSBjw6FjIGtodXnhur9uIG5naOG7iyBjaG8gbmjDoCDEkeG6p3UgdMawIHbDoCBjw6FjIG5ow6AgcXXhuqNuIGzDvSBy4bunaSBybywgbmjhurFtIGjhu5cgdHLhu6MgdHJvbmcgdmnhu4djIMSRxrBhIHJhIHF1eeG6v3QgxJHhu4tuaCDEkeG6p3UgdMawIHbDoCBxdeG6o24gbMO9IHLhu6dpIHJvIGhp4buHdSBxdeG6oyBoxqFuIHRyb25nIGLhu5FpIGPhuqNuaCBz4buxIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIHF14buRYyB04bq/Lg0KDQojICoqQ0jGr8agTkcgMiBDxqAgU+G7niBMw50gTFXhuqxOIFbDgCBU4buUTkcgUVVBTiBOR0hJw4pOIEPhu6hVKioNCg0KIyMgMi4xIE3hu5l0IHPhu5EgbMO9IHRodXnhur90IGtpbmggdOG6vyBsacOqbiBxdWFuDQoNCiMjIyAyLjIuMSBLaMOhaSBuaeG7h20gduG7gSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4NCg0KVGhlbyBjw6FjaCBoaeG7g3UgdHJ1eeG7gW4gdGjhu5FuZywgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIChUVENLKSBsw6AgbsahaSBkaeG7hW4gcmEgaG/huqF0IMSR4buZbmcgcGjDoXQgaMOgbmggdsOgIG11YSBiw6FuIGPDoWMgY2jhu6luZyBraG/DoW4gxJHDoyDEkcaw4bujYyBwaMOhdCBow6BuaC4gR2nhu5FuZyBuaMawIGLhuqV0IGvhu7MgdGjhu4sgdHLGsOG7nW5nIG7DoG8ga2jDoWMsIFRUQ0sgYmFvIGfhu5NtIGPDoWMgeeG6v3UgdOG7kSBjxqEgYuG6o24gbmjGsDogY8OhYyBjaOG7pyB0aOG7gyB0aGFtIGdpYSBnaWFvIGThu4tjaDsgY8OhYyBsb+G6oWkgaMOgbmcgaMOzYSBnaWFvIGThu4tjaDsgY8OhYyBwaMawxqFuZyB0aOG7qWMgZ2lhbyBk4buLY2g7IGPDoWMgY8ahIHF1YW4gcXXhuqNuIGzDvSB2w6AgZ2nDoW0gc8OhdDsgY8OhYyBuZ3V5w6puIHThuq9jIHbhuq1uIGjDoG5oIHbDoCBz4buxIHTDoWMgxJHhu5luZyBj4bunYSBxdXkgbHXhuq10IHRo4buLIHRyxrDhu51uZy4NCg0KVHLDqm4gVFRDSywgduG7kW4gZMOgaSBo4bqhbiDEkcaw4bujYyBsdcOibiBjaHV54buDbiBnaeG7r2EgY8OhYyBjaOG7pyB0aOG7gyB0aMO0bmcgcXVhIGhhaSBnaWFpIMSRb+G6oW4gdHJvbmcgaGFpIHBo4bqnbiBraMOhYyBuaGF1IGPhu6dhIHRo4buLIHRyxrDhu51uZy4gR2lhaSDEkW/huqFuIMSR4bqndSB0acOqbiBkaeG7hW4gcmEga2hpIGPDoWMgbmjDoCDEkeG6p3UgdMawIGNodXnhu4NuIGdpYW8gcXV54buBbiBz4bufIGjhu691IHbhu5FuIGNobyBjw6FjIHThu5UgY2jhu6ljIHBow6F0IGjDoG5oIGNo4bupbmcga2hvw6FuLCB0aMO0bmcgcXVhIGPGoSBjaOG6vyBnw7NwIHbhu5FuIGhv4bq3YyBjaG8gdmF5LCB2w6Agbmjhuq1uIGzhuqFpIGPDoWMgZ2nhuqV5IHThu50gY8OzIGdpw6EgbmjGsCBj4buVIHBoaeG6v3UsIHRyw6FpIHBoaeG6v3UsIGhv4bq3YyBjaOG7qW5nIGNo4buJIHF14bu5LiBIb+G6oXQgxJHhu5luZyBuw6B5IHjhuqN5IHJhIHRyw6puIHRo4buLIHRyxrDhu51uZyBzxqEgY+G6pXAgKGhheSBjw7JuIGfhu41pIGzDoCB0aOG7iyB0csaw4budbmcgY+G6pXAgbeG7mXQpLg0KDQpHaWFpIMSRb+G6oW4gdGjhu6kgaGFpIGzDoCBraGkgY8OhYyBuaMOgIMSR4bqndSB0xrAgc+G7nyBo4buvdSBjaOG7qW5nIGtob8OhbiBjaHV54buDbiBuaMaw4bujbmcgcXV54buBbiBz4bufIGjhu691IGNobyBuaMOgIMSR4bqndSB0xrAga2jDoWMgdGjDtG5nIHF1YSBtdWEgYsOhbiBob+G6t2MgdOG6t25nIGNobywgduG7m2kgdmnhu4djIHRo4buxYyBoaeG7h24gdGjDtG5nIHF1YSBo4bujcCDEkeG7k25nIG11YSBiw6FuIGhv4bq3YyBo4bujcCDEkeG7k25nIHThurduZyBjaG8gY2jhu6luZyBraG/DoW4uIFZp4buHYyB04bq3bmcgY2hvIGNo4bupbmcga2hvw6FuIMSRxrDhu6NjIHRo4buxYyBoaeG7h24gdGhlbyBxdXkgxJHhu4tuaCBj4bunYSBwaMOhcCBsdeG6rXQgZMOibiBz4buxLCB0cm9uZyBraGkgdmnhu4djIG11YSBiw6FuIGNo4bupbmcga2hvw6FuIGdp4buvYSBjw6FjIG5ow6AgxJHhuqd1IHTGsCB0aMaw4budbmcgxJHGsOG7o2MgdGjhu7FjIGhp4buHbiB0aMO0bmcgcXVhIGPDoWMgdOG7lSBjaOG7qWMgdHJ1bmcgZ2lhbiB0csOqbiBUVENLLiBIb+G6oXQgxJHhu5luZyBtdWEgYsOhbiBs4bqhaSBjw6FjIGNo4bupbmcga2hvw6FuIMSRw6MgcGjDoXQgaMOgbmggZGnhu4VuIHJhIHRyw6puIHRo4buLIHRyxrDhu51uZyB0aOG7qSBj4bqlcCAoaGF5IGPDsm4gZ+G7jWkgbMOgIHRo4buLIHRyxrDhu51uZyBj4bqlcCBoYWkpLg0KDQpUcm9uZyBu4buBbiBraW5oIHThur8gaGnhu4duIMSR4bqhaSwgVFRDSyBraMO0bmcgY2jhu4kgbMOgIG7GoWkgZGnhu4VuIHJhIGPDoWMgZ2lhbyBk4buLY2ggbXVhIGLDoW4gY2jhu6luZyBraG/DoW4gdHJ1bmcgdsOgIGTDoGkgaOG6oW4sIG3DoCBjw7JuIGzDoCBuxqFpIHRo4buxYyBoaeG7h24gY8OhYyBnaWFvIGThu4tjaCDhu58gY+G6oyB0aOG7iyB0csaw4budbmcgc8ahIGPhuqVwLCBuxqFpIG5ow6AgxJHhuqd1IHTGsCBtdWEgY2jhu6luZyBraG/DoW4gbOG6p24gxJHhuqd1IHThu6sgdOG7lSBjaOG7qWMgcGjDoXQgaMOgbmgsIHbDoCB0aOG7iyB0csaw4budbmcgdGjhu6kgY+G6pXAsIG7GoWkgbXVhIGLDoW4gbOG6oWkgY8OhYyBjaOG7qW5nIGtob8OhbiDEkcOjIMSRxrDhu6NjIHBow6F0IGjDoG5oIHRyxrDhu5tjIMSRw7MuIE5oxrAgduG6rXksIHbhu4EgYuG6o24gY2jhuqV0LCBUVENLIGzDoCBuxqFpIHRyYW8gxJHhu5VpLCBtdWEgYsOhbiB2w6AgY2h1eeG7g24gbmjGsOG7o25nIGPDoWMgbG/huqFpIGNo4bupbmcga2hvw6FuLCBsw6BtIHRoYXkgxJHhu5VpIGNo4bunIHRo4buDIG7huq9tIGdp4buvIGNo4bupbmcga2hvw6FuLg0KDQojIyMgMi4xLjIgxJDhurdjIMSRaeG7g20gY+G7p2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuDQoNCsSQ4bq3YyDEkWnhu4NtIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiAoVFRDSykga2jDtG5nIGNo4buJIHBo4bqjbiDDoW5oIGLhuqNuIGNo4bqldCBj4bunYSBuw7MgbcOgIGPDsm4gZ2nDunAgcGjDom4gYmnhu4d0IG7DsyB24bubaSBjw6FjIGxv4bqhaSB0aOG7iyB0csaw4budbmcga2jDoWMgdHJvbmcgbuG7gW4ga2luaCB04bq/LiBMw6AgbeG7mXQgcGjhuqduIHF1YW4gdHLhu41uZyB0cm9uZyBo4buHIHRo4buRbmcgdGjhu4sgdHLGsOG7nW5nIGPhu6dhIG7hu4FuIGtpbmggdOG6vyBt4bufLCBUVENLIG1hbmcgbmjhu69uZyDEkeG6t2MgxJFp4buDbSBjxqEgYuG6o24gc2F1Og0KDQrEkOG6p3UgdGnDqm4sIFRUQ0sgZ2lhbyBk4buLY2ggY8OhYyBjaOG7qW5nIGtob8OhbiB2w6AgZOG7i2NoIHbhu6UgbGnDqm4gcXVhbiDEkeG6v24gY2jhu6luZyBraG/DoW4uIE5o4buvbmcgY2jhu6luZyBraG/DoW4gbsOgeSBsw6AgaMOgbmcgaMOzYSDEkeG6t2MgYmnhu4d0LCDEkeG6oWkgZGnhu4duIGNobyB2aeG7h2MgY2h1eeG7g24gZ2lhbyB24buRbiDEkeG6p3UgdMawIGTDoGkgaOG6oW4gdOG7qyBjw6FjIHThu5UgY2jhu6ljIHbDoCBjw6EgbmjDom4gY8OzIG5ndeG7k24gduG7kW4gZMawIHRo4burYSDEkeG6v24gY8OhYyB04buVIGNo4bupYyBj4bqnbiB24buRbiBuaMawIGRvYW5oIG5naGnhu4dwLCBjaMOtbmggcGjhu6cgdsOgIGPDoWMgY8ahIHF1YW4gxJHhu4thIHBoxrDGoW5nLiBDw6FjIGThu4tjaCB24bulIGNo4bupbmcga2hvw6FuLCBiYW8gZ+G7k20gY8OhYyBob+G6oXQgxJHhu5luZyBj4bunYSB04buVIGNo4bupYyBraW5oIGRvYW5oIGNo4bupbmcga2hvw6FuLCDEkcaw4bujYyB0aOG7sWMgaGnhu4duIHRoZW8gecOqdSBj4bqndSBj4bunYSBraMOhY2ggaMOgbmcgbmjhurFtIG5o4bqtbiBwaMOtIGThu4tjaCB24bulLiBOaOG7r25nIGThu4tjaCB24bulIG7DoHkgaOG7lyB0cuG7oyBjw6FjIG5ow6AgxJHhuqd1IHTGsCB2w6AgdOG7lSBjaOG7qWMgcGjDoXQgaMOgbmggdGjDtG5nIHF1YSBjw6FjIHThu5UgY2jhu6ljIHRydW5nIGdpYW4gdsOgIGPGoSBxdWFuIHF14bqjbiBsw70uDQoNClRo4bupIGhhaSwgVFRDSyBjw7MgdMOtbmggcuG7p2kgcm8gY2FvIHbDoCDhuqNuaCBoxrDhu59uZyBkw6J5IGNodXnhu4FuLiBUw61uaCBy4bunaSBybyBj4bunYSB0aOG7iyB0csaw4budbmcgbsOgeSB0aOG7gyBoaeG7h24gcsO1IOG7nyB2aeG7h2MgY8OhYyBuaMOgIMSR4bqndSB0xrAgcGjhuqNpIMSR4buRaSBt4bq3dCB24bubaSBuaGnhu4F1IHnhur91IHThu5EgcuG7p2kgcm8sIG5oxrAgc+G7sSBwaMOhIHPhuqNuIGPhu6dhIHThu5UgY2jhu6ljIHBow6F0IGjDoG5oLCB0w6xuaCB0cuG6oW5nIGzhuqFtIHBow6F0LCBnaeG6o20gZ2nDoSBjaOG7qW5nIGtob8OhbiwgaG/hurdjIHRow7RuZyB0aW4gdGjhu4sgdHLGsOG7nW5nIGtow7RuZyBtaW5oIGLhuqFjaC4gTmjhu69uZyB54bq/dSB04buRIG7DoHkgY8OzIHRo4buDIHTDoWMgxJHhu5luZyDEkcOhbmcga+G7gyDEkeG6v24gcXV54buBbiBs4bujaSBj4bunYSBjw6FjIG5ow6AgxJHhuqd1IHTGsCwgdOG7lSBjaOG7qWMgcGjDoXQgaMOgbmggdsOgIGPDoWMgdOG7lSBjaOG7qWMgdHJ1bmcgZ2lhbi4NCg0KVGjhu6kgYmEsIFRUQ0sgcuG6pXQgbmjhuqF5IGPhuqNtIHbhu5tpIGPDoWMgYmnhur9uIMSR4buZbmcgduG7gSBraW5oIHThur8sIGNow61uaCB0cuG7iywgeMOjIGjhu5lpLCBxdcOibiBz4buxIHbDoCBhbiBuaW5oIHRyb25nIG7GsOG7m2MgY8WpbmcgbmjGsCB0csOqbiB0b8OgbiBj4bqndS4NCg0KQ3Xhu5FpIGPDuW5nLCBUVENLIGhv4bqhdCDEkeG7mW5nIHRoZW8gY8OhYyBuZ3V5w6puIHThuq9jIMSR4bq3YyB0aMO5IG5oxrAgbmd1ecOqbiB04bqvYyBjw7RuZyBraGFpLCBuZ3V5w6puIHThuq9jIGdpYW8gZOG7i2NoIHF1YSB0cnVuZyBnaWFuIHbDoCBuZ3V5w6puIHThuq9jIGLhuqNvIHbhu4cgcXV54buBbiBs4bujaSBj4bunYSBuaMOgIMSR4bqndSB0xrAuDQoNCiMjIyAyLjEuMyBU4buVbmcgcXVhbiB24buBIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtDQoNClRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiAoVFRDSykgVmnhu4d0IE5hbSDEkcOjIHRy4bqjaSBxdWEgaMahbiAyNSBuxINtIHBow6F0IHRyaeG7g24sIMSR4buRaSBt4bq3dCB24bubaSBuaGnhu4F1IHRoxINuZyB0cuG6p20gbmjGsG5nIHbhuqtuIGto4bqzbmcgxJHhu4tuaCDEkcaw4bujYyB04bqnbSBxdWFuIHRy4buNbmcgdG8gbOG7m24uIEJhbiDEkeG6p3UsIFRUQ0sgVmnhu4d0IE5hbSBjw7MgcXV5IG3DtCBy4bqldCBraGnDqm0gdOG7kW4sIGNo4buJIHbhu5tpIGhhaSBtw6MgY+G7lSBwaGnhur91IGPhu6dhIEPDtG5nIHR5IEPhu5UgcGjhuqduIEPGoSDEkWnhu4duIGzhuqFuaCAoUkVFKSB2w6AgQ8O0bmcgdHkgQ+G7lSBwaOG6p24gU0FNIEhvbGRpbmdzIChTQU0pLCB24bubaSB04bqnbiBzdeG6pXQgZ2lhbyBk4buLY2ggY2jhu4kgaGFpIHBoacOqbiBt4buXaSB0deG6p24uIFR1eSBuaGnDqm4sIHPhu7EgcmEgxJHhu51pIGPhu6dhIFRydW5nIHTDom0gR2lhbyBk4buLY2ggQ2jhu6luZyBraG/DoW4gSMOgIE7hu5lpIHbDoG8gbmfDoHkgOC8zLzIwMDUgxJHDoyDEkcOhbmggZOG6pXUgbeG7mXQgYsaw4bubYyBuZ2/hurd0IGzhu5tuLiBWw6BvIHRow6FuZyAxLzIwMDYsIHZp4buHYyBuacOqbSB54bq/dCBj4buVIHBoaeG6v3UgY+G7p2EgVmluYW1pbGsgxJHDoyBsw6BtIGdpw6EgdHLhu4sgduG7kW4gaMOzYSBj4bunYSBIT1NFIHTEg25nIGfhuqVwIMSRw7RpIHRyb25nIG5nw6B5LiBOxINtIMSRw7MsIDc0IGRvYW5oIG5naGnhu4dwIG3hu5tpIMSRw6MgbmnDqm0geeG6v3QgdHLDqm4gSE9TRSwgZ2nDunAgZ2nDoSB0cuG7iyB24buRbiBow7NhIHRo4buLIHRyxrDhu51uZyB0xINuZyB04burIDcuNDAwIHThu7cgxJHhu5NuZyBsw6puIDE0OC4wMDAgdOG7tyDEkeG7k25nLCB2w6AgY2jhu4kgc+G7kSBWTi1JbmRleCBsw6puIG3hu6ljIDc1MiDEkWnhu4NtLCB0xINuZyAxNDQlIHRyb25nIG3hu5l0IG7Eg20uIMSQ4buJbmggY2FvIGzDoCB2w6BvIG5nw6B5IDEyLzMvMjAwNywga2hpIFZOLUluZGV4IMSR4bqhdCBt4bupYyAxLjE3MCw2OSDEkWnhu4NtLCBjYW8gaMahbiBraG/huqNuZyAzLDkgbOG6p24gc28gduG7m2kgxJHhuqd1IG7Eg20gMjAwNi4gVHV5IG5oacOqbiwgVFRDSyBWaeG7h3QgTmFtIGPFqW5nIGtow7RuZyB0csOhbmgga2jhu49pIHTDoWMgxJHhu5luZyBj4bunYSBraOG7p25nIGhv4bqjbmcga2luaCB04bq/IHRvw6BuIGPhuqd1LCBraGnhur9uIFZOLUluZGV4IGdp4bqjbSA2NiUgdsOgbyBjdeG7kWkgbsSDbSAyMDA4Lg0KDQpTYXUgZ2lhaSDEkW/huqFuIGto4bunbmcgaG/huqNuZywgdGjhu4sgdHLGsOG7nW5nIMSRw6MgaOG7k2kgcGjhu6VjIHbDoCB0cuG6o2kgcXVhIG5oaeG7gXUgdGhheSDEkeG7lWkgcXVhbiB0cuG7jW5nLiDEkOG6t2MgYmnhu4d0LCB2w6BvIG5nw6B5IDYvMi8yMDEyLCBjaOG7iSBz4buRIFZOMzAgxJHGsOG7o2MgcmEgbeG6r3QsIGJhbyBn4buTbSAzMCBj4buVIHBoaeG6v3UgY8OzIGdpw6EgdHLhu4sgduG7kW4gaMOzYSBs4bubbiB0csOqbiBIT1NFLCDEkcOhbmggZOG6pXUgbeG7mXQgYsaw4bubYyB0aeG6v24gdGhlbyB0acOqdSBjaHXhuqluIHF14buRYyB04bq/IHbDoCB0xINuZyB0w61uaCB0aGFuaCBraG/huqNuIHbDoCBtaW5oIGLhuqFjaCBj4bunYSB0aOG7iyB0csaw4budbmcuIE7Eg20gMjAxNywgVFRDSyBWaeG7h3QgTmFtIHRp4bq/cCB04bulYyDEkeG7lWkgbeG7m2kgduG7m2kgc+G7sSByYSDEkeG7nWkgY+G7p2EgY2jhu6luZyBraG/DoW4gcGjDoWkgc2luaCwgY8O5bmcgduG7m2kgc+G7sSB4deG6pXQgaGnhu4duIGPhu6dhIGjDoG5nIGxv4bqhdCBjb24gc+G7kSAibOG6rXAgxJHhu4luaCIuIFZOLUluZGV4IHTEg25nIDQ4JSBsw6puIDk4NCDEkWnhu4NtLCB24buRbiBow7NhIHRo4buLIHRyxrDhu51uZyB0xINuZyBoxqFuIDcwJSwgdOG7tyBs4buHIHbhu5FuIGjDs2EgdHLDqm4gR0RQIGzhuqduIMSR4bqndSB0acOqbiB2xrDhu6N0IDUwJSwgdsOgIHThu5VuZyBnacOhIHRy4buLIGRhbmggbeG7pWMgY+G7p2EgbmjDoCDEkeG6p3UgdMawIG7GsOG7m2Mgbmdvw6BpIMSR4bqhdCBoxqFuIDMxIHThu7cgVVNELiBOxINtIDIwMjMsIFRUQ0sgVmnhu4d0IE5hbSDEkeG6oXQgdOG7lW5nIHbhu5FuIGjDs2EgaMahbiAyNDAgdOG7tyBVU0QsIHTGsMahbmcgxJHGsMahbmcgNTYsNCUgR0RQLCBjaOG7iSBz4buRIFZOLUluZGV4IGNo4buRdCDhu58gMS4xMjksOTMgxJFp4buDbSwgduG7m2kga2hv4bqjbmcgMTkwMCBjw7RuZyB0eSBuacOqbSB54bq/dC4gQ+G6pXUgdHLDumMgdGjhu4sgdHLGsOG7nW5nIHRp4bq/cCB04bulYyDEkcaw4bujYyBob8OgbiB0aGnhu4duLCB24bubaSB2aeG7h2Mgw6FwIGThu6VuZyBjw7RuZyBuZ2jhu4cgc+G7kSB2w6BvIGjhu4cgdGjhu5FuZyBnaWFvIGThu4tjaCwgdMSDbmcgY8aw4budbmcgaGnhu4d1IHN14bqldCB2w6AgYW4gdG/DoG4sIGPDuW5nIHbhu5tpIGPDoWMgcXV5IMSR4buLbmggY8O0bmcgYuG7kSB0aMO0bmcgdGluIGNo4bq3dCBjaOG6vSBnacO6cCBj4bqjaSB0aGnhu4duIHTDrW5oIG1pbmggYuG6oWNoIHbDoCB0xINuZyBuaeG7gW0gdGluIGNobyBuaMOgIMSR4bqndSB0xrAuIFPhu7EgeHXhuqV0IGhp4buHbiBj4bunYSBjw6FjIHPhuqNuIHBo4bqpbSBt4bubaSBuaMawIGNo4bupbmcga2hvw6FuIHBow6FpIHNpbmgsIEVURiB2w6AgdHLDoWkgcGhp4bq/dSBjxaluZyDEkcOjIGdpw7pwIFRUQ0sgVmnhu4d0IE5hbSB0cuG7nyB0aMOgbmgga8OqbmggaHV5IMSR4buZbmcgduG7kW4gdHJ1bmcgdsOgIGTDoGkgaOG6oW4gcXVhbiB0cuG7jW5nIGNobyBjw6FjIGRvYW5oIG5naGnhu4dwIHbDoCBu4buBbiBraW5oIHThur8uDQoNCiMjIyAyLjEuNCBU4buVbmcgcXVhbiB24buBIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYyANCg0KVGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIEjDoG4gUXXhu5FjLCB24bubaSB0w6puIGfhu41pIGNow61uaCB0aOG7qWMgbMOgIFPhu58gR2lhbyBk4buLY2ggQ2jhu6luZyBraG/DoW4gSMOgbiBRdeG7kWMgKEtSWCksIGzDoCBt4buZdCB0cm9uZyBuaOG7r25nIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBs4bubbiB2w6AgcGjDoXQgdHJp4buDbiBt4bqhbmggbeG6vSBuaOG6pXQg4bufIGNow6J1IMOBLiBLUlggxJHGsOG7o2MgdGjDoG5oIGzhuq1wIHbDoG8gbsSDbSAxOTU2LCB2w6AgdOG7qyDEkcOzIMSRw6MgY2jhu6luZyBraeG6v24gc+G7sSB0xINuZyB0csaw4bufbmcg4bqlbiB0xrDhu6NuZywgdHLhu58gdGjDoG5oIHRydW5nIHTDom0gdMOgaSBjaMOtbmggcXVhbiB0cuG7jW5nIGtow7RuZyBjaOG7iSB0cm9uZyBraHUgduG7sWMgbcOgIGPDsm4gdHLDqm4gdG/DoG4gY+G6p3UuDQoNClRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYyDEkcaw4bujYyDEkeG6t2MgdHLGsG5nIGLhu59pIHPhu7EgxJFhIGThuqFuZyBow7NhIHbhu4Egc+G6o24gcGjhuqltIHbDoCBk4buLY2ggduG7pSB0w6BpIGNow61uaC4gS2jDtG5nIGNo4buJIGdp4bubaSBo4bqhbiB0cm9uZyB2aeG7h2MgZ2lhbyBk4buLY2ggY+G7lSBwaGnhur91LCBLUlggY8OybiBjdW5nIGPhuqVwIGPDoWMgc+G6o24gcGjhuqltIHBow6FpIHNpbmggbmjGsCBo4bujcCDEkeG7k25nIHTGsMahbmcgbGFpLCBxdXnhu4FuIGNo4buNbiB2w6AgY8OhYyBxdeG7uSBnaWFvIGThu4tjaCBob8OhbiDEkeG7lWkgKEVURikuIFPhu7EgcGhvbmcgcGjDuiBuw6B5IHThuqFvIMSRaeG7gXUga2nhu4duIHRodeG6rW4gbOG7o2kgY2hvIGPDoWMgbmjDoCDEkeG6p3UgdMawIHbhu5tpIG5oaeG7gXUgY2hp4bq/biBsxrDhu6NjIHbDoCBt4bulYyB0acOqdSBraMOhYyBuaGF1Lg0KDQpW4buBIHF1eSBtw7QsIEtSWCDEkcOjIGPDsyBuaOG7r25nIGLGsOG7m2MgdGnhur9uIGzhu5tuIGvhu4MgdOG7qyBraGkgdGjDoG5oIGzhuq1wLiBWw6BvIGN14buRaSBuxINtIDIwMjMsIHThu5VuZyBnacOhIHRy4buLIHbhu5FuIGjDs2EgdGjhu4sgdHLGsOG7nW5nIGPhu6dhIEtSWCDEkeG6oXQgaMahbiAxLDYgbmdow6xuIHThu7cgVVNELCB44bq/cCBo4bqhbmcgbMOgIG3hu5l0IHRyb25nIG5o4buvbmcgdGjhu4sgdHLGsOG7nW5nIGzhu5tuIG5o4bqldCB0aOG6vyBnaeG7m2kuIENo4buJIHPhu5EgS09TUEksIGNo4buJIHPhu5EgY2jDrW5oIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYywgxJHDoyBsacOqbiB04bulYyBwaMOhIHbhu6EgY8OhYyBr4bu3IGzhu6VjLCBwaOG6o24gw6FuaCBz4buxIHTEg25nIHRyxrDhu59uZyBt4bqhbmggbeG6vSBj4bunYSBu4buBbiBraW5oIHThur8gSMOgbiBRdeG7kWMuIFRyb25nIHRo4bqtcCBr4bu3IHF1YSwgS09TUEkgxJHDoyB0xINuZyB0csaw4bufbmcg4bqlbiB0xrDhu6NuZywgxJHhurdjIGJp4buHdCBsw6Agbmjhu50gdsOgbyBz4buxIHBow6F0IHRyaeG7g24gY+G7p2EgY8OhYyBjw7RuZyB0eSBjw7RuZyBuZ2jhu4cgaMOgbmcgxJHhuqd1IG5oxrAgU2Ftc3VuZywgU0sgSHluaXggdsOgIExHLg0KDQpT4buxIHBow6F0IHRyaeG7g24gY+G7p2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIEjDoG4gUXXhu5FjIGPFqW5nIMSRxrDhu6NjIGjhu5cgdHLhu6MgYuG7n2kgY2jDrW5oIHPDoWNoIGtpbmggdOG6vyB2w6AgdMOgaSBjaMOtbmggY+G7p2EgY2jDrW5oIHBo4bunLiBIw6BuIFF14buRYyDEkcOjIHRo4buxYyBoaeG7h24gbmhp4buBdSBj4bqjaSBjw6FjaCBuaOG6sW0gbsOibmcgY2FvIHTDrW5oIG1pbmggYuG6oWNoLCBi4bqjbyB24buHIHF1eeG7gW4gbOG7o2kgY+G7p2EgbmjDoCDEkeG6p3UgdMawIHbDoCB0xINuZyBjxrDhu51uZyB0w61uaCB0aGFuaCBraG/huqNuIGPhu6dhIHRo4buLIHRyxrDhu51uZy4gQ8OhYyBiaeG7h24gcGjDoXAgbsOgeSBiYW8gZ+G7k20gdmnhu4djIGPhuqNpIHRoaeG7h24gcXV5IHRyw6xuaCBuacOqbSB54bq/dCwgdMSDbmcgY8aw4budbmcgZ2nDoW0gc8OhdCB2w6Agw6FwIGThu6VuZyBjw6FjIGPDtG5nIG5naOG7hyB0acOqbiB0aeG6v24gdsOgbyBo4buHIHRo4buRbmcgZ2lhbyBk4buLY2guDQoNCk3hu5l0IMSRaeG7g20gbuG7lWkgYuG6rXQga2jDoWMgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIEjDoG4gUXXhu5FjIGzDoCBz4buxIHRoYW0gZ2lhIHTDrWNoIGPhu7FjIGPhu6dhIGPDoWMgbmjDoCDEkeG6p3UgdMawIG7GsOG7m2Mgbmdvw6BpLiBUw61uaCDEkeG6v24gbsSDbSAyMDIzLCBuaMOgIMSR4bqndSB0xrAgbsaw4bubYyBuZ2/DoGkgc+G7nyBo4buvdSBraG/huqNuZyAzMCUgdOG7lW5nIGdpw6EgdHLhu4sgduG7kW4gaMOzYSB0aOG7iyB0csaw4budbmcuIMSQaeG7gXUgbsOgeSBjaOG7qW5nIHThu48gc+G7sSBo4bqlcCBk4bqrbiB2w6AgdGluIHTGsOG7n25nIGPhu6dhIGPDoWMgbmjDoCDEkeG6p3UgdMawIHF14buRYyB04bq/IHbDoG8gdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIEjDoG4gUXXhu5FjLg0KDQpUdXkgbmhpw6puLCB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gSMOgbiBRdeG7kWMgY8Wpbmcga2jDtG5nIHRyw6FuaCBraOG7j2kgbmjhu69uZyB0aMOhY2ggdGjhu6ljLiBCaeG6v24gxJHhu5luZyBraW5oIHThur8gdG/DoG4gY+G6p3UsIGPEg25nIHRo4bqzbmcgxJHhu4thIGNow61uaCB0cuG7iyB2w6AgY8OhYyB54bq/dSB04buRIHLhu6dpIHJvIG7hu5lpIHThuqFpIGx1w7RuIOG6o25oIGjGsOG7n25nIMSR4bq/biBz4buxIOG7lW4gxJHhu4tuaCBj4bunYSB0aOG7iyB0csaw4budbmcuIMSQ4bq3YyBiaeG7h3QsIGto4bunbmcgaG/huqNuZyB0w6BpIGNow61uaCB0b8OgbiBj4bqndSBuxINtIDIwMDggdsOgIMSR4bqhaSBk4buLY2ggQ09WSUQtMTkgxJHDoyBjw7Mgbmjhu69uZyB0w6FjIMSR4buZbmcgdGnDqnUgY+G7sWMgxJHDoW5nIGvhu4MsIG5oxrBuZyB0aOG7iyB0csaw4budbmcgxJHDoyBjaG8gdGjhuqV5IGto4bqjIG7Eg25nIHBo4bulYyBo4buTaSBt4bqhbmggbeG6vSBuaOG7nSB2w6BvIHPhu7EgbGluaCBob+G6oXQgdsOgIGto4bqjIG7Eg25nIHRow61jaCDhu6luZyBj4bunYSBjw6FjIGRvYW5oIG5naGnhu4dwIHbDoCBuaMOgIMSR4bqndSB0xrAuDQoNClTDs20gbOG6oWksIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYyDEkcOjIHBow6F0IHRyaeG7g24gdsaw4bujdCBi4bqtYyB0cm9uZyBoxqFuIG7hu61hIHRo4bq/IGvhu7cgcXVhLCB0cuG7nyB0aMOgbmggbeG7mXQgdHJvbmcgbmjhu69uZyB0aOG7iyB0csaw4budbmcgcXVhbiB0cuG7jW5nIG5o4bqldCB0csOqbiB0aOG6vyBnaeG7m2kuIFbhu5tpIHPhu7EgaOG7lyB0cuG7oyB04burIGNow61uaCBwaOG7pywgc+G7sSB0aGFtIGdpYSB0w61jaCBj4buxYyBj4bunYSBuaMOgIMSR4bqndSB0xrAgbsaw4bubYyBuZ2/DoGkgdsOgIGto4bqjIG7Eg25nIMSRYSBk4bqhbmcgaMOzYSBz4bqjbiBwaOG6qW0sIEtSWCB0aeG6v3AgdOG7pWMgxJHDs25nIHZhaSB0csOyIHRoZW4gY2jhu5F0IHRyb25nIHZp4buHYyBodXkgxJHhu5luZyB24buRbiB2w6AgdGjDumMgxJHhuql5IHPhu7EgcGjDoXQgdHJp4buDbiBj4bunYSBu4buBbiBraW5oIHThur8gSMOgbiBRdeG7kWMuDQoNCg0KIyMjIDIuMS41IE3hu5l0IHPhu5Ega2jDoWkgbmnhu4dtIGxpw6puIHF1YW4NCg0KKipT4buxIGJp4bq/biDEkeG7mW5nKiogKFZvbGF0aWxpdHkpIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiwgdGhlbyBHcmVnb3Jpb3UgKDIwMDkpLCDEkeG7gSBj4bqtcCDEkeG6v24gcGjhuqFtIHZpIGJp4bq/biDEkeG7mW5nIGdpw6EgdHJvbmcgbeG7mXQga2hv4bqjbmcgdGjhu51pIGdpYW4gbmjhuqV0IMSR4buLbmguIMSQ4buZIGJp4bq/biDEkeG7mW5nIGxpw6puIHF1YW4gxJHhur9uIG3hu6ljIMSR4buZIGtow7RuZyBjaOG6r2MgY2jhuq9uIHbDoCBy4bunaSBybyBj4bunYSB0aOG7iyB0csaw4budbmcsIMSRxrDhu6NjIHhlbSBuaMawIHRoxrDhu5tjIMSRbyB0aOG7kW5nIGvDqiB24buBIHPhu7EgcGjDom4gdMOhbiBs4bujaSBuaHXhuq1uIGPhu6dhIGLhuqV0IGvhu7MgdMOgaSBz4bqjbiBuw6BvLiBW4buBIG3hurd0IHRo4buRbmcga8OqLCBiaeG6v24gxJHhu5luZyDEkcaw4bujYyB4w6FjIMSR4buLbmggbMOgIMSR4buZIGzhu4djaCBjaHXhuqluIGPhu6dhIGzhu6NpIG5odeG6rW4gdGhlbyB04bqnbiBzdeG6pXQgbmfDoHksIHRow6FuZywgaG/hurdjIG7Eg20gY+G7p2EgbeG7mXQgY+G7lSBwaGnhur91IHRyb25nIG3hu5l0IGtob+G6o25nIHRo4budaSBnaWFuIGPhu6UgdGjhu4MuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHBo4bqhbSB2aSBtw6AgZ2nDoSBj4bunYSBj4buVIHBoaeG6v3UgY8OzIHRo4buDIHTEg25nIGhv4bq3YyBnaeG6o20uIE7hur91IGdpw6EgY+G7p2EgbeG7mXQgY+G7lSBwaGnhur91IGJp4bq/biDEkeG7mW5nIG5oYW5oIGNow7NuZyB0cm9uZyBt4buZdCB0aOG7nWkgZ2lhbiBuZ+G6r24sIGNo4bqhbSBt4bupYyBjYW8gdsOgIHRo4bqlcCBt4bubaSwgbsOzIMSRxrDhu6NjIHhlbSBsw6AgY8OzIMSR4buZIGJp4bq/biDEkeG7mW5nIGNhby4NCg0KKipT4buxIHBo4bulIHRodeG7mWMqKiAoRGVwZW5kZW5jZSkgxJHGsOG7o2MgU2FudG9zICgxOTcwKSDEkeG7i25oIG5naMSpYSBsw6AgdMOsbmggaHXhu5FuZyB0cm9uZyDEkcOzIG7hu4FuIGtpbmggdOG6vyBj4bunYSBt4buZdCBob+G6t2Mgbmhp4buBdSBxdeG7kWMgZ2lhIGNo4buLdSDhuqNuaCBoxrDhu59uZyB04burIGPDoWMgbsaw4bubYyBwaMOhdCB0cmnhu4NuIGhv4bq3YyDEkWFuZyBwaMOhdCB0cmnhu4NuLCBiYW8gZ+G7k20gY+G6oyBjw6FjIGNoaeG7gXUgaMaw4bubbmcgdMOtY2ggY+G7sWMgdsOgIHRpw6p1IGPhu7FjLiBLaMOhaSBuaeG7h20gbsOgeSBjaG8gcGjDqXAgY2jDum5nIHRhIG5ow6xuIG5o4bqtbiBu4buBbiBraW5oIHThur8gbuG7mWkgxJHhu4thIG5oxrAgbeG7mXQgcGjhuqduIGPhu6dhIG7hu4FuIGtpbmggdOG6vyB0b8OgbiBj4bqndS4gVHJvbmcgY8OhYyBuZ2hpw6puIGPhu6l1IGhp4buHbiDEkeG6oWksIHRodeG6rXQgbmfhu68gc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyB0w6BpIGNow61uaCB0aOG7q2Ega+G6vyB2w6AgbeG7nyBy4buZbmcga2jDoWkgbmnhu4dtIGPhu6dhIFNhbnRvcyAoMTk3MCkuDQoNCioqU+G7sSBwaOG7pSB0aHXhu5ljIGzhuqtuIG5oYXUqKiAoSW50ZXJkZXBlbmRlbmNlL0NvLW1vdmVtZW50KSBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgdMOgaSBjaMOtbmggY8OzIG5naMSpYSBsw6Agc+G7sSBiaeG6v24gxJHhu5luZyBj4bunYSBt4buZdCB0aOG7iyB0csaw4budbmcgKGhv4bq3YyBt4buZdCBuaMOzbSB0aOG7iyB0csaw4budbmcpIOG7nyBt4buZdCBt4bupYyDEkeG7mSBuw6BvIMSRw7Mgc+G6vSDhuqNuaCBoxrDhu59uZyDEkeG6v24gc+G7sSBiaeG6v24gxJHhu5luZyBj4bunYSBt4buZdCB0aOG7iyB0csaw4budbmcgKGhv4bq3YyBuaMOzbSB0aOG7iyB0csaw4budbmcpIGtow6FjIOG7nyBt4bupYyDEkeG7mSB0xrDGoW5nIOG7qW5nLg0KDQpCYXVyICgyMDEzKSDEkcOjIHPhu60gZOG7pW5nIGPDoWMgdGh14bqtdCBuZ+G7ryBtw7QgdOG6oyBz4buxIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGzDoCAqKm3hu6ljIMSR4buZIHBo4bulIHRodeG7mWMqKiAoZGVncmVlIG9mIGRlcGVuZGVuY2UpIHbDoCBj4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIChzdHJ1Y3R1cmUgb2YgZGVwZW5kZW5jZSkuIE3hu6ljIMSR4buZIHBo4bulIHRodeG7mWMgZ2nhu69hIGhhaSB0aOG7iyB0csaw4budbmcgdGjGsOG7nW5nIMSRxrDhu6NjIMSRbyBi4bqxbmcgaOG7hyBz4buRIHTGsMahbmcgcXVhbiBnaeG7r2EgY8OhYyBjaOG7iSBz4buRIMSR4bqhaSBkaeG7h24gY2hvIGhhaSB0aOG7iyB0csaw4budbmcgxJHDsy4gQ8OybiBj4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIGPhu6dhIGhhaSB0aOG7iyB0csaw4budbmcgxJHGsOG7o2MgbcO0IHThuqMgYuG7n2kgaMOgbSBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgxJHhu5NuZyB0aOG7nWkgY+G7p2EgaGFpIGNodeG7l2kgbOG7o2kgbmh14bqtbiBj4bunYSBjw6FjIGNo4buJIHPhu5EgxJHhuqFpIGRp4buHbiBjaG8gaGFpIHRo4buLIHRyxrDhu51uZyDEkcOzLg0KDQojIyMgMi4xLjYgQ+G6pXUgdHLDumMgcGjhu6UgdGh14buZYw0KDQpD4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIChzdHJ1Y3R1cmUgb2YgZGVwZW5kZW5jZSkgbMOgIG3hu5l0IGtow6FpIG5p4buHbSBxdWFuIHRy4buNbmcgdHJvbmcgbMSpbmggduG7sWMgdMOgaSBjaMOtbmggdsOgIGtpbmggdOG6vywgZMO5bmcgxJHhu4MgbcO0IHThuqMgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBoYWkgaGF5IG5oaeG7gXUgYmnhur9uIHPhu5Ega2luaCB04bq/LCB0w6BpIGNow61uaCBob+G6t2MgdGjhu4sgdHLGsOG7nW5nIHRyb25nIG3hu5l0IGtob+G6o25nIHRo4budaSBnaWFuLiBD4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIGtow7RuZyBjaOG7iSDEkW8gbMaw4budbmcgc+G7sSB0xrDGoW5nIHF1YW4gbcOgIGPDsm4gY3VuZyBj4bqlcCB0aMO0bmcgdGluIHbhu4EgY8OhY2ggdGjhu6ljIHbDoCBt4bupYyDEkeG7mSBtw6AgY8OhYyBiaeG6v24gc+G7kSBuw6B5IHTGsMahbmcgdMOhYyB24bubaSBuaGF1IHRyb25nIGPDoWMgdMOsbmggaHXhu5FuZyBraMOhYyBuaGF1Lg0KDQpN4bupYyDEkeG7mSBwaOG7pSB0aHXhu5ljIGzDoCBt4bupYyDEkeG7mSBtw6AgY8OhYyBiaeG6v24gc+G7kSB0xrDGoW5nIHTDoWMgaG/hurdjIHBo4bulIHRodeG7mWMgbOG6q24gbmhhdS4gVGjDtG5nIHRoxrDhu51uZywgbeG7qWMgxJHhu5kgcGjhu6UgdGh14buZYyDEkcaw4bujYyDEkW8gbMaw4budbmcgYuG6sW5nIGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4sIGNo4bqzbmcgaOG6oW4gbmjGsCBo4buHIHPhu5EgdMawxqFuZyBxdWFuIFBlYXJzb24uIEjhu4cgc+G7kSBuw6B5IGRhbyDEkeG7mW5nIHThu6sgLTEgxJHhur9uIDEsIHRyb25nIMSRw7MgMSDEkeG6oWkgZGnhu4duIGNobyBz4buxIHTGsMahbmcgcXVhbiBob8OgbiBo4bqjbyBjw7luZyBjaGnhu4F1LCAtMSDEkeG6oWkgZGnhu4duIGNobyBz4buxIHTGsMahbmcgcXVhbiBob8OgbiBo4bqjbyBuZ8aw4bujYyBjaGnhu4F1LCB2w6AgMCDEkeG6oWkgZGnhu4duIGNobyBraMO0bmcgY8OzIHPhu7EgdMawxqFuZyBxdWFuLiBUdXkgbmhpw6puLCBo4buHIHPhu5EgdMawxqFuZyBxdWFuIFBlYXJzb24gY2jhu4kgxJFvIGzGsOG7nW5nIHPhu7EgcGjhu6UgdGh14buZYyB0dXnhur9uIHTDrW5oIHbDoCBraMO0bmcgcGjhuqNuIMOhbmggxJHhuqd5IMSR4bunIG3hu5FpIHF1YW4gaOG7hyBwaGkgdHV54bq/bi4NCg0KSMOsbmggZOG6oW5nIHBo4bulIHRodeG7mWMgbcO0IHThuqMgY8OhY2ggbcOgIHPhu7EgcGjhu6UgdGh14buZYyB0aGF5IMSR4buVaSB0aGVvIGPDoWMgxJFp4buBdSBraeG7h24gdGjhu4sgdHLGsOG7nW5nIGtow6FjIG5oYXUsIMSR4bq3YyBiaeG7h3QgdHJvbmcgY8OhYyB0w6xuaCBodeG7kW5nIGPhu7FjIMSRb2FuIG5oxrAga2jhu6duZyBob+G6o25nIHTDoGkgY2jDrW5oLiBWw60gZOG7pSwgY8OhYyBtw7QgaMOsbmggQ29wdWxhIHRoxrDhu51uZyDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBtw7QgaMOsbmggaMOzYSBz4buxIHBo4bulIHRodeG7mWMgcGhpIHR1eeG6v24gdsOgIGLhuq90IGPDoWMgxJHhurdjIHTDrW5oIG5oxrAgc+G7sSBwaOG7pSB0aHXhu5ljIOG7nyDEkXXDtGkgKHRhaWwgZGVwZW5kZW5jZSksIGtoaSBjw6FjIGJp4bq/biBz4buRIGPDsyB4dSBoxrDhu5tuZyBjw7luZyB0xINuZyBob+G6t2MgZ2nhuqNtIG3huqFuaCB0cm9uZyBjw6FjIHPhu7Ega2nhu4duIGPhu7FjIMSRb2FuLg0KDQpD4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIGPDsyBuaGnhu4F1IOG7qW5nIGThu6VuZyBxdWFuIHRy4buNbmcgdHJvbmcgbMSpbmggduG7sWMgdMOgaSBjaMOtbmggdsOgIGtpbmggdOG6vy4gTsOzIGdpw7pwIGPDoWMgbmjDoCDEkeG6p3UgdMawIHbDoCBuaMOgIHF14bqjbiBsw70gcuG7p2kgcm8gaGnhu4N1IHLDtSBoxqFuIHbhu4EgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIHTDoGkgc+G6o24gdHJvbmcgZGFuaCBt4bulYyDEkeG6p3UgdMawIGPhu6dhIGjhu40uIMSQaeG7gXUgbsOgeSDEkeG6t2MgYmnhu4d0IGjhu691IMOtY2ggdHJvbmcgdmnhu4djIMSRYSBk4bqhbmcgaMOzYSBkYW5oIG3hu6VjIMSR4bqndSB0xrAgdsOgIHF14bqjbiBsw70gcuG7p2kgcm8sIHbDrCBuw7MgY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHPDonUgaMahbiB24buBIGPDoWNoIGPDoWMgdMOgaSBz4bqjbiBjw7MgdGjhu4MgcGjhuqNuIOG7qW5nIHRyb25nIGPDoWMgxJFp4buBdSBraeG7h24gdGjhu4sgdHLGsOG7nW5nIGtow6FjIG5oYXUuVHJvbmcgbMSpbmggduG7sWMgcXXhuqNuIGzDvSBy4bunaSBybywgY+G6pXUgdHLDumMgcGjhu6UgdGh14buZYyBnacO6cCB4w6FjIMSR4buLbmggdsOgIG3DtCBow6xuaCBow7NhIHLhu6dpIHJvIGjhu4cgdGjhu5FuZywga2hpIGPDoWMgdMOgaSBz4bqjbiBob+G6t2MgdGjhu4sgdHLGsOG7nW5nIGPDsyB0aOG7gyBjw7luZyBnaeG6o20gZ2nDoSBt4bqhbmggdHJvbmcgY8OhYyBz4buxIGtp4buHbiBraOG7p25nIGhv4bqjbmcuIMSQaeG7gXUgbsOgeSBnacO6cCBjw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGNodeG6qW4gYuG7iyB04buRdCBoxqFuIGNobyBjw6FjIHTDrG5oIGh14buRbmcgYuG6pXQgbmfhu50gdsOgIGdp4bqjbSB0aGnhu4N1IHRoaeG7h3QgaOG6oWkgdGnhu4FtIHTDoG5nLg0KDQpDw6FjIG3DtCBow6xuaCBDb3B1bGEgbMOgIGPDtG5nIGPhu6UgcGjhu5UgYmnhur9uIMSR4buDIHBow6JuIHTDrWNoIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMgcGhpIHR1eeG6v24uIENow7puZyBjaG8gcGjDqXAgY8OhYyBuaMOgIHBow6JuIHTDrWNoIHTDoGkgY2jDrW5oIG3DtCBow6xuaCBow7NhIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24gc+G7kSB0aGVvIG5oaeG7gXUgY8OhY2gga2jDoWMgbmhhdSwga2jDtG5nIGNo4buJIGdp4bubaSBo4bqhbiDhu58gc+G7sSBwaOG7pSB0aHXhu5ljIHR1eeG6v24gdMOtbmguIENvcHVsYSBjdW5nIGPhuqVwIGPDoWkgbmjDrG4gY2hpIHRp4bq/dCBoxqFuIHbhu4Egc+G7sSBwaOG7pSB0aHXhu5ljLCDEkeG6t2MgYmnhu4d0IGzDoCB0cm9uZyBjw6FjIHTDrG5oIGh14buRbmcgY+G7sWMgxJFvYW4uIE5nb8OgaSByYSwgY8OhYyBwaMawxqFuZyBwaMOhcCB0aOG7kW5nIGvDqiBraMOhYyBuaMawIMSR4buZIGzhu4djaCBjaHXhuqluLCBwaMawxqFuZyBzYWkgdsOgIGPDoWMgbcO0IGjDrG5oIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCDEkeG7k25nIHRo4budaSBjxaluZyDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyDEkW8gbMaw4budbmcgdsOgIHBow6JuIHTDrWNoIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMuIE5o4buvbmcgY8O0bmcgY+G7pSBuw6B5IGdpw7pwIGPDoWMgbmjDoCBuZ2hpw6puIGPhu6l1IHbDoCBjaHV5w6puIGdpYSB0w6BpIGNow61uaCBoaeG7g3UgcsO1IGjGoW4gduG7gSBt4bupYyDEkeG7mSB2w6AgaMOsbmggZOG6oW5nIGPhu6dhIHPhu7EgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgdsOgIHTDoGkgc+G6o24ga2jDoWMgbmhhdS4NCg0KDQojIyAyLjIgTMO9IHRodXnhur90IHbhu4EgcGjGsMahbmcgcGjDoXAgQ29wdWxhIGPDsyDEkWnhu4F1IGtp4buHbg0KDQojIyMgMi4yLjEgVOG7lW5nIHF1YW4gduG7gSBwaMawxqFuZyBwaMOhcCBDb3B1bGENCg0KVGjDtG5nIHF1YSBuaGnhu4F1IG5naGnDqm4gY+G7qXUsIGPDsyBi4buRbiBwaMawxqFuZyBwaMOhcCB0aOG7kW5nIGvDqiBjaMOtbmggxJHhu4MgcGjDom4gdMOtY2ggbeG7kWkgdMawxqFuZyBxdWFuIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiAoVFRDSyk6IHTGsMahbmcgcXVhbiB0dXnhur9uIHTDrW5oLCB0xrDGoW5nIHF1YW4gY8OzIMSRaeG7gXUga2nhu4duLCBwaMawxqFuZyBwaMOhcCBnacOhIHRy4buLIGPhu7FjIHRy4buLIChFVlQpLCB2w6AgcGjGsMahbmcgcGjDoXAgY29wdWxhLg0KDQrEkOG6p3UgdGnDqm4sIGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gdHV54bq/biB0w61uaCBsw6AgbeG7mXQgdGjGsOG7m2MgxJFvIHBo4buVIGJp4bq/biBkbyBnaeG6oyDEkeG7i25oIHbhu4EgdMOtbmggY2h14bqpbiB04bqvYyB2w6Agc+G7sSDEkcahbiBnaeG6o24gdHJvbmcgdMOtbmggdG/DoW4uIFR1eSBuaGnDqm4sIGjhu4cgc+G7kSBuw6B5IGThu7FhIHRyw6puIGdp4bqjIMSR4buLbmggcuG6sW5nIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4gY8OzIHBow6JuIHBo4buRaSBjaHXhuqluLCB0cm9uZyBraGkgdGjhu7FjIHThur8sIGPDoWMgY2h14buXaSBs4bujaSBzdeG6pXQgY2jhu6luZyBraG/DoW4gdGjGsOG7nW5nIGPDsyBwaMOibiBwaOG7kWkgduG7m2kgxJF1w7RpIGTDoHkgdsOgIGLhuqV0IMSR4buRaSB44bupbmcuIFbDrCB24bqteSwgdmnhu4djIHPhu60gZOG7pW5nIGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gdHV54bq/biB0w61uaCDEkeG7gyBnaeG6o2kgdGjDrWNoIG3hu5FpIHF1YW4gaOG7hyBiaeG6v24gxJHhu5luZyBnaeG7r2EgY8OhYyBUVENLIGPDsyB0aOG7gyBk4bqrbiDEkeG6v24gc2FpIGzhu4djaC4NCg0KVGjhu6kgaGFpLCBwaMawxqFuZyBwaMOhcCB0xrDGoW5nIHF1YW4gY8OzIMSRaeG7gXUga2nhu4duLCDEkeG6t2MgYmnhu4d0IGzDoCBjw6FjIG3DtCBow6xuaCBHQVJDSCDEkWEgYmnhur9uLCDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyB4ZW0geMOpdCBt4buRaSB0xrDGoW5nIHF1YW4gY8OzIHTDrW5oIMSR4bq/biBz4buxIGJp4bq/biDEkeG7mW5nIGPhu6dhIGdpw6EgY2jhu6luZyBraG/DoW4gdGhlbyB0aOG7nWkgZ2lhbi4gxJBp4buBdSBuw6B5IGtow6FjIHbhu5tpIHTGsMahbmcgcXVhbiB0dXnhur9uIHTDrW5oIFBlYXJzb24sIHbhu5FuIGtow7RuZyB0aOG7gyBtw7QgdOG6oyBz4buxIGJp4bq/biDEkeG7mW5nIG7DoHkuIFR1eSBuaGnDqm4sIG3hu5l0IGjhuqFuIGNo4bq/IGPhu6dhIG3DtCBow6xuaCBHQVJDSCDEkWEgYmnhur9uIGzDoCBwaOG6p24gbOG7m24gY8OhYyBuZ2hpw6puIGPhu6l1IHRyxrDhu5tjIMSRw6J5IGdp4bqjIMSR4buLbmggcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IGPhu6dhIGPDoWMgY2h14buXaSBs4bujaSBzdeG6pXQgbMOgIHBow6JuIHBo4buRaSBjaHXhuqluIGhv4bq3YyBwaMOibiBwaOG7kWkgU3R1ZGVudC10LCBkbyDEkcOzIGtow7RuZyB0aOG7gyBwaOG6o24gw6FuaCBz4buxIGRhbyDEkeG7mW5nIGLhuqV0IMSR4buRaSB44bupbmcgdsOgIMSR4bq3YyB0w61uaCDEkXXDtGkgZMOgeSBj4bunYSBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQuDQoNClRo4bupIGJhLCBwaMawxqFuZyBwaMOhcCBFVlQgY8OzIMawdSDEkWnhu4NtIHRyb25nIHZp4buHYyBtw7QgaMOsbmggaMOzYSBjw6FjIMSR4bq3YyDEkWnhu4NtIMSRdcO0aSBkw6B5IGPhu6dhIGjDoG0gcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IGPhu6dhIGPDoWMgY2h14buXaSBs4bujaSBzdeG6pXQgdMOgaSBjaMOtbmgsIGRvIMSRw7MgY8OzIHRo4buDIHhlbSB4w6l0IHPhu7EgcGjhu6UgdGh14buZYyBi4bqldCDEkeG7kWkgeOG7qW5nIGtoaSB0aOG7iyB0csaw4budbmcgY8O5bmcgc+G7pXAgxJHhu5UgaG/hurdjIGLDuW5nIG7hu5UuIFR1eSBuaGnDqm4sIHbDrCBFVlQgY2jhu4kgbcO0IHThuqMgcGjhuqduIMSRdcO0aSBj4bunYSBwaMOibiBwaOG7kWksIG7Dqm4ga2jDtG5nIHRo4buDIG3DtCB04bqjIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIHRyb25nIMSRaeG7gXUga2nhu4duIHRo4buLIHRyxrDhu51uZyBiw6xuaCB0aMaw4budbmcgdsOgIGtow7RuZyBjaOG7iSByw7UgY+G6pXUgdHLDumMgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyB0w6BpIHPhuqNuIHTDoGkgY2jDrW5oLg0KDQpDdeG7kWkgY8O5bmcsIHBoxrDGoW5nIHBow6FwIGNvcHVsYSwgxJHhurdjIGJp4buHdCBsw6AgY29wdWxhIGPDsyDEkWnhu4F1IGtp4buHbiwgbuG7lWkgYuG6rXQgbmjhu50ga2jhuqMgbsSDbmcgbcO0IHThuqMgY2jDrW5oIHjDoWMgbeG7kWkgcXVhbiBo4buHIHbDoCBj4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIHTDoGkgc+G6o24gdMOgaSBjaMOtbmguIEjDoG0gY29wdWxhIGNobyBwaMOpcCBtw7QgdOG6oyBj4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGNodeG7l2kgbOG7o2kgc3XhuqV0IG3hu5l0IGPDoWNoIHJpw6puZyBiaeG7h3QgbcOgIGtow7RuZyBj4bqnbiBnaeG6oyDEkeG7i25oIHLhurFuZyBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgY+G7p2EgY8OhYyBjaHXhu5dpIGzhu6NpIHN14bqldCBsw6AgcGjDom4gcGjhu5FpIGNodeG6qW4gaG/hurdjIGPDsyBjw7luZyBk4bqhbmcgcGjDom4gcGjhu5FpLiBIw6BtIGNvcHVsYSBjw7Mga2jhuqMgbsSDbmcgbcO0IHThuqMgc+G7sSBwaOG7pSB0aHXhu5ljIHR1eeG6v24gdMOtbmgsIHBoaSB0dXnhur9uLCDEkeG7kWkgeOG7qW5nLCBi4bqldCDEkeG7kWkgeOG7qW5nLCB2w6AgxJF1w7RpLiBIxqFuIG7hu69hLCBi4bqxbmcgY8OhY2ggY2jhu41uIGjDoG0gY29wdWxhIHBow7kgaOG7o3AgbmjhuqV0IHbhu5tpIGThu68gbGnhu4d1IMSR4bqndSB2w6BvLCBnacOhIHRy4buLIHLhu6dpIHJvIGPhu6dhIGRhbmggbeG7pWMgaGFpIHRo4buLIHRyxrDhu51uZyBz4bq9IMSRxrDhu6NjIHjDoWMgxJHhu4tuaCBjaMOtbmggeMOhYyBoxqFuIHNvIHbhu5tpIHBoxrDGoW5nIHBow6FwIHTDrW5oIFZhUiB0cnV54buBbiB0aOG7kW5nLg0KDQojIyMgMi4yLjIgQ8OhYyBo4buNIGjDoG0gY8ahIGLhuqNuIGPhu6dhIENvcHVsYQ0KDQotICoqQ29wdWxhIGjhu40gRWxpcCoqDQoNClRyb25nIGtpbmggdOG6vyBo4buNYywgY29wdWxhIGzDoCBt4buZdCBjw7RuZyBj4bulIHF1YW4gdHLhu41uZyBkw7luZyDEkeG7gyBtw7QgaMOsbmggaMOzYSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4gY8OzIHBow6JuIHBo4buRaSBraMOhYyBuaGF1LiBI4buNIGVsaXAsIGJhbyBn4buTbSBjw6FjIGNvcHVsYSBuaMawIGNvcHVsYSBHYXVzc2lhbiB2w6AgY29wdWxhIHQtU3R1ZGVudCwgxJHDs25nIG3hu5l0IHZhaSB0csOyIHF1YW4gdHLhu41uZyB0cm9uZyB2aeG7h2MgcGjDom4gdMOtY2ggc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGJp4bq/bi4gQ29wdWxhIEdhdXNzaWFuLCBk4buxYSB0csOqbiBwaMOibiBwaOG7kWkgY2h14bqpbiDEkWEgYmnhur9uLCB0aMaw4budbmcgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdsOsIHTDrW5oIHRvw6FuIGThu4UgZMOgbmcgdsOgIGto4bqjIG7Eg25nIG3DtCBow6xuaCBow7NhIG3hu5FpIHF1YW4gaOG7hyB0dXnhur9uIHTDrW5oLiBOZ8aw4bujYyBs4bqhaSwgY29wdWxhIHQtU3R1ZGVudCwgZOG7sWEgdHLDqm4gcGjDom4gcGjhu5FpIHQtU3R1ZGVudCDEkWEgYmnhur9uLCBjaG8gcGjDqXAgbcO0IGjDrG5oIGjDs2EgbeG7kWkgcXVhbiBo4buHIG3huqFuaCBt4bq9IGjGoW4gdsOgIHjhu60gbMO9IGPDoWMgaGnhu4duIHTGsOG7o25nIG5nb+G6oWkgbGFpIHThu5F0IGjGoW4uIFRyb25nIHRo4buxYyB0aeG7hW4ga2luaCB04bq/LCBjb3B1bGEgZ2nDunAgxJHDoW5oIGdpw6EgcuG7p2kgcm8gdMOgaSBjaMOtbmggYuG6sW5nIGPDoWNoIG3DtCBow6xuaCBow7NhIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyB0w6BpIHPhuqNuLCBo4buXIHRy4bujIMSRw6FuaCBnacOhIGRhbmggbeG7pWMgxJHhuqd1IHTGsCDEkeG7gyB04buRaSDGsHUgaMOzYSBs4bujaSBuaHXhuq1uIHbDoCBnaeG6o20gdGhp4buDdSBy4bunaSBybywgY8WpbmcgbmjGsCBk4buxIMSRb8OhbiB2w6AgcGjDom4gdMOtY2ggY8OhYyBoaeG7h24gdMaw4bujbmcga2luaCB04bq/LiBN4bq3YyBkw7kgY29wdWxhIGPDsyB0w61uaCBsaW5oIGhv4bqhdCBjYW8gdsOgIGto4bqjIG7Eg25nIG3DtCBow6xuaCBow7NhIGPDoWMgbeG7kWkgcXVhbiBo4buHIHBoaSB0dXnhur9uIHTDrW5oLCB2aeG7h2MgdMOtbmggdG/DoW4gY8OzIHRo4buDIHRy4bufIG7Dqm4gcGjhu6ljIHThuqFwIHbDoCB5w6p1IGPhuqd1IGThu68gbGnhu4d1IMSR4bunIGzhu5tuIMSR4buDIMaw4bubYyBsxrDhu6NuZyBjaMOtbmggeMOhYyBjw6FjIHRoYW0gc+G7kS4gSGFpIGNvcHVsYSBxdWFuIHRy4buNbmduaOG6pXQgY+G7p2EgaOG7jSBuw6B5IGzDoCBjb3B1bGEgY2h14bqpbiAoR2F1c3MpIHbDoCBjb3B1bGEgU3R1ZGVudC10LiBUaGVvIMSR4buTIHRo4buLIGjDoG0gbeG6rXQgxJHhu5l4w6FjIHN14bqldCwgaGFpIGNvcHVsYSBuw6B5IGfhuqduIG5oYXUg4bufIHBo4bqnbiB0cnVuZyB0w6JtIHbDoCB0cuG7nyBuw6puIGfhuqduIG5oYXUgaMahbiDhu58gcGjhuqduIMSRdcO0aSBraGkgYuG6rWMgdOG7sSBkbyBj4bunYSB0LWNvcHVsYSB0xINuZyBsw6puLiBUYSBjw7MgdGjhu4MgxJHDoW5oIGdpw6Egw70gbmdoxKlhIGPhu6dhIENvcHVsYSBo4buNIEVsaXAgdGjDtG5nIHF1YSBjw6FjIGJp4buDdSDEkeG7kyBiw6puIGTGsOG7m2kgZOG7sWEgdHLDqm4gZOG7ryBsaeG7h3UgxJHGsOG7o2MgbcO0IHBo4buPbmcgdOG7qyBow6BtIENvcHVsYSB0xrDGoW5nIOG7qW5nLg0KDQpgYGB7cn0NCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KGNvcHVsYSkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShncmlkRXh0cmEpDQpsaWJyYXJ5KFZDMmNvcHVsYSkNCmxpYnJhcnkoVmluZUNvcHVsYSkNCmxpYnJhcnkoZ3JpZEdyYXBoaWNzKQ0KbGlicmFyeShwbmcpDQpsaWJyYXJ5KENhaXJvKQ0KDQoNCiNU4bqhbyBow6BtIHbhur0gYmnhu4N1IMSR4buTDQpzY2F0dGVyX3Bsb3QgPC0gZnVuY3Rpb24ocmFuZG9tX2RhdGEsIGNsKSB7DQogIGdncGxvdChkYXRhLmZyYW1lKHJhbmRvbV9kYXRhKSwgYWVzKHJhbmRvbV9kYXRhWywxXSwgcmFuZG9tX2RhdGFbLDJdKSkgKw0KICAgIGdlb21fcG9pbnQoYWxwaGEgPSAwLjUsIGNvbCA9IGNsKSArDQogICAgdGhlbWVfbWluaW1hbCgpICsNCiAgICBsYWJzKHggPSAidSIsIHkgPSAidiIpDQp9ICNmb3Igc2NhdHRlcg0KDQpwZXJzcF9wbG90IDwtIGZ1bmN0aW9uKGNvcHVsYV9vYmosIGZpbGVfbmFtZSwgY2wpIHsNCiAgcG5nKGZpbGVfbmFtZSkNCiAgcGVyc3AoY29wdWxhX29iaiwgZENvcHVsYSwgDQogICAgICAgIHhsYWIgPSAndScsIHlsYWIgPSAndicsIGNvbCA9IGNsLCBsdGhldGEgPSAxMjAsICANCiAgICAgICAgdGlja3R5cGUgPSAiZGV0YWlsZWQiLCBjZXguYXhpcyA9IDAuOCkNCiAgZGV2Lm9mZigpDQogIHJhc3Rlckdyb2IocmVhZFBORyhmaWxlX25hbWUpLGludGVycG9sYXRlID0gVFJVRSkNCn0jIGZvciBwZGYNCg0Kc2V0LnNlZWQoMTIzKQ0KI03DtCBwaOG7j25nIGNvcHVsYSBnYXVzcyB24bubaSBwPTAuOA0KY29wX25vciA8LSBub3JtYWxDb3B1bGEocGFyYW0gPSAwLjgsIGRpbSA9IDIpDQojTcO0IHBo4buPbmcgNzYwMCBxdWFuIHPDoXQgbmfhuqt1IG5oacOqbiBk4buxYSB0csOqbiBjb3B1bGEgY8OzIHPhurVuDQpyYW5kb21fbm9yIDwtIHJDb3B1bGEoY29wdWxhID0gY29wX25vcixuID0gNzYwMCkNCiNNw7QgcGjhu49uZyBjb3B1bGEgduG7m2kgcD0wLjgNCmNvcF9zdGQgPC0gdENvcHVsYShwYXJhbSA9IDAuOCwgZGltID0gMiwgZGYgPSAxKQ0KI03DtCBwaOG7j25nIDc2MDAgcXVhbiBzw6F0IG5n4bqrdSBuaGnDqm4gZOG7sWEgdHLDqm4gY29wdWxhIGPDsyBz4bq1bg0KcmFuZG9tX3N0ZCA8LSByQ29wdWxhKGNvcHVsYSA9IGNvcF9zdGQsbiA9IDc2MDApDQojVuG6vSBiaeG7g3UgxJHhu5MgDQpwbmcoJ25vcnMucG5nJykgI0zGsHUg4bqjbmggYmnhu4N1IMSR4buTDQpzY2F0dGVyX3Bsb3QocmFuZG9tX25vciwgJyM5OUZGQ0MnKQ0KZGV2Lm9mZigpDQpub3JzIDwtIHJhc3Rlckdyb2IocmVhZFBORygnbm9ycy5wbmcnKSwgaW50ZXJwb2xhdGUgPSBUUlVFKSAjQ2h1eeG7g24g4bqjbmggc2FuZyBk4bqhbmcgR3JvYg0KDQpwbmcoJ3N0ZHMucG5nJykNCnNjYXR0ZXJfcGxvdChyYW5kb21fc3RkLCAnI0NDRkYzMycpDQpkZXYub2ZmKCkNCnN0ZHMgPC0gcmFzdGVyR3JvYihyZWFkUE5HKCdzdGRzLnBuZycpLCBpbnRlcnBvbGF0ZSA9IFRSVUUpDQpub3JfcGVyIDwtIHBlcnNwX3Bsb3QoY29wX25vciwgJ25vcnAucG5nJywgJyM5OUZGQ0MnKQ0Kc3RkX3BlciA8LSBwZXJzcF9wbG90KGNvcF9zdGQsICdzdGRwLnBuZycsICcjQ0NGRjMzJykNCg0KbGVnZW5kIDwtIGxlZ2VuZEdyb2IoDQogIGxhYmVscyA9IGMoIkdhdXNzIiwgIlN0dWRlbnQiKSwgcGNoID0gMTUsDQogIGdwID0gZ3Bhcihjb2wgPSBjKCcjOTlGRkNDJywgJyNDQ0ZGMzMnKSwgZmlsbCA9IGMoJyM5OUZGQ0MnLCAnI0NDRkYzMycpKQ0KKQ0KDQpncmlkLmFycmFuZ2Uobm9ycywgbm9yX3Blciwgc3Rkcywgc3RkX3BlciwgbGVnZW5kLCBuY29sID0gMywgDQogICAgICAgICAgICAgbGF5b3V0X21hdHJpeCA9IHJiaW5kKGMoMSwgMiwgNSksIGMoMywgNCwgNSkpLA0KICAgICAgICAgICAgIHdpZHRocyA9IGMoMiwgMiwgMSksIA0KICAgICAgICAgICAgIHRvcCA9IHRleHRHcm9iKCJIw6xuaCAxOiBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiB2w6AgcGjhu5FpIGPhuqNuaCBQREYgY+G7p2EgQ29wdWxhIGjhu40gRWxpcCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihmb250c2l6ZSA9IDE1LCBmb250ID0gMikpDQopDQoNCmBgYA0KDQotICoqQ29wdWxhIGjhu40gQXJjaGltZWRlYW4qKg0KDQpDw6FjIGjDoG0gY29wdWxhIHRyb25nIGjhu40gQXJjaGltZWRlYW4gYmFvIGfhu5NtIG5oaeG7gXUgbG/huqFpIG5oxrAgQ29wdWxhIENsYXl0b24sIEd1bWJlbCB2w6AgSm9lLCBt4buXaSBsb+G6oWkgdGjhu4MgaGnhu4duIG3hu5l0IGtp4buDdSBwaOG7pSB0aHXhu5ljIMSR4bq3YyB0csawbmcgZ2nhu69hIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4uIENvcHVsYSBDbGF5dG9uIG7hu5VpIGLhuq10IHbhu5tpIHPhu7EgcGjhu6UgdGh14buZYyBt4bqhbmggbeG6vSDhu58gcGjhuqduIMSRdcO0aSBkxrDhu5tpIGPhu6dhIHBow6JuIHBo4buRaSwgbMOgbSBjaG8gbsOzIHRow61jaCBo4bujcCB0cm9uZyB2aeG7h2MgbcO0IGjDrG5oIGjDs2EgbeG7kWkgcXVhbiBo4buHIGdp4bqjbSBnacOhIG3huqFuaCBnaeG7r2EgY8OhYyBiaeG6v24sIMSR4bq3YyBiaeG7h3QgaOG7r3Ugw61jaCB0cm9uZyBjw6FjIHTDrG5oIGh14buRbmcgdGjhu4sgdHLGsOG7nW5nIGdp4bqjbS4gTmfGsOG7o2MgbOG6oWksIENvcHVsYSBHdW1iZWwgdGjhu4MgaGnhu4duIHPhu7EgcGjhu6UgdGh14buZYyBt4bqhbmggbeG6vSDhu58gcGjhuqduIMSRdcO0aSB0csOqbiwgbMO9IHTGsOG7n25nIGtoaSBt4buZdCBiaeG6v24gdMSDbmcgZ2nDoSBjw7MgdGjhu4Mga8OpbyB0aGVvIGJp4bq/biBraMOhYyBjxaluZyB0xINuZyBnacOhLCB0aMaw4budbmcgxJHGsOG7o2Mgw6FwIGThu6VuZyB0cm9uZyB0aOG7iyB0csaw4budbmcgY8OzIHh1IGjGsOG7m25nIHTEg25nLiBDb3B1bGEgSm9lLCB0xrDGoW5nIHThu7EgbmjGsCBHdW1iZWwsIGPFqW5nIHThuq1wIHRydW5nIHbDoG8gcGjhuqduIMSRdcO0aSB0csOqbiwgbcO0IHThuqMgbeG7kWkgcXVhbiBo4buHIG3huqFuaCBt4bq9IGtoaSBjw6FjIGJp4bq/biBjw7luZyB0xINuZyBnacOhLiBDw6FjIGNvcHVsYSBraMOhYyBuaMawIEZyYW5rLCBSb3QtQ2xheXRvbiwgdsOgIGPDoWMgY29wdWxhIHBo4bupYyB04bqhcCBuaMawIEJCMSwgQkI2LCBCQjcsIEJCOCwga+G6v3QgaOG7o3AgxJHhurdjIMSRaeG7g20gY+G7p2Egbmhp4buBdSBjb3B1bGEgY8ahIGLhuqNuLCBjaG8gcGjDqXAgbcO0IGjDrG5oIGjDs2EgY8OhYyBt4buRaSBxdWFuIGjhu4cgcGjhu6ljIHThuqFwIHbDoCDEkWEgZOG6oW5nIGjGoW4gZ2nhu69hIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4gdHJvbmcgdMOgaSBjaMOtbmgsIHThu6sgxJHDsyBnacO6cCBoaeG7g3UgcsO1IGjGoW4gduG7gSBz4buxIHTGsMahbmcgdMOhYyB2w6AgcuG7p2kgcm8gdHJvbmcgbcO0aSB0csaw4budbmcgdMOgaSBjaMOtbmggYmnhur9uIMSR4buZbmcuDQoNCsSQ4buDIMSRw6FuaCBnacOhIHRy4buxYyBxdWFuIMO9IG5naMSpYSBj4bunYSB04burbmcgbG/huqFpIGNvcHVsYSwgZW0gc+G6vSB0aeG6v24gaMOgbmggduG6vSBiaeG7g3UgxJHhu5MgZOG7sWEgdHLDqm4gZOG7ryBsaeG7h3UgxJHGsOG7o2MgbcO0IHBo4buPbmcgY2hvIG3hu5dpIGxv4bqhaSBjb3B1bGEgdMawxqFuZyDhu6luZyBuaMawIHNhdSA6DQoNCmBgYHtyfQ0Kc2V0LnNlZWQoMTIzKQ0KI03DtCBwaOG7j25nIGNvcHVsYSBjbGF5dG9uIHbhu5tpIHA9NA0KY29wX2NsYXkgPC0gY2xheXRvbkNvcHVsYShwYXJhbSA9IDQsIGRpbSA9IDIpDQojTcO0IHBo4buPbmcgNzYwMCBxdWFuIHPDoXQgbmfhuqt1IG5oacOqbiBk4buxYSB0csOqbiBjb3B1bGEgY8OzIHPhurVuDQpyYW5kb21fY2xheSA8LSByQ29wdWxhKGNvcHVsYSA9IGNvcF9jbGF5LG4gPSA3NjAwKQ0KI03DtCBwaOG7j25nIGNvcHVsYSBndW1iZWwgduG7m2kgcD01DQpjb3BfZ3VtIDwtIGd1bWJlbENvcHVsYShwYXJhbSA9IDUsIGRpbSA9IDIpDQojTcO0IHBo4buPbmcgNzYwMCBxdWFuIHPDoXQgbmfhuqt1IG5oacOqbiBk4buxYSB0csOqbiBjb3B1bGEgY8OzIHPhurVuDQpyYW5kb21fZ3VtIDwtIHJDb3B1bGEoY29wdWxhID0gY29wX2d1bSxuID0gNzYwMCkNCg0KI1bhur0gYmnhu4N1IMSR4buTIA0KcG5nKCdjbGF5cy5wbmcnKQ0Kc2NhdHRlcl9wbG90KHJhbmRvbV9jbGF5LCcjQ0M2NjMzJykNCmRldi5vZmYoKQ0KY2xheXMgPC0gcmFzdGVyR3JvYihyZWFkUE5HKCdjbGF5cy5wbmcnKSwgaW50ZXJwb2xhdGUgPSBUUlVFKQ0KDQpwbmcoJ2d1bXMucG5nJykNCnNjYXR0ZXJfcGxvdChyYW5kb21fZ3VtLCcjRkY2Njk5JykNCmRldi5vZmYoKQ0KZ3VtcyA8LSByYXN0ZXJHcm9iKHJlYWRQTkcoJ2d1bXMucG5nJyksIGludGVycG9sYXRlID0gVFJVRSkNCmNsYXlwIDwtIHBlcnNwX3Bsb3QoY29wX2NsYXksJ2NsYXlwLnBuZycsJyNDQzY2MzMnKQ0KDQpndW1wIDwtIHBlcnNwX3Bsb3QoY29wX2d1bSwnZ3VtcC5wbmcnLCcjRkY2Njk5JykNCg0KDQpsZWdlbmQgPC0gbGVnZW5kR3JvYigNCiAgbGFiZWxzID0gYygiQ2xheXRvbiIsICJHdW1iZWwiKSwgcGNoID0gMTUsDQogIGdwID0gZ3Bhcihjb2wgPSBjKCcjQ0M2NjMzJywgJyNGRjY2OTknKSwgZmlsbCA9IGMoJyNDQzY2MzMnLCAnI0ZGNjY5OScpKQ0KKQ0KDQpncmlkLmFycmFuZ2UoY2xheXMsIGNsYXlwLCBndW1zLCBndW1wLCBsZWdlbmQsIG5jb2wgPSAzLCANCiAgICAgICAgICAgICBsYXlvdXRfbWF0cml4ID0gcmJpbmQoYygxLCAyLCA1KSwgYygzLCA0LCA1KSksDQogICAgICAgICAgICAgd2lkdGhzID0gYygyLCAyLCAxKSwgDQogICAgICAgICAgICAgdG9wID0gdGV4dEdyb2IoIkjDrG5oIDI6IEJp4buDdSDEkeG7kyBwaMOibiB0w6FuIHbDoCBQREYgY+G7p2EgQ29wdWxhIENsYXl0b24gdsOgIEd1bWJlbCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihmb250c2l6ZSA9IDE1LCBmb250ID0gMikpDQopDQoNCmBgYA0KDQpgYGB7cn0NCnNldC5zZWVkKDEyMykNCiNNw7QgcGjhu49uZyBjb3B1bGEgc3Vydml2YWwgZ3VtYmVsDQpjb3Bfc3VyZ3VtIDwtIFZDMmNvcHVsYTo6c3VyR3VtYmVsQ29wdWxhKHBhcmFtID0gNSkNCiNNw7QgcGjhu49uZyA3NjAwIHF1YW4gc8OhdCBuZ+G6q3Ugbmhpw6puIGThu7FhIHRyw6puIGNvcHVsYSBjw7Mgc+G6tW4NCnJhbmRvbV9zdXJndW0gPC0gckNvcHVsYShjb3B1bGEgPSBjb3Bfc3VyZ3VtLG4gPSA3NjAwKQ0KI03DtCBwaOG7j25nIGNvcHVsYSBzdXJ2aXZhbCBjbGF5dG9uICB24bubaSBwPTQNCmNvcF9zdXJjbGF5IDwtIFZDMmNvcHVsYTo6c3VyQ2xheXRvbkNvcHVsYShwYXJhbSA9IDQpDQojTcO0IHBo4buPbmcgNzYwMCBxdWFuIHPDoXQgbmfhuqt1IG5oacOqbiBk4buxYSB0csOqbiBjb3B1bGEgY8OzIHPhurVuDQpyYW5kb21fc3VyY2xheSA8LSByQ29wdWxhKGNvcHVsYSA9IGNvcF9zdXJjbGF5LG4gPSA3NjAwKQ0KcG5nKCdzdXJjbGF5cy5wbmcnKQ0Kc2NhdHRlcl9wbG90KHJhbmRvbV9zdXJjbGF5LCcjOTk2NkZGJykNCmRldi5vZmYoKQ0Kc3VyY2xheXMgPC0gcmFzdGVyR3JvYihyZWFkUE5HKCdzdXJjbGF5cy5wbmcnKSwgaW50ZXJwb2xhdGUgPSBUUlVFKQ0KDQpwbmcoJ3N1cmd1bXMucG5nJykNCnNjYXR0ZXJfcGxvdChyYW5kb21fc3VyZ3VtLCcjRkYzMzAwJykNCmRldi5vZmYoKQ0Kc3VyZ3VtcyA8LSByYXN0ZXJHcm9iKHJlYWRQTkcoJ3N1cmd1bXMucG5nJyksIGludGVycG9sYXRlID0gVFJVRSkNCnN1cmNsYXlwIDwtIHBlcnNwX3Bsb3QoY29wX3N1cmNsYXksICJzdXJjbGF5cC5wbmciLCIjOTk2NkZGIikNCnN1cmd1bXAgPC0gcGVyc3BfcGxvdChjb3Bfc3VyZ3VtLCAic3VyZ3VtcC5wbmciLCIjRkYzMzAwIikNCg0KbGVnZW5kIDwtIGxlZ2VuZEdyb2IobGFiZWxzID0gYygiU3Vydml2YWwgQ2xheXRvbiIsIlN1cnZpdmFsIEd1bWJlbCIpLCBwY2ggPSAxNSwNCiAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihjb2wgPSBjKCcjOTk2NkZGJywnI0ZGMzMwMCcpLCBmaWxsID0gYygnIzk5NjZGRicsJyNGRjMzMDAnICkpKQ0KDQpncmlkLmFycmFuZ2Uoc3VyY2xheXMsIHN1cmNsYXlwLHN1cmd1bXMsIHN1cmd1bXAsIGxlZ2VuZCwgbmNvbCA9IDMsDQogICAgICAgICAgICAgbGF5b3V0X21hdHJpeCA9IHJiaW5kKGMoMSwyLDUpLGMoMyw0LDUpKSwNCiAgICAgICAgICAgICB3aWR0aHMgPSBjKDIsMiwxKSwNCiAgICAgICAgICAgICB0b3AgPSB0ZXh0R3JvYigiSMOsbmggMzogQmnhu4N1IMSR4buTIHBow6JuIHTDoW4gdsOgIFBERiBj4bunYSBDb3B1bGEgU3VyIENsYXl0b24gdsOgIEd1bWJlbCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihmb250c2l6ZSA9IDE1LCBmb250ID0gMikpDQopDQpgYGANCg0KYGBge3J9DQpzZXQuc2VlZCgxMjMpDQojTcO0IHBo4buPbmcgY29wdWxhIEZyYW5rDQpjb3BfZnJhbmsgPC0gZnJhbmtDb3B1bGEocGFyYW0gPSA5LjIpDQojTcO0IHBo4buPbmcgNzYwMCBxdWFuIHPDoXQgbmfhuqt1IG5oacOqbiBk4buxYSB0csOqbiBjb3B1bGEgY8OzIHPhurVuDQpyYW5kb21fZnJhbmsgPC0gckNvcHVsYShjb3B1bGEgPSBjb3BfZnJhbmssbiA9IDc2MDApDQojTcO0IHBo4buPbmcgY29wdWxhIHN1cnZpdmFsIGNsYXl0b24gIHbhu5tpIHA9NA0KY29wX2pvZSA8LSBqb2VDb3B1bGEocGFyYW0gPSAzKQ0KI03DtCBwaOG7j25nIDc2MDAgcXVhbiBzw6F0IG5n4bqrdSBuaGnDqm4gZOG7sWEgdHLDqm4gY29wdWxhIGPDsyBz4bq1bg0KcmFuZG9tX2pvZSA8LSByQ29wdWxhKGNvcHVsYSA9IGNvcF9qb2UsbiA9IDc2MDApDQpwbmcoJ2ZyYW5rcy5wbmcnKQ0Kc2NhdHRlcl9wbG90KHJhbmRvbV9mcmFuaywnI0ZGQ0NGRicpDQpkZXYub2ZmKCkNCmZyYW5rcyA8LSByYXN0ZXJHcm9iKHJlYWRQTkcoJ2ZyYW5rcy5wbmcnKSwgaW50ZXJwb2xhdGUgPSBUUlVFKQ0KDQpwbmcoJ2pvZXMucG5nJykNCnNjYXR0ZXJfcGxvdChyYW5kb21fam9lLCcjRkZDQzY2JykNCmRldi5vZmYoKQ0Kam9lcyA8LSByYXN0ZXJHcm9iKHJlYWRQTkcoJ2pvZXMucG5nJyksIGludGVycG9sYXRlID0gVFJVRSkNCmZyYW5rcCA8LSBwZXJzcF9wbG90KGNvcF9mcmFuaywgImZyYW5rcC5wbmciLCIjRkZDQ0ZGIikNCmpvZXAgPC0gcGVyc3BfcGxvdChjb3Bfam9lLCAiam9lcC5wbmciLCIjRkZDQzY2IikNCg0KbGVnZW5kIDwtIGxlZ2VuZEdyb2IobGFiZWxzID0gYygiRnJhbmwiLCJKb2UiKSwgcGNoID0gMTUsDQogICAgICAgICAgICAgICAgICAgICBncCA9IGdwYXIoY29sID0gYygnI0ZGQ0NGRicsJyNGRkNDNjYnKSwgZmlsbCA9IGMoJyNGRkNDRkYnLCcjRkZDQzY2JykpKQ0KDQpncmlkLmFycmFuZ2UoZnJhbmtzLCBmcmFua3Asam9lcywgam9lcCwgbGVnZW5kLCBuY29sID0gMywNCiAgICAgICAgICAgICBsYXlvdXRfbWF0cml4ID0gcmJpbmQoYygxLDIsNSksYygzLDQsNSkpLA0KICAgICAgICAgICAgIHdpZHRocyA9IGMoMiwyLDEpLA0KICAgICAgICAgICAgIHRvcCA9IHRleHRHcm9iKCJIw6xuaCA0OiBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiB2w6AgIFBERiBj4bunYSBDb3B1bGEgRnJhbmsgdsOgIEpvZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihmb250c2l6ZSA9IDE1LCBmb250ID0gMikpDQopDQpgYGANCg0KYGBge3J9DQpzZXQuc2VlZCgxMjMpDQojTcO0IHBo4buPbmcgY29wdWxhIEJCMQ0KY29wX2JiMSA8LSBWQzJjb3B1bGE6OkJCMUNvcHVsYShwYXJhbSA9IGMoMiwxLjcpKQ0KI03DtCBwaOG7j25nIDc2MDAgcXVhbiBzw6F0IG5n4bqrdSBuaGnDqm4gZOG7sWEgdHLDqm4gY29wdWxhIGPDsyBz4bq1bg0KcmFuZG9tX2JiMSA8LSByQ29wdWxhKGNvcHVsYSA9IGNvcF9iYjEsbiA9IDc2MDApDQojTcO0IHBo4buPbmcgY29wdWxhIEJCNg0KY29wX2JiNiA8LSBWQzJjb3B1bGE6OkJCNkNvcHVsYShwYXJhbSA9IGMoMiw0LjUpKQ0KI03DtCBwaOG7j25nIDc2MDAgcXVhbiBzw6F0IG5n4bqrdSBuaGnDqm4gZOG7sWEgdHLDqm4gY29wdWxhIGPDsyBz4bq1bg0KcmFuZG9tX2JiNiA8LSByQ29wdWxhKGNvcHVsYSA9IGNvcF9iYjYsbiA9IDc2MDApDQpwbmcoJ2JiMXMucG5nJykNCnNjYXR0ZXJfcGxvdChyYW5kb21fYmIxLCcjMDBFRTAwJykNCmRldi5vZmYoKQ0KYmIxcyA8LSByYXN0ZXJHcm9iKHJlYWRQTkcoJ2JiMXMucG5nJyksIGludGVycG9sYXRlID0gVFJVRSkNCg0KcG5nKCdiYjZzLnBuZycpDQpzY2F0dGVyX3Bsb3QocmFuZG9tX2JiNiwnIzY2NjZDQycpDQpkZXYub2ZmKCkNCmJiNnMgPC0gcmFzdGVyR3JvYihyZWFkUE5HKCdiYjZzLnBuZycpLCBpbnRlcnBvbGF0ZSA9IFRSVUUpDQpiYjFwIDwtIHBlcnNwX3Bsb3QoY29wX2JiMSwgImJiMXAucG5nIiwiIzAwRUUwMCIpDQpiYjZwIDwtIHBlcnNwX3Bsb3QoY29wX2JiNiwgImJiNnAucG5nIiwiIzY2NjZDQyIpDQoNCmxlZ2VuZCA8LSBsZWdlbmRHcm9iKGxhYmVscyA9IGMoIkJCMSIsIkJCNiIpLCBwY2ggPSAxNSwNCiAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihjb2wgPSBjKCcjMDBFRTAwJywnIzY2NjZDQycpLCBmaWxsID0gYygnIzAwRUUwMCcsJyM2NjY2Q0MnKSkpDQoNCmdyaWQuYXJyYW5nZShiYjFzLCBiYjFwLGJiNnMsIGJiNnAsIGxlZ2VuZCwgbmNvbCA9IDMsDQogICAgICAgICAgICAgbGF5b3V0X21hdHJpeCA9IHJiaW5kKGMoMSwyLDUpLGMoMyw0LDUpKSwNCiAgICAgICAgICAgICB3aWR0aHMgPSBjKDIsMiwxKSwNCiAgICAgICAgICAgICB0b3AgPSB0ZXh0R3JvYigiSMOsbmggNTogQmnhu4N1IMSR4buTIHBow6JuIHTDoW4gdsOgICBQREYgY+G7p2EgQ29wdWxhIEJCMSB2w6AgQkI2IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3AgPSBncGFyKGZvbnRzaXplID0gMTUsIGZvbnQgPSAyKSkNCikNCg0KYGBgDQoNCmBgYHtyfQ0Kc2V0LnNlZWQoMTIzKQ0KI03DtCBwaOG7j25nIGNvcHVsYSBCQjcNCmNvcF9iYjcgPC0gVkMyY29wdWxhOjpCQjdDb3B1bGEocGFyYW0gPSBjKDIsNC41KSkNCiNNw7QgcGjhu49uZyA3NjAwIHF1YW4gc8OhdCBuZ+G6q3Ugbmhpw6puIGThu7FhIHRyw6puIGNvcHVsYSBjw7Mgc+G6tW4NCnJhbmRvbV9iYjcgPC0gckNvcHVsYShjb3B1bGEgPSBjb3BfYmI3LG4gPSA3NjAwKQ0KI03DtCBwaOG7j25nIGNvcHVsYSBCQjgNCmNvcF9iYjggPC0gVkMyY29wdWxhOjpCQjhDb3B1bGEocGFyYW0gPSBjKDQsMC44KSkNCiNNw7QgcGjhu49uZyA3NjAwIHF1YW4gc8OhdCBuZ+G6q3Ugbmhpw6puIGThu7FhIHRyw6puIGNvcHVsYSBjw7Mgc+G6tW4NCnJhbmRvbV9iYjggPC0gckNvcHVsYShjb3B1bGEgPSBjb3BfYmI4LG4gPSA3NjAwKQ0KcG5nKCdiYjdzLnBuZycpDQpzY2F0dGVyX3Bsb3QocmFuZG9tX2JiNywnI0ZGMDAwMCcpDQpkZXYub2ZmKCkNCmJiN3MgPC0gcmFzdGVyR3JvYihyZWFkUE5HKCdiYjdzLnBuZycpLCBpbnRlcnBvbGF0ZSA9IFRSVUUpDQoNCnBuZygnYmI4cy5wbmcnKQ0Kc2NhdHRlcl9wbG90KHJhbmRvbV9iYjgsJyMwMDAwREQnKQ0KZGV2Lm9mZigpDQpiYjhzIDwtIHJhc3Rlckdyb2IocmVhZFBORygnYmI4cy5wbmcnKSwgaW50ZXJwb2xhdGUgPSBUUlVFKQ0KYmI3cCA8LSBwZXJzcF9wbG90KGNvcF9iYjcsICJiYjdwLnBuZyIsIiNGRjAwMDAiKQ0KYmI4cCA8LSBwZXJzcF9wbG90KGNvcF9iYjgsICJiYjhwLnBuZyIsIiMwMDAwREQiKQ0KDQpsZWdlbmQgPC0gbGVnZW5kR3JvYihsYWJlbHMgPSBjKCJCQjciLCJCQjgiKSwgcGNoID0gMTUsDQogICAgICAgICAgICAgICAgICAgICBncCA9IGdwYXIoY29sID0gYygnI0ZGMDAwMCcsJyMwMDAwREQnKSwgZmlsbCA9IGMoJyNGRjAwMDAnLCcjMDAwMEREJykpKQ0KDQpncmlkLmFycmFuZ2UoYmI3cywgYmI3cCxiYjhzLCBiYjhwLCBsZWdlbmQsIG5jb2wgPSAzLA0KICAgICAgICAgICAgIGxheW91dF9tYXRyaXggPSByYmluZChjKDEsMiw1KSxjKDMsNCw1KSksDQogICAgICAgICAgICAgd2lkdGhzID0gYygyLDIsMSksDQogICAgICAgICAgICAgdG9wID0gdGV4dEdyb2IoIkjDrG5oIDY6IEJp4buDdSDEkeG7kyBwaMOibiB0w6FuIHbDoCAgUERGIGPhu6dhIENvcHVsYSBCQjcgdsOgIEJCOCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihmb250c2l6ZSA9IDE1LCBmb250ID0gMikpDQopDQoNCmBgYA0KDQojIyMgMi4yLjMgUGjhu6UgdGh14buZYyDEkXXDtGkNCg0KQ+G6pXUgdHLDumMgcGjhu6UgdGh14buZYyDEkXXDtGkgKHRhaWwgZGVwZW5kZW5jZSkgbMOgIG3hu5l0IGtow6FpIG5p4buHbSBxdWFuIHRy4buNbmcgdHJvbmcgcGjDom4gdMOtY2ggdGjhu5FuZyBrw6ogdsOgIHTDoGkgY2jDrW5oLCBkw7luZyDEkeG7gyDEkW8gbMaw4budbmcgbeG7qWMgxJHhu5kgbcOgIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4gY8OzIHh1IGjGsOG7m25nIMSR4bqhdCBjw6FjIGdpw6EgdHLhu4sgY+G7sWMgxJFvYW4gxJHhu5NuZyB0aOG7nWkuIMSQaeG7gXUgbsOgeSDEkeG6t2MgYmnhu4d0IGjhu691IMOtY2gga2hpIG5naGnDqm4gY+G7qXUgY8OhYyBz4buxIGtp4buHbiB44bqjeSByYSDhu58gY8OhYyBwaOG6p24gxJF1w7RpIGPhu6dhIHBow6JuIHBo4buRaSwgY2jhurNuZyBo4bqhbiBuaMawIGPDuW5nIHTEg25nIG3huqFuaCBob+G6t2MgZ2nhuqNtIG3huqFuaC4gUGjhu6UgdGh14buZYyDEkXXDtGkgZ2nDunAgY8OhYyBuaMOgIHBow6JuIHTDrWNoIHbDoCBuaMOgIMSR4bqndSB0xrAgaGnhu4N1IHLDtSBoxqFuIHbhu4EgY8OhYyBy4bunaSBybyBj4buxYyDEkW9hbiwgYmFvIGfhu5NtIGto4bqjIG7Eg25nIHjhuqN5IHJhIMSR4buTbmcgdGjhu51pIGPDoWMgc+G7sSBraeG7h24gdMOgaSBjaMOtbmggYuG6pXQgdGjGsOG7nW5nIG5oxrAgc+G7sSBz4buldCBnaeG6o20gxJHhu5NuZyBsb+G6oXQgY+G7p2EgY8OhYyB0w6BpIHPhuqNuIHRyb25nIGRhbmggbeG7pWMgxJHhuqd1IHTGsC4NCg0KQ8OzIGhhaSBsb+G6oWkgcGjhu6UgdGh14buZYyDEkXXDtGkgY2jDrW5oOg0KDQoxLiAqKlBo4bulIHRodeG7mWMgxJF1w7RpIHRyw6puIChVcHBlciBUYWlsIERlcGVuZGVuY2UpKio6DQogICAtICoqS2jDoWkgbmnhu4dtKio6IMSQbyBsxrDhu51uZyBt4bupYyDEkeG7mSBtw6AgY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiBjw7MgeHUgaMaw4bubbmcgxJHhuqF0IGPDoWMgZ2nDoSB0cuG7iyBj4buxYyDEkeG6oWkgxJHhu5NuZyB0aOG7nWkuIMSQaeG7gXUgbsOgeSBy4bqldCBxdWFuIHRy4buNbmcgdHJvbmcgY8OhYyBr4buLY2ggYuG6o24gdMOgaSBjaMOtbmgsIGNo4bqzbmcgaOG6oW4gbmjGsCBraGkgdGjhu4sgdHLGsOG7nW5nIHTEg25nIGdpw6EgbeG6oW5oIHbDoCBjw6FjIHTDoGkgc+G6o24gdMOgaSBjaMOtbmggxJHhu5NuZyB0aOG7nWkgxJHhuqF0IGPDoWMgbeG7qWMgY2FvIGvhu7cgbOG7pWMuDQogICAtICoqxJDhu4tuaCBuZ2jEqWEqKjogSOG7hyBz4buRIHBo4bulIHRodeG7mWMgxJF1w7RpIHRyw6puLCBrw70gaGnhu4d1IGzDoCBcKFxsYW1iZGFfVVwpLCDEkcaw4bujYyDEkeG7i25oIG5naMSpYSBsw6A6DQogICAgIFxbDQogICAgIFxsYW1iZGFfVSA9IFxsaW1fe3UgXHRvIDF9IFBcbGVmdChaXzEgPiBGXzFeey0xfSh1KSBcbWlkIFpfMiA+IEZfMl57LTF9KHUpXHJpZ2h0KQ0KICAgICBcXQ0KICAgICBUcm9uZyDEkcOzLCBcKCBaXzEgXCkgdsOgIFwoIFpfMiBcKSBsw6AgY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiBsacOqbiB04bulYywgdsOgIFwoIEZfMSBcKSB2w6AgXCggRl8yIFwpIGzDoCBjw6FjIGjDoG0gcGjDom4gcGjhu5FpIGJpw6puIHTGsMahbmcg4bupbmcuDQoNCjIuICoqUGjhu6UgdGh14buZYyDEkXXDtGkgZMaw4bubaSAoTG93ZXIgVGFpbCBEZXBlbmRlbmNlKSoqOg0KICAgLSAqKktow6FpIG5p4buHbSoqOiDEkG8gbMaw4budbmcgbeG7qWMgxJHhu5kgbcOgIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4gY8OzIHh1IGjGsOG7m25nIMSR4bqhdCBjw6FjIGdpw6EgdHLhu4sgY+G7sWMgdGnhu4N1IMSR4buTbmcgdGjhu51pLiDEkGnhu4F1IG7DoHkgxJHhurdjIGJp4buHdCBxdWFuIHRy4buNbmcgdHJvbmcgdmnhu4djIHF14bqjbiBsw70gcuG7p2kgcm8gdMOgaSBjaMOtbmgsIHbDrCBz4buxIHPhu6V0IGdp4bqjbSDEkeG7k25nIGxv4bqhdCBj4bunYSBnacOhIHRy4buLIHTDoGkgc+G6o24gY8OzIHRo4buDIGThuqtuIMSR4bq/biB0aHVhIGzhu5cgbOG7m24gY2hvIG5ow6AgxJHhuqd1IHTGsC4NCiAgIC0gKirEkOG7i25oIG5naMSpYSoqOiBI4buHIHPhu5EgcGjhu6UgdGh14buZYyDEkXXDtGkgZMaw4bubaSwga8O9IGhp4buHdSBsw6AgXChcbGFtYmRhX0xcKSwgxJHGsOG7o2MgxJHhu4tuaCBuZ2jEqWEgbMOgOg0KICAgICBcWw0KICAgICBcbGFtYmRhX0wgPSBcbGltX3t1IFx0byAxfSBQXGxlZnQoWl8xIDwgRl8xXnstMX0odSkgXG1pZCBaXzIgPCBGXzJeey0xfSh1KVxyaWdodCkNCiAgICAgXF0NCg0KQ8OhYyBo4buHIHPhu5EgcGjhu6UgdGh14buZYyDEkXXDtGkgY3VuZyBj4bqlcCB0aMO0bmcgdGluIHbhu4Egc+G7sSDEkeG7k25nIHbhuq1uIMSR4buZbmcgY+G7p2EgY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiB04bqhaSBjw6FjIHBo4bqnbiDEkXXDtGkgY+G7p2EgcGjDom4gcGjhu5FpLiBN4buZdCBo4buHIHPhu5EgXChcbGFtYmRhX1VcKSBob+G6t2MgXChcbGFtYmRhX0xcKSBi4bqxbmcgMCBjaG8gdGjhuqV5IGtow7RuZyBjw7MgcGjhu6UgdGh14buZYyDEkXXDtGksIHRyb25nIGtoaSBnacOhIHRy4buLIHRyb25nIGtob+G6o25nIFwoKDAsMV1cKSBjaOG7iSByYSBt4bupYyDEkeG7mSBwaOG7pSB0aHXhu5ljIMSRdcO0aSB04buTbiB04bqhaS4gU+G7sSBwaOG7pSB0aHXhu5ljIMSRdcO0aSBsw6AgbeG7mXQgdGh14buZYyB0w61uaCBxdWFuIHRy4buNbmcgY+G7p2EgY29wdWxhLCB2w6wgbsOzIGzDoCBi4bqldCBiaeG6v24gZMaw4bubaSBjw6FjIHBow6lwIGJp4bq/biDEkeG7lWkgdMSDbmcgbmdoacOqbSBuZ+G6t3QgY+G7p2EgY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiwgY8OzIG5naMSpYSBsw6AgbmdheSBj4bqjIGtoaSBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puIMSRxrDhu6NjIGJp4bq/biDEkeG7lWkgdGhlbyBjw6FjaCBraMO0bmcgbMOgbSB0aGF5IMSR4buVaSB0aOG7qSB04buxIGPhu6dhIGNow7puZywgc+G7sSBwaOG7pSB0aHXhu5ljIMSRdcO0aSB24bqrbiBraMO0bmcgdGhheSDEkeG7lWkuIEhp4buDdSBiaeG6v3QgduG7gSBj4bqldSB0csO6YyBwaOG7pSB0aHXhu5ljIMSRdcO0aSBjdW5nIGPhuqVwIG3hu5l0IGPDtG5nIGPhu6UgbeG6oW5oIG3hur0gxJHhu4MgcGjDom4gdMOtY2ggdsOgIHF14bqjbiBsw70gcuG7p2kgcm8gdHJvbmcgY8OhYyB0w6xuaCBodeG7kW5nIHTDoGkgY2jDrW5oIGPhu7FjIMSRb2FuLCB04burIMSRw7MgZ2nDunAgY8OhYyBuaMOgIMSR4bqndSB0xrAgdsOgIG5ow6AgcGjDom4gdMOtY2ggZOG7sSDEkW/DoW4gdsOgIGNodeG6qW4gYuG7iyBjaG8gY8OhYyBz4buxIGtp4buHbiDEkeG7k25nIHRo4budaSBj4buxYyDEkW9hbiBt4buZdCBjw6FjaCBoaeG7h3UgcXXhuqMgaMahbi4NCg0KDQojIyMgMi4yLjQgVMawxqFuZyBxdWFuIGPDsyDEkWnhu4F1IGtp4buHbiANCg0KVMawxqFuZyBxdWFuIGPDsyDEkWnhu4F1IGtp4buHbiBsw6AgbeG7mXQgY8O0bmcgY+G7pSBxdWFuIHRy4buNbmcgdHJvbmcgcGjDom4gdMOtY2ggdMOgaSBjaMOtbmgsIMSR4bq3YyBiaeG7h3Qga2hpIHhlbSB4w6l0IG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBjaHXhu5dpIGzhu6NpIHN14bqldCBjaOG7qW5nIGtob8OhbiB0cm9uZyBjw6FjIGdpYWkgxJFv4bqhbiBiaeG6v24gxJHhu5luZyB0aOG7iyB0csaw4budbmcuIE3DtCBow6xuaCBow7NhIG3hu5FpIHTGsMahbmcgcXVhbiBuw6B5IGfhurdwIGtow7Mga2jEg24gZG8gc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIHBow6JuIHBo4buRaSBjaHXhuqluIHbDoCBwaMOibiBwaOG7kWkgYuG6pXQgxJHhu5FpIHjhu6luZyB24bubaSDEkXXDtGkgZMOgeS4gxJDhu4Mga2jhuq9jIHBo4bulYyB24bqlbiDEkeG7gSBuw6B5LCBjw6FjIG3DtCBow6xuaCBHQVJDSCB2w6AgY8OhYyBiaeG6v24gdGjhu4MgY+G7p2EgY2jDum5nLCBjaOG6s25nIGjhuqFuIG5oxrAgRENDLUdBUkNIIHbDoCBFR0FSQ0gsIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIG7huq9tIGLhuq90IHPhu7EgYmnhur9uIMSR4buZbmcgdsOgIG3hu5FpIHTGsMahbmcgcXVhbiB0aGF5IMSR4buVaSB0aGVvIHRo4budaSBnaWFuLg0KDQpNw7QgaMOsbmggR0FSQ0gsIHBow6F0IHRyaeG7g24gdOG7qyBtw7QgaMOsbmggQVJDSCwgY3VuZyBj4bqlcCBjw6FjaCB0aeG6v3AgY+G6rW4gxJHhu4MgZOG7sSDEkW/DoW4gxJHhu5kgYmnhur9uIMSR4buZbmcgY+G7p2EgY2h14buXaSB0aOG7nWkgZ2lhbiB0w6BpIGNow61uaC4gVHV5IG5oacOqbiwgbeG7mXQgaOG6oW4gY2jhur8gbOG7m24gY+G7p2EgbcO0IGjDrG5oIEdBUkNIIGzDoCBnaeG6oyDEkeG7i25oIHLhurFuZyBjw6FjIGPDuiBz4buRYyBjw7MgcGjDom4gcGjhu5FpIGNodeG6qW4sIMSRaeG7gXUgbsOgeSBraMO0bmcgcGjhuqNuIMOhbmggY2jDrW5oIHjDoWMgdGjhu7FjIHThur8gdGjhu4sgdHLGsOG7nW5nLiDEkOG7gyBnaeG6o2kgcXV54bq/dCB24bqlbiDEkeG7gSBuw6B5LCBtw7QgaMOsbmggVkVDSCAoVmFyeWluZyBFcnJvciBDb3JyZWxhdGlvbiBIZXRlcm9za2VkYXN0aWNpdHkpIMSRxrDhu6NjIHBow6F0IHRyaeG7g24gxJHhu4MgbcO0IHThuqMgcGjGsMahbmcgc2FpIGPDsyDEkWnhu4F1IGtp4buHbiwgbmjGsG5nIG7DsyBn4bq3cCBwaOG6o2kgduG6pW4gxJHhu4EgduG7gSBz4buRIGzGsOG7o25nIHRoYW0gc+G7kSBs4bubbi4gTcO0IGjDrG5oIEJFS0sgKEJhYmEsIEVuZ2xlLCBLcmFmdCwgJiBLcm9uZXIpIMSRw6MgY+G6o2kgdGhp4buHbiBt4buZdCBz4buRIG5oxrDhu6NjIMSRaeG7g20gY+G7p2EgVkVDSCBi4bqxbmcgY8OhY2ggY3VuZyBj4bqlcCBjw6FjaCB0aeG6v3AgY+G6rW4gaGnhu4d1IHF14bqjIGjGoW4gxJHhu4MgeMOhYyDEkeG7i25oIG1hIHRy4bqtbiBoaeG7h3AgcGjGsMahbmcgc2FpLiDEkOG7gyBnaeG6o20gc+G7kSBsxrDhu6NuZyB0aGFtIHPhu5EgY2jGsGEgYmnhur90LCBtw7QgaMOsbmggbmjDom4gdOG7kSBBUkNIIMSRxrDhu6NjIMSR4buBIHh14bqldCwgZ2nhuqMgxJHhu4tuaCBy4bqxbmcgc+G7sSDEkeG7k25nIGNodXnhu4NuIMSR4buZbmcgxJHGsOG7o2MgdGjDumMgxJHhuql5IGLhu59pIG3hu5l0IGzGsOG7o25nIG5o4buPIGPDoWMgeeG6v3UgdOG7kSBwaOG7lSBiaeG6v24uDQoNCk3hu5l0IHPhu7EgcGjDoXQgdHJp4buDbiBxdWFuIHRy4buNbmcgdHJvbmcgbcO0IGjDrG5oIGjDs2EgdMawxqFuZyBxdWFuIGPDsyDEkWnhu4F1IGtp4buHbiBsw6AgbcO0IGjDrG5oIERDQy1HQVJDSCAoRHluYW1pYyBDb25kaXRpb25hbCBDb3JyZWxhdGlvbiksIMSRxrDhu6NjIGdp4bubaSB0aGnhu4d1IGLhu59pIEVuZ2xlIHbDoG8gbsSDbSAyMDAyLiBNw7QgaMOsbmggbsOgeSBjaG8gcGjDqXAgbuG6r20gYuG6r3Qgc+G7sSDEkeG7mW5nIHRyb25nIGPhuqMgdMawxqFuZyBxdWFuIGPDsyDEkWnhu4F1IGtp4buHbiB2w6AgcGjGsMahbmcgc2FpIGPDsyDEkWnhu4F1IGtp4buHbiwgY3VuZyBj4bqlcCBt4buZdCBjw6FjaCB0aeG6v3AgY+G6rW4gbeG6oW5oIG3hur0gxJHhu4MgcGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyB0w6BpIGNow61uaCB0cm9uZyB0aOG7nWkgZ2lhbiB0aOG7sWMuIELhurFuZyBjw6FjaCBr4bq/dCBo4bujcCBtw7QgaMOsbmggR0FSQ0ggduG7m2kgcGjGsMahbmcgcGjDoXAgcGjDom4gdMOtY2ggbWEgdHLhuq1uIGhp4buHcCBwaMawxqFuZyBzYWksIERDQy1HQVJDSCBnacO6cCBuaOG6rW4gZGnhu4duIHbDoCBk4buxIMSRb8OhbiBz4buxIHRoYXkgxJHhu5VpIHRyb25nIG3hu5FpIHTGsMahbmcgcXVhbiBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcuDQoNClRyb25nIGLhu5FpIGPhuqNuaCBwaMOibiB0w61jaCBt4buRaSBsacOqbiBo4buHIGdp4buvYSBUVENLIFZp4buHdCBOYW0gKFZOSSkgdsOgIFRUQ0sgSMOgbiBRdeG7kWMgKEtPU1BJKSwgY8OhYyBuZ2hpw6puIGPhu6l1IMSRw6Mgc+G7rSBk4bulbmcgbcO0IGjDrG5oIEdBUkNIIMSRYSBiaeG6v24gxJHhu4MgcGjDom4gdMOtY2ggc+G7sSB0xrDGoW5nIHF1YW4gY8OzIMSRaeG7gXUga2nhu4duIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nLiBDw6FjIGvhur90IHF14bqjIGNobyB0aOG6pXkgcuG6sW5nIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIFZOSSB2w6AgS09TUEkgY8OzIHRo4buDIHRoYXkgxJHhu5VpIMSRw6FuZyBr4buDIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGto4bunbmcgaG/huqNuZyB0w6BpIGNow61uaC4gVsOtIGThu6UsIHRyb25nIGN14buZYyBraOG7p25nIGhv4bqjbmcgdMOgaSBjaMOtbmggdG/DoG4gY+G6p3UgbsSDbSAyMDA4LCBt4buRaSB0xrDGoW5nIHF1YW4gZ2nhu69hIGhhaSB0aOG7iyB0csaw4budbmcgbsOgeSBjw7MgdGjhu4MgdMSDbmcgbMOqbiBkbyBz4buxIGzDonkgbGFuIGPhu6dhIGto4bunbmcgaG/huqNuZy4gQ8OhYyBtw7QgaMOsbmggbmjGsCBEQ0MtR0FSQ0ggY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHPDonUgc+G6r2MgduG7gSBz4buxIGJp4bq/biDEkeG7mW5nIG7DoHksIGNobyB0aOG6pXkgcuG6sW5nIG3hu5FpIHTGsMahbmcgcXVhbiBjw7MgdGjhu4MgZ2lhIHTEg25nIHRyb25nIHRo4budaSBr4buzIGto4bunbmcgaG/huqNuZyB2w6AgZ2nhuqNtIGtoaSB0w6xuaCBow6xuaCDhu5VuIMSR4buLbmggaMahbi4NCg0KVMOzbSBs4bqhaSwgdmnhu4djIHPhu60gZOG7pW5nIG3DtCBow6xuaCB0xrDGoW5nIHF1YW4gY8OzIMSRaeG7gXUga2nhu4duIGzDoCBj4bqnbiB0aGnhur90IMSR4buDIGhp4buDdSByw7UgaMahbiB24buBIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGJp4bq/biDEkeG7mW5nLiDEkOG7kWkgduG7m2kgVFRDSyBWaeG7h3QgTmFtIHbDoCBIw6BuIFF14buRYywgY8OhYyBtw7QgaMOsbmggbmjGsCBEQ0MtR0FSQ0ggdsOgIEVHQVJDSCBnacO6cCBu4bqvbSBi4bqvdCBz4buxIGJp4bq/biDEkeG7mW5nIHbDoCBt4buRaSB0xrDGoW5nIHF1YW4gdGhheSDEkeG7lWkgdGhlbyB0aOG7nWkgZ2lhbiwgY3VuZyBj4bqlcCB0aMO0bmcgdGluIHF1YW4gdHLhu41uZyBjaG8gdmnhu4djIHF14bqjbiBsw70gcuG7p2kgcm8gdsOgIHJhIHF1eeG6v3QgxJHhu4tuaCDEkeG6p3UgdMawLg0KDQojIyAyLjMgQ8OhYyBuZ2hpw6puIGPhu6l1IHRyxrDhu5tjIMSRw7MNCg0KVHJvbmcgbmdoacOqbiBj4bupdSBz4buxIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIHRvw6BuIGPhuqd1LCBuaGnhu4F1IHBoxrDGoW5nIHBow6FwIHbDoCBtw7QgaMOsbmggxJHDoyDEkcaw4bujYyDDoXAgZOG7pW5nIMSR4buDIGhp4buDdSByw7UgaMahbiB24buBIGPDoWNoIHRo4bupYyBtw6AgYmnhur9uIMSR4buZbmcgZ2nDoSBj4bqjIGPDsyB0aOG7gyBsYW4gdOG7j2EgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGtow6FjIG5oYXUuIE5o4buvbmcgbmdoacOqbiBj4bupdSBuw6B5IGtow7RuZyBjaOG7iSBnacO6cCBjaMO6bmcgdGEgbmjhuq1uIGRp4buHbiBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIHPhu7EgdMawxqFuZyBxdWFuIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZywgbcOgIGPDsm4gY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHPDonUgc+G6r2MgduG7gSBjw6FjaCB0aOG7qWMgdsOgIMSRaeG7gXUga2nhu4duIG3DoCBz4buxIHBo4bulIHRodeG7mWMgY8OzIHRo4buDIHRoYXkgxJHhu5VpIHRoZW8gdGjhu51pIGdpYW4uIETGsOG7m2kgxJHDonkgbMOgIHThu5VuZyBo4bujcCBt4buZdCBz4buRIG5naGnDqm4gY+G7qXUgdGnDqnUgYmnhu4N1IHbhu4Egc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiwgxJHGsOG7o2MgdGjhu7FjIGhp4buHbiBi4bqxbmcgbmhp4buBdSBwaMawxqFuZyBwaMOhcCBraMOhYyBuaGF1LCB04burIEdBUkNIIMSRYSBiaeG6v24gxJHhur9uIGPDoWMgbcO0IGjDrG5oIGNvcHVsYS4NCg0KSGFtYW8sIE1hc3VsaXMsIHbDoCBOZyAoMTk5MCkgbMOgIG3hu5l0IHRyb25nIG5o4buvbmcgbmdoacOqbiBj4bupdSDEkeG6p3UgdGnDqm4gw6FwIGThu6VuZyBtw7QgaMOsbmggR0FSQ0ggxJFhIGJp4bq/biDEkeG7gyBwaMOibiB0w61jaCBz4buxIHBo4bulIHRodeG7mWMgbOG6q24gbmhhdSBnaeG7r2EgYmEgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIGzhu5tuOiBUb2t5bywgTG9uZG9uIHbDoCBOZXcgWW9yay4gTmdoacOqbiBj4bupdSBuw6B5IMSRw6MgY2jhu4kgcmEgc+G7sSBsYW4gdOG7j2EgYmnhur9uIMSR4buZbmcgZ2nDoSB04burIE5ldyBZb3JrIMSR4bq/biBUb2t5bywgdOG7qyBMb25kb24gxJHhur9uIFRva3lvLCB2w6AgdOG7qyBOZXcgWW9yayDEkeG6v24gTG9uZG9uLCBjaG8gdGjhuqV5IHPhu7EgbGnDqm4ga+G6v3QgbeG6oW5oIG3hur0gZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGJp4bq/biDEkeG7mW5nIGNhby4NCg0KVGnhur9wIHRoZW8sIExvbmdpbiB2w6AgU29sbmlrICgxOTk1KSBt4bufIHLhu5luZyBuZ2hpw6puIGPhu6l1IGPhu6dhIG3DrG5oIGLhurFuZyBjw6FjaCBraeG7g20gdHJhIG3hu5FpIHTGsMahbmcgcXVhbiBjw7MgxJFp4buBdSBraeG7h24ga2jDtG5nIMSR4buVaSBnaeG7r2Egbmhp4buBdSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gcXXhu5FjIHThur8gbmjGsCBIb2EgS+G7sywgQ2FuYWRhLCBOaOG6rXQgQuG6o24sIMSQ4bupYywgQW5oLCBQaMOhcCB2w6AgVGjhu6V5IMSQaeG7g24gdHJvbmcgZ2lhaSDEkW/huqFuIDE5NjDigJMxOTkwLiBI4buNIHBow6F0IGhp4buHbiBy4bqxbmcgbeG7kWkgdMawxqFuZyBxdWFuIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjw7MgeHUgaMaw4bubbmcgZ2lhIHTEg25nIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGJp4bq/biDEkeG7mW5nIGNhbyBj4bunYSB0aOG7iyB0csaw4budbmcgSG9hIEvhu7MsIG5o4bqlbiBt4bqhbmggdOG6p20gcXVhbiB0cuG7jW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBIb2EgS+G7syB0cm9uZyB2aeG7h2Mg4bqjbmggaMaw4bufbmcgxJHhur9uIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGtow6FjLg0KDQpYdSB2w6AgSGFtb3JpICgyMDEyKSDEkcOjIHThuq1wIHRydW5nIHbDoG8gbeG7kWkgbGnDqm4ga+G6v3QgxJHhu5luZyBnaeG7r2EgY8OhYyBxdeG7kWMgZ2lhIEJSSUMgdsOgIEhvYSBL4buzLCBz4butIGThu6VuZyBtw7QgaMOsbmggQVIoayktRUdBUkNIKHAscSkgxJHhu4MgcGjDom4gdMOtY2ggc+G7sSB0cnV54buBbiBk4bqrbiBnacOhIGPhu5UgcGhp4bq/dSBxdeG7kWMgdOG6vy4gS+G6v3QgcXXhuqMgY+G7p2EgbmdoacOqbiBj4bupdSBjaG8gdGjhuqV5IHPhu7Egc3V5IHnhur91IHRyb25nIHPhu7EgdHJ1eeG7gW4gZOG6q24gbsOgeSB0cm9uZyBnaWFpIMSRb+G6oW4ga2jhu6duZyBob+G6o25nIHTDoGkgY2jDrW5oIEhvYSBL4buzIDIwMDjigJMwOSwgY2hvIHRo4bqleSBz4buxIHTDoWMgxJHhu5luZyBt4bqhbmggbeG6vSBj4bunYSBjw6FjIHPhu7Ega2nhu4duIHTDoGkgY2jDrW5oIGzhu5tuIMSR4bq/biBt4buRaSBsacOqbiBr4bq/dCBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcuDQoNCkd1cHRhIHbDoCBHdWlkaSAoMjAxMikgxJHDoyBuZ2hpw6puIGPhu6l1IG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIOG6pG4gxJDhu5kgdsOgIGJhIHRo4buLIHRyxrDhu51uZyBwaMOhdCB0cmnhu4NuIGPhu6dhIGNow6J1IMOBIGLhurFuZyBjw6FjIHBoxrDGoW5nIHBow6FwIMSR4buTbmcgdMOtY2ggaOG7o3AgRW5nbGUtR3JhbmdlciB2w6AgbcO0IGjDrG5oIERDQy1HQVJDSC4gS+G6v3QgcXXhuqMgbmdoacOqbiBj4bupdSBjaG8gdGjhuqV5IGPDsyBz4buxIG3hu5FpIHF1YW4gaOG7hyBuZ+G6r24gaOG6oW4gdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4ga2jhu6duZyBob+G6o25nIG5oxrBuZyBraMO0bmcgY8OzIG3hu5FpIHF1YW4gaOG7hyBkw6BpIGjhuqFuIG3huqFuaCBt4bq9IGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBuw6B5Lg0KDQpLYXJhbmFzb3MgdsOgIGPDoWMgY+G7mW5nIHPhu7EgKDIwMTQpIMSRw6Mgw6FwIGThu6VuZyBtw7QgaMOsbmggQVItRENDLUZJQVBBUkNIIMSR4buDIHBow6JuIHTDrWNoIHTDoW0gY2jhu4kgc+G7kSBs4bujaSBzdeG6pXQgdGhlbyBuZ8OgeSBj4bunYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBs4bubbiB04burIG7Eg20gMTk4OCDEkeG6v24gMjAxMC4gS+G6v3QgcXXhuqMgY2hvIHRo4bqleSBz4buxIHThu5NuIHThuqFpIGPhu6dhIGPDoWMgbeG7kWkgdMawxqFuZyBxdWFuIHRoYXkgxJHhu5VpIHRoZW8gdGjhu51pIGdpYW4gdsOgIHPhu7EgbGFuIHThu49hIGJp4bq/biDEkeG7mW5nLCDEkeG6t2MgYmnhu4d0IHRyb25nIGPDoWMgY3Xhu5ljIGto4bunbmcgaG/huqNuZyB0w6BpIGNow61uaCBuxINtIDE5OTcgdsOgIDIwMDguDQoNClJvY2tpbmdlciB2w6AgSm9uZGVhdSAoMjAwMSkgxJHDoyBz4butIGThu6VuZyBo4buNIFBsYWNrZXR0IGNvcHVsYSDEkeG7gyBuZ2hpw6puIGPhu6l1IHPhu7EgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuIGNow6J1IMOCdSwgYmFvIGfhu5NtIENBQzQwIChQaMOhcCksIERBWCAoxJDhu6ljKSwgTmlra2VpIDIyNSAoTmjhuq10IELhuqNuKSB2w6AgUyZQNTAwIChIb2EgS+G7sykuIEvhur90IHF14bqjIGNobyB0aOG6pXkgc+G7sSBwaOG7pSB0aHXhu5ljIG3huqFuaCBt4bq9IGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBjaMOidSDDgnUgdsOgIHRo4bqlcCBoxqFuIOG7nyBjw6FjIGNo4buJIHPhu5EgUyZQNTAwIHbDoCBOaWtrZWkgMjI1IGvhu4MgdOG7qyBuaOG7r25nIG7Eg20gOTAuDQoNCkJhc2hlciB2w6AgY8OhYyBj4buZbmcgc+G7sSAoMjAxNCkgxJHDoyBuZ2hpw6puIGPhu6l1IHPhu7EgcGjhu6UgdGh14buZYyBj4bunYSBwaMOibiBwaOG7kWkgbOG7o2kgbmh14bqtbiBoYWkgYmnhur9uIHRyw6puIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIOG7nyBjw6FjIG7GsOG7m2MgVsO5bmcgduG7i25oIOG6oiBS4bqtcCBi4bqxbmcgY8OhYyBsb+G6oWkgY+G6pXUgdHLDumMgcGjhu6UgdGh14buZYyBraMOhYyBuaGF1IHThu6sgaOG7jSBDb3B1bGEsIGJhbyBn4buTbSBHYXVzc2lhbiwgdCBTdHVkZW50IHbDoCBKb2UgQ2xheXRvbi4gTmdoacOqbiBj4bupdSBjaG8gdGjhuqV5IHPhu7EgcGjhu6UgdGh14buZYyBjw7MgxJFp4buBdSBraeG7h24gY8OzIHh1IGjGsOG7m25nIGtow7RuZyBob8OgbiB0b8OgbiDEkeG7kWkgeOG7qW5nLCB24bubaSBz4buxIHBo4bulIHRodeG7mWMgxJF1w7RpIGTGsOG7m2kgbOG7m24gaMahbiBzbyB24bubaSDEkXXDtGkgdHLDqm4uDQoNCkJvdWR0IHbDoCBTd2Fuc29uICgyMDE1KSDDoXAgZOG7pW5nIG3DtCBow6xuaCBjb3B1bGEgY8OzIMSRaeG7gXUga2nhu4duIMSR4buDIHBow6JuIHTDrWNoIHPhu7EgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gcXXhu5FjIHThur8gdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4gYmnhur9uIMSR4buZbmcga2jDoWMgbmhhdS4gS+G6v3QgcXXhuqMgbmdoacOqbiBj4bupdSBjaG8gdGjhuqV5IHPhu7EgcGjhu6UgdGh14buZYyBjw7MgxJFp4buBdSBraeG7h24gY8OzIHRo4buDIHRoYXkgxJHhu5VpIHRoZW8gdGjhu51pIGdpYW4gdsOgIMSRaeG7gXUga2nhu4duIHRo4buLIHRyxrDhu51uZywgxJHhurdjIGJp4buHdCB0cm9uZyBjw6FjIHRo4budaSBr4buzIGto4bunbmcgaG/huqNuZywgY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHPDonUgc+G6r2MgduG7gSBz4buxIGvhur90IG7hu5FpIHRvw6BuIGPhuqd1IGPhu6dhIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuLg0KDQpaaGFuZyB2w6AgQ2hhbiAoMjAxOCkgxJHDoyBz4butIGThu6VuZyBwaMawxqFuZyBwaMOhcCBjb3B1bGEgxJHhu4MgcGjDom4gdMOtY2ggc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gY2jDonUgw4EgdsOgIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBN4bu5IHRyb25nIGdpYWkgxJFv4bqhbiAyMDAw4oCTMjAxNi4gTmdoacOqbiBj4bupdSBjaOG7iSByYSBy4bqxbmcgc+G7sSBwaOG7pSB0aHXhu5ljIGPDsyDEkWnhu4F1IGtp4buHbiBnaWEgdMSDbmcgdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4ga2jhu6duZyBob+G6o25nIHRvw6BuIGPhuqd1LCB24bubaSBz4buxIGtow6FjIGJp4buHdCByw7UgcuG7h3QgZ2nhu69hIGPDoWMgbG/huqFpIGNvcHVsYSDEkcaw4bujYyBz4butIGThu6VuZy4NCg0KQWxvdWkgdsOgIEtoZWRpcmkgKDIwMTUpIMSRw6Mgw6FwIGThu6VuZyBwaMawxqFuZyBwaMOhcCBjb3B1bGEgxJHhu4MgxJHDoW5oIGdpw6Egc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBj4bunYSBjw6FjIG7hu4FuIGtpbmggdOG6vyBt4bubaSBu4buVaSB2w6AgY8OhYyBu4buBbiBraW5oIHThur8gcGjDoXQgdHJp4buDbiB0cm9uZyBnaWFpIMSRb+G6oW4gMjAwMOKAkzIwMTMuIEvhur90IHF14bqjIGNobyB0aOG6pXkgc+G7sSBwaOG7pSB0aHXhu5ljIMSRdcO0aSBkxrDhu5tpIGNoaeG6v20gxrB1IHRo4bq/IHNvIHbhu5tpIHPhu7EgcGjhu6UgdGh14buZYyDEkXXDtGkgdHLDqm4sIMSR4bq3YyBiaeG7h3QgdHJvbmcgY8OhYyB0aOG7nWkga+G7syBiaeG6v24gxJHhu5luZyBjYW8uDQoNCkNob2kgdsOgIEhhbW1vdWRlaCAoMjAxMSkgxJHDoyBz4butIGThu6VuZyBtw7QgaMOsbmggY29wdWxhIMSR4buDIHBow6JuIHTDrWNoIG3hu5FpIGxpw6puIGvhur90IGdp4buvYSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gY8OhYyBuxrDhu5tjIFRydW5nIMSQw7RuZyB2w6AgQuG6r2MgUGhpIHbhu5tpIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBxdeG7kWMgdOG6vyB0cm9uZyBnaWFpIMSRb+G6oW4gMTk5NeKAkzIwMDguIE5naGnDqm4gY+G7qXUgY2hvIHRo4bqleSBz4buxIHBo4bulIHRodeG7mWMgY8OzIMSRaeG7gXUga2nhu4duIGdpYSB0xINuZyB0cm9uZyBjw6FjIGdpYWkgxJFv4bqhbiBraOG7p25nIGhv4bqjbmcgdsOgIHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBjw6FjIGtodSB24buxYyDEkeG7i2EgbMO9Lg0KDQpEZWdpYW5uYWtpcyB2w6AgQ2hhdHppZ2Vvcmdpb3UgKDIwMTkpIMOhcCBk4bulbmcgcGjGsMahbmcgcGjDoXAgY29wdWxhIMSR4buDIHBow6JuIHTDrWNoIHPhu7EgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gY+G7p2EgY8OhYyBxdeG7kWMgZ2lhIHBow6F0IHRyaeG7g24gdsOgIMSRYW5nIHBow6F0IHRyaeG7g24gdHJvbmcgZ2lhaSDEkW/huqFuIDIwMDTigJMyMDE2LiBL4bq/dCBxdeG6oyBuZ2hpw6puIGPhu6l1IGNo4buJIHJhIHLhurFuZyBz4buxIHBo4bulIHRodeG7mWMgY8OzIMSRaeG7gXUga2nhu4duIGPDsyBz4buxIGtow6FjIGJp4buHdCBnaeG7r2EgY8OhYyBuaMOzbSBxdeG7kWMgZ2lhLCB24bubaSBt4buRaSBsacOqbiBr4bq/dCBjaOG6t3QgY2jhur0gaMahbiB0cm9uZyBjw6FjIHRo4budaSBr4buzIGJp4bq/biDEkeG7mW5nIGNhbyB2w6Aga2jhu6duZyBob+G6o25nLg0KDQojIyAyLjQgVMOzbSB04bqvdCBjw6FjIG5naGnDqm4gY+G7qXUgdHLGsOG7m2MgxJHDsw0KDQp8ICoqVMOhYyBnaeG6oyoqICAgICAgICB8ICoqTsSDbSoqIHwgKipQaMawxqFuZyBwaMOhcCoqICAgICAgICAgICAgICAgICAgICAgICAgIHwgKirEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdSoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipL4bq/dCBxdeG6oyBjaMOtbmgqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgSGFtYW8sIE1hc3VsaXMsIHbDoCBOZyB8IDE5OTAgICAgfCBHQVJDSCDEkWEgYmnhur9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gVG9reW8sIExvbmRvbiwgTmV3IFlvcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGFuIHThu49hIGJp4bq/biDEkeG7mW5nIHThu6sgTmV3IFlvcmsgxJHhur9uIFRva3lvLCBMb25kb24gxJHhur9uIFRva3lvLCB2w6AgTmV3IFlvcmsgxJHhur9uIExvbmRvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCBMb25naW4gdsOgIFNvbG5payAgfCAxOTk1ICAgIHwgR0FSQ0goMSwxKSDEkWEgYmnhur9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIEhvYSBL4buzLCBDYW5hZGEsIE5o4bqtdCBC4bqjbiwgxJDhu6ljLCBBbmgsIFBow6FwLCBUaOG7pXkgxJBp4buDbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBN4buRaSB0xrDGoW5nIHF1YW4gZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGdpYSB0xINuZyB0cm9uZyBjw6FjIGdpYWkgxJFv4bqhbiBiaeG6v24gxJHhu5luZyBjYW8gY+G7p2EgdGjhu4sgdHLGsOG7nW5nIEhvYSBL4buzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCBYdSAmIEhhbW9yaSAgICAgICAgfCAyMDEyICAgIHwgQVIoayktRUdBUkNIKHAscSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDw6FjIG7GsOG7m2MgQlJJQyAoQnJhemlsLCBOZ2EsIOG6pG4gxJDhu5ksIFRydW5nIFF14buRYykgdsOgIEhvYSBL4buzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFPhu7EgdHJ1eeG7gW4gZOG6q24gZ2nDoSBj4buVIHBoaeG6v3UgcXXhu5FjIHThur8gc3V5IHnhur91IHRyb25nIGdpYWkgxJFv4bqhbiBraOG7p25nIGhv4bqjbmcgdMOgaSBjaMOtbmggSG9hIEvhu7MgMjAwOOKAkzA5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IEd1cHRhICYgR3VpZGkgICAgICB8IDIwMTIgICAgfCDEkOG7k25nIHTDrWNoIGjhu6NwIEVuZ2xlLUdyYW5nZXIsIERDQy1HQVJDSCAgICAgICAgICAgfCBUaOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4g4bqkbiDEkOG7mSwgSOG7k25nIEvDtG5nLCBOaOG6rXQgQuG6o24sIFNpbmdhcG9yZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBN4buRaSBxdWFuIGjhu4cgbmfhuq9uIGjhuqFuIHRyb25nIGdpYWkgxJFv4bqhbiBraOG7p25nIGhv4bqjbmcgbmjGsG5nIGtow7RuZyBjw7MgbeG7kWkgcXVhbiBo4buHIGTDoGkgaOG6oW4gbeG6oW5oIG3hur0gZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIG7DoHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IEthcmFuYXNvcyBldCBhbC4gICB8IDIwMTQgICAgfCBBUi1EQ0MtRklBUEFSQ0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDw6FjIGNo4buJIHPhu5EgbOG7o2kgc3XhuqV0IGPhu6dhIGPDoWMgdGjhu4sgdHLGsOG7nW5nIEFuaCwgTeG7uSwgxJDhu6ljLCBQaMOhcCwgTmjhuq10IELhuqNuLCBTaW5nYXBvcmUsIEjhu5NuZyBLw7RuZywgQ2FuYWRhIHThu6sgbsSDbSAxOTg4IMSR4bq/biAyMDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBN4buRaSB0xrDGoW5nIHF1YW4gdGhheSDEkeG7lWkgdGhlbyB0aOG7nWkgZ2lhbiwgbeG6oW5oIG3hur0gaMahbiB0cm9uZyBjw6FjIGN14buZYyBraOG7p25nIGhv4bqjbmcgdMOgaSBjaMOtbmggbsSDbSAxOTk3IHbDoCAyMDA4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCBSb2NraW5nZXIgJiBKb25kZWF1IHwgMjAwMSAgICB8IFBsYWNrZXR0IGNvcHVsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ8OhYyBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuIGNow6J1IMOCdTogQ0FDNDAgKFBow6FwKSwgREFYICjEkOG7qWMpLCBOaWtrZWkgMjI1IChOaOG6rXQgQuG6o24pLCBTJlA1MDAgKEhvYSBL4buzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFPhu7EgcGjhu6UgdGh14buZYyBt4bqhbmggZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIGNow6J1IMOCdSB2w6AgdGjhuqVwIGjGoW4g4bufIFMmUDUwMCB2w6AgTmlra2VpIDIyNSBr4buDIHThu6sgbmjhu69uZyBuxINtIDkwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwgQmFzaGVyIGV0IGFsLiAgICAgIHwgMjAxNCAgICB8IEdhdXNzaWFuLCB0IFN0dWRlbnQsIEpvZSBDbGF5dG9uIGNvcHVsYSAgICAgICAgICB8IEPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIOG7nyBjw6FjIG7GsOG7m2MgVsO5bmcgduG7i25oIOG6oiBS4bqtcCB0cm9uZyBnaWFpIMSRb+G6oW4gMjAwNOKAkzIwMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBT4buxIHBo4bulIHRodeG7mWMgY8OzIMSRaeG7gXUga2nhu4duIGtow7RuZyBob8OgbiB0b8OgbiDEkeG7kWkgeOG7qW5nLCB24bubaSBz4buxIHBo4bulIHRodeG7mWMgxJF1w7RpIGTGsOG7m2kgbOG7m24gaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSBz4buxIHBo4bulIHRodeG7mWMgxJF1w7RpIHRyw6puLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCBCb3VkdCAmIFN3YW5zb24gICAgfCAyMDE1ICAgIHwgQ29wdWxhIGPDsyDEkWnhu4F1IGtp4buHbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gcXXhu5FjIHThur8gdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4gYmnhur9uIMSR4buZbmcga2jDoWMgbmhhdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFPhu7EgcGjhu6UgdGh14buZYyBjw7MgxJFp4buBdSBraeG7h24gdGhheSDEkeG7lWkgdGhlbyB0aOG7nWkgZ2lhbiB2w6AgxJFp4buBdSBraeG7h24gdGjhu4sgdHLGsOG7nW5nLCDEkeG6t2MgYmnhu4d0IHRyb25nIGPDoWMgdGjhu51pIGvhu7Mga2jhu6duZyBob+G6o25nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCBaaGFuZyAmIENoYW4gICAgICAgfCAyMDE4ICAgIHwgQ29wdWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIGNow6J1IMOBIHbDoCB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gTeG7uSB0cm9uZyBnaWFpIMSRb+G6oW4gMjAwMOKAkzIwMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFPhu7EgcGjhu6UgdGh14buZYyBjw7MgxJFp4buBdSBraeG7h24gZ2lhIHTEg25nIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGto4bunbmcgaG/huqNuZyB0b8OgbiBj4bqndSwgduG7m2kgc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIGPDoWMgbG/huqFpIGNvcHVsYS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IEFsb3VpICYgS2hlZGlyaSAgICB8IDIwMTUgICAgfCBDb3B1bGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBj4bunYSBjw6FjIG7hu4FuIGtpbmggdOG6vyBt4bubaSBu4buVaSB2w6AgY8OhYyBu4buBbiBraW5oIHThur8gcGjDoXQgdHJp4buDbiB0cm9uZyBnaWFpIMSRb+G6oW4gMjAwMOKAkzIwMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU+G7sSBwaOG7pSB0aHXhu5ljIMSRdcO0aSBkxrDhu5tpIGNoaeG6v20gxrB1IHRo4bq/IHNvIHbhu5tpIMSRdcO0aSB0csOqbiwgxJHhurdjIGJp4buHdCB0cm9uZyBjw6FjIHRo4budaSBr4buzIGJp4bq/biDEkeG7mW5nIGNhby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwgQ2hvaSAmIEhhbW1vdWRlaCAgIHwgMjAxMSAgICB8IENvcHVsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIFRydW5nIMSQw7RuZyB2w6AgQuG6r2MgUGhpIHbhu5tpIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBxdeG7kWMgdOG6vyB0cm9uZyBnaWFpIMSRb+G6oW4gMTk5NeKAkzIwMDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFPhu7EgcGjhu6UgdGh14buZYyBjw7MgxJFp4buBdSBraeG7h24gZ2lhIHTEg25nIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGto4bunbmcgaG/huqNuZyB2w6Agc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIGPDoWMga2h1IHbhu7FjIMSR4buLYSBsw70uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCBEZWdpYW5uYWtpcyAmIENoYXR6aWdlb3JnaW91IHwgMjAxOSB8IENvcHVsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIGPhu6dhIGPDoWMgcXXhu5FjIGdpYSBwaMOhdCB0cmnhu4NuIHbDoCDEkWFuZyBwaMOhdCB0cmnhu4NuIHRyb25nIGdpYWkgxJFv4bqhbiAyMDA04oCTMjAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFPhu7EgcGjhu6UgdGh14buZYyBjw7MgxJFp4buBdSBraeG7h24gY8OzIHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBjw6FjIG5ow7NtIHF14buRYyBnaWEsIHbhu5tpIG3hu5FpIGxpw6puIGvhur90IGNo4bq3dCBjaOG6vSBoxqFuIHRyb25nIGPDoWMgdGjhu51pIGvhu7MgYmnhur9uIMSR4buZbmcgY2FvIHbDoCBraOG7p25nIGhv4bqjbmcuIHwNCg0KIyAqKkNIxq/GoE5HIDMgROG7riBMSeG7hlUgVsOAIFBIxq/GoE5HIFBIw4FQIE5HSEnDik4gQ+G7qFUqKg0KDQojIyAzLjEgROG7ryBsaeG7h3UgbmdoacOqbiBj4bupdQ0KDQpE4buvIGxp4buHdSBuZ2hpw6puIGPhu6l1IMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIGLDoGkgdGnhu4N1IGx14bqtbiBsw6AgaGFpIGNodeG7l2kgdOG7tyBzdeG6pXQgbOG7o2kgbmh14bqtbiBj4bunYSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gVmnhu4d0IE5hbSwgxJHhuqFpIGRp4buHbiBi4bufaSBjaOG7iSBz4buRIFZOSU5ERVgsIHbDoCB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gSMOgbiBRdeG7kWMsIMSR4bqhaSBkaeG7h24gYuG7n2kgY2jhu4kgc+G7kSBLT1NQSS4gR2lhaSDEkW/huqFuIG5naGnDqm4gY+G7qXUga8OpbyBkw6BpIHThu6sgbmfDoHkgMzEgdGjDoW5nIDEgbsSDbSAyMDE4IMSR4bq/biBuZ8OgeSAzMSB0aMOhbmcgNyBuxINtIDIwMjQuIA0KDQpOZ2hpw6puIGPhu6l1IMSRxrDhu6NjIHRoaeG6v3Qga+G6vyDEkeG7gyDEkW8gbMaw4budbmcgbeG7qWMgxJHhu5kgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgY8O6IHPhu5FjIGtpbmggdOG6vywgY2hpYSB0aMOgbmggYuG7kW4gZ2lhaSDEkW/huqFuIGNow61uaDoNCg0KLSAqKkdpYWkgxJFv4bqhbiB0csaw4bubYyBjw6FjIGPDuiBz4buRYyBraW5oIHThur8qKjogVOG7qyDEkeG6p3UgbsSDbSAyMDE4IMSR4bq/biBjdeG7kWkgbsSDbSAyMDE5Lg0KLSAqKkdpYWkgxJFv4bqhbiB0cm9uZyBk4buLY2ggQ292aWQtMTkqKjogVOG7qyDEkeG6p3UgbsSDbSAyMDIwIMSR4bq/biBjdeG7kWkgbsSDbSAyMDIxLg0KLSAqKkdpYWkgxJFv4bqhbiB4dW5nIMSR4buZdCBOZ2EtVWtyYWluZSoqOiBU4burIMSR4bqndSBuxINtIDIwMjIgxJHhur9uIHRow6FuZyAyIG7Eg20gMjAyMy4NCi0gKipHaWFpIMSRb+G6oW4gc2F1IGPDuiBz4buRYyoqOiBU4burIHRow6FuZyAzIG7Eg20gMjAyMyDEkeG6v24gxJHhuqd1IHRow6FuZyA3IG7Eg20gMjAyNC4NCg0KR2nDoSBj4bunYSBoYWkgY2jhu4kgc+G7kSBjaOG7qW5nIGtob8OhbiDEkcaw4bujYyB0aHUgdGjhuq1wIHThu6sgdHJhbmcgd2ViIFtpbnZlc3RpbmcuY29tXShodHRwczovL2ludmVzdGluZy5jb20pLiBU4bu3IHN14bqldCBs4bujaSBuaHXhuq1uIMSRxrDhu6NjIHTDrW5oIHRoZW8gY8O0bmcgdGjhu6ljIFwoIFJfdCA9IFxsbihQX3QpIC0gXGxuKFBfe3QtMX0pIFwpLCB24bubaSBcKCBQX3QgXCkgbMOgIGdpw6EgY2jhu4kgc+G7kSBjaOG7qW5nIGtob8OhbiB04bqhaSB0aOG7nWkgxJFp4buDbSBcKCB0IFwpLg0KDQojIyAzLjIgUGjGsMahbmcgcGjDoXAgbmdoacOqbiBj4bupdSANCg0KIyMjIDMuMi4xIE3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gY8OzIMSRaeG7gXUga2nhu4duIGPhu6dhIGNodeG7l2kgbOG7o2kgc3XhuqV0IA0KDQpUcm9uZyBuZ2hpw6puIGPhu6l1IG7DoHksIG3DtCBow6xuaCBHbG9zdGVuLUphZ2FubmF0aGFuLVJ1bmtsZSBHQVJDSCAoR0pSLUdBUkNIKHIsbSkpIHbhu5tpIGzhu6NpIG5odeG6rW4gdHJ1bmcgYsOsbmggdGhlbyBxdXkgdHLDrG5oIHThu7EgaOG7k2kgcXV5IEFSTUEocCxxKSDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBtw7QgaMOsbmggaMOzYSBt4buXaSBjaHXhu5dpIGzhu6NpIHN14bqldC4gTcO0IGjDrG5oIG7DoHksIMSRxrDhu6NjIMSR4buBIHh14bqldCBi4bufaSBFbmdsZSAmIE5nICgxOTkzKSB2w6AgR2xvc3RlbiAmIGPhu5luZyBz4buxICgxOTkzKSwgbMOgIG3hu5l0IG3hu58gcuG7mW5nIGPhu6dhIG3DtCBow6xuaCBHQVJDSCB0cnV54buBbiB0aOG7kW5nLCBjaG8gcGjDqXAgdHJ1bmcgYsOsbmggY8OzIMSRaeG7gXUga2nhu4duIHBo4bulIHRodeG7mWMgdHLhu7FjIHRp4bq/cCB2w6BvIHBoxrDGoW5nIHNhaSBjw7MgxJFp4buBdSBraeG7h24uIE3DtCBow6xuaCBHSlItR0FSQ0ggY8OzIGto4bqjIG7Eg25nIHBo4bqjbiDDoW5oIGhp4buHdSDhu6luZyDEkcOybiBi4bqpeSwgdGjhu4MgaGnhu4duIHPhu7EgYmnhur9uIMSR4buZbmcgaGF5IG3hu6ljIMSR4buZIHBo4bqjbiDhu6luZyBraMOhYyBiaeG7h3QgY+G7p2EgbOG7o2kgc3XhuqV0IMSR4buRaSB24bubaSBjw6FjIGPDuiBz4buRYyDDom0gdsOgIGPDuiBz4buRYyBkxrDGoW5nIHRyxrDhu5tjIMSRw7MuIA0KDQrEkOG7gyBu4bqvbSBi4bqvdCDEkeG6t2MgdMOtbmggxJF1w7RpIGTDoHkgdsOgIGLhuqV0IMSR4buRaSB44bupbmcgY+G7p2EgaMOgbSBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQgY+G7p2EgY8OhYyBjaHXhu5dpIGzhu6NpIHN14bqldCwgbmdoacOqbiBj4bupdSBuw6B5IGtow7RuZyBnaeG6oyDEkeG7i25oIHLhurFuZyBwaOG6p24gZMawIGPhu6dhIG3DtCBow6xuaCBjw7MgcGjDom4gcGjhu5FpIGNodeG6qW4gaGF5IHBow6JuIHBo4buRaSBTdHVkZW50LXQuIFRoYXkgdsOgbyDEkcOzLCBuZ2hpw6puIGPhu6l1IHPhu60gZOG7pW5nIGPDoWMgcGjDom4gcGjhu5FpIGLhu5Ugc3VuZyBuaMawIHBow6JuIHBo4buRaSBTa2V3ZWQgU3R1ZGVudC10LCBwaMOibiBwaOG7kWkgbOG7l2kgdOG7lW5nIHF1w6F0IEdFRCwgdsOgIHBow6JuIHBo4buRaSBs4buHY2ggU2tld2VkIEdFRC4gTmjhu69uZyBwaMOibiBwaOG7kWkgbsOgeSBnacO6cCBu4bqvbSBi4bqvdCBjw6FjIMSR4bq3YyDEkWnhu4NtIMSR4bq3YyB0csawbmcgY+G7p2EgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IGPDoWMgY2h14buXaSB0w6BpIHPhuqNuIHTDoGkgY2jDrW5oLg0KDQpH4buNaSBcKCByX3QgXCkgdsOgIFwoIFxzaWdtYV90XjIgXCkgbOG6p24gbMaw4bujdCDEkeG6oWkgZGnhu4duIGNobyBs4bujaSBzdeG6pXQgY2jhu6luZyBraG/DoW4gdsOgIHBoxrDGoW5nIHNhaSBjw7MgxJFp4buBdSBraeG7h24gdOG6oWkgdGjhu51pIMSRaeG7g20gXCggdCBcKS4gTcO0IGjDrG5oIGJpw6puIGNobyBt4buXaSBjaHXhu5dpIGzhu6NpIHN14bqldCBBUk1BKHAscSktR0pSLUdBUkNIKHIsbSkgY8OzIGThuqFuZyBuaMawIHNhdToNCg0KICoqTcO0IGjDrG5oIHRydW5nIGLDrG5oIEFSTUEocCxxKToqKg0KICAgXFsNCiAgIHJfdCA9IGMgKyBcc3VtX3tpPTF9XntwfSBccGhpX2kgcl97dC1pfSArIFxzdW1fe2k9MX1ee3F9IFx0aGV0YV9pIFxlcHNpbG9uX3t0LWl9ICsgXGVwc2lsb25fdA0KICAgXF0NCg0KKipNw7QgaMOsbmggcGjGsMahbmcgc2FpIGPDsyDEkWnhu4F1IGtp4buHbiBHSlItR0FSQ0gocixtKToqKg0KICAgXFsNCiAgIFxzaWdtYV90XjIgPSBcb21lZ2EgKyBcc3VtX3tpPTF9XntyfSBcYWxwaGFfaSBcZXBzaWxvbl97dC1pfV4yICsgXHN1bV97aT0xfV57bX0gXGJldGFfaSBcc2lnbWFfe3QtaX1eMiArIFxnYW1tYSBcc3VtX3tpPTF9XntzfSBcZXBzaWxvbl97dC1pfV4yIFxjZG90IHNfe3QtaX0NCiAgIFxdDQoNCiAgVHJvbmcgxJHDsywgXCggXGdhbW1hIFwpIHRo4buDIGhp4buHbiBoaeG7h3Ug4bupbmcgxJHDsm4gYuG6qXk7IFwoIHNfe3QtaX0gPSAxIFwpIGtoaSBcKCBcZXBzaWxvbl97dC1pfSA8IDAgXCkgdsOgIFwoIHNfe3QtaX0gPSAwIFwpIHRyb25nIHRyxrDhu51uZyBo4bujcCBuZ8aw4bujYyBs4bqhaTsgXCggXGVwc2lsb25fdCBcKSDEkeG6oWkgZGnhu4duIGNobyBzYWkgc+G7kS4gQ8OhYyBwaOG6p24gZMawIGNodeG6qW4gaMOzYSBj4bunYSBt4buXaSBjaHXhu5dpIGzhu6NpIHN14bqldCBcKCB6X3QgXCkgdHXDom4gdGhlbyBjw6FjIGThuqFuZyBwaMOibiBwaOG7kWkgbmjGsCBTa2V3ZWQgU3R1ZGVudC10LCBwaMOibiBwaOG7kWkgR0VEIGhv4bq3YyBwaMOibiBwaOG7kWkgc0dFRC4NCg0KROG7sWEgdHLDqm4gbmdoacOqbiBj4bupdSBj4bunYSBUc2F5ICgyMDEwKSwgcXV5IHRyw6xuaCB4w6FjIMSR4buLbmggbcO0IGjDrG5oIEFSTUEocCxxKS1HSlItR0FSQ0gocixtKSB04buRaSDGsHUgY2hvIG3hu5dpIGNodeG7l2kgbOG7o2kgc3XhuqV0IGJhbyBn4buTbSBi4buRbiBixrDhu5tjIGNow61uaDogDQoNCjEuKipYw6FjIMSR4buLbmggTcO0IEjDrG5oIFRydW5nIELDrG5oKio6IFjDoWMgxJHhu4tuaCBtw7QgaMOsbmggQVJNQShwLHEpIHThu5FpIMawdSBjaG8gZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCB2w6Aga2nhu4NtIHRyYSBjw6FjIHBo4bqnbiBkxrAgxrDhu5tjIGzGsOG7o25nIMSR4buDIHjDoWMgxJHhu4tuaCBz4buxIGhp4buHbiBkaeG7h24gY+G7p2EgaGnhu4d1IOG7qW5nIEFSQ0guIE7hur91IGPDsyBz4buxIGhp4buHbiBkaeG7h24gY+G7p2EgaGnhu4d1IOG7qW5nIEFSQ0gsIG3DtCBow6xuaCBHSlItR0FSQ0ggc+G6vSDEkcaw4bujYyBjaOG7iSDEkeG7i25oLg0KDQoyLioqxq/hu5tjIEzGsOG7o25nIE3DtCBIw6xuaCBHSlItR0FSQ0gqKjogWMOieSBk4buxbmcgdsOgIMaw4bubYyBsxrDhu6NuZyBtw7QgaMOsbmggR0pSLUdBUkNIIGNobyBjw6FjIGNodeG7l2kgcGjhuqduIGTGsC4NCg0KMy4qKktp4buDbSBUcmEgxJDhu5kgUGjDuSBI4bujcCBNw7QgSMOsbmgqKjogxJDDoW5oIGdpw6EgxJHhu5kgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmggdHJ1bmcgYsOsbmggdsOgIG3DtCBow6xuaCBwaMawxqFuZyBzYWkgY8OzIMSRaeG7gXUga2nhu4duIMSRw6MgY2jhu41uLg0KDQo0LioqQ2jhuqluIMSQb8OhbiB2w6AgTOG7sWEgQ2jhu41uIE3DtCBIw6xuaCoqOiANCg0KLSBYZW0geMOpdCBjw6FjIGLhuq1jIHAsIHEgY+G7p2EgbcO0IGjDrG5oIEFSTUEgduG7m2kgYuG6rWMgdOG7kWkgxJFhIGzDoCA1LCBk4buxYSB0csOqbiBwaMawxqFuZyBwaMOhcCDGsOG7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSAoTUxFKSB2w6AgdGnDqnUgY2h14bqpbiB0aMO0bmcgdGluIEFJQyB2w6AgQklDLg0KLSBLaeG7g20gdHJhIHTDrW5oIHBow6JuIHBo4buRaSBjaHXhuqluIGPhu6dhIHBo4bqnbiBkxrAgYuG6sW5nIGtp4buDbSDEkeG7i25oIEphcnF1ZS1CZXJhLg0KLSBLaeG7g20gdHJhIHTDrW5oIGThu6tuZyBj4bunYSBjaHXhu5dpIHBo4bqnbiBkxrAgYuG6sW5nIGtp4buDbSDEkeG7i25oIEF1Z21lbnRlZCBEaWNrZXktRnVsbGVyIChBREYpIHbDoCBraeG7g20gxJHhu4tuaCBLd2lhdGtvd3NraS1QaGlsbGlwcy1TY2htaWR0LVNoaW4gKEtQU1MpLg0KLSBLaeG7g20gdHJhIHPhu7EgaGnhu4duIGRp4buHbiBj4bunYSB04buxIHTGsMahbmcgcXVhbiB0cm9uZyBjaHXhu5dpIHBo4bqnbiBkxrAgdsOgIGLDrG5oIHBoxrDGoW5nIHBo4bqnbiBkxrAgYuG6sW5nIGtp4buDbSDEkeG7i25oIExqdW5nLUJveCBRIHbDoCBRMi4NCi0gS2nhu4NtIHRyYSBoaeG7h3Ug4bupbmcgQVJDSCBi4bqxbmcga2nhu4NtIMSR4buLbmggTGFncmFuZ2UgTXVsdGlwbGllciAoTE0pIGPhu6dhIEVuZ2xlICgxOTgyKS4NCg0KTuG6v3Uga2nhu4NtIMSR4buLbmggTE0gY2jhu4kgcmEgc+G7sSBoaeG7h24gZGnhu4duIGPhu6dhIGhp4buHdSDhu6luZyBBUkNILCBtw7QgaMOsbmggQVJNQSBraMO0bmcgcGjDuSBo4bujcCB2w6AgbcO0IGjDrG5oIEdBUkNIIHPhur0gxJHGsOG7o2Mgw6FwIGThu6VuZy4gTcO0IGjDrG5oIEFSTUEocCxxKS1HSlItR0FSQ0gocixtKSB24bubaSBwaMOibiBwaOG7kWkgcGjDuSBo4bujcCBuaOG6pXQgc+G6vSDEkcaw4bujYyBs4buxYSBjaOG7jW4gZOG7sWEgdsOgbyBjw6FjIHRpw6p1IGNodeG6qW4gdGjDtG5nIHRpbiBBSUMsIEJJQywgU0lDLCB2w6AgSFFJQy4gQ3Xhu5FpIGPDuW5nLCB0aGFtIHPhu5EgY+G7p2EgbcO0IGjDrG5oIEFSTUEocCxxKS1HSlItR0FSQ0gocixtKSB24bubaSBwaMOibiBwaOG7kWkgYmnDqm4gcGjDuSBo4bujcCBz4bq9IMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZy4NCg0KIyMjIDMuMi4yIEtp4buDbSDEkeG7i25oIHTDrW5oIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbg0KDQpTYXUga2hpIGNo4buNbiBtw7QgaMOsbmggQVJNQShwLHEpLUdKUi1HQVJDSChyLG0pIHbhu5tpIHBow6JuIHBo4buRaSBiacOqbiBwaMO5IGjhu6NwIGNobyBjaHXhu5dpIHBo4bqnbiBkxrAgY+G7p2EgY2h14buXaSBs4bujaSBzdeG6pXQsIGLGsOG7m2MgdGnhur9wIHRoZW8gbMOgIHRyw61jaCB4deG6pXQgcGjhuqduIGTGsCBjaHXhuqluIGjDs2EgXCggel90IFwpIHRoZW8gxJFp4buBdSBraeG7h24gXCggXE9tZWdhX3t0LWl9IFwpLiDEkOG7gyBraeG7g20gdHJhIHTDrW5oIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiwgdGjhu7FjIGhp4buHbiBjaHV54buDbiDEkeG7lWkgY2h14buXaSBwaOG6p24gZMawIGNodeG6qW4gaMOzYSBcKCB6X3QgXCkgc2FuZyBnacOhIHRy4buLIHTDrWNoIHBow6JuIHjDoWMgc3XhuqV0IFwoIHVfdCBcKSBi4bqxbmcgY8OhY2ggc+G7rSBk4bulbmcgaMOgbSBwaMOibiBwaOG7kWkgYmnDqm4gdGjhu7FjIG5naGnhu4dtIFwoIEYgXCkuIA0KDQpD4bulIHRo4buDLCBnacOhIHRy4buLIHTDrWNoIHBow6JuIHjDoWMgc3XhuqV0IFwoIHVfdCBcKSDEkcaw4bujYyB0w61uaCB0aGVvIGPDtG5nIHRo4bupYzoNClxbDQp1X3QgPSBGKHpfdCB8IFxPbWVnYV97dC1pfSkNClxdDQp24bubaSBcKCBGKHpfdCB8IFxPbWVnYV97dC1pfSkgXCkgbMOgIGjDoG0gcGjDom4gcGjhu5FpIHRo4buxYyBuZ2hp4buHbSDEkcaw4bujYyDEkeG7gSB4deG6pXQgYuG7n2kgR2VuZXN0ICYgY+G7mW5nIHPhu7EgKDE5OTUpLiDGr+G7m2MgbMaw4bujbmcgcGhpIHRoYW0gc+G7kSBj4bunYSBow6BtIFwoIEYgXCkgxJHGsOG7o2MgeMOhYyDEkeG7i25oIG5oxrAgc2F1Og0KXFsNClxoYXR7Rn0oWl90KSA9IFxmcmFjezF9e1R9IFxzdW1fe3Q9MX1ee1R9IFxtYXRoYmJ7SX0oWl90IFxsZXEgel90KQ0KXF0NClRyb25nIMSRw7MgXCggXG1hdGhiYntJfSBcKSBsw6AgaMOgbSBjaOG7iSBz4buRIChpbmRpY2F0b3IgZnVuY3Rpb24pIHbDoCBcKCBUIFwpIMSR4bqhaSBkaeG7h24gY2hvIGvDrWNoIHRoxrDhu5tjIG3huqt1Lg0KDQrEkOG7gyBraeG7g20gdHJhIGdp4bqjIMSR4buLbmggcuG6sW5nIGPDoWMgYmnhur9uIFwoIHVfdCBcKSBsw6AgxJHhu5ljIGzhuq1wIHbDoCBwaMOibiBwaOG7kWkgxJHhu5NuZyBuaOG6pXQgdHLDqm4ga2hv4bqjbmcgXChbMCwxXVwpLCBz4butIGThu6VuZyBjw6FjIGtp4buDbSDEkeG7i25oIHRo4buRbmcga8OqIHNhdToNCg0KMS4gKipLaeG7g20gxJHhu4tuaCBLb2xtb2dvcm92LVNtaXJub3YgKEstUyk6KioNCiAgIFxbDQogICBLU190ID0gXHNxcnR7XGZyYWN7VH17Mn0gXGludF97MH1eezF9IFxsZWZ0KEZfVCh1KSAtIHVccmlnaHQpXjIgXCwgZHV9DQogICBcXQ0KVHJvbmcgxJHDsyBcKCBGX1QodSkgXCkgbMOgIGjDoG0gcGjDom4gcGjhu5FpIHRo4buxYyBuZ2hp4buHbSBj4bunYSBcKCB1X3QgXCkgdsOgIFwoIFQgXCkgbMOgIGvDrWNoIHRoxrDhu5tjIG3huqt1Lg0KDQoyLiAqKktp4buDbSDEkeG7i25oIENyYW1lci12b24gTWlzZXMgKEN2LU0pOioqDQogICBcWw0KICAgQ3ZNX3QgPSBcZnJhY3sxfXtUfSBcc3VtX3t0PTF9XntUfSBcbGVmdChGX1QodV90KSAtIHVfdFxyaWdodCleMg0KICAgXF0NClRyb25nIMSRw7MgXCggRl9UKHVfdCkgXCkgbMOgIGjDoG0gcGjDom4gcGjhu5FpIHRo4buxYyBuZ2hp4buHbSB2w6AgXCggdV90IFwpIGzDoCBnacOhIHRy4buLIHTDrWNoIHBow6JuIHjDoWMgc3XhuqV0Lg0KDQpO4bq/dSBjw6FjIGtp4buDbSDEkeG7i25oIG7DoHkgY2hvIHRo4bqleSBnaeG6oyDEkeG7i25oIHbhu4Egc+G7sSDEkeG7mWMgbOG6rXAgdsOgIHBow6JuIHBo4buRaSDEkeG7k25nIG5o4bqldCBj4bunYSBjw6FjIGJp4bq/biBcKCB1X3QgXCkgbMOgIGjhu6NwIGzhu4csIGPDoWMgYmnhur9uIFwoIHVfdCBcKSBjw7MgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgbMOgbSDEkeG6p3UgdsOgbyBjaG8gbcO0IGjDrG5oIGNvcHVsYSDEkeG7gyBwaMOibiB0w61jaCBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyBiaeG6v24uIE3DtCBow6xuaCBjb3B1bGEgdsOgIGPDoWMgdMOtbmggY2jhuqV0IGPhu6dhIGNow7puZyBz4bq9IMSRxrDhu6NjIHRyw6xuaCBiw6B5IGNoaSB0aeG6v3QgdHJvbmcgcGjhuqduIHRp4bq/cCB0aGVvIGPhu6dhIGLDoGkgdmnhur90Lg0KDQojIyMgMy4yLjMgxq/hu5tjIGzGsOG7o25nIGPDoWMgdGhhbSBz4buRIGNobyBtw7QgaMOsbmggQ29wdWxhDQoNCsav4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EgY2hvIG3DtCBow6xuaCBjb3B1bGEgxJHGsOG7o2MgdGjhu7FjIGhp4buHbiBi4bqxbmcgcGjGsMahbmcgcGjDoXAgc3V5IGx14bqtbiBj4bqtbiBiacOqbiAoSUZNIC0gSW5mZXJlbmNlIGZvciBNYXJnaW5zKS4gUGjGsMahbmcgcGjDoXAgbsOgeSBjaG8gcGjDqXAgcGjDom4gdMOhY2ggdmnhu4djIMaw4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EgY+G7p2EgaMOgbSBwaMOibiBwaOG7kWkgYmnDqm4gdsOgIHRoYW0gc+G7kSBj4bunYSBjb3B1bGEsIMSR4bq3YyBiaeG7h3QgaOG7r3Ugw61jaCBjaG8gY8OhYyBtw7QgaMOsbmggxJFp4buBdSBraeG7h24gcGjhu6ljIHThuqFwIGjGoW4uIFF1w6EgdHLDrG5oIElGTSBiYW8gZ+G7k206DQoNCjEuICoqxq/hu5tjIGzGsOG7o25nIHRoYW0gc+G7kSBj4bunYSBow6BtIHBow6JuIHBo4buRaSBiacOqbioqOiBU4buRaSDEkWEgaMOzYSBow6BtIGxvZy1saWtlbGlob29kIGPhu6dhIGPDoWMgcGjDom4gcGjhu5FpIGJpw6puIGLhurFuZyBwaMawxqFuZyBwaMOhcCBNTEUgaG/hurdjIHBoxrDGoW5nIHBow6FwIG1vbWVudHMuDQoyLiAqKsav4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EgY+G7p2EgY29wdWxhKio6IEThu7FhIHRyw6puIGPDoWMgZ2nDoSB0cuG7iyB0w61jaCBwaMOibiB4w6FjIHN14bqldCB04burIGPDoWMgcGjDom4gcGjhu5FpIGJpw6puIMSRw6MgxrDhu5tjIGzGsOG7o25nLCB04buRaSDEkWEgaMOzYSBow6BtIGxvZy1saWtlbGlob29kIGPhu6dhIGNvcHVsYS4NCg0KUGjGsMahbmcgcGjDoXAgSUZNIGdpw7pwIHjhu60gbMO9IGPDoWMgbcO0IGjDrG5oIMSRaeG7gXUga2nhu4duIHBo4bupYyB04bqhcCBi4bqxbmcgY8OhY2ggxrDhu5tjIGzGsOG7o25nIHJpw6puZyBiaeG7h3QgY2hvIGPDoWMgdGjDoG5oIHBo4bqnbiBj4bunYSBjb3B1bGEgdsOgIHBow6JuIHBo4buRaSBiacOqbiwgdOG7qyDEkcOzIGN1bmcgY+G6pXAgY8OhaSBuaMOsbiBzw6J1IHPhuq9jIGjGoW4gduG7gSBjw6FjIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIHRyb25nIGThu68gbGnhu4d1Lg0KIA0KICoqQsaw4bubYyAxOiDGr+G7m2MgTMaw4bujbmcgVGhhbSBT4buRIGPhu6dhIEjDoG0gUGjDom4gUGjhu5FpIEJpw6puKiogOiBUcsaw4bubYyB0acOqbiwgY8OhYyB0aGFtIHPhu5EgY+G7p2EgaMOgbSBwaMOibiBwaOG7kWkgYmnDqm4gY2hvIHThu6tuZyBiaeG6v24gxJHhu5ljIGzhuq1wIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZy4gQ8OhYyBwaMawxqFuZyBwaMOhcCBwaOG7lSBiaeG6v24gxJHhu4MgdGjhu7FjIGhp4buHbiDEkWnhu4F1IG7DoHkgYmFvIGfhu5NtOg0KDQotICoqxq/hu5tjIGzGsOG7o25nIEjhu6NwIGzDvSBD4buxYyDEkeG6oWkgKE1MRSAtIE1heGltdW0gTGlrZWxpaG9vZCBFc3RpbWF0aW9uKSoqOiBQaMawxqFuZyBwaMOhcCBuw6B5IHThu5FpIMawdSBow7NhIGjDoG0gbG9nLWxpa2VsaWhvb2QgxJHhu4MgdMOsbSBjw6FjIHRoYW0gc+G7kSBj4bunYSBwaMOibiBwaOG7kWkgYmnDqm4uIMSQ4buRaSB24bubaSBt4buXaSBiaeG6v24gxJHhu5ljIGzhuq1wLCBow6BtIGxvZy1saWtlbGlob29kIMSRxrDhu6NjIHThu5FpIMSRYSBow7NhIG5oxrAgc2F1Og0KICBcWw0KICBcaGF0e1x0aGV0YX1eMSA9IFxhcmdcbWF4X3tcdGhldGFfMX0gXHN1bV97dD0xfV57VH0gXGxvZyBmXzEoel97MXR9IFxtaWQgXE9tZWdhX3t0LTF9LCBcdGhldGFfMSkNCiAgXF0NCiAgXFsNCiAgXGhhdHtcdGhldGF9XjIgPSBcYXJnXG1heF97XHRoZXRhXzJ9IFxzdW1fe3Q9MX1ee1R9IFxsb2cgZl8yKHpfezJ0fSBcbWlkIFxPbWVnYV97dC0xfSwgXHRoZXRhXzIpDQogIFxdDQogIFRyb25nIMSRw7MsIFwoIGZfMSBcKSB2w6AgXCggZl8yIFwpIGzDoCBow6BtIG3huq10IMSR4buZIHjDoWMgc3XhuqV0IChQREYpIGPhu6dhIGPDoWMgcGjDom4gcGjhu5FpIGJpw6puLCB2w6AgXCggXHRoZXRhXzEgXCkgdsOgIFwoIFx0aGV0YV8yIFwpIGzDoCBjw6FjIHRoYW0gc+G7kSBj4bunYSBow6BtIHBow6JuIHBo4buRaSBiacOqbi4NCg0KLSAqKlBoxrDGoW5nIHBow6FwIE1vbWVudHMqKjogxJDDonkgbMOgIHBoxrDGoW5nIHBow6FwIHRoYXkgdGjhur8gbuG6v3UgY+G6p24gxrDhu5tjIGzGsOG7o25nIGPDoWMgdGhhbSBz4buRIGThu7FhIHRyw6puIGPDoWMgbcO0b21lbnRzIGPhu6dhIHBow6JuIHBo4buRaS4NCg0KU2F1IGtoaSDGsOG7m2MgbMaw4bujbmcgY8OhYyB0aGFtIHPhu5EgY+G7p2EgcGjDom4gcGjhu5FpIGJpw6puLCBjaMO6bmcgdGEgdGh1IMSRxrDhu6NjIGPDoWMgZ2nDoSB0cuG7iyBcKCBcaGF0e1x0aGV0YX1eMSBcKSB2w6AgXCggXGhhdHtcdGhldGF9XjIgXCkgY2hvIGPDoWMgcGjDom4gcGjhu5FpIGJpw6puIHTGsMahbmcg4bupbmcuDQoNCioqQsaw4bubYyAyOiDGr+G7m2MgTMaw4bujbmcgVGhhbSBT4buRIGPhu6dhIENvcHVsYSoqIDogU2F1IGtoaSDGsOG7m2MgbMaw4bujbmcgY8OhYyB0aGFtIHPhu5EgY+G7p2EgaMOgbSBwaMOibiBwaOG7kWkgYmnDqm4sIGNow7puZyB0YSBjaHV54buDbiBzYW5nIMaw4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EgY+G7p2EgY29wdWxhLiBIw6BtIGNvcHVsYSBtw7QgdOG6oyBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wLiANCg0KxJDhu4MgdGjhu7FjIGhp4buHbiDGsOG7m2MgbMaw4bujbmcgdGhhbSBz4buRIGPhu6dhIGNvcHVsYSwgY2jDum5nIHRhIHPhu60gZOG7pW5nIGPDoWMgZ2nDoSB0cuG7iyB0w61jaCBwaMOibiB4w6FjIHN14bqldCBcKCBGXzEgXCkgdsOgIFwoIEZfMiBcKSDEkcOjIMSRxrDhu6NjIHTDrW5oIHThu6sgaMOgbSBwaMOibiBwaOG7kWkgYmnDqm4uIEjDoG0gbG9nLWxpa2VsaWhvb2QgY+G7p2EgY29wdWxhIMSRxrDhu6NjIHThu5FpIMSRYSBow7NhIG5oxrAgc2F1Og0KXFsNClxoYXR7XHRoZXRhfV5jID0gXGFyZ1xtYXhfe1x0aGV0YV9jfSBcc3VtX3t0PTF9XntUfSBcbG9nIGNcbGVmdChGXzEoel97MXR9IFxtaWQgXE9tZWdhX3t0LTF9OyBcaGF0e1x0aGV0YX1eMSksIEZfMih6X3sydH0gXG1pZCBcT21lZ2Ffe3QtMX07IFxoYXR7XHRoZXRhfV4yKTsgXHRoZXRhX2NccmlnaHQpDQpcXQ0KVHJvbmcgxJHDsywgXCggYyBcKSBsw6AgaMOgbSBt4bqtdCDEkeG7mSB4w6FjIHN14bqldCBj4bunYSBjb3B1bGEsIFwoIFxoYXR7XHRoZXRhfV4xIFwpIHbDoCBcKCBcaGF0e1x0aGV0YX1eMiBcKSBsw6AgY8OhYyB0aGFtIHPhu5EgY+G7p2EgcGjDom4gcGjhu5FpIGJpw6puIMSRw6MgxrDhu5tjIGzGsOG7o25nIHRyxrDhu5tjIMSRw7MsIHbDoCBcKCBcdGhldGFfYyBcKSBsw6AgY8OhYyB0aGFtIHPhu5EgY+G7p2EgY29wdWxhIGPhuqduIMaw4bubYyBsxrDhu6NuZy4NCg0KIyMjIDMuMi40IEzhu7FhIGNo4buNbiBtw7QgaMOsbmggcGjDuSBo4bujcA0KDQpTYXUga2hpIMaw4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EsIGPDoWMgbcO0IGjDrG5oIGNvcHVsYSBj4bqnbiDEkcaw4bujYyDEkcOhbmggZ2nDoSDEkeG7gyB4w6FjIMSR4buLbmggbcO0IGjDrG5oIG7DoG8gcGjDuSBo4bujcCBuaOG6pXQgduG7m2kgZOG7ryBsaeG7h3UuIEPDoWMgcGjGsMahbmcgcGjDoXAgxJHDoW5oIGdpw6Egc+G7sSBwaMO5IGjhu6NwIGJhbyBn4buTbToNCg0KLSAqKktp4buDbSDEkOG7i25oIFPhu7EgUGjDuSBI4bujcCoqOiBT4butIGThu6VuZyBjw6FjIGtp4buDbSDEkeG7i25oIHRo4buRbmcga8OqIMSR4buDIMSRw6FuaCBnacOhIG3hu6ljIMSR4buZIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIGNvcHVsYSB24bubaSBk4buvIGxp4buHdSB0aOG7sWMgdOG6vy4gQ8OhYyBraeG7g20gxJHhu4tuaCBwaOG7lSBiaeG6v24gYmFvIGfhu5NtOg0KICAtICoqS2nhu4NtIMSR4buLbmggQW5kZXJzb24tRGFybGluZyAoQS1EKSoqOiDEkG8gbMaw4budbmcgc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIHBow6JuIHBo4buRaSB0aOG7sWMgdOG6vyB2w6AgcGjDom4gcGjhu5FpIGThu7EgxJFvw6FuIGPhu6dhIG3DtCBow6xuaCBjb3B1bGEuDQogIC0gKipLaeG7g20gxJHhu4tuaCBDcmFtZXItdm9uIE1pc2VzIChDdi1NKSoqOiDEkMOhbmggZ2nDoSBt4bupYyDEkeG7mSBwaMO5IGjhu6NwIGThu7FhIHRyw6puIHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBow6BtIHBow6JuIHBo4buRaSB0w61jaCBsxal5IHRo4buxYyB04bq/IHbDoCBtw7QgaMOsbmguDQogIC0gKipLaeG7g20gxJHhu4tuaCBLb2xtb2dvcm92LVNtaXJub3YgKEstUykqKjogU28gc8OhbmggcGjDom4gcGjhu5FpIHRo4buxYyB04bq/IHbhu5tpIHBow6JuIHBo4buRaSBk4buxIMSRb8OhbiBj4bunYSBtw7QgaMOsbmggY29wdWxhLg0KDQogIEPDoWMgZ2nDoSB0cuG7iyBj4bunYSBjw6FjIGtp4buDbSDEkeG7i25oIG7DoHkgxJHGsOG7o2MgdMOtbmggdG/DoW4gYuG6sW5nIGPDoWNoIHNvIHPDoW5oIHBow6JuIHBo4buRaSB0aOG7sWMgdOG6vyB24bubaSBwaMOibiBwaOG7kWkgxJHGsOG7o2MgZOG7sSDEkW/DoW4gdOG7qyBtw7QgaMOsbmggY29wdWxhLiBWw60gZOG7pToNCiAgXFsNCiAgXHRleHR7Sy1TfSA9IFxtYXhfe3R9IFxsZWZ0fCBVX3QgLSBGX3QgXHJpZ2h0fA0KICBcXQ0KICBcWw0KICBcdGV4dHtDdi1NfSA9IFxmcmFjezF9e1R9IFxzdW1fe3Q9MX1ee1R9IFxsZWZ0KCBVX3QgLSBGX3QgXHJpZ2h0KV4yDQogIFxdDQogIFRyb25nIMSRw7MsIFwoIFVfdCBcKSBsw6AgZ2nDoSB0cuG7iyB0aOG7sWMgdOG6vyB2w6AgXCggRl90IFwpIGzDoCBnacOhIHRy4buLIGThu7EgxJFvw6FuIHThu6sgbcO0IGjDrG5oLg0KDQotICoqVGnDqnUgQ2h14bqpbiBUaMO0bmcgVGluKio6IFPhu60gZOG7pW5nIGPDoWMgdGnDqnUgY2h14bqpbiB0aMO0bmcgdGluIMSR4buDIGNo4buNbiBtw7QgaMOsbmggY29wdWxhIHThu5F0IG5o4bqldDoNCiAgLSAqKkFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24gKEFJQykqKjogxJBvIGzGsOG7nW5nIHPhu7EgbeG6pXQgbcOhdCB0aMO0bmcgdGluIGtoaSBz4butIGThu6VuZyBtw7QgaMOsbmggdsOgIMawdSB0acOqbiBtw7QgaMOsbmggY8OzIGdpw6EgdHLhu4sgQUlDIHRo4bqlcCBoxqFuLiBBSUMgxJHGsOG7o2MgdMOtbmggYuG6sW5nOg0KICAgIFxbDQogICAgXHRleHR7QUlDfSA9IC0yIFxjZG90IFx0ZXh0e2xvZy1saWtlbGlob29kfSArIDIgXGNkb3Qgaw0KICAgIFxdDQogICAgVHJvbmcgxJHDsywgXCggayBcKSBsw6Agc+G7kSBsxrDhu6NuZyB0aGFtIHPhu5EgdHJvbmcgbcO0IGjDrG5oLg0KICAtICoqQmF5ZXNpYW4gSW5mb3JtYXRpb24gQ3JpdGVyaW9uIChCSUMpKio6IFTGsMahbmcgdOG7sSBuaMawIEFJQyBuaMawbmcgY8OzIMSRaeG7gXUgY2jhu4luaCB0aMOqbSDEkeG7gyB0csOhbmggb3ZlcmZpdHRpbmcgYuG6sW5nIGPDoWNoIMawYSB0aMOtY2ggY8OhYyBtw7QgaMOsbmggxJHGoW4gZ2nhuqNuIGjGoW4uIEJJQyDEkcaw4bujYyB0w61uaCBi4bqxbmc6DQogICAgXFsNCiAgICBcdGV4dHtCSUN9ID0gLTIgXGNkb3QgXHRleHR7bG9nLWxpa2VsaWhvb2R9ICsgXGxvZyhUKSBcY2RvdCBrDQogICAgXF0NCiAgICBUcm9uZyDEkcOzLCBcKCBUIFwpIGzDoCBrw61jaCB0aMaw4bubYyBt4bqrdSB2w6AgXCggayBcKSBsw6Agc+G7kSBsxrDhu6NuZyB0aGFtIHPhu5EgdHJvbmcgbcO0IGjDrG5oLg0KDQpE4buxYSB0csOqbiBjw6FjIGvhur90IHF14bqjIHThu6sgY8OhYyBraeG7g20gxJHhu4tuaCBz4buxIHBow7kgaOG7o3AgdsOgIHRpw6p1IGNodeG6qW4gdGjDtG5nIHRpbiwgY2jhu41uIG3DtCBow6xuaCBjb3B1bGEgY8OzIGdpw6EgdHLhu4sgcCBjYW8gbmjhuqV0IHThu6sgY8OhYyBraeG7g20gxJHhu4tuaCBob+G6t2MgY8OzIGdpw6EgdHLhu4sgQUlDL0JJQyB0aOG6pXAgbmjhuqV0LiBNw7QgaMOsbmggY29wdWxhIHBow7kgaOG7o3AgbmjhuqV0IHPhur0gbMOgIG3DtCBow6xuaCBjw7Mgc+G7sSBwaMO5IGjhu6NwIHThu5F0IG5o4bqldCB24bubaSBk4buvIGxp4buHdQ0KDQoNCiMgKipDSMavxqBORyA0IEvhur5UIFFV4bqiIE5HSEnDik4gQ+G7qFUqKg0KDQpgYGB7cn0NCmxpYnJhcnkoeGxzeCkNCmxpYnJhcnkocXVhbnRtb2QpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoeHRzKQ0KbGlicmFyeSh4bHN4KSANCmxpYnJhcnkoUGVyZm9ybWFuY2VBbmFseXRpY3MpDQpsaWJyYXJ5KGZvcmVjYXN0KQ0KbGlicmFyeShydWdhcmNoKQ0KbGlicmFyeShnb2Z0ZXN0KQ0KbGlicmFyeShWaW5lQ29wdWxhKQ0KbGlicmFyeSh0c2VyaWVzKQ0KbGlicmFyeShGaW5UUykNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoY29ycnBsb3QpDQpsaWJyYXJ5KGdnY29ycnBsb3QpDQp2bmkgPC0gcmVhZC54bHN4KCJEOi9tb2hpbmhuZ2F1bmhpZW4vZHVsaWV1dm5pLnhsc3giLDEpDQpWTkkgPC0geHRzKHZuaVssLTFdLCBvcmRlci5ieSA9IHZuaSREYXRlKSAjS2hhaSBiw6FvIGThu68gbGnhu4d1IGNodeG7l2kgdGjhu51pIGdpYW4sIHPhuq9wIHjhur9wIHRoZW8gdGjhu51pIGdpYW4NCg0Ka29zcGkgPC0gcmVhZC54bHN4KCJEOi9tb2hpbmhuZ2F1bmhpZW4vZHVsaWV1a29zcGkueGxzeCIsMSkgDQprb3NwaSA8LSB4dHMoa29zcGlbLC0xXSxvcmRlci5ieSA9IGtvc3BpJERhdGUpDQoNCmR0IDwtIG1lcmdlLnh0cyhrb3NwaSxWTkksam9pbiA9ICdpbm5lcicpICMgS+G6v3QgcXXhuqMgc+G6vSBsw6AgbeG7mXQgxJHhu5FpIHTGsOG7o25nIHRo4budaSBnaWFuIG3hu5tpIGNo4bupYSBjw6FjIGdpw6EgdHLhu4sgY+G7p2EgY+G6oyBzdGkgdsOgIFZOSSB04bqhaSBjw6FjIHRo4budaSDEkWnhu4NtIGNodW5nLCB2w6AgxJHGsOG7o2MgZ8OhbiB2w6BvIGJp4bq/biBkdC4NCmxpYnJhcnkoUGVyZm9ybWFuY2VBbmFseXRpY3MpICPEkOG7gyBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgbOG7h25oIENhbGN1bGF0ZVJldHVybnMgDQpydCA8LSBDYWxjdWxhdGVSZXR1cm5zKGR0LG1ldGhvZCA9ICdsb2cnKSAjVMOtbmggdOG7tyBzdeG6pXQgbOG7o2kgbmh14bqtbiB0aGVvIGPDtG5nIHRo4bupYyBsb2d0IC0gbG9ndC0xDQpydCA8LSBydFstMV0NCmBgYA0KIyMgNC4xIFRo4buRbmcga8OqIG3DtCB04bqjDQoNCmBgYHtyfQ0KbGlicmFyeShtb21lbnRzKQ0KcnRfZGYgPC0gYXMuZGF0YS5mcmFtZShydCkNCmEgPC0gcnRfZGYgJT4lIHN1bW1hcmlzZShNaW4gPSBtaW4oVk5JKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBNYXggPSBtYXgoVk5JKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBNZWFuID0gbWVhbihWTkkpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIFN0RGV2ID0gc2QoVk5JKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBTa2V3bmVzcyA9IHNrZXduZXNzKFZOSSksDQogICAgICAgICAgICAgICAgICAgICAgICAgS3VydG9zaXMgPSBrdXJ0b3NpcyhWTkkpKQ0KYiA8LSBydF9kZiAlPiUgc3VtbWFyaXNlKE1pbiA9IG1pbihrb3NwaSksDQogICAgICAgICAgICAgICAgICAgICAgICAgTWF4ID0gbWF4KGtvc3BpKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBNZWFuID0gbWVhbihrb3NwaSksDQogICAgICAgICAgICAgICAgICAgICAgICAgU3REZXYgPSBzZChrb3NwaSksDQogICAgICAgICAgICAgICAgICAgICAgICAgU2tld25lc3MgPSBza2V3bmVzcyhrb3NwaSksDQogICAgICAgICAgICAgICAgICAgICAgICAgS3VydG9zaXMgPSBrdXJ0b3Npcyhrb3NwaSkpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQptIDwtIHJiaW5kKGEsYikNCnJvd25hbWVzKG0pIDwtIGMoJ1ZOSScsJ2tvc3BpJykNCmthYmxlKG0sIGZvcm1hdCA9ICdwYW5kb2MnLCBjYXB0aW9uID0gJ0LhuqNuZyAyOiBUaOG7kW5nIGvDqiBtw7QgdOG6oyBjaHXhu5dpIFRTTE4nLCB0YWJsZS5hdHRyID0gInN0eWxlPSd3aWR0aDoxMDAlOyciKSAlPiUga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIikpDQoNCmBgYA0KDQpC4bqjbmcgdHLDqm4gdHLDrG5oIGLDoHkgY8OhYyB0aOG7kW5nIGvDqiBtw7QgdOG6oyBj4bunYSBjaHXhu5dpIHThu7cgc3XhuqV0IGzhu6NpIG5odeG6rW4gKFRTTE4pIGNobyBoYWkgY2jhu4kgc+G7kSBWTkkgdsOgIEtPU1BJLiDEkOG7kWkgduG7m2kgY2jhu4kgc+G7kSBWTkksIGdpw6EgdHLhu4sgbmjhu48gbmjhuqV0IChNaW4pIGPhu6dhIFRTTE4gbMOgIC0wLjA2OTA3NjIsIHRyb25nIGtoaSBnacOhIHRy4buLIGzhu5tuIG5o4bqldCAoTWF4KSDEkeG6oXQgMC4wNDg2MDAyLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBt4bupYyDEkeG7mSBiaeG6v24gxJHhu5luZyBj4bunYSBWTkkgbMOgIHTGsMahbmcgxJHhu5FpIGNhbywgduG7m2kgbeG7mXQgcGjhuqFtIHZpIGRhbyDEkeG7mW5nIHLhu5luZy4gR2nDoSB0cuG7iyB0cnVuZyBiw6xuaCAoTWVhbikgY+G7p2EgVk5JIGzDoCA3LjcxZS0wNSwgcuG6pXQgZ+G6p24gduG7m2kgMCwgxJFp4buBdSBuw6B5IGNobyB0aOG6pXkgdHJ1bmcgYsOsbmggbOG7o2kgbmh14bqtbiBj4bunYSBWTkkgbMOgIGtow7RuZyDEkcOhbmcga+G7gyBxdWEgdGjhu51pIGdpYW4sIG3hu5l0IMSR4bq3YyDEkWnhu4NtIHRoxrDhu51uZyB0aOG6pXkg4bufIGPDoWMgY2h14buXaSBk4buvIGxp4buHdSB0w6BpIGNow61uaC4gxJDhu5kgbOG7h2NoIGNodeG6qW4gKFN0RGV2KSBj4bunYSBWTkkgbMOgIDAuMDEyODk5MCwgY2hvIHRo4bqleSBt4bupYyDEkeG7mSBwaMOibiB0w6FuIGPhu6dhIGzhu6NpIG5odeG6rW4geHVuZyBxdWFuaCBnacOhIHRy4buLIHRydW5nIGLDrG5oIGzDoCBraMOhIGzhu5tuLiBW4buBIMSR4buZIGzhu4djaCAoU2tld25lc3MpLCBWTkkgY8OzIGdpw6EgdHLhu4sgLTAuOTI3OTQ2MiwgY2hvIHRo4bqleSBwaMOibiBwaOG7kWkgY+G7p2EgbOG7o2kgbmh14bqtbiBjw7MgxJF1w7RpIGTDoGkgaMahbiDhu58gcGjDrWEgw6JtLCB04bupYyBsw6AgY8OzIGto4bqjIG7Eg25nIHjhuqN5IHJhIGPDoWMgZ2nDoSB0cuG7iyBnaeG6o20gbeG6oW5oIG5oaeG7gXUgaMahbiBzbyB24bubaSB0xINuZyBt4bqhbmguIMSQ4buZIG5o4buNbiAoS3VydG9zaXMpIGPhu6dhIFZOSSBsw6AgNi42OTUxMjksIHbGsOG7o3QgcXXDoSAzIChrdXJ0b3NpcyBj4bunYSBwaMOibiBwaOG7kWkgY2h14bqpbiksIGNo4buJIHJhIHLhurFuZyBwaMOibiBwaOG7kWkgY+G7p2EgbOG7o2kgbmh14bqtbiBWTkkgY8OzIMSRdcO0aSBkw6B5LCB04bupYyBsw6AgY8OzIG5oaeG7gXUgbmdv4bqhaSBs4buHIGjGoW4sIHBo4bqjbiDDoW5oIHPhu7EgYuG6pXQgdGjGsOG7nW5nIGhv4bq3YyBy4bunaSBybyBjYW8gdHJvbmcgZOG7ryBsaeG7h3UuDQoNCsSQ4buRaSB24bubaSBjaOG7iSBz4buRIEtPU1BJLCBnacOhIHRy4buLIG5o4buPIG5o4bqldCBj4bunYSBUU0xOIGzDoCAtMC4wODc2Njk4IHbDoCBnacOhIHRy4buLIGzhu5tuIG5o4bqldCBsw6AgMC4wODI1MTI3LCBjxaluZyB0aOG7gyBoaeG7h24gbeG7qWMgxJHhu5kgYmnhur9uIMSR4buZbmcgY2FvIHTGsMahbmcgdOG7sSBuaMawIFZOSS4gVHV5IG5oacOqbiwgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBj4bunYSBLT1NQSSBsw6AgNC45M2UtMDUsIHRo4bqlcCBoxqFuIHNvIHbhu5tpIFZOSSwgY2hvIHRo4bqleSBs4bujaSBuaHXhuq1uIHRydW5nIGLDrG5oIGPhu6dhIEtPU1BJIGPFqW5nIGtow7RuZyDEkcOhbmcga+G7gyBxdWEgdGjhu51pIGdpYW4uIMSQ4buZIGzhu4djaCBjaHXhuqluIGPhu6dhIEtPU1BJIGzDoCAwLjAxMTcwNDEsIHRo4bqlcCBoxqFuIG3hu5l0IGNow7p0IHNvIHbhu5tpIFZOSSwgY2hvIHRo4bqleSBt4bupYyDEkeG7mSBwaMOibiB0w6FuIGPhu6dhIGzhu6NpIG5odeG6rW4gS09TUEkgcXVhbmggZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBjxaluZyB0aOG6pXAgaMahbi4gxJDhu5kgbOG7h2NoIGPhu6dhIEtPU1BJIGzDoCAtMC4xNjAxNTM3LCBjaG8gdGjhuqV5IHBow6JuIHBo4buRaSBs4bujaSBuaHXhuq1uIGPhu6dhIEtPU1BJIMOtdCBs4buHY2ggduG7gSBwaMOtYSDDom0gaMahbiBzbyB24bubaSBWTkkuIFR1eSBuaGnDqm4sIMSR4buZIG5o4buNbiBj4bunYSBLT1NQSSBsw6AgOS4zNDIwNjIsIGNhbyBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIFZOSSwgY2jhu4kgcmEgcuG6sW5nIEtPU1BJIGPDsyBuaGnhu4F1IG5nb+G6oWkgbOG7hyBoxqFuLCB24bubaSBy4bunaSBybyBjYW8gaMahbiBsacOqbiBxdWFuIMSR4bq/biBuaOG7r25nIGJp4bq/biDEkeG7mW5nIGPhu7FjIMSRb2FuIHRyb25nIGNodeG7l2kgbOG7o2kgbmh14bqtbi4NCg0KVMOzbSBs4bqhaSwgY+G6oyBoYWkgY2jhu4kgc+G7kSDEkeG7gXUgY2hvIHRo4bqleSBz4buxIGJp4bq/biDEkeG7mW5nIMSRw6FuZyBr4buDLCBuaMawbmcgVk5JIGPDsyDEkeG7mSBs4buHY2ggw6JtIG3huqFuaCBoxqFuLCB0cm9uZyBraGkgS09TUEkgY8OzIMSR4buZIG5o4buNbiBjYW8gaMahbiwgY2jhu4kgcmEgbeG7qWMgxJHhu5kgcuG7p2kgcm8ga2jDoWMgbmhhdSB0cm9uZyBoYWkgdGjhu4sgdHLGsOG7nW5nIG7DoHkuDQoNCsSQ4buDIHRy4buxYyBxdWFuIGjDs2EgcsO1IGjGoW4gc+G7sSBwaMOibiBi4buRIHbDoCBuaOG6rW4gZGnhu4duIGPDoWMgxJHhurdjIMSRaeG7g20ga2jDoWMgYmnhu4d0IGdp4buvYSBoYWkgY2h14buXaSBUU0xOIG7DoHksIGNow7puZyB0YSBz4bq9IHRp4bq/biBow6BuaCB4w6J5IGThu7FuZyBiaeG7g3UgxJHhu5MgaOG7mXAgKGJveHBsb3QpLiBCaeG7g3UgxJHhu5MgaOG7mXAga2jDtG5nIGNo4buJIGN1bmcgY+G6pXAgdGjDqm0gdGjDtG5nIHRpbiB24buBIHRydW5nIHbhu4ssIGtob+G6o25nIHThu6kgcGjDom4gduG7iyBtw6AgY8OybiBnacO6cCBk4buFIGTDoG5nIG5o4bqtbiByYSBjw6FjIGdpw6EgdHLhu4sgbmdv4bqhaSBs4buHIChvdXRsaWVycykgdHJvbmcgY2h14buXaSBk4buvIGxp4buHdSwgdOG7qyDEkcOzIGzDoG0gcsO1IGjGoW4gbmjhu69uZyDEkeG6t2MgxJFp4buDbSBtw6AgY8OhYyBjaOG7iSBz4buRIHRo4buRbmcga8OqIG3DtCB04bqjIGPDsyB0aOG7gyBjaMawYSB0aOG7gyBoaeG7h24gxJHGsOG7o2MgaOG6v3QuDQoNCmBgYHtyfQ0KcGl2b3RfbG9uZ2VyKHJ0X2RmLCBjb2xzID0gZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJUU0xOIiwgdmFsdWVzX3RvID0gIlZhbHVlIikgJT4lIGdncGxvdChhZXMoeCA9IFRTTE4sIHkgPSBWYWx1ZSkpICsNCiAgZ2VvbV9ib3hwbG90KGZpbGwgPSAicmVkIiwgY29sb3IgPSAiYmxhY2siKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIGxhYnModGl0bGUgPSAiSMOsbmggNzogQmnhu4N1IMSR4buTIGjhu5lwIGPhu6dhIFRTTE4gVk5JIHbDoCBrb3NwaSIsDQogICAgICAgeCA9ICJDaOG7iSBz4buRIiwNCiAgICAgICB5ID0gIlThu7cgc3XhuqV0IHNpbmggbOG7o2kiKQ0KYGBgDQoNCk5ow6xuIGNodW5nLCBj4bqjIGhhaSBjaHXhu5dpIFRTTE4gY+G7p2EgS09TUEkgdsOgIFZOSU5ERVggxJHhu4F1IGPDsyBwaMOibiBi4buRIHThuq1wIHRydW5nIHh1bmcgcXVhbmggZ2nDoSB0cuG7iyB0cnVuZyB24buLLCB24bubaSBo4buZcCAoYm94KSBj4bunYSBj4bqjIGhhaSBjaOG7iSBz4buRIHTGsMahbmcgxJHhu5FpIG5n4bqvbiwgY2hvIHRo4bqleSBt4bupYyDEkeG7mSBiaeG6v24gxJHhu5luZyB0cm9uZyBt4buZdCBraG/huqNuZyBnaeG7m2kgaOG6oW4uIFR1eSBuaGnDqm4sIGNow7puZyB0YSBjxaluZyBk4buFIGTDoG5nIG5o4bqtbiB0aOG6pXkgc+G7sSBoaeG7h24gZGnhu4duIGPhu6dhIG5oaeG7gXUgxJFp4buDbSBuZ2/huqFpIGzhu4cgKG91dGxpZXJzKSDhu58gY+G6oyBoYWkgcGjDrWEgY+G7p2EgYmnhu4N1IMSR4buTIGjhu5lwLCDEkeG6t2MgYmnhu4d0IGzDoCDhu58gcGjDrWEgZMaw4bubaSBj4bunYSBt4buXaSBo4buZcC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgcuG6sW5nLCB0cm9uZyBnaWFpIMSRb+G6oW4gbmdoacOqbiBj4bupdSwgxJHDoyBjw7Mgbmjhu69uZyBiaeG6v24gxJHhu5luZyBs4bubbiB2w6AgYuG6pXQgdGjGsOG7nW5nIHbhu4EgdOG7tyBzdeG6pXQgc2luaCBs4bujaSBj4bunYSBj4bqjIGhhaSBjaOG7iSBz4buRLg0KDQpTbyBzw6FuaCBnaeG7r2EgaGFpIGNo4buJIHPhu5EsIFZOSU5ERVggY8OzIG3hu5l0IGThuqNpIHBow6JuIGLhu5EgcuG7mW5nIGjGoW4gbeG7mXQgY2jDunQgc28gduG7m2kgS09TUEksIMSRaeG7gXUgbsOgeSBjw7MgdGjhu4MgxJHGsOG7o2MgZ2nhuqNpIHRow61jaCBi4bqxbmcgdmnhu4djIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIHRoxrDhu51uZyBjw7Mgbmjhu69uZyBiaeG6v24gxJHhu5luZyBs4bubbiBoxqFuIHNvIHbhu5tpIHRo4buLIHRyxrDhu51uZyBIw6BuIFF14buRYy4gVHV5IG5oacOqbiwgS09TUEkgbOG6oWkgY8OzIG5oaeG7gXUgb3V0bGllcnMgaMahbiB24buBIHBow61hIHRyw6puLCBjaOG7iSByYSBy4bqxbmcgY8OzIG5oaeG7gXUgbmfDoHkgbcOgIFRTTE4gY+G7p2EgS09TUEkgdMSDbmcgxJHhu5l0IGJp4bq/biBoxqFuIHNvIHbhu5tpIFZOSU5ERVguDQoNClTDs20gbOG6oWksIGJp4buDdSDEkeG7kyBo4buZcCBjaG8gdGjhuqV5IHPhu7EgYmnhur9uIMSR4buZbmcgbOG7m24gdsOgIHThu5NuIHThuqFpIG5oaeG7gXUgZ2nDoSB0cuG7iyBuZ2/huqFpIGzhu4cgdHJvbmcgVFNMTiBj4bunYSBj4bqjIGhhaSBjaOG7iSBz4buRLCB24bubaSBt4buZdCBz4buRIGtow6FjIGJp4buHdCBuaOG6pXQgxJHhu4tuaCB24buBIG3hu6ljIMSR4buZIHBow6JuIHTDoW4gdsOgIHPhu5EgbMaw4bujbmcgb3V0bGllcnMgZ2nhu69hIGhhaSB0aOG7iyB0csaw4budbmcuIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgZ+G7o2kgw70gduG7gSBuaOG7r25nIMSR4bq3YyDEkWnhu4NtIHbDoCBow6BuaCB2aSBraMOhYyBuaGF1IGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIHRyb25nIGdpYWkgxJFv4bqhbiDEkcaw4bujYyBuZ2hpw6puIGPhu6l1Lg0KDQoqKkPDoWMga2nhu4NtIMSR4buLbmgqKg0KDQpgYGB7cn0NCiNLaeG7g20gxJHhu4tuaCB0w61uaCBk4burbmcNCmFkZl92bmkgPC0gYWRmLnRlc3QocnQkVk5JKQ0KYWRmX2tvc3BpIDwtIGFkZi50ZXN0KHJ0JGtvc3BpKQ0KI0tp4buDbSDEkeG7i25oIHBow6JuIHBo4buRaSBjaHXhuqluDQpqcV92bmkgPC0gamFycXVlLmJlcmEudGVzdChydCRWTkkpDQpqcV9rb3NwaSA8LSBqYXJxdWUuYmVyYS50ZXN0KHJ0JGtvc3BpKQ0KIyDGr+G7m2MgbMaw4bujbmcgdsOgIHRyw61jaCB4deG6pXQgcGjhuqduIGTGsCB04burIG3DtCBow6xuaCBBUk1BIHThu5FpIMawdQ0KYXJpbWFfVk5JIDwtIGF1dG9hcmZpbWEocnQkVk5JLGFyLm1heCA9IDIsIG1hLm1heCA9IDIsIGNyaXRlcmlvbiA9ICdBSUMnLCBtZXRob2QgPSAiZnVsbCIpDQoNCmFyaW1hX2tvc3BpIDwtIGF1dG9hcmZpbWEocnQka29zcGksYXIubWF4ID0gMiwgbWEubWF4ID0gMiwgY3JpdGVyaW9uID0gJ0FJQycsIG1ldGhvZCA9ICJmdWxsIikNCg0KcmVfVk5JIDwtIGFyaW1hX1ZOSSRmaXRAZml0JHJlc2lkdWFscw0KcmVfa29zcGkgPC0gYXJpbWFfa29zcGkkZml0QGZpdCRyZXNpZHVhbHMNCiNLaeG7g20gxJHhu4tuaCB0xrDGoW5nIHF1YW4gY2h14buXaSBi4bqtYyAyIGNobyBwaOG6p24gZMawDQpsal92bmkgPC0gQm94LnRlc3QocmVfVk5JLHR5cGUgPSAnTGp1bmctQm94JywgbGFnID0gMikNCmxqX2tvc3BpIDwtIEJveC50ZXN0KHJlX2tvc3BpLHR5cGUgPSAnTGp1bmctQm94JywgbGFnID0gMikNCg0KI0tp4buDbSDEkeG7i25oIHTGsMahbmcgcXVhbiBjaHXhu5dpIGLhuq1jIDIgY2hvIHBo4bqnbiBkxrAgYsOsbmggcGjGsMahbmcNCmxqX3ZuaTIgPC0gQm94LnRlc3QocmVfVk5JXjIsdHlwZSA9ICdManVuZy1Cb3gnLCBsYWcgPSAyKQ0KbGpfa29zcGkyIDwtIEJveC50ZXN0KHJlX2tvc3BpXjIsdHlwZSA9ICdManVuZy1Cb3gnLCBsYWcgPSAyKQ0KDQojS2nhu4NtIMSR4buLbmggaGnhu4d1IOG7qW5nIEFSQ0gNCmFyX3ZuaSA8LSBBcmNoVGVzdChyZV9WTkksIGxhZ3MgPSAyKQ0KYXJfa29zcGkgPC0gQXJjaFRlc3QocmVfa29zcGksIGxhZ3MgPSAyKQ0KDQojVHLDrG5oIGLDoHkga+G6v3QgcXXhuqMNCnRlc3RfcmVzdWx0IDwtIGRhdGEuZnJhbWUoVGVzdCA9IGMoIkFERiIsIkotQiIsIlEoMikiLCJRKDIpXjIiLCAiQVJDSCgyKSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBQX3ZhbHVlX1ZOSSA9IGMoYWRmX3ZuaSRwLnZhbHVlLCBqcV92bmkkcC52YWx1ZSwgbGpfdm5pJHAudmFsdWUsIGxqX3ZuaTIkcC52YWx1ZSwgYXJfdm5pJHAudmFsdWUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBQX3ZhbHVlX2tvc3BpID0gYyhhZGZfa29zcGkkcC52YWx1ZSwganFfa29zcGkkcC52YWx1ZSwgbGpfa29zcGkkcC52YWx1ZSwgbGpfa29zcGkyJHAudmFsdWUsIGFyX2tvc3BpJHAudmFsdWUpKQ0Ka2FibGUodGVzdF9yZXN1bHQsIA0KICAgICAgY2FwdGlvbiA9ICJC4bqjbmcgMzogS+G6v3QgcXXhuqMgY8OhYyBraeG7g20gxJHhu4tuaCIsIA0KICAgICAgbGFiZWwgPSAnR2hpIGNow7o6IFEgKDIpIGFuZCBRMiAoMikgbOG6p24gbMaw4bujdCBsw6Aga2nhu4NtIMSR4buLbmggTGp1bmctQm94IFEyIGNobyB0xrDGoW5nIHF1YW4gY2h14buXaSBi4bqtYyAyIGPhu6dhIHBo4bqnbiBkxrAgdsOgIGLDrG5oIHBoxrDGoW5nIHBo4bqnbiBkxrAgY+G7p2EgbOG7o2kgc3XhuqV0JywgDQogICAgICBmb3JtYXQgPSAncGFuZG9jJykgJT4lIGthYmxlX3N0eWxpbmcoDQogICAgICAgIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiKSwgDQogICAgICAgIGZ1bGxfd2lkdGggPSBGKQ0KDQoNCmBgYA0KDQpDw6FjIGvhur90IHF14bqjIHRyw6puIGNobyB0aOG6pXkgcuG6sW5nIGPhuqMgaGFpIGNodeG7l2kgVFNMTiBj4bunYSBWTkkgdsOgIEtPU1BJIMSR4buBdSBsw6AgY2h14buXaSDhu5VuIMSR4buLbmggbmjGsG5nIGtow7RuZyB0dcOibiB0aGVvIHBow6JuIHBo4buRaSBjaHXhuqluLiBD4bqjIGhhaSBjaHXhu5dpIGtow7RuZyBjw7MgdOG7sSB0xrDGoW5nIHF1YW4gdGhlbyBnacOhIHRy4buLIFRTTE4gbmjGsG5nIGPDsyB04buxIHTGsMahbmcgcXVhbiB0aGVvIHBoxrDGoW5nIHNhaSwgxJHhu5NuZyB0aOG7nWkgdOG7k24gdOG6oWkgaGnhu4duIHTGsOG7o25nIEFSQ0guIE5o4buvbmcgxJHhurdjIMSRaeG7g20gbsOgeSBj4bqnbiDEkcaw4bujYyB4ZW0geMOpdCBr4bu5IGzGsOG7oW5nIGtoaSBs4buxYSBjaOG7jW4gdsOgIHjDonkgZOG7sW5nIGPDoWMgbcO0IGjDrG5oIHBow6JuIHTDrWNoIHbDoCBk4buxIGLDoW8gY2hvIGhhaSBjaHXhu5dpIHRo4budaSBnaWFuIG7DoHksIMSR4bq3YyBiaeG7h3QgbMOgIGPDoWMgbcO0IGjDrG5oIEdBUkNIIMSR4buDIHjhu60gbMO9IHPhu7EgYmnhur9uIMSR4buZbmcga2jDtG5nIMSR4buBdSBxdWEgdGjhu51pIGdpYW4uQ+G7pSB0aOG7gyBuaMawIHNhdSA6IA0KDQotIEtp4buDbSDEkeG7i25oIEFERiAoQXVnbWVudGVkIERpY2tleS1GdWxsZXIpOg0KDQpHacOhIHRy4buLIHAtdmFsdWUgY2hvIGPhuqMgaGFpIGNo4buJIHPhu5EgVk5JIHbDoCBLT1NQSSDEkeG7gXUgYuG6sW5nIDAuMDEwMCwgbmjhu48gaMahbiBt4bupYyDDvSBuZ2jEqWEgMC4wNS4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgY2h14buXaSBUU0xOIGPhu6dhIGPhuqMgaGFpIGNo4buJIHPhu5EgxJHhu4F1IGtow7RuZyBjw7MgxJHGoW4gduG7iyBn4buRYywgdOG7qWMgbMOgIGPhuqMgaGFpIGNodeG7l2kgxJHhu4F1IGzDoCDhu5VuIMSR4buLbmggKHN0YXRpb25hcnkpLiDEkGnhu4F1IG7DoHkgbMOgIHF1YW4gdHLhu41uZyDEkeG7kWkgduG7m2kgdmnhu4djIMOhcCBk4bulbmcgY8OhYyBtw7QgaMOsbmggdGjhu51pIGdpYW4gbmjGsCBBUk1BLUdBUkNILg0KDQotIEtp4buDbSDEkeG7i25oIEotQiAoSmFycXVlLUJlcmEpOg0KDQpHacOhIHRy4buLIHAtdmFsdWUgY2hvIGPhuqMgVk5JIHbDoCBLT1NQSSDEkeG7gXUgYuG6sW5nIDAuMDAwMCwgbmjhu48gaMahbiBuaGnhu4F1IHNvIHbhu5tpIG3hu6ljIMO9IG5naMSpYSAwLjA1LCBjaG8gdGjhuqV5IGNow7puZyB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgduG7gSBwaMOibiBwaOG7kWkgY2h14bqpbiBj4bunYSBoYWkgY2h14buXaSBUU0xOLiDEkGnhu4F1IG7DoHkgbmfhu6Ugw70gcuG6sW5nIGNodeG7l2kgbOG7o2kgbmh14bqtbiBj4bunYSBj4bqjIGhhaSB0aOG7iyB0csaw4budbmcgxJHhu4F1IGtow7RuZyB0dcOibiB0aGVvIHBow6JuIHBo4buRaSBjaHXhuqluLCBt4buZdCDEkeG6t2MgxJFp4buDbSB0aMaw4budbmcgdGjhuqV5IHRyb25nIGPDoWMgY2h14buXaSB0w6BpIGNow61uaCB24bubaSBz4buxIGhp4buHbiBkaeG7h24gY+G7p2Egc2tld25lc3MgdsOgIGt1cnRvc2lzIGzhu5tuLg0KDQotIEtp4buDbSDEkeG7i25oIFEoMik6DQoNClAtdmFsdWUgY+G7p2Ega2nhu4NtIMSR4buLbmggUSgyKSBjaG8gVk5JIGzDoCAwLjk5OTY3MzcgdsOgIGNobyBLT1NQSSBsw6AgMC41ODIzNzQ2LiBD4bqjIGhhaSBnacOhIHRy4buLIG7DoHkgxJHhu4F1IGzhu5tuIGjGoW4gMC4wNSwgY2hvIHRo4bqleSBy4bqxbmcga2jDtG5nIGPDsyBi4bqxbmcgY2jhu6luZyDEkeG7gyBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgcuG6sW5nIGPDoWMgZ2nDoSB0cuG7iyBUU0xOIGtow7RuZyBjw7MgdOG7sSB0xrDGoW5nIHF1YW4gxJHhur9uIMSR4buZIHRy4buFIDIgKHThu6ljIGzDoCBjaHXhu5dpIGtow7RuZyBjw7Mgc+G7sSBwaOG7pSB0aHXhu5ljIHRoZW8gY2h1IGvhu7MpLg0KDQotIEtp4buDbSDEkeG7i25oIFEoMileMjoNCg0KUC12YWx1ZSBjaG8ga2nhu4NtIMSR4buLbmggUSgyKV4yIMSR4buBdSBi4bqxbmcgMC4wMDAwIGNobyBj4bqjIGhhaSBjaOG7iSBz4buRLCBy4bqldCBuaOG7jyBoxqFuIDAuMDUuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHLhurFuZyBjaHXhu5dpIHBoxrDGoW5nIHNhaSBj4bunYSBj4bqjIFZOSSB2w6AgS09TUEkgY8OzIHThu7EgdMawxqFuZyBxdWFuIMSR4bq/biDEkeG7mSB0cuG7hSAyLCB04bupYyBsw6AgY8OzIHPhu7EgcGjhu6UgdGh14buZYyB24buBIHBoxrDGoW5nIHNhaSBjw7MgxJFp4buBdSBraeG7h24sIG3hu5l0IGThuqV1IGhp4buHdSBj4bunYSBoaeG7h3Ug4bupbmcgQVJDSC9HQVJDSC4NCg0KLSBLaeG7g20gxJHhu4tuaCBBUkNIKDIpOg0KDQpD4bqjIGhhaSBjaHXhu5dpIFZOSSB2w6AgS09TUEkgxJHhu4F1IGPDsyBnacOhIHRy4buLIHAtdmFsdWUgYuG6sW5nIDAuMDAwMCBjaG8ga2nhu4NtIMSR4buLbmggQVJDSCgyKSwgbmjhu48gaMahbiBt4bupYyDDvSBuZ2jEqWEgMC4wNS4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgcuG6sW5nIHThu5NuIHThuqFpIGhp4buHbiB0xrDhu6NuZyBBUkNIIChBUkNIIGVmZmVjdCkgdHJvbmcgY2h14buXaSwgdOG7qWMgbMOgIHBoxrDGoW5nIHNhaSBj4bunYSBjw6FjIGNodeG7l2kgbOG7o2kgbmh14bqtbiBiaeG6v24gxJHhu5VpIHRoZW8gdGjhu51pIGdpYW4sIG3hu5l0IMSR4bq3YyDEkWnhu4NtIMSRaeG7g24gaMOsbmggdHJvbmcgY8OhYyBjaHXhu5dpIHRo4budaSBnaWFuIHTDoGkgY2jDrW5oLg0KDQoNCg0KIyMgNC4yIEjhu4cgc+G7kSB0xrDGoW5nIHF1YW4NCg0KYGBge3J9DQojIEjhu4YgU+G7kCBUxq/GoE5HIFFVQU4NCnBlYXJzb24gPC0gY29yKHJ0JFZOSSxydCRrb3NwaSwgbWV0aG9kPSJwZWFyc29uIikNCnNwZWFybWFuIDwtIGNvcihydCRWTkkscnQka29zcGksIG1ldGhvZD0ic3BlYXJtYW4iKQ0Ka2VuZGFsbCA8LSBjb3IocnQkVk5JLHJ0JGtvc3BpLCBtZXRob2Q9ImtlbmRhbGwiKQ0KDQojVHLDrG5oIGLDoHkga+G6v3QgcXXhuqMNCnJlbGF0IDwtIGRhdGEuZnJhbWUoJ1TGsMahbmcgcXVhbicgPSAnVk5JLWtvc3BpJywNCiAgICAgICAgICAgICAgICAgICAgUGVhcnNvbiA9IHBlYXJzb25bMSwxXSwNCiAgICAgICAgICAgICAgICAgICAgc3BlYXJtYW4gPSBzcGVhcm1hblsxLDFdLA0KICAgICAgICAgICAgICAgICAgICBLZW5kYWxsID0ga2VuZGFsbFsxLDFdKQ0Ka2FibGUocmVsYXQsIA0KICAgICAgY29sLm5hbWVzID0gYygiUGjGsMahbmcgcGjDoXAiLCAiUGVhcnNvbiIsICJTcGVhcm1hbiIsIktlbmRhbGwiKSwNCiAgICAgIGNhcHRpb24gPSAiQuG6o25nIDQ6IEvhur90IHF14bqjIGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4iLA0KICAgICAgZm9ybWF0ID0gJ3BhbmRvYycsDQogICAgICBhbGlnbiA9IGMoImwiLCAiYyIsICJjIikpICU+JQ0KICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiKSwgZnVsbF93aWR0aCA9IEZBTFNFKQ0KDQpgYGANCg0KDQpC4bqjbmcgNCB0csOsbmggYsOgeSBr4bq/dCBxdeG6oyBo4buHIHPhu5EgdMawxqFuZyBxdWFuIGdp4buvYSB04bu3IHN14bqldCBzaW5oIGzhu6NpIGPhu6dhIGNo4buJIHPhu5EgVk5JTkRFWCB2w6AgS09TUEkgdGhlbyBiYSBwaMawxqFuZyBwaMOhcCBraMOhYyBuaGF1OiBQZWFyc29uLCBTcGVhcm1hbiB2w6AgS2VuZGFsbC4gQ+G7pSB0aOG7gywgaOG7hyBz4buRIHTGsMahbmcgcXVhbiBQZWFyc29uIGzDoCAwLjMwNTgsIGNobyB0aOG6pXkgbeG7qWMgxJHhu5kgbGnDqm4ga+G6v3QgdHV54bq/biB0w61uaCBnaeG7r2EgdOG7tyBzdeG6pXQgc2luaCBs4bujaSBj4bunYSBWTklOREVYIHbDoCBLT1NQSSBsw6AgeeG6v3UuIEdpw6EgdHLhu4sgbsOgeSBn4bqnbiBi4bqxbmcgMCwgcGjhuqNuIMOhbmggcuG6sW5nIG3hurdjIGTDuSBjw7MgbeG7mXQgc+G7kSBt4bupYyDEkeG7mSB0xrDGoW5nIHF1YW4gZ2nhu69hIGhhaSBjaOG7iSBz4buRLCBt4buRaSBsacOqbiBo4buHIHR1eeG6v24gdMOtbmggZ2nhu69hIGNow7puZyBraMO0bmcgxJHhu6cgbeG6oW5oIMSR4buDIGNobyB0aOG6pXkgc+G7sSBsacOqbiBr4bq/dCByw7UgcsOgbmcuDQoNCkjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gU3BlYXJtYW4gxJHhuqF0IDAuMjg3OCwgY2jhu4kgcmEgbeG7qWMgxJHhu5kgdMawxqFuZyBxdWFuIMSR4buTbmcgYmnhur9uIGdp4buvYSB04bu3IHN14bqldCBzaW5oIGzhu6NpIGPhu6dhIGhhaSBjaOG7iSBz4buRLiBHacOhIHRy4buLIG7DoHkgdGjhuqVwIGjGoW4gbeG7mXQgY2jDunQgc28gduG7m2kgaOG7hyBz4buRIFBlYXJzb24sIGNobyB0aOG6pXkgbeG7kWkgbGnDqm4gaOG7hyDEkeG7k25nIGJp4bq/biBnaeG7r2EgVk5JTkRFWCB2w6AgS09TUEkga2jDtG5nIG3huqFuaCBt4bq9IHbDoCBjw7MgdGjhu4MgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IHRyb25nIHRo4bupIHThu7EgeOG6v3AgaOG6oW5nIGPhu6dhIGPDoWMgdOG7tyBzdeG6pXQgc2luaCBs4bujaS4NCg0KSOG7hyBz4buRIHTGsMahbmcgcXVhbiBLZW5kYWxsLCB24bubaSBnacOhIHRy4buLIDAuMTk4NSwgY3VuZyBj4bqlcCBt4buZdCBjw6FpIG5ow6xuIHbhu4EgbeG7kWkgbGnDqm4gaOG7hyDEkeG7k25nIGJp4bq/biBnaeG7r2EgdOG7tyBzdeG6pXQgc2luaCBs4bujaSBj4bunYSBWTklOREVYIHbDoCBLT1NQSSBxdWEgY8OhYyBj4bq3cCB44bq/cCBo4bqhbmcuIEdpw6EgdHLhu4sgbsOgeSBsw6AgdGjhuqVwIG5o4bqldCB0cm9uZyBiYSBo4buHIHPhu5EsIGNobyB0aOG6pXkgbeG7qWMgxJHhu5kgxJHhu5NuZyBiaeG6v24gZ2nhu69hIGhhaSBjaOG7iSBz4buRIGzDoCB54bq/dSBuaOG6pXQuDQoNClThu5VuZyBxdWFuLCB04bqldCBj4bqjIGJhIGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gxJHhu4F1IGNobyB0aOG6pXkgcuG6sW5nIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIHThu7cgc3XhuqV0IHNpbmggbOG7o2kgY+G7p2EgVk5JTkRFWCB2w6AgS09TUEkgbMOgIHnhur91LCBkw7kgZMaw4bubaSBjw6FjIHBoxrDGoW5nIHBow6FwIMSRbyBsxrDhu51uZyBraMOhYyBuaGF1LiBN4bq3YyBkw7kgY8OzIG3hu5l0IG3hu6ljIMSR4buZIGxpw6puIGvhur90IMSR4buTbmcgYmnhur9uIG5o4bqldCDEkeG7i25oLCBjw6FjIGjhu4cgc+G7kSBuw6B5IGNobyB0aOG6pXkgc+G7sSB0xrDGoW5nIHF1YW4gZ2nhu69hIHThu7cgc3XhuqV0IHNpbmggbOG7o2kgY+G7p2EgaGFpIGNo4buJIHPhu5Ega2jDtG5nIMSR4bunIG3huqFuaCDEkeG7gyBraOG6s25nIMSR4buLbmggbeG7mXQgbeG7kWkgbGnDqm4gaOG7hyByw7UgcsOgbmcgdsOgIMSR4buTbmcgbmjhuqV0Lg0KDQoNCmBgYHtyfQ0KcGFyKG1mcm93ID0gYygxLDIpKQ0KDQpjb3JyIDwtIGNvcihydCkNCmdnY29ycnBsb3QoY29yciwgaGMub3JkZXIgPSBUUlVFLA0KICAgICAgICAgICBvdXRsaW5lLmNvbCA9ICJyZWQiLA0KICAgICAgICAgICBnZ3RoZW1lID0gZ2dwbG90Mjo6dGhlbWVfZ3JheSwNCiAgICAgICAgICAgY29sb3JzID0gYygiIzZEOUVDMSIsICJyZWQiLCAieWVsbG93IiksDQogICAgICAgICAgIGxhYiA9IFRSVUUsIGxhYl9jb2wgPSAnYmxhY2snLHRpdGxlID0gJ0jDrG5oIDg6IFRy4buxYyBxdWFuIGjDs2EgaOG7hyBz4buRIHTGsMahbmcgcXVhbiB24bubaSBwaMawxqFuZyBwaMOhcCBQZWFyc29uJykNCg0KYGBgDQoNCioqS+G6v3QgbHXhuq1uKio6DQoNCk3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgVk5JIHbDoCBLT1NQSTogROG7sWEgdHLDqm4gbWEgdHLhuq1uIHTGsMahbmcgcXVhbiwgY8OzIHRo4buDIGvhur90IGx14bqtbiBy4bqxbmcgaGFpIGNo4buJIHPhu5EgbsOgeSBjw7MgbeG7kWkgcXVhbiBo4buHIHTGsMahbmcgcXVhbiBkxrDGoW5nIHbhu6thIHBo4bqjaS4gxJBp4buBdSBuw6B5IGfhu6NpIMO9IHLhurFuZyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gVmnhu4d0IE5hbSAoVk5JKSB2w6AgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIEjDoG4gUXXhu5FjIChLT1NQSSkgY8OzIHh1IGjGsOG7m25nIGPDuW5nIGJp4bq/biDEkeG7mW5nIHRoZW8gY8O5bmcgbeG7mXQgY2hp4buBdSBoxrDhu5tuZy4gTeG7kWkgcXVhbiBo4buHIG7DoHkgY8OzIHRo4buDIGRvIG5oaeG7gXUgeeG6v3UgdOG7kSBnw6J5IHJhLCBjaOG6s25nIGjhuqFuIG5oxrAgY8OhYyB54bq/dSB04buRIGtpbmggdOG6vyB0b8OgbiBj4bqndSwgY8OhYyBz4buxIGtp4buHbiDEkeG7i2EgY2jDrW5oIHRy4buLLCBoYXkgY8OhYyBkw7JuZyB0aeG7gW4gxJHhuqd1IHTGsCB4dXnDqm4gYmnDqm4gZ2nhu5tpLiBWaeG7h2MgaGnhu4N1IHLDtSBt4buRaSBxdWFuIGjhu4cgbsOgeSBjw7MgdGjhu4MgZ2nDunAgY8OhYyBuaMOgIMSR4bqndSB0xrAsIG5ow6AgcGjDom4gdMOtY2ggxJHGsGEgcmEgY8OhYyBxdXnhur90IMSR4buLbmggxJHhuqd1IHTGsCBoaeG7h3UgcXXhuqMgaMahbi4NCg0KYGBge3J9DQpjaGFydC5Db3JyZWxhdGlvbihydCwgaGlzdG9ncmFtPVRSVUUsIHBjaD0xOSkNCg0KYGBgDQoNCsSQ4buTIHRo4buLIHF1YW4gaOG7hyBnaeG7r2EgY2jhu4kgc+G7kSBLT1NQSSAoSMOgbiBRdeG7kWMpIHbDoCBjaOG7iSBz4buRIFZOSSAoVmnhu4d0IE5hbSkgY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHThu5VuZyBxdWFuIHbhu4EgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBoYWkgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIG7DoHkuIMSQ4buTIHRo4buLIMSRxrDhu6NjIGNoaWEgdGjDoG5oIGJhIHBo4bqnbiBjaMOtbmg6IGhhaSBiaeG7g3UgxJHhu5MgdOG6p24gc3XhuqV0IChoaXN0b2dyYW0pIHbDoCBt4buZdCBiaeG7g3UgxJHhu5MgcGjDom4gdMOhbiAoc2NhdHRlciBwbG90KS4gQ8OhYyBiaeG7g3UgxJHhu5MgdOG6p24gc3XhuqV0IGhp4buDbiB0aOG7iyBwaMOibiBwaOG7kWkgdOG6p24gc3XhuqV0IGPhu6dhIGzhu6NpIG5odeG6rW4gaMOgbmcgbmfDoHkgY2hvIGPhuqMgS09TUEkgdsOgIFZOSSwgbWluaCBo4buNYSBz4buxIHBow6JuIGLhu5EgY+G7p2EgY8OhYyBnacOhIHRy4buLIGzhu6NpIG5odeG6rW4geHVuZyBxdWFuaCBt4buZdCBnacOhIHRy4buLIHRydW5nIGLDrG5oLiBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiBjaG8gdGjhuqV5IG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbOG7o2kgbmh14bqtbiBow6BuZyBuZ8OgeSBj4bunYSBLT1NQSSB2w6AgVk5JLCB24bubaSBt4buXaSDEkWnhu4NtIHRyw6puIMSR4buTIHRo4buLIMSR4bqhaSBkaeG7h24gY2hvIG3hu5l0IGPhurdwIGdpw6EgdHLhu4sgbOG7o2kgbmh14bqtbiB0xrDGoW5nIOG7qW5nIGPhu6dhIGhhaSBjaOG7iSBz4buRLiDEkMaw4budbmcgaOG7k2kgcXV5IG3DoHUgxJHhu48gdHLDqm4gYmnhu4N1IMSR4buTIG7DoHkgdGjhu4MgaGnhu4duIHh1IGjGsOG7m25nIGNodW5nIGPhu6dhIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgaGFpIGNo4buJIHPhu5EuDQoNClBow6JuIHTDrWNoIG3hu5FpIHF1YW4gaOG7hyBuw6B5IGThu7FhIHRyw6puIGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gUGVhcnNvbiwgduG7m2kgZ2nDoSB0cuG7iyAiMC4zMSIga8OobSB0aGVvIGJhIGThuqV1IHNhbyAoKioqKSBjaOG7iSByYSBt4buRaSB0xrDGoW5nIHF1YW4gZMawxqFuZyB24burYSBwaOG6o2kgZ2nhu69hIEtPU1BJIHbDoCBWTkkuIMSQaeG7gXUgbsOgeSBuZ2jEqWEgbMOgIGtoaSBLT1NQSSB0xINuZywgVk5JIGPFqW5nIGPDsyB4dSBoxrDhu5tuZyB0xINuZyB0aGVvIHbDoCBuZ8aw4bujYyBs4bqhaS4gQmnhu4N1IMSR4buTIHBow6JuIHTDoW4gY2hvIHRo4bqleSBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3UgcGjDom4gdMOhbiB4dW5nIHF1YW5oIMSRxrDhu51uZyBo4buTaSBxdXkgduG7m2kgxJHhu5kgbmdoacOqbmcgZMawxqFuZyBuaOG6uSwgY+G7p25nIGPhu5Ega+G6v3QgbHXhuq1uIHbhu4EgbeG7kWkgdMawxqFuZyBxdWFuIGTGsMahbmcuIFR1eSBuaGnDqm4sIHPhu7EgcGjDom4gdMOhbiBj4bunYSBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3UgY2hvIHRo4bqleSBt4buRaSBxdWFuIGjhu4cgbsOgeSBraMO0bmcgaG/DoG4gaOG6o28sIG5n4bulIMO9IHLhurFuZyBjw7JuIGPDsyBuaOG7r25nIHnhur91IHThu5Ega2jDoWMgbmdvw6BpIEtPU1BJIOG6o25oIGjGsOG7n25nIMSR4bq/biBkaeG7hW4gYmnhur9uIGPhu6dhIFZOSS4gQ8OhYyBoaXN0b2dyYW0gY2hvIHRo4bqleSBz4buxIHBow6JuIGLhu5EgbOG7o2kgbmh14bqtbiBj4bunYSBj4bqjIGhhaSBjaOG7iSBz4buRIHTGsMahbmcgxJHhu5FpIMSR4buRaSB44bupbmcgcXVhbmggZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCwgY2jhu4kgcmEgcuG6sW5nIHPhu7EgYmnhur9uIMSR4buZbmcgY+G7p2EgY+G6oyBLT1NQSSB2w6AgVk5JIGtow6Egbmfhuqt1IG5oacOqbi4NCg0KDQojIyA0LjMgUGjDom4gdMOtY2ggYmnhur9uIMSR4buZbmcgY2h14buXaSB04bu3IHN14bqldCBzaW5oIGzhu6NpDQoNCmBgYHtyfQ0KcGFyKG1mcm93ID0gYygxLDIpKQ0Kdm5pMSA8LSBDYWxjdWxhdGVSZXR1cm5zKHZuaSwgbWV0aG9kID0gJ2xvZycpDQoNCmdncGxvdCh2bmksIGFlcyh4ID0gRGF0ZSwgeT0gdm5pMSRQcmljZSkpKw0KICBnZW9tX2xpbmUoY29sb3IgPSAicHVycGxlIikrDQogIGxhYnModGl0bGUgPSAiSMOsbmggOTogQmnhur9uIMSR4buZbmcgdGhlbyBuZ8OgeSBj4bunYSBUU0xOIFZOSU5ERVgiLHggPSAiTmfDoHkiLCB5PSJU4bu3IHN14bqldCBzaW5oIGzhu6NpIikrDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKQ0KDQprb3NwaSA8LSByZWFkLnhsc3goIkQ6L21vaGluaG5nYXVuaGllbi9kdWxpZXVrb3NwaS54bHN4IiwxKSANCmtvc3BpMSA8LSBDYWxjdWxhdGVSZXR1cm5zKGtvc3BpLCBtZXRob2QgPSAnbG9nJykNCmdncGxvdChrb3NwaSwgYWVzKHggPSBEYXRlLCB5PSBrb3NwaTEkUHJpY2UpKSsNCiAgZ2VvbV9saW5lKGNvbG9yID0gImdyZWVuIikrDQogIGxhYnModGl0bGUgPSAiSMOsbmggMTA6IEJp4bq/biDEkeG7mW5nIHRoZW8gbmfDoHkgY+G7p2EgVFNMTiBrb3NwaSIseCA9ICJOZ8OgeSIsIHk9IlThu7cgc3XhuqV0IHNpbmggbOG7o2kiKSsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpDQoNCmBgYA0KDQoqKk5o4bqtbiB4w6l0IHThu5VuZyBxdWFuKiogOg0KDQotICoqVk5JKiogOg0KDQpCaeG7g3UgxJHhu5MgdOG7tyBzdeG6pXQgc2luaCBs4bujaSBj4bunYSBjaOG7iSBz4buRIFZOLUluZGV4IHRyb25nIGdpYWkgxJFv4bqhbiB04burIG7Eg20gMjAxOCDEkeG6v24gbsSDbSAyMDI0IHRo4buDIGhp4buHbiBz4buxIGJp4bq/biDEkeG7mW5nIG3huqFuaCBt4bq9IHbDoCBsacOqbiB04bulYyBj4bunYSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gVmnhu4d0IE5hbS4gxJDGsOG7nW5nIGJp4buDdSBkaeG7hW4gdHLDqm4gYmnhu4N1IMSR4buTIGNobyB0aOG6pXkga2jDtG5nIGPDsyB4dSBoxrDhu5tuZyByw7UgcsOgbmcsIMSRaeG7gXUgbsOgeSBuZ+G7pSDDvSBy4bqxbmcgdGjhu4sgdHLGsOG7nW5nIGtow7RuZyBjw7Mgc+G7sSB0xINuZyB0csaw4bufbmcg4buVbiDEkeG7i25oIHRyb25nIHN14buRdCB0aOG7nWkgZ2lhbiBuw6B5LiBDw6FjIGJp4bq/biDEkeG7mW5nIG5n4bqvbiBo4bqhbiB4deG6pXQgaGnhu4duIHRoxrDhu51uZyB4dXnDqm4sIHbhu5tpIHThu7cgc3XhuqV0IHNpbmggbOG7o2kgZGFvIMSR4buZbmcgdOG7qyBkxrDGoW5nIHNhbmcgw6JtIHRyb25nIGtob+G6o25nIHRo4budaSBnaWFuIG5n4bqvbiwgY2hvIHRo4bqleSB0aOG7iyB0csaw4budbmcgcuG6pXQgbmjhuqF5IGPhuqNtIHbhu5tpIGPDoWMgdGluIHThu6ljIHbDoCBz4buxIGtp4buHbi4gQmnhu4N1IMSR4buTIGPFqW5nIHBo4bqjbiDDoW5oIG5oaeG7gXUgxJHhu4luaCB2w6AgxJHDoXkga2jDoWMgbmhhdSwgdGjhu4MgaGnhu4duIGPDoWMgZ2lhaSDEkW/huqFuIHTEg25nIHRyxrDhu59uZyB2w6AgZ2nhuqNtIMSRaeG7g20gY+G7p2EgdGjhu4sgdHLGsOG7nW5nLCBjw7luZyB24bubaSBz4buxIHRoYXkgxJHhu5VpIHbhu4EgxJHhu5kgYmnhur9uIMSR4buZbmcgdGhlbyB0aOG7nWkgZ2lhbi4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXksIGtow7RuZyBjw7MgbeG7mXQgY2h1IGvhu7MgYmnhur9uIMSR4buZbmcgcsO1IHLDoG5nIG7DoG8gxJHGsOG7o2MgdGjhu4MgaGnhu4duIHRyw6puIGJp4buDdSDEkeG7ky4gxJDhu5FpIHbhu5tpIG5ow6AgxJHhuqd1IHTGsCwgc+G7sSBiaeG6v24gxJHhu5luZyBt4bqhbmggY+G7p2EgdOG7tyBzdeG6pXQgc2luaCBs4bujaSDEkeG7k25nIG5naMSpYSB24bubaSBy4bunaSBybyBjYW8sIG5oxrBuZyDEkeG7k25nIHRo4budaSBjxaluZyB04bqhbyByYSBuaGnhu4F1IGPGoSBo4buZaSBzaW5oIGzhu51pIG7hur91IGJp4bq/dCBu4bqvbSBi4bqvdCB0aOG7nWkgY8ahLiBOaMOgIMSR4bqndSB0xrAgY+G6p24gcGjDom4gdMOtY2gga+G7uSBsxrDhu6FuZyBjw6FjIHnhur91IHThu5EgY8ahIGLhuqNuIHbDoCBr4bu5IHRodeG6rXQgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIHRyxrDhu5tjIGtoaSDEkcawYSByYSBxdXnhur90IMSR4buLbmggxJHhuqd1IHTGsC4gxJDhu5FpIHbhu5tpIG5ow6AgcXXhuqNuIGzDvSB2w6AgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoLCBiaeG7g3UgxJHhu5MgbsOgeSBjdW5nIGPhuqVwIHRow7RuZyB0aW4gcXVhbiB0cuG7jW5nIMSR4buDIMSRw6FuaCBnacOhIGhp4buHdSBxdeG6oyBob+G6oXQgxJHhu5luZyBj4bunYSB0aOG7iyB0csaw4budbmcsIGzhuq1wIGvhur8gaG/huqFjaCDEkeG6p3UgdMawLCB2w6AgxJFp4buBdSBjaOG7iW5oIGPDoWMgY2jDrW5oIHPDoWNoIGtpbmggdOG6vyBuaOG6sW0g4buVbiDEkeG7i25oIHRo4buLIHRyxrDhu51uZy4NCg0KLSAqKktPU1BJKiogOg0KDQpCaeG7g3UgxJHhu5MgYmnhur9uIMSR4buZbmcgdOG7tyBzdeG6pXQgc2luaCBs4bujaSBow6BuZyBuZ8OgeSBj4bunYSBjaOG7iSBz4buRIEtPU1BJIHRyb25nIGdpYWkgxJFv4bqhbiB04burIG7Eg20gMjAxOCDEkeG6v24gbsSDbSAyMDI0IGNobyB0aOG6pXkgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIEjDoG4gUXXhu5FjIMSRw6MgdHLhuqNpIHF1YSBt4buZdCBnaWFpIMSRb+G6oW4gxJHhuqd5IGJp4bq/biDEkeG7mW5nLCBjaOG7i3Ug4bqjbmggaMaw4bufbmcgbeG6oW5oIG3hur0gdOG7qyBuaGnhu4F1IHnhur91IHThu5Ega2jDoWMgbmhhdS4gxJDGsOG7nW5nIGJp4buDdSBkaeG7hW4gdOG7tyBzdeG6pXQgc2luaCBs4bujaSBraMO0bmcgY2hvIHRo4bqleSBt4buZdCB4dSBoxrDhu5tuZyB0xINuZyB0csaw4bufbmcgZMOgaSBo4bqhbiByw7UgcsOgbmcsIG3DoCB0aGF5IHbDoG8gxJHDsyBsw6Agbmjhu69uZyBkYW8gxJHhu5luZyBt4bqhbmggbeG6vSB2w6AgbGnDqm4gdOG7pWMsIHBo4bqjbiDDoW5oIHPhu7EgbmjhuqF5IGPhuqNtIGPhu6dhIHRo4buLIHRyxrDhu51uZyDEkeG7kWkgduG7m2kgY8OhYyBz4buxIGtp4buHbiB2w6AgdGluIHThu6ljIHjhuqN5IHJhIHRyb25nIGdpYWkgxJFv4bqhbiBuw6B5LiBCaeG7g3UgxJHhu5MgY8Wpbmcga2jDtG5nIHRo4buDIGhp4buHbiBt4buZdCBjaHUga+G7syBiaeG6v24gxJHhu5luZyByw7UgcsOgbmcgbsOgbywgbmjGsCBjaHUga+G7syBraW5oIHThur8gaG/hurdjIHRo4buLIHRyxrDhu51uZywga2hp4bq/biBjaG8gdmnhu4djIGThu7EgxJFvw6FuIHbDoCBs4bqtcCBr4bq/IGhv4bqhY2ggxJHhuqd1IHTGsCB0cuG7nyBuw6puIHBo4bupYyB04bqhcCBoxqFuLg0KDQpW4bubaSBz4buxIGJp4bq/biDEkeG7mW5nIG3huqFuaCBt4bq9IG7DoHksIMSR4bqndSB0xrAgdsOgbyBLT1NQSSB0cm9uZyBnaWFpIMSRb+G6oW4gMjAxOC0yMDI0IMSRaSBrw6htIHbhu5tpIHLhu6dpIHJvIGNhbywgbmjGsG5nIMSR4buTbmcgdGjhu51pIGPFqW5nIHThuqFvIHJhIG5oaeG7gXUgY8ahIGjhu5lpIHNpbmggbOG7nWkgY2hvIG5o4buvbmcgbmjDoCDEkeG6p3UgdMawIGPDsyBraOG6oyBuxINuZyBu4bqvbSBi4bqvdCB0aOG7nWkgY8ahLiBUdXkgbmhpw6puLCDEkeG7gyDEkcawYSByYSBxdXnhur90IMSR4buLbmggxJHhuqd1IHTGsCBoaeG7h3UgcXXhuqMsIG5ow6AgxJHhuqd1IHTGsCBj4bqnbiBwaOG6o2kgcGjDom4gdMOtY2gga+G7uSBsxrDhu6FuZyBjw6FjIHnhur91IHThu5EgY8ahIGLhuqNuIHbDoCBr4bu5IHRodeG6rXQgY+G7p2EgdGjhu4sgdHLGsOG7nW5nLiBDw6FjIHnhur91IHThu5EgdsSpIG3DtCBuaMawIGzDo2kgc3XhuqV0LCB04bu3IGdpw6EgaOG7kWkgxJFvw6FpLCB0xINuZyB0csaw4bufbmcgR0RQLCB2w6AgY2jDrW5oIHPDoWNoIHRp4buBbiB04buHIMSRw7NuZyB2YWkgdHLDsiBxdWFuIHRy4buNbmcgdHJvbmcgdmnhu4djIMSR4buLbmggaMOsbmggeHUgaMaw4bubbmcgY+G7p2EgdGjhu4sgdHLGsOG7nW5nLCB0cm9uZyBraGkgY8OhYyB54bq/dSB04buRIHZpIG3DtCBuaMawIGvhur90IHF14bqjIGtpbmggZG9hbmggY+G7p2EgZG9hbmggbmdoaeG7h3AgdsOgIHTDom0gbMO9IG5ow6AgxJHhuqd1IHTGsCBjxaluZyBnw7NwIHBo4bqnbiBraMO0bmcgbmjhu48gdsOgbyBz4buxIGJp4bq/biDEkeG7mW5nIG7DoHkuDQoNCkJp4buDdSDEkeG7kyBuw6B5IGPDsm4gY8OzIMO9IG5naMSpYSBxdWFuIHRy4buNbmcgxJHhu5FpIHbhu5tpIGPDoWMgbmjDoCBxdeG6o24gbMO9IHbDoCBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2guIE7DsyBjdW5nIGPhuqVwIG3hu5l0IGPDtG5nIGPhu6UgxJHhu4MgxJHDoW5oIGdpw6EgaGnhu4d1IHF14bqjIGhv4bqhdCDEkeG7mW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYywgdOG7qyDEkcOzIGdpw7pwIGPDoWMgbmjDoCBxdeG6o24gbMO9IHF14bu5IGzhuq1wIGvhur8gaG/huqFjaCDEkeG6p3UgdMawIHBow7kgaOG7o3AuIMSQ4buTbmcgdGjhu51pLCBuw7MgY8WpbmcgY2hvIHBow6lwIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIMSRw6FuaCBnacOhIHTDoWMgxJHhu5luZyBj4bunYSBjw6FjIGNow61uaCBzw6FjaCBraW5oIHThur8gdsOgIMSRaeG7gXUgY2jhu4luaCBjaMO6bmcgxJHhu4Mg4buVbiDEkeG7i25oIHRo4buLIHRyxrDhu51uZy4gxJDhu4MgY8OzIMSRxrDhu6NjIG3hu5l0IHBow6JuIHTDrWNoIHRvw6BuIGRp4buHbiBoxqFuLCBj4bqnbiBwaOG6o2kga+G6v3QgaOG7o3AgYmnhu4N1IMSR4buTIG7DoHkgduG7m2kgY8OhYyBjaOG7iSBz4buRIGvhu7kgdGh14bqtdCBraMOhYywgY8WpbmcgbmjGsCBjw6FjIHRow7RuZyB0aW4gduG7gSBu4buBbiBraW5oIHThur8gSMOgbiBRdeG7kWMgdsOgIGPDoWMgeeG6v3UgdOG7kSBjxqEgYuG6o24gY+G7p2EgZG9hbmggbmdoaeG7h3AgbmnDqm0geeG6v3QgdHLDqm4gS09TUEkuDQoNCg0KYGBge3J9DQpydCAlPiUgZ2dwbG90KGFlcyhWTkksIGtvc3BpKSkgKw0KICBnZW9tX3BvaW50KGNvbCA9ICdibHVlJyxzaGFwZSA9IFRSVUUpICsgDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICdsbScsc2UgPSBULCBjb2wgPSAnZ3JlZW4nKSArICN0aMOqbSDEkcaw4budbmcgaOG7k2kgcXV5IHbhu5tpIHBoxrDGoW5nIHBow6FwIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oICANCiAgbGFicyh0aXRsZSA9ICdIw6xuaCAxMTogQmnhu4N1IMSR4buTIFNjYXR0ZXIgVFNMTiBj4bunYSBrb3NwaSB2w6AgVk5JJywgeCA9ICdWTkknLCB5ID0gJ2tvc3BpJykNCg0KYGBgDQoNCkThu7FhIHRyw6puIGJp4buDdSDEkeG7kyBzY2F0dGVyLCB04bu3IHN14bqldCBzaW5oIGzhu6NpIChUU0xOKSBj4bunYSBoYWkgY2jhu4kgc+G7kSBLT1NQSSB2w6AgVk4tSW5kZXggKFZOSSkgY2hvIHRo4bqleSBjw7MgbeG7mXQgbeG7kWkgcXVhbiBo4buHIGTGsMahbmcgZ2nhu69hIGNow7puZywgxJHGsOG7o2MgdGjhu4MgaGnhu4duIHF1YSDEkeG7mSBk4buRYyBkxrDGoW5nIGPhu6dhIMSRxrDhu51uZyBo4buTaSBxdXkuIMSQaeG7gXUgbsOgeSBjw7MgbmdoxKlhIGzDoCBraGkgVFNMTiBj4bunYSBt4buZdCBjaOG7iSBz4buRIHTEg25nLCBjaOG7iSBz4buRIGPDsm4gbOG6oWkgY8WpbmcgY8OzIHh1IGjGsOG7m25nIHTEg25nIHRoZW8uIFR1eSBuaGnDqm4sIG3hu5FpIHF1YW4gaOG7hyBuw6B5IGtow7RuZyBob8OgbiB0b8OgbiBjaOG6t3QgY2jhur0sIHRo4buDIGhp4buHbiBxdWEgc+G7sSBwaMOibiB0w6FuIHLhu5luZyBj4bunYSBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3UgeHVuZyBxdWFuaCDEkcaw4budbmcgaOG7k2kgcXV5LiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBy4bqxbmcgbeG6t2MgZMO5IGPDsyB4dSBoxrDhu5tuZyBjw7luZyB0xINuZyBob+G6t2MgZ2nhuqNtLCBLT1NQSSB2w6AgVk5JIHbhuqtuIGPDsyBuaOG7r25nIHRo4budaSDEkWnhu4NtIGRp4buFbiBiaeG6v24ga2jDoWMgYmnhu4d0LCBjaOG7i3Ug4bqjbmggaMaw4bufbmcgdOG7qyBjw6FjIHnhur91IHThu5Ega2jDoWMgbmhhdS4NCg0KxJDhu5kgYmnhur9uIMSR4buZbmcgY+G7p2EgY+G6oyBoYWkgY2jhu4kgc+G7kSBjxaluZyBraMOhIGzhu5tuLCB24bubaSBjw6FjIGdpYWkgxJFv4bqhbiB0xINuZyB0csaw4bufbmcgdsOgIGdp4bqjbSDEkWnhu4NtIG3huqFuaC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgY+G6oyBoYWkgdGjhu4sgdHLGsOG7nW5nIMSR4buBdSB0cuG6o2kgcXVhIG5o4buvbmcgYmnhur9uIMSR4buZbmcgxJHDoW5nIGvhu4MgdHJvbmcgZ2lhaSDEkW/huqFuIDIwMTgtMjAyNCwgbmjGsG5nIG3hu6ljIMSR4buZIGJp4bq/biDEkeG7mW5nIGPDsyB0aOG7gyBraMO0bmcgxJHhu5NuZyBuaOG6pXQgdHJvbmcgdOG7q25nIHRo4budaSBr4buzLiBT4buxIGtow7RuZyDEkeG7k25nIG5o4bqldCBuw6B5IHThuqFvIHJhIGPGoSBo4buZaSBuaMawbmcgY8WpbmcgdGnhu4FtIOG6qW4gcuG7p2kgcm8sIMSR4bq3YyBiaeG7h3Qga2hpIHRo4buLIHRyxrDhu51uZyBuw6B5IGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyBs4bqrbiBuaGF1IHRyb25nIGPDoWMgdGjhu51pIMSRaeG7g20ga2jDsyBraMSDbi4NCg0KVmnhu4djIG5ow6AgxJHhuqd1IHTGsCBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgdGjDtG5nIHRpbiB24buBIG3hu5FpIHF1YW4gaOG7hyBuw6B5IMSR4buDIMSRYSBk4bqhbmcgaMOzYSBkYW5oIG3hu6VjIMSR4bqndSB0xrAgZ2nhu69hIGhhaSB0aOG7iyB0csaw4budbmcgbMOgIG3hu5l0IGNoaeG6v24gbMaw4bujYyB0aeG7gW0gbsSDbmcuIE3hurdjIGTDuSBjw7MgbeG7kWkgcXVhbiBo4buHIGTGsMahbmcsIG5oxrBuZyBz4buxIGtow6FjIGJp4buHdCB0cm9uZyBiaeG6v24gxJHhu5luZyBjw7MgdGjhu4MgZ2nDunAgZ2nhuqNtIHRoaeG7g3UgcuG7p2kgcm8gdOG7lW5nIHRo4buDIGNobyBkYW5oIG3hu6VjLiBUdXkgbmhpw6puLCBuaMOgIMSR4bqndSB0xrAgY8WpbmcgY+G6p24gbMawdSDDvSBy4bqxbmcgbeG7kWkgcXVhbiBo4buHIG7DoHkgY2jhu4kgcGjhuqNuIMOhbmggdHJvbmcgcXXDoSBraOG7qSB2w6AgY8OzIHRo4buDIHRoYXkgxJHhu5VpIGRvIGPDoWMgeeG6v3UgdOG7kSBraW5oIHThur8gdsSpIG3DtCB2w6AgdmkgbcO0LCBjxaluZyBuaMawIHTDom0gbMO9IHRo4buLIHRyxrDhu51uZy4gRG8gxJHDsywgdHLGsOG7m2Mga2hpIMSRxrBhIHJhIHF1eeG6v3QgxJHhu4tuaCDEkeG6p3UgdMawLCB2aeG7h2Mga+G6v3QgaOG7o3AgYmnhu4N1IMSR4buTIG7DoHkgduG7m2kgY8OhYyBwaMOibiB0w61jaCBr4bu5IHRodeG6rXQsIGPGoSBi4bqjbiB2w6AgY8OhYyB54bq/dSB04buRIMSR4buLbmggbMaw4bujbmcga2jDoWMgbMOgIHLhuqV0IHF1YW4gdHLhu41uZy4NCg0KDQoNCg0KDQoNCiMjIDQuNCDGr+G7m2MgbMaw4bujbmcgY+G6pXUgdHLDumMgcGjhu6UgdGh14buZYyBj4bunYSBWTkkgdsOgIEtPU1BJDQoNCiMjIyA0LjQuMSBYw6FjIMSR4buLbmggbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbg0KDQrEkOG7gyDGsOG7m2MgbMaw4bujbmcgY2jDrW5oIHjDoWMgY8OhYyB0aGFtIHPhu5EgY+G7p2EgbcO0IGjDrG5oIGNvcHVsYSwgdHLGsOG7m2MgdGnDqm4gY+G6p24geMOhYyDEkeG7i25oIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gdOG7kWkgxrB1IG5o4bqldCDEkeG7gyBtw7QgdOG6oyDEkeG6t2MgxJFp4buDbSBiaeG6v24gxJHhu5luZyBj4bunYSB04burbmcgY2h14buXaSBs4bujaSBzdeG6pXQgY2jhu6luZyBraG/DoW4uIEPDoWMgcGjDom4gcGjhu5FpIGJpw6puIG7DoHksIMSRxrDhu6NjIHjDonkgZOG7sW5nIGThu7FhIHRyw6puIHNhaSBz4buRIGNodeG6qW4gaMOzYSBj4bunYSBt4buXaSBjaHXhu5dpIGzhu6NpIHN14bqldCwgc+G6vSBsw6AgxJHhuqd1IHbDoG8gcXVhbiB0cuG7jW5nIGNobyBtw7QgaMOsbmggY29wdWxhIGhhaSBiaeG6v24uIE3DtCBow6xuaCBiacOqbiB04buVbmcgcXXDoXQgw6FwIGThu6VuZyBsw6AgQVJNQShwLHEpLUdKUi1HQVJDSChyLG0pLCB0cm9uZyDEkcOzIMSR4buZIHRy4buFIHAgdsOgIHEgY+G7p2EgbcO0IGjDrG5oIEFSTUEocCxxKSDEkcaw4bujYyBs4buxYSBjaOG7jW4gZOG7sWEgdHLDqm4gdmnhu4djIHThu5FpIHRoaeG7g3UgaMOzYSB0acOqdSBjaHXhuqluIHRow7RuZyB0aW4gQUlDLCB0aMO0bmcgcXVhIHBoxrDGoW5nIHBow6FwIMaw4bubYyBsxrDhu6NuZyBo4bujcCBsw70gY+G7sWMgxJHhuqFpIChNTEUpLiBNw7QgaMOsbmggbsOgeSB04buRaSDGsHUgaMOzYSB2aeG7h2MgeMOhYyDEkeG7i25oIMSR4buZIHRy4buFIHbDoCBixrDhu5tjIG5o4bqjeSBj4bunYSBjaHXhu5dpIGThu68gbGnhu4d1LiBIaeG7h3Ug4bupbmcgQVJDSCwgxJHGsOG7o2MgeMOhYyBuaOG6rW4gcXVhIGtp4buDbSDEkeG7i25oIExhZ3JhbmdlIE11bHRpcGxpZXIgKExNKSwgeHXhuqV0IGhp4buHbiDhu58gdOG6pXQgY+G6oyBjw6FjIGNodeG7l2kgbOG7o2kgc3XhuqV0LCBsw6BtIG7hu5VpIGLhuq10IHPhu7EgY+G6p24gdGhp4bq/dCBj4bunYSB2aeG7h2Mgc+G7rSBk4bulbmcgbcO0IGjDrG5oIEdBUkNILiDEkOG7gyB0w6xtIHJhIG3DtCBow6xuaCBiacOqbiBwaMO5IGjhu6NwIG5o4bqldCwgbeG7mXQgdOG6rXAgaOG7o3AgZ+G7k20gMjAgbcO0IGjDrG5oIGtow6FjIG5oYXUsIHbhu5tpIGPDoWMga+G6v3QgaOG7o3AgdGhhbSBz4buRIHIsIG0gdsOgIMSR4buZIHRy4buFIHAsIHEgdOG7kWkgxJFhIGzDoCAyLCDEkcaw4bujYyDEkcOhbmggZ2nDoS4gxJDhu5NuZyB0aOG7nWksIDUgZOG6oW5nIGjDoG0gcGjDom4gcGjhu5FpIGPhu6dhIGNodeG7l2kgcGjhuqduIGTGsCBjxaluZyDEkcaw4bujYyBraeG7g20gxJHhu4tuaCBjaG8gbeG7l2kgY2h14buXaSBs4bujaSBzdeG6pXQsIGJhbyBn4buTbTogcGjDom4gcGjhu5FpIGNodeG6qW4gKE5vcm1hbCksIFN0dWRlbnQtdCwgU2tld2VkIFN0dWRlbnQtdCwgcGjDom4gcGjhu5FpIGzhu5dpIHThu5VuZyBxdcOhdCAoR0VEKSwgdsOgIHBow6JuIHBo4buRaSBs4buXaSB04buVbmcgcXXDoXQgbOG7h2NoIChzR0VEKS4gQ3Xhu5FpIGPDuW5nLCBtw7QgaMOsbmggcGjDom4gcGjhu5FpIGJpw6puIHThu5FpIMawdSBjaG8gbeG7l2kgY2h14buXaSBs4bujaSBzdeG6pXQgxJHGsOG7o2MgeMOhYyDEkeG7i25oIGThu7FhIHRyw6puIGdpw6EgdHLhu4sgbmjhu48gbmjhuqV0IGPhu6dhIGPDoWMgdGnDqnUgY2h14bqpbiB0aMO0bmcgdGluIEFJQywgQklDLCBTSUMsIHbDoCBIUUlDLCDEkeG6o20gYuG6o28gdMOtbmgga2hvYSBo4buNYyB2w6Agc+G7sSBjaMOtbmggeMOhYyBjYW8gbmjhuqV0IHRyb25nIHZp4buHYyBtw7QgaMOsbmggaMOzYSBjw6FjIGNodeG7l2kgZOG7ryBsaeG7h3UgdMOgaSBjaMOtbmguDQoNCg0KYGBge3J9DQojU2V0dXAgZ2FyY2goMSwxKSBhbmQgZXN0aW1hdGUgZm9yIFZOSSBjb2VmDQojTm9ybQ0Kc3BlY19WTklfdWdhcmNoMTFfbm9ybSA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAxKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMSwxKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJub3JtIikNCg0KVk5JX2dhcmNoMTFfbm9ybSA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfVk5JX3VnYXJjaDExX25vcm0sIGRhdGEgPSBydCRWTkkpDQoNCiNTdGQNCnNwZWNfVk5JX3VnYXJjaDExX3N0ZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAxKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMSwgMSksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAic3RkIikNCg0KVk5JX2dhcmNoMTFfc3RkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19WTklfdWdhcmNoMTFfc3RkLCBkYXRhID0gcnQkVk5JKQ0KDQojU3N0ZA0Kc3BlY19WTklfdWdhcmNoMTFfc3N0ZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAxKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMSwgMSksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAic3N0ZCIpDQoNClZOSV9nYXJjaDExX3NzdGQgPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX1ZOSV91Z2FyY2gxMV9zc3RkLCBkYXRhID0gcnQkVk5JKQ0KDQojZ2VkDQpzcGVjX1ZOSV91Z2FyY2gxMV9nZWQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMSkpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDEsIDEpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gImdlZCIpDQoNClZOSV9nYXJjaDExX2dlZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfVk5JX3VnYXJjaDExX2dlZCwgZGF0YSA9IHJ0JFZOSSkNCg0KI1NnZWQNCnNwZWNfVk5JX3VnYXJjaDExX3NnZWQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMSkpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDEsIDEpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNnZWQiKQ0KDQpWTklfZ2FyY2gxMV9zZ2VkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19WTklfdWdhcmNoMTFfc2dlZCwgZGF0YSA9IHJ0JFZOSSkNCg0KI1NldHVwIGdhcmNoKDEsMikgYW5kIGVzdGltYXRlIGZvciBWTkkgY29lZg0KI25vcm0NCnNwZWNfVk5JX3VnYXJjaDEyX25vcm0gPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMikpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDEsMSksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAibm9ybSIpDQoNClZOSV9nYXJjaDEyX25vcm0gPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX1ZOSV91Z2FyY2gxMl9ub3JtLCBkYXRhID0gcnQkVk5JKQ0KDQojc3RkDQpzcGVjX1ZOSV91Z2FyY2gxMl9zdGQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMikpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDEsIDEpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gInN0ZCIpDQoNClZOSV9nYXJjaDEyX3N0ZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfVk5JX3VnYXJjaDEyX3N0ZCwgZGF0YSA9IHJ0JFZOSSkNCg0KI3NzdGQNCnNwZWNfVk5JX3VnYXJjaDEyX3NzdGQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMikpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDEsIDEpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNzdGQiKQ0KDQpWTklfZ2FyY2gxMl9zc3RkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19WTklfdWdhcmNoMTJfc3N0ZCwgZGF0YSA9IHJ0JFZOSSkNCg0KI2dlZA0Kc3BlY19WTklfdWdhcmNoMTJfZ2VkIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDIpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygxLCAxKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJnZWQiKQ0KDQpWTklfZ2FyY2gxMl9nZWQgPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX1ZOSV91Z2FyY2gxMl9nZWQsIGRhdGEgPSBydCRWTkkpDQoNCiNzZ2VkDQpzcGVjX1ZOSV91Z2FyY2gxMl9zZ2VkIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDIpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygxLCAxKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzZ2VkIikNCg0KVk5JX2dhcmNoMTJfc2dlZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfVk5JX3VnYXJjaDEyX3NnZWQsIGRhdGEgPSBydCRWTkkpDQoNCiNTZXR1cCBnYXJjaCgyLDEpIGFuZCBlc3RpbWF0ZSBmb3IgVk5JIGNvZWYNCiNub3JtDQpzcGVjX1ZOSV91Z2FyY2gyMV9ub3JtIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDEpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygxLDEpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gIm5vcm0iKQ0KDQpWTklfZ2FyY2gyMV9ub3JtIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19WTklfdWdhcmNoMjFfbm9ybSwgZGF0YSA9IHJ0JFZOSSkNCg0KI3N0ZA0Kc3BlY19WTklfdWdhcmNoMjFfc3RkIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDEpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygxLCAxKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzdGQiKQ0KDQpWTklfZ2FyY2gyMV9zdGQgPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX1ZOSV91Z2FyY2gyMV9zdGQsIGRhdGEgPSBydCRWTkkpDQoNCiNzc3RkDQpzcGVjX1ZOSV91Z2FyY2gyMV9zc3RkIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDEpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygxLCAxKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzc3RkIikNCg0KVk5JX2dhcmNoMjFfc3N0ZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfVk5JX3VnYXJjaDIxX3NzdGQsIGRhdGEgPSBydCRWTkkpDQoNCiNnZWQNCnNwZWNfVk5JX3VnYXJjaDIxX2dlZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAxKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMSwgMSksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAiZ2VkIikNCg0KVk5JX2dhcmNoMjFfZ2VkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19WTklfdWdhcmNoMjFfZ2VkLCBkYXRhID0gcnQkVk5JKQ0KDQojc2dlZA0Kc3BlY19WTklfdWdhcmNoMjFfc2dlZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAxKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMSwgMSksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAic2dlZCIpDQoNClZOSV9nYXJjaDIxX3NnZWQgPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX1ZOSV91Z2FyY2gyMV9zZ2VkLCBkYXRhID0gcnQkVk5JKQ0KDQojU2V0dXAgZ2FyY2goMiwyKSBhbmQgZXN0aW1hdGUgZm9yIFZOSSBjb2VmDQojbm9ybQ0Kc3BlY19WTklfdWdhcmNoMjJfbm9ybSA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAyKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMSwxKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJub3JtIikNCg0KVk5JX2dhcmNoMjJfbm9ybSA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfVk5JX3VnYXJjaDIyX25vcm0sIGRhdGEgPSBydCRWTkkpDQoNCiNzdGQNCnNwZWNfVk5JX3VnYXJjaDIyX3N0ZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAyKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMSwgMSksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAic3RkIikNCg0KVk5JX2dhcmNoMjJfc3RkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19WTklfdWdhcmNoMjJfc3RkLCBkYXRhID0gcnQkVk5JKQ0KDQojc3N0ZA0Kc3BlY19WTklfdWdhcmNoMjJfc3N0ZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAyKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMSwgMSksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAic3N0ZCIpDQoNClZOSV9nYXJjaDIyX3NzdGQgPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX1ZOSV91Z2FyY2gyMl9zc3RkLCBkYXRhID0gcnQkVk5JKQ0KDQojZ2VkDQpzcGVjX1ZOSV91Z2FyY2gyMl9nZWQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMikpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDEsIDEpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gImdlZCIpDQoNClZOSV9nYXJjaDIyX2dlZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfVk5JX3VnYXJjaDIyX2dlZCwgZGF0YSA9IHJ0JFZOSSkNCg0KI3NnZWQNCnNwZWNfVk5JX3VnYXJjaDIyX3NnZWQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMikpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDEsIDEpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNnZWQiKQ0KDQpWTklfZ2FyY2gyMl9zZ2VkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19WTklfdWdhcmNoMjJfc2dlZCwgZGF0YSA9IHJ0JFZOSSkNCg0KI1NldHVwIGdhcmNoKDEsMSkgYW5kIGVzdGltYXRlIGZvciBrb3NwaSBjb2VmDQojbm9ybQ0Kc3BlY19rb3NwaV91Z2FyY2gxMV9ub3JtIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDEpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygwLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJub3JtIikNCg0Ka29zcGlfZ2FyY2gxMV9ub3JtIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19rb3NwaV91Z2FyY2gxMV9ub3JtLCBkYXRhID0gcnQka29zcGkpDQoNCiNzdGQNCnNwZWNfa29zcGlfdWdhcmNoMTFfc3RkIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDEpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygwLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzdGQiKQ0KDQprb3NwaV9nYXJjaDExX3N0ZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfa29zcGlfdWdhcmNoMTFfc3RkLCBkYXRhID0gcnQka29zcGkpDQoNCiNzc3RkDQpzcGVjX2tvc3BpX3VnYXJjaDExX3NzdGQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMSkpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDAsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNzdGQiKQ0KDQprb3NwaV9nYXJjaDExX3NzdGQgPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX2tvc3BpX3VnYXJjaDExX3NzdGQsIGRhdGEgPSBydCRrb3NwaSkNCg0KI2dlZA0Kc3BlY19rb3NwaV91Z2FyY2gxMV9nZWQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMSkpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDAsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gImdlZCIpDQoNCmtvc3BpX2dhcmNoMTFfZ2VkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19rb3NwaV91Z2FyY2gxMV9nZWQsIGRhdGEgPSBydCRrb3NwaSkNCg0KI3NnZWQNCnNwZWNfa29zcGlfdWdhcmNoMTFfc2dlZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAxKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMCwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAic2dlZCIpDQoNCmtvc3BpX2dhcmNoMTFfc2dlZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfa29zcGlfdWdhcmNoMTFfc2dlZCwgZGF0YSA9IHJ0JGtvc3BpKQ0KDQojU2V0dXAgZ2FyY2goMSwyKSBhbmQgZXN0aW1hdGUgZm9yIFNUSSBjb2VmDQojbm9ybQ0Kc3BlY19rb3NwaV91Z2FyY2gxMl9ub3JtIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDIpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygwLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJub3JtIikNCg0Ka29zcGlfZ2FyY2gxMl9ub3JtIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19rb3NwaV91Z2FyY2gxMl9ub3JtLCBkYXRhID0gcnQka29zcGkpDQoNCiNzdGQNCnNwZWNfa29zcGlfdWdhcmNoMTJfc3RkIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDEsIDIpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygwLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzdGQiKQ0KDQprb3NwaV9nYXJjaDEyX3N0ZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfa29zcGlfdWdhcmNoMTJfc3RkLCBkYXRhID0gcnQka29zcGkpDQoNCiNzc3RkDQpzcGVjX2tvc3BpX3VnYXJjaDEyX3NzdGQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMikpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDAsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNzdGQiKQ0KDQprb3NwaV9nYXJjaDEyX3NzdGQgPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX2tvc3BpX3VnYXJjaDEyX3NzdGQsIGRhdGEgPSBydCRrb3NwaSkNCg0KI2dlZA0Kc3BlY19rb3NwaV91Z2FyY2gxMl9nZWQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMSwgMikpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDAsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gImdlZCIpDQoNCmtvc3BpX2dhcmNoMTJfZ2VkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19rb3NwaV91Z2FyY2gxMl9nZWQsIGRhdGEgPSBydCRrb3NwaSkNCg0KI3NnZWQNCnNwZWNfa29zcGlfdWdhcmNoMTJfc2dlZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygxLCAyKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMCwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAic2dlZCIpDQoNCmtvc3BpX2dhcmNoMTJfc2dlZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfa29zcGlfdWdhcmNoMTJfc2dlZCwgZGF0YSA9IHJ0JGtvc3BpKQ0KDQojU2V0dXAgZ2FyY2goMiwxKSBhbmQgZXN0aW1hdGUgZm9yIFNUSSBjb2VmDQojbm9ybQ0Kc3BlY19rb3NwaV91Z2FyY2gyMV9ub3JtIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDEpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygwLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJub3JtIikNCg0Ka29zcGlfZ2FyY2gyMV9ub3JtIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19rb3NwaV91Z2FyY2gyMV9ub3JtLCBkYXRhID0gcnQka29zcGkpDQoNCiNzdGQNCnNwZWNfa29zcGlfdWdhcmNoMjFfc3RkIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDEpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygwLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzdGQiKQ0KDQprb3NwaV9nYXJjaDIxX3N0ZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfa29zcGlfdWdhcmNoMjFfc3RkLCBkYXRhID0gcnQka29zcGkpDQoNCiNzc3RkDQpzcGVjX2tvc3BpX3VnYXJjaDIxX3NzdGQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMSkpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDAsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gInNzdGQiKQ0KDQprb3NwaV9nYXJjaDIxX3NzdGQgPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX2tvc3BpX3VnYXJjaDIxX3NzdGQsIGRhdGEgPSBydCRrb3NwaSkNCg0KI2dlZA0Kc3BlY19rb3NwaV91Z2FyY2gyMV9nZWQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMSkpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDAsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gImdlZCIpDQoNCmtvc3BpX2dhcmNoMjFfZ2VkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19rb3NwaV91Z2FyY2gyMV9nZWQsIGRhdGEgPSBydCRrb3NwaSkNCg0KI3NnZWQNCnNwZWNfa29zcGlfdWdhcmNoMjFfc2dlZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAxKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMCwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAic2dlZCIpDQoNCmtvc3BpX2dhcmNoMjFfc2dlZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfa29zcGlfdWdhcmNoMjFfc2dlZCwgZGF0YSA9IHJ0JGtvc3BpKQ0KDQojU2V0dXAgZ2FyY2goMiwyKSBhbmQgZXN0aW1hdGUgZm9yIGtvc3BpIGNvZWYNCiNub3JtDQpzcGVjX2tvc3BpX3VnYXJjaDIyX25vcm0gPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMikpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDAsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gIm5vcm0iKQ0KDQprb3NwaV9nYXJjaDIyX25vcm0gPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX2tvc3BpX3VnYXJjaDIyX25vcm0sIGRhdGEgPSBydCRrb3NwaSkNCg0KI3N0ZA0Kc3BlY19rb3NwaV91Z2FyY2gyMl9zdGQgPC0gdWdhcmNoc3BlYygNCiAgdmFyaWFuY2UubW9kZWwgPSBsaXN0KG1vZGVsID0gImdqckdBUkNIIiwgZ2FyY2hPcmRlciA9IGMoMiwgMikpLA0KICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBjKDAsIDIpLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgZGlzdHJpYnV0aW9uLm1vZGVsID0gInN0ZCIpDQoNCmtvc3BpX2dhcmNoMjJfc3RkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19rb3NwaV91Z2FyY2gyMl9zdGQsIGRhdGEgPSBydCRrb3NwaSkNCg0KI3NzdGQNCnNwZWNfa29zcGlfdWdhcmNoMjJfc3N0ZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAyKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMCwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAic3N0ZCIpDQoNCmtvc3BpX2dhcmNoMjJfc3N0ZCA8LSB1Z2FyY2hmaXQoc3BlYyA9IHNwZWNfa29zcGlfdWdhcmNoMjJfc3N0ZCwgZGF0YSA9IHJ0JGtvc3BpKQ0KDQojZ2VkDQpzcGVjX2tvc3BpX3VnYXJjaDIyX2dlZCA8LSB1Z2FyY2hzcGVjKA0KICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gYygyLCAyKSksDQogIG1lYW4ubW9kZWwgPSBsaXN0KGFybWFPcmRlciA9IGMoMCwgMiksIGluY2x1ZGUubWVhbiA9IFRSVUUpLA0KICBkaXN0cmlidXRpb24ubW9kZWwgPSAiZ2VkIikNCg0Ka29zcGlfZ2FyY2gyMl9nZWQgPC0gdWdhcmNoZml0KHNwZWMgPSBzcGVjX2tvc3BpX3VnYXJjaDIyX2dlZCwgZGF0YSA9IHJ0JGtvc3BpKQ0KDQojc2dlZA0Kc3BlY19rb3NwaV91Z2FyY2gyMl9zZ2VkIDwtIHVnYXJjaHNwZWMoDQogIHZhcmlhbmNlLm1vZGVsID0gbGlzdChtb2RlbCA9ICJnanJHQVJDSCIsIGdhcmNoT3JkZXIgPSBjKDIsIDIpKSwNCiAgbWVhbi5tb2RlbCA9IGxpc3QoYXJtYU9yZGVyID0gYygwLCAyKSwgaW5jbHVkZS5tZWFuID0gVFJVRSksDQogIGRpc3RyaWJ1dGlvbi5tb2RlbCA9ICJzZ2VkIikNCg0Ka29zcGlfZ2FyY2gyMl9zZ2VkIDwtIHVnYXJjaGZpdChzcGVjID0gc3BlY19rb3NwaV91Z2FyY2gyMl9zZ2VkLCBkYXRhID0gcnQka29zcGkpDQoNCiNDaG9vc2Ugb3B0aW1pemF0aW9uIG1vZGVsIGZvciB2bmkgY29lZg0KVk5JLm1vZGVsLmxpc3QgPC0gbGlzdChnYXJjaDExbiA9IFZOSV9nYXJjaDExX25vcm0sIGdhcmNoMTF0ID0gVk5JX2dhcmNoMTFfc3RkLCBnYXJjaDExc3QgPSBWTklfZ2FyY2gxMV9zc3RkLCANCiAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMWcgPSBWTklfZ2FyY2gxMV9nZWQsIGdhcmNoMTFzZyA9IFZOSV9nYXJjaDExX3NnZWQsIA0KICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDEybiA9IFZOSV9nYXJjaDEyX25vcm0sIGdhcmNoMTJ0ID0gVk5JX2dhcmNoMTJfc3RkLCBnYXJjaDEyc3QgPSBWTklfZ2FyY2gxMl9zc3RkLCANCiAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMmcgPSBWTklfZ2FyY2gxMl9nZWQsIGdhcmNoMTJzZyA9IFZOSV9nYXJjaDEyX3NnZWQsDQogICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjFuID0gVk5JX2dhcmNoMjFfbm9ybSwgZ2FyY2gyMXQgPSBWTklfZ2FyY2gyMV9zdGQsIGdhcmNoMjFzdCA9IFZOSV9nYXJjaDIxX3NzdGQsIA0KICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIxZyA9IFZOSV9nYXJjaDIxX2dlZCwgZ2FyY2gyMXNnID0gVk5JX2dhcmNoMjFfc2dlZCwNCiAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMm4gPSBWTklfZ2FyY2gyMl9ub3JtLCBnYXJjaDIydCA9IFZOSV9nYXJjaDIyX3N0ZCwgZ2FyY2gyMnN0ID0gVk5JX2dhcmNoMjJfc3N0ZCwgDQogICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjJnID0gVk5JX2dhcmNoMjJfZ2VkLCBnYXJjaDIyc2cgPSBWTklfZ2FyY2gyMl9zZ2VkDQopIA0KDQpWTkkuaW5mby5tYXQgPC0gc2FwcGx5KFZOSS5tb2RlbC5saXN0LCBpbmZvY3JpdGVyaWEpDQoNCnJvd25hbWVzKFZOSS5pbmZvLm1hdCkgPC0gcm93bmFtZXMoaW5mb2NyaXRlcmlhKFZOSV9nYXJjaDExX25vcm0pKQ0KDQpWTkkuaW5kcyA8LSB3aGljaChWTkkuaW5mby5tYXQgPT0gbWluKFZOSS5pbmZvLm1hdFsxLF0pLCBhcnIuaW5kPVRSVUUpICNMYXkgY2hpIHNvIEFJQyBuaG8gbmhhdA0KDQptb2RlbC5WTkkgPC0gY29sbmFtZXMoVk5JLmluZm8ubWF0KVtWTkkuaW5kc1ssMl1dDQoNCg0KI0Nob29zZSBvcHRpbWl6YXRpb24gbW9kZWwgZm9yIGtvc3BpIGNvZWYNCmtvc3BpLm1vZGVsLmxpc3QgPC0gbGlzdChnYXJjaDExbiA9IGtvc3BpX2dhcmNoMTFfbm9ybSwgZ2FyY2gxMXQgPSBrb3NwaV9nYXJjaDExX3N0ZCwgZ2FyY2gxMXN0ID0ga29zcGlfZ2FyY2gxMV9zc3RkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDExZyA9IGtvc3BpX2dhcmNoMTFfZ2VkLCBnYXJjaDExc2cgPSBrb3NwaV9nYXJjaDExX3NnZWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMTJuID0ga29zcGlfZ2FyY2gxMl9ub3JtLCBnYXJjaDEydCA9IGtvc3BpX2dhcmNoMTJfc3RkLCBnYXJjaDEyc3QgPSBrb3NwaV9nYXJjaDEyX3NzdGQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMTJnID0ga29zcGlfZ2FyY2gxMl9nZWQsIGdhcmNoMTJzZyA9IGtvc3BpX2dhcmNoMTJfc2dlZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIxbiA9IGtvc3BpX2dhcmNoMjFfbm9ybSwgZ2FyY2gyMXQgPSBrb3NwaV9nYXJjaDIxX3N0ZCwgZ2FyY2gyMXN0ID0ga29zcGlfZ2FyY2gyMV9zc3RkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIxZyA9IGtvc3BpX2dhcmNoMjFfZ2VkLCBnYXJjaDIxc2cgPSBrb3NwaV9nYXJjaDIxX3NnZWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMm4gPSBrb3NwaV9nYXJjaDIyX25vcm0sIGdhcmNoMjJ0ID0ga29zcGlfZ2FyY2gyMl9zdGQsIGdhcmNoMjJzdCA9IGtvc3BpX2dhcmNoMjJfc3N0ZCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMmcgPSBrb3NwaV9nYXJjaDIyX2dlZCwgZ2FyY2gyMnNnID0ga29zcGlfZ2FyY2gyMl9zZ2VkDQopDQoNCmtvc3BpLmluZm8ubWF0IDwtIHNhcHBseShrb3NwaS5tb2RlbC5saXN0LCBpbmZvY3JpdGVyaWEpDQoNCnJvd25hbWVzKGtvc3BpLmluZm8ubWF0KSA8LSByb3duYW1lcyhpbmZvY3JpdGVyaWEoa29zcGlfZ2FyY2gxMV9ub3JtKSkNCg0Ka29zcGkuaW5kcyA8LSB3aGljaChrb3NwaS5pbmZvLm1hdCA9PSBtaW4oa29zcGkuaW5mby5tYXRbMSxdKSwgYXJyLmluZD1UUlVFKSAjTGF5IGNoaSBzbyBBSUMgbmhvIG5oYXQNCg0KbW9kZWwua29zcGkgPC0gY29sbmFtZXMoa29zcGkuaW5mby5tYXQpW2tvc3BpLmluZHNbLDJdXQ0KDQojVHLDrG5oIGLDoHkga+G6v3QgcXXhuqMNCm1hcl9tb2RlbCA8LSBkYXRhLmZyYW1lKA0KICByYXRlID0gYygiVk5JIiwgImtvc3BpIiksDQogIEZvcm1hdCA9IGMoIkFSTUEoMSwxKS1HSlItR0FSQ0goMSwxKS1Ta2V3ZWQgU3R1ZGVudCB0IiwgIkFSTUEoMCwyKS1HSlItR0FSQ0goMSwxKS1TdHVkZW50IHQiKSkNCg0KIyBSZW5kZXIgdGhlIHRhYmxlDQprYWJsZShtYXJfbW9kZWwsIGNvbC5uYW1lcyA9IGMoIlThu7cgc3XhuqV0IHNpbmggbOG7o2kiLCAiROG6oW5nIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4iKSwgDQogICAgICBjYXB0aW9uID0gIkLhuqNuZyA1OiBNw7QgaMOsbmggcGjDom4gcGjhu5FpIGJpw6puIHThu5FpIMawdSIsIGZvcm1hdCA9ICJwYW5kb2MiLCANCiAgICAgIHRhYmxlLmF0dHIgPSAic3R5bGU9J3dpZHRoOjEwMCU7JyIpICU+JQ0KICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiKSkNCg0KDQpgYGANCg0KQuG6o25nIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gdOG7kWkgxrB1IGNobyB04bu3IHN14bqldCBzaW5oIGzhu6NpIGPhu6dhIFZOLUluZGV4IHbDoCBLT1NQSSBjdW5nIGPhuqVwIGPDoWkgbmjDrG4gc8OidSBz4bqvYyB24buBIGPDoWNoIGhhaSBjaOG7iSBz4buRIG7DoHkgYmnhur9uIMSR4buZbmcgdsOgIGNo4buLdSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHnhur91IHThu5Ega2jDoWMgbmhhdS4gTcO0IGjDrG5oIEFSTUEocCxxKSBr4bq/dCBo4bujcCB24bubaSBHSlItR0FSQ0gocCxxKSDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBtw7QgdOG6oyBz4buxIHBo4bulIHRodeG7mWMgY+G7p2EgdOG7tyBzdeG6pXQgc2luaCBs4bujaSB2w6BvIGPDoWMgZ2nDoSB0cuG7iyBxdcOhIGto4bupIGPFqW5nIG5oxrAgc+G7sSB0aGF5IMSR4buVaSB0aGVvIHRo4budaSBnaWFuIGPhu6dhIGJp4bq/biDEkeG7mW5nLiDEkOG7kWkgduG7m2kgVk4tSW5kZXgsIG3DtCBow6xuaCBBUk1BKDEsMSktR0pSLUdBUkNIKDEsMSktU2tld2VkIFN0dWRlbnQgdCDEkcaw4bujYyBs4buxYSBjaOG7jW4sIGNobyB0aOG6pXkgdOG7tyBzdeG6pXQgc2luaCBs4bujaSBj4bunYSBjaOG7iSBz4buRIG7DoHkga2jDtG5nIGNo4buJIHBo4bulIHRodeG7mWMgdsOgbyBnacOhIHRy4buLIHRyb25nIHF1w6Ega2jhu6kgbcOgIGPDsm4gY8OzIHTDrW5oIGLhuqV0IMSR4buRaSB44bupbmcgdHJvbmcgYmnhur9uIMSR4buZbmcuIFZp4buHYyBz4butIGThu6VuZyBwaMOibiBwaOG7kWkgU2tld2VkIFN0dWRlbnQgdCwgduG7m2kgxJHhurdjIHTDrW5oIMSRdcO0aSBkw6B5IHbDoCDEkeG7mSBs4buHY2gsIHBo4bqjbiDDoW5oIGto4bqjIG7Eg25nIGNhbyBj4bunYSBjw6FjIGJp4bq/biDEkeG7mW5nIGzhu5tuLCDEkWnhu4F1IG7DoHkgcGjDuSBo4bujcCB24bubaSB0w61uaCBjaOG6pXQgY+G7p2EgZOG7ryBsaeG7h3UgdMOgaSBjaMOtbmguDQoNCk5nxrDhu6NjIGzhuqFpLCBtw7QgaMOsbmggQVJNQSgwLDIpLUdKUi1HQVJDSCgxLDEpLVN0dWRlbnQgdCDEkcaw4bujYyB4w6FjIMSR4buLbmggbMOgIHBow7kgaOG7o3AgbmjhuqV0IGNobyBLT1NQSS4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgdOG7tyBzdeG6pXQgc2luaCBs4bujaSBj4bunYSBLT1NQSSBjaOG7i3Ug4bqjbmggaMaw4bufbmcgY2jhu6cgeeG6v3UgdOG7qyBjw6FjIGdpw6EgdHLhu4sgbOG7l2kgdHJvbmcgcXXDoSBraOG7qSwgdsOgIGdp4buRbmcgbmjGsCBWTi1JbmRleCwgbsOzIGPFqW5nIGPDsyBz4buxIGJp4bq/biDEkeG7mW5nIHRoZW8gdGjhu51pIGdpYW4gduG7m2kgaGnhu4d1IOG7qW5nIGLhuqV0IMSR4buRaSB44bupbmcuIFBow6JuIHBo4buRaSBTdHVkZW50IHQsIG7hu5VpIHRp4bq/bmcgduG7m2kgxJHhurdjIHTDrW5oIMSRdcO0aSBkw6B5LCBjaOG7iSByYSBy4bqxbmcgS09TUEkgY8WpbmcgY8OzIGto4bqjIG7Eg25nIGNhbyB44bqjeSByYSBjw6FjIGJp4bq/biDEkeG7mW5nIGzhu5tuLCBsw6BtIG7hu5VpIGLhuq10IHThuqdtIHF1YW4gdHLhu41uZyBj4bunYSB2aeG7h2MgcXXhuqNuIGzDvSBy4bunaSBybyBraGkgxJHhuqd1IHTGsCB2w6BvIHRo4buLIHRyxrDhu51uZyBuw6B5Lg0KDQpDw6FjIG3DtCBow6xuaCBuw6B5IGtow7RuZyBjaOG7iSBnacO6cCBoaeG7g3UgcsO1IGjGoW4gduG7gSBow6BuaCB2aSBj4bunYSBWTi1JbmRleCB2w6AgS09TUEkgbcOgIGPDsm4gY3VuZyBj4bqlcCBjw7RuZyBj4bulIGThu7EgYsOhbyBo4buvdSDDrWNoIGNobyB0xrDGoW5nIGxhaS4gQ2jDum5nIGjhu5cgdHLhu6MgY8OhYyBuaMOgIMSR4bqndSB0xrAgdHJvbmcgdmnhu4djIMSRxrBhIHJhIGPDoWMgcXV54bq/dCDEkeG7i25oIMSR4bqndSB0xrAgY8OzIGPEg24gY+G7qSBoxqFuIHbDoCBxdeG6o24gbMO9IHLhu6dpIHJvIGhp4buHdSBxdeG6oyBoxqFuLiBUdXkgbmhpw6puLCB2aeG7h2Mgw6FwIGThu6VuZyBjw6FjIG3DtCBow6xuaCBuw6B5IMSRw7JpIGjhu49pIGtp4bq/biB0aOG7qWMgY2h1ecOqbiBzw6J1IHbhu4EgdMOgaSBjaMOtbmggdsOgIHRo4buRbmcga8OqLCBkbyB0w61uaCBwaOG7qWMgdOG6oXAgdsOgIG5o4buvbmcgZ2nhuqMgxJHhu4tuaCBjxqEgYuG6o24gbcOgIGNow7puZyBk4buxYSB0csOqbi4gTmdvw6BpIHJhLCBj4bqnbiBsxrB1IMO9IHLhurFuZyBoaeG7h3UgcXXhuqMgY+G7p2EgY8OhYyBtw7QgaMOsbmggY8OzIHRo4buDIHRoYXkgxJHhu5VpIHRoZW8gdGjhu51pIGdpYW4sIGRvIMSRw7Mgdmnhu4djIMSRw6FuaCBnacOhIHbDoCBj4bqtcCBuaOG6rXQgxJHhu4tuaCBr4buzIGzDoCBj4bqnbiB0aGnhur90Lg0KDQpUw7NtIGzhuqFpLCBi4bqjbmcgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiB04buRaSDGsHUgbsOgeSBjdW5nIGPhuqVwIHRow7RuZyB0aW4gcXVhbiB0cuG7jW5nIGNobyB2aeG7h2MgcGjDom4gdMOtY2ggdsOgIGThu7EgYsOhbyB04bu3IHN14bqldCBzaW5oIGzhu6NpIGPhu6dhIFZOLUluZGV4IHbDoCBLT1NQSSwgbmjGsG5nIGPFqW5nIGPhuqduIMSRxrDhu6NjIGvhur90IGjhu6NwIHbhu5tpIGPDoWMgcGjDom4gdMOtY2gga+G7uSB0aHXhuq10LCBjxqEgYuG6o24sIHbDoCBjw6FjIHnhur91IHThu5EgxJHhu4tuaCBsxrDhu6NuZyBjxaluZyBuaMawIMSR4buLbmggdMOtbmgga2jDoWMgxJHhu4MgxJHGsGEgcmEgbmjhu69uZyBxdXnhur90IMSR4buLbmggxJHhuqd1IHTGsCB0b8OgbiBkaeG7h24gaMahbi4NCg0KS+G6v3QgcXXhuqMgxJHGsOG7o2MgdHLDrG5oIGLDoHkgY2hpIHRp4bq/dCBuaMawIHNhdSA6DQoNCmBgYHtyfQ0KI1Ryw6xuaCBiw6B5IGvhur90IHF14bqjDQoNCmV4dHJhY3RfZ2FyY2hfcmVzdWx0cyA8LSBmdW5jdGlvbihmaXQpIHsNCiAgY29lZiA8LSBjb2VmKGZpdCkNCiAgc2UgPC0gZml0QGZpdCRzZS5jb2VmDQogIHB2YWx1ZXMgPC0gMiAqICgxIC0gcG5vcm0oYWJzKGZpdEBmaXQkdHZhbCkpKSAjIHTDrW5oIGdpw6EgdHLhu4sgcCB04burIGdpw6EgdHLhu4sgdA0KICByZXN1bHRzIDwtIGNiaW5kKGNvZWYsIHNlLCBwdmFsdWVzKQ0KICBjb2xuYW1lcyhyZXN1bHRzKSA8LSBjKCJFc3RpbWF0ZSIsICJTdGQuIEVycm9yIiwgIlByKD58enwpIikNCiAgcmV0dXJuKHJlc3VsdHMpDQp9DQoNCmZpdDEgPC0gZXh0cmFjdF9nYXJjaF9yZXN1bHRzKFZOSV9nYXJjaDExX3NzdGQpDQpmaXQyIDwtIGV4dHJhY3RfZ2FyY2hfcmVzdWx0cyhrb3NwaV9nYXJjaDExX3N0ZCkNCg0Ka2FibGUoYXMuZGF0YS5mcmFtZShmaXQxKSwgDQogICAgICBjYXB0aW9uID0gIkLhuqNuZyA2OiBL4bq/dCBxdeG6oyBtw7QgaMOsbmggQVJNQSgxLDEpLUdKUi1HYXJjaCgxLDEpLVNrZXdlZCBTdHVkZW50IGPhu6dhIGJp4bq/biBWTkkiLCANCiAgICAgIGZvcm1hdCA9ICdwYW5kb2MnKSAlPiUga2FibGVfc3R5bGluZygNCiAgICAgICAgYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIpLCANCiAgICAgICAgZnVsbF93aWR0aCA9IEYpDQpgYGANCg0KTcO0IGjDrG5oIEFSTUEoMSwxKS1HSlItR2FyY2goMSwxKS1Ta2V3ZWQgU3R1ZGVudCDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgY2hvIGJp4bq/biBWTkkgY3VuZyBj4bqlcCBt4buZdCBz4buRIHRow7RuZyB0aW4gxJHDoW5nIGNow7ogw70gduG7gSDEkeG7mW5nIHRow6FpIGPhu6dhIHThu7cgc3XhuqV0IGzhu6NpIG5odeG6rW4uIFRoYW0gc+G7kSBtdSAoMC4wMDAxNTE3KSBjw7MgZ2nDoSB0cuG7iyBuaOG7jyB2w6Aga2jDtG5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogduG7m2kgZ2nDoSB0cuG7iyBwIGzDoCAwLjY4OTI1NjYsIGNobyB0aOG6pXkgdHJ1bmcgYsOsbmggdOG7tyBzdeG6pXQgbOG7o2kgbmh14bqtbiBow6BuZyBuZ8OgeSBraMO0bmcgxJHDoW5nIGvhu4MuIFRoYW0gc+G7kSBhcjEgKDAuOTM1NDA3NCkgY8OzIGdpw6EgdHLhu4sgZMawxqFuZyBjYW8gdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogbeG6oW5oIG3hur0gKHAgPCAwLjAwMSksIGNobyB0aOG6pXkgdMOhYyDEkeG7mW5nIGzhu5tuIGPhu6dhIGdpw6EgdHLhu4sgcXXDoSBraOG7qSBj4bunYSB04bu3IHN14bqldCBs4bujaSBuaHXhuq1uIMSR4bq/biBnacOhIHRy4buLIGhp4buHbiB04bqhaS4gVGhhbSBz4buRIG1hMSAoLTAuOTA5MjEzMCkgY8WpbmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBjYW8gKHAgPCAwLjAwMSksIHBo4bqjbiDDoW5oIHPhu7EgxJFp4buBdSBjaOG7iW5oIG3huqFuaCBj4bunYSBzYWkgc+G7kSBk4buxIMSRb8OhbiB0cm9uZyBtw7QgaMOsbmguDQoNClRyb25nIHBo4bqnbiBtw7QgaMOsbmggR0pSLUdhcmNoLCBvbWVnYSAoMC4wMDAwMTA1KSBjw7MgZ2nDoSB0cuG7iyBuaOG7jyBuaMawbmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBjYW8gKHAgPCAwLjAwMSksIGNobyB0aOG6pXkgYmnhur9uIMSR4buZbmcgbmfhuqt1IG5oacOqbiAoxJHhu5kgY2jDqm5oIGzhu4djaCkgY8ahIGLhuqNuIGPhu6dhIHThu7cgc3XhuqV0IGzhu6NpIG5odeG6rW4uIFRoYW0gc+G7kSBhbHBoYTEgKDAuMDE0NjIzOSkgdHV5IGPDsyBnacOhIHRy4buLIGTGsMahbmcgbmjGsG5nIGtow7RuZyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIChwID0gMC4xOTg4OTE0KSwgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyBjaOG7iSByYSBy4bqxbmcgY8OhYyBjw7ogc+G7kWMgdGnDqnUgY+G7sWMga2jDtG5nIGPDsyB0w6FjIMSR4buZbmcgbeG6oW5oIG3hur0gxJHhur9uIGJp4bq/biDEkeG7mW5nIHRyb25nIG3DtCBow6xuaCBuw6B5LiBUaGFtIHPhu5EgYmV0YTEgKDAuODAwNDMzNikgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBjYW8gKHAgPCAwLjAwMSksIGNobyB0aOG6pXkgc+G7sSBwaOG7pSB0aHXhu5ljIGzhu5tuIGPhu6dhIGJp4bq/biDEkeG7mW5nIGhp4buHbiB04bqhaSB2w6BvIGJp4bq/biDEkeG7mW5nIHF1w6Ega2jhu6kuIFRoYW0gc+G7kSBnYW1tYTEgKDAuMjQzODU4NSkgY8OzIGdpw6EgdHLhu4sgZMawxqFuZyB2w6Agw70gbmdoxKlhIHRo4buRbmcga8OqIGNhbyAocCA8IDAuMDAxKSwgcGjhuqNuIMOhbmggdMOhYyDEkeG7mW5nIGtow7RuZyDEkeG7kWkgeOG7qW5nIGPhu6dhIGPDoWMgY8O6IHPhu5FjIHRpw6p1IGPhu7FjLCB04bupYyBsw6AgYmnhur9uIMSR4buZbmcgZ2lhIHTEg25nIGtoaSB0aOG7iyB0csaw4budbmcgZ2nhuqNtIMSRaeG7g20uDQoNCkN14buRaSBjw7luZywgY8OhYyB0aGFtIHPhu5EgcGjDom4gcGjhu5FpIGPhu6dhIHBo4bqnbiBkxrAsIGJhbyBn4buTbSBza2V3ICgwLjgyMjY0NDkpIHbDoCBzaGFwZSAoNC4yNjg3MTMzKSwgxJHhu4F1IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvIChwIDwgMC4wMDEpLiBUaGFtIHPhu5Egc2tldyBjaG8gdGjhuqV5IMSR4buZIGLhuqV0IMSR4buRaSB44bupbmcgdHJvbmcgcGjDom4gcGjhu5FpIHBo4bqnbiBkxrAsIHRyb25nIGtoaSBzaGFwZSBjaOG7iSByYSBz4buxIGTDoHkgY+G7p2EgxJF1w7RpIHBow6JuIHBo4buRaS4gQ+G6oyBoYWkgxJHhu4F1IGNobyB0aOG6pXkgcuG6sW5nIHBow6JuIHBo4buRaSBwaOG6p24gZMawIGtow7RuZyBwaOG6o2kgbMOgIHBow6JuIHBo4buRaSBjaHXhuqluLCBtw6AgYuG7iyBs4buHY2ggdsOgIGPDsyDEkXXDtGkgZMOgaSBoxqFuLCBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IHTDoGkgY2jDrW5oIHRoxrDhu51uZyB0aOG6pXkuDQoNCmBgYHtyfQ0Ka2FibGUoYXMuZGF0YS5mcmFtZShmaXQyKSwgDQogIGNhcHRpb24gPSAiQuG6o25nIDc6IEvhur90IHF14bqjIG3DtCBow6xuaCBBUk1BKDAsMiktR0pSLUdhcmNoKDEsMSktU3R1ZGVudCBj4bunYSBiaeG6v24ga29zcGkiLCANCiAgZm9ybWF0ID0gJ3BhbmRvYycpICU+JSBrYWJsZV9zdHlsaW5nKA0KICAgICAgICAgICAgYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIpLCANCiAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGKQ0KYGBgDQoNCkvhur90IHF14bqjIHThu6sgbcO0IGjDrG5oIEFSTUEoMCwyKS1HSlItR2FyY2goMSwxKS1TdHVkZW50IGNobyBiaeG6v24gS09TUEkgY3VuZyBj4bqlcCBjw6FjIHRow7RuZyB0aW4gcXVhbiB0cuG7jW5nIHbhu4EgxJHhu5luZyB0aMOhaSB2w6AgYmnhur9uIMSR4buZbmcgY+G7p2EgdOG7tyBzdeG6pXQgbOG7o2kgbmh14bqtbi4gVGhhbSBz4buRIG11ICgwLjAwMDIwODkpIGPDsyBnacOhIHRy4buLIG5o4buPIHbDoCBraMO0bmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiB24bubaSBnacOhIHRy4buLIHAgbMOgIDAuNDAwMzI0MCwgY2hvIHRo4bqleSB0cnVuZyBiw6xuaCB04bu3IHN14bqldCBs4bujaSBuaHXhuq1uIGjDoG5nIG5nw6B5IGtow7RuZyBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgxJHDoW5nIGvhu4MuDQoNCkPDoWMgdGhhbSBz4buRIG1hMSAoMC4wMDQ3MzQ4KSB2w6AgbWEyICgwLjAzNTU1ODApIMSR4buBdSBraMO0bmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiB24bubaSBjw6FjIGdpw6EgdHLhu4sgcCBs4bqnbiBsxrDhu6N0IGzDoCAwLjg1NzkxMzEgdsOgIDAuMTc1NjIzMiwgY2jhu4kgcmEgcuG6sW5nIGPDoWMgc2FpIHPhu5EgZOG7sSDEkW/DoW4gdOG7qyBoYWkgbGFnIHRyxrDhu5tjIMSRw7Mga2jDtG5nIOG6o25oIGjGsOG7n25nIG5oaeG7gXUgxJHhur9uIHThu7cgc3XhuqV0IGzhu6NpIG5odeG6rW4gaGnhu4duIHThuqFpLg0KDQpUcm9uZyBtw7QgaMOsbmggR0pSLUdhcmNoLCBvbWVnYSAoMC4wMDAwMTAxKSBjw7MgZ2nDoSB0cuG7iyBuaOG7jyB2w6Agw70gbmdoxKlhIHRo4buRbmcga8OqIGNhbyAocCA8IDAuMDAxKSwgY2hvIHRo4bqleSBiaeG6v24gxJHhu5luZyBjxqEgYuG6o24gY+G7p2EgdOG7tyBzdeG6pXQgbOG7o2kgbmh14bqtbiBsw6AgdGjhuqVwLiBUaGFtIHPhu5EgYWxwaGExICgwLjAzMTk3MjApIGPDsyBnacOhIHRy4buLIGTGsMahbmcgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvIChwID0gMC4wMDQ2ODYzKSwgY2hvIHRo4bqleSBjw6FjIGPDuiBz4buRYyB0acOqdSBj4buxYyBjw7MgdMOhYyDEkeG7mW5nIMSRw6FuZyBr4buDIMSR4bq/biBiaeG6v24gxJHhu5luZyBj4bunYSB04bu3IHN14bqldCBs4bujaSBuaHXhuq1uLiBUaGFtIHPhu5EgYmV0YTEgKDAuNzg4OTI4OCkgY8WpbmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBjYW8gKHAgPCAwLjAwMSksIGNobyB0aOG6pXkgc+G7sSBwaOG7pSB0aHXhu5ljIG3huqFuaCBj4bunYSBiaeG6v24gxJHhu5luZyBoaeG7h24gdOG6oWkgdsOgbyBiaeG6v24gxJHhu5luZyBxdcOhIGto4bupLiBUaGFtIHPhu5EgZ2FtbWExICgwLjE4MzgyMjIpIHbhu5tpIGdpw6EgdHLhu4sgcCBy4bqldCBuaOG7jyAocCA9IDAuMDAwMDAxNykgY2hvIHRo4bqleSBz4buxIHThu5NuIHThuqFpIGPhu6dhIHPhu7Ega2jDtG5nIMSR4buRaSB44bupbmcgdHJvbmcgcGjhuqNuIOG7qW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyDEkeG7kWkgduG7m2kgY8O6IHPhu5FjIHRpw6p1IGPhu7FjLg0KDQpDdeG7kWkgY8O5bmcsIHRoYW0gc+G7kSBzaGFwZSAoOC41NjcwODMzKSBjw7MgZ2nDoSB0cuG7iyBkxrDGoW5nIHbDoCDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvIChwIDwgMC4wMDEpLCBjaG8gdGjhuqV5IHBow6JuIHBo4buRaSBj4bunYSBwaOG6p24gZMawIGPDsyDEkXXDtGkgZMOgaSBoxqFuIHNvIHbhu5tpIHBow6JuIHBo4buRaSBjaHXhuqluLCBjaOG7iSByYSBy4bqxbmcgdOG7tyBzdeG6pXQgbOG7o2kgbmh14bqtbiBjw7Mgc+G7sSB4deG6pXQgaGnhu4duIGPhu6dhIGPDoWMgY8O6IHPhu5FjIGzhu5tuIGjGoW4gdsOgIGtow7RuZyDEkeG7gXUuDQoNCiMjIyA0LjQuMiBLaeG7g20gxJHhu4tuaCB0w61uaCBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4NCg0KU2F1IGtoaSBs4buxYSBjaOG7jW4gbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiBwaMO5IGjhu6NwIG5o4bqldCBjaG8gdOG7q25nIGNodeG7l2kgbOG7o2kgc3XhuqV0LCBjaMO6bmcgdGEgdGnhur9uIGjDoG5oIHRyw61jaCB4deG6pXQgcGjhuqduIGTGsCBjaHXhuqluIGjDs2EgXCggel97MXR9fFxPbWVnYV97dOKIkml9LCB6X3sydH18XE9tZWdhX3t04oiSaX0gXCkgbmjhurFtIGxv4bqhaSBi4buPIGPDoWMgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkcOjIMSRxrDhu6NjIG3DtCBow6xuaCBow7NhIHRyxrDhu5tjIMSRw7MuIE5o4buvbmcgcGjhuqduIGTGsCBjaHXhuqluIGjDs2EgbsOgeSBzYXUgxJHDsyDEkcaw4bujYyBjaHV54buDbiDEkeG7lWkgdGjDoG5oIGPDoWMgZ2nDoSB0cuG7iyB0w61jaCBwaMOibiB4w6FjIHN14bqldCB0aMO0bmcgcXVhIGjDoG0gcGjDom4gcGjhu5FpIHRo4buxYyBuZ2hp4buHbSBcKCBGIFwpLCBuaMawIMSRxrDhu6NjIMSR4buBIHh14bqldCBi4bufaSBHZW5lc3QgdsOgIGPhu5luZyBz4buxICgxOTk1KS4gUXXDoSB0csOsbmggY2h1eeG7g24gxJHhu5VpIG7DoHkga2jDtG5nIGNo4buJIGdpw7pwIMSR4bqjbSBi4bqjbyB0w61uaCDEkeG7k25nIG5o4bqldCB2w6AgxJHhu5ljIGzhuq1wIGPhu6dhIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4gXCggdV90IFwpIHbDoCBcKCB2X3QgXCkgdHLDqm4ga2hv4bqjbmcgWzAsMV0sIG3DoCBjw7JuIGzDoCBt4buZdCBixrDhu5tjIGNodeG6qW4gYuG7iyBxdWFuIHRy4buNbmcgxJHhu4MgxJHGsGEgZOG7ryBsaeG7h3UgdsOgbyBtw7QgaMOsbmggY29wdWxhLiBC4bqxbmcgY8OhY2ggZ2nhuqMgxJHhu4tuaCBy4bqxbmcgY8OhYyBiaeG6v24gbsOgeSB0dcOibiB0aGVvIHBow6JuIHBo4buRaSDEkeG7k25nIG5o4bqldCwgY2jDum5nIHRhIGPDsyB0aOG7gyBraeG7g20gdHJhIG3hu6ljIMSR4buZIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiB0aMO0bmcgcXVhIGPDoWMga2nhu4NtIMSR4buLbmggdGjhu5FuZyBrw6ogbmjGsCBBbmRlcnNvbi1EYXJsaW5nLCBDcmFtZXItdm9uIE1pc2VzIChDdi1NKSwgdsOgIEtvbG1vZ29yb3YtU21pcm5vdiAoSy1TKS4gS+G6v3QgcXXhuqMgY+G7p2Egbmjhu69uZyBraeG7g20gxJHhu4tuaCBuw6B5LCDEkcaw4bujYyB0csOsbmggYsOgeSB0cm9uZyBC4bqjbmcgNywgY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHPDonUgc+G6r2MgduG7gSBraOG6oyBuxINuZyBj4bunYSBtw7QgaMOsbmggdHJvbmcgdmnhu4djIG3DtCB04bqjIGNow61uaCB4w6FjIHBow6JuIHBo4buRaSBiacOqbiBj4bunYSBjw6FjIGNodeG7l2kgbOG7o2kgc3XhuqV0LCB04burIMSRw7MgdOG6oW8gbuG7gW4gdOG6o25nIHbhu69uZyBjaOG6r2MgY2hvIGPDoWMgcGjDom4gdMOtY2ggY29wdWxhIHRp4bq/cCB0aGVvLg0KDQpgYGB7cn0NCiNLaeG7g20gxJHhu4tuaCB0w61uaCBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4NCiMgbWFrZSBwcm9iYWJpbGl0eSBpbnRlZ3JhdGlvbiBmb3IgcmVzaWR1YWwgb2Ygdm5pDQpWTkkucmVzIDwtIHJlc2lkdWFscyhWTklfZ2FyY2gxMV9zc3RkKS9zaWdtYShWTklfZ2FyY2gxMV9zc3RkKSAjc3RhbmRhcmRlZCByZXNpZA0KDQphIDwtIGZpdGRpc3QoZGlzdHJpYnV0aW9uID0gInNzdGQiLCBWTkkucmVzLCBjb250cm9sID0gbGlzdCgpKSAjZml0IGRpc3RyaWJ1dGlvbiBmb3IgdGhpcyByZXNpZA0KDQp1IDwtIHBkaXN0KGRpc3RyaWJ1dGlvbiA9ICJzc3RkIiwgcSA9IFZOSS5yZXMsIG11ID0gYSRwYXJzWydtdSddICwgc2lnbWEgPSBhJHBhcnNbJ3NpZ21hJ10sDQogICAgICAgICAgIHNrZXcgPSBhJHBhcnNbJ3NrZXcnXSwgc2hhcGUgPSBhJHBhcnNbJ3NoYXBlJ10pICMgbWFrZSBwcm9iYWJpbGl0eSBpbnRlZ3JhdGlvbg0KDQojIG1ha2UgcHJvYmFiaWxpdHkgaW50ZWdyYXRpb24gZm9yIHJlc2lkdWFsIG9mIGtvc3BpDQprb3NwaS5yZXMgPC0gcmVzaWR1YWxzKGtvc3BpX2dhcmNoMTFfc3RkKS9zaWdtYShrb3NwaV9nYXJjaDExX3N0ZCkgI3N0YW5kYXLEkSByZXNpZA0KDQpiIDwtIGZpdGRpc3QoZGlzdHJpYnV0aW9uID0gInN0ZCIsIGtvc3BpLnJlcywgY29udHJvbCA9IGxpc3QoKSkgI2ZpdCBkaXN0cmlidXRpb24gZm9yIHRoaXMgcmVzaWQNCg0KdiA8LSBwZGlzdChkaXN0cmlidXRpb24gPSAic3RkIiwgcSA9IGtvc3BpLnJlcywgbXUgPSBiJHBhcnNbJ211J10gLCBzaWdtYSA9IGIkcGFyc1snc2lnbWEnXSwNCiAgICAgICAgICAgc2tldyA9IGIkcGFyc1snc2tldyddLCBzaGFwZSA9IGIkcGFyc1snc2hhcGUnXSkgIyBtYWtlIHByb2JhYmlsaXR5IGludGVncmF0aW9uDQoNCg0KI3Rlc3Qgd2l0aCBBbmRlcnNvbi1EYXJsaW5nDQpsaWJyYXJ5KGdvZnRlc3QpDQphZF92bmkgPC0gYWQudGVzdCh1LCAicHVuaWYiKQ0KYWRfa29zcGkgPC0gYWQudGVzdCh2LCAicHVuaWYiKQ0KDQoNCiNLaeG7g20gxJHhu4tuaCBDcmFtZXItdm9uIE1pc2VzDQpjdm1fdm5pIDwtIGN2bS50ZXN0KHUsICJwdW5pZiIpDQpjdm1fa29zcGkgPC0gY3ZtLnRlc3QodiwgInB1bmlmIikNCg0KDQojIEtpZW0gZGluaCBrcy10ZXN0DQprc192bmkgPC0ga3MudGVzdCh1LCAicHVuaWYiKQ0Ka3Nfa29zcGkgPC0ga3MudGVzdCh2LCAicHVuaWYiKQ0KDQojVHLDrG5oIGLDoHkga+G6v3QgcXXhuqMNCnRlc3QgPC0gZGF0YS5mcmFtZSh0ZXN0ID0gYygnUF92YWx1ZSBWTkknICwnUF92YWx1ZSBrb3NwaScpLA0KICAgICAgICAgICAgICAgICAgIEFEID0gYyhhZF92bmkkcC52YWx1ZSwgYWRfa29zcGkkcC52YWx1ZSksDQogICAgICAgICAgICAgICAgICAgQ1ZNID0gYyhjdm1fdm5pJHAudmFsdWUsIGN2bV9rb3NwaSRwLnZhbHVlKSwNCiAgICAgICAgICAgICAgICAgICBLUyA9IGMoa3Nfdm5pJHAudmFsdWUsa3Nfa29zcGkkcC52YWx1ZSkpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0Ka2FibGUodGVzdCwgDQogICAgICBjYXB0aW9uID0gIkLhuqNuZyA4OiBL4bq/dCBxdeG6oyBjw6FjIGtp4buDbSDEkeG7i25oIGNobyBtw7QgaMOsbmggcGjDom4gcGjhu5FpIGJpw6puIiwgY29sLm5hbWVzID0gYygiQ8OhYyBraeG7g20gxJHhu4tuaCIsIkFuZGVyc29uLURhcmxpbmciLCAiQ3JhbWVyLXZvbiBNaXNlcyIsIktvbG1vZ29yb3YtU21pcm5vdiIpLCANCiAgICAgIGZvcm1hdCA9ICdwYW5kb2MnKSAlPiUga2FibGVfc3R5bGluZygNCiAgICAgICAgYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIpLCANCiAgICAgICAgZnVsbF93aWR0aCA9IEYpDQpgYGANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggdOG7qyBiYSBwaMawxqFuZyBwaMOhcCBBbmRlcnNvbi1EYXJsaW5nLCBDcmFtZXItdm9uIE1pc2VzIHbDoCBLb2xtb2dvcm92LVNtaXJub3YgxJHhu4F1IGNobyB0aOG6pXkgcuG6sW5nIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gxJHGsOG7o2Mgw6FwIGThu6VuZyBjaG8gdOG7tyBzdeG6pXQgbOG7o2kgbmh14bqtbiBj4bunYSBWTkkgdsOgIEtPU1BJIMSR4buBdSBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IHRo4buxYyB04bq/LiBD4bulIHRo4buDLCDEkeG7kWkgduG7m2kgVk5JLCBjw6FjIHAtdmFsdWUgbOG6p24gbMaw4bujdCBsw6AgMC42NzcyMDM0LCAwLjU4ODc1NzYsIHbDoCAwLjIzNDc3MDcsIHThuqV0IGPhuqMgxJHhu4F1IGzhu5tuIGjGoW4gbeG7qWMgw70gbmdoxKlhIDAuMDUuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHLhurFuZyBraMO0bmcgY8OzIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBraMO0bmcsIHThu6ljIGzDoCBtw7QgaMOsbmggcGjDom4gcGjhu5FpIGJpw6puIMSRxrDhu6NjIGzhu7FhIGNo4buNbiDEkcOjIG3DtCB04bqjIGNow61uaCB4w6FjIHBow6JuIHBo4buRaSBj4bunYSB04bu3IHN14bqldCBs4bujaSBuaHXhuq1uIFZOSS4gVMawxqFuZyB04buxLCDEkeG7kWkgduG7m2kgS09TUEksIG3hurdjIGTDuSBjw6FjIHAtdmFsdWUgY+G7p2Ega2nhu4NtIMSR4buLbmggY8OzIHRo4bqlcCBoxqFuICgwLjEzNzU4NjcsIDAuMjI0MjI1MCwgdsOgIDAuMTQwMTkzOSksIG5oxrBuZyB24bqrbiB2xrDhu6N0IG3hu6ljIDAuMDUsIGto4bqzbmcgxJHhu4tuaCBy4bqxbmcgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiBjaG8gS09TUEkgY8WpbmcgbMOgIHBow7kgaOG7o3AuDQoNCk5o4buvbmcga+G6v3QgcXXhuqMgbsOgeSBraMO0bmcgY2jhu4kgY+G7p25nIGPhu5EgxJHhu5kgdGluIGPhuq15IGPhu6dhIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gdHJvbmcgdmnhu4djIHBo4bqjbiDDoW5oIMSR4bq3YyDEkWnhu4NtIGPhu6dhIHThu7cgc3XhuqV0IGzhu6NpIG5odeG6rW4sIG3DoCBjw7JuIGNobyB0aOG6pXkgcuG6sW5nIGPDoWMgbcO0IGjDrG5oIMSRw6MgxJHGsOG7o2MgbOG7sWEgY2jhu41uIGPhuqluIHRo4bqtbiB2w6AgcGjDuSBo4bujcCB24bubaSB04burbmcgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIGtow6FjIG5oYXUuIFThu6sgxJHDsywgY8OzIHRo4buDIGvhur90IGx14bqtbiBy4bqxbmcgdmnhu4djIHPhu60gZOG7pW5nIGPDoWMgbcO0IGjDrG5oIG7DoHkgdHJvbmcgcGjDom4gdMOtY2ggc8OidSBoxqFuIGzDoCBo4bujcCBsw70gdsOgIHPhur0gbWFuZyBs4bqhaSBuaOG7r25nIGvhur90IHF14bqjIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogdsOgIHRo4buxYyB0aeG7hW4uIE5o4buvbmcga2nhu4NtIMSR4buLbmggbsOgeSDEkcOzbmcgdmFpIHRyw7IgcXVhbiB0cuG7jW5nIHRyb25nIHZp4buHYyB4w6FjIG5o4bqtbiDEkeG7mSB0aW4gY+G6rXkgY+G7p2EgbcO0IGjDrG5oLCBnw7NwIHBo4bqnbiB0xINuZyBjxrDhu51uZyDEkeG7mSBjaMOtbmggeMOhYyB2w6AgdMOtbmggdGh1eeG6v3QgcGjhu6VjIGPhu6dhIGPDoWMgcGjDom4gdMOtY2ggdsOgIGvhur90IGx14bqtbiB0aeG6v3AgdGhlbyBsacOqbiBxdWFuIMSR4bq/biBow6BuaCB2aSBj4bunYSBjw6FjIHRo4buLIHRyxrDhu51uZyB0w6BpIGNow61uaCBuw6B5Lg0KDQojIyMgNC40LjMgxq/hu5tjIGzGsOG7o25nIHRoYW0gc8O0IGPhu6dhIG3DtCBow6xuaCBDb3B1bGENCg0KKipT4buxIHBo4bulIHRodeG7mWMgZ2nhu69hIFRUQ0sgVmnhu4d0IE5hbSDEkeG7kWkgduG7m2kgVFRDSyBIw6BuIFF14buRYyB0cm9uZyDEkWnhu4F1IGtp4buHbiBiaeG6v24gxJHhu5luZyBiw6xuaCB0aMaw4budbmcqKg0KDQpWaeG7h2MgbOG7sWEgY2jhu41uIG3DtCBow6xuaCBjb3B1bGEgcGjDuSBo4bujcCBsw6AgcuG6pXQgcXVhbiB0cuG7jW5nIHRyb25nIHZp4buHYyBtw7QgdOG6oyBjaMOtbmggeMOhYyBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgaGFpIGNo4buJIHPhu5EgY2jhu6luZyBraG/DoW4sIMSR4bq3YyBiaeG7h3QgbMOgIHRyb25nIGPDoWMgdMOsbmggaHXhu5FuZyB0aOG7iyB0csaw4budbmcgY+G7sWMgxJFvYW4uIMSQ4buDIMSRw6FuaCBnacOhIHbDoCBzbyBzw6FuaCBoaeG7h3UgcXXhuqMgY+G7p2EgY8OhYyBtw7QgaMOsbmggY29wdWxhIGtow6FjIG5oYXUsIGNow7puZyB0YSDEkcOjIMaw4bubYyBsxrDhu6NuZyBjw6FjIHRoYW0gc+G7kSBjaG8gY29wdWxhIHRodeG7mWMgaOG7jSBFbGlwLCBiYW8gZ+G7k20gY29wdWxhIEdhdXNzaWFuIHbDoCBjb3B1bGEgU3R1ZGVudC4gQuG6o25nIDkgZMaw4bubaSDEkcOieSB0csOsbmggYsOgeSBr4bq/dCBxdeG6oyDGsOG7m2MgbMaw4bujbmcgY2hvIGPDoWMgbcO0IGjDrG5oIGNvcHVsYSBuw6B5LCBjaG8gcGjDqXAgY2jDum5nIHRhIMSRw6FuaCBnacOhIG3hu6ljIMSR4buZIHBo4bulIHRodeG7mWMgZ2nhu69hIGNo4buJIHPhu5EgVk5JIHbDoCBLT1NQSSwgY8O5bmcga2jhuqMgbsSDbmcgY+G7p2EgY8OhYyBtw7QgaMOsbmggdHJvbmcgdmnhu4djIHBo4bqjbiDDoW5oIHPhu7EgcGjhu6UgdGh14buZYyDEkXXDtGksIMSRaeG7gXUgbsOgeSBy4bqldCBxdWFuIHRy4buNbmcgdHJvbmcgdmnhu4djIHBow6JuIHTDrWNoIHLhu6dpIHJvIHbDoCBiaeG6v24gxJHhu5luZyB0aOG7iyB0csaw4budbmcuDQoNCmBgYHtyfQ0KI8av4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EgbcO0IGjDrG5oIGNvcHVsYQ0KDQojxq/hu5tjIGzGsOG7o25nDQpsaWJyYXJ5KFZpbmVDb3B1bGEpDQpnYXUgPC0gQmlDb3BFc3QodSx2LGZhbWlseSA9IDEsIG1ldGhvZCA9ICJtbGUiLCBzZSA9IFQsIG1heC5kZiA9IDEwKQ0Kc3R1IDwtIEJpQ29wRXN0KHUsdixmYW1pbHkgPSAyLCBtZXRob2QgPSAibWxlIiwgc2UgPSBULCBtYXguZGYgPSAxMCkNCiNUcsOsbmggYsOgeSBr4bq/dCBxdeG6ow0KDQplc3QgPC0gZGF0YS5mcmFtZShtcWggPSBjKCdWTkkta29zcGknICwnVk5JLWtvc3BpJyksDQogICAgICAgICAgICAgICAgICBDb3B1bGEgPSBjKCdHYXVzcycsICdTdHVkZW50JyksDQogICAgICAgICAgICAgICAgICBUaGFtc28gPSBjKGdhdSRwYXIsIHN0dSRwYXIpLA0KICAgICAgICAgICAgICAgICAgVGhhbXNvMiA9IGMoZ2F1JHBhcjIsIHN0dSRwYXIyKSwNCiAgICAgICAgICAgICAgICAgIGR1b2kgPSBjKGdhdSR0YWlsZGVwJGxvd2VyLHN0dSR0YWlsZGVwJGxvd2VyKSkNCg0Ka2FibGUoZXN0LCANCiAgICAgIGNhcHRpb24gPSAiQuG6o25nIDk6IEvhur90IHF14bqjIMaw4bubYyBsxrDhu6NuZyBDb3B1bGEgaOG7jSBFbGlwIiwgY29sLm5hbWVzID0gYygiQ2jhu4kgc+G7kSIsIkNvcHVsYSIsICJQYXIiLCJQYXIyIiwgIlBo4bulIHRodeG7mWMgxJF1w7RpIiksIA0KICAgICAgZm9ybWF0ID0gJ3BhbmRvYycpICU+JSBrYWJsZV9zdHlsaW5nKA0KICAgICAgICBib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiksIA0KICAgICAgICBmdWxsX3dpZHRoID0gRikNCmBgYA0KDQpL4bq/dCBxdeG6oyDGsOG7m2MgbMaw4bujbmcgY29wdWxhIHThu6sgaOG7jSBFbGlwIGNobyB0aOG6pXkgbeG7kWkgcXVhbiBo4buHIHBo4bulIHRodeG7mWMgZ2nhu69hIGNo4buJIHPhu5EgVk5JIHbDoCBLT1NQSSDEkcaw4bujYyBtw7QgaMOsbmggaMOzYSBi4bqxbmcgaGFpIGxv4bqhaSBjb3B1bGE6IEdhdXNzaWFuIHbDoCBTdHVkZW50LiBW4bubaSBjb3B1bGEgR2F1c3NpYW4sIHRoYW0gc+G7kSBwaOG7pSB0aHXhu5ljIMaw4bubYyBsxrDhu6NuZyBsw6AgMC4yNzczMzEyLCB0aOG7gyBoaeG7h24gbeG7qWMgxJHhu5kgcGjhu6UgdGh14buZYyB0dXnhur9uIHTDrW5oIHbhu6thIHBo4bqjaSBnaeG7r2EgaGFpIGNo4buJIHPhu5EuIFR1eSBuaGnDqm4sIGNvcHVsYSBuw6B5IGtow7RuZyBjw7Mga2jhuqMgbsSDbmcgbcO0IHThuqMgcGjhu6UgdGh14buZYyDEkXXDtGksIHbhu5tpIGdpw6EgdHLhu4sgcGjhu6UgdGh14buZYyDEkXXDtGkgYuG6sW5nIDAsIG5naMSpYSBsw6Aga2jDtG5nIHRo4buDIHBo4bqjbiDDoW5oIGNow61uaCB4w6FjIG3hu5FpIHF1YW4gaOG7hyB0cm9uZyBjw6FjIHTDrG5oIGh14buRbmcgY+G7sWMgdHLhu4ssIG5oxrAga2hpIHRo4buLIHRyxrDhu51uZyB0cuG6o2kgcXVhIGPDoWMgYmnhur9uIMSR4buZbmcgbOG7m24gY8O5bmcgY2hp4buBdS4gxJBp4buBdSBuw6B5IGPDsyB0aOG7gyBk4bqrbiDEkeG6v24gdmnhu4djIMSRw6FuaCBnacOhIHRoaeG6v3UgY2jDrW5oIHjDoWMgcuG7p2kgcm8gdHJvbmcgY8OhYyB0csaw4budbmcgaOG7o3AgY+G7sWMgxJFvYW4uIE5nxrDhu6NjIGzhuqFpLCBjb3B1bGEgU3R1ZGVudCDGsOG7m2MgbMaw4bujbmcgdGhhbSBz4buRIHBo4bulIHRodeG7mWMgZ+G6p24gdMawxqFuZyB04buxICgwLjI3ODE5MzMpLCBuaMawbmcgduG7m2kgdGhhbSBz4buRIHThu7EgZG8gUGFyMiBsw6AgMTAsIGNobyBwaMOpcCBtw7QgaMOsbmggbsOgeSBsaW5oIGhv4bqhdCBoxqFuIHRyb25nIHZp4buHYyBtw7QgdOG6oyBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgaGFpIGJp4bq/bi4gxJDhurdjIGJp4buHdCwgY29wdWxhIFN0dWRlbnQgY8OzIGto4bqjIG7Eg25nIG7huq9tIGLhuq90IHBo4bulIHRodeG7mWMgxJF1w7RpLCB24bubaSBnacOhIHRy4buLIDAuMDI5OTEwNCwgY2hvIHRo4bqleSBraOG6oyBuxINuZyB44bqjeSByYSDEkeG7k25nIGJp4bq/biDEkeG7mW5nIGzhu5tuIGdp4buvYSBWTkkgdsOgIEtPU1BJLCBt4bq3YyBkw7kgbeG7qWMgxJHhu5kgbsOgeSBraMO0bmcgcXXDoSBjYW8uIE5ow6xuIGNodW5nLCB0cm9uZyBraGkgY29wdWxhIEdhdXNzaWFuIGNo4buJIG3DtCB04bqjIMSRxrDhu6NjIG3hu5FpIHF1YW4gaOG7hyB0dXnhur9uIHTDrW5oIHbDoCB0aGnhur91IGto4bqjIG7Eg25nIMSRw6FuaCBnacOhIHLhu6dpIHJvIHRyb25nIGPDoWMgdMOsbmggaHXhu5FuZyB0aOG7iyB0csaw4budbmcgY+G7sWMgxJFvYW4sIGNvcHVsYSBTdHVkZW50IHbhu5tpIGto4bqjIG7Eg25nIG7huq9tIGLhuq90IHBo4bulIHRodeG7mWMgxJF1w7RpIGTDuSBuaOG6uSB24bqrbiBjdW5nIGPhuqVwIG3hu5l0IG3DtCBow6xuaCBwaMO5IGjhu6NwIGjGoW4gxJHhu4MgbcO0IHBo4buPbmcgY8OhYyBr4buLY2ggYuG6o24gcuG7p2kgcm8ga2hpIGhhaSB0aOG7iyB0csaw4budbmcgY8OzIHRo4buDIGPDuW5nIHRy4bqjaSBxdWEgY8OhYyBiaeG6v24gxJHhu5luZyBs4bubbi4NCg0KSMOsbmgg4bqjbmggc2F1IMSRw6J5IG1pbmggaOG7jWEgaMOgbSBt4bqtdCDEkeG7mSB4w6FjIHN14bqldCAoUERGKSBj4bunYSBoYWkgbG/huqFpIENvcHVsYSBFbGlwIMSR4bq3YyB0csawbmc6IEdhdXNzaWFuIHbDoCBTdHVkZW50LXQuIEjDrG5oIOG6o25oIG7DoHkga2jDtG5nIGNo4buJIGdpw7pwIGNow7puZyB0YSB0cuG7sWMgcXVhbiBow7NhIGPhuqV1IHRyw7pjIHBo4bulIHRodeG7mWMgY+G7p2EgZOG7ryBsaeG7h3UgbcOgIGPDsm4gbMOgbSBu4buVaSBi4bqtdCBjw6FjIMSRaeG7g20ga2jDoWMgYmnhu4d0IHRyb25nIGPDoWNoIG3hu5dpIG3DtCBow6xuaCBwaOG6o24gw6FuaCBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGPDoWMgYmnhur9uLiBC4bqxbmcgY8OhY2ggc28gc8OhbmggaMOsbmggZOG6oW5nIGPhu6dhIGhhaSBow6BtIG3huq10IMSR4buZIG7DoHksIGNow7puZyB0YSBjw7MgdGjhu4MgaGnhu4N1IHLDtSBoxqFuIHbhu4EgbeG7qWMgxJHhu5kgcGjhu6UgdGh14buZYyB2w6AgY+G6pXUgdHLDumMgY+G7p2EgZOG7ryBsaeG7h3UsIHThu6sgxJHDsyBjaOG7jW4gbOG7sWEgbcO0IGjDrG5oIHBow7kgaOG7o3AgbmjhuqV0IGNobyBjw6FjIHBow6JuIHTDrWNoIHRp4bq/cCB0aGVvLg0KYGBge3J9DQoNCmxpYnJhcnkoY29wdWxhKQ0KbGlicmFyeShncmlkKQ0KbGlicmFyeShncmlkRXh0cmEpDQpsaWJyYXJ5KGdncGxvdDIpDQpzZXQuc2VlZCgxMjMpDQojTcO0IHBo4buPbmcgY29wdWxhIGdhdXNzDQpjb3Bfbm9yIDwtIG5vcm1hbENvcHVsYShwYXJhbSA9IGdhdSRwYXIsIGRpbSA9IDIpDQoNCiNNw7QgcGjhu49uZyBjb3B1bGEgc3R1ZGVudA0KY29wX3N0ZCA8LSB0Q29wdWxhKHBhcmFtID0gc3R1JHBhciwgZGltID0gMiwgZGYgPSAxKQ0KDQpub3JfcGVyIDwtIHBlcnNwX3Bsb3QoY29wX25vciwgJ25vcnAucG5nJywgJ3BpbmsnKQ0Kc3RkX3BlciA8LSBwZXJzcF9wbG90KGNvcF9zdGQsICdzdGRwLnBuZycsICdyZWQnKQ0KDQpsZWdlbmQgPC0gbGVnZW5kR3JvYigNCiAgbGFiZWxzID0gYygiR2F1c3MiLCAiU3R1ZGVudCIpLCBwY2ggPSAxNSwNCiAgZ3AgPSBncGFyKGNvbCA9IGMoJ3BpbmsnLCAncmVkJyksIGZpbGwgPSBjKCdwaW5rJywgJ3JlZCcpKQ0KKQ0KDQpncmlkLmFycmFuZ2UoIG5vcl9wZXIsIHN0ZF9wZXIsIGxlZ2VuZCwgbmNvbCA9IDMsIA0KICAgICAgICAgICAgICBsYXlvdXRfbWF0cml4ID0gcmJpbmQoYygxLCAyLCAzKSksDQogICAgICAgICAgICAgIHdpZHRocyA9IGMoMiwgMiwgMSksIA0KICAgICAgICAgICAgICB0b3AgPSB0ZXh0R3JvYigiSMOsbmggMTI6IFBo4buRaSBj4bqjbmggUERGIGPhu6dhIENvcHVsYSBo4buNIEVsaXAgxJHGsOG7o2MgxrDhu5tjIGzGsOG7o25nIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihmb250c2l6ZSA9IDE1LCBmb250ID0gMikpDQopDQoNCmBgYA0KDQoqKlPhu7EgcGjhu6UgdGh14buZYyBnaeG7r2EgVFRDSyBWaeG7h3QgTmFtIMSR4buRaSB24bubaSBUVENLIFNpbmdhcG9yZSB0cm9uZyDEkWnhu4F1IGtp4buHbiBiaeG6v24gxJHhu5luZyBj4buxYyBiacOqbioqDQoNClZp4buHYyBs4buxYSBjaOG7jW4gbcO0IGjDrG5oIENvcHVsYSBwaMO5IGjhu6NwIGzDoCBixrDhu5tjIHF1YW4gdHLhu41uZyB0cm9uZyB2aeG7h2MgbuG6r20gYuG6r3QgY2jDrW5oIHjDoWMgc+G7sSBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGNo4buJIHPhu5EgY2jhu6luZyBraG/DoW4uIMSQ4buDIMSR4bqhdCDEkcaw4bujYyDEkWnhu4F1IG7DoHksIGNow7puZyB0YSDEkcOjIMaw4bubYyBsxrDhu6NuZyBjw6FjIHRoYW0gc+G7kSBj4bunYSBtw7QgaMOsbmggQ29wdWxhIFN0dWRlbnQtdCwgbeG7mXQgbOG7sWEgY2jhu41uIHBow7kgaOG7o3AgxJHhu4MgbcO0IHThuqMgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjaOG7iSBz4buRIFZOSSB2w6AgS09TUEkuIELhuqNuZyAxMCBkxrDhu5tpIMSRw6J5IGN1bmcgY+G6pXAgY8OhYyB0aMO0bmcgc+G7kSBjaGkgdGnhur90IGPhu6dhIG3DtCBow6xuaCwgYmFvIGfhu5NtIHRoYW0gc+G7kSBwaOG7pSB0aHXhu5ljLCB0aGFtIHPhu5EgdOG7sSBkbywgcGjhu6UgdGh14buZYyDEkXXDtGksIGjhu4cgc+G7kSBLZW5kYWxsLCB2w6AgY8OhYyBjaOG7iSBz4buRIHRow7RuZyB0aW4gQUlDIHbDoCBCSUMuIEvhur90IHF14bqjIG7DoHkgc+G6vSBnacO6cCBjaMO6bmcgdGEgxJHDoW5oIGdpw6EgdsOgIGhp4buDdSByw7UgaMahbiB24buBIG3hu6ljIMSR4buZIHBo4bulIHRodeG7mWMgdsOgIGto4bqjIG7Eg25nIG3DtCBow6xuaCB0cm9uZyB2aeG7h2MgcGjhuqNuIMOhbmggY8OhYyB0w6xuaCBodeG7kW5nIGPhu7FjIHRy4buLLg0KDQpgYGB7cn0NCiNM4buxYSBjaOG7jW4gdsOgIMaw4bubYyBsxrDhu6NuZw0Kb3B0X2NvcCA8LSBCaUNvcFNlbGVjdCh1LHYsc2VsZWN0aW9uY3JpdCA9ICJBSUMiLG1ldGhvZCA9ICJtbGUiKQ0KZXN0X29wdF9jb3AgPC0gQmlDb3BFc3QodSx2LGZhbWlseSA9IG9wdF9jb3AkZmFtaWx5LG1ldGhvZCA9ICJtbGUiLG1heC5kZiA9IDMwKQ0KDQojVHLDrG5oIGLDoHkga+G6v3QgcXXhuqMNCmVzdF9vcHRfY29wX2R0IDwtIGRhdGEuZnJhbWUobXFoID0gYygnVk5JLWtvc3BpJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHVsYSA9IGVzdF9vcHRfY29wJGZhbWlseW5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoYW1zbyA9IGVzdF9vcHRfY29wJHBhciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhhbXNvMiA9IGVzdF9vcHRfY29wJHBhcjIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1b2lkdW9pID0gZXN0X29wdF9jb3AkdGFpbGRlcCRsb3dlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVvaXRyZW4gPSBlc3Rfb3B0X2NvcCR0YWlsZGVwJHVwcGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXUgPSBlc3Rfb3B0X2NvcCR0YXUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpYyA9IGVzdF9vcHRfY29wJEFJQywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmljID0gZXN0X29wdF9jb3AkQklDKQ0KDQprYWJsZShlc3Rfb3B0X2NvcF9kdCwgDQogICAgICBjYXB0aW9uID0gIkLhuqNuZyAxMDogS+G6v3QgcXXhuqMgxrDhu5tjIGzGsOG7o25nIG3DtCBow6xuaCBDb3B1bGEgdOG7kWkgxrB1IiwgY29sLm5hbWVzID0gYygiQ2jhu4kgc+G7kSIsIkNvcHVsYSIsICJQYXIiLCJQYXIyIiwgIsSQdcO0aSBkxrDhu5tpIiwgIsSQdcO0aSB0csOqbiIsIkjhu4cgc+G7kSBLZW5kYWxsIiwgIkFJQyIsIkJJQyIpLCANCiAgICAgIGZvcm1hdCA9ICdwYW5kb2MnKSAlPiUga2FibGVfc3R5bGluZygNCiAgICAgICAgYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIpLCANCiAgICAgICAgZnVsbF93aWR0aCA9IEYpDQpgYGANCg0KS+G6v3QgcXXhuqMgxrDhu5tjIGzGsOG7o25nIG3DtCBow6xuaCBDb3B1bGEgdOG7kWkgxrB1IMSRxrDhu6NjIHRyw6xuaCBiw6B5IHRyb25nIELhuqNuZyAxMCBjaG8gdGjhuqV5IHLhurFuZyBDb3B1bGEgU3R1ZGVudC10IGzDoCBs4buxYSBjaOG7jW4gY2jDrW5oIHjDoWMgbmjhuqV0IMSR4buDIG3DtCBow6xuaCBow7NhIHPhu7EgcGjhu6UgdGh14buZYyBnaeG7r2EgY2jhu4kgc+G7kSBWTkkgdsOgIEtPU1BJLiBD4bulIHRo4buDLCB0aGFtIHPhu5EgcGjhu6UgdGh14buZYyAoUGFyKSBj4bunYSBDb3B1bGEgU3R1ZGVudC10IMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBsw6AgMC4yNzg2MTc5LCBjaOG7iSByYSBt4bupYyDEkeG7mSBwaOG7pSB0aHXhu5ljIHbhu6thIHBo4bqjaSBnaeG7r2EgaGFpIGNo4buJIHPhu5EuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHPhu7EgbGnDqm4ga+G6v3Qga2jDtG5nIHF1w6EgbeG6oW5oIG5oxrBuZyB24bqrbiDEkeG7pyDEkeG7gyBwaOG6o24gw6FuaCBt4buRaSBxdWFuIGjhu4cgxJHDoW5nIGvhu4MgZ2nhu69hIFZOSSB2w6AgS09TUEkuIFRoYW0gc+G7kSB04buxIGRvIChQYXIyKSBjw7MgZ2nDoSB0cuG7iyAxMC41NTk1MSwgY2hvIHBow6lwIG3DtCBow6xuaCBuw6B5IG7huq9tIGLhuq90IHThu5F0IGPDoWMgc+G7sSBraeG7h24gY+G7sWMgdHLhu4sgbmjhu50gdsOgbyBraOG6oyBuxINuZyBtw7QgdOG6oyBjw6FjIMSRdcO0aSBwaMOibiBwaOG7kWkgZMOgeSwgxJFp4buBdSBtw6AgY8OhYyBtw7QgaMOsbmgga2jDoWMgY8OzIHRo4buDIGtow7RuZyBsw6BtIMSRxrDhu6NjLg0KDQrEkOG7kWkgduG7m2kgcGjhu6UgdGh14buZYyDEkXXDtGksIGPhuqMgxJF1w7RpIGTGsOG7m2kgdsOgIMSRdcO0aSB0csOqbiDEkeG7gXUgY8OzIGdpw6EgdHLhu4sgbMOgIDAuMDI1OTI1NiwgY2hvIHRo4bqleSBt4buZdCBt4bupYyDEkeG7mSBwaOG7pSB0aHXhu5ljIG5o4bq5IHRyb25nIGPDoWMgdMOsbmggaHXhu5FuZyBj4buxYyB0cuG7iy4gTeG6t2MgZMO5IG3hu6ljIMSR4buZIHBo4bulIHRodeG7mWMga2jDtG5nIGNhbywgbmjGsG5nIG7DsyB24bqrbiBjdW5nIGPhuqVwIHRow7RuZyB0aW4gcXVhbiB0cuG7jW5nIHbhu4Egc+G7sSDEkeG7k25nIGJp4bq/biDEkeG7mW5nIHRyb25nIGPDoWMgxJFp4buBdSBraeG7h24gYuG6pXQgdGjGsOG7nW5nLiBI4buHIHPhu5EgS2VuZGFsbCAoz4QpIGPhu6dhIG3DtCBow6xuaCBsw6AgMC4xNzk3NTI2LCBwaOG6o24gw6FuaCBt4buZdCBt4bupYyDEkeG7mSBwaOG7pSB0aHXhu5ljIHRydW5nIGLDrG5oIGdp4buvYSBoYWkgY2jhu4kgc+G7kS4NCg0KQ8OhYyBjaOG7iSBz4buRIEFJQyAoLTEzNC4zNDM2KSB2w6AgQklDICgtMTIzLjY0OSkgY2hvIHRo4bqleSBtw7QgaMOsbmggQ29wdWxhIFN0dWRlbnQtdCBraMO0bmcgY2jhu4kgcGjDuSBo4bujcCB24buBIG3hurd0IGzDvSB0aHV54bq/dCBtw6AgY8OybiBjw7MgaGnhu4d1IHN14bqldCB04buRdCB0cm9uZyB2aeG7h2MgbcO0IHThuqMgZOG7ryBsaeG7h3UsIHbhu5tpIGPDoWMgZ2nDoSB0cuG7iyBuw6B5IGNo4bupbmcgdOG7jyBy4bqxbmcgbcO0IGjDrG5oIG7DoHkgY8OzIGto4bqjIG7Eg25nIG3DtCB04bqjIGThu68gbGnhu4d1IHThu5F0IG3DoCBraMO0bmcgZ+G6t3AgcGjhuqNpIGhp4buHbiB0xrDhu6NuZyBxdcOhIGto4bubcC4gVOG7lW5nIHF1YW4sIGPDoWMga+G6v3QgcXXhuqMgbsOgeSBraOG6s25nIMSR4buLbmggcuG6sW5nIENvcHVsYSBTdHVkZW50LXQgbMOgIG3DtCBow6xuaCB04buRaSDGsHUsIGN1bmcgY+G6pXAgY8OhaSBuaMOsbiBjaMOtbmggeMOhYyB2w6AgY2hpIHRp4bq/dCB24buBIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIGdp4buvYSBWTkkgdsOgIEtPU1BJLCDEkeG6t2MgYmnhu4d0IHRyb25nIGPDoWMgdMOsbmggaHXhu5FuZyB0aOG7iyB0csaw4budbmcgY+G7sWMgxJFvYW4uDQoNCkjDrG5oIDEzIG7DoHkgdGjhu4MgaGnhu4duIGjDoG0gbeG6rXQgxJHhu5kgeMOhYyBzdeG6pXQgKFBERikgY+G7p2EgbcO0IGjDrG5oIENvcHVsYSBCQjcgdHJvbmcga2jDtG5nIGdpYW4gYmEgY2hp4buBdS4gTcO0IGjDrG5oIEJCNyBsw6AgbeG7mXQgdHJvbmcgbmjhu69uZyBtw7QgaMOsbmggQ29wdWxhIHRpw6puIHRp4bq/biwgxJHGsOG7o2MgdGhp4bq/dCBr4bq/IMSR4buDIG3DtCBow6xuaCBow7NhIGPDoWMgY+G6pXUgdHLDumMgcGjhu6UgdGh14buZYyBwaOG7qWMgdOG6oXAgaMahbiBzbyB24bubaSBjw6FjIG3DtCBow6xuaCBDb3B1bGEgdHJ1eeG7gW4gdGjhu5FuZyBuaMawIEdhdXNzaWFuIGhheSBTdHVkZW50LXQuIEjDrG5oIDEzIHPhur0gY3VuZyBj4bqlcCBt4buZdCBjw6FpIG5ow6xuIHRy4buxYyBxdWFuIHbhu4EgY8OhY2ggcGjDom4gYuG7kSB4w6FjIHN14bqldCBj4bunYSBjw6FjIGPhurdwIGdpw6EgdHLhu4sgXCgodSwgdilcKSB0aGVvIG3DtCBow6xuaCBuw6B5LiDEkOG7kyB0aOG7iyBuw6B5IGtow7RuZyBjaOG7iSBnacO6cCBjaMO6bmcgdGEgaGnhu4N1IHLDtSBoxqFuIHbhu4EgaMOsbmggZOG6oW5nIHbDoCBz4buxIHThuq1wIHRydW5nIGPhu6dhIGjDoG0gbeG6rXQgxJHhu5kgbcOgIGPDsm4gY2hvIHRo4bqleSBraOG6oyBuxINuZyBj4bunYSBtw7QgaMOsbmggdHJvbmcgdmnhu4djIG3DtCBwaOG7j25nIGPDoWMgxJF1w7RpIHBow6JuIHBo4buRaSB2w6Agc+G7sSBwaOG7pSB0aHXhu5ljIHRyb25nIGPDoWMgdMOsbmggaHXhu5FuZyBj4buxYyDEkW9hbi4NCg0KDQpgYGB7cn0NCiMgTuG6oXAgY8OhYyBnw7NpIGPhuqduIHRoaeG6v3QNCmxpYnJhcnkoVkMyY29wdWxhKQ0KbGlicmFyeShjb3B1bGEpDQoNCiMgR2nhuqMgc+G7rSBlc3Rfb3B0X2NvcCBsw6AgbeG7mXQgZGFuaCBzw6FjaCB24bubaSBjw6FjIHRoYW0gc+G7kSDEkcOjIMaw4bubYyBsxrDhu6NuZw0KZXN0X29wdF9jb3AgPC0gbGlzdChwYXIgPSAxLjUsIHBhcjIgPSAwLjcpDQoNCiMgVOG6oW8gxJHhu5FpIHTGsOG7o25nIEJCN0NvcHVsYQ0KY29wdWxhX29iaiA8LSBWQzJjb3B1bGE6OkJCN0NvcHVsYShwYXJhbSA9IGMoZXN0X29wdF9jb3AkcGFyLCBlc3Rfb3B0X2NvcCRwYXIyKSkNCg0KIyBW4bq9IMSR4buTIHRo4buLIDNEIGPhu6dhIFBERiBj4bunYSBCQjcgQ29wdWxhDQojIFRoaeG6v3QgbOG6rXAga8OtY2ggdGjGsOG7m2MgY+G7p2EgdGhp4bq/dCBi4buLIMSR4buTIGjhu41hDQpwYXIobWZyb3cgPSBjKDEsIDEpLCBtYXIgPSBjKDUsIDUsIDQsIDIpICsgMC4xKQ0KDQojIFbhur0gxJHhu5MgdGjhu4sgduG7m2kgY8OhYyB0w7l5IGNo4buNbiBi4buVIHN1bmcNCnBlcnNwKGNvcHVsYV9vYmosIGRDb3B1bGEsIA0KICAgICAgeGxhYiA9ICd1JywgeWxhYiA9ICd2JywgemxhYiA9ICdkZW5zaXR5JywgY29sID0gJ2JsdWUnLCBsdGhldGEgPSAxMjAsICANCiAgICAgIHRpY2t0eXBlID0gImRldGFpbGVkIiwgY2V4LmF4aXMgPSAwLjgsICANCiAgICAgIG1haW4gPSAnSMOsbmggMTM6IFBo4buRaSBj4bqjbmggUERGIGPhu6dhIG3DtCBow6xuaCBCQjcgQ29wdWxhJykNCg0KYGBgDQoNCioqU28gc8OhbmggbeG7qWMgxJHhu5kgcGjhuqNuIOG7qW5nIGPhu6dhIFRUQ0sgVmnhu4d0IE5hbSDEkeG7kWkgduG7m2kgc+G7sSBiaeG6v24gxJHhu5luZyBUVENLIEjDoG4gUXXhu5FjIHF1YSBjw6FjIGdpYWkgxJFv4bqhbioqDQoNClRyxrDhu5tjIGtoaSB0csOsbmggYsOgeSBi4bqjbmcgcGjDom4gcGjhu5FpIGJpw6puIHThu5FpIMawdSBjaG8gY8OhYyBnaWFpIMSRb+G6oW4ga2jDoWMgbmhhdSBj4bunYSBjaOG7iSBz4buRIFZOSSB2w6AgS09TUEksIGPhuqduIG7Dqm4gYmnhur90IHZp4buHYyBs4buxYSBjaOG7jW4gbcO0IGjDrG5oIHBow7kgaOG7o3AgbMOgIHLhuqV0IHF1YW4gdHLhu41uZyDEkeG7gyBwaOG6o24gw6FuaCBjaMOtbmggeMOhYyBjw6FjIMSR4bq3YyDEkWnhu4NtIGJp4bq/biDEkeG7mW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyB0cm9uZyB04burbmcgZ2lhaSDEkW/huqFuIGPhu6UgdGjhu4MuIELhuqNuZyBkxrDhu5tpIMSRw6J5IHThu5VuZyBo4bujcCBjw6FjIG3DtCBow6xuaCDEkcaw4bujYyDDoXAgZOG7pW5nIGNobyBjw6FjIGdpYWkgxJFv4bqhbiB0csaw4bubYyBjw7ogc+G7kWMga2luaCB04bq/LCB0cm9uZyBnaWFpIMSRb+G6oW4gQ292aWQtMTksIHRyb25nIHRo4budaSBr4buzIHh1bmcgxJHhu5l0IE5nYS1Va3JhaW5lLCB2w6Agc2F1IGPDuiBz4buRYywgduG7m2kgbeG7pWMgdGnDqnUgY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHRvw6BuIGRp4buHbiB24buBIGPDoWNoIHRo4bupYyBiaeG6v24gxJHhu5luZyBj4bunYSBjaOG7iSBz4buRIMSRxrDhu6NjIG3DtCBow6xuaCBow7NhIHF1YSB04burbmcgdGjhu51pIGvhu7MuIEPhu6UgdGjhu4MgxJHGsOG7o2MgdGjhu4MgaGnhu4duIHF1YSBi4bqpbmcgc2F1IMSRw6J5IDogDQoNCmBgYHtyfQ0KDQojVHLDrWNoIHh14bqldCBk4buvIGxp4buHdQ0KdHJ1b2MgPC0gcnRbIjIwMTgtMDItMDEvMjAxOS0xMi0zMCJdDQpjb3ZpZCA8LSBydFsiMjAyMC0wMS0wMi8yMDIxLTEyLTMwIl0NCnh1bmdfZG90IDwtIHJ0WyIyMDIyLTAyLTI0LzIwMjMtMDItMjEiXQ0Kc2F1IDwtIHJ0WyIyMDIzLTAzLTAyLzIwMjQtMDctMzEiXQ0KbGlicmFyeShhcmZpbWEpDQojRXN0aW1hdGUgYXJtYQ0KYXJtYTF2bmkgPC0gYXV0b2FyZmltYSh0cnVvYyRWTkksIGFyLm1heCA9IDIsIG1hLm1heCA9IDIsY3JpdGVyaW9uID0gJ0FJQycsIG1ldGhvZCA9ICJmdWxsIikNCmFybWExa29zcGkgPC0gYXV0b2FyZmltYSh0cnVvYyRrb3NwaSwgYXIubWF4ID0gMiwgbWEubWF4ID0gMixjcml0ZXJpb24gPSAnQUlDJywgbWV0aG9kID0gImZ1bGwiKQ0KYXJtYTJ2bmkgPC0gYXV0b2FyZmltYShjb3ZpZCRWTkksIGFyLm1heCA9IDIsIG1hLm1heCA9IDIsY3JpdGVyaW9uID0gJ0FJQycsIG1ldGhvZCA9ICJmdWxsIikNCmFybWEya29zcGkgPC0gYXV0b2FyZmltYShjb3ZpZCRrb3NwaSwgYXIubWF4ID0gMiwgbWEubWF4ID0gMixjcml0ZXJpb24gPSAnQUlDJywgbWV0aG9kID0gImZ1bGwiKQ0KYXJtYTN2bmkgPC0gYXV0b2FyZmltYSh4dW5nX2RvdCRWTkksIGFyLm1heCA9IDIsIG1hLm1heCA9IDIsY3JpdGVyaW9uID0gJ0FJQycsIG1ldGhvZCA9ICJmdWxsIikNCmFybWEza29zcGkgPC0gYXV0b2FyZmltYSh4dW5nX2RvdCRrb3NwaSwgYXIubWF4ID0gMiwgbWEubWF4ID0gMixjcml0ZXJpb24gPSAnQUlDJywgbWV0aG9kID0gImZ1bGwiKQ0KYXJtYTR2bmkgPC0gYXV0b2FyZmltYShzYXUkVk5JLCBhci5tYXggPSAyLCBtYS5tYXggPSAyLGNyaXRlcmlvbiA9ICdBSUMnLCBtZXRob2QgPSAiZnVsbCIpDQphcm1hNGtvc3BpIDwtIGF1dG9hcmZpbWEoc2F1JGtvc3BpLCBhci5tYXggPSAyLCBtYS5tYXggPSAyLGNyaXRlcmlvbiA9ICdBSUMnLCBtZXRob2QgPSAiZnVsbCIpDQoNCmFybWExdm5pIDwtIGMoMiwwKQ0KYXJtYTFrb3NwaSA8LSBjKDAsMCkNCmFybWEya29zcGkgPC0gYygwLDIpDQphcm1hMnZuaSA8LSBjKDIsMikNCmFybWEza29zcGkgPC0gYygyLDIpDQphcm1hM3ZuaSA8LSBjKDIsMikNCmFybWE0a29zcGkgPC0gYygxLDApDQphcm1hNHZuaSA8LSBjKDIsMikNCg0KI1NldHVwIGdhcmNoIGFuZCBlc3RpbWF0ZSBmb3IgVk5JIGNvZWYNCg0KZml0X2dqcmdhcmNoIDwtIGZ1bmN0aW9uKGRhdGEsIGFtb3JkZXIsIGdhcmNob2RlciwgZGlzKSB7DQogIHNwZWMgPC0gdWdhcmNoc3BlYygNCiAgICB2YXJpYW5jZS5tb2RlbCA9IGxpc3QobW9kZWwgPSAiZ2pyR0FSQ0giLCBnYXJjaE9yZGVyID0gZ2FyY2hvZGVyKSwNCiAgICBtZWFuLm1vZGVsID0gbGlzdChhcm1hT3JkZXIgPSBhbW9yZGVyLCBpbmNsdWRlLm1lYW4gPSBUUlVFKSwNCiAgICBkaXN0cmlidXRpb24ubW9kZWwgPSBkaXMpDQogIHVnYXJjaGZpdChzcGVjID0gc3BlYywgZGF0YSA9IGRhdGEpDQp9DQojR2lhaSDEkW/huqFuIHRyxrDhu5tjIGNobyBWTkkNCmdhcmNoMTFfbm9yX3ZuaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJFZOSSwgYXJtYTF2bmksIGMoMSwxKSwgIm5vcm0iKQ0KZ2FyY2gxMV9zdGRfdm5pMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2MkVk5JLCBhcm1hMXZuaSwgYygxLDEpLCAic3RkIikNCmdhcmNoMTFfc3N0ZF92bmkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRWTkksIGFybWExdm5pLCBjKDEsMSksICJzc3RkIikNCmdhcmNoMTFfZ2VkX3ZuaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJFZOSSwgYXJtYTF2bmksIGMoMSwxKSwgImdlZCIpDQpnYXJjaDExX3NnZWRfdm5pMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2MkVk5JLCBhcm1hMXZuaSwgYygxLDEpLCAic2dlZCIpDQpnYXJjaDIyX25vcl92bmkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRWTkksIGFybWExdm5pLCBjKDIsMiksICJub3JtIikNCmdhcmNoMjJfc3RkX3ZuaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJFZOSSwgYXJtYTF2bmksIGMoMiwyKSwgInN0ZCIpDQpnYXJjaDIyX3NzdGRfdm5pMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2MkVk5JLCBhcm1hMXZuaSwgYygyLDIpLCAic3N0ZCIpDQpnYXJjaDIyX2dlZF92bmkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRWTkksIGFybWExdm5pLCBjKDIsMiksICJnZWQiKQ0KZ2FyY2gyMl9zZ2VkX3ZuaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJFZOSSwgYXJtYTF2bmksIGMoMiwyKSwgInNnZWQiKQ0KZ2FyY2gxMl9ub3Jfdm5pMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2MkVk5JLCBhcm1hMXZuaSwgYygxLDIpLCAibm9ybSIpDQpnYXJjaDEyX3N0ZF92bmkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRWTkksIGFybWExdm5pLCBjKDEsMiksICJzdGQiKQ0KZ2FyY2gxMl9zc3RkX3ZuaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJFZOSSwgYXJtYTF2bmksIGMoMSwyKSwgInNzdGQiKQ0KZ2FyY2gxMl9nZWRfdm5pMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2MkVk5JLCBhcm1hMXZuaSwgYygxLDIpLCAiZ2VkIikNCmdhcmNoMTJfc2dlZF92bmkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRWTkksIGFybWExdm5pLCBjKDEsMiksICJzZ2VkIikNCmdhcmNoMjFfbm9yX3ZuaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJFZOSSwgYXJtYTF2bmksIGMoMiwxKSwgIm5vcm0iKQ0KZ2FyY2gyMV9zdGRfdm5pMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2MkVk5JLCBhcm1hMXZuaSwgYygyLDEpLCAic3RkIikNCmdhcmNoMjFfc3N0ZF92bmkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRWTkksIGFybWExdm5pLCBjKDIsMSksICJzc3RkIikNCmdhcmNoMjFfZ2VkX3ZuaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJFZOSSwgYXJtYTF2bmksIGMoMiwxKSwgImdlZCIpDQpnYXJjaDIxX3NnZWRfdm5pMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2MkVk5JLCBhcm1hMXZuaSwgYygyLDEpLCAic2dlZCIpDQojR2lhaSDEkW/huqFuIENvdmlkIGNobyBWTkkNCmdhcmNoMTFfbm9yX3ZuaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJFZOSSwgYXJtYTJ2bmksIGMoMSwxKSwgIm5vcm0iKQ0KZ2FyY2gxMV9zdGRfdm5pMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQkVk5JLCBhcm1hMnZuaSwgYygxLDEpLCAic3RkIikNCmdhcmNoMTFfc3N0ZF92bmkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRWTkksIGFybWEydm5pLCBjKDEsMSksICJzc3RkIikNCg0KZ2FyY2gxMV9nZWRfdm5pMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQkVk5JLCBhcm1hMnZuaSwgYygxLDEpLCAiZ2VkIikNCg0KZ2FyY2gxMV9zZ2VkX3ZuaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJFZOSSwgYXJtYTJ2bmksIGMoMSwxKSwgInNnZWQiKQ0KZ2FyY2gyMl9ub3Jfdm5pMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQkVk5JLCBhcm1hMnZuaSwgYygyLDIpLCAibm9ybSIpDQpnYXJjaDIyX3N0ZF92bmkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRWTkksIGFybWEydm5pLCBjKDIsMiksICJzdGQiKQ0KZ2FyY2gyMl9zc3RkX3ZuaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJFZOSSwgYXJtYTJ2bmksIGMoMiwyKSwgInNzdGQiKQ0KZ2FyY2gyMl9nZWRfdm5pMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQkVk5JLCBhcm1hMnZuaSwgYygyLDIpLCAiZ2VkIikNCmdhcmNoMjJfc2dlZF92bmkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRWTkksIGFybWEydm5pLCBjKDIsMiksICJzZ2VkIikNCmdhcmNoMTJfbm9yX3ZuaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJFZOSSwgYXJtYTJ2bmksIGMoMSwyKSwgIm5vcm0iKQ0KZ2FyY2gxMl9zdGRfdm5pMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQkVk5JLCBhcm1hMnZuaSwgYygxLDIpLCAic3RkIikNCmdhcmNoMTJfc3N0ZF92bmkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRWTkksIGFybWEydm5pLCBjKDEsMiksICJzc3RkIikNCmdhcmNoMTJfZ2VkX3ZuaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJFZOSSwgYXJtYTJ2bmksIGMoMSwyKSwgImdlZCIpDQpnYXJjaDEyX3NnZWRfdm5pMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQkVk5JLCBhcm1hMnZuaSwgYygxLDIpLCAic2dlZCIpDQpnYXJjaDIxX25vcl92bmkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRWTkksIGFybWEydm5pLCBjKDIsMSksICJub3JtIikNCmdhcmNoMjFfc3RkX3ZuaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJFZOSSwgYXJtYTJ2bmksIGMoMiwxKSwgInN0ZCIpDQpnYXJjaDIxX3NzdGRfdm5pMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQkVk5JLCBhcm1hMnZuaSwgYygyLDEpLCAic3N0ZCIpDQpnYXJjaDIxX2dlZF92bmkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRWTkksIGFybWEydm5pLCBjKDIsMSksICJnZWQiKQ0KZ2FyY2gyMV9zZ2VkX3ZuaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJFZOSSwgYXJtYTJ2bmksIGMoMiwxKSwgInNnZWQiKQ0KI0dpYWkgxJFv4bqhbiB4dW5nIMSR4buZdA0KZ2FyY2gxMV9ub3Jfdm5pMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3QkVk5JLCBhcm1hM3ZuaSwgYygxLDEpLCAibm9ybSIpDQpnYXJjaDExX3N0ZF92bmkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRWTkksIGFybWEzdm5pLCBjKDEsMSksICJzdGQiKQ0KZ2FyY2gxMV9zc3RkX3ZuaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JFZOSSwgYXJtYTN2bmksIGMoMSwxKSwgInNzdGQiKQ0KZ2FyY2gxMV9nZWRfdm5pMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3QkVk5JLCBhcm1hM3ZuaSwgYygxLDEpLCAiZ2VkIikNCmdhcmNoMTFfc2dlZF92bmkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRWTkksIGFybWEzdm5pLCBjKDEsMSksICJzZ2VkIikNCmdhcmNoMjJfbm9yX3ZuaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JFZOSSwgYXJtYTN2bmksIGMoMiwyKSwgIm5vcm0iKQ0KZ2FyY2gyMl9zdGRfdm5pMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3QkVk5JLCBhcm1hM3ZuaSwgYygyLDIpLCAic3RkIikNCmdhcmNoMjJfc3N0ZF92bmkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRWTkksIGFybWEzdm5pLCBjKDIsMiksICJzc3RkIikNCmdhcmNoMjJfZ2VkX3ZuaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JFZOSSwgYXJtYTN2bmksIGMoMiwyKSwgImdlZCIpDQpnYXJjaDIyX3NnZWRfdm5pMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3QkVk5JLCBhcm1hM3ZuaSwgYygyLDIpLCAic2dlZCIpDQpnYXJjaDEyX25vcl92bmkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRWTkksIGFybWEzdm5pLCBjKDEsMiksICJub3JtIikNCmdhcmNoMTJfc3RkX3ZuaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JFZOSSwgYXJtYTN2bmksIGMoMSwyKSwgInN0ZCIpDQpnYXJjaDEyX3NzdGRfdm5pMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3QkVk5JLCBhcm1hM3ZuaSwgYygxLDIpLCAic3N0ZCIpDQpnYXJjaDEyX2dlZF92bmkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRWTkksIGFybWEzdm5pLCBjKDEsMiksICJnZWQiKQ0KZ2FyY2gxMl9zZ2VkX3ZuaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JFZOSSwgYXJtYTN2bmksIGMoMSwyKSwgInNnZWQiKQ0KZ2FyY2gyMV9ub3Jfdm5pMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3QkVk5JLCBhcm1hM3ZuaSwgYygyLDEpLCAibm9ybSIpDQpnYXJjaDIxX3N0ZF92bmkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRWTkksIGFybWEzdm5pLCBjKDIsMSksICJzdGQiKQ0KZ2FyY2gyMV9zc3RkX3ZuaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JFZOSSwgYXJtYTN2bmksIGMoMiwxKSwgInNzdGQiKQ0KZ2FyY2gyMV9nZWRfdm5pMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3QkVk5JLCBhcm1hM3ZuaSwgYygyLDEpLCAiZ2VkIikNCmdhcmNoMjFfc2dlZF92bmkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRWTkksIGFybWEzdm5pLCBjKDIsMSksICJzZ2VkIikNCiNHaWFpIMSRb+G6oW4gc2F1IGPDuiBz4buRYyANCmdhcmNoMTFfbm9yX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMSksICJub3JtIikNCmdhcmNoMTFfc3RkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMSksICJzdGQiKQ0KZ2FyY2gxMV9zc3RkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMSksICJzc3RkIikNCmdhcmNoMTFfZ2VkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMSksICJnZWQiKQ0KZ2FyY2gxMV9zZ2VkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMSksICJzZ2VkIikNCmdhcmNoMjJfbm9yX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMiksICJub3JtIikNCmdhcmNoMjJfc3RkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMiksICJzdGQiKQ0KZ2FyY2gyMl9zc3RkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMiksICJzc3RkIikNCmdhcmNoMjJfZ2VkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMiksICJnZWQiKQ0KZ2FyY2gyMl9zZ2VkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMiksICJzZ2VkIikNCmdhcmNoMTJfbm9yX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMiksICJub3JtIikNCmdhcmNoMTJfc3RkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMiksICJzdGQiKQ0KZ2FyY2gxMl9zc3RkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMiksICJzc3RkIikNCmdhcmNoMTJfZ2VkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMiksICJnZWQiKQ0KZ2FyY2gxMl9zZ2VkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDEsMiksICJzZ2VkIikNCmdhcmNoMjFfbm9yX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMSksICJub3JtIikNCmdhcmNoMjFfc3RkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMSksICJzdGQiKQ0KZ2FyY2gyMV9zc3RkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMSksICJzc3RkIikNCmdhcmNoMjFfZ2VkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMSksICJnZWQiKQ0KZ2FyY2gyMV9zZ2VkX3ZuaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRWTkksIGFybWE0dm5pLCBjKDIsMSksICJzZ2VkIikNCiNDaG8ga29zcGkgZ2lhaSDEkW/huqFuIHRyxrDhu5tjDQpnYXJjaDExX25vcl9rb3NwaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJGtvc3BpLCBhcm1hMWtvc3BpLCBjKDEsMSksICJub3JtIikNCmdhcmNoMTFfc3RkX2tvc3BpMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2Mka29zcGksIGFybWExa29zcGksIGMoMSwxKSwgInN0ZCIpDQpnYXJjaDExX3NzdGRfa29zcGkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRrb3NwaSwgYXJtYTFrb3NwaSwgYygxLDEpLCAic3N0ZCIpDQpnYXJjaDExX2dlZF9rb3NwaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJGtvc3BpLCBhcm1hMWtvc3BpLCBjKDEsMSksICJnZWQiKQ0KZ2FyY2gxMV9zZ2VkX2tvc3BpMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2Mka29zcGksIGFybWExa29zcGksIGMoMSwxKSwgInNnZWQiKQ0KZ2FyY2gyMl9ub3Jfa29zcGkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRrb3NwaSwgYXJtYTFrb3NwaSwgYygyLDIpLCAibm9ybSIpDQpnYXJjaDIyX3N0ZF9rb3NwaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJGtvc3BpLCBhcm1hMWtvc3BpLCBjKDIsMiksICJzdGQiKQ0KZ2FyY2gyMl9zc3RkX2tvc3BpMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2Mka29zcGksIGFybWExa29zcGksIGMoMiwyKSwgInNzdGQiKQ0KZ2FyY2gyMl9nZWRfa29zcGkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRrb3NwaSwgYXJtYTFrb3NwaSwgYygyLDIpLCAiZ2VkIikNCmdhcmNoMjJfc2dlZF9rb3NwaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJGtvc3BpLCBhcm1hMWtvc3BpLCBjKDIsMiksICJzZ2VkIikNCmdhcmNoMTJfbm9yX2tvc3BpMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2Mka29zcGksIGFybWExa29zcGksIGMoMSwyKSwgIm5vcm0iKQ0KZ2FyY2gxMl9zdGRfa29zcGkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRrb3NwaSwgYXJtYTFrb3NwaSwgYygxLDIpLCAic3RkIikNCmdhcmNoMTJfc3N0ZF9rb3NwaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJGtvc3BpLCBhcm1hMWtvc3BpLCBjKDEsMiksICJzc3RkIikNCmdhcmNoMTJfZ2VkX2tvc3BpMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2Mka29zcGksIGFybWExa29zcGksIGMoMSwyKSwgImdlZCIpDQpnYXJjaDEyX3NnZWRfa29zcGkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRrb3NwaSwgYXJtYTFrb3NwaSwgYygxLDIpLCAic2dlZCIpDQpnYXJjaDIxX25vcl9rb3NwaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJGtvc3BpLCBhcm1hMWtvc3BpLCBjKDIsMSksICJub3JtIikNCmdhcmNoMjFfc3RkX2tvc3BpMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2Mka29zcGksIGFybWExa29zcGksIGMoMiwxKSwgInN0ZCIpDQpnYXJjaDIxX3NzdGRfa29zcGkxIDwtIGZpdF9nanJnYXJjaCh0cnVvYyRrb3NwaSwgYXJtYTFrb3NwaSwgYygyLDEpLCAic3N0ZCIpDQpnYXJjaDIxX2dlZF9rb3NwaTEgPC0gZml0X2dqcmdhcmNoKHRydW9jJGtvc3BpLCBhcm1hMWtvc3BpLCBjKDIsMSksICJnZWQiKQ0KZ2FyY2gyMV9zZ2VkX2tvc3BpMSA8LSBmaXRfZ2pyZ2FyY2godHJ1b2Mka29zcGksIGFybWExa29zcGksIGMoMiwxKSwgInNnZWQiKQ0KI0dpYWkgxJFv4bqhbiBjb3ZpZA0KZ2FyY2gxMV9ub3Jfa29zcGkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRrb3NwaSwgYXJtYTJrb3NwaSwgYygxLDEpLCAibm9ybSIpDQpnYXJjaDExX3N0ZF9rb3NwaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJGtvc3BpLCBhcm1hMmtvc3BpLCBjKDEsMSksICJzdGQiKQ0KZ2FyY2gxMV9zc3RkX2tvc3BpMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQka29zcGksIGFybWEya29zcGksIGMoMSwxKSwgInNzdGQiKQ0KZ2FyY2gxMV9nZWRfa29zcGkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRrb3NwaSwgYXJtYTJrb3NwaSwgYygxLDEpLCAiZ2VkIikNCmdhcmNoMTFfc2dlZF9rb3NwaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJGtvc3BpLCBhcm1hMmtvc3BpLCBjKDEsMSksICJzZ2VkIikNCmdhcmNoMjJfbm9yX2tvc3BpMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQka29zcGksIGFybWEya29zcGksIGMoMiwyKSwgIm5vcm0iKQ0KZ2FyY2gyMl9zdGRfa29zcGkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRrb3NwaSwgYXJtYTJrb3NwaSwgYygyLDIpLCAic3RkIikNCmdhcmNoMjJfc3N0ZF9rb3NwaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJGtvc3BpLCBhcm1hMmtvc3BpLCBjKDIsMiksICJzc3RkIikNCmdhcmNoMjJfZ2VkX2tvc3BpMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQka29zcGksIGFybWEya29zcGksIGMoMiwyKSwgImdlZCIpDQpnYXJjaDIyX3NnZWRfa29zcGkyPC0gZml0X2dqcmdhcmNoKGNvdmlkJGtvc3BpLCBhcm1hMmtvc3BpLCBjKDIsMiksICJzZ2VkIikNCmdhcmNoMTJfbm9yX2tvc3BpMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQka29zcGksIGFybWEya29zcGksIGMoMSwyKSwgIm5vcm0iKQ0KZ2FyY2gxMl9zdGRfa29zcGkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRrb3NwaSwgYXJtYTJrb3NwaSwgYygxLDIpLCAic3RkIikNCmdhcmNoMTJfc3N0ZF9rb3NwaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJGtvc3BpLCBhcm1hMmtvc3BpLCBjKDEsMiksICJzc3RkIikNCmdhcmNoMTJfZ2VkX2tvc3BpMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQka29zcGksIGFybWEya29zcGksIGMoMSwyKSwgImdlZCIpDQpnYXJjaDEyX3NnZWRfa29zcGkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRrb3NwaSwgYXJtYTJrb3NwaSwgYygxLDIpLCAic2dlZCIpDQpnYXJjaDIxX25vcl9rb3NwaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJGtvc3BpLCBhcm1hMmtvc3BpLCBjKDIsMSksICJub3JtIikNCmdhcmNoMjFfc3RkX2tvc3BpMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQka29zcGksIGFybWEya29zcGksIGMoMiwxKSwgInN0ZCIpDQpnYXJjaDIxX3NzdGRfa29zcGkyIDwtIGZpdF9nanJnYXJjaChjb3ZpZCRrb3NwaSwgYXJtYTJrb3NwaSwgYygyLDEpLCAic3N0ZCIpDQpnYXJjaDIxX2dlZF9rb3NwaTIgPC0gZml0X2dqcmdhcmNoKGNvdmlkJGtvc3BpLCBhcm1hMmtvc3BpLCBjKDIsMSksICJnZWQiKQ0KZ2FyY2gyMV9zZ2VkX2tvc3BpMiA8LSBmaXRfZ2pyZ2FyY2goY292aWQka29zcGksIGFybWEya29zcGksIGMoMiwxKSwgInNnZWQiKQ0KI0dpYWkgxJFv4bqhbiB4dW5nIMSR4buZdA0KZ2FyY2gxMV9ub3Jfa29zcGkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRrb3NwaSwgYXJtYTNrb3NwaSwgYygxLDEpLCAibm9ybSIpDQpnYXJjaDExX3N0ZF9rb3NwaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JGtvc3BpLCBhcm1hM2tvc3BpLCBjKDEsMSksICJzdGQiKQ0KZ2FyY2gxMV9zc3RkX2tvc3BpMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3Qka29zcGksIGFybWEza29zcGksIGMoMSwxKSwgInNzdGQiKQ0KZ2FyY2gxMV9nZWRfa29zcGkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRrb3NwaSwgYXJtYTNrb3NwaSwgYygxLDEpLCAiZ2VkIikNCmdhcmNoMTFfc2dlZF9rb3NwaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JGtvc3BpLCBhcm1hM2tvc3BpLCBjKDEsMSksICJzZ2VkIikNCmdhcmNoMjJfbm9yX2tvc3BpMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3Qka29zcGksIGFybWEza29zcGksIGMoMiwyKSwgIm5vcm0iKQ0KZ2FyY2gyMl9zdGRfa29zcGkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRrb3NwaSwgYXJtYTNrb3NwaSwgYygyLDIpLCAic3RkIikNCmdhcmNoMjJfc3N0ZF9rb3NwaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JGtvc3BpLCBhcm1hM2tvc3BpLCBjKDIsMiksICJzc3RkIikNCmdhcmNoMjJfZ2VkX2tvc3BpMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3Qka29zcGksIGFybWEza29zcGksIGMoMiwyKSwgImdlZCIpDQpnYXJjaDIyX3NnZWRfa29zcGkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRrb3NwaSwgYXJtYTNrb3NwaSwgYygyLDIpLCAic2dlZCIpDQpnYXJjaDEyX25vcl9rb3NwaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JGtvc3BpLCBhcm1hM2tvc3BpLCBjKDEsMiksICJub3JtIikNCmdhcmNoMTJfc3RkX2tvc3BpMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3Qka29zcGksIGFybWEza29zcGksIGMoMSwyKSwgInN0ZCIpDQpnYXJjaDEyX3NzdGRfa29zcGkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRrb3NwaSwgYXJtYTNrb3NwaSwgYygxLDIpLCAic3N0ZCIpDQpnYXJjaDEyX2dlZF9rb3NwaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JGtvc3BpLCBhcm1hM2tvc3BpLCBjKDEsMiksICJnZWQiKQ0KZ2FyY2gxMl9zZ2VkX2tvc3BpMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3Qka29zcGksIGFybWEza29zcGksIGMoMSwyKSwgInNnZWQiKQ0KZ2FyY2gyMV9ub3Jfa29zcGkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRrb3NwaSwgYXJtYTNrb3NwaSwgYygyLDEpLCAibm9ybSIpDQpnYXJjaDIxX3N0ZF9rb3NwaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JGtvc3BpLCBhcm1hM2tvc3BpLCBjKDIsMSksICJzdGQiKQ0KZ2FyY2gyMV9zc3RkX2tvc3BpMyA8LSBmaXRfZ2pyZ2FyY2goeHVuZ19kb3Qka29zcGksIGFybWEza29zcGksIGMoMiwxKSwgInNzdGQiKQ0KZ2FyY2gyMV9nZWRfa29zcGkzIDwtIGZpdF9nanJnYXJjaCh4dW5nX2RvdCRrb3NwaSwgYXJtYTNrb3NwaSwgYygyLDEpLCAiZ2VkIikNCmdhcmNoMjFfc2dlZF9rb3NwaTMgPC0gZml0X2dqcmdhcmNoKHh1bmdfZG90JGtvc3BpLCBhcm1hM2tvc3BpLCBjKDIsMSksICJzZ2VkIikNCiNHaWFpIMSRb+G6oW4gc2F1DQpnYXJjaDExX25vcl9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDEpLCAibm9ybSIpDQpnYXJjaDExX3N0ZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDEpLCAic3RkIikNCmdhcmNoMTFfc3N0ZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDEpLCAic3N0ZCIpDQpnYXJjaDExX2dlZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDEpLCAiZ2VkIikNCmdhcmNoMTFfc2dlZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDEpLCAic2dlZCIpDQpnYXJjaDIyX25vcl9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDIpLCAibm9ybSIpDQpnYXJjaDIyX3N0ZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDIpLCAic3RkIikNCmdhcmNoMjJfc3N0ZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDIpLCAic3N0ZCIpDQpnYXJjaDIyX2dlZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDIpLCAiZ2VkIikNCmdhcmNoMjJfc2dlZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDIpLCAic2dlZCIpDQpnYXJjaDEyX25vcl9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDIpLCAibm9ybSIpDQpnYXJjaDEyX3N0ZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDIpLCAic3RkIikNCmdhcmNoMTJfc3N0ZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDIpLCAic3N0ZCIpDQpnYXJjaDEyX2dlZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDIpLCAiZ2VkIikNCmdhcmNoMTJfc2dlZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygxLDIpLCAic2dlZCIpDQpnYXJjaDIxX25vcl9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDEpLCAibm9ybSIpDQpnYXJjaDIxX3N0ZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDEpLCAic3RkIikNCmdhcmNoMjFfc3N0ZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDEpLCAic3N0ZCIpDQpnYXJjaDIxX2dlZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDEpLCAiZ2VkIikNCmdhcmNoMjFfc2dlZF9rb3NwaTQgPC0gZml0X2dqcmdhcmNoKHNhdSRrb3NwaSwgYXJtYTRrb3NwaSwgYygyLDEpLCAic2dlZCIpDQoNCg0KI0No4buNbiBtw7QgaMOsbmggdOG7kWkgxrB1DQp2bmkxLm1vZGVsLmxpc3QgPC0gbGlzdChnYXJjaDExbiA9IGdhcmNoMTFfbm9yX3ZuaTEsIGdhcmNoMTF0ID0gZ2FyY2gxMV9zdGRfdm5pMSwgZ2FyY2gxMXN0ID0gZ2FyY2gxMV9zc3RkX3ZuaTEsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMWcgPSBnYXJjaDExX2dlZF92bmkxLCBnYXJjaDExc2cgPSBnYXJjaDExX3NnZWRfdm5pMSwgDQogICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDEybiA9IGdhcmNoMTJfbm9yX3ZuaTEsIGdhcmNoMTJ0ID0gZ2FyY2gxMl9zdGRfdm5pMSwgZ2FyY2gxMnN0ID0gZ2FyY2gxMl9zc3RkX3ZuaTEsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMmcgPSBnYXJjaDEyX2dlZF92bmkxLCBnYXJjaDEyc2cgPSBnYXJjaDEyX3NnZWRfdm5pMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjFuID0gZ2FyY2gyMV9ub3Jfdm5pMSwgZ2FyY2gyMXQgPSBnYXJjaDIxX3N0ZF92bmkxLCBnYXJjaDIxc3QgPSBnYXJjaDIxX3NzdGRfdm5pMSwgDQogICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIxZyA9IGdhcmNoMjFfZ2VkX3ZuaTEsIGdhcmNoMjFzZyA9IGdhcmNoMjFfc2dlZF92bmkxLA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMm4gPSBnYXJjaDIyX25vcl92bmkxLCBnYXJjaDIydCA9IGdhcmNoMjJfc3RkX3ZuaTEsIGdhcmNoMjJzdCA9IGdhcmNoMjJfc3N0ZF92bmkxLCANCiAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjJnID0gZ2FyY2gyMl9nZWRfdm5pMSwgZ2FyY2gyMnNnID0gZ2FyY2gyMl9zZ2VkX3ZuaTENCikNCg0Kdm5pMS5pbmZvLm1hdCA8LSBzYXBwbHkodm5pMS5tb2RlbC5saXN0LCBpbmZvY3JpdGVyaWEpDQoNCnJvd25hbWVzKHZuaTEuaW5mby5tYXQpIDwtIHJvd25hbWVzKGluZm9jcml0ZXJpYShnYXJjaDExX25vcl92bmkxKSkNCg0Kdm5pMS5pbmRzIDwtIHdoaWNoKHZuaTEuaW5mby5tYXQgPT0gbWluKHZuaTEuaW5mby5tYXRbMSxdKSwgYXJyLmluZD1UUlVFKSAjTGF5IGNoaSBzbyBBSUMgbmhvIG5oYXQNCg0KbW9kZWwudm5pMSA8LSBjb2xuYW1lcyh2bmkxLmluZm8ubWF0KVt2bmkxLmluZHNbLDJdXQ0KDQp2bmkyLm1vZGVsLmxpc3QgPC0gbGlzdChnYXJjaDExbiA9IGdhcmNoMTFfbm9yX3ZuaTIsIGdhcmNoMTF0ID0gZ2FyY2gxMV9zdGRfdm5pMiwgZ2FyY2gxMXN0ID0gZ2FyY2gxMV9zc3RkX3ZuaTIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMXNnID0gZ2FyY2gxMV9zZ2VkX3ZuaTIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMm4gPSBnYXJjaDEyX25vcl92bmkyLCBnYXJjaDEydCA9IGdhcmNoMTJfc3RkX3ZuaTIsIGdhcmNoMTJzdCA9IGdhcmNoMTJfc3N0ZF92bmkyLCANCiAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMTJnID0gZ2FyY2gxMl9nZWRfdm5pMiwgZ2FyY2gxMnNnID0gZ2FyY2gxMl9zZ2VkX3ZuaTIsDQogICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIxbiA9IGdhcmNoMjFfbm9yX3ZuaTIsIGdhcmNoMjF0ID0gZ2FyY2gyMV9zdGRfdm5pMiwgZ2FyY2gyMXN0ID0gZ2FyY2gyMV9zc3RkX3ZuaTIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMWcgPSBnYXJjaDIxX2dlZF92bmkyLCBnYXJjaDIxc2cgPSBnYXJjaDIxX3NnZWRfdm5pMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjJuID0gZ2FyY2gyMl9ub3Jfdm5pMiwgZ2FyY2gyMnQgPSBnYXJjaDIyX3N0ZF92bmkyLCBnYXJjaDIyc3QgPSBnYXJjaDIyX3NzdGRfdm5pMiwgDQogICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIyZyA9IGdhcmNoMjJfZ2VkX3ZuaTIsIGdhcmNoMjJzZyA9IGdhcmNoMjJfc2dlZF92bmkyDQopDQoNCnZuaTIuaW5mby5tYXQgPC0gc2FwcGx5KHZuaTIubW9kZWwubGlzdCwgaW5mb2NyaXRlcmlhKQ0KDQpyb3duYW1lcyh2bmkyLmluZm8ubWF0KSA8LSByb3duYW1lcyhpbmZvY3JpdGVyaWEoZ2FyY2gxMV9ub3Jfdm5pMikpDQoNCnZuaTIuaW5kcyA8LSB3aGljaCh2bmkyLmluZm8ubWF0ID09IG1pbih2bmkyLmluZm8ubWF0WzEsXSksIGFyci5pbmQ9VFJVRSkgI0xheSBjaGkgc28gQUlDIG5obyBuaGF0DQoNCm1vZGVsLnZuaTIgPC0gY29sbmFtZXModm5pMi5pbmZvLm1hdClbdm5pMi5pbmRzWywyXV0NCg0Kdm5pMy5tb2RlbC5saXN0IDwtIGxpc3QoZ2FyY2gxMW4gPSBnYXJjaDExX25vcl92bmkzLCAgZ2FyY2gxMXN0ID0gZ2FyY2gxMV9zc3RkX3ZuaTMsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMWcgPSBnYXJjaDExX2dlZF92bmkzLCBnYXJjaDExc2cgPSBnYXJjaDExX3NnZWRfdm5pMywgDQogICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDEybiA9IGdhcmNoMTJfbm9yX3ZuaTMsIGdhcmNoMTJ0ID0gZ2FyY2gxMl9zdGRfdm5pMywgZ2FyY2gxMnN0ID0gZ2FyY2gxMl9zc3RkX3ZuaTMsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMmcgPSBnYXJjaDEyX2dlZF92bmkzLCBnYXJjaDEyc2cgPSBnYXJjaDEyX3NnZWRfdm5pMywNCiAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjFuID0gZ2FyY2gyMV9ub3Jfdm5pMywgZ2FyY2gyMXQgPSBnYXJjaDIxX3N0ZF92bmkzLCBnYXJjaDIxc3QgPSBnYXJjaDIxX3NzdGRfdm5pMywgDQogICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIxZyA9IGdhcmNoMjFfZ2VkX3ZuaTMsIGdhcmNoMjFzZyA9IGdhcmNoMjFfc2dlZF92bmkzLA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMm4gPSBnYXJjaDIyX25vcl92bmkzLCBnYXJjaDIydCA9IGdhcmNoMjJfc3RkX3ZuaTMsIGdhcmNoMjJzdCA9IGdhcmNoMjJfc3N0ZF92bmkzLCANCiAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjJnID0gZ2FyY2gyMl9nZWRfdm5pMywgZ2FyY2gyMnNnID0gZ2FyY2gyMl9zZ2VkX3ZuaTMNCikNCg0Kdm5pMy5pbmZvLm1hdCA8LSBzYXBwbHkodm5pMy5tb2RlbC5saXN0LCBpbmZvY3JpdGVyaWEpDQoNCnJvd25hbWVzKHZuaTMuaW5mby5tYXQpIDwtIHJvd25hbWVzKGluZm9jcml0ZXJpYShnYXJjaDExX25vcl92bmkzKSkNCg0Kdm5pMy5pbmRzIDwtIHdoaWNoKHZuaTMuaW5mby5tYXQgPT0gbWluKHZuaTMuaW5mby5tYXRbMSxdKSwgYXJyLmluZD1UUlVFKSAjTGF5IGNoaSBzbyBBSUMgbmhvIG5oYXQNCg0KbW9kZWwudm5pMyA8LSBjb2xuYW1lcyh2bmkzLmluZm8ubWF0KVt2bmkzLmluZHNbLDJdXQ0KDQp2bmk0Lm1vZGVsLmxpc3QgPC0gbGlzdChnYXJjaDExbiA9IGdhcmNoMTFfbm9yX3ZuaTQsIGdhcmNoMTF0ID0gZ2FyY2gxMV9zdGRfdm5pNCwgZ2FyY2gxMXN0ID0gZ2FyY2gxMV9zc3RkX3ZuaTQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMWcgPSBnYXJjaDExX2dlZF92bmk0LCBnYXJjaDExc2cgPSBnYXJjaDExX3NnZWRfdm5pNCwgDQogICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDEybiA9IGdhcmNoMTJfbm9yX3ZuaTQsIGdhcmNoMTJ0ID0gZ2FyY2gxMl9zdGRfdm5pNCwgZ2FyY2gxMnN0ID0gZ2FyY2gxMl9zc3RkX3ZuaTQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMmcgPSBnYXJjaDEyX2dlZF92bmk0LCBnYXJjaDEyc2cgPSBnYXJjaDEyX3NnZWRfdm5pNA0KKQ0KDQp2bmk0LmluZm8ubWF0IDwtIHNhcHBseSh2bmk0Lm1vZGVsLmxpc3QsIGluZm9jcml0ZXJpYSkNCg0Kcm93bmFtZXModm5pNC5pbmZvLm1hdCkgPC0gcm93bmFtZXMoaW5mb2NyaXRlcmlhKGdhcmNoMTFfbm9yX3ZuaTQpKQ0KDQp2bmk0LmluZHMgPC0gd2hpY2godm5pNC5pbmZvLm1hdCA9PSBtaW4odm5pNC5pbmZvLm1hdFsxLF0pLCBhcnIuaW5kPVRSVUUpICNMYXkgY2hpIHNvIEFJQyBuaG8gbmhhdA0KDQptb2RlbC52bmk0IDwtIGNvbG5hbWVzKHZuaTQuaW5mby5tYXQpW3ZuaTQuaW5kc1ssMl1dDQoNCiNDaG8ga29zcGkNCg0Ka29zcGkxLm1vZGVsLmxpc3QgPC0gbGlzdChnYXJjaDExbiA9IGdhcmNoMTFfbm9yX2tvc3BpMSwgZ2FyY2gxMXQgPSBnYXJjaDExX3N0ZF9rb3NwaTEsIGdhcmNoMTFzdCA9IGdhcmNoMTFfc3N0ZF9rb3NwaTEsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDExZyA9IGdhcmNoMTFfZ2VkX2tvc3BpMSwgZ2FyY2gxMXNnID0gZ2FyY2gxMV9zZ2VkX2tvc3BpMSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMTJuID0gZ2FyY2gxMl9ub3Jfa29zcGkxLCBnYXJjaDEydCA9IGdhcmNoMTJfc3RkX2tvc3BpMSwgZ2FyY2gxMnN0ID0gZ2FyY2gxMl9zc3RkX2tvc3BpMSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMTJnID0gZ2FyY2gxMl9nZWRfa29zcGkxLCBnYXJjaDEyc2cgPSBnYXJjaDEyX3NnZWRfa29zcGkxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIxbiA9IGdhcmNoMjFfbm9yX2tvc3BpMSwgZ2FyY2gyMXQgPSBnYXJjaDIxX3N0ZF9rb3NwaTEsIGdhcmNoMjFzdCA9IGdhcmNoMjFfc3N0ZF9rb3NwaTEsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIxZyA9IGdhcmNoMjFfZ2VkX2tvc3BpMSwgZ2FyY2gyMXNnID0gZ2FyY2gyMV9zZ2VkX2tvc3BpMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMm4gPSBnYXJjaDIyX25vcl9rb3NwaTEsIGdhcmNoMjJ0ID0gZ2FyY2gyMl9zdGRfa29zcGkxLCBnYXJjaDIyc3QgPSBnYXJjaDIyX3NzdGRfa29zcGkxLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMmcgPSBnYXJjaDIyX2dlZF9rb3NwaTEsIGdhcmNoMjJzZyA9IGdhcmNoMjJfc2dlZF9rb3NwaTENCikNCg0Ka29zcGkxLmluZm8ubWF0IDwtIHNhcHBseShrb3NwaTEubW9kZWwubGlzdCwgaW5mb2NyaXRlcmlhKQ0KDQpyb3duYW1lcyhrb3NwaTEuaW5mby5tYXQpIDwtIHJvd25hbWVzKGluZm9jcml0ZXJpYShnYXJjaDExX25vcl9rb3NwaTEpKQ0KDQprb3NwaTEuaW5kcyA8LSB3aGljaChrb3NwaTEuaW5mby5tYXQgPT0gbWluKGtvc3BpMS5pbmZvLm1hdFsxLF0pLCBhcnIuaW5kPVRSVUUpICNMYXkgY2hpIHNvIEFJQyBuaG8gbmhhdA0KDQptb2RlbC5rb3NwaTEgPC0gY29sbmFtZXMoa29zcGkxLmluZm8ubWF0KVtrb3NwaTEuaW5kc1ssMl1dDQoNCmtvc3BpMi5tb2RlbC5saXN0IDwtIGxpc3QoZ2FyY2gxMW4gPSBnYXJjaDExX25vcl9rb3NwaTIsIGdhcmNoMTF0ID0gZ2FyY2gxMV9zdGRfa29zcGkyLCBnYXJjaDExc3QgPSBnYXJjaDExX3NzdGRfa29zcGkyLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMWcgPSBnYXJjaDExX2dlZF9rb3NwaTIsIGdhcmNoMTFzZyA9IGdhcmNoMTFfc2dlZF9rb3NwaTIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDEybiA9IGdhcmNoMTJfbm9yX2tvc3BpMiwgZ2FyY2gxMnQgPSBnYXJjaDEyX3N0ZF9rb3NwaTIsIGdhcmNoMTJzdCA9IGdhcmNoMTJfc3N0ZF9rb3NwaTIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDEyZyA9IGdhcmNoMTJfZ2VkX2tvc3BpMiwgZ2FyY2gxMnNnID0gZ2FyY2gxMl9zZ2VkX2tvc3BpMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMW4gPSBnYXJjaDIxX25vcl9rb3NwaTIsIGdhcmNoMjF0ID0gZ2FyY2gyMV9zdGRfa29zcGkyLCBnYXJjaDIxc3QgPSBnYXJjaDIxX3NzdGRfa29zcGkyLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMWcgPSBnYXJjaDIxX2dlZF9rb3NwaTIsIGdhcmNoMjFzZyA9IGdhcmNoMjFfc2dlZF9rb3NwaTIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjJuID0gZ2FyY2gyMl9ub3Jfa29zcGkyLCBnYXJjaDIydCA9IGdhcmNoMjJfc3RkX2tvc3BpMiwgZ2FyY2gyMnN0ID0gZ2FyY2gyMl9zc3RkX2tvc3BpMiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjJnID0gZ2FyY2gyMl9nZWRfa29zcGkyLCBnYXJjaDIyc2cgPSBnYXJjaDIyX3NnZWRfa29zcGkyDQopDQoNCmtvc3BpMi5pbmZvLm1hdCA8LSBzYXBwbHkoa29zcGkyLm1vZGVsLmxpc3QsIGluZm9jcml0ZXJpYSkNCg0Kcm93bmFtZXMoa29zcGkyLmluZm8ubWF0KSA8LSByb3duYW1lcyhpbmZvY3JpdGVyaWEoZ2FyY2gxMV9ub3Jfa29zcGkyKSkNCg0Ka29zcGkyLmluZHMgPC0gd2hpY2goa29zcGkyLmluZm8ubWF0ID09IG1pbihrb3NwaTIuaW5mby5tYXRbMSxdKSwgYXJyLmluZD1UUlVFKSAjTGF5IGNoaSBzbyBBSUMgbmhvIG5oYXQNCg0KbW9kZWwua29zcGkyIDwtIGNvbG5hbWVzKGtvc3BpMi5pbmZvLm1hdClba29zcGkyLmluZHNbLDJdXQ0KDQprb3NwaTMubW9kZWwubGlzdCA8LSBsaXN0KGdhcmNoMTFuID0gZ2FyY2gxMV9ub3Jfa29zcGkzLCBnYXJjaDExdCA9IGdhcmNoMTFfc3RkX2tvc3BpMywgZ2FyY2gxMXN0ID0gZ2FyY2gxMV9zc3RkX2tvc3BpMywgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMTFnID0gZ2FyY2gxMV9nZWRfa29zcGkzLCBnYXJjaDExc2cgPSBnYXJjaDExX3NnZWRfa29zcGkzLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMm4gPSBnYXJjaDEyX25vcl9rb3NwaTMsIGdhcmNoMTJ0ID0gZ2FyY2gxMl9zdGRfa29zcGkzLCBnYXJjaDEyc3QgPSBnYXJjaDEyX3NzdGRfa29zcGkzLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMmcgPSBnYXJjaDEyX2dlZF9rb3NwaTMsIGdhcmNoMTJzZyA9IGdhcmNoMTJfc2dlZF9rb3NwaTMsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjFuID0gZ2FyY2gyMV9ub3Jfa29zcGkzLCBnYXJjaDIxdCA9IGdhcmNoMjFfc3RkX2tvc3BpMywgZ2FyY2gyMXN0ID0gZ2FyY2gyMV9zc3RkX2tvc3BpMywgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjFnID0gZ2FyY2gyMV9nZWRfa29zcGkzLCBnYXJjaDIxc2cgPSBnYXJjaDIxX3NnZWRfa29zcGkzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIybiA9IGdhcmNoMjJfbm9yX2tvc3BpMywgZ2FyY2gyMnQgPSBnYXJjaDIyX3N0ZF9rb3NwaTMsIGdhcmNoMjJzdCA9IGdhcmNoMjJfc3N0ZF9rb3NwaTMsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBnYXJjaDIyZyA9IGdhcmNoMjJfZ2VkX2tvc3BpMywgZ2FyY2gyMnNnID0gZ2FyY2gyMl9zZ2VkX2tvc3BpMw0KKQ0KDQprb3NwaTMuaW5mby5tYXQgPC0gc2FwcGx5KGtvc3BpMy5tb2RlbC5saXN0LCBpbmZvY3JpdGVyaWEpDQoNCnJvd25hbWVzKGtvc3BpMy5pbmZvLm1hdCkgPC0gcm93bmFtZXMoaW5mb2NyaXRlcmlhKGdhcmNoMTFfbm9yX2tvc3BpMykpDQoNCmtvc3BpMy5pbmRzIDwtIHdoaWNoKGtvc3BpMy5pbmZvLm1hdCA9PSBtaW4oa29zcGkzLmluZm8ubWF0WzEsXSksIGFyci5pbmQ9VFJVRSkgI0xheSBjaGkgc28gQUlDIG5obyBuaGF0DQoNCm1vZGVsLmtvc3BpMyA8LSBjb2xuYW1lcyhrb3NwaTMuaW5mby5tYXQpW2tvc3BpMy5pbmRzWywyXV0NCg0Ka29zcGk0Lm1vZGVsLmxpc3QgPC0gbGlzdChnYXJjaDExdCA9IGdhcmNoMTFfc3RkX2tvc3BpNCwgZ2FyY2gxMXN0ID0gZ2FyY2gxMV9zc3RkX2tvc3BpNCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMTFnID0gZ2FyY2gxMV9nZWRfa29zcGk0LCBnYXJjaDExc2cgPSBnYXJjaDExX3NnZWRfa29zcGk0LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMm4gPSBnYXJjaDEyX25vcl9rb3NwaTQsIGdhcmNoMTJ0ID0gZ2FyY2gxMl9zdGRfa29zcGk0LCBnYXJjaDEyc3QgPSBnYXJjaDEyX3NzdGRfa29zcGk0LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gxMnNnID0gZ2FyY2gxMl9zZ2VkX2tvc3BpNCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMW4gPSBnYXJjaDIxX25vcl9rb3NwaTQsIGdhcmNoMjF0ID0gZ2FyY2gyMV9zdGRfa29zcGk0LCBnYXJjaDIxc3QgPSBnYXJjaDIxX3NzdGRfa29zcGk0LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyY2gyMWcgPSBnYXJjaDIxX2dlZF9rb3NwaTQsIGdhcmNoMjFzZyA9IGdhcmNoMjFfc2dlZF9rb3NwaTQsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjJuID0gZ2FyY2gyMl9ub3Jfa29zcGk0LCBnYXJjaDIydCA9IGdhcmNoMjJfc3RkX2tvc3BpNCwgZ2FyY2gyMnN0ID0gZ2FyY2gyMl9zc3RkX2tvc3BpNCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGdhcmNoMjJnID0gZ2FyY2gyMl9nZWRfa29zcGk0LCBnYXJjaDIyc2cgPSBnYXJjaDIyX3NnZWRfa29zcGk0DQopDQoNCmtvc3BpNC5pbmZvLm1hdCA8LSBzYXBwbHkoa29zcGk0Lm1vZGVsLmxpc3QsIGluZm9jcml0ZXJpYSkNCg0Kcm93bmFtZXMoa29zcGk0LmluZm8ubWF0KSA8LSByb3duYW1lcyhpbmZvY3JpdGVyaWEoZ2FyY2gxMV9zdGRfa29zcGk0KSkNCg0Ka29zcGk0LmluZHMgPC0gd2hpY2goa29zcGk0LmluZm8ubWF0ID09IG1pbihrb3NwaTQuaW5mby5tYXRbMSxdKSwgYXJyLmluZD1UUlVFKSAjTGF5IGNoaSBzbyBBSUMgbmhvIG5oYXQNCg0KbW9kZWwua29zcGk0IDwtIGNvbG5hbWVzKGtvc3BpNC5pbmZvLm1hdClba29zcGk0LmluZHNbLDJdXQ0KDQoNCiNUcsOsbmggYsOgeSBr4bq/dCBxdeG6ow0KbWFyX21vZGVsMSA8LSBkYXRhLmZyYW1lKA0KICByYXRlID0gYygiVk5JIiwgImtvc3BpIiksDQogIHRydW9jID0gYygiQVJNQSgyLDApLUdKUi1HQVJDSCgxLDEpLVNrZXdlZCBTdHVkZW50IHQiLCAiQVJNQSgwLDApLUdKUi1HQVJDSCgxLDEpLVN0dWRlbnQgdCIpLA0KICBjb3ZpZCA9IGMoIkFSTUEoMiwwKS1HSlItR0FSQ0goMiwyKS1Ta2V3ZWQgU3R1ZGVudCB0IiwgIkFSTUEoMCwyKS1HSlItR0FSQ0goMSwxKS1TdHVkZW50IHQiKSwNCiAgeHVuZ2RvdCA9IGMoIkFSTUEoMiwyKS1HSlItR0FSQ0goMSwxKS1Ta2V3ZWQgR2VkIiwgIkFSTUEoMiwyKS1HSlItR0FSQ0goMSwxKS1Ta2V3ZWQgU3R1ZGVudCB0IiksDQogIHNhdSA9IGMoIkFSTUEoMiwwKS1HSlItR0FSQ0goMiwyKS1Ta2V3ZWQgR2VkIiwgIkFSTUEoMSwwKS1HSlItR0FSQ0goMSwxKS1TdHVkZW50IHQiKSkNCg0KIyBSZW5kZXIgdGhlIHRhYmxlDQprYWJsZShtYXJfbW9kZWwxLCBjb2wubmFtZXMgPSBjKCJDaOG7iSBz4buRIiwgIkdpYWkgxJFv4bqhbiB0csaw4bubYyIsIkdpYW8gxJFv4bqhbiBDb3ZpZCIsIkdpYWkgxJFv4bqhbiB4dW5nIMSR4buZdCIsIkdpYWkgxJFv4bqhbiBzYXUiKSwgDQogICAgICBjYXB0aW9uID0gIkLhuqNuZyAxMTogTcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiB04buRaSDGsHUgY2hvIGPDoWMgZ2lhaSDEkW/huqFuIiwgZm9ybWF0ID0gInBhbmRvYyIsIA0KICAgICAgdGFibGUuYXR0ciA9ICJzdHlsZT0nd2lkdGg6MTAwJTsnIikgJT4lDQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIpKQ0KDQoNCmBgYA0KDQpE4buxYSB2w6BvIELhuqNuZyAxMSwgY8OzIHRo4buDIG5o4bqtbiB4w6l0IHLhurFuZyBjw6FjIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gdOG7kWkgxrB1IGNobyBjaOG7iSBz4buRIFZOSSB2w6AgS09TUEkgxJHDoyDEkcaw4bujYyDEkWnhu4F1IGNo4buJbmggcGjDuSBo4bujcCB24bubaSBjw6FjIGdpYWkgxJFv4bqhbiBraMOhYyBuaGF1IGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbi4gxJDhu5FpIHbhu5tpIGNo4buJIHPhu5EgVk5JLCB0cm9uZyBnaWFpIMSRb+G6oW4gdHLGsOG7m2MgY8O6IHPhu5FjLCBtw7QgaMOsbmggQVJNQSgyLDApLUdKUi1HQVJDSCgxLDEpLVNrZXdlZCBTdHVkZW50IHQgY2hvIHRo4bqleSBz4buxIHBow7kgaOG7o3AgdOG7kXQgduG7m2kgxJHhurdjIMSRaeG7g20gYmnhur9uIMSR4buZbmcgbMO6YyDEkcOzLiBLaGkgYsaw4bubYyB2w6BvIGdpYWkgxJFv4bqhbiBDb3ZpZCwgbcO0IGjDrG5oIEFSTUEoMiwwKS1HSlItR0FSQ0goMiwyKS1Ta2V3ZWQgU3R1ZGVudCB0IMSRxrDhu6NjIMOhcCBk4bulbmcsIHBo4bqjbiDDoW5oIHPhu7EgY+G6p24gdGhp4bq/dCBwaOG6o2kgxJFp4buBdSBjaOG7iW5oIGPhuqV1IHRyw7pjIEdBUkNIIMSR4buDIHBow7kgaOG7o3AgduG7m2kgYmnhur9uIMSR4buZbmcgY2FvIHRyb25nIHRo4budaSBr4buzIMSR4bqhaSBk4buLY2guIEdpYWkgxJFv4bqhbiB4dW5nIMSR4buZdCBjaOG7qW5nIGtp4bq/biBz4buxIHRoYXkgxJHhu5VpIHNhbmcgbcO0IGjDrG5oIEFSTUEoMiwyKS1HSlItR0FSQ0goMSwxKS1Ta2V3ZWQgR2VkLCBjaG8gdGjhuqV5IHZp4buHYyB0xINuZyBi4bqtYyBtw7QgaMOsbmggQVJNQSB2w6Agc+G7rSBk4bulbmcgcGjDom4gcGjhu5FpIFNrZXdlZCBHZWQgbMOgIGPhuqduIHRoaeG6v3QgxJHhu4MgbcO0IHThuqMgYmnhur9uIMSR4buZbmcgcGjhu6ljIHThuqFwIHRyb25nIGdpYWkgxJFv4bqhbiBuw6B5LiBDdeG7kWkgY8O5bmcsIHRyb25nIGdpYWkgxJFv4bqhbiBzYXUgY8O6IHPhu5FjLCBtw7QgaMOsbmggQVJNQSgyLDApLUdKUi1HQVJDSCgyLDIpLVNrZXdlZCBHZWQgdGnhur9wIHThu6VjIMSRxrDhu6NjIGR1eSB0csOsLCBjaG8gdGjhuqV5IHPhu7Eg4buVbiDEkeG7i25oIHRyb25nIGPDoWNoIG3DtCBow6xuaCBow7NhIGJp4bq/biDEkeG7mW5nIGjhuq11IGPDuiBz4buRYy4NCg0KxJDhu5FpIHbhu5tpIGNo4buJIHPhu5EgS09TUEksIG3DtCBow6xuaCBBUk1BKDAsMCktR0pSLUdBUkNIKDEsMSktU3R1ZGVudCB0IMSRxrDhu6NjIGNo4buNbiBjaG8gZ2lhaSDEkW/huqFuIHRyxrDhu5tjLCBwaMO5IGjhu6NwIHbhu5tpIGJp4bq/biDEkeG7mW5nIHRyb25nIHRo4budaSBr4buzIMSRw7MuIFRyb25nIGdpYWkgxJFv4bqhbiBDb3ZpZCwgbcO0IGjDrG5oIEFSTUEoMCwyKS1HSlItR0FSQ0goMSwxKS1TdHVkZW50IHQgcGjhuqNuIMOhbmggc+G7sSBj4bqnbiB0aGnhur90IGPhu6dhIHZp4buHYyDEkWnhu4F1IGNo4buJbmggYuG6rWMgbcO0IGjDrG5oIEFSTUEgxJHhu4MgcGjDuSBo4bujcCB24bubaSB0w6xuaCBow6xuaCBiaeG6v24gxJHhu5luZyBnaWEgdMSDbmcuIEdpYWkgxJFv4bqhbiB4dW5nIMSR4buZdCBjaOG7qW5nIGtp4bq/biBz4buxIGNodXnhu4NuIMSR4buVaSBzYW5nIG3DtCBow6xuaCBBUk1BKDIsMiktR0pSLUdBUkNIKDEsMSktU2tld2VkIFN0dWRlbnQgdCwgY2hvIHRo4bqleSBz4buxIGvhur90IGjhu6NwIGdp4buvYSBtw7QgaMOsbmggQVJNQSBjw7MgYuG6rWMgY2FvIGjGoW4gdsOgIHBow6JuIHBo4buRaSBTa2V3ZWQgU3R1ZGVudCB0IGzDoCBj4bqnbiB0aGnhur90IMSR4buDIG3DtCB04bqjIGJp4bq/biDEkeG7mW5nIHRyb25nIGdpYWkgxJFv4bqhbiBuw6B5LiBDdeG7kWkgY8O5bmcsIHRyb25nIGdpYWkgxJFv4bqhbiBzYXUgY8O6IHPhu5FjLCBtw7QgaMOsbmggQVJNQSgxLDApLUdKUi1HQVJDSCgxLDEpLVN0dWRlbnQgdCDEkcaw4bujYyBz4butIGThu6VuZyBs4bqhaSwgY2hvIHRo4bqleSBz4buxIHRy4bufIGzhuqFpIHbhu5tpIG3hu5l0IGPhuqV1IHRyw7pjIG3DtCBow6xuaCDEkcahbiBnaeG6o24gaMahbiDEkeG7gyBwaMO5IGjhu6NwIHbhu5tpIMSR4bq3YyDEkWnhu4NtIGJp4bq/biDEkeG7mW5nIGjhuq11IGPDuiBz4buRYy4gTmjhu69uZyDEkWnhu4F1IGNo4buJbmggbsOgeSBjaG8gdGjhuqV5IHPhu7EgbGluaCBob+G6oXQgdHJvbmcgdmnhu4djIGzhu7FhIGNo4buNbiBtw7QgaMOsbmggxJHhu4MgcGjhuqNuIMOhbmggY2jDrW5oIHjDoWMgY8OhYyDEkeG6t2MgxJFp4buDbSBiaeG6v24gxJHhu5luZyBj4bunYSB0aOG7iyB0csaw4budbmcgdHJvbmcgdOG7q25nIGdpYWkgxJFv4bqhbiBj4bulIHRo4buDLg0KDQpC4bqjbmcgZMaw4bubaSDEkcOieSBjdW5nIGPhuqVwIGPDoWMgdGjDtG5nIHPhu5EgxrDhu5tjIGzGsOG7o25nIHbDoCBjw6FjIGNo4buJIHPhu5EgxJHDoW5oIGdpw6EgaGnhu4d1IHF14bqjIGPhu6dhIHThu6tuZyBtw7QgaMOsbmggY29wdWxhLCBnacO6cCBsw6BtIHLDtSBz4buxIHRoYXkgxJHhu5VpIHRyb25nIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24gdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4gdHLGsOG7m2MgY8O6IHPhu5FjLCB0cm9uZyBnaWFpIMSRb+G6oW4gQ292aWQtMTksIHRyb25nIHRo4budaSBr4buzIHh1bmcgxJHhu5l0IE5nYS1Va3JhaW5lLCB2w6Agc2F1IGPDuiBz4buRYyA6DQoNCmBgYHtyfQ0KI0dpYWkgxJFv4bqhbiB0csaw4bubYw0Kdm5pLnJlczEgPC0gcmVzaWR1YWxzKGdhcmNoMTFfc3N0ZF92bmkxKS9zaWdtYShnYXJjaDExX3NzdGRfdm5pMSkgI3N0YW5kYXLEkSByZXNpZA0KDQphMSA8LSBmaXRkaXN0KGRpc3RyaWJ1dGlvbiA9ICJzc3RkIiwgdm5pLnJlczEsIGNvbnRyb2wgPSBsaXN0KCkpICNmaXQgZGlzdHJpYnV0aW9uIGZvciB0aGlzIHJlc2lkDQoNCnUxIDwtIHBkaXN0KGRpc3RyaWJ1dGlvbiA9ICJzc3RkIiwgcSA9IHZuaS5yZXMxLCBtdSA9IGExJHBhcnNbJ211J10gLCBzaWdtYSA9IGExJHBhcnNbJ3NpZ21hJ10sDQogICAgICAgICAgICBza2V3ID0gYTEkcGFyc1snc2tldyddLCBzaGFwZSA9IGExJHBhcnNbJ3NoYXBlJ10pICMgbWFrZSBwcm9iYWJpbGl0eSBpbnRlZ3JhdGlvbg0KDQojIG1ha2UgcHJvYmFiaWxpdHkgaW50ZWdyYXRpb24gZm9yIHJlc2lkdWFsIG9mIGtvc3BpDQoNCmtvc3BpLnJlczEgPC0gcmVzaWR1YWxzKGdhcmNoMTFfc3RkX2tvc3BpMSkvc2lnbWEoZ2FyY2gxMV9zdGRfa29zcGkxKSAjc3RhbmRhcsSRIHJlc2lkDQoNCmIxIDwtIGZpdGRpc3QoZGlzdHJpYnV0aW9uID0gInN0ZCIsIGtvc3BpLnJlczEsIGNvbnRyb2wgPSBsaXN0KCkpICNmaXQgZGlzdHJpYnV0aW9uIGZvciB0aGlzIHJlc2lkDQoNCnYxIDwtIHBkaXN0KGRpc3RyaWJ1dGlvbiA9ICJzdGQiLCBxID0ga29zcGkucmVzMSwgbXUgPSBiMSRwYXJzWydtdSddICwgc2lnbWEgPSBiMSRwYXJzWydzaWdtYSddLA0KICAgICAgICAgICAgc2tldyA9IGIxJHBhcnNbJ3NrZXcnXSwgc2hhcGUgPSBiMSRwYXJzWydzaGFwZSddKSAjIG1ha2UgcHJvYmFiaWxpdHkgaW50ZWdyYXRpb24NCg0KI0NvdmlkDQp2bmkucmVzMiA8LSByZXNpZHVhbHMoZ2FyY2gxMV9zc3RkX3ZuaTIpL3NpZ21hKGdhcmNoMTFfc3N0ZF92bmkyKSAjc3RhbmRhcsSRIHJlc2lkDQoNCmEyIDwtIGZpdGRpc3QoZGlzdHJpYnV0aW9uID0gInNzdGQiLCB2bmkucmVzMiwgY29udHJvbCA9IGxpc3QoKSkgI2ZpdCBkaXN0cmlidXRpb24gZm9yIHRoaXMgcmVzaWQNCg0KdTIgPC0gcGRpc3QoZGlzdHJpYnV0aW9uID0gInNzdGQiLCBxID0gdm5pLnJlczIsIG11ID0gYTIkcGFyc1snbXUnXSAsIHNpZ21hID0gYTIkcGFyc1snc2lnbWEnXSwNCiAgICAgICAgICAgIHNrZXcgPSBhMiRwYXJzWydza2V3J10sIHNoYXBlID0gYTIkcGFyc1snc2hhcGUnXSkgIyBtYWtlIHByb2JhYmlsaXR5IGludGVncmF0aW9uDQoNCiMgbWFrZSBwcm9iYWJpbGl0eSBpbnRlZ3JhdGlvbiBmb3IgcmVzaWR1YWwgb2Yga29zcGkNCg0Ka29zcGkucmVzMiA8LSByZXNpZHVhbHMoZ2FyY2gxMV9zdGRfa29zcGkyKS9zaWdtYShnYXJjaDExX3N0ZF9rb3NwaTIpICNzdGFuZGFyxJEgcmVzaWQNCg0KYjIgPC0gZml0ZGlzdChkaXN0cmlidXRpb24gPSAic3RkIiwga29zcGkucmVzMiwgY29udHJvbCA9IGxpc3QoKSkgI2ZpdCBkaXN0cmlidXRpb24gZm9yIHRoaXMgcmVzaWQNCg0KdjIgPC0gcGRpc3QoZGlzdHJpYnV0aW9uID0gInN0ZCIsIHEgPSBrb3NwaS5yZXMyLCBtdSA9IGIyJHBhcnNbJ211J10gLCBzaWdtYSA9IGIyJHBhcnNbJ3NpZ21hJ10sDQogICAgICAgICAgICBza2V3ID0gYjIkcGFyc1snc2tldyddLCBzaGFwZSA9IGIyJHBhcnNbJ3NoYXBlJ10pICMgbWFrZSBwcm9iYWJpbGl0eSBpbnRlZ3JhdGlvbg0KDQojWHVuZyDEkeG7mXQNCnZuaS5yZXMzIDwtIHJlc2lkdWFscyhnYXJjaDExX3NnZWRfdm5pMykvc2lnbWEoZ2FyY2gxMV9zZ2VkX3ZuaTMpICNzdGFuZGFyxJEgcmVzaWQNCg0KYTMgPC0gZml0ZGlzdChkaXN0cmlidXRpb24gPSAic2dlZCIsIHZuaS5yZXMzLCBjb250cm9sID0gbGlzdCgpKSAjZml0IGRpc3RyaWJ1dGlvbiBmb3IgdGhpcyByZXNpZA0KDQp1MyA8LSBwZGlzdChkaXN0cmlidXRpb24gPSAic2dlZCIsIHEgPSB2bmkucmVzMywgbXUgPSBhMyRwYXJzWydtdSddICwgc2lnbWEgPSBhMyRwYXJzWydzaWdtYSddLA0KICAgICAgICAgICAgc2tldyA9IGEzJHBhcnNbJ3NrZXcnXSwgc2hhcGUgPSBhMyRwYXJzWydzaGFwZSddKSAjIG1ha2UgcHJvYmFiaWxpdHkgaW50ZWdyYXRpb24NCg0KIyBtYWtlIHByb2JhYmlsaXR5IGludGVncmF0aW9uIGZvciByZXNpZHVhbCBvZiBrb3NwaQ0KDQprb3NwaS5yZXMzIDwtIHJlc2lkdWFscyhnYXJjaDExX3NzdGRfa29zcGkzKS9zaWdtYShnYXJjaDExX3NzdGRfa29zcGkzKSAjc3RhbmRhcsSRIHJlc2lkDQoNCmIzIDwtIGZpdGRpc3QoZGlzdHJpYnV0aW9uID0gInNzdGQiLCBrb3NwaS5yZXMzLCBjb250cm9sID0gbGlzdCgpKSAjZml0IGRpc3RyaWJ1dGlvbiBmb3IgdGhpcyByZXNpZA0KDQp2MyA8LSBwZGlzdChkaXN0cmlidXRpb24gPSAic3N0ZCIsIHEgPSBrb3NwaS5yZXMzLCBtdSA9IGIzJHBhcnNbJ211J10gLCBzaWdtYSA9IGIzJHBhcnNbJ3NpZ21hJ10sDQogICAgICAgICAgICBza2V3ID0gYjMkcGFyc1snc2tldyddLCBzaGFwZSA9IGIzJHBhcnNbJ3NoYXBlJ10pICMgbWFrZSBwcm9iYWJpbGl0eSBpbnRlZ3JhdGlvbg0KDQojU2F1DQp2bmkucmVzNCA8LSByZXNpZHVhbHMoZ2FyY2gxMV9zZ2VkX3ZuaTQpL3NpZ21hKGdhcmNoMTFfc2dlZF92bmk0KSAjc3RhbmRhcsSRIHJlc2lkDQoNCmE0IDwtIGZpdGRpc3QoZGlzdHJpYnV0aW9uID0gInNnZWQiLCB2bmkucmVzNCwgY29udHJvbCA9IGxpc3QoKSkgI2ZpdCBkaXN0cmlidXRpb24gZm9yIHRoaXMgcmVzaWQNCg0KdTQgPC0gcGRpc3QoZGlzdHJpYnV0aW9uID0gInNnZWQiLCBxID0gdm5pLnJlczQsIG11ID0gYTQkcGFyc1snbXUnXSAsIHNpZ21hID0gYTQkcGFyc1snc2lnbWEnXSwNCiAgICAgICAgICAgIHNrZXcgPSBhNCRwYXJzWydza2V3J10sIHNoYXBlID0gYTQkcGFyc1snc2hhcGUnXSkgIyBtYWtlIHByb2JhYmlsaXR5IGludGVncmF0aW9uDQoNCiMgbWFrZSBwcm9iYWJpbGl0eSBpbnRlZ3JhdGlvbiBmb3IgcmVzaWR1YWwgb2Yga29zcGkNCg0Ka29zcGkucmVzNCA8LSByZXNpZHVhbHMoZ2FyY2gxMV9zdGRfa29zcGk0KS9zaWdtYShnYXJjaDExX3N0ZF9rb3NwaTQpICNzdGFuZGFyxJEgcmVzaWQNCg0KYjQgPC0gZml0ZGlzdChkaXN0cmlidXRpb24gPSAic3RkIiwga29zcGkucmVzNCwgY29udHJvbCA9IGxpc3QoKSkgI2ZpdCBkaXN0cmlidXRpb24gZm9yIHRoaXMgcmVzaWQNCg0KdjQgPC0gcGRpc3QoZGlzdHJpYnV0aW9uID0gInN0ZCIsIHEgPSBrb3NwaS5yZXM0LCBtdSA9IGI0JHBhcnNbJ211J10gLCBzaWdtYSA9IGI0JHBhcnNbJ3NpZ21hJ10sDQogICAgICAgICAgICBza2V3ID0gYjQkcGFyc1snc2tldyddLCBzaGFwZSA9IGI0JHBhcnNbJ3NoYXBlJ10pICMgbWFrZSBwcm9iYWJpbGl0eSBpbnRlZ3JhdGlvbg0KDQpjb3AxIDwtIEJpQ29wU2VsZWN0KHUxLHYxLHNlbGVjdGlvbmNyaXQgPSAiQUlDIixtZXRob2QgPSAibWxlIikNCmNvcDIgPC0gQmlDb3BTZWxlY3QodTIsdjIsc2VsZWN0aW9uY3JpdCA9ICJBSUMiLG1ldGhvZCA9ICJtbGUiKQ0KY29wMyA8LSBCaUNvcFNlbGVjdCh1Myx2MyxzZWxlY3Rpb25jcml0ID0gIkFJQyIsbWV0aG9kID0gIm1sZSIpDQpjb3A0IDwtIEJpQ29wU2VsZWN0KHU0LHY0LHNlbGVjdGlvbmNyaXQgPSAiQUlDIixtZXRob2QgPSAibWxlIikNCiNlc3QNCmVzdF9jb3AxIDwtIEJpQ29wRXN0KHUxLHYxLGZhbWlseSA9IGNvcDEkZmFtaWx5LG1ldGhvZCA9ICJtbGUiLG1heC5kZiA9IDMwKQ0KZXN0X2NvcDIgPC0gQmlDb3BFc3QodTIsdjIsZmFtaWx5ID0gY29wMiRmYW1pbHksbWV0aG9kID0gIm1sZSIsbWF4LmRmID0gMzApDQplc3RfY29wMyA8LSBCaUNvcEVzdCh1Myx2MyxmYW1pbHkgPSBjb3AzJGZhbWlseSxtZXRob2QgPSAibWxlIixtYXguZGYgPSAzMCkNCmVzdF9jb3A0IDwtIEJpQ29wRXN0KHU0LHY0LGZhbWlseSA9IGNvcDQkZmFtaWx5LG1ldGhvZCA9ICJtbGUiLG1heC5kZiA9IDMwKQ0KI1Ryw6xuaCBiw6B5IGvhur90IHF14bqjDQoNCmVzdDEgPC0gZGF0YS5mcmFtZShtcWggPSBjKCdHaWFpIMSRb+G6oW4gdHLGsOG7m2MnICwnR2lhaSDEkW/huqFuIENvdmlkJywnWHVuZyDEkeG7mXQgTmdhLVVrcmFpbmUnLCdHaWFpIMSRb+G6oW4gc2F1JyksDQogICAgICAgICAgICAgICAgICAgQ29wdWxhID0gYygnQkI3JywgJ1N1cnZpdmFsIEJCNycsICdDbGF5dG9uJywnR2F1c3MnKSwNCiAgICAgICAgICAgICAgICAgICBUaGFtc28gPSBjKGVzdF9jb3AxJHBhciwgZXN0X2NvcDIkcGFyLCBlc3RfY29wMyRwYXIsIGVzdF9jb3A0JHBhciksDQogICAgICAgICAgICAgICAgICAgVGhhbXNvMiA9IGMoZXN0X2NvcDEkcGFyMiwgZXN0X2NvcDIkcGFyMiwgZXN0X2NvcDMkcGFyMiwgZXN0X2NvcDQkcGFyMiksDQogICAgICAgICAgICAgICAgICAgZHVvaSA9IGMoZXN0X2NvcDEkdGF1LCBlc3RfY29wMiR0YXUsIGVzdF9jb3AzJHRhdSwgZXN0X2NvcDQkdGF1KSwNCiAgICAgICAgICAgICAgICAgICBkdW9pZHVvaSA9IGMoZXN0X2NvcDEkdGFpbGRlcCRsb3dlciwgZXN0X2NvcDIkdGFpbGRlcCRsb3dlciwgZXN0X2NvcDMkdGFpbGRlcCRsb3dlciwgZXN0X2NvcDQkdGFpbGRlcCRsb3dlciksDQogICAgICAgICAgICAgICAgICAgZHVvaXRyZW4gPSBjKGVzdF9jb3AxJHRhaWxkZXAkdXBwZXIsIGVzdF9jb3AyJHRhaWxkZXAkdXBwZXIsIGVzdF9jb3AzJHRhaWxkZXAkdXBwZXIsIGVzdF9jb3A0JHRhaWxkZXAkdXBwZXIpLA0KICAgICAgICAgICAgICAgICAgIGFpYyA9IGMoZXN0X2NvcDEkQUlDLCBlc3RfY29wMiRBSUMsIGVzdF9jb3AzJEFJQywgZXN0X2NvcDQkQUlDKSwNCiAgICAgICAgICAgICAgICAgICBiaWMgPSBjKGVzdF9jb3AxJEJJQywgZXN0X2NvcDIkQklDLCBlc3RfY29wMyRCSUMsIGVzdF9jb3A0JEJJQykpDQoNCmthYmxlKGVzdDEsIA0KICAgICAgY2FwdGlvbiA9ICJC4bqjbmcgMTI6IEvhur90IHF14bqjIMaw4bubYyBsxrDhu6NuZyBDb3B1bGEgY+G7p2EgVFNMTiBWTkkgdsOgIGtvc3BpIHThu6tuZyBnaWFpIMSRb+G6oW4iLCANCiAgICAgIGNvbC5uYW1lcyA9IGMoIkNo4buJIHPhu5EiLCJDb3B1bGEiLCAiUGFyIiwiUGFyMiIsICJI4buHIHPhu5EgS2VuZGFsbCIsIsSQdcO0aSBkxrDhu5tpIiwixJB1w7RpIHRyw6puIiwiQUlDIiwiQklDIiksIA0KICAgICAgZm9ybWF0ID0gJ3BhbmRvYycpICU+JSANCiAga2FibGVfc3R5bGluZygNCiAgICBib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiksIA0KICAgIGZ1bGxfd2lkdGggPSBGKQ0KDQpgYGANCg0KROG7sWEgdsOgbyBC4bqjbmcgMTIsIGPDsyB0aOG7gyBuaOG6rW4geMOpdCBy4bqxbmcgdmnhu4djIMaw4bubYyBsxrDhu6NuZyBjw6FjIG3DtCBow6xuaCBjb3B1bGEgY2hvIGNo4buJIHPhu5EgVk5JIHbDoCBLT1NQSSBxdWEgY8OhYyBnaWFpIMSRb+G6oW4ga2jDoWMgbmhhdSBj4bunYSB0aOG7iyB0csaw4budbmcgxJHDoyBwaOG6o24gw6FuaCBz4buxIMSRaeG7gXUgY2jhu4luaCBj4bqnbiB0aGnhur90IMSR4buDIHBow7kgaOG7o3AgduG7m2kgxJHhurdjIMSRaeG7g20gYmnhur9uIMSR4buZbmcgY+G7pSB0aOG7gyBj4bunYSB04burbmcgdGjhu51pIGvhu7MuDQoNClRyb25nIGdpYWkgxJFv4bqhbiB0csaw4bubYyBjw7ogc+G7kWMsIGNvcHVsYSBCQjcgduG7m2kgY8OhYyB0aGFtIHPhu5EgbMOgIDAuMTQ0OTY5MCB2w6AgMS4xNDQxMzkgY2hvIHRo4bqleSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBjw6FjIGJp4bq/biB0cm9uZyBnaWFpIMSRb+G6oW4gbsOgeSBsw6Aga2jDoSB54bq/dSB24bubaSBo4buHIHPhu5EgS2VuZGFsbCDEkeG6oXQgMC4xODUwNTEzLiBDw6FjIGdpw6EgdHLhu4sgY+G7p2EgxJF1w7RpIGTGsOG7m2kgdsOgIMSRdcO0aSB0csOqbiBs4bqnbiBsxrDhu6N0IGzDoCAwLjE2NzIzNzUgdsOgIDAuMDE1MzEzOSwgY2hvIHRo4bqleSBz4buxIHBow6JuIHBo4buRaSBj4bunYSBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3Ug4bufIGhhaSDEkXXDtGkgY+G7p2EgcGjDom4gcGjhu5FpIGzDoCBraMO0bmcgY8OibiBi4bqxbmcuIEFJQyB2w6AgQklDIGPhu6dhIG3DtCBow6xuaCBsw6AgLTQzLjY0MDM2IHbDoCAtMzUuMzk1MzcsIGNo4buJIHJhIHLhurFuZyBtw7QgaMOsbmggbsOgeSDEkcOjIHBow7kgaOG7o3Aga2jDoSB04buRdCB24bubaSBk4buvIGxp4buHdSB0cm9uZyBnaWFpIMSRb+G6oW4gbsOgeS4NCg0KVHJvbmcgZ2lhaSDEkW/huqFuIENvdmlkLTE5LCBjb3B1bGEgU3Vydml2YWwgQkI3IHbhu5tpIHRoYW0gc+G7kSAwLjE5NjYzODAgdsOgIDEuMDg5NjE3IGNobyB0aOG6pXkgaOG7hyBz4buRIEtlbmRhbGwgZ2nhuqNtIHh14buRbmcgMC4xNjQ0MDE0LCBwaOG6o24gw6FuaCBz4buxIHRoYXkgxJHhu5VpIHRyb25nIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24gdHJvbmcgdGjhu51pIGvhu7MgZOG7i2NoIGLhu4duaC4gxJB1w7RpIGTGsOG7m2kgdsOgIMSRdcO0aSB0csOqbiBs4bqnbiBsxrDhu6N0IGzDoCAwLjAzOTM1NzMgdsOgIDAuMTEwODI4MywgY2hvIHRo4bqleSBjw7Mgc+G7sSBraMO0bmcgY8OibiBi4bqxbmcgcsO1IHLhu4d0IGjGoW4gdHJvbmcgcGjDom4gcGjhu5FpIGPhu6dhIGPDoWMgxJFp4buDbSBk4buvIGxp4buHdSDhu58gaGFpIMSRdcO0aSBj4bunYSBwaMOibiBwaOG7kWkuIE3DtCBow6xuaCBuw6B5IGPDsyBBSUMgdsOgIEJJQyBs4bqnbiBsxrDhu6N0IGzDoCAtMzYuNjMxNDUgdsOgIC0yOC4yNzE0MiwgY2hvIHRo4bqleSBz4buxIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIHbhu5tpIGThu68gbGnhu4d1IHRyb25nIGdpYWkgxJFv4bqhbiBDb3ZpZC0xOS4NCg0KVHJvbmcgZ2lhaSDEkW/huqFuIHh1bmcgxJHhu5l0IE5nYS1Va3JhaW5lLCBjb3B1bGEgQ2xheXRvbiB24bubaSB0aGFtIHPhu5EgMS4yMDQ1MjUzIHbDoCBo4buHIHPhu5EgS2VuZGFsbCDEkeG6oXQgMC4xNjk3OTc0IGNobyB0aOG6pXkgbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24gdHJvbmcgZ2lhaSDEkW/huqFuIG7DoHkgY8OzIHh1IGjGsOG7m25nIG3huqFuaCBt4bq9IGjGoW4sIHbhu5tpIGdpw6EgdHLhu4sgxJF1w7RpIGTGsOG7m2kgdsOgIMSRdcO0aSB0csOqbiBsw6AgMC4yMjIwNjUwIHbDoCAwLjAwMDAwMDAsIGNobyB0aOG6pXkgc+G7sSB04bqtcCB0cnVuZyBuaGnhu4F1IGjGoW4g4bufIMSRdcO0aSBkxrDhu5tpIGPhu6dhIHBow6JuIHBo4buRaS4gQUlDIHbDoCBCSUMgbOG6p24gbMaw4bujdCBsw6AgLTE5LjA0NDYzIHbDoCAtMTUuNTc2NTcsIGNo4buJIHJhIHLhurFuZyBtw7QgaMOsbmggQ2xheXRvbiBjw7MgcGjhuqduIGvDqW0gaMahbiB0cm9uZyB2aeG7h2MgcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdSB0cm9uZyBnaWFpIMSRb+G6oW4geHVuZyDEkeG7mXQuDQoNCkN14buRaSBjw7luZywgdHJvbmcgZ2lhaSDEkW/huqFuIHNhdSBjw7ogc+G7kWMsIGNvcHVsYSBHYXVzcyB24bubaSB0aGFtIHPhu5EgMC4yODM2MzM2IHbDoCBo4buHIHPhu5EgS2VuZGFsbCDEkeG6oXQgMC4xODMwNzk5IGNobyB0aOG6pXkgbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24gbMOgIGtow6EgxJHhu5NuZyBuaOG6pXQsIHbhu5tpIGPDoWMgZ2nDoSB0cuG7iyDEkXXDtGkgZMaw4bubaSB2w6AgxJF1w7RpIHRyw6puIMSR4buBdSBi4bqxbmcgMCwgY2hvIHRo4bqleSBraMO0bmcgY8OzIHPhu7EgcGjDom4gYuG7kSByw7UgcsOgbmcg4bufIGPDoWMgxJF1w7RpIGPhu6dhIHBow6JuIHBo4buRaS4gQUlDIHbDoCBCSUMgY+G7p2EgbcO0IGjDrG5oIGzDoCAtMjYuMzY3MDUgdsOgIC0yMi41NDEwNSwgY2hvIHRo4bqleSBtw7QgaMOsbmggR2F1c3MgxJHDoyBj4bqjaSB0aGnhu4duIHPhu7EgcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdSB0cm9uZyBnaWFpIMSRb+G6oW4gaOG6rXUgY8O6IHPhu5FjLg0KDQpOaOG7r25nIGvhur90IHF14bqjIG7DoHkgY2hvIHRo4bqleSBz4buxIHRoYXkgxJHhu5VpIHRyb25nIGPDoWMgbG/huqFpIGNvcHVsYSB2w6AgdGhhbSBz4buRIGPhu6dhIGNow7puZyBsw6AgY+G6p24gdGhp4bq/dCDEkeG7gyBwaOG6o24gw6FuaCBjaMOtbmggeMOhYyBz4buxIGJp4bq/biDEkeG7mW5nIGPhu6dhIGPDoWMgY2jhu4kgc+G7kSBWTkkgdsOgIEtPU1BJIHF1YSB04burbmcgZ2lhaSDEkW/huqFuIGtow6FjIG5oYXUsIHThu6sgxJHDsyBjdW5nIGPhuqVwIGPDoWkgbmjDrG4gc8OidSBz4bqvYyBoxqFuIHbhu4EgY8OhYyDEkeG6t2MgxJFp4buDbSBsacOqbiBr4bq/dCBj4bunYSBjw6FjIGJp4bq/biB0cm9uZyB04burbmcgdGjhu51pIGvhu7MuDQoNCsSQ4buDIGjDrG5oIGR1bmcgxJHGsOG7o2MgcsO1IGjGoW4gdGEgdGnhur9uIGjDoG5oIHRy4buxYyBxdWFuIGjDs2EgY2jhu6luZyBuaMawIHNhdSA6DQoNCmBgYHtyfQ0KbGlicmFyeShncmlkKQ0KbGlicmFyeShwbmcpDQpzZXQuc2VlZCgxMjMpDQojIEdp4bqjIHPhu60gZXN0X2NvcDEgbMOgIG3hu5l0IGRhbmggc8OhY2ggduG7m2kgY8OhYyB0aGFtIHPhu5EgxJHDoyDGsOG7m2MgbMaw4bujbmcNCmVzdF9jb3AxIDwtIGxpc3QocGFyID0gMS41LCBwYXIyID0gMC43KQ0KDQojIFThuqFvIMSR4buRaSB0xrDhu6NuZyBCQjdDb3B1bGENCmxpYnJhcnkoVkMyY29wdWxhKQ0KY29wXzEgPC0gVkMyY29wdWxhOjpCQjdDb3B1bGEocGFyYW0gPSBjKGVzdF9jb3AxJHBhciwgZXN0X2NvcDEkcGFyMikpDQoNCiMgVuG6vSDEkeG7kyB0aOG7iyAzRCBj4bunYSBjb3B1bGENCnBlcjEgPC0gcGVyc3BfcGxvdChjb3BfMSwgJ2NvcDEucG5nJywgJyNGRkNDRkYnKQ0KDQplc3RfY29wMiA8LSBsaXN0KHBhciA9IDEuNSwgcGFyMiA9IDAuNykNCg0KIyBU4bqhbyDEkeG7kWkgdMaw4bujbmcgc3VyQkI3Q29wdWxhDQpjb3BfMiA8LSBWQzJjb3B1bGE6OnN1ckJCN0NvcHVsYShjKGVzdF9jb3AyJHBhciwgZXN0X2NvcDIkcGFyMikpDQoNCiMgVuG6vSDEkeG7kyB0aOG7iyAzRCBj4bunYSBjb3B1bGENCnBlcjIgPC0gcGVyc3BfcGxvdChjb3BfMiwgJ2NvcDIucG5nJywgJyM4MDgwMDAnKQ0KDQojTcO0IHBo4buPbmcgY29wdWxhIGNobyBnaWFpIMSRb+G6oW4geHVuZyDEkeG7mXQNCmNvcF8zIDwtIGNsYXl0b25Db3B1bGEoZXN0X2NvcDMkcGFyLCBkaW0gPSAyKQ0KcGVyMyA8LSBwZXJzcF9wbG90KGNvcF8zLCAnY29wMy5wbmcnLCAnIzAwMDA4MCcpDQojTcO0IHBo4buPbmcgQ29wdWxhIGNobyBnaWFpIMSRb+G6oW4gc2F1DQpjb3BfNCA8LSBub3JtYWxDb3B1bGEoZXN0X2NvcDQkcGFyLCBkaW0gPSAyKQ0KcGVyNCA8LSBwZXJzcF9wbG90KGNvcF80LCAnY29wNC5wbmcnLCAnIzAwODA4MCcpDQoNCmxlZ2VuZCA8LSBsZWdlbmRHcm9iKA0KICBsYWJlbHMgPSBjKCJUcsaw4bubYyAtIEJCNyIsICJDb3ZpZCAtIFN1ciBCQjciLCJYdW5nIMSR4buZdCAtIENsYXl0b24iLCAiU2F1IC0gR2F1c3MiKSwgcGNoID0gMTUsDQogIGdwID0gZ3Bhcihjb2wgPSBjKCcjRkZDQ0ZGJywgJyM4MDgwMDAnLCAnIzAwMDA4MCcsJyMwMDgwODAnKSwgZmlsbCA9IGMoJyNGRkNDRkYnLCAnIzgwODAwMCcsICcjMDAwMDgwJywnIzAwODA4MCcpKQ0KKQ0KDQpsaWJyYXJ5KGdyaWRFeHRyYSkNCmdyaWQuYXJyYW5nZSggcGVyMSwgcGVyMiwgcGVyMyxwZXI0LCBsZWdlbmQsIG5jb2wgPSAzLCANCiAgICAgICAgICAgICAgbGF5b3V0X21hdHJpeCA9IHJiaW5kKGMoMSwgMiwgNSksIGMoMyw0LDUpKSwNCiAgICAgICAgICAgICAgd2lkdGhzID0gYygyLCAyLCAxKSwgDQogICAgICAgICAgICAgIHRvcCA9IHRleHRHcm9iKCJIw6xuaCAxNDogUGjhu5FpIGPhuqNuaCBQREYgY+G7p2EgQ29wdWxhIGPDoWMgZ2lhaSDEkW/huqFuIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihmb250c2l6ZSA9IDE1LCBmb250ID0gMikpDQopDQoNCg0KYGBgDQoNCkjDrG5oIDE0IGN1bmcgY+G6pXAgbeG7mXQgY8OhaSBuaMOsbiB0cuG7sWMgcXVhbiB24buBIHPhu7EgdGhheSDEkeG7lWkgY+G7p2EgbeG7kWkgcXVhbiBo4buHIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4gcXVhIGPDoWMgZ2lhaSDEkW/huqFuIGtow6FjIG5oYXUsIHbhu5tpIHZp4buHYyBz4butIGThu6VuZyBjw6FjIGjDoG0gbeG6rXQgxJHhu5kgeMOhYyBzdeG6pXQgKFBERikgY+G7p2EgY8OhYyBjb3B1bGEga2jDoWMgbmhhdS4gU+G7sSDEkWEgZOG6oW5nIGPhu6dhIGPDoWMgbG/huqFpIGNvcHVsYSDEkcaw4bujYyB0aOG7gyBoaeG7h24gcsO1IHLDoG5nIHRyb25nIGjDrG5oIOG6o25oLCBjaG8gdGjhuqV5IGto4bqjIG7Eg25nIGxpbmggaG/huqF0IGPhu6dhIGNvcHVsYSB0cm9uZyB2aeG7h2MgbcO0IGjDrG5oIGjDs2EgY8OhYyBraeG7g3UgcGjhu6UgdGh14buZYyBwaOG7qWMgdOG6oXAgZ2nhu69hIGPDoWMgYmnhur9uIG5n4bqrdSBuaGnDqm4uIMSQaeG7gXUgbsOgeSBjaG8gcGjDqXAgY2jDum5nIHRhIG7huq9tIGLhuq90IHPhu7EgxJFhIGThuqFuZyBj4bunYSBjw6FjIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIG3DoCBjw6FjIG3DtCBow6xuaCB0cnV54buBbiB0aOG7kW5nIGPDsyB0aOG7gyBraMO0bmcgdGjhu4MgaGnhu4duIMSR4bqneSDEkeG7py4NCg0KU+G7sSB0aGF5IMSR4buVaSBow6xuaCBk4bqhbmcgY+G7p2EgY8OhYyBQREYgY29wdWxhIHF1YSBjw6FjIGdpYWkgxJFv4bqhbiBsw6AgbeG7mXQgxJFp4buDbSBuaOG6pW4gcXVhbiB0cuG7jW5nLiBIw6xuaCBk4bqhbmcgY+G7p2EgY8OhYyBow6BtIG3huq10IMSR4buZIHjDoWMgc3XhuqV0IG7DoHkgdGhheSDEkeG7lWkgxJHDoW5nIGvhu4MgZ2nhu69hIGPDoWMgZ2lhaSDEkW/huqFuLCBjaG8gdGjhuqV5IG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puIMSRw6MgdHLhuqNpIHF1YSBuaOG7r25nIGJp4bq/biDEkeG7mW5nIHLDtSBy4buHdCB0aGVvIHRo4budaSBnaWFuLiDEkGnhu4F1IG7DoHkgY3VuZyBj4bqlcCBt4buZdCBjw6FpIG5ow6xuIHPDonUgc+G6r2MgduG7gSBjw6FjaCBtw6AgY8OhYyB54bq/dSB04buRIGtpbmggdOG6vyB2w6Agc+G7sSBraeG7h24gxJHhurdjIGJp4buHdCDEkcOjIOG6o25oIGjGsOG7n25nIMSR4bq/biBz4buxIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgYmnhur9uLg0KDQpWaeG7h2Mgc+G7rSBk4bulbmcgbcOgdSBz4bqvYyBraMOhYyBuaGF1IHbDoCBuaMOjbiBnaWFpIMSRb+G6oW4gdHJvbmcgYmnhu4N1IMSR4buTIGdpw7pwIGThu4UgZMOgbmcgbmjhuq1uIGRp4buHbiB2w6Agc28gc8Ohbmggc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIGPDoWMgZ2lhaSDEkW/huqFuLiBN4buXaSBiaeG7g3UgxJHhu5MgM0QgxJHhuqFpIGRp4buHbiBjaG8gbeG7mXQgZ2lhaSDEkW/huqFuIGPhu6UgdGjhu4MgdsOgIHPhu60gZOG7pW5nIG3hu5l0IGxv4bqhaSBjb3B1bGEga2jDoWMgbmhhdSwgdOG7qyDEkcOzIGNobyBwaMOpcCBuZ8aw4budaSBkw7luZyBk4buFIGTDoG5nIHRoZW8gZMO1aSBz4buxIHRoYXkgxJHhu5VpIHRyb25nIGPDoWMgbeG7kWkgcXVhbiBo4buHIHBo4bulIHRodeG7mWMgcXVhIHRo4budaSBnaWFuLg0KDQrEkOG6t2MgYmnhu4d0LCBz4buxIHBow6JuIGJp4buHdCBnaeG7r2EgY8OhYyBjb3B1bGEgY8OzIHTDrW5oIMSR4buRaSB44bupbmcgdsOgIGtow7RuZyDEkeG7kWkgeOG7qW5nIGzDoCBt4buZdCDEkWnhu4NtIHF1YW4gdHLhu41uZy4gTeG7mXQgc+G7kSBjb3B1bGEsIG5oxrAgR2F1c3NpYW4sIGPDsyBow6xuaCBk4bqhbmcgxJHhu5FpIHjhu6luZywgdHJvbmcga2hpIGPDoWMgY29wdWxhIGtow6FjLCBuaMawIENsYXl0b24sIGzhuqFpIGtow7RuZyDEkeG7kWkgeOG7qW5nLiDEkGnhu4F1IG7DoHkgcGjhuqNuIMOhbmggY8OhYyBraeG7g3UgcGjhu6UgdGh14buZYyBraMOhYyBuaGF1IGdp4buvYSBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puLCBjdW5nIGPhuqVwIHRow6ptIHRow7RuZyB0aW4gduG7gSBjw6FjaCBtw6AgY8OhYyBiaeG6v24gdMawxqFuZyB0w6FjIHbhu5tpIG5oYXUgdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4ga2jDoWMgbmhhdS4NCg0KQ3Xhu5FpIGPDuW5nLCB2aeG7h2MgcXVhbiBzw6F0IGPDoWMgdsO5bmcgY8OzIG3DoHUgxJHhuq1tIGjGoW4gdHJvbmcgYmnhu4N1IMSR4buTIGdpw7pwIHjDoWMgxJHhu4tuaCBjw6FjIGtodSB24buxYyBtw6AgeMOhYyBzdeG6pXQgeOG6o3kgcmEgY2FvIGjGoW4sIHThu6sgxJHDsyBuaOG6rW4gZGnhu4duIGPDoWMgZ2nDoSB0cuG7iyBj4bunYSBiaeG6v24gbmfhuqt1IG5oacOqbiBjw7Mga2jhuqMgbsSDbmcgeOG6o3kgcmEgY8O5bmcgbmhhdS4gxJBp4buBdSBuw6B5IGtow7RuZyBjaOG7iSBnacO6cCBoaeG7g3UgcsO1IGjGoW4gduG7gSBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBtw6AgY8OybiBjdW5nIGPhuqVwIHRow7RuZyB0aW4gcXXDvSBnacOhIGNobyB2aeG7h2MgZOG7sSDEkW/DoW4gdsOgIHBow6JuIHTDrWNoIGPDoWMgaGnhu4duIHTGsOG7o25nIGtpbmggdOG6vyBwaOG7qWMgdOG6oXAuDQoNCiMgKipDSMavxqBORyA1IEvhur5UIExV4bqsTiBWw4AgSMOATSDDnSBDSMONTkggU8OBQ0gqKg0KDQojIyA1LjEgS+G6vlQgTFXhuqxODQoNCkvhur90IHF14bqjIHBow6JuIHTDrWNoIGPhuqV1IHRyw7pjIOG6o25oIGjGsOG7n25nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIChWTkkpIGtoaSDEkeG7kWkgZGnhu4duIHbhu5tpIGJp4bq/biDEkeG7mW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYyAoS09TUEkpIGN1bmcgY+G6pXAgY8OhaSBuaMOsbiB0b8OgbiBkaeG7h24gduG7gSBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgaGFpIGNo4buJIHPhu5EgbsOgeSB2w6AgY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIHThu6sgbcO0aSB0csaw4budbmcga2luaCB04bq/IHRvw6BuIGPhuqd1LiBDw6FjIGLhuqNuZyBz4buRIGxp4buHdSDEkcOjIGNo4buJIHJhIHLDtSByw6BuZyBz4buxIGtow6FjIGJp4buHdCB2w6AgdGhheSDEkeG7lWkgdHJvbmcgY8OhYyBtw7QgaMOsbmggcGjDom4gcGjhu5FpIGJpw6puIHbDoCBjb3B1bGEsIGNobyBwaMOpcCByw7p0IHJhIG5o4buvbmcga+G6v3QgbHXhuq1uIHF1YW4gdHLhu41uZyB24buBIHTDoWMgxJHhu5luZyBj4bunYSBjw6FjIHPhu7Ega2nhu4duIGtpbmggdOG6vyB2w6AgY2jDrW5oIHRy4buLIGzhu5tuIMSR4bq/biBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbi4NCg0KVGhlbyBC4bqjbmcgNSwgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiB04buRaSDGsHUgY2hvIFZOSSDEkcaw4bujYyB4w6FjIMSR4buLbmggbMOgIEFSTUEoMSwxKS1HSlItR0FSQ0goMSwxKS1Ta2V3ZWQgU3R1ZGVudCB0LCB0cm9uZyBraGkgS09TUEkgxJHGsOG7o2MgbcO0IGjDrG5oIGjDs2EgYuG6sW5nIEFSTUEoMCwyKS1HSlItR0FSQ0goMSwxKS1TdHVkZW50IHQuIFPhu7Ega2jDoWMgYmnhu4d0IG7DoHkga2jDtG5nIGNo4buJIHBo4bqjbiDDoW5oIHPhu7Ega2jDoWMgYmnhu4d0IHRyb25nIGPhuqV1IHRyw7pjIHbDoCB0w61uaCBjaOG6pXQgY+G7p2EgY8OhYyBtw7QgaMOsbmggcGjDom4gcGjhu5FpIG3DoCBjw7JuIGNobyB0aOG6pXkgY8OhYyDEkeG6t2MgxJFp4buDbSByacOqbmcgYmnhu4d0IGPhu6dhIHThu6tuZyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4uIMSQ4buRaSB24bubaSBWTkksIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgU2tld2VkIFN0dWRlbnQgdCBjaG8gdGjhuqV5IHPhu7EgaGnhu4duIGRp4buHbiBj4bunYSBoaeG7h24gdMaw4bujbmcgZMOgeSDEkXXDtGkgdsOgIHTDrW5oIGtow7RuZyDEkeG7kWkgeOG7qW5nLCDEkWnhu4F1IG7DoHkgY2hvIHRo4bqleSBz4buxIGJp4bq/biDEkeG7mW5nIGzhu5tuIHbDoCBj4buxYyDEkW9hbiBoxqFuIHRyb25nIGzhu6NpIG5odeG6rW4gc28gduG7m2kgS09TUEksIG7GoWkgbcO0IGjDrG5oIFN0dWRlbnQgdCBjaG8gdGjhuqV5IHTDrW5oIGNo4bqldCBwaMOibiBwaOG7kWkgxJHGoW4gZ2nhuqNuIGjGoW4uDQoNCkPDoWMgYuG6o25nIGtp4buDbSDEkeG7i25oIChC4bqjbmcgOCkgY2hvIHRo4bqleSBjw6FjIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gxJHDoyDEkcaw4bujYyBjaOG7jW4gxJHhu4F1IHBow7kgaOG7o3AgduG7m2kgZOG7ryBsaeG7h3UgdGjhu7FjIHThur8uIEPDoWMgZ2nDoSB0cuG7iyBwIHRyb25nIGPDoWMga2nhu4NtIMSR4buLbmggQW5kZXJzb24tRGFybGluZywgQ3JhbWVyLXZvbiBNaXNlcywgdsOgIEtvbG1vZ29yb3YtU21pcm5vdiDEkeG7gXUgY2FvIGjGoW4gbeG7qWMgw70gbmdoxKlhIHRow7RuZyB0aMaw4budbmcsIGNo4bupbmcgdOG7jyBy4bqxbmcgY8OhYyBtw7QgaMOsbmggbsOgeSBraOG7m3AgdOG7kXQgduG7m2kgZOG7ryBsaeG7h3UgdsOgIGPDsyBraOG6oyBuxINuZyBu4bqvbSBi4bqvdCBjw6FjIMSR4bq3YyDEkWnhu4NtIGPhu6dhIHBow6JuIHBo4buRaSB04bu3IHN14bqldCBzaW5oIGzhu6NpIG3hu5l0IGPDoWNoIGNow61uaCB4w6FjLg0KDQpUcm9uZyB2aeG7h2MgxrDhu5tjIGzGsOG7o25nIGPDoWMgbcO0IGjDrG5oIGNvcHVsYSAoQuG6o25nIDkgdsOgIELhuqNuZyAxMCksIHPhu7EgbOG7sWEgY2jhu41uIGdp4buvYSBjw6FjIGxv4bqhaSBjb3B1bGEgY2hvIHRo4bqleSBjb3B1bGEgdCBsw6AgbcO0IGjDrG5oIHThu5FpIMawdSBuaOG6pXQgduG7m2kgaOG7hyBz4buRIEtlbmRhbGwgbMOgIDAuMTc5NzUyNiB2w6AgY8OhYyBjaOG7iSBz4buRIEFJQywgQklDIGzhuqduIGzGsOG7o3QgbMOgIC0xMzQuMzQzNiB2w6AgLTEyMy42NDkuIMSQaeG7gXUgbsOgeSBjaOG7iSByYSBy4bqxbmcgY29wdWxhIHQgY8OzIGto4bqjIG7Eg25nIG3DtCBow6xuaCBow7NhIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIGdp4buvYSBWTkkgdsOgIEtPU1BJIHThu5F0IGjGoW4gc28gduG7m2kgY8OhYyBjb3B1bGEga2jDoWMsIMSR4bq3YyBiaeG7h3QgbMOgIGtoaSB4w6l0IMSR4bq/biBjw6FjIMSRdcO0aSBwaMOibiBwaOG7kWkuIENvcHVsYSB0IGNobyBwaMOpcCBu4bqvbSBi4bqvdCBjw6FjIG3hu5FpIGxpw6puIGjhu4cgcGjhu6UgdGh14buZYyBraMO0bmcgxJHhu5NuZyDEkeG7gXUsIMSRaeG7gXUgbsOgeSBy4bqldCBxdWFuIHRy4buNbmcgdHJvbmcgdmnhu4djIGThu7EgxJFvw6FuIHbDoCBwaMOibiB0w61jaCBjw6FjIGJp4bq/biDEkeG7mW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbi4NCg0KQuG6o25nIDExIGNobyB0aOG6pXkgc+G7sSB0aGF5IMSR4buVaSB0cm9uZyBtw7QgaMOsbmggcGjDom4gcGjhu5FpIGJpw6puIHThu5FpIMawdSBxdWEgY8OhYyBnaWFpIMSRb+G6oW4ga2jDoWMgbmhhdSwgYmFvIGfhu5NtIGdpYWkgxJFv4bqhbiB0csaw4bubYyBjw7ogc+G7kWMsIHRyb25nIHRo4budaSBr4buzIENvdmlkLCB4dW5nIMSR4buZdCBOZ2EtVWtyYWluZSwgdsOgIHNhdSBjw7ogc+G7kWMuIFbDrSBk4bulLCB0cm9uZyBnaWFpIMSRb+G6oW4gdHLGsOG7m2MgY8O6IHPhu5FjLCBtw7QgaMOsbmggQVJNQSgyLDApLUdKUi1HQVJDSCgxLDEpLVNrZXdlZCBTdHVkZW50IHQgxJHGsOG7o2Mgc+G7rSBk4bulbmcgY2hvIFZOSSwgdHJvbmcga2hpIGdpYWkgxJFv4bqhbiBzYXUgY8O6IHPhu5FjIGzhuqFpIMOhcCBk4bulbmcgbcO0IGjDrG5oIEFSTUEoMiwwKS1HSlItR0FSQ0goMiwyKS1Ta2V3ZWQgR2VkLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBz4buxIHRoYXkgxJHhu5VpIHRyb25nIGPhuqV1IHRyw7pjIGPhu6dhIHBow6JuIHBo4buRaSBs4bujaSBuaHXhuq1uIHbDoCBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyB0aGVvIHThu6tuZyB0aOG7nWkga+G7sywgcGjhuqNuIMOhbmgg4bqjbmggaMaw4bufbmcgY+G7p2EgY8OhYyBz4buxIGtp4buHbiBs4bubbiBuaMawIMSR4bqhaSBk4buLY2ggQ292aWQtMTkgdsOgIHh1bmcgxJHhu5l0IHF14buRYyB04bq/IMSR4buRaSB24bubaSB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4uDQoNCkLhuqNuZyAxMiBjdW5nIGPhuqVwIGPDoWkgbmjDrG4gc8OidSBz4bqvYyB24buBIGPDoWMgbcO0IGjDrG5oIGNvcHVsYSDDoXAgZOG7pW5nIGNobyB04burbmcgZ2lhaSDEkW/huqFuLiBT4buxIGzhu7FhIGNo4buNbiBnaeG7r2EgY8OhYyBsb+G6oWkgY29wdWxhIG5oxrAgQkI3LCBTdXJ2aXZhbCBCQjcsIENsYXl0b24sIHbDoCBHYXVzcyBjaG8gdGjhuqV5IHPhu7EgxJFp4buBdSBjaOG7iW5oIHRyb25nIGPDoWNoIG3DtCBow6xuaCBow7NhIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIHRoZW8gdOG7q25nIHRo4budaSBr4buzLiBN4buXaSBsb+G6oWkgY29wdWxhIHBo4bqjbiDDoW5oIG3hu5l0IGtp4buDdSBwaOG7pSB0aHXhu5ljIGtow6FjIG5oYXU6IHThu6sgxJHhu5FpIHjhu6luZyAoR2F1c3MpIMSR4bq/biBraMO0bmcgxJHhu5FpIHjhu6luZyAoQ2xheXRvbiksIHbDoCBz4buxIHRoYXkgxJHhu5VpIG7DoHkgZ2nDunAgbMOgbSByw7UgY8OhY2ggY8OhYyB54bq/dSB04buRIHRvw6BuIGPhuqd1IHTDoWMgxJHhu5luZyDEkeG6v24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBWTkkgdsOgIEtPU1BJLg0KDQpOaMOsbiBjaHVuZywga+G6v3QgcXXhuqMgcGjDom4gdMOtY2ggY2hvIHRo4bqleSBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIFZp4buHdCBOYW0gdsOgIEjDoG4gUXXhu5FjIGzDoCBraMO0bmcg4buVbiDEkeG7i25oIHbDoCBjw7Mgc+G7sSB0aGF5IMSR4buVaSByw7UgcuG7h3QgcXVhIGPDoWMgdGjhu51pIGvhu7Mga2jDoWMgbmhhdS4gU+G7sSB0aGF5IMSR4buVaSBuw6B5IHBo4bqjbiDDoW5oIOG6o25oIGjGsOG7n25nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSBraW5oIHThur8gdsSpIG3DtCB2w6Agc+G7sSBraeG7h24gdG/DoG4gY+G6p3UgxJHhur9uIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuLiBDw6FjIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gdsOgIGNvcHVsYSDEkcOjIMSRxrDhu6NjIMOhcCBk4bulbmcgY3VuZyBj4bqlcCBjw7RuZyBj4bulIG3huqFuaCBt4bq9IMSR4buDIGhp4buDdSB2w6AgZOG7sSDEkW/DoW4gY8OhYyBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBuw6B5LiBWaeG7h2Mgw6FwIGThu6VuZyBjw6FjIG3DtCBow6xuaCBsaW5oIGhv4bqhdCB2w6AgY2jDrW5oIHjDoWMgbMOgIGPhuqduIHRoaeG6v3QgxJHhu4MgbuG6r20gYuG6r3QgY8OhYyBiaeG6v24gxJHhu5luZyB2w6AgdMawxqFuZyB0w6FjIHBo4bupYyB04bqhcCBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4sIHThu6sgxJHDsyBnacO6cCBjw6FjIG5ow6AgxJHhuqd1IHTGsCB2w6AgbmjDoCBwaMOibiB0w61jaCDEkcawYSByYSBjw6FjIHF1eeG6v3QgxJHhu4tuaCBjaGnhur9uIGzGsOG7o2MgaOG7o3AgbMO9IGjGoW4gdHJvbmcgYuG7kWkgY+G6o25oIHRvw6BuIGPhuqd1IGjDs2EgdsOgIGJp4bq/biDEkeG7mW5nIGtpbmggdOG6vy4NCg0KDQojIyA1LjIgS2h1eeG6v24gbmdo4buLDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIHBow6JuIHTDrWNoIGPhuqV1IHRyw7pjIOG6o25oIGjGsOG7n25nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIChWTkkpIGtoaSDEkeG7kWkgZGnhu4duIHbhu5tpIGJp4bq/biDEkeG7mW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYyAoS09TUEkpLCBjw7MgdGjhu4MgxJHGsGEgcmEgbeG7mXQgc+G7kSBraHV54bq/biBuZ2jhu4sgcXVhbiB0cuG7jW5nIMSR4buDIGjhu5cgdHLhu6MgY8OhYyBuaMOgIMSR4bqndSB0xrAgdsOgIG5ow6AgcGjDom4gdMOtY2ggdHJvbmcgdmnhu4djIMSRxrBhIHJhIGPDoWMgcXV54bq/dCDEkeG7i25oIGNoaeG6v24gbMaw4bujYyBoaeG7h3UgcXXhuqMuIE5o4buvbmcga2h1eeG6v24gbmdo4buLIG7DoHkgdOG6rXAgdHJ1bmcgdsOgbyB2aeG7h2MgaGnhu4N1IHbDoCBk4buxIMSRb8OhbiBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4sIHThu6sgxJHDsyB04bqtbiBk4bulbmcgY8ahIGjhu5lpIHbDoCBnaeG6o20gdGhp4buDdSBy4bunaSBybyB0cm9uZyDEkeG6p3UgdMawIDoNCg0KMS4gKipUxINuZyBjxrDhu51uZyDDgXAgZOG7pW5nIEPDoWMgTcO0IEjDrG5oIFBow6JuIFBo4buRaSBCacOqbiB2w6AgQ29wdWxhIExpbmggSG/huqF0OioqDQpL4bq/dCBxdeG6oyBwaMOibiB0w61jaCBjaG8gdGjhuqV5IG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIGdp4buvYSBWTkkgdsOgIEtPU1BJIGPDsyBz4buxIHRoYXkgxJHhu5VpIHLDtSBy4buHdCBxdWEgY8OhYyBnaWFpIMSRb+G6oW4ga2jDoWMgbmhhdS4gRG8gxJHDsywgY8OhYyBuaMOgIMSR4bqndSB0xrAgdsOgIG5ow6AgcGjDom4gdMOtY2ggbsOqbiDDoXAgZOG7pW5nIGPDoWMgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiB2w6AgY29wdWxhIGxpbmggaG/huqF0IMSR4buDIG7huq9tIGLhuq90IGPDoWMgYmnhur9uIMSR4buZbmcgbsOgeS4gQ8OhYyBtw7QgaMOsbmggbmjGsCBBUk1BLUdKUi1HQVJDSCBr4bq/dCBo4bujcCB24bubaSBwaMOibiBwaOG7kWkgU2tld2VkIFN0dWRlbnQgdCBob+G6t2MgU3R1ZGVudCB0IGNobyBwaMOpcCBu4bqvbSBi4bqvdCBjw6FjIMSR4bq3YyDEkWnhu4NtIGtow6FjIG5oYXUgY+G7p2EgdOG7q25nIHRo4buLIHRyxrDhu51uZyB2w6AgY8OhYyDEkWnhu4F1IGtp4buHbiB0aOG7iyB0csaw4budbmcgY+G7pSB0aOG7gy4gVmnhu4djIHPhu60gZOG7pW5nIGPDoWMgbcO0IGjDrG5oIGNvcHVsYSBuaMawIHQtY29wdWxhIGPDsyB0aOG7gyBnacO6cCBj4bqjaSB0aGnhu4duIGto4bqjIG7Eg25nIGThu7EgxJFvw6FuIHbDoCBwaMOibiB0w61jaCBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcuDQoNCjIuICoqVGhlbyBEw7VpIHbDoCDEkGnhu4F1IENo4buJbmggVGhlbyBDw6FjIEdpYWkgxJBv4bqhbiBLaW5oIFThur86KioNClBow6JuIHTDrWNoIGNobyB0aOG6pXkgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiB2w6AgY29wdWxhIHThu5FpIMawdSBjw7Mgc+G7sSB0aGF5IMSR4buVaSB0aGVvIHThu6tuZyBnaWFpIMSRb+G6oW4sIHThu6sgdHLGsOG7m2MgY8O6IHPhu5FjIMSR4bq/biBnaWFpIMSRb+G6oW4geHVuZyDEkeG7mXQgdsOgIHNhdSBjw7ogc+G7kWMuIMSQaeG7gXUgbsOgeSBuaOG6pW4gbeG6oW5oIHPhu7EgY+G6p24gdGhp4bq/dCBwaOG6o2kgdGhlbyBkw7VpIHRoxrDhu51uZyB4dXnDqm4gdsOgIMSRaeG7gXUgY2jhu4luaCBjw6FjIG3DtCBow6xuaCBk4buxIMSRb8OhbiB0aGVvIGPDoWMgZ2lhaSDEkW/huqFuIGtpbmggdOG6vyBraMOhYyBuaGF1LiBDw6FjIG5ow6AgxJHhuqd1IHTGsCBuw6puIGPhuq1wIG5o4bqtdCBtw7QgaMOsbmggcGjDom4gdMOtY2ggdsOgIGThu7EgxJFvw6FuIMSR4buDIHBo4bqjbiDDoW5oIGPDoWMgdGhheSDEkeG7lWkgdHJvbmcgxJFp4buBdSBraeG7h24ga2luaCB04bq/IHbDoCBz4buxIGtp4buHbiB0b8OgbiBj4bqndSwgdOG7qyDEkcOzIMSRxrBhIHJhIGPDoWMgcXV54bq/dCDEkeG7i25oIMSR4bqndSB0xrAgcGjDuSBo4bujcCB24bubaSB0w6xuaCBow6xuaCBoaeG7h24gdOG6oWkuDQoNCjMuICoqWGVtIFjDqXQgVMOtbmggxJDhu5FpIFjhu6luZyB2w6AgS2jDtG5nIMSQ4buRaSBY4bupbmcgVHJvbmcgTeG7kWkgUXVhbiBI4buHIFBo4bulIFRodeG7mWM6KioNClPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBjw6FjIGNvcHVsYSDEkeG7kWkgeOG7qW5nIChuaMawIEdhdXNzKSB2w6Aga2jDtG5nIMSR4buRaSB44bupbmcgKG5oxrAgQ2xheXRvbikgY2hvIHRo4bqleSBy4bqxbmcgY8OhYyBraeG7g3UgcGjhu6UgdGh14buZYyBraMOhYyBuaGF1IGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIGJp4bq/bi4gQ8OhYyBuaMOgIHBow6JuIHTDrWNoIHbDoCBuaMOgIMSR4bqndSB0xrAgbsOqbiBjw6JuIG5o4bqvYyBz4buxIGtow7RuZyDEkeG7kWkgeOG7qW5nIHRyb25nIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIGtoaSB4w6J5IGThu7FuZyBjw6FjIG3DtCBow6xuaCB2w6AgY2hp4bq/biBsxrDhu6NjIMSR4bqndSB0xrAuIMSQaeG7gXUgbsOgeSBnacO6cCBuaOG6rW4gZGnhu4duIGPDoWMgcuG7p2kgcm8gdGnhu4FtIOG6qW4gdsOgIGPGoSBo4buZaSDEkeG6p3UgdMawIGThu7FhIHRyw6puIHTDrW5oIGNo4bqldCBj4bunYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbi4NCg0KNC4gKirEkMOhbmggR2nDoSDhuqJuaCBIxrDhu59uZyBD4bunYSBDw6FjIFPhu7EgS2nhu4duIFRvw6BuIEPhuqd1OioqDQpL4bq/dCBxdeG6oyBjaG8gdGjhuqV5IGPDoWMgc+G7sSBraeG7h24ga2luaCB04bq/IHbDoCBjaMOtbmggdHLhu4sgbOG7m24gbmjGsCDEkeG6oWkgZOG7i2NoIENvdmlkLTE5IHbDoCB4dW5nIMSR4buZdCBxdeG7kWMgdOG6vyBjw7Mg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgVk5JIHbDoCBLT1NQSS4gQ8OhYyBuaMOgIMSR4bqndSB0xrAgbsOqbiDEkcOhbmggZ2nDoSBr4bu5IGzGsOG7oW5nIOG6o25oIGjGsOG7n25nIGPhu6dhIGPDoWMgc+G7sSBraeG7h24gdG/DoG4gY+G6p3UgxJHhu5FpIHbhu5tpIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuLCB04burIMSRw7MgxJFp4buBdSBjaOG7iW5oIGNoaeG6v24gbMaw4bujYyDEkeG6p3UgdMawIGNobyBwaMO5IGjhu6NwLiBWaeG7h2MgbsOgeSBiYW8gZ+G7k20gdmnhu4djIHRoZW8gZMO1aSBjw6FjIGNo4buJIHPhu5Ega2luaCB04bq/LCBjaMOtbmggdHLhu4ssIHbDoCBjw6FjIHnhur91IHThu5EgdsSpIG3DtCBjw7MgdGjhu4Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbi4NCg0KNS4gKipU4bqtbiBE4bulbmcgQ8OhYyBDw7RuZyBD4bulIFBow6JuIFTDrWNoIFRpw6puIFRp4bq/bjoqKg0KVmnhu4djIHPhu60gZOG7pW5nIGPDoWMgY8O0bmcgY+G7pSBwaMOibiB0w61jaCB0acOqbiB0aeG6v24gbmjGsCBtw7QgaMOsbmggY29wdWxhIHbDoCBjw6FjIGtp4buDbSDEkeG7i25oIHRo4buRbmcga8OqIGN1bmcgY+G6pXAgdGjDtG5nIHRpbiBxdWFuIHRy4buNbmcgduG7gSBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcuIEPDoWMgbmjDoCDEkeG6p3UgdMawIHbDoCBuaMOgIHBow6JuIHTDrWNoIG7Dqm4gdOG6rW4gZOG7pW5nIGPDoWMgY8O0bmcgY+G7pSBuw6B5IMSR4buDIG7Dom5nIGNhbyBraOG6oyBuxINuZyBk4buxIMSRb8OhbiB2w6AgcGjDom4gdMOtY2guIEPDoWMgY8O0bmcgY+G7pSBwaMOibiB0w61jaCBuw6B5IGdpw7pwIG5o4bqtbiBkaeG7h24gY8OhYyBt4buRaSBsacOqbiBo4buHIHRp4buBbSDhuqluIHbDoCBk4buxIMSRb8OhbiBjw6FjIGJp4bq/biDEkeG7mW5nIHRyb25nIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBt4buZdCBjw6FjaCBjaMOtbmggeMOhYyBoxqFuLg0KDQo2LiAqKsSQw6BvIFThuqFvIHbDoCBQaMOhdCBUcmnhu4NuIEvhu7kgTsSDbmcgUGjDom4gVMOtY2g6KioNCkN14buRaSBjw7luZywgdmnhu4djIG7Dom5nIGNhbyBr4bu5IG7Eg25nIHBow6JuIHTDrWNoIGNobyBjw6FjIG5ow6AgxJHhuqd1IHTGsCB2w6AgbmjDoCBwaMOibiB0w61jaCBsw6AgcuG6pXQgcXVhbiB0cuG7jW5nLiBDw6FjIGNodXnDqm4gZ2lhIGPhuqduIMSRxrDhu6NjIMSRw6BvIHThuqFvIMSR4buDIHPhu60gZOG7pW5nIGhp4buHdSBxdeG6oyBjw6FjIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gdsOgIGNvcHVsYSwgY8WpbmcgbmjGsCDEkeG7gyBoaeG7g3UgdsOgIMOhcCBk4bulbmcgY8OhYyBr4bq/dCBxdeG6oyBwaMOibiB0w61jaCB2w6BvIHRo4buxYyB0aeG7hW4gxJHhuqd1IHTGsC4gU+G7sSBwaMOhdCB0cmnhu4NuIGvhu7kgbsSDbmcgbsOgeSBraMO0bmcgY2jhu4kgZ2nDunAgY+G6o2kgdGhp4buHbiBraOG6oyBuxINuZyBwaMOibiB0w61jaCBtw6AgY8OybiBnacO6cCB04buRaSDGsHUgaMOzYSBjw6FjIHF1eeG6v3QgxJHhu4tuaCDEkeG6p3UgdMawIGThu7FhIHRyw6puIGPDoWMgbcO0IGjDrG5oIHbDoCBk4buvIGxp4buHdSBoaeG7h24gY8OzLg0KDQpUw7NtIGzhuqFpLCB2aeG7h2Mgw6FwIGThu6VuZyBjw6FjIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgYmnDqm4gdsOgIGNvcHVsYSBsaW5oIGhv4bqhdCwgdGhlbyBkw7VpIGPDoWMgZ2lhaSDEkW/huqFuIGtpbmggdOG6vywgdsOgIHThuq1uIGThu6VuZyBjw6FjIGPDtG5nIGPhu6UgcGjDom4gdMOtY2ggdGnDqm4gdGnhur9uIGzDoCBuaOG7r25nIHnhur91IHThu5EgcXVhbiB0cuG7jW5nIMSR4buDIMSRxrBhIHJhIGPDoWMgcXV54bq/dCDEkeG7i25oIMSR4bqndSB0xrAgaGnhu4d1IHF14bqjLiBDw6FjIG5ow6AgxJHhuqd1IHTGsCB2w6AgbmjDoCBwaMOibiB0w61jaCBuw6puIGNow7ogdHLhu41uZyDEkeG6v24gdmnhu4djIMSRaeG7gXUgY2jhu4luaCBjw6FjIG3DtCBow6xuaCB0aGVvIHPhu7EgdGhheSDEkeG7lWkgY+G7p2EgxJFp4buBdSBraeG7h24ga2luaCB04bq/IHbDoCBz4buxIGtp4buHbiB0b8OgbiBj4bqndSDEkeG7gyB04buRaSDGsHUgaMOzYSBoaeG7h3UgcXXhuqMgxJHhuqd1IHTGsCB2w6AgZ2nhuqNtIHRoaeG7g3UgcuG7p2kgcm8uDQoNCiMjIDUuMyBI4bqhbiBjaOG6vyBj4bunYSDEkeG7gSB0w6BpDQoNCk3hurdjIGTDuSBuZ2hpw6puIGPhu6l1IG7DoHkgY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHPDonUgc+G6r2MgduG7gSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIChWTkkpIHbDoCBIw6BuIFF14buRYyAoS09TUEkpLCB24bqrbiB04buTbiB04bqhaSBt4buZdCBz4buRIGjhuqFuIGNo4bq/IMSRw6FuZyBsxrB1IMO9LiDEkOG6p3UgdGnDqm4sIG5naGnDqm4gY+G7qXUgY2jhu4kgdOG6rXAgdHJ1bmcgdsOgbyBoYWkgdGjhu4sgdHLGsOG7nW5nIGPhu6UgdGjhu4MgbcOgIGtow7RuZyBt4bufIHLhu5luZyByYSBjw6FjIHRo4buLIHRyxrDhu51uZyBraMOhYywgaOG6oW4gY2jhur8ga2jhuqMgbsSDbmcgdOG7lW5nIHF1w6F0IGPhu6dhIGvhur90IHF14bqjLiBUaOG7qSBoYWksIHZp4buHYyBjaOG7jW4gbOG7sWEgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiB2w6AgY29wdWxhIGPDsyB0aOG7gyBraMO0bmcgaG/DoG4gdG/DoG4gcGjhuqNuIMOhbmggY8OhYyDEkeG6t2MgxJFp4buDbSBk4buvIGxp4buHdSwgxJHhurdjIGJp4buHdCB0cm9uZyBjw6FjIGdpYWkgxJFv4bqhbiBiaeG6v24gxJHhu5luZyBt4bqhbmguIFRo4bupIGJhLCBuZ2hpw6puIGPhu6l1IGtow7RuZyB4ZW0geMOpdCB0w6FjIMSR4buZbmcgY+G7p2EgY8OhYyB54bq/dSB04buRIGtpbmggdOG6vyB2xKkgbcO0IGtow6FjIG5oxrAgY2jDrW5oIHPDoWNoIHRp4buBbiB04buHIHbDoCB04bu3IGdpw6EgaOG7kWkgxJFvw6FpLCBjw7MgdGjhu4MgbMOgbSBnaeG6o20gxJHhu5kgY2jDrW5oIHjDoWMgY+G7p2EgY8OhYyBk4buxIMSRb8Ohbi4gQ3Xhu5FpIGPDuW5nLCBjw6FjIHnhur91IHThu5EgaMOgbmggdmkgdsOgIHTDom0gbMO9IGPhu6dhIG5ow6AgxJHhuqd1IHTGsCBjxaluZyBraMO0bmcgxJHGsOG7o2MgxJHGsGEgdsOgbyBwaMOibiB0w61jaCwgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24gc+G7sSB0xrDGoW5nIHF1YW4gZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nLiBOaOG7r25nIGjhuqFuIGNo4bq/IG7DoHkgbeG7nyByYSBjxqEgaOG7mWkgY2hvIGPDoWMgbmdoacOqbiBj4bupdSB0aeG6v3AgdGhlbyBuaOG6sW0gY+G6o2kgdGhp4buHbiDEkeG7mSBjaMOtbmggeMOhYyB2w6AgdOG7lW5nIHF1w6F0IGPhu6dhIGPDoWMgbcO0IGjDrG5oIHBow6JuIHTDrWNoLg0KDQojIyA1LjQgSMaw4bubbmcgbmdoacOqbiBj4bupdSB0aeG6v3AgdGhlbw0KDQpE4buxYSB0csOqbiBuaOG7r25nIGvhur90IHF14bqjIHBow6JuIHTDrWNoIGhp4buHbiB04bqhaSB24buBIGPhuqV1IHRyw7pjIOG6o25oIGjGsOG7n25nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIChWTkkpIGtoaSDEkeG7kWkgZGnhu4duIHbhu5tpIGJp4bq/biDEkeG7mW5nIGPhu6dhIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBIw6BuIFF14buRYyAoS09TUEkpLCBt4buZdCBz4buRIGjGsOG7m25nIG5naGnDqm4gY+G7qXUgdGnhur9wIHRoZW8gY8OzIHRo4buDIMSRxrDhu6NjIMSR4buBIHh14bqldCDEkeG7gyBt4bufIHLhu5luZyB2w6AgbMOgbSBzw6J1IHPhuq9jIHRow6ptIGhp4buDdSBiaeG6v3QgduG7gSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIHbDoCBjw6FjIHnhur91IHThu5EgdG/DoG4gY+G6p3UuIE5o4buvbmcgbmdoacOqbiBj4bupdSBuw6B5IG5o4bqxbSBt4bulYyDEkcOtY2ggY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHRvw6BuIGRp4buHbiB2w6AgY2hpIHRp4bq/dCBoxqFuLCB04burIMSRw7MgaOG7lyB0cuG7oyB2aeG7h2MgcmEgcXV54bq/dCDEkeG7i25oIHRyb25nIMSR4bqndSB0xrAgdsOgIHBow6JuIHTDrWNoIHTDoGkgY2jDrW5oLiBExrDhu5tpIMSRw6J5IGzDoCBjw6FjIGjGsOG7m25nIG5naGnDqm4gY+G7qXUgY2jDrW5oOg0KDQoxLiAqKk5naGnDqm4gY+G7qXUgTeG7kWkgUXVhbiBI4buHIFBo4bulIFRodeG7mWMgVHJvbmcgQ8OhYyBUaOG7iyBUcsaw4budbmcgQ2jhu6luZyBLaG/DoW4gS2jDoWM6KioNCk5naGnDqm4gY+G7qXUgY8OzIHRo4buDIG3hu58gcuG7mW5nIMSR4buDIGJhbyBn4buTbSBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBraMO0bmcgY2jhu4kgZ2nhu69hIFZOSSB2w6AgS09TUEkgbcOgIGPDsm4gduG7m2kgY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gbOG7m24ga2jDoWMsIGNo4bqzbmcgaOG6oW4gbmjGsCBTJlAgNTAwLCBOaWtrZWkgMjI1LCBob+G6t2MgY8OhYyB0aOG7iyB0csaw4budbmcgbeG7m2kgbuG7lWkga2jDoWMuIFZp4buHYyBzbyBzw6FuaCBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyB0cm9uZyBjw7luZyBraHUgduG7sWMgKG5oxrAgQVNFQU4sIENow6J1IMOBIC0gVGjDoWkgQsOsbmggRMawxqFuZykgc28gduG7m2kgY8OhYyBraHUgduG7sWMga2jDoWMgc+G6vSBnacO6cCBsw6BtIHLDtSBjw6FjIHnhur91IHThu5Ega2h1IHbhu7FjIGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24gc+G7sSB0xrDGoW5nIHF1YW4gZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nLiBT4buxIG3hu58gcuG7mW5nIG7DoHkgc+G6vSBjdW5nIGPhuqVwIGPDoWkgbmjDrG4gdOG7lW5nIHF1YW4gaMahbiB24buBIGPDoWNoIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIHRyw6puIHRvw6BuIGPhuqd1IHTGsMahbmcgdMOhYyB2w6Ag4bqjbmggaMaw4bufbmcgbOG6q24gbmhhdS4NCg0KMi4gKipOZ2hpw6puIEPhu6l1IOG6om5oIEjGsOG7n25nIEPhu6dhIEPDoWMgWeG6v3UgVOG7kSBLaW5oIFThur8gVsSpIE3DtDoqKg0KTmdoacOqbiBj4bupdSB0aeG6v3AgdGhlbyBjw7MgdGjhu4MgdOG6rXAgdHJ1bmcgdsOgbyB2aeG7h2MgeGVtIHjDqXQgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSBraW5oIHThur8gdsSpIG3DtCBuaMawIHThu7cgbOG7hyBsw6NpIHN14bqldCwgdOG7tyBnacOhIGjhu5FpIMSRb8OhaSwgbOG6oW0gcGjDoXQgdsOgIGNow61uaCBzw6FjaCB0aeG7gW4gdOG7hyDEkeG6v24gbeG7kWkgcXVhbiBo4buHIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuLiBT4buxIHTGsMahbmcgdMOhYyBnaeG7r2EgY8OhYyB54bq/dSB04buRIHbEqSBtw7QgdsOgIGPDoWMgeeG6v3UgdOG7kSBjaMOtbmggdHLhu4sgY8WpbmcgbsOqbiDEkcaw4bujYyBwaMOibiB0w61jaCDEkeG7gyBoaeG7g3UgcsO1IGjGoW4gduG7gSBjw6FjIOG6o25oIGjGsOG7n25nIHThu5VuZyBo4bujcCDEkeG6v24gY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4uDQoNCjMuICoqUGjDom4gVMOtY2ggQ8OhYyBUaOG7nWkgS+G7syBD4buxYyDEkG9hbiBWw6AgQ8OhYyBT4buxIEtp4buHbiBUb8OgbiBD4bqndToqKg0KTmdoacOqbiBj4bupdSBjw7MgdGjhu4MgeGVtIHjDqXQgbeG7kWkgcXVhbiBo4buHIHBo4bulIHRodeG7mWMgdHJvbmcgY8OhYyB0aOG7nWkga+G7syBj4buxYyDEkW9hbiwgY2jhurNuZyBo4bqhbiBuaMawIGto4bunbmcgaG/huqNuZyB0w6BpIGNow61uaCB0b8OgbiBj4bqndSwgxJHhuqFpIGThu4tjaCwgaG/hurdjIGPDoWMgc+G7sSBraeG7h24gY2jDrW5oIHRy4buLIGzhu5tuLiBWaeG7h2MgbsOgeSBz4bq9IGdpw7pwIMSRw6FuaCBnacOhIGto4bqjIG7Eg25nIGPhu6dhIGPDoWMgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiB2w6AgY29wdWxhIHRyb25nIHZp4buHYyBk4buxIMSRb8OhbiB2w6AgcGjDom4gdMOtY2ggY8OhYyBiaeG6v24gxJHhu5luZyBs4bubbi4gxJDhu5NuZyB0aOG7nWksIG5naGnDqm4gY+G7qXUgY8WpbmcgbsOqbiDEkcOhbmggZ2nDoSBjw6FjIGjhuq11IHF14bqjIGTDoGkgaOG6oW4gY+G7p2EgY8OhYyBz4buxIGtp4buHbiB0b8OgbiBj4bqndSDEkeG6v24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiB2w6AgeMOhYyDEkeG7i25oIGPDoWMgeeG6v3UgdOG7kSBjw7MgdGjhu4Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHPhu7EgaOG7k2kgcGjhu6VjIGPhu6dhIGPDoWMgdGjhu4sgdHLGsOG7nW5nLg0KDQo0LiAqKlBow6F0IFRyaeG7g24gQ8OhYyBNw7QgSMOsbmggTeG7m2kgVsOgIFBoxrDGoW5nIFBow6FwIFBow6JuIFTDrWNoOioqDQpOZ2hpw6puIGPhu6l1IGPDsyB0aOG7gyB04bqtcCB0cnVuZyB2w6BvIHZp4buHYyBwaMOhdCB0cmnhu4NuIGPDoWMgbcO0IGjDrG5oIHBow6JuIHBo4buRaSBiacOqbiBt4bubaSB2w6AgY8OhYyBsb+G6oWkgY29wdWxhIGtow6FjIMSR4buDIGPhuqNpIHRoaeG7h24ga2jhuqMgbsSDbmcgbcO0IGjDrG5oIGjDs2EgdsOgIGThu7EgxJFvw6FuIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbi4gVmnhu4djIMOhcCBk4bulbmcgY8OhYyBr4bu5IHRodeG6rXQgaOG7jWMgbcOheSB2w6AgdHLDrSB0deG7hyBuaMOibiB04bqhbyBjxaluZyBuw6puIMSRxrDhu6NjIHhlbSB4w6l0IMSR4buDIHThu5FpIMawdSBow7NhIGPDoWMgbcO0IGjDrG5oIHBow6JuIHTDrWNoIHbDoCBk4buxIMSRb8OhbiwgbmjhurFtIG7Dom5nIGNhbyDEkeG7mSBjaMOtbmggeMOhYyB2w6AgaGnhu4d1IHF14bqjIHRyb25nIHZp4buHYyDEkcOhbmggZ2nDoSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuLg0KDQo1LiAqKlBow6JuIFTDrWNoIFTDoWMgxJDhu5luZyBD4bunYSBDaMOtbmggU8OhY2ggxJDhuqd1IFTGsCBWw6AgUXV5IMSQ4buLbmg6KioNCk5naGnDqm4gY+G7qXUgY8OzIHRo4buDIHhlbSB4w6l0IHTDoWMgxJHhu5luZyBj4bunYSBjw6FjIGNow61uaCBzw6FjaCDEkeG6p3UgdMawIHbDoCBxdXkgxJHhu4tuaCB0w6BpIGNow61uaCDEkeG6v24gc+G7sSB0xrDGoW5nIHF1YW4gZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuLiDEkGnhu4F1IG7DoHkgYmFvIGfhu5NtIHZp4buHYyBwaMOibiB0w61jaCDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHF1eSDEkeG7i25oIHbhu4EgduG7kW4gxJHhuqd1IHTGsCwgdGh14bq/LCB2w6AgY8OhYyBjaMOtbmggc8OhY2gga2h1eeG6v24ga2jDrWNoIMSR4bqndSB0xrAuIFZp4buHYyDEkcOhbmggZ2nDoSB0w6FjIMSR4buZbmcgY+G7p2EgY8OhYyB0aGF5IMSR4buVaSBxdXkgxJHhu4tuaCB0w6BpIGNow61uaCB2w6AgY2jDrW5oIHPDoWNoIGtpbmggdOG6vyDEkeG6v24gbeG7kWkgcXVhbiBo4buHIHBo4bulIHRodeG7mWMgZ2nhu69hIGPDoWMgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIGPFqW5nIG7Dqm4gxJHGsOG7o2MgdGjhu7FjIGhp4buHbi4NCg0KNi4gKipOZ2hpw6puIEPhu6l1IEPDoWMgWeG6v3UgVOG7kSBUw6JtIEzDvSBWw6AgSMOgbmggVmkgVGjhu4sgVHLGsOG7nW5nOioqDQpOZ2hpw6puIGPhu6l1IGPFqW5nIG7Dqm4geGVtIHjDqXQg4bqjbmggaMaw4bufbmcgY+G7p2EgdMOibSBsw70gbmjDoCDEkeG6p3UgdMawIHbDoCBjw6FjIHnhur91IHThu5EgaMOgbmggdmkgdGjhu4sgdHLGsOG7nW5nIMSR4bq/biBz4buxIHTGsMahbmcgcXVhbiBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4uIEPDoWMgeeG6v3UgdOG7kSBuaMawIHPhu7EgaG/huqNuZyBsb+G6oW4gdGjhu4sgdHLGsOG7nW5nLCBj4bqjbSB4w7pjIHbDoCBr4buzIHbhu41uZyBjw7MgdGjhu4Mg4bqjbmggaMaw4bufbmcgxJHhur9uIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljLiBQaMOibiB0w61jaCBow6BuaCB2aSBnaWFvIGThu4tjaCBj4bunYSBjw6FjIG5ow6AgxJHhuqd1IHTGsCB2w6AgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmggc+G6vSBnacO6cCBoaeG7g3UgcsO1IGjGoW4gduG7gSBjw6FjaCBjw6FjIHF1eeG6v3QgxJHhu4tuaCDEkeG6p3UgdMawIHbDoCBnaWFvIGThu4tjaCDhuqNuaCBoxrDhu59uZyDEkeG6v24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbi4NCg0KTmjhu69uZyBoxrDhu5tuZyBuZ2hpw6puIGPhu6l1IG7DoHkgc+G6vSBraMO0bmcgY2jhu4kgbMOgbSBwaG9uZyBwaMO6IHRow6ptIGtp4bq/biB0aOG7qWMgduG7gSBt4buRaSBxdWFuIGjhu4cgcGjhu6UgdGh14buZYyBnaeG7r2EgY8OhYyB0aOG7iyB0csaw4budbmcgY2jhu6luZyBraG/DoW4gbcOgIGPDsm4gY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHPDonUgc+G6r2MgaMahbiB24buBIGPDoWNoIGPDoWMgeeG6v3UgdOG7kSB0b8OgbiBj4bqndSB2w6Aga2h1IHbhu7FjIHTDoWMgxJHhu5luZyDEkeG6v24gY8OhYyB0aOG7iyB0csaw4budbmcuIFZp4buHYyB0aOG7sWMgaGnhu4duIGPDoWMgbmdoacOqbiBj4bupdSBuw6B5IHPhur0gZ2nDunAgY+G6o2kgdGhp4buHbiBraOG6oyBuxINuZyBk4buxIMSRb8OhbiwgcXXhuqNuIGzDvSBy4bunaSBybywgdsOgIHThu5FpIMawdSBow7NhIGNoaeG6v24gbMaw4bujYyDEkeG6p3UgdMawIHRyb25nIGLhu5FpIGPhuqNuaCB0b8OgbiBj4bqndSBow7NhIHbDoCBiaeG6v24gxJHhu5luZyBraW5oIHThur8uDQoNCiMgKipUw4BJIExJ4buGVSBUSEFNIEtI4bqiTyoqDQoNCk5ndXnhu4VuLCBILiBULiAoMjAyMCkuIOG7qG5nIGThu6VuZyBtw7QgaMOsbmggY29wdWxhIHRyb25nIHBow6JuIHTDrWNoIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBjaOG7iSBz4buRIGNo4bupbmcga2hvw6FuLiBU4bqhcCBjaMOtIEtpbmggdOG6vyB2w6AgROG7sSBiw6FvLCAzKDUpLCA0NS01OS4NCg0KVHLhuqduLCBNLiBULiwgJiBMw6osIEguIFAuICgyMDE5KS4gTcO0IGjDrG5oIGjDs2EgcuG7p2kgcm8gdHJvbmcgdGjhu4sgdHLGsOG7nW5nIGNo4bupbmcga2hvw6FuIFZp4buHdCBOYW0gYuG6sW5nIHBoxrDGoW5nIHBow6FwIEdBUkNIIHbDoCBjb3B1bGEuIFThuqFwIGNow60gTmdoacOqbiBj4bupdSBLaW5oIHThur8sIDEyKDQpLCA2Ny04MC4NCg0KUGjhuqFtLCBULiBBLiAoMjAxOCkuIOG7qG5nIGThu6VuZyBwaMawxqFuZyBwaMOhcCBjb3B1bGEgdHJvbmcgcGjDom4gdMOtY2ggcuG7p2kgcm8gdsOgIGThu7EgxJFvw6FuIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8Ohbi4gTHXhuq1uIHbEg24gVGjhuqFjIHPEqSBLaW5oIHThur8sIMSQ4bqhaSBo4buNYyBLaW5oIHThur8gUXXhu5FjIGTDom4sIEjDoCBO4buZaS4NCg0KTmd1eeG7hW4sIFQuIE0uICgyMDIxKS4gUGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIHRo4buLIHRyxrDhu51uZyBjaOG7qW5nIGtob8OhbiBWaeG7h3QgTmFtIHbDoCBxdeG7kWMgdOG6vyBi4bqxbmcgbcO0IGjDrG5oIGNvcHVsYS4gVOG6oXAgY2jDrSBUw6BpIGNow61uaCB2w6AgTmfDom4gaMOgbmcsIDE1KDEpLCAyMy0zNy4NCg0KTG9uZ2luLCBGLiwgJiBTb2xuaWssIEIuICgxOTk1KS4gSXMgdGhlIGNvcnJlbGF0aW9uIGluIGludGVybmF0aW9uYWwgZXF1aXR5IHJldHVybnMgY29uc3RhbnQ6IDE5NjAtMTk5MD8gSm91cm5hbCBvZiBJbnRlcm5hdGlvbmFsIE1vbmV5IGFuZCBGaW5hbmNlLCAxNCgxKSwgMy0yNi4NCg0KWHUsIFMuLCAmIEhhbW9yaSwgUy4gKDIwMTIpLiBEeW5hbWljIGxpbmthZ2VzIGJldHdlZW4gdGhlIEJSSUNzIGFuZCB0aGUgVVMgc3RvY2sgbWFya2V0czogRXZpZGVuY2UgZnJvbSBBUihrKS1FR0FSQ0gocCxxKSBtb2RlbHMuIEpvdXJuYWwgb2YgSW50ZXJuYXRpb25hbCBGaW5hbmNpYWwgTWFya2V0cywgSW5zdGl0dXRpb25zIGFuZCBNb25leSwgMjIoNSksIDk5MS0xMDA4Lg0KDQpHdXB0YSwgUi4sICYgR3VpZGksIEYuICgyMDEyKS4gRHluYW1pYyByZWxhdGlvbnNoaXBzIGJldHdlZW4gSW5kaWFuIHN0b2NrIG1hcmtldCBhbmQgbWFqb3IgQXNpYW4gbWFya2V0czogRXZpZGVuY2UgZnJvbSBFbmdsZS1HcmFuZ2VyIGNvaW50ZWdyYXRpb24gYW5kIERDQy1HQVJDSCBtb2RlbHMuIEVtZXJnaW5nIE1hcmtldHMgUmV2aWV3LCAxMygzKSwgMzAxLTMxOC4NCg0KS2FyYW5hc29zLCBNLiwgS2ltLCBKLiwgJiBPbG1vLCBKLiAoMjAxNCkuIEZpbmFuY2lhbCBtYXJrZXQgdm9sYXRpbGl0eSBhbmQgdGhlIHJvbGUgb2YgY29ycmVsYXRpb25zOiBFdmlkZW5jZSBmcm9tIEFSLURDQy1GSUFQQVJDSCBtb2RlbHMuIEpvdXJuYWwgb2YgSW50ZXJuYXRpb25hbCBGaW5hbmNpYWwgTWFya2V0cywgSW5zdGl0dXRpb25zIGFuZCBNb25leSwgMjksIDE1Mi0xNjYuDQoNClJvY2tpbmdlciwgTS4sICYgSm9uZGVhdSwgRS4gKDIwMDEpLiBUaGUgZGVwZW5kZW5jZSBzdHJ1Y3R1cmUgb2YgZmluYW5jaWFsIG1hcmtldHMgYW5kIHRoZSByb2xlIG9mIGNvcHVsYXMuIEpvdXJuYWwgb2YgRW1waXJpY2FsIEZpbmFuY2UsIDgoNCksIDI4MS0zMTIuDQoNCkJhc2hlciwgUy4gQS4sIEhhdWcsIEEuIEEuLCAmIFNhZG9yc2t5LCBQLiAoMjAxNCkuIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBvaWwgcHJpY2VzIGFuZCBzdG9jayBtYXJrZXRzIGluIHRoZSBHdWxmIENvb3BlcmF0aW9uIENvdW5jaWwgY291bnRyaWVzOiBFdmlkZW5jZSBmcm9tIGNvcHVsYSBtb2RlbHMuIEVuZXJneSBFY29ub21pY3MsIDQ2LCAzOTktNDA5Lg0KDQpCb3VkdCwgSy4sICYgU3dhbnNvbiwgTi4gUi4gKDIwMTUpLiBUaW1lLXZhcnlpbmcgZGVwZW5kZW5jZSBiZXR3ZWVuIGZpbmFuY2lhbCBtYXJrZXRzOiBBIGNvbmRpdGlvbmFsIGNvcHVsYSBhcHByb2FjaC4gSm91cm5hbCBvZiBGaW5hbmNpYWwgRWNvbm9tZXRyaWNzLCAxMygyKSwgMzcxLTQwNi4NCg0KWmhhbmcsIFguLCAmIENoYW4sIEsuIEMuICgyMDE4KS4gRHluYW1pYyBjb3B1bGEgbW9kZWxzIG9mIHN0b2NrIG1hcmtldCBkZXBlbmRlbmNlIGJldHdlZW4gQXNpYSBhbmQgdGhlIFVTLiBJbnRlcm5hdGlvbmFsIFJldmlldyBvZiBGaW5hbmNpYWwgQW5hbHlzaXMsIDU3LCA2Ni04My4=